Mark24
记录灵感、技术、思考
思考Ruby如何获得Go的能力
一、更换编程语言
这是一段针对中国的互联公司,不断地通过更换编程语言,给自己赋能的一个思考。
我们需要更换编程语言么?
为什么要更换编程语言?
更换编程语言背后的本质是什么?
老的代码是一种抽象资产,如何不更换语言的情况下重新赋能?
二、建立推论
几个基本假设,可以建立起推论
-
所有的代码终会变成C Code/ 汇编
-
图灵完备: 图灵完备 意味着语言之间可以替代
-
逻辑守恒
我们真的需要替换语言来获得新能力么?
并不。
因为所有代码都会变成C Code 因为图灵完备的语言可以被互相替代
所以理论上我们只需要一种语言
Javascript 是携带了 Eventloop 机制的语言。Go 是携带了Go routine机 制的语言。
语言自己就像一个上层的软件
3.1 语言多做一点,用户就少做一点。 语言少做一点,用户就多做一点
4.抽象层
4.1 不同语言之间可以通过增加逻辑层来弥合。
如果我们在ruby上层实现一个框架,框架实现了Go的routine模型,我们就相当于给 ruby 赋予了Go
4.2 我们也可以才用胶水思路,让ruby编译成Go或者变成 Go
两种思路
-
要么我们成为他们
-
要么让他们成为我们的一部分
这样就可以获得新能力
三、基于此关于方向的思考
1.建立一个抽象层
抽象层拥有不同的工作模型,建立自己的工作模型秩序
比如react把系统调度实现了一遍在用户层。
2.下沉到语言层面
搬运个工作模型
比如 ruby 可以增加 async模型,性能比肩 nodejs
3.胶水方向
让不同语言联合工作 webpack
4.新应用方向
新的组合产品