This repository has been archived by the owner on Oct 18, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
/
sample1.txt
2274 lines (1367 loc) · 195 KB
/
sample1.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
You don't mention what OS you're using, but some general observations:
On Windows, Visual Studio is the standard IDE. The ~~Express~~ Community version is free to download and use. Its "intellisense" is second to none. The only downside is that the compiler doesn't support the latest standards as well as Clang and GCC.
I use a Mac, and I can highly recommend CLion by Jetbrains (it's also available for Windows and Linux). The only downside is that it's a paid product (although they do offer a one month free trial).
QtCreator is another multiplatform IDE that is widely used. I've found it to be faster than CLion, though it's missing some handy functions that CLion has. It is free, though.
Lastly, if you're using Linux or MacOS then many people swear by Emacs. (Many other people swear at it, though.) It's not an IDE in the traditional sense, but it can be configured to do just about anything, if you're the kind of person who likes tinkering with that sort of thing.
A link to a good reference;
https://m.reddit.com/r/learnprogramming/wiki/tools
I use Kdevelop as an ide, fast and lots of useful features. Not sure how easy it is to install on windows though
Vim.
On Linux, eclipse. Better vim emulation than clion and doesn't just work with cmake. Better indexing and features than qtcreator (unless you're actually using Qt, perhaps).
The "best" IDE on windows is probably Visual Studio.
I do not say that it is perfect.
There is also free community edition of it.
I like a simple setup. I'm using Sublime Text (https://www.sublimetext.com/) for writing and Coati (https://www.coati.io/) for navigation and understanding. They both work on Windows.
It's amazing how under-represented Eclipse is in these comments. I love Eclipse CDT, it has the most complete C++14 support of all the IDEs, it's cross-platform, it's free and it has all the neat features you expect from an IDE.
We have at least one thread like this every week, go figure.
Eclipse has a good code navigation.
Do not forget http://codelite.org/ I use it for cross-platform software (Linux / Win) successfully. I develop GIS software.
I would recommend juCi++: https://github.com/cppit/jucipp due to its tight integration with libclang for best possible C++11/14/17 support. However, debugging through lldb is not yet supported on Windows and Arch Linux.
Depending on your platform.
Windows: Visual Studio
OSX: Xcode
Linux: probably Code::Blocks.
Visual Studio is hands down the best, people are making other IDE's to mimic VS but none of them are remotely close.
For Linux I use Code::Blocks and for OS X I use notepad/sublime because all other ide's are garbage for OS X. Emacs I felt was not fluid in any way and the few months using it I kept finding work around a for all of its quirks and issues rather than coding.
One important thing to note about Visual Studio is that there is a new edition called Community which is free yet it supports extensions and has almost everything Professional edition has, and VS 2015 update 2 is quite close to full C++17 support
EDIT: and experimental support for Clang frontend
On Macs xcode is pretty much the standard ide. Not saying that clion is a bad choice there or anywhere else though.
I forgot to put in my OS, thank you for pointing that out. I'm also glad that you took the time to put in the best IDE to use for each OS.
I've found it to be faster than CLion, though it's missing some handy functions that CLion has.
Can you elaborate what are those handy functions?
This comment has been overwritten by an open source script to protect this user's privacy. It was created to help protect users from doxing, stalking, harassment, and profiling for the purposes of censorship.
If you would also like to protect yourself, add the Chrome extension TamperMonkey, or the Firefox extension GreaseMonkey and add this open source script.
Then simply click on your username on Reddit, go to the comments tab, scroll down as far as possible (hint:use RES), and hit the new OVERWRITE button at the top.
Is not a IDE.
Did You write java? How does CDT compare to JDT (specifically java EE version)?
can you compare it with any experience of VS? I'm currently deciding between VS and Eclipse
I don't know about the IDE as a whole ( I'm not a big IDE fan to begin with), but the VS debugger is the best debugger I have ever seen. The custom visualizer capability is a game changer.
Was it not just C++17's library part, not whole? AFAIK it's not even clear yet what C++17 will have...
I'm VS user and i really like it, but it bugs me, that they just don't give too much shit about being standard compliant. Example. I'm guessing GCC gets it right.
So i wouldn't be so hyped about VS' support for supporting standards too much.
Xcode drives me mad with its insistence that everything within a namespace must be indented, with no option to change it (or any other formatting settings for that matter). I admit that that's more of a personal gripe, though. I've also found that its autocompletion for C++ isn't as good as CLion or QtCreator.
Xcode it standard IDE on OS X but it support for C++ is pretty bad compared with other languages.
So CLion could be better alternative.
A few off the top of my head:
CLion has a "quick fix" feature which is absurdly good at doing What You Want at the right time. For example, if you declare a std::vector in your code, CLion will offer to add #include <vector> at the top of your source file if it's not already there (it even usually puts it in the right place). Another example: if you add a member variable to a class, CLion will offer to add it as an extra parameter to your constructor(s).
CLion can automatically generate a skeleton implementation for a member function in a cpp file, given a declaration in a header. This is a massive time-saver. It's even smart enough to provide a reasonable default implementation: a declaration of a bool function will return false, a declaration returning a pointer will have a definition returning nullptr, etc.
The current beta version has support for going the other way too: if you write a member function definition in a source file, CLion can add the declaration to the header
CLion is just great at code generation generally. Getters and setters (albeit with unchangeable lowerCamelCase Java-y names) for private member variables for example, or a constructor taking all members. It can do these inline or separate source and header, as you choose.
If you change the declaration of a function, CLion will offer to change the definition to match (and vice versa). QtCreator can do this too, but when it does it insists on moving * and & so that they're hugging the variable name rather than the type name, which is NOT WHERE THEY GO :-)
CLion's autocomplete can "see through" macros, whereas QtCreator's can't. For example, I use an OpenGL wrapper (Glad) which uses macros to wrap the GL function pointers. QtCreator won't even tell me how many parameters the macro/function takes, whereas CLion tells me their names and types, like a regular function call.
QtCreator seems to have more difficulty in working out which header corresponds to which source file, if the two are in different directories of a CMake project. My typical CMake project layout has public headers in an include/ directory, and source files in src/. QtCreator won't associate a source and header unless you specifically add the header files to your CMake project, which is not recommended CMake practice.
On which note, QtCreator defaults to a project view which won't even show header files unless you add them to the project (which again, CMake recommends against as it detects used headers automatically). CLion defaults to a filesystem view instead, which shows all your files. QtCreator has a filesystem view of course, but with an annoying "feature" that if you double-click to edit a nested CMakeLists.txt from the filesystem view, QtCreator will try to open it as a new project(!).
N.B. I don't mean to sound overly critical of QtCreator -- I used to use it every day, I think it's a fantastic product, and I'd have no hesitation in recommending it to people who don't want or can't afford CLion. I could write a similar list of little features QtCreator has that I wish CLion would implement (responsiveness being the main one -- I don't know whether it's C++ vs Java or what, but QtCreator is much faster than CLion for me). It's entirely possible I'm now biased towards CLion simply because I stumped up money for it...
Vim + ctrl-P + youcompleteme + ... is actually a pretty good setup.
What about emacs + projectile + cmake-ide + rtags + company-irony?
I barely write Java. From cursory examination and talking to Java devs, what I can basically say is this:
In Java, the language is easy to parse. Indexing is fast and accurate. In C++, the language is very hard to parse, particularly because of macros and turing complete templates. So indexing can be quite slow depending on your scale; a 1 million line project might take a couple of minutes to index from scratch (though typically you don't need to index from scratch all the time). And it will never be perfectly accurate; if go-to definition brings you to the right place more than 99% of the time you're generally quite happy.
Related to the above, Java IDE's (including Eclipse) can do very sophisticated refactorings very reliably. The "latest and greatest" in CDT is being able to refactor a class name; this means changing the name of the class at all points of usage, changing the file names, and changing the #includes. This very simple refactoring is already quite hard.
In Java, it's practical even with large projects to continuously build; each time you save you rebuild. When you hit a shortcut key in Eclipse your unit tests run instantly because your project is already built. This isn't really practical in C++; so you hit a key, and wait while your project builds and then the tests run.
It's hard for me to compare the two, I do most of my programming on Linux, and when I occasionally have to code on Windows using C++, I always use the free versions of VS. This means I can't say what's not available in VS. These are some certain pros for Eclipse though:
* The most complete support for the most current C++ standard. Right now that would be C++14, but if the past is any indication, Eclipse will probably always be the first to support them, half a decade before VS.
* Cross-platform, Free (duh)
* Feels lighter, you don't have to install a massive multi-GB editor, you don't have to remember your accounts in various MS systems and renew your license periodically.
Some nice things to mention about Eclipse, without any comparison to VS (since I have no idea about the counterparts):
* A very nice git integration, especially for staging chunks. Other features are nice too, like seeing line-by-line what code introduced when in the repo history.
* Very powerful content assist. I really abuse my compiler with metaprogramming, using the latest features, but Eclipse can still give me content assist. It also sees through macros. Like, when a macro defines a new type with an argument as the name, eclipse realizes that and highlights that argument as a type. Eclipse's comprehension of the code also helps a lot with navigation, like jumping to definitions or call sites.
* Decent refactoring and source generation support. Not stellar, but good considering how messy these things are in C++, like when a macro's argument is a new type name, if you rename the type somewhere in the codebase, that macro's argument is also updated.
Cons:
* Cmake editor is available as an external plugin, which is somewhat annoying to install.
* The editor can be unstable sometimes. You can see visual glitches, or the indexer can silently crash and content assist stops working. In some rare extreme cases, while trying to get content assist for deeply nested sections of code using a combination of advanced features (like a generic lambda capturing multiple variadic template argument packs) the editor can outright crash.
Was it not just C++17's library part, not whole?
Yes, ever since C++11, Microsoft has been playing this little game of announcing their compiler became feature-complete* (and the fine-print is that it's library feature-complete, which sometimes isn't even possible without the missing language features).
I guess you are right, even C11 is not fully supported. But it appears that they have started to up their game lately
That example actually works just fine on VS 2015 update 2.
I have never used xcode personally, I just see a lot of people using it. I'm surprised it would have bad completion though, isn't it clang based like QtCreator?
CLion will offer to add #include <vector> at the top of your source file if it's not already there
QtCreator does this too (but in a more manual way) : if you use a type which isn't included and right-click on the type it will propose to include the file defining this type.
CLion can automatically generate a skeleton implementation for a member function in a cpp file, given a declaration in a header.
QtCreator does this too : write the prototype of the function, right-click on it and it will generate its body in either your header or a matching .cpp. However it won't intelligently add the return nullptr;.
Also you can write your code inline in the header and by right clicking in the class name you can refactor to move all the definitions to the .cpp.
The current beta version has support for going the other way too: if you write a member function definition in a source file, CLion can add the declaration to the header
QtCreator does this too.
CLion is just great at code generation generally. Getters and setters (albeit with unchangeable lowerCamelCase Java-y names) for private member variables for example, or a constructor taking all members. It can do these inline or separate source and header, as you choose.
QtCreator does this too (add a Q_PROPERTY, right-click, "generate missing member functions").
The others are indeed concerns :)
These are indeed some handy features, i might have to give a proper try to CLion in the future.
Still not an IDE.
[deleted]
The reason why I even ask. For Java eclipse is so inconsistent, that it quickly becomes an unusable mess. Take one of the most popular builders - maven. What would you expect from an IDE that claims to support it? I expected two things: That it knew where is the generated code and that IDE tools would integrate it. None of that. Even better: Most people would advise ditching maven integration and building outside of IDE. Why would I use an IDe then?
/u/sztomi, the announcement that /u/undefinedusername was referring to is here: https://blogs.msdn.microsoft.com/vcblog/2016/01/22/vs-2015-update-2s-stl-is-c17-so-far-feature-complete/
Note that Stephan (/u/STL) was very careful about pointing out that this post refers to the STL being C++17 so-far complete. In fact, the first three questions in the FAQ at the end of the blog post discuss how this is not talking about the compiler. The first question mentions that the compiler isn't yet C++11 feature-complete.
That said, I'm sorry that our message wasn't clear to you. We certainly aren't trying to play a "little game" with our developer community. We are committed to making improvements to MSVC standards conformance--I can provide citations if you like. But I don't think we're hiding the fact that we've still got a ways to go.
Independently verified.
Xcode is bafflingly bad at C++. It has to be either still using their pre-clang stuff for IDE functionality or doing something very wrong because autocomplete and jump-to-definition basically just don't work for C++ (the refactoring stuff doesn't even try to work, which is probably a good thing). YouCompleteMe+CTags in vim are dramatically better, and while YCM is pretty good, ctags is a very low standard.
One of the weirder parts of writing obj-c++ in Xcode is that you can be witing c++ and getting utter nonsense out of autocomplete, but then the instant you type something that looks like it could be a message send you suddenly get surprisingly accurate autocomplete with documentation.
Xcode's main shortcomings compared to other IDEs are the lack of refactoring support and the somewhat limited code formatting options. This is a bit annoying given that Xcode is built on Clang (which gives us clang-format, etc), and the fact that Apple is invested in quite a bit of C++ behind the scenes (LLVM and WebKit, to name a few).
You're right, unix is.
Emacs is an IDE.
Emacs is an OS.
FTFY.
Well, CDT is probably worse than JDT, so if you don't like JDT, I don't know if you'll like CDT. The primary value in the IDE for me is not integration with build tools (although it is nice). The primary value is just indexing and code browsing tools. In CDT I can not only go to definition, but find references, look at inheritance hiarachies, include graphs, call graphs, search my entire codebase for any type (macro, function, enum...), etc. Ultra powerful syntax highlighting (CDT makes great distinctions, like function parameters inside function bodies, different colors for const vs non-const accesses of variables) and partial build integration (build and unit test errors jump to the code, and errors are marked directly in the editor) are just substantial gravy.
I know, it's always pointed out, yet, the headline is misleading every single time. That is not to say I'm not appreciating the tremendous effort Microsoft has been putting into VS in the last couple of years, I really do.
/u/Rseding91 /u/dodheim
Well it doesn't on VS 2015 update 1 and probably on VS2015 (without updates), so my guess is even in update 2, there are some bugs that makes it not standard compliant.
Guess i should update my VS anyway...
In my personal experience, xcode's main shortcomings is incredible buggy IDE with c++ projects. Xcode really struggles with syntax highlighting and code completion with c++. Not only that, it also places breakponts on the wrong line, same goes with warning and error highlighting. And this issue existed literally since version 4.
Yep, we recognized that a lot of developers don't distinguish between the compiler, libraries, and code generator but weren't sure quite how to phrase it. Based on the reaction--here and elsewhere--we'll try to be even more explicit next time.
/u/ripper37, I believe you've just illustrated a case where we fixed a bug to help MSVC become more standards compliant. There are still places where MSVC is not standards compliant--you don't have to guess. But this example you have provided should serve as evidence that Microsoft is working on becoming more standards compliant.
There's a recent blog post here about other work we're doing to conform to and help create the C++ standard: https://blogs.msdn.microsoft.com/vcblog/2016/02/11/compiler-improvements-in-vs-2015-update-2/
I don't deny that and i'm very glad you keep working on it. VC is my favorite IDE. The only problem is portability between compilers when writing code that should work on more platforms/compilers.
I hope you keep up good work and make VC even more standard compliant. Good thing is that you allowed to use clang as compiler too, this way i won't have to maintain couple build systems just to check if my code works on other compilers. :)
Also, i'd love some more refactoring tools if i may propose something. I know there is ReSharper, but some tools should be included in VS itself if you ask me.
I'm glad you're liking the Clang/C2 functionality. We've been seeing more and more people using it for cross-compiler testing.
As for refactoring tools, we've looked into it but there's nothing I can promise at the moment. For the time being using add-ins is the best option.
The worst I’ve ever used is no longer availabile or relevant: the Windows IDE for N64 development.
Instead of a project file, it just parsed the linker file (which you had to write by hand) in order to determine which cpp files were used and where they were located. It would list those paths in a small, fixed-size GUI window. So, if your dev path was too long you couldn’t distinguish between files when you want to open one.
On top of that, it somehow frequently failed to correctly parse these simple strings and some listing would randomly be garbage characters. That meant there were source files you simply could not open. Too bad. If you determined you needed to debug on of those, the work-around was to find some function in a different file that called into the needed file, place a breakpoint in that function then step into the needed file.
For one release it had an off-by-one error in the variable watch window. It would display each variable reinterpret-cast as the type that was declared next after the actual type of the object. The work-around was to locate the type declaration and typecast a pointer to the object as whatever type was defined just before the actual type.
But, hey. We had it better than the PS1 team. The same IDE for them was literally useless for anything besides launching the game on the device. They had to log-debug exclusively.
The worst I've been forced to use was Dev C++ for a computer science. It's old, unintuitive, doesn't get updates, and is buggy as hell.
For me, the best editor will always be (Neo)Vim + some plugins.
QtCreator and VisualStudio, both really high up for me. On the other hand Eclipse and XCode are the worst experiences of my professional life.
Please consider “Unix as an IDE” type setups as well.
A good terminal emulator, tmux, tiling window manager, neovim with plugins, cmake, plus clang tools make for a really powerful IDE like workflow. There’s a greater learning curve and initial effort involved, but it allows infinitely more customization and tweaking.
I have a feeling that this setup is preferred by a large number of developers especially in the linux community. This is what I personally use. After lots of experience with Visual Studio and CLion, all the monolithic IDEs just feel very bloated.
By excluding “Linux as an IDE” type setups from your poll you might skewing your results.
I've got a big problem with this poll. It seems that the result of the poll would suggest that "this is the IDE that people like the best". But people will check the box of the the best IDE among those that they have actually used. So even if all IDES were equally liked by their users, the number of checks on the most widely used IDEs would be much larger. This is probably what accounts for the fact that Visual Studio comes out near or at the top of both lists.
Lesson - beware of benchmarks ... and polls
[deleted]
For me the worst has been eclipse cause I kept having issues with it (i.e. eclipse crashing because the indexer runs out of memory).
I've been using qt Creator quite successfully lately, so I indicated that was my favorite, although I don't have much experience with the others. Only problem I've run into so far is that after I switched to the clang back end, it uses ungodly amounts of ram to function, and code assist is a bit slower now. The quality of the code assist is a lot better though, which is why I put up with it.
Visual studio, for me, is by far the best. Make sure you use at least 2015 preferably 2017, these two new version are much better and handle larger projects pretty good (you need to let it build the initial intelisense database and then you're good). I use it everyday at work with a large code base and run only into minor issues.
I really like IDE features but at the same time I truly hate it when it feels slow and clunky.
CLion with IdeaVim plugin!
I have nothing against Visual Studio, and they have done a fantastic job since version 12 (VS2013). They only get better with each future version.
I just like how CLion is configurable and lightweight in comparison to Visual Studio. And I feel the tools are better designed (refactoring, code generation). If you could couple Clang libtools with CLion, you'd have a serious toolkit.
It's not the worst, but Visual Studio has for me always been a frustrating experience. It keeps freezing up on large projects and IntelliSense breaks randomly. It's not acceptable that you have to keep doing incremental builds to catch compilation errors.
Libclang based IDEs seem far more robust
CLion is by far my favorite. Really nice CMake integration, great customization features and active development. Love it!
Where is turbo c++ :D
Should it really be at "other"?
I haven't used it exentisvely, most certainly not for c++. I just get in touch with it every now and then because I work in app security, but I am certain that Xcode is the single worst IDE known to man.
I can't adequately express how disappointing Xcode is. It's halfway there on so many fronts.
With Eclipse, I expect it to be complete garbage, so it actually surpasses expectations.
I have 2 best IDEs for C++: QtCreator for programming, but debugging in it is unusable for larger projects ... so the second one is Visual Studio for debugging, which is unusable for programming (talking about version 2015 as there is no express version of 2017 and I cannot use 2017 community because of its license terms).
It looks like on both polls results are similar. Both show which IDE is used more often.
It would be better to make a poll which features people like and which one dislike.
My favourite is Qt Creator, though my 2nd favourite must be VS(2015+). I really miss it's in-line go-to definition/declaration feature. It helps a lot when you are trying to figure out how some huge project functions and constantly need to look up what certain functions do without switching from the context of the current file.
no sublime text?
It's a toss up for me. I, personally, use Qt Creator and it works fine, until you need to see the internals of an object of a class, derived from Qt class: it just freezes up, no amount of waiting was enough.
XCode was meh experience for me, I guess I would need more time with it.
Visual Studio wasn't very usable the last time I used it extensively, unless you used Visual Assist, this might've changed since then.
I've never used CLion, but my friend said that it was a resource hog.
Oddly enough, NetBeans worked relatively well, but doesn't offer much functionality and might work worse on larger projects.
Eclipse I've never managed to get working, easy choice for worst one.
CodeBlocks works well for console applications, like for school.
I'm sure most prefer Visual Studio for larger projects.
YouCompleteMe is the only vim autocompletion that works for C++ for me, but it leaves some features to be desired. YouCompleteMe needs to have tabbed insertions like Visual Studio and Xcode.
Clang’s language server tool would be awesome to incorporate.
Any terminal editor like vim is limited by what a terminal can do, but I can’t live without a modal text editor. The vim plugins for Visual Studio really suck. I also hate working in Windows.
If Microsoft released Visual Studio for Linux, I would switch tomorrow. They are moving in the right direction with native support for cmake projects.
What we need is a modern terminal standard. The idea of fusing terminal and editor is a good one. I love the LLVM infrastructure project. And I love the Unix philosophy. Modal text editors are also generally a good idea in my opinion.
I love using VSCode. I have WSL and the integrated console is super convenient.
When I was in university, our "Introduction to Programming" was given in Oberon-2. The IDE that came with it was straight out of hell.
All hotkeys were Mouse button combinations, even the compilation command. The IDE would crash when dragging windows too quickly, and you could get compiler errors such as
"Error, too many errors."
or
"Not enough registers, please simplify expression."
If you wanted to compile a file, you had to place a "marker" in the file, and then click the build command.
It was straight out of hell. It taught me how to code though.
I have been fretting over this the past day, as I am currently coming over to c++ from Python.
I have been using code::blocks, and I actually really like it. But it is also the first thing I tried. Is there any reason I should be avoiding it? E.g., will it not scale well with larger projects? Is it bad for refactoring or debugging? Is there something that is clearly just better?
I like it partly because I work on both Windows and Linux, and it runs nicely on both. The interface is kind of old-fashioned but whatever I'm focused on code. It is very easy to use, not a ton of stuff going on that is confusing.
I was going to start a thread on this topic, but thought I'd bring it up here.
What ? Title written in the past tense and no Borland C++? Heresy !
I'm surprised so many people don't like Xcode, I use it pretty exclusively (although I always set up my projects with CMake). Maybe I should give CLion another look.
Would really like to try Visual Studio, but I can't bring myself to work using Windows. With WSL it's somewhat bearable but after a couple days I just can't stand the many terrible systematic design mistakes. It can't work with any filesystem besides NTFS and (ex)FAT, it's stuck with weird character encodings when literally everything else is UTF-8. And then there are the little things, like having absolutely no decent terminal, weird Window placement on multiple monitors, a total mess of new and old system settings and no way to do that on the command line. At least for that you can actually read a description instead of needing screenshots and translating everything to your locale. Also choco really isn't a match for integrated package managers and knowing my Linux works in whatever CPU you have available
That said I'm really happy with Linux, alacritty, tmux, NeoVim and YouCompleteMe. No matter if I'm coding in Python, Go, C++ or writing a letter in LaTeX it all feels the same and does exactly what I want it to do.
Pffftt idk about u casuals but notepad is the shit
Honestly, the very worst is Xcode. Because for certain projects, you're sort-of forced to use Xcode and don't have a sane alternative. Like for an iOS codebase purely written for iOS (so no cross-platform stuff, no CMake etc.), set up as an Xcode project. shudder. Xcode is so bad, and you can't even easily switch to some other IDE easily to build, run and debug.
I really don't get how an IDE of such a big company with huge resources can be so incredibly bad, both from a usability as well as a functional perspective.
At least on any other platform you usually have a choice of using another IDE, for whatever you're doing.
Worst:
Eclipse CDT
I am sure Visual Studio could be Nice, but I wonder how you guys customize it? Compared to CLion, it is absolutely horrible to customize. I found it non-intuitive how keyboard shortcuts are assigned (I find the simple json file in VScode so well suited, I would love it in VS). How do you add multiple cursor without an extension?
If you guys could share a nice setup of VS, maybe we (other IDE developers) would take a shot at using it.
I thoroughly enjoyed Visual Studio. We used Netbeans in a college class and it was buggy. I wouldn't reccomend the later.
I think, with semantic autocompletion, CTags browsing, and error highlighting, my Vim is basically an IDE at this point.
Visual studio is the worst due to broken licensing (i.e. the free community version wants me to sign into my microsoft account, and the sign-in feature links me around in a loop and never works), unusably slow auto-completion, and annoying defaults.
Can we get some love for Visual Studio Code? The C/C++ extension from Microsoft does an excellent job!
I hate VS when messes up .*proj and .designer.cs files just by changing one little thing... oh, it seems that you clicked on a button in your form... let me flip over all the lines in the designer file so that your commit is messed up... -.-
I haven't seen much about C++ builder on here so..
I've been using Embarcadero C++ Builder for about 5 years now. I have a love/hate relationship with it.
Pros:
Build Applications easy and fast
easy to use
has most things you would expect from and IDE plus some
multi platform (I don't use this feature personally)
Cons:
Linker bugs
Only supports full C++11 with clang based compiler
Really slow compile times with clang compiler.
lack of third party library support for bcc compiler
I use visual studio since in recent years it has become pretty ubiquitous for game development. UE4 and Unity both use it as a default and primary editor.
What takes it from "okay" to "good" (but not great) for me are the addition of VsVim for general code navigation/editing and Visual Assist X (or VAX for short) which is an improved intellisense replacement.
Lastly at my workplace increadibuild and its visual studio plugin helps to massively speed up build times.
Here's why I say good, not great:
For one example: With a recent task at work I've been discovering that project files and solution files have a bit of an ugly relationship. For example if you open a project in visual studio and build it, it may build differently than if you open the solution and build it because even when building individual projects the solution-wide configurations meddle with the build process.
There's also just a number of annoying UI windows. Visual studio has a heap of them, but some have really annoying rules regarding resizing, always-on-top, or other window settings which get in the way.
All that said, I don't think there's a better dev environment for what I do. So it's not great but it's good and the best available.
visual studio should be fine, but with its shitty intellisense makes it the worst.
Best: VS >= 2010
Worst: VS <= 2008
Eclipse gives me testicle ache
QtCreator has been amazing for me. C++ is just a hobby for me, and Qt just feels great to use. The IDE lets you do everything by hand or use the designer tool if you're lazy or just want to have a window done quickly.
I knew what the result for "worst IDE" was going to be, and that it would be the "winner" by a long shot, even before I saw the results...
vim/emacs/vscode(meh).. i stopped using real IDE's long time ago
I wonder about that "other"... quite popular. What is it? C++Builder? stuff for embedded?
Edit: wow, XCode!
I'm sorry but if you use vim/emacs (even nano) you've cucked yourself. Using your hands to hammer nails doesn't make you talented, it makes you a fool. Use the right tool for the job ❤️
vim and visualstudio express(2015, 2017).
vs express edition doesn't support vim feature(vsvim), so i am implementing my own editor.
What world are you people living in? Xcode is BY FAR the best.
What was the N64 IDE called? And are you saying the PS1 used the same IDE? I'm interested in seeing what it looked like.
Did the N64 have an SDK or something? Or did you just write everything you needed yourself?
Sounds like the SNSystems debugger. But that wasn’t an IDE, really.
Unless you’re talking about the CodeWarrior IDE, though I’d be surprised if they shipped something with an off-by-one error, at the same time automated software updates weren’t a thing back then either, so I suppose it is possible.
I never did N64 professionally, but the PS2 tools by SNSystems were still fairly Windows 3.1 looking back in 2001.
Which games did you develop?
I have a friend that's been messing around with the N64 C SDK. The only compiler provided is ancient at this point, and super buggy. In a function, you must declare all of the variables at the beginning, before anything else, or else the compiler will throw an error.
I learned c++ with DevC++! It's my pick for worst IDE as well
I learned C++ with Dev C++, and back then (more than 10 years ago), it wasn't too bad.
Same here, luckily the professor let us change it as he knew how shitty it ~~was~~ is
I also like to use terminator to have multiple displays and I use htop to monitor how the program runs
Really? Xcode is rock solid for C, and VS is complete garbage to me, it doesn't even suggest variables as you type...
like it'll show you but it just gets in the way and idk it's VERY irritatng.
what I dont get with people that use vim or similars is how do you guys refactor your code on large projects. I'm sure multi-cursor edit is simple enough to implement and there's probably plugins for it. But when it comes to renaming an interface in a large project, I would be kind of scared of doing a simple string search/replace without any compiler help or without being able to pick and choose which of my "hits" I actually want to replace and which I want to leave out. It's easy enough on Intellij and maybe other more bloated IDEs, but I dont know how vim/emacs guys deal with this. Also, moving something from one package to the other is a piece of cake with Intellij, since it re does your imports for you anywhere you were importing and using your class.
Very true. I'm a KDE developer so by all rights I should use KDevelop or QtCreator exclusively. But those weren't available when I started so even now I'm still a "Linux as the IDE" developer, with Vim, a Konsole with a gazillion open shells, and a good web browser.
I use Unix as an IDE (mostly) but can't say I love it or anything. I waste so much fucking time playing the why isn't neovim working properly game that it drives me insane.
Also, I fucking LOVE autocompletion. The better the autocompletion the happier I am. I view it as documentation-while-you-type more than save-you-key-strokes as I frequently work on libraries/languages/projects that I'm not quite familiar with and so those little bubbles of docstrings and extra potential functions/methods I could call are educational while I work.
That being said, YouCompleteMe is probably the worst completion system amongst Xcode/Atom/VSCode/VisualStudio/Clion.
people will check the box of the the best IDE among those that they have actually used.
This problem is unique to software developers. Everyone else will happily vote for something they've never seen.
V C P K G
Eclipse based IDEs get much better if you have lots of RAM and you make an effort to go in and edit the launch files.
The OOM issues are solved by editing eclipse.ini and giving a couple GB's of memory. Before switching to visual studio code, I used Eclipse CDT to work on the chromium codebase (several gb's of code) without issues.
If you want to give Eclipse CDT another try you can check this https://chromium.googlesource.com/chromium/src/+/lkcr/docs/linux_eclipse_dev.md#Setup
Do you use any addons like Visual Assist X or Resharper++? I have always wondered how a big flagship product like Visual Studio can be so bad at code surfing.
Have you done lot of customization to your key shortcuts? For me they are horribly inefficient, hard to use and unintuitive. I never bother to spend multiple hours just changing shortcuts. And have they finally made mouse back&forward keys working?
I prefer QtCreator
I second your decision but are you not looking over the times when Intellisense just stops working?
I'd recommend Visual Studio Code with the C/C++ extension. The extension will reach 1.0 some time in March or April
CLion lightweight? It feels much slower to me
IntelliSense is just dumb at times. Recently I discovered that in large header files IS would underline every function as "not implemented in cpp file". Turns out, if there are any classes/structs/enums defined inside of a class they need to be defined AFTER the constructor and the destructor. Now I do that, and IMO it is terrible, but it is better than IS not working.
To be fair I haven't had the opportunity to try VS2017 yet, this happens in VS2015. Maybe IS is better now.
Yeah, visual studio is by far the best but also the worst at the same time...
I don't like VS for multiple reasosns
pushing a lot of non-standard features (why the fuck precompiled headers are from #include "stdafx.h"? Other compilers just use commands) (Warning 4996 - some standard functions are marked as deprecated even though they are not)
bloated, installs and launches long (Eclipse was faster)
no good themes - seriously - I have browsed most of the market and almost all themes still leave 50% of the code white. Eclipse has >30 colors, including setting different colors for overloaded and non-overloaded operators, parameters vs members
gitignore for VS has over 100 lines
Windows only
What do you mean by these incremental builds?
Once you break Xcode’s code parsing there’s no coming back. Xcode absolutely grinds to a halt on large codebases on my 2017 MacBook Pro.
Xcode is clearly designed more for iOS app development. Xcode punishes you for wanting to write C++.
Man, I'm glad it's not just me. Took forever to figure out XCode, has to be the most unfriendly user interface I've used.
Sublime is awesome, but it's really more of a text editor than an IDE.
it just freezes up, no amount of waiting was enough.
Encountered this strange issue as well, though it doesn't freeze up for me, just the debugger inspect view becomes non-interactive until I move to the next instruction.
All hotkeys were Mouse button combinations
oh good lord that sounds horrible.
Is it bad for refactoring or debugging?
From a good IDE, you should expect the ability to confidently rename variables, and maybe generate getters/setters. Beyond that is up to you, really.
Is there something that is clearly just better?
As far as CodeBlocks alternatives go, I'm hearing good things about CodeLite. Haven't tried either one myself though, I use QtCreator.
I honestly don't know how someone feels this way about JetBrains products. They are by far the best IDEs I have ever used. They are very customizable and literally every action is key-bindable. It's like vim, if you use it once, you get mad because you can't figure out how to quit and you tell everyone it sucks, but if you actually figure out how to use it is light years ahead of the competition.
With that said, CLion is a bit limited because it only supports CMake, at least the last time I tried it, so that may be a deal breaker for some.
I couldnt disagree more about JetBrains products, they offer a quality that many others only can dream about, it has every i need and more, it is well integrated and if something is lacking you can develop a plugin
It uses more resources than others ide but it is nothing critical, is responsive as any other Ide on the market, so what? I dont really care about the extra ram and if you want to use less CPU you can activate the power save mode
Even Google noticed tha high quality and switched from eclipse to IntelliJ for Android
Nice to know someone shares my feelings for JetBrains stuff. And for Java, now VSCode has proper Maven support with the Red Hat plugin ill never have to touch IntelliJ again... I hope...
I like and use CLion on my machine at work on all my projects. It can be slow and needs stout hardware to be useful. For other OS projects I use codeblocks on my slower systems.
I think people don’t like Xcode since it’s not a clone of Visual Studio. It just takes some time to get used to.
Pffft, real men pipe shell echoes to source files.
Xcode project files can be built from command line. You can use whatever IDE you wish with them, as long as you either import the Xcode project file or make a plugin to expose the file structure of the project to the IDE. In most IDEs, it’s not super hard to do.
I use visual studio code: it is multiplatform, has a debugger, understands c++ enough to make good predictions, has a pretty decent project manager, there is not much else lacking. Furthermore, I can use the same IDE for typescript or python with best results.
u/tjgrant is right. It was SNSystems. Was it an IDE is a semantic argument. I used it to edit and debug code. That’s good enough for me.
The N64 had an SDK. But, it only did the most basic stuff. The most important feature was the RSP (GPU) microcode from Super Mario 64. You were able to write your own custom microcode to customize how graphics were rendered at a very low level. But, SM64’s was good enough for many games. So, many games shipped with it unchanged.
For all intents and purposes, the software no longer exists. For PS4 development everything is integrated with Visual Studio. Thank God.
SNSystems have got soo much better so then.
That was the story of working on Paperboy for the N64. It was my first game right out of school. After that, I moved to engine/content pipeline work. You can read more stories from that experience here.
Yep. That's classic C. All C was like that back then. And, C++ was considered too slow and complicated for gamedev at that point. Fortunately, the lead engineer where I worked had a compiler background. So, he got a C++ compiler working for the PS1 even though Sony would not provide one. I don't recall if Nintendo provided the C++ compiler we used, or if our lead brought up that one too.
In a function, you must declare all of the variables at the beginning, before anything else, or else the compiler will throw an error.
That's all the language allowed for prior to 1999.
Renaming an interface is indeed a bit messy. There are plugins for that, but I had a better experience with Visual Studios built in rename. On the other hand most of my interfaces are only used in 2-5 files, so even without a plugin renaming is quite fast.
Other refactorings, like changing function arguments, are a lot easier to do for me in vim. Change the function, hit compile and your at the first compilation error, make your changes, jump to next by either recompiling if the change produces a lot of errors (like templates) or by jumping to the next item in the error list. You can navigate the error list in Visual Studio, but it is a lot more work as compiling doesn't automatically jump to the first error. Is there a better way to do that in Visual Studio, where you need manual work for the changed argument?
With proper semantic code search this isn't hard in Vim. I can jump to the definition of whatever's under my cursor with two key presses. I can pull up a list of all references to a symbol similarly. Moving back and forth through the list is a single key press.
With my particular keybindings, to rename an interface, I'd populate a list of references with <space>v, rename the first one with cwNewName<esc>, then F2 to jump to the next reference. If I want to change that one, . will do it. Otherwise F2 again to jump to the next one. Repeat until I've reviewed all the spots.
This all did take a bunch of setup, but I'm pretty sure it's faster and easier than Intellij once set up.
We use tools like rtags: https://github.com/Andersbakken/rtags
Literally everything you like about your IDE can be done in a good Emacs/vim setup.
Vim unfortunately doesn’t even come close to leveraging all the functionally made possible by LLVM clang-tools and related programs and libraries.
Because it’s running in terminal with ncurses there are some limitations, but you can still do some really powerful things with clang-tools.
Clang language server has the potential to make the ultimate auto completion engine.
I wrote a small neovim plugin that controls lldb and allows me to set breakpoints in vim directly.
I envision a modern terminal standard that allows more than just grid based text and curses style graphics. Imagine if you build a modal editor that combines that with all the functionally that the llvm libraries expose, but that’s the classic problem of
Better IDE -> better editor -> better terminal emulator
sed & awk. I can't say I'm in love with the solution, but it works.
There are plugins (such as vim-refactor), but one of the best tools is eclim. It lets you use Eclipse features in Vim. It's not as smooth as using something like Eclipse directly, but it's a small price to pay for the increased efficiency that Vim gives you.
I like cscope. Vim can read its tags and so you can jump from any variable name to its definition; from types to their class definitions; from function names to their definitions… you can do symbol usage lookups, all kinds of different things. I wouldn't try to refactor a complex C++ codebase without cscope and in fact I usually set up a post-checkout git hook to rebuild my cscope tags in the background. Makes Vim really feel like an IDE to me, more so than pretty much any other plugin. Although a Vim-integrated debugger would blow my mind.
If you're using neovim, you should be using deoplete along with LanguageClient-neovim and clangd. It's significantly easier to set up than YouCompleteMe and works much better in my experience.
I didn't mean to suggest that was my only problem with it, I just wanted to give an example of some of the problems I had. Sorry if that wasn't clear on my initial post.
Some of the other problems I had: problems with certain c++ language features (c++11,14 features), autocomplete not working on certain types, go to header sometimes going to the wrong file etc. Some of these had fixes, some did not. At some point I had enough and decided to try a new editor (qt Creator) which didn't have most of these issues.
Note that this was back in the eclipse Luna days. I hope they've fixed some or all of these issues by now.
I suspect Microsoft may have some sort of deal with the developers of famous plugins like Visual Assist (Whole Tomato Software) this is why the code refactoring stuff sucks so much with VS compared to other IDEs, so that everyone buys plugins.
No I don't, a few other colleagues do though along with another plugin called "FastFind". Visual Studio 2017 comes with a whole new suite of improved search features, better filtering and more filtering options in intellisense which make it much easier to browse code.
EDIT: I have tried Visual Assist X but on a large scale project it just eats up loads of memory and boot times are really slow.
I haven't found VAX necessary since VS 2015 (and 2017 was even better), before that it was a must-have though.
Not really, it depends on how you like to work. Here's a sum of what I use frequently:
CTRL + F - find in current file
CTRL + SHIFT + F - Find in entire solution/project (can use regex here)
CTRL+TAB/CTRL+SHIFT+TAB - Switch between tabs
CTRL+Shift+V - Cycle paste history
Ctrl+; - Highlights solution file find (very handy)
F12 - Go to definition
Worth noting and something I thought was integrated into Visual Studio but I actually use this plugin: https://marketplace.visualstudio.com/items?itemName=SamHarwell.MouseNavigation
It allows you to go back and forwards from where you were previously editing/searching (it's a different shortcut for ctrl++ ctrl+-)
Oh god that's my fetish. I religiously sync my dotfiles and maintain custom key bindings for everything. I'm one of those people whose computer is unusable by others because the keys do the opposite of what you expect.
For me it feels like that, because you can comfortably work in CLion with just one window with code and line numbers, while in VS you always distracted by unnecessary functions to the point where even keybindings configuration becomes impossible.
Maybe startup by a few seconds but the actions and manuevering is quicker for large projects
Turns out, if there are any classes/structs/enums defined inside of a class they need to be defined AFTER the constructor and the destructor.
This is a great tip, as I've run into this problem as well (I tend to put the enums at the top)! Thanks.
Well it's the trade off I guess. Should be fixed nonetheless
bloated, installs and launches long (Eclipse was faster)
Have you tried since they introduced the new install experience? Ever since that first installation and launch have been at least 5x faster for me.
gitignore for VS has over 100 lines
Wouldn't you have all the platform-specific build files such as the solution in a separate directory such as "build" anyway?
Hitting Build regularly during editing to see if the changes made compiles.
one could say the same for vim and emacs, but they are in :)
and vim, emacs and sublime all can get quite close to a full blown IDE with the right plugins
Most likely because the debug symbols for Wt aren’t there, and likely the sources aren’t either.
Thanks for your thoughts here. I have code::blocks up, and it works, and I think I will just keep using that until I am good enough to appreciate the difference. :)
I don't have any strong issues with JB IDEs regarding the usability/combustibility, but god they feel painfully slow/laggy! Doesn't matter whether I'm on a mid-range i5 laptop with 6GB of RAM or on 4GHz quad core Haswell Desktop with 16GB of RAM, the delay (in typing, completion, highlighting, etc.) is still noticeable. And they are pretty resource-hungry to boot.
JB products are just so damn confusing. I haven't found any feature of a JB app that would make me want to use it over vim.
Wow really? I love JetBrains, especially CLion, I feel like most C++ IDE's are extremely convoluted and hard to manage/work with;
Setting up toolchains etc. in CLion is just so easy, that's the main thing for me.
I have to admit though, it's slow as fuck and JB should give up on building/using their own parser.
I think it must be something like this. IMO Xcode's UI has always been better than VS and some of the most significant improvements in VS for me have been because they introduced features from Xcode, such as single clicking to view files and the ability to usefully break windows out of the main VS window.
That doesn't really help, unless I am misunderstanding. I think what you mean is: I can use whatever text editor to write the code - but I have to build with Xcode on the command-line. If the build errors, the errors will not show up in my editor/IDE. I will have to read the command-line and manually go to the file's location in the IDE. This is cumbersome, idiotic, and unnecessary manual work.
And what about debugging - after I've built the iOS app on the command-line, can I run it on the phone using the debugger in, let's say CLion? And stuff like breakpoints in the IDE and variable watch window will work flawlessly?
And for sure I am not going to write a plugin to make this work. I have to work on my work project's code, not spend time on developing some IDE plugins. This is why there are IDE developers - they are supposed to give me, the user of a IDE, a good IDE that makes me productive in my day job.
you can also do something like so.
vim `grep -iRl "thing2Change" ./directory/to/search`
And then in vim itself do the following:
:bufdo %s/thing2change/thing2changeItTo/gci | update
It does sound doable but i still dont think its easier than intellij where you can review all your changes and just click on the ones you want to keep. But maybe i just need to see someone with a workflow like yours in action. Personally i have to pair at work so the company kind of enforces an IDE and its easier to get everyone up to speed with intelliJ than it would be with an advanced vim setup (when the configuration is actually so personal from my experiences so far). Nevertheless its interesting to know how others work and ive definitely attempted to get proficient with vim.
I’ve never seen someone make this assertion who has actually mastered an IDE. Sure most people have tried them but if you haven’t used one on a massive code base while leveraging advanced approaches like conditional debugging or structural refactoring, you’re just not making a fair comparison.
Conversely I’ve used vi and vim (yes both) for 25 years and as a test of my own biases refused to allow myself to use IntelliJ to write some Go recently. I easily sunk 30 hours of messing with configs and plugins including the excellent vim-go and rtags. After weeks in that setup, it wasn’t close to IntelliJ. Not by a country mile. So no, “literally” everything can not be done in a good vim setup and you’re misusing the term “literally”.
Rtags is great! All the power of IDEs but without the bloat
rtags is so weak compared to what a real IDE provides that it's not even funny
:h terminal-debug
Pretty new feature. I only played for 5-10 minutes with it. Looks good though.
Last time I checked out the development status of clangd it was still missing some important features. Thanks for the reminder. I’m gonna take a look at it again.
It has huge problems with file includes over network.
File includes over network? Why would you ever do that? :)
But on the subject, I think Resharper takes a long time to index your code. It can be pretty tiresome. But once it is done, Resharper is the best choice for me.
In 2015 and 2017 they started integrating a lot of the tools offered by these plugins.
Wouldn't you have all the platform-specific build files such as the solution in a separate directory such as "build" anyway?
Yep, my gitignore for VS is just:
/_build*
Works for UNIX too!
Maybe managers in the team were bad with it. I would say yes, they commited dlls and other binary stuff.
Ah, you mean, VS intellisense is bad compared to some other IDEs? Yes, true.
Don't hit build, hit Compile though :-)
Suppose you're right, didn't think a lot of people actually used sublime as an IDE
Are you on ssd or spinning disk? I've experienced no delays since I mostly use ssd everywhere and I've used jetbrains ide of some sort daily for the last 5 years. But one laptop at work had spinning disk and idea was insanely slow to start, like 20 minutes on that one.
Although I have to say clion is slower than idea/pycharm and was even slower a year ago. Seems to be getting better though
CLion has great design, but it becomes very veeeeery painfully slow with a project with a few hundred thousand LoC.
After trying about a dozen C++ IDEs and having no clue how anyone can stand most of them (especially Eclipse and NetBeans, which, IMO, are terrible), I decided to shell out for CLion, because for me, it's easily the best.
You can build with Xcode on the command line, yes, and the errors from the compiler should be understood by any programmer's editor worth their salt. You basically fire off the build command via the editor's "command" facility, the editor then displays the output and links errors to source files and makes them clickable. Nobody expects you to do it manually - that's why good programmer's editors integrate with error message outputs, and this is very much a solved problem.
Xcode is a decent IDE - if you don't like it, you've made a choice to invest in something else...
The question was about c++, not go. I have yet to see a feature in a c++ ide that I can’t do the same for in Emacs. But you’re right, I’m only dealing with 10-100k loc codebases, not millions, so maybe things are different at that scale. I’d love to know what I’m missing though so I can implement it.
No one I've heard make this assertion had actually mastered vim/emacs++ setup.
If you need an IDE to refactor your code without error you should really revaluate your career choices. And visual debuggers are nice, but if that's what's holding your productivity back, your coworkers are reevaluating theirs.
Put another way, you spend the vast majority of your professional time reading and editing code; to optimize productivity your tools should accommodate this. Massive renames are a corner case, and are probably worth going through extra review. If they're not, you're definitely doing your job wrong.
File includes over network? Why would you ever do that? :)
Someone's never used Clearcase Dynamic Views for version control...
File includes over network? Why would you ever do that? :)
IT and Engineering were in different cost centers so cheap NFS servers that add six hours to the build time meant big bonuses for IT!
I don't think you should really blame the IDE for incompetent people being unable to follow a simple process. Of course it passing a code review before being committed is even worse.
There's so many packages for sublime that you can turn it into an IDE
SSD on desktop, SSHD on a laptop. Helps with start up/indexing, not much with general latency.
Wtf are people writing this much code for? I've never had a project larger than like 5000 lines. These are for APIs with 10-20 models and controls with helper functions. Not counting 3rd party dependencies
Ooh okay, yea that's right! That's a good motivation to try a couple of other things on Mac and see whether it works decently, thank you very much! :-)
I am definitely spoiled by Visual Studio (with CMake, not VS build), nothing comes close to it in terms of productivity and debugging tools.
Does vim support a clang-based code model? If not, then it won’t be able to do a lot of things trivial in IDEs with a full C++ parser (e.g. those using clang). C++ parsing is anything but trivial.
Not who you're replying to but, in my experience, it isn't that I need an IDE to refactor my code for me. I just want it to do it for me so I can get back to coding. Same for the visual debugger. I work faster with it than without it.
As with most jobs, you should be using the right tools for the right job. For many, that is an IDE provided by someone else as opposed to a custom environment with vim/emacs/whatever.
You probably shouldn't so quickly dismiss someone's opinion and imply, because they disagree with you, that they're terrible at their job. Maybe they'd be terrible at your job or in your work environment but so what? Their experience is going to be different from yours and that doesn't make it demonstrably right or wrong. Just different.
Doesn't sound appealing...
Urgh! Theres an unpleasant flashback. I used CodeWright and Clearcase Dynamic Views at my first place of work. A horrible combination of trouble and problems. Just don't do it, folks
There was very abnormal review (people who did it cared much more about indent and whitespace instead of what the code was actually doing). The most sad part was that there were no restrictions when compiling. Several thousand lines of warnings every time you compile.
It may depend how many new C++ features are being used. VS is by far my favorite IDE, but there are generally a few features that I know they haven't yet fully implemented, both in terms of compilation and Intellisense. The development experience goes best if the code evolves along with the ongoing dev/debugging experience, whereas if people aren't exercising IDE features throughout development (e.g. if the code was written in a text editor, or different compiler was used) sometimes certain things just aren't recognized (although I don't know the situation over the past few years - I was last using it heavily around 2014). I've also had to 'correct' a project by reorganizing the include file strategy for a project that did fancy things in its makefile - otherwise, lots of things weren't working. That isn't unexpected, but it can happen.
Edit: I'd rather see more complaints about my post along with the downvotes. I'm surely not the only one who worked on projects that used SFINAE, constexpr, Barbados templates, etc.. which initially only worked with other compilers (it's common to use VS for embedded or game development even when Windows isn't a production target - because it's that good) and then were sometimes supported by the compiler before Intellisense. So certain features were either avoided entirely or used sparingly for a better development experience.
My current projects have a third party code base of close to a million LOC. Thanks AUTOSAR.
5000 lines is the size of some functions in some projects, I work with. No, your functions shouldn't be that long, but sometimes code grows organically with age and requirements. 5000 lines is something I would consider a small project (although line count is not the best measurement for complexity).
Writing just 'hello world' with some modern graphics APIs is going to get you over 5000 LoC. Anything where performance is critical tends to have pretty big code bases in my experience. For a game engine honestly 50-100k LoC probably is what you would hit for a small custom made engine, just to have all the necessary features implemented reasonably.
There is VS for Mac! I’m not talking about VS Code.
Vim and emacs have extremely good clang integration. Which shouldn't be a surprise because all of clangs tools are accessible on the command line.
Yes there are clang-based plugins for both that do completion and/or semantic editing. For example with rtags I can do your standard find definition, find references etc as well as proper semantic refactoring across an entire project. There are also lsp-based plugins so you can use things like cquery.
You missed the point: why do you even need to rename things across a million lines?
a) Failure of Encapsulation: local changes should have local effects; why is one change cascading over millions of lines?
b) Failure of Planning: your global API had the wrong name or signature. This should be an extreme corner case -- how often do you fail to account for something used a million times?
c) Failure to show Restraint: a global change for cosmetic reasons; maybe your time is better spent not changing "Init" to "Initialize" or vice versa.
Every time I've needed to do a large refactor it was:
d) Language or Library change: IDEs don't necessarily do this for you, and if they do there's probably a clang tool you can use from the command line.
I can write a sed or other script to rename global API, or change NULL to nullptr, and admittedly that probably takes a couple minutes more some menu item, but the entire point is that such an exceptional case it adds up to maybe a couple hours of work per year? You're optimizing the wrong path. I spend almost all my time finding and making small changes, and an light, scriptable editor optimizes that case very well.
You may not like the implied condescension in what I said, but notice the first sentence of my post was the same as the parents. I didn't come here to tell people IDEs are bad, but I replied to someone who came to tell people unix editor++ was (because he spent 30 hours trying, as if you could "master" an IDE in 30 hours). If you want to put other people's tools down, be prepared for a defense.
If you want to talk about visual debuggers, or how IDEs hide things from you that you should probably know, I'm game for that discussion too.
Edit: we can also discuss how people who use vim report higher wages than other IDEs empirically, or anecdotally the most talented developers prefer custom low level tools to IDEs.
Those are some really sucky APIs then. It takes well under 5k lines to implement a hello world running on top of raw OpenGL ES, with state-of-the-art shader-based font rendering, where shader draws splines and fills them. With a toolkit, similar functionality may fit in a couple of lines. Literally.
Unless I missed something, "VS for Mac" doesn't even have C++ support. It's a very, very light edition, completely different from Windows VS.
Or did I miss something in the last half year?
My intent was not to put down someone else's tools. If that was the message that came across, forgive me. My intent was to suggest that experiences vary across the industry. In my experience, I need these tools because of legacy code.
I've spent my entire development career working on software which was developed by physicists. I've also spent my entire career working to bring "best practices" to those code bases and in some cases that requires large refactors which benefit from the tools made available in the IDE.
I agree that in the ideal world, you shouldn't need to modify code across the entirety of a million LoC project. I don't work in the ideal world.
The current project I'm working on was first released in 1990. I don't know if there are parts that still exist from then but I do know that for the majority of this projects life, it was maintained by one person. They created a very good product in terms of its usefulness for users, but the coding practices used were informed by their times and, as such, need some major work to bring forward.
With that being my experience, it makes sense for me to want an IDE which provides whole project refactoring tools. If I had been working on different projects, I'd certainly use the tools appropriate. I am, in no way, implying that everyone everywhere should be using an IDE.
The entire point of my post was, in fact, to suggest that instead of returning someone's dismissive/insulting attitude, you should strive to rise above and not fall into fighting at their level. But I could also just be bored at work and browsing reddit when I should be doing something more productive and decided to pick a fight.
I had not heard that about the wages with regards to editor preference. I couldn't find anything after a few quick google searches but I feel that there are probably some interesting correlations to investigate.
A few random thoughts:
Don't confuse correlation with causation. I'm not surprised that people who use vim earn more money, it's not easy to learn and master it, these are the kind of people who seek challenges, want to learn, coding is their passion... they probably would earn higher wages even if they didn't use vim. It's probably more their mentality that makes them more efficient than their editor of choice (from which they will squeeze every bit of productivity). A good IDE has easier learning cure so more people will choose it (it's the path of least resistance). Some people might be just as productive or even more than the ones using vim, but the mass of less experienced people will bring down the average. (Without knowing more about the statistics you are citing I cannot say more.) Using vim might not make you a better coder, but probably being a good developer is a prerequisite to using vim.
I don't use vim, it's not just that I'd rather not spend the time learning it instead of doing/making stuff, but I cannot afford the time to train new employees to use it. (If someone can, they are free to do so.)
So you might be a genius who is working on radically new stuff, or someone could make an argument that if you spending most of the time writing code, then you are doing it wrong. Instead of reinventing the wheel you should research and use already written libraries... ;)
Not sucky APIs, just ones that give you way more control if you need it. I'm taking specifically about Vulkan and DX12.
Yes, unfortunately it's for .Net development only and doesn't support C++. And yes, it is a different thing than the flagship VS. For .Net development, VS for Mac is quite nice though.
My comments were to the parent's reply alone -- how vim with plugins can do everything an IDE can, although with different tradeoffs. My clang or sed based script takes longer to write, but it also serves as repeatable documentation of the transformation set used. The transformation itself can be code reviewed, and repeated again in the future.
By all means use whatever tool is right for you at the time, but let's not pretend IDEs represent a missing master weapon elite developers somehow volunteer to forgo. The parent talked about million line code bases, but I guarantee you Google doesn't use a developer in an IDE to make sweeping company wide changes.
Lol.
I've never been confused by correlation or causality.
People who are good at their job use vim because it allows them to code at the speed of thought. It's about ergonomics.
Good tools doesn't make the artist, and good artists aren't held back by bad tools, but good artists seek the tools that don't get in the way or slow them down. This had absolutely no relation to using libraries.
Those are not that different from WebGL or OpenGL ES... Perhaps the hello world you have in mind is not the literal "display Hello World text" but, say, displaying a scene of some sort. That gets complicated real quick, you're correct.
It takes you a few hundred lines of code just to set up GPU device state that would be the equivalent of glBegin and maybe 3 lines of code. Displaying a triangle with no vertex buffers takes around a thousand lines of code. There is no driver state machine, you have to specify all GPU state yourself. I'd say it's pretty different.
Hmm, you’re right. I forgot the time I wrote this code and then just reuse it from the library. Yep, it’s on the long side.
QtCreator has everything I need: autocompletion, column edition, refactoring to rename vars but also implement virtual functions, move stuff from header to C, create properties. Powerful search using ctrl+k, switch between h and cpp.
I mean what else do you need that is not in QtCreator?
Visual Studio. There are dozens of us! Dozens!
Spacemacs with ycmd for auto completion and error checking, with rtags (or perhaps, soon, cquery) for indexing. All libclang based, all highly performant and responsive. Outside of C++ specific stuff, it has the best vim emulation, the best buffer/window/workspace management, the best git extension, and the best textual search/manipulation (powered by things like helm and helm-ag) of any editor I've used.
[deleted]
I use Sublime for all typing, though not really an IDE
Emacs.
Code:blocks is still my goto IDE. Auto completes, decent debugging interface, themes, etc. Not the most fully featured or sleek, but still competent for what it does imo.
QtCreator > other C++ IDEs. Clang-based online fixits are a godsend and the locator takes 1/100th of the time CLion's locator takes to populate its index.
WTF. vi gets its own option but not emacs?
Lame-ass anchoring.
Clion, it worths every cent
QtCreator. It's the only FOSS one that's good in my opinion.
Visual Studio, because it is an amazing tool for writing software. From within that one tool you can edit, do version control, change your build settings, build, run, and debug - it's an easily installed one-stop shop for all things programming.
And once the code is running nicely on Windows I then check it out on a Linux machine, and do any necessary local editing using 'ed'. Because I'm not one of those sissies that need an "improved", "visual" editor... ;-)
For small test projects, I tend to use vim or even gedit. For bigger ones, I used to use Eclipse, but I've recently moved to KDevelop. It keeps getting better and better.
By the way, if you're willing to try it, get the ~150MB AppImage from the official site. That's what I use because I'm too lazy to compile it and the OS repos constantly lag behind :D
Qt Creator, for both C and C++ (even when not using Qt at all, actually.)
This allows me to use it on all platforms I need/want to support. Just copy the project over and I can build and debug right away, in the same IDE. No need to maintain separate VS, XCode, and Android Studio project files anymore.
Not everything is rosy though. If you have Java code in your Android parts of your app, it's a bit of a hassle. But for Windows/macOS/Linux/Unix-likes, it's a huge time saver.
I've heard somewhere that apparently there's even Linux kernel developers out there who have switched to Qt Creator for kernel code development. I hope it's not an urban myth.
Visual Studio. Just about perfect for me coverall, but my favorite feature is IntelliSense. I've seen a bunch of other IntelliSense-like features in other editors (including VS Code) but they all seem to be extremely context unaware and rarely seem to do more than just suggest recently typed words.
No idea why people complain about VS being slow. Even on a solution with >200 projects, it's still fully usable.
Visual Studio in Windows. Kdevelop at home.
Visual studio. I learnt to use C++ in an IDE and have stuck with it. Over the years I've looked at the text editors that some people are always raving about (vi, emacs etc.) but I have never been able to convince myself that it's worth devoting a significant amount of time to learning how to use something that has fewer features. And at the same time losing truckloads of convenience like good debugging, disassembly, intellisense, version control integration etc.
I use emacs.
QtCreator is fast and reliable.
It does the job pretty well.
One of by biggest pet peeves is people waxing eloquent about how they only use a text editor and IDEs are a waste of time and resources, and then complain that they don't like auto because it makes it hard to figure out the type of the variable. A good IDE (for example Visual Studio) has no trouble showing you the exact type of the variable when you hover over it.
Please feel free to use your text editor. But do not try to cripple C++ to conform it to what your tool can handle.
I use NeoVim with YouCompleteMe under Arch Linux with i3 tiling WM.
I also use a lot of the LLVM tools directly from terminal.
Interface responsiveness is very important to me. Check out alacritty https://github.com/jwilm/alacritty
It’s a GPU accelerated minimalistic terminal emulator.
I haven’t found anything that beats this combination performance-wise.
For most projects, kdevelop. For QT protects, QT Creator. For Windows versions of my kdevelop'ed projects, Visual Studio 2017. For macOS anything, QT Creator.
Visual Studio is the least clunky C++ development experience that I've used.
QtCreator has everything I need: autocompletion, column edition, refactoring to rename vars but also implement virtual functions, move stuff from header to C, create properties. Powerful search using ctrl+k, switch between h and cpp.
I mean what else do you need that is not in QtCreator? Just curious.
Surprised that Atom isn't on the list, it seems to be pretty popular with developers - I use it for PHP and C/C++ (with plugins to make it closer to an IDE).
Visual Studio. The debugger is just unmatched.
I always feel sorry when I see colleagues using qtcreator for debugging.
I just only tried this briefly, but it seems very promising
https://github.com/cppit/jucipp
Visual Studio for Windows, Qt Creator for everything else
Xcode is a good choice, it comes up with clang as default compiler.
CLion!!!
If not CLion, then CMake/gVim.
Visual studio + visual assist on windows.
Visual studio code + a number of plugins and scripts for mac
I will get ranted and down voted but I use Geany mainly for all my programming. Including C++.
After 24 hours the poll collected almost 1,300 responses.
Thanks everyone for voting and commenting.
As promised I will post the results soon.
I use Visual Studio 2017 (exclusively with the new CMake facility) in Windows + Resharper for C++, and Clion in Linux.
I wish though that Visual Studio just used Visual Studio Code as the editor. It is so sad that they still do not support natively multiple cursors, select next occurrence etc.
Although it is listed (vim), I use a text editor, not an ide.
Do one thing, and do it well.
Spacevim
I use VS Code for editing and VS for running and debugging, because VS is atrociously slow. Opening a file with the quick-open thing takes seconds.
Also VS code has some really nice plugins that I would seriously miss.
Eclipse but might switch to KDE or Qt. Never VS.
I don't use an IDE. I use text editors, mainly Sublime, VS Code, vim, and Geany.
I see no point in using an IDE over a text editor.
I am a noob programmer still learning the language and I am pretty much forced to use visual studio since almost all of the tutorials are for that. If I knew how I would use code::blocks. I just find it easier to focus and more visually appealing, I don't know why
Is the poll about preference or about about what your current professional environment "forces" you to use?
Atom for big projects, Vim for small stuff
Emacs when I can, visual studio when I must
Vi, and three other terminal tabs.
Can we see the results? They're typically revealed to participants once they submit their selection...
Learned my C++ in Bloodshed's Dev-C++
Default IDE for platform
For writing code I use vim with the following plugins:
YouCompleteMe
NERDTree for viewing the file system in a tree view
Tagbar for viewing the functions and classes in a tree view for the curent file.
ctrlp.vim for fuzzy file search
vim-cpp-enhanced-highlight highlights things commonly found in C++ programs such as STL functions and classes
ag.vim for fuzzy content search, I usually still prefer using ag from the commandline though
vim-fugutive for common git operations such as blaming and logging
ultisnips for commonly used boilerplate
For debugging code it depends on what platform I'm on and what compiler is used.
When using GCC/clang I use Qt Creator as a visual debugger.
With clang-cl/MSVC I tend to use the Visual Studio debugger for live debugging, and WinDBG for post mortem debugging.
I'm not hardcore enough for commandline debugging, my colleagues are though.
Not an answer but a question:
I'm currently using CLion and i want to try QtCreator but i'm to fond of my keybinds, does anyone knows a way to export the keybinds from CLion to QtCreator?
KDevelop, hands down.
Xcode on macOS and Visual Studio on Windows
Emacs
poll results?
Visual Studio + Visual Assist and disabled IntelliSense on my desktop, becuase it does everything I need really well and it's just so insanely fast to work with (lot's of credits due to Visual Assist for that) and QtCreator on my Laptop since it runs Linux.
https://www.sourceinsight.com. Loads in seconds, works with hundred of thousands files.
cquery + VSCode/Emacs/Atom/Vim ...
vs2017 express (free for commercial application): http://aka.ms/vs/15/release/vs_WDExpress.exe
I use a mixture of the following, depending on what projects I'm working on:
Vim + YouCompleteMe: Most of my personal projects.
CLion: Larger C/C++ projects I end up working on, especially CMake based ones.
Visual Studio: For projects that are already setup to build in VS.
QtCreator: I will occasionally use this for quick and dirty GUI projects.
All of these options offer direct support or a plugin that provides support for Vim-style editor modes.
Why is nobody talking about Jetbrains Clion ? Buy it crack it download it for free if you're a student whatever but Jetbrains tools are close to perfection
Can you still use QtCreator if you're not developing a GUI?
Also supports vim mode out of the box which is great. Definitely my favorite IDE.
Every job in the games industry I've worked has used Visual Studio as the primary (only?) IDE
Pairing it with vsvim makes for a comfy environment.
Yeah as a non professional ive been using it for a while and it has a lot of great debugging tools.
Its just that sometimes, maybe like 1/30 times i startup VS I get this fucking bullshit LNK error on compile (I think LNK2005) that GOES AWAY WHEN I RESTART VS SO THERES NOTHING WRONG WITH MY SOURCE CODE/LINKING AND I JUST SPEND HALF AN HOUR DEBUGGING FOR NOTHING. but other than that its good.
I like how it randomly freezes and then carries on as if nothing weird happened. It's a bit like Homer Simpson having an internal monologue/dream without realising the real world is waiting for a response.
It's also my IDE of choice. Intellisense usually works pretty well (though it's useless in templated C++ code), and the debugging experience is excellent.
and with Resharper C++ it's simply marvelous
I'm using it to and from my experience it does not require a lot of resources. C++ extension does. It's not an electron issue.
I don't like the "phone home' by default settings in VS Code and many of it's extensions. It means that I will never use it outside a virtual machine dedicated to a specific project.
Sublime + CMake. And a Python script for build configurations.
Emacs
As I, I also use rtags plus cedet packages to get autocompletetion, jump to symbol plus compilation to work as expected from IDE.
Emacs
I also use Emacs, because it allows me to use 1 editor for everything from VHDL to assembly to Matlab and everything in between.
However, I've never found a guide to getting good C++ completion and code navigation on top of base Emacs (i.e. without "install 83 helm packages and then add 4 Kb of content to .emacs" as the first two steps). Can you help?
I used code::blocks for about a year until I discovered CodeLite. Better IDE, IMO.
Came here to say QtCreator. I don't even use Qt and it is great.
I use it almost every day.
It's just a shame they have hidden the download area so well on their website. It can honestly take me 5 freaking minutes to find the correct place if I don't have my bookmarks.
Someone finally mentioning IDE with good autocomplete
I'm wanting to give QtCreator a try to see if I switch over from VS, but I'm having a difficult time making it work properly. Apparently after creating a plain C++ project it can't initialize the vcvarsall.bat file. I've googled it and every post I've read says to check the Tools -> Options -> Build & Run -> Compilers and make sure that the compiler is there and it's definitely there. If I copy and paste the path into file explorer, the path and file exist. Has anyone else had this issue with QtCreator? I'm on 4.5 which I believe is the latest open source version.
I tried Qt once. Took me about 30 minutes to figure out how to download and run the IDE. Never figured out after that how to create a project and start writing code. What a catastrophically bad UX.
I'd like to like QtCreator (I use it half the time at work), but I have to say it's still not 2018-ready. No relaxed line spacing in what is primarily a text editor? And the FakeVim support is very lacking to the point of being annoying (try Cmd+S...). Also, the built-in help (F1) while editing QML files is nearly useless. So is code completion, though for C++ it does work well.
The best code completion I've seen so far is Xcode. (barring MSVS).
VScode on the other hand is rapidly becoming my "IDE" of choice. The C++ plugin is improving at breakneck speed and the whole editor is screaming fast, built for productivity.
I have never used Qt. I have heard it did not handle modern C++ (C++11,14,17) well.
I created this poll after having a similar running for few days last week and emacs got a much lower number of votes.
Anyway, I added it now as I don't want to create any vim vs emacs flame war.
As long as you don't need to include boost...
If you do, the only way CLion remains functional is by disabling all of the autocomplete features. Otherwise, if i type var. it starts searching the entire boost library for a possible completion, even if var is a string or even int. It takes 10 seconds to continue typing. This is on a 12 Core Xeon with 128 GB RAM, and 10 GB devoted to CLion.
Do you really find it so well? I've seen it being criticized a lot for its home-grown parser but on the other hand I've seen a lot of people at the same time being happy with it. Even though I haven't tried using it, I can't resist the feeling that it can't be that good due to its parser.
I second that.
Visual Studio, because it is an amazing tool for writing software. From within that one tool you can edit, do version control, change your build settings, build, run, and debug - it's an easily installed one-stop shop for all things programming.
This. The debugger is really great. Also, I can do a diff / merge from the IDE and get a window with full syntax coloring and intellisense and I can edit the code in the diff / merge window itself.
The documentation for IDE features is a bit poor though. I had to experiment a lot to get semantic coloring working right.
I find all the integrated stuff that worst aspect of VS. It's an ok environment with a pretty good debugger. But all the other stuff is mediocre and makes it bloated and slow. I chose the best tool for the job, not a single tool to do everything half arsed.
Pretty slow with Unreal Engine. But everything is :D
All IDEs and editors these days have at least a libclang backend for proper compiler supported code completion. This is hardly unique to VS and not really a selling point of Visual Studio.
And at the same time losing truckloads of convenience
But do we really? Vim has half of the features you mention via plugins.
good debugging
You're absolutely correct in saying vim lacks this, there was a cool project for neovim that transformed vim into a visual debugger, but it's sadly abandoned. It's called lldb.nvim
disassembly
I think you're right on this one too, but I haven't had the need for this, so I never looked for a plugin.
intellisense
You're right, nothing but Visual Studio has intellisense, since it's just MS's branded word for code completion. VS's code completion is pretty bad when you get used to clang based code completion, so you should definitely give something without "intellisense" a try.
Pet peeves aside, vim has a great code completion plugin called YouCompleteMe, do note that it is a pain to setup on Windows if you do it for the first time, but following the guide to the letter should get you through most of it without too many problems.
version control integration
The vim fugitive plugin is very good.
What works really well for me is both using an IDE for features that vim lacks, such as a visual debugger, and use vim for writing code.
If you're up to it, give it another try with the plugins I mentioned (in my other post), you might be pleasantly surprised.
Even why using an IDE I find it immensely frustrating reading code when I have to repeatedly inspect the types of variables. Code that you cannot understand if it was e.g. printed in a book or on a website is horrible.
I hear you. But in all fairness: Intellisense has a lot of trouble inside templates / generic code, which is one of the big use cases of auto.
Atom (and Sublime Text) are popular for web development, but for C++ it's not much more than a colored text editor.
This piques my curiosity. What makes visual studio better for debugging than other IDEs?
Personally I use it only for quick tests, but many use and consider Vim + plugins a proper IDE.