IT公司中最流行的种编程语言 | others | 优缺点对比 |
---|---|---|
Google公司在正式产品中使用四种语言
Webpage script | Interpreted languages | Hybrid | compliling | Assembly |
---|---|---|---|---|
解释性语言 | 混合型语言 | 编译型语言 | 汇编语言 | |
JavaScript | Perl | Java | C | |
Jscript | Python | C# | C++ | |
PEBOL | delphi | |||
Ruby | ||||
也常被称为script语言,通常用来取代批处理文件和shell script以便和底下的操作系统沟通;比较高阶,程序比较好些,往往简短的几行程序就抵得过Java and C++的一堆代码;不用编译; | 介于解释型语言和编译型语言之间; | 最接近硬件的语言; | ||
以上类别由易到难; |
语言 | 英文 | 中文 | 年代 | 服务领域 | 备注 |
---|---|---|---|---|---|
FORTRAN | FORmula TRANslator | 算式翻译器 | 1954 | 数值计算(科学计算) | 算式; |
COBOL | COmmon Business oriented Language | 面向商业的通用语言 | 1959 | 数值计算(面向商业) | |
Lisp | LISt Processor | 表处理器 | 60年代 | 表结构的非数值处理 | 数学计算模型 |
SNOBOL | StriNg Oriented symBolic Language | 字符串面向符号化语言 | 处理字符串 | ||
Java | 面向商务 | ||||
C | 系统描述 | ||||
C++ | 系统描述 | ||||
Ruby | Web领域 | ||||
PHP | Web领域 | ||||
Python | Web领域 | ||||
Perl | Web领域 | ||||
1 更高抽象度,更倾向于直接表达要表达的概念,也就是说相对于Howw(如何实现),更倾向于What(想要什么)来表达问题;
2 无需显示操作就可以实现分布处理和并行处理;
3 不会像过去的语言那样,让语言本身独立存在,而是和编辑器、调试器、性能分析器等一切工具相互配合,以达到提高整体生产效率的目的。
一些古老的语言,例如BASIC就没有实现充分的抽象化。虽然它提供了用于过程共享的子程序这个概念,但是子程序只能通过编号来调用,而且不能传递参数。由于“赋予名称”是抽象化的重要部分,所以说它的抽象化是不充分的。近代的编程语言中,都可以 一系列过程(程序)赋予相应的名称。
抽象度高的语言不必描述详细过程,从而可以用简短的代码达到目的。
在Ruby和Lisp这样的语言中,由于程序本身的信息是可以被访问的,因此在程序运行过程中也可以对程序本身进行操作,这就是元编程;使用元编程技术,可以实现通常情况下无法实现的操作。例如,Ruby on Rails的数据库适配器ActiveRecord可以读取数据库结构,通过元编程技术在运行时添加用于访问数据库记录的方法。这样一来,即使数据库结构发生变化,在软件一侧也没有必要做出任何修改。程序是由数据结构和算法构成的,然而,如果环境允许程序本身做为数据结构来操作的话,那么元编程也就和面向一般数据结构的一般操作没什么两样了。
客户端 | 服务器端 | |
动态 (运行时决定) |
HTML5 | Ruby |
静态 (运行前决定) |
Java | Go |
Java现在是更多地被用作服务器端语言,而在其刚诞生之初是作为客户端语言活跃过一段时间,最初正是伴随嵌入在浏览器中的Applet技术而出现的;
所谓静态,就是不实际运行程序,仅通过程序代码的字面来确定结果的意思;而所谓动态,就是只有当运行时才确定结果的意思。
这四种语言都具备面向对象的性质,而面向对象本身就是一种包含动态概念的性质;只是偏重的程序不同而已。
动态运行模式:简单来说,就是运行中的程序能够识别自身,并对自身进行操作。对程序自身进行操作的编程,也被称为无编程(Metaprogramming)。在Ruby和JavaScript中,元编程是十分自然的,比如查询某个对象拥有哪些方法,或者在运行时对类和方法进行定义等等。
C语言是一种通用性的编程语言,它既具有高级语言的特点,又具有汇编语言的特点。它由美国贝尔研究所的D.M.Ritchie于1972年推出,1978年后,C语言已先后被移植到大、中、小及微型机上,它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,三维,二维图形和动画,具体应用比如单片机以及嵌入式系统开发。
尽管C语言是为实现操作系统软件而设计的,但它也广泛的应用于开发便携式应用软件。
代码: #include <stdio.h> int main(void) { printf("hello, world!n"); return 0; }
1979年,Bjarne Stroustrup在贝尔实验室发明了C++,作为一种增强的C语言,它曾被命名为C with Classes。在1983年时被重命名为C++。
C++这个词在中国大陆的程序员圈子中通常被读做“C加加”,而西方的程序员通常读做“C plus plus”,“CPP”。 它是一种使用非常广泛的计算机编程语言。C++是一种静态数据类型检查的、支持多重编程范式的通用程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序设计、泛型程序设计等多种程序设计风格。
C++是最流行的编程语言之一,它的应用领域涵盖了系统软件、应用软件、驱动程序、嵌入式软件、高性能的服务器与客户端应用程序和诸如电视游戏等娱乐软件。
代码:
#include <iostream>
int main() {
std::cout << "Hello, world!n";
}
Java最初是由James Gosling在Sun Microsystems(现在是Oracle旗下的子公司)开发的一种编程语言,并作为Sun Microsystems的Java平台的核心组件于1995年发布。
这种语言的大部分语法源自于C和C++,但是它具有简单的对象模型和更少的底层服务。Java应用程序是典型的编译程序(生成类文件),这样可以使它运行在任何一个Java虚拟机上,而无需考虑计算机的架构。
Java原本设计用于交互式电视,但是它对于当时的有线电视产业过于先进了。(相关文章:《如何成为一名Java自由开发人员》)
Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE, JavaEE, JavaME)的总称。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
一开始就具备了垃圾回收(GC)机制,并在语言中内置了异常处理,其标准库也是完全运用了异常处理来设计的。
代码:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, world!");
} }
PHP是一种广泛使用的编程语言.因为它所编写的代码量小,越来越多的公司转向PHP编程。
PHP是一种通用的脚本语言,尤其适合于服务器端的网络开发。一个请求文件里的任何PHP代码都会在PHP的运行周期中被执行,这通常用于构造动态网页内容。
PHP也可以用于命令行脚本和客户端GUI应用程序。PHP可以部署在大部分网络服务器、操作系统和平台上,也能与很多关系型数据库管理系统(RDBMS)相结合。它是免费的,并且PHP小组为用户提供完整的源代码去构造、定制或扩展个性化的需求。(相关文章:《PHP程序员突破成长瓶颈 - 附学习建议》)
代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>PHP Test</title>
</head> <body>
<?php echo 'Hello World';?>
</body> </html>
C sharp(音标 [∫a:p])。
C#是由微软的.NET开发而来的。旨在成为一种简单、流行、通用、面向对象型的编程语言。它的开发团队由Anders Hejlsberg领导。
C#看起来与Java有着惊人的相似;它包括了诸如单一继承、界面、与Java几乎同样的语法,和编译成中间代码再运行的过程。但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司.NET windows网络框架的主角。
代码:
using System;
class ExampleClass {
static void Main() {
Console.WriteLine("Hello, world!");
} }
Visual Basic .NET (VB.NET)是一种基于.NET Framework运行的面向对象电脑编程语言。微软当前为Visual Basic提供两种主要的开发环境:商业软件Microsoft Visual Studio以及免费的Microsoft Visual Studio Express。
代码: Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles Button1.Click Msgbox("Hello, World") End Sub End Class
Ruby是一种动态、反射、通用、面向对象的编程语言,结合了来源于Perl的语法。Ruby在90年代中期起源于日本,最初由松本行弘“Matz”设计并开发。
代码: puts "Hello World!"
JavaScript最初由网景公司的Brendan Eich开发并命名为Mocha,之后重命名为LiveScript到最终的JavaScript。
JavaScript是一种运行在客户端浏览器上的面向对象型脚本编程语言,它比Java更小,拥有简化的命令集,编码简单并且无需编译。JavaScript也叫做ECMAScript。
集成在浏览器中,可以在网页中嵌入程序逻辑;
在Javascript中,局部变量需要用保留字“Var”进行显式声明,如果不小心忘记声明,这个变量就会变成全局变量。由于全局变量在任何地方都可以被访问和修改,于是就变成一个孕育bug的可怕温床;
代码:
<html>
<head><title>simple page</title></head>
<body>
<script type="text/javascript">
document.write('Hello World!');
</script>
<noscript> <p>Your browser either does not support JavaScript, or you have JavaScript turned off.</p> </noscript>
</body>
</html>
由Larry Wall设计,Perl是最为广泛使用的编程语言中的一种,Perl第一次被应用在文本编辑器上使用了。
Perl是原本为文本处理而开发的通用型编程语言,但是自2010年开始,它便广泛的应用于包括系统管理、网站开发、网络编程、游戏、生物信息学和 GUI开发等领域。Perl由O’Reilly Media发布,特征是封面上的一张骆驼图片,因此通常被称为“骆驼书”。
编注:原文作者 Akash Padhiyar 就故意把第10种留给读者来评论。在原文评论中,Python的呼声最高。不知你怎么看?如果还有备选语言,请在评论中告诉我们。
结构化查询语言(Structured Query Language)简称SQL,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统可以使用相同的结构化查询语言语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使他具有极大的灵活性和强大的功能。
SQL语言结构简洁,功能强大,简单易学,所以自从IBM公司1981年推出以来,SQL语言,得到了广泛的应用。如今无论是像Oracle,Sybase,Informix,SQL server这些大型的数据库管理系统,还是像Visual Foxpro,PowerBuilder这些微机上常用的数据库开发系统,都支持SQL语言作为查询语言。
Python是一种面向对象、直译式计算机程序设计语言。
1991年,Rosum设计的,面向对象,但OOP不是必须的,因为有些小程序根本就不需要OOP。(Python,蟒;)>
BASIC(Beginners' All-purpose Symbolic Instruction Code,又译培基),意思就是“初学者通用符号指令代码”,是一种设计给初学者使用的程序设计语言。BASIC是一种直译式的编程语言,在完成编写后不须经由编译及连结等手续即可执行,但如果需要单独执行时仍然需要将其建立成执行档。
BASIC是由达特茅斯学院院长、匈牙利人约翰•凯梅尼(John G. Kemeny)与数学系教师托马斯•卡茨(Thomas E. Kurtz)共同研制出来的。1964年BASIC语言正式发布。第一个BASIC程序在1964年5月1日早上4时,由BASIC编译程序进行编译后成功运行[1] 。1975年,比尔•盖茨把它移植到PC上。
PROGRAM product
LET m = 2
LET a = 4
LET force = m*a
PRINT force
END
Pascal是一种计算机通用的高级程序设计语言。Pascal的取名是为了纪念十七世纪法国著名哲学家和数学家Blaise Pascal。它由瑞士Niklaus Wirth教授于六十年代末设计并创立。Pascal语言语法严谨,层次分明,程序易写,具有很强的可读性,是第一个结构化的编程语言。
在处理大数据量演算,解决方案,动态变化的问题,以及多种混杂数据的问题上,Lisp是一种理想的编程语言。它适合定位最具有挑战性的问题。
Common Lisp,即为大家所熟知的CL,一种遵循ANSI-standard规范高效运行的编程语言.使用Common Lisp最好的地方是用户可以根据应用领域选择合适方法和范例。
一种计算机编程语言的变体,Emacs Lisp可以被任何其他的编程语言所使用。
1.以简体中文作为程序代码进行编程操作。
2.全中文支持,无需跨越英语门槛。
3.全可视化编程,支持所见即所得程序界面设计和程序流程编码。
4.中文语句快速录入。提供多种内嵌专用输入法,彻底解决中文语句输入速度慢的问题。
5.代码即文档。自动规范强制代码格式转换,任何人编写的任何程序源代码格式均统一。
6.加入了png支持,所涉及到组件: 标签, 按钮, 选择框, 图片框, 图形按钮, 画板, 窗体, 表格。
O语言是一款中文计算机语言(或称套装:O汇编语言、O中间语言、O高级语言)[6]
二十世纪70年代Bells Labs创立了Awk语言,它是一种用于处理大数据量强大的命令行语言。
Bash(Bourne-Again Shell)是一种专门为GNU操作系统服务的命令行语言。
Eiffel是一种面向对象的语言。它演变自1985年,是世界上众多最成熟的编程语言中的一种.在解决计算问题中,Eiffel代码是可读的和可重用的。
Erlang是另外一种编程语言,通常分布在网络环境中,被用于构建强大的系统程序,Erlang和Java类似。
Forth是一种基于堆栈概念的高层次编程语言.它不依赖于变量的使用。这种语言帮助解决了一些编程中的老问题。
Icon是另外一种具有处理数据结构和字符串特征的高层次编程语言。Icon的运行速度比C语言还要快。它在程序员尝试新想法,快速编程,文本处理,图像编程,处理大的数据类型方面很有作用。
Lua是一种强大快速的脚本语言。
Lua在葡萄牙语中是“月亮”的意思;
巴西人开发的编程语言,是一种便于嵌入应用程序中的通用脚本语言;
语法有点像Ruby,但其内涵更像JavaScript;
将数组和散列表合为一体,用表(table)来实现;(PHP也是如此)
它是一种将逻辑编程方式和功能编程方式联合在一起的编程语言。Mercury在复杂的,严格类型风格的系统上运行。
Pike和C语言以及Java类似。它是一种易学的语言,因为它不牵涉复杂的函数功能。
Google公司在正式产品中主要使用四种语言,最不满意的就是C/C++(不具备垃圾回收等最近语言所提供的编程辅助功能,因此,开发效率较低;),所为,为了有一种更好的系统编程语言的需要,Google开发了全新设计的编程语言Go;
1 垃圾加收;
2 支持并行处理的Goroutine;
3 Structural Subtyping(结构子类型);
package main
import "fmt"
func main(){
fmt.Printf("Hellow,world!/n");
}
Google公司基于改善Javascript语言而产生的;
基于改善Javascript语言而产生的;
其编译器是通过Javascript编写的,编译结果也是Javascript,因此只要有JavaScript引擎,无论在任何环境下都可以工作。
C#是一种安全的、稳定的、简单的、优雅的,由C和C++衍生出来的面向对象的编程语言。它在继承C和C++强大功能的同时去掉了一些它们的复杂特性(例如没有宏以及不允许多重继承)。C#综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。
C#是面向对象的编程语言。它使得程序员可以快速地编写各种基于MICROSOFT .NET平台的应用程序,MICROSOFT .NET提供了一系列的工具和服务来最大程度地开发利用计算与通讯领域。
优点
C#是多种语言的混合体,因此它像Java一样语法简洁,像VB6一样使用简单,像C++一样功能强大和灵活(C#没有像C++那样麻烦的位操作)。以下是C#核心特征的一部分,其中大部分特点也是其他支持.NET的程序语言所共有的特征。
不需要指针!C#程序通常不需要直接对指针进行操作(尽管在绝对必要时也能自由地进行底层操作)。
垃圾收集器能够自动管理内存。因此,C#不支持delete关键字。
类、接口枚举、结构和委托都有正式的语法结构。
具有与C++类似的功能,可以简单地重载运算符为自定义类型(例如,不需要操心确保"返回*this以能够链接")。
支持基于特性的编程。这种方式的开发允许我们注释类型及其成员来进一步限定其行为。
构建泛型类型和泛型成员的能力。使用泛型,我们可以构建非常高效的并且类型安全的代码,在和泛型项交互的时候可以定义很多"占位符"。
支持匿名方法,它允许我们在任何需要委托类型的地方提供内联函数。
很多委托/事件模型的简化,包括协变、逆变以及方法组转换。
使用partial关键字跨多个代码文件定义单个类型的能力(或者如果有必要的话,可以作为内存中的表示)。
支持强类型的查询(就像LINQ,即集成查询语言),可用于和各种形式的数据进行交互。
支持匿名类型,它允许我们建模一个类型的"形"(shape)而不是其行为。
使用扩展方法扩展既有类型功能的能力。
包含了Lambda运算符(=>),它可以进一步简化.NET委托类型的使用。
新的对象初始化语法,它允许我们在对象创建时设置属性的值。
支持动态类型dynamic。
缺点
1.该语言不适用于编写时间紧迫或性能非常高的代码,例如一个要运行1000或1050次循环,并在不需要这些循环时,立即清理它们所占用的资源;
2.缺乏性能极高的应用程序所需要的关键功能,包括保证在代码的特定地方运行的内联函数和析构函数。
Visual Basic是一种由微软公司开发的包含协助开发环境的事件驱动编程语言。从任何标准来说,VB都是世界上使用人数最多的语言——不仅是盛赞VB的开发者还是抱怨VB的开发者的数量。它源自于BASIC编程语言。VB拥有图形用户界面(GUI)和快速应用程序开发(RAD)系统,可以轻易的使用DAO、RDO、ADO连接数据库,或者轻松的创建ActiveX控件。程序员可以轻松的使用VB提供的组件快速建立一个应用程序。
优点
⑴Visual Basic 提供了强大的可视化编程能力,可以让你轻松地做出漂亮的程序。
⑵众多的控件让编程变得象垒积木一样简单。
⑶Visual Basic 全部汉化,对于不会英语的人也能轻松使用。
缺点
⑴Visual Basic 不是真正的面向对象的开发工具。
⑵Visual Basic 的数据类型太少,而且不支持指针,这使得它的表达能力很有限。
⑶Visual Basic 不是真正的编译型语言,它产生的最终代码不是可执行的,是一种伪代码。它需要一个动态链接库去解释执行,这使得Visual Basic 的编译速度大大变慢。(Visual Basic 5以及以前的版本产生的代码是伪代码,Visual Basic 6 编译出来的代码是真正的可执行代码。)
综述
Visual Basic对学习者的要求不高,几乎每个人都可以在一个比较短的时间里学会VB编程,并用VB 做出自己的作品。对于那些把编程当做游戏的朋友来说,VB 是您最佳的选择。
Visual C++
MicrosoftVisual C++,(简称Visual C++、MSVC、VC++或VC)微软公司的C++开发工具,具有集成开发环境,可提供编辑C语言,C++以及C++/CLI等编程语言。VC++整合了便利的除错工具,特别是整合了微软视窗程式设计(Windows API)、三维动画DirectX API,Microsoft .NET框架。目前最新的编辑器版本版本是Microsoft Visual C++ 2012。
优点
⑴C语言灵活性好,效率高,可以接触到软件开发比较底层的东西。
⑵微软的MFC库博大精深,学会它可以让随心所欲地进行编程。
⑶VC是微软制作的产品,与操作系统的结合更加紧密。
缺点
⑴对使用者的要求比较高,既要具备丰富的C语言编程经验,又要具有一定的WINDOWS编程基础,它的过于专业使得一般的编程爱好者学习起来会有不小的困难。
综述
VC是程序员用的东西。如果你是一个永不满足的人,而且可以在编程上投入很大的精力和时间,那么学习VC你一定不会后悔的。
c++ Builder是由Borland公司推出的一款可视化集成开发工具。C++ Builder具有快速的可视化开发环境:只要简单地把控件(Component)拖到窗体(Form)上,定义一下它的属性,设置一下它的外观,就可以快速地建立应用程序界面;C++ Builder内置了100多个完全封装了Windows公用特性且具有完全可扩展性(包括全面支持ActiveX控件)的可重用控件;C++ Builder具有一个专业C++开发环境所能提供的全部功能:快速、高效、灵活的编译器优化,逐步连接,CPU透视,命令行工具等。它实现了可视化的编程环境和功能强大的编程语言(C++)的完美结合。
优点
⑴继承了C语言的全部优点。
⑵完全的可视化。
⑶极强的兼容性,支持OWL、VCL和MFC三大类库。
⑷编译速度非常快。
缺点
⑴由于离底层较近,开发复杂度较高,对程序员有着较高的要求,且开发效率可能较低。
综述
C++ Builder 既保持了C语言编程的优点,又做到了完全的可视化。
Delphi是Windows平台下著名的快速应用程序开发工具(Rapid Application Development,简称RAD)。它的前身,即是DOS时代盛行一时的“BorlandTurbo Pascal”,最早的版本由美国Borland(宝兰)公司于1995年开发。主创者为Anders Hejlsberg。经过数年的发展,此产品也转移至Embarcadero公司旗下。Delphi是一个集成开发环境(IDE),使用的核心是由传统Pascal语言发展而来的Object Pascal,以图形用户界面为开发环境,透过IDE、VCL工具与编译器,配合连结数据库的功能,构成一个以面向对象程序设计为中心的应用程序开发工具。
优点
⑴Pascal语言结构严谨,可以很好地培养一个人的编程思想。
⑵Delphi是一个真正的面向对象的开发工具,并且是完全的可视化。
⑶Delphi使用了真编译,可以让你的代码编译成为可执行的文件,而且编译速度非常快。
⑷Delphi具有强大的数据库开发能力,可以让你轻松地开发数据库。
缺点
⑴Delphi几乎可以说是完美的,只是Pascal语言的过于严谨让人感觉有点烦。
综述
Delphi比较适合那些具有一定编程基础并且学过Pascal语言的朋友。
ASP是Active Server Page的缩写,意为“动态服务器页面”。ASP是微软公司开发的代替CGI脚本程序的一种应用,它可以与数据库和其它程序进行交互,是一种简单、方便的编程工具。ASP的网页文件的格式是 .asp。JSP(Java Server Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。 用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。
强势
⑴一次编写,到处运行。在这一点上Java比PHP更出色,除了系统之外,代码不用做任何更改。
⑵系统的多平台支持。基本上可以在所有平台上的任意环境中开发,在任意环境中进行系统部署,在任意环境中扩展。相比ASP/PHP的局限性是显而易见的。
⑶强大的可伸缩性。从只有一个小的Jar文件就可以运行Servlet/JSP,到由多台服务器进行集群和负载均衡,到多台Application进行事务处理,消息处理,一台服务器到无数台服务器,Java显示了一个巨大的生命力。
⑷多样化和功能强大的开发工具支持。这一点与ASP很像,Java已经有了许多非常优秀的开发工具,而且许多可以免费得到,并且其中许多已经可以顺利的运行于多种平台之下。
弱势
⑴ 与ASP一样,Java的一些优势正是它致命的问题所在。正是由于为了跨平台的功能,为了极度的伸缩能力,所以极大的增加了产品的复杂性。
⑵ Java的运行速度是用class常驻内存来完成的,所以它在一些情况下所使用的内存比起用户数量来说确实是“最低性能价格比”了。从另一方面,它还需要硬盘空间来储存一系列的.java文件和.class文件,以及对应的版本文件。