来一点点枚举楼主这个需求的问题:
* “像 JavaScript 一样灵活” —— “灵活”无法定义。如果说能写什么程序的话,那么任何一个图灵完全并且有正常的 C FFI 的语言都足够灵活(
https://v2ex.com/t/604915#r_7962546 ),只是 JavaScript 作为没有标准的 FFI 的语言,灵活性很值得怀疑。如果“灵活”是指“同样的程序可以有多少种写法”的话,不同语言由于语言特性的不同,会有不同的角度,比如 JavaScript 的 prototype 很灵活,汇编的内存操作也很灵活。单单“灵活”是什么也说明不了的,既然楼主说了“像 JavaScript 一样灵活”,那楼主要的就只能是 JavaScript。
* “生态丰富” —— 满足 V 站定义的“生态丰富”的语言(假设楼主说的是通用编程语言,并且这里不算 Scala、TypeScript 这种作弊的),用手指+脚趾能数出来,这一上来就大大限制了候选集合。
* “Pythonic 式的简单易上手” —— 这个“Pythonic”又直接把目标锁在了 Python 上——因为“Pythonic”就是指“Python 的特征”,或“根据 Python 所总结出的特征”。从比较的角度讲,编程语言就是这样一个思路的集合,如果以“Pythonic”指导设计语言的话,最后出来的就只是另一个 Python。
再说“简单易上手”,如果说生态尚且可以通过数据量化的话,“简单易上手”是无法定义的,或者说不同的人可能有不同的定义。既然你前面提到了“Pythonic”,那么我只能假设你的“简单易上手”是指“Pythonic”。根据上一段所述,符合“Pythonic”的只有 Python。
* “像 Go 一样并行编程方便快捷” —— Go 在并行编程方面我只能说一般(再说从根上讲这就不是 Go 的设计目标之一),不是很明白这个需求。
* “接近 C/C++ 的性能” —— 能严格满足这一标准的语言只有 C/C++,我在
https://v2ex.com/t/594287#r_7803885 这里说过 C/C++ 在这方面的特殊性。至于“接近”么,“接近”的定义也有很多种,比如在上面那个贴子中有回复提到 OCaml 比 C 快,用 Java 的人会说 Java 的性能不比 C++ 差,哪怕用 Python 的人把 CPython 扔了用 PyPy 之类的也敢这么说(
https://news.ycombinator.com/item?id=13748622 ),这个 StackOverflow
https://stackoverflow.com/questions/35019918/sum-all-numbers-from-one-to-a-billion-in-haskell 说 Haskell 随手一改比 C++ 还快,而这个
https://stackoverflow.com/questions/17036059/why-does-javascript-appear-to-be-4-times-faster-than-c 上面还说 modern JS engine “may allow performance roughly equal with compiled languages like C.”,
* “Rust 的安全性” —— 这就涉及到前面说的“简单易上手”的定义问题,如果你认为在编程时 reason about lifetime 是正常的事情,那么这条需求是可以与“简单易上手”兼容的。如果你认为编程时不应该时刻 reason about lifetime,并且这件事情会搞得很“复杂”,那这个和“简单易上手”不兼容。