凹语言™——由来和寓意


在此念:wā

先讲个故事。

2016年受命开发一个Web应用,作为一个C系老炮/Go新手/JS菜鸡,当真是一脸懵逼,然后就发现了Emscripten这个狼牙棒,最终以C内核+JS界面组成脸、Go组成屁股的形式交活了事。期间踩坑无数罄竹难书,我们开了一个仓库——https://github.com/3dgen/cppwasm-book,记录下Emscripten的使用经验并在机械工业出版社的帮助下出版了《面向WebAssembly编程》一书。

后来陆续鼓捣一些小玩具,在技术栈选型的时候,老坑依然在:

  • 不想再手动管理内存了
  • 总有几个关键组件只有C系版本但是cgo性能太弱鸡了
  • 不想同一套处理逻辑在前后端用两种不同的语言分别实现了

所以我们的期望包括:

  1. 简单、克制、易于上手
  2. 足够的表达力,但使用时没有过高的心智负担
  3. 适用于多人协作开发
  4. 可以同时用于前后端的主业务逻辑构建

123都在Go的射程之内,但确实不适合“并发不是标配”的Web前端场景,用于网页开发需要针对WebAssembly进行友好化的深度改造——那么,我们干脆创造一门新语言吧。


从形状上看,“凹”字与形似wasm图标(方块上部缺个口);

从读音上看,“凹”正好是wasm的前半部;

从结构上看,实心的“凹”字约等于字母“C”逆时针旋转90度——C可以理解为C语言,也可以理解为Coder,那么“凹”是不是可以暗示躺平的的C/躺平的Coder……

啊,这伟大的象形文字!