还在对 C 语言糟糕的内存管理咬牙切齿吗(垃圾收集器)?还在对各种乱七八糟的 NULL 指针调试得天昏地暗吗?还在对 C 语言蹩脚的异常处理内牛满面吗?
何不试试 Cyclone!
先用一个打开 passwd 文件的例子给大家看看,这是 C 语言版:
FILE *f = fopen ("/etc/passwd", "r"); if (f == NULL) { /* 一堆错误处理 */ } int c; c = getc (f); /* 又一堆错误处理 */
尤其是这样多了的麻烦劲,搞得我有时候想用 setjmp 来处理错误。
好了,看看 Cyclone:
FILE *f = fopen ("/etc/passwd", "r"); int c; try { c = getc ((FILE *@notnull)f); } catch { case &Null_Exception: printf ("Couldn't open /etc/passwd.\n"); exit (1); case &Invalid_arguments: printf ("Invalid arugment (%s)", s); exit (1); }
是不是很直观?其中还有一种叫做let的操作符,语法是 let 变量 = N;
也就是说,你不必去管变量类型了,在临时变量的时候,能稍微起一点作用(虽然有点鸡肋)。
其中一句简介,真是深得我心:“认真的C程序员可以写出来安全的程序,不过在实践中,相当多的C程序都不咋地安全。”还有,Cyclone程序会在编译时、链接时、运行时不断检查来确保安全。
还等什么呢?快去试试吧!
PS:目前最好的教程是User's Guide了。要用GCC4编译得用SVN里面的最新版。
PS2:我也只是新发现,从User's Guide里面摘抄了一些内容。注意这个东西不一定与C兼容。