⑴ 各种程序设计语言的区别
几种程序语言的区别:java语言、python语言、C语言、PHP语言。
1、java语言:
PHP巨大的生态系统使得在未来几年里全世界需要大量的开发人员对其提供支持。排名前三的内容管理系统-WordPress、Drupal和Joomla都是使用PHP构建的,而且迄今大概有80%的网站运行在PHP之上。
⑵ 为什么开发出了这么多的编程语言
C#与JAVA的相同之处:由于C#与JAVA都是基于C++发展起来的,因此二者之间具有很多相似之处,具体如下:
1、C#和JAVA语言的编译结果是独立于计算机和编程语言的,可执行文件可以在受管理的执行
环境中执行;
2、C#和JAVA语言都是采用了自动的垃圾回收机制;
3、C#和JAVA语言都取消了指针操作;
4、C#和JAVA语言都没有头文件;
5、C#和JAVA语言都只支持单重继承,要实现与多重继承类似的功能,必须通过接口来实现;
6、类都是从Object类派生而来,类的对象通过关键字new生成;
7、C#和JAVA语言都支持线程;
8、C#和JAVA语言都没有全局变量和全局函数,所有的变量和函数都属于某个类所有;
9、C#和JAVA语言都支持对数组和字符串边界的严格检查,不会出现边界溢出的情况;
10、C#和JAVA语言都使用“.”操作符,不再使用“->”和“::”操作符;
11、C#和JAVA语言都将null和bool作为关键字;
12、C#和JAVA语言中所有的值都必须先初始化后才能使用;
13、C#和JAVA语言中的if语句都不允许采用整数作为判断条件;
14、C#和JAVA语言中的try语句块都可以后接finally语句块。
C#与JAVA的不同之处:
尽管C#和JAVA有很多相同之处,但是由于二者是两家不同公司开发的高级程序设计语言,它们又相互独立,
自成体系,各自具有一些自己特有的特点,下面将C#与JAVA之间的不同之处如下:
1、属性
对于那些经常使用快速开发工具,如Delphi或者Visual Basic的开发人员来说,属性是一个非常熟悉的概念。
一般来说,通过getXXX可以读取属性的值,而通过setXXX可以设置属性的值。
JAVA中比较常见的属性操作语句: foo.setSize(foo.getSize()+1); label.getFont().setBold(true);
c#中比较常见的属性操作语句: foo.size++; label.font.bold=true;
很明显,上述的属性设置方式较JAVA来说更为简洁,可主读性也更强。这充分体现了C#简单的特点。
JAVA对于属性的定义:public int getSize(){ return size; } public void setSize(int value){ size=value; }
c#对于属性的定义进行了简化:public int Size{ get{ return size; } set{size=value; }}
2、index
C#提供index来给对象加上索引的功能,从而用与处理数组类似的方式来处理对象,JAVA语言则不支持index
C#中定义index的典型方式如下:
public Story this[int index]
{
get{return stories[index]; }
set{
if(value!=null){
stories[index]=value
}
}
3、delegate :可以认为是一种类型安全、面向对象的函数指针。
C#使有delegate可以通过一个名字访问不同的函数,它实现和JAVA中的interface类似的功能,但是它比interface更为好用。
4、event
C#提供对event的直接支持,它通过delegate和event关键字实现对事件的处理。event关键字隐藏所有delegate方法,运算符“+=”和“-+”允许程序员自由加入或者删除时间处理程序。
5、enum:枚举用于指定一系列的对象。
C#通过如下语句来定义和使用枚举:
定义:public enum Direction{North,East,West,South};
使用:Direction wall=Direction.North;
JAVA不直接支持枚举,如果要实现和C#相类似的功能,必须先定义一个类
public class Direction{
public final static int NORTH=1;
public final static int EAST=2;
public final static int WEST=3;
public final static int SOUTH=4; }
在定义了Direction类后,JAVA可以通过引用类中的值来使用枚举:
int wall= Direction.NOTRH;
6、foreach语句
C#提供了标准的for循环,同时还提供了foreach语句(从VB中引入)来循环处理集合中的元素。
JAVA遍历集合中的所有元素的典型处理方式如下:
while(!collection.isEmpty())
{
Object o=collection.get();
connection.next();
…
}
C#遍历集合中的所有元素:foreach(object o in collection){…}
7、统一数据类型:
大多数的高级程序设计语言都有基本数据类型,如整型、浮点类型等。同时,为了更好地满足实际的需要,对不同的数据类型有不同的处理方式,显然,如果能够对简单数据类型的处理和对复杂数据类型的处理结合在一起,并用一致的方式加以处理的话,无疑会大大提升应用程序设计的效率,增强程序设计的灵活性。
JAVA语言在处理基本数据类型的时候也采取分别处理的策略,但是在基本数据类型的基础上提供了一系列封装这些基本数据类型的类,例如:整型(int)被类Integer所封装,双精度浮点(double)被类Double封装。
C#提供了一种和JAVA不同的方式来实现数据类型的统一。事实上,在c#中,即使是int这样的简单数据类型在C#内部也是通过一个结构体Int32来实现的,在C#中,可以这样认为,int只是结构体Int32的一个别名。由于C#中的结构体也继承自类Object,这样,Object类中定义的方法,各个结构体也拥有,于是,在C#中可以通过如下的方式来操作整数:int I=5; System.Console.WriteLine(i.ToString());
8、操作符重载
通过操作符重载可以用一种比较自然的方式来操纵各种数据类型,从而大大提升程序的可读性和灵活性。C#中的“==”操作符在Object类中进行了定义,在Object中定义的==操作符通过比较两个值的引用来获得最后的结果。如果使有和集合相关的类,则必须在这样的类中实现ICompar接口,这个接口中定义了一个方法CompareTo,该方法返回两个对象的比较结果,在此基础上,可以进一步定义各个实现比较的操作符,如
“>”、“<”、“>=”、“<=”等。事实上,数字类型(int、long等)可以直接使用这些比较操作符,它们的内部都实现了ICompare接口。
9、多态性
虚似方法提供了多态性的技持。多态意味着派生类可以定义一个和基类中同名的方法。尽管JAVA和C#都支持多态性,但是它们的具体实现方式还是有一定的差别。
在JAVA语言中,默认情况下,基类的对象可以直接调用派生类中的虚似方法,在C#语言中,基类要调用派生类中的虚似方法必须通过virtual关键字来实现。同时,在C#语言中,一个方法要重载基类中的同名方法,还必须通过关键字override来实现。在C#中实现多态的典型程序如下:
Class B{ public virtual void foo{}}
Class D:B{ public overried void foo(){}}
以上只是简单地比较了C#和JAVA之间的异同,事实上,这二者之间的比较远不止上面所介绍的内容,要学好这两种语言,需要经过大量的实践工作,在实践中区分开两种语言
⑶ 为什么电脑会分不同的编程语言
首先你理解的“编程语言”只是一种抽象化的描述语言,用来将人类的思维转化为逻辑的一种表述方式。也就是我们所称的“高级语言”。
计算机只认识0和1,由0和1组成的语言叫做“机器语言”,是一种用来控制计算机各个部件工作的逻辑控制代码。也叫做“低级语言”。
而你所认为的“编程语言”实际上就是将一种人类思维能够描述出来的逻辑,通过对应的方式转换为“机器语言”的过程。
其次,你问到“电脑系统里自带的程序”这个问题还是要分几步来解释:
首先,你认为的“电脑系统”实际上是“操作系统”,这是一种用来管理计算机硬件资源和磁盘数据的一种“程序”,简单的可以理解为操作系统是一个综合商场,而运行在操作系统里面的程序就是商场里面一个一个的店铺和柜台,商场负责对店铺和柜台进行管理,同时维护水、电、中央空调之类的服务设施,给每个店铺提供服务保障,而来来往往的顾客就是计算机中的数据。
操作系统的最底层是直接采用机器码生成的,当然,现在的操作系统都是通过在以前的简单的操作系统上生成的编译环境,来生成更新的、功能更强的新版本的操作系统。这个并不存在“鸡和蛋”的悖论的问题。
其次,“电脑系统里自带的程序”中的“自带程序”同操作系统一样,也是由相应的“高级语言”编译成“机器语言”后,通过“操作系统”的协调,对计算机资源进行利用的一个过程。
所以,这个过程就是 “机器语言”生成操作系统核心代码 => “高级语言”编译器生成对应的应用软件
⑷ 为什么现在会有这么多种编程语言
http://blog.jobbole.com/72508/
建议楼主看看这个,里面讲解了:
为什么需要更多的编程语言
编程语言是由一些人为另外一些人创造的。因此,它们承载着创造者的文化印记,有些文化印记不为其他群体的工程师们喜爱,因此他们转而创造出了自己的版本。这在计算机科学历史中无数次上演,导致产生了许多流行语言的方言。最明显例子就是首个阿拉伯语编程语言。去年有篇关于Ramsey Nasser的文章,他创造了第一个表情文字编程语言:
Nasser评论到:“我们使用的工具承载着它们创造者的文化设想。”当Nasser创造قلب的时候,他在将true和false翻译成阿拉伯语时遇到了困难。最终他使用了correct和incorrect这两个词,虽然两者的概念并不完全吻合,但是他说这最终演变成了一场他不得不和他父母以及朋友进行的奇妙对话。Nasser旨在创造编码的通用性:“Emojinal意在甩掉文化包袱。”
这是一个古老格言的另一种版本:你说的语言改变了你思考的方式。有些语言有助于某些类型的思考;而有些有助于其他类型的。正如我们在四月份写下的文字所说:
“语言不仅是针对不同工作的不同工具,它们还是可以描绘你思考编程的技术。”Richard Pattis说。他是加州大学的信息学高级讲师,他于1981年发明了Karel教育编程语言。Pattis建议多才多艺的程序员要扩展思维的话,最好学习不同编程范式的语言,从面向对象语言(譬如C++/JAVA),到函数式语言(譬如ML和Haskell),到脚本语言(譬如Lisp和Python),到逻辑基础语言(譬如Prolog),到低级语言(譬如C,Java虚拟机或者机器语言)。目标不是为了熟练运用这些语言,而是能从不同的角度来思考解决问题。好的程序员不仅仅学习如何编程,还要学习核心概念,用其武装自己的大脑,从而写出高效的代码来解决问题。
⑸ 为什么有那么多种程序语言,只有一种的话学起来不是很方便吗
呵呵,这个问题怎么说呢,这么说,世界上为什么有那么多种语言和文字,为什么有方言呢,就是为了方便在某一地区使用,程序语言也是一样的,每种程序语言都是有自己的特长之处的,用在自己的特长之处是非常方便的,就好比到了美国你说美国英语一样,如果你说澳大利亚英语,可能他们理解起来要很费劲,你也得半天解释~
⑹ 为什么搞那么多种编程语言出来一种不就行了么太复杂了.
因为不是一个人搞的呀,计算机不是一个人的天下,你搞一种语言,我搞一语言,一般不会你的什么都不如我的,往往是各有千秋,因此也就萝卜白菜,没有哪种语言被遗弃。
当然,另外一方面就是在于各有千秋上,尽管现在的语言都力求大而全,但是不同语言适用的场合还是不一样的。比如C、PASCAL以及他们的衍生语言,适合替代汇编进行底层开发,做什么加密/解密、硬件驱动、网络处理、图像运算的就很合适,而用来写动态网页、数据库管理就有些力不从心。而ASP、PHP、JSP这样的工具开发动态网页太方便了,天生就是做这个的,用这些语言的数组、哈希等结构,以及正在表达式处理文本,良好的数据库链接操作,在动态网页处理上让你真正明白什么叫做得心应手。数据库应用软件的开发,除了用PHP等开发WEB形式应用以外,FOXPRO、ACCESS等开发小型应用,INFORMIX 4GL、ORCAL C等编写程序,比C++、VB顺手得多。