我和编程语言I,Code.作为原始作者,此文档0积分上传为的是方便大家下载和取用其中的素材,请不要转载或者重复上传。作为网络的使用者,相信大家跟我一样痛恨充满重复网络资料的搜索结果页……少侠请留步不谈枯燥的语言发展结合自己的生活体验,从个人视角谈谈2007年以后接触编程人的编程感悟。引言语言和程序微软和编程网络与编程目录编程语言种类•一个有意思的语言发展史简介:jstwind.com/t/30/fs/编程语言排名•比较权威的排名,Tiobe。(每月更新)易语言•中文编程(跟其他语言比起来,总觉得哪里乖乖的)语言和程序•举个例子,三个视图没有一一对应关系。编译运行语言和程序•从C/C++说起。计算机人C/C++源程序二进制程序不跨平台跨平台语言和程序•跨平台–对于初学者:既然跨平台,为何windows下的程序不能直接编译在linux下使用?–因为这涉及到下一个概念,windows编程,见下节。计算机1不跨平台跨平台C/C++源程序计算机2语言和程序微软和编程网络与编程目录微软与编程•Windows一统桌面好多年,工作学习都是它。•整天上课,C,C++,数据结构一直都在和console打交道,看到windows上的各种窗口程序,觉得这个小控制台太低端了。•感觉多线程,网络编程,窗体这些东西和我们学的有毛关系!–其实那些就是所谓的windows编程,VC编程。这些东西需要操作系统的配合来完成。微软与编程•大学第三门语言java。•Java中有多线程,图形库等等,为什么C/C++一直没有这些概念,最后编出来的都是一个黑框框–单纯从windows编程环境的角度,在编程的结构上,Windows+C(如vc)==Java。C/C++编程是一种纯粹的编程,VC和Java融入了操作系统的概念。准确的说,VC是windows系统编程,Java是java虚拟系统编程。–只要你的机器安装了java的运行环境(即jre),你就可以运行java程序,而VC编写的程序由于要配合windows的运行环境,因此无法实现跨平台。Java本质上是在平台之上有构建了一个虚拟层,这也是为什么java虽然跨平台,却比VC的程序慢很多。微软与编程–程序的运行–多线程,窗体都是操作系统的概念,因此,你在C/C++编程中从来看不到这些东西,而这些章节是java中的必选章节。–因此,C/C++与java直接比较,有些笼统,让初学者摸不着头脑。windowsVC程序linuxwindowsjava程序linuxJava运行环境微软与编程–虽然windows不能跨到linux,但windows庞大的垄断市场和自己的多版本操作系统也需要其自身的跨平台。于是–C#诞生了,#是四个+的意思。–同java一样,从本地到网页编程他们都有支持:java&jsp,c#&asp.netwindows1VC程序windows2windows1.Net程序windows2.net运行环境语言和程序微软和编程网络与编程目录网络与编程•查看服务器文件,共享资料。计算机网站服务器文件文件文件网络与编程•信息浏览更加丰富,有了专用的html文件和解析它的浏览器,类似doc文件和word程序。•Html,css,javascript渲染文件。其中javascript的功能更像程序语言,但它相比之前提到的语言,属于又一大类:脚本语言。计算机网站服务器文件文件文件网络与编程•现在连Javascript都可以运行在服务器端做服务器的事情–Node.js高效服务器工具包–得益于硬件速度的提升和google高效的js解释技术。网络与编程•脚本语言:编写后直接交给解释器运行,不需要编译•C/C++,java等语言:编写后需要编译成二进制文件。计算机脚本程序解释器计算机C/C++等编译的二进制程序网络与编程•Html,css,javascript让客户端的表现形式更加生动。但随着web2.0的发展,服务器端的文件不再简单由管理员提供,客户机开始参与到网站文件的编辑当中。•因此,能动态处理用户输入输出的服务器端脚本语言越来越重要。(ASP,ASP.Net,PHP,JSP等)计算机网站服务器脚本程序生成文件生成文件网络与编程•万能的脚本,perl,python,ruby等。•这三样东西可以完成传统的程序功能,也可以应用于web的编写。Perl最古老的,语法更晦涩一些。但以其丰富的功能库实现和历史地位任然存在于当下。Python和ruby则充满了朝气。当下不乏用他们编写的大小型工具软件(得益于硬件速度的提升,即使中间隔了一层解释器的开销,速度依然可以接受)。•大名鼎鼎的openstack即为python编写。语言学习和使用•学习语言的建议–掌握一门高效的语言,如C/C++。用于性能要求场合。–掌握一门工具脚本,如python,ruby。简便快速的手头工具。其他:Java通吃语言,库丰富,大型项目多。PHP真是web专业户,各种封装好的web程序,如wordpress。其他不了解,根据自己的需要去学习使用吧。谢谢