参考链接:https://www.zhihu.com/question/21976478/answer/158145376
https://www.zhihu.com/question/19918532
https://www.zhihu.com/question/19918532/answer/21647195
https://zhuanlan.zhihu.com/p/148876819
1 语言类型
C++、java、python、js都是面向对象的编程语言,C是一种面向过程的语言
pyton、java都是强类型语言;C、C++、JS是一种弱类型语言。
Js python 动态类型;C、C++、java是静态类型
Js python 脚本语言
Js python 解释型
python是一种面向对象,解释型、动态类型的计算机设计语言,脚本语言
Program Errors
trapped errors。导致程序终止执行,如除0,Java中数组越界访问
untrapped errors。 出错后继续执行,但可能出现任意行为。如C里的缓冲区溢出、Jump到错误地址
Forbidden Behaviours
语言设计时,可以定义一组forbidden behaviors. 它必须包括所有untrapped errors, 但可能包含trapped errors.
Well behaved、ill behaved
well behaved: 如果程序执行不可能出现forbidden behaviors, 则为well behaved。
ill behaved: 否则为ill behaved...
强、弱类型
强类型strongly typed: 如果一种语言的所有程序都是well behaved——即不可能出现forbidden behaviors,则该语言为strongly typed。
弱类型weakly typed: 否则为weakly typed。比如C语言的缓冲区溢出,属于trapped errors,即属于forbidden behaviors..
故C是弱类型
弱类型语言,类型检查更不严格,如偏向于容忍隐式类型转换。
譬如说C语言的int可以变成double。 这样的结果是:容易产生forbidden behaviours,所以是弱类型的
动态、静态类型
静态类型 statically: 如果在编译时拒绝ill behaved程序,则是statically typed;
动态类型dynamiclly: 如果在运行时拒绝ill behaviors, 则是dynamiclly typed。
什么是面向对象与面向过程
1.面向过程:简单来说,一切都是按照步骤来进行的; 按照先后的顺序,一步一步的达成我的目的。
面向对象:一切都是对象。对象就是对事物的一种抽象描述。
2 垃圾回收机制
c++需要程序员主动回收,而java和python都有自己的垃圾回收机制GC。
具体两者又有不同,python的垃圾收集机制主要是用的是引用计数方式。
3 变量
c和java中变量的存储是真实值,而python总存储的是引用,所以python不用声明类型名称,它的输入均默认为字符串。
4 声明常量
c++中用const来声明常量,java中使用final来声明,python中没有常量。
5 C++
C++更接近于底层,方便直接操作内存。C++不仅拥有计算机高效运行的实用性特征,同时还致力于提高大规模程序的编程质量与程序设计语言的问题描述能力。来源于C,C是一种面向过程的语言。由于C++源于C,它良好的兼容了C功能,完全支持C,因此既可以面向对象、也可以面向过程。
近几年又在此基础上发展出C#,C#使用起来更类似于Java。C++和C中都有指针的概念,C++还可以使用智能指针,boost库。指针可以理解为一个地址,可以由程序员使用指针直接拿到该地址的数据,但是由于指针在使用的过程中,如果没有处理好,容易出现空指针和野指针,带来一些麻烦,因此Java去掉了指针的功能,规避了指针使用中可能存在的混乱情况。
Java在C++的基础上又做了更高级的封装,具有良好的平台间的可移植性。C++一次编写到处编译,而Java一次编译到处运行。Java中的功能C++都能够实现,只是相对来说在编程方面会比较复杂一些。
C++ 编译成本地机器码, 可以由操作系统直接运行,运行效率较高。Java 编译成字节码,需由Java虚拟机读取运行, 所以效率偏低,但可通过JIT提高运行效率。
垃圾回收方面,C++需要程序员自己回收,对内存进行良好的管理,而Java则不需要程序员自己完成这个工作,有自己的垃圾回收机制。
各种语言的基本语法都是相似的,比如int、float、double、bool等基本数据类型。但是实现起来肯定是不同,比如C++把声明和实现分别放在头文件和源文件中,而Java则不使用头文件。
C++引用其他内容时需要include,而Java则用package和import。这些都是细节的差别,但都是最基础的内容。
Java还可以应用到Android开发和JSP开发中。Java可以用来编写Android的应用程序,C#也可以。JSP则是用Java来做网站的。Python是一种脚本语言,面向对象的思想个人认为体现的不是很明显。它更适合用来做算法。Python简单易学,对于新手来讲是编程入门的好选择。Python其实也是基于C++创造的,它们的区别主要体现在,C++效率高,编程难;Python效率低,编程简单。比如同样的事情,Python程序员可以很快的写出代码,但机器运行却可能需要成倍于C++的时间;反之,C++程序员编程实现的难度比较大,但在机器上的运行效率很高。因此,很多公司在核心的功能、需要大量运行的部分更倾向于选择C++,而在执行次数不多,但对写代码速度要求比较高的部分则更倾向于使用Python。常用的IDE,C++常用VS,Java常用MyEclipse,Python则是PyCharm。如果你想了解编程并快速做出点可用的东西学Python,想转行从事编程工作学Java,想了解计算机底层的执行过程与运行原理就来学C++吧。当然,如果想做出自己的东西,不仅需要了解编程语言,基本的数据结构、数据库、操作系统方面的知识都要懂一些。更深一点的还包括计算机网络、计算机组成原理等基础内容。最后可能是对大家最实用的部分:*做信息系统的请用Java和关系型数据库(可以是MySQL,SQL Server等) *做网站请用JSP(基于Java的)或者PHP(当然JSP和PHP都是用来实现后台功能的,前台界面请学习HTML5和CSS标准);*做算法请用Python;*做要求高效率的运算请用C++;*做界面Java和C++都可以,C++请学习Qt(风格类似于Windows操作系统),Java请下载和导入Swing包(轻量级组件)或Awt包(重量级组件,现在已经用的比较少)学习。温馨小Tips:以上都是我学习本专业几年以及工作一年来自己学习和领悟到的内容,并不全面,因为我的水平也有限,但把我知道的相关内容基本都写了,其他的过于专业的东西不适合在这里做更多介绍。如果大家想了解更多的内容,可以在知乎、百度上搜索,应有尽有。互联网行业有一个好处就是资源开放透明,如果真的想学,网上的资料非常多。推荐一个学习论坛,csdn,上面有很多很好的讲解和例子,具体的问题都可以在上面查。学会使用搜索引擎和参考别人的代码、思路为自己服务本身也是一种很重要的技能。此外,做一名合格的程序员,首先要搞清楚的其实是需求,就是你要完成什么事情,才能根据需求编码,否则最后极有可能白忙一场或出现很多问题。