5 ms·
That's one of the drawbacks of C++. I really love it but sometimes a tiny syntax error will produce so many errors that you can't even scroll to the top of the
by moccajoghurt 13y ago
That's one of the drawbacks of C++. I really love it but sometimes a tiny syntax error will produce so many errors that you can't even scroll to the top of the console to find the cause.
- coherentpony 13y agos/C++/g++/ clang++ isn't nearly as bad.
- InclinedPlane 13y agoI tried some of the examples with g++/cc and with clang. Clang is a lot better but it still produces some pretty ridiculous output (but not gigs of ridiculous output fortunately).
- coherentpony 13y agoOh, I totally agree. That said, these examples are engineered to make your compiler shit a brick. Most of the time clang++ gives you much more readable output. g++, however, is a lot more careful about your digits. It'll take a little while before clang++ gains serious traction in the scientific community.
- rwallace 13y ago> g++, however, is a lot more careful about your digits. It'll take a little while before clang++ gains serious traction in the scientific community. How do you mean? Does clang have some sort of problem with numeric precision?
- exDM69 13y agog++ has improved their error messages in the past few years, especially when it comes to template error messages. But C++ is still really complicated and you can get get pretty nasty errors. And clang++ may be better in some aspects but it is not perfect either, one of the entries in this contest caused clang++ to segfault.
- nikbackm 13y agoWouldn't the -fmax-errors option help with that? Or if all else fails, just pipe the errors to "head".
- 72deluxe 13y agoThat's why you don't make syntax errors! :-)
- masklinn 13y agoclojure/clojurescript has very similar issues. A small syntax error (e.g. forgetting the vector in a :keys unpacking — putting the bare field name) will throw up hundreds of lines of unreadable stack trace.
- mynames 13y agoThis is so true. I hope they fix it, cause it's really annoying.
- adestefan 13y agoI like clojure. I really do. But when it comes to day to day usage I cringe because of the down right terrible error messages.
- mschaef 13y agoI hear this complaint a lot about Clojure, but I have to admit that I don't fully understand it. My usual experience with Clojure has been that the stack traces are long... but the exception error messages are generally pretty good, and the stack frames that correspond to user code generally have good information on the position of the offending statement. Maybe you could make an argument that the internal Clojure stack frames should be hidden from stack traces, but Java itself makes that difficult. The mechanisms that `Throwable` uses for capturing and printing the stack back trace are both private methods of the class. Working around this would involve identifying every (most?) places in a codebase where a Clojure stack trace might be printed and then using custom Clojure-specific stack trace printer. This might be doable for stack traces printed by the REPL or compiler, but very difficult for stack traces printed by an external linked-in logging framework.
- JoeAltmaier 13y agoDebuggers can be helpful by disguising/translating details, but I'd be very cautious about a feature that messed with the stack frame. Sometimes that's what's being debugged! It would be a disservice to muddy that information. Most of us are pretty good at scanning down a stack to find our own stuff.
- 13y ago
- NigelTufnel 13y agoThat's why I like Python so much. Made a syntax error? Here's the line number, pointer to the column, and the kind words "SyntaxError" from the interpreter.
- skrebbel 13y agoThen you simply never tried any other modern language than Python. Python's error messages are pretty OK, but they're nothing special. I'd say that in general, evil yucky unstartuppy Enterprise languages like Java and C# do slightly better.
- scott_s 13y agoI think you did not understand moccajoghurt's point. Because the errors cascade - that is, the one syntax error causes many, many (many) more errors, there are so many errors that it's hard to scroll up to the first error.
- Someone 13y agoIt's worse. In C++, that first error often is a red herring. The classical example is a header file where one forgets to type a semicolon. In classical C++ compilers, that triggered errors pointing to the file that includes the erroneous header. For examples, see #9 in http://web.mst.edu/~cpp/common/common_errors.html http://web.mst.edu/~cpp/common/common_errors.html, http://stackoverflow.com/questions/11216569/missing-semicolon-in-class-declaration http://stackoverflow.com/questions/11216569/missing-semicolo..., or http://stackoverflow.com/questions/14077486/c-learning-header-files-whats-up-with-this-semicolon http://stackoverflow.com/questions/14077486/c-learning-heade... (nice example of someone manages to solve a "missing semicolon before X in file F, line L" error, and is smart enough to realize that that probably is not the right way to fix the problem) Clang developers have worked hard to improve that; see http://clang.llvm.org/diagnostics.html http://clang.llvm.org/diagnostics.html, section "Quality of Implementation and Attention to Detail".
- scott_s 13y agoWhile I have trained myself to look for "clusters of errors" instead of individual errors, in my experience, the first error g++ reports tends to be the real cause. (I've also been programming in C++ long enough that I often don't even bother reading the error message - it's usually quicker if I just go to that line of code, and look for what's wrong.)