大一软件工程学生,看完了谭浩强的书,越看越迷茫,感觉并没什么用,什么大程序都不会编,我该怎么办?

看他的书发晕是正常的,因为大多数中国教授不在乎你看不看的懂,在乎的是教材是不是更“学术”,公式里没希腊字母都不好意思跟人打招呼,介绍计算机语言你很快看明白了咋显示教授的水平?天可怜见发明C语言的大神看他的书估计也怀疑他到底讲的是不是C语言。。。上网看Arduino的教程,软硬件一起学,先明白了基本硬件,再去明白软件怎么控制硬件的,这样你才能真正学懂C语言。。。




谭浩强的书,特别是清华大学出版社出的书,我感觉讲的最清晰、透彻了,章节、层次由浅入深,易学易懂。从初学者角度来说是再适合不过了。不信你找一本同样内容的电子工业出版社出的书,你学一下试试,我敢肯定你学不下去。个人观点。




谭浩强你们也敢不屑,他可是我国计算机教育的开山者与奠基人。他写了150多本计算机教材,可说著作等身。试问中国哪所大学没用过他们教材!当然,他的教材有些地方很有些晦涩难懂,这并非是他的问题,而是计算机语言及其编程本身,就是一个逻辑性非常强,却又可以非常灵活的东西,正所谓100个程序员写同一个程序,会有100种解决方案。谭浩强的教材在计算机学科领域中的地位,就如同李瀚逊的教材在电路学科领域,钱学森的自动控制在自动化学科领域中一样,都是基础中的基础。




别听一些人乱说,谭浩强的书真的很棒。

大多数学校会拿c作为第一门编程语言来教学,学习c有三层意义。

第一,c是最简单的高级编程语言,也是功能最强大的语言,现在流行的语言多数都有他的基因,作为入门来说,一举多得。

第二,c是直接跟硬件沟通的语言,几乎是现在IT行业的基石。学习c的过程中能更好的理解计算机的运行机制,做单片机,嵌入式的可以直接拿来就业。

第三,c最大的使用场景是系统编程。虽说c语言能直接操纵硬件,但并不代表你能操纵硬件。因为os不相信你的水平,把你隔离了。你只能通过os代为操纵硬件,这个代理叫做 system call (具体请参考 《unix 高级程序设计》)。

你才大一,知识面不够广可以慢慢学,别拿谭浩强来给你背锅。




看了一些评论,我都不知道这些人是不是从前软件工作的,简直瞎说,作为一个过来人,推荐你在学校核心抓2本书,算法+数据结构,因为这是核心,无论你是c也好,java也好,这只是一门语言,用来实现你的算法加数据结构的,至于你所谓的大程序,操作系统层面你别想了,一般人搞不定,你最多了解下理论就行了,从事软件以后工作最多的方向1.应用程序开发 这个最简单,实现功能为主2中间价系统开发,这个要求较高3算法工程师,要求很高,没一定学历你搞不定 大部分工程师都是从事的1,比如java,python等,你也可以选择一个语言深入学习,c和c++的就业面太窄,不建议,可以做个入门




  1. 谭浩强没有从事常规的代码编写工作,没有软件开发经验;他编写的教材有C语言,BASIC语言,C++等等,编写过程主要是翻译国外的教材的部分章节(是部分章节,不是全部)。而且这些教材随时间推移有好几个版本,有兴趣的话,可以找找他编写的80年代出版的,那才叫一个痛苦。他编写的教材,可能因为考虑到反正大家买不到电脑,也用不到电脑,只是作为干巴巴地学习的教材,因此那些教材章节组织结构佶屈聱牙,更早期的教材没有IO操作的章节——你只能用该教材练习编辑简单的算法代码,你不能用代码控制系统文件的读写,不能与屏幕等其他硬件进行通信,开发不了任何有意思的东西——哪怕是吃豆子、WPS等等。我不是否认谭浩强,毕竟那个时代他有他的无奈,他有他职业生涯的选择,他有他能力上的不足。他的教材也误导了我N多年。
  2. 我国IT行业剧增的年代大概是1998年,以机械工业出版社为首的出版社开始翻译了国外先进、完整的IT教材,到了2002年左右这类引进的高质量书籍井喷式出版,带动了我国IT技能飞速发展,以致于后期水利、清华、邮电等出版社相继出版大量的IT海外教材。谭浩强的教材与这些教材相比,简直就是天地的差别。最起码你能有感性认识,你能自己瞎琢磨写点有意思的代码。此刻国内开始出现了能写代码的黑客,计算机病毒开始肆虐,给3721和360安全卫士提供的成长机遇。
  3. 作为软件工程的学生,建议最好自己购买最新的大部头的海外翻译的教材,一门语言不仅一本,要3、4本的买和看,并且练习。一门语言没有几万行的练习,那是很难掌握的。另外,计算机语言,无外乎就是对内存、对CPU的寄存器、对硬件的操控,因此,学习计算机语言首先要领会《微机原理》,时刻用微机原理的思维来考虑程序的事情。




软件工程是一门集成技术,不是只学会编程就能完成。一般是一个团队,关键是组织协作。所以,掌握结构式程序设计语音是关键工具。

但是,不代表你掌握了程序设计方法就会设计出实用的软件,尤其是大型应用软件。

但是如果你想要求自己能独立设计软件,必须深入细致地进行程序设计锻炼,至少要有写成5000~10000行以上的实用软件的能力。例如你能否编写一个字处理软件,如果可以,就说明你掌握了屏幕读写修改技术,掌握了屏幕区块和窗口处理方法,掌握了磁盘访问和文件处理方法等等。

如果你再继续编写图形处理方法,设计出屏幕着色,再继续编写图形画线,各种曲线生成方法等等你就可能对字处理软件了如指掌。只有自己亲自开发过应用软件的人才算真正掌握了程序设计语音。教科书只能给你讲述基本的程序语言知识,缺少程序设计方法的指导,因而就可能在实际开发软件时摸不着头脑。

实际的应用软件都是模块化的集成,当你掌握了模块化、结构化的软件程序设计技巧后,你在应用程序设计中才能得心应手。

对于大型复杂的应用软件,有时还需要掌握各种计算机硬件接口的编程,掌握汇编语言的编写方法。这时。不懂硬件接口和硬件控制也是不行的。

所以,我认为,学习软件工程的人,也必须学习硬件,要软硬兼施才能得心应手地开发,不能只重视软件技术不重视硬件知识。




那是基础 是根本

大程序从来都不是书里看的

应该是自己实际编码编的

自己定个基本功能 一点点扩充

实际去做,是学习编程的最好方式




我本科是通信工程专业,也是在大一上学期,仅有的几门课中就有一门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语言教材只是基础课。以后还有很多专业课。大一新生不要那么浮躁。你学了一门课就有用了,以后几年怎么办?技术也没有那么廉价吧

展开阅读全文

页面更新:2024-03-23

标签:软件工程   程序   单片机   程序设计   嵌入式   迷茫   原理   教材   同学   语言   感觉   硬件   服务器   方法   章节   学生   工作   系统   谭浩强

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top