1
czheo 2017-10-26 20:17:33 +08:00 1
golang 吧。链接的 node 多了,自带 goroutine 会派上用场。估计也是因为这个,以太坊的官方客户端用 golang。
|
2
glues 2017-10-26 20:39:26 +08:00 1
Rust 性能好,内存安全
|
3
SuperMild 2017-10-26 20:43:39 +08:00
涉及金融的貌似用 Erlang 蛮好
|
4
k9982874 2017-10-26 20:56:57 +08:00 via iPhone
各位知道易语言吗(逃
|
5
Elven 2017-10-26 21:15:33 +08:00 via iPhone
然而我用了 js ……
|
6
Elven 2017-10-26 21:15:54 +08:00 via iPhone
那个顺手用那个喽
|
7
hjc4869 2017-10-26 21:29:27 +08:00 3
语言没啥关系,差别都在 runtime,C#可以编译成 native code,C/C++也可以编译成 .NET CIL。
基于 VM 的语言跟 native code 最大的差异应该是 GC,其次是 JIT 的代码质量问题,还有一些别的零碎的问题,比如内存安全的语言,运行时内存安全的代价——边界检查,类型检查等等。 GC 的存在( JVM,CLR 这类,不包括 golang 那种 simple naive GC )使得这些环境在处理特定 workload 时有较大的优势,主要是在于 GC 分代、移动对象使得程序更加 cache-friendly。虽然用 C#理论上你可以完全绕过 GC,但是实际上也没见过多少人这么做,有这个需求的都去写 C++了🤣 另外这篇文章给了一些非常具体的数据,可以去看一下。虽然这个是 .NET 2.0 时代的,CLR/JVM 今非昔比,但是一些过去很昂贵的写法,现在仍然要避免。https://msdn.microsoft.com/en-us/library/ms973852.aspx |
8
CoderGeek 2017-10-26 22:08:05 +08:00
go or java
|
9
noli OP @hjc4869
我想到了一个可能跟“语言”或者说语言生态有关系的点。 区块链客户端中,可以预料到 网络 IO 和 密码学相关计算 是最重要的功能。 从以上考虑出发,应该选一些符合以下条件的: 1. 在多种常见平台上对 异步 IO 的支持比较好, 2. 同时生态环境中 密码学库比较成熟的 语言。 C# 跨平台支持 异步 IO 没什么问题。 但是 C# 标准库中对密码学的支持感觉比较弱。 也好像没有像 OpenSSL 那样在密码学领域比较全能的套件? |
10
hjc4869 2017-10-26 22:37:23 +08:00
@noli 非阻塞 IO 肯定没问题,不过 C#标准库的设计者根本不懂密码学,完全是外行设计的密码学库。
但是 .NET 调用 native code 方便,可以直接调用 OpenSSL,用现有的 wrapper 或者自己写都行。别的密码学 C 库也有很多 .NET 的 wrapper。 如果不在乎性能,可以用 BouncyCastle,不过 .NET 版的 bc 没有 Java 的 bc 好用,有些时候可能会需要抄 Java 那边的代码。 |
11
noli OP @hjc4869
我试过用 BC C# 写过一些 demo,甚至有人移植 dotnet core 版本,但真心太难懂,用得我心中没底。 也有留意到另外一个 SecurityDriven.Inferno 但是没用过。 |
12
stirlingx 2017-10-27 09:05:49 +08:00
go 吧,C/C++ Rust 太折腾
|
13
leeg810312 2017-10-27 09:21:55 +08:00 via Android
|
14
markx 2017-10-27 23:16:34 +08:00
忍不住想说句题外话,一大堆推荐各种语言的,大家都不看清题就作答么?
|