学来学去决定有三门语言还是需要学一下,他们就是 javascript、java 和 c++,虽然他们存在许多诟病,很多情况这些诟病会被 developer 拿来嘲讽。而且有许多更好选择在他们擅长的领域可以代替这些语言。但是从招聘信息,他们还占据大部分市场,尤其在国内会 java 工作应该不愁。
java 是一门上手快,严谨不易出错的语言。不过多少也和加班有点联系,只要你够努力基础稍微差点也可以出活的一门语言。有点像美国队长,虽然是凡人,一大堆策略,通过一大推策略来弥补凡人能力不足。还有强有力的盾牌防止一切错误。
java 是让我欢喜让我愁,一份工作就是写 java 差点干到放弃编程,断送我们 coding 之路。退下来之后修炼一段时间继续战斗。让后就是前段各种 js ,最近开发 Android 也是一直搞 java,我和 Java 是难舍难分。
相对于 java 我跟喜欢 JVM ,JVM 这个超级武器成就 java 辉煌的今天。
javascript 是我个人最爱。我进入软件行业也是借 javasript 的东风才有今天。javascript 语言本身设计仓促,导致存在许多历史问题,但这并不能阻碍 javascript 的发展。
javascript 在我的眼里就是钢铁侠,库丰富多彩,通过浏览器这个载体很容实现跨平台,通常被称为浏览器上汇编语言。
而且 javascript 像钢铁侠一样都有一颗强劲的引擎,V8 是成就 javascript 的基石。
每一个成功语言都少不了其包管理工具,我相信正式因为 npm 个工具让很多人爱上 javascript。不能不说许多人是因为 npm 才爱上 javascript。
javascript 由于自身的原因,缺乏类型系统和模块化,之前而做不了大型应用,不过现在有了 Typescript、flow 或 reason 这些语言一切就不再是问题了。
在 javascript 中函数是一等公民,天生的 FP 让 javascript 更适合当下响应式编程,而且非阻塞的异步编程让 javascript 对处理并发也是有一套。
单页应用以 vue, react 和 angular 框架最为流行,基本涵盖大多数前端项目,不过这里推荐一个 circlejs 其背后的 mvi 设计模式还是挺新颖的,美团前端好像在用。vue、react angular 结合 nodejs 也给出服务端渲染的解决方案。
总而言之,现在只要让 javascript 接触到领域,最终基本都会被 javascript 所吞噬。
go 语言极简主义
go 更像惊奇队长,简单且有效丝毫不逊色美国队长,在 web 应用表现甚至更胜一筹。
go 语言并没有像其他语言不断顺应发展不断新增特性。在开发过程中我们大部分时间都在阅读别人的代码。所以简单表意清楚的语言,比设计繁琐难于阅读语言会更受欢迎。有的时候我们仅仅看到自己眼前的利益。一个强大的语言,有很多轮子,不过大家有没有考虑过吗。我们学习的成本,以及整个轮子安装是否适合我们,一个好的应用需要做到极致,极致到每一个部件。
而且 go 作为一门语言,特性鲜明,如果过多借鉴别的语言,也就是失去了自己。go 语言的异步编程是基于 green thread 也就是协程。用 go 语言开发高并发程序和微服务是非常得心应手。go 语言专注自己擅长的领域而不去涉及新领域。
大公司一般都会用到 go,日志系统,消息分发
我是从 docker 才知道 go 语言,2016 年末学一会儿,当时自己基础还是比较薄弱。对一些底层语言套路还不算了解。最近业余时间出于兴趣又重新捡起来学起来。感觉 golang 还是很容易上手,尤其写一个 web 和写一个 crawler 还是很容易,开发体验也很友好。
以后学习一些 linux 基础架构和 linux 文件系统也想写一个 container。
rob pike 在介绍 go 语言时候,先介绍围棋,让后用围棋来和 golang 语言做一些联系。可能从围棋中得到一些灵感来设计出这么简单有效语言 go。go 就是围棋的发音吧。
Kotlin 作为新贵
已经成功进入 Android 和 gradle 两个领域,并且凭借自身优势可以更好替代到 java 和 groovy 这两个领域的绝对优势。所谓后来者居上,也就是 kotlin 作为新兴语言他没有什么历史包袱。向前兼容让许多语言变得臃肿庞大,可以看看 c++ 一路走来。kotlin 语言设计考虑到他到各个领域应用。
因为设计,首先 kotlin 源码编译 IR 也就是 LLVM ,然后就可以其编译为 jvm 字节码就可以跑在虚拟机,如果将 IR 编译为 js ,kotlin 就可以跑在浏览器上。也可以编译为机器码
基于 LLVM 设计语言
- C/C++(clang)
- Objective-C
- Rust
- Swift
- Julia
- Graal VM
为什么 kotlin 需要 kotlin native - 高性能
- C APIs
- Kotlin
Rust 我看好
国内很少有招聘的 Rust 相关岗位,不过我看好 Rust,简单接触了一下,感觉 Rust 基于避免 C/C++ 痛点设计一门语言。好的东西势必有发展前途。但是这并不代表 C/C++ 我们就不学了不用了,通过学习 C/C++ 可以让我们更接近底层更好地了解程序设计。以后也想用 Rust 写一个简单浏览器。
python
看过一段时间也就是用框架写点 web 服务,不算了解的一门语言。很火爆,以后有机会可以学一学。不过 nodejs 一样要想在 python 语言上上档次就还得学习 c++,因为背后都是 c++。
nodejs
自认为是接触比较早的一门语言,当时还不没有今天怎么火。因为前后端分离,自己搭建一些简单服务用于开发前端。当时感觉写一个服务是那么轻松,对比 java 来说。用过 express. 和 koa 感觉不错。
而且写一些小工具也很方便,应该算是我的第一门脚本语言。nodejs 蚂蚁金服再用,听说那里有许多 javascript 的大神。uber 可能主打就是 nodejs,许多业务都使用到了 nodejs 。
其实这些都不是关键,语言层面还是不够,应该学习计算机原理、程序设计和算法。这些才是不变的。
c++ 无疑是超越一切语言,是语言中 superman。
有疑问加站长微信联系(非本文作者)