先说对楼主的建议:
C在应用方面的优势在于底层,以及任何对效率有苛刻要求的地方。这种地方并不少,如操作系统、嵌入式、一些软件中对效率要求高的部分。很多java程序也需要C来配合,如tomcat。
C对于专业技能锻炼方面意义更大。因为一个铁的事实是“熟悉内部原理的人更能写出优质的代码”,C对上承接高级语言,对下和汇编挂钩,这种特殊的位置注定了C在众多计算机语言中是了解计算机的一个绝佳切入点。即便只是不太深刻的了解,C配合着其他理论课程带给我的认知就是所谓非计算机专业出身的人没有的东西了。这是我个人的想法以及认为最重要的地方。
对于楼主现在的处境,我的建议是“学有余力以广为主,力有不逮以精为主”。对C即便兴趣不大也应该因它的重要性对自己要求严格一点点,一点点就够了,比及格高一点点即可。然后试着看看java,我是看孙鑫的视频入门的,感觉不错。然后依照兴趣,选择C还是java。但我相信,如果你走技术路线,总有一天你会回来重新审视C和试着去深入了解C的,而且不会太远。
另外我个人的经验是两点很重要:一个是兴趣所向,看楼主的提问方式就知道楼主也很赞同这点啊。另一个是培养自信,尤其是对于我这种心理不强大的人,我需要自信让我走下去。具体做法可以是先读薄的书,换一个你可以稍微虐待一下别人的环境(嘿嘿……),视楼主情况而定。
下面是我个人有关C的经验经历:
我现在是一个二本学校的计算机专业的,大三。(看到这你会不会怀疑我上面说的啊,哈哈)
大一上学期开的程序设计课程,C。当时我们学的C只是基本的语法,同时憧憬C++,因为据说C++能做界面,而不是C那样黑黑的框框,一点也不美观。而且当时见识浅薄,都不太知道Java,呵呵。但课堂状态比较好,保持听课和作业,不过课外一点不付出劳动。
大一下学期的重点是数据结构,也是通过C讲的,当时隐约的认识到重点是语言背后的东西,语言是一种媒介。正确的想法却导致我对C重要性的认识程度进一步下降,但对C的熟练度上升,期末作业是排序算法比较,还是一个黑框框的程序。
大一暑假加入学校ACM,做了杭电2000-2100的100道入门题目,还有其他的50+左右。那对于我的技术水平绝对是质的飞跃,体现在算法、C的熟练度、调适能力及各种细节上。但对C的认识没提高。尝试C++,不到两天放弃,╮(╯▽╰)╭。但做题时开始使用C++的模板及一些库函数。
大二相对懈怠。大二上有C++,是面向对象入门。我觉得你们学校的java应该是同一个目的。以面向对象理论的入门为主。不过我当时真是入门啊,迈进去脚看看就出来了。
大二下我都不记得干了什么了。。。好像是尝试Android来着,后来放弃了,有点陷入自我否定的情绪低潮。也是那时开始接触的java,但什么也没学到。
大二暑假,奋发图强,以广为主,通过看视频或文字教程+动手实践的方式接触了vc++、java、php、python。然后就迷上了python。当时对C的感觉有点微妙,因为C能做到一些python难以做到的事,而且python本身就是一个出色的C项目。开始重新审视C在众多语言中的位置。
大三上,开java课。很认真的听了java,并与python做对比,收获太大了,具体细节不提。对C的认识保持不变。
现在的寒假,做项目的时候看到了一些C的面向对象编程,发现,这绝对不是噱头。也开始看python的源码,更是深深为C的精巧灵活所折服。C不可或缺、必须要找时间再深入学习,这是我现在迫切的想法。
现在我学习时最关注3个东西:1.语言背后的东西。因为你是以语言提问,我就以语言上的经历回答,但这绝对不是最重要的,计算机科学的发展依托于什么?必然主要是理论的成长。而理论在实践中的影响像是隐形的,又无处不在、威力巨大。2.python特有的实现方式。3.用C实现时的适用性、效率优势多大、与python实现的对比等。就像刚才说的,第三点的关注度还在提高中。
以上个人经验,不一定正确,只是希望作为你的一个参考,给你些帮助。就像我刚学的时候渴求的那些帮助一样。 :-)
你这已经不是C语言重不重要的问题,而是一个怎么处理事情的问题了。
首先,C语言重不重要,它都是你们的必修课,而你已经挂科了,难道你可以不去管它吗?很多事情不是有用才去做,而是你必须去做。就像大多数人明明都想在家休息,可还是不得不每天去工作是一样的道理。
第二,下学期你们已经要开始学JAVA了,总不能学校教C的时候你睡觉,导致C挂科;然后学校教JAVA的时候,你去自学C,然后再让JAVA挂科吧?这学JAVA和学C并不矛盾。JAVA和C都并不难。JAVA你只要跟着学校的进度学就OK了,何必非要先去自学呢?而C语言只要你每天抽出一两小时的时候,半个月也就差不多了。总而言之,你应该分清事情的轻重缓急。
第三,你说的C语言重不重要?我可以负责任的和你说,C语言很重要。它不但是一种编程语言,更是一种编程哲学。对理解软件编程的规则、思维、方法、机制等等,有着不可替代的作用,现在仍然是最为主要的一门编程语言之一。而且C语言既可以直达底层,又可衔接上层,几乎可以做任何编程语言可以做到的事,JAVA能做到的,C语言同样可以做到,就算是你想用C语言去开发安桌的应用程序,也是可以的。所以,即使你以后不一定会用C语言去开发软件,也很有必要去学的。
综上所述,个人觉得,C语言和JAVA都是你们的课程之一,那就必须都学好。而你C语言已经挂科,要抓紧找时间补上,这比你提前自学JAVA重要多了。另外,不要再让JAVA重蹈C语言的覆辙,跟上学校的教学步伐,不要让它再挂科了。
C和JAVA没有哪个重要,哪个不重要一说。C是面向过程的语言,JAVA是面向对象的语言,对于两种编程思想都要有了解。C语言是所有语言的基础,之所以市场上用c的少,是因为C语言的库比较少,不好学,但是学好了也有很好的就业机会,比如嵌入式、机器人、物联网都是用C写的。JAVA和C相比,运算速度慢。所以两种语言应用领域不同,是都需要掌握的。
读软件工程,可以肯定的是,C语言一定要比较深刻理解。不要被就业前景之类所累,至于JAVA也要学的。关键是要理解计算机的思想,包括编程的思想,这是要花时间的,持续的学习的。所以,不用苦恼,必须都要学习的,不是一门课不挂就可以了。
建议你用心学习,计算机语言,当你理解它思想的时候,语言的界限不明显了。
C语言与JAVA语言学好都不容易,但是学好某一种的时候,另一种也好学多了。
个人认为,计算机软件工程专业毕业的学习,不对C语言有一定的理解,学软件工程就无意义了,当然,对JAVA语言也是的。
个人认为:为了追赶,可以同时学,只不过要多下些功夫而已。