第194章 C专家编程
追溯SCI论文数成为科研考核量化标准的历史,我们不难看出,从某种程度上讲,SCI“逼迫”着中国科学家向国际核心学术期刊投稿,把自己的科研成果放到国际科学大展台上,接受全世界科学家的评判。
正如一位科学家所说:“这是中国科学家走向国际的必由之路。”
虽然说法各不相同,但是制度这种东西,轮不到章杉操心~
他现在要做的事情是了解规则,以及充分的运用规则。
而不是去当规则的破坏者~
虽然在写字间突然get到系统的彩蛋:
“宿主在完成0级论文,故而在宿主完成论文骨干部分的情况下,可由系统自动生成完整的论文~
说明:该效果仅仅在宿主位于系统所赠的写字间类建筑方可生效。”
让章杉有点意外,但这点小状况并没有阻止章杉前进的步伐。
紧跟着章杉按照原计划开始巩固教材上的知识~
说是巩固教材上的知识,章杉并没有死捧着课本阅读!
而是从在书房里掏出一本《C专家编程》阅读起来。
虽然这本书算上附录也不过才291页!
但却被无数相关从业人员纷纷推荐~
大家好 我们公众 号每天都会发现金、点币红包 只要关注就可以领取 年末最后一次福利 请大家抓住机会 公众号[书友大本营]
这本书展示了最优秀的C程序员所使用的编码技巧,书中专门开辟了一章对C++的基础知识进行了介绍。
书中对C的历史、语言特性、声明、数组、指针、链接、运行时、内存以及如何进一步学习C++等问题进行了细致的讲解和深入的分析。
全书撷取几十个实例进行讲解,对C程序员具有非常高的实用价值。
本书可以帮助有一定经验的C程序员成为C编程方面的专家,对于具备相当的C语言基础的程序员,本书可以帮助他们站在C的高度了解和学习C++。
这恰恰比较契合章杉的情况,章杉当即就开始了对这本书的阅读。
书的开篇就吸引了章杉,倒不是因为这本书一开始就是什么宏伟的叙述~
恰恰相反一开始的叙述是这样的:
“听上去有些荒谬,C 语言的产生竟然源于一个失败的项目。1969 年,通用电气、麻省理工学院和贝尔实验室联合创立了一个庞大的项目--Multics 工程。该项目的目的是创建一个操作系统,但显然遇到了麻烦:它不但无法交付原先所承诺的快速而便捷的在线系统,甚至连一点有用的东西都没有弄出来。
虽然开发小组最终勉强让 Multics 开动起来,但他们还是陷入了泥淖,就像IBM 在 OS/360 上面一样。他们试图建立一个非常巨大的操作系统,能够应用于规模很小的硬件系统中。Multics 成了总结工程教训的宝库,但它同时也为 C 语言体现“小即是美”铺平了道路……”
虽然这些话都是比较空洞的讲述历史,但章杉恰恰就吃这一套~
对于上来就用极其专业的语言来讲述C语言该如何如何的,章杉半点好感都没有!
良好的开头是成功的一半~
不知不觉中,章杉便入了迷~
作者还是十分较真的,在书里认真地探讨了是先有C语言还是先有UNIX呢?
说起这个问题,人们很容易陷入先有鸡还是先有蛋的死循环中~
然而,作者讨论的不是家禽趣闻,而是编程故事。
这本书中作者认真地指出,UNIX比C 语言出现得早。
这也是为什么 UNIX 的系统时间是从 1970年1月1日起按秒计算的,它就是那时候产生的啊~
不过说起来这本书里面描写C历史的篇幅是相当有限的!
之后则完完全全的干货满满
“尽量不要在你的代码中使用无符号类型,以免增加不必要的复杂性。尤其是,不要仅仅因为无符号数不存在负值(如年龄、国债)而用它来表示数量。尽量使用像 int 那样的有符号类型,这样在涉及升级混合类型的复杂细节时,不必担心边界情况(如-1 被翻译为非常大的正数)。只有在使用位段和二进制掩码时,才可以用无符号数。应该在表达式中使用强制类型转换,使操作数均为有符号数或者无符号数,这样就不必由编译器来选择结果的类型。”
“许多操作数类型为算术类型的双目运算符会引发转换,并以类似的方式产生结果类型。...如果其中一个操作数的类型是 unsigned long int,那么另一个操作数也被转换为 unsigned long int。其次,如果其中一个操作数的类型是 long int,而另一个操作数的类型是 unsigned int,如果 long int 能够完整表示 unsigned int 的所有值,那么 unsigned int 类型操作数被转换为 long int,如果 long int 不能完整表示 unsigned int 的所有值,那么两个操作数都被转换为 unsigned long int。再次,如果其中一个草所属的类型是 long int,那么另一个操作数被转换为 long int。再再次,如果其中一个操作数的类型是 unsigned int,那么另一个操作数被转换为 unsigned int。”
“……”
“除了递归调用之外,堆栈并非必需。因为在编译时可以知道局部变量、参数和返回地址所需空间的固定大小,并可以将它们分配于bss段。BASIC,COBOL和FORTRAN的早期编译器并不允许函数的递归调用,所以它们在运行时并不需要动态的堆栈。允许递归调用意味着必须找到一种方法,在同一时刻允许局部变量的多个实例存在,但只有最近被创建的那个才能被访问,这很像栈的经典定义。”
尽管动辄长篇大论,但有一说一,这本书的写作风格还是很舒服的~
基本上书中的内容都是循序渐进的。
而不是和《手把手教你学XXX》/《XXX从入门到精通》这类书一般,章节难度布置的毫无规律可言!
章杉很喜欢这本书11.18的章节名——《如果我的目标是那里,我不会从这里起步》
按照书中的话“编程语言的主要目标是提供一个框架,用计算机能够处理的方式表达问题的解决方法,编程语言越是能体现这个原则,就越成功……”
在这句话的指引下,章杉对过往学过的种种编程语言有了些新的见解。
尽管这种认知并不意味着质变,但正是一点点量变的积累才酝酿了质变!
https://www.biqivge.cc/book/25833/658812331.html
请记住本书首发域名:biqivge.cc。笔趣阁手机版阅读网址:m.biqivge.cc