鉴于 C# 正沦为"小众"语言,想向大家介绍一下它,各位想看点什么?

2021-06-29 13:48:53 +08:00
 Rwing

有感于 想学一门后端语言,哪个比较用的多,写起来比较爽

想向大家介绍一下这门"写的爽"的语言,又怕才疏学浅介绍不清楚。

不知道各位想看点什么?

不谈论生态就业等等问题,单纯说语言本身,有可能涉及到 .NET

10839 次点击
所在节点    C#
91 条回复
zhuangzhuang1988
2021-06-29 14:22:47 +08:00
命...
yolee599
2021-06-29 14:24:42 +08:00
感觉 C# 在桌面应用上更加发力还是挺不错的。
unco020511
2021-06-29 14:26:27 +08:00
java 也没好到哪去,上古语言
Rwing
2021-06-29 14:28:42 +08:00
@yeqiu 不好意思恕我才疏学浅,没有很深入的了解 Goroutines,这里有一篇文章对比 C#与 go https://zhuanlan.zhihu.com/p/279164405
我相信两种模式是各有利弊的。
至于 async/await 是否足够优秀,我个人觉得 async/await 对于初学者来说确实有些难理解,不过 async/await 应该也没那么糟,不然 python/js/rust/c++也不会竞相模仿吧
alexkkaa
2021-06-29 14:29:40 +08:00
C#表面是很好。但是.net 平台却不那么好, 就本身来说很多标准库实现都有问题, 比如 cookie 的实现还挺留在很久前
fl2d
2021-06-29 14:29:55 +08:00
等 VR/AR 起来了,c 井还能再闹一阵子?
kop1989
2021-06-29 14:29:57 +08:00
以现在这个时间点( 2021 )而言,语言之间几乎没有绝对的优劣势可言。

比如你说 C#有什么绝对突出的优势么,并没有。优势在于原生支持.net
Java 语言本身有什么绝对优势么?也没有。优势都在那些框架上。

这就像是你讨论:英语、法语、德语、意大利语在语言本身上哪个优秀?

所以抛弃既有生态和行业内既有的开发流程来探讨语言本身,基本没有意义。
Jooooooooo
2021-06-29 14:33:38 +08:00
不如去学 rust.

还有 java 最新版本(16) 里的 gc 很值得一学, 也可以看看. stw 时间可以控制在 10ms 以内.
dinfeo
2021-06-29 14:36:57 +08:00
坐标工业领域
作为一个 从 delphi C# 到 现在 java Node.js 混用的
之前的很长一段时间,工厂的 IPC 都是装 Windows 系统的,而且 OPC 、modbus 等工业协议,C#都有较好的现成的包可以用,甚至一些机器的 HMI 都是跑着 windows 。。。
工厂里的环境,一般是与外网隔绝的,系统常年不更新,所以很大一部分工业软件都是基于 C#的 winform 程序。
但随着近几年 IOT 的兴起,各种 Linux 的 IOT 设备慢慢被工业领域接受,如传感器,gateway,智能型控制器。
所以,近几年 java 和 node.js 在工业领域又流行起来。

C#觉得还是 winform 和 Unity3D 比较适合。无论在 IOT 和 Web 的开发上,C#都显得力不从心,虽然有.net core 的跨平台,但是太晚了,在非 windows 的环境.net core 的稳定性和运维都是个风险。就和 windows phone 一样,不是不好,是出来太晚,导致没有了生态,最终失败。。。
Rwing
2021-06-29 14:38:24 +08:00
@kop1989 不敢苟同,是没有绝对的优劣势,但是有相对的优劣势,某个语言可以"写的爽一点点"我就感觉很开心了。
本贴也不是一个比较贴,只是向有心了解的人介绍一下,这没有意义吗?如果说没有意义,那我觉得“您点进来花了大段时间打字点评没意义”这事其实更没意义
yejinmo
2021-06-29 14:41:26 +08:00
同工控领域

服务端及 PC 客户端均由 C#开发,服务端正在迁移 .Net 5,PC 客户端用到了 WinForm 还停留在 .Net Framework 4.6.1

开发丝般顺滑
yejinmo
2021-06-29 14:43:07 +08:00
C#也绝对不是小众语言,只是相对国内这批 Java 大军小众了些
国外接 C#的外包爽到起飞,钱多工作量少,工作量指的是实现相同功能,C#代码要比 Java 少些一大堆
kop1989
2021-06-29 14:43:42 +08:00
@Rwing #30 关键就在此,即便是“相对优劣”,也是需要场景的,“爽”也是要场景的。
而场景往往就诞生于行业既定的开发流程和既定生态下。

比如你要用微服务,你一定不会因为 c#的语法糖更甜、LINQ 更好用就放弃 java 转用 C#。
反之,你要开发 windows 客户端,你一定不会因为 Java 更原教旨主义的面向对象就选择 Java Swing 。
charlie21
2021-06-29 14:45:21 +08:00
SDK 和 编辑器 和 IDE 直接介绍跨平台的 .NET Core 和 vscode 和 JetBrains Rider
不支持跨平台的用品请不要介绍 谢谢,唯有如此才能挽救 C# 形象
yejinmo
2021-06-29 14:45:54 +08:00
附一篇文档,对比分析写的很详细,适合熟悉 go 的开发人员看看

[翻译]Go 与 C#对比 第三篇:编译、运行时、类型系统、模块和其它的一切

https://www.cnblogs.com/InCerry/p/go-vs-csharp-part-3-compiler-runtime-type-system-modules-and-everything-else.html
ligiggy
2021-06-29 15:13:07 +08:00
我觉得 C#的多线程、异步操作,官方提供的 Socket API,SerialPort API,XML API 等可以用无可比拟来形容,提示文档也是其他语言无可比拟的。而这些特点,几乎就是传统制造业所需要的,短时间内就开发一套可以用上的、且稳定的客户端软件。
Jirajine
2021-06-29 15:31:46 +08:00
C#是 Java 那个时代的语言了,虽然各种语法糖特性加的多,放到现在也算不上“写的爽”。
dotnet 平台上倒是 ml 系的 F#写起来很爽,可惜一直不被重视,不温不火。
zhuangzhuang1988
2021-06-29 15:37:09 +08:00
@ligiggy 还有原生的标准异步 cancel progress 支持, 别的语言都没有的。
JamesMackerel
2021-06-29 15:49:03 +08:00
@yeqiu

我倒是认为 async/await 语法糖是个非常优雅的解决方案,毕竟如果没有了它又一定要写 eventloop,似乎就要回到被“回调地狱”支配的时代。这个语法糖把这种难以理解的非线性的编程模式变成了非常优雅易懂的线性的编程模式,所以我觉得它是优雅的。
msg7086
2021-06-29 15:53:13 +08:00
@huangmingyou 在乎内存的人为什么要选型 Java ?
都选了 Java 了还在乎那点内存干什么。
我司跑 Java,开发测试虚拟机给 24G 内存,实体机估计要配 1T 以上内存。

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

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

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

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

© 2021 V2EX