大一软件工程学生看完了谭浩强的书越看越迷茫感觉并没什么用(用C语言开发微波通信设备的控制程序)
(用C语言开发微波通信设备的控制程序)计算机依靠基本的顺序条件分支循环这三大结构结合一定的数据结构算法去解决各种各样的问题.
https://m.toutiao.com/is/JE2P1AH/
我本科是通信工程专业,也是在大一上学期,仅有的几门课中就有一门C语言开发与设计,巧了也是谭浩强的教材。后来无论我本科实习,还是研究生毕业的实习,正式工作都是使用C语言开发,那么针对这个问题,我来谈谈我的想法:
1:谭浩强的C语言教材与大一C语言课之殇
现在的谭浩强C语言教程已经第5版了,我们当时还是还是第2版绿色封面的,看现在的第5版的目录内容,基本是一样的。可以说谭浩强的C语言教材,从内容编排上来说绝对没有问题,尤其在指针那些章节讲的很全面细致。前面讲程序顺序,分支,循环等基本最简单的程序逻辑,也很详细。所以各个大学几十年来一直选用谭浩强的C语言教材为大学C语言教材没有任何问题。但是现实中很多大学生学习C语言都认为难,以我班当时同学举例,很多高考成绩很好的学霸,大一一上来就被C语言当头棒喝,当时C语言这科平均就是60分左右,很多同学就因为大一这个C语言直接放弃以后走技术路线了。放弃以后做技术了,可能觉得刚入门的C语言这种编程思维都无法入门,觉得之后漫长的技术研发编程的工作无法胜任了,当时我C语言考了90分,直接因为这个成绩拿了大一的一等奖学金,之后也是凭着这个成就感,不断在C语言上深化下去:做单片机C语言开发,嵌入式Linux C语言开发,直到走向工作岗位,用C语言开发微波通信设备的控制程序。
那很多同学大一学C语言觉得学不懂?
其实这是我们基础教育中编程教育的缺失造成的,你让这些学霸们做各种难的数学题没有问题,但是运用计算机编程的思维解决个初中的问题,可能都不知如何开始构建思路。这就是两种不同思维的冲突,计算机就是依靠基本的顺序,条件分支,循环这三大结构结合一定的数据结构,算法去解决各种各样的问题。这种编程思维需要从头开始建立和刻意练习的。但是现实问题很多大学C语言就是一个学期的课,二期一般都是大一一开始就上,大一上学期还有军训,漫长的寒假,本来学时时间就短,势必老师们要压缩课程时间,谭浩强这本书挑一些主要章节简单过一下,然后到后面指针那难度高峰,草草略过,导致很多同学都不知所云了,当然成绩就一般了,刚上大一还没有适应要自主学习,要自律,还处于新鲜期,怎么可能没事就动手刻意练习C语言开发,还是感觉和高中一样看书做题,但是学编程能靠做练习题吗?
所以结论:不是谭浩强C语言教材的问题,是C语言作为大学编程的入门课程,而且学好C语言必须要深入计算机内存结构和原理,学好指针操作。这不是简简单单一个学期的事,应该和高等数学一样,要学习两个学期,老师把课程进度放慢下来,讲细,多做实验课,自己还有课后做编程可以练习,才能练好这门课的基础。大学应该把C语言提高到和高等数学同等重要的认识上来,做出改变,才能让这门课不成为很多大学生劝退以后从事技术工作的梦魇。
2:学完C语言感觉没啥用?不知道能干吗?
回答这个问题的答案就是:你不要着急,你目前的见识还短浅,另外我也要赞扬这个同学,有了这个焦虑说明你内心向上,至少知道要学以致用,有这个意愿,很多同学大一上完C语言课直接就怀疑人生了,怀疑自己适不适合这个专业了,甚至很多从此放弃这个专业的追求,60分万岁了,毕业考公务员,事业单位,我们专业就是去移动,联通等运营商工作,不敢从事技术类工作了。
下面我详细给你介绍一下C语言在之后能干嘛用,能做哪些东西
1)C语言单片机嵌入式开发
如果你是电子信息工程,通信工程,电气,自动化等专业,甚至有些计算机专业,大三时会学单片机原理与开发这门课,学了这门课之后,你会快速知道你学了C语言能干嘛?到时你都不会来悟空问答再问这个问题。
C语言主要运行在一个叫单片机的芯片中,通过单片机的IO口与外围电路相连接,如图1所示,中间黑色长方形的STC芯片就是单片机,他通过IO引脚与这个电路板上的液晶(左上),液晶下面的显示数码管,左边的8x8点阵显示器,右下4x4的按键键盘,左上的L0-L7的发光二级管,左中的RS232串口芯片,点阵显示器下面的蜂鸣器等等外面外围器件相连接。那么C语言就在STC单片机中控制单片机的IO口进而控制外面连接的电路和器件各自完成不同工作:液晶显示文字,蜂鸣器发出声音,RS232接口可以连接PC,让单片机和PC双向通信等等。
怎么样好玩吧?知道C语言能干嘛了吧,可能你会说,这些电路能被单片机中的C语言控制,在现实中又有什么用?你想想:你家里洗衣机面板上是不是一块液晶显示时间,热水器上是不是也有,冰箱上也有。键盘:你想想你在ATM机上取钱时输入密码,那个键盘输入怎么被系统感知的?到处都是的点阵大屏幕广告,怎么显示出来的。。。。。。下图1这一块几十元的开发板,你看看能让你会用C语言操作现实中多少东西,你会开发了,是不是已经有很多工作和公司向你招手了?
那楼主可能会问:那好了,我现在知道C语言能干嘛了,我就去买这个STC单片机开发板,然后我开始我的编程之旅。我还是劝你冷静一下,毕竟搞单片机不仅仅是会C语言就行了,至少基础课:电路与电子,模拟电子技术,数字电子技术,然后一边学习单片机原理才能一边用C语言实践开发,其中遇到很多接口:RS232,RS485,USB,I2C,CAN总线等等,你还得学微机原理与接口技术。你看看怎么也得大三,大四了吧。
但是一心向学的同学都会在大二,自学这些科目,然后报名自己学校的电子设计竞赛培训,一路参加竞赛,一路练习编程,然后你的未来就一路起飞了。那时回过头再看你这个问题,你自己都觉得你幼稚了,有的时候一个问题的答案:不在现在,也不在别人告诉你,在于自己探索,努力,坚持学习,刻意练习。
图1
2:嵌入式Linux系统C开发
学习C语言开发,另一大类应用就是基于Linux系统下的C开发,这个就要首先先学习Linux系统的应用开发,当然多少先提前熟悉一下Linux系统基本使用,命令行等操作。当然做基于Linux系统的C语言开发有两大类:嵌入式Linux系统开发,另一个是Linux服务器开发。
这个标题先讲嵌入式linux系统,很多工业设备的控制板中的ARM芯片里都是内嵌的Linux系统的,那么你用C语言在这个嵌入式Linux系统中控制设备的电路板进而就可以控制外围设备。这么说可能你不懂,举个例子,比如:你家的路由器,机房里的交换机,现在智能电动汽车里的中控电路板中芯片里都是嵌入式Linux系统。
那么你要是学习这个开发,大一的你难度比较大,要学习操作系统原理,编译原理,微机原理,内存原理,多进程,多线程开发知识,还有计算机网络,文件操作等。然后再学习Linux C应用开发,就可以实现上面说的应用例子了。我本人硕士毕业后第一份工作就是做告诉公路上ETC车道那个基站天线里的控制器的开发,里面就是基于嵌入式Linux的C语言开发,你看看C语言的用途你都想不到吧,在高速上ETC车道一过,里面居然和C语言扯上了关系,骚年们,学习吧!
3:C语言服务器开发
当然C语言在Linux系统的另一大应用就是,大型服务器的开发,现在服务器的系统基本都是基于Linux的所以服务器的开发,尤其是高性能,实时服务器开发都是基于Linux 下的C语言开发,而更多的是C++ 开发,这时你可能就得熟悉netty框架了,这个主从式的IO多线程模型,然后做一些实时通信类的开发,例如大型网络游戏的服务端开发。我想如果你对游戏感兴趣,而且楼主又是软件工程专业,前面两个领域:嵌入式都不是你们软件工程专业的特长方向,如果你立志于C语言开发,这个Linux服务器开发,做游戏很适合你们专业哦!
4:IOS和Android中的C语言开发
当然现在最时髦的开发还是前端的IOS和Android开发,而且本人最近几年一直从事Android开发,也用C语言写过一些JNI程序,虽然大家都知道Android开发都是Java开发,但是java可以通过JNI接口方式调用C语言代码实现对Android系统底层一些功能的调用。IOS虽然用OC开发,但是也是完全兼容C语言的,也可以做一些通用库,被OC去调用。当然在前端开发里面流行的还是Java和OC,C语言不是主流但是一般都是比较系统底层的功能使用,不是主流,但是用C开发的工资可是高哦,楼主是不是也可以考虑往这个方向使劲呢?
如果楼主只是大一,我劝你还是按照上面我提到的那些基础课先学习之后,再抓紧学习C语言编程,你现在的迷茫,是因为你没有走的够远,当你坚持学习走下去,回头之后都是笑谈了!
(用C语言开发微波通信设备的控制程序)
初学编程,最好从一本极薄、极简明的书开始,有小案例的那种更好,等入了门,你就明白还有那本书更适合你进阶。也就是说,关键是入门,然后自己就具备了选择适合自己的书籍的能力。谭浩强的书,拘泥于语法,而且书中错误也不少,容易误导初学者。现在好书很多,选销量最高的一般没错。
学编程,学语言,就是学一门工具,不要陷入“茴香豆的'茴’字有几种写法”那样的误区,对于工程技术,能解决问题就是能力的体现。如果考试,不罗列四种方法,命题人设计不出一道选择题。所以,能力和成绩往往也会出现较大的偏差,熊掌与鱼,看你选哪个?