V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
kachens
V2EX  ›  程序员

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

  •  
  •   kachens · 2013-01-04 18:44:57 +08:00 · 5171 次点击
    这是一个创建于 4373 天前的主题,其中的信息可能已经有所发展或是发生改变。
    话说小弟今年大一,专业是软件,到现在专业课都木有开课。
    下学期直接开JAVA。我没有编程的基础,平时最多也就知道点html,
    然后买了本Brian W.Kernighan,Dennis M.Ritchie的《C程序设计语言》先接触下这类的知识。(没敢买谭老爷子的,怕给带沟去)。
    发现不知道从哪下手啊。
    感觉被坑了的样子。
    还有,我学JAVA之前要不要接触下C啊?
    24 条回复    1970-01-01 08:00:00 +08:00
    hanai
        1
    hanai  
       2013-01-04 20:33:16 +08:00
    我觉得这两个学起来关系不大,从哪个开始学都没问题。
    laskuma
        2
    laskuma  
       2013-01-04 20:43:18 +08:00
    大二飘过 大学前无任何基础 大一轻松虐java 别紧张就行
    qiukun
        3
    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
        4
    laskuma  
       2013-01-04 21:01:21 +08:00
    @qiukun 来这问入门问题回答必提python啊 哈哈哈
    qiayue
        5
    qiayue  
       2013-01-04 21:07:13 +08:00
    那个告诉你学java前先学c的就是准备把你带到坑里去的人。
    c是面向过程语言,java是面向对象语言,两者压根就没有多大关系。

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

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

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

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

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

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

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

    拿一本好书,然后就是不停地实践咯,有不懂就找人问,慢慢地你会觉得自己很聪明那些东西很简单的,Trust me!
    再往后呢,请不要忘记帮助别人,把你自己的这些经验感悟告诉别人,让别人也能在其中找到快乐,而不是像某些牛一样,拿别人获取优越感
    mengyang
        16
    mengyang  
       2013-01-05 12:50:17 +08:00
    @dadastan 感谢
    qiukun
        17
    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
        18
    dadastan  
       2013-01-05 14:22:17 +08:00
    @qiukun 对于目前中国学校的学生来说,python不是一门好语言,因为,没有python课程,大学里面学python的人也少,学习需要交流,需要任务驱动,作业,考试,等等
    不要光光从语言的特点与好处来看,对于大多数人来说,计算机语言实际上都不难学,关键是学习氛围,学习态度,有无人帮助解答疑惑

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

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

    我推荐C
    xavierskip
        19
    xavierskip  
       2013-01-05 15:09:08 +08:00
    语言只是工具。
    wissen
        20
    wissen  
       2013-01-05 15:13:42 +08:00
    ForgotFun
        21
    ForgotFun  
       2013-01-05 15:18:18 +08:00
    任何语言都有优点和缺点,新手学语言的时候,不要抱着学完这门语言就能写程序了,除非天才一般新手学完一门语言就只能写写helloworld等级的代码。

    你需要学习的是,了解一门语言擅长做什么,不擅长做什么,能做什么,不能做什么。
    比如:PHP等写CGI,但C写起来不方便。
    语言本身其实没啥难点,难的是语言相关的东西,比如做C的项目时,你不可能啥都自己写,需要学会用其他人的库。
    dadastan
        22
    dadastan  
       2013-01-05 17:43:57 +08:00
    那些扯CGI,PHP,GTK,UNIX,socket,vim等等东西的
    扯面向对象,面向过程的,你们觉得楼主懂?这些名词只会让初学者害怕
    对于新手来说,最可怕莫过于给他设置心理障碍,不就一门语言么,纠结那么多干嘛
    想那么多遥远的东西干嘛
    拿一本国外的好书,抱一台电脑,开干,不懂问,不要怕
    英文不好拿一本国产书也行
    cappascap
        23
    cappascap  
       2013-01-05 18:05:40 +08:00
    买书看书,不懂就问,由简入深,大家都是这么过来的,don`t worry! just do it!
    laskuma
        24
    laskuma  
       2013-01-06 15:03:49 +08:00
    @dadastan
    @qiukun
    我回来围观一下弃坑逃跑的楼主。


    @dadastan 很同意你的说法 学就是了 管他难不难 LZ智商又不一定比别人低 说无从下手肯定是书都没翻开过
    @qiukun K&R简洁明了 觉得入门很合适。我入门就是K&R,指针一看就懂了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2500 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 15:54 · PVG 23:54 · LAX 07:54 · JFK 10:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.