白马非马与面向对象

     类是对象的抽象组织,对象是类的具体存在。

  2200年前的战国时期,赵国平原君的食客公孙龙在骑着白马进城的时候,被守城官以马不能入城拦下,公孙龙即兴演讲,以一篇“白马非马”,驳倒了守城官,于是就骑着他的 (不是马的) 白马进城去了。此战,就是历史上最经典的一次对面向对象思维的阐述。

  公孙龙的“白马非马”一论如下:

“白马非马”,可乎?曰:“可。”曰“何哉?”曰:“马者,所以命形也;白者,所以命色也。命色者非命形也。故曰:‘白马非马’。”曰:“有白马不可谓无 马也。不可谓无马者,非马也?有白马为有马,白之,非马何也?”曰:“求马,黄、黑马皆可致;求白马,黄、黑马不可致。使白马乃马也,是所求一也。所求一 者,白者不异马也。所求不异,如黄、黑马有可有不可,何也?可与不可,其相非明。故黄、黑马一也,而可以应有马,而不可以应有白马,是白马之非马,审矣!”

  公孙龙乃战国时期的“名家”,名家的中心论题是所谓“名”(概念)和“实”(存在)的逻辑关系问题。名者,抽象也,类也。实者,具体也,对象也。从这个角度讲,公孙龙是我国早期的最著名的面向对象思维的学习者。

  “白马非马”这一论段的关键就在于“非”一字,公孙龙一再强调白马与马的特征,通过把白马和马视为两个不同的类,用“非”这一关系,成功地把“白马”与“马”的关系转移到“白马”这个类与“马”这个类的相等关系上,显然,二者不等,故“白马非马”。而我们常人的思维是,马是一个类,白马是马这个类的一个对象,二者属于从属关系。说“白马非马”,就是割裂马与白马之间的从属关系,偷换概念,故为诡辩也。

  白马非马,我们可以称之为诡辩;小熊猫非熊猫,这是不得不承认的事实。我们把这些问题抽象出来,实际上讨论的就是类与类之间的界定,类的定义等一系列问题,其中即涉及到了类与对象的本质问题,也涉及了类设计过程中的一些原则。

  要回答类与对象的本质这个问题,我想可以从“形”和“本”的角度来回答。
       这个问题就交给你来研究吧,试试写出java或者php版本的白马非马的代码

作为程序员怎么可以这么不要脸呢?

下午在群里聊天,有人提到了oracle,立马有人站出来,说“oracle用不好还不如mysql呢”
立马把我雷得里郊外嫩。
作为程序员,怎么可以这么不要脸呢?
你也可以说,“宝马不会开还不如自行车呢”
你说的看起来没错,但其实是种偷换概念,一味的盲目自大。
想到很多年前,有人说“C代码写不好还不如java效率高呢”,一样的不要脸。

语言和工具是有有优劣之分的,不要因为自己的立场和局限性而一味盲目自大,否认客观现实。
宝马就是比自行车好,不能因为宝马不能在乡村小路自由驰骋就笑宝马不行。
虽然我也是用着一些劣等工具,但我从不否认客观现实,我不否认C程序员就是比我高级,比我基础好。

就好像有些人,因为部分大学生找不到好工作以及网上的报道,就讥笑道“大学生还不如没读书的呢”,
不能因为几个计算机专业的不如你一个草根,就狂言“计算机专业的也不咋样啊还不如我个非计算机专业的”。

你怎么可以这么不要脸。
别忘了,大学生做的是你老板的老板,皇帝老儿也是名牌大学生。你无比炫耀的电力,金融行业都是大学生呢。
别忘了,你用的工具,语言,教材都是计算机专业写的。

虽然我也不是名牌大学生,不是计算机专业。我只是觉得说那些话的人好不要脸啊。

转:Closure

As there is a growing interest in dynamic languages, more people are running into a programming concept called Closures or Blocks. People from a C/C++/Java/C# language background don't have closures and as a result aren't sure what they are. Here's a brief explanation, those who have done a decent amount of programming in languages that have them won't find this interesting.

Closures have been around for a long time. I ran into them properly for the first time in Smalltalk where they're called Blocks. Lisp uses them heavily. They're also present in the Ruby scripting language - and are a major reason why many rubyists like using Ruby for scripting.

Essentially a closure is a block of code that can be passed as an argument to a function call. I'll illustrate this with a simple example. Imagine I have a list of employee objects and I want a list of those employees who are managers, which I determine with an IsManager property. Using C#, I'd probably write it like this.

  public static IList Managers(IList emps) {
IList result = new ArrayList();
foreach(Employee e in emps)
if (e.IsManager) result.Add(e);
return result; }

阅读剩余部分...

转:VirtualBox 与宿机机器的网络通讯方式介绍

VirtualBox 是程序员做测试、模拟的好方式,它的连网方式总体来说有四种。

Network Address Translation (NAT) 是最简单的方式,缺点是外面的机器找不到你这台机器。你可以把用这种方式上网的虚拟机,当作一个应用程序好了。

Bridged networking 的方式,可以让局域网里的其它机器访问你的虚拟机,它也可以访问你局域网里的其它机器,但是你的虚拟机却没有办法 ping 通你自己的宿主电脑或其它局域网里的机器。

Internal networking 的方式,和 Bridged networking 类似的方式,具体区别没有仔细研究。

Host-only Adapter,虚拟机只可以和主机通讯,主机里可以找到一个内网IP地址,如下
以太网适配器 VirtualBox Host-Only Network:   
连接特定的 DNS 后缀 . . . . . . . :
本地链接 IPv6 地址. . . . . . . . : fe80::1153:7bdd:40c0:28dc%19
IPv4 地址 . . . . . . . . . . . . : 192.168.56.1
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . :
通过这个 IPv4 的地址就可以和虚拟机里的主机通讯。

如果你想让你的主机和虚拟机组成一个互通的网络机器来做测试,则需要使用 Host-only Adapter 的方式。

她和别人结婚了

她和别人结婚了。
不过看到新郎的时候,我释然了,当初不是我不好,我无愧。
如果能有新的恋爱,希望我还能做到无愧。

windows上配置Code::Blocks的wxWidgets以及hello world示例

    很早就安装了Code::Blocks,本来一直想搞VC开发的,今天特意比较了下GTK,QT4,wxsmith这几款windows下的跨平台GUI工具。GTK太老,界面也很丑,安装很麻烦,就没考虑。QT4据说不错,也下了,但没有配置好一个比较合适的开发环境,故还没尝试。由于我安装了Code::Blocks,并且Code::Blocks自带了wxsmith的插件,那就先体验下 wxsminth把。
    首先,下载Code::Blocks 10.05最新的安装包,内置包含mingw的那一个,大约74M。如果要自己配置mingw的话也可以,不过真的很麻烦。GNU的东西要在windows下跑起来很恶心的,咱就还是搞人家编译好的吧。
   下载地址:http://www.codeblocks.org/downloads/26.下载后,安装到任意路径。
    然后,下载wxPack。你也可以下载wxWidgets源代码自行编译,但这真是吃力不讨好,即容易出错,又很耗时。这里我们下载wxPack v2.8.11.03。下载页面:http://wxpack.sourceforge.net/Main/Downloads.它是居于最新的wxWidgets2.8.11编译的。这个安装包有259.9M。但是如果你全部安装的话,有2.5G大小。我们直接安装它,在安装时,会出现一个选择界面,选择安装MSVC和GCC/MINGW版本,若只安装MSVC,要700M空间,若安装GCC/MINGW,则需要2G空间。在这里,为了以后的方便,少些麻烦,我们选择全部安装。反正硬盘不值钱,别舍不得你那点硬盘.假设我们能装在e:/dev/wx目录下(安装目录最好不要带空格和中文)。
     到此为止,基本的环境安装完毕。现在开始开发。
(1)打开code::blocks,选择新建wxWidgets project。

1.png

阅读剩余部分...

    Page :
  1. 1