如何选择一门语言学习计算机编程
实用派的想法:
哪一门或一些语言适合你?取决于你想干什么?
- 你是想做嵌入式系统开发?
- 或是想数据挖掘统计分析?
- 或是想开发web站点?
- 或是想做原生的iOS系统开发?
- 或是想做原生的Android系统开发?
- 或是想做跨移动平台的开发?
不同的选择决定你会去学习使用一些不同的语言。
如果你已经决定为计算机软件开发奋斗终生,那这个首先必须掌握的最基础的语言的是什么?
如果你只是偶尔心动,仅仅是为了完成某项任务来为之,请忽略直接跳到后面,你不妨根据你自己的项目需求来选择语言: [[Which-language-for-u#选择适合自己的计算机语言|选择适合自己的计算机语言]] 一节。
打好基础,从阅读计算机英语开始。
基础语言:计算机英语
毋庸置疑,计算机英语是必须彻底把握的首要的最重要的语言。相对于普通英语,计算机英语较为简单,没有过多的变化多样的语法,专业词汇兼简单的语法足矣。这是我们读懂别人写的代码前提要素之一。而后我们对自己代码模块、对象、函数方法、变量,参数的命名也离不开英语,精准,严谨的命名胜过一大段的注释,这也是书写可读性良好的代码的关键要素之一。要知道代码即文章,不过,庆幸的是,代码的文章很简单的,一般只需要初中英语的语法知识就足矣满足需求。而且不会要求你的口语,计算机英语的就是专业词汇量比较大,仅此而已。
目标:
- 用英文词汇正确命名
- 用英文写代码注释
如何学习计算机英语
阅读科技类的文章可以提高自己的文档写作能力,而开发类的文章则可以提高自己的开发能力。
阅读开发类或者科技类的英文Blogs
- 开发类Blogs
- 科技类Blogs
挑一个好的开源项目,看人家是怎么写的
- 读 wiki
- 读代码
然后,别忘记了还有https://google.com 和 http://stackoverflow.com/
选择适合自己的计算机语言
计算机语言五花八门,真是乱花渐欲迷人眼,泛泛来说,有命令式编程和声明式编程语言;而从用途来分有通用的适合多用途的语言,也有精专某项或几项的语言;从编译器来分,有编译型和解释型的语言;从编程语言模型来说,有面向对象类、过程式语言、函数式语言、逻辑类语言。等等。除开及其个别的编程语言外绝大多数的编程语言都是以英语为基础的。要想选择一门或者一些适合自己的开发语言是比较难,挑选适合自己的语言,我觉得这大概可以由三个因素来决定:
- 基础
- 用途
- 目标
学习编程语言的基础
如果你想要在编程的路上走得更稳或者更远,那么这些基础必须打牢,对于科班出身的来说,这些是必须的:
- 算法
- 数据结构
- 设计模式
这些东西,往深了去1,2年时间也不够你啃,不过你也可以根据自己的具体需要掌握基本后按需学习。
你的其它基础知识了解如何?下面是做的一些假定,如果下面的基础都没有,那就无所谓了,随便选看,看自己的爱好来定.
HTML/XML/CSS
对于初步掌握html和css的前端人员来说,如果你用过javascript,那么从java或者javascript的某个framework着手自己编程之路可能更容易些;如果你对xml比较熟悉,那么XQuery也许也不错,如果你对CSS熟悉并愿意深入,那么从COMPASS/SASS开始可能是一条比较有意思的路。
关于SASS介绍:在这里。
如果想继续深入前端,可以择一入门,如果要精深,那么MVC作为基础知识是必须要掌握的:
- Javascript 前端 Frameworks
- “Mootools”:http://mootools.net/
- “ExtJS”:http://www.sencha.com/
- “Dojo”:http://dojotoolkit.org/
- “JQuery”:http://jquery.org/ (对初学者阅读该框架代码可能有些难度)
- Javsascript 后端,如果想用javascript玩玩后端开发,建议在至少完全掌握一个javascript前端framework之后进行
- “NodeJS”:http://nodejs.org/
计算机艺术画/UX交互
如果你想通过程式来绘制图画或交互动画,并对电脑绘画和图片文件格式有初步的了解,那么Processing也许是你的选择
简单的介绍:在这里
SQL/DBA
if u r a DBA, and learn sql well. maybe you are interested in the following sth:
Math/Statistics
对于搞数学或统计的人来说,那么FORTRAN, MatLab/Octave, Python+Matplotlib 是不错的选择,个人首选推荐Python系列,不过如果是专业统计那么R语言比较合适。
学习编程语言的用途
你想用它来干嘛?这个也可以参考前面1节。
学习编程语言的终极目标
你最终想攀登(到达)一个什么样的山峰?
下面是我推荐的学习顺序 1->2,3,4,6->5
,其中2,3,4,6应该可以并行阅读。不过5(算法和设计)应该在至少修完2,3后开始阅读。
- 计算机科学入门: 我以为应该是入门的
- 计算机科学及Python编程导论 这个是非常棒的计算机开发入门课程(授课老师Prof. Eric Grimson是MIT的副校长, 此为MIT Online课程)不过是用python语言作为示范讲解的:
- 中文介绍
- 上课地址:introduction-computer-science
- 中文字幕(建议和英文字幕对照看,据说翻译有点渣)
- 编程入门
- java
- 推荐书籍:
- 下面的MOOC课程你自己看看哪一个更适合你(可以在网易公开课上找对应带中文字幕的课程):
- c 语言
- courses:
- books:
- 编程相关指导书籍
- 《程序设计实践》中文
- 《Code Complete[代码大全]》: 一书在手开发无求
- 计算机组成原理(basics of technical computer science,猜的可能是讲这个)
- 课程:
- 计算机组成(北大)
- The Hardware/Software Interface 课程
- (对初学者来说有些深,不过课程非常棒): 可能至少要修完Introduction to Java,才能完全看懂
- 书籍(可能有些深,国内的太渣,据说北大那个课程讲得还行):
- 深入理解计算机系统(原书第2版)英文版.pdf
- 深入理解计算机系统 中文.pdf
- The Hardware/Software Interface 课程 指定用书
- 计算机组成与设计:硬件、软件接口(第三版中文).pdf
- 计算机组成与设计:硬件、软件接口(原书第4版).pdf
- 算法与设计
- 课程:
- 书籍
- 算法 第4版-谢路云 译(Java描述) pdf
- 算法 第4版Algorithms 4th Edition.pdf
- 设计模式之禅.pdf
- 设计模式 可复用面向对象软件的基础 Design.Patterns,.Elements.Of.Reusable.Object.Oriented.Software
- Head First Design Patterns 设计模式(高清版)
算法_模式_架构
书籍汇集:
- 操作系统概念
- Courses:
- 操作系统之基础(哈尔滨大学)
- Books:
- 其它