必威体育Betway必威体育官网
当前位置:首页 > IT技术

计算机编程语言的分类

时间:2019-08-31 17:41:09来源:IT技术作者:seo实验室小编阅读:60次「手机版」
 

计算机编程

Table of contents

前言

机器语言

汇编语言

高级语言

高级语言的分类

面向过程的语言

面向逻辑的语言

面向对象编程语言

按照编程语言的擅长范围的分类

前端

后端

数据

一些问题

为什么软件项目会分为前端和后端?

java和javascrip有什么关系和区别?

C#和.Net有什么关系和区别?


前言

所有的工程师在接触编程有一段时间了之后,必然都会接触和学习不少的语言,博主个人目前接触的语言就有:C,java,Python,JavaScript,c#。大学时的课本知识里对计算机的各个部分都是有所涉猎的,但是由于自身水平不够,在大学学习时也尚未有一个深刻的认识。编程语言在计算机的整个体系里面的地位是十分重要的,但是读完大学下来发现自己并没有对所有编程语言有一个总体的印象,只知道后端我们常常用java,c++,python,前端我们常常用javascript。事实上,不同的语言类型有他们不同的目标,了解各种语言的分类是一件非常有意义且助于我们理解的事情。

最为广泛的编程语言分类如下

机器语言

机器语言是指直接在硬件当中解释的语言。是一些非常低级的机器指令,例如add,sub,p,sqrt。

下面是一个机器语言的例子:

89 F8 A9 01 00 00 00 75 06 6B C0 03 FF C0 C3 C1 E0 02 83 E8 03 C3

汇编语言

汇编语言是将机器代码编为更易读的东西。 它将人类可读的标签(或名称)分配给存储位置,跳转目标和子程序起始地址,但实际上并没有超出机器语言的范围。

下面是使用GAS汇编语言,在Intel 64架构上面实现的功能:

        .global f
f:
        andcc   %o0, 1, %g0
        bne     .L1
        sll     %o0, 2, %g2
        sll     %o0, 1, %g2
        add     %g2, %o0, %g2
        b       .L2
        add     %g2, 1, %o0
.L1:
        add     %g2, -3, %o0
.L2:
        retl
        nop

高级语言

高级语言脱离了特定机器的所有约束。并向编程人员提供了如下的功能:

  • 为几乎所有的东西提供命名,如:变量,类型,子例程,常量,模块
  • 复杂表达式(例如2 *(y ^ 5)> = 88 && sqrt(4.8)/ 2%3 == 9)
  • 控制结构(条件,开关,循环)
  • 复合类型(数组,结构)
  • 类型声明
  • 类型检查
  • 管理全局,本地和堆存储的简单,通常是隐式的方法
  • 子程序有自己的私有范围
  • 抽象数据类型,模块,包,类
  • 异常

我们所接触的所有编程语言几乎全是高级语言,包括C,C++,java,C#,Scala,Kotlin,JavaScript,Erlang,Perl,Python,Ruby,Go,Swift,

高级语言有很多优点,例如:程序员更容易记住。逻辑和结构更容易理解。与其他语言相比,调试更容易。编写新程序所需的时间更少。可移植。

但是高级语言并非没有缺点,与其他机器级语言或汇编级语言相比,高级编程语言占用更多空间。且执行更加缓慢。

我们不难看出,从低级语言到高级语言,编程语言逐渐的从机器易于理解而人难以理解,变为人易于理解而机器难以理解,因此高级语言需要解释,编译,变为机器能够认识和理解的语言才能执行。我们可以推断,这就是编译器,解释器这些东西诞生的根本原因。

高级语言的分类

设计的角度来讲,高级语言可以分成如下三类

面向过程的语言

面向过程的编程语言, 也称为命令式编程语言。 在这种语言中,程序被编写为一系列procedure 。 每个procedure都包含一系列用于执行特定任务的指令。 在程序执行期间,其他过程可以调用每个过程。 在这种类型的编程范例中,以procedure的形式编写的代码可以通过指定对应的过程名称而在程序中使用任意次数,这类似于面向对象编程中调用一个方法。 面向过程的语言包含FORTRAN,ALGOL,C,BASIC和ADA。

面向逻辑的语言

面向逻辑的语言使用逻辑编程范式作为解决各种计算问题的设计方法。 在这种编程语言中,通过谓词逻辑来定义规则和事物之间的关系来描述问题的本质。 Prolog是面向逻辑的编程语言的最佳例子。Prolog语言的一个实例如下:

likes(mary,food).
likes(mary,wine).
likes(john,wine).
likes(john,mary).

The following queries yield the specified answers.

 | ?- likes(mary,food). 
 yes.
 | ?- likes(john,wine). 
 yes.
 | ?- likes(john,food). 
 no.

How do you add the following facts?

1. John likes anything that Mary likes 
2. John likes anyone who likes wine 
3. John likes anyone who likes themselves 

面向对象的编程语言

面向对象的编程语言使用面向对象的编程范例作为解决给定问题的设计方法。

在这种编程语言中,问题被拆分成许多对象,这些对象反应了程序员对问题的抽象,对象之间通过可以相互传递消息。 C ++和C#,java都是面向对象编程语言。面向对象的语言可以说是全世界应用最为广泛的编程语言,面向对象的思想也是最贴近人类认识事物方式的编程思想。

对面向对象的思想的更多的内容可以参考这篇博客:难的问题到底难在哪儿

按照编程语言的擅长范围的分类

在上文中从设计角度出发对编程语言分类是我们见过最为多的一种划分方式。除此之外其实还有一种划分方式,我们每天的开发行为都在遵循这种划分,但是我们却很少意识到我们为什么要这样做。

现在让我们来假设一个问题,你收到了一个开发需求,需要你开发一个公司的门户网站,用于展示公司的商品。这个时候,从一个较大的角度去考虑,我们会想到这个项目是需要一个前段界面的,然后需要一个后端服务器的,然后需要一个数据库的。在这里部署运维测试我们先抛开不谈。那么,对于前端界面,我们会很自然的想到,这是一个web应用,那么我应该需要用到一些js以及html相关的技术。对于后端服务器,我们可以选择java和Spring这套最为成熟的web服务器架构,对于数据库,我们可以选择任意一款开源的关系型数据库

这里,我的问题是:为什么前段界面就是用js以及html语言?后端就是java语言?为什么不考虑用java做UI,js做后台与数据库进行交互,是因为他们做不到吗?

答案显然不是的,这里的答案事实上就是我们标题的含义,每一门编程语言也是有他的的擅长范围的,有的编程语言就是做后端服务器的,有的编程语言就是开发界面的,有的编程语言就是设计来操作数据库,执行一些job作业的。编程语言在随着时代的发展,也许是无意识的也形成了这样一种划分,这里说无意识是因为博主认为这些语言在诞生之初,他们的设计者其实并未想到这门语言只是做某一方面的事情。例如java在相当长的时间内事实上都是可以做UI的。直到最近一次的jdk更新才完全从jdk当中舍弃了UI相关的库。

明白了这些,所有网上关于哪门语言最好更好的调侃和争论你就可以不再参与了,因为我们应该清楚,各门语言是有他各自擅长的地方的。

回到正题,那么按照擅长范围的划分的话,编程语言则可以按如下方式分类:

前端

  • javascript(注意jquery等这些都属于js的库或者说框架)
  • html
  • css
  • C# (读作C sharp)
  • Delphi

后端

  •  Java
  • C
  • C++
  • Php
  • C#
  • Go
  • GoLang
  • Erlang(rabbit mq用到了这门语言)

数据库

注意上面只是列出了部分语言。同时注意C#即出现在了前端也出现在了后端,是因为它可以用来做后端逻辑,也提供了很多做桌面应用程序的库。

一些问题

为什么软件项目会分为前端和后端?

前端和后台的工作是完全不同的,侧重点是不一样的,前端的核心关注点是设计页面,后台是结合数据库实现一些代码的逻辑如验证用户的操作等,后台更加偏重逻辑操作。这是一个很有意思的问题,因为我们如果了解计算机历史的话,应该知道最早的计算机软件其实是没有前端的。前端的革命性创新个人认为来源于微软windows系统

java和javascrip有什么关系和区别?

这是初学者常有的疑问,他们最显著的关系可能只是他们的名字。除此之外,它们都是面向对象的的语言,虽然实现的方式略有不同。另外据说JavaScript 在设计时部分参照了 Java 的命名规则,这也是他们很多地方看起来相似的原因,当然js同时也参照了别的一些编程语言,而java在设计之初也同样参照了很多C++的命名规则。

不同之处的话有JavaScript 是动态类型语言,而 Java 是静态类型语言。JavaScript 是弱类型的,Java 属于强类型。JavaScript 的面向对象是基于原型的(prototype-based)实现的,Java 是基于类(class-based)的,等等。

当然,从我们上一部分的擅长范围来说的话也可以把他们按前段语言和后端语言来划分。

C#和.Net有什么关系和区别?

C#是一门面向对象的程序设计语言,是运行在.net 框架上的,用于创建应用程序的高级语言。

.net是一个微软推出的平台,或者说,它包含一套东西。

相关阅读

为什么编程语言以及数据库要从1970年1月1日开始计算时

今天在看Python API时,看到time模块: The epoch is the point where the time starts. On January 1st of that year, at 0 hours

如何学单片机编程?建议大家先选好编程语言

如何学单片机编程呢?单片机的应用非常广泛,不仅如此,编程语言也有很多种,大致可以分为三大类:机器语言、汇编语言、高级语言

主流脚本编程语言大比拼 优缺点一目了然

主流脚本编程语言大比拼 优缺点一目了然 2015-07-03 09:41 路饭网 字号:T | T从EJB的崩溃,Spring的兴起到Java遭受质疑,Rails取得

编程语言中的句柄是什么?

句柄就是个数字,一般和当前系统下的整数的位数一样,比如32bit系统下就是4个字节。这个数字是一个对象的唯一标示,和对象一一对应。这

众家评说谷歌新编程语言Dart

10月10日在丹麦举行的Goto会议上,谷歌Dart语言项目的领导人Lars Bak宣布推出编程语言Dart。Lars Bak表示,Dart是一种“结构化的Web

分享到:

栏目导航

推荐阅读

热门阅读