VB / Java / C / C# / C++ 等零基础学哪个更容易上手?
2016-11-04 10:04
225 查看
不同的编程语言有着不同的抽象层次,
有些更偏向硬件的工作原理,有些更贴近人类的思维方式。以Python和C为例,Python更像英语,基本的思维方式也更类似自然语言,而C则更类似于计算机硬件本身的工作原理。
对于初学者而言,如果你的背景属于对计算机底层原理不熟悉的一类的话,学习C会带来一些困扰。如果与此同时,你的动机是要使用编程语言来解决你的领域知识,而不想了解更底层的细节,Python会比C更适合。
需要澄清的是,这并不是说Python简单,我觉得Python远比C要复杂,C语言本身的所有细节都在K&R一本书中说得清楚,而却从未见过一本Python的书籍能涵盖这门语言的所有细节。
我想表达的一个观点是:
其实主流的语言C/C++、Python, Pascal、Basic、 JAVA、C#都可以作为入门的编程语言。因为它们都存在一个具有足够表达能力的语言子集,优秀的入门书籍,成熟的库,以及强大的社区的支持。所谓选择最好的入门语言可能是一个伪问题,而真正的问题是当你选择了其中一门语言后,如何选择合适的学习方法。
学习一门编程语言,应该是容易的,因为计算机语言本身的特性只是它的语法。而计算机语言的语法无外乎是表达以下几个方面的概念:
数据的表达
常量的定义
变量的定义
结构体的定义
类的定义
控制流的表达
顺序语句
条件语句
循环语句
封装和抽象
函数的定义和调用
类的定义和调用
库,模块,命名空间的定义和调用
而当对这些概念有了基本的印象并学会了用一门计算机语言表达这些概念之后,接下来对于初学者来说最为重要的应该就是三件事情,掌握:
编程范式
基本的数据结构,算法
对应语言系统库常用的API
常见的编程范式有:
面向过程的范式,这个应该是对于初学者而言最为容易理解的方式,几乎所有的主流语言都支持这一范式,初学者应当首先学会这种范式;
面向对象的范式,这个应当是最为主流的编程范式,从软件开发的角度看,它的优点在于能够用面向对象的方式贯穿软件开发的整个生命周期,包括软件的设计、编码、测试;
函数式编程,在并行计算的时代,函数式编程的范式将会成为另一大主流,推荐对其做一些了解。
算法是计算机科学的灵魂,它的意义在于让你理解计算机的工作方式的本质。对于初学者而言,不需要掌握过于复杂的算法,但是应当熟练地掌握基本的排序、检索、遍历的算法。数据结构亦是类似,初期掌握数组,链表,栈,队列,哈希表,栈即可。
系统库的意义在于可以大幅提高你的开发效率,虽然重造轮子是程序员的一大乐趣。但是在实际工作中,我们可能更多地需要追求效率,而系统库是过去优秀的程序员的经验的结晶,往往在性能和强壮性上都做了大量的优化,一般来讲都会比我们自己的实现要好得多。正因如此,学习和掌握系统库虽然枯燥(初期要记忆大量的API细节),但是却是一笔非常值得的投资。
以下想说说关于学习曲线的问题,初学者最大的障碍可能就是遇到问题得不到解答。不过,如今的学习条件跟当年互联网不发达的时候相比已经好得多了,有这么多优秀的问答网站,学习资源,百科全书可供使用,比如:
知乎
stackoverflow
wikipedia
美国一流大学的开放式课程
我推荐的学习方法是:
选择一套优秀的学习资料,它可以是书亦可以是视频; 坚持从头到尾学习下来,遇到问题通过google来寻找答案或者上问答网站提问。 部分语言的优秀的入门教材
C: C Programming Language
JAVA: Java Programming Language,Stanford's the programming methodology
C++: C++ How to Program
(<a href="http://www.dztcsd.com/">资质代办</a>)
Python: Dive into Python, Learn Python the Hard Way,A Byte of Python
Practice Makes Perfect,提高编程水平一定要勤加练习,推荐使用在线测评网站练习。
比较适合新手的在线测评网站:
USACO
Euler Project
TopCoder
当你成功地写出自己的程序并通过测试之后,停下来,想想是否还会有更好的实现方法,总结自己在实现过程中遇到的困难,并且阅读比你更聪明的那些程序员的方法,阅读优秀的代码会让你学到很多。然后再尝试用更好的方法去实现。
多分享,写博客或者来知乎,SO上回答他人的问答,帮助别人不但让你感到有成就感,其实也是提升自己的手段,因为只有当你能解答他人的问题之后你才是真正地理解了这个问题。
最后, happy coding!
有些更偏向硬件的工作原理,有些更贴近人类的思维方式。以Python和C为例,Python更像英语,基本的思维方式也更类似自然语言,而C则更类似于计算机硬件本身的工作原理。
对于初学者而言,如果你的背景属于对计算机底层原理不熟悉的一类的话,学习C会带来一些困扰。如果与此同时,你的动机是要使用编程语言来解决你的领域知识,而不想了解更底层的细节,Python会比C更适合。
需要澄清的是,这并不是说Python简单,我觉得Python远比C要复杂,C语言本身的所有细节都在K&R一本书中说得清楚,而却从未见过一本Python的书籍能涵盖这门语言的所有细节。
我想表达的一个观点是:
其实主流的语言C/C++、Python, Pascal、Basic、 JAVA、C#都可以作为入门的编程语言。因为它们都存在一个具有足够表达能力的语言子集,优秀的入门书籍,成熟的库,以及强大的社区的支持。所谓选择最好的入门语言可能是一个伪问题,而真正的问题是当你选择了其中一门语言后,如何选择合适的学习方法。
学习一门编程语言,应该是容易的,因为计算机语言本身的特性只是它的语法。而计算机语言的语法无外乎是表达以下几个方面的概念:
数据的表达
常量的定义
变量的定义
结构体的定义
类的定义
控制流的表达
顺序语句
条件语句
循环语句
封装和抽象
函数的定义和调用
类的定义和调用
库,模块,命名空间的定义和调用
而当对这些概念有了基本的印象并学会了用一门计算机语言表达这些概念之后,接下来对于初学者来说最为重要的应该就是三件事情,掌握:
编程范式
基本的数据结构,算法
对应语言系统库常用的API
常见的编程范式有:
面向过程的范式,这个应该是对于初学者而言最为容易理解的方式,几乎所有的主流语言都支持这一范式,初学者应当首先学会这种范式;
面向对象的范式,这个应当是最为主流的编程范式,从软件开发的角度看,它的优点在于能够用面向对象的方式贯穿软件开发的整个生命周期,包括软件的设计、编码、测试;
函数式编程,在并行计算的时代,函数式编程的范式将会成为另一大主流,推荐对其做一些了解。
算法是计算机科学的灵魂,它的意义在于让你理解计算机的工作方式的本质。对于初学者而言,不需要掌握过于复杂的算法,但是应当熟练地掌握基本的排序、检索、遍历的算法。数据结构亦是类似,初期掌握数组,链表,栈,队列,哈希表,栈即可。
系统库的意义在于可以大幅提高你的开发效率,虽然重造轮子是程序员的一大乐趣。但是在实际工作中,我们可能更多地需要追求效率,而系统库是过去优秀的程序员的经验的结晶,往往在性能和强壮性上都做了大量的优化,一般来讲都会比我们自己的实现要好得多。正因如此,学习和掌握系统库虽然枯燥(初期要记忆大量的API细节),但是却是一笔非常值得的投资。
以下想说说关于学习曲线的问题,初学者最大的障碍可能就是遇到问题得不到解答。不过,如今的学习条件跟当年互联网不发达的时候相比已经好得多了,有这么多优秀的问答网站,学习资源,百科全书可供使用,比如:
知乎
stackoverflow
wikipedia
美国一流大学的开放式课程
我推荐的学习方法是:
选择一套优秀的学习资料,它可以是书亦可以是视频; 坚持从头到尾学习下来,遇到问题通过google来寻找答案或者上问答网站提问。 部分语言的优秀的入门教材
C: C Programming Language
JAVA: Java Programming Language,Stanford's the programming methodology
C++: C++ How to Program
(<a href="http://www.dztcsd.com/">资质代办</a>)
Python: Dive into Python, Learn Python the Hard Way,A Byte of Python
Practice Makes Perfect,提高编程水平一定要勤加练习,推荐使用在线测评网站练习。
比较适合新手的在线测评网站:
USACO
Euler Project
TopCoder
当你成功地写出自己的程序并通过测试之后,停下来,想想是否还会有更好的实现方法,总结自己在实现过程中遇到的困难,并且阅读比你更聪明的那些程序员的方法,阅读优秀的代码会让你学到很多。然后再尝试用更好的方法去实现。
多分享,写博客或者来知乎,SO上回答他人的问答,帮助别人不但让你感到有成就感,其实也是提升自己的手段,因为只有当你能解答他人的问题之后你才是真正地理解了这个问题。
最后, happy coding!
相关文章推荐
- VB / Java / C / C# / C++ 等哪个更容易上手?
- 零基础学编程,vb/java/c/c#/c++等 哪个更适合?
- VB.net ASP.net JAVA,C## 这几总语言哪个更实用?
- C++ Java C#.net VB.net 语法对比(转)
- C/C++/Java/C#的基础类型模型的定义
- UML工具推荐 Poseidon版本 可以免费下载,自动生成代码 C++ Java C# VB.NET等 (来自德国汉堡的国际性建模软件开发商Gentleware AG的)
- asp.net,java,jsp,安卓Android,php,vb.net,c#/c++免费毕业课程设计源码共享下载
- 各种计算机语言的经典书籍(C/C++/Java/C#/VC/VB等)
- 各种计算机语言的经典书籍(C/C++/Java/C#/VC/VB等)
- Java基础与案例开发详解のJava与C、C++、C#对比分析
- c#语法与c++ 及 java语法的对比分析
- C++(union), C#(伪union)实现 Java的Float.intBitsToFloat()方法
- 扩展Python__在python脚本中使用其他语言(c/c++/java/c#)编写的模块
- 【总结】C++、C#、Java、Javascript、Python中引用的区别
- JAVA C# C/C++之比教学:访问控制机制
- C#与C++交互的一些基础
- JAVA C# C/C++之比教学:编译机制
- JAVA C# C/C++比教学:泛型
- 关于c++/c#/java 多线程绘图问题说明
- JAVA C# C/C++之比教学:继承