查看原文
其他

如何成为一个通晓多种编程语言的程序员

2015-06-12 Linux中国

学习一门新的语言是一种冒险。我总是热衷于尝试新的东西——学习新的语法,了解不同的模式,乃至彻底改变思维方式。不幸的是,许多开发人员对此不以为然,甚至可能是深恶痛绝的——学习新语言,就得走出舒适区,花时间花精力来学习新的理念和方法。

这段日子,我每天都要用大约5种不同的语言来写不同的项目!

我应该先学哪种语言?

有关这方面的讨论真可谓数不胜数。很多刚进入编程社区的初学者,都会问这个问题,简直就是前赴后继。有些人建议先学不费力的,如Python和Ruby,也有的人认为应该先学例如C、C++和GO这类难一些的低层次的内容。我要说的是我们在选择新的语言之前,应该注意以下几个要点。

类型系统

从我的经验和先前的学习路径看,这是最重要的概念之一。我很庆幸我一开始学的是C,接着尝试了C++,一段时间之后,我又投入了Java的怀抱。然后是Scala,以及现在我开始玩Ruby。同时,我对Objective-C、Python、甚至是OCaml也有所涉及。哦,对了,最近我正在捣鼓Swift和CoffeeScript。

如果我一开始学的是JavaScript、Python或Ruby,那么后面去理解什么是类型和变量就会非常困难。理解静态和动态以及弱类型和强类型系统之间的区别,对于领悟语言的工作原理是至关重要的。我无法想象,如果我一开始不能掌控类型,那么后面涉及到的声明与定义,以及汇编与解释之间的差异,会是让人多么头大的一件事。

不过,也有很多开发人员希望能有立竿见影的效果:既想快速看到结果,又不愿意过多地了解细节。他们喜欢接轨新的应用程序。最好是不用动脑子的语言,碰到这样的他们最开心了。因为在他们眼中,掌握 integer、string和boolean是学习编程的超级大障碍。最好能够毋须分辨类、对象和方法,直接写代码:

  1. scala> println(“Hello World!”)

  2. Hello World!

  3. >>> print "Hello World!"

  4. Hello World!

  5. 2.2.1 :001 > puts "Hello World!"

  6. Hello World!

不可否认这种途径能够给人信心,让人觉得自己学到了新的东西。

首先,请明确你属于哪种类型,摆正自己的位置。你想要探究隐藏起来的工作原理吗,喜欢深入研究本地执行吗?愿意去理解语言结构吗?又或者你只在乎能有快速的结果,不想了解虚拟机和编译工作,并且语言内部机制对你而言也一点都不重要?

从自己的利益角度考虑

你可能需要处理哪些数据?你打算写复杂的业务系统还是相对简单的CRUD创业公司?请基于可能会让自己感兴趣的内容来确定工作领域。

所以,如果你确定你想要去企业工作,那么你可以试试Java或者.NET。如果你倾向于黑客并高度注重安全问题,那么不妨学习C/C ++或Bash。如果你梦想成为一名Web开发人员,那么先掌握PHP、JavaScript或Ruby吧。如果你想要编写一些机器、机器人、汽车或其他电子方面的程序——也行,先学C ++或Python吧。你喜欢捣鼓移动设备?那么Java、Swift或C#就应该是你的首选。如果你喜欢数学和算法,那么Lua、Erlang或R就很适合你。等等等等,不胜枚举。总之——一切取决于你的目的和爱好。

语言内部机制

你有组织化的堆栈内存吗?你在程序中传递变量时使用引用类型还是只使用值类型?你是否利用指针和析构函数来控制对象的生命周期?你是自行清理存储器还是使用相关的垃圾收集器?你是否计算和跟踪引用类型和子类?

这些都是我们平时不会关心的问题。但是有时候,它们却是一些你不得不处理的概念,所以理解内部机制很重要。虽然现在你会觉得这些概念很复杂,理解起来很难,因为终有一天,你会庆幸自己现在的选择,有道是,书到用时方恨少,不要到用的时候追悔莫及。

我应该学习哪些语言?

来源:

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存