1. 数据的表达
1. 选择一套优秀的学习资料,它能够是书亦能够是视频
1. 知乎
2. Practice Makes Perfect,提升编程水平必定要勤加练习,推荐使用在线测评网站练习。
2. stackoverflow
2. 控制流的表达
3. wikipedia
3. 多分享,写博客或者来知乎,SO上回答他人的问答,帮助别人不但让你感到有成就感,其实也是提高本身的手段,由于只有当你能解答他人的问题以后你才是真正地理解了这个问题。
3. 封装和抽象
4. 美国一流大学的开放式课程
C: C Programming Language
C++: C++ How to Program
Euler Project
JAVA: Java Programming Language, Stanford's the programming methodology
Python: Dive into Python, Learn Python the Hard Way,A Byte of Python
TopCoder
USACO
比较适合新手的在线测评网站:
编程范式
变量的定义
不一样的编程语言有着不一样的抽象层次, 有些更偏向硬件的工做原理,有些更贴近人类的思惟方式。以Python和C为例,Python更像英语,基本的思惟方式也更相似天然语言,而C则更相似于计算机硬件自己的工做原理。 对于初学者而言,若是你的背景属于对计算机底层原理不熟悉的一类的话,学习C会带来一些困扰。若是与此同时,你的动机是要使用编程语言来解决你的领域知识,而不想了解更底层的细节,Python会比C更适合。
部分语言的优秀的入门教材
常见的编程范式有:
常量的定义
当你成功地写出本身的程序并经过测试以后,停下来,想一想是否还会有更好的实现方法,总结本身在实现过程当中遇到的困难,而且阅读比你更聪明的那些程序员的方法,阅读优秀的代码会让你学到不少。而后再尝试用更好的方法去实现。
对应语言系统库经常使用的API
而当对这些概念有了基本的印象并学会了用一门计算机语言表达这些概念以后,接下来对于初学者来讲最为重要的应该就是三件事情,掌握:
----------------------------------------------分割线---------------------------------------------------
感谢@李季的反馈,入门编程语言选择的一个须要考虑的因素是初学者的背景与动机。
函数的定义和调用
函数式编程,在并行计算的时代,函数式编程的范式将会成为另外一大主流,推荐对其作一些了解。
基本的数据结构,算法
坚持从头至尾学习下来,遇到问题经过google来寻找答案或者上问答网站提问
结构体的定义
库,模块,命名空间的定义和调用
类的定义
类的定义和调用
面向对象的范式,这个应当是最为主流的编程范式,从软件开发的角度看, 它的优势在于可以用面向对象的方式贯穿软件开发的整个生命周期,包括软件的设计、编码、测试
面向过程的范式,这个应该是对于初学者而言最为容易理解的方式,几乎全部的主流语言都支持这一范式,初学者应当首先学会这种范式
其实主流的语言C/C++, Python, Pascal,Basic, JAVA, C#均可以做为入门的编程语言。由于它们都存在一个具备足够表达能力的语言子集,优秀的入门书籍,成熟的库,以及强大的社区的支持。所谓选择最好的入门语言多是一个伪问题,而真正的问题是当你选择了其中一门语言后,如何选择合适的学习方法。
顺序语句
算法是计算机科学的灵魂,它的意义在于让你理解计算机的工做方式的本质。对于初学者而言,不须要掌握过于复杂的算法,可是应当熟练地掌握基本的排序、检索、遍历的算法。数据结构亦是相似,初期掌握数组,链表,栈,队列,哈希表,栈便可。
条件语句
我推荐的学习方法是:
我想表达的一个观点是:
系统库的意义在于能够大幅提升你的开发效率,虽然重造轮子是程序员的一大乐趣。可是在实际工做中,咱们可能更多地须要追求效率,而系统库是过去优秀的程序员的经验的结晶,每每在性能和强壮性上都作了大量的优化,通常来说都会比咱们本身的实现要好得多。正因如此,学习和掌握系统库虽然枯燥(初期要记忆大量的API细节),可是倒是一笔很是值得的投资。
须要澄清的是,这并非说Python简单,我以为Python远比C要复杂,C语言自己的全部细节都在K&R一本书中说得清楚,而却从未见过一本Python的书籍能涵盖这门语言的全部细节。
学习一门编程语言,应该是容易的,由于计算机语言自己的特性只是它的语法。而计算机语言的语法无外乎是表达如下几个方面的概念:
循环语句
如下想说说关于学习曲线的问题,初学者最大的障碍可能就是遇到问题得不到解答。不过,现在的学习条件跟当年互联网不发达的时候相比已经好得多了,有这么多优秀的问答网站,学习资源,百科全书可供使用,好比: 程序员