4 ms·
C++98 is an miserable language, I have no idea who would actually be resistant to improving it. I fucking hated it, C++14 and beyond are such a relief. Move sem
by TillE 4y ago
C++98 is an miserable language, I have no idea who would actually be resistant to improving it. I fucking hated it, C++14 and beyond are such a relief. Move semantics aren't fun but they are necessary.
This kind of claim is extremely common HN but utterly foreign as someone who actually writes C++ for a living.
- lifthrasiir 4y agoI have too written C++ for years---I worked on online game server frameworks---and you are partially right, C++98 is not for mere mortals, but we still tended to use only a part of C++11 and C++14 we saw fit. This is the point: not every new C++ feature is relevant to at least some of us, and the relevant fraction is ever diminishing.
- bb88 4y agoC++98 is the reason Java came to power.
- rramadass 4y agoNo; Java's success is entirely due to Marketing.
- bb88 4y agoOh no. I was there. Cross platform C++ was hard. Cross platform Java was easy.
- rramadass 4y agoThat wasn't it; There was nothing revolutionary about it. It was the most hyped/marketed language in History[1]. Sun threw ungodly amounts of money to market it and make it what it is today. Invented as a "Embedded Systems" language, pushed as a Browser "Applet" language, moved to "Server App" language and settled as a "Enterprise App" language. [1] https://www.theregister.com/2003/06/09/sun_preps_500m_java_brand/ https://www.theregister.com/2003/06/09/sun_preps_500m_java_b...
- enjoy-your-stay 4y agoI think the fact that it eventually ended up as a server app language took everybody by surprise - Sun never saw it as anything like that at inception I'm sure. Adding JDBC and later nio is probably what got it there the most.
- bitcharmer 4y ago> Java's success is entirely due to Marketing. Congratulations, this is the stupidest thing I have read this week. Of course the 20 years of enormous popularity and huge success in multiple industries must be due to marketing. I mean, what else.
- rramadass 4y agoCongratulations, you just proved that you know nothing about why a product succeeds/fails in the market. It was the initial push (with gobs of money) given by Sun that gave Java the momentum. No language was ever pushed so hard in the marketplace by any other organization. Without that push, the language would never have the popularity that it enjoys today. There is nothing inherently "superior" to the Java language. Far better languages have fallen into obscurity because they did not get the publicity (eg. Eiffel) that Java did.
- Zababa 4y agoThat is not how logic works. "Better languages with less marketing are less popular than Java" means that "marketing matters" and that "quality isn't everything", not that "only marketing matters".
- enjoy-your-stay 4y agoAnd step 1 in marketing a new language is a cute mascot, obviously.
- spacechild1 4y ago> we still tended to use only a part of C++11 and C++14 we saw fit. I think everybody does this and it's totally ok. Nobody needs all of C++.
- bb88 4y agoJava was a reaction to C++. Go was too. C++ feels like it was created by the smartest person in the room without regards for the the other 80% that would use it on a day to day basis. I guess that's why I like simpler languages more, where I don't have to think about how the language or compiler is going to treat my code.
- hedora 4y agoRust was also a reaction to C++, and is a move in the opposite direction as go. Go is OK. It's a little faster to get a first version working, but the result tends to be slower and more likely to crash on memory/concurrency issues than a rust version would be. I use both; go is fine for spaghetti ~architecting~ devops-ing piles of microservices together. Rust is much better for the data path though.
- bb88 4y agoHow do you like Rust for say SaaS type services? JSON marshalling/unmarshalling, socket behavior, etc? HTTP request/response processing? I spent the last two months coding in Go pretty much not enjoying it. Nil is not always equal to nil in third party libraries through an interface -- and the compiler wouldn't warn about it.
- leshow 4y agoNot OP, but if you have gripes about type safety, you're likely to enjoy rust. The compiler will absolutely let you know if you are not handling optional or result types. As a bonus, they are built using regular generic and enum constructs with a little bit of syntax sugar to make them more ergonomic. serde is also world class for serializing/deserializing, and can generate implementations for you based on struct definitions independent of data format (json/bson/yaml/toml/etc). The only sharp edge you may bump into for a web service is in your choice to go either sync or async, and if you go async you must then choose a runtime (usually tokio) as these are libraries and not integrated into the std lib beyond just the `async` keyword and a few traits.
- bmitc 4y agoThe fact that these standards (?) or versions (?) of C++ are so wildly different to summon these types of opinions is mind blowing to me. I like languages like F#, Elixir, Erlang, etc. that have cores that basically never change and just add quality of life improvements, and so I have never experienced this. C++ seems like such a minefield that C++ developers have little in common with how other C++ developers work, experienced or not.
- missblit 4y agoFWIW as a professional C++ programmer since I graduated university 7 years ago I haven't really had that experience. There's certainly a large learning gap; both for "classic" C++ as well as the popular modern features. But once you get over that I haven't found other peoples C++ any harder to read than other peoples C or JavaScript or Python. No one's reaching to esoteric features like "..." or atomics unless they're some low level library wizard (in which case all their friends are also low level library wizards) or the situation actually calls for it.
- adrianmsmith 4y agoJava was like that for so many years, it was fundamentally unchanged for decades really. And now (for the last 5 years or so) it's changing rapidly, new code just doesn't look like old code ("var" type inference, lambdas rather than inner classes in many cases, multi-line strings with """, new switch statement syntax etc.) I mean I like it so far but it's kind of weird to be honest!
- jcelerier 4y agoC++ people have a large propensity to complain though. We're more than a decade after type inference, one of the largest QoL improvement possible, was introduced and some people still claim it was a bad thing and that all types should be written down in their entirety. Do you imagine this in your language's communities? I had discussions about this with dozens of c++ programmers in real life.
- int_19h 4y ago> Do you imagine this in your language's communities? Absolutely! C# introduced "var" back in 2008, and to this day there are people arguing that you shouldn't use it except when it's outright impossible to spell out the type. From what I hear, it's the same story with "var" in Java 10.
- jesse__ 4y agoI don't like replying to this type of comment, but I'd like to point out that you're replying to someone who likely grew up writing 6502 assembly (or the like). Furthermore, even mediocre engine programmers have an extremely good grasp of memory management et. al. I also don't think they're arguing cxx98 is a good language, especially by today's standards. The argument they're making is that the tact C++ has taken in more modern revisions is actually _worse_ than writing code the shitty 1998 way. At least for axes games care about. You mentioned move semantics, which is a great example. For a lot of game/engine code, move semantics are just adding a pile of complexity for negligible gain. Ie. Why not just use a pointer?
- wiseowise 4y ago> The argument they're making is that the tact C++ has taken in more modern revisions is actually _worse_ than writing code the shitty 1998 way. They didn’t have any argument. Just old man yelling at cloud. > You mentioned move semantics, which is a great example. For a lot of game/engine code, move semantics are just adding a pile of complexity for negligible gain. Ie. Why not just use a pointer? Because it is error prone.
- int_19h 4y agoOnce you're passing pointers around, you have to manually track lifetimes of things they point to.
- _gabe_ 4y ago> This kind of claim is extremely common HN but utterly foreign as someone who actually writes C++ for a living. OP said: >> I've been engineering videogames in C++ for almost 20years working on AAA games It seems like you're implying that every single business domain uses C++ the same way that your business domain does. Instead of insinuating OP is a common HN commenter that doesn't write C++ for a living, which seems to be an incorrect assumption, maybe you should recognize that not every business domain uses the same subset of C++ as you? Your comment just reads as an arrogant opinion hiding behind a false sense of authority. It sounds like you're saying, "anyone that disagrees with my opinion must be some hobbyist programmer that doesn't know what a real programmer that does this for a living actually codes like". As if coding in a language for your job automatically implies that the code will be of a higher quality than hobbyist code. Its gatekeepy and gross imo. I've worked professionally with disgusting C++11 code that was an amalgamation of code from some people that clearly knew what they were doing, and a lot of code that seemed to be from people that had no clue what was really happening. They had no clue because of all the hidden complexities in modern C++ that Herb Stutter is trying to reduce.
- parker_mountain 4y ago> This kind of claim is extremely common HN but utterly foreign as someone who actually writes C++ for a living. This should be a huge klaxon for the C++ community. Whether or not it's true, it's a massive problem for the C++ one way or the other.
- rramadass 4y agoThis comment is classic "not even wrong". >This kind of claim is extremely common HN but utterly foreign as someone who actually writes C++ for a living. The above comment is equally applicable to their comment.