C++ IDEs – a rant
gamedev.net
gamedev.net
Author also has an interesting view of QT Creator development / doesn't seem to be familiar with OS projects. "Or perhaps the guy who wrote it (denis mingulov I think?) will improve it, but I think he developed it in 2010." - meanwhile 6 different people committed new code to the QT Creator in the last 24h.
There's a few more fun things to spot if you read carefully. But what I'm saying is: it's worth remembering developers work in very different groups / environments.
> -Wall
> This enables all the warnings about constructions that some users consider questionable
Personally, all my Makefiles use `-Wall -Wextra -Wpedantic -Wformat-security -Wshadow -Wconversion -Wfloat-equal -Wpadded -Winline -Wvector-operation-performance` by default, adding or removing some depending on the project. `-Wconversion` is specially useful.
I think MS drop the MFC based VC6,then move to C# based VS2002 till now is a big mistake.
The Office team still using their own tech stack, it is good.
No kidding! I'm still bewildered and vaguely horrified by the idea that in some worlds changing your text editor means you have to modify your projects to work with the new one.
http://i.imgur.com/8mp0vLL.png
The same image provides the reason too :-) (hint: look the compile time, it is for a full build).
Although the code is very portable and compiles under any Windows compiler i've tried (including MSVC, MinGW/GCC, OpenWatcom, Digital Mars C/C++, Pelles C and of course Borland) as well as GCC and Clang under Linux and OS X (both compilers under both OSes). I often use VS2015 for debugging.
Personally don't think VS13/15 are noticeably slow, on a halfway modern development PC the experience is quite ok (lots better than using Atom for anything). I also had good experiences with QT Creator, although I used it mostly for QT related projects.
So if you can't see the use, you are either still extremely clever, or haven't worked on complex enough projects to see how it could be useful.
Why use C++ in the first place - because not a single language/ecosystem has come to exist yet that can replace it when performance is really important. If you are trying to make Doom5, you can't waste a single instruction. You can't miss the cache unnecessarily ever. You can't waste a byte of memory. You wouldn't believe the kinds of things AAA game developers (or the developers of the engines they use) have to do, to get done what they do.
Rust can't quite do it yet. D can't quite do it yet
Java/C# et DEFINITELY can't do it yet. And yes I know Unity uses C# for it's scripting language, but someone has to make Unity.
Won Chun is the guy I'm talking about.
C++ is not what I'd go for if I could not waste a byte of memory, though.
Also tried to set up vim to have all the features that I typically use in VS... took me days and, lot of headache and then forgot about that again.
You can also make it less visually 'noisy' with some of these settings: https://jackmott.github.io/programming/tools/editor/ide/visu...
A few things I think text interfaces are, or tend to be, terrible at:
Profiling information (can't beat flame graphs)
Graphics debugging, previewing UI layouts (text is terrible at displaying the results of pixel shaders)
Discoverability (VS has so much UI up front to discover that it's literally overwhelming for some, a vim user will hit the manual to figure out how to even get into insert mode...)
Manipulating and viewing many tree and node based structures (shader graphs, parallel stacks, ...)
Even basic scrolling (map style scrollbars are wonderful for large files in alien codebases...)
Even basic intellisense requires text interfaces to awkwardly pretend they're a real user interface with ncurses or the like. VS has it's drawbacks - it's a hard-to-extend monolith, there are too many blocking operations are on the UI thread, it hits the disk too much, etc. - but I've seen these issues in text based tools as well. The problem isn't that it should be text based.> Ultimately text interfaces will always [...] give the lowest resource utilization
I want to maximize the useful utilization of my time. "Lowest resource utilization" is not a goal. "Most efficient resource utilization" might be getting there, but I'll happily eat some wasted CPU time on the off chance it'll mean less wasted mind time. Powered down silicon is a wasted investment.
edit: but yeah, if you're doing graphics work, you certainly want a graphical editing environment
As for your points about map scrollbars and completion UI, I can't speak for Vim, but Emacs has had graphical capabilities for a long time and does both of those things quite handily. I don't see the point of map scrollbars and I use code completion only sporadically, but they're there if you want them, as are many other perhaps surprising things, and Emacs doesn't feel a need to show off and get in my way as I've found more heavyweight tools like Visual Studio to do. (And what a world we live in, where Emacs can reasonably be called lightweight by comparison with anything...)
There is some SIMD support. What is there, is pretty good. But not everything is exposed. That would be nice.
Better array bounds elision would be good, and that may be coming, I know they are looking into it. It does it but only in the most obvious cases.
- Portability (to consoles - you basically need to port Mono yourself, as NDAs prevent upstream from receiving all the necessary changes...) - Legacy (lots of C++ libraries they want to use - you can write C stubs to PInvoke, but this can be awkward...) - GC collections (with little control over the timing of latency spikes other than to avoid all allocation during gameplay - again possible, but awkward.)
Many of these are more ".NET Runtime" problems than C# problems.
I guess Rust is the only language that has a fair shot at that right now.