计算机之一

认识

1.java微专zhuan业,java基础,java web入门开发,Servlet技术,数据库开发,Spring框架kuang,实践

装得专业些:学会在线托管;官网下软件,最好读读官方手;命令行:远程部署之类的

    dir   cd+p+tab键  mkdir dd建立  上下箭头浏览命令

    哦,我的网络老师说windows的命令提示符学好了可以当的黑客没有问题,也不知真假zhen

一般来说,软件分几个平台:

      桌面上的:c#,c++,objective-c,java

      服务器中:java和各种新兴语言·

      浏览器中:javascript

      设备里:she   c

client/browser    browser/server:90年代

TIOBE指数,每个月更一次

eniac :程序是硬件ying,由电路连接,还是·十进制jin的·,电子管控制位数

    冯诺依曼,德国人,居住美国时,参can与曼哈顿计划:做原子弹的,是个数学家,提出了几个观念:程序cheng是一种数据,二进制表示

ACM是啥?

早期:

  批处理到交互编程,那时没有操作系统,对程序员来说没办法直接摸到计算机,先在自己纸上写,然交给直机员,有她去布线输入,成卡片纸带成孔

question:什么是分时系统与多用户系统

1970年,UNIX出现了,可以说是奠定dianding了基础,有了进程:切换,虚拟内存cun

2017-04-03:

由C语言写出,1970-1990初:语言都是领域专用的,而C与PDP-11的关系?只有几十K 16位,C语言是为第一个通用语言。      C++,一个人即可完成,仿真程序,不是独家的

        java被称为C++--,最早用于机顶盒中,是嵌qian入式语言,他的跨平台是偶然的,且他是独家的

计算模式在改变:计算机在远端  计算机在桌面  桌面计算远端存储  桌面交互远端计算和存储  前端计算远端计算和存储

CGI------MVC----服务化

OP语言:Object Oriented Programming 面向对象的程序设计;

并行时程序发展的大方向

在北美,计算机专业分为:computer science研究计算机的;computing science 做计算机的;software engineering:软件工程

debug历史:

  

“bug”和“调试”一词普遍归功于20世纪40年代格雷斯·霍普尔将军[1]当她在哈佛大学工作的Mark II计算机时,她的同事们发现一个蛾被卡在继电器中,从而阻碍了操作,于是她就说“他们在调试”这个系统。然而,技术错误意义上的术语“错误”至少可追溯到1878年,托马斯·爱迪生Thomas Edison)(参见完整讨论的软件错误),并且“调试”似乎在进入世界之前被用作航空术语电脑。确实,在接受采访时格雷丝·霍佩尔说她并没有生造术语[ 来源请求 ]。飞蛾符合已有的术语,所以被保存了。从信奥本海默(洛斯阿拉莫斯国家实验室的二战原子弹的“曼哈顿”项目的主管,NM)使用在写给博士术语埃内斯特·劳伦斯在加州大学伯克利分校,日期为1944年10月27日,[2]关于招聘额外的技术人员。

 

“调试” 的牛津英语词典条目在“皇家航空学会杂志”1945年的文章中引用了用于参考飞机发动机测试的术语“调试”。“空军”(1945年6月第50页)中的一篇文章也是指这次飞机摄像机的调试。Hopper的错误发现于1947年9月9日。这个术语直到20世纪50年代初才被计算机程序员采用。1951年Gill [3]的创新文章是对编程错误的最早深入的讨论,但并没有使用“错误”或“调试”这个术语。在ACM的数字图书馆,“调试”一词首先在1952年ACM国家会议论文中使用。[4] [5] [6]三个中的两个使用引号。到1963年,“调试”是CTSS手册第1页上没有解释的常见问题。[7]

 

Kidwell的文章跟踪可疑计算机Bug [8]更详细地讨论了“bug”和“debug”的词源。

The terms "bug" and "debugging" are popularly attributed to Admiral Grace Hopper in the 1940s.[1] While she was working on a Mark II Computer at Harvard University, her associates discovered a moth stuck in a relay and thereby impeding operation, whereupon she remarked that they were "debugging" the system. However the term "bug" in the meaning of technical error dates back at least to 1878 and Thomas Edison (see software bug for a full discussion), and "debugging" seems to have been used as a term in aeronautics before entering the world of computers. Indeed, in an interview Grace Hopper remarked that she was not coining the term[citation needed]. The moth fit the already existing terminology, so it was saved. A letter from J. Robert Oppenheimer (director of the WWII atomic bomb "Manhattan" project at Los Alamos, NM) used the term in a letter to Dr. Ernest Lawrence at UC Berkeley, dated October 27, 1944,[2] regarding the recruitment of additional technical staff.

The Oxford English Dictionary entry for "debug" quotes the term "debugging" used in reference to airplane engine testing in a 1945 article in the Journal of the Royal Aeronautical Society. An article in "Airforce" (June 1945 p. 50) also refers to debugging, this time of aircraft cameras. Hopper's bug was found on September 9, 1947. The term was not adopted by computer programmers until the early 1950s. The seminal article by Gill[3] in 1951 is the earliest in-depth discussion of programming errors, but it does not use the term "bug" or "debugging". In the ACM's digital library, the term "debugging" is first used in three papers from 1952 ACM National Meetings.[4][5][6] Two of the three use the term in quotation marks. By 1963 "debugging" was a common enough term to be mentioned in passing without explanation on page 1 of the CTSS manual.[7]

Kidwell's article Stalking the Elusive Computer Bug[8] discusses the etymology of "bug" and "debug" in greater detail.

格蕾丝。霍普:可是个女将军哦

格雷斯·布鲁斯特·默里·霍珀Grace Brewster Murray Hopper)(美国诺里·  默里 ; 1906年12月9日 - 1992年1月1日)是美国的计算机科学家美国海军 后海军上将[1]在1944年,她是哈佛Mark I计算机的第一个程序员之一[2],并发明了第一个用于计算机编程语言的编译器[3] [4] [5] [6] [7]她推广了机器无关编程语言的理念,导致了COBOL的发展,COBOL是第一批高级编程语言

由于她的成就和她的海军级别,她有时被称为“ 惊人的恩典 ”。[8] [9]美国海军Arleigh Burke导弹驱逐舰USS  Hopper被命名为NERSCCray XE6 “Hopper”超级计算机。[10]

2016年11月22日,她被奥巴马总统遗赠给了总统自由勋章[11]

1959年春天,来自工业和政府的计算机专家在两天的会议中聚集在一起,被称为数据系统语言会议(CODASYL)。料斗担任技术顾问委员会,以及许多她的前雇员送达该定义的新语言短期委员会COBOL(的缩写CO MMON  usiness- Ø riented 大号 anguage)。新的语言扩展Hopper的FLOW-MATIC语言与来自一些想法IBM等同,COMTRAN。料斗' 相信程序应该用接近英语的语言(而不是机器代码或接近机器代码的语言,如汇编语言)编写,以新的商业语言被捕获,而COBOL是最多的无处不在的商业语言。[25]

从1967年到1977年,霍珀担任海军信息系统规划办公室海军编程语言小组的主任,并于1973年晋升为队长[21]她开发了COBOL及其编译器的验证软件,作为整个海军的COBOL标准化计划。

 

Grace Hopper是個電腦科技的天才、科學家、玻璃天花板的破除者、女性主義者、以及十項全能的狠角色,但你可能從未聽過她。

今天,她終於得到應得的讚美與推崇。Hopper在1992年去世,曾經在二戰時期效力於美國海軍的電腦工程師,在此期間,致力於開發第一個電腦軟體,而當時「軟體」還只是一個概念性的詞彙而已。網站FiveThirtyEight的系列文章中,發表一篇以《The Queen of Code》為標題的影片,來歌頌她一生所作出的貢獻。

我們常說女性是如何的在科技產業中受到排擠,但回頭看看Hopper的時代,女性可以說是更加的艱難。她不只在兩個不同的工作上都因為性別而受到阻礙,更因此,後來她在研究有重大進展的團隊當中服務,報紙的報導也故意掠過而不刊登她的照片,她甚至還是當中不可或缺的中心人物。

影片的導演Gillian Jacobs與科技媒體Re/Code提到:「女性遭到歷史的消除是真實發生的!」

這個議題相當值得探討,但我們先來看看Hopper做出了哪些重大貢獻:

一、她想出方法讓原子彈研究有重大進展

在瓦薩學院的數學教授說服海軍讓Hopper在37歲的年紀加入之後,她到了哈佛大學致力於改善馬克一號(Mark I)電腦,並著手讓這部超級電腦的運算比過去都要強大。

當Hopper第一次看到馬克一號,心裡就想著:「天啊!這大概是我看過最美的機器!」據說有一次她從機器裡抓出一隻影響運作的飛蛾,這也是「debugging」這個詞彙的由來。

Hopper當時並沒有想到自己的貢獻會受到重用,但與馬克一號相處的三個月中,她甚至為當時的曼哈頓計畫解出了一個極度困難的計算,而她所解出的辦法,是讓原子彈適當爆炸的重要關鍵!

即使如此,她在戰後仍是無法成為哈佛的教授,或繼續留在海軍。

二、她基本上就是coding的發明者

Hopper在一個早期的電腦公司中找到了工作,並且很快地發現到所有開發出來的小型個人電腦都沒有一個統一的溝通、交流方式。

同時她也意識到美國大眾並沒辦法理解任何數學上的符號,因此她將象徵性的程式語言以平易近人的英文來做表示。但她卻受到了眾人的嘲笑,也因此在之後的一場演講上大大的對質疑者嘲諷了一番:

「我希望促使了人們進入電腦領域的想法或許有一部份是瘋狂的,畢竟要用簡單的英文和電腦溝通是個相當可笑的想法,沒有人會這樣做的。但除非,這方法確實行得通,那可就另當別論了!」

最後,她所開發的程式語言COBOL,到了2000年,基本上衍生出了現在各種程式程式語言當中的70%。

(圖片、資料來源:REFINERY29

 

1940之前[编辑]

 

霍列瑞斯式的打孔机(pantograph),用于1890年的人口普查[1].

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

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

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

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

第一个计算机代码是针对他们的应用面设计的。在20世纪的前十年主要是用十进制来算数,后来人们发现不只是用文字,也可以用数字来表现逻辑。举例来说,阿隆佐·邱奇曾以公式化(formulaic)的方式表达λ演算图灵机是一种纸带标记(tape-marking)机器(就像电话公司用的那种)操作方法抽象化后的集合。图灵机这种通过有限数字(finite number)呈现机器的方式,奠定了程序如同冯·诺伊曼结构计算机中的数据一样地存储的基础。但不同于λ演算,图灵机的代码并没有办法成为高级编程语言的基石,这是是因为它主要的用途是分析算法的复杂度

就像许多历史上的"第一次"一样,第一个现代编程语言也很难界定。最一开始是因为硬件限制而限定了语言,打孔卡允许80行(column)的长度,但某几行必须用来记录卡片的顺序。FORTRAN则纳入了一些与英文字词相同的关键字,像是"IF"、"GOTO"(原字词为go to),以及"CONTINUE"。之后采用磁鼓(magnetic drum)作为存储器使用,也代表计算机程序也必须插入(interleave)到磁鼓的转动(rotation)中。和现今比较起来,这也让编程语言必须更加依赖硬件(hardware-dependent)。

对部分的人认为必须在"编程语言"的状态确立之前,根据能力(power)以及可读性(human-readability)的程度来决定历史上第一个编程语言是什么语言。提花织布机和查尔斯·巴贝奇所制作的差分机(en:Difference Engine)都具备在大量限制下,简单描述机器应运行行为的语言。也有种并非设计给人类运用的受限特定领域语言(en:domain-specific language),是将打孔卡运用到自动演奏钢琴(en:player piano)上。

1940年代[编辑]

最早被确认的现代化、电力引导(electrically powered)的计算机约在1940年代被创造出来。程序员在有限的速度及存储器容量限制之下,撰写人工调整(hand tuned)过的汇编语言程序。而且很快就发现到使用汇编语言的这种撰写方式需要花费大量的脑力(intellectual effort)而且很容易出错(error-prone)。

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

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

1950与1960年代[编辑]

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

另一个1950年代晚期的里程碑是由美国与欧洲计算机学者针对"算法的新语言"所组成的委员会出版的ALGOL 60报告(名称取自"ALGOrithmic Language"(算法语言))。这份报告强化了当时许多关于计算的想法,并提出了两个语言上的创新功能:

  • 嵌套区块结构:可以将有意义的代码片段组群成一个区块(block),而非转成分散且特定命名的程序。
  • 词汇范围(lexical scoping):区块可以有区块外部无法通过名称访问,属于区块本身的变量、程序以及函数。

另一个创新则是关于语言的描述方式:

  • 一种名为巴科斯-诺尔范式 (BNF)的数学化精确符号被用于描述语言的语法。之后的编程语言几乎全部都采用类似BNF的方式来描述程序语法中上下文无关的部分。

Algol 60对之后语言的设计上带来了特殊的影响,部分的语言很快的就被广泛采用。后续为了开发Algol的扩充子集合,设计了一个名为Burroughs(en:Burroughs large systems)的大型系统。

延续Algol的关键构想所产生的成果就是ALGOL 68

  • 语法跟语义变的更加正交(orthogonal),采用匿名的历程(routines),采用高级(higher-order)功能的递归式输入(typing)系统等等。
  • 整个语言及语义的部分都通过为了描述语言而特别设计的Van Wijngaarden grammar来进行正式的定义,而不仅止于上下文无关的部分。

Algol 68一些较少被使用到的语言功能(如同步与并行区块)、语法快捷方式的复杂系统,以及类型自动强制转换(coercions),使得实现者兴趣缺缺,也让Algol 68获得了很难用(diffcult)的名声。尼克劳斯·维尔特就干脆离开该设计委员会,另外再开发出更简单的Pascal语言。

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

1967-1978:确立了基础范式[编辑]

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

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

在1960年代以及1970年代中结构化程序设计的优点也带来许多的争议,特别是在程序开发的过程中完全不使用GOTO。这项争议跟语言本身的设计非常有关系:某些语言并没有包含GOTO,这也强迫程序员必须结构化地编写程序。尽管这个争议在当时吵翻了天,但几乎所有的程序员都同意就算语言本身有提供GOTO的功能,在除了少数罕见的情况下去使用GOTO是种不良的程序风格。结果是之后世代的编程语言设计者发觉到结构化编程语言的争议实在既乏味又令人眼花撩乱。

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

1980年代:增强、模块、性能[编辑]

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

然而,在语言设计上有个重大的新趋势,就是研究运用模块或大型组织化的程序单元来进行大型系统的开发。Modula、Ada,以及ML都在1980年代发展出值得注意的模块化系统。模块化系统常拘泥于采用泛型程序设计结构:泛型存在(generics being)、本质(essence),参数化模块(parameterized modules)。(参阅多态)

尽管没有出现新的主要编程语言范式,许多研究人员仍就扩充之前语言的构想并将它们运用到新的内容上。举例来说,Argus以及Emerald系统的语言配合面向对象语言运用到分布式系统上。

1980年代的编程语言实现情况也有所进展。计算机系统结构RISC的进展假定硬件应当为编译器设计,而非身为人类的汇编语言程序员。借由中央处理器速度增快的帮助,编译技术也越来越积极,RISC的进展对高级语言编译技术带来不小的关注。

语言技术持续这些发展并迈入了1990年代。

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

1990年代:互联网时代[编辑]

1990年代未见到有什么重大的创新,大多都是以前构想的重组或变化。这段期间主要在推动的哲学是提升程序员的生产力。许多"快速应用程序开发" (RAD) 语言也应运而生,这些语言大多都有相应的集成开发环境垃圾回收等机制,且大多是先前语言的派生语言。这类型的语言也大多是面向对象的编程语言,包含有Object PascalVisual Basic,以及C#Java则是更加保守的语言,也具备垃圾回收机制。与其他类似语言相比,也受到更多的观注。新的脚本语言则比RAD语言更新更好。这种语言并非直接从其他语言派生,而且新的语法更加开放地(liberal)与功能契合。虽然脚本语言比RAD语言来的更有生产力,但大多会有因为小程序较为简单,但是大型程序则难以使用脚本语言撰写并维护的顾虑[来源请求]。尽管如此,脚本语言还是网络层面的应用上大放异彩。

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

现今的趋势[编辑]

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

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

编程语言发展史上的杰出人物[编辑]

参阅[编辑]

参考文献[编辑]

  1. 跳转^ Truesdell, Leon E. The Development of Punch Card Tabulation in the Bureau of the Census: 1890-1940. US GPO. 1965.
  2. 跳转^ J. Fuegi and J. Francis, Lovelace & Babbage and the creation of the 1843 'notes'., Annals of the History of Computing, October–December 2003, 25 (4): 19, 25, doi:10.1109/MAHC.2003.1253887

延伸阅读[编辑]

  • Sammet, Jean E., "Programming Languages: History and Fundamentals" Prentice-Hall, 1969

外部链接[编辑]

分类

 

 

 

转载于:https://my.oschina.net/u/3127489/blog/892301

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值