Linux里面homepod放歌卡的是什么内容?

C 和 Pascal 曾经不太像,但是越来越像。

现代 C 语言借鉴了很多 Pascal 的概念:
例如,古老的 C 语言的类型检查很弱,没有函数原型。但今天的 C/C++ 语言支持函数原型(而且不
提倡用旧的函数风格),类型检查机制几乎和 Pascal 一样严格。古老的 C 语言曾经只能靠指针存取外
界的变量,很不安全,但今天 C/C++ 的引用参数则是相当类型安全的。而引用参数和 Pascal 的 var 参数如出一辙。

还有几个人认识?一个软件就是一个 program begin end,不能分模块,岂不要疯掉?
现代 Pascal 语言也借鉴了许多 C 语言的概念,如缺省参数值、无变量变体记录:

说这么多相似,其实也衬托了当年的不相似。语言的发展趋同,不同的( {} 与 begin..end )往往都

今天还有的比较重要的区别: 1. Pascal 支持子程序嵌套,C 否。因为 C 的设计目标之一就是与机器语言的结构直接对应。
2. Pascal 子程序分过程/函数,C 只有函数。
3. Pascal 类型更严格,如 char, boolean 都是特殊的枚举类型,而枚举与整型不是一回事,必须用 Ord() 转换。
5. C/C++ 的模块机制是头文件的文件包含+*.obj文件的连接,文件包含属于文本操作,编译速度很慢。
而 Pascal 是 unit 的连接,二进制操作,编译速度飞快(对开发大型软件还是很重要的)
6. C 语言的结构/数组的初始化只用给出数值,而且元素个数可以比定义的少;而Pascal必须明确指出分
量名称,个数严格对应:
8. C 编译预处理功能比 Pascal 的强大,实践中也很重要(它弥补了 C 编译器的许多不足)。
9. 很容易被忽视也很重要的一条:两者的表达式不同。
9.1. C/C++ 的表达式被赋予了太多的使命,连赋值语句本身也是表达式,a = b 同时返回 a,因此
可以写 a = b = c; 而 Pascal 对赋值号被严格当作一个规定好的操作:赋值,别无其它,你不能写 a := b := c。

归根结蒂,C 贴近机器,骨子里把操作数当作“二进制”处理(这有时是优点,尤其是跟硬件打交道时);Pascal 贴近数学,尽量以数学的视角看待数值。 10. 至于 C 的 for 循环如何强大,Pascal 的 for 循环如何循规蹈矩,这些都不是太重要。========================================================
我认为最大的区别在于c中的函数内部不允许定义其他函数
但是pascal的过程 函数中允许存在
另外赋值 c用=pascal用:=
关于for循环c可以随意给条件中的变量进行增加和减少如
但是pascal中每次只能增加1(不知道这一点是不是正确,可能跟vb搞在一起了 你就参考一下吧)

从oop来说他们还有些区别。

1. pascal不支持多重继承,只能由单一的父亲,而c++允许多父亲。
如果大家用果BC提供的TV编程,那么一定看过TV的源代码,你会发现他和delphi的vcl多么类似,但是他
毕竟是c++写的,采用了很多多重继承,delphi后来重新写了她。
从oop的未来发展来看,并不提倡多重继承,java类似pascal也不支持这样操作,这从根本上降低了类的复
2.pascal原来没有重载、多态这些该概念,现在的borland把pascal完善的已经脱胎换骨了。

3.pascal至今仍没有c++的友元。他所谓能做到的只是可以访问同一个unit的其他类的私有变量。现在的编
程中,大家应该尽量避免使用友元了。

4.pascal的所有类都是TObject的子孙,实际你什么都不写
这样所有的类指针都能用TObject来转换,而且他在TObject里面已经做到了一些基本的类的初始化、析
构和操作符重载。这是c++的不及。
5. 所有的pascal 必须显式声明构造函数,即使你里面什么也不写。而c++可以没有。
6. pascal所有的类都是在堆中申请,统一管理,各个类的互相操作都在堆里面进行。
而c++却可以在堆、栈和数据区里面存在,这样各个不同区域的类相互访问,成了c++需要解决的一个复杂
问题。 7. 基于上面的原因。
再C++ 里面可以写成
但是在pascal里面就必须写成

8.还有个问题,就是字符串。
现在可以说pascal的字符串操作性比c++要强大。
他可以直接的+,而c++却不行,这得主要原因是c++太接近底层操作了。

pascal的字符串 分为长字符串和短字符串,他们的开始string[0],这个[0]里面实际保存的是字符串的长
度,长字符串是4个字节,表示4G长度的字符串,短的1个字节,最多长度255,而不像c++是结为\0表示结
pascal这样的好处很多,比如你想得到一个字符串的长度,c++需要扫描整个字符串,直到遇到\0才能统计
出来大小,而pascal直接读[0]就行了,这个效率你可以从编译后产生的汇编代码来看。
还有一个好处就是对于多字节字符串支持,比如unicode,由于是16bit的,里面会出现很多\0,这就与
c++的字符窜的结束符号冲突,c++为了解决不得不变成\0\0来表示结束。而pascal却不用任何变化。 10......还有好多,我一时想不起来了

我要回帖

更多关于 homepod突然放歌 的文章

 

随机推荐