程序语言百百种,想要学 Coding 就必须先确定你的目的是什么,有的是拿来写 App 的,有的是专写操作系统,有的则是拿来写网页的 …… 各种不同的目的都有其最适合的语言。常见的语言如 C++、JavaScript、VB、VC、Matlab、Python 等,但其实像 WhatsApp 如此受欢迎的 App 就不是前述这几种语言写的,为什么要有那么多的程序语言?

本文作者 Chris Dannen 同时是知名科技媒体《Fast Company Digital》 和《FastCo.Labs》 的编辑,曾经做过管理顾问、户外运动的採访记者以及 Red Bull Energy Drink 的品牌代表,曾写过两本关于 iOS 开发与设计的书。以下以作者第一人称撰写。

世界上的程序语言已这么丰富,为什么我们还需要更多?

六月初,Apple 发布了一个新的语言 Swift,主要是为了建立 Mac Apps 而开发的,你有想过为什么需要这么多的程序语言吗?难道现在开发的都还不够用吗?没错,就是一个简单到不行的原因:只要有人想要学习,就会有各种不同的语言被开发出来。因为科技进步,加上使用语言的目的性不同,越来越广泛也越齐全。

如果把这个问题套用到「鸡生蛋还是蛋生鸡」,这个问题的解答会是蛋生鸡。许多语言的开端,都是要让编写程序的概念变得更简单、更适合初学者和有兴趣的朋友。事实上,电脑把语言设成二元码(电脑进行储存和运算时,采用二进位,也就是所有资讯都被替代成二进位字串),为什么要这么做呢?

原因很简单:如果你把你所有的指示转换成 Yes 或 No 的问题,并分别以 1 和 0 表示,这么一来电脑就不会搞混了(除非一开始的编码是错的)。在第二次世界大战时,广播讯号是以非常糟糕又不可靠的无线电导航来传重要讯息,而二元码如此聪明的创新是 Claude Shannon (美国数学家、电子工程师和密码学家,被誉为资讯理论的创始人)所发现的,只要用二元码,电脑就可以把资讯储存与进行处理。

自从二元码诞生,非常多的语言都以它来设计,使工程师能够写得更流畅又更容易读,虽然会感到无聊或是觉得写二元码很冗长。比如说大写字母 A 好了,以二元码表示成 01000001 ,如果是小写 a 呢,则是 01100001 ,写完一个程序要花一些时间,但不用介意长度有几千行,因为大多数的程序都是这样来的。

当一个语言以易懂的英文写,就更容易读了,但另一方面就会显得相当冗长;像是 Apple 的程序语言 Objective-C (是一种通用、高阶、物件导向的程序语言,任何原始的 C 语言承是不需要经过修改就能直接通过 Objective-C 的编译器),就是冗长到不行,但主要也是为了要满足对使用者友善的特色,语言本身就是非常容易使用的。即使在你的生命中从来没有写过程序,或多或少你也能了解一点工程师想要告诉电脑要做什么,它长的大概是像这个样子:[someInstance doSomethingWithObject:a andAnotherParam:b];

事实上,为什么在物理电子学的范畴里有这么多的骇客套件,主要是因为要让现实世界的装置通常能以最自然的方式转换成写程序的概念,至少对于写程序的初学者而言,这类的程序语言是比较适合的,即使它很冗长。

程序语言就是开发者自我性格的复制

就像其他的创新一样,程序语言通常都是从一个偏执顽固的人开始,试图要走一条只属于自己的路。

举例来说 1971 年,在这个领域的大多数人都在 Lisp (源于列表处理器,List Processor 的缩写,是历史悠久的电脑程序语言家族,于 1958 年基于 λ 演算创造,是第一个函数语言程序设计的语言)写程序,一个在 Stanford 的工程师明白了要如何编辑 Lisp 的编码,也就是我们今天所谓的原始的编辑器。想像一下,就是一个在 Mac 上的 TextEdit App,但当然不是像现在一样可以直接简单的使用。

然后你必须按 Escape 键跳出页面,检查你所做的那些改变,像是储存或浏览在部落格贴文的草稿等,是否跟你预想中的一样;不管怎么说,重复对照你所想的与结果,这简直是一件痛苦的事。

另一个从 MIT 来的工程师看到在 Palo Alto 的创新后,决定要回 Cambridge 后靠自己把它复製下来,并且做一些改善与调整。而其他同事们为了新界面终于开始写 macros (巨集,根据一系列预定的规则替换一定的文字模式)–可重复使用的编码位元以节省时间。当他们将巨集的集合程序化,结合到一个系统内,他们把这个叫做 EMACS–Editing MACroS 的缩写。

抽象到不行

如果你是念文法商的,别被这样的名词吓到,它代表着一个程序的生命。

换个角度想像,在写作时,我们会把字句的结合叫做段落,这是就写文章的观点来看,它也是一个抽象的概念,当我们要告诉其他人正在讨论文章的哪部份时,我们不需要再重新引述整个段落的文字内容,而是告诉他们第几段就好,说到底它也是抽象的。

同样地,写程序的工程师经常会试着要创造可重复使用的编码字元,因为就像其他人一样,会懒惰,会不想做重复的事情。

大约 30 年前有个大改变,对于藉由可重复使用的部分来建立电脑程序,将它称作为物件(若是在建筑、车子或是家具设计,就很像是模组化),这样的设计模式称作为物件导向的程序编写,在 NeXT (Steve Jobs 在创立苹果后所成立的公司)的那段期间,这可是相当创新的。当时还将它视为未来程序发展的领航者,所以他们就将这样物件导向的程序拿去卖,并且决定将它取为在 C 语言架构下属于他们自己版本的名称,于是 Objective-C 就这样诞生了。

当 Apple 买下 NeXT 后继承了 Objective-C,并把他们公司的 OS 变成 Mac OSX。

云端时代,语言也需要新架构

当本质上发生改变的时候,你必须要去适应它,因此有时候你会需要一个新的语言。伴随着云端时代的来临,更是如此。

传统上来说,程序会依下载位置在你的电脑(装置)上跑,就像你所下载的 Apps 和安装到你电脑内的软体。然而有时候,某个叫作网络的东西,它有无限神奇的功能,能够把在某一台电脑运作的 App 传送到另一台电脑上,这些是网络 App,比如说像是 Facebook.com 或是 Twitter.com 等等。

在网络 App 你能够做很多事情并且看到即时的变化,Facebook.com 的 App 是在某处的伺服器运作,而不是你实际的电脑上。

要创一个 App 其实是需要花好一番功夫的,你需要不只是电脑能力和频宽传输,软体是一种服务,从云端来的服务,这些云端是需要花一大笔成本来操作的,所以最近一群聪明的人聚集在一起,然后创造叫作 Node.js 的开源平台,通过网络跑 App 以大幅降低成本。

许多开发商偏好将他们的 App 视为一种服务,因为一个网站有非常多的下载 App 的优势,像是免费下载,使 App 更便宜且在一定规模下运作,已经造成了 Node.js 一阵轰动,而 Node.js 是由 JavaScript 写出来的,Node 解释了为什么身为一个语言的 JavaScript 最近可以如此受欢迎。

并不是要说上图这几个受欢迎的语言已经霸占了大部分市场,其他的语言像是 Erlang,自从 App 开始移往云端后,它又重新的引起大家的兴趣。事实上,相较于图上这几个语言来说,受欢迎程度相当低的 Erlang 是创造 WhatsApp 的最大功臣。

一个程序语言,承载了一群自造者的文化

一部份人创造的程序语言是为了其他人,因此他们承载着所有自造者的文化产物,部份文化产物又和其他的工程师群不同,他们各自走着属于自身文化产物下的版本,在电脑科学的历史上这已经发生过无数次,也形成着最受欢迎语言的运算子重载(对已有的运算符号重新定义,赋予它另一种功能以适应不同的数据类型)。

有些语言对于逻辑思考的类型是有一定帮助的,一个你所用的语言会改变你的思考模式。就像是 Richard Pattis (一个加州大学尔湾分校资讯学的资深讲师)所说,「不只是为了不同的任务而有不同的语言工具,同时它们也形塑着你如何看待写程序的科技」。

这也是为什么会有这么多程序语言存在着,不同的语言代表着一群工程师脑中的思考逻辑模式,当然如果身为语言的使用者而非语言的创造者,太多的选择中要选择一个对工作最有帮助的,最能达成目标的那个。

英文原文:Why Does The World Need More Programming Languages?

转载:点击打开链接

世界上的编程语言已这么丰富,为什么还不够?相关推荐

  1. 世界上有多少编程语言

    最近,小编在网站上看到一个很有意思的问题:世界上到底有多少种编程语言? 当小编查遍网络之后,仍然没有找到准确答案,只知道几千的数量是有的,但是我们常用的也就几十来个,其中最常见的便是Java.Pyth ...

  2. 世界上的程序语言那么丰富,还不够吗?

    [IT168 评论]程序语言百百种,想要学 Coding 就必须先确定你的目的是什么,有的是拿来写App的,有的是专写操作系统,有的则是拿来写网页的 -- 各种不同的目的都有其最适合的语言.常见的语言 ...

  3. 我才是世界上最好的编程语言

    周末的Hello World咖啡馆还是热闹非凡. Ruby 一边喝咖啡一边和对面的Python聊天: "兄弟,我觉得这届程序员真的不行!" "此话怎讲?" &q ...

  4. 生日快乐编程代码_世界上最好的编程语言,刚刚度过了25周岁生日

    机器之心报道 机器之心编辑部 PHP,祝你 25 岁生日快乐. 「只要是用过 PHP 的程序员,都知道两件事:第一,这是一种糟糕的语言,如果有其他选择,自己绝不会再使用 PHP:第二,历史上一些非常成 ...

  5. matlab广泛用于什么,目前,Matlab已成为世界上最受欢迎的科学和工程计算软件工具....

    目前,Matlab已成为世界上最受欢迎的用于科学和工程计算的软件工具. 它是一种新型的计算机高级编程语言,具有广阔的应用前景. 有人将其称为"第四代"计算机语言. 就影响而言,仍然 ...

  6. “我才是世界上最好的编程语言!”

    作者丨刘欣 责编 | 伍杏玲 本文经授权转载自码农翻身( ID:coderising) 别惊讶!人工智能时代即将到来! https://edu.csdn.net/topic/ai30?utm_sour ...

  7. python是第几代编程语言-Python语言目前是世界上第几流行的计算机编程语言?

    问题:Python语言目前是世界上第几流行的计算机编程语言? 更多相关问题 行政处分和行政处罚中共同适用的惩戒措施是().A.罚款B.开除C.警告D.拘留 普通法法系中的普通法是指().A.英国历史上 ...

  8. 2021世界上“最猎奇”“最难的”六大编程语言

    *普适智能(PUSHI AI) --小普奇妙探索系列 尽管有时会感觉头秃,但编程语言通常旨在使我们的生活更轻松. 有些语言设计师会想到其他目标.可以设计一种编程语言来简化数据矢量化,简化多线程或性能. ...

  9. python真的超过java了吗-JAVA会被Python超越成为世界上第一大编程语言吗?

    关键时刻,第一时间送达! 这个路还还长,暂时不会,未来5年不会,10年有可能,就看现在小学生.初中生学习的怎么样.最近,也在观注这方面的,偶尔看到新闻说python纳入到高考中,想想如果真纳入了,过4 ...

最新文章

  1. Android 截屏并写入SD卡中
  2. 「ProtocolBuffers2」ProtocolBuffers2 c++简易入门
  3. php pdo 更新sql语句,增删改查sql语句及PDO数据库连接操作流程实例-2019年7月24日...
  4. 关于css浮动的一点思考
  5. oracle12c安装卡住_12C rac安装卡住了
  6. 《BI那点儿事》三国数据分析系列——蜀汉五虎上将与魏五子良将武力分析,绝对的经典分析...
  7. 阿里CTO谈BAT:李彦宏说是新瓶装旧酒、马化腾说太遥远了、马云说今天就应该做
  8. java学习中,异常和错误的简介、捕获异常、抛出异常、自定义异常、finally关键字(java 学习中的小记录)
  9. ASP.NET 主题和外观
  10. ARP网关欺骗原理及解决办法
  11. 2023郑州大学计算机考研信息汇总
  12. Tilera發表100核心處理器
  13. 微信小程序开发工具报错对应的服务器证书无效
  14. JSP文件的打开方式
  15. 挺全的HTML、CSS整理笔记
  16. Ubuntu 安装uwsgi出错
  17. 计算机在材料科学与工程中的应用课后答案,材料科学与工程导论课后习题答案...
  18. Time For Kids 很不错的英语学习周刊
  19. xcode archive 后没有dsym文件
  20. 算术基本定理证明相关引理与见解

热门文章

  1. R语言实现文本挖掘和tagxedo词云可视化技术
  2. java如何实现redis分片存储_AOP与Redis缓存实现
  3. Java中使用Thread类
  4. 云原生—虚拟化管理工具virsh(三)
  5. 莫队算法(知识整理+板子总结)
  6. Kubernete--Pod深入学习
  7. sqlite 问题 database disk image is malformed 修复
  8. Windows更改显示dir命令为ls命令
  9. 你想要的Python面试题都在这里了!
  10. 魔方动态壁纸android源码下载