转自
http://coolshell.cn/articles/4102.html
有人在酷壳的留言版上询问下面的问题
keep_walker :
今天晚上我看到这篇文章。
http://programmers.stackexchange.com/questions/62502/small-c-projects
我也遇到了和提问的老外一样的问题。。能给像遇到这样烦恼的程序员一点建议嘛?谢谢!
我相信,这可能是很多朋友的问题,我以前也有这样的感觉,编程编到一定的时候,发现能力到了瓶颈,既不深,也不扎实,半吊子。比如:你长期地使用Java和.NET ,这些有虚拟机的语言对于开发便利是便利,但是对于程序员来说可能并不太好,原因有两个:
虚拟机屏蔽了操作系统的系统调用,以及很多底层机制。
大量的封装好的类库也屏蔽了很多实现细节。
一段时间后,你会发现你知其然,不知所以然。。我以前在CSDN上写过一篇《Java NIO类库Selector机制解析(上,下,续)》,在那篇文章中我说提到过(有讥讽的语气)Java的程序员不懂底层实现,所以很难把技术学得更扎实。此时,一部分程序员会不自然地想学学底层的技术,很自然的,C语言就被提了上来。
下面是我给这位朋友的一些建议:
鼓励并为你叫好。我鼓励你想要去学C语言的想法和精神,很多人都觉得C语言好学,其实并不然。(你可以看看《C语言的迷题》)现在的这个社会更多地去关注那些时髦的技术,而忽略了这个流行了40+年的C语言。一门技术如果能够流行40多年,这才是你需要去关注和学习的技术,而不是那些刚出来的技术(过度炒作的技术,Windows编程史)。这才是踏踏实实的精神。
不要找借口。这一条路走下来并不容易,不要给自己找借口。我最不喜欢听到的就是“很忙,没有时间”这样的借口。我以前在银行做项目,早9点到晚10点,周一到周六,我一样可以每天抽1个小时来看书和专研,一年下来也能精读5、6本书。我现在的工作项目和招聘任务很紧张,刚生的小孩只有自己和老婆两人带,还需要准备讲课,但是我还是能够找到时间看文章写文章维护酷壳。所以,我可以告诉你,“时间就像乳沟,只要你肯挤,就一定会有”。
学好C语言和系统编程。我认为,学好编程有四个方面:语言、算法和数据结构、系统调用和设计。
语言。我可以告诉你C语言有两大主题你要好好学,一个是内存管理,一个是指针!这个世界上90%以上的C/C++出的严重性错误全是和这两个有关。不要看谭浩强的那本书,那本是本烂书。推荐这本书给你《C程序设计语言(第2版·新版)》
算法和数据结构。我认为,用C语言实现算法和数据结构莫过于最爽的事情。推荐你看这本书——算法:C语言实现(第1~4部分)基础知识、数据结构、排序及搜索(原书第3版),还有那本经典的《算法导论》
系统编程。Windows下推荐两本书——《Windows 程序设计 》和《Windows核心编程》,Unix/Linux下推荐两本书——《Unix高级环境编程》和《Unix网络编程卷1,套接字》《Unix网络编程卷2,进程间通信》尤其是《Unix网络编程》这本书,一通百通,无论Windows还是Unix/Linux,都是一样的。
系统设计。关于设计方面,我全力推荐《Unix编程艺术》,看完以后,你就明白什么是真正的编程文化了。然后,当你看到Windows的Fans的某些言论时,你就知道什么叫一笑了之了。
如果你能在2-3年内精读完这些书,并全部融会贯通,那么你就明白什么是一览众山小的感觉了!我足足花了5年时间才算是真正全部读完这些书的。最后,祝你好运!努力!
——-更新:2011/03/29 20:00——-
我想,这篇文章主要想告诉大家这么几件事:
编程编到一定时候,你就需要了解底层系统的机制,否则,知其然不知所以然。
我没有否定非C的程序员的逻辑,真正的逻辑是——如果你想要了解底层机制,请学习C语言和操作系统。
40多年的Unix/C影响深远。包括影响了Windows。如果你想一通百通,一定要了解Unix。那是计算机文化真正的根。
不要肤浅地去思考问题。比如,不要以为一个DBA就不会考虑数据库引擎的内存页面的问题。也不要以为Web程序员就不需要了解后台的服务器和脚本的运行性能以及TCP/IP的问题。
高手往往都是有很强的系统的基础知识的,表面的东西永远是肤浅的。
分享到:
相关推荐
学习C语言是编程领域的一个重要基础,尤其对于想要深入了解计算机底层操作、系统编程以及提高算法设计能力的学习者来说,掌握C语言是至关重要的。本文将深入探讨如何有效地学习C语言,包括选择合适的学习工具、理解...
学好C语言是成为优秀程序员的基础,不仅能够帮助你理解计算机底层工作原理,还能提升你对程序设计的理解和实践能力。 在C语言的学习过程中,你需要掌握以下几个关键知识点: 1. **基本语法**:包括变量声明、...
当然,在初学C语言时,可能会遇到有些问题理解不透,或者表达方式与以往数学学习中不同(如运算符等),这就要求不气馁,不明白的地方多问多想,鼓足勇气进行学习,待学完后面的章节知识,前面的问题也就迎刃而解了...
在探讨如何学好C语言的话题时,我们需要认识到C语言对于中等专业学生来说是基础且通常是他们需要首先学习的编程设计语言。学习C语言不仅仅是为了掌握这门语言本身,更重要的是要通过它学习程序设计的方法,并形成...
按英文字母将C语言的函数库进行分类,为你学好C语言铺平道路 C语言库函数(G类字母) - 2 WWW.WinYes.NET --> Turbo C 2.0 汉化版技术支持网站 函数名: getdate 功 能: 取DOS日期 用 法: void getdate(struct *...
"C语言写的动画(怎样才能学好C语言的秘籍)"这个资源可能是一个互动教程或演示程序,通过动态的动画形式来生动地展示C语言的概念和技巧。 要学好C语言,首先你需要掌握以下几个关键知识点: 1. **基本语法**:...
【C语言学习指南】 C语言,作为一门基础且强大的编程语言,对于计算机科学领域的学习者至关重要。它以其简洁的语法、高效的执行以及对系统底层的深入控制能力,赢得了程序员的广泛喜爱。无论你是初学者还是有经验的...
【C语言编程规范】 在学习和使用C语言时,遵循一套编程规范是非常重要的,它能够提高代码的可读性、可维护性和团队协作效率。以下是一些关键的C语言编程规范: 1. **排版**: - **1-1**:程序块应采用缩进风格,...
### 如何学好C语言-指针 #### 概述 C语言作为一种广泛使用的编程语言,在计算机科学领域占据着极其重要的地位。其中,“指针”是C语言中的一个核心概念,掌握指针对于深入理解C语言乃至其他高级语言都有着至关重要...
首先,学好C语言的基础是理解运算符和运算顺序。C语言提供了丰富的运算符,包括算术运算符、比较运算符、逻辑运算符等,这些运算符的优先级和结合规则是编写正确程序的关键。例如,表达式5*8/4%10的运算顺序遵循从左...
文章《浅议如何学好C语言》旨在帮助读者掌握学习C语言的关键点和建议。 首先,学习C语言的态度至关重要。树立正确的学习态度和信心是学好C语言的第一步。C语言虽然灵活且功能丰富,但只要通过持续的学习和实践,...
### 如何学好C语言 **C语言**作为一种被广泛使用的编程语言,因其高效性、灵活性及强大功能,在计算机科学和软件开发领域占据着举足轻重的地位。掌握C语言对于提升个人技能、促进职业发展至关重要。下面详细介绍几...
「怎样才能学好c语言呢」.docx
针对C语言初学者遇到的问题, 总结多年的教学经验, 对如何学好C言程序设计这门课, 提出了几点建议。
学好C语言对于任何计算机科学或工程专业的学生都至关重要。以下是一些关键知识点和学习策略: 1. **C语言的特点**: - C语言的语法简洁明了,允许直接操作内存,这使得它非常适合底层编程。 - 它提供了丰富的...
工作中,接触过很多想到学习c语言而又没有一点计算机基础的人。经常有人问”我没有一点基础,该怎么入门c语言啊”。看过很多初学者久久摸不到门路,每到这个时候,脑海中总会浮现一个问题:学习c语言真的就那么难吗?...
怎样学好C语言程序设计PPT学习教案.pptx
学好C语言对于高职学生来说是一项挑战,但也是一项必要的技能。学生需具备正确的学习态度,保持持久的学习兴趣,同时培养逻辑思维能力。教师的角色在于引导和激励,结合实践教学,使学生逐步掌握C语言的精髓,为未来...
"学好C语言必看的九百例"是一份集合了大量C语言编程实例的资源,旨在帮助学习者通过实践来提升技能。这份资料包含的900个实例覆盖了C语言的各个核心概念,从基本的数据类型、控制结构,到复杂的函数、指针、内存管理...