《编程语言介绍.pdf》由会员分享,可在线阅读,更多相关《编程语言介绍.pdf(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 本文由2008146683贡献 d o c 1。编程语言介绍 目录 隐藏 1 开放源代码的必要性 2 各种语言的选择 3 各种语言的选择 4 我为什么选择了 Py t h o n 5 Ru b y 和 Py t h o n 的比较 51 Py t h o n 和 Ru b y 的相同点 52 和 Py t h o n 相比 Ru b y 的优点 53 和 Py t h o n 相比 Ru b y 的不足 54 Py t ho n 和 Ru b y 的语言的选择 6 多脚本语言的大统一及疑问 7 NET 介绍 71 NET 所实现的 Ja v a 的功能 72 NET 未实现的 Ja v a
2、功能 73 NET 实现的 Ja v a 不具备的功能 74 相对 v s 6 的改进 8 XML 各种技术介绍 9 最先进的 XML 格式图形界面程序开发工具XUL 10 最接近人类语言的编程语言REBOL 11 最具有现代感的 Li s p 解释器 Dr Sc h e m e 12 e i f f e l 语言印象 13 m o z a r t o z 语言 14 各种语言的选择和语言之间的关系 141 一般是使用什么软件,就用什么软件的语言 142 然后看处理什么样类型的数据 143 从语言特点来说 144 C 语言是最普及的语言,但 C 语言有一些缺点,因此,就产生了很多改进 C 的语
3、言 145 关于图形用户界面的选择 146 d i s c u s s 15 文学编程和 CWEB 介绍 16 贡献 编辑 开放源代码的必要性 在介绍编程语言之前,先说说开放源代码的必要性。现在,在软件生产领域存在巨大的智力浪费,大 家把大量的精力用在编写别人已经实现的程序代码上。看看,文本编辑器有多少,看看 f t p 程序有多少,看看字处理程序有多少,这些程序虽然有差别,但主要的功能都是一样的。要实现个性化的功能,在已有 的软件基础上修改会节省多少时间呀!而每个程序各编一套,又浪费多少时间?如果,没有这些重复的工 作量,世界上的程序员至少可以节省 80%的工作量。同时,开放源代码也方便了大
4、家的交流,阅读源代码 应该是最直接最有效的学习途径,尤其是比较专业的领域。要开放源代码,下面几点比较重要:语言要流行。语言的函数和类库统一。语言的语法和编译器要统一。编译器是否开放源代码。API 是否开放源代码。语言的可重用性、功能、友好性。语言统一:如果大家都用一种编程语言,都用同样的函数,同样的类库,那么,大家的共同语言就会 很多。大家只要学会一种语言,一套函数,一套类库,就可以相互读懂源代码,这样,学习量是最少的;但是语言统一根本是不可能的事,因为各种语言都有其特色,如果取了其中一个优点,通常就会牺牲另一 个优点。可是学习新的 API 浪费程序员大量的时间和精力,尤其是当这个 API 有
5、大量和其他 API 重复的功 能的时候。要增加代码的可重用性,要从下面几点着手:代码的可读性。如格式、是否接近英语语法和单词。代码的表达能力,也就是简单性,能用最少的语句和单词实现同样的功能。代码的结构性,如函数、模块、类。语言功能的强大从下面几点来说:是否拥有大量的库支持。这是最重要的,要求编写任何功能的程序都有强大的库支持。语法功能是否强大,比如是否有出错处理。是否有指针。语言的友好性:语言包的大小,语言包越小,学习越简单。语言是否有友好的编辑调试环境。语言的可视化和集成编程环境。编辑 各种语言的选择 如果编写对性能要求苛刻,或和操作系统结合紧密的程序,必然选择 C。如果编写到处可用的程序
6、,选 Ja v a。如果编写大程序,可能的话尽量用脚本语言如 Py t h o n、Ru b y,不行了再用 Ja v a 和 C。因为脚本语 言带来了生产力。编写文本的处理程序用 Pe r l 或 Ru b y。编写知识的处理程序用 p r o l o g。编写最灵活,最模糊的程序用 Li s p。编写 o f f i c e 程序用 v b a。编写服务器端程序,PHP、(采用自己熟悉的语言来写,例如 Pe r l、Py th o n、Ru b y)CGI、ASP、(熟悉 Ja v a 就用)JSP 都是选择。编写数据库程序用 v b、Po w e r Bu i l e r 或 d e l
7、 p h i。进行算法研究、设计,用 Pa s c a l。编辑 各种语言的选择 如果要追求性能和程序的能力,要完全发挥操作系统的能力,使用 C/C语言是合适的。Wi n d o w s 在 环境下用 VC,在 Un i x l i k e 环境下用 g c c。如果不是追求和操作系统完美结合,而只是性能,又要追求跨平台性,那么仍然选择 C,但可以选择 跨平台的库,如 q t、g t k、f o x、w x Wi d g e t s。如果要编写游戏也有跨平台选择:SDL。如果不满意 C 领域标准的不统一,不满意 C 的容易出错,不满意 C 的面向对象特征不彻底。如果不在 乎跨平台,Wi n d
8、 o w s 平台可以选择 C#,m a c 平台可以选择 Co c o a (Ob j e c t i v e C)。如果需要跨平 台,可以选择 Ja v a。如果需要跨平台,又要广泛的支持的话,选择 Ja v a。在 Un i x l i k e 下,最方便的工具语言是 Pe rp a g e 1l,它有强大的社区和代码库的支持。如果只作为简单应用的工具语言,Py t h o n 和 Ru b y 是更好的选择,他们的跨平台移植性好,应用也 比较广泛。其中 Py t h o n 更适合入门和交流,长期使用也不错。Ru b y 是对 Py t h o n 不满意的另一个选择,它提供了很多额外
9、的功能。如果要选择一个程序的嵌入语言,原来有 Li s p、Ba s i c 和 Ja v a,现在还可以选择 Py t h o n 和 Ru by。如果在要求动态解释执行语言,而又不想学其他语言的话,C 程序员的选择是 pi k e,Ja v a 程序员的 选择是 b e a n s h e l l。在 Ja v a 平台,又想用脚本语言的话,可以用 Py t h o n。最正统的基于文档的语言或叫动态页面语言是 Ja v a Sc r i p t。最专门的服务器端语言是 PHP,当然也有很多其他选择。XML 语言以 XUL 为最着名,d t m l 也算一个,你自己也可以用 XML 作为自
10、己特殊用途的语言。比如 j e d i t 就用 XML 作为一种模式定制语言。XML 语言是一种比较先进的趋势,比现有的语言在特殊领域更高 效。要找容易实现的语言,Li s p 和 Tc l 是选择。Li s p 的数据和程序融为一体的能力和自由是其他语言都没有的。现在出现了一个 Li s p 的现代化的变 种:REBOL。如果有基于事实的编程的需要的话,p r o l o g 和 Cl i p s 是必然。编辑 我为什么选择了 Py t h o n 首先声明,我编程只编应用程序,就是代替自己工作的小程序。如果编写系统程序总会用到 C 或 Ja v a 的。我喜欢脚本语言,脚本语言不用编译就
11、可以运行,非常便于修改,而编程序是一种经常性的活动,程 序编完后总在不断的修改中,没必要搞的很隆重,还要编译。另外,脚本程序每个使用的人都可以随手拿 来修改,不会出现还要去找源代码的情况。因此,C/C和 Ja v a 就被排除了。我喜欢简单的语言,不喜欢为了编写简单的程序而去学习大量复杂的规定,需要大量的学习才会的语 言不是好语言,是把人当机器看。C/C和 Ja v a 都有严格但罗索的语法,有永远学不完的函数、类、库。让人看到就头大。而 Pe r l 有各种怪里怪气的速记符号,程序常常让人头晕。简单的含义除了容易学,还要 功能丰富,常用到的东西要早就准备好,不用每个人都去写同样的数据结构程序
12、等。Py t h o n 有丰富的数 据类型,有完备的面向对象的结构,有规则表达式等各种方便编程的模块。这个逻辑就是程序做的多,人 做的就少,如果程序做的少,就要人做的多。这就是界面友好的问题。容易上手,功能丰富是程序设计的 很重要的目标,Wi n d o w s 就是靠这个流行的。Py t h o n 也很好的体现了这点。Pe r l 象 Un i x 的 e m a Cs 而 而 之类其它工具一样,功能强大,但太难学,太难懂。是比较违背人性的。关于性能。现在 Cp u 已经很强大了。除了很大的程序和系统程序,没必要关心性能。关于功能。如果不是编写系统程序和贴近系统的程序,没必要使用操作系统
13、特别提供的功能。C 是可 以干任何事情,但它编程效率低,复杂。至于我为什么不用 v b,因为 v b 太庞大了。我没必要实现一个小功能启动这么庞大的程序。太夸张。另外,v b 没有类继承,虽然是应用编程,但如果要编稍微大的程序,总会用到类继承的。Py t h o n 得强大得扩展能力使对 Py t h o n 得学习不会浪费。Py t h o n 经过简单得处理能使用各种得 C 和 C库,也可以被 C 和 C调用。Py t h o n 可以直接使用 Ja v a 得类,也可以直接被 Ja v a 调用。这样,对 Py t h o n、Ja v a、C 得学习和使用经验都不会被浪费,还能相互补充
14、。Pyt h o n 可以提高 Ja v a 和 C 得编 程效率,Ja v a 和 C 可以补充 Py t h o n 功能上得不足。Py t h o n 还可以和 Tc l 直接交互,这种功能是内置得。期待 Py t h o n 能简单的调用 Pe r l 和 PHP 得功能。能使用 Li s p 和 p r o l o g 更好。编辑 Ru b y 和 Py t h on 的比较 编辑 Py t h o n 和 Ru b y 的相同点 都强调语法简单,都具有更一般的表达方式。Py t h o n 是缩进,Ru b y 是类 Ba s i c 的表达。都大量减少 了符号。都是动态数据类型。
15、都是有丰富的数据结构。都具有 C 语言扩展能力,都具有可移植性,比 Pe r l 的可移植性更好。也都可以作为嵌入语言。都是面向对象的语言,都可以作为大项目的开发工具。都有丰富的库支持。也有最宽松的版权许可,除了一些工具属于 GNU 世界。都有 Li s p 特色的 e v a l 函数,也都能把函数作为参数。也有图形界面的 Ru b y 的专门编辑器。都获得了广泛的 C 库的支持。如 q t、g tk、t k、SDL、FOX 等,Ru b y 计划实现 SWIG 接口。都有完善的文档。编辑 和 Py t h o n 相比 Ru b y 的优点 具有正则表达式和嵌入 HTML 的功能。Py t
16、 h o n 也有正则表达式,但没有 Ru b y 的应用方便和广泛。Py t h o n 的嵌入 HTML 项目才刚起步。Ru b y 还有 a p a Ch e 的 m o d 模块。Ru b y 本身也实现和很多 Un i x 工具,如 r a CC,d o Ct o ol s。比 Py t h o n 更亲近 Li n u x。比 Py t h o n 功能更完整的面向对象的语法。Ru b y 的p a g e 2整个库都是具有类继承的结构。他的基本的数据类型和运算符都是可以重载的。Rub y 主要的功能都是通过对象的方法调用来实现的,而不是函数。Py t h o n 也在向这方面发展
17、,但没 有 Ru b y 做的彻底。Ru b y 的类是更规范的单继承,还有接口等概念的实现。Py t h o n 可以实现在列表内的条件语句、循环语句,Ru b y 用“块”的方式来实现这个功能,Py t h o n 而 比 的更灵活,更具有通用性。Ru b y 具有类似 Li s p 的彻底的函数方式的条件语句、循环语句等。语句的表达能力更强。附带一些 Un i x 工具,如 r a CC 等。编辑 和 Py t h o n 相比 Ru b y 的不足 最大的不足正是因为 Ru b y 的强大所引起的。它没有 Py t h o n 的简单性好。比较复杂的面向对象语法、“块”语法的引入、正则
18、表达式的引入、一些简写标记都增加了语言的复杂性。Py t h o n 的缩进表达方式比 Ru b y 的 Ba s i c 的表达方式更让人悦目,Ru b y 程序的满眼的 e n d 让人不 舒服。当然,Ru b y 认为 e n d 的方式比 Py t h o n 更先进。Ru b y 还没有 Py t h o n 的“自省”的能力,没有从程序文件中生成文档的能力。Ru b y 支持不及 Py t h o n 广。国际化支持在 Ru b y 的计划中。这是因为 Ru b y 的历史比 Py t h o n 要短 造成的。编辑 Py t h o n 和 Ru b y 的语言的选择 从简单的就
19、是好的来说,Py t h o n 是没错的。选 Py t h o n 适合寻找简单语言的人,这很可能造成 Py t h o n 更流行,因此也有更多的支持。但如果要追求更强大的语法功能,对编程语言感兴趣,想了解各种编程概 念的人,则 Ru b y 是好的选择。Ru b y 和 Py t h o n 都想取代 Pe r l,解决 Pe r l 的缺点面向对象不足,但 Py t h o n 用是方法是混合面向对象和程序式的程式语言,Ru b y 是允许自己这个面向对象语言扮成程序式的 程式语言,编辑 多脚本语言的大统一及疑问 现在各种脚本语言太多了,有必要进行整合,p a r r o t 是一个好
20、的想法。NET 也是好的想法。它为各 种脚本提供了一个统一的虚机,为各种脚本语言提供了基于“类”的相互调用,为各种脚本提供了统一的类 库。现在各种脚本语言只是提供了对 C 语言的交互性,这种交互也是费劲的和效果不好的。比如 Py t h o n、Pe r l、Ru by 等都提供了对 C 的交互功能。脚本语言之间的交流障碍重重。而类似NET 的东西,提供了 非常容易的各种脚本的相互利用的途径,避免了很多的代码的重复编写。这种标准平台的力量是很大的,这种标准平台为什么没有在开源领域首先出现呢?众多的脚本正是开源的特点和优势,为什么这种问题要 微软来解决呢?前面有人提出了类似的问题,在 Li n
21、u x 中为什么至今没有好用的类似 ODBC 的东西呢?可能这种整合只有商业公司有能力实现吧。我的理解是,如果有创新思想的人都拿他的想法去卖钱了,因此,在开源中只剩下了模仿的人。k d e 是模仿 Wi n d o w s,k o f f i c e 是模仿 o f f i c e,Li n u x 是模仿 Un i x,g c c、b a s h 等也全都是模仿,以及 g s t e p 等,还有 f r e e d o s、a t h e o s 等也是模仿,w x Wi n d o w s、SDL 也是模仿。我想知道开源社区有没有自己 的创新?我所知道的创新是 z o p e,但 z o
22、 p e 最初也是商业产品,后来才开源的。Pe r l 是创新,Py t h o n 是 创新,但还有什么呢?是不是开源领域只有 h a c k e r,没有 Cr e a t o r?编辑 NET 介绍 编辑 NET 所实现的 Ja v a 的功能 可控代码 跨平台的虚机和伪码 免费赠送命令行编译器 纯面向对象语言 对 XML 和 XML w e b s e r v i Ce s 的支持 和 j s p 对应的 a s p NET 网页上的程序 一套统一的中间件环境。a s p NET 跟 j s p 不是同一个层次上的 w e b 技术,a s p NET 使用完善的事件响应机制,Wi n
23、 Fo r m s 类似的 We bFo r m 技术,只有 JSF 跟 As p NET 有可比性。编辑 NET 未实现的 Ja v a 功能 免费的集成开发环境 多厂家支持,跨平台的成熟度 免费的 IDE,#d e v e l o p ,ASPNET 的有 MS 的 We b Ma t r i x 而免费开源的 CLR 实现,有 MS 自己的 XP,Fr e e BSD,Ma c OS 下的 实现(原理演示不能进行商业应用),No v e l l 下的 Mo n o 项目,已经发布了 Be t a 1 版本,在 2004630 将会发布 Re l e a s e 1;还有 GNU 的一个N
24、ET 实现!编辑 NET 实现的 Ja v a 不具备的功能 多语言支持 强大的集成开发环境。在 Wi n d o w s 上媲美本机程序的速度。对 COM 的支持,对 v s 的继承 对 w i d o w s f o r m 、w e b f o r m、服务器端程序的图形直观编程。编辑 相对 v s 6 的改进 统一了集成开发环境,使 C程序也具有了 v b 的友好性。编辑 XML 各种技术介绍 XML:XML 是统一格式的结构化数据的文本文件。基于 XML 的程序,数据结构是开放的,方便不同程序处理同一种文件,这样,程序之间可以达到高水 平的协作。XML 现在成为了各行各业统一数据格式
25、的基础。XML 发展出了完善的语法,它用 DTD 或 XMLs c h e m e 来界定 XML 的标记语言。用 u r i 来唯一确定 一个 XML 格式。用p a g e 3 Cs s 或 XLT 来转换 XML 格式,x l i n k 和 x p o i n t e r 等来建立 XML 的链接,用 x p at h 来定位 XML 中的数据。x HTML:是严格符合 XML 格式的 HTML。RDF:基于 XML 的元数据描述语言。方便交换结构化数据。方便交换知识。RDF 是用主语、谓语、宾语来描述知识的。SVG:XML 格式的矢量图形格式。SMILE:XML 格式的各种多媒体在时
26、间线上的协同。x m a t h:XML 格式的公式描述语言。XMLr p C 和 s o a p:以 h t t p 协议和 XML 格式来进行网络程序之间的消息通讯。XUL:n e t s Ca p e 的 m a z i l l a 使用的程序界面语言,基于 XML 格式,比 HTML 强大的多的描述图形界面的 XML 语言。它用 Cs s 来换肤,用 DTD 来实现多语言界面,用 Ja v a s Cr i p t 来实现程序逻辑,以此编写跨 平台的可方便定制界面的程序,现在这个程序 API 功能已经很强大了,整个 m a z i l l a 程序就是基于 XUL 的。x a m l:
27、MS 在 Lo n g Ho r n 平台的最新编程语言,将统一 Wi n d o w s 与 We b 编程,直接使用 Lo ng Ho r n 下的 浏览器进行执行,跟 XUL 有类比性 编辑 最先进的 XML 格式图形界面程序开发工具XUL 大家知道 n e t s Ca p e 程序,一个仅次于 i e 得浏览器,也有很多人知道 Mo z i l l a,n e t s Ca p e 得开放源 代码版本。但很多人只是使用 Mo z i l l a,不知道 Mo z i l l a 另一个重要得功能程序开发。在 n e t s Ca p e 开放源代码后三年 Moz i l l a 得
28、1。0 版还没有问世,很多人讥笑他的超慢得开发速度,实际上,Mo z i l l a 酝 酿出了一个超酷得新产品,可以看作是软件开发工具发展得另一个里程碑。现在基于浏览器得三层开发结构非常流行,微软的NET 的思路就是基于这个结构得。另外,不考虑 服务器结构,就是基于网页得 Ja v a Sc r i p t 小程序也对人很有吸引力,这些产品得思路都是以 HTML 为用 户界面,但开发人员常常苦恼于 HTML 太简陋。而 Mo z i l l a 得 XUL 解决了这个问题。XUL 是对 HTML 的扩展,完全兼容于 HTML,XUL 基于 XML 格式对 HTML 进行了扩展,实现了完整、强
29、大得图形用户界面设计功能。可以设计出复杂得图形界面程序。实际上 m a z i l l a 整个就是由 XUL 设计的。XUL 用 Cs s 来控制界面风格、用 DTD 来替代字符串,方便的实现本地化,用 Ja v as Cr i p t 来对用户界面 的操作作出反应,提供基本的逻辑编程,Ja v a Sc r i p t 通过对象文档接口 DOM 来动态控制用户界面。同时 Ja v a s Cr i p t 通过调用 Mo z i l l a 提供的丰富的底层 API 来实现强大的功能。Mo z i l l a 提供了功能强大的 API 可以进行文件操作、网络操作、图形操作等各种操作,并且这
30、种 API 是完全跨平台的。最后,Mo z i ll a 用 RDF 格式来存储独立于界面的数据。总结:XUL 由于兼容 HTML,提供了最强大的用户界面的定制,DTD 提供了最方便的本地化。XUL、Ja v a s Cr i p t、RDF 提供了显示、逻辑、数据的分离。Mo z i l l a 的底层 API 提供了跨平台的强大编程能力。希望大家都来关心 Mo z i l l a。编辑 最接近人类语言的编程语言REBOL REBOL 的详细资料见 w w w REBOLo r g。这里谈一下我的印象。REBOL 的缺点是明显的。它是一个商业公司的产品。它只是象 Ja v a 一样免费使用。
31、但不开放源代码。并且它的数据库连接的函数库是收费的。但它的优点也十分明显,如果因为不是开放源代码软件而不能放 心使用,也可以欣赏和借鉴它的种种特点,并且了解了 REBOL 肯定还会忍不住使用它。首先 REBOL 是一个 Li s p 语言的替代品,它能实现 Li s p 的所有能力。他具有 Li s p 语言的数据和程序 同等处理的特点,也有语句和表达式的统一。但大大打破了 Li s p 的局限。它允许中缀运算符的形式,没有 满眼的括号,和一般编程语言的表达方法完全一样。同时具有丰富的库,有完全的图形界面库,完全的网 络库。因为是一个公司的产品,也保证了库的统一。REBOL 自称为网络编程语言
32、,它的网络编程能力很强,一般一个语句就可以下载一个文件,或下载一 个网页,或接受一个邮件。REBOL 一个神奇的特点是它的图形界面设计,它的界面编程非常简单,完全不用语句和函数,而是和 HTML 一样只要表达核心内容就行了。这得益于 REBOL 的“方言”能力。REBOL 内置了“方言”能力。就是象 y a c c 一样的语言解析能力。可以随时扩展“子语言”。REBOL 内置了几十种数据类型,用它编程,语句肯定是最精炼的。REBOL 可以实现 Ja v a 一样的网络下载程序运行的能力,也有砂箱功能。它比 Ja v a 更进一步,有自 己的桌面,在桌面上可以任意启动各个 REBOL 程序,它的
33、桌面象 HTML 一样有丰富的表达形式和超链接。链接到有 REBOL 功能的网站上就可以象浏览网页一样使用各种程序。由于 REBOL 语言比 Ja v a 要简练的 多,同时是不用编译的脚本语言,它的程序文件非常小,更适合网络传输。因为 REBOL 有这样神奇的p a g e 4功 能,它自称 i n t e r n e t 操作系统。因为 REBOL 是脚本语言,因此它天然是跨平台的。它有很多操作系统的 实现。还有一个特点,REBOL 语言自身只是一个几百 k 的可执行文件,因此 REBOL 程序的发布是非常简单 的。编辑 最具有现代感的 Li sp 解释器 Dr Sc h e m e Li
34、 s p 是一个古老的计算机编程语言,给人的印象是速度慢,输入输出能力弱,没有图形界面,自身携 带的库太少,很多功能不能实现。这一切在 DrSc h e m e 手中改变了。Dr Sc h e m e 具有大量的现代语言具有的功能,比如作为嵌入脚本的能力,图形界面的编程能力,面向 对象的能力,组件编程能力,正则表达式能力,XML 能力,作为 w e b 服务器和客户端来输入输出能力及 其它网络能力,产生独立可执行文件的能力。一个集成的编辑调试环境。不过它的程序执行速度还是稍慢。当然,它具有所有 Sc h e m e 的优点,语法的宏定义能力,命名空间能力,数据和程序不分的能力,堆 栈式内存管理
35、,无穷嵌套,用“表”来表现所有语句和数据的简单方式,也天然带有程序环境的永恒存在能 力。这些特点好像正在最新出现的编程语言中出现。好像目前的编程语言的发展趋势是从 C 语言的方式向 具有更多 Li s p 特点的方向发展。就像 Wi n d o w s 逐渐具有了越来越多的 Un i x 早已实现的功能。才知道 Li s p 的编程环境已经这么好了。编辑 e i f f e l 语言印象 印象深的是它是全开发周期的语言,并且是在开发周期可回溯的。它的 Co n t r a Ct 和 Ad a 类似。e i f f e l 是和 C类似的编译的面向对象语言,不过更简单,能够多继承。e i f f
36、 e l 是 C 语言的面向对象编程的代 替物。编辑 m o z a r t o z 语言 o z 介绍它是面向对象的、能够逻辑编程的、并发分布的语言。我对 o z 印象最深的是它的多线程能力。一个简单的 Cas e 语句,就可以启动多个线程。另外,它也是一个 p r o l o g 的代替物,可以编写分布并发的 人工智能程序。编辑 各种语言的选择和语言之间的关系 编辑 一般是使用什么软件,就用什么软件的语言 就拿我用的软件举例:使用 e x c e l,就用 v b a 编程。使用 a u t o Ca d 就用 a u t o Li s p 编程 使用 z o p e 就用 Py t h
37、o n 编程 如果使用 gi m p 就用 Py t h o n 或 s Ch e m e 编程 使用 g n o m e o f f i c e 就用 Py t h o n 或 Ba s i c 编程 使用 b l e n d e r 就用 Py t h o n 编程 编辑 然后看处理什么样类型的数据 如果处理文件的操作就用 s h e l l 语言。比如 b a s h 如果处理文本文件,就用 Pe r l 或 a w k,如果喜欢 Pe r l 的风格,又象编大程序,就要用 Ru b y 如果处理数据库,简单的用 s e d。否则用 s q l。如果是对象数据库,可以使用 Py t h
38、o n ZODB、或 Lu a、f i s h 如果一般的数据库不能满足要求,需要做专家系统,就用 p r o l o g 如果处理结构化文本,如 XML,就用 x s l t。处理 HTML,客户端用 Ja v a s Cr i p t,服务器端用 PHP 如果处理类似语言分析的文本,就用 y a c c 如果处理出来的结果是打印文档或屏幕文档,就用 t e x 如果是图像、动画或其它二进制的文件,一般用 C 语言。如果处理的问题和操作系统底层打交道,用 C 语言 编辑 从语言特点来说 如果极端要求运行中的多线程的并发和分布,可以考虑 o z 语言。如果极端重视文档,希望把程序的文档写出来了
39、,程序也几乎就完成了,那么用 Cw e b 复杂的程序,在编写之前需要做 u m l 的文档。如果要编写规模较大的程序或打算只学一种编程语言,就要用 Py th o n 如果编写程序来处理复杂的数据结构和算法,就用 Li s p 和 s Ch e m e (喜欢 Li sp 的风格,并希望更 简单,用 REBOL)如果想最简单的实现一个语言来作为嵌入语言,就用 Tc l,如果 Tc l 有局限,就用 Lu a 编辑 C 语言是最普及的语言,但 C 语言有一些缺点,因此,就产生了很多改进 C 的语言 因为 C 不能编写大程序,就产生了 C 因为 C还有指针等缺点,就产生了 Ja v a 如果不喜
40、欢 C的各种缺点,又想使用一个编译型语言,就选择 e i f f e l C 语言的一个缺点是标准库规模小,不能解决所有的问题,就产生了大量不兼容的库,导致了很多不 可移植的程序。如果想要一个和 C 用样级别的可移植的编程语言,就选择 Ad a。Ad a 的图形用户界面库和 各种和操作系统相关的库都是标准化的,可以选择不同卖家的解决方案。是军队要求的标准编程语言。如果不喜欢 C 语言的繁琐,希望常做的事编程能够简单,那么可以用 Py t h o n。完成同样的工作,Py t h o n 代码行数是 C 的几分之一。C 风格的脚本化语言是 Ja v a s c r i p t,p i k e 编
41、辑 关于图形用户界面的选择 最简单的图形界面接口是 t k,可以在各种平台上可用 如果有更高的要求使用 g t k。g t k 移植性差些。一个以移植性为目标的开源 C 库是 w x w i n d o w 如果希望简单的编程,要求不很高,可以用 XUL 跨平台的图形用户结构是 Ja v a 的 a w t 和 s w i n g。如果不跨平台,还有 i b m 的 Ja v a 解决方案。如果对商业编程语言不排斥,可以用 q t,因为 q t 的程p a g e 5序,如果商业使用是要付费的。如果要编写全屏的文本界面程序,e m a c s 是最权威的。我们可以回忆,t u r b o C
42、的编程环境和图形用 户界面一样友好。它就是全屏的文本用户界面。如果编写 o f f i c e 家族类似的程序,在 o p e n o f f i c e 上也是可以考虑的选择。g t k 也可以。编辑 d i s c u s s m a d d o g (j o u r n e y m a n)06/12/03 10:55 Re:各种语言的选择和语言之间的关系 r e:n o n a m e t o m z 1 回复 如果处理结构化文本,XML,如 就用 x s l t。XML 本身也算吧 处理 HTML,客户端用 Ja v a s Cr i p t,服务器端用 PHP PHP 不是唯一 如
43、果处理出来的结果是打印文档或屏幕文档,就用 t e x 超强 如 果是图像、动画或其它二进制的文件,一般用 C 语言。如果处理的问题和操作系统底层打交道,用 C 语言 我会在 C/C里面选 C 如果极端要求运行中的多线程的并发和分布,可以考虑 o z 语言。20 年以后的语言 如果编写程序来处理复杂的数据结构和算法,就用 Li s p 和s Ch e m e Li s p 也是让 人喜欢 如果要编写全屏的文本界面程序,e m a Cs 是最权威的。我们可以回忆,t ur b o C 的编程环境和 图形用户界面一样友好。它就是全屏的文本用户界面。哈,Em a Cs 也许,语言是用来超越的许多应用
44、就需要不同语言混合 把 Py t h o n 嵌到应用程序中,我觉得很诱 人 编辑 文学编程和 CWEB 介绍 CWEB 是 t e x 的作者创立的一种编程语言。t e x 是主流的文档打印标准和文档生成工具。t e x 及相关 的 m et a f o n t 就是用 Cw e b 编写的软件,同时 t e x 体现了 Cw e b 的编程特点。CWEB 的编程思想叫“文学 编程”。实际应该叫“文章编程”,因为和文学关系不大,反而和学术着作类似。主要思想就是:编程应该象 写学术着作那样,有整体构思,以部、章、节、子节、子子节那样逐级丰富。这实际和我们说的“自顶向下”的编程方法类似。但“自顶
45、向下”只是一种软件工程的方式,它是以编写文档的方式实现的,没有和编程语 言结合起来。CWEB 用我的说法是用编程语言实现了“自顶向下”。CWEB 的实现方式是“宏替换”,就是逐级用更具体的内容来代替较概括较简略的内容。我们使用的编 程工具“m a k e r”实际就是一种宏替换工具(我没用过 m a k e r,只是听说)。z op e 的 TAL 语言是一种替换 工具,但不是宏替换工具,因为它的内容不是可执行的,如果内容是可执行的,那么它也可以叫宏替换 Di c t i o n a r i e s 字典 Pr i o r i t y Qu e u e s 堆 Gr a p h Da t a
46、St r u c t u r e s 图 Se t Da t a St r u c t u r e s 集合 Kd-Tr e e s 线段树 Nu m er i c a l Pr o b l e m s 数值问题 So l v i n g Li n e a r Eq u a t i o n s 线性方程组 Ba n d w i d t h Re d uc t i o n 带宽压缩 Ma t r i x Mu l t i p l i c a t i o n 矩阵乘法 De t e r m i n a n t s a n d Pe r m a n e n t s 行列式 Co n s t r a
47、i n e d a n d Un c o n s t r a i n e d Op t i m i z a t i o n 最值问题 Li n e a r Pr o g r a m mi n g 线性规划 Ra n d o m Nu m b e r Ge n e r a t i o n 随机数生成 Fa c t o r i n g a n d Pr i m a l i t y Te s t i n g 因子分解/质数判定 Ar b i t r a r y Pr e c i s i o n Ar i t h m e t i c 高精度计算 Kn a p s a ck Pr o b l e m 背
48、包问题 Di s c r e t e Fo u r i e r Tr a n s f o r m 离散 Fo u r i e r 变换 Co m b i n a t o ri a l Pr o b l e m s 组合问题 So r t i n g 排序 Se a r c h i n g 查找 Me d i a n a n d Se l e c t i o n 中位数 Ge n e r a t i n g Pe r m u t a t i o n s 排列生成 Ge n e r a t i n g Su b s e t s 子集生成 Ge n e r a t i n g Pa r t i t
49、i o n s 划分生成 Ge n e r a t i n g Gr a p h s 图的生成 Ca l e n d r i c a l Ca l c u l a t i o n s 日期 Jo b Sc h e d u l i n g 工程安排 Sa t i s f i a b i l i t y 可满足性 Gr a p h Pr o b l e m s -p o l y no m i a l 图论-多项式算法 Co n n e c t e d Co m p o n e n t s 连通分支 To p o l o g i c a l So r t i n g 拓扑排序 Mi n i m u
50、m Sp a n n i n g Tr e e 最小生成树 Sh o r t e s t Pa t h 最短路径 Tr a n s i t i v e Clo s u r e a n d Re d u c t i o n 传递闭包 Ma t c h i n g 匹配 Eu l e r i a n Cy c l e /Ch i n e s e Po s t m an Eu l e r 回路/中国邮路 Ed g e a n d Ve r t e x Co n n e c t i v i t y 割边/割点 Ne t w o r k Fl o w 网络流 Dr a w i n g Gr a p h