专栏首页老九学堂为什么需要这么多​编程语言?

为什么需要这么多​编程语言?

学编程的过程中,总是有小伙伴纠结我到底是该学C语言呢?还是Python呢?或者学Java?

那到底为什么编程需要这么多编程语言呢?

编程语言的起源是怎样的?

其实编程语言并不是一开始就有这么丰富以及好用的语言的,而是经过几十年的发展才逐渐有今天这样多样的语言。

迄今为止,我们一般认为编程语言的发展主要有三个阶段:

1、机器语言

2、汇编语言

3、高级语言

机器语言

机器语言是第一代机器语言,是0和1代码。因为计算机的CPU只能识别0和1,所以最初编程用的就是0和1。

比较典型的设备是雅卡尔提花机的织布机:

我们可以看到,写代码就是要在纸上打孔,这样写程序不仅很麻烦,而且程序还不好理解,我们也只看到了一个个的洞,不知道这是干嘛的。

为了能让我们在偷懒情况下,更好完成工作,科学家们经过不断地摸索试验,使得编程进入了下一个阶段——汇编编程。

汇编语言

汇编语言相对于机器语言有什么差别呢?首先就是汇编能让人更好理解了。

比如表示3+2,机器语言可能是10111100 00000011 00000010。

而汇编就可以写成add 3, 2。

add表示加,后面是两个数字。

这样只要懂一点英文单词,就能够明白这个语句的意思。

汇编语言就是将以前机器语言的命令,用一些简单的英文单词来表示,这样不仅很直观,对编程人员的要求也大大降低了。

但是用汇编语言写的程序不能直接在计算机上运行的,需要经过编译器,把汇编语言转换成机器语言。

所以科学家们创造了一个接近人类语言习惯的编程语言——高级语言。

高级语言

高级语言的表达方式和人类语言的表达方式很接近了,而且也没有那么多的英文单词需要去记了。

高级语言的种类有很多C、C++、Python、Java等等。

每种高级语言都至少有一个编译器,编译器就是把对应的语言转换成机器语言。

迄今为止,编程语言发展最高的是高级语言。

也许过几年、几十年,说不定有更好的语言出现,我们也期待有更好的语言出现。

那么为什么要有那么多的编程语言呢?

1、应用领域不同,导致需要不同的编译效率和代码质量以及执行速度的要求。

2、使用的领域不同,导致侧重点不同。

比如:PHP是面对应用领域的开发语言,要求快速看到效果,就不太在乎比C语言多损耗了点编译性能和多集成一些库了。

所以,它最大特点就是:把N多常用的库都集成进来了,用起来就简单的多。

但这并不能说明PHP就比C语言好,只是对开发者友好而已,只是他们用的领域不同。

3、开发时间决定

比如:PHP重要的是应用,应该在短时间内开发出应用,那就不能从头到尾的写,否则内容太多。

所以学习什么和实际怎么使用之间还有一个筛选的过程。

4、体验度、友好性决定

C语言编程经常会被报告指针不能读和写!

PHP,不会动不动弹出指针错误的那种恐怖窗口,因为它做了很多包容性好的异常处理。

但这并不能说明PHP就比C语言好,也不能说明C语言比PHP好。在他们各自擅长的领域,他们比谁都好。

每门语言因为自己定位在不同的应用领域,所以它的编译器,即使语法功能没做得那么智能和强大,也不会去升级,否则就失去了它的应用定位。

其实这么多的语言,编程思想上没什么区别。只要掌握编程思想,一切语言都通了。

本文分享自微信公众号 - 老九学堂(xuetang9),作者:大雄

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-03-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 最难学的十大编程语言 Java排第三 它竟是第一名!

    编程语言是开发者们代码工作的核心,也是许多开发者最爱讨论的话题。编程语言的选择对开发者和工具制造商都十分重要,前者需要保持最新和具备市场潜力的技能,后者则亟需确...

    老九君
  • TIOBE 2016年8月编程语言排行榜:C语言达到历史新低

    编程语言排行榜 TOP20 榜单 ? C语言本月的占比仅为11.303%,这个数字达到了从2001年TIOBE开榜以来的历史最低。 C语言衰落的主要原因在于:首...

    老九君
  • 5月TIOBE编程语言排行榜:时隔5年,C语言终于再登榜首

    Java和C语言在4月的时候已经非常接近,但是本月C语言再次超越Java重回榜首, 上一次C语言成为第一名还是在2015年。

    老九君
  • 科普:什么是编译与反编译

    某天下班后,我在家里进行电话面试,问到面试者这样一个问题:"你知道使用哪些办法可以反编译Java代码吗?"。但是面试者回答的并不好,所以我在面试评价中写到:"对...

    Java3y
  • Linux环境搭建之安装Python3.

    如果删除了系统上自带的python, 这里我把一个python文件删除了. 这里只需要设置一个软连接就好了

    py3study
  • VB6 调用谷歌翻译API进行文章单词翻译

    Google 翻译是谷歌公司提供一项免费的翻译服务,可提供103 种语言之间的即时翻译,支持任意两种语言之间的字词、句子和网页翻译。可分析的人工翻译文档越多,译...

    巴西_prince
  • 数据结构概述

    限定仅在表尾进行插入和删除操作的线性表 分为顺序栈和链栈 顺序栈的拓展:两栈共享空间

    星辉
  • 路由元信息实例 原

    首先,我们称呼 routes 配置中的每个路由对象为 路由记录。路由记录可以是嵌套的,因此,当一个路由匹配成功后,他可能匹配多个路由记录

    tianyawhl
  • 最大学术出版商放大招!不再让加州大学师生看今年的2500多种期刊

    世界上最大的学术出版商爱思唯尔(Elsevier),对全球学术核心加州大学放出了大招:

    量子位
  • 分布式ID生成器解决方案SnowflakeX

    UUID 是 通用唯一识别码(Universally Unique Identifier)的缩写,是一种软件建构的标准,亦为开放软件基金会组织在分布式计算环境领...

    KenTalk

扫码关注云+社区

领取腾讯云代金券