本文发表在《CSDN开发高手》第九期上。请勿随意转载。
我们已经远离用电线和穿孔卡编程的时代。也许仍未尽如人意。以下内容都是编程历史上的创新。
ca.
1946
Konrad
Zuse,一位德国工程师,他躲藏在巴伐利亚附近的阿尔卑斯山上时,独立开发了Plankalkul。他把该项成果应用在其它的事物中,比如国际象棋。
1949
Short
Code ,第一种真正在电子计算设备上使用的计算机语言,尽管他是一个纯手工编译的的语言。
1951
Grace
Hopper,为Remington
Rand工作,是在第一个著名的编译器——A-o上开始设计工作。当Rand在1957年发布这个语言时,它被称为MATH-MATIC。
1952
Alick
E. Glennie ,他利用自己在曼彻斯特大学的课余时间,发明了一个名为AUTOCODE的编程系统,一个未能成型的编译器。
1957
FORTRAN——数学公式转换系统(FORmula
TRANslating,FORTRAN名字的由来)——出现。开发队伍的领导者是John
Backus,并且他还为ALGOL的开发和巴柯斯范式(BNF)做出了贡献。
1958
FORTRAN
II出现,它能够处理子程序和连接汇编语言。由M.I.T的John
McCarthy在LISP-LISt
Processing上开始设计工作。
原始的ALGOL规范出现。该规范并未描述数据的输入输出方式;这些问题都留给独立的实现者。
1959
LISP1.5出现。COBOL在数据系统和语言大会(Conference
on Data System and Languages)上被创建了。
1960
ALGOL
60 ,第一种结构化语言出现。它是结构化语言家族树中的根节点,并最终产生Pascal这样的语言。ALGOL成为六十年代中期至末期欧洲最为流行的语言。
六十年代早期,Kenneth
Iverson开始语言方面的工作,最终产生了APL-A编程语言。它使用专门的字符集,为了正确地使用,你还需要兼容APL的I/O设备。
1962
APL被写入Iverson的《A
Programming Language》一书中。
FORTRAN
IV出现。
SNOBOL这个以“首字母拼词命名”的产品,在工作的初期就取得了绝对的成功,SNOBOL——面向字符串符号(StriNg
Oriented symBOlic Language)语言。它衍生了其他一些以首字母拼词命名的产品:
FASBOL,一个SNOBOL编译器(1971年),还有SPITBOL——Speedy
ImplemenTation of snoBOL——同样在1971年。
1963
ALGOL
60进行修正。
PL/1的工作开始。
1964
APL\360被实现。
在达特茅斯大学,John
G.Kemeny和Thomas
E.Kurtz教授发明了BASIC。最初的实现是一个编译器。第一个BASIC程序在1964年五月一日下午四点运行。
PL/1发布。
1965
SNOBOL3出现。
1966
FORTRAN
66出现。
LISP
2出现。
在Bolt,Beranek和Newman开始了LOGO的工作。小组的头是Wally
Fuerzeig,而且还包括Seymour
Papert。LOGO中最著名的便是“龟作图”。
1967
SNOBOL4,功能获得极大加强的SNOBOL,出现了。
1968
ALGOL
68,相对于ALGOL
60它是个怪物。一些规范委员会的成员——包括C.A.R.Hoare和Niklaus
Wirth——却赞同该计划。事实证明ALGOL
68是难以实现的。
ALTRAN,一个FORTRAN的变种出现。
COBOL被ANSI正式定义规范。
Niklaus
Wirth开始Pascal方面的工作。
1969
500人参加在纽约Armonk的IBM总部召开的APL会议。APL的分发需求如此之大,该活动此后被人们称为“The
March on Armonk”。
1970
70年代早期,Charles
Moore在他的语言Forth中写下了第一个有意义的程序。
Prolog方面的工作大约在此时开始了。
同样是在70年代早期的某一天,Xerox
PARC由Alan
Kay领导,开始了Smalltalk的设计工作。早期版本包括Smalltalk-72,Smalltalk-74和Smalltalk-76。
Pascal在CDC
6000-series电脑上的一个实现出现了。
Icon,SNOBOL4的一个后代产品问世。
1972
Konrad
Zuse写的关于Plankalkul(见1946年)手稿终于出版了。
Dennis
Ritchie设计了C。但是最终的参考手册却是在1974年发布的。
Prolog的第一个实现——Alain
Colmerauer和Phillip
Roussel的功劳。
1974
另一个COBOL的ANSI规范出现。
1975
Tiny
BASIC,由Bob
Albrecht和Dennis
Allison设计(由Dick
Whipple和John
Arnold实现),运行在2KB内存的微型计算机上。一台4KB的机器是较为合适的,它将有2KB的内存应用于这个程序上。
Bill
Gates和Paul
Allen编写的一个BASIC版本以抽取每份拷贝版税的形式销售给MITS(Micro
Instrumentation and Telemetry Systems)。MITS生产Altair,这是一种8080结构的微型计算机。
Scheme,一个LISP的“方言”,由G.L.
Steele和G.J.
Sussman设计。
Pascal用户手册和报告出版,Jensen和Wirth编写。许多人至今都认为它是Pascal方面权威的参考书籍。
B.W. Kerninghan描述了RATFOR——RATional
FORTRAN。它是预处理程序,并且允许在FORTRAN中使用类C的控制结构。RATFOR被应用到了Kernighan和Plauger的“Software
Tools”中,它出现在1976年。
1976
Design
System Language出现,它被认为是PostScript的先驱。
1977
MUMPS的ANSI标准出现——麻省总医院多用途程序设计系统(Massachusetts
General Hospital Utility Multi-Programming System)。MUMPS最初被用来处理医疗记录,它只能识别字符串类型。随后被重新命名为M。
设计竞赛将导致Ada的产生。由Jean
Ichbiah带领的Honeywell
Bull队伍,即将赢得比赛。
Kim
Harris和其他人建立了FIG,一个FORTH兴趣小组。他们开发了FIG-FORTH,售价大约为20美元。
70年代晚期的某天,Kenneth
Bowles设计出了UCSD
Pascal,它使得Pascal可以用在PDP-11和基于Z80
的电脑上。
Niklaus
Wirth开始设计Modula,它Modula-2的先行者,Pascal的继承者。
1978
AWK——一个文本处理语言,以它设计者Aho、Weinberger和Kernighan的名字命名。
FORTRAN
77的ANSI标准出现。
1980
Smalltalk-80出现。
Modula-2出现。
Franz
LISP出现。
Bjarne
Stroustrup开发了一个语言集——被总称为“C
With Classes”——它成为C++的滋生土壤。
1981
Effort开始成为一个LISP的“公共方言”,常被人称作Common
LISP。
日本开始第五代电脑系统工程。主要语言是Prolog。
1982
ISO
Pascal出现。
PostScript出现。
1983
Smalltalk-80公布:它由Goldberg等人完成。
Ada出现。他的名字来自Lovelace女伯爵Augusta
Ada Byron,她是英国诗人拜伦的女儿。因其在巴贝奇分析机上设计了解伯努利方程的一个程序,而被誉为第一位女程序员。在1983年,国防部指导的全新“任务评定”应用程序是使用该语言编写的。
1983年的后期和1984年早期,微软和Digital
Research共同发布第一个微型计算机的C编译器。
七月,第一个C++实现露面。该名称是由Rick
Mascitti取的。
11月,Borland的Turbo
Pascal的“冲击”犹如一场核风暴,这得益于《BYTE》杂志的广告。
1984
APL2的参考手册面世。APL2是APL的扩展,它允许嵌套数组。
1985
Forth控制着潜水器定位泰坦尼克的残骸。
Vanilla
SNOBOL4之微机版发布。
Methods,PC上的面向行(line-oriented)的Smalltalk出现。
1986
Smalltalk/V露面——第一个广泛应用于微机的Smalltalk版本。
Apple公司为Mac机器发布Object
Pascal。
Borland发布Turbo
Prolog。
Charles
Duff发布Actor,一个开发微软Windows应用程序的面向对象语言。
Eiffel,另外一个面向对象语言出现。
C++露面。
1987
Turbo
Pascal 4.0发布。
1988
CLOS规范——公共LISP对象系统(Common
LISP Object System)——发表。
Niklaus
Wirth完成Oberon,这是他继Modula-2的后续行动。
1989
ANSI
C规范公布。
C++2.0形成了一个参考手册的初稿。2.0版本增加了诸如多继承和成员指针等特性。
1990
C++2.1,B.Stroustrup等作者的《Annotated
C++ Reference Manual》一书出版。这个版本增加了模板和异常处理特性。
FORTRAN
90包含了众多新元素比如case语句和派生类型。
Kenneth
Iverson和Roger
Hui在APL
90会议上提出了J语言。
1991
Visual
Basic在COMDEX春展会上获得《BYTE》杂志颁发的最佳表现奖。
1992
Dylan——以Dylan
Thomas命名——由Apple公司发布的一个类似Scheme的面向对象语言。
1993
ANSI发布X3J4.1技术报告——面向对象的COBOL提议初稿。真正的标准预计在1997年完成。
1994
微软将Visual
Basic for Application整合到Excel中。
1995
二月,ISO接受Ada语言1995修订版。它被称为Ada95,其中包括OOP特性和支持实时系统。
1996
第一个ANSI
C++标准预发布。
编程语言时序表
这是一个以编程语言时间顺序排序的清单。
查看格式为:
父语言(“*”表示没有此项)年代
子语言 ——开发者或公司
*
1840~第一个程序
-- Lovelace
FLOW-MATIC 1957
COMTRAN -- Bemer
FORTRAN 1958
FORTRAN II -- Backus
FLOW-MATIC
COMTRAN 1960 COBOL
The Codasyl Committee
FORTRAN II 1962
SNOBOL
-- Griswold, et al.
ALGOL60 1963
CPL
-- Barron, Strachey, et al.
SNOBOL 1962
SNOBOL3
-- Griswold, et al.
CPL LISP 1964
COWSEL
Burstall, Popplestone
FORTRAN II, JOSS 1964
BASIC
-- Kemeny and Kurtz
FORTRAN II 1966
FORTRAN IV
ALGOL60 1966
CORAL66
Real Time version of Algol 60
CPL 1967
BCPL
-- Richards
Fortran LISP 1967
MUMPS
-- Massachusetts General Hospital
SNOBOL3 1967
SNOBOL4
-- Griswold, et al.
Algol60 1968
ALGOL
68
-- Wijngaarten, et al.
COWSEL 1968
POP-1 -- Burstall, Popplestone
POP-1 1970
POP-2
Simula67 1972
Smalltalk Environment -- Smalltalk--Digitalk
FORTRAN IV 1978
FORTRAN77
( *
1979 VULCAN DBASE-II
-- Ratliff )
( dBase 1984
CLIPPER -- Nantucket )
dBase-III 1988
dBaseIV
Turbo-Pascal 1989
Turbo-Pascal+OOP -- Borland
C 1989
Standard C -- ANSI
X3.159-1989 (adopted by ISO in 1990)
( SQL-1 1992
SQL-2 )
Ada 83 1995
Ada 95 -- ISO
一些数据不完全的资料:
* 197?
sh (Bourne Shell) -- Bourne
sh 19??
ksh (Korn Shell) -- Korn
ksh 199?
zsh (Z Shell)
Self Java 199? LiveScript -- Brendan Eich, Netscape (Self
inspired, made for Java interactions)
What makes a 5GL?
Impossible, but ...
Comment From time to time vendors in the
application development space have claimed 5GL (5th generation language)
capabilities. If you think about this for a moment you will realise that this
can't be true. The idea of GLs is that each is an abstraction of the former, so
we had machine code (on which I cut my teeth as a developer); assembler; third
generation languages such as COBOL, Java, C++ and so forth; and finally 4GLs
(now sometimes referred to as ABLs-advanced business languages-as 4GL seems to
be out of fashion).
You can't get a further level of abstraction than a 4GL so there can't be
such a thing as a 5GL, just as you can't abstract further than
meta-meta-metadata (which is what high-end repositories provide).
So, if you can't get beyond a 4GL, what can you do to a 4GL to make it a
quantum step forward compared to current 4GLs, even if it isn't actually a
5GL?
One possible answer is that you could build a data federation engine into the
development environment. This would allow you to create applications that
accessed diverse, heterogeneous data sources. Now, data federation has typically
been thought of as being used for EII (enterprise information integration) and
the premise has been that it is about queries. But a database look-up is, from a
theoretical perspective, just a query, even if it is going to be used for a
transactional application, so supporting data federation within a development
environment sense. Indeed, it is easy to see how such an approach could be used
for building MDM (master data management) applications, for example.
So, is there anybody actually doing this? Well, as you might guess, yes. A
small UK company called Abbro Interactive has a tool called Abbro (now in
version 3-it has been in use for some seven years), which does exactly this. You
can go to the company's
website
and take a look at the facilities provided but the key to note is that this is a
4GL with extras that, in the case of federation, includes the ability to reverse
engineer existing databases to create database views that can then be merged or
joined, and caching capabilities so that reading the same data from these
sources does not mean repeated database access.
The product is based on its own scripting language which is interpreted
dynamically at run-time by the Abbro engine. It has to work this way because it
is intended that applications will be event-driven, so event exits may occur at
any time. Note that this facilitates the deployment of workflow as well as
alerts, notifications and so on. It includes the ability to scan documents and
populate forms therefrom, support for bar codes (and, at least in theory, RFID
tags) and GPS messages so that you can determine the locations of things.
As I said: a 4GL with extras.
However, you can't buy Abbro as a product: at present all you can do is to
have the company build an application for you using Abbro (based on a proof of
concept, if required), which should be significantly faster (in terms of
delivery) and cost less money than would normally be the case. Once you've got
the application you can customise it but the underlying logic will be developed
by Abbro Interactive for you. The company does have one package built on Abbro,
for export documentation, but its potential uses are much broader than this. The
company is considering how it might make use of channel partnerships but however
good the product is, we cannot expect to see widespread deployment while Abbro
itself remains the only company doing core development work.
Fifth-generation programming
language
From Wikipedia, the free encyclopedia
Jump to:
|
This article or section has been nominated to be checked
for its neutrality,
as an editor who has substantially contributed to the current version may have a
conflict
of interest. Discussion of this nomination can be found on the talk
page. (May
2009) |
A
fifth-generation programming language (abbreviated
5GL) is a
programming
language based around solving problems using
constraints given
to the program, rather than using an
algorithm written by a
programmer. Most constraint-based and
logic programming
languages and some declarative languages are fifth-generation languages.
While
fourth-generation
programming languages are designed to build specific programs,
fifth-generation languages are designed to make the computer solve a given
problem without the programmer. This way, the programmer only needs to worry
about what problems need to be solved and what conditions need to be met,
without worrying about how to implement a routine or algorithm to solve them.
Fifth-generation languages are used mainly in
artificial
intelligence research.
Prolog,
OPS5, and
Mercury are
examples of fifth-generation languages.
[citation
needed]
These types of languages were also built upon Lisp, many originating on the
Lisp machine, such as
ICAD. Then, there are many
frame languages, such as
KL-ONE.
[citation
needed]
In the 1990s, fifth-generation languages were considered to be the wave of
the future, and some predicted that they would replace all other languages for
system development, with the exception of low-level languages.
[citation
needed] Most notably, from 1982 to 1993
Japan[1][2]
put much research and money into their
fifth
generation computer systems project, hoping to design a massive computer
network of machines using these tools.
However, as larger programs were built, the flaws of the approach became more
apparent. It turns out that, starting from a set of constraints defining a
particular problem, deriving an efficient algorithm to solve it is a very
difficult problem in itself. This crucial step cannot yet be automated and still
requires the insight of a human programmer.
Today, fifth-generation languages are back as a possible level of computer
language. A number
[who?]
of software vendors currently claim that their software meets the visual
"programming" requirements of the 5GL concept.
[edit]
Common misconception
From time to time vendors in the application development space have claimed
5GL (5th generation language) capabilities.
[3]
Most of the time they actually sell
4GLs with a higher levels of
automation and knowledge base. Since the 5GL awareness has dropped because the
hype of the 80's quickly faded away and that the projects were eventually all
dropped; this has opened doors to the vendors to re-use the term in marketing
their new tools, without causing much controversy among the current generations
of programmers. Their tools actually consist of
4GLs packed with
RAD
wizards,
CASE
tools and other graphical coding assistance that facilitates code
generation.
[edit]
See also
[edit]
References
没有评论:
发表评论