随想录(c语言的优缺点)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com


    不知道现在的同学用什么编程语言来入门的?对于我们这一代人来说,甚至是90年代读大学的同学来说,c语言、汇编语言都是入门开发的一门基础功课。c语言的语法很简洁,很多学编译课程的朋友都喜欢拿它来进行练手。但从另外一方面来说,c语言也很复杂,使用上要十分小心谨慎,稍不注意就可能down掉程序。所以,究竟c好不好用,就看各位的想法了。下面讨论的,主要是个人认为的优缺点,供大家参考。


优点:

1、学习的人很多。这在公司招聘的时候是一个优势。

2、适合几乎所有的平台。几乎所有的os都支持c语言开发。

3、适用于底层、中层、上层开发。不管是os、compiler,还是db、web server,亦或者是app,c都可以担任开发。

4、第三方库最多。由于历史的积累,c的开发库几乎是最多的。当然其他语言,比如python也很多。

5、开发效率最高。c编译生成的都是会编代码,效率肯定比虚拟机要好一些。


缺点:

1、内存空指针问题,这个问题老生常谈。

2、内存越界,不管是堆越界、还是栈越界、全局数据越界,一旦发生,debug很困难。

3、内存泄漏,编写server最容易出现这个问题。

4、死锁。这个问题不一定是c的问题,其他编程语言也有。但是c出现的机会更大。

5、嵌入式汇编。编写kernel时需要中断、自旋锁、定时器、抢占、乱序、内存屏障,编写十分复杂。

6、句柄泄漏。这个在linux上面比较常见。

7、算法库不多,不像c++的stl,或者是java的算法库,大多数算法要自己编写。

8、优秀的人太少。因为c威力巨大、有很多的风险,所以可以灵活使用、达到nginx或者lighttpd水平的人甚少。


    就个人经验而言,特别是上层开发来说,内存问题经常是困扰程序员的大问题。正因为如此,设计师才开发了很多的脚本语言和虚拟机语言。不管是java,还是python、js,它们开发上层代码都是很不错的选择。但是如果是底层软件、算法软件、db软件、web server等等,c语言还是拥有绝对的优势,这主要体现在执行效率上面。


    然而对于个人来说,学习c再怎么努力都不为过。同样,不可否认,对于公司或者企业来说,c本身隐藏着巨大的风险,一个公司也不可能招聘到那么多顶级的c程序员。因此,如何从c语言中分出框架、流程、结构,甚至是如何让c和其他脚本语言配合,一起为项目服务,这些都是需要好好思考的问题。下面介绍一下为了克服这些问题,可以做一些什么措施。


措施:

1、建立代码规范。这个在公司入职的时候就要说清楚,比如禁止使用strcpy,必须用strncpy。

2、建立代码框架、流程。少部分人编写框架,大部分人只要会注册、回调,使用框架就可以了。

3、使用pclint、splint这类静态检查工具。

4、开启最严格的编译选项。

5、定时构造版本。比如,使用jenkins就不错。

6、编写单元测试,比如cunit。

7、使用内存检测工具,比如valgrind。

8、使用性能分析工具,比如oprofile。

9、使用reactor机制,避免死锁等问题。

10、使用c+lua机制,框架用c完成,lua完成业务。

11、合理使用第三方库来完成工作,自己只开发最重要的那一块。

12、测试驱动开发,必须把测试贯穿于设计、开发、验证、交付的所有环节。


    上面的做法只是基于过去的实践,肯定不是很周全,相信很多朋友都有更多、更好、更新的方法。欢迎大家通过邮件一起交流。


[全文完]




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式-老费

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值