机器语言
机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合。计算机将之转变为一列高低电平,以使计算机的电子器件受到驱动,进行运算。
优点:
- 灵活
- 直接执行、速度快
缺点:
- 细节操作大量而繁琐
- 程序可靠性差,开发周期长
- 开发成本高
- 可移植性、重用性、可读性差
汇编语言
汇编语言(assembly language)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。汇编语言的另一个特点就是它所操作的对象不是具体的数据,而是寄存器或者存储器。摘自 百度词条:汇编语言(面向机器的程序设计语言)
汇编语言是直接面向处理器(Processor)的程序设计语言。处理器是在指令的控制下工作的,处理器可以识别的每一条指令称为机器指令。每一种处理器都有自己可以识别的一整套指令,称为指令集。处理器执行指令时,根据不同的指令采取不同的动作,完成不同的功能,既可以改变自己内部的工作状态,也能控制其它外围电路的工作状态。摘自 百度词条:汇编语言(面向机器的程序设计语言)
优点:
- 可有效访问、控制计算机硬件。
- 占用内存少,执行速度快,执行效率高
缺点:
- 通用性和可移植性差
- 相对于高级语言来说较为繁琐,易出错
高级语言
前端:
HTML(超文本标记语言)
HTML是一种使用标记标签来描述网页的标记语言。
优点:
- 网络标准统一,呦W3C制定。
2. 可跨平台,依托于浏览器
3. 使用记事本便可以进行开发,HTML能直接运行
缺点:
- 因为浏览器编程模型还是单进程单线程,所以无法支持多线程
- 安全性没有保障,容易泄露敏感数据。
- 浏览器的兼容性问题增加了开发难度
- 页面请求过多
css(层叠样式表)
css解决了HTML开发中内容与表现分离的问题,极大提高工作效率
javascript
javascript是web的编程语言,是一种轻量级的可插入HTML页面的编程代码,可有所有的现代浏览器执行。更可广泛用于服务器、PC、笔记本电脑、平板电脑和智能手机等设备。
优点:
- 减少网络数据传输
- javascript可以方便的操纵HTML对象
- 支持分布式运算
缺点:
- 各浏览器对javascript支持程度不同
- “web安全性”对javascript一些功能牺牲
服务器
C
C 语言是一种通用的高级语言,最初是由丹尼斯·里奇在贝尔实验室为开发 UNIX 操作系统而设计的。UNIX 操作系统,C编译器,和几乎所有的 UNIX 应用程序都是用 C 语言编写的。由于各种原因,C 语言现在已经成为一种广泛使用的专业语言。
C语言是一门面向过程的计算机编程语言,与C++、Java等面向对象编程语言有所不同。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。C语言描述问题比汇编语言迅速,工作量小、可读性好,易于调试、修改和移植,而代码质量与汇编语言相当。C语言一般只比汇编语言代码生成的目标程序效率低10%~20%。因此,C语言可以编写系统软件。
百度词条
特点:
- 易于学习,进行结构化编程
- c语言所产生的代码运行速度与汇编语言编写的代码运行速度几乎一样
- 预编译处理使C语言更有弹性
优点:
- 代码量小
- 生成目标代码质量高,运行速度快
- 功能强大
- 跨平台,可移植性强
- 使用指针,灵活性强
- 允许直接访问物理地址,对硬件进行操作
缺点:
- 数据安全性有很大问题
- 语法限制不严格,映像程序安全性
- 指针太过灵活,初学难度有点大
C++
C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。
特点:
- 支持数据封装和数据隐藏
- 支持集成和重用
- 面向对象
- 支持多态性
- C++ 是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言,支持过程化编程、面向对象编程和泛型编程。
优点:
- 类型检查比c语言更加严格
- 增加了面向对象机制
- 增加了泛型编程机制
- 增加了函数重载和运算符重载
- 异常处理
- 提供了标准库STL
缺点:
- 没有垃圾回收机制,可能引起内存泄漏
- 内容较多较难,学习困难
java
特性:
- 纯面向对象
- 支持分布式
- 跨平台,移植性强
- 是一门编译性语言
- 支持多线程,高性能
优点:
- 面向对象
- 稳健、安全、可移植、高性能
- 跨平台
- 编译型静态语言
缺点:
- 编译速度慢
python
特性:
- 解释性语言
- 拥有丰富的库
- 跨平台
- 可移植、可扩展
- 支持GUI编程
- 可嵌入
优点:
- 简单,易学
- 免费,开源
- 可移植性强
- 属于解释性的一门动态语言
- 面向对象
- 拥有丰富的库
- 强制性缩进代码使得代码规范
缺点:
- 运行速度慢
- 国内市场小
- 中文资料匮乏
go
go语言被设计成一门应用于搭载web服务器,存储集群或巨型中央服务器的系统编程语言,在高性能分布式系统领域拥有着极其高效的开发效率
特点:
- 简洁,快速,安全
- 自动垃圾回收
- 函数多返回值
- 并发编程
- 反射
- 语言交互
- 跨平台
- 开源
- 编译型静态语言
优点:
- 性能优越,go比python快30倍,比java快将近一倍
2. 编译时间非常快
3. go编写简单,易于学习
4. 对 gPRC 和 protocol Buffers 具有一流支持
5. GOFMT,强制代码格式
6. 天生支持并发编程
7. 强大的标准库
8. 接近c的运行效率,接近php的开发效率
缺点:
- 没有主要框架
- 错误处理机制太原始
- 垃圾回收器不完善
- 语法格式要求太过严格,禁止有未使用的变量和多余的import
- 对象没有构造函数和析构函数
- 技术比较年轻,有待后续发展
参考资料:Go语言的9大优势和3大缺点, GO语言最初的定位就是互联网时代的C语言, 我为什么放弃Go语言
php超文本预处理器
php是一种通用开源脚本语言,语法吸收了c语言、java和perl的特点,利于学习。
特性:
- 独特的语法:混合了c、java\perl以及php自创的新的语法
- 与其他编程语言相比,更快速的执行动态网页
- php支持几乎所有流行的数据库以及操作系统
- 可以用c、c++进行程序扩展
优点:
- php是一个免费开源语言
- 开发快,运行快,语法简单,方便学习
- 跨平台,效率高
- 具有很多成熟框架
- 有成熟社区支持php的开发
缺点:
- php是个单进程的程序,不支持多线程
- 只支持做web开发,不方便做.exe问件、桌面应用程序、手机程序
- 不适合做爬虫、自动运行脚本
- 后期维护比较困难,后期提速空间局限性大
Ruby
Ruby是一种纯粹的面向对象编程语言。
特点:
- 完全面向对象,连基本数据类型也是对象
- Ruby的变量可以保存任何类型的数据
- 任何东西都有值
- 可以做到不需要注释就可以读懂
优点:
- 语法简单
- 操作符重载
- 有着很高的开发效率
- 代码量很少
- 方便测试
- 拥有原生的数据结构,学习成本较低
缺点:
- 运行效率太低
- BUG难于发现,许多错误都是运行时才会发现
JSP
JSP全称Java Server Pages,是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。
特点:
- JSP可以直接在HTML网页中动态嵌入元素
- JSP 基于Java Servlet API,因此,JSP拥有各种强大的企业级Java API,包括JDBC,JNDI,EJB,JAXP等等。
- JSP页面可以与处理业务逻辑的 Servlet 一起使用,这种模式被Java servlet 模板引擎所支持。
优点:
- 一次编写,到处运行。除了系统之外,代码不用做任何更改。
- 跨平台,支持多种网页格式,jsp标签可扩展性
- 强大的可伸缩性。从只有一个小的Jar文件就可以运行Servlet/JSP,到由多台服务器进行集群和负载均衡,到多台Application进行事务处理,消息处理,一台服务器到无数台服务器,Java显示了一个巨大的生命力。
- 具有非常多的免费优秀的开发工具,并且可以顺利的运行于多平台
- 支持服务器端组件
缺点:
- 增加产品的复杂性
- java的高效率运行需要占用大量的内存和硬盘空间
- 调试困难