架构师之路(一):何时选用合适的语言

1.编程语言之争

网络上关于“哪种是最佳的编程语言之争”的话题一直经久不息,常常会引起不同的语言社区之间的激烈纷争。

我直接开门见山,不存在最好的语言,也不存在最佳的编程规范,进一步来说,没有最好的算法、方法、优化、技术等等。所有理智而寻求进一步发展的程序员都知道,我们所使用的所有编程语言,本质来说,都是进行科学计算的一种工具。如果,有人制造出了一把更加方便的“工具”,那么,我们为什么不使用呢?当然,这个“工具”可能仅仅是对某项工具有效,并且在其他任务上没有体现出高效性。

所以,有一个问题自然就浮出水面,我们在什么时候应该使用某种语言,以及给出理由为什么在此时此项工作上使用这种语言?

接下来,我会以不同语言的特性及适用场景进行分析。

2.不同编程语言分析

何时选用汇编语言:当你和最底层的硬件打交道的时候,选用汇编语言;或者说,你打算开始优化算法时。这里,没有说你不可以使用汇编语言进行上层应用开发,但是,考虑某些因素,这显得有点不切实际。最后再强调一下,当你需要更多原始的控制----方便你书写和阅读代码,建议使用汇编语言。

何时选用C/C++:C和C++是除了汇编语言之外的,另外两种较为底层的语言。如今,它们仍然在本身语言层面没有垃圾回收机制,需要开发者自行处理调试内存泄露和相关问题,但这样的缺陷也恰恰是这类语言的最强大的优势。尽管使用这类语言,需要在开发过程中花费大量时间来解决问题,但是也提供了优化的机会,这比直接使用垃圾回收机制又很大层度的优化空间。所以,当你开发内核、游戏引擎、一般时间和资源比较重要的应用是,轻易不要使用“java、C#、Scala”这类语言。虽然,在开发过程中,比较节省时间,但是这类语言比“C/C++”消耗更多的内存,甚至对于解决科学计算和经济学问题帮助较少。

所以,我们又为什么大量使用“java/C#/Scala/F#”这类语言呢?事实是,我们不需要每个应用都需要考虑运行时间和效率的问题,并且,在某些方面(比如工具库、资源管理),这类语言可能比“C/C++”有着更大的优势。

何时选用java:从中立角度来说,java很适合服务器端应用,以及web端的应用开发。java可以快速配合数据库运行,同时有限控制资源开销。但是从语言本身来说,java可能在某些方面做的并不是很好。这也是,java行业内的开发人员,一直强调将特定的语言开发规范推广为行业规范,这样有效避免了很多语言本身的问题。

何时选用C#:C#和java的应用场景非常类似,当你考虑到某类应用适合用java开发的时候,这是也应该提醒自己还有一个C#的选项。

何时选用F#:在开发函数式编程相关、且独立于平台的应用,你可以考虑F#、Scala这类语言。它们更易于处理算法、方法、函数等,这些独立于CPU和线程的任务。

3.总结

所以,在你进行系统应用开发时,需要记住一件事。并不少按照教义或信条选用语言进行开发,而是在合适的场景选用合适的语言和工具。合适的才是最好的。

posted @ 2021-01-30 16:25  匡吉  阅读(265)  评论(0编辑  收藏  举报