2022-08-09

1. 编程语言发展

1.1 1940年之前

第一个编程语言比现代的计算机还早诞生。首先,这种语言是种编码。


于1804年发明的提花织布机(或称甲卡提花织布机),运用打孔卡上的坑洞来代表缝纫织布机的手臂动作,以便自动化产生装饰的图案。


爱达·勒芙蕾丝在1842年至1843年间花费了九个月,将意大利数学家Luigi Menabrea关于查尔斯·巴贝奇新发表机器分析机的回忆录翻译完成。她于那篇文章后面附加了一个用分析机计算伯努利数方法的细节,被部分历史学家认为是世界上第一个电脑程序。[2]


Herman Hollerith在观察列车长对乘客票根在特定位置打洞的方式后,意识到他可以把信息编码记载到打孔卡上,随后根据这项发现使用打孔卡来编码并纪录1890年的人口统计资料。


最先出生的编程语言是机器语言。


它非常简单。有多简单呢?简单到只用“1”和“0”两个数字就可以进行编程。


image


优势:计算机能够直接识别,执行速度快


劣势:学习难度大 编程效率低


1.2 1940年代

最早被确认的现代化、电力引导(electrically powered)的计算机约在1940年代被创造出来。程序员在有限的速度及存储器容量限制之下,撰写人工调整(hand

tuned)过的汇编语言程序。而且很快就发现到使用汇编语言的这种撰写方式需要花费大量的脑力(intellectual

effort)而且很容易出错(error-prone)。


image


所以直到现在,汇编语言仍能占有一席之地。只是,这一席被挤得越来越没有空间。


康拉德·楚泽于1948年发表了他所设计的Plankalkül编程语言的论文。但是在他有生之年却未能将该语言实现,而他原本的贡献也被其他的发展所孤立。


在这段期间被开发出来的重要语言包括有:


1943 - Plankalkül (Konrad Zuse)

1943 - ENIAC coding system

1949 - C-10

优势:相比于机器语言难度有所降低

劣势:学习难度大 编程效率低


1.3 1950与1960年代

有三个现代编程语言于1950年代被设计出来,这三者所派生的语言直到今日仍旧广泛地被采用,


其中就有集万千宠爱于一身、引无数程序员竞头秃的高级编程语言诞生了。


Fortran (1955),名称取自"FORmula

TRANslator"(公式翻译器),由约翰·巴科斯等人所发明;是世界上第一个被正式采用并流传至今的高级编程语言

LISP,名称取自"LISt

Processor"(枚举处理器),由约翰·麦卡锡等人所发明;

COBOL,名称取自"COmmon

Business Oriented Language"(通用商业导向语言),由被葛丽丝·霍普深刻影响的Short Range Committee所发明。

用人类能够读懂的字符与计算机沟通交流

优势:学习难度大大降低 编程效率大大提高

劣势:计算机无法直接识别 执行速度相对较慢


1.4 1967-1978:确立了基础范型

1960年代晚期至1970年代晚期的期间中,编程语言的发展也有了重大的成果。大多数现在所使用的主要语言范型都是在这段期间中发明的:


Simula,于1960年代晚期由奈加特与Dahl以Algol 60超集合的方式发展,同时也是第一个设计支持面向对象进行开发的编程语言。


C,于1969至1973年间由贝尔实验室的研究人员丹尼斯·里奇与肯·汤普逊所开发,是一种早期的系统程序设计语言。


Smalltalk,于1970年代中期所开发,是一个完全从零开始(ground-up)设计的面向对象编程语言。


Prolog,于1972年由Colmerauer、Roussel,以及Kowalski所设计,是第一个逻辑程序语言。


ML,于1973年由罗宾·米尔纳所发明,是一个基于Lisp所建构的多态(polymorphic)类型系统,同时也是静态类型函数编程语言的先驱。


这些语言都各自演展出自己的家族分支,现今多数现代编程语言的祖先都可以追溯他们其中至少一个以上。


1.5 1980年代:增强、模块、性能

1980年代的编程语言与之前相较显得更为强大。C++合并了面向对象以及系统程序设计。美国政府标准化一种名为Ada的系统编程语言并提供给国防承包商使用。日本以及其他地方运用了大量的资金对采用逻辑编程语言结构的第五代语言进行研究。函数编程语言社区则把焦点转移到标准化ML及Lisp身上。这些活动都不是在开发新的范型,而是在将上个世代发明的构想进一步发扬光大。


然而,在语言设计上有个重大的新趋势,就是研究运用模块或大型组织化的程序单元来进行大型系统的开发


在这段期间被开发出来的重要语言包括有:


1980 - Ada

1983 - C++ (就像有类别的C)

1984 - Common Lisp

1985 - Eiffel

1986 - Erlang

1987 - Perl

1988 - Tcl

1989 - FL (Backus)

1.6 1990年代:互联网时代

1990年代未见到有什么重大的创新,大多都是以前构想的重组或变化。这段期间主要在推动的哲学是提升程序员的生产力。许多"快速应用程序开发" (RAD) 语言也应运而生,这些语言大多都有相应的集成开发环境、垃圾回收等机制,且大多是先前语言的派生语言。这类型的语言也大多是面向对象的编程语言,包含有Object Pascal、Visual Basic,以及C#。Java则是更加保守的语言,也具备垃圾回收机制。与其他类似语言相比,也受到更多的观注。


在这段期间被开发出来的重要语言包括有:


1990 - Haskell

1991 - Python

1991 - Visual Basic

1993 - Ruby

1993 - Lua

1994 - CLOS (part of ANSI Common Lisp)

1995 - Java

1995 - Delphi (Object Pascal)

1995 - JavaScript

1995 - PHP

1997 - REBOL

1999 - D

1.7 现今的趋势

编程语言持续在学术及企业两个层面中发展进化,目前的一些趋势包含有:


在语言中增加安全性与可靠性验证机制:额外的堆栈检查、信息流(information

flow)控制,以及静态线程安全。

提供模块化的替代机制:混入、委派(en:delegates),以及观点导向。

组件导向(component-oriented)软件开发

元编程、反射或是访问抽象语法树

更重视分布式及移动式的应用。

与数据库的集成,包含XML及关系数据库。

支持使用Unicode编写程序,所以源代码不会受到ASCII字符集的限制,而可以使用像是非拉丁语系的脚本或延伸标点符号。

图形用户界面所使用的XML(XUL、XAML)。

在这段期间被开发出来的重要语言包括有:


2001 - C#

2001 - Visual Basic .NET

2002 - F#

2003 - Scala

2003 - Factor

2006 - Windows PowerShell

2007 - Clojure

2009 - Go

2014 - Swift (编程语言)

2. 编程语言的分类

高级语言是大多数编程者的选择。高级语言主要是相对于汇编语言而言,它并不是特指某一种具体的语言,而是包括了很多编程语言,高级语言所编制的程序不能直接被计算机识别,必须经过转换才能被执行,按转换方式可将它们分为解释型和编译型。


编译型


编译性语言写的程序在被执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,比如exe文件,以后要运行的话就不用重新翻译了,直接使用编译的结果就行了(exe文件),因为翻译只做了一次,运行时不需要翻译,所以编译型语言的程序执行效率高。


类似于谷歌翻译 一次性翻译完成后可以多次使用


常用编译型语言:C、C++、Golang


解释型


解释型语言的程序不需要编译,在运行程序的时候才翻译,每个语句都是执行的时候才翻译。这样解释性语言每执行一次就需要逐行翻译一次,效率比较低。


类似于同声传译 说一句翻译一句


常用解释型语言:python、perl、php、ruby


image


3. 总结

编译型语言和解释型语言的差异总结为下表:


编译型语言    通过专门的编译器,将所有源代码一次性转换成特定平台(Windows、Linux 等)执行的机器码(以可执行文件的形式存在)。     编译一次后,脱离了编译器也可以运行,并且运行效率高。    可移植性差,不够灵活。

解释型语言    由专门的解释器,根据需要将部分源代码临时转换成特定平台的机器码。    跨平台性好,通过不同的解释器,将相同的源代码解释成不同平台下的机器码。    一边执行一边转换,效率很低。

现在在来说一下黑客:

如今,“黑客”这个词承载了太多负面含义,让人联想到意在盗取身份和散布破坏性病毒的数字盗贼形象。


真相却并非总是如此。事实上,大众眼中的计算机黑客,最初,是那些只想着优化、定制和修补的技术狂热者。直到最近几十年,随着病毒和网络犯罪的诞生,传统黑客也被绑架进了恶意黑客范畴,一起承担了公众对黑客行为的中伤。




60年代


有趣的是,“黑客”这个词并非源于计算机。更确切地讲,它源于1961年麻省理工学院(MIT)的技术模型铁路俱乐部,当时俱乐部成员们为修改功能而黑了他们的高科技列车组。然后,他们从玩具列车推进到了计算机领域,利用MIT艰涩难懂而又昂贵的 IBM 704 计算机进行创新、探索、创建新的范例,试图扩展计算机能够完成的任务。


这些MIT学生,以及其他早期黑客,仅仅对探索、改进和测试现有程序的极限感兴趣。某些情况下,这些黑客甚至产生了比先前程序好得多的程序,比如丹尼斯·里奇和基斯·汤普森的UNIX操作系统。


70年代


计算机黑客持续繁荣演进到70年代,这10年也催生了新一类黑客:玩弄电话系统的黑客。电话黑客,亦称“飞客”,比如臭名昭著的约翰·德拉浦,利用的是电话交换网络的操作特性。当然,如今的电话交换网络已经完全电子化了。


德拉浦传奇性地发现了 Cap’n Crunch 麦片赠送的玩具口哨可以发出2600赫兹的声音,正好可以指示长途电话线路转接新的通话。这招让他和其他飞客可以愚弄电话交换网络,免费享用长途通话。


电话飞客亚文化不仅仅造就了德拉浦一般的有影响力的黑客,也打磨出一批具备数字远见的人。在成立世界上最成功的计算机公司之前,史蒂夫·沃兹尼亚克和史蒂夫乔布斯,实际上,也只是微不足道的电话飞客而已。


80年代


80年代是黑客历史的分水岭,因为它标志着完备的个人计算机被引入了公众视野。计算机不再局限于大公司和名校所有,每个人都可以用计算机干自己的事——无论什么事。意料之中地,个人电脑的广泛普及,引爆了黑客的快速增长。


这并非黑客社区发生的唯一变化。虽然仍有大量黑客专注于改进操作系统,更关注个人所得的新一类黑客也渐渐浮出了水面。他们没有将自己的技术诀窍用于改进计算机,而是用于犯罪活动,包括盗版软件、创建病毒和侵入系统以盗取敏感信息。


法律界的响应不算太迟。1986年,黑客相关的首部立法《联邦计算机诈骗和滥用法案》出台,网络犯罪的冒头迅速遭到回击。


同时,这个时期,也是“黑客是能做好事也能做坏事的数字专家”这一概念进入流行文化的时间。一系列的书籍和电影推广了这种认知,尤其值得一提的是1983年的电影《战争游戏》。电影中,一名城郊少年发现了军方中央电脑的后门,差点引发第三次世界大战。


90年代


乘着80年代巨大变革的东风,90年代是黑客真正开始臭名远扬的起点。黑客这个词,被屡屡犯下网络罪行的“破解者(或称为恶意黑客)”,以及随后的大量高调抓捕所玷污。


凯文·米特尼克、凯文·鲍尔森、罗伯特·莫里斯和弗拉基米尔·勒文,是这一阶段需要重点提到的破解者。他们犯下的罪行包括盗取大公司专利软件、欺骗电台以赢取豪车、制作传播第一个计算机蠕虫病毒,以及主导第一起数字银行劫案。当然,他们也都被抓捕并定罪了。


这个10年里,一度组织严密的黑客社区也经历了分崩离析。为摧毁计算机犯罪,特勤局发起了强力调查,执行了一系列清晨突袭并逮捕了大量黑客。为免于定罪,黑客社区成员开始互相揭发以换取豁免权。


00年代


恶意黑客发起的攻击频频见诸报端,道德黑客无奈继续见证自己的良好声誉被拖入泥潭。


针对政府实体和大公司的新一类危险黑客开始崭露头角。微软、eBay、雅虎和亚马逊都曾沦为大范围拒绝服务攻击的受害者,而国防部和国际空间站则是被15岁的小男孩入侵了系统。


10年代


世界完全进入数字时代,黑客社区变得更加高端复杂。


独狼型黑客和小型黑客组织依然存在于互联网的每一个角落,要么在优化软件,要么在发起勒索软件和WiFi攻击——全看他们头上的帽子是什么颜色。“激进黑客”组织,比如“匿名者(Anonymous)”,在这一时期进占中心舞台,发布机密文档,揭露政府秘密,以保护公众免受伤害、利用和蒙蔽的名义成就所谓的数字侠客。


为应对激进黑客和网络罪犯,政府实体和大公司竞相改善安全,计算机巨头努力调整他们的系统。然而,尽管一直在招募网络安全专家,系统也一直在升级,技术一直在创新,黑客们——无论白帽子还是黑帽子,依然不出所料地保持领先一步的态势,丝毫没有动摇。1. Programming language development


1.1 Before 1940


The first programming languages predatemodern computers. First, the language is a code.




Invented in 1804, the jacquard loom (orcard-jacquard) uses holes in punch cards to represent the arm movements of asewing loom to automate the production of decorative patterns.




Ada Loveless spent nine months between 1842and 1843 translating Italian mathematician Luigi Menabrea's memoir of CharlesBabbage's newly published machine analysis Machine. She appended the articlewith details of a method of calculating Bernoulli numbers using an analyticalmachine, considered by some historians to be the world's first computerprogram. [2]




Herman Hollerith realized that he couldencode information on punch cards after observing the way train conductorspunched holes in passenger ticket studs at specific locations, and subsequentlyused punch cards to encode and record demographic data in 1890 based on thisdiscovery.




The first programming languages weremachine languages.




It's very simple. How easy is it? Simpleenough to program with just the numbers "1" and "0".




image




Advantages: Computer can directly identify,fast execution




Disadvantages: difficult to learn and lowprogramming efficiency




1.2 in the 1940 s


The first recognized modern, electricallypowered computer was created around the 1940s. The programmer has worked withlimited speed and memory capacity to write an assembly language program tunedby hand. It soon became clear that this way of writing in assembly language wasintellectual effort and prone to error-prone problems.




image




So until now, assembly language has had itsplace. But, this seat is crowded more and more no space.




Conrad Chuese published his paper on thePlankalkul programming language in 1948. But the language did not materializeduring his lifetime, and his original contributions were isolated by otherdevelopments.




Important languages developed during thisperiod include:




1943 - Plankalkul (Konrad Zuse)


1943 - ENIAC coding system


1949 - C-10


Advantage: Lower difficulty compared tomachine language


Disadvantages: difficult to learn and lowprogramming efficiency




1.3 The 1950s and 1960s


Three modern programming languages weredevised in the 1950s, and their derivations are still widely used today,




Among them was the creation of themuch-loved high-level programming language that has caused millions ofprogrammers to compete with each other.




Fortran (1955), named after "FORmulaTRANslator", invented by John Backus and others; Is the world's firstofficially adopted and passed down to today's high-level programming language


LISP, named after the "LIStProcessor", was invented by John McCarthy and others;


COBOL, named after the "COmmonBusiness Oriented Language", was invented by the Short Range Committee,which was deeply influenced by Grace Hope.


Communicate with a computer usingcharacters that humans can read


Advantages: The learning difficulty isgreatly reduced and the programming efficiency is greatly improved


Disadvantages: The computer cannot directlyrecognize that the execution speed is relatively slow




1.4 1967-1978: Basic paradigm established


The period from the late 1960s to the late1970s also saw significant gains in programming language development. Most ofthe major language paradigms in use today were invented during this period:




Simula, developed in the late 1960s byNagat and Dahl as the Algol 60 superset, was also the first programminglanguage designed to support object-oriented development.




C, developed between 1969 and 1973 by BellLABS researchers Dennis Ritchie and Ken Thompson, was an early systemsprogramming language.




Smalltalk, developed in the mid-1970s, isan object-oriented programming language designed completely from the ground up.




Prolog, designed in 1972 by Colmerauer,Roussel, and Kowalski, was the first logic programming language.




ML, which was invented by Robin Milner in1973 as the polymorphic type system based on Lisp, is also a pioneer of thestatically typed functional programming language.




Each of these languages has branched offinto its own family, and most modern programming languages can trace theirancestry back to at least one of them.




1.5 1980s: Enhancements, modules,performance


The programming languages of the 1980s weremuch more powerful than before. C++ incorporates object orientation and systemprogramming. The U.S. government standardizes a system programming languagecalled Ada and makes it available to defense contractors. A lot of money hasbeen spent in Japan and elsewhere on fifth-generation languages that uselogical programming language structures. The functional programming languagecommunity has shifted its focus to standardized ML and Lisp. These activitiesare not developing new paradigms, but taking ideas invented in the lastgeneration further.




However, there is a major new trend inlanguage design towards the use of modules or large organizational programunits for the development of large systems




Important languages developed during thisperiod include:




1980 - Ada


1983 - C++ (like C with categories)


1984 - Common Lisp


1985 - Eiffel


1986 - Erlang


1987 - Perl


1988 - Tcl


1989 - FL (Backus)


1.6 1990s: The Internet era


No major innovations were seen in the1990s, mostly reorganizations or changes of previous ideas. The main philosophybeing pushed during this period was to increase programmer productivity. Many"Rapid Application development" (RAD) languages have emerged, most ofwhich have integrated development environments, garbage collection, and othermechanisms, and most of which are derivations of previous languages. Most ofthese languages are object-oriented programming languages, including ObjectPascal, Visual Basic, and C#. Java is a more conservative language and also hasgarbage collection. It also receives more attention than other similarlanguages.




Important languages developed during thisperiod include:




1990 - Haskell


1991 - Python


1991 - Visual Basic


1993 - Ruby


1993 - Lua


1994 - CLOS (part of ANSI Common Lisp)


1995 - Java


1995 - Delphi (Object Pascal)


1995 - JavaScript


1995 - PHP


1997 - REBOL


1999 - D


1.7 Current Trends


Programming languages continue to evolve atboth the academic and corporate levels. Some current trends include:




Add security and reliability verificationmechanisms to the language: additional stack checks, information flow control,and static thread safety.


- Provides alternative mechanisms formodularity: mixing, delegation, and opinion-orientation.


Component-oriented software development


Metaprogramming, reflection, or accessingabstract syntax trees


More emphasis on distributed and mobileapplications.


Integration with databases, including XMLand relational databases.


Support for writing programs in Unicode, sosource code is not constrained by the ASCII character set and can be used likenon-Latin scripts or extended punctuation.


XML(XUL, XAML) for the graphical userinterface.


Important languages developed during thisperiod include:




2001 - C#


2001 - Visual Basic .NET


2002 - F#


2003 - Scala


2003 - Factor


2006 - Windows PowerShell


2007 - Clojure


2009 - Go


2014 - Swift (Programming language)


2. Classification of programming languages


High-level languages are the choice of mostprogrammers. Compared with assembly language, high-level language does notspecifically refer to a specific language, but includes many programminglanguages. Programs programmed in high-level language cannot be directlyrecognized by the computer and must be executed after conversion. According tothe conversion method, they can be divided into interpretation type andcompilation type.




A compiled




Compiled programs written language beforebeing executed, needs a special compilation process, compile program intomachine language files, such as the exe file, later to run it you don't have totranslate, just use the result of the compilation directly (exe files), becausethe translation done only once, the runtime does not need to be translated, Socompiled language program execution efficiency is high.




Similar to Google Translate once thetranslation can be used many times




Common compiled languages: C, C++, Golang




interpreted




Programs in interpreted languages do notneed to be compiled. They are translated at run time, and each statement istranslated at execution time. In this way, the interpretation language needs tobe translated line by line every time it is executed, which is relativelyinefficient.




It's kind of like simultaneousinterpretation




Common interpreted languages: Python, Perl,PHP, Ruby




image




3. Summary


The differences between compiled andinterpreted languages are summarized in the following table:




Compiled languages use specializedcompilers to convert all source code at once into machine code (in the form ofexecutable files) for execution on a specific platform (Windows, Linux, etc.).After compiling once, it can also run without the compiler, and runefficiently. Poor portability, not flexible enough.


Interpreted languages have specializedinterpreters that temporarily convert portions of source code intoplatform-specific machine code as needed. Good cross-platform, throughdifferent interpreters, the same source code is interpreted into differentplatform machine code. It's inefficient to convert as you go along.


Now on to hacking:


The word "hacker" carries so manynegative connotations these days that it conjures up images of digital thievesintent on stealing identities and spreading destructive viruses.




This is not always the case. In fact, whatthe public thought of as a computer hacker was, at first, a tech enthusiast whothought only of optimization, customization, and tinkering. Only in recentdecades, with the advent of viruses and cybercrime, have traditional hackersbeen kidnapped into the realm of malicious hackers, sharing the publicvilification of hacking.








In the '60 s




Interestingly, the word "hacker"doesn't come from computers. More specifically, it originated in 1961 whenmembers of the MIT Technical Model Railroad Club hacked their high-tech traincrew to modify its features. Then they moved from toy trains to computers,using MIT's obscure and expensive IBM 704 computer to innovate, explore, createnew paradigms and try to expand what computers could do.




These MIT students, and other earlyhackers, were simply interested in exploring, refining, and testing the limitsof existing programs. In some cases, these hackers even produced programs thatwere far better than their predecessors, such as Dennis Ritchie and KeithThompson's UNIX operating system.




In the 70 s




The boom in computer hacking continued intothe 1970s, a decade that also gave rise to a new class of hackers: hackers whogame the phone system. Phone hackers, also known as "fliers," such asthe notorious John Draper, take advantage of the operational characteristics oftelephone switching networks. Today, of course, the telephone exchange networkis completely electronic.




Drape legendly discovered that a toywhistle from Cap 'n Crunch could produce a 2,600Hz sound, just in time todirect a long-distance phone line to a new call. This allowed him and otherfliers to fool telephone exchange networks and enjoy free long-distance calls.




The telemarketer subculture has producednot only influential hackers like Draper, but also digital visionaries. Beforethey founded the world's most successful computer company, Steve Wozniak andSteve Jobs were, in fact, little more than telephone fliers.




In the 80 s




The 1980s was a watershed in the history ofhacking because it marked the introduction of the fully fledged personalcomputer into the public eye. Computers are no longer limited to big companiesand elite schools. Everyone can use them to do their own thing -- no matterwhat. Not surprisingly, the widespread popularity of personal computers hastriggered a rapid increase in hacking.




That's not the only change in the hackercommunity. While there are still plenty of hackers focused on improvingoperating systems, a new class of hackers more focused on personal gains isemerging. Instead of using their know-how to improve computers, they use it forcriminal activities, including pirating software, creating viruses and hackinginto systems to steal sensitive information.




It is not too late for the legal professionto respond. The first hacking-related legislation, the Federal Computer Fraudand Abuse Act, was introduced in 1986, and the emergence of cybercrime wasquickly countered.




It was also the time when the notion ofhackers as digital experts capable of both good and evil entered popularculture. A series of books and films have promoted this perception, notably the1983 film War Games. In the movie, a suburban teenager discovers the back doorto the military's central computer and nearly starts World War III.




In the 90 s




Riding the whirlwind of change in the '80s,the' 90s was where hackers really began to gain notoriety. The word hacker hasbeen tarnished by repeated cybercrime "crackers," or malicioushackers, and a spate of high-profile arrests that have followed.




Kevin Mitnick, Kevin Paulsen, RobertMorris, and Vladimir Lewen are the cracklers to be highlighted at this stage.Their crimes include stealing proprietary software from big companies, cheatingradio stations to win luxury cars, and making

你可能感兴趣的:(2022-08-09)