恭喜,你发布的帖子
发布于 2022-09-19 16:47:04
35楼
拼凑一些最后的结贴语:
把C语言和Smart的编程语言比较是不妥的,毕竟C语言强大,但它们也有一些相似性,或者说Smart的编程风格部分的继承(base),并重新定义了(override)C的某些风格.这个帖子对应着<【探讨】子程序多处调用,但又不得同时调用的问题>.
很多资料说指针以及Char类型(8bits位的字节byte)是C的灵魂.而在C语言里面对声明类型的解读有时足以”劝退”一些入门者比如对下面这个声明的解读const* (*s(int sig,void(*func[3])(int)))(int)虽然是不提倡做这样的声明,但还是会在好些地方看到这种类型声明;而在Smart里面由于编译器的原因可以没有这些声明,没有了这些"烧脑"的类型声明Smart的编程语言比C语言"和蔼"多了,一般来讲Smart的指针基本可以看成是void*型的"万能指针":void*指针是一个可以指向任何数据类型的指针,但是我们暂时先不明确的声明定义它指向的是什么类型;在解引用的时候,先进行类型转化到我们想要的类型!这也类似于C++讲的泛型,它也可能对应着一些环境中的不定长结构体数组/不定长UDT数组/不定长的引用,C#的集合里氏转换......;而且Smart几乎每一条指令基本都带有对(void*型的指针)强制类型转换的作用:就是这些指令在解引用取内容时以指令操作数类型来确定(void*型的指针)指向的数据类型,比如我用到浮点加法:就把取到的指针内容强制的看成是浮点数,至于正不正确取决于用这条指令的人.
把 "动作数据化"是很多编程语言加强的方向之一:它要求把函数(方法)这些有"动作的过程"完全看作成数据,而中级C语言的函数指针(类似委托)初步具备"动作数据化"的可能,因此它也是很重要的一个技巧.
不恰当的比喻:(1)博途编译环境以及(2)Smart的编译环境类似于(1)规范安全高效(2)自由开放并包这两种风格;而这两种交互风格又类似(1)IOS和(2)Android;编译风格类似(1)C#/JAVA和(2)C/C++;性价比类似(1)阳春白雪和(2)下里巴人.它们都是有自己的"市场".
请填写推广理由:
分享
只看
楼主