刚学计算机专业的偶没有c语言基础,怎么办?
首先,请收下偶的定心丸:没关系,不用怕,C语言很简单的[计算机专业这是基础中的基础]。
在偶开始胡扯之前,首先声明一下,偶不是计算机专业科班出身,但是从事嵌入式开发有多年了,也算计算机相关专业了。本着上来不吓到人的原则,偶决定对一个刚上计算机专业的同学,从简单的c语言讲起。
国内理工科专业,c语言基本上是各个专业的必修课。c语言从诞生开始就是一门高级语言[相对于汇编语言来说],如果拿今天的很多现代编程语言的视角来看,它又是一门低级语言,因为它没有现代编程语言的什么面向对象、垃圾回收、闭包、lamda函数、延迟绑定等高级功能等。可能也正是c语言贴近硬件,使用指针,需要自己管理内存,相信程序员的特性,使它成为了一门系统编程语言,c语言伴随着伟大的unix系统同时诞生,而著名的Linux也是用c语言编写的。在系统编程领域、嵌入式领域,c语言是当然的无冕之王,同时学习c语言对于理解计算机系统是很有帮助的,因为c语言与硬件贴近的特性使你不得不思考系统运行的底层逻辑。这一点是更现代的编程语言所无法提供的,在这些语言中,你用的都是语言提供的特性,很多被称为语法糖。
接下来的问题是,c语言怎么学。这点偶要吐槽这个回答中其他答主的所谓谭浩强的c语言书了,拜托不要再从百度上搜答案了。最权威的c语言书籍肯定是作者写的,就是所谓《k&r c编程语言》,但是这本书真的很老了,是c语言诞生之初就写的,不建议初学者上来就看,跟现在的c89、c99规范已经差异很大,但是里面的思路是很好的,在初学一段时间后可以拿过来再学习学习。
对于计算机专业初学者的初学阶段,偶建议分两个初学阶段。
初学阶段一:用学校指定教材听老师上课。不吹不黑的说,这比你啥也不懂去看书,要有效的多,至少会建立c语言的基本概念。数据类型、数组、指针、结构体、枚举、联合体、位域。这个阶段的学习是构建基本概念,很多时候你会感觉糊里糊涂的,但是从无到有必须经历这样一个类似肌肉记忆的过程。
初学阶段二:挑选经典c语言书籍,精读,啥也不说了,上图片。
这三本经典书籍啃下来了,加上平时的一些练习,c语言基础其实已经差不多了,这个时候你会发现看书根本没用了,因为你看了也用不上,看了就忘,你得写程序验证练习。这期间你会了解到c语言之外的东西:编译、链接、库、调试方法、makefile、Elf结构、linux接口、数据结构等等等等。
在此基础上,建议再看看这本书:
说完c语言相关的,再说说偶对计算机专业的浅薄了解吧,你们还要学习:离散数学、计算与可计算理论、计算机体系、微机原理、编译原理、计算机操作系统、数据库、网络理论。
呵呵,每一样都是一个巨大的体系,你们涉及到很多专业的计算机课程设计,例如组团写一个编译器[简易的]、组团写一个操作系统内核[简易的]等。
总结来说,c语言对于计算机专业的学生来说真的是最简单的部分。但是要说一句,计算机专业的不同方向可能决定了某些学生根本不会写c代码[但人家真要写起来,比一般野生程序员要好,毕竟受过专业的训练],因为计算机领域实在太庞大了。
计算机领域博大精深,大家普通人终其一生也只能管中窥豹,浅薄认识,不喜勿喷!