网上看到很多评论说groovy 是个很好用的脚本语言,周末去下了一个回来看看。语法好像和java有些接近,不过松散了一些,有好也有坏吧。遗憾的是没有IDE,只好在editplus上面配了个groovy工具组,添了运行、编译和控制台三个命令进去,然后开始照着手册敲代码。
读书的时候就换过好几次开发语言,LOGO, BASIC (在APPLE II 上面的那种呵呵), TRUE BASIC, QUICK BASIC, TURBO PASCAL, TURBO C, TPW, BC++, DELPHI每次换一种语言总是这样几个step:
1、 hello world(看看开发环境) 2、 99乘法表(看看循环、格式化输出)3 做个比较复杂点的程序,看看过程调用、循环、判断这些基本的语言特征。
好些年没有学新语言了,还是先试试这三板过时的(面向对象、数据库、网络服务都没有涉及到)斧头还能不能砍得了东西吧。
1 hello world
脚本语言就是方便,一点上下文都没有,一个println就搞定了
2 99乘法表
1
def i=0
2
def j
3
while(i<9)
{
4
i++
5
j=1
6
while(j<=i)
{
7
print(j+"*"+i+"="+(i*j)+"\t")
8
j++
9
}
10
println()
11
} 脚本语言就是松散,分号加不加都可以。语法和数据类型好像都跟java差不多。
3 写个复杂一点的例子。前两天看《程序员法则》刚好看到提起了著名的八皇后问题,就写个八皇后吧:
1
int q=8
2
int[] i=new int[q]
3
int count=0
4
long t = System.currentTimeMillis();
5
scan(0)
6
println("totle results:"+count)
7
println("totle time:"+(System.currentTimeMillis()-t));
8
def scan(n)
{
9
if (n==q)
{
10
println(i.toList())
11
count++
12
return
13
}
14
i[n]=0
15
while(i[n]<q)
{
16
i[n] = i[n]+1
17
if (check(n))
18
scan(n+1)
19
}
20
}
21
def check(n)
{
22
if (n>0)
23
for (j in 0..<n)
24
if (i[j]==i[n] || i[j]-i[n]==j-n || i[j]-i[n]==n-j )
25
return false
26
return true
27
}
呵呵,典型的面向过程,全局变量都弄出来了。运行一下还满快的。
在blogjava贴程序的时候groovy的一个语言符号“...”(23行)被替换成图片了,不过本来这个符号也已经开始被淘汰了,用“..<”