php+递归不到头怎么写,该怎么学习人工智能技术呢?
人工智能无疑是当今科技届的热点领域,各大公司也在大力的投入。深度学习作为其热门技术,期间也产生了各种各样的深度学习智能框架。比如TensorFlow,Caffe,CNTK,Theano等等,其中TensorFlow毋庸置疑的成为了最热的热点。那么对于非专业研究者的开发人员甚至非开发人员,我们如何入门呢?接下来小编为大家整理了一些深度学习TensorFlow的入门资源。(主要是一些长期教程)
官网 https://www.tensorflow.org/
官网无论什么都是入门必看的重点。官网介绍了,如何安装使用TensorFlow,已经TensorFlow的API文档。里面还包含TensorFlow主要功能的详细指南。这里就不过多的介绍了
Keras http://keras-cn.readthedocs.io/en/latest/
Keras是一个高层神经网络API,Keras由纯Python编写而成并基Tensorflow、Theano以及CNTK后端。Keras 为支持快速实验而生,能够把你的idea迅速转换为结果,如果你有如下需求,请选择Keras:
简易和快速的原型设计(keras具有高度模块化,极简,和可扩充特性)
支持CNN和RNN,或二者的结合
无缝CPU和GPU切换
为什么我会推荐Keras呢,因为从TensorFlow1.0开始,官方已经正式在TF中加入了Keras,同时,他的便捷性和简单性也值得使用。
谷歌机器学习速成课程 https://developers.google.com/machine-learning/crash-course/
这是谷歌推出的机器学习热爱者的自学指南,包含一系列视频讲座课程、实际案例分析和实践练习。可以在看视频后,进行一些检验,也包含一些代码的训练。是一套不存的视频课程,而且全面支持中文(PS:机器学习生成的中文口音,怪怪的)
Udacity优达学城 https://cn.udacity.com/course/deep-learning--ud730
谷歌在Udacity上的深度学习课程,在这里你将透彻理解深度学习,教授你如何训练和优化基本神经网络、卷积神经网络和长期神经网络。解决学习一系列曾经以为非常具有挑战性的新问题,并在你用深度学习方法轻松解决这些问题的过程中更好地了解人工智能的复杂属性。总之是一套很不错教学视频,包含课后习题。这个教学项目目前是免费的。
莫烦Python https://morvanzhou.github.io/
我在最早接触Python和深度学习就是在这里,一个喜欢学到什么就分享什么的人,分享过很多python, 机器学习的知识。非常不错的教学视频,重点是都是中文的。
廖雪峰 https://www.liaoxuefeng.com/
小白的Python新手教程,具有如下特点:中文,免费,零起点,完整示例,基于最新的Python 3版本。一个非常棒的Python学习网站,TensorFlow最适合的语言自然是Python了,值得学习。
Stanford的CS 20SI课程,专门针对TensorFlow的课程 https://web.stanford.edu/class/cs20si/
斯坦福大学的TensorFlow学习课程,英文的所有一定难度。课程将涵盖Tensorflow的基本原理和用法。旨在帮助学生理解TensorFlow的图形计算模型,探索其提供的功能,并学习如何构建和构建最适合深度学习项目的模型。通过课程,学生将使用TensorFlow构建不同复杂度的模型,从简单的线性/逻辑回归到卷积神经网络和递归神经网络,以解决词嵌入,翻译,光学字符识别,强化学习等任务。学生还将学习最佳实践来构建模型并管理研究实验。
重点!网红Siraj Raval https://www.youtube.com/channel/UCWN3xxRkmTPmbKwht9FuE5A
这是我最喜欢的一个频道,Siraj Raval已经成为了一位网红,天成的程序员表演家,技术达人。他分享了大量的机器学习视频,风趣而幽默。而且每个视频下都配了他的Github仓库,里面有他写好的代码。他的视频风格让人印象非常深刻。是一个很不错的学习频道。
上述只是我列的一些帮助我们入门的教程,是非常入门的。更适合像我们这些没有太深数学基础的程序员和非程序员。以后还会给大家发一些深度一些的资源,欢迎大家持续关注。
具体需要掌握哪些知识和技能?
硬件篇
1.码农神器HHBK键盘
▼
这种键盘做了极大的简化,非常适合满足不用IDE编程的程序员,特别是在linux下使用vi/emacs编程的小伙伴,这种能极大满足,程序员的虚荣心,是在linux下开发程序的装逼利器。现在很多开发者觉得不懂Linux觉得很low,在linux下不用vi简直就是异类,这么一款神器极大满足linux下编程的程序员一切。
2.Mac电脑
▼
Mac电脑在一定程度上体现了极致,高品质,这点和优秀程序员内在气质是吻合的,程序员对于自己代码都会一直不停在优化,重构以期望做到做好。苹果电脑在设计上追求每个细节做到极致,哪怕是外观的点点滴滴,诚然Mac电脑有这样那样的不兼容的因素,但是还是很多人喜欢,特别是有情怀的码农。
软件篇(重点来了哦!)
1.XML Marker(xml查看编辑工具)
▼
XML Marker是国外的一款非常实用的xml查看编辑工具。软件功能强大,纯文本调试输出和日志文件,你可以有效增加修改你的程序才能产生XML格式他们的作用。你也可以使用XML标记的图形功能,以现场隐藏的趋势,并更快地解决你的错误。更多的功能包括表格排序,语法高亮编辑器和自动缩进,经常编辑XML文件的用户可以下载本软件使用。
2.Notepad++
▼
Notepad++,能够支持27种编程语言,比如C,C++,Java,C#,XML,HTML,PHP,JavaScript等等,是程序员必备的文本编辑器,比起微软的记事本,它小巧高效,是个不错的选择。
3.Everything
▼
Everything是速度最快的文件搜索软件。其速度之快令人震惊,百G硬盘几十万个文件,可以在几秒钟之内完成索引;文件名搜索瞬间呈现结果。它小巧免费,支持中文,支持正则表达式,可以通过HTTP或FTP分享搜索结果。如果不满意Windows自带的搜索工具、Total Commander的搜索、Google 桌面搜索或百度硬盘搜索,如果正在使用或放弃了Locate32,都值得推荐这款体积小巧、免安装、免费、速度极快(比Locate32更快)的文件搜索工具Everything!
4.版本管理工具git
▼
涉及到项目,就涉及到代码的管理和维护,那么版本的控制软件git无疑是相当出色。是linux祖师爷亲手搞的。git做大优点可以在本地架设仓库直接修改,修改调试完毕之后直接上传到服务器的主分支里面,现在主流的安卓,浏览器开源服务器基本上都采纳了git管理版本的方式。很多程序员第一时间采用git,很多都是基于对linux祖师爷的绝对的信任。最大优势可以在本地各种版本管理。
5.MarkMan
▼
既有爱又给力的长度标注神器!设计师、重构、前端工程师必备。马克鳗是基于AdobeAIR平台的方便高效的标注工具,可方便地为设计稿添加标记,极大节省设计师在设计稿上添加和修改标注的时间。马克鳗使用起来也是非常简单,双击添加测量,单击改变横纵方向等等功能,基本都是一键完成。
6. 号称史上最强的IDE的eclipse
▼
作为一个程序员一定要熟练掌握一个IDE工具,eclipse无疑是首选,而且在这个上面可以直接查看多种编程语言,强大的插件系统可以让很多定制风格多样化,强大的快捷键系统,让码农朋友们写代码方便无比,但是针对初学者来说,不建议使用IDE编程,因为太方便,不利于培养基本的编程素养。做java编程首选神器。
c语言现在还有必要学吗?
C语言是计算机体系结构的基础,很多新人将C语言作为学习计算机的入门语言。作为新入门的新人,肯定会感到迷茫,很混乱,这时我们就需要适当的引导。本文教你如何滴水不漏地学完C语言,学好基础知识,把握重点,不断深入学习。
一、背景
C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。它诞生于美国的贝尔实验室,是由丹尼斯·里奇以肯尼斯·蓝·汤普森设计的B语言为基础发展而来。UNIX 系统是世界上第一个真正的操作系统。而UNIX 操作系统是用C语言编写的,在当时这个系统很流行,于是C语言也跟着流行起来。而 UNIX 操作系统是开源的,所以别人要想学习,就要先学C语言。B语言被C语言改写后,C语言流行了而B语言就被淘汰了。而且后来发现,C语言的确非常好,它是面向过程语言的代表,是有史以来最重要的一门计算机语言。二、学习方法
C语言是计算机体系结构的基础,很多新人将C语言作为学习计算机的入门语言。作为新入门的新人,肯定会感到迷茫,很混乱,这时我们就需要适当的引导。对于一门语言的学习,不同的人有不同的方法,不过别人好的学习方法我们是可以拿来借鉴参考的。(1)看书
看书就是学习基础知识,学习一门语言首先就是学习基本语法,学会了基础知识才能有更加深入的发展。除了看一些书籍之外,还可以看一些教学视频入门,毕竟别人讲解演示学起来更加轻松一点。后文我也会推荐一些好的学习书籍和视频,供大家参考学习。(2)敲代码
想要学习好一门计算机语言,光看书籍学习知识点是远远不够的。在学习知识点的同时一定要自己敲代码进行练习。开始学习敲代码的时候可以用一些轻便的编译器,比如Dev C++,熟练了之后可以使用Visual Studio这些较为大型的编译器。感觉基础知识掌握熟练之后,就可以开始接触算法和数据结构之类的,再然后就可以刷题提高水平了。(3)练习项目
学习完基础知识我们的目的还是实践,所以我们就可以开始练习一些项目了。比如写一个小的记事本、小游戏、计算器等经典的小项目。平时面对那些黑框框肯定会感觉到很枯燥无聊,当你做出一个小作品之后,你就会很有成就感,这也会极大的提升你的学习兴趣。三、学习路线
学习一门语言先了解此语言的发展史,早期的C语言功能其实较为简单,随着应用和场景的变化,C语言的功能在不断升级变化,功能也越来越强大。正式学习C语言之前了解一下计算机系统的组成以及工作原理也是很有必要的,除此之外还包括数据在计算机内部的存储方式,以及进制之间的转换。另外很重要的一点就是编译环境和编译器的学习,学习之初可以选择一些简单易上手的编译器,随着不断深入学习选择一个与时俱进的编译器也是很重要的。学习完这些内容之后,我们就可以开始学习C语言基础知识了。C语言编程离不开数据,几乎所有的程序中都会涉及到数据,其中包含整型、浮点型、字符串等等。而C语言中存在着两种表征数据的形式:常量和变量。常量可以用来表示数据的值,变量不仅可以用来表示数据的值,还可以用来存放数据。变量是用来存放数据,运算符则是用来处理数据。用运算符将变量和常量连接起来的符合C语言语法规则的式子称为表达式。学习完这些之后,就开始接触结构化程序设计语句。C语言基本控制结构有三种,分别是顺序控制、循环控制、选择控制。程序总是为解决某个实际问题而设计的,而问题往往包含多个方面,不同的情况需要有不同的处理,所以这些结构化程序语句在实际应用程序中可以说是无处不在,正确掌握结构化程序设计语句显得尤为重要。如果用基本数据类型来定义某些变量,那么这些变量在内存中将占用各自的内存单元,变量之间的制约关系无法体现,不能表现出这些变量之间的关联性,所以我们把这些变量称为“离散变量”;但是如果我们需要操作100个或者是更多的数呢,定义100个变量就显得不太现实,这时我们就引入了数组。数组是一组同类型的数据项的有序集合,我们就可以把100个要定义的变量存放到数组中。学习指针是学习C语言最重要的一环,能否正确地理解和使用指针是掌握C语言的一个标志,可以说不懂C语言的指针就不懂什么是C语言。指针也是C语言中最难学的一部分,学习时除了要正确理解基本概念,还必须要多编程,多上机敲代码,只要做到这些,指针也是不难掌握的。前面介绍的都是简单的数据类型,只能定义一些简单的数据信息。对于复杂的数据信息是无法用前面所学的某个单一数据来定义的,必须使用C语言中提供的复杂数据类型来定义。复杂数据类型是C语言提供的不同于简单数据类型的又一数据类型,它极大地丰富了C语言对数据信息的处理能力。3.1 C语言基础第一部分是C语言基础,包括预处理指令、函数、变量和语句。即使是编写最简单的C语言程序,也是会用到这些基本概念。用一个经典的c语言程序,介绍c语言的基本构成、格式,使我们对c语言有个初步认识。一个C语言程序只有一个主函数,程序执行时从主函数开始,在主函数内结束;函数由函数说明和函数体两部分构成;函数说明部分包含了对函数名,函数类型,函数参数等的定义和说明;函数体包含了变量说明和执行语句。3.2 选择结构和循环结构
C语言中有三大结构,分别是顺序结构、选择结构和循环结构。C语言顺序结构就是让程序按照从头到尾的顺序依次执行每一条C语言代码,不重复执行任何代码,也不跳过任何代码。C语言选择结构也称分支结构,就是让程序“拐弯” ,有选择性的执行代码;换句话说,可以跳过没用的代码,只执行有用的代码。C语言循环结构就是让程序“杀个回马枪”,不断地重复执行同一段代码。顺序结构很好理解,无需过多阐述,简单概述一下选择语句和循环语句。其中有两个选择语句,if语句和switch语句。循环语句有三种,for循环语句,while循环语句,do……while循环语句。
3.3 数组
数组就是一列具有相同类型的数据的集合,这些数据在内存中依次挨着存放,彼此之间没有缝隙。C 语言数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。数组分为一维数组和二维数组,当数组中每个元素都只带有一个下标时,称这样的数组为一维数组,一维数组实质上是一组相同类型数据的线性集合。二维数组本质上是以数组作为数组元素的数组,即“数组的数组”。3.4 函数
每个C程序都至少有一个函数,即主函数 main() ,如果程序的任务比较简单,全部的代码都写在main()函数中,但是,在实际开发中,程序的任务往往比较复杂,如果全部的代码都写在main()函数中,main()函数将非常庞大繁杂,结构混乱。我们可以根据程序的逻辑和任务的分工把代码划分到不同的自定义函数中,main()函数更关心业务逻辑和处理流程,需要执行具体任务的时候,调用其他的自定义的函数就可以了。引入函数得本质就是把一个复杂的任务分解为子任务,每一个子任务都是一个较小的功能模块,通过实现这些小功能模块来实现复杂的问题,从而使得比较复杂的问题变得简单。3.5 指针
没学指针就是没学 C 语言!指针是 C 语言的精华,也是 C 语言的难点,绿色 C 语言指针,会让你的 C 语言水平突飞猛进。所谓指针,也就是内存的地址;所谓指针变量,也就是保存了内存地址的变量。不过,人们往往不会区分两者的概念,而是混淆在一起使用,在必要的情况下,大家也要注意区分。关于指针我们需要重点学习的内容有指针与地址、指针与函数参数、指针与数组、指针数组以及指向指针的指针和指向函数的指针等等。3.6 结构体
C 语言结构体从本质上讲是一种自定义的数据类型,只不过这种数据类型比较复杂,是由 int、char、float 等基本类型组成的。你可以认为结构体是一种聚合类型。结构体部分重点学习包括结构体的定义方法、结构体的引用方法、结构体数组、结构体指针的概念及应用、结构体与函数。在实际开发中,我们可以将一组类型不同的、但是用来描述同一件事物的变量放到结构体中。例如,在校学生有姓名、年龄、身高、成绩等属性,学了结构体后,我们就不需要再定义多个变量了,将它们都放到结构体中即可。四、学习资料
4.1 经典书籍
《C Primer Plus(第6版)中文版》是非常经典的一本书籍,此书共17章。第1、2章介绍了C语言编程的预备知识。第3~15章详细讲解了C语言的相关知识,包括数据类型、格式化输入/输出、运算符、表达式、语句、循环、字符输入和输出、函数、数组和指针、字符和字符串函数、内存管理、文件输入输出、结构、位操作等。第16章、17章介绍C预处理器、C库和高级数据表示。本书以完整的程序为例,讲解C语言的知识要点和注意事项。每章末设计了大量复习题和编程练习,帮助读者巩固所学知识和提高实际编程能力。附录给出了各章复习题的参考答案和丰富的参考资料。《C和指针》本书提供与C语言编程相关的全面资源和深入讨论。本书通过对指针的基础知识和高级特性的探讨,帮助程序员把指针的强大功能融入到自己的程序中去。全书共18章,覆盖了数据、语句、操作符和表达式、指针、函数、数组、字符串、结构和联合等几乎所有重要的C编程话题。书中给出了很多编程技巧和提示,每章后面有针对性很强的练习,附录部分则给出了部分练习的解答。本书适合C语言初学者和初级C程序员阅读,也可作为计算机专业学生学习C语言的参考。4.2 学习视频
现在网络如此发达,网上的学习资源也是非常的丰富。大家可以自行上网查找适合自己的学习视频,这里给大家推荐的是大学MOOC上的浙江大学翁恺老师讲的C语言程序设计。这位老师讲课非常的不错, C语言基础理论知识讲解完善;循序渐进,从易到难,学习很轻松;语言组织严谨,风趣,很容易接受,让你有一直学下去的动力。4.3 华为云C++语言实战进阶学习资源(免费)
本课程从基础语法、 面向对象特性、 异常处理、 模板编程基础、 C++11新特性、STL标准库容器和算法、并发编程、 C++未来发展趋势几大模块解构知识点,实战场景+学习+练,精炼干货讲解帮助你快速掌握知识短板。立即点击报名学习五、结语
C语言是国际上最流行的、应用最广泛的高级编程语言之一。时至今日,它依然保持着旺盛的生命力,深受广大程序员的欢迎。作为一种“个性鲜明”的编程语言,C语言既具有高级语言的优点,又有着低级语言的特性。很多大学或者是新入门的程序员都将C语言作为学习计算机的入门语言,学好C语言显得尤为重要。我们一定要学号基础知识,把握学习重点,不断深入的学习。本文分享自华为云社区《【云驻共创】如何滴水不漏地学完C语言?》,作者:静Yu 。
计算机怎么入门?
谢邀,第一次被头条邀请回答问题,顿时感觉自己成了网红。
您的问题太过笼统了,按我理解可以分为以下三种情况。
一:您是70年代以前的人,想通过学习QQ、上网来和家人开视频聊天,这种情况下建议您直接问您的儿子女儿们。
二:您在需要进行较多文字编辑或表格处理的单位上班,希望能学习较全面的word,excel,甚至ps之类的应用软件知识,这个网上都可以查到,指向性很明确,也不需要过多解读,不过目前这方面很多人都不够重视,总感觉能打字,会改样式就够用了,等到真正编辑长篇文本(比如毕业论文)时就知道池水有多深了。这里建议每个青年人都花一点时间研究一下这些技巧,总有一天用的到。这是个稳赚不赔的自我投资,也就需要花上三五天时间。
三:您看到目前计算机软件行业的前景(实际上是看到程序员工资较高)想转行做程序员,或者您本身就是计算机或计算机相关专业。这本该放到两部分来说明,人说“条条大道通罗马”,但在我看来最靠谱的路只有一条,要想做好一个程序员,只有靠自己“勤学苦练坐的住”,勤学指看书看视频,苦练就是得敲代码,一行一行地敲,不求完全理解,但求摸出的门道,坐的住是我要说的重点,因为大多数人中途放弃的人就是因为没有这个定力,谁都不想整天对着枯燥的代码,但有的人坚持了下了,这也是每一个成功之人都经历过的。
如果你是在读学生,建议及早把手头的书看完,大学里的书我是知道的,认真看三遍,加上老师划的重点,期末70分稳稳的。然后去敲代码,提前往下学,因为大学里的书本知识对于计算机专业的人来说完全不够用,尤其基本的知识如基本数据结构,基础算法不能落下,如果你想在以后成为计算机软件行业的引导者的话,高数得好好学,别到最后和我一样追悔莫及,如果高数已经上完了,那不管了,暂时顶不上啥用。语言方面,其实都是套路,现在较火的是JavaEE,Python,PHP,.NET,Android,iOS开发,选个感兴趣的先啃下来,再去转其他语言就要省不少心思,另外,数据库和网络,以及Linux系统要好好学,这都是基本功。
如果你不是出生相关专业,上面一段话同样适用,但鉴于时间问题,我预计你们不会有大把的时间补习基础知识,那么两个选择,一是报个班,大概一两万,周期大概半年,全国各地不等,二是选一门语言,网上看视频,先别看书,除了吃饭睡觉就是看视频(其实吃饭的时候也可以看),有了点感觉就照着敲,如果实在不清楚该学什么语言的话,建议学Java或Python,Java像是万能钥匙,什么锁都可以开,三五年内错不了。Python贵在简单,能够调动学习积极性,目前发展势头也很强劲。
大概就这么些,抛砖引玉。
什么是PHP语言?
PHP,一个嵌套的缩写名称,是英文超级文本预处理语言(PHP:Hypertext Preprocessor)的缩写。PHP 是一种HTML内嵌式的语言,PHP与微软的ASP颇有几分相似,都是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,现在被很多的网站编程人员广泛的运用。PHP 独特的语法混合了 C、Java、Perl 以及 PHP 自创新的语法。它可以比 CGI 或者 Perl 更快速的执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;与同样是嵌入HTML文档的脚本语言JavaScript相比,PHP在服务器端执行,充分利用了服务器的性能;PHP执行引擎还会将用户经常访问的PHP程序驻留在内存中,其他用户在一次访问这个程序时就不需要重新编译程序了,只要直接执行内存中的代码就可以了,这也是PHP高效率的体现之一。PHP具有非常强大的功能,所有的CGI或者JavaScript的功能PHP都能实现,而且支持几乎所有流行的数据库以及操作系统。 PHP 最初是1994年Rasmus Lerdorf创建的,刚刚开始只是一个简单的用Perl语言编写的程序,用来统计他自己网站的访问者。后来又用C语言重新编写,包括可以访问数据库。在1995年以Personal Home Page Tools (PHP Tools) 开始对外发表第一个版本,Lerdorf写了一些介绍此程序的文档,并且发布了PHP1.0。在这早期的版本中,提供了访客留言本、访客计数器等简单的功能。以后越来越多的网站使用了PHP,并且强烈要且增加一些特性,比如循环语句和数组变量等等,在新的成员加入开发行列之后,在1995年中,PHP2.0发布了。第二版定名为PHP/FI(Form Interpreter)。PHP/FI加入了对mSQL的支持,从此建立了PHP在动态网页开发上的地位。到了1996年底,有15000个网站使用 PHP/FI;时间到了1997年中,使用PHP/FI的网站数字超过五万个。而在1997年中,开始了第三版的开发计划,开发小组加入了 Zeev Suraski 及 Andi Gutmans,而第三版就定名为PHP3。2000年,PHP4.0又问世了,其中增加了许多新的特性。 PHP的特性包括以下几点: 开放的源代码:所有的PHP源代码事实上都可以得到。 PHP是免费的。 基于服务器端:由于PHP是运行在服务器端的脚本,可以运行在UNIX、LINUX、WINDOWS下。 嵌入HTML:因为PHP可以嵌入HTML语言,所以学习起来并不困难。 简单的语言:PHP坚持脚本语言为主,与Java以C++不同。 效率高:PHP消耗相当少的系统资源。 图像处理:用PHP动态创建图像 PHP 3与PHP 4的比较 PHP3跟Apache服务器紧密结合的特性;加上它不断的更新及加入新的功能;而且几乎支持所有主流与非主流数据库;再以它能高速的执行效率,使得PHP在1999年中的使用站点已经超过了150000万。加上它的源代码完全公开,在 Open Source意识抬头的今天,它更是这方面的中流砥柱。不断地有新的函数库加入,以及不停地更新的活力,使得PHP无论在UNIX、LINUX或是Windows的平台上都可以有更多新的功能。它提供丰富的函数,使得在程序设计方面有着更好的支持。 PHP4.0整个脚本程序的核心大幅更动,让程序的执行速度,满足更快的要求。在最佳化之后的效率,已较传统CGI或者ASP等程序有更好的表现。而且还有更强的新功能、更丰富的函数库。无论您接不接受,PHP 都将在 Web CGI 的领域上,掀起巅覆性的革命。对于一位专业的Web Master 而言,它将也是必修课程之一。 PHP 4.0是更有效的,更可靠的动态Web页开发工具,在大多数情况运行比 PHP 3.0要快,其脚本描述更强大并且更复杂, 最显着的特征是速率比的增加。PHP4.0这些优异的性能是PHP 脚本引擎重新设计产生的结果:引擎由 AndiGutmans 和 Zeev Suraski从底层全面重写。PHP4.0 脚本引擎 --Zend 引擎,使用了一种更有效的编译--执行方式, 而不是PHP 3.0 采用的执行 --当解析时模型。 PHP4在3.0版的基础上增加或增强了许多有用的特征,主要如下: (1)别名:在PHP4中,可以利用引用为变量赋值,这给编程带来了很大的灵活性。 (2)扩充了API 模块:PHP 4.0 为扩展的 API 模块的提供了扩展PHP接口模块, 它比旧的 API 版本显着地快。 PHP 模块已有的及最常用的接口多数被转换到使用这个扩展的接口。 (3)自动资源释放:PHP4增加了引用计数功能,这种新技术的引入使PHP4具有了自动内存管理功能,减轻了开发人员的负担。 (4)布尔类型:PHP 4.0 支持布尔类型。 (5)进程生成:在 UNIX 环境下的 PHP 4.0 提供了一个很智能和通用的生成进程, 使用了一种名为基于automake/libtool的系统生成技术。 (6)COM/DCOM 支持:PHP 4.0 提供 COM/DCOM 支持 ( 仅用于Windows 环境 ) 可以无缝地存取和访问 COM 对象。 (7)与PHP 3.0 兼容性很好:PHP 4.0 是与 PHP 3.0 代码向后兼容性接近100% 。由于 PHP 4 的改进的体系结构,两者有一些细微的差别,但是大多数人将可能永远不可能遇上这种情况。 PHP介绍 (8)配置:PHP4重新设计和增强了PHP。ini文件,这使得用PHP。ini来配置PHP显得极为容易,这个文件可以在运行时被Apache(unix系统)或由Windows 注册(Windows 环境)。 (9)加密支持:PHP4实现了完整的加密, 这些加密功能是一个完整的mycrypt库,并且 PHP 4.0 支持哈希函数。Blowfish,TripleDES,MD5,并且SHA1 也是可使用的一些加密算法。 (10)类型检查:PHP 4.0 支持同一操作符用于评类型检查:===( 3 等号运算符 ), 为在两个值和其类型之间作检查。例如, 3 ===3 将视为假 ( 类型是不同的 ), 而 3 ==3 ( 相等判断 ) 将视为真。 (11)FTP 支持:PHP 4.0 支持 FTP 。通常, 你会为通过一个调制解调器连接下载一个大文件提供一个接口。然而, 如果你确实有需要,可以使用PHP 。 (12)PHP4新增函数或功能增强函数:PHP 4.0 新增了许多函数,同时也将许多现有的函数功能进行了增强,以下是一些例子。 array_count_values() eval() foreach() nclude() ob_end_clean() ob_end_flush() ob_get_contents() ob_start() strip_tags() unset() (13)here打印:PHP 4.0 的Here打印是与Perl类似的, 尽管完全不相同。Here是打印大容量文章的一个有用的方法,例如在 HTML文件中,不会漏掉任何一个字符,例如目录标记。 (14)HTTP Session fallback 系统:为 HTTP Session管理的一个 fallback 系统在 PHP 4.0被实现 。缺省情况下,Session标识符由cookies存储。如果没有cookies支持或一项cookies任务失败,Session标识符自动被创建并在 URL 的查询字符串中被携带。 (15)ISAPI 支持:PHP 4.0 能作为一个个性化的 ISAPI 模块作为 IIS插件 。这比 PHP 3.0 更有效, 它作为一个外部的程序来运行。 (16)内存:PHP 4.0 能更有效的使用内存, 导致较少的内存占用消耗,这主要归功于引用计数技术的实现。 (17)其他类成员函数:在 PHP 4.0 你能在成员函数本身的作用域或全局范围内调用其他类的成员函数。例如,你能用一个子函数覆盖父函数,并在子函数中调用父函数。 (18)多维数组:在 PHP 4.0 ,利用GET,POST, Cookies的进行的数据传输支持多维数组。 (19)个性化的 HTTP Session支持:HTTP Session处理, 包括 fallback 系统管理,在 PHP 4.0被它的新库函数实现 。在版本 3.0 中处理Session要求使用 PHPLIB 和第三方的库函数, 它比把Session直接地由 PHP 支持慢了许多。 (20)个性化的 Java 支持:PHP 4.0 支持和java的交互。这种个性化的Java 支持为PHP 在 Java 对象上创建和使用方法提供一个简单并且有效的工具。 21)对象和数嵌套组:PHP 4.0 实现了功能更加强大的对象, 移去了 PHP 3.0存在的种种句法限制。对象能在数组以内被嵌套并且反过来也如此, 可以根据你的需要实现嵌套。 (22)面向对象的编程:PHP 4.0 为面向对象的编程和构造类及对象提供扩展的功能和新特征。PHP4实现了对象重载,引用技术等新技术。 (23)对象重载支持:对象重载语法允许第三方的基于面向对象的类库使用 PHP4 的面向对象的特征存取他们自身的功能。使用这个特征的一个 COM 模块已经被实现了。 (24)输出缓冲支持:PHP 提供了一个输出缓冲函数集合。输出缓冲支持允许你写包裹函数功能压缩缓冲区。在 PHP4 的输出缓冲支持允许 HTML 头信息存放, 无论 HTML的正文是否输出。头信息( (header(), content type, and cookies ) 不采用缓冲 。 (25)增加了PCRE 库:PHP 4.0 包括一个 Perl 兼容的正则表达式 (PCRE ) 库, 和正常regex库一起与 PHP 绑定。split 和replace PCRE 功能被支持。PCRE 和 Perl 正规表达式之间有一些细微差别。 (26)PHP.ini 文件:PHP.ini文件在 PHP4.0 被重新设计, 使用的 PHP 的配置PHP.ini是更容易并且更有效的。全部文件能被Apache 在运行时间操作 ( 在 Apache环境 下 ) 或由 Windows 注册表 ( 在 Windows 下面 ) 。被加入PHP.ini文件的配置指令自动地在所有相关的模块中被支持。 (27)引用计数:PHP 4.0 为系统中的每个数值提供了引用计数, 包括资源。一旦一个资源不再被任何变量引用,它自动地被释放以节省内存资源。利用这个特征的最明显的例子一个内置SQL查询的循环语句。在PHP 3.0中 ,每次递归另外的 SQL 结果集合重复申请内存,直到脚本执行完毕,这些结果集合占用的内存才被释放。 (28)支持引用:通过引用可以改变一个变量的值。 (29)函数的运行时绑定:PHP 4.0 的运行时间绑定功能允许你在他们被声明以前调用, 无论声明是否在代码以后或是在运行时间。 (30)类的运行时信息:PHP 4.0 支持在运行时刻存取下列类信息:一个对象的类名,一个对象的父类的类名字,以及对象函数所在的名字。 (31)服务器抽象层:为支持WEB服务器提供了增强型 SAPI ( 服务器 API ) 接口,是 PHP 4。0 不可分的一部分。这个服务器抽象层,提供了通用的WEB服务器接口支持,支持多线程WEB服务器,为大多数的WEB服务器提供透明的支持, 这些服务器包括 Apache ,IIS ( ISAPI ), 以及 AOL 服务器。 --------------------------------------------------------------------------------------------------------------------------PHP5新特性: 更加面向对象化的PHP PHP 5 引入了新的对象模型(Object Model)。完全重写了 PHP 处理对象的方式,允许更佳性能和更多特性。 PHP处理对象部分的内核完全重新开发过,提供更多功能的同时也提高了性能。在以前版本的php中,处理对象和处理基本类型(数字,字符串)的方式是一样的。这种方式的缺陷是:当将对象赋值给一个变量时,或者通过参数传递对象时,对象将被完全拷贝一份。在新的版本里,上述操作将传递引用(可以把引用理解成对象的标识符),而非值。