5 ms·
a three lines program generates 95 lines of error messages; let's throw a template into it, so that it goes up to 112 lines, but look: at the beginning you'll s
by ebassi 14y ago
a three lines program generates 95 lines of error messages; let's throw a template into it, so that it goes up to 112 lines, but look: at the beginning you'll see the error we added!
coupled with the: "To be fair, this doesn't entirely replace decltype. auto doesn't perfect forward. But it seems to work as expected, most of the time" it goes a great way to instil me a sense of safety.
not.
that post should be taken as an example of why C++ has become a liability, and the day won't come too soon when this joke on the whole industry finally gets dumped like COBOL in the nearest ditch, along with the corpses of all the projects that made the mistake of actually using it.
if it were a living thing, I'd shoot C++ in the face to put it out of its misery.
- stingraycharles 14y agoThe issue you describe is more a compiler-specific issue than a language specific issue. Yes, the language allows a lot of flexibility and therefor in some situations it's hard to nail down an error to a nice, specific error message (mostly when templates are involved), but it's not impossible, as clang++ shows. Believe it or not, there are people (like me) who actually enjoy coding in C++.
- fafner 14y agoIt's a language specific issue. Sure clang++ has improved error reporting and GCC is actually quickly catching up. But the problem is a language issue because an error in a template confronts you with implementation details of the template. There is nothing the compiler can do about it.
- gurkendoktor 14y ago> a three lines program generates 95 lines of error messages; let's throw a template into it, so that it goes up to 112 lines, but look: at the beginning you'll see the error we added! 95 lines of error messages sounds terrible, no doubt. But which language is better in the real world? I am currently consuming a JSON web service written in Java, and I get no less than 30kb of stack trace back when something blows up. Rails' stack traces are filtered by default, but sometimes you still have to jump in there. And C++ has the advantage that much of this can happen at compile-time. I agree that almost everything about C++ is broken, but the verbosity of error messages is the smallest of it IMHO.
- raverbashing 14y agoI'm thinking most of the "C++ school" is affected by excesses, still, Java and C# are slightly better " but the verbosity of error messages is the smallest of it IMHO" It's merely a consequence of the verbosity/complexity of the language itself
- shin_lao 14y agoOr you can use Clang. Feel free to shoot C++ in the face. Don't forget to rewrite most of compilers and operating systems in use in the process.
- bhaak 14y agoLinux doesn't use C++ and AFAIK the BSDs also don't. So go ahead, I won't have a problem with a dead C++. :-)
- wolf550e 14y agoThere is much more to the OS than the kernel. Lots of important software is written in C++.
- indeyets 14y agothat's not a problem in the long-term perspective as it doesn't force anyone else to use C++
- verroq 14y agoThen prepare to drop GCC. Then drop whatever browser you are using and most of the cross platform compatible GUI frameworks (GTK, QT etc). https://lwn.net/Articles/390016/ https://lwn.net/Articles/390016/
- abrahamsen 14y agoWhat would the clang error message be?
- wladimir 14y agoI read that blog a bit and it seems to have the following pattern overall: elegant 5-line Haskell program. Then follows 100-line unreadable C++ implementation. My conclusion is that C++ is a very bad language to try to do Haskell :-) This doesn't mean that C++ doesn't have its uses, but for your sanity's sake don't use it for high-level metaprogramming.
- verroq 14y agoI don't get all this C++ hate from people that has never even used it. Personally I want a better C and C++ satisfies most of what I want. 1. Type level polymorphism (generics/templates/etc) 2. Easier ways to manage memory (constructors/destructors, auto/shared pointers) 3. A modules system (namespaces) 4. Lambdas, etc to make life easier (C++11) 5. A standard library with useful data structures 6. Fast It seems all to me all these haters still think that C++ is just C with classes, but C++ is a fairly vast language and OOP is just a small part. C++ is blazing fast, it has an elegant standard library and templates do make sense if you know what you are doing. You are trying to use cutting edge features that aren't properly standardised yet and complain that the error message is a bit long? Granted, template error messages aren't always the one liner you are expecting, but they are readable.
- ebassi 14y ago> I don't get all this C++ hate from people that has never even used it. wrong. I use it every day, on a fairly large code base. obviously, for portability reasons, nobody working on the project is allowed to even think about C++11, as well as other headache-inducing features - and that includes a fair chunk of the standard library.
- neumann_alfred 14y agoprojects that made the mistake of actually using it You mean stuff like Unreal Engine... ?