V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
TH3TA
V2EX  ›  程序员

真心求教,如果想当程序员,起步应该学什么?谢谢

  •  
  •   TH3TA · 2012-04-23 08:56:32 +08:00 · 5256 次点击
    这是一个创建于 4392 天前的主题,其中的信息可能已经有所发展或是发生改变。
    俺今年高三,以后非常希望能从事程序员这类的工作。
    不过我身边也都没人懂这类的事情,所以我现在也很迷茫该如何起步。

    我不想什么都等到大学时候再去学(其实我是迫不及待了...
    所以想要先自己在家里自学一些
    所以求教各位程序员前辈,到底学什么作为起步比较好?

    我记得网上有一篇文章说Python是最适合初学者的,求教可行否?
    当然,如果有更适合我这种初学者的就更好了

    顺便自述:
    高三,以前无任何经验,对这个领域有很大的热情,数学成绩一般

    诚心诚意的求教各位前辈,求帮俺指点一条明路
    万分感谢!
    32 条回复    1970-01-01 08:00:00 +08:00
    chiang
        1
    chiang  
       2012-04-23 09:07:39 +08:00
    在下也在这里请教一下,做这块应该要有什么知识储备。希望搭配着书来说明一下。谢谢
    roamlog
        2
    roamlog  
       2012-04-23 09:09:36 +08:00   ❤️ 2
    http://book.douban.com/subject/1230413/ 如果能把这书啃了,除了编程一类的书,其它的书都基本上不用看了。。。
    Enze
        3
    Enze  
       2012-04-23 09:12:18 +08:00
    学好英语
    66450146
        4
    66450146  
       2012-04-23 09:17:07 +08:00   ❤️ 1
    http://www.codecademy.com/
    可以先玩玩看:)
    aidai524
        5
    aidai524  
       2012-04-23 09:17:13 +08:00
    @Enze +1
    bluegobin
        6
    bluegobin  
       2012-04-23 09:20:36 +08:00   ❤️ 1
    @roamlog介绍的那本书不适合初学者看。

    Python适合当做入门语言,可以看Learning Python。

    除了语言需要对常用的数据结构和算法做一个了解。

    学习英语,不需要听说,但一定要会读写。

    学会使用搜索引擎和豆瓣之类的知识管理工具寻找有用的书籍,学会翻墙。

    有问题上StackOverFlow。
    udonmai
        7
    udonmai  
       2012-04-23 09:20:38 +08:00   ❤️ 1
    现在很多人都往一个不是很正确的方向走了,也就是认为计算机科学就是编程而忽视了计算机科学的很多基础知识。编码能力确实非常非常重要,但是计算机的只是同样如此~ @roamlog 推荐的书绝对是本必读的好书~ 楼主等高考结束吧然后一边看这本书一边做做 「Learn python the hard way」吧~ 个人愚见。
    dhysum
        8
    dhysum  
       2012-04-23 09:43:48 +08:00   ❤️ 8
    @roamlog 这本书不适合初学者,而且翻译的并不好。

    如果真要学,还是很辛苦的,要坚定的依赖自学。我经常在想,如果当初有人给我指明路径,会不会轻松很多。所以希望能给你几个建议。

    1. 首先,需要明白,程序员的范围非常广。你说的热情,可能到后来就如泥牛入海,不知道劲该用到哪里。所以,先要明白自己想做哪一类的。一般有以下几类,如有不足,请其他网友补充。
    而且技术是用来做出有价值的东西的。
    。系统底层:driver, file system,
    。B/S网络应用
    。网络协议栈
    。BSP(片上系统)
    现在太多人注意力放在B/S网络应用上了,而其他方面的应用的关注度却没那么高。其他几个入门难可能是个原因吧。
    2. 如楼上所说,英文是第一位的。 不是简单的能看懂。一般要看过一、两本技术类英文书,英文才算得心应手。这点我也还没做到呢。
    3. 选择一门语言,python一类的是容易学,但语言效率不是那么高,更多的是用于B/S应用这一块,当然也有科学计算一类的,这个另说了。 建议你学一些底层的东西,因为千变万变,计算机还是诺依曼系统。底层理解的透彻,上层的应用做起来更得心应手。但要理解透彻却也很难。如果只希望集中在B/S应用方面,那是个不错的选择吧。
    4.基础最重要。 不管是用技术来做什么业务、产品,技术的基础是最重要的。 所谓基础就是处处用到而离不开的理论什么的。 比如操作系统、算法与数据结构, 这是一生都学不完的玩意。但有了一定的基础,学习其他的更容易些。切莫走了弯路。 不然,忽略这些而过分集中于追逐当下时髦技术,实是舍本逐末,到后面肯定还是要补回来的。不如提早认真打好基础。
    5. 书的选择很重要。有很多书被认为是必不可少的书连很多推荐的人都没读过。 好书如美食,坏书则会坏肚子。 选书的时候,要看看作者是谁,大牛的书裨益良多而容易读;第二要看看序言、前言之类的,连这里都胡乱搪塞的,肯定是坏书劣枣;第三,写一本书往往需要引用很多,后面的引用文献能够告诉你作者是否用心,而且能够告诉你应该参考什么书目;第四,豆瓣上已经有很多豆列,可以参考人家看了哪些书;
    6. 博客与网上论坛,博客能够让你的所思所想记录下来,而且写的过程也是一个复习整理的过程,学到的知识不整理绝对枉然。而且博客能够跟别人交流,纠正自己不对的地方。这很重要。
    论坛,就不要随便上了,什么人都有,参差不齐。慎重。
    7. 凡事多自己完成,学会用而不要完全依赖google. 基本问题问别人会让人感觉不想回答。别如int类型的字节长度的问题, google一下就可以得到的,就不要问别人了。

    应该还有一些,其他网友补充吧。
    以上只是我自己的感想,有不对的恳请纠正。
    TH3TA
        9
    TH3TA  
    OP
       2012-04-23 19:13:29 +08:00
    @66450146 谢谢了,这个很有意思,对我很有帮助!
    TH3TA
        10
    TH3TA  
    OP
       2012-04-23 19:17:16 +08:00
    @udonmai 感谢提醒!
    我目前考虑学习Python这些语言是因为目前环境下我学别的不太现实(时间和设备什么的)...我的考虑是以后有时间有条件的时候慢慢学硬件啊原理啊之类的知识。
    既然这么多人都推荐那本书,我一定考后去认真读一下那本书!
    hxgdzyuyi
        11
    hxgdzyuyi  
       2012-04-23 19:18:52 +08:00
    @TH3TA 买空间,做网站。
    zealot
        12
    zealot  
       2012-04-23 19:24:16 +08:00
    热情,世俗抹不掉的热情
    lch21
        13
    lch21  
       2012-04-23 19:25:45 +08:00
    @TH3TA

    编个简单的游戏起步,如俄罗斯方块
    TH3TA
        14
    TH3TA  
    OP
       2012-04-23 19:28:16 +08:00
    @dhysum 万分感谢!看到说的这么多我真的感动了!
    上面的很多建议对我非常有用,也让我看到了一个大体的方向

    不过,顺便求教一下,第四条的基础知识指的是什么?
    求推荐这类的书,因为像我这种自学的野路子是最需要专门补基础理论的...

    非常感谢您的指点!
    dhysum
        15
    dhysum  
       2012-04-23 19:44:42 +08:00   ❤️ 2
    @TH3TA 计算机的基础有这么几个,虽说是基础,其实是很庞大的内容,不是一朝一夕能学会的。相对来讲是比较底层的东西,

    1. 计算机的体系结构,这个是比较宽泛的,选书很难,推荐《计算机体系结构-量化研究方法》第三版, 作者是John L. Hennessy & David A. Patterson。最好读英文版,第三版有一些基础知识,第四版放进附录了。这本书是我同事推荐的,我认为不错。
    2. 操作系统相关的一些基本理论(设备管理、存储管理、进程调度等),
    3. 常用算法与数据结构,算法中最常用的如排序、查找等, 排序和查找是计算机理论中用的非常多的算法,数据结构如链表、栈、队列、树、图、二叉树等等。但算法跟数据结构是分不开的。
    4. 常用的网络协议,主要就是指TCP/IP了, 但这只是数据传输的通用协议。 TCP/IP的学习不要直接看很庞大的文档,了解主要的结构和原因,不必要记协议具体内容。
    5. UNIX/LINUX环境是最好的学习编程的环境,但对初学者来说不容易搭建环境,建议你用Ubuntu或者fedora。

    另外, 我还是想说, 上面几位推荐的那本书确实不错, 但那是原版。翻译版的不好,而且这本书本身就不是初学者用的。 如果想看类似的书,《程序员的自我修养-链接、装载与库》这本书是不错的,但也需要一定的基础之后看更好,相信会解决你的很多疑惑。

    至于语言,我建议是C语言。python也可以,但两者的差别很大。 慎重!

    希望有所帮助。
    dhysum
        16
    dhysum  
       2012-04-23 19:49:03 +08:00
    @TH3TA 计算机体系结构那本书是比较深的, 你可以先简单的了解一下诺依曼结构再去看那本书。之后是2、3、4、5的内容, 1.的内容应该放在后面,通过这个可以整理出一个系统理论。然后你再了解一点编译器、操作系统内核源码之类的,到了这一步你已经会比较受欢迎了。 再进阶,就是算法、操作系统以及实际应用的事情了!
    dhysum
        17
    dhysum  
       2012-04-23 19:50:05 +08:00
    @TH3TA 对了,有本书可以作为入门的浏览书籍《编码的奥秘》,这里是很浅显的理论知识。
    haohaolee
        18
    haohaolee  
       2012-04-23 19:51:12 +08:00
    很多高中的小朋友利用闲暇时光就把CLRS什么的啃完了(包括习题),CLRS算不上高深的东西,但是高中小朋友学有余力看看没坏处。前提是学有余力,以减少课堂正常学习为代价来学计算机一点都不值得
    fanzheng
        19
    fanzheng  
       2012-04-23 19:58:13 +08:00
    我也感觉先学python蛮好的。python简明教程 这本书可以看,自己写什么小程序什么的。有基础之后学点其他的语言。
    avatasia
        20
    avatasia  
       2012-04-23 20:10:25 +08:00
    编程很简单的。难在基础,数学,数据结构。
    当你了解一门语言后,你需要锻炼的只是如何搭积木
    TH3TA
        21
    TH3TA  
    OP
       2012-04-24 09:37:38 +08:00
    @dhysum 谢谢!
    您给出的这些建议,让我觉得心里终于有些底气了
    因为原来不知道从何下手,很迷茫,如今有了一个大体的认识,感觉好多了
    (现在我的计划是现在课余时间自学一下编码之类的,放假后开始系统的学习一下计算机体系结构之类的
    至于您推荐的书,我肯定会去努力啃一遍原版的!
    您的建议对我很有帮助,万分感谢!
    TH3TA
        22
    TH3TA  
    OP
       2012-04-24 09:39:05 +08:00
    同时感谢这楼里所有热心帮助我的朋友
    因为时间原因没办法一个一个回复去感谢
    不过真的是很谢谢你们热心的帮助我!
    cloverstd
        23
    cloverstd  
       2012-04-24 09:44:16 +08:00
    我认为高三就应该以学习为主了
    高一二还可以学学
    高三了,就可以等高考后再学
    tylr
        24
    tylr  
       2012-04-24 09:47:19 +08:00
    @cloverstd +1进了大学自学的时间很多,到时候慢慢来也不迟
    tioover
        25
    tioover  
       2012-04-24 11:38:49 +08:00
    编程语言方面的书,由易到难

    * dive into python / python 官方文档 / help()
    * c程序设计语言
    * 计算机程序的构造和解析

    算法和数据结构方面,最近在看一本《大话数据结构》感觉不错,学了 C以后去看看

    系统方面,如想简单获得开发环境的话,Ubuntu你的选择,Archlinux学起来机磕磕绊绊的,但有助提高动手能力和对linux的理解,按照 wiki来其实很简单,久负盛名的书有《鸟哥的linux私房菜》可以放在收藏夹里慢慢来。

    除非是有靠谱的推荐,否则别去书店买国产技术书,我初中的时候买了很多现在堆在那里丢也不是送人也不是。
    laskuma
        26
    laskuma  
       2012-04-24 12:37:04 +08:00
    还是得从C看起。觉得itunes上stanford的几门公开课还是不错的。刚接触最好学习java而不要去碰C。从python一类的脚本语言开始学起也未尝不可。
    guoquan
        27
    guoquan  
       2012-04-24 12:49:43 +08:00
    高三&……先好好高考吧……不管什么迫不及待的……先好好高考吧……
    quake0day
        28
    quake0day  
       2012-04-24 12:50:44 +08:00
    除了上面说的,编程自学也可以从做网页开始学起。HTML+CSS,先做个个人网站什么的也是很好的起步。网络时代,会点网页制作很吃香。
    loo2k
        29
    loo2k  
       2012-04-24 12:57:00 +08:00
    先认真搞定高考吧,这事完全可以等暑假的时候考虑,大把的时间;
    上个好学校也会对你帮助很大。
    sunshineg
        30
    sunshineg  
       2012-04-24 13:14:22 +08:00
    推荐我们滴 :) http://segmentfault.com/
    noark9
        31
    noark9  
       2012-04-24 16:02:22 +08:00
    语音不一定是最重要的,好好学数学,英语和计算机的基础科学,终身受益的
    bjlbeyond
        32
    bjlbeyond  
       2012-04-29 19:51:26 +08:00
    @bluegobin 你好,你所说的这个网站,我看了一下, 里面全是英文啊,这个和那个csdn比较起来,它的优点在哪?谢谢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   779 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 22:18 · PVG 06:18 · LAX 15:18 · JFK 18:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.