• 请不要在回答技术问题时复制粘贴 AI 生成的内容
ru20150601
V2EX  ›  程序员

学编程,到底是从 C 开始好,还是 Python, PHP 开始好?

  •  
  •   ru20150601 · Oct 3, 2015 · 15383 views
    This topic created in 4053 days ago, the information mentioned may be changed or developed.

    一开始自学 C ,看 KR ,一直死啃看到 Structure 那里,因为之前看过另一本《 c 语言解析》,所以都没什么大问题。(但是那个 quicksort 排序算法跳过了,自己掰着指头演示了一下,能工作,但是没仔细研究原理,因为觉得正在学语言,不想耗费精力研究算法)。偶尔网上看到人讨论,说入门不要看 KR ,太晦涩,会走太多弯路。于是现在很犹豫是不是该改成 C Primer Plus 来入门。

    另一个问题,好多人说学会了 C 看其他的就很简单了,大家说说是这样的吗?到底是先看 C 然后再看其他的快,还是先学其他的,最后来研究 C 呢?我的目标是学会 C , python , php ,数据库。


    补充一下,也看了很多国外的讨论,最使我震动的是这样一段:
    “ I think not, be careful to jump on the K&R bandwagon. K&R does not address good program design nor good programming practice, mainly because it was originally written before anyone knew what good programming practice was. It does not mention which parts of the C language that are superfluous or even dangerous. The book is correctly listed as a reference manual, it should not be used for teaching/learning modern programming.”

    102 replies  •  2017-03-27 08:09:20 +08:00
    1  2  
    ❮ ❯
    azplj
    azplj
    Oct 3, 2015 via iPhone❤️1
    1
    roychan
    roychan
    Oct 3, 2015
    2
    C
    cloudqq
    cloudqq
    Oct 3, 2015
    3
    PYTHON
    tammy
    tammy
    Oct 3, 2015
    4
    我觉得都不好,建议《计算机组成原理》
    chenggiant
    chenggiant
    Oct 3, 2015
    5
    Java 好! (我是来捣乱的...)
    codeforlife
    codeforlife
    Oct 3, 2015
    6
    建议学汇编
    zjqzxc
    zjqzxc
    Oct 3, 2015❤️3
    7
    如果目标不是计算机工程师,前往不要从 C 开始学。。
    对于不想当码农的人来说, C 的学习曲线太陡峭了,,以至于学习了好久都无法写出自己想要的东西。然后学习兴趣就没了。然后就没有然后了。

    对于非计算机专业的人老说,编程最重要的功能是解决遇到的问题而不是给自己找麻烦。效率,程序可读性甚至是可维护性都可以扔一边,把问题解决了才是最关键的。

    如果想写一个网站,直接上 php 会比较快。 Python 相对来说比 PHP 稍慢,毕竟 php 除了当动态网站语言之外几乎干不了太多的事儿了,人家专业做这个的。

    总结:对于非程序员来说,码代码是用来解决问题的,不用纠结底层的东西,能短平快解决问题才是最关键。
    以上观点可能会有大批程序员不赞同。。所以再次强调,这个说法是针对不想成为程序员但有编程需求的 人的。
    zonghua
    zonghua
    Oct 3, 2015
    8
    楼上说的好,不是计算机专业的不建议从 C 开始
    zonghua
    zonghua
    Oct 3, 2015
    9
    @zonghua 但是我很疑惑为什么其他的都要学习 VB ?
    ru20150601
    ru20150601
    OP
    Oct 3, 2015
    10
    @zjqzxc
    谢谢你这么晚了还写这么长篇,问题是我已经看到 structure 了,这本书从厚度来看已经看完了 2/3 了,有点不舍得。。。。老司机们,过来人们,来告诉我下后面还有多少吧。
    Paranoid
    Paranoid
    Oct 3, 2015
    11
    天下武功,唯快不破
    天下语言,唯 C 不纯


    要看你所在的阶段,中学,高中,大学? C C C

    工作了? 先掌握吃饭的技能,再学 C C C
    movtoy
    movtoy
    Oct 3, 2015
    12
    先 PHP ,感兴趣了,写个小论坛,有成就感了。再慢慢深入学 C 。。

    关键是 PHP 教程多。低端到高端只是都有。。
    limbo0
    limbo0
    Oct 3, 2015
    13
    我觉得 c 必然得学的, 这关系着理解计算机底层的概念, 对以后很有帮助.而 Python, php 是应用层了, 关系更高层面的东西, 也是以后能够接触的.

    当然, 感觉 c 是最简单的了, 因为是最基础的, 语法结构也是比较简单的, 学 c 很简单, 但是编程思想, 方法一系列的东西还是靠慢慢养成的
    Comdex
    Comdex
    Oct 3, 2015
    14
    学 golang
    Threezj
    Threezj
    Oct 3, 2015
    15
    C 这关必过的吧,结构化编程套路,指针的思维。对你将来的学习都有很大的帮助。然而 C 并没那么难学吧? 网易云课堂翁恺老师的课跟一下,作业做好,肯定能理解,编程也就算入了门了。到时候可以再按需求来学习语言。然而功夫在语言外。
    skydiver
    skydiver
    Oct 3, 2015
    16
    C 本身没有太多东西啊。。没必要花那么多时间在这个上面。
    看书不需要看得那么仔细,不求甚解最好,先掌握整体,然后遇到实际问题再去看对应部分。要不然一本书都啃不下来……
    yxcxx
    yxcxx
    Oct 3, 2015
    17
    C 必须学,但是建议不要一开始就学。学 Python 或者 PHP 很容易能作出东西比较有成就感和兴趣。学到后面你不得不去学基础知识(算法,数据结构,操作系统)的时候才开始去学 C 。
    anubiskong
    anubiskong
    Oct 3, 2015
    18
    javascript
    simon7
    simon7
    Oct 3, 2015 via iPhone
    19
    Python 妥妥的
    pmpio
    pmpio
    Oct 3, 2015
    20
    还是 BASIC 最好入门。。。。
    zts1993
    zts1993
    Oct 3, 2015
    21
    半吊子程序员很多都是从高级语言开始。。。我说很多绝对,不要碰我。
    zts1993
    zts1993
    Oct 3, 2015❤️1
    22
    @zts1993 喷
    minvacai
    minvacai
    Oct 3, 2015❤️1
    23
    我就是先会 C 再会其它的。总的来说觉得 python 最简洁上手也最快,学 C 得益最多, PHP ?嗯我知道这是最好的语言了,那又怎么样,用起来毫不愉悦啊。
    Jaosn
    Jaosn
    Oct 4, 2015
    24
    我也好奇的一点,为什么现在高中都开始学 VB 了?
    543400
    543400
    Oct 4, 2015 via Android
    25
    php 比较简单,而且是最快赚钱的
    Sabermadao
    Sabermadao
    Oct 4, 2015 via Android
    26
    我们一开始就学 C++!心累
    blackcloak
    blackcloak
    Oct 4, 2015
    27
    从 Haskell 开始学起吧
    moooookey
    moooookey
    Oct 4, 2015❤️1
    28
    从现在开始
    realityone
    realityone
    Oct 4, 2015 via iPhone
    29
    @moooookey 从现在开始
    lenran
    lenran
    Oct 4, 2015
    30
    偶尔看到的,不是偶的观点:

    学习如何编程
    http://translations.readthedocs.org/en/latest/hacker_howto.html#id11

    其实,我是比较同意 7 楼 @zjqzxc 的观点的
    hbkdsm
    hbkdsm
    Oct 4, 2015❤️2
    31
    Scheme/racket 函数式才是王道
    这是非科班相对于科班的优势,科班出身的都是从 C, C++, Java 学过来,命令式编程、结构化编程的思想已经形成思维定势,没有编程基础的人学函数式反而没有障碍。君不见国外大学大一新生都是先学 SICP ,从 Scheme 开始的!
    chengzhoukun
    chengzhoukun
    Oct 4, 2015
    32
    C/C++必须要学的,因为大部分互联网公司笔试都会考的
    orFish
    orFish
    Oct 4, 2015
    33
    c

    虽然以后有些方向跟 c 没啥关系。。。

    但是 c 有些东西学到还是挺有用的。。
    ilotuo
    ilotuo
    Oct 4, 2015
    34
    非常不同意 7 楼
    说的好像搞网站搞 web 才是程序员一样.
    个人觉得对 C 都不了解就对程序的构造,原理更不理解了.连程序的编译,链接,执行原理都不懂何谈程序员.
    ilotuo
    ilotuo
    Oct 4, 2015
    35
    好吧 我没看到最后一句...
    但是明显楼主不是 "不想成为程序员但有编程需求的 人"
    wwwap
    wwwap
    Oct 4, 2015
    36
    ruby,javascript
    lenran
    lenran
    Oct 4, 2015
    37
    @ilotuo 7 楼的意思是,由’需求‘来决定开发语言。有什么不对吗
    msg7086
    msg7086
    Oct 4, 2015
    38
    从 Python 学起,然后再转到其他更有意思的语言去。
    icedx
    icedx
    Oct 4, 2015 via Android
    39
    去海边烧沙子 从手工雕刻 CPU 学起
    ryd994
    ryd994
    Oct 4, 2015
    40
    @hbkdsm 您说的是哪国哪校的学生啊?
    在我所知的范围内,多数用 Python 入门,后面跟 Java/C++的数据结构,然后是算法 /组成
    比国内用 C/Pascal 入门要简单,算法也以知道复杂度为目标
    wolfan
    wolfan
    Oct 4, 2015 via Android
    42
    从语言风格来讲好像三都是同缘的吧,如果是爱好,那从, c,py ,如果生产那还是 php 吧。

    个人看法
    a358003542
    a358003542
    Oct 4, 2015
    43
    不是有一句这样的话吗,对于程序员来说,学习任何一门新的语言都能对自己有所提高,除非你已经学过 lisp 了。
    chenhui7373
    chenhui7373
    Oct 4, 2015
    44
    CPlusPlusPlusPlus
    wleexi
    wleexi
    Oct 4, 2015
    45
    @zjqzxc PHP 做服务端程序越来越多啦
    linux40
    linux40
    Oct 4, 2015 via Android
    46
    c 语法很简单,只是容易乱搞而需要长年的努力。。。
    zhicheng
    zhicheng
    Oct 4, 2015
    47
    全学
    Fortran
    Fortran
    Oct 4, 2015
    48
    不建议先学 C ,但 C 一定要学的
    Leu
    Leu
    Oct 4, 2015
    49
    定一个上端的目标,然后查询需要实现这个目标需要获得哪些技能,然后制定一张技能表从底层一层一层往上点技能点。不管学习什么语言,最重要的是要知道你想用这门语言干嘛,这样才有动力学下去。
    assassinpig
    assassinpig
    Oct 4, 2015
    50
    如果学 c 就坚持学,如果不学 c python 之类快速入门干活的即可
    Jocktaa
    Jocktaa
    Oct 4, 2015
    51
    先学一门高级语言 很容易获得成就感,,然后再学 c
    jukka
    jukka
    Oct 4, 2015
    52
    个人认为,关键的问题在于,如果你先学了其他语言,比如 python 之类的,你就已经能干很多事情了。到时候你根本不会有兴趣去学 C ,因为大多数需要 C 的地方,都有前人写好 lib 了。

    如果努力,想在技术这条路上继续走,很快就会走到需要 C 的那一步。到时候就不知道能不能 *静下心来*了。
    llhhss
    llhhss
    Oct 4, 2015 via iPhone
    53
    半路出家: python
    一时兴起: php
    其他: c
    c24c4fe8
    c24c4fe8
    Oct 4, 2015
    54
    入门学习 python 吧 等有了兴趣可以再学习其他的,相对于 其他的路太陡峭了,容易失去信心 半途而废。
    ljbha007
    ljbha007
    Oct 4, 2015
    55
    Python 十分适合入门
    等有一定水平了再研究 C/C++会有很多好处 虽然不一定用得上
    haogefeifei
    haogefeifei
    Oct 4, 2015
    56
    遇到的好多前辈都是 basic 起步的(小霸王学习机。。)
    而我嘛,是 Python for S60 起步的(在塞班手机上写程序)
    国外初中高中课程教的是 VB (玩游戏不小心进了海外党的群)
    学校正儿八经的教的是 C ,只作为编程基础
    高级语言学的 Java , C#,我自学的 Android 。。
    Web 方面一开始写的 JavaWeb ,后来用的框架里的 Spring 把我恶心到了
    如果不是写 Android 估计现在全面倒向 Python 了
    haogefeifei
    haogefeifei
    Oct 4, 2015
    57
    个人觉得语言不重要,关键是计算机和网络方面的基础知识要学牢。
    glchaos
    glchaos
    Oct 4, 2015
    58
    没人推荐 C#?这东西学了基本上什么都能写了,很快!
    wizardforcel
    wizardforcel
    Oct 4, 2015 via Android
    59
    如果在这几个里面选的话,我支持 python 。
    yuchting
    yuchting
    Oct 4, 2015
    60
    当一个程序员回答我,一个 C 的 char 占 2 个字节的时候,我仰天畅谈,内流满面……
    foxkiller
    foxkiller
    Oct 4, 2015
    61
    @ryd994 呃= = UCL 本科大一的 programming principle 是用 Haskell 教的= =确实是上来就一门函数式让你练练胆。。外加看 Church 的 Lamda 演算的 paper 看到想上吊。。。
    lenran
    lenran
    Oct 4, 2015
    62
    @glchaos 抄 java 的。以前不开源,现在刚开源。再看看。。。
    封装的比较厉害,要深入研究,不易
    glchaos
    glchaos
    Oct 4, 2015
    63
    @lenran 天下文章一大抄,如果只是用的话,还是非常不错了,而且有些好些扩展是要花钱的,质量有保证。
    lenran
    lenran
    Oct 4, 2015
    64
    @glchaos ‘要花钱的,质量有保证。’,这逻辑,不敢认同
    redvoilin
    redvoilin
    Oct 4, 2015
    65
    先学 c ,再学 ruby
    YuJianrong
    YuJianrong
    Oct 4, 2015 via iPad❤️1
    66
    "好多人说学会了 C 看其他的就很简单了"…这谁说的简直胡说八道! C 那么简单而奇葩的语言学会了看其他也没多大用啦。 C 其实是比汇编高一点,但比其他语言低很多的中级语言,学习 C 一个重要的地方就是要体会这段代码编译成机器码的时候应该是什么,和其他语言不同, C 对机器嘛的翻译比较直白,所以很适合理解底层实现,学 C 也就对写底层实现有点好处而已。指针啦宏啦很多语言都没有,你学会了又有什么用?

    所以说你要定目标的话,不要定成学会什么语言而是应该定成什么方向!就比如 php 和 c ,这几乎是不会同时使用的东西一起学会你是要干什么?先选好方向,再去找这个方向需要的语言和环境,才是正道。

    当然 OOP 还是应该掌握的,所以可以找一门还算简单易学的 oop 语言学学看,建议语法 C 风格的 java 或者 c#。
    liboyue
    liboyue
    Oct 4, 2015 via Android
    67
    不从 C/Cpp 开始连内存是什么都不知道吧?
    glchaos
    glchaos
    Oct 4, 2015
    68
    @lenran 要不拿什么来支持他们做更好的东西呢,至少我愿意相信物有所值!
    onlyxuyang
    onlyxuyang
    Oct 4, 2015
    69
    python...
    HentaiMew
    HentaiMew
    Oct 4, 2015
    70
    php 只是脚本语言 很多静态编程语言特性都没有的 不建议上手
    XadillaX
    XadillaX
    Oct 4, 2015
    71
    C
    wezzard
    wezzard
    Oct 4, 2015
    72
    x86 assembly is your friend. :doge:
    superhxnju
    superhxnju
    Oct 4, 2015
    73
    先学静态类型语言比较好
    zog
    zog
    Oct 4, 2015❤️1
    74
    结论: python
    这个问题在 how to become a hacker 里面有阐述。英文链接: http://www.catb.org/esr/faqs/hacker-howto.html 。中文翻译: http://zer4tul.github.io/docs/hacker-howto.html#hacker-howto 。文章作者是: Raymond, 著有大教堂与集市。
    ru20150601
    ru20150601
    OP
    Oct 4, 2015
    75
    @YuJianrong
    谢谢长篇回复,看到您能直述自己的观点,感觉到 V2EX 这地方确实不错。

    也谢谢各位站友的回复,让我得了不少铜币 :)

    我仔细想了一下,决定先把 C 看完,我是从 C 入门的,以至于看 C 现在很亲切,没有 Yujianrong 所说的“ c 语言奇葩“的感觉,但是 python 看了两章反而感觉不是很友好。可能是思维暂时转不过来吧。但是我决定暂停 KR ,转向 C Primer Plus ,原因如下:

    KR 本身并不高深,它只是说的不详细(它可能很详尽,但是不详细),很多东西都是点到即止,所以看起来困难。更像是一本 reference book ,如果选择这本书来学习,那真是 “没有困难,创造困难也要上”了。

    能够用白话文看明白而又不失去原意的东西,没必要看文言文。毕竟我们要看的是内容,而不是古文的美学。把逻辑结构写的很简约以至于到了新手看不懂的程度,如果我硬啃下来,除了速度慢,有可能锻炼一下自己的悟性之外,似乎也多学不到什么东西。

    不知道有没有赞同我的想法的。
    snnn
    snnn
    Oct 4, 2015
    76
    @ru20150601 "能够用白话文看明白而又不失去原意的东西,没必要看文言文" 这句话我很赞同。
    RqPS6rhmP3Nyn3Tm
    RqPS6rhmP3Nyn3Tm
    Oct 4, 2015 via iPad
    77
    楼上在说什么呢,当然是 LISP 啊
    charlie21
    charlie21
    Oct 4, 2015
    78
    喜欢看视频学 C 语言的,可以看看这个
    http://xuebiancheng.cn/course/55
    chairuosen
    chairuosen
    Oct 4, 2015
    79
    从与非门开始。。。。
    asp
    asp
    Oct 4, 2015
    80
    c 和 python 一般选一个就好了,个人建议选 C 。然后在再学学 C++。 php 断后。
    adrianzhang
    adrianzhang
    Oct 4, 2015
    81
    @zog 很好的材料,多谢!
    asahi
    asahi
    Oct 4, 2015
    82
    至少我是不建议学 c++入门, c 语言本身语法特性不是很多,抽象也比较少,但其中指针的概念会让你在学习其他语言的时候受益匪浅, python 也是极好的,语法很简单,理解起来也很容易。一点拙见,欢迎来喷
    ityike
    ityike
    Oct 4, 2015
    83
    PHP 是第一好的语言, golang 是第二好的语言。。。。你们别喷我
    ophunter
    ophunter
    Oct 4, 2015
    84
    学 C 啊,然后你就会觉得学什么都好了
    Robling
    Robling
    Oct 4, 2015
    85
    C#吧
    语法特性特别多,学完了再接触其他语言会有“啊,我见过”的感觉。
    pythoner
    pythoner
    Oct 4, 2015
    86
    看完这个帖之后,楼主需要再发一贴,标题我都给你想好了:
    《学编程,到底是从 C 开始好,还是 Python , PHP , C++, C#, golang , javascript , ruby , haskell , lisp , java , basic , VB 开始好?》
    dqh3000
    dqh3000
    Oct 4, 2015
    87
    我觉得看以后想干嘛吧

    学来玩的话, javascript 就挺好, javascript 万能,任何可以用 javascript 写的程序最终都会用 javascript 写

    ……当然 PHP 是世界第一的语言这个无法改变
    hienchu
    hienchu
    Oct 4, 2015
    88
    C 语言好就好在能让你深刻理解机器真正的运行方式,一旦了解了这一点,其他语言都不是问题。
    Neveroldmilk
    Neveroldmilk
    Oct 4, 2015
    89
    有超强毅力和远大目标的,可以从 C 开始,但是头几年肯定不少碰壁或者比较迷茫,坚持 3 到 5 年就能学有所成。
    snailsir
    snailsir
    Oct 4, 2015 via iPhone
    90
    只学过 c ,现在在做 PHP
    hbkdsm
    hbkdsm
    Oct 4, 2015
    92
    @ryd994 你是对的

    近年来 MIT 入门课确实从 Scheme 换成 Python 了,不仅如此, Python 在其它美国高校也是风头正劲!

    http://cacm.acm.org/blogs/blog-cacm/176450-python-is-now-the-most-popular-introductory-teaching-language-at-top-us-universities/fulltext

    这篇报道说, Python 现在是美国顶级大学最流行的入门级教学语言

    2014 年依然使用 Scheme 做入门教学的有 Brown, Yale, U Minnesota, Northwestern, U Chicago
    kran
    kran
    Oct 4, 2015 via Android
    93
    第一门学 c 一般不会知道做什么,建议学个和 c 紧密的,比如 lua😃
    ch3rub1m
    ch3rub1m
    Oct 4, 2015 via iPhone
    94
    建议学 C(非 C++,这是两门完全不同的语言), Python 有太多可替代语言,如 php 、 ruby 、 lua ,但是 c 在 unix 编程方面无可取代,大部分语言的编译器 /解释器都是 c 写成的,你以后的工作可以说 90%跟 c 没什么关系,但是学了 c 有助于你理解底层的东西。我认为编程是一项很难的工作,偏激点说,我认为一点不懂 c 的程序员是不合格的。
    wendzhue
    wendzhue
    Oct 4, 2015
    95
    当然是建议先学 Python 等脚本语言,当你差不多啃完一本 Python 语法书后,可以继续 Python 同时开始学 C 。
    iyangyuan
    iyangyuan
    Oct 5, 2015 via iPhone
    96
    vb
    yang2yang
    yang2yang
    Oct 5, 2015
    97
    不管学什么,直接学比较好
    iau
    iau
    Oct 5, 2015
    98
    楼主既然已经看到 struct 了, C 语言基本快看完了,怎么能半途而废呢。个人认为学 C 主要是学指针,底层实现的原理。如果对两者掌握透彻了,对学其他的语言很有帮助的。对于 C 语言的文件操作,各种库函数等只要了解大概就可以,不需要深究。
    huage
    huage
    Oct 6, 2015
    99
    楼主多少岁了?时间宝贵啊!

    我虽然不太懂技术,但我在带团队,我的观念是面向问题的编程,老板客户要的是解决问题, who care what the fuck you are using?!
    ru20150601
    ru20150601
    OP
    Oct 7, 2015
    100
    @iau
    @huage
    看了几位的回复,已经明白方向了,非常感谢。
    1  2  
    ❮ ❯
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1624 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 267ms · UTC 02:35 · PVG 10:35 · LAX 18:35 · JFK 21:35
    ♥ Do have faith in what you're doing.