首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

小弟我想设计一门语言

2012-03-26 
我想设计一门语言想设计一门语言的念头早就有了,主要是对现在的语言不满意。最近用C语言,更是感觉到了这一

我想设计一门语言
想设计一门语言的念头早就有了,主要是对现在的语言不满意。最近用C语言,更是感觉到了这一点。

我想设计的这门语言,类似C语言,但是也有一些不同,算是C语言的改进版吧!我把我的设想说出来,大家看看有没有价值。

一、该语言中逻辑值与数学值完全不同,逻辑值只有两个值:TRUE和FALSE,分别用1和0来表示。有人说,这不和C语言一样吗?不同!这种语言中逻辑值不能参与数学值的计算。以C语言中,逻辑值可以直接参与数学值的计算,这就带来了很多错误,最典型的就是if (a=b)这类的错误了,本来应该是if (a==b),但是人们在长期的数学学习以及BASIC语言的影响,使得人们极易犯这样的错误,由此而浪费在查错上的时间和精力不知有多少。在这种新的语言中,逻辑变量与数学变量完全是两个概念,不能混合运算。这样,如果发生了if (a=b)这样的错误,编译器立即就可以查出来。

不!在这种语言中,可以使用if (a=b)这种表达方式,因为在if后面跟的肯定就是逻辑表达式,该语言规定在这种情况下,“=”号是关系运算符,而并非赋值运算值。

二、该语言中允许出现 1<a<b之类的表达式,这非常符合人类的习惯和数学上惯用的表达方式。编译器将其解释为1<a && a<b

三、该语言不允许无意义的语句。在《C专家编程》中讲了一个价值三千万美元的BUG,最后查出是一条这样的语句a==X;,其实应该是a=X;,是一条赋值语句。但打字员手无意中多打了一个"="号,变成一个关系表达式了。这样的语句什么也没有做。但是C语言允许这样的语句,该书吹嘘说这表明C语言的表达能力“实在是强”,其实,这根本不能说明C语言表达能力多么强。恰恰说明C语言的的弱智和低级。以及对错误的检查机制是多么的松懈。不要认为这给了程序员自由,是优点。有的自由我们是需要的,有的自由其实是给了错误以存在的土壤。

四、在switch语句中,每个case后面不仅可以跟常量,而且可以跟变量,不仅可以跟一个具体的值,而且可以是一个范围(关系表达式表达),并且每个case语句后面不需要break;语句即可跳出switch。C语言中每个case语句后都要跟一个break实在是弱智,在绝大多数情况下,我们需要它直接跳到switch语句后面,而不是顺序执行。

五、函数不需要原型,编译器可以直接从后面函数的定义处找到函数类型及参数数量和类型。有了定义,原型实在是没有存在的必要,只是多打一遍而已,而且容易出错。

先写这么多,以后再补充。


[解决办法]
~~~~

lz, 你其实适合用pascal(delphi) 之类较强类型的语言,至少是类型严格的语言。

c 的优点,就是缺点。指针和弱类型 --- 在我的理解里,这是c 语言之所以成为c 语言的根本,这是c 灵活的根本所在。这个到底是好是坏,要根据人来看,根据要开发的项目来看。

c 不是高级语言,它叫“中级语言”,它就比汇编的好处,多了一些“自然”的表达而已。

你说的前面4条改进大概就是针对我上面说的。c 不是万能的,没有一种语言能满足各种需要。实际开发中,很少有人会拿c去做数据库软件。反过来也没人会拿pb 去开发单片机,对吧。
(c++ 对类型的检查,比c 严格了一些,这让我不是很爽,呵呵。)

每一种语言都有自己的特色,你把这些特色混在一起,我不觉的是改进。我觉得是丢失了c 本质的东西。

至于你说的第5点,是你还没明白函数声明的意义。不同人在不同的地方开发,你让编译起到哪里去从定义中找
原型?

热点排行