感觉 C# 在蚕食 Python 的生态

2023-12-14 13:21:49 +08:00
 QiShine

在 TorchSharp,SciSharp 这类开源项目的引导下。微软在 OPENAI 的投资,也刷了一波 AI 圈子的好感。

18449 次点击
所在节点    Python
113 条回复
pengtdyd
2023-12-14 17:12:30 +08:00
C:笑看风云淡,坐看云起时。
Chad0000
2023-12-14 17:34:49 +08:00
@lambdaq #22
我也是 vs2003 就写 C#了一直写到现在。你竟然不知道 Visual Studio Community 我比较惊讶。

C#这两年份额都在提升,去年差点成为年度语言,今年应该没问题了。

没有钱继续使用 Visual Studio Community 没问题,实际上外面的公司随便买软件是常事,什么 office azure 订阅,VS pro 版,各种工具都是只要申请就买。

这个钱和开发人员的工资来讲九牛一毛都算不上。
oldshensheep
2023-12-14 17:52:57 +08:00
用 vscode 开发 C#是怎么看第三方库和标准库的源码的呢?搞半天也不行,Python 、Java 、Golang……都是点一下就可以看源码。看不了源码那怎么方便的 debug 第三方库的代码呢


再者微软的 C#Debugger 还不是开源的……
zzzkkk
2023-12-14 17:59:49 +08:00
@lambdaq
有没有全靠 eclipse 的证据?
我记得 0 几年时既有 intellij ide
hez2010
2023-12-14 18:15:01 +08:00
@oldshensheep 在 C# 插件设置里开启反编译,然后就能直接看了。C# 的 debugger 除了微软的还有三星的,后者是开源的: https://github.com/Samsung/netcoredbg
本质上都是调用 .net runtime 提供的 debug api ,都是开源的,调试器只不过是套个壳子罢了。
crackidz
2023-12-14 18:21:17 +08:00
@zzzkkk 至少在 10 年之前 eclipse 的应用要远比 JB 家多的多,真正 IDEA 火起来应该是要到 12-13 年以后的事情了,我印象比较深的事件还是 Google 放弃 eclipse (太难配,太多自定义了...
lambdaq
2023-12-14 18:23:07 +08:00
@Chad0000 最后接触是在 aspnet atlas silverlight 时代。

公司随便买软件,的确是常事,但是普及一个语言这就是门槛了。

你们大可否认这个门槛的存在,但是我觉得这就是 C#缺乏说服力的表现。
lambdaq
2023-12-14 18:24:05 +08:00
如果你们听说过 atlas silverlight 就知道我为啥不写 C# 了。。随时被金主弃坑的感觉。。。
lambdaq
2023-12-14 18:25:19 +08:00
@zzzkkk 有。但是我懒得打字。。我就说一个线索,你们品一下 eclipse 这名字。。 再想一下 sun 这名字 。。。。
oldshensheep
2023-12-14 18:51:55 +08:00
@hez2010 这个我启用了的,就是这个 Navigation to Decompiled Source ,我是按 CTRL 再点击函数名来看源码的,但是看到的是那个 MetadataAsSource 没有源码。
只有 debug 时可以进入源码,应该是因为开启了这个 Debug › Symbol Options: Search Nu Get Org Symbol Server


其实我感觉很奇怪,明明是其他语言非常直接的一个功能,C#搞得这么麻烦
SayoKurisu
2023-12-14 18:53:59 +08:00
C# 是挺好用的,dotnet core 跨平台,还有跨平台 UI 库,但是架不住 python 包多啊
LaurelHarmon
2023-12-14 19:04:39 +08:00
啥玩意,现阶段来说,Python 就是 AI 的官方语言
hez2010
2023-12-14 19:33:35 +08:00
@oldshensheep 其他大多数语言都是源码分发库,你得先把源代码拉到本地来构建才能运行。而 C# 有自己的 ABI 所以不需要源码分发,只需要引用库编译后的二进制产物就能构建应用了,不含有源码信息。
至于 metadata 的问题,那个是因为 .net 的基础库有引用程序集的概念,引用程序集只提供了 API 的声明,不包含实现,而实际的实现在其他地方。正如上面所说的,因为有自己的 ABI ,所以不需要源码,只要能成功链接符号到你引用的程序集上就能成功编译,所以编译时编译器并不一定知道你引用的库的代码,而可能只知道有哪些 API ,到了调试时毕竟要执行实际代码了自然就能跳转进去。
MakHoCheung
2023-12-14 20:06:32 +08:00
@encro 先进的地方在哪
kayleh
2023-12-14 20:20:16 +08:00
幽默
thinkershare
2023-12-14 21:41:54 +08:00
@oldshensheep 对于自己不理解的东西,先去尝试理解它的设计,然后再来评价。.NET 的 Assembly 设计是非常优秀的,pip/node 包的那么多破事就是因为版本依赖一开始就没有正确设计在 runtime 中。.NET 平台诞生之初就是要解决 dll hell 问题。我已经不知道多少次被 pytroch 的各种包折腾了。各种 ML 库的依赖绝对可以搞到你头大。随便一个小版本升级就 GG,conda 的依赖解析都是按照小时计算。后来 conda 自己又开始锁定包版本。至于源码查看,其实是因为很多包不提供二进制分发,如果 nuget 包提供二进制分发,使用 source link+pdb 文件,调试源代码一点也没问题。我天天调试.NET Runtime 和 ABP 等第三方框架的源代码,一点问题也没有。
thinkershare
2023-12-14 21:46:27 +08:00
就我看来,python 的设计是很糟糕的,除了降低了写代码的门槛低。之所以火,纯粹是因为搞 ML 这批人不是计算机专业的,很多人都是学数学等相关专业的。另外就是 python 存在大量的 wapper 函数库(也就是 python 在这这里只是调用底层 c/c++的一层胶水), 这显著降低了 python 的门槛。python 是一门好用,却难学的语言。大部分计算机要不难用,要不难学,c++例外,即难学有难用。
princelai
2023-12-14 22:08:46 +08:00
@thinkershare conda 现在有新的 solver 了,libmamba 解决依赖快了很多,可以试试
chenqh
2023-12-14 22:11:29 +08:00
@thinkershare 说这种先进有什么用呢?C#语法先进,为什么火的是 java?就语法而言,C#不比 java 好?就论语法,js 那种东西
就不该有 JIT,但是 js 的 jit 是最好的
prudence
2023-12-14 22:20:36 +08:00
@chenqh #59 火的是 java 和 开源 和 跨平台 有关系把,c# 才开源 以及 跨平台几年

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

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

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

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

© 2021 V2EX