VS 为何能够获得《宇宙第一 IDE》的称号,对比 IDEA

2019-11-21 19:32:11 +08:00
 woncode

以前我主要写 java,一直用 idea,最近做一个项目要用 c#,于是用上了 vs

我刚开始用的时候就感觉不顺畅,已经想发个帖质疑这个称号了,但是想想可能是新手不熟悉的缘故,所以就憋着

但是到现在用了有两个月了,我觉得用 vs 还是不顺畅,具体有如下几点:

  1. 首先界面没有 idea 现代化就不说了
  2. 编辑提示:项目已经配了依赖,也已经用 nuget 还原(下载),但是当前文件没有引入的包( using ),写代码时就不会提示,只能把类全名复制过来,然后按 alt+enter 提示引入。不像 idea,只要 maven 配好依赖,下载好包,它就给你完整的提示,输入类名的几个字母,就可以自动补全加引入
  3. 调试:c#是 vs 支持的第一语言吧,但是竟然有糟糕的两点
    • 一是没有直接的热重载功能,google 一下,找到运行命令'dotnet watch run',可以监控文件变化就重启,相当于改一个文件就要等整个项目重启,这根本不是热重载啊,不像 idea 只重载改变的文件,秒秒钟看到新变化
    • 有时候项目运行时竟然不能编辑某些文件,即使我已经按照 google 勾选了“edit and continu”,对比 idea,甚至调试到断点,编辑断点后面的代码,还能使当前的调试运行最新改的代码
  4. 版本管理:与 git 集成,简直天上天下之别,idea 可以图形化看每一行代码的最后修改日期和修改人,可以未 commit 全部文件就可以 pull 等,而 vs 的功能感觉就只是对 git 简单命令的粗糙映射

我在想,难道是因为 vs 得到这个称号的时候,jetbrain 家的 ide 还没出生吗?还是因为 vs 支持很多语言,比如 c++,那 eclipse 算什么?

29914 次点击
所在节点    程序员
198 条回复
Fule
2019-11-22 21:23:05 +08:00
我个人从 VS 6 写 VC++开始,到 VS 200x 开始写 C# 代码,中间短暂用 XCode 写过 Object-C 代码,感觉 VS 虽然已经很强、很好用了,但竟然每个版本还是可以变得更好用。至于 Java 语言及其 IDE,真心不想碰。。。我承认 Java 的生态甩 .NET 100 * 10 条街,但从纯语言层面…… 因为不认可 Java 这门语言,所以也不想碰 Java IDE。
secondwtq
2019-11-22 21:53:17 +08:00
@augustheart #124
C# 看起来支持比较好,根本原因是因为 C# 本身底子好。做 IDE 支持、分析、调试、编译速度、性能优化等很多工作是需要语言自身配合的,比如 C/C++ 的各种 UB 相当于给编译优化开了很多的洞( <amp-youtube data-videoid="g7entxbQOCc" layout="responsive" width="480" height="270"></amp-youtube> )。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.internet
https://money.cnn.com/2000/06/22/technology/microsoft_ngws/index.htm
https://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 是没有设计师这一职位的 ... (虽然我并不认为设计师一定会对产品有积极的影响)
missdeer
2019-11-22 22:02:08 +08:00
"这样当初微软推出 vs 难道不是为了支持.net 平台吗"

这是哪里来的结论?.net 是 2001 年推出的,而那之前 vs 至少经过了 1~6 几个大版本
Cbdy
2019-11-22 22:46:53 +08:00
vs 占空间很大,也并不觉得好用,可能是软粉吹出来的吧
shijingshijing
2019-11-22 22:47:56 +08:00
@secondwtq 你不说我还忘记了,Visual Assist X 其实现在没有安装的必要了,微软自家的 IntelliSense 很 nb 了,下一步我觉得微软可以更进一步搞人工智能来加强代码提示,特别是那种 Boilerplate code,我觉的人工智能大有可为。。。
Tyanboot
2019-11-23 00:33:24 +08:00
@Cbdy 没记错 vs 本身也就 6、7 百 MB 大小好像。对比 idea 的 1G 也就那样。剩下的大小都是 SDK、编译器之类的。
aapon
2019-11-23 01:06:44 +08:00
作为一个.net 转 java 的人来说,我还是有资格回复这个的,用 vs 开发 asp.net mvc 5 做 web 开发简直太方便快捷了好吗?我转 java 也开发一年了,idea 是用着真不爽啊,vs2017 和 idea 2019.3 都是专业版,虽然 java 现在是主要开发语言,因为有老项目需要维护,所以还会偶尔使用.net 开发。就工具来说,微软系的软件我用的还是很爽的(除了 mssql,太吃资源了)。其他的 vsc ,vs 就很流畅。当然 winfrom,unity 3d 这些我偶尔也玩,vs 绝对能在开发环境这块最省心。逃~
seki
2019-11-23 03:19:47 +08:00
@shijingshijing 最近的 vs 2019 已经有 ai 了,之前是 IntelliCode,现在可以读取项目代码训练模型,虽然没什么提升显著的感觉
terence4444
2019-11-23 04:50:13 +08:00
vs 到现在都不支持 method 参数修改增加和变更,只有一个残废的编辑器
Code2qing
2019-11-23 06:13:29 +08:00
@inhzus 我的启蒙 ide 是 visual c++ 6.0😜
fx3
2019-11-23 07:56:14 +08:00
简单答案:当 VS 获得 宇宙第一 IDE 之称号时,IDEA 还不存在。

感觉现在很多人都要补(暴)历(露)史(年)课(龄)。
ik2h
2019-11-23 08:01:03 +08:00
曾用过 2M 网速下几十 G 的 VS,下载好后安装大半天,然后告诉你安装失败,系统环境也被弄得乱七八糟,这 IDE 见一次怕一次。
VEEX6
2019-11-23 08:31:50 +08:00
vs unity 和虚幻 4 无缝链接的 ide,一年一续费的 jb 也能出优越感了,这就是爪哇狗的素质啊,已屏蔽,看的恶心 @sudoz
TarotVoyager
2019-11-23 10:37:45 +08:00
@Mutoo Mac 上可能出了个假的 VS,JB 吹估计是宇宙排第 0 的
ragnaroks
2019-11-23 10:42:10 +08:00
1 是调试方便
2 是堆码方便
3 是"总有渠道用到免费全功能版"

写 java 用 vs 是二的选择
ragnaroks
2019-11-23 10:44:00 +08:00
@VEEX6 言重了,科班 /培训班教 java 都会带上 vs 和 j++的,只有野路子出来的才会无脑吹 idea.你的"爪哇狗的素质"需要限定下范围
FrankHB
2019-11-23 14:28:56 +08:00
说是宇宙第一,VS 作为 IDE 的 UI 上小毛病不断,其实屑得很。以小见大:一个升级插件的界面居然用模态对话框(最近才改成升级,还是要重启),被 eclipse 都打粗翔。(当然 eclipse CDT 的别的体验有多烂我就不多婊了。论字体渲染倒是可能吊打 NetBeans。)
至于 j8 家的东西,以前在我的几个实例上经常有跑不动的,正常构建流程出问题的( Android Studio gradle 卡墙先不管,响应那是个屑)甚至还有打不开的(当年的 CLion ),外加 VS 装.NET Reflector 日常直接卡翔加成 200%的。这类目无交互式程序响应需求的破烂,当 GUI app 就不合格,当然就什么没资格当 IDE 来讨论了。(当然,Java 撸的客户端嘛,整个都是……)
amazingrise
2019-11-23 14:47:02 +08:00
@shintendo 是的,vs 吃资源比 idea 少多了。
dokodream
2019-11-23 15:16:31 +08:00
我以为你在说 vscode,还在思考 vscode 最支持的应该是 ts。。
damngood
2019-11-23 15:29:59 +08:00
说 ui 我还是喜欢 xcode 的 ui 一些
尽管 xcode editor 这块很一般

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

https://ex.noerr.eu.org/t/621875

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

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

© 2021 V2EX