美文网首页
关于编程语言的一些认知和思考

关于编程语言的一些认知和思考

作者: ppmoon | 来源:发表于2017-08-15 16:25 被阅读29次

计算机本质上来讲就是可以运行一系列命令的机器,比如电灯拥有开和关的两个命令,计算机相比电灯要更加复杂一些罢了。
编程语言就是控制计算机的命令,好比电灯开我们就用数字1来表示,关我们就是用数字0来表示。可是对人类的自然语言来说01这样的命令实在太复杂了。如果我想让计算机进行加减乘除的计算可能就需要输入一串根本看不懂的01组合。好在后来发明了汇编语言。

汇编语言

汇编语言让我们可以使用字母符号来给计算机发送指令。比如:
操作:寄存器BX的内容送到AX中

1000100111011000    机器指令
mov ax,bx  汇编指令

汇编是直接面向CPU的程序设计语言,如果我们想要开发更高级的程序使用汇编语言可能就费劲了。这时候静态类型的语言就出现了。

静态语言

我们所谓的静态语言是什么?比如C语言这样的语言,我们可以通过英文进行逻辑编写和数据处理,这些英文代码通过C语言的编译器编译成01这种机器语言,让其可以在计算机上运行。区别就在于,我们可以尽可能的使用人类的自然语言去编写程序,然后通过编译器翻译成机器所能看懂的语言就可以了。除了C语言意外还有诸如c++,java,golang,erlang这样的静态类型语言,他们不尽相同,又各具特色。以上的静态类型语言不好评判好坏的区分,主要区别还是在于编译器的优劣,以及在不同应用场景下的表现。
静态语言也有自身的问题,语法复杂,每次测试都需要编译,开发效率底下,况且现在计算机硬件空前发达我们几乎不需要手动去操作内存了。所以这时候动态类语言就显现出来了。

动态语言

动态语言就是在程序运行的时候将代码编译成机器可以运行的程序,好处就是不用花时间编译。马上就能看到结果。诸如php,python,JavaScript这种都是动态类型语言。因为动态类型语言涉及到运行时才编译成机器可以运行的程序,显然没有静态类语言直接编译成机器码运行的速度快。

关于密集计算和密集IO

如果涉及到密集计算的业务,比如处理大量数据,显然使用静态类型的语言是更好的选择,因为我们希望CPU或者GPU这些计算设备可以以更快的形式进行运算。
如果涉及到密集IO的业务,比如网站的C10K问题,其实静态语言和动态语言区别不大,因为这种业务类型最关键的问题在于IO效率而不是计算瓶颈,让机器在单位时间内进行更多的IO操作才是关键。为此还要涉及一些进程,线程和协程的知识了。

相关文章

  • 关于编程语言的一些认知和思考

    计算机本质上来讲就是可以运行一系列命令的机器,比如电灯拥有开和关的两个命令,计算机相比电灯要更加复杂一些罢了。编程...

  • 2018-12-20 计算机书籍推荐

    正好朋友需要推荐一些基础的书, 最近也在看, 就记录一下吧. 入门可以找本编程语言的书, 主要是培养关于编程的认知...

  • 如果你不认知生命真相,生命对你将是一种惩罚。

    【来源】:福果文化 【主题】:关于生命的思考关于世界的思考关于意义和价值的思考,关于认知的认知! 【感悟】: 越来...

  • 这本书教你读懂大脑中的神经元,并一个月内掌握Python基础,经

    这是一门很简单的编程语言—Python; 你难以学会的根本原因是它—元认知。 元认知,有关思考的思考 如果你想学会...

  • python 零基础入门教程- 环境搭建(1)

    一、什么是 Python Python 是一门编程语言,关于编程语言我们后面再详细讲。首先我们思考,为什么我们要学...

  • 元认知

    元认知是“关于认知的认知,关于思考的思考”,那么“元教育”,就是“关于教育的教育,关于学习的学习”;元认知用来思考...

  • 关于编程语言,框架选型和学习的思考

    虽然有个很重要的论调是说选对方向很重要,它可以帮你省去很多时间,能够让你轻松很多,我本人也很赞同这点。但是我在任何...

  • 关于认知和思考

    001 认知。在做年目标的群里,很少说话,有种认知:我还很弱,学习的人有些已经太强大了,我不想承认自己不行。还有个...

  • 编程语言的认知!

    王国维在《人间词话》里写道:古今之成大事业、大学问者,必经过三种之境界:"昨夜西风凋碧树。独上高楼,望尽天涯路。"...

  • 认知升级

    20170611最近认知升级这词火的不行,关于认知升级我思考了很多,下面是我关于认知升级的一些想法。 所谓的认知升...

网友评论

      本文标题:关于编程语言的一些认知和思考

      本文链接:https://www.haomeiwen.com/subject/ptlvrxtx.html