2012年5月12日星期六

Go语言:这个世界需要另外一门语言?

一直对于语言这个东西充满着好奇心,前辈常常会教导后辈:“c语言是精华语言,如果你精通了它,比如类似的语言Java,C++等,都是小kiss诸如此类的警世名言”,在我这行不通的,喜欢鼓捣,虽然不是很精通:)

关于Go语言的描述,来自维基百科:
Go是Google开发的一种编译型,并发型,并具有垃圾回收功能的编程语言。罗伯特·格瑞史莫(Robert Griesemer),罗勃·派克(Rob Pike)及肯·汤普逊于2007年9月开始设计Go语言,Go语言是基于Inferno操作系统所开发的。Go语言于2009年11月正式宣布推出,并在Linux及Mac OS X平台上进行了实现。Go 1(2012/03/28发布)是Go语言开发的一个主要里程碑,它为Go程序和项目提供了一个稳定的平台。

关于Go语言的特点:
Go编程语言是一个开源项目,其目的是提高开发人员的生产效率。Go语言的特点是表达力强、简明、整洁和高效。可以使用它的并发机制轻易地编写运行在多核或网络计算机上的程序,其新型的类型系统使程序的构建变得更加灵活和模块化。Go程序能快速地被编译为机器码,并且具有垃圾回收和运行时反射功能。它是一个快速的、静态类型的、编译型的语言,但使用起来却像一个动态类型的、解释型的语言。

祖师爷教导我们,学习一门语言的最简洁的途径就是用它,好,let‘s go:)

2012年5月10日星期四

Python解惑:main方法?

最近由于工作的需要,开始了Python的修炼,一门语言有一门语言的规则,Python也不例外;自己修炼了那么久,忽然发现了一个现实的问题,Python的main方法怎么玩的?为什么一个py程序,没有main方法,也可以运行?

下面来自于前辈的一些说法,很是解惑,下面就摘取一下:

1.http://blog.csdn.net/noodies/article/details/6034105
在C/C++/Java中,main是程序执行的起点,Python中,也有类似的运行机制,但方式却截然不同:Python使用缩进对齐组织代码的执行,所有没有缩进的代码(非函数定义和类定义),都会在载入时自动执行,这些代码,可以认为是Python的main函数。

每个文件(模块)都可以任意写一些没有缩进的代码,并且在载入时自动执行,为了区分主执行文件还是被调用的文件,Python引入了一个变量__name__,当文件是被调用时,__name__的值为模块名,当文件被执行时,__name__为'__main__'。这个特性,为测试驱动开发提供了极好的支持,我们可以在每个模块中写上测试代码,这些测试代码仅当模块被Python直接执行时才会运行,代码和测试完美的结合在一起。

2012年5月9日星期三

用Python计算身份证校验码

最近在疯狂的恶补Python(少壮不努力,长大编程序),偶然发现一个仁兄的文章,大喜过望,转过来了,再一次印证了Python的强大、便利,言归正传,转贴地址: 用Python计算身份证校验码

原来的天朝良民证是15位,构成如下:
1~6位:地址码。采用的是行政区划代码,可以去统计局的网站查。
7~12位:生日期码。构成为yymmdd。
13~15位:顺序码。每个地区出生人口按顺序递增,最后一位奇数分给男的,偶数分给女的。

18位则有2点改动:
1.生日期码变为8位,构成为yyyymmdd。
2.增加校验码,即第18位。按照ISO 7064:1983.MOD 11-2校验码计算。

计算方法很无聊:

    将身份证号码的前17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
    将这17位数字和系数相乘的结果相加。
    用加出来和除以11,得到余数。
    余数的结果只可能为0 1 2 3 4 5 6 7 8 9 10这11种,分别对应的最后一位身份证的号码为1 0 X 9 8 7 6 5 4 3 2。

弄懂这个后,很快就能写出Python的计算程序了: