有没有这样一种语言

2020-02-14 04:09:22 +08:00
 skies457

像 JavaScript 一样灵活且生态丰富,像 Python 一样 Pythonic 式的简单易上手,像 Go 一样并行编程方便快捷,然后还具备接近 C/C++的性能。。

要是还有 Rust 的安全性就更棒了🌚

7421 次点击
所在节点    程序员
61 条回复
ChristopherWu
2020-02-14 14:41:40 +08:00
有,elixir,请看: https://www.v2ex.com/t/484954#reply19

> 像 JavaScript 一样灵活且生态丰富
没错,因为是动态语言,算是新的语言,工具链成熟,包管理器好用

> 像 Python 一样 Pythonic 式的简单易上手
我觉得语法设计的好

> 像 Go 一样并行编程方便快捷
actor 模型,比 go 更好的并行

> 然后还具备接近 C/C++ 的性能
mq 就是用 erlang 写的,现在虚拟机支持 HIPE 直接编译

> 要是还有 Rust 的安全性就更棒了
比不了,但稳定性可以比。
cmdOptionKana
2020-02-14 14:52:58 +08:00
@skies457 “C#性能还行,但是写起来有点迂腐像 C++、Java,灵活性还是不如动态语言”

江湖传闻动态一时爽,重构火葬场。

你知道为什么 TypeScript 势头那么猛吗,知道 Python 也积极搞 type hint 吗,为什么过去曾经被吹捧的动态语言要往静态化的方向走?

其中一个重要原因是最近几年 IDE/编辑器 的发展非常迅猛,在现代化编辑器的协助下,动态语言的优势几乎丧失殆尽,静态语言的缺点被克服(包括写的时候可以自动化、阅读代码的时候也可以简化显示)。
Buges
2020-02-14 14:53:07 +08:00
Python 整体上的那种统一,协调,一致的设计其他语言很少有。抛开这一点的话推荐 C++,虽然宛若打满补丁的缝合怪,但避开那些偏底层性能方面的特性熟悉了之后也勉强能称得上简单好用。
charlie21
2020-02-14 15:26:43 +08:00
并行编程 是什么?能吃吗?好吃吗?
queuey
2020-02-14 15:30:46 +08:00
我怀疑你在说 木兰, 但又没有证据...
wangyzj
2020-02-14 15:39:40 +08:00
什么时候鱼和熊掌可以兼得了?
ostholz
2020-02-14 15:53:54 +08:00
难道不是 Crystal Lang?
什么时候 Kotlin Native 成熟了,Kotlin 也是个不错的选择
wangtxxl
2020-02-14 15:53:59 +08:00
除了 木兰 也许只有 方舟旗下的编程语言了
LokiSharp
2020-02-14 16:06:55 +08:00
@skies457 我倒是觉得静态类型写起来爽,动态类型的要多写很多不必要的测试才能放心
Brucepac
2020-02-14 16:46:52 +08:00
感觉 Swift 很接近了,等 async 有了就差不多了
alya
2020-02-14 16:58:00 +08:00
@wozhizui 超跑 gk5
Kirscheis
2020-02-14 17:39:13 +08:00
当然是 c++了,c++什么都可以一把梭
skies457
2020-02-14 17:54:47 +08:00
@cmdOptionKana 赞同静态化趋势,动态语言的 type inference 也是必不可少的。但你试过用 c#写 python 的"for i, obj in enumerate(objects)"吗......
skies457
2020-02-14 17:57:20 +08:00
@Buges @Kirscheis c++至今没有和 express.js 、gin、flask 相比拟的成熟的 web 后端框架,处理起 json 之类的格式代码量爆炸。。
Kirscheis
2020-02-14 18:36:23 +08:00
@skies457 c++确实没什么好的后端框架,不过处理 json 并不比其它语音差呀,内存效率很高,parser 也不难写,相关的库也很丰富,还快
codehz
2020-02-14 18:39:58 +08:00
vlang: 你说的这些需求都有在首页上(
甚至还有安全性:没有 null,没有全局变量,没有 undefined,没有 undefined behavior,有边界检查,有 Result/Option 类型,有泛型,默认不可变数据结构,默认纯函数
没有 GC,也不需要生命周期管理
性能:和 C 一样快,0 成本和 C 交互,最少的内存分配
编译速度:总之是默秒全
直接生成机器码
还有自己的优化器
编译器:空间需求<2MB,编译自身只需 0.4 秒
还有 c to v 和 c++ to v 的转换器
以及动态代码重载
和强大的图形库
自带跨平台 GUI 库
轻松跨平台构建
依赖少,无痛部署
可以在任何 C 能运行的地方运行
还有 REPL
以及自带 ORM

唯一的问题就是大部分真正重要的内容都没实现(每月黑 V 1/1 )
secondwtq
2020-02-14 19:21:31 +08:00
来一点点枚举楼主这个需求的问题:

* “像 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,并且这件事情会搞得很“复杂”,那这个和“简单易上手”不兼容。
epkT6QJ3RSaz6AnJ
2020-02-14 20:45:41 +08:00
如果量子计算实现,真正的 lisp 就会实现,所有的框架、ide 都会消亡,因为都是历史的产物,最终退化为一种历史和文化,未来人类可能已经不需要 gui,不需要实例,不需要过程,只需要信息量和 lisp machine。
epkT6QJ3RSaz6AnJ
2020-02-14 20:47:02 +08:00
@epkT6QJ3RSaz6AnJ 因此我们活在的世界其实未来人看,可能就想蒸汽机和核能的区别,我们认为很有生产力的工具,在未来看都显得笨拙和多余。
b00tyhunt3r
2020-02-15 10:45:24 +08:00
@epkT6QJ3RSaz6AnJ 解释一下

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/644438

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX