@
augustheart #124
C# 看起来支持比较好,根本原因是因为 C# 本身底子好。做 IDE 支持、分析、调试、编译速度、性能优化等很多工作是需要语言自身配合的,比如 C/C++ 的各种 UB 相当于给编译优化开了很多的洞(
https://www.youtube.com/watch?v=g7entxbQOCc )。C++ 光最表面的一个宏一个模板就决定了不可能有完美的 tooling 支持。这个和 C# 没有可比性。你的结论可能是正确的,但是 rationale 不一定合理。
另外貌似 JetBrains 的 CLion 并没有用 LLVM/Clang,我记得之前好像拆过他的 jar,是自己写的。C++ IDE 方面目前确实还没有比 VS 更好的,CLion 还算是能用,其他的最多只能说是凑合。并且 VS 不仅做到了“还不错”的程度,性能也做得很好( CLion 和基于 Clang 的方案的索引时间明显更长)——性能是真正的“黑科技”,JetBrains 在这点上不要想比。
之前上学的时候用过 CLion,后来学生免费没了就没用了,现在又日常写 C++ 了,电脑配置也高了,可能得看看有没有 EAP 啥的试下 ...
至于楼主的问题,我觉得除了 IDE 自身的原因之外,不能忽视微软的因素。
作为一个用 PC 将近 20 年的人并且从一开始就偏技术路线的人,我能告诉你的是在智能手机普及之前,Wintel 在国内网民中的 mindshare 是很大的。就算是智能手机普及之后,很长时间国内大多数人也只把苹果当成是做手机平板的公司(以至于把 OS X/macOS 称为 “IOS”)(至于 Google 和安卓的关系,我觉得可能是这次华为事件才科普到大众,而“安卓和 Android 的关系”怕是有生之年都分不清了)。
那时候 GitHub 还没起来,开源也不发达,Web 还被 IE 统治,非专业技术圈子里面的“正统”就是微软技术,毕竟每台 PC 机都会装(盗版的) Windows 系统,以及(盗版的) Office,如果要写程序的话,那第一选择就是 VS (事实上大多数人也并不知道有其他选择),我第一个接触的 IDE 就是 VS ( specifically,是 VB6 ...),甚至到现在国内很多高校萌新上手编程的还是 VC6.0,从这个角度我觉得说 VS 是“宇宙第一”IDE 是没什么毛病的。(当然,Excel 某种程度也可以称为 IDE,但是很可惜我玩电脑的第一个程序是 Word,至于 Office 中的其他组件压根都不知道是干啥的)
到现在我的一些圈子里还有很多人持 Mac 是垃圾,Linux 根本没法用的观点,尤其对比 V 站中一些“Windows 只是当游戏机”的观点,只能说世界真特么的奇妙。与之伴生的常常是“折腾了半天只能弹个黑框框有啥意思”“Linux 要手动输命令么,好麻烦”之类的说法,这些从根上都可以归因于微软和 Windows、VS 的影响。
那个时候业余搞技术的,除了建站之类的可能不大沾边之外,什么做个“系统优化”工具啊,仿个记事本啊,写个音乐播放器啊,做个小游戏甚至搞个外挂啊,都是绕着 VC、VB、MFC、ActiveX、x86 汇编什么的折腾。
这些经历让我一直到大学都不能理解,做个破网站,做个破(手机) App 有什么好玩的,为什么大家都在做,后来知道是怎么回事了,但是抱歉,这些对我还是没有吸引力。
V 站现在主力用户是“互联网”行业,所以我在看 V 站的观点时,都时刻提醒自己这里的观点是被这一因素过滤而有偏差的。
而且就我观察,截止到几年前,上大学之前折腾过技术的人,技术领域分布是比较平均的,可能是玩硬件的、打 OI 的、玩 Linux 的、做游戏的、做 Win32 的、搞安全的,甚至做 Flash 的都有,虽然毕业之后有一半可能去做网站了,但是之前做网站 /App 的还真没几个(样本有偏差,大城市的比较少)。
和 Web 领域的统治者 JVM 相比,.NET 很大程度上是同质的,但是它与最终用户的距离明显比 JVM 要更近(我觉得 Windows 做后台最容易上手的是 WAMP,还轮不到 Java ...),比如一些游戏是要求 .NET runtime 作为依赖的,VB6 也被
VB.NET 承接了下来。相比 JVM 生态,.NET 在 Windows 桌面程序、游戏、与微软其他组件集成等方面有独特的长处,Web 也不差(个人认为 .NET 明显短板在非官方的语言生态和学术领域上)。
但是最关键的不是这个,而是 .NET 吹的牛逼,作为一个萌新,微软当年为 .NET 吹的牛逼让我觉得这就是终极技术,它能做到之前 VS6.0 (以及 C++、VB、MFC 等)能做到的一切,同时能解决 VS6.0 中的一切问题,设计先进,使用方便,类库丰富——从 .NET 这个名字就能看出来微软的野心(相比隔壁的某又苦又有成瘾性的东南亚特产真的是赢在起跑线上),我随便找了点当年的材料:
https://www.theguardian.com/technology/2001/may/24/microsoft.internethttps://money.cnn.com/2000/06/22/technology/microsoft_ngws/index.htmhttps://web.archive.org/web/20000815055022/http://www.microsoft.com/net/whitepaper.asp对于对移动端和 Web 不感兴趣的人,VS 不仅是宇宙第一 IDE,而且就是 *The* IDE。
当然最后 .NET 也就做了个跟 JVM 差不多的东西 ... 但是一直以来,VS 都集成了大量微软专有技术的支持。到了移动时代,微软又吹牛逼说要让 VS 能写 Android、iOS、WP 所有平台的 App,后来开源的 Linux,Python,Node,R 什么也通通搞进来——这应该是“宇宙第一 IDE”称号的直接来源,你能想到的都包进来(你说 Java ?那你或许不知道微软在出 C# 之前出过 Java,现在面对全球最大律师事务所我猜是彻底不敢做了 ... 不过貌似听说也支持了?)。之前 VS 还集成了个微软的 VCS 叫 SourceSafe,后来不搞了,但是换成了 TFS——其他的环境都是默认 SVN/Git,把自己私货放进来这种事情只有微软能做,确实是 sui generis。可见吹牛逼从未停止。
另外相比 JetBrains 这种产品,Visual Studio 和 Xcode 其实更贴近 “IDE” 的意思,因为它们大量使用了自家技术,而不是大量依赖于开源组件。这样做的后果是,如果你觉得 VS/Xcode “好用”,那么你大概率接受并认同微软 /苹果给你灌输的一套操作逻辑,我觉得苹果用户和 Chrome 用户对此应该有明显的感受,但或许没意识到的是,Windows 其实也有自己的一套强奸用户 /开发者的理论。开源世界同样有自己的强奸开发者的价值观,你接受了哪个,哪个对你来说就更好用。
因此虽然我说 VS 更像 “IDE”,但是我觉得 VS 在 C++ 方面除了 IntelliSense 做得好,性能好之外,在项目配置上并不如 CLion 的 CMake 好用(虽然我并不认为 CMake 应该被用于 IDE 项目配置)
另外楼主你说 VS “界面没有 idea 现代化” ... 其实我很怀疑 JetBrains 是没有设计师这一职位的 ... (虽然我并不认为设计师一定会对产品有积极的影响)