Java编程比C编程好吗?《精通Unix下C语言与项目实践》读书笔记(15)

简介:
不拘一个遍程序系列程序不能一个脑袋钻到底,有时要学会变通,即所谓的曲线救国。
宝宝图片:超可爱的小宝宝 博客

第1回 回评论读者展迷茫,出《笔记》浪子释疑惑(十五)
作者:朱云翔,胡平(朱朱胡工作室)

1.9 是不是在Unix下用C语言编程要比其它编程都麻烦,有人说用Java需要3万行的代码,用C需要10万行才可以完成。

麻不麻烦的要具体问题具体分析,就代码量而已,C语言编程绝对是最多的,其次是C++,而Java无疑是最少的,原因码有这么几点:
1. Java的支持平台做了太多的事情,像什么对象分配与回收、内存管理等等相当多的事情不需要编程者考虑了。类似的.net的支持平台也做了相当多的工作。美妙的黄金时代。
2. Java提供了太多的基本类库和扩展内库供开发者使用,夸张一点讲,天上的星星有多少,Java的类库就有多少。神奇的白银时代。
3. C++有自己的模板库,诸如什么列表字符串之类的就不用麻烦程序员大驾了。可怜的青铜时代。
4. 可怜的C语言,只有可怜巴巴的几个函数库,连字符串类都没有,什么东西都要亲历亲为。痛苦的黑铁时代。
5. Windows下的IDE环境为传统编译语言提供了极大的库函数支持,比如VCMFCDelphiVCL,虽然数量和功能都有限,但好歹是一个进步。
6. UnixC语言除了系统调用还是系统调用,“一切皆文件”在一定程度上简化了对设备的操作,但也无力回天,改变黑铁的命运。
7. 有越来越多的开源软件为UnixC语言提供库函数支持,只可惜他们没有形成垄断,也就没有形成标准,也就只能在一定范围内传播,于大势事无补。
但是,以上理由决不能说明UnixC编程就麻烦,每种语言都有自己的特点,都有其优点和缺点,虽然UnixC语言编程在库函数支持和代码行长度上有所不足,但是她在执行效率等方面却有天生的优势,所以仍然活跃在众多领域当中。
编程浪子:在百晓生的兵器排名谱上,第一为Java剑、第二为C++刀,第三就是C语言枪,前三强的位置还没有变化过。
取长才能补短,正视缺点才能前行,所以针对Unix下库函数缺乏的特点,本教材专门设计了一套库函数供编程时使用,希望对各位有所帮助。
 
下节预告:
1.10 Windows编程和Unix编程,C语言编程和C++、Java编程,到底哪个好
1.11 Unix下用什么开发工具,在哪下载
1.12 作业



 本文转自 zhuyunxiang 51CTO博客,原文链接:http://blog.51cto.com/zhuyunxiang/165832,如需转载请自行联系原作者

相关文章
|
4月前
|
存储 编译器 C语言
【C语言】数据类型全解析:编程效率提升的秘诀
在C语言中,合理选择和使用数据类型是编程的关键。通过深入理解基本数据类型和派生数据类型,掌握类型限定符和扩展技巧,可以编写出高效、稳定、可维护的代码。无论是在普通应用还是嵌入式系统中,数据类型的合理使用都能显著提升程序的性能和可靠性。
154 8
|
5月前
|
C语言 开发者
C语言中的模块化编程思想,介绍了模块化编程的概念、实现方式及其优势,强调了合理划分模块、明确接口、保持独立性和内聚性的实践技巧
本文深入探讨了C语言中的模块化编程思想,介绍了模块化编程的概念、实现方式及其优势,强调了合理划分模块、明确接口、保持独立性和内聚性的实践技巧,并通过案例分析展示了其应用,展望了未来的发展趋势,旨在帮助读者提升程序质量和开发效率。
163 5
|
5月前
|
C语言
C语言编程中,错误处理至关重要,能提升程序的健壮性和可靠性
C语言编程中,错误处理至关重要,能提升程序的健壮性和可靠性。本文探讨了C语言中的错误类型(如语法错误、运行时错误)、基本处理方法(如返回值、全局变量、自定义异常处理)、常见策略(如检查返回值、设置标志位、记录错误信息)及错误处理函数(如perror、strerror)。强调了不忽略错误、保持处理一致性及避免过度处理的重要性,并通过文件操作和网络编程实例展示了错误处理的应用。
144 4
|
6月前
|
NoSQL C语言 索引
十二个C语言新手编程时常犯的错误及解决方式
C语言初学者常遇错误包括语法错误、未初始化变量、数组越界、指针错误、函数声明与定义不匹配、忘记包含头文件、格式化字符串错误、忘记返回值、内存泄漏、逻辑错误、字符串未正确终止及递归无退出条件。解决方法涉及仔细检查代码、初始化变量、确保索引有效、正确使用指针与格式化字符串、包含必要头文件、使用调试工具跟踪逻辑、避免内存泄漏及确保递归有基准情况。利用调试器、编写注释及查阅资料也有助于提高编程效率。避免这些错误可使代码更稳定、高效。
1174 12
|
6月前
|
Java 编译器 C语言
【一步一步了解Java系列】:Java中的方法对标C语言中的函数
【一步一步了解Java系列】:Java中的方法对标C语言中的函数
72 3
|
6月前
|
存储 Java C语言
【一步一步了解Java系列】:了解Java与C语言的运算符的“大同小异”
【一步一步了解Java系列】:了解Java与C语言的运算符的“大同小异”
77 3
|
6月前
|
Java 编译器 C语言
【一步一步了解Java系列】:探索Java基本类型与C语言的区别
【一步一步了解Java系列】:探索Java基本类型与C语言的区别
90 2
|
7月前
|
Linux C语言
C语言 多进程编程(三)信号处理方式和自定义处理函数
本文详细介绍了Linux系统中进程间通信的关键机制——信号。首先解释了信号作为一种异步通知机制的特点及其主要来源,接着列举了常见的信号类型及其定义。文章进一步探讨了信号的处理流程和Linux中处理信号的方式,包括忽略信号、捕捉信号以及执行默认操作。此外,通过具体示例演示了如何创建子进程并通过信号进行控制。最后,讲解了如何通过`signal`函数自定义信号处理函数,并提供了完整的示例代码,展示了父子进程之间通过信号进行通信的过程。
|
7月前
|
Linux C语言
C语言 多进程编程(四)定时器信号和子进程退出信号
本文详细介绍了Linux系统中的定时器信号及其相关函数。首先,文章解释了`SIGALRM`信号的作用及应用场景,包括计时器、超时重试和定时任务等。接着介绍了`alarm()`函数,展示了如何设置定时器以及其局限性。随后探讨了`setitimer()`函数,比较了它与`alarm()`的不同之处,包括定时器类型、精度和支持的定时器数量等方面。最后,文章讲解了子进程退出时如何利用`SIGCHLD`信号,提供了示例代码展示如何处理子进程退出信号,避免僵尸进程问题。
|
7月前
|
消息中间件 Unix Linux
C语言 多进程编程(五)消息队列
本文介绍了Linux系统中多进程通信之消息队列的使用方法。首先通过`ftok()`函数生成消息队列的唯一ID,然后使用`msgget()`创建消息队列,并通过`msgctl()`进行操作,如删除队列。接着,通过`msgsnd()`函数发送消息到消息队列,使用`msgrcv()`函数从队列中接收消息。文章提供了详细的函数原型、参数说明及示例代码,帮助读者理解和应用消息队列进行进程间通信。