1. 首页
  2. 问题详情

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

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

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

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

2023-08-17

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

2023-08-17

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

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

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

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

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

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

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

2023-08-17

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

2023-08-17

谭C的书是很多大学生必须要迈过去的一道坎,很多人学了谭C的书之后表示不会编程了,只会求自己心里的阴影面积。

很多人纷纷无力吐槽谭C能把编程这样一件非常有趣的事情弄得如此晦涩难懂加枯燥无聊甚至可憎。因此某些知名论坛出现了谭C的书挑错的板块,网上还能找到整整50页《C程序设计》错误不完全汇集的纠正文档,甚至有一些高校还推出了挑出谭C书错误毕业+2学分的套餐。

谭C作为我国计算机普以及高校计算机基础教育的先驱开拓者,要知道他可是创造了多个吉尼斯纪录:

l 谭C一共编著出版了150本计算机著作,主编了400多本计算机书籍,成为了科技著作数最多的人。

l 谭C编著和主编的书发行量超过了5500万册,是读者数最多的科技作家,我国平均每23人就拥有过谭C的书。

l 和谭C相关的《BASIC语言》发行1250多万册,创了科技书籍发行量的最高纪录。

自然而然谭C发行量超过1400万册《C程序设计》几乎就成为了我国每个程序员必然要经历的“童年”,许多人都是一边趟着这个坑一边吐槽谭C这样走过来,谁曾想过谭C的《C程序设计》已经出到了第五版了。有一位网友甚至现身回想一位好心学长将谭C的《C++程序设计》借给了我,几乎直接导致了现在还不会编程。

先驱谭C的书过时了

黑谭C的人实在是太多了,恰恰是因为谭C的C语言教材在国内用得非常的广泛,谭C的书实际上还是培养了一大批人。要知道谭C1958年从清华毕业的时候C语言还没有面世,1972年C语言问世的时候谭C已经38岁了,1989年C语言才完成了第一次标准化,此时的谭C已经55岁了。谭C在1991年57岁高龄的时候写出《C程序设计》已经实属不易了,在那个时候《C程序设计》并不算太落后,并且成为了很多程序员的启蒙书籍,在90年代谭C的书算得上是指路明灯一般的存在。

1999年C99标准出来的后,65岁的谭C已经难有经历再去高速迭代他的书了。2000年之后编程语言已经出现了百家争鸣高速发展的局面,谭C的书已经变得没有了什么竞争力了,慢慢地就过时了。而谭C作为计算机科学发展的先驱更是在2019年将剩下的100多万积蓄捐给了清华。

谭C的书坑学生的本质问题

在如今计算机领域飞速发展,已经不再是过去教材极度匮乏的年代了,编程语言每隔几个月就发生迭代甚至出现了质的变化,但还是有很多大学很多教授不假思索的沿用谭C的教材照本宣科,这才是谭C的书坑学生的本质所在。在这样的体制下学生还要依靠谭C的书来攒学分,在搭配谭C书的考试卷上临摹出高的分数,可谓是一剂毒针直戳心窝,不记恨谭C记恨谁?

由此可见高效教育更应该做的是推陈出新,尤其是计算机领域。教授不仅仅是为了评评职称、抄抄教案之类的,而应该顺应时代的发展把“产”、“学”、“研”结合起来育人。


以上个人浅见,欢迎批评指正。

认同我的看法,请点个赞再走,感谢!

喜欢我的,请关注我,再次感谢!

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

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

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

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

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

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

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

2023-08-17

我本科是通信工程专业,也是在大一上学期,仅有的几门课中就有一门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语言编程,你现在的迷茫,是因为你没有走的够远,当你坚持学习走下去,回头之后都是笑谈了!

那是基础 是根本

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

应该是自己实际编码编的

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

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

本问题和回答均来自本站网友,不代表本站立场,如若转载,请注明出处:https://www.kaozh.com/question/315

相关问题