ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## php论 **小明**:蝌蚪哥,我刚看了你写的“或多或少的c语言知识”。发现c语言能做好多事情,可是现在为啥都不用c语言,而要有各种各样的语言? **蝌蚪哥**:这个问题问的很不错,因为它的答案也很有深意。c语言是一门非常灵活的语言,想要熟练的掌握可不容易(看看进阶和大成里的内容就能知道)。而且它自身的好多功能都太简单,简单到什么都能用,但用的时候又得自己动手搭(就好比生活中造楼的所有材料和工具都有,但是,当我想外出旅行的时候住。拿材料搭远不如带一个现成的房子要来的方便)。因此,一些大牛们就把c语言的存储方面归总出来,做成数据库(专门用来操作数据)。另一些大牛们,就编程方面开发出了java,主管企业方面的oa系统的集成和开发。还有一些就是打包了c的文件操作,来给用户提供服务。比如:php。再一个很重要的方面,就是能挣钱。 **小明**:你的意思是之所以有现在的五花八门的语言,其实有2方面的原因:一个是**为了满足不同程序员的不同需求**。另一个是**程序员为了挣钱**。能再给我详细说一下,你是怎么理解这两点的吗? **蝌蚪哥**:首先在编程领域中,不同的领域用到的知识的深度和广度都是不一样的。**学术方面的程序员**。像数据库的大牛们肯定整天就是在研究不同的算法处理数据能力的差异,然后进行迭代开发优化数据库的功能;**技术方面的程序员**。像sun公司和微软。他们分别开发出了java和c#,这些语言的诞生就是为企业服务的,就是为了挣钱。 **小明**:那为什么现在java比c#要火呢? **蝌蚪哥**:这2种语言的诞生其实也有一个很有意思的小故事。他们有一个共同的祖先,就是c++。说这两门语言前我不得不说c++。c++有3种编程思想:过程,对象和泛型。但是在早期的c++它只是有雏形,并没有明确的提出来,因此好多人学c++的感觉就是雨里雾里,觉得太难选择放弃。直到java提出这三个概念,这应该还得感谢sun公司。同样地,正是由于这3个概念的提出,大大降低了c++的学习难度,但是受根深蒂固的思想影响,人们不愿意再去看c++,进而转向了java。这也导致当时的sun公司可谓是意气风发,谁也不放在眼里,包括微软。微软看不下去了,它那个时候站了出来,出于对c语言的敬畏和热爱,出于对java的敌视两方面的原因。它把和java(java用的是驼峰法,即首字母大写)大同小异的部分重新打包,只不过变量和函数的起名规则改成匈牙利命名法(全小写,_隔开)。并命名为c#(即c++++)。现在windows操作系统想要跑java程序必须安装java虚拟机,在早期windows是不对java开放的,这就是原因。但是由于windows的安全问题。人们企业都用linux,进而可以很好的兼容java,所以现在得企业大部分都是在用java。所以导致了在企业OA系统方面java比c#火。。但是,提到游戏方面,java就得让c#甩后几条街了,因为linux没游戏。。。。 **小明**:物竞天择,适者生存。在计算机语言行业里可谓是表现的淋漓精致,那这么说现在存留下来的计算机语言是不是都包含了过程,对象和泛型编程?我想听你详细地讲一下。 **蝌蚪哥**:过程,对象和泛型。这三个其实很有意思。“或多或少的c语言知识”里,我举的就是一个OA系统的例子,而它是用c语言写的。这么说吧,世上本没有对象,因为世间万物都是处在时间轴上的,是线性的。那么在对象提出来之前的一切编程,都能看作是过程编程。那什么是对象?我相信在我讲完c语言初探篇后,你对数据类型有了一个很深的印象。那么对象就可以理解成一个**被打包的函数类型**。这个函数里可以放置:1.**子函数**。2.**变量**。再未实例化之前,它就和int一样,存在于text文本里(或者说脑海里)。实例化后,它就像一个结构体,你能使用它的成员函数和成员变量。你不需要重新写那个函数代码,只需要new一个“函数变量”就可以了。 解释完对象编程,泛型编程就很好理解了。 对象打包了函数。那么数据结构和数据类型的打包就全部归于泛型了。最典型的例子:PHP中的$a变量。 **小明**:听完你讲的这么一大段:oop(面向对象编程)是编程的数据方面(函数处理数据),泛型(generic)是独立于特定的数据类型。好多书上都有详细的介绍,我想着重听听泛型编程。 **蝌蚪哥**:好的,泛型编程顾名思义,泛泛的数据类型。现在不是又有两种新的名词诞生了么,静态编程语言和动态编程语言。对于这些,我只想说:这些城里人真会玩儿,像我这种只懂c的人,还是回家种地吧。我们拿php举例子吧,因为php会成为主流语言的。 php中的变量符号:只有一个$。 你可以把变量写成以下任意一种: $a = 1000; $b = '1000'; $c = "1000"; $d = 1.000; $e = max(); $f = NULL; **小明**:为什么只有一个类型符号,在c语言中,每定义一个变量都需要指出它是什么类型,需要几个字节的大小,为啥PHP只有$符号?还有,什么是动态和静态语言? **蝌蚪哥**:因为PHP在程序编译的时候,会根据特定数据来动态分配数据类型空间,而c语言要自己手动写类型。这就是动态语言和静态语言的区别。 如果我现在要写一段代码: $sum = $a + $b +$c + $d; **小明**:不同的数据类型,$a是整型$b字符型$c字符串$d浮点型。。它们怎么可能进行运算? **蝌蚪哥**:是不是感觉很不可思义?这就是所谓的泛型编程。忽略数据的类型,进而简化数据的操作。它的实现原理,可以看“或多或少的c语言知识”里提出的体系。一个变量最终会通过这颗树,最终汇总成同一个数据类型。 **小明**:这么看来,泛型编程的实现其实就是数据结构,它最终解决的是数据类型的简化。 **蝌蚪明**:今天引出php和一些基本实现原理。希望你以后看待新技术的时候,不要忘了旧的技术,因为新技术是建立在旧知识的基础上的。