2008-02-15
动态语言碎碎念
关键字: 动态语言 groovy
动态语言很容易开发。
这一点好像大伙都已经认同了吧。ruby&rails的盛行,到groovy&grails的跟进,对开发效率的提升应该是主要的推动力。
前几天看了个pdf,摘录一个其中的例子,是用来过滤list中长度超过3的字符串的。相信大家能有更清晰的认识。
java版
groovy版
groovy被称作新一代的java,更好的java不是没有道理的。
动态语言是弱类型的,不够安全。
这一点则是见仁见智。
弱类型的语言当然导致了编译器无法帮你发现因为类型导致的错误,也许还会让你的代码不够健壮。但是这样做却也较少你的代码的侵入性。大家也许会碰到有时候不知道该给一个变量什么类型的情况吧。有了弱类型的语言,你将不再有这样的烦恼,你不再需要定义一大堆接口来保持代码的适应性了。另外一方面,动态语言结合单元测试,也可以让你的代码足够安全和健壮。
这一点好像大伙都已经认同了吧。ruby&rails的盛行,到groovy&grails的跟进,对开发效率的提升应该是主要的推动力。
前几天看了个pdf,摘录一个其中的例子,是用来过滤list中长度超过3的字符串的。相信大家能有更清晰的认识。
java版
import java.util.List;
import java.util.ArrayList;
class Erase {
private List filterLongerThan(List strings, int length) {
List result = new ArrayList();
for (int i = 0; i < strings.size(); i++) {
String s = (String) strings.get(i);
if (s.length() <= length) {
result.add(s);
}
}
return result;
}
public static void main(String[] args) {
List names = new ArrayList();
names.add("Ted");
names.add("Fred");
names.add("Jed");
names.add("Ned");
System.out.println(names);
Erase e = new Erase();
List shortNames = e.filterLongerThan(names, 3);
System.out.println(shortNames.size());
for (int i = 0; i < shortNames.size(); i++) {
String s = (String) shortNames.get(i);
System.out.println(s);
}
}
}
groovy版
def names = ["Ted", "Fred", "Jed", "Ned"]
println names
shortNames= names.findAll{ it.size() <= 3 }
println shortNames.size()
shortNames.each{ println it }
groovy被称作新一代的java,更好的java不是没有道理的。
动态语言是弱类型的,不够安全。
这一点则是见仁见智。
弱类型的语言当然导致了编译器无法帮你发现因为类型导致的错误,也许还会让你的代码不够健壮。但是这样做却也较少你的代码的侵入性。大家也许会碰到有时候不知道该给一个变量什么类型的情况吧。有了弱类型的语言,你将不再有这样的烦恼,你不再需要定义一大堆接口来保持代码的适应性了。另外一方面,动态语言结合单元测试,也可以让你的代码足够安全和健壮。
评论
oijava
2008-02-22
java版
String[] ss={"Ted", "Fred", "Jed", "Ned"};
System.out.println(Arrays.toString(ss));
List<String> shortNames=new ArrayList<String>();
for(String s:ss){if(s.length()<=3)shortNames.add(s);}
System.out.println(shortNames.size());
for(String s:shortNames){System.out.println(s);}
dexter_yy
2008-02-20
javascript:
for(var i=0,names=["Ted", "Fred", "Jed", "Ned"],shortnames=[],l=names.length;i<l;i++)if(names[i].length<=3)shortnames.push(names[i]);
for(var i=0,names=["Ted", "Fred", "Jed", "Ned"],shortnames=[],l=names.length;i<l;i++)if(names[i].length<=3)shortnames.push(names[i]);
hushuo
2008-02-17
动态语言是不是也包括了javascript呢?
如果这样的话,42.8%就不奇怪了。
如果这样的话,42.8%就不奇怪了。
pupi
2008-02-16
动态语言和静态语言孰优孰劣,有太多的讨论。javaeye就有不少。这也从另一方面说明了,他们各有大批拥趸。
下面是tiobe统计的动态语言和静态语言使用比例的数据,其中静态语言比动态语言领先15个百分点,考虑到动态语言只是近些年才开始被大量开发者接受,取得这样的比例已属不易。
当然,相比07年,08年静态语言的使用率并未下滑,说明其方兴未艾。相信,也有很多的开发者同时使用动态和静态语言的。
Category 2008年2月 2007年2月
静态语言 57.2% -0.2%
动态语言 42.8% +0.2%
下面是tiobe统计的动态语言和静态语言使用比例的数据,其中静态语言比动态语言领先15个百分点,考虑到动态语言只是近些年才开始被大量开发者接受,取得这样的比例已属不易。
当然,相比07年,08年静态语言的使用率并未下滑,说明其方兴未艾。相信,也有很多的开发者同时使用动态和静态语言的。
引用
Category 2008年2月 2007年2月
静态语言 57.2% -0.2%
动态语言 42.8% +0.2%
发表评论
- 浏览: 166784 次
- 性别:


- 详细资料
搜索本博客
我的相册
37signals
共 9 张
共 9 张
最新评论
-
转贴 - 关于公钥,私钥和 ...
原理解释的透彻了,能不能提供具体的实现
-- by Joo -
请教一个tomcat的问题 -- ...
<Context path="/project" reloadable=" ...
-- by flynetcn -
请教一个tomcat的问题 -- ...
flynetcn 写道抛出异常的爱 写道flynetcn 写道怎末我在work目 ...
-- by 抛出异常的爱 -
请教一个tomcat的问题 -- ...
抛出异常的爱 写道flynetcn 写道怎末我在work目录下找不到编译后的se ...
-- by flynetcn -
请教一个tomcat的问题 -- ...
flynetcn 写道怎末我在work目录下找不到编译后的servlet文件,只 ...
-- by 抛出异常的爱






评论排行榜