为什么动态语言又开始流行?

go编程语言为什么这么流行 go编程语言(通常写为golang)最近相当流行。go语言编程书籍:深入学习Go语言谷歌正在积极支持这一项目,但golang在互联网上看到了许多其他流行品牌和企业的使用、贡献和成功案例。go承诺提供一种非常简单易学的语法,允许我们构建健壮、可靠、高效的软件。一旦我们花了一些时间用这种语言编写生产级代码,我们就会同意go兑现了它的承诺。这的确是一门奇妙的语言——易学、易读、合理,当然还有维护。你可以... 阅读详情
  发于程序员2006年5月,有删节和修改。今天突然想起来,觉得还值得拿出来看看,就贴blog 上了,有一些和tiny讨论获得的较新鲜的观点,欢迎拍砖。

让我们倒退到60年代末,那个计算机的上古洪荒年代。这时,微处理器诞生了不到10年,这个年代的计算机开始大量使用集成电路,小型机开始替代古老的大家伙们。1年后,UNIX才出现在实验室中,而C语言,还需要等待4年才会出现。

那 个年代,这块神奇的大陆上活跃着那些计算机语言呢?他们是否早已如史前恐龙一般灭绝了?FORTRAN,LISP,COBOL,Simula, BASIC,PL/I,Ada,SQL…..我们惊奇的发现,这些语言到现在仍然好好的生存着,这时候还没有静态语言,所有语言都是带有动态特性的函数语 言。

1972年,往往被认为是现在这个年代的开端,这一年中,C语言诞生,Intel 8008微处理器诞生,ARPANET诞生,Internet的大幕拉开了。随后的10多年中,C++,pascal之类的静态语言依次登场,逐渐成为主流开发语言。

在1972 年之前,所有的语言都是为了某种专业用途而开发的,FORTRAN为了工程计算,LISP用于人工智能,COBOL用于处理商业逻辑……这些语言的用户往 往不是程序员,而是各领域的工程师或科学家。在那个年代,他们使用这些语言就像今天使用word,excel,autocad之类的软件一样。如同我们今 天不会认为C比excel更适合财会人员使用,当年的科学家也不会认为C比LISP更友好。至于C所带来的性能提升,并非他们关注的要点。

C 的诞生是为了编写UNIX操作系统,这是第一个可以用来写操作系统的高级语言。在此之前,所有的语言都可以看作计算机科学家贡献给其他学科的,C语言是给 计算机科学领域自己的礼物。C和UNIX一起开始流行,程序员开始用C编写各种各样的工具和软件,计算机的黄金年代开始了。

在70年代那个内存要以K计,主频仅有几mhz的年代,硬件极其昂贵,操作系统和软件对于性能的需求很高,操作系统是计算机的基础平台,与专业领域的应用不可同日而语。为了性能,程序员们宁愿使用汇编,但考虑到移植性,C还是成了他们最喜欢的语言。

1950年全世界只有100台计算机,1990年的计算机是普通的办公用品。计算机性能越来越高,硬件成本反而逐年下降,企业成了软件市场的最大客户。

企 业应用解决的是复杂的商业逻辑和时常变化的业务模型,对于企业应用,性能方面不再像30年前那样重要。企业的发展是动态变化的,在不同阶段,管理方式和业 务模式都会发生变化。企业对于灵活性和弹性的要求非常高,用来开发企业应用的语言也相应的需要具有极强的灵活性。互联网的发展让这种趋势变的更加明显。不 同于企业应用,互联网应用频繁变化,甚至没有明显的阶段。

软件发展到这个阶段的时候,单机的性能早已不是最重要的因素,多台服务器的并行 处理和分布式处理是解决性能问题最重要的方法。从语言层面上速度快一点,节约几M内存对于整个系统不会有太大影响。比起逻辑,开发难度和开发维护成本,性 能问题是最不重要的。动态语言优势在于灵活,易于开发和学习,劣势在于性能较低。在高性能服务器和并行处理的设计思路下,动态语言的优势如此耀眼,完全掩 盖了劣势。完成同样的功能,用python或是ruby之类的动态语言,所需的代码量往往只有java的1/10,相比C/C++差距更大。

系统软件和应用软件之间的区别也越来越明显,开发系统软件仍然需要静态语言,而应用软件和服务的开发越来越适合采用动态语言。编写操作系统之类的系统软件仍然要“压榨”计算机的性能,对于应用软件,缩短开发周期显然更加重要。

动 态语言除了具有语法简洁的优点,大量的程序库也降低了动态语言的开发难度。这好像一个鸡生蛋,蛋生鸡的问题,成熟的程序库降低了动态语言的开发难度,开发 难度低反过来又吸引了更多的程序员开发程序库。一个C++程序员,往往经过了几年的训练仍然不能开发出可用的程序库,动态语言的程序员经过几个月的训练已 经可以编写可复用的代码了。这些代码往往以开源的形式发布,容易被使用和学习。

程序库往往决定了一种语言应用难度,纵观历史,凡是具有优 秀程序库的语言生命力都很顽强,反之则多销声匿迹。目前几种流行的动态语言,都具有丰富的程序库,在python中,不仅具有诸如网络应用,多线程,图像 处理,科学运算之类的库,甚至还拥有多套不同量级的Framework来辅助Web开发。事实上,任何需要的功能几乎都能找到相对稳定的库,大部分程序员 仅仅需要组合这些库就能编写出强大的应用——这也正是动态语言开发程序代码量较少的原因之一。

动态语言程序员有几乎无尽的库资源可用,比 起其他语言的开发者,这是莫大的幸运,可惜郁闷往往环绕在幸运周围。前面说过,任何需要的功能都能找到相对稳定的库,而且不仅是一个,而是多个。哪个库好 用,哪个库适合你的项目,每个库的特点是什么?要搞清楚这些问题也要颇费一番时间。至于要决定用哪个,不用哪个,往往让人左右为难。幸好,在开源社区,有 众多参与者的项目往往不会太差,代码和文档齐备的代码都值得一试。

除了众多的程序库,动态语言本身的种类也远远大于静态语言,同样,每种 语言也各具特点。Python,Ruby,Lua,Perl是四种颇具代表性的语言,按照一般的看法,这些语言适合用来黏合不同的系统和模块,素有“胶 水”的之称。现当然,后来人们发现胶水不仅仅能粘合其他模块,本身也具有强大的功能,在性能问题不那么重要的场合,动态语言看起来无所不能了,无论是网站 还是应用程序,都能看到动态语言的身影。动态语言成了不可小看的一股势力。对这个时代的程序员来说,掌握一种动态语言很有必要,虽然你不一定能够靠单单一 种动态语言找到一份喜欢的工作,但适时的采用动态语言,一定可以让你的工作变的简单许多。

了解动态语言和常用的程序库的特点,是开始动态语言编程的第一步。下面我们将介绍Python ,Ruby,Lua和Perl四种典型动态语言的程序库。

Python 不仅在所有主流操作系统上都能运行,而且得到了很多工业控制和嵌入系统的支持,除了各种unix-like的系统,Python还能运行在Palm,索尼 的游戏机PSP,nokia的手机操作系统Symbian,风河的嵌入操作系统VxWork上。Python被称做最强的脚本语言,无论开发web应用还 是普通应用程序都十分方便。Python诞生了10多年,积累了大批忠实用户,也存在了众多成熟的应用成功案例。

Ruby语言特点类似Python,但发展相对较慢。Ruby最近因为Rails框架而成为了最炙手可热的动态语言,Ruby on Rails适合企业应用,大量java用户对Rails产生了浓厚的兴趣,他们甚至认为Ruby on Rails会对java造成冲击。

Lua小而快速,目前多用来编写游戏引擎所需要的脚本。Lua代码精巧,比起Python或Ruby,Lua小的多。暴雪的著名网络游戏魔兽世界的配置脚本和插件都是采用Lua编写的,这也令Lua开发者迅速增加。

Perl是最古老的动态语言,强于数据分析和计算,也是unix平台上可以用做shell script用做的语言之一,系统管理员都很喜欢这个出色的工具,虽然近年风头被python抢去很多,但拥有CPAN程序库的Perl,仍然是最强大的语言之一。

按照现在的一般开发需求,我们需要的程序库通常是这样几类:web开发框架,GUI界面库,其他辅助工具,至于XML解析,字符串处理函数之类大路货,已经随处皆是,不值得开篇专门介绍了。

1 web开发框架

web如此流行,不仅仅是网站,企业信息化软件和部分个人桌面网站也采用了web界面。web界面成了和普通GUI并行的一种选择。如此众多的应用,使web开发框架变的如此重要,几乎所有语言都有了不错的web开发框架,而且还不止一套。

python 的web开发框架多的足以让人挑花眼,比较有名的就有类似 Ruby On Rails的django 和TurboGear,模仿tomcat的webware,轻量级的Quixote,karrigell,更轻量级,用apache模块实现的 mod_python和vampire。所有框架都各有特点,当然这也可以换个角度看作个有缺陷。总之,要挑选适合的框架,就要先仔细读文档,看成功案 例,对比自己的项目需要,仔细找。

Ruby简单的多,Ruby on Rails风头正劲,甚至已经让人说不清是Ruby成就了Rails还是Rails成就了Ruby,总之,用Ruby开发web应用,非Ruby on Rails莫数。无论是整个框架的结构还是界面的Ajax支持,Rails都是水到渠成了。事实上,也确实没有相同成熟度的项目可以选择了。

Perl的MASON名气很大,也很成熟,不过开发起来的思想和Perl原本的思路差距很大,如果能适应,这倒是个不错的选择。其实perl本身就很适合做web开发,只要有fastcgi,利用CPAN库,大部分应用都能轻松解决了。

Lua用来做web开发有点怪,毕竟不是为了这个目的设计出来的。但是也有一个叫做Kepler的项目提供了web框架,用起来也方便。不过Lua最好的用途还是写脚本,何必用来做web呢?

2 GUI界面库

能够跨平台的GUI界面库,比较成熟的大概只有两个,wxWidgets或是GTK。wxWidgets的可用性和美观程度都优于GTK,很受欢迎。

wxPython,wxLua,wxRuby ,都是不同的语言下对wxWidgets的封装,虽然成熟程度不一,但是无一例外的受到了开发者欢迎。

3 其他辅助工具

此类的库实在太多,每个程序员都有自己喜欢的一套工具。这里只列举一些比较有特点的程序库。

Python的RPC库Pyro,类似C++ ACE库的Twisted,本地编译工具Psyco

Ruby的图形处理库Rmagick,类似于tomcat的Mongrel

Perl仍然不得不提起CPAN,这个库太庞大,无所不包,以至于任何其他的程序库都显得黯然失色。

Lua中调用COM的LuaCOM,JIT 编译器LuaJIT
教妹学Java:Java 为什么如此流行 Java 为什么如此流行? 尽管 Java 已经 25 岁了,但仍然“宝刀未老”。在 Stack Overflow 2019 年流行编程语言调查报告中,Java 位居第 5 位,有 41% 的受调开发者认为 Java 仍然是一门受欢迎的编程语言。 很多大型的互联网公司都在使用 Java,国内最有名的当属阿里巴巴,国外最有名的当属谷歌。那为什么 Java 如此流行呢? 1)简单性 Java 为开发者提供了简单易用的用户体验,与其他面向对象编程语言相比,Java 的设计和生态库具有巨大的优势。Java 剔除了 阅读详情

相关推荐

SIREpidemicTracker: 基于C语言流行病预测工具

本文还有配套的精品资源,点击获取 简介:SIREpidemicTracker是一款基于流行病学SIR模型的C语言编写软件,能预测基于统计数据和时间的流行病发展趋势。用户输入当前的易感者、感染者和康复者数量以及预测天数,程序将预测未来几天内各群体数量变化,为政策制定者提供防疫策略参考。其高效、可移植的特性源于C语言的底层编程能力和广泛的跨平台支持。该软件包含源代码、头文件、编...

weixin_42601547的博客 1191

python实现不可修改的常量

因为种种原因,Python并未提供如C/C++/Java一样的const修饰符,换言之,python中没有常量,至少截止2015年年末,还没有这个打算。Python程序一般通过约定俗成的变量名全大写的形式来表示这是一个常量,但是这终究不是长久之计。其实Python可以曲线救国实现常量。在Python的面向对象中,object._setattr_()这个built-in function在对类的属性赋

既然选择了远方 便只顾风雨兼程 4684

Python中实现常量(Const)功能

主要介绍了Python中实现常量(Const)功能,python语言本身没有提供const,本文使用一个类来实现常量定义功能,并介绍了使用方法,需要的朋友可以参考下

动态语言和静态语言的区别(如python与c++)

概念 动态语言(弱类型语言)是运行时才确定数据类型的语言,变量在使用之前无需申明类型,通常变量的值是被赋值的那个值的类型。比如Php、Asp、JavaScript、PythonPerl等等。 var s ="hello"; var i = 0; var b = true; 静态语言(强类型语言)是编译时变量的数据类型就可以确定的语言,大多数静态语言要求在使用变量之前必须生命数据类型。比如Java、C、C++、C#等。 String s="hello"; //String 类型的变量 boolean

s11show_163的博客 1万+

为什么 Python 中没有“const“?

一种常见的方法是使用全大写的变量名,或者创建一个名为“CONST”的模块或者类,在其中定义所有需要作为常量的变量。以上三种方法虽然可以实现“const”的功能,但是它们的使用方式各有不同,需要根据具体的需求和喜好进行选择。这种方式通过创建一个类来组织常量,使得常量的命名空间更加清晰,并且可以通过类的实例访问这些常量。创建一个名为`constants.py`的文件,其中包含所有需要作为常量的变量。这种方式既保证了变量名的唯一性,又通过模块的组织形式使得常量的作用域更加清晰。

815

python常量列表_Python中实现常量(Const)功能

python语言本身没有提供const,但实际开发中经常会遇到需要使用const的情形,由于语言本身没有这种支出,因此需要使用一些技巧来实现这一功能定义const类如下复制代码 代码如下:import sysclass Const(object):class ConstError(TypeException): passdef __setattr__(self, key, value):if se...

weixin_39830020的博客 581

动态类型语言和静态类型语言的区别

动态类型语言和静态类型语言的区别

岳来的博客 4962

基于JVM的语言正在开始流行

基于JVM的语言正在开始流行 赵锟 总结: 这是Reuven Lerner在去年写的一篇博文,文章主要介绍了一些新兴的基于JVM的脚本语言。结合本文可以对Bruce的博文《C++和JAVA传统中积极的一面》有一个很好的理解。译者认为:语言始终都是一门工具,软件设计最重要的东...

chuifuhuo6864的博客 98

从零开始搭建疫情预测系统,R语言流行病学建模实战精讲

掌握R语言流行病学中的疫情预测模型构建方法,手把手教你搭建实用预测系统。涵盖SEIR模型实现、参数估计与可视化,适用于传染病趋势分析与公共卫生决策支持。方法清晰、代码可复用,值得收藏。

ProceNest的博客 924

测试面试必备:什么是Python为什么它会这么流行

Python是一种高级、解释型、通用的编程语言,由Guido van Rossum于1991年首次发布。它以简洁易读的语法和强大的功能而闻名,已成为当今最受欢迎的编程语言之一。

qq_58299462的博客 1035

2019年目前流行的几大编程语言汇总!你应该选择哪个呢?

很多想要学习编程的小伙伴在入行前,都会纠结选择什么的样编程语言去学习。到底是选C++还是选JavaScript?Python和Java哪个更有前途呢? 编程语言与应用场景有密切的关联关系,每一种编程语言都有自己的应用领域和特点,所以不能单纯的说学哪个语言最好,但是如果没有具体的场景要求,那么可以根据目前的流行程度和发展前景选择要学习的编程语言。下面,小编整理了目前比较流行的几个编程语言,一起来看...

weixin_45820912的博客 5413

动态语言与静态语言

动态语言也称为脚本语言,是介于标签语言(如HTML,XSLT,VML)和静态语言(如C++、C#、Java,也称编译语言)之间的语言。JavaScript、PHP、PerlRuby等都是动态语言动态语言无需编译,它由解释器动态解释执行,一般来说,动态语言拥有比静态语言更大的灵活性和表达能力。动态语言优势在于灵活,易于开发和学习,劣势在于性能较低。在高性能服务器和并行处理的实现方案里,动态语言的优势掩盖自身的不足。一般来说,完成同样逻辑功能的程序,使用RubyPython之类的动态语言所需的代码量往往.

xmh_sxh_1314的博客 1894

流行语言的比较

流行语言的比较我大白鲨是C++builder 中人. 看过太多的比较,太多的初学者的询问,太多高手的之间的争辩 无聊啊红尘多可笑 痴情最无聊..... 无钱 无势 无学问 聊天 聊地 聊女人,无聊的你在大学里我学过basic;pasic;foxbase;tubro c;masm;lisp; visual foxpro; 现在忘了差不多了看了一看 vb vc deiphi c++builder

shak的专栏 2009

过去8年,编程语言流行度发生了哪些变化?PHP下降,Objective-C已过时

前天有一个汇总9个不同排名数据的“地表最强”编程语言排行榜,为了更好地理解语言流行度的变化,作者将2016年的类似调查结果与2024年的数据进行了比较。Go作为Google开发的静态类型语言,在构建可扩展的并发应用程序方面表现出色,在云计算、微服务和容器化领域已经很受欢迎。接下来的几种语言在之前的文章中引起了一些争论,一些程序员声称它们甚至不是真正的语言,因为它们没有典型的算法编程功能。Kotlin作为Java的增强版,提供了更简洁的语法和强大的功能,并被Google选中为Android的首选语言

爱编程的鱼的博客 1291

动态语言之三:语言动态

转 [url]http://blog.csdn.net/hongbomin/article/details/6979314[/url] 3.1 语言动态特性 介绍动态语言之前,首先介绍一下语言动态特性,并引出动态语言的定义。 语言动态特性表示语言具有在运行时确定绑定关系的性质。实际上,“静态”是一个相对的概念,任何程序设计语言都可以看作具有某种程度的动态特性。一个变量能够在...

ooaer的专栏 1688

2019年流行的10大编程语言是哪些?

1、Java**流行 与一年前一样,Java仍然是**流行的编程语言。据TIOBE的数据显示,几十年来,Java比其他语言更常名列榜首。许多知名公司使用Java来开发软件和应用程序,所以如果你碰巧使用Java,绝对不必为找工作而苦恼。Java受欢迎的主要原因是它拥有可移植性、可扩展性和庞大的用户社区。 2、经典的C语言 作为**古老的编程语言之一,C依然高居榜首,这归功于其...

百度搜索下拉框提示免费代码 - openSug.org 2169
上一篇: 什么是python?
下一篇: 电脑高手的招数
tanliyoung
博客等级 码龄20年 44粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值