.NET Core 感觉比 Golang 好啊

2018-01-07 12:05:56 +08:00
 TangMonk

也可以跨平台编译,性能也和 golang 差不多,而且 c# 比 golang 更好用,还有 VS 这种很方便的 IDE

47894 次点击
所在节点    .NET
137 条回复
fwee
2018-01-07 12:55:32 +08:00
golang 爹好,这就是现实。C# 完爆 go 但是没社区。

另外恭喜楼主踏入八奇思考领域的第一步
fwee
2018-01-07 12:58:42 +08:00
@flynaj go 2.0 的目标 C# 5 年前都有。看看 k8s 都是那么扭曲的用 go 的,就知道这些特性是不是需要了。
patr0nus
2018-01-07 13:05:52 +08:00
@plqws

> 但是还是不支持编译 iOS 的库

其实是可以的,虽然还只是 preview 版本。https://developer.xamarin.com/guides/cross-platform/dotnet-embedding/
hjc4869
2018-01-07 13:07:20 +08:00
@plqws iOS Android 用 Xamarin 就行了,库全部 target .NET Standard 2.0
gamexg
2018-01-07 13:11:21 +08:00
以前学过 c# ,感觉微软 .net 的文档很好,印象最深的是每个库函数都明确的标明是否线程安全。
但是当时非常烦的一个问题是依赖 .net 框架,而且不支持将运行时静态编译进程序。
现在没接触,就不知道具体情况了。


微软开源+跨平台支持太晚了,要是一开始就开源+跨平台还好,或者一开始就提供跨平台时间表。
现在再提供跨平台让人不放心使用,怕微软什么时间策略一变又不提供跨平台支持了。
另外 ms 名声并不好,印象早年打击过开源的 .net 实现 mono。
TangMonk
2018-01-07 13:11:47 +08:00
@flynaj c# 应该比现在常见的语言好用很多,你去读读微软的文档就知道了
TangMonk
2018-01-07 13:12:43 +08:00
@gamexg 现在貌似收购 mono 了
gamexg
2018-01-07 13:17:14 +08:00
@TangMonk #27 那更悲剧,单点,没容错机制了。
只能和 mysql 一样再建立一个开源分支了,但是专利还是比较麻烦。
alcarl
2018-01-07 13:21:18 +08:00
最好用的是 vb 啊ଘ(੭ˊ꒳​ˋ)੭666✧
TangMonk
2018-01-07 13:25:52 +08:00
@fwee c#的爹也不比 golang 的爹差啊,而且还是有社区的 https://github.com/dotnet/csharplang , 虽然现在一些通用的包可能还不多。
hjc4869
2018-01-07 13:30:14 +08:00
@gamexg mono 和 .NET Core 都有专利承诺,具体看 repo 里的( PATENTS.txt ),大概意思就是你不针对 .NET 的专利起诉微软,微软就把这些专利免费授权给你用。
早期没有这个承诺 mono 根本不敢开发的。
realpg
2018-01-07 13:38:26 +08:00
@TangMonk #2
golang 要啥 runtime ?
都是本地静态链接程序
notreami
2018-01-07 13:39:39 +08:00
就怕变化太快,项目 刚上线,就告诉你,过时了,不支持了。。。
TangMonk
2018-01-07 13:40:24 +08:00
chih758
2018-01-07 13:42:05 +08:00
微软就是原罪
realpg
2018-01-07 13:47:56 +08:00
@TangMonk #34
你确定你看懂了这段英语?
TangMonk
2018-01-07 13:50:41 +08:00
@realpg 不好意思,我的英语不太好,麻烦你指明一下,到底是那句话说明了 golang 没有运行时?
hjc4869
2018-01-07 14:01:12 +08:00
@TangMonk 他怕是觉得 golang 没有一个用来加载 dll,运行时 JIT 检查编译链接的那个东西,然后把那个东西称作运行时
realpg
2018-01-07 14:11:13 +08:00
@TangMonk #37
英语不好,就别跟人家玩咬文嚼字的游戏,内容不理解,连约定俗成的概念都不了解,就跟人玩文字游戏,没意思。

任何程序,只要能 run,那就有 runtime 概念。具体 runtime 是啥意思,字面意思都很容易理解,这要都理解不了,那还是别吃这碗饭了。

通常意义,就像一楼说的某种语言需要 runtime,指的是需要外部 runtime libary,对于传统.net就是.net framework, 对于 msvc 的高版本,就是 vc2xxx runtime redist,对于 java,就是 jre。

golang 的所有单一输出,默认都是静态编译的纯本地机器码,不需要任何外部 runtime libary 支持。

而.net core,核心应该还是.net 的那一套,只是不需要显式安装 runtime libary,在生成对应平台目标程序时,在程序内内嵌了一个 runtime,然后用这个 runtime 去执行原始程序翻译成的中间码。这样由于一般程序调用的库有限,可以把最基础的热门基础 runtime 库用目标平台机器码写好无论是否需要直接复制进二进制,然后一些非热门库根据代码是否使用,采用可选扩展形式,封装进程序,相当于每个发布的程序都带一个不全功能的解释器来压缩发布文件体积,核心还是.net 那一套,只是为了不需要用户麻烦的单独安装 framework 还有坑爹的不同版本 framework 乱套问题。顺带为了跟某些潜在竞争对手做竞争,扩展了一直强调的跨平台。
TuringGunner
2018-01-07 14:16:46 +08:00
微软的东西,国内生态实在太差了

早 10 年开源说不定都没 java 什么事了

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

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

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

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

© 2021 V2EX