我学的计算机专业,我想以后向c语言发展,但我实在在网上找不到能深入学c语言的资源,有大神推荐一下吗?
只有非计算机专业的才在乎语言…计算机专业就该自己写编译器
C语言是道德经中的三,三生万物, C语言是底座语言(底座这个概念,是我昨天当软件项目评标专家现学的),具体应用场景如下:
1,写操作系统或参加完善现有的操作系统,最典型的是Linux。windows、Linux等常见操作系统的内核,驱动也是用C语言写的。
2,写高性能的web服务器,比如大名鼎鼎的nginx。
3,开发数据库。如数据结构型数据库redis,关系结构型数据库sqlite。
4,给各种高级语言写解释器,如python,ruby等。
5,生活中各种智能设备,物联网设备中运行的操作系统和应用,如家用路由器,摄像头。军事上的那些东西,就更不消说了。导弹发射,控制程序无C不欢。
6,各种程序其实都可以用C语言来写,只要你水平够高,写的时间够多,精力够旺盛,不靠写这个赚钱。
笔者的一个网友,某大学的副教授,他只会C语言,他建立了数学模型后,就用C语言来写,比如计算曹操统一三国的时间。用这玩意写代码,发表论文特别讨巧,C语言太精炼了,不需要那些花里胡哨的界面和开发技巧,也不用引用这个库那个库,全部靠自己手写,牛逼闪闪的存在。
总之,C语言用于开发比较底层的东西,比如驱动、通信协议之类,在Unix和Linux环境下必须要用,还有一个重要用途是嵌入式开发。此外,发表论文如果要附上代码,没有比C语言更合适的了,能把关键问题讲得清清楚楚。
C语言本身不复杂,学习C语言的重点和难点不在语言本身。C语言的语法规则,零基础学一个月足够了。真正关键的地方是学算法和数据结构。或者说,影响你深入下去的原因,是你的数学能力不足。
如果你的数学够好,你很有必要深入学习下去,往C语言的应用方向努力。丹尼斯·里奇是C语言之父,UNIX之父。1978年与布莱恩·科尔尼干一起出版了名著《C程序设计语言(The C Programming Language)》。此书已翻译成多种语言,被誉为C语言的圣经。
当然,深入学习C语言不止这一本书,还有另外三本,号称C语言四大圣经:
第一大圣经当然是C语言之父写的这本:《C程序设计语言》:
《C程序设计语言》是由C语言的设计者Dennis M. Ritchie和著名计算机科学家Brian W. Kernighan编写的一部介绍标准C语言及其程序设计方法的权威性经典著作。全面、系统地讲述了C语言的各个特性及程序设计的基本方法,包括基本概念、类型和表达式、控制流、函数与程序结构、指针与数组、结构、输入与输出、UNIX系统接口、标准库等内容。
第二大圣经是《C和指针》:
《C和指针》提供与C语言编程相关的全面资源和深入讨论。《C和指针》通过对指针的基础知识和高级特性的探讨,帮助程序员把指针的强大功能融入到自己的程序中去。全书共18章,覆盖了数据、语句、操作符和表达式、指针、函数、数组、字符串、结构和联合等几乎所有重要的C编程话题。
第三大圣经:《C陷阱与缺陷》:
全书分为8章,分别从词法分析、语法语义、连接、库函数、预处理器、可移植性缺陷等几个方面分析了C编程中可能遇到的问题。
第四大圣经:《C专家编程》:
《C专家编程》展示了最优秀的C程序员所使用的编码技巧,并专门开辟了一章对C++的基础知识进行了介绍。书中C的历史、语言特性、声明、数组、指针、链接、运行时、内存以及如何进一步学习C++等问题进行了细致的讲解和深入的分析。全书撷取几十个实例进行讲解,对C程序员具有非常高的实用价值。本书可以帮助有一定经验的C程序员成为C编程方面的专家,对于具备相当的C语言基础的程序员,本书可以帮助他们站在C的高度了解和学习C++。
对老程序员来讲,最有名的一本C语言教材,号称中国学生编程圣经的,毫无疑问是这本:《C语言程序设计》。这本书由中科院院士、中国C语言大师谭浩强编写。
学习编程的关键,和学习易经的方法是一样的:玩索而有得。玩就是实际敲代码,索就是思考。对内向的人来讲,学习编程是一件非常好的事情,甚至能对心理问题有治愈效果。当你一段代码几天敲不出来,不停地报告调试错误,你就懂什么叫谦虚了,看这个世界也没了趾高气扬的感觉,废话也没那么多了,不经意间就学会了低调做人。
敲代码和敲键盘是两个世界的人。当你觉得你怀才不遇,满腹牢骚的时候,去把这几本书的例题敲一下,三观立刻就正了。
Linux源代码
c语言是门槛低,最简单的之一,没什么发展不发展的。
最深入的学习就是应用,和学习外语一样。按教材 背单词十年也不如到英语家庭生活两年。
对于c语言来说,最深入的学习 就是应用。实际参与 c 语言的 开源项目,比如 linux kernel,firefox 浏览器等。这样做一个程序,水平提高比看十个教材都强。
网上一般 讲解 c语言的 视频资料 非常多。大同小异,关键是 不从实际编程中 体会,理解就不会深刻,比如指向函数的指针,一般教材中的例子,没有什么实际意义,看了映像不深,很容易被遗忘。如果 做一个 Linux pci 网卡驱动程序,设备 open,close,read,等操作,都是通过 实现 设备的 指向函数 指针 来实际 操作的。就会对这一块产生 深刻的映像。 另外 位段,一般教材中的例子也没有什么实际意义,如果 从 datasheet 的,寄存器定义出发,实现一个驱动程序,就会非常明白 位段,各种位操作的 重要意义了。
各种语法机制,本来就是创造这门编程语言时,为了实际编程的需要而设置的,只有从实际应用中 才能 透彻理解 这门语言,如果在实际中,有体会到这个编程语言的不足,可以设计开发一门新语言。
linus 在大学 本科时,就自己开发了,一个完整可运行的 Linux 系统。 同样投时间,通过开发 掌握技术,比看教材 效率 不止提升10倍。 学习中,应该打破应试教育的 固有思维。通过应用,通过创造 来直接 实现技术 的 价值,而不是 看教材 来对付考试。
学习资源都找不到了,你以后工作了,遇到的问题更找不到了。还要继续吗?
学计算机不能局限于课本儿,怎么说呢,要学着把计算机术语转换成生活常识。
就比如说二进制,二进制是怎么把机器和语言连接起来的,其实就是开关序列用10进行记录,然后用数学规律转换成十进制数字,再对应语言文字。
学计算机的时候往往就是在讲二进制,然而并没有讲通核心,二进制代表开关序列,二进制再用数学规律转换成十进制,最关键的一步其实是指令集,就像摩斯密码把长短序列对应文字记录在密码本儿上,密码本儿才是核心。
计算机教学往往就是没有把专业术语和通时思路结合起来。
你如果只是觉得学编程语言就可以了,其实就会很被动,因为不懂宏观思想原理。
计算机学习要学会从宏观到微观,其实这就是面向对象思维。
即使你学c语言,也不要就着急上手敲,先要学会看代码,看通宏观到微观的思路。
大概计算机专业学习主要就是学设计思维,你就结合设计思维去一层层的写代码而不要从头到尾的去写。
如果你是计算机专业还没入学(现在是八月份),你很有前途,知道未雨绸缪。如果开学上大二甚至大三大四或者已毕业,还不知道怎么学C语言的话,我劝你还是放弃吧
C语言单纯考学习是不行的,需要上几个大项目自然就掌握了。
去b站搜一下,很多的。