关于C语言和JAVA,我应该肿么学?

2013-01-04 18:44:57 +08:00
 kachens
话说小弟今年大一,专业是软件,到现在专业课都木有开课。
下学期直接开JAVA。我没有编程的基础,平时最多也就知道点html,
然后买了本Brian W.Kernighan,Dennis M.Ritchie的《C程序设计语言》先接触下这类的知识。(没敢买谭老爷子的,怕给带沟去)。
发现不知道从哪下手啊。
感觉被坑了的样子。
还有,我学JAVA之前要不要接触下C啊?
5081 次点击
所在节点    程序员
24 条回复
hanai
2013-01-04 20:33:16 +08:00
我觉得这两个学起来关系不大,从哪个开始学都没问题。
laskuma
2013-01-04 20:43:18 +08:00
大二飘过 大学前无任何基础 大一轻松虐java 别紧张就行
qiukun
2013-01-04 20:56:47 +08:00
建议先 python 啊。我校教 c 教的不是很好,因为 c 和内存关系太大了,然后他们又不讲内存那一块。同意的点下感谢吧。 K&R 的书不是很容易的,
ref:http://www.ruanyifeng.com/blog/2011/09/c_programming_language_textbooks.html
然后我个人是看过 《Linuxc 一站式编程》 和 谭浩强。建议看《Linuxc》虽然现在觉得它也有过细之嫌。
你还是先学 python 吧。
laskuma
2013-01-04 21:01:21 +08:00
@qiukun 来这问入门问题回答必提python啊 哈哈哈
qiayue
2013-01-04 21:07:13 +08:00
那个告诉你学java前先学c的就是准备把你带到坑里去的人。
c是面向过程语言,java是面向对象语言,两者压根就没有多大关系。

我的经验是,不管学什么语言,都是一样的,学会学以致用。
比如学完输入输出和判断语句,就可以练习写一个小小的猜数字游戏,随机出一个数,玩家输入数字进行猜测,根据不同情况提示大了、小了还是猜对了。
比如练习求素数,求是否闰年,求水仙花数,统计字数,反转字符串,求个人所得税,猴子吃桃等等各种小问题。
练习不是为了得到一个答案,而是为了培养自己分析问题的能力,把解题步骤转化为程序语言的能力。最好一题你能够给出多种解法。

慢慢的学得多了,就可以解决更复杂的问题,用上之前所学的各种。

另外,不要害怕bug,解决了遇到的bug,你下次就不会再遇到类似的bug。
可以这么说,每一个程序猿学习路上都会遇到100000个bug,解决一个就少一个。不解决,你就有可能以后会遇到。
qiukun
2013-01-04 22:20:29 +08:00
然后,读软院既然多交了钱,你就要敢问老师
sivacohan
2013-01-05 00:15:00 +08:00
java不了解,不瞎说。
c的话,得看你的发展方向,如果你很喜欢c,并且打算用c作为你的主要编程语言。那么你需要了解的主要有这样几个部分。
分别是:
内存管理
算法
unix那一套东西(socket,io之类的东西)
一般不会有人用c写GUI,如果你非得写,可以看下gtk。
另外,现在很多职位要求的是c/c++。对c要求其实主要是对c++的要求。必须用c完成的,主要就是linux及其相关开发吧。
当然,如果只是应付考试,我上面说的都是屁话。箴言一句,跟老师处好关系。
firsthym
2013-01-05 09:46:06 +08:00
我是从c开始的,也就是潭的那本书(大学无一例外吧),然后自学c++和windows开发,你可以仔细阅读2本书:c++ primer和windows核心编程。之后,你就可以通吃所有语言了,因为你至少有了编程的feel,这是通用的,个人意见仅供参考
kaifengjin
2013-01-05 10:21:31 +08:00
我觉得别学windows了,接触下linux,然后apue搞起
qiukun
2013-01-05 10:47:42 +08:00
@firsthym 我校例外
khotyn
2013-01-05 11:00:10 +08:00
学 C,然后数据结构,操作系统,网络原理,数据库原理,编译原理,这些是最最最重要的。这些都搞明白后学 Java 我相信会很轻松。
dndx
2013-01-05 11:00:19 +08:00
我就设身处地说一下美国这边大学 CS 专业是怎么教的吧。

这边大学,一般来说 CS 专业的学生大一用 Java 入门,以我们学校来说,CS 专业最基础的两门课,OOP 和 Data Structure 是用 Java 来讲的。不过更加着重编程思想的培养。

等到 OOP 和 Data Structure 学完后,下一门课就会教你 Advanced Programming Techniques 这时候 C/C++ 就开始上场了。然后以后的高级课程基本就是 C 系列的占主角了。

另外感叹一下国内的 CS ,上来就讲谭浩强,只强调编程语言不强调思想,写程序用 MSVC ,很多人学了半天离了IDE连个程序都不会编译,最后只会扼杀人的学习兴趣。这边 CS 专业的学生,作业虽然不多,但是要求很高。没有单元测试,重要代码没有注释,代码风格不统一都会被无情的扣分。基本就是从第一天就强迫学生养成良好的编程习惯。大二开始就几乎没人用IDE了,老师上课都是 Linux + GCC + VIM,MSVC就没怎么见人用过。
LokiSharp
2013-01-05 11:02:39 +08:00
Java的话,空闲时间看看《斯坦福大学公开课:编程方法学》稍微了解点,写两个小程序就可以了,人人影视上有整套视频以及翻译好的讲义。

关于Java之前学C,我不推荐,而且正好相反,你们学校先学Java应该就是为了给学C/C++打基础

要学C的话,建议先熟悉一下Linux环境,LinuxCast.net就是个不错的Linux入门网站。基本上学到vim就够了。熟练一下vim的操作,之后再开始学C。
jyoe
2013-01-05 11:14:57 +08:00
我不是程序员 有时间会看看Ruby 我觉得程序语言和外语差不多 都需要先建立语感 不陌生 可以沟通 我想计算和实现的功能 程序语言能听得懂即可。 兴趣是第一位的 你喜欢哪个就学哪个
dadastan
2013-01-05 12:28:20 +08:00
各位程序员,别在说些复杂的东西给初学者了,当年就是给所谓的师兄大牛害的

其实,编程是很简单的事情,看起来复杂吓人而已,什么C,C++,Java,C#,rubby,Python,Perl,Html,Css,Javascript
看起来复杂是吧,所谓的大牛还一定要跟你说些你听不懂的东西,然后从你身上获取优越感,这些玩意儿等你懂了,你就会发现都是些简单的东西,大牛会的东西,任何智商正常的人都能会

所以,别害怕,至于语言么,随便选一个都可以,C或者java用哪个都行啊,建议先C,那些复杂吓人的名词,先放一边,用自己最朴素的方式去理解里面的各种概念就好了

拿一本好书,然后就是不停地实践咯,有不懂就找人问,慢慢地你会觉得自己很聪明那些东西很简单的,Trust me!
再往后呢,请不要忘记帮助别人,把你自己的这些经验感悟告诉别人,让别人也能在其中找到快乐,而不是像某些牛一样,拿别人获取优越感
mengyang
2013-01-05 12:50:17 +08:00
@dadastan 感谢
qiukun
2013-01-05 13:58:12 +08:00
@dndx 我们也很严格

@dadastan @mengyang 但是我还是不建议 c 入手,@dadastan,怎么能和一个新手解释清楚 segment fault 呢?python 就没有这个问题了。

@dndx 这里引用下:麻省公开课:计算机科学及编程导论,讲师为MIT计算机系主任Eric Grimson。该课用Python讲解,针对很少或毫无编程经验的学生设计,目标是让学生培养计算式思维能力,并通过编程实现一些实用目的。

K&R 不是入门书,再次。
dadastan
2013-01-05 14:22:17 +08:00
@qiukun 对于目前中国学校的学生来说,python不是一门好语言,因为,没有python课程,大学里面学python的人也少,学习需要交流,需要任务驱动,作业,考试,等等
不要光光从语言的特点与好处来看,对于大多数人来说,计算机语言实际上都不难学,关键是学习氛围,学习态度,有无人帮助解答疑惑

从语言上来说,简单不等于好,为什么,因为高级而简单的面向对象的东西不能让人理解计算机内部工作的原理,不能驱动大家对计算机的热情,这样的情况下,学习语言只是为了工作,为了用
而大学不同,大学是刺激人们的脑细胞的地方,是给人们各种可能的地方,学习计算机的人需要了解内部原理,需要了解汇编甚至自己编写过机器语言,虽然未来几乎不会用到,但是这是教育的需求所在

对于目前中国大学来说,C语言无疑是最佳的,老师们,或许不是很精通python,perl,但是他们谁都懂C,C有内存机制,有指针,有引用,是面向过程的,对于学习来说,可以让人用全面的思维来看待计算机工作原理等等

我推荐C
xavierskip
2013-01-05 15:09:08 +08:00
语言只是工具。
wissen
2013-01-05 15:13:42 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/56565

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX