4 ms·
MSVC, barely supports C99 but has time to have devs make posts about the obvious nature of optimization. Sigh.
by aa0 13y ago
MSVC, barely supports C99 but has time to have devs make posts about the obvious nature of optimization. Sigh.
- gecko 13y agoThis gets repeated a lot, but I'll say it again anyway: MSVC is a C++ compiler. It happens to support some C99 (and will support more in VS2013, actually), but that's not its focus. While I, and many other Windows developers, feel that its standard compliance has fallen a bit behind in the last five years or so, Microsoft has made tremendous strides towards fixing that problem lately, and the roadmap (http://blogs.msdn.com/b/somasegar/archive/2013/06/28/10429934.aspx?Redirected=true http://blogs.msdn.com/b/somasegar/archive/2013/06/28/1042993...) for full C++11/14 compliance looks good, and seems reasonable. Further, while C++11/14 compliance in MSVC isn't amazing, its compilation speed, and the optimizations it can deliver to its compiled executables, are both top-notch. VC++ generally seems to land between GCC and ICC for most code I write. Is it perfect? No. Should it support more of C++11 and 14? Yes, and they're working on it. But as much as I wish there were a great C99 compiler on Windows, Microsoft has been open for a very, very long time that that's simply not their focus. Just as I don't assail Apple for Xcode's lousy Python support, I don't see a point in attacking MSVC for not doing C support.
- tveita 13y agoIt would help if they would just declare it unmaintained. Maybe projects would give up on sticking to a 20 year old C standard just to maintain compatibility with MSVC.
- rossy 13y agoI wish these projects would just switch to MinGW. VLC and FFmpeg already use MinGW to target Windows. It's fast, stable and it lets them use nice C99 features like designated initalizers.
- gecko 13y agoDesignated initializers are (thankfully) among the subset of C99 that is actually getting added in the next MSVC release.
- rossy 13y agoYeah, VS2013 looks like a step in the right direction. I probably won't use it myself since I prefer FOSS development tools, but it will be a huge win for interoperability. I hope they implement enough C99 for big projects like FFmpeg to work.
- zerr 13y agobtw, do you [heavely] use c++ at fogcreek?
- gecko 13y agoI used to use it heavily. In the last few months, I've also been using C++ heavily, because I'm working on some heavy performance boosts for Kiln Harmony. But I believe I am the only person in the entire company writing C++ at the moment.
- w0rd-driven 13y agoHoly shit. I always find it fascinating that moment when you realize that person you vaguely know "from the internet" is exposed on a particular forum. Thanks to the parent for getting me to click your username. We're barely acquainted in a relatively distant past when I used Kiln but your name came up a lot. If anyone is the "only person in the entire company" doing X, it's likely to be you.
- binarycrusader 13y agoThe XCode Python support comment is specious at best. We're talking about C -- the lingua franca of systems programming and important on every major computing platform. I'd be more sympathetic to Microsoft's insistence that it "wasn't their focus" if they didn't have a long history of ignoring industry standards in favour of their own. However, Microsoft recently said they were going to implement more of c99: http://arstechnica.com/information-technology/2013/06/c99-acknowledged-at-last-as-microsoft-lays-out-its-path-to-c14/ http://arstechnica.com/information-technology/2013/06/c99-ac... ...and to their credit, they've almost fully implemented the standard library from the C99 standard: http://blogs.msdn.com/b/vcblog/archive/2013/07/19/c99-library-support-in-visual-studio-2013.aspx http://blogs.msdn.com/b/vcblog/archive/2013/07/19/c99-librar... Of course, the C11/C++11 committees know how to solve this silliness -- they've intentionally worked on bringing the most recent C11 and C++11 standards closer so that if you implement C++11 you have to implement more C support :-) The world no longer revolves around Windows or Microsoft platforms; every major platform except Microsoft's has an included or defacto compiler that supports C99. Developers wanting to write code that can be used on multiple platforms are understandably upset that Microsoft has made their lives more difficult for no good reason. I view their lack of C99 support the same as their continued refusal to natively support OpenGL on Windows Phone, et al. Although, given they recently implemented WebGL -- I remain hopeful. Finally, I'd note that I'm pragmatic about this; I don't expect full C99 support. I'd accept full C11 support instead -- the controversial parts of C99 were made optional in C11. And they now finally seem committed to at least making a useful attempt at C99/C11 support thanks to the C++11/C++1y standards.
- cjensen 13y agoMicrosoft won't support a 14 year old C Standard because it's "really a C++ compiler"? When, exactly, did it from being a "C compiler" too? At what point should a C++ Programmer worry that Visual Studio is becoming "really a C# coding environment"? Over the last few years, we've seen C# get features first with C++ receiving the same features only if MS gets around to it. I miss the days when Microsoft cared about development tools because they had a lot of competition.
- gecko 13y agoMicrosoft won't support a 14 year old C Standard because it's "really a C++ compiler"? When, exactly, did it from being a "C compiler" too? Since at least the last PDC, that's been the official line. Since C++ isn't technically a superset of C, I find that position reasonable, if annoying. Over the last few years, we've seen C# get features first with C++ receiving the same features only if MS gets around to it. This sentence makes no sense. C++ and C# are totally different languages on totally different runtimes. People hate "embrace and extend"; there was even a lot of push-back on the extensions to C++ Microsoft added to make writing WinRT code easier, despite them going to some lengths to show that the syntactic sugar was, indeed, only that, and not some major semantic change to the language. I further think it's clear that Microsoft does care about development tools. What they don't care about is having Visual Studio be the be-all, end-all environment for Windows development. You want C99? MinGW is actually good these days. You want Pascal? Free Pascal is at your disposal. JavaScript? NodeJS runs fine, embedded right in IIS. C++? Visual Studio actually makes one of the best C++ IDEs around, and its compiler is actually pluggable. (That's how you use ICC with it.)
- cjensen 13y agoSo you agree that one day at a PDC, MS could just drop C++? Seems to me our only disagreement is that I think, due to MS's lack of support for C for the 12 years before last PDC, that MS cannot be trusted to support C++.