也可以跨平台编译,性能也和 golang 差不多,而且 c# 比 golang 更好用,还有 VS 这种很方便的 IDE
1
plqws 2018-01-07 12:08:28 +08:00
不好,需要 runtime
|
3
alinwu05 2018-01-07 12:12:34 +08:00 via Android
就是生态不行啊!
|
4
poorcai 2018-01-07 12:14:11 +08:00
感觉已经晚了啊,国内这个环境...
|
5
plqws 2018-01-07 12:14:53 +08:00
@TangMonk distributing 后的,你用 golang 写的程序只要下个可执行文件就好了,net 的还得先安装运行时
|
6
TangMonk OP @plqws 不用安装,你说的是原来的.NET Framework, 现在微软把.NET Framework 的一些核心功能单独提出来,开源了.NET Core, https://github.com/dotnet/core, 现在是跨平台的,不需要提前安装运行时
|
7
marknote 2018-01-07 12:17:21 +08:00 via iPhone 2
用起来是不错
不过吧,你看看微软这些年都干了些啥,别的不说就说桌面技术就换了一茬又一茬,搞的现在写个桌面应用都不知道用啥好,说不定最后选个 html 或者 eletron 微软的船,没有多少人敢上了都 |
9
plqws 2018-01-07 12:19:58 +08:00
@TangMonk 你搞错了,我一开始也是这么想的。直到我用 .net native 编译后,发现还是需要安装 net 全家桶才能运行。
|
10
plqws 2018-01-07 12:20:25 +08:00
|
14
XiaoFaye 2018-01-07 12:30:52 +08:00
@plqws 可以编译成单独运行的文件,不需要全家桶。PS:RedHat 已经和微软达成协议,以后会在发行版里预装.NET Core
|
15
jyf007 2018-01-07 12:33:36 +08:00
这 dotnet 只不过是一个 jdk 一样的 rumtime 罢了
|
16
zn 2018-01-07 12:35:33 +08:00
早十年或者五年做成跨平台的话,哪有 golang 什么事!
现在?蛋糕都分得只剩渣渣了,你再厉害,也只能从别人嘴里抢尚未咽下去的残渣了。 |
17
doubleflower 2018-01-07 12:37:59 +08:00
哪怕语言和 go 一样好生态也不行,何况还是 ms 出的
|
18
timothyye 2018-01-07 12:38:40 +08:00 via Android
感觉又跟 Windows Phone 一样,iOS 跟 android 把市场分得差不多了才出来,后来也不行了……
|
19
dhssingle 2018-01-07 12:44:11 +08:00 2
很好奇,java 生态比不过,Go 的生态哪点比.net core 强了?
|
20
flynaj 2018-01-07 12:47:19 +08:00 via Android
也可以跨平台编译,但是平台太少,并发性能比 golang 差不太多,c#好用不知道从何说起,vscode 编程言语都支持
|
21
fwee 2018-01-07 12:55:32 +08:00
golang 爹好,这就是现实。C# 完爆 go 但是没社区。
另外恭喜楼主踏入八奇思考领域的第一步 |
23
patr0nus 2018-01-07 13:05:52 +08:00
@plqws
> 但是还是不支持编译 iOS 的库 其实是可以的,虽然还只是 preview 版本。https://developer.xamarin.com/guides/cross-platform/dotnet-embedding/ |
24
hjc4869 2018-01-07 13:07:20 +08:00 via iPhone
@plqws iOS Android 用 Xamarin 就行了,库全部 target .NET Standard 2.0
|
25
gamexg 2018-01-07 13:11:21 +08:00
以前学过 c# ,感觉微软 .net 的文档很好,印象最深的是每个库函数都明确的标明是否线程安全。
但是当时非常烦的一个问题是依赖 .net 框架,而且不支持将运行时静态编译进程序。 现在没接触,就不知道具体情况了。 微软开源+跨平台支持太晚了,要是一开始就开源+跨平台还好,或者一开始就提供跨平台时间表。 现在再提供跨平台让人不放心使用,怕微软什么时间策略一变又不提供跨平台支持了。 另外 ms 名声并不好,印象早年打击过开源的 .net 实现 mono。 |
28
gamexg 2018-01-07 13:17:14 +08:00
@TangMonk #27 那更悲剧,单点,没容错机制了。
只能和 mysql 一样再建立一个开源分支了,但是专利还是比较麻烦。 |
29
alcarl 2018-01-07 13:21:18 +08:00 via Android
最好用的是 vb 啊ଘ(੭ˊ꒳ˋ)੭666✧
|
30
TangMonk OP @fwee c#的爹也不比 golang 的爹差啊,而且还是有社区的 https://github.com/dotnet/csharplang , 虽然现在一些通用的包可能还不多。
|
31
hjc4869 2018-01-07 13:30:14 +08:00 1
@gamexg mono 和 .NET Core 都有专利承诺,具体看 repo 里的( PATENTS.txt ),大概意思就是你不针对 .NET 的专利起诉微软,微软就把这些专利免费授权给你用。
早期没有这个承诺 mono 根本不敢开发的。 |
33
notreami 2018-01-07 13:39:39 +08:00
就怕变化太快,项目 刚上线,就告诉你,过时了,不支持了。。。
|
34
TangMonk OP |
35
chih758 2018-01-07 13:42:05 +08:00
微软就是原罪
|
37
TangMonk OP @realpg 不好意思,我的英语不太好,麻烦你指明一下,到底是那句话说明了 golang 没有运行时?
|
38
hjc4869 2018-01-07 14:01:12 +08:00 via iPhone
@TangMonk 他怕是觉得 golang 没有一个用来加载 dll,运行时 JIT 检查编译链接的那个东西,然后把那个东西称作运行时
|
39
realpg 2018-01-07 14:11:13 +08:00 10
@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 乱套问题。顺带为了跟某些潜在竞争对手做竞争,扩展了一直强调的跨平台。 |
40
TuringGunner 2018-01-07 14:16:46 +08:00
微软的东西,国内生态实在太差了
早 10 年开源说不定都没 java 什么事了 |
42
beginor 2018-01-07 14:44:39 +08:00 via Android
其实我觉得微软应该认真发展 mono,虽然是收购 xamarin 时的捎带品,但是.net core 的功能包括跨平台、本地化编译、自带运行时发布等,mono 在多少年前早就实现了。
而且现在 mono 还帮微软扛起 VS for Mac/Linux 的大旗 |
44
wezzard 2018-01-07 15:03:56 +08:00
Vive F#.
|
48
qqmishi 2018-01-07 15:27:04 +08:00
太晚了,当时想在服务器上跑 C#,mono 用的怀疑人生,等 core 出来的时候早就抛弃 C#的方案了。
|
49
alinwu05 2018-01-07 15:32:54 +08:00
@realpg
Does Go have a runtime? Go does have an extensive library, called the runtime, that is part of every Go program. The runtime library implements garbage collection, concurrency, stack management, and other critical features of the Go language. Although it is more central to the language, Go's runtime is analogous to libc, the C library. 有运行时,虽然不如虚拟机那么重量级。 |
50
missdeer 2018-01-07 15:50:56 +08:00 1
一直觉得 C#很强大,但 MS 家的技术更新换代太快了,也许几天不关注就被告知你前几天用的技术已经过时了。。。
|
51
ivmm 2018-01-07 15:54:39 +08:00
|
52
sammo 2018-01-07 16:07:59 +08:00
真正的好东西 为什么要分享给别人呢?
|
53
CatCode 2018-01-07 16:22:16 +08:00
同觉得,要是微软早点儿开源跨平台,没准现在已经火了
现在啊,凉凉 |
54
zhx1991 2018-01-07 16:36:38 +08:00
招不到人...
|
55
zjsxwc 2018-01-07 16:43:20 +08:00
我宁愿选择 java 也不用 dot net
|
56
willm 2018-01-07 16:45:21 +08:00
技术的先进性只是很小的一方面,关键是生态。而在目前国内的技术环境中,.NET 技术栈毫无优势,人人都要黑一把 Microsoft 来显示自己的“牛逼”。最可怕的是,在马太效应的影响下,.NET 会越来越式微,所以如果你不是多年.NET 开发人员的话,.NET Core 其实没什么关注的必要。
|
57
TangMonk OP @ivmm 不太清楚,如果用 VS 创建项目的时候就选择. NET Core APS.NET 的话就可以在 linux 上运行,你的项目估计要改下吧
微软有提供迁移的文档 https://docs.microsoft.com/en-us/aspnet/core/migration/proper-to-2x/ |
58
aminic 2018-01-07 17:05:17 +08:00 via Android
ms 的小心思呀,一颗赛艇。
|
60
liuzelei 2018-01-07 17:37:31 +08:00
|
61
kiwi95 2018-01-07 17:56:16 +08:00 via Android
C#的爹还不够好?只是这爹对一大票儿子不好,怪谁,吹 C#也要有度,好归好,没人用
|
62
eslizn 2018-01-07 18:05:08 +08:00
@TangMonk Go programs are compiled ahead of time to native machine code
|
63
hujianxin 2018-01-07 18:20:00 +08:00 1
自从 golang 诞生以来,都有大批大批的人骂 golang 是烂语言:连继承都没有、连泛型都没有、if err != nill 满天飞等等等等。
但是结果呢,依旧压不住 golang 越来越流行,越来越多的公司开始使用 golang。比 golang 语法好的语言太多太多了,但是流行度有 golang 高的屈指可数。 所以呢,我认为,判断一个语言好坏,怎么能简简单单的用大家自认为好的语法评断呢? |
64
xupefei 2018-01-07 18:41:09 +08:00 1
@realpg #39
> golang 的所有单一输出,默认都是静态编译的纯本地机器码 不是纯机器码。你看看汇编就知道了,几乎就是硬凹了个 runtime lib 进去,你的代码一直在 call 这个 lib 里面的函数。相比 C/C++的汇编,golang 的可谓是十分丑陋。 这种无限 call 的风格简直就像是脚本语言。 |
65
wuethan 2018-01-07 18:48:33 +08:00 via Android 1
|
67
h4lbhg1G 2018-01-07 18:54:42 +08:00
@xupefei 这帖子把 LE 大佬也钓来了! go 语言内置了一个 runtime,只是打包 exe 比 python 方便一点。
|
68
winglight2016 2018-01-07 19:21:57 +08:00
@wuethan 兄弟这句话似乎很眼熟的样子~~~
|
69
sneezry 2018-01-07 19:23:09 +08:00 via iPhone 12
之前我看到关于微软的争论通常是困惑和愤怒的,很多东西明明微软做的比同类产品 /技术优秀,为什么还遭到很多人的“无脑”抵触呢?为什么很多人对微软有这么深的偏见?
后来见得多了,我在反思这个问题,一两个人做出没有道理的事再正常不过,可是很多人都做了没有道理的事,那这件事基本可以确定是有道理的。 现在我想我知道原因了,那就是微软“善变”。 从某种意义上说,是一种信用上的缺失,大家对使用微软技术心理上没有安全感,选择微软的技术本能地对未来有所焦虑。 没错,过去十年里,微软做了一些惹恼开发者的事情,比如和 Flash 竞争的 Silverlight,后来继续支持 Flash 的 Edge 不再支持了,再比如大家都清楚的 Windows Phone。 不过这些产品是 SB 时代(史蒂芬·鲍尔默)的产物,我不敢说纳德拉时代微软会彻底解决“失信”的问题(毕竟公司大了,做出一些失败的产品是很正常的,Google 不是也有 Dart 么),但是与 SB 时代绝对是有巨大区别的。 信用是靠一点点积累的,尤其是在有信用缺失前科的情况下重建信任更加艰难,所以我现在看到对微软有偏见的朋友会发自内心的理解,毕竟曾经那些事确实都是微软干出来的。 当然选择相信现在的微软的朋友,你们大可放心用,SB 和纳德拉最大的分歧就是对跨平台和开源上的态度。SB 是商人出身,而纳德拉是技术出身,他们的背景决定了现在的微软和曾经的微软一点也不像同一个公司。 |
71
LukeEuler 2018-01-07 19:42:47 +08:00
c#语法写起来还是很爽的。but,在一台禁用 root,禁止联外网的 linux 服务器上,dotnet 几乎把我搞死了。没有静态编译,dotnet 的 sdk 还有可怕的 c 依赖。
|
72
XIVN1987 2018-01-07 19:49:50 +08:00 1
怎么看这贴子感觉 Go 比 C#流行很多似的??
可是在 Toibe、Github、StackOverflow 的榜单上明明 C#比 Go 排名高的多啊! |
74
zjsxwc 2018-01-07 20:00:57 +08:00
|
75
janxin 2018-01-07 20:06:37 +08:00
支持 Net Core 干爆 Java...不过你觉得有希望吗...
|
76
XIVN1987 2018-01-07 20:22:49 +08:00 1
@zjsxwc
我说的是流行度排行榜,https://octoverse.github.com/ 页面 “ The fifteen most popular languages on GitHub ” 章节 在 Toibe、StackOverflow 的榜单里面 C#的排名比这个榜单更高,但即使在这个榜单里 C#也依然比 Go 高 |
77
KgM4gLtF0shViDH3 2018-01-07 20:41:44 +08:00 via Android
@wuethan 做站点和语言有啥关系。。
|
78
loqixh 2018-01-07 20:45:47 +08:00 2
@realpg 其实你要这种.net core 也有, 还在开发中, 现在还没正式版, 不过基本没什么问题了
https://github.com/dotnet/corert/blob/master/samples/WebApi/README.md |
79
kikyous 2018-01-07 21:03:00 +08:00 2
王者荣耀就是 c# 写的
|
81
halFKing 2018-01-07 21:33:41 +08:00 2
C# 语言层面上是真厉害,写起代码来非常舒服,MS 文档支持也好,可惜 Windows 服务器太蠢,生态环境和 JAVA 不能比
看好 .Net Core,能在 Linux 上能用 .Net 真的很赞 |
82
rogwan 2018-01-07 21:41:02 +08:00
wintel 联盟挤牙膏的风格一脉相传,巨硬的软件编写能力一直很强,但就是不使劲,看看 Mobile 的下场
|
84
hackxing 2018-01-07 21:49:15 +08:00
又看到一大波 黑 我软。
|
85
bobuick 2018-01-07 21:53:07 +08:00
好个毛线。java ,golang 之类的,随便一个模式玩的很成熟的,你用.net core 试下就知道了,上生产就等着给自己挖坟了。
|
86
nikymaco 2018-01-07 23:00:27 +08:00
@sneezry 老铁,深有同感。说 C#语言好不好,那是相当好。说.NET 生态棒不棒,只能就是个雏儿。很多码农一直错误的以为语言就是技术的全部,每个语言的诞生都有它的时代背景,遥想十年以前,那是信息化建设时代我们俗称的 IT 时代,.net 和 java 都是时代的宠儿,两大阵营各种正能量的「刀光剑影」好不快哉,到了现在,IT 时代已经变成了 DT 时代,互联网,云计算,大数据,AI,都没有了 C#的身影,反而剑走偏锋手游界硬生生的杀出了 unity3d,事物总是按二八原则划分,80%的码农跟着 20%的工程师走,知其然不知其所以然的分享着社区带来的优良产物。.net 想要再次站回浪口还有很长的路要走,厚积薄发,抓住良机。
|
87
Phariel 2018-01-07 23:18:09 +08:00 via Android
C 艹艹已经凉了很多年了 君不见现在还有几个大平台还在用.net 的?以前用.net 搭起来的都纷纷转 Java 了
|
88
darrh00 2018-01-07 23:58:30 +08:00
看了这多吹的,晚上花了一个小时折腾了一下,看完打包部署那几节文档,呵呵,只想说一 sh*t。Go 部署就一个文件到处拷,.net 我还是再过 20 年再看看吧。
|
89
mengzhuo 2018-01-08 00:05:53 +08:00
@kikyous #76
所有 unity 的游戏都是 C# C# 语法我不是很喜欢(当年客户端没空实现一些功能,1 天内我就帮着写了点逻辑提交,说明上手还是比较容易的 微软的东西并不是不好,但毕竟黑盒有时会绊你一下(为了帮客户端实现了 TLS+自定义协议,搜遍文档,SO 找了一路……社区代码质量真是醉了……最后还是我摸索了半天参数才调对的。 Go 真是我一见就爱,可能是因为我是写 Python Web 出身的。 |
90
ResidualSoils 2018-01-08 09:33:03 +08:00
诶。
|
91
jeremaihloo 2018-01-08 09:43:06 +08:00 1
我还是希望.net core 发展的好一些的,毕竟我还是很讨厌 Java 的,虽然我现在是个搞 python 的
|
92
nannanziyu 2018-01-08 09:51:50 +08:00 1
|
93
TangMonk OP @nannanziyu publish 后就不用 donet xx.ddl 运行,直接./xxx 就行,因为 publish 包含了.net core 运行时了
|
94
darrh00 2018-01-08 10:23:51 +08:00
@nannanziyu
你 n 多台服务器上的 dotnet 哪来的? 不需要安装? 如果还有 dotnet 依赖我还不如去用 java 呢。 另外跟 nginx 什么关系? dotnet 能运行在 nginx 里? 可能我孤陋了,去 Google 一下。 |
95
TangMonk OP |
96
nightcat 2018-01-08 10:53:13 +08:00
@TangMonk It also has a number of disadvantages:
Because .NET Core is included in your deployment package, you must select the target platforms for which you build deployment packages in advance. The size of your deployment package is relatively large, since you have to include .NET Core as well as your app and its third-party dependencies. Deploying numerous self-contained .NET Core apps to a system can consume significant amounts of disk space, since each app duplicates .NET Core files. |
97
darrh00 2018-01-08 10:53:15 +08:00
使用 self-contained, 打包了一个 hello-world,
``` dotnet publish -o hello-world --self-contained -r linux-x64 ``` 打出来一个目录, 内有 179 个文件,文件夹大小 63MB, bzip2 压缩后还有 25M,这点可以跟 node_modules 相媲美了。 好吧,至少能打出来包,扔到服务器一跑,挂了,还有 libc 的依赖,libc 版本不行。 |
98
ftexplore 2018-01-08 10:53:36 +08:00
语言特性本身从来就不是影响市场的第一要素,关键是现存的技术市场生态环境。说白了就是用的人多才是硬道理。
|
100
TangMonk OP @nightcat 打包出来的确是大。。这个不知道 CoreRT https://github.com/dotnet/corert 能不能改进
|