app开发者平台在数字化时代的重要性与发展趋势解析
695
2022-08-27
趣文:编程语言伪简史(伪代码是编程语言吗)
警告:
原文中的内容不一定都是真实的。
小字部分不属于原文,是翻译君为了便于读者读懂原文擅自所加的注解。当然,也不能保证一定都是真实的。
为了照顾那些幽默感退化的人们,维基百科有一个主题关于:History of programming languages。
1801 - Joseph Marie Jacquard用打孔卡为一台织布机编写指令,在挂毯上织出了“hello, world”字样。当时的reddit网友对这项工作的反响并不热烈,因为它既缺少尾递归调用,又不支持并发,而且甚至都没有注意在拼写时恰当地区分大小写。
Jacquard织布机是第一台可进行程序控制的织布机。用打孔卡进行编程的概念,直到电子计算机被发明出来之后仍然被广泛运用。
最早的Hello World程序(出自K&R C)打印的是全小写的字符串:"hello, world"。
在许多英文技术社区里,不正确地使用大小写发贴会被视作是小白的行为。(如把“Python”拼作“python”,把“FreeBSD”拼作“freebsd”,把“Qt”拼作“QT”)
reddit / Hacker News的月经帖标题:“.*: a new .*-based .* programming language”。底下常见的回帖形式:“它支持并发吗?”“没有尾调用优化果断差评。”“现在的编程语言已经足够多了,为什么我们还需要更多的语 言?”……
1842 - Ada Lovelace写了世界上第一个程序。她的努力只遇到了一点点小小的麻烦,那就是:实际上并没有任何计算机能够用来运行她的程序。后来的企业架构师们重新吸收了她的这个技能,用来学习如何更好地使用UML进行编程。
Ada Lovelace为Charles Babbage的分析机写了一个计算伯努利数的算法实现,因此被后世公认为是世界上第一个程序员。实际上,分析机由于其设计思想过于先进,在当时根本没有 被制造出来。(Babbage的分析机一般被认为是现代电子通用计算机的先驱)
讽刺现在的某些“软件架构师”顶多只会纸上谈兵地画画UML。
1936 - Alan Turing发明了世间一切程序语言的最终形态,但很快他就被英国军情六处“请”去当007了,以至于他根本来不及为这些语言申请专利。
与通用图灵机(Universal Turing machine)等价的语言被称为图灵完备的(Turing completeness),它定义了“什么样的语言可以被称作是程序语言”。
二战期间Turing曾秘密地为英国军方工作,破解德军的Enigma密码机,并在战后被授予大英帝国勋章。但这项事实直到多年以后才向公众公开。
1936 - Alonzo Church同时也发明了世间一切程序语言的最终形态,甚至做得更好。但他的λ演算被绝大部分人忽视了,因为它与C语言“不够像”。尽管存在着这样的批评,但事实上,C在当时还没有被发明出来。
Church是Turing在Princeton的博士生导师,他在λ演算方面的工作先于Turing指出了不存在一个对可判定性问题的通用解法,这后来证明和Turing针对停机问题提出的图灵机模型是等价的。即著名的Church-Turing论题。
说Church“甚至做得更好”,因为λ演算为后世所有的函数式语言提供了理论基础。
现在一种常见的关于函数式编程的批评就是:“它们与C语言不够像”。
1940年代 - 一些直接采用布线和开关来进行程序控制的“计算机”出现了。工程师们当时这么做,据说是为了避开“用空格还是用制表符缩进”这样的论战。
据说当时负责设计ENIAC的工程师中间曾经发生过这样的争论:
空格比制表符好。
制表符比空格好。
4个空格比8个空格好。
什么?用2个空格的统统烧死。
关于这台具有里程碑意义的人类史上第一台电子计算机ENIAC上应该预装何种编辑器,工程师们还发生过这样的争吵:
Vim比Emacs好!
Emacs比Vim好!
强烈推荐Sublime Text。
你丫用编辑器的都是找虐,IDE才是王道。
没错,要用就用世界上最好的公司微软开发出来的世界上最好的IDE:Visual Studio。
我早就看透了无谓的编辑器论战什么的了,我要告诉楼上吵架的,你们全都是傻逼!
最后,工程师们一致决定使用布线和开关来为他们即将发明的计算机进行编程,机智地避开了所有这些无谓的争吵,最终齐心协力创造出了人类历史上第一台电子计算机:ENIAC。(鼓掌
(图:两位ENIAC程序员在运用敏捷开发方法进行愉快的结对编程。“自从抛弃伴随我多年的Emacs和HHKB Pro、改用布线和开关进行编程之后,我的左手小指麻痹奇迹般地痊愈了。”其中一位接受采访时如是说。另一位则表示:“新的编程方式让曾经专注颈椎病20 年的我得到了彻底的康复,不用再整天盯着显示屏,身心同时得到了极大的放松,值得大力推广!”)
1957 - John Backus和IBM发明了FORTRAN语言。关于IBM或FORTRAN并没有什么特别好笑的地方。除了,写FORTRAN程序的时候不系蓝领带将被编译器视作是一个syntax error。
蓝领带、白衬衫、深色西装似乎是IBM公司20世纪经典的dress code。
早期FORTRAN(FORTRAN 77)对程序书写格式的要求那是相当严格。(例如,蛋疼的固定格式缩进)
1958 - John McCarthy和Paul Graham发明了LISP。由于冷战期间的战略括号资源储备所造成的巨大成本,LISP从未流行过。尽管欠缺足够的流行度,LISP(现在叫做 “Lisp”,有时叫“Arc”)仍然被视作一门有影响力的语言,在关键的算法思想诸如递归(recursion)和提升逼格 (condescension)上尤为典范。
(原文的脚注:
幸运的是对于计算机科学来说,花括号和尖括号的供应尚充足。
“关键的算法思想”这一说法来自于Verity Stob的Catch as catch can。)
战略括号储备:据信是因为克格勃对于他们费尽千辛万苦搜集到的程序片段全都是括号感到极端愤怒,于是封锁了世界各地的括号矿产资源,导致白宫方面不得不加强战略浓缩括号的储备。(误
LISP发明的那一年Paul Graham其实还没有出生。据说是因为某本叫做《Haste and Waste》的伪程装黑圣典实在太有名了,以至于许多编程小白们把写这本书的传奇人物同Lisp之间画上了等号。
提升逼格确实是一种与递归调用同样关键的算法思想。嗯,你懂的。
1959 - 在输掉了和L. Ron Hubbard之间的一场打赌之后,Grace Hopper和其他几个抖S发明了所谓的“面向Boilerplate的全大写化语言(Capitalization Of Boilerplate Oriented Language,COBOL)”。多年以后,由于一些被误导的、性别歧视主义者对Adm. Hopper关于COBOL的工作的报复,在Ruby技术会议上不时会看到一些厌女主义乃至仇视女性的材料出现。
L. Ron Hubbard是山达基教(Scientology)的创始人,二战期间曾与Grace Hopper同样供职于美国海军。(尚不清楚这两人之间有无其他联系)
COBOL语言以代码极其冗长和通篇大写字母的书写风格而闻名。
Adm. Hopper:Grace Murray Hopper女士的军衔是Rear Admiral Lower Half,即美国海军准将。
1964 - John Kemeny和Thomas Kurtz创造了BASIC,一个为非计算机科学家设计的非结构化的程序语言。
1965 - Kemeny和Kurtz两人goto到了1964。
调侃BASIC语言对行号和goto的无节制滥用。
1970 - Guy Steele和Gerald Sussman创造了Scheme。他们的工作导致了一系列以《Lambda之究极(Lambda the Ultimate)……》为标题开头的论文发表,并在《Lambda之究极厨房神器》这一篇中达到了最高潮。以这篇论文为基础,开始了一个长年累月的、收 视率究极失败的晚间电视购物节目。Lambda们因为其概念相对难以理解而被大众所忽视,直到未来的某一天,Java语言终于让它们变得有名了起来。通过 不包含它们这件事情。
Lambda之究极神器系列:(Lambda之究极命令式编程、Lambda之究极宣告式编程、Lambda之究极GOTO语句、Lambda之究极Opcode)
Guy Lewis Steele, Jr. and Gerald Jay Sussman. "Lambda: The Ultimate Imperative"). MIT AI Lab. AI Lab Memo AIM-353. March 1976.
Guy Lewis Steele, Jr.. "Lambda: The Ultimate Declarative". MIT AI Lab. AI Lab Memo AIM-379. November 1976.
Guy Lewis Steele, Jr.. "Debunking the 'Expensive Procedure Call' Myth, or, Procedure Call Implementations Considered Harmful, or, Lambda: The Ultimate GOTO". MIT AI Lab. AI Lab Memo AIM-443. October 1977.
Guy Lewis Steele, Jr. and Gerald Jay Sussman. "Design of LISP-based Processors, or SCHEME: A Dielectric LISP, or Finite Memories Considered Harmful, or LAMBDA: The Ultimate Opcode". MIT AI Lab. AI Lab Memo AIM-514. March 1979.
后来大概有人觉得每次都投一篇正式的paper太麻烦了,于是干脆专门开了一个博客,名字就叫做Lambda the Ultimate。这样他们将来要发《Lambda之究极割草机》《Lambda之究极厕所皮拔子》这样的营销广告就更加方便了。
长年累月的收视率究极失败的晚间电视购物节目:也许是在暗讽MIT专注用SICP作为教给CS学生的第一门编程课20余年。
众Java程序员:听说Java 8要开始支持lambda了,想来Java真是极先进的……等一下,我先看看lambda是个啥玩意?
于是lambda这个“新鲜货”就一下子在主流业界变得流行起来了。
1970 - Niklaus Wirth创造了Pascal,一个过程式的语言。很快就有人开始声讨Pascal,因为它使用了类似“x := x + y”这样的语法,而不是更为人熟知的类C语法“x = x + y”。尽管存在着这样的批评,而事实上当时C还没有被发明出来。
1972 - Dennis Ritchie发明了一把射击时能同时向前和向后两个方向发射子弹的绝世好枪。但他对此发明造成的致死和终身残疾数量感到还不够满意,所以他又发明了C语言和Unix。
翻译君:……
1972 - Alain Colmerauer设计了逻辑编程语言Prolog。他的目标是创造一个具有两岁小孩智商的程序语言。为了证明他成功达到了这个目标,他展示了一个Prolog程序,它对于每条查询都会机智地给出相同的回答:“No”。
loading('55%',350)
Python免费视频
热点疑问
学习编程5个常见的疑问
教你自学编程从哪开始?
你在编程的时候浪费了多少时间?
想学编程?你可以这样开始!
编程教程
AppML 教程
PHP 教程
HTML5 教程
Python 教程
MySql 教程
Redis 教程
jQuery 教程
JavaScript 教程
HTML 教程
CSS 教程
Linux 教程
jsON 教程
HTTP 教程
设计模式
SQL 教程
XML 教程
Memcached 教程
MongoDB 教程
正则表达式
jQuery UI 教程
Java 教程
PHP7 教程
Git 教程
iOS 教程
SQLite 教程
Python3 教程
Firebug 教程
ASP.NET 教程
C# 教程
Ruby 教程
Android 教程
CSS3 教程
AJAX 教程
Node.js教程
SVN 教程
Yii2.0 视频教程
CSS 规范
ionic 教程
Servlet 教程
JSP 教程
RSS 教程
Lua 教程
C++ 教程
Eclipse 教程
AngularJs 教程
React 教程
Highcharts 教程
Django 教程
Docker 教程
Perl 教程
Scala 教程
Go 语言教程
Swift 教程
DTD 教程
XML DOM 教程
XSLT 教程
XPath 教程
XQuery 教程
SVG 教程
网站建设指南
网站主机教程
TCP/IP 教程
网站品质 教程
Google hosts
GO语言
热门关键词
PHP代码分享
PHP进价
Yii2.0教程
MySql优化
PHP-
代码
猜您喜欢
攻下隔壁女生路由器后,我都做了些什么
趣事!一根网线发起的攻击
程序员学习编程需要攻克的8个障碍
热门教程
W3C词汇和术语表
SVN快速入门教程
PHP 7 的几个新特性
CSS 典型错误
Yii2.0视频第十五讲——角色、权限——rbac
使用Redis 建议/技巧
必备工具
JSON在线解析
IP地址查询
JS/HTML/CSS格式化
近期排行
python趣味编程100例pdf资料免费分享(python趣味编程入门与实战pdf)
如何-python编译器手机版(手机版Python编译器有哪些?)
Vscode使用python开发教程(怎么使用vscode编写python)
如何使用C语言编程进行人机交互(c语言人机对话的程序设计)
利用Python-网易云音乐教程分享(python-网易云付费音乐)
学web前端用什么软件?(web前端开发用什么软件)
学习Python必备书籍——python基础教程(第二版)内附电子书-方式(python入门电子书免费-)
为什么补零?c语言如何补零(c语言怎么补零)
Python如何制作ppt教程分享(如何用python做ppt)
为防止信用卡盗刷谷歌推出虚拟信用卡 为真实信用卡生成一次性虚拟卡号
热门标签
php (553)
程序员 (543)
JavaScript (199)
编程开发 (188)
Java (155)
数据库 (141)
Linux (139)
MySQL (138)
css (108)
创业 (104)
如何 (99)
首页精华 (97)
Yii (96)
Android (94)
安全 (82)
编程语言 (81)
程序员人生 (75)
JavaScript开发 (70)
互联网 (66)
web开发 (61)
Google (59)
开发 (59)
Python (58)
操作系统 (58)
yii2 (58)
Ubuntu (54)
程序人生 (53)
Android开发 (53)
jQuery (50)
技术 (49)
软件开发 (49)
sql (46)
Apache (46)
浏览器 (45)
Web (44)
前端 (44)
视频教程 (42)
JAVA开发 (42)
面试 (40)
编程 (40)
html5 (39)
安卓开发 (39)
iOS (38)
iOS开发 (38)
函数 (34)
代码 (34)
正则表达式 (33)
windows (31)
缓存 (31)
PHP内核 (30)
PHP培训
时刻关注
哪里有免费的python教程-?(哪里可以找到python的免费教程)
2022零基础入门python到实战教程视频-(python从入门到实践视频教程)
c语言三元表达式是什么?(c语言中三元运算符有哪些)
html5打造趣味小游戏(html5游戏大全)
微软发布Windows 11 Dev Build 25136版 正式宣布资源管理器选项卡模式
字节跳动向英国输出996文化引起轩然大波 还称不应该提供产假
python教程哪里有-?(零基础学习python教程哪里有)
b站上最好的python教程是什么?(b站python课程推荐)
c语言如何从零开始学?(学c语言从什么开始学起)
html5魔塔广场有什么优势?(HTML5魔塔广场为什么这么火爆)
招商银行正在修复在iOS 16上的闪退问题 目前已经发布TF版
耐克宣布其跑步应用NRC中国区停服 用户可以申请将数据导出备份
零基础入门python教程视频有推荐的吗(python从入门到实践视频教程)
零基础学python有什么教程视频推荐吗(python比较好的视频教程)
html5和html的区别有哪些?(html和html5一样吗)
怎么能学好c语言?(如何才能学好c语言)
热门推荐
101个MySQL调试和优化技巧
不要学习代码,要学会思考
一些不起眼但非常有用的 Vim 命令
8 个不得不说的 MySQL 陷阱
一个程序员的5年成长之路从1.5k到18k
程序员面试最重要注意哪些?
程序员永远不要再犯的5个编程bug
loading('78%',350)
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~