天天好味道

没钱没权没户口,靠走靠吼靠小狗
随笔 - 66, 文章 - 1, 评论 - 504, 引用 - 5

导航

<2008年8月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
31123456

留言簿(11)

随笔分类

随笔档案

文章档案

我的链接

搜索

最新评论

阅读排行榜

评论排行榜

正如java在企业开发领域推倒C++一样。脚本或称为动态语言成为主流的时刻不远了

这句话说得好。掌握一门脚本语言已经成为程序员必要的技能了。
强烈推荐Python。

posted on 2006-07-20 17:20 jzhang 阅读(1969) 评论(14)  编辑 收藏

评论

# re: 正如java在企业开发领域推倒C++一样。脚本或称为动态语言成为主流的时刻不远了

C/C++都没有学好,仅仅是会一点的阶段,你推荐学这些脚本语言吗?或者讲,什么层次的人应该学?
2006-07-20 17:52 | zuilang

# re: 正如java在企业开发领域推倒C++一样。脚本或称为动态语言成为主流的时刻不远了

这个。。。
1 ,C++从未在企业开发领域占据主流
2,因为1,所以Java也没有在企业开发领域推倒C++
3,脚本和动态语言并不完全等同,虽然多数时候是这样。
4,脚本在相当多的领域,早就成为主流了,比如网站开发
。。。。。。
2006-07-20 17:56 | pAnic

# re: 正如java在企业开发领域推倒C++一样。脚本或称为动态语言成为主流的时刻不远了

脚本语言绝对不可能成为主流,比如在游戏开发领域,以c/c++为主,脚本语言只是辅助的,象 python 和lua等
2006-07-20 21:32 | fastzhao的冲洗店

# re: 正如java在企业开发领域推倒C++一样。脚本或称为动态语言成为主流的时刻不远了

脚本语言早就有了,如basic
2006-07-20 21:58 | 小明

# re: 正如java在企业开发领域推倒C++一样。脚本或称为动态语言成为主流的时刻不远了

首先就算是整个领域主流也不代表能取提!

对于脚本, 动态这些似乎大家没有一个统一的定义, 在GOOGLE上查了一下:
脚本语言:
在计算机程序中,一个脚本,通常的说,是一种计算机语言,可以使得本来要用键盘进行的相互式操作自动化。一个Shell脚本主要由原本需要在命令行输入的命令组成,或在一个文本基准编辑程序中,用户可以使用脚本来把一些常用的操作组合成一组序列。主要用来书写这种脚本的语言叫做脚本语言。

Scripting programming languages (commonly called scripting languages or script languages) are computer programming languagesdesigned for "scripting" the operation of a computer. Early script languages were often called batch languages or job control languages. 

动态语言:
In computer science, a dynamic programming language is a kind of programming language in which programs can change their structure as they run: functions may be introduced or removed, new classes of objects may be created, new modules may appear. As a side effect of this dynamism, most dynamic programming languages are dynamically typed, which static typing advocates consider a drawback (see also static typing). .

一般(C/C++, JAVA, C#, DELPHI)都为静态语言, 而(Python, lisp, Perl, php,Smalltalk)被视为动态语言. 置于脚本它并不能作为区分语言种类的条件, 因为按定义只要是一组指令基本就可以说它是脚本.

        我个人认为动/静之分在于动者在源程序层面直接被解释执行, 而静者则紧是解释转换为其它形式编码.

下面是一编搜到的文章
Are Dynamic Languages Going to Replace Static Languages?
by Robert C. Martin
http://www.artima.com/weblogs/viewpost.jsp?thread=4639

2006-07-21 00:35 | hpho

# re pAnic

这话可能不够准确:
1. Java应该说是开创了企业开发领域,从而成为主流语言
2. 同样,经过长期的发展,脚本语言也将获得广阔的空间,成为主流

2006-07-21 08:39 | jzhang

# To hpho

脚本语言的定义的确比较模糊。传统的思维,认为脚本就代码那些,为了在某些领域达到最高的开发效率,或者为了将某些特性发挥到极致,而牺牲类型检查,效率等特性的语言。
举例:Basic是为了容易学习,他最初设计的时候几乎就是为了让人容易入门。效率很差
PHP则几乎就是为了开发网站而存在的,所以他提供强大的数据类型和动态特性,以及强大的字符串处理。但是很不好用来做其他开发
Logo也算一种吧,他的特点就更加明显了,就为了在屏幕上划几幅图

2006-07-21 10:18 | jzhang

# to zuilang

总的来讲,脚本语言目前还是处于一个配角的地位,虽然前景很光明。所以你可以用一种轻松的心态来学习一门脚本语言,他们暂时不会也不能代替C/C++,Java,C#等语言。但是掌握一门好的脚本语言,会给你的工作带来很大的效率提升。 比如Python,具有如下特点:
安装简便,使用简单
动态语言,数据类型及其丰富和强大
非常强大的库支持

我在工作中经常使用Python来完成一些事情,比如我前面提到的那个数据绑定的代码生成器,就是用Python写的。如果用C++,代码量可能要3倍以上。
2006-07-21 10:24 | jzhang

# to pAnic & hpho:

两位谁能给一个“计算机设计语言”的定义?

按照六七十年代的定义,包括Java都算不上语言,只是特定软件(假设为JVM)提供的复杂互动的用户接口而已。而且按照最初的蓝图,特定领域(比如 数值分析)当由通用语言的库或专用语言提供(显然,现今并没有违背当初的设想),而类似于jzhang大侠口中的“企业开发领域”在最初蓝图中连“库”都配不上,只能算一类软件而已。事实上我觉得如今的发展并没有丝毫脱离当初的蓝图,也不可能脱离,而关键问题在于“计算机设计语言”的定义被有意无意的篡改了。这一点容后讨论,先给出最初“计算机设计语言”定义下的蓝图:
    计算机设计语言 --- \
计算机设计语言 --- 库 ------ 程序 --- 特定操作 --- 完成特定功能
          库 --- /

可以看出,上图中“程序的特定操作”和“计算机设计语言”非常容易混淆,尤其是当这个“特定操作”变得越发复杂时。自从“HTML是计算机设计语言”这个笑话不再是笑话后,一切都变了:
汇编是计算机设计语言吧?肯定是,没有任何异议?
C/C++是计算机设计语言吧?肯定是,没有任何异议?
Java/HTML等是计算机设计语言吧?放在现在,也毫无异议,是。
在notepad.exe中打字是不是计算机设计语言???
仅从输入输出接口来看,应该是,notepad也需要用户输入,如果用户输入错误,结果就不是用户想要的,和语法正确但逻辑错误的计算机设计语言一样;而输出是.txt文本,.txt不是可执行文件,但没有人(据我理解)规定输出必须是可执行文件,起码java/HTML等语言的输出就不是可执行文件,和.txt一样,需要别的程序解释,不同的是解释程序不一样而已,一个命名为JVM,一个命名为notepad,在windows下,.txt也是直接关联到notepad的,双击同样运行。而目的更是一致,计算机设计语言下的程序解决了某个问题,notepad下的.txt也解决了某个问题:向用户显示出指定文字。这一点是不是像用GDI输出一段文字一样?^_^
从 程序=数据结构+算法 来看,notepad不是没有,只是更少更不重要而已,事实上很多语言,尤其是Shell语言,也不过就是一个功能组装而已。

我并不是在狡辩,虽然我举notepad这个例子有点可笑,现在我隆重请出AutoLisp,它不是Lisp,但和Lisp一样,包括有Lisp语言的所有元素,从这种意义上讲我一开始就可以称它为“AutoLisp语言”(当然包括AutoCAD都这么称呼它),但它又确确实实不是计算机设计语言,它只是AutoCAD软件中为完成某些工作提供的用户接口,这个用户接口定义得非常复杂,复杂得和Lisp语言一样,但和两三个按钮的用户接口的本质却还是一样。现在你说AutoLisp是不是语言,你说word中的basic宏是不是语言,你说word是不是语言?
反而是旁观者清,我第三次请出XX防疫站某同志当年问我的一个问题:“为什么有了word之后,你们还要写软件呀?”
按照现在的“计算机设计语言”的定义,word这个字处理软件当仁不让的属于计算机设计语言,且比C#/VB更容易上手。

--- 注一下,我个人并不反对HTML/notepad等进入“计算机设计语言”的范畴,概念这玩意儿就应该入乡随俗。

现在,因为“计算机设计语言”的定义在如今被有意无意篡改到无限大,HTML都已经是计算机设计语言了,所以鱼龙混杂,必然多事。越来越多的语言之间比较的文章,越来越多的语法发展方向上的指手画脚……,等于拿着米尺(计算机设计语言的定义就是刻度)去尺量粟米和小米的长度,当然乱扯一通都有理,但如果使用当初的计算机设计语言的严格定义,那么可以毫不客气的回答所有人:“你说得很有理,但与程序设计无关”
上一段我有意写得很晦涩,太直白容易伤到花花草草。我的基本观点是,如今的很多语言,并不在于专注领域的不同,也不在于等级层次的不同,而在于概念的不同,这个概念就是这个语言眼中的世界观,当然包括计算机设计语言的定义。所以无法拿过来比较。

--- 另外,to hpho:我不同意你刚才说的 ------ “我觉得这可能是C++协会的一个策略. 因为如果大家都做同一件事, 大部人会有先入为主的观念, 就算你做得再好, 他们仍然会觉第一个做这件事的人是最好的. 因此这种吃力不讨好的事C++标准协会觉得不做还可以省点力且能有个好名声. 再者真的做了又怎样能吸引或挽留部分用户!? 但这些用户可能又会因其它'利'而忘'义'的最后还是会流失, 一次不忠百次容. 语言需要有一些铁杆(通常这邦人都比较保守)支持当然要顺他们的意思了!” ------ 理由就在上一段,并不是某些东西“先入为主”,而是你本身不赞同C++的设计理念,也就是说 你定义的语言 和 C++定义的语言 在概念上就不等同。
学佛后,越来越觉得自己变得宽容起来了,嘿嘿,我觉得Java和C++是同一个东西,放在严格的计算机设计语言定义下,它必然就变身为C++,放在如今空洞的定义下它就一定是Java,所以我觉得Java和C++只是表象,问题还是在于“计算机设计语言”的定义是什么?不把这个问题搞清楚,就不知道什么才是软件开发,什么才是软件?
2006-07-21 14:39 | 周星星

# re: 正如java在企业开发领域推倒C++一样。脚本或称为动态语言成为主流的时刻不远了

Windows跟Unix的设计理念不同。

Unix的文化讲究把小事做好——一个程序专注一个点一个面,去做好,就可以了。这样就有千千万万的小程序,比如grep,比如make等等。如何将这些精致完美的小程序组合一起使用?于是就出现种种胶合语言,他们的目的不在于从根本上解决问题,而是在于最快速(人力快速)最高效(人力高效)的解决问题,他们采用的更多是组合现有成果的方式。碰巧Unix的管道,Unix的文本化输出也很好的支持了他们这么做。于是乎,胶合语言(动态语言)也就在Unix用户Unix程序员的生活中占有着越来越重要的地位。

Windows则不同。Windows讲究的是替用户做好一切事。从这方面说,软件开发人员作为软件开发工具的客户也吃着现成饭,在自立更生改善开发环境(自己给自己打环境做工具)上跟Unix开发人员没法比。另外,就是有心,也没有现成的精辟的小工具可以利用。就是有小工具,Windows也没有为他们之间的组合提供方便。(Windows的管道不好使,Windows的程序大多都是GUI界面类的,就是console的也不讲究输出格式——不统一)

python、perl在Linux上都是预装的,而在Windows上都是自己装的。一句话,就是你用python写个程序
送给别人,他未必乐意去装个python环境,他未必喜欢用。所以python在win上要靠你去推,推不起来,久而久之,没准你也放弃了。

所以,Windows开发人员不了解这些胶合语言,不愿意也没必要去了解。如果一件事务跟你没关,你非要说他好,你非要认同它比你熟悉喜欢的东东还好,那是不可能的。所以,扯这个话题实在是浪费时间——当你需要用真正用他时,你就意识到他价值了;当你天天都用他时,你就理解它存在的必要了
2006-07-22 00:04 | 一笑

# re: 正如java在企业开发领域推倒C++一样。脚本或称为动态语言成为主流的时刻不远了

没有C++等语言,哪来的Java虚拟机!
再说了,Java等解释性语言没有效率可言……

我也在学Java,感觉Java的可移植性决定了它不能成为一门高效的语言。
2006-07-22 09:30 | 一个咸蛋的唠叨

# 今天坐公交的时候我还想了想**的帖子

翻来覆去,从拔插电线,到纸带打孔,从Fortran到C,可是后来我一样,想这些有什么用啊?就作罢了,接着想设计模式的事情了,hoho

to 唠叨:你的观点还很初步,可以再看看。:)
2006-07-22 13:57 | jzhang

# 胡乱参合一下

汉语,是一门语言,为很多人都能懂。
英语、法语、日语等等等,都是语言,也为很多人所懂。
c/c++是语言、Java也是语言。但asp不是。为什么?就如同汉语等一样,因为他们有一套语法、语意来维护和构成一套较完备的开放能力和需求,为大家能理解和接受。而asp没有自己的语法、语意,用的是vbscript和javascript来完成工作(就像,人类语言的交流和领悟)。
2006-07-22 21:13 | 清风雨

# re: 正如java在企业开发领域推倒C++一样。脚本或称为动态语言成为主流的时刻不远了

健康的现象应该 是C/C++ 和 某些脚本语言同时成为 主流语言。两类语言相辅相成。

  脚本语言的存在,即使功能不强大,却可能成千成万倍地拓展用C/C++写成的软件的功能和适应性! 最典型的例子就是 AutoLISP语言与 AutoCAD的相辅相成关系。 就语言方面来说, AutoLISP功能很弱,总共仅仅100多个内建函数,但是AutoCAD的成功,在很大程度上却是得益于其AutoLISP语言!!! 后来AutoCAD提供的其它开发语言则是起锦上添花作用。
2006-07-29 22:17 | Ishou
标题  
姓名  
主页
验证码 *
内容   
  登录  使用高级评论  Top
[使用Ctrl+Enter键可以直接提交]