1. PHP 基本描述:一种开源,工作在服务器端,跨平台,使用HTML脚本的语言,因为可置入HTML页面,因此尤其适用于网页制作。 学习理由:使用十分广泛。“借助缓存高速调用脚本,并使用编译代码插件来增强效果是今后趋势所在。使用C或COBOL创建Web应用程序是不可行的。 2. C# 基本描述:一种通用编辑,面向对象的编程语言,由微软作为其.net计划的一部分开发而成,包含C和C++。 学习理由:是.Net框架的基础部分。Duquaine说:“如果您大量使用Microsoft的产品,那么学习C#是十分有必要的。” 3. AJAX (同步 JavaScript 与 XML) 基本描述:虽然从技术上来说,这并非一种编程语言,但是AJAX使用XHTML或HTML,JavaScript以及XML来建立互动网络应用程序。 学习理由:自从Google地图将AJAX应用到地图上,对AJAX知识的需求不断膨胀。Huckaby说:“对AJAX知识需求相当大,因为它很难掌握。”微软最近声称将发布一个名为Atlas的工具来帮助AJAX更容易被实施。Huckaby说:“如果微软的Atlas工具获得成功,它将会给普通工作者带来极大的复杂性和困扰。” 4. JavaScript 基本描述:请不要与Java混淆,JavaScript是一种面对对象的脚本变成语言,它运行在客户端的Web浏览器上。它比Java更简洁,拥有简化的命令,易用的代码,并且无需进行编译。 使用理由:它可置入HTML,被用于大量的网页来验证表格,建立cookie,侦测浏览器以及提高设计。由于其易于学习与使用广泛,已被视为重要的学习背 5. Perl 相关描述:Perl是一种开源跨平台、运行在服务器端的解释语言,在CGI程序中被大量用于处理文字。 学习理由:Perl在处理大量文字方面的能力使得其非常流行,且广泛用于写入多任务的网络服务器程序。Duquaine说:“如果您正在从事网络应用程序的工作,那么学习某种脚本语言(如Perl或PHP)是十分有必要的。”6. C 基本描述:一种标准化的通用编程语言,它是最普及的语言之一,也是多种其它语言(如C++)的基础。 学习理由:Duquaine说:“学习C是相当重要的。在学习了C后,跳跃到Java或C#就变得十分容易,因为许多语法是通用的。另外,许多C语言的语法也被用于脚本语言。” 7. Ruby and Ruby on Rails 基本描述:Ruby是一种动态的面向对象的开源语言。Rails上的Ruby则是一种使用Ruby编写的开源网络程序框架,该框架与MVC(模型-查看-控制)结构十分类似。 学习理由:由于简便性,有效性以及让电脑完成任务的能力,近年来,该语言的使用量已经迅速增长。另外的好处是非常容易学习。 8. Java 基本描述:一种面向对象的变成语言,由James Gosling和其Sun Microsystems的同事在上世纪90年代早期共同开发。 学习理由:被许多开发人员所拥戴,被成为“美丽的”语言。它适用于没有.net编程经验的人员。Duquaine说:“如果您不是微软产品的使用者,那么学习Java必不可少。” 9. Python 基本描述:一种动态面对对象的翻译开源语言。使用动态存储管理。 学习理由:Python是一种高度可读的抽象语言,许多开发人员认为其非常有趣,它的语法简单,因此被Google与学术界大量运用。 10. VB.Net (Visual Basic .Net) 基本描述:一种面向对象的语言,在微软.Net框架中使用。 学习理由:最具争议的是VB.Net目前是否为最流行的且是几种必须掌握的语言之一。Huckaby说:“VB.Net目前是被广泛优先采用的。”
在过去的几十年间,大量的程序设计语言被发明、被取代、被修改或组合在一起。尽管人们多次试图创造一种通用的程序设计语言,却没有一次尝试是成功的。之所以有那么多种不同的编程语言存在的原因是,编写程序的初衷其实也各不相同;新手与老手之间技术的差距非常大,而有许多语言并对新手来说太难学;还有,不同程序之间的运行成本(runtime cost)各不相同。 有许多用于特殊用途的语言,只在特殊情况下使用。例如,PHP专门用来显示网页;Perl更适合文本处理;C语言被广泛用于操作系统和编译器的开发(所谓的系统编程)。 程序设计语言使得计算机程序不再过度地倚赖某种特定的机器或环境。这是因为程序设计语言在不同的平台上会被编译成不同的机器语言,而不是直接被机器执行。最早出现的编程语言之一FORTRAN的一个主要目标,就是实现平台独立。 虽然大多数的语言可以既被编译(compiled)又被解译(interpreted),但大多数只在一种情况下能够良好运行。在一些编程系统中,程序要经过几个阶段的编译,一般而言,后阶段的编译往往更接近机器语言。这种常用的使用技巧最早在1960年代末用于BCPL,编译程序先编译一个叫做“0代码”的转换程序(representation),然后再使用虚拟器转换到可以运行于机器上的真实代码。这种成功的技巧之后又用于Pascal和P-code,以及Smalltalk和二进制码,虽然在很多时候,中间过渡的代码往往是解译,而不是编译的。 如果所使用的翻译的机制是将所要翻译的程序代码作为一个整体翻译,并之后运行内部格式,那么这个翻译过程就被成为编译。因此,一个编译器是一个将人可阅读的程序文本(叫做源代码)作为输入的数据,然后输出可执行文件(object code)。所输出的可执行文件可以是机器语言,由计算机的中央处理器直接运行,或者是某种模拟器的二进制代码。 如果程序代码是在运行时才即时翻译,那么这种翻译机制就被称作解译。经解译的程序运行速度往往比编译的程序慢,但往往更具灵活性,因为它们能够与执行环境互相作用。参见解译语言。 目录 [显示隐藏] 1 特点 1.1 数据和数据结构 1.2 指令及流程控制 1.3 引用机制和重用 2 程序设计语言的历史 3 常见的程序设计语言 [编辑]特点 每一种程序设计语言可以被看作是一套包含语法、词汇和含义的正式规范。 这些规范通常包括: 数据和数据结构 指令及流程控制 引用机制和重用 设计哲学 大多数被广泛使用或经久不衰的语言,拥有负责标准化的组织,经常会晤来创造及发布该语言的正式定义,并讨论扩展或贯彻现有的定义。 [编辑]数据和数据结构 现代计算机内部的数据都只以二元方式储存,即开-关模式(on-off)。现实世界中代表信息的各种数据,例如名字、银行账号、度量以及同样低端的二元数据,都经由程序设计语言整理,成为高端的概念。 一个程序中专门处理数据的那个系统被称为程序语言的型态系统(type system);对型态系统的研究和设计被称为型态理论(type theory)。语言可以被分为静态型态系统(statically typed systems),例如C++和Java,和动态型态系统(dynamically typed systems),例如Lisp,JavaScript,Tcl和Prolog。前者可被进一步分为包含宣告型态(manifest type)的语言,即每一个变量和函数的型态都清楚地宣告,或type-inferred语言(例如MUMPS,ML)。 大多数语言还能够在内置的型态基础上组合出复杂的数据结构型态(使用数组,列表,堆栈,文件等等)。面向对象语言(Object Oriented Language,又译作物件导向语言)允许程序员定义新的数据型态,即“对象”或“物件”(objects),以及运行于该对象的函数(functions)和方法(methods)。 除了何时以及如何确定表达式和型态的联系,另外一个重要的问题就是语言到底定义了哪些型态,以及允许哪些型态作为表达式的值。诸如C编程语言之类的低端语言允许程序命名内存位置、内存区域以及编译时的常量;ANSI C甚至允许表达式返回结构值(struct values)。功能性的语言一般允许变量直接使用运行时计算出的值,而不是指出该值可能储存的内存地址。 [编辑]指令及流程控制 一旦数据被确定,机器必须被告知如何对这些数据进行处理。较简单的指令可以使用关键字或定义好的语法结构来完成。不同的语言利用序列系统来取得或组合这些语句。除此之外,一个语言中的其他指令也可以用来控制处理的过程(例如分支、循环等)。 [编辑]引用机制和重用 引用的中心思想是必须有一种间接设计储存空间的方法。最常见的方法是通过命名变量。根据不同的语言,进一步的引用可以包括指向其他储存空间的指针。还有一种类似的方法就是命名一组指令。大多数程序设计语言使用宏调用、过程调用或函数调用。使用这些代替的名字能让程序更灵活,并更具重用性。 [编辑]程序设计语言的历史 二十世纪四十年代当计算机刚刚问世的时候,程序员必须手动控制计算机。当时的计算机十分昂贵,唯一想到利用程序设计语言来解决问题的人是德国工程师楚泽(Konrad Zuse)。 几十年后,计算机的价格大幅度下跌,而计算机程序也越来越复杂。也就是说,开发时间已经远比运行时间来得宝贵。 于是,新的集成、可视的开发环境越来越流行。它们减少了所付出的时间、金钱(以及脑细胞)。只要轻敲几个键,一整段代码就可以使用了。这也得益于可以重用的程序代码库。 [编辑]常见的程序设计语言 APL、A+和J ASP Ada 汇编语言 AWK Basic、Fortran Brainfuck C、C++ C# Clipper COBOL dBase PASCAL、Delphi Forth FoxPro F# IDL Java JavaScript J# LISP LOGO Modula Perl PHP PL/1 Prolog Python Ruby Scheme Smalltalk SQL Tcl/Tk UML Visual Basic Visual FoxPro