编程语言的二维分类法
想到一种从两个维度对编程语言进行分类的方法。横向的维度是从语言设计的角度,考虑设计思想、语法语义,按照语言特性的先进程度分为原始、过渡、现代三类。纵向的维度则从抽象层次和问题领域的角度分类。
原始 | 过渡 | 现代 | |
---|---|---|---|
函数式 | Lisp | Scheme、OCaml | Haskell |
网页脚本 | JavaScript | CoffeeScript、TypeScript | Dart |
脚本 | Basic | Lua、Python | Ruby |
高级 | Objective-C | Java、C# | Swift |
底层 | C | C++、D | Go |
汇编 | MASM | FASM、Parrot | LLVM |
我这个分类不以囊括绝大多数的编程语言为目的,只针对典型的有代表性的语言,而且选入这个表格的还综合考虑了实现方式、运行效率和流行程度三个方面。
可以看到编程语言在不断进化,让编程语言作为一种工具较少地占用大脑资源,提高可读性和开发效率,做更多的事情。让人们扔掉落后的语言,拥抱先进的语言是需要时间的。
为了提高编程效率,开发工具也取得了巨大的进步,我们有三大利器:集成开发环境(IDE)、包管理系统(PMS)和源代码管理系统(SCM)。
IDE推荐
C# | Visual Studio |
Java | IntelliJ IDEA |
Ruby | RubyMine |
Go | LiteIDE |
Dart | DartEditor |
Swift | Xcode |
包管理系统列表
命令 | 网站 | |
---|---|---|
Ruby | gem | http://rubygems.org/ |
Python | pip | https://pip.pypa.io/ |
JavaScript |
npm |
https://www.npmjs.org/ |
bower |
https://bower.io/ | |
C# | NuGet | http://www.nuget.org/ |
Dart | pub | http://pub.dartlang.org/ |
CentOS | yum | http://yum.baseurl.org/ |
Mac OS | brew | http://brew.sh/ |
Windows | choco | http://chocolatey.org/ |
哈哈,估计很多人还不知道Chocolatey,我也是最近才发现。
构建工具
把源文件组装成可供使用的产品。
C# | MSBuild |
C | make |
Ruby | rake |
JavaScript | jake, grunt, gulp |
Python | Shovel |
Java | Ant |
源代码管理
最推荐的就是Git了,有了这些语言和工具,程序员的幸福指数已大幅提高!