计算机科学经典论文

JaoProgramming Musing 看到的:Babar Kazar 整理了一堆经典论文Jao强烈建议每个严肃的程序员读每篇论文,说它们都或多或少有意思。粗粗扫了一下,很多论文都没读过。挑了些俺多少知道一点的介绍。

·  An axiomatic basis for computer programming C. A. R. Hoare
Tony Hoare
名下的公理化语义( Axiomatic Semantics )。著名的 Hoare Triples, P{C}Q, 就是从这里来的。论文不长,双列 6 页。前辈们就是这样的, 6 页纸就能开宗立派。不像俺, 6 页纸连介绍部分都写不周全。哪位老大想知道怎么证明程序正确。前置条件,不变条件,后置条件的妙用,可以用这篇论文开牙。
·  Communicating Sequential Processes (CSP) C. A. R. Hoare
Hoare,
又见 Hoare 。其实也正常。牛人之牛,就在于成就深广。链接的文档应该不算论文,而算专著。 260 页。从 1985 年推出到现在 20 多年过去,这本书的引用率在 CS 历史上排名第三,可见其影响之深。对并发编程有强烈兴趣的老大可以去钻研一把。我没读过。
·  Call-by-name, call-by-value, and the lambda calculus Gordon Plotkin
没读过。只见 LtU 介绍过。 Gordon 老大这篇论文的要点之一是要想顺利地对程序进行推导,就需要有合适的 lambda 理论。想深入理解 call-by-name call-by-value ,和 lambda 算子的老大们可以上了。
·  Towards a theory of type structure John C. Reynolds
号称经典中的经典。不过也没读过。类型系统一直是编程语言研发的热点,也是非常有趣的方向 ―― 类型系统的编程好比让机器证明一系列定理。 Reynolds 在论文里讨论了什么才是正确的类型结构,和句法正确必须独立于任何具体的类型表达形式,并且给出了带类型的 lambda 算子的一种扩展,允许他描述用户自定义类型和多态函数。满篇公式,有勇气去读的老大要有心理准备。
·  Structured Programming with go to Statements Donald E. Knuth
这篇论文详细结构化编程时讨论了什么时候用 goto ,什么时候不用 goto 。高爷爷精细务实的态度非常值得学习。高老太爷用了一辈子 goto(MIX MMIX 程序里没了 Goto 怎么玩儿得转嗫? ) ,岂能轻易被 Dijkstra goto 的批评吓退?他仔细探讨了几种不同的程序,考察 goto 用在那些程序里的利弊。最后得出结论, goto 在某些程序里仍然高效实用。虽然论文是 30 年前的,但里面的分析手法和利用 goto 的优化技术至今可用。
·  Definitional interpreters for higher-order programming languages John C. Reynolds
这篇文章俺喜欢。 ”Metacircular” 这个性感的概念就是在这篇论文里首次提出的。想深入了解用一门语言写出的解释器定义这门语言自身的神奇理念,这篇论文是必读材料。有兴趣的老大可以先读 SICP 的第四章。
·  An APL Machine 1970 Philip S. Abrams
只知道 APL 是门有历史意义的语言。顺便说一句, APL 这个名字太土了。 A Programming Language == APL 。象什么话嘛。

·  The Anatomy of a Large-Scale Hypertextual Web Search Engine Sergey Brin and Lawrence Page
网络是个大的矩阵 (transition probability matrix of Markov Chain) 。网页的声誉 (page rank) 就是这个巨大矩阵的 principle eigenvector 的某个元素。嗯,反正我只有佩服的份儿。
·  No Silver Bullet: Essence and Accidents of Software Engineering Frederic P. Brooks, Jr.
地球银都知道。不用俺多嘴了。
·  A Mathematical Theory of Communication Claude Shannon
Bell
实验室当年辉煌一时。出了名的叫人做 A ,结果发明了 B 。香农老大就是其中杰出代表。香农进了 Bell 实验室后,居然没人吩咐他干嘛。香农老大转念一想,自己喜欢数学, Bell 的生意尽在通讯,干嘛不看看把数学应用到通讯上有什么结果呢?于是 1948 年这篇论文问世乐。搞通讯的人崩溃乐。现代信息理论就诞生乐。
·  Bayesian Networks without Tears
贝叶斯理论热了好几年了。估计还会继续热下去。现在信息越来越多,我们已经审美疲劳。大家渴望的不是信息,而是知识。靠个人的力量把信息提炼成知识太慢,我们需要机器的帮忙。机器学习不热都难,而贝叶斯理论在机器学习里有很好的应用。这篇文章行为浅显,可以轻松读完。对了,那个人人喝骂的微软回形针的智能引擎就是用贝叶斯网络实现的。
·  A Universal Algorithm for Sequential Data Compression
没读过。无耻地找个借口:我们系开信息理论课的时候,俺刚好毕业。
·  A Relational Model of Data for Large Shared Data Banks 1970 Edgar F. Codd
没有关系代数,人类将会怎样? Codd 划时代的论文奠定了现代数据库的基础。嘿嘿,其实俺也没有读过这篇论文。顺便说一句,现在的 ORM 试图把 data schema 和对象系统映射起来。问题是, data schema 只是对关系的一种表达方式而已,还和具体的系统实现有关。也许把对象间的结构和关系映射起来才是正道。
·  Let's Build a Compiler 1988-1995
教你一步一步写出一坨编译器。不算论文吧。一篇相当不错的指南。
·  Worse Is Better Richard P. Gabriel
网上脍炙人口的文章。很有教育意义。简单说, worse is better 包括下面几点:
--
简单:设计要简单。但如果接口和实现不能两全,追求实现的简单。文章里给出的 Unix vs Multics 的例子非常有意思。
--
正确:程序必须在所有可见的方面正确。其它地方,如果简单和正确不能两全,追求简单。
--
一致性:程序不能太不一致。但为了简单,可以在少数地方不一致。
--
完备性:程序应该尽可能照顾到重要的地方,但是不能牺牲简洁。
强烈推荐。
·  Hints on Programming Language Design C.A.R. Hoare
Hoare
对设计语言的经验总结。这些经验至今有效。文章很容易读,读后绝对增长程序设计的功力。
·  Why Functional Programming Matters John Hughes
为普通程序员准备的大餐,所以写得通俗。没有公式,也没有拗口的术语。着重展示了 Fold Map 的强大抽象能力。不由想到我在大学里修的一门课,编程语言。课是好课,老师是一流老师。课上我们学习了浅显的程序语言理论,重点学习了函数编程(用 Common Lisp )和逻辑编程(用 Prolog )。这门课彻底改变我对编程的理解,明白了 imperative programming OO programming 外还有精彩世界。至今想来都觉得幸运。那门课的作业也很有意思,实现一个驻留内存的数据库,支持关系代数里的常见操作。
·  On the Expressive Power of Programming Languages Matthias Felleisen
没读过。待读。
·  The Early History Of Smalltalk Alan Kay
还有什么好说的呢? Alan Kay 这个名字说明一切。 30 年前 Alan Kay 就做出来 Smalltalk ,现在想来仍然让人惊叹。引一段文章 Alan Kay 评述 Smalltalk 的话: In computer terms, Smalltalk is a recursion on the notion of computer itself. Instead of dividing "computer stuff" into things each less strong than the whole--like data structures, procedures, and functions which are the usual paraphernalia of programming languages--each Smalltalk object is a recursion on the entire possibilities of the computer. Thus its semantics are a bit like having thousands and thousands of computer all hooked together by a very fast network. Questions of concrete representation can thus be postponed almost indefinitely because we are mainly concerned that the computers behave appropriately, and are interested in particular strategies only if the results are off or come back too slowly.
·  Computer Programming as an Art Donald E. Knuth
高老太爷在 1974 年图灵奖仪式上的致词。真是顶尖 geek 的风范啊。高太爷在文章里解释了问什么他的书取名为《编程的艺术》。明显他对人们谈到编程时把科学置于艺术之上很不了然。高爷爷追溯“艺术”的词源,说艺术的本意就是技能,也是技术和技巧两次的起源。从这里开始,他开始讨论艺术和科学的关联,讨论艺术在编程里的表现形式和意义。用他的话说,他作为教育者和作者的毕生目标就是叫人写美妙的程序。读起来让人心潮彭湃的说。
·  The next 700 programming languages Peter J. Landin
42
年前的论文,影响深远。 Peter 在论文里描述的函数语言 ISWIM If You See What I Mean )现在没有几个人知道了。但他对 lambda 算子的推崇和对函数语言的论述影响了后来的函数语言设计。
·  Recursive Functions of Symbolic Expressions and their Computation by Machine (Part I) 1960 John McCarthy
47
年前提出 LISP 的那篇著名论文。没读过。动态类型检查, Garbage Collection, 递归函数, S-expression,  程序及数据。。。可谓贡献辉煌。

·  FORTH - A Language for Interactive Computing Charles H.Moore
只知道 Forth 是一门 stack oriented 的编程语言,影响了后来的一些语言,比如 CAT 。其它的就不知道了。
·  Teach Yourself Programming in Ten Years 2001 Peter Norvig
大牛之所以为大牛,原因之一就是目光深远。这篇文章批评那些《 24 秒学会 C ++》之类教材的无稽,讨论了学习编程,从菜鸟变成鲲鹏的方法。中文版已经传得满世界都是,赶快找来看吧。 Peter Norvig 的网站上还有很多高质量的文章。强烈推荐一读。
·  The Definition and Implementation of a Computer Language based on constraints Guy Lewis Steele Jr.
好像是 Guy Steels 的硕士论文。没读过。
·  Growing a Language Guy Lewis Steele Jr.
好文! G 老大在 OOPSLA 98 上的主题演讲。 G 老大主张应该采取渐进的方式设计一门可以被自由扩展的语言( LISP 圈子里的牛人们多半都持这种观点吧?)。这篇演讲稿针对该观点做了精练地论述。说起进化的观点,可以参看另外一篇好文章, SICP 作者之一, Jay Sussman的近作
·  Epigrams on Programming Alan J. Perlis
A
老大发表的一系列关于编程的格言。幽默而深刻。每读必笑。笑后必哭。嗯嗯嗯,夸张一下。不要当真。
·  The Complexity of Theorem Proving Procedures Stephen A. Cook
仙风道骨的库克爷爷的成名作。这篇文章一出,好比有人在加州荒漠里发现第一块狗头金,立刻掀起开发加州的狂潮。计算复杂性理论迅速遍地开花。相比这篇论文开创性的贡献,库克因此得到图灵奖不过小小点缀。 NP-Complete 在这篇论文里被严格定义。更重要的是,库克证明了第一个 NP-Complete 的问题, SAT(Boolean Satisfiability Problem) 。有了 SAT ,再加上折磨了无数学生的 Polynomial Reducibility 无数的 NPC 问题就出现乐。。。别看俺在这里唾沫横飞,当年做有关计算理论的证明题还是相当吃力的,没有少熬夜。奇怪的是,某一天我给同学讲解我的解法, NPC 的相关定义突然变得清晰起来。当初让我绞尽脑汁的证明竟然变得相当机械。后来知道,给人讲解(包括写作)是非常有效地学习方法。怀着备课的目标读文章,假设自己给别人讲解正在读的文章,有助快速理解所读内容。SAT的证明相当复杂,我反正没有耐心读完。
·  Steps Toward Artificial Intelligence Marvin Minsky
AI
的奠基论文。不过我没读过。
·  The Original 'Lambda Papers' Guy Steele and Gerald Sussman
一系列讲解 lambda 算子和 scheme 设计的经典论文。学 scheme 时读过,对理解 scheme 的设计理念很有帮助。

·  The UNIX Time-Sharing System Dennis Ritchie and Ken Thompson
作者不用介绍了吧?这篇文章里介绍的 Unix 特性早为人熟知。不过第八部分 (VIII Perspective) 讨论了作者的设计理念,仍然值得一读。
  • 6
    点赞
  • 14
    收藏
  • 打赏
    打赏
  • 7
    评论
一、引言 根据IEEE的描述,局域网LAN(Local Area Network)技术是“把分散在一个建筑物或相邻建筑物中的计算机、终端、带大容量存储器的外围设备、控制器、显示器、以及为连接其他网络而使用的网络连接器等相互连接起来,以很高速度进行通信的手段”。显而易见,从物理意义上说,校园网络就是一种局域网。 中小学校园网络作为一种在中小学应用的局域网,有其特定含义和应用范畴,概括起来有四个方面的典型应用:第一,校园网是为学生学习活动服务的,是一种学习工具。她不但是学生与他人之间的交流工具,同时也是学习资源的提供者,有利于学生进行探索学习和协作学习。第二,校园网是为教师的教学和科研活动服务的,如提供教学资源、辅助教师备课,参与课堂教学活动和支持教师再学习活动等。第三,校园网是为学校教育教学管理服务的,如辅助学校的学生学籍管理、人事管理、财务管理等。第四,校园网是沟通学校与外面的窗口,利用她既可以从校外获取各种信息,也可以向外发布各种信息。综上所述,我们可以将校园网定义为:一种为学校学习活动、教学活动、科研活动和管理活动服务的校园内局域网络环境。且它是建构在多媒体技术和现代网络技术之上并与因特网连接的。 对于校园网建设来说,其应用是目的,网络环境是基础,网络教学资源是核心,而人员培训与网络维护是保障,如图1所示。评价一个校园网的成功与否,可从下面四个环节(以下简称校园网络四要素)来考虑:网络环境建设、网络畅通保障机制、网络教学资源和网络应用。因此,一个学校在设计校园网时,也应从这四个环节去考虑,缺一不可。而传统的网络建设只是指网络环境建设这一个环节,忽视了其它几个环节。 目前,校园网的建设与应用被越来越多的中小学视为实现教学改革,提高教学质量以适应时代对人才培养需求的关键。然而,很多中小学对校园网建设的规划不完整,仅停留在底层的硬件环境阶段,所以难免造成今天我们看见的种种问题。如: · 重视硬件投入,轻视软件资源建设。据有关调查显示,大部分的计算机教育资金投资在计算机硬件环境上,软件的资金投入远远低于计算机硬件的投入,而教师培训的资金投入更是微乎其微。不少学校在网络硬件设施上不惜花费上百万、上千万,在各种软件资源(如网上教学平台、学校业务管理系统、各种多媒体教学课件、信息数据库等)的建设上却不肯花钱,造成软件资源的严重缺乏。 · 大多数中小学教师的计算机水平不合要求。据有关调查表明,学科教师中从未获得过计算机知识的占总人数的约60%以上,而能够在学科教学中开展计算机辅助教学的比例更小。 · 缺乏网络专业技术人员。由于网络技术属于高新技术,掌握这一技术的人员还远不能满足社会需要,因此学校中缺乏网络专业技术人员来维护网络。校园网建成却无法保障它的正常使用。 · 校园网的使用效率低下。由于对软件资源建设和教师计算机技术培训的忽视,建成的校园网设备闲置,没人用,也没资源可用,计算机只作为普通的文字处理工具。校园网根本就是一种摆设,没有充分发挥其应有的作用,使用效率极低。 本文从校园网络环境建设、校园网络保障体系、教学资源和校园网络应用等四个环节来探讨校园网络建设策略。其目的是:第一,在宏观上把握正确的校园网络建设方向,制定行之有效的建网、护网和用网的实施方案;第二,在微观上切实保证校园网的顺利建成并发挥其应有的作用,实现促进教学改革、培养信息社会所需人才的最终目标。二、中小学校园网络的基本框架 根据中小学校园网络的四类典型应用即可确定中小学校园网的基本框架,如图2所示。它是一个由若干个多功能教室、若干个计算机网络教室、一个虚拟图书馆、一个办公网、一个信息中心和一些其他应用构成的局域网络系统,并通过一个边界路由器与因特网相连。由图2可见,校园网不是一个自运作和自封闭的系统,也不是一个对因特网完全开放的系统,而是一个在与外界交流信息过程中保持相对独立的网络系统。其中学校办公网、虚拟图书馆、电子备课室和计算机网络教室等一般各自为一小型局域网,由一台(或多台)服务器与若干台微机工作站组成。 二.小学校园网络基本框架中 · 虚拟图书馆 将大量的图书资料以数字化的形式存储在资源服务器上,或通过Video服务器提供各种多媒体信息资源。学生与教师通过计算机网络可以方便的对资料进行查询、检索和使用。 · 电子备课室 为教师提供利用网络资源和各种工具进行课程设计与开发的环境。它由采集压缩系统、图像处理系统、光盘制作系统、教师备课系统、服务器和若干台多媒体计算机组成。 · 学校办公网 通过在校园网上运行的综合信息管理系统,学校的教学管理和日常的管理实现办公自动化,如学生学籍管理、课程安排、人事管理、财务管理、固定资产管理等,同时可在网上进行信息发布。 · 其他应用 如校园卡系统,利用校园网和智能卡(IC卡)技术,形成学校内部完整的校园卡系统,通过一张IC卡,可以作为学生证、上机证、借书证、电话卡、就餐卡等,使学校全面实现电子信息化管理。 另外,边界路由器是整个校园网的“门卫”,它负责校园网的安全。它的“过滤”功能只允许那些“干净”、合格的信息自由出入校园网。它既是校园网与因特网沟通的桥梁,也是校外教师和学生远程接入的通道。通过它教师和学生在家中也可以进行信息交流、工作和学习。 三、校园网络规划的策略

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论 7

打赏作者

g9yuayon

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值