## 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和一些基本实现原理。希望你以后看待新技术的时候,不要忘了旧的技术,因为新技术是建立在旧知识的基础上的。
- 2023-4-8__成长之路
- 技术杂谈
- 程序员境界
- 走进猿类
- 做一个程序员
- 什么是猿类
- 爱乱吹的猿
- 业余生活
- 我的书架
- 高效程序员的45个习惯
- 敏捷—高效软件开发之道
- 态度决定一切
- 学无止尽
- 交付用户想要的软件
- 敏捷反馈
- 敏捷编码
- 敏捷调试
- 艺术人生
- 摘自艺术的境界
- 如何欣赏画
- 《的》
- 我的文档
- 小白学习前那些说不完的事
- 计算机语言都一样
- 尝试理解他人代码
- 做为旁观者的思考
- 怎样才算懂计算机
- 工欲善其事,必先利其器
- 教案日志
- 十天学电脑
- 一,认识计算机
- 二、认识编程语言
- 三、认识程序内涵
- 四,认识数据结构
- 五、认识电脑系统
- 六、认识通信原理
- 七、邮箱管理
- 八、重新审视电脑
- 九、理解终生学习
- 十、感悟三千世界
- c语言
- C语言——我觉得好简单
- c学好不怕没饭碗—2014.7.21
- C语言——我想的有点儿简单
- 或多或少的c语言知识
- c语言初探篇
- 初探c语言底层
- 初探整型和浮点型
- 初探二进制数---原反补移
- 初探有无符号
- 初探c是如何跑起来的
- 初探指针
- 初探数组
- 初探顺序表
- 初探栈,队列
- 初探c语言编程
- c语言进阶篇
- c语言自身的那些事
- 结构详解
- c语言大成篇
- 人类思维——模式匹配
- 论c语言面试
- 数据结构
- 核心概念,没有之一顺序表
- 线性表代码实现
- Sq_list
- 不存在的链表
- 只是一种思想——栈
- 只是一种思想——队列
- 不存在的树
- 只是一种思想——二分法
- 不存在的图
- 算法原理
- 傅里叶变换
- 算法导论
- 算法导论——c语言实现
- 算法导论——java实现
- 组成原理
- 操作系统
- 初探操作系统
- 深究操作系统
- 操作系统如何跑起来
- 进程就像细胞
- 系统就像生命
- 进程树pstree
- 进程
- 进程何时更名为生命
- 初探进程映像
- 程序如何成为进程映像
- PCB
- PCB解读之——信号量(p_sig)
- 进程同步
- 进程通信
- 进程调度
- 用户
- PPDA
- 存储系统
- I/O系统
- 网络原理
- 通信简史
- 通信是网络基础
- 趣谈网络
- 自我介绍
- 快递公司
- 小D的自述
- 网络架构
- OSI/RM
- 应用层
- 表示层
- 会话层
- 传输层
- 网络层
- 数据链路层
- 物理层
- TCP/IP四层模型
- 五层模型
- 网络划分
- IP史
- 信息安全
- 社会工程学
- 信息收集
- 诱导
- 伪装
- 如何成为任何人
- 社会心理学
- 思维模式
- 说服的力量
- 代码审计
- 灾难恢复
- 安全注入
- 网络工程
- 802.11
- CCNA
- CWNA
- 社会工程
- 社会心理
- 信息诱导
- 身份伪装
- 系统框架
- web前端框架
- smarty框架
- bootstrap框架
- thinkphp框架
- zend框架
- yii框架
- ci框架
- 网站开发
- 五大难题
- 网站工作原理
- 数据库原理
- 服务器原理
- 前端开发
- 前端技能基础
- html
- css
- javascript
- 浏览器兼容
- 前端总结
- 后台开发
- 或多或少的JS
- js初探篇
- 理解Javascript
- JS继承
- 数组
- 操作方法
- DOM事件
- 数据传输
- JS面试题
- 数据对象
- 学生管理系统
- 学生管理首页
- 粗略学了一遍后的总结
- 零碎知识
- js初探篇第二版
- javascript构成
- 基本类型
- 基本语句与判断类型
- 基本对象与操作函数
- 基本判断与甄别数据
- 内置对象与操作函数
- 对象认识与深浅复制
- DOM级别与BOM
- 严格模式与混杂模式
- ES5和ES6
- js进阶篇
- 上传图片
- js实战篇
- 或多或少的PHP
- 详解url结构
- html基础
- html初识
- html-组成页面的基础标签
- ie兼容
- 教学方法
- 论php——编程思想
- 论php——底层实现
- 中华国学
- 易经
- 黄帝内经
- 山海经
- 道德经
- 骗经
- 中华哲学
- 一花一世界
- 道可道非常道
- 一瞬
- 宇宙
- 心得体会
- 电脑叫智能生命体更准确
- 计算机不是汉语模式
- 琐事日记
- 成长与人性
- 祝单身狗快乐
- 人其实过的很单薄
- 都怪自己不够优秀
- 那是几个人的世界
- 认清世界,认清自己
- 陪伴繁华逝去的平凡
- 俯拾仰取
- 技术手册
- 网站开发
- 准备工作
- firewalld
- mysql
- redis
- 开发流程
- 整体配置
- 环境配置
- tomcat配置
- 数字证书配置
- 项目配置
- 数据设计
- 用户管理
- 整站设计
- user
- user_group
- user_role
- 服务端
- 了解学习
- quartz
- HelloWorld
- HelloJob
- HelloQuartz
- HelloScheduler
- Job
- JobDataMap
- Trigger
- Scheduler
- properties
- spring
- AOP
- 使用
- svnkit
- svn init
- FSFS
- server
- Java
- 测试
- 任务调度
- 网站架构
- 网站前端
- pc端
- 移动端
- native
- ios
- android
- ipad
- hybrid
- 技术日志
- 2018-9-26
- 2018-11-26
- 资源收集
- UED资源
- 技术架构
- 云平台
- 工作方面
- 实习工作经验
- 草稿1
- 草稿2
- 草稿3
- 草稿4
- 草稿5
- 草稿6
- 草稿7
- 大学总结
- 面经
- 一、职能定位
- 细节
- 前端
- 工作总结
- 简历
- 职业规划
- 一年规划
- 整理归档
- 2015/11/10以前
- 2015/11/10
- 2015/11/11
- 2015/11/12
- 2015/11/13
- 2015/11/14
- 2015/11/15与16
- 2015/11/17
- 2015/11/18
- 2015/11/19与20
- 2015/11/21
- 2015/11/22
- 2015/11/23
- 2015/11/24
- 2015/11/25
- 2015/11/26
- 2015/11/27
- 2015/11/28
- 2015/11/29
- 2015/11/30-12/6
- 2015/12/7-2016/4/18
- 2016/4/19
- 2016/4/20~2017/6/27
- 2017/6/28-2017/7/4
- 2017/7/5-2018/1/11
- 2018/1/12
- 2018/1/13-2018/4/19
- 2018/4/20
- 2018/4/21-2018/5/10
- 2018/5/11
- 2018/5/12-2018/5/16
- 2018/5/17-2018/5/30
- 2018/5/30-2018/10/15
- 2018/10/15-2018/10/18
- 2018/10/19-2018/11/17
- 2018/11/17-2018/12/31
- 结束----------------开始
- 2019/2/18
- 2020/7/30
- 2020/9/5
- 2021/5/6
- 回收站
- 以前文件
- 2015-10-17__成长之路
- 2018-10-15__成长之路
- 2020-3-29__成长之路
- 毕业三年总结
- 浙大之旅
- 2020
- 英语
- 基础3000单词
- 第一周
- 百词斩__126
- 百词斩__126翻译
- 百词斩__252
- 百词斩_252翻译
- 百词斩__392
- 百词斩__532
- 百词斩__672
- 第二周
- 百词斩__812
- 听力
- 新东方演讲稿
- 库克杜克大学演讲全文版
- 库克杜克大学演讲演讲英文对照版