- 浏览: 1328832 次
- 性别:
- 来自: 合肥
文章分类
- 全部博客 (404)
- ToDoList (24)
- 项目管理 (39)
- REDMINE (1)
- Oracle (32)
- 杂文 (21)
- 管理 (19)
- Java (6)
- 全文搜索 (1)
- 编程语言排名 (4)
- 人力资源 (5)
- SVN (1)
- CMMI (2)
- VER (1)
- VAL (1)
- 其他 (8)
- OceanBase (1)
- IT PRO (2)
- KVM (1)
- Access (1)
- Drupal (3)
- mysql (4)
- 理财 (1)
- 读书笔记 (6)
- 个人总结 (16)
- 我的推荐 (13)
- REDMINE培训材料 (0)
- 随笔 (10)
- AIX (1)
- 管理故事 (12)
- 工具推荐 (6)
- 系统架构 (5)
- 免费活动 (3)
- 名词解释 (3)
- Apache (5)
- mongrel (4)
- redmine插件 (0)
- 知识管理 (4)
- REDMINE第三方应用 (5)
- redmine问题 (0)
- NOSQL (1)
- UML (1)
- SQLite (1)
- use case,UML (1)
- nginx (5)
- 规划 (1)
- 系统思考 (1)
- resin (2)
- android (43)
- android代码 (10)
- HTML5 (1)
- 移动开发 (4)
- android问题 (3)
- DB2 (4)
- http (1)
- LBS (1)
- IT职业规划 (11)
- 微信 (1)
- 就业 (1)
- google (2)
- 微信开发 (2)
- js (1)
- Anroid (1)
- Service Worker (1)
- weblogic (2)
- 测试 (1)
- weblogi (1)
- vue (4)
- jeeplus (1)
- ureport (1)
最新评论
-
Caelebs:
上海交大?ms工作六年?感觉好屌啊我厂一堆10K 20K 98 ...
IT人为什么难以拿到高薪? -
小桔子:
如果加入listView 在滑动的时候偶尔会空指针异常,加入P ...
Android组件推荐-侧滑效果DragLayout -
wangyonglin1123:
小公司是锻炼人的 不管是业务技术都会有突飞猛进的进度 进步 ...
程序员在大公司工作好?还是在小公司工作?我的经历和建议[ZT] -
wangyonglin1123:
必须有所专长 技术和业务都需要 你必须在一个行业够牛逼
程序员的出路之一,拥有一技之长、打造自己的精品、更广阔的市场【ZT】 -
luhuajcdd:
这个不错
StarUML 不能在64位的windows7下运行,提示错误的解决方案
动态语言的优势
1. 生产力。 动态语言在开发效率方面有着无与伦比的优势,这也与动态语言“优化人的时间而不是机器的时间”这个理念 相吻合。利用传统的静态语言要开发几周的功能和特性,使用动态语言也许几天甚至几个小时就可以实现。不仅如此,动态语言在开发原型系统和常用工具方面的开 发效率也非常高,尤其值得一提的是原型系统。
2. 代码量。 曾有报道说,用Ruby on Rails写同样的项目,代码量大概只有Java的1/10。且先不说这个说法是否有夸张的成分,但就实际来看,动态语言的确从代码量上来说,要比 Java/C/C++等传统静态编译型语言要少的多(当然语言的表达能力与动态静态关系并不大,静态函数式语言的表达能力也很强),可能几千行的项目就算 得上是个大项目。
3. 测试。 因为动态语言很容易实现反射等动态特性(JUnit也是等到Java支持了反射以后才出现的),因 此测试也更为容易实现。Python和Ruby的标准库中都带有unittest的框架,这几乎可以让你无成本地使用单元测试来加固代码。因为动态语言本 身不具有编译过程,因此犯下某些低级错误的几率大大增加,也为重构带来了重重困难。没有单元测试的重构如同梦魇一般,动态语言尤甚。
4. 原生数据结构。 现在主流的动态语言多为脚本语言发展而来,而在这些语言中,集合、列表和词典这样的数据结 构都是原生的,而静态语言的数据结构往往是通过程序类库来实现的。比如Python就提供了set、tuple、list和dict等原生数据结构,同时 还提供了大量操作(如数组分片等),让这些数据结构使用起来非常方便。原生数据结构使得对数据的操控融入到了语言的语法当中,让程序更为易读,这也让基于 代码的沟通更为顺畅。
5. 简单易学。 动态语言的语法相对简单,学习成本看似也比较低。有人举例说,Python和Ruby写个Hello World只需要一行即可,这是很多静态语言所达不到的(把多行代码写成一行的不算)。
动态语言的缺点
1. 运行效率。 运行效率低下使得动态语言饱受诟病。“跑得太慢”这顶帽子已经在动态语言的头上扣了许多年。甚 至有Benchmark表明,在某些应用场景下,动态语言的运行效率和C/C++、Java等成熟的静态语言相比,相差数十倍甚至上百倍,这也为动态语言 的普及埋下阴影。不少开发者因为运行效率的问题,纷纷表示 “对动态语言很失望”。其实我倒是觉得大可不必纠结在这个问题上,原因有两点。
第一,很多动态语言的应用场景使得运行效率的重要程度大大降低。就拿 Ruby on Rails来说,在Web开发这个应用场景里,数据库的响应时间无疑是最大时延,与之相比代码运行时间就微不足道了。而且通过Cache和优化,基本上可 以消除代码运行效率低对项目的影响。又如我们的消息网关系统,最耗时的部分就是网络通信和文件I/O,而这两部分动态语言和静态语言相比并无明显劣势,运 行效率的问题可以完全忽略。
第二,如果遇到很耗CPU或者很耗内存的运算,完全可以通过C/C++实现的扩展来解决。无论是Python还是Ruby,都支持采用C/C++编写扩展。通过这些扩展,可以极大地提高运行效率,从而弥补动态语言在运行效率上的不足。
2. BUG难于发现。 动态语言由于没有构建的过程,因此很多错误只有等到运行时才会发现。而这些错误很可能是些低级错误,比如拼写错误、没有import相关的类库,或者括号不匹配等等。如果每次修复这样的BUG都要通过去测试环境中部署来验证的话,则会浪费了大量时间。
3. 专业人员少。 不少使用动态语言的公司都会遭遇一个问题,那就是使用动态语言的资深开发人员很少,不但很难 招聘到靠谱的员工,核心人员的离队也会对公司造成很大的损失。这是因为完全使用动态语言进行开发的公司少的可怜,只有极少数的开发者能够参与其中并获得相 关的开发经验。绝大多数的动态语言使用者还处在爱好者阶段,跟着Tutorials写写Demo,或者随手写个Utils等等。
因为高水平的动态语言开发者的确是可遇不可求,因此寻找有经验的开发者也许要花上不少的时间和成本。当团队有了较为有经验的开发者以后,就需要通过内部培训、结对编程等手段,帮助公司里没有经验的开发者迅速积累经验,逐渐成为动态语言方面的靠谱人才。
其实,对于动态语言的圈子,还有一个有趣的说法:因为学习动态语言的人往往都是在其他领域有了很深的积累后,在有余力的情况下才接触动态语言的,因此往往相对都比较靠谱,动态语言的圈子反而能够帮助雇主们甄选出一批高素质的开发者。
4. 不够成熟。 动态语言的发展历史虽然不比静态语言差到哪里(比如Ruby和Java就同为1995年始创),然而由于其较为小众,因此无论是虚拟机的实现上,语言本身的机制上,还是相关的配套工具上都算不得十分成熟。
小结
通过实践我们发现,动态语言既不是什么洪水猛兽,也不是什么奇巧玩物,它们已经逐渐成长为称手的兵器,帮助开发者们快速完成项目,进而达成商业目 标。使用动态语言,已经让我们切切实实感受到了它的开发效率为我们所带来的好处。在商业机会瞬息万变的今天,谁能以最快的速度实现自己的想法,谁能尽快应 对市场带来的变化,谁就能离成功更进一步。
诚然,动态语言目前还存在很多问题。但瑕不掩瑜,如果在使用时可以意识到这些问题,并善加处理的话,动态语言也可以成为复杂商业系统的主角,在企业 开发中占据自己的地位。而且随着开源社区的努力,很多问题正逐一被解决。我们有理由相信,在不远的未来,动态语言一定会有一片更为广阔的天空。
转载地址:http://developer.51cto.com/art/201007/210244.htm
发表评论
-
MongoDB创始人:项目经理应该把30%的时间用在编程上
2014-05-16 06:57 0本文的作者Eliot Horowitz是MongoDB的 ... -
redmine - 软件项目的催化剂
2012-05-17 17:21 2055redmine - 软件项目的催化剂 曾经有这样 ... -
职场管理中的蝴蝶效应-离职的蝴蝶效应,修改版
2012-03-19 23:28 3172终于把自己的机器内存升级到5G了,安装好64位WI ... -
Redmine 插件的整合-TestLink,mylyn,tortoiseSVN
2012-02-04 10:00 2252Redmine是一个灵活的开源项目管理工具, 它可以 ... -
Redmine 项目管理系统说明文档-ezwork同方数字城市软件技术公司
2012-02-04 09:42 1123简介 ̈Redmine是一个灵活的项目管理系统, ... -
如何避免项目管理黑洞-如何使用redmine
2012-02-01 16:50 3851项目中如下情景,是否似曾相识? 项目中的管 ... -
时间管理培训总结
2012-01-11 09:05 1436今天在部门进行时间 ... -
我的时间管理类培训PPT
2012-01-10 15:23 1697主要内容: 养成习惯,每天早 ... -
对于单表数据超过1亿的数据查询时候,必须默认时间段查询条件
2011-12-21 16:40 3267项目基本情况 最近系统碰到一个非常头疼的问题,数据库采 ... -
程序员们该如何避免十年后成为Loser
2011-11-07 13:25 17521、自己的户口档 ... -
需求在项目不同角色之间的区别
2011-11-04 09:20 1108有没有同感??? -
阶段化开发:增量和迭代
2011-10-15 16:03 16032.2.6 阶段化开发:增 ... -
软件生命周期模型-边做边改模型
2011-10-13 08:30 11831、什么是边做边改模型 当一个软件产品在没有规格说明 ... -
软件工程:生命周期模型介绍CHM下载
2011-10-12 07:38 13812.2.1 瀑布模型 2.2.2 V模型 2.2.3 ... -
[疑问]下属翅膀硬了就跳槽,咋办?
2011-08-25 09:56 5189问题: 作为一个部 ... -
大型网站架构演变和知识体系
2011-08-15 14:30 1185之前也有一些介绍大型网站架构演变的文章,例如LiveJourn ... -
CMMI复审评估总结
2011-08-15 10:02 4065本次从6月份开始评 ... -
开源协议的解释 MPL\MIT \Apache Licene 2.0 \LGPL \GPL \BSD
2011-08-03 13:58 42151、 MPL MPL是The Mozilla Pu ... -
基于Java的验证框架:talent-validate1.5发布
2011-07-26 09:34 2582因为公司项目的特殊情况,都是管钱的,不能有丝毫的差错,所 ... -
您公司的测试开发人员比例是多少?合理吗?看看微软、google是多少
2011-07-25 15:56 4381有个学者做个这方面的调查——Tester to D ...
相关推荐
C 语言的优缺点 C 语言是一种功能强大、使用广泛的编程语言,它具有许多优点,但同时也存在一些缺点。下面将详细介绍 C 语言的优缺点。 C 语言的优点 1. 简洁紧凑、灵活方便:C 语言只有 32 个关键字和 9 种控制...
下面将详细介绍模糊控制和模糊PID控制的优缺点。 ### 模糊控制的优点: 1. **无需精确数学模型**:模糊控制系统不依赖于精确的数学模型,这使得它非常适合于难以建立数学模型或模型过于复杂的控制对象。 2. **...
### C语言与汇编语言在单片机开发中的优缺点分析 #### 一、引言 随着嵌入式系统的快速发展,单片机作为其核心组件之一,在工业控制、消费电子等领域发挥着重要作用。而在单片机开发过程中,选择合适的编程语言至关...
下面将详细剖析市场上几种常用单片机的优缺点。 首先是51单片机,也称8051单片机,是一款经典的8位单片机。它的优点在于其简单易学,适合初学者;拥有按位操作的指令集,对位操作的支持非常强大;片内RAM的双重功能...
在IT行业中,编程语言的选择是至关重要的,不同的编程语言有着各自独特的优缺点,适用于不同的应用场景。这份名为"编程语言的优缺点共4页.pdf.zip"的压缩文件,很可能包含了对几种常见编程语言的全面分析,从性能、...
本教程将深入探讨Go语言的核心特性、语法结构以及其在实际开发中的优缺点。 一、Go语言核心特性 1. **简洁的语法**:Go语言设计简洁,易于学习,没有过多的复杂性,如C++或Java中的继承、多态等概念。 2. **并发...
- **技术能力**:比如,如果你擅长编程语言如Java或Python,可以通过具体的项目案例来证明这一点。 - **沟通能力**:通过分享与同事、客户有效沟通的经验来展示。 - **团队合作**:举例说明你在团队中的角色以及...
frameset与div布局的优缺点比较 Frameset布局是一种传统的网页布局方式,它使用多个iframe来实现分栏布局,每个iframe中可以包含一个独立的网页,从而实现多页面的重用。该布局方式具有以下优点: 1.可以实现多...
【标题】:主流的网站开发语言优缺点-ASP、JSP、PHP 三种技术比较 【主要内容】: 网站开发语言的选择对于构建高效、安全且可扩展的web应用程序至关重要。本文将对比分析三种主流的Web开发语言:ASP、JSP和PHP。 ...
在与各种其他编程语言比较时,Python展示了独特的特性和优缺点。以下是对Python与其他语言对比的一些关键点: 优点: 1. 易学性:Python的语法简单明了,适合初学者入门。它采用了接近自然语言的表达方式,减少了...
### SSH框架优缺点详解 SSH框架,即Struts + Spring + Hibernate这三种技术的组合,是Java Web开发中非常流行的一种轻量级架构模式。本文将深入探讨SSH框架中的Struts、Spring、Hibernate各自的优缺点。 #### ...
主流动态网页技术优缺点的比较 动态网页技术是指通过服务器端脚本语言生成网页内容的技术,目前市场上有多种动态网页技术,例如ASP、PHP、JSP、ASP.NET等。下面我们将对这些技术的优缺点进行比较。 ASP技术 ASP...
下面我们将深入探讨SSH框架的优缺点。 **一、Struts2** Struts2是基于MVC设计模式的Web应用框架,它继承了Struts1的优点并解决了其不足。其主要优点包括: 1. **灵活的拦截器机制**:Struts2使用拦截器来处理请求,...
以下是几种常见数据库的优缺点分析: 1. **SQL Server** - **优点:** 操作界面直观,适合Windows环境,易于使用。对于中小型企业,SQL Server提供了良好的性价比。 - **缺点:** 开放性不足,只能在Windows上...
### STRUTS2 优缺点分析 #### 一、STRUTS2 优点概述 **1. Action 实现灵活性:** - **STRUTS2 的 Action 设计更灵活:**与 STRUTS1 中 Action 必须继承自 `Action` 类不同,STRUTS2 允许 Action 作为 POJO(Plain...
### PLC的优缺点详解 #### 一、PLC的优点 **1. 配置方便** - **灵活性高**:根据控制系统的需求,用户可以轻松选择不同厂商的PLC、不同类型及所需的各种模块。市场上通常能够迅速购买到所需硬件,极大地提高了...