技术与工具
那些爱不释手的,那些不得不用的,那些令人惊叹的,那些繁琐拗口的技术和工具
现役设备
13” MacBook Air, M1, 16GB RAM (2021)
够轻薄,够快,够安静,够持久。键盘再好一点就完美了。
开发工具
IDEA
一套集成开发环境,Java,Scala,Kotlin,Clojure,ClojureScript,Python, Go,Rust,Dart,JavaScript 都可编写,无缝切换。
VSCode
一些轻量的项目使用 VSCode 也不错,看日志也很好用。
iTerm2 & WindTerm
Windows 下的 WindTerm 有 Emacs 的味道。
编程语言
Clojure
Clojure 是一种实用的 LISP 方言。我用 Clojure 访问整个 JVM 生态, 包括充当 Maven 编译脚本,日常工作脚本,高度简单灵活的 Web 应用 (Clojure 可编译为 JVM 字节码和 JavaScript 代码)。我使用 Clojure 实现过一门面向对象玩具语言的语法解析、编译和解释器。
Java
在多人开发的企业级项目中,Java 是一种协议和接口。主要工作使用,平常读别人的代码会用到。
Scala
Scala 是一种实用的 Haskell,不过现在面临不正宗的 Kotlin 的强力挑战。我使用 Play 和 Slick 搭建过无阻塞 Web 应用,Scala 整个生态有种笨重的灵活感。
Kotlin
Scala--,DSL 非常友好的现代 JVM 方言。我用 Kotlin 写 IDEA 插件,作为 Maven 项目的 REPL 验证代码用。
Rust
Rust 向北,Swift 向南,LLVM 平台上两对兄弟。我用 Rust 写命令行工具,此外作为通用代码层, 把我的 Clojure 代码、ClojureScript 代码、Dart 代码和 Swift 代码联系起来(Rust + Java, Rust in WASM, Rust with Flutter, Rust with Swift)。
Swift
Swift 向南,Rust 向北,LLVM 平台上两对兄弟。我总是忍不住想写 Swift 和 SwiftUI。
Python
C 脚本,假装自己能跨平台,实际不能。我的第一门语言,万能胶水,非常不函数式,灵活但丧失了简单性,很容易 失控。主要用来写 Neutron 插件。
Go
诞生在现代的仿古“工具”语言。我在忍受不了 Java, Scala 的笨重后奔向了基于 Go 的 Web 应用,却始终无法 很好的抽象现有的 Go 代码,最终放弃。Go 的特色是:快、糙、猛。
JavaScript
明明是半个 Scheme,但一直想面向对象。我主要通过 ClojureScript 访问 JavaScript NPM 生态,但有些 JS 解决方案实在过于亮眼以至于不得不用。
Lua
古老却又现代的嵌入式脚本语言,table 数据结构正交性很棒,元表也是如此,它不强加束缚,因此具有很高的灵活性。
Dart
严格说 Dart 才是 Java 脚本语言,真 JavaScript。完美继承了 Java 的啰嗦,不过也还算能满足 Flutter 描述界面逻辑的需求。Flutter 是臃肿版本的 SwiftUI。
设计工具
Figma
令人惊叹的交互设计、组件复用以及随处共享特性。眼花缭乱、随处可用的插件,一键导出 SwiftUI、Flutter、Web 代码。
Draw.io
随处绘图,随地可用。