设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 IT综合资讯 查看内容

关于C语言:我喜欢和讨厌的十件事

2013-11-13 09:45| 发布者: joejoe0332| 查看: 2322| 评论: 0|原作者: 伯乐在线|来自: 伯乐在线

摘要:   前言:最近有个家伙抱怨道“为什么我还要再用C?”-虽然我不同意他的说法,但至少他随口提到如果你“在一台拇指大小的电脑”上编程,或者为一门语言写引导程序,那么可以用C语言。要我说,写设备驱动,或者特定 ...

  前言:最近有个家伙抱怨道“为什么我还要再用C?”-虽然我不同意他的说法,但至少他随口提到如果你“在一台拇指大小的电脑”上编程,或者为一门语言写引导程序,那么可以用C语言。要我说,写设备驱动,或者特定平台的内核,不管怎么说都可以使用C。


  几年之前,我用C语言写下了我的第一个网络程序,但我并不推荐这么做。现在,我只用P打头的,尤其是P-y打头的语言写网络程序(译者注:绕什么圈子,不就是Python嘛…)。但在当时,我刚从DOS和TSRs的世界中出来,在那儿用上10KB的RAM我都会觉得大得惊人。


  现在我是一名Web开发者,但是仅限于晚上。白天我为嵌入式微处理器编写固件,因此,C依旧是我所选择的语言。我所说的微处理器是那种嵌入烤面包 机,或者其他类似设备中的处理器,只有大概64KB的代码空间以及2KB的RAM。因此,可供选择的语言基本上就只有汇编和C了。(也可以是Forth, 不过那是另外的故事。)


  然后,我渐渐发现越是多用C,就越不觉得它讨厌了。因此我就想着要给这个世界最常用的系统级程序语言写一些颂词。


  以下分别是关于C语言我喜欢五件事和讨厌的五件事。请随意在底下的评论栏里加上你们自己喜欢或讨厌的事情。


1.K&R(喜欢)


  Kernighan & Ritchie 写的C程序设计语言是关于C语言最好的书,而且我估计它也是关于编程的最好的书之一。简洁明了,都是有用并且重要的例子。这是一本非常好的书,同时也是一个非常好的参考。


  甚至就连序言都非常好。在此引用一句,“C不是一门庞大的语言,因此不应该用一本厚重的书来诠释。”如果所有的编程教程都像这本书一样把长度限制到270页,它们会好很多。K&R的简洁明了、点到为止,很可能是C语言的成功所不可或缺的。


  另一本给我喜爱的类似的编程教材是Leo Brodie所著的《Thinking Forth》。当然,肯定还有其他非常好的书,像是SICP之类的,只是我还没有读过罢了。

 

2.它十分简明(喜欢)


  事实上,C语言作为一门简明语言是一个实实在在的福利。想要学习C,你只需了解它的类型,熟悉流程控制,处理好指针,然后你基本上就已经掌握它了。剩下的就仅仅是函数了。事实上,K&R利用这个低级的命令式语言,仅花费11行就实现了qsort(),不得不说这是对C语言简明性有力的证明。

 

3.IOCCC(喜欢)


  你或许会觉得我疯了,不过如果你足够上进,International Obfuscated C Code Contest可能那儿是关于计算机科学最好的老师之一。算我开的一个小玩笑,不过我的确认为众多黑客都在不停挑战,并且创造了很多值得一谈的功绩。


  其中让我确实学到很多的就是OTCC,Fabrice Bellard所写的“混淆的小型C编译器”。从中我学到了关于编译器设计的知识,主要是C语言编译器不必是340万行代码的庞然大物。同时,我也从Let’s Build a Compiler中获益,并静下来写了一个迷你的由C到Forth的编译器。

 

4.变量的定义与使用形式相似(喜欢)


  这一点对记住如何定义十分复杂的事物非常有用,举个例子,一个指向包含十个整形的数组的指针应该是int *api[10]还是int (*pai)[10]呢?像你使用它的方式一样定义它即可,只需要记住[]操作符的优先级高于*(很自然就可以记住),然后你就明白那个括号是需要的了。(译者注:前者是指针数组,包含十个指向整形的指针。)

 

5.它编译出的“hello, world”体积很小(喜欢)


  尤其是对嵌入式编程,这一点简直棒极了。C语言之上没有一个体积庞大的运行时,在很多嵌入式处理器上,一个什么都不做的程序一般只会编译出3到4个byte。一个完整的“hello, world”程序,甚至是在Windows XP下,都只会编译出1.5KB大小(使用Tiny C Compiler,它非常合适与做小型可运行程序)。


  我认为,如果像Python一样的其他语言能够在这一点上赶上C,甚至是C的一部分,他们在嵌入式的世界中就会更加出彩。

 




酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部