虽然是借鉴了C语言的语法, 使用了Python语言的模型和运行环境, 但它是一个真正的*中国人自己完全自主发明创造的拥有自主知识产权的*(^_^)通用型脚本动态脚本编程语言, 而且是一个21世纪的编程语言, 在2012年这个世界末日之年正式诞生!
它能做什么?
它是通用型编程语言, 是一种动态语言, 是一种脚本语言, 可以用来做日常的文本处理, 也可以用来开发网络服务器和客户端, 可以用来做企业级开发... 总之, 只要Python能做的, 它就能做. 它和Python唯一的不同就是: 它是类C语法的! 这就避免了Python那种悬空的摇摇欲坠的混乱的代码风格的缺点, 有助于大型项目代码的开发.
而且, 它能复用所有的Python内置模块和所有你写出来的Python代码, 你只需要简单的import它们即可.
先来一个简洁的的例子吊一下你的胃口:
class A{ public a = 0; public static s = 1; function init(a){ this.a = a; print 'A init', a; } function f(a, b=1){ return a + b; } } print A.s; // 1 a = new A(1); // A init 1 print a.f(1, 2); // 3
补充一句: 大部分编程语言的某些看起来很奇特的写法, 都是可有可无的个人爱好的语法糖, 只有类C语法才是编程语言最精简的语法, 只有包, 类, 函数才是通用型编程语言最重要最根本的元素.
下载地址: https://code.google.com/p/cpy-scripting-language/
另外,楼主那个 for i in range(100000000): 暴露了楼主对 python 的一个基本的概念
–迭代器–不熟。 Reply
如果你认为高级语言的“语法糖”可有可无,要追求语言的精简的话,那么for也是可有可无的,因为有while就够了,进一步来说while也是可有可无的,有if和goto就够了。 Reply
用ruby可以写
attr_reader :a, :b, :c, :d, :x, :y
用c写实现看看,哪个简洁?
除非把c的宏引入进来,那又会违背你语言追求精简的初衷。
如果要讨论语言可以使写出的程序简洁到什么程度,我认为,在程序执行性能可以接受的情况下,自然是程序越简洁越好,更短的程序可以提升程序的可读性和减少bug数目。
c之所以长久不衰在于其和机器语言更接近所以可以使程序有优秀的性能,而并不是因为其精简的语法。且不说lisp,即使去掉了for和hile的c的语法子集也可以做同样的事情,而语法上比c更精简。那么为什么会有for和while?自然是为了增强语言的表达能力,而高级语言的多出的特性也是这个目的
这个语言继承了c的表达力不够强的语法,又不能获得c的性能,那么就有了我开始的问题,这个语言的定位是什么? Reply
bug的数目和出现频率和项目代码行数无关, 和单行代码长短无关, 只和其逻辑是否简洁, 思路是否清晰相关.
类c语法的 java/javascript/php/c# 都取得了巨大的成功, 这不仅仅是偶然. 既然语言本身支持上百个奇技淫巧, 但真正经得过时间验证也就那几个. 表达式不在多, 够用就行. Reply
你所列出的java/javascript/php/c#都提供了c所没有的lambda、闭包、反射机制,你把它们都归为类c语法,对它们是很不公平的
3. 所以我觉得现在很多的语言所具有的大括号和分号是历史原因,也之所以现在的新语言都不考虑使用大括号和分号了。既然缩进和对其是编程的基本要求,而通过他们已经可以表达出块结构了的话,那么让Python编程具有C语法的意义到底在哪里呢?你看看我想发明的这款语言,我们的想法是呈是180度的….https://github.com/alsotang/Tang
5. 创建对象也是对于函数的调用啊,调用的是构造函数,然后让一个变量名接受构造函数的返回值。况且按照约定来说,首字母大写的就是Class名了,那么调用一个类名开头的函数就是构造函数,这点甚至可以通过vim的好亮来进行函数和创建对象的区分,毕竟函数名是小写字母开头的。
6. 太巧了我只能说。我也觉得for in 是一种逆思维的语法,而且我更进一步认为这是外国人的思维方式,他们觉得for i in arr 很平常,而我们中国人需要的是for arr as i。这一点上,你的想法我表示赞同。但是就实现来说:我觉得foreach可以用for代替,while也可以用for代替,for(init;loop;incr)这个语法,在Python中没必要了,这个语法无论你怎么写,我都可以找到对应的简洁的 for i in range(num)[s:e:step]写法。
Wordpress确实没有自动发邮件通知我,回复的时候,还是麻烦你能发封邮件提醒一下我。另外,我有收到你去我博客的留言,我的技术博客是:http://fxck.it Reply
import time
for i in range(0, 100000000):
print i
time.sleep(1)
竟然报系统虚拟内存不足…
我Cpy的代码却能运行得只用了少得可怜的内存:
import time;
for(i=0; i<100000000; i++){
print i;
time.sleep(1);
} Reply
1. 现在的语言无论是脚本型(CoffeeScript)还是编译型(Go)都试图去掉分号与大括号。你这里倒好….反而把这些元素加到了Python之上来…
2. 把def 统一改为了function,不是在为难键盘吗…
3. 如果这语言硬是去掉了Python的缩进的话,我想知道,一句话代码:
function f(a, b=1){return a + b;} 。可以运行吗?
4. 隐藏了Python定义类时的self关键字并改成了this,那么,如果要定义类方法的话,改怎么写?静态方法呢?
5. public, static关键字倒还算是个小特点,extends关键字可就没必要咯。从__init__方法改成了init方法也还好,还不是语法糖-_-…..建立新object时,多加个new关键字难道不是把简单的事物变复杂和麻烦了?Ruby不要求写 obj = new Class(*args)是因为Ruby希望人们写 obj = Class.new(*args),比较符合它面向对象的原则;CoffeeScript要求写 obj = new Class(*args)是因为它底下的JS是这么干的;Go语言则与Python一样不必写new(注意Go语言是编译型噢)。这说明能省去new关键字的语言都在省了好不好….C语言中的new是为了说明对象是处在stack上而不是内存中,可Python中你根本没法定义东西在stack上啊。Java定义类时所用的new纯属多余,历史所限。
6. 如果你喜欢C语言语法的话,foreach(arr as k=>v) 这个语法我真心觉得不好。我希望是 for arr as k, v 即可。循环的时候
for bool
doSth()
即可,把while关键字给去掉。不过你的这个for arr as k => v1, v2的语法还是挺屌的哈。
7. printf不见得比Python的print 加上 "% (*args) "语法好在哪里啊。
8. stdin.cpy 里面那个实例,又printf又print的逻辑在哪里….
9. " 任何代码行数超过1000行的项目和软件, 语法糖的贡献都是零. 而超过300行代码项目和软件, 语法糖的贡献也几乎为零. 真正有贡献的是制定的规范和开发出来的类库." 我想说,如果把一门本来通过语法糖简化了很多输入的语言硬是加入了更多的限制的话,对于开发项目的贡献是否会小于零…
10. 这门语言的定义"类C语法, 通用型, 脚本",后两者是Python本来具有的,前者的是把缩进语法毁灭之后以更麻烦的C语法代替之后得来的。
纯学术探讨,为了我能收到您的回复,请您在回复之后通知一下我: alsotang#at#gmail.com Reply
1. 分号也许可以去掉, 用换行来替代分号的功能.
3. 其实, 缩进和对齐并不是Python的专利, 而是编程的基本要求.
5. 加入new的原因, 就是要区别函数调用和创建对象.
6. foreach(arr as k=>v) 这个是借鉴PHP的语法, 它的作用和 for-in 有些不一样, 增加了 for-in 所不包含的功能. 在迭代数组时, k就是下标, 在迭代字典时, k就是字典的key. 相比Python的 for k,v in d.items()简洁不少. 迭代数组时, 也不用再 index+=1. 而且"k=>"是可以省略的, 不需要可以不加上. 在看了ANTLR的手册时, 我才明白了我不喜欢 for-in 的本质原因, 因为 for-in 是一种 trackback 结构, 需要人看到 dict.items() 时要回溯到 k,v.
另: Wordpress应该能自动发邮件通知你吧, 要不是, 我明天再发邮件通知你. Reply
您可以参考这里:
http://en.wikipedia.org/wiki/Set-builder_notation Reply
我觉得您应该误解了python的for in语法吧?
(当然,我不保证我说的是正确的。)
以您的学历,应该知道数学上的 *集合* 吧?
在英语的表达中,对于一个元素在这个集合中 “{x | x ∈ A}“,
貌似就是用for x in A来表达。这个for,翻译出来更像是 *对于*。 Reply
那这个只提供基本元素的脚本语言的定位是什么呢? Reply
看上去和Facebook把PHP转成C++是一个路数。。 Reply
未来, 实现方式可以跳过Python代码, 直接生成Python字节码, 甚至可能改变Python的运行模型, 使其完全脱离Python. Reply