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

2012-04-23 08:56:32 +08:00
 TH3TA
俺今年高三,以后非常希望能从事程序员这类的工作。
不过我身边也都没人懂这类的事情,所以我现在也很迷茫该如何起步。

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

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

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

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

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

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

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

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

有问题上StackOverFlow。
udonmai
2012-04-23 09:20:38 +08:00
现在很多人都往一个不是很正确的方向走了,也就是认为计算机科学就是编程而忽视了计算机科学的很多基础知识。编码能力确实非常非常重要,但是计算机的只是同样如此~ @roamlog 推荐的书绝对是本必读的好书~ 楼主等高考结束吧然后一边看这本书一边做做 「Learn python the hard way」吧~ 个人愚见。
dhysum
2012-04-23 09:43:48 +08:00
@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
2012-04-23 19:13:29 +08:00
@66450146 谢谢了,这个很有意思,对我很有帮助!
TH3TA
2012-04-23 19:17:16 +08:00
@udonmai 感谢提醒!
我目前考虑学习Python这些语言是因为目前环境下我学别的不太现实(时间和设备什么的)...我的考虑是以后有时间有条件的时候慢慢学硬件啊原理啊之类的知识。
既然这么多人都推荐那本书,我一定考后去认真读一下那本书!
hxgdzyuyi
2012-04-23 19:18:52 +08:00
@TH3TA 买空间,做网站。
zealot
2012-04-23 19:24:16 +08:00
热情,世俗抹不掉的热情
lch21
2012-04-23 19:25:45 +08:00
@TH3TA

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

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

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

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

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

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

希望有所帮助。
dhysum
2012-04-23 19:49:03 +08:00
@TH3TA 计算机体系结构那本书是比较深的, 你可以先简单的了解一下诺依曼结构再去看那本书。之后是2、3、4、5的内容, 1.的内容应该放在后面,通过这个可以整理出一个系统理论。然后你再了解一点编译器、操作系统内核源码之类的,到了这一步你已经会比较受欢迎了。 再进阶,就是算法、操作系统以及实际应用的事情了!
dhysum
2012-04-23 19:50:05 +08:00
@TH3TA 对了,有本书可以作为入门的浏览书籍《编码的奥秘》,这里是很浅显的理论知识。
haohaolee
2012-04-23 19:51:12 +08:00
很多高中的小朋友利用闲暇时光就把CLRS什么的啃完了(包括习题),CLRS算不上高深的东西,但是高中小朋友学有余力看看没坏处。前提是学有余力,以减少课堂正常学习为代价来学计算机一点都不值得
fanzheng
2012-04-23 19:58:13 +08:00
我也感觉先学python蛮好的。python简明教程 这本书可以看,自己写什么小程序什么的。有基础之后学点其他的语言。
avatasia
2012-04-23 20:10:25 +08:00
编程很简单的。难在基础,数学,数据结构。
当你了解一门语言后,你需要锻炼的只是如何搭积木

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

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

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

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

© 2021 V2EX