有没有这样一种编程语言

2019-10-08 22:40:24 +08:00
 zacharyjia

想要有以下这些特性,V 站大佬们见多识广给分析分析:

  1. 可以和 C/C++交互,在动态库层次上进行互相调用,即能编译成动态库给 C/C++调用,也能调用 C/C++生成的动态库;
  2. 有统一的包管理机制( C/C++千奇百怪的编译系统和依赖管理实在是头疼),各类常用库较为齐全;
  3. 性能较高,应该是 Go 或者更高级别的;
  4. 语法相对简单,开发效率较高。

最近把各种语言都看了看,发现符合大部分要求的就是 Rust 和 Go 了,但是 Rust 的限制实在太多,写起来脑壳疼。Go 的话使用 CGo 和 C 进行交互的时候貌似开销不小,性能下降得挺厉害。

然后其实还看了看 JVM 系和.NET 系。JVM 要想和 C/C++互调,基本上得有个 GraalVm 之类的东西,但是我看了一下一方面好像还不太成熟,另一方面在互相调用的时候语法也不够直接,需要很多额外的适配。.NET 的话其实现在有了 CoreRT 这样的东西,可以把 C#编译成 Native 代码,但是好多年了也不够成熟,随便写了一些 Demo 都有 Bug。

各位大佬看看,有没有什么比较合适的,感觉需要的是一个Simplified Rust?实在没办法就只能回去怼 Rust 编译器了,头疼🤣

6052 次点击
所在节点    问与答
42 条回复
Mutoo
2019-10-09 07:45:30 +08:00
国内流行的游戏架构很多是静态语言+binding+脚本语言。
cocos2d-js (c++/js)
cocos2d-lua (c++/lua)
unity3d + tolua# (c#/lua)
性能不是问题,需要性能的放静态语言,需要灵活的放脚本语言。
starsriver
2019-10-09 07:49:08 +08:00
一切基于 c。你可以自己造一个语言啊?

参考隔壁
kran
2019-10-09 08:04:31 +08:00
http://terralang.org
这个怎么样
favourstreet
2019-10-09 08:25:01 +08:00
看来大家已经忘了 FORTRAN 也是高性能语言来着
Kilerd
2019-10-09 08:28:14 +08:00
@favourstreet 经常在算法速度排行榜上看到他
Kilerd
2019-10-09 08:29:35 +08:00
无船先生已经在着手做 simple rust 了,但是基本的概念都没变,所以还是 rust 好
gimp
2019-10-09 08:49:08 +08:00
Simplified Rust 到最后就变成 Rust 了
CraxClive
2019-10-09 08:52:24 +08:00
Crystal 类似 Ruby 的脚本语言,只不过还没出 1.0。
geelaw
2019-10-09 08:54:59 +08:00
如果是 Windows 上的话可以考虑用 COM 作为接口,就没这么多费事儿的了
CatCode
2019-10-09 09:17:40 +08:00
Go 没写过,不评价。
==========================
选 Rust 要慎重,毕竟 Rust 不是一个迎合所有人的语言。
下面我也说一点儿 Rust 的缺点。
1.可以和 C/C++交互,在动态库层次上进行互相调用,即能编译成动态库给 C/C++调用,也能调用 C/C++生成的动态库;
Rust 在这个方面支持是支持,但还是不够方便,而且没有 Safe Rust 的保障。要折腾的话需要点儿毅力。
2. 有统一的包管理机制( C/C++千奇百怪的编译系统和依赖管理实在是头疼),各类常用库较为齐全;
Rust 的包管理确实不错。但是如果某些依赖项还依赖到了 C/C++的东西还是蛋疼。各类常用库的话,可以说是比较齐了;但是某些库可能是社区维护的。
3. 性能较高,应该是 Go 或者更高级别的;
写不好的话,性能也高不到哪儿去。初学 Rust 的时候我滥用 clone() to_owned()这些,可以“绕过”借用检查,但是。。。。
4. 语法相对简单,开发效率较高。
Rust 的语法简单???不过确实习惯了的话,看着还是挺规整的。
==========================
没有完美,只是适合
lyy16384
2019-10-09 09:44:52 +08:00
从 c/c++调用 c#的官方方式是用托管 C++包装一下
tt67wq
2019-10-09 09:46:08 +08:00
https://nim-lang.org/
不怕坑可以试试 刚刚 1.0
muxueqz
2019-10-09 10:07:51 +08:00
Nim 基本符合你的需求

1.可以和 C/C++交互,在动态库层次上进行互相调用,即能编译成动态库给 C/C++调用,也能调用 C/C++生成的动态库;
Nim 可以调用 so 也可以编译生成 so 给其它语言使用

2. 有统一的包管理机制( C/C++千奇百怪的编译系统和依赖管理实在是头疼),各类常用库较为齐全;
Nim 内置了现代化的包管理,现在的生态也已初具规模(V 还只有 20 个 module 吧?)

3. 性能较高,应该是 Go 或者更高级别的;
Nim 性能接近 C,超过 Go

4. 语法相对简单,开发效率较高。
像 Python 一样的语法,非常简单,开发效率很高
aliwalker
2019-10-09 15:18:24 +08:00
Dlang.
clino
2019-10-12 15:02:13 +08:00
@muxueqz nim 你用过啦? 好用吗?
muxueqz
2019-10-12 16:28:41 +08:00
@clino 我在用,还挺好用的,给自己写了些工具,感觉比 Go 的开发效率高,比 Python 的性能好,部署方便
clino
2019-10-12 17:46:49 +08:00
@muxueqz 自带电池多吗? 另外我搜了貌似很小众都没什么人在讨论,你如果碰到问题要去哪里问?
clino
2019-10-12 17:50:27 +08:00
@muxueqz 另外 nim 和 python 互相调用方便吗?
muxueqz
2019-10-12 23:35:33 +08:00
@clino
1. 自带电池还可以,碰到问题可以去官方论坛和聊天室问
2. 与 Python 互相调用非常方便,Nim 可以生成 python 的 C 模块( so 文件),也可以使用 python 模块(需要 python-devel )
clino
2019-10-13 07:40:22 +08:00
@muxueqz 感觉还挺吸引人的,就是几乎没什么生态,有机会玩玩看。

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

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

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

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

© 2021 V2EX