2019 年浅谈编程语言(更新中)

coding.jpeg

学来学去决定有三门语言还是需要学一下,他们就是 javascript、java 和 c++,虽然他们存在许多诟病,很多情况这些诟病会被 developer 拿来嘲讽。而且有许多更好选择在他们擅长的领域可以代替这些语言。但是从招聘信息,他们还占据大部分市场,尤其在国内会了 java 工作不用愁。


american-caption.jpeg

java 是一门上手快,严谨不易出错的语言。不过多少也和加班有点联系,只要你够努力基础稍微差点也可以出活的一门语言。有点像美国队长,虽然是凡人,一大堆策略,通过一大推策略来弥补凡人能力不足。还有强有力的盾牌防止一切错误。

java 是让我欢喜让我愁,一份工作就是写 java 差点干到放弃编程,断送我们 coding 之路。退下来之后修炼一段时间继续战斗。然后就是前端各种 js ,最近开发 Android 也是一直搞 java,我和 Java 是难舍难分。
相对于 java 我跟喜欢 JVM ,JVM 这个超级武器成就 java 辉煌的今天。


Avengers-wallpaper-2-Captain-America.jpg

javascript 是我个人最爱。我进入软件行业也是借 javasript 的东风才有今天。javascript 语言本身设计仓促,导致存在许多历史问题,但这并不能阻碍 javascript 的发展。
javascript 在我的眼里就是钢铁侠,库丰富多彩,通过浏览器这个载体很容实现跨平台,通常被称为浏览器上汇编语言。
而且 javascript 像钢铁侠一样都有一颗强劲的引擎,V8 是成就 javascript 的基石。


iron-man-wallpaper-3.jpg

每一个成功语言都少不了其包管理工具,我相信正式因为 npm 个工具让很多人爱上 javascript。不能不说许多人是因为 npm 才爱上 javascript。


big_IronManHulkbuster (1).jpg

javascript 由于自身的原因,缺乏类型系统和模块化,之前而做不了大型应用,不过现在有了 Typescript、flow 或 reason 这些语言一切就不再是问题了。

在 javascript 中函数是一等公民,天生的 FP 让 javascript 更适合当下响应式编程,而且非阻塞的异步编程让 javascript 对处理并发也是有一套。

单页应用以 vue, react 和 angular 框架最为流行,基本涵盖大多数前端项目,不过这里推荐一个 circlejs 其背后的 mvi 设计模式还是挺新颖的,美团前端好像在用。vue、react angular 结合 nodejs 也给出服务端渲染的解决方案。

总而言之,现在只要让 javascript 接触到领域,最终基本都会被 javascript 所吞噬。


ironman_01.jpg
Captain-Marvel-hires-Tomb-Raider-reboot-scribe-to-pen-the-latest-draft-of-script-1.jpg

go 语言极简主义
go 更像惊奇队长,简单且有效丝毫不逊色美国队长,在 web 应用表现甚至更胜一筹。
go 语言并没有像其他语言不断顺应发展不断新增特性。在开发过程中我们大部分时间都在阅读别人的代码。所以简单表意清楚的语言,比设计繁琐难于阅读语言会更受欢迎。有的时候我们仅仅看到自己眼前的利益。一个强大的语言,有很多轮子,不过大家有没有考虑过吗。我们学习的成本,以及整个轮子安装是否适合我们,一个好的应用需要做到极致,极致到每一个部件。


Captain-Marvel-Movie-2019-HD-Wallpaper-1.jpg

而且 go 作为一门语言,特性鲜明,如果过多借鉴别的语言,也就是失去了自己。go 语言的异步编程是基于 green thread 也就是协程。用 go 语言开发高并发程序和微服务是非常得心应手。go 语言专注自己擅长的领域而不去涉及新领域。

大公司一般都会用到 go,日志系统,消息分发

我是从 docker 才知道 go 语言,2016 年末学一会儿,当时自己基础还是比较薄弱。对一些底层语言套路还不算了解。最近业余时间出于兴趣又重新捡起来学起来。感觉 golang 还是很容易上手,尤其写一个 web 和写一个 crawler 还是很容易,开发体验也很友好。

以后学习一些 linux 基础架构和 linux 文件系统也想写一个 container。

rob pike 在介绍 go 语言时候,先介绍围棋,让后用围棋来和 golang 语言做一些联系。可能从围棋中得到一些灵感来设计出这么简单有效语言 go。go 就是围棋的发音吧。

the-flash-episode-15-king-shark-drops-a-big-zoom-reveal-857542.jpg

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
_8ef3a93c-6edb-11e7-9994-94edcc701b36.jpg

Rust 我看好
国内很少有招聘的 Rust 相关岗位,不过我看好 Rust,简单接触了一下,感觉 Rust 基于避免 C/C++ 痛点设计一门语言。好的东西势必有发展前途。但是这并不代表 C/C++ 我们就不学了不用了,通过学习 C/C++ 可以让我们更接近底层更好地了解程序设计。以后也想用 Rust 写一个简单浏览器。


review-zack-snyders-batman-v-superman-dawn-of-justice-starring-ben-affleck-henry-cavill-jesse-eisenberg-amy-adams-more.jpg
spiderman_closeup.jpg

python
看过一段时间也就是用框架写点 web 服务,不算了解的一门语言。很火爆,以后有机会可以学一学。不过 nodejs 一样要想在 python 语言上上档次就还得学习 c++,因为背后都是 c++。

10.jpg

nodejs
自认为是接触比较早的一门语言,当时还不没有今天怎么火。因为前后端分离,自己搭建一些简单服务用于开发前端。当时感觉写一个服务是那么轻松,对比 java 来说。用过 express. 和 koa 感觉不错。
而且写一些小工具也很方便,应该算是我的第一门脚本语言。nodejs 蚂蚁金服再用,听说那里有许多 javascript 的大神。uber 可能主打就是 nodejs,许多业务都使用到了 nodejs 。

其实这些都不是关键,语言层面还是不够,应该学习计算机原理、程序设计和算法。这些才是不变的。

superman-returns.jpg

c++ 无疑是超越一切语言,是语言中 superman。

你可能感兴趣的:(2019 年浅谈编程语言(更新中))