18 ms·
Bjarne Stroustrup Weighs in on Distributed Systems, Type Safety and Rust
- distsysdude 6y ago> He’s aware of other languages, as he reveals in his answer to a later question. (“I think C++ can do anything Rust can do, and I would like it to be much simpler to use.”) And towards the end, he couldn’t resist noting that longevity has its advantages. “It’s highly humorous when some of the Rust people come up and accuse me of having stolen some of their ideas without acknowledging — when some of the things I did I actually did almost 40 years ago.” Does anyone know what these accusations were? Given that C++ has been around for so long, It's incredulous to think that anyone from the Rust community can put forth such a claim.
- turbinerneiter 6y ago> It's incredulous to think that anyone from the Rust community can put forth such a claim If you talk about something so undefined as _the Rust community_, I'm pretty sure I can claim that _someone of them_ has said pretty much anything in existence. Like some of the "why did you not write it in Rust" bros on any forum like Reddit or here might very well have writen some utter bullshit about other languages, would not be surprised.
- throwaway894345 6y agoThe parent and Stroustrup were both clear in saying “someone from the Rust community” and not “the Rust community”. Talking about group opinions is hard but in this case they were clear.
- pohl 6y ago“Someone from the Rust community” is super vague.
- AnimalMuppet 6y agoSuper vague as to who it was, yes. But it's really clear that it wasn't the position of the bulk of the community.
- protomyth 6y agoI'm more than half convinced that the "why did you not write it in Rust" group actually hates Rust and its a meme because those comments certainly promote a visceral hatred.
- strokirk 6y agoI can assure you that they exist, and they are unironic.
- protomyth 6y agoToday, that saddens me greatly. It seems like there are always members of any community, virtual or physical, that go to such an extreme that they provide fodder for all those who don't like the community as a whole. The Warhammer Heresy memes are just too true.
- nindalf 6y agoThe only thing I can think of is modules, which C++20 is planing to introduce. But I would be very surprised if anyone was accusing anyone else of "stealing" ideas. It's preposterous because 1. every language copies good features from others (that's a good thing) and 2. Rust has copied a lot from C++. I wish people wouldn't talk about one or two people with a warped view as "the community".
- The_rationalist 6y agoModules have existed far before rust e.g in javascript, python, Java, etc
- remcob 6y agoThose are valid examples, but modules are much older than that: https://en.wikipedia.org/wiki/Modular_programming#History https://en.wikipedia.org/wiki/Modular_programming#History It really shows Stroustrup's point on how most of these programming concepts have been around for a long time.
- throwaway894345 6y ago> I wish people wouldn't talk about one or two people with a warped view as "the community". At least in the quoted sections, they weren’t talking about the opinions of the rust community, but rather those of someone from the Rust community.
- nindalf 6y agoMy point is that saying "Rust community" implies that this person represents the community in some way or worse, is representative of the community. Neither is true. It's just some random person with no credentials. That person is no more the Rust community than I am the HN community. Imagine how you'd feel if people made assumptions about you based on what nindalf said that one time.
- jfkebwjsbx 6y agoC++ modules have been a thing for a long time even if the standard is being presented this year. It is not a C++ idea anyway, older languages have had similar facilities.
- pjmlp 6y agoIt usually comes from more emotional adopters without much experience in programming languages. You will also see some safety assertions regarding stuff that was already safe when using Ada, or any Modula or Oberon linage of programming languages. Not everyone on Rust community tends to be like that.
- steveklabnik 6y agoI am very curious too; I don’t think I’ve ever heard anyone claim this. If anything, folks talk about the debt we have to C++ for pioneering a lot of this stuff!
- yesenadam 6y agonit: Only people can be incredulous. Well ok, dogs etc too. It means (of a person) "not wanting or not able to believe something, and usually showing this".
- ncmncm 6y agoPeople are avoiding "incredible" for its dictionary meaning nowadays because it has morphed into a generic intensifier. In a few years that will pass, and people will not say extremely silly things like "incredibly honest" anymore. But they will necessarily take up saying other equally silly things.
- yesenadam 6y agoThanks!! "Generic intensifier" is a very useful label, e.g. it's been driving me nuts how "literally" is used so frequently and inappropriately, on HN and other places. It's become a generic intensifier. But these words that cry wolf lose their..Ah well, this is what language evolving looks like I guess - like it's going downhill! But it's like Reutersvärd/Penrose stairs, only appearing to descend.
- ncmncm 6y agoYou are tripping over the Recency Illusion. As with almost all complained-about English usage, abuse of "literally" began (literally) centuries ago. British newspapers regularly host shrill complaints about language degradation in the Colonies, but in every single case the reviled usage turns out to have started somewhere in England, typically before the colonials went. That shouldn't surprise: there is overwhelmingly more variability in English usage in England than the sum total in all other places. It would not be at all surprising if "incredibly" went through a similar cycle 200 years ago. For a time, "nice" meant "stupid", before it meant "precise". For a time, "plausible" meant "implausible". Just be glad abuse of "exponentially" has fallen off.
- yesenadam 6y ago> You are tripping over the Recency Illusion. Maybe, or maybe it is an unprecedented recent spike. We're both guessing, I suspect. [5 minutes research later] Well, there is this measure of the frequency of 'literally' in books in English since 1600. (Although I meant in speech and online comments) https://books.google.com/ngrams/graph?content=literally&year_start=1600&year_end=2019&corpus=26&smoothing=3 https://books.google.com/ngrams/graph?content=literally&year... Which does seem to possibly support the 'unprecedented spike' hypothesis! A huge surge since 1990, the largest ever, the word is now used twice as often as in books in 1990. Looking at examples from 1800-1820, during the 2rd biggest surge, which lasted around 100 years centred on 1840, https://www.google.com/search?q=%22literally%22&tbm=bks&tbs=cdr:1,cd_min:1800,cd_max:1821&lr=lang_en https://www.google.com/search?q=%22literally%22&tbm=bks&tbs=... - none of those on the first few pages of results appear to be the general intensifier kind of 'literally'. Compare with 2019-2020, where most examples in the first few pages are the kind I've gotten so sick of lately: https://www.google.com/search?q=%22literally%22&tbm=bks&tbs=cdr:1,cd_min:2019,cd_max:2020&lr=lang_en https://www.google.com/search?q=%22literally%22&tbm=bks&tbs=... I eagerly await further research in the field. :-)
- The_rationalist 6y agoC++ is building something similar (and maybe with less syntactic noise aka lifetimes markers) to rust borrow checker https://www.reddit.com/r/cpp/comments/8zle4k/current_state_of_the_lifetime_checker/?utm_source=xpromo&utm_medium=amp&utm_name=amp_comment_iterations&utm_term=active_search&utm_content=post_body https://www.reddit.com/r/cpp/comments/8zle4k/current_state_o... But yeah indeed, rust borrowed more concepts (e.g RAII) from C++ than C++ borrowed from rust
- hu3 6y agoRust also borrowed concepts from Cyclone: > The inspiration for safe borrowed references comes in two ways from the Cyclone programming language, a joint development effort by AT&T and Cornell University. The notion of a borrowed reference is adapted from Cyclone’s polymorphic restricted alias pointers. Additionally, Cyclone’s safe memory management focused on regions (which are usually arenas). In order to ensure memory safety, Cyclone pointers could be annotated with a named region qualifier preceded with a back-tick (making them look very much like Rust’s apostrophe-based lifetime annotations). source: https://pling.jondgoodwin.com/post/lifetimes/ https://pling.jondgoodwin.com/post/lifetimes/
- teleforce 6y agoGood artists copy but great artists steal :-) Joking aside, it's funny that Bjarne did not talk about D since it seems that C++ is copying many of D nice features in later of C++ iterations for over a decade now. And now D is copying the Rust/Cyclone ownership concept, nice!
- dathinab 6y agoI'm honestly wondering why he explicitly mentioned it. Languages taking inspiration from other languages and that's normal I don't think anyone bm the people I know from the rust community (which e.g. work on the compiler and language) would do so. That's except if you write something like a paper, in which case it's party of the proper proceeding to mention "priority art" you are aware of *even if you didn't copy it or even had the idea early but just didn't publish it. I hope it's just some random thing he remembered thought of when causally doing the interview, because the other alternatives wouldn't make him look good.
- mhh__ 6y agoAdmitting that D even exists should embarrass the C++ committee. Modules and contracts have taken something like 30 years combined, and they still aren't prevalent. The tried to borrow static if, but theirs is scoped and misses the point (the static if paper). All of the aforementioned are maintained in a language that has less maintainers than C++ has committee members, with better solutions and orders of magnitude faster compile time.
- pjmlp 6y agoWhy should it? At least ISO C++ knows what they want, while D is still trying to find out to which community they should be advertising to. I find many of the people on their forums quite nice, but D lacks a profound sense of direction and which market they want to target.
- mhh__ 6y agoFilling multiple roles is not the same as lack of direction. D does lack direction, but that's arguably a good thing - that's why the scripting-like features can exist alongside the features which are intended for writing high performance code. The fact that C++ is only used for performance is due to C++ being a bad language everywhere else rather than being amazing at writing high performance code. How many hours of developer productivity have been lost to slow compiles and bad metaprogramming (traits, contracts, and constexpr are emblematic of the half in half out C++ way)
- deleted 6y ago[deleted]
- seanmcdirmid 6y agoAny community that is large enough is going to have some less informed brash members. Communities are open big tents after all.
- jrott 6y agoYeah it's probably actually a sign of a healthy community that it has less informed members that feel safe to speak up. That's how they learn even if it can be hard to deal with.
- pornel 6y agoRust officially credits many languages including C++: https://doc.rust-lang.org/reference/influences.html https://doc.rust-lang.org/reference/influences.html First Mozilla introduction of Rust states: > Rust is a language that mostly cribs from past languages. Nothing new. http://venge.net/graydon/talks/intro-talk-2.pdf http://venge.net/graydon/talks/intro-talk-2.pdf (I recommend reading the slides — they're great!) so whoever is accusing C++ of "stealing" Rust ideas is uninformed about C++ and Rust.
- pojntfx 6y agoDoes the case for C++ in 2020 still exist? Rust and Go are much simpler to learn, can do everything that C++ can and have sane, simple and clean build systems/package managers, not to mention async/await concurrency in the former and channels in the latter.
- ur-whale 6y ago> can do everything that C++ can Don't know about Rust, but for go: . can't match C++ on speed . doesn't (yet, AFAIK) have generics.
- ben-schaaf 6y agoGo also can't call any C libraries without massive overhead (at least not the reference implementation), nor run without a runtime. Go isn't really an alternative to C/C++/rust and it's not meant to be.
- adrianN 6y agoEvery programming language is, to different degrees, a replacement for every other programming language. Whether Go is a replacement for C++ or not depends on what you want to do. For a lot of use cases where you might choose C++, Go would be fine too.
- stouset 6y agoI think GP’s point is that the overlap of domains that C++ is well-suited for and that go is well-suited for isn’t particularly large. Go was at least originally touted as a C++ replacement, but to be honest, that story hasn’t really panned out in practice.
- pjmlp 6y agoDepends, https://www.f-secure.com/en/consulting/foundry https://www.f-secure.com/en/consulting/foundry
- tybit 6y agoI’d love to know how he’d like for C++ to support distributed systems in broad strokes. The first thing that comes to mind is things like gRPC or the actor model but I can’t imagine he has either of those in mind.
- pjmlp 6y agoC++ was born for writing distributed systems at Bell Labs actually. https://www.stroustrup.com/hopl-almost-final.pdf https://www.stroustrup.com/hopl-almost-final.pdf
- tybit 6y agoI specifically mean what he has in mind for “But I’d like to get to not-shared memory.”
- zzz61831 6y ago"The work on what eventually became C++ started with an attempt to analyze the UNIX kernel to determine to what extent it could be distributed over a network of computers connected by a local area network." That was the only connection it had to something "distributed". In a literal meaning of the word, not distributed systems. The problems distributed systems actually face were never addressed by C++ in any way. Something like meta facilities for implementing actor runtimes and using an actor model could be the first step, but who knows what Stroustrup was talking about, maybe it's all just marketing buzzwords useless for distributed systems, like in most languages that claim distributed systems support.
- sumtechguy 6y agoMost of my issues with distributed came from poor over the wire interop. Very crappy libs that would serialize and deserialize in amazingly bad ways. Or some descriptor lang (like idl). Then God help you if you had two different CPU/compiler platforms on both sides. JSON has in many ways filled the niche that XML was doing and RPC before it. But I had to spend so much time writing glue code just so both sides could send/recv that data.
- hu3 6y ago> We have a model for better concurrency coming up. Almost certainly it will be in [C++ version] 23. It exists and it’s used. It’s backed by people like Facebook and NVIDIA and Intel… So that’s where we’ll get a better concurrency, better use of hardware… Beyond that, I am looking at functional-style pattern matching... Better concurrency and functional-style pattern matching? Yes please.
- rainbow-road 6y agoDoes anyone know what Stroustrup is referring to regarding "better concurrency"? It sounds interesting but it's way too vague.
- steveklabnik 6y agoI believe the big feature slated is executors.
- The_rationalist 6y agoSomething like that? https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Executors.html https://docs.oracle.com/javase/7/docs/api/java/util/concurre... What I would like to see in C++ would be green threads and use of io uring and restartable sequences like in project loom.
- steveklabnik 6y agoYes, same concept. C++20 added coroutines already.
- sprite 6y agoA bit off topic but I didn’t want to make a separate post for this. I want to brush back up on C++ and learn all the modern features. It’s been over 10 years since I’ve touched any C++ and looking for a good book recommendation for someone that’s familiar with many other programming languages and has programmed quite a bit of c/c++ in the past.
- steveklabnik 6y agoThis is a pretty common question on /r/cpp; here's a thread from two months ago on the topic https://www.reddit.com/r/cpp_questions/comments/gs0and/list_of_resources_to_learn_modern_c/ https://www.reddit.com/r/cpp_questions/comments/gs0and/list_...
- pjmlp 6y agoBjarne's Tour of C++ is a good book for it, get the 2nd edition though, as it is updated for C++20.
- ryanianian 6y agoIf you're already familiar with C++ (or just C), Bjarne's blue book is really good, but a bit academic. I'd recommend reading that along with Scott Meyers "Effective Modern C++". I came from knowing only a bit of C++98 from college 10 years ago, read both of those, and now feel like I know C++ (the language) really well. Mastering the STL is step 2. Mastering a (any) build-system is step 3.
- cglezm 6y agoBjarne Stroustrup - A Tour of C++, Arthur O’Dwyer - Mastering the C++17 STL, Jacek Galowicz - C++17 STL Cookbook, Scott Meyers - Effective Modern C++ books also https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md https://github.com/isocpp/CppCoreGuidelines/blob/master/CppC... and https://en.cppreference.com https://en.cppreference.com and the conferences of CppCon in youtube.
- arnarbi 6y agoSecond for Scott Meyer Effective Modern C++. I was in the same situation as you and it seemed like the book was written almost specifically for that.
- diego_moita 6y ago> Once you get users, you have responsibilities, and one of the responsibilities is not to break their code. That is both a good and bad thing. Within both C++ and JavaScript there is a very elegant programming language with powerful semantics. However, there are also a lot of bad solutions and dangerous hacks accumulated. And most of us programmers don't know how or don't have the self discipline to separate the good parts from the bad parts. And sometimes even with the knowledge and self discipline you can't avoid them (e.g: when using someone else's libraries). In some languages (e.g: Lua, Python) the designers are ready to break backwards compatibility. C++ chose not too.
- pjmlp 6y agoHerb Sutter has a nice talk about it, with several examples, expect 10 year adoption delay if breaking features is a thing.
- throwaway894345 6y agoIn addition to libraries, we often have colleagues and persuading colleagues to agree on a which features should be prohibited can be difficult in many organizations.
- deleted 6y ago[deleted]
- vii 6y agoPerl was the #3 language on the Tiobe ranking in 2005. It had massive codebases in banks and other industries. In 2019 it was ranked #19 and the incompatible replacement, Perl6, is #93. Breaking backwards compatibility is hugely costly. It creates immense work as people have to validate that new versions of previously working code meet the implicit, accumulated requirements. Old code will always seem old fashioned. It will not address modern concerns. However, the option to keep using it is very valuable!
- nindalf 6y agoTwo things - TIOBE is meaningless. And secondly, Perl is a valid example, but so is Python. After a 10 year painful transition, Python is more popular than ever. It's used more than any other language bar Javascript.
- yahyaheee 6y ago> I think C++ can do anything Rust can do, and I would like it to be much simpler to use You're going to need to break c++ then. It is so much harder to use than Rust today, I have no idea why anyone would choose c++. The libraries argument is mute because its such a pain to use external libraries.
- arcticbull 6y ago> “I think C++ can do anything Rust can do, and I would like it to be much simpler to use.” I think Bjarne isn't getting the issue with C++. Yes they're Turing-complete, yes they can both solve the same set of problems. The issue is that C++ can do everything that every other language can do, which means it's not a language, it's a universe of features. You make the language by picking which features, patterns, philosophies, architectures you want. It's like if a language dictionary included English, simplified Chinese and Korean. The problem IMO is there's no such thing as C++. Each company, each team, each person has their own. Many of these C++'s are incompatible with each other. Worse, many of the new language features can't be properly implemented because they would break someone else's C++. The problem is it tries to be everything to everyone, and that makes it (and futures standardization efforts) full-on Quixotic efforts. I mean, by all means, have at those windmills tho. Bjarne points out how much he hates templates, and has some great new ideas for generic programming. Lovely, but he's never gonna get rid of templates, so now we have 2 problems.
- deleted 6y ago[deleted]
- whateveracct 6y agoRust actually can do things C++ can't do. People who use Turing equivalence to equate language capability are just uneducated imo. There's another "truth" of PLs: Curry-Howard. So a language with a richer type system can express more propositions than a lesser one. Just because two languages are Turing equivalent doesn't mean they are Curry-Howard-equivalent. So the things some languages can do that others can't happen at compile time. And tbh, you'd probably be better served by a language that isn't Turing complete but allows you to express rich types than a Turing complete language with a bad type system. Very little of people's code needs Turing completeness.
- naikrovek 6y ago> Rust actually can do things C++ can't do. People who use Turing equivalence to equate language capability are just uneducated imo. This is a very myopic view, and misses the point entirely. The entire notion of a "Turing machine" is that any Turing-complete machine can compute any result that another Turing-complete machine can compute. No mention is made of how the results are computed or how the programmer approaches the problem on each machine. Any Turing Complete language can be used to do the same work as any other Turing complete language or mechanism. The expressiveness of any particular language does not factor into the equation at all, and does not matter at all when speaking of what is computable and what is not. You are talking about language features, which is an entirely different topic. All Turing-complete languages are equivalent in terms of their abilities; that is to say that they can all compute the entire set of computable results.
- ryeguy_24 6y ago> "Users spend most of their time on other sites. This means that users prefer your site to work the same way as all the other sites they already know." While likely accurate, this thinking is likely not conducive to UX innovation.
- hu3 6y agoI think you meant to comment in the Laws of UX thread: https://news.ycombinator.com/item?id=24030969 https://news.ycombinator.com/item?id=24030969 Sorry if my assumption is incorrect.
- an_d_rew 6y agoAlso, don't forget that C++ has _age_ behind it. Lots of places are still on arm-gcc-5 because heaven forbid you try to get a new compiler digesting an old code base, then get all stakeholders and customers onboard. I dream of C++20. But my nightmares are all pre-C++14.
- UncleOxidant 6y agoI worked at a place from 2006-2010 that had a lot of C++ code written in the mid-90s (some was even from the early 90s). Templates were not allowed (so no stl) and they used their own container classes that were written in the early-to-mid 90s. We used a version of gcc that was at least 5 years old during the time I was there.
- pjmlp 6y agoAnd that will happen no matter what language, just the other day I was reading about poor souls still having to deal with Java 6 code.
- cletus 6y agoIn Rust, ownership is a compile-time issue. This puts constraints on how you can use references, how ownership is passed around and so on. This programming model has a cost to the user and is probably inherently slower to compile just because the compiler has to do more. But at runtime it's essentially free. C++ on the other hand added a set of primitives starting in C++11 to be explicit about ownership through std::unique_ptr and such. These have a runtime cost and ultimately mean getting locks. I've seen estimates of this cost in the single digit microseconds. Not exactly super-expensive but not free either. There are simply some assumptions Rust can make that C++ can't because certain things aren't possible in Rust. Another example: Rust doesn't have exceptions. Over the years I personally have some to believe that exceptions are largely a false economy (particularly the failed experiment that is/was checked exceptions in Java). Instead Rust has match expressions and enumerated types (with state!) that force you to deal with return types. This BTW is very much what Google C++ looks like. It's even debated if you can ever write truly exception-safe C++ code. This is another problem Rust doesn't have by virtue of not having the feature. Are you starting to see the pattern? C++ has everything in it. That comes at a cost and there's no getting around that.
- quietbritishjim 6y ago> ... std::unique_ptr and such. These have a runtime cost and ultimately mean getting locks. I've seen estimates of this cost in the single digit microseconds. You're no doubt thinking of shared_ptr (which I guess is what you meant by "and such"). That has a reference count, which does not lock but does use an atomic counter with the usual costs that involves. unique_ptr has no such thing and is essentially free.
- eska 6y agoIt's not essentially free https://m.youtube.com/watch?v=rHIkrotSwcc https://m.youtube.com/watch?v=rHIkrotSwcc 17:40
- quietbritishjim 6y agoI'd rather you'd just stated your objection instead of making me watch a bit of video. Thanks for at least including a time stamp. For the benefit of others: Using a std::unique_ptr adds exception handling code to the functions that use it to guarantee cleanup when exceptions are thrown. Of course, that extra code is not actually executed if the exception is not thrown. I was responding to a comment that claimed that std::unique_ptr used locks to transfer ownership, and my objection to that is not disputed by what your saying. You're making the point that exception-safe code is less efficient than exception-unsafe code. I do not know enough about that topic to comment on that matter, I was never trying to say anything about it in my previous comment. But I would like to point out that Rust has an analogue of exceptions: panics (although you can change their behaviour to abort() instead of unwind). So it must have something similar to unique_ptr's unwind handler anyway.
- deleted 6y ago[deleted]
- atombender 6y agoDoes anyone have an example of a large codebase that actually uses modern C++ to its fullest? One of the larges codebases I know about, Chromium, seems to use only a minimum of C++ features. It's mostly limited to 1980s "C with objects" paradigm, plus smart pointers.
- rumanator 6y ago> Does anyone have an example of a large codebase that actually uses modern C++ to its fullest? The point of a language is not to use all the bells and whistles just for the sake of playing language feature bingo. The point of a language is to offer developers the tools they need to use to achieve their goals. Some C++ standards offer stuff that are must-haves, nice-to-haves, and meh. Just because you want to use std::make_unique that doesn't mean you should rewrite your code to get all your lambdas to do return type deduction.
- atombender 6y agoSorry, that's not an answer. I'm asking whether there are any projects that use modern C++ to its fullest. By fullest I don't mean using features for features' sake; that's a ungenerous reading of my comment.
- rumanator 6y ago> Sorry, that's not an answer. I'm asking whether there are any projects that use modern C++ to its fullest. That's precisely the answer, because the question, as you framed it, is absurd. The point of using a language is to benefit from the features it provides. It makes absolutely no sense to argue that a language is not used "to its fullest" if you don't play feature bingo in your projects. That's silly. I'm using C++14 to its fullest if I use std::make_unique even if I use no template metaprogramming or lambdas or even throw exceptions. It makes no sense to argue otherwise.
- atombender 6y agoThat's still a non-sequitur. As an counter-example, it's possible to write conformant C++ without using any features that aren't also in C: I am, objectively, not using C++ to the fullest if I'm restricting myself to functions instead of methods, char pointers instead of std::string, statically allocated arrays or pointers instead of vectors, and so on, thereby ignoring 90% of the spec. If I'm not using constexpr, for example, then I'm using one of less feature provided by the language. Constexpr, like all other modern C++ features not present in "old" C++, was invented to serve a purpose, and without it, you have to reach for more blunt, possibly more verbose and less expressive tools. In other words, many new features (such as ranges) increase expressiveness in a quantifiable manner. I may not need, for the specific program that I'm writing, the full range of features, and may not need constexpr. But that wasn't the question. Again, I'm not asking about egregious use of features of features' sake. I'm asking about examples of projects that use in a positive and not superfluous terms modern features of C++. It's not an absurd question, and your response is just obtuse (and unhelpful!).
- luord 6y ago“I don’t believe that there is or could be a perfect programming language — at least not in the time scale we’re talking about, a few decades or a hundred years. Maybe in a hundred years, but not in my lifetime.” Absolutely agree and wish more people did.
- deleted 6y ago[deleted]
- lajawfe 6y agoHe talks about fixing Exceptions in c++, what is wrong with exceptions in c++ and how would you fix those? Go does not have exceptions, but I don't think Go's method of checking for error on every step and doing early returns is more elegant.