技术与工具

那些爱不释手的,那些不得不用的,那些令人惊叹的,那些繁琐拗口的技术和工具

现役设备

  • 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

    随处绘图,随地可用。