Many people misunderstand it as Rust competitor C++ Replacement When it's really an alternative to massive c++ codebases which can't feasibly migrate to some other language without sacrificing something.
You seem to misunderstand it as a (viable) alternative. Also Rust does have that explicit purpose too. I.e. adding to and replacing parts of "massive c++ codebases which can't feasibly migrate". It's the same goal Zig has with C codebases.
@@nikoladd if rust was really so seamless google wouldn't need to make this. Also I don't think it's viable right now, it's experimental right now. I guess I should have said "..."when it really *aims* to be an alternative...
As soon as rust is mentioned, it always starts a debate. They really like to argue with people It seems. I guess that bad publicity will make people try It and find that they like it ..yeah... that's the strategy.
@@codemastercpp well yes I agree with you that Rust is not seamless conceptually. Actually it places a lot of "coding standards" which are hard to accept by the "free people of the C/C++ land". For all of those restrictions however there are very good reasons. Rust is however drop in replacement CAPABLE, which is the main point and also the real question is: Do you want to solve actual problems? Or you want to write whatever you like, however you like? Rust does provide guarantees. C++ doesn't. Carbon doesn't either.
Does anyone remember which language it was where the person that invented it was turned down for a job because he didn't have enough experience in the language?
Best channel on the internet. The code report is literally how I remain 'in touch' with what's new or trending, letting me focus on the tech stack that matters for my actual work.
The Carbon project advises to use other languages such as Rust, Swift, Kotlin or Go if you can. Their aim is extremely specialized: modernize huge C++ codebases, allowing ABI breakage thus keeping the language flexible. I have seen many complaints about C++ interop on the past, not only from Rust projects but also from many other languages with a solid C FFI. From Python to Haskell. The two main pain points always seem to be exceptions and templates. So, it makes perfect sense for Carbon to support but not encourage these features. With that said, there's a plothole: how did Mozilla use Rust so effectively to build Servo and integrate it with the C++ heavy Firefox? Was it a matter of not having used the problematic features too much in the C++ side? Did they use some inconvenient -for-google interfacing approach? Why can't Google use Rust the same way Mozilla did? Mind you, it's not a lack of liking/support for Rust, as Google belongs to the foundation and also has started using Rust in Android.
Zig is quite nice for interop with C or C++ as well but it's not stable yet. However it's tooling is already being used in prod at Uber and Cloudflare: ruclips.net/video/SCj2J3HcEfc/видео.html
My biggest gripe with carbon is syntax. It feels like there's so much fluff and it looks horrendous. Call it superficial, but ugly syntax is unpleasant to work with.
Yeah, you know.. why do they have to change the basics.. Like `typename varname = value` in C++ over to `var varname: typename = value` in Carbon? What was wrong with the other syntax? Why couldn't they just use mostly the same syntax, but just REALLY improve on it?
@@rameynoodles152 This 'new' syntax just looks and reads like Pascal. That brings so many memories back from the 1980s... :) I can imagine separating the name and the type makes writing and decyphering some complex declarations a bit easier, e.g. the famous 'signal' function in C: void (*signal(int sig, void (*func)(int)))(int); (No, I don't know how this is going to be declared in Carbon--yet) But even extreme cases like the one above can be simplified in plain C or C++: typedef void (*sighandler_t)(int); sighandler_t signal(int signum, sighandler_t handler);
Java said the same thing years ago. Even C++ had the same ideology when it wanted to replace C and even probably has the best interop. Carbon doesn't create anything new. Almost all the next stuffs they added was added in C++20 or coming to C++23: Concepts and Modules are two such examples. Replacing TypeScript with JavaScript works as almost nothing is lost during the migration as TypeScript superceeds JavaScript, AND ALSO, the creators have access to the virtual machine onto which the code is executed. How do you intend to replace C++ in the embedded System community? Would you rewrite all the versions of the g++-arm, avr-g++, microcrip compilers in Carbon? For every microcontroller? Personally, i think replacing C++ is too hard. You either create a language that finds its audience in a specific field (Goland for web development - Subcategory Dev Ops, C# GUIs on Window + Game development, Java for enterprise and university) or get ignored.
the fact that plethora of language pop out show how bad c++ is.. (rust, zig, odin, hare, jai, jakt, etc ) spec doesnt matter much.. the language getting complex with every iteration...
@@_slier Actually, it is the opposite. C++ is actually a great language. If perfection was obtainable, i would say C++ was perfect. See for example, almost all of those language creators were C++ enthousiasts or lovers at one point in time. The language is so good that its developpers get the skills from it to create new ones. Moreover, it shows how verstile the langugae is: Embedded system, Webservers, databases, scientific programming, machine learning, game development, ... . No PHP developper has created a language even though PHP is know as a crappy language. The fact that C++ has survived so long without any huge company backing it up, shows how strong the language is. I however just wish, it gets with the time with proper support for concepts, modules in the standard library and for the love of God, a freaking package manager (or at least recommended or endorse one). A package manager would solve so many problems in this language man.
You don't understand compilers. LLVM is the solution to your microchip problem. Languages don't compile from top to low level in one step, they use many intermediate representations. Which is where LLVM comes in, it offers multiple IRs targeted compilers of many languages, including C++, Rust, Java, Haskell, OCaml, C, etc. once you properly target the proper llvm IR, you can use that language for any backend bytecode that thr llvm IR compiler supports.
@@_slier no it just shows how people are too stupid too code and dont understand C++. so o combat their inferiority complex they have to create a new language that is dyslexic, for example the "fn" keyword that has no place anywhere at all, both mozilla and google are up to something no good.
Makes sense for Google to take this step. Their chrome and chromium codebase is huge. They already have some top of the shelve programmers, why not use them to address c++'s shortcomings
@@Iverass As mentioned in the video, the language is bloated, new unnecessary features get added every year, leading to a lack of standardization that may have severe repercussions for maintaining and developing large codebases.
@@Iverass Not everyone can be a unicorn. Modern computation requires a team of people working around the clock and around the globe. Not everyone can spend massive amounts of time trying to understand a language. The world we live in is fast-paced. Relying on a small group of people who really know all the quirks of C++ is counter-productive. The solution is to build a new language that addresses these shortcomings of a language with modern programming language mechanisms. Quit being so hostile to ideas, relying on one way of doing things is staggnation.
@@_orangutan To add to this: I was talking about Google specifically, but for Chromium, for example, even their above-junior level devs hesitate here and there with the kinks of the language (from what I could tell from their instructional videos). Plus, in the case of Chromium itself, they also rely on open-source and accept contributions from companies outside of Google. And then there are surely areas involving C++ where the strength of the professionals is not in programming itself - for example data scientists and AI specialists. I agree with the general point that language readability and reasonability is always important, just wanted to add more detail for this to be important for Google.
although carbon lang is quite an impressive advancement, to say it will ‘kill’ or make c++ useless is reaching and will very likely not happen; people always say a current language will die when new ones come out, but more often than not, they don’t
@@ubayabdelgadir4165 it was more of a general statement, i've been seeing a lot of people seriously calling it the 'c++ killer'. i agree with everything he said in the video lol
you say that but who are the people using javascript over typescript, I feel like for any new thing built a solid 8/10 times it's gonna get built with typescript.
@@hydradragonantivirus As a matter of fact, I will write the “AI” that you will also use in 10 years - I had the “AI Dream” 🐼
2 года назад+73
The fact that you need a VERY specific version of LLVM to build it and that it uses Bazel as a build system, I don't think this'll kill anything any time soon
"If you've ever seen a C++ hello world that uses this cout BS, then it looks like a revolutionary improvement" I nearly spit out my drink, thank you for saying the truth :)
Rust has a completely different use case compared to carbon. Carbon is made to replace c++ (brownfield), Rust is made to build new systems (greenfield). So while Rust can replace c++, it's definitely not retrofitting c++ bases in the way carbon will.
I don't _like_ C++, but over the past thirty-odd years I've seen so many self-proclaimed "C++ successors" come and go that it's hard to get excited. Like, sure, maybe this is The One To Actually Do It™ and I'd love nothing more; I just don't really want to count my chickens before they hatch, y'know.
I highly doubt it First thing that comes to mind is the video game industry, it seems to me like trying to move onto a new language on top of all the problems they're trying to solve doesn't sound like something that will happen in the industry as a whole
after all these years c++ is improving and growing in its own way ... carbon is still experimental and has long way to be a true successor. so far none are even close.
This was my attitude when it came to picking angular v1 (around the time when angular 2 came out) vs vanilla js with some strict design rules. Also xamarin when apple pulled their support for it when picking a platform for mobile. I tend to stick with KISS "keep it simple stupid", it's much harder to find resources when you over complicate the platforms. Sure there are some pros you miss out on, but atleast I can still support native a lot better than some fancy new language that has a fraction of the developer base.
Most of the problems I've seen in production C++ code are issues that code be resolved by better coding practices. Too many C++ guys are living in a world of excessive OOD and OOPS.
As far as I understand, golang 2 would break the go programming paradigm so much that internal devs lost interest in it for now. The go 1 itself is quite frequently released, although not as frequently as rust but remember that rust is community project but golang is google internal led project.
Google killed off projects that didn't work out. Is that such a surprise? Golang isn't going anywhere soon because it's been thriving. Stop living under a rock.
It's so early in development that it's not the question if it kills C++ or not, the question is if it's dead on arrival or not. And it can't be answered because reading the issues it seems the only thing certain is its name and build system of the compiler.
You could also use Zig to interop with C++ and migrate the codebase over time, but I guess Google wants to have their own language so they are in control. Many of proposed ideas for Carbon are already in Zig, even syntax is similar. Biggest difference is that Zig strives to be simple, where they want Carbon to have generics, overloading, inheritance and few other things to make C++ devs more comfortable.
Nah. Zig, Odin, Hare, etc. don't have the primitives to express a lot of C++ idiosyncrasies. Interfacing with C++ is different and harder than interfacing with C.
1:01 Overlooking the fact that C++ is already so insanely complicated to begin with, that it becomes exponentially harder to add new features without tripping over undesirable interactions with existing ones. Python 2→3 was one big bang of breakage, and evolution since then has been able to proceed much faster with minimal backwards-compatibility trouble.
Rust is a neurotic language for neurotic people, and it just so happens that people who are going to respond to a survey on the single most toxic website on the internet are the same people who want that kind of language.
i'm still trying to learn c++ it's also the first programming language that I really tried to learn and I love it, the sad part is that for actually being hired in a job as a c++ developer you need to know so much and have years and years of experiencie, it makes me sad
@@ohwow2074 Yeah I know, I just find it crazy that some people say "Oh I'm not expierenced enough to use C++" and Im over here and its the first lang I learned.
From a non-coder myself (I do know some code, not enough to make me market-grade) I truly hope not. The least we need right now is Google having full control over something so very much important as it is C++.
@@Rugg-qk4pl I hope it would be free and open source, which will be no way towards proprietary and close source in the future. I would not imagine the future when Google charges law suit for programming language “misuse”.
@@Rugg-qk4pl it does not matter being open source if, at the end of the day, Google does have full control over it. Android is open source, yet, as it is, you are extremely dependent of every Google app, as you need to cover functionality that should be part of the base OS but Google decided to axe from the project, like a browser, phone dialer, contact list, simple calendar or mail app. Conflict of interests. You also have Chrome and Chromium, where, as much as Chromium is open source, everyone else's has to play by whatever rules Google put on Chromium (derivative browsers too). 2 examples of this: hardware video decoding for older Intel iGPU's on linux. People made it work properly and well, were willing to maintain it and were willing to have it disabled by default (as it is not "supported by google" itself) but someone from Google said no and that was the end of it. The change to extensions that Google is planning to do just to neuter adblocks (TL.DR.: they say is for security, but it does not increase security in a big and meaningful way vs what you are losing overall) Almost everyone but Google was against it. But it is going to go through anyways, since Google can now use that hole to push his ads and tracking. And I am not going toeven touch their "cookie replacement" bs. Problem is not open source or not, problem is who controls what. Google controlling the low level language used in every aspect is the big, big problem.
- Google'll not control C++, Carbon is another language backward compatible with it, but the ISO'll continue to mantain C++ standard apart - What spooky things can Google do just controlling the syntax of a language? To be an usable replacement of C++ the compiler must be open source and wihout google extra "imposition" in the compiled code
@@freemansfreedom8595 -browser, phone dialer, contact list,calendar and mail apps are not part of an OS they're external programs -an android phone can be completly de-googled with foss alternative of basic ( and non-basic ) apps like f-droid, and can be completly functional with a google core services replacement like micro-g
Actually what you call "a cout BS" is a kinda straightforward way to work with a stream. It's not the easiest thing to understand, but beginners can just learn it without knowing how that really works. There's always a printf/scanf solution for those who don't know or like cout/cin.
What sucks about cout is how extremely common it is in virtually every single beginner tutorial, while also bearing essentially no similarities to beginner level code. Print() is a normal function that looks like anything else. Forcing beginners to immediately be introduced to operator overloading and streams kind of sucks. I don’t mean to disparage c++ by this, btw. I’m not saying the language should have been designed around beginners. But cout is a weird hurtle regardless both for brand new coders and programmers used to interacting with the console in _most_ other established languages.
@@bass-tones tbh, if "cout" is hard for beginners, than it's a good indicator to choose another job right now industry suffers from endless stream of helloworders, which makes changing company/project huge pain, since you might end up in complete mess easily, no matter how everything looks on a surface so sometimes having higher learning curve might be good but that's just my grumpy opinion after conducting 20+ performance reviews this year, and having only one person out of 20 to actually know stuff. so might be a bit disappointed
Actually C# has caught up to C++ in More way than One Go and Look at the Stats and See C# is one of the Top languages. That Programmers Use. In game Development. And for Backbend Development and a Variety of other things to. C ++ Has to many Brackets and for one Command you need tons of Code to do One thing. Thanks for the info But I will stick to C# and the dot net Eco System sorry to burst your Bubble I love C# I am a die hard fan of the Language even if Google Makes a new Language Called Carbon to Revive C++ So Well that My Answer to C++ and Carbon..
Ik C# can be used almost everywhere, and the game, fully written on this language, but instead of approving C++ I would say "every language created for its purpose, some of them good, some bad, some are bad attempts to replace old". That's my opinion :)
Looks interesting, but I'm not exactly a fan of it's syntax, especially for generics. I understand > and < have more uses in C++ land than in other languages, but using them for generic type arguments has become pretty standard. Using ( ) is especially confusing since it reads as a constructor to me. Idk, maybe C# and Java have just rotted my brain.
It's not ambiguous with constructors, since there are no constructors in Carbon! (Instead, like Rust, you can use factory methods of the class to create objects.) It is ambiguous with a function call, but I think it's supposed to be. They're trying to somewhat go along the "types are compile-time values" and "generic types are compile-time functions" path (though not as hard as Zig did, given that Zig generic types literally are just functions of comptime parameters).
Used C/C++, C#, and Java over the past 20 or so years, and recently js at my current job.. I've noticed the syntax of all these new languages like rust, go, carbon, and many others try to go out of their way to not align with most common languages syntax and it makes it really off putting to even want to try them.
Alright, I'm interested I kinda dig the "var : " declaration syntax and how all programming languages attempting to look cool and modern use it now, is there some advantage to this over " "? I guess it looks more like what one would expect a "declaration" in general to look like, but I dunno
It did feel nicer for me when i used it for 12 months doing ios development. In functions you can pass default values and things like that where the colon is good for visual separation.
I guess it because of the generic type syntax, declare type after using it is kinda weird (T something[T: ! Type](x : T){...}) so they come up with fn something[T: ! Type](x : T) -> T {...}, because of this, everything has to be declared with this style for consistency
It avoids the most vexing parse. In C++, certain statements you would expect to be a form of direct initialization are actually function declarations. I'm pretty sure the problem exists in C as well, but its less of a problem over there.
Guys, I don't know why, but for some reason, languages just get relevance when there is some web bullshit related with it With that in mind, I'm already making a brand new backend framework, that is completely written in Carbon and I will call it Cooal
@@chadsworthgigafuck7076 inhouse team explanation (local knowledgebase), I'll be posting on my blog in a week or two on it. I'll reply the link to you :D.
As a rust fanboy myself, this is pretty nice, because rust really sucks for that usecase. Proper bindings etc. can make C++ code accessible, but it's just something else, and not designed for interoperability. Really looking forward to carbon because C++ could realllly use an upgrade lol
As another Rust fanboy I have to agree, I think Rust was never meant as a C++ replacement, it's more geared towards C imo. (I don't say it's not a good alternative to C++, but I think C programmers will have an easier time adapting because they don't have to unlearn 70% of their language)
@@m.sierra5258 As a C++ fanboy. I 100% agree. Ignoring googles habit of abandoning projects left and right. I don't know how well it will do; and miles away from being ready. There have been some outstanding languages that have all but died who have tried to do what Carbon is setting out to do. The D programming language is lovely, very memory safe. Doesn't have the crazy template system. Tries to be constant expressions by default. And was built with (at the time) c++ interop. When D was released it was 100% better than C++.
I think the real advantage of C++ is -- the committee. It doesn't provide a compiler, so there are 3 really good ones. It also looks carefully at what C++ needs and steals things from other languages.
"There are 8 different successors to C++" Google: "We are making the best successor of all" "Now there are 9" (the 8 is a some number I chose, since I have no ideas how many successors are there for C++)
I think it's a good idea to create a language that is more modern than C++, but that can also work well with it. C++ is my go to language for many projects I like working on, but I am totally down for learning one that's similar but more modern.
Oh boy how I remember all this Python 2 vs Python 3 fight and that some people were really saying they would want to give up Python entirely because version 2 would be deprecated in the (back then) nearby future. And now what? Python is much more alive than ever, noone is talking about why "Python 2 is so much better than 3" and so on. The world just moved on and so should have C++ but it just never did, because someone wanted to keep the compatibility to "C with classes".
Java is always the language that you can love or hate or love to hate. I personally love it. People complain about: public static void main(String[] args) , but guess what... I wrote that once 10 years ago😄
@@EightSQ yeah I did 🤣, probably I got used too much to an IDE writing everything for me . And that is one thing i like about forcing return type on methods, it makes the developer think and know if this method is returning something or maybe just mutating state, etc.
What I'd really love is something as easy as maven or similar dependency management that also works multi platform. Honestly learning and setting up cmake for various platforms is in my experience as painful as it gets, and in my experience rarely worked out the box unless it was Unix and my dice roll hit a 6. I know that is part of why people like cpp, the amount of control you have. But it's simply outdated, unintuitive for newer developers and often just simply overcomplicated
I don't like CMake too, it almost feels as if it's compiler scripting. You need to have the complete idea how your project is built, it's like a system of macros for compiler options and flags. What I think is that you will like Bazel: it's Google's cross-platform build system that works across different languages, and it is rock-solid with C++. You literally just put a single WORKSPACE file in the root of your project and for every target (executable or library), you make a separate BUILD file where you tell the target, its source and header files, visibility and dependencies, and Bazel will do it. It felt for me really reliving to switch to it.
Kotlin will never kill Java. Sorry mate! I’ve been in the corporate world developing applications in Java and most other guys haven’t heard of Kotlin. It’s only going to be a niche language like other JVM languages.
The programming languages mentioned in the beginning - JavaScript and Java - are far from being "killed" by their more younger rivals (TypeScript and Kotlin): It's just plain lie. Both languages keep evolving, getting new features and improvements etc.
I think that's just a joke about how not every language that claims to be a "successor" of something can actually succeed in establishing the dominance
@@adamkostrzewski4982 “ugly fn and let” ah yes, because “const auto x =“ is so much prettier than “let x =“, gotcha just admit you’re used to the old syntax and dont wanna change anything or bother trying anything new, its ok. i was the same way too
Okay but std::cout IS objectively the idiomatic C++ way of printing. You do you. And while, yeah, bit shifting has nothing to do with input/output streams, the bit shift operators do indeed look like arrows to and from the streams. They make some intuitive sense, at least enough to not warrant boycotting it lol.
Modern languages can never kill the older languages, assembly is still extremely useful as is c, java, and I hate to say it but even c++, most modern languages are more like big wrapers to make certain programes faster and easier to write, don't pick one language lean as many as you can there's knowledge in them all, especially the older languages they will give you the bigger picture and alow you to lean other languages faster it's all the same under the hood
I looked into this as part of creating my programming language - qat. Templates are for compile time, Generics are for runtime. Templates limits the different variations of functions and types to those you specify in your codebase. Generics makes it possible to spawn new variations of the functions and types during runtime. Templates are static, Generics are dynamic. Concepts in C++20 are used to specialise template type arguments. In simpler words, you can tell the compiler that a template type should have certain characteristics. A minor variation of this is already present in slightly different forms in languages like Rust and Dart.
@@aldrinmathew Generics in Java and c# are compile-time only. Method versions for specific types are generated when you compile, based on which types you actually use.
@@aldrinmathew I'm trying to understand why the video says that generics are "better". Is it just because of code bloat issues? Or because the error message for templates are long? I've worked with both, and I agree that c# generics are easier to write, but I felt much more power with cpp templates.
I feel like C++ is kind of like WoW back then lol "Oh, this is gonna be the WoW killer" "okay...maybe THIS will be the WoW killer!" "no, no... THIS ONE will actually be the WoW killer!" sure, C++ has its faults but it's still a good language. I actually use C more often than C++ but I can still appreciate C++ for what it is. I don't really care for the trendy new languages that try to solve problems I don't have.
Rust is a C remplacement, it doesn't care about C++ most of the time, though it can interop with C++ as well because it's important, the C++ interop is not as clean since Rust doesn't support inheritance (by design) and C++ end up being just a blop of data that you need to control.
Nim would be pretty cool to see. Its macro capabilities are kinda wild, as is the fact how easy it is to pick up compared to other languages in the league.
What you describe at 2:34 is actually far worse. Those two lines of code are undefined behavior, meaning that just because they exist in a program, it would be perfectly compliant for the program to do anything (such as crashing in a separate area, deleting files, or bricking the machine).
Bruh that's not how it works. You can't delete System32, brick the machine, etc. JUST by printing an uninitialized variable. From what I know, there's nothing wrong with reading a value at a random address (as long as your program is allowed to access it). The danger develops if the address contains a function pointer and you accidentally call it, potentially calling a malicious function, and that is IF the value at that address is a pointer anyway. Also considering that you stored the value in a uintptr_t or a data type capable of storing addresses.
Well... Not sure that it'll be a "killer" of C++, probably more like alternative with convenience of using C++ libraries. It's hard to kill a pillar on which everything is standing right now (I'm talking about C as well)
All I want is a language which makes multithreaded code seamless. All computers have multiple cores, though very little code takes advantage of that. The reason is that it's rarely worth it to spend the extra effort optimising code unless the application is very performance sensitive. The solution is a language which makes writing multithreaded code about the same effort to write as single threaded. The only example I know of is C# with the parallel for loop, which is amazing.
Well, kind of hard to make sequential and parallel code feel the same way when written. Though i feel as if rust does a good job, with stuff like the async ecosystem and rayon.
Seamless? I'll take safe as a first step, and an abstraction which allows for software architecture which works well with the hardware at hand and gives you an adequate amount of control. To consider that you want something to be seamless which is fundamentally not, there is a seam, it's baked right into the hardware, due to the cache coherence problem and aliasing. So it's easy to come up with code that is much slower multithreaded than single threaded even when correct. As to parallel For? Basically an OpenMP primitive.
The C++ interop goal is huge, and probably only possible/feasible thanks to LLVM/clang, which establishes a cross-platform C++ ABI. I wish that Rust would adopt a similar goal. I also wonder how Carbon will interop with Rust, since Google is a member of the Rust Foundation as well.
How will the interop work without support for exceptions? Carbon's doc on error handling forbids errors via exceptions and instead the function author presents errors through the return type, because "in many cases, the function author wants these failures to be recoverable." Unless LLVM/clang are capable of performing some magic I'm not aware that rewrites the supported exception-handling implementations AND keeps the program semantically consistent, I don't see how Carbon is going to support full, bidirectional interop short of asserting that exceptions don't exist and anyone that says otherwise is invoking undefined behaviour (which, to be fair, is Google's current stance anyhow).
2:09 how is that crap a big improvement over cout? First off, they replaced function return types with a function keyword... Why? Also, it's just "fn" to look even more awkward next to a capitalized Main() function name... Then you have var, something I'm not necessarily against, but it's followed by what looks like a variable name, a colon for some reason, then the keyword auto? And then the classic = for assignment. Then a capitalized Print() function and finally a return 0 to match the "i32" type... I can see why this is the future 😂
"Employers are already looking to hire Carbon developers, you just need to have 10 years of Carbon experience to apply." TOO REAL
It's called marketing. They post fake jobs in freelancing sites. Go search for flutter jobs you will understand.
For a junior position too 😳
Don't forget "C++ experience doesn't count"
"Why arn't we getting any applicants?"
For slightly above minimum wage. They are junior devs, after all
"Now, I've only been coding for about 12 years, which isn't nearly enough time to learn C++..." 😂
I literally laughed out loud with that on HAHA
Enough time to learn 100 FE frameworks
24 of C++, I had to look up std::span today.
Dude, first I laughed. Then I cried 😄
@@joshuaunderwood7 to be fair std::span is a new feature in C++20
Many people misunderstand it as
Rust competitor
C++ Replacement
When it's really an alternative to massive c++ codebases which can't feasibly migrate to some other language without sacrificing something.
You seem to misunderstand it as a (viable) alternative. Also Rust does have that explicit purpose too. I.e. adding to and replacing parts of "massive c++ codebases which can't feasibly migrate". It's the same goal Zig has with C codebases.
@@nikoladd if rust was really so seamless google wouldn't need to make this. Also I don't think it's viable right now, it's experimental right now.
I guess I should have said "..."when it really *aims* to be an alternative...
As soon as rust is mentioned, it always starts a debate. They really like to argue with people It seems. I guess that bad publicity will make people try It and find that they like it ..yeah... that's the strategy.
"without sacrificing something"
Mostly their maintainers sanity... ;-)
@@codemastercpp well yes I agree with you that Rust is not seamless conceptually. Actually it places a lot of "coding standards" which are hard to accept by the "free people of the C/C++ land". For all of those restrictions however there are very good reasons. Rust is however drop in replacement CAPABLE, which is the main point and also the real question is: Do you want to solve actual problems? Or you want to write whatever you like, however you like? Rust does provide guarantees. C++ doesn't. Carbon doesn't either.
TIP: If you start coding today in Carbon you can say in an interview "I have been coding in Carbon since it's very inception"
Does anyone remember which language it was where the person that invented it was turned down for a job because he didn't have enough experience in the language?
@@FraggleH idk but I'm sure that this happened, those hiring hags would def do that
And if you just started programming, you can say "I've been coding in Carbon in my whole career".
@@FraggleH It was a Javascript library whose inventor got turned down for "not having enough experience" in it :D
I forgot which it was though
@@FraggleH It was FastAPI, Sebastián Ramírez was the creator
His ending touch with that 10 years experience is just PERFECT
and its for a junior dev position 🤦♂️
I always thought that "must have 5 years of experience in [BRAND NEW TECH]" is a meme. Guess I was wrong.
@@gfrewqpoiu, it *is* a meme … Why do you think you were wrong?
@@seanvogel8067 You’d be surprised what you find on LinkedIn when recruiters with no CS background post job listings
@@gfrewqpoiu I wish it was just a meme
Best channel on the internet. The code report is literally how I remain 'in touch' with what's new or trending, letting me focus on the tech stack that matters for my actual work.
Woah, you don't learn every new stack released? That's a huge sin.
@@Yassir.A.P. hahahahah 😂
@@Yassir.A.P. at least know it exists
I would love a news report in how he col info and makes those reports
The Carbon project advises to use other languages such as Rust, Swift, Kotlin or Go if you can. Their aim is extremely specialized: modernize huge C++ codebases, allowing ABI breakage thus keeping the language flexible.
I have seen many complaints about C++ interop on the past, not only from Rust projects but also from many other languages with a solid C FFI. From Python to Haskell. The two main pain points always seem to be exceptions and templates.
So, it makes perfect sense for Carbon to support but not encourage these features. With that said, there's a plothole: how did Mozilla use Rust so effectively to build Servo and integrate it with the C++ heavy Firefox? Was it a matter of not having used the problematic features too much in the C++ side? Did they use some inconvenient -for-google interfacing approach? Why can't Google use Rust the same way Mozilla did? Mind you, it's not a lack of liking/support for Rust, as Google belongs to the foundation and also has started using Rust in Android.
Zig is quite nice for interop with C or C++ as well but it's not stable yet. However it's tooling is already being used in prod at Uber and Cloudflare: ruclips.net/video/SCj2J3HcEfc/видео.html
People in Google may have the same thought as you, but they just belong to other teams, and are unable to express their ideas on this project.
Google reward system encourages the managers to launch new products. It doesn't matter how needed they are or how well they will be supported
Servo is like dead project already.
@@hilmyakatsuki1665 They integrated it in Firefox
That job posting was too funny man, thank you for this code report, amazing work as always.
I can draw in Photoshop. Should I apply?
@@lubricustheslippery5028 no, you need 3 years experience in paint
My biggest gripe with carbon is syntax. It feels like there's so much fluff and it looks horrendous.
Call it superficial, but ugly syntax is unpleasant to work with.
Yeah, you know.. why do they have to change the basics.. Like `typename varname = value` in C++ over to `var varname: typename = value` in Carbon? What was wrong with the other syntax? Why couldn't they just use mostly the same syntax, but just REALLY improve on it?
You will accept it anyways cuz cmon brrrrooo, guouugle brooo, totally pounds c++ broooooo.
Same vibe. Everything feels backwards.
@@rameynoodles152 This 'new' syntax just looks and reads like Pascal. That brings so many memories back from the 1980s... :)
I can imagine separating the name and the type makes writing and decyphering some complex declarations a bit easier, e.g. the famous 'signal' function in C:
void (*signal(int sig, void (*func)(int)))(int);
(No, I don't know how this is going to be declared in Carbon--yet)
But even extreme cases like the one above can be simplified in plain C or C++:
typedef void (*sighandler_t)(int);
sighandler_t signal(int signum, sighandler_t handler);
I am with you. I prefer C++ syntax over Typescript syntax.
Java said the same thing years ago.
Even C++ had the same ideology when it wanted to replace C and even probably has the best interop.
Carbon doesn't create anything new. Almost all the next stuffs they added was added in C++20 or coming to C++23: Concepts and Modules are two such examples.
Replacing TypeScript with JavaScript works as almost nothing is lost during the migration as TypeScript superceeds JavaScript, AND ALSO, the creators have access to the virtual machine onto which the code is executed.
How do you intend to replace C++ in the embedded System community? Would you rewrite all the versions of the g++-arm, avr-g++, microcrip compilers in Carbon? For every microcontroller?
Personally, i think replacing C++ is too hard. You either create a language that finds its audience in a specific field (Goland for web development - Subcategory Dev Ops, C# GUIs on Window + Game development, Java for enterprise and university) or get ignored.
that's legacy code. They'll support that tech for so long.
the fact that plethora of language pop out show how bad c++ is.. (rust, zig, odin, hare, jai, jakt, etc ) spec doesnt matter much.. the language getting complex with every iteration...
@@_slier Actually, it is the opposite. C++ is actually a great language. If perfection was obtainable, i would say C++ was perfect.
See for example, almost all of those language creators were C++ enthousiasts or lovers at one point in time. The language is so good that its developpers get the skills from it to create new ones. Moreover, it shows how verstile the langugae is: Embedded system, Webservers, databases, scientific programming, machine learning, game development, ... .
No PHP developper has created a language even though PHP is know as a crappy language.
The fact that C++ has survived so long without any huge company backing it up, shows how strong the language is.
I however just wish, it gets with the time with proper support for concepts, modules in the standard library and for the love of God, a freaking package manager (or at least recommended or endorse one). A package manager would solve so many problems in this language man.
You don't understand compilers. LLVM is the solution to your microchip problem. Languages don't compile from top to low level in one step, they use many intermediate representations. Which is where LLVM comes in, it offers multiple IRs targeted compilers of many languages, including C++, Rust, Java, Haskell, OCaml, C, etc. once you properly target the proper llvm IR, you can use that language for any backend bytecode that thr llvm IR compiler supports.
@@_slier no it just shows how people are too stupid too code and dont understand C++. so o combat their inferiority complex they have to create a new language that is dyslexic, for example the "fn" keyword that has no place anywhere at all, both mozilla and google are up to something no good.
Makes sense for Google to take this step. Their chrome and chromium codebase is huge. They already have some top of the shelve programmers, why not use them to address c++'s shortcomings
Get an Iran IP Address With a VPN, then you can not download and use google products. Like Android studio, Golang Many Play store apps. GOOGLE IS EVIL
I don't understand what you mean by "C++'s shortcomings"... Step 1. Know what you're doing. Step 2. Code c++
@@Iverass As mentioned in the video, the language is bloated, new unnecessary features get added every year, leading to a lack of standardization that may have severe repercussions for maintaining and developing large codebases.
@@Iverass Not everyone can be a unicorn. Modern computation requires a team of people working around the clock and around the globe. Not everyone can spend massive amounts of time trying to understand a language. The world we live in is fast-paced. Relying on a small group of people who really know all the quirks of C++ is counter-productive.
The solution is to build a new language that addresses these shortcomings of a language with modern programming language mechanisms.
Quit being so hostile to ideas, relying on one way of doing things is staggnation.
@@_orangutan To add to this: I was talking about Google specifically, but for Chromium, for example, even their above-junior level devs hesitate here and there with the kinks of the language (from what I could tell from their instructional videos). Plus, in the case of Chromium itself, they also rely on open-source and accept contributions from companies outside of Google. And then there are surely areas involving C++ where the strength of the professionals is not in programming itself - for example data scientists and AI specialists. I agree with the general point that language readability and reasonability is always important, just wanted to add more detail for this to be important for Google.
I wake up every morning longing for another Code Report.
although carbon lang is quite an impressive advancement, to say it will ‘kill’ or make c++ useless is reaching and will very likely not happen; people always say a current language will die when new ones come out, but more often than not, they don’t
He was just joking, I think
more clicks
@@ubayabdelgadir4165 it was more of a general statement, i've been seeing a lot of people seriously calling it the 'c++ killer'. i agree with everything he said in the video lol
Assembly, cobol, pascal
you say that but who are the people using javascript over typescript, I feel like for any new thing built a solid 8/10 times it's gonna get built with typescript.
I started coding in ’82 - the problem that I stopped coding in ’90. I promise I will re-start if Carbon comes out.
"Back in the days of Assembly we didn't care about simplicity, only performance"
Damn youre old no offense but thats honestly pretty cool
@@ABQ1247 Exactly, I don’t have that many years left that I could even burn out as a programmer
Can you write effective antivirus.
@@hydradragonantivirus As a matter of fact, I will write the “AI” that you will also use in 10 years - I had the “AI Dream” 🐼
The fact that you need a VERY specific version of LLVM to build it and that it uses Bazel as a build system, I don't think this'll kill anything any time soon
Just what I need: installing yet another build system.
"If you've ever seen a C++ hello world that uses this cout BS, then it looks like a revolutionary improvement"
I nearly spit out my drink, thank you for saying the truth :)
honestly cout is pretty useless for most use cases, c-style printf is way cleaner imo
Std::print() or fmtlib
The only thing worse than std::cout is std::cin
@@ccgarciab it's ugly as cin.
Operator overloading is such a meme
Welcome to the long list of C++ killers... Rust, Go, and uh Carbon?
C++ :D
I think Go is C killer, not C++
Rust, Odin and Zig are the best candidates IMO. Zig is getting really big really fast.
Rust has a completely different use case compared to carbon. Carbon is made to replace c++ (brownfield), Rust is made to build new systems (greenfield). So while Rust can replace c++, it's definitely not retrofitting c++ bases in the way carbon will.
Well, dont forget D, Zig, V, Jai...
I don't _like_ C++, but over the past thirty-odd years I've seen so many self-proclaimed "C++ successors" come and go that it's hard to get excited. Like, sure, maybe this is The One To Actually Do It™ and I'd love nothing more; I just don't really want to count my chickens before they hatch, y'know.
It can be, as google can just say: "You WILL use it on Chrome. Like it or not"
I highly doubt it
First thing that comes to mind is the video game industry, it seems to me like trying to move onto a new language on top of all the problems they're trying to solve doesn't sound like something that will happen in the industry as a whole
There is no spoon 😂
after all these years c++ is improving and growing in its own way ... carbon is still experimental and has long way to be a true successor. so far none are even close.
This was my attitude when it came to picking angular v1 (around the time when angular 2 came out) vs vanilla js with some strict design rules.
Also xamarin when apple pulled their support for it when picking a platform for mobile.
I tend to stick with KISS "keep it simple stupid", it's much harder to find resources when you over complicate the platforms.
Sure there are some pros you miss out on, but atleast I can still support native a lot better than some fancy new language that has a fraction of the developer base.
50 years later
Now this "C++ Killer" will finally replace it, with even more terrible syntax and centralised package manager!
Most of the problems I've seen in production C++ code are issues that code be resolved by better coding practices. Too many C++ guys are living in a world of excessive OOD and OOPS.
*most production code in most languages.
I’m always so nervous to invest time with Google projects. They have a tendency to abruptly stop active support…
What happened to Go?
go is still going strong. Anyway this isn't a google project per se, it's just been launched by google engineers.
Go still active and today much project written in Go.
Google has a better track record with developer-oriented products. As far as I know, Angular is still going strong despite its dwindling popularity.
As far as I understand, golang 2 would break the go programming paradigm so much that internal devs lost interest in it for now. The go 1 itself is quite frequently released, although not as frequently as rust but remember that rust is community project but golang is google internal led project.
Google killed off projects that didn't work out. Is that such a surprise?
Golang isn't going anywhere soon because it's been thriving. Stop living under a rock.
Better naming alternative would have been C-+, C+-,C+++ or C*/--+.
++C
C^2
@@UtkarshUpadhyayTheGreat C^C
C#2
C+C (C plus C)
Soon on every job listing:
Carbon - 10 years of experience required
And then they cry out "We can't find any new hires!"
"10 years of experience" has become an ascended meme
I wouldn't think Kotlin replaced Java. Java is still going strong.
Right, but Kotlin more flexible.
Yeah, in the third world
Kotlin replaced Java in Android development and it was made to do that.
@@Frewition how many dev's uses kotlin for backend?
So is JavaScript. The X is dead meme is nonsense.
Tech companies love making their own languages
NIH syndrome.
yet they don't hire anyone efficient in Lisp!
It's so early in development that it's not the question if it kills C++ or not, the question is if it's dead on arrival or not.
And it can't be answered because reading the issues it seems the only thing certain is its name and build system of the compiler.
You could also use Zig to interop with C++ and migrate the codebase over time, but I guess Google wants to have their own language so they are in control.
Many of proposed ideas for Carbon are already in Zig, even syntax is similar. Biggest difference is that Zig strives to be simple, where they want Carbon to have generics, overloading, inheritance and few other things to make C++ devs more comfortable.
Dlang also has C++ interop, so that can also be another option for ppl looking to move away from C++
Google on its way to create another useless language
I kind of imagine generics are a necessary feature if they wanted to eg write any of their libraries in SuccessorLang
Nah. Zig, Odin, Hare, etc. don't have the primitives to express a lot of C++ idiosyncrasies. Interfacing with C++ is different and harder than interfacing with C.
This is what I was saying, this shit sounds like zig
I'm an android developer now, but I came from C++. This video 👌 perfect
Dude, whoever scripts or edits your videos is a genius. I mean, the hidden meanings, humor, and layers in the visuals are just mind-blowing.
Yes, especially cutting gaps between sentences... (facepalm)
"Within C++, there is a much smaller and cleaner language struggling to get out"
Ummm yes… C
I think bjarne accidentally said something he didn't want to there
No
C++ is what happened to C after it ate too many programmers... ;-)
No no, C is already out and not struggling at all.
Exactly. If Bjarne had a button to kill all C++ people, he would push it.
1:01 Overlooking the fact that C++ is already so insanely complicated to begin with, that it becomes exponentially harder to add new features without tripping over undesirable interactions with existing ones. Python 2→3 was one big bang of breakage, and evolution since then has been able to proceed much faster with minimal backwards-compatibility trouble.
Bongomoth is my favourite recurring character in the Fireship-verse
Anyone provide the original clip the sounds? I could only find gifs
Cpp won't die, much like Java won't die. But, like Kotlin, it can be replaced and I think this will do just that.
0:43 "Within C++, There is a much smaller and cleaner language struggling to get out"
So... og C?
When it becomes the favorite language on the stack overflow survey, 7 years in a row I might consider trying it out...
'most loved languages' aka the languages people don't use at work
@@askeladden450 I use the most loved language at work, and boy do I love it more than c++ or c.
That was a rusty roast indeed.
Rust is a neurotic language for neurotic people, and it just so happens that people who are going to respond to a survey on the single most toxic website on the internet are the same people who want that kind of language.
@@Arkevorkhat facts
"I've been programming for 12 years so I'm not ready for C++"
Me who learned C++ as my first language: 🗿
Respect
i'm still trying to learn c++ it's also the first programming language that I really tried to learn and I love it, the sad part is that for actually being hired in a job as a c++ developer you need to know so much and have years and years of experiencie, it makes me sad
Yeah that sucks
It's a pure fact that 10 years of professional experience is needed to become proficient in C++. It's actually a well-known fact.
@@ohwow2074 Yeah I know, I just find it crazy that some people say "Oh I'm not expierenced enough to use C++" and Im over here and its the first lang I learned.
From a non-coder myself (I do know some code, not enough to make me market-grade) I truly hope not. The least we need right now is Google having full control over something so very much important as it is C++.
I would kinda assume it's fully open source (I haven't checked tho)
@@Rugg-qk4pl I hope it would be free and open source, which will be no way towards proprietary and close source in the future. I would not imagine the future when Google charges law suit for programming language “misuse”.
@@Rugg-qk4pl it does not matter being open source if, at the end of the day, Google does have full control over it. Android is open source, yet, as it is, you are extremely dependent of every Google app, as you need to cover functionality that should be part of the base OS but Google decided to axe from the project, like a browser, phone dialer, contact list, simple calendar or mail app. Conflict of interests.
You also have Chrome and Chromium, where, as much as Chromium is open source, everyone else's has to play by whatever rules Google put on Chromium (derivative browsers too). 2 examples of this: hardware video decoding for older Intel iGPU's on linux. People made it work properly and well, were willing to maintain it and were willing to have it disabled by default (as it is not "supported by google" itself) but someone from Google said no and that was the end of it. The change to extensions that Google is planning to do just to neuter adblocks (TL.DR.: they say is for security, but it does not increase security in a big and meaningful way vs what you are losing overall) Almost everyone but Google was against it. But it is going to go through anyways, since Google can now use that hole to push his ads and tracking. And I am not going toeven touch their "cookie replacement" bs.
Problem is not open source or not, problem is who controls what. Google controlling the low level language used in every aspect is the big, big problem.
- Google'll not control C++, Carbon is another language backward compatible with it, but the ISO'll continue to mantain C++ standard apart
- What spooky things can Google do just controlling the syntax of a language? To be an usable replacement of C++ the compiler must be open source and wihout google extra "imposition" in the compiled code
@@freemansfreedom8595 -browser, phone dialer, contact list,calendar and mail apps are not part of an OS they're external programs
-an android phone can be completly de-googled with foss alternative of basic ( and non-basic ) apps like f-droid, and can be completly functional with a google core services replacement like micro-g
Actually what you call "a cout BS" is a kinda straightforward way to work with a stream. It's not the easiest thing to understand, but beginners can just learn it without knowing how that really works. There's always a printf/scanf solution for those who don't know or like cout/cin.
What sucks about cout is how extremely common it is in virtually every single beginner tutorial, while also bearing essentially no similarities to beginner level code.
Print() is a normal function that looks like anything else. Forcing beginners to immediately be introduced to operator overloading and streams kind of sucks.
I don’t mean to disparage c++ by this, btw. I’m not saying the language should have been designed around beginners. But cout is a weird hurtle regardless both for brand new coders and programmers used to interacting with the console in _most_ other established languages.
@@bass-tones tbh, if "cout" is hard for beginners, than it's a good indicator to choose another job
right now industry suffers from endless stream of helloworders, which makes changing company/project huge pain, since you might end up in complete mess easily, no matter how everything looks on a surface
so sometimes having higher learning curve might be good
but that's just my grumpy opinion after conducting 20+ performance reviews this year, and having only one person out of 20 to actually know stuff. so might be a bit disappointed
It's BS because it totally misuses operator overloading to get the bitshift operator to do I/O
@@AttackHelicopter64 As in any business we row with the oars we have, can get, and can afford... Cheap, good, fast. Choose two, get one! ;-)
Anyone who tries to sell that `printf("%d%f%u", i, f, u)` is more beginner friendly than `std::cout
C/C++ never dies, we all know this. As Java and JS.
Actually C# has caught up to C++ in More way than One Go and Look at the Stats and See C# is one of the Top languages. That Programmers Use. In game Development. And for Backbend Development and a Variety of other things to. C ++ Has to many Brackets and for one Command you need tons of Code to do One thing. Thanks for the info But I will stick to C# and the dot net Eco System sorry to burst your Bubble I love C# I am a die hard fan of the Language even if Google Makes a new Language Called Carbon to Revive C++ So Well that My Answer to C++ and Carbon..
Ik C# can be used almost everywhere, and the game, fully written on this language, but instead of approving C++ I would say "every language created for its purpose, some of them good, some bad, some are bad attempts to replace old". That's my opinion :)
Soooo I can't hire a 10+ years experienced Carbon Senior dev, can't I?
Well, we are all made of carbon, so i got about two decades worth of experience. Am i hireable yet?
@@theterribleanimator1793 that's c++ and it doesn't count. sorry you're fired from this interview
@@reihanboo never been fired from an interview. Might be able to put that on my resume, thanks.
Yes, but it would be Apple's Carbon api for MacOS.
Looks interesting, but I'm not exactly a fan of it's syntax, especially for generics. I understand > and < have more uses in C++ land than in other languages, but using them for generic type arguments has become pretty standard. Using ( ) is especially confusing since it reads as a constructor to me.
Idk, maybe C# and Java have just rotted my brain.
It's not ambiguous with constructors, since there are no constructors in Carbon! (Instead, like Rust, you can use factory methods of the class to create objects.) It is ambiguous with a function call, but I think it's supposed to be. They're trying to somewhat go along the "types are compile-time values" and "generic types are compile-time functions" path (though not as hard as Zig did, given that Zig generic types literally are just functions of comptime parameters).
Used C/C++, C#, and Java over the past 20 or so years, and recently js at my current job.. I've noticed the syntax of all these new languages like rust, go, carbon, and many others try to go out of their way to not align with most common languages syntax and it makes it really off putting to even want to try them.
2:08 cout is "console out", I think. After all, it's just a specific stream.
And if you don't like it, printf exists 🤔
That job posting at the end was ::chefs kiss::! Great job
I love how nearly every video I watch, they always mention my birthday... 22nd July but any other day doesn't get an introduction lol 😂
Alright, I'm interested
I kinda dig the "var : " declaration syntax and how all programming languages attempting to look cool and modern use it now, is there some advantage to this over " "? I guess it looks more like what one would expect a "declaration" in general to look like, but I dunno
It did feel nicer for me when i used it for 12 months doing ios development. In functions you can pass default values and things like that where the colon is good for visual separation.
because human readability
I guess it because of the generic type syntax, declare type after using it is kinda weird (T something[T: ! Type](x : T){...}) so they come up with fn something[T: ! Type](x : T) -> T {...}, because of this, everything has to be declared with this style for consistency
It avoids the most vexing parse. In C++, certain statements you would expect to be a form of direct initialization are actually function declarations. I'm pretty sure the problem exists in C as well, but its less of a problem over there.
@@iuploadthereforeiam3606 I'd have to double check, but I don't think you can have function declarations in function bodies in C.
Well said!.
Guys, I don't know why, but for some reason, languages just get relevance when there is some web bullshit related with it
With that in mind, I'm already making a brand new backend framework, that is completely written in Carbon and I will call it Cooal
One could even call it Colang 🤪
Literally did a review on carbon the other day! Love the video as usual my man! Expert tier explanations.
Where?
@@chadsworthgigafuck7076 inhouse team explanation (local knowledgebase), I'll be posting on my blog in a week or two on it. I'll reply the link to you :D.
I'll wait here too
never stop dropping the bongo moth, it genuinely makes me happy and brightens my day
Lmaooo the '10 years of Carbon experience' at the end was perfect
TypeScript killed JavaScript is like saying C++ killed ASM.
except learning asm actually has some value
I wouldn't write vanilla Javascript even if my life depended on it.
JavaScript is the only language you can use for interactive web pages without having to load an entire bunch of framework packages.
As a rust fanboy myself, this is pretty nice, because rust really sucks for that usecase. Proper bindings etc. can make C++ code accessible, but it's just something else, and not designed for interoperability. Really looking forward to carbon because C++ could realllly use an upgrade lol
As another Rust fanboy I have to agree, I think Rust was never meant as a C++ replacement, it's more geared towards C imo. (I don't say it's not a good alternative to C++, but I think C programmers will have an easier time adapting because they don't have to unlearn 70% of their language)
@@m.sierra5258 As a C++ fanboy. I 100% agree.
Ignoring googles habit of abandoning projects left and right. I don't know how well it will do; and miles away from being ready. There have been some outstanding languages that have all but died who have tried to do what Carbon is setting out to do.
The D programming language is lovely, very memory safe. Doesn't have the crazy template system. Tries to be constant expressions by default. And was built with (at the time) c++ interop. When D was released it was 100% better than C++.
I think the real advantage of C++ is -- the committee. It doesn't provide a compiler, so there are 3 really good ones. It also looks carefully at what C++ needs and steals things from other languages.
"There are 8 different successors to C++"
Google: "We are making the best successor of all"
"Now there are 9"
(the 8 is a some number I chose, since I have no ideas how many successors are there for C++)
8 is a good guess, lol
That photo with the circular saw totally threw me off the subject! Great one.
Been coding C++ since 1990th, and still haven't lost hope to learn it
I think it's a good idea to create a language that is more modern than C++, but that can also work well with it. C++ is my go to language for many projects I like working on, but I am totally down for learning one that's similar but more modern.
I'm waiting on Carbon's package manager Dioxide to come out and then I'll take a look at it
3:16 knowledge of photoshop strongly preferred 💀
Your video editing skills and your dry delivery are hilarious. I laughed at loud multiple times
Oh boy how I remember all this Python 2 vs Python 3 fight and that some people were really saying they would want to give up Python entirely because version 2 would be deprecated in the (back then) nearby future.
And now what? Python is much more alive than ever, noone is talking about why "Python 2 is so much better than 3" and so on.
The world just moved on and so should have C++ but it just never did, because someone wanted to keep the compatibility to "C with classes".
Java is always the language that you can love or hate or love to hate. I personally love it. People complain about: public static void main(String[] args) , but guess what... I wrote that once 10 years ago😄
I just have one small problem with Java: no unsigned integer types, moved to C# and never looked back
You forgot void.
@@chrono0097 there are ways to get unsigned int in Java , but it's true it's not a standard primitive type.
@@EightSQ yeah I did 🤣, probably I got used too much to an IDE writing everything for me . And that is one thing i like about forcing return type on methods, it makes the developer think and know if this method is returning something or maybe just mutating state, etc.
@@chrono0097 you didn't see Kotlin coming with UInt
Just what the world needs - another programming language.
What I'd really love is something as easy as maven or similar dependency management that also works multi platform. Honestly learning and setting up cmake for various platforms is in my experience as painful as it gets, and in my experience rarely worked out the box unless it was Unix and my dice roll hit a 6.
I know that is part of why people like cpp, the amount of control you have. But it's simply outdated, unintuitive for newer developers and often just simply overcomplicated
I don't like CMake too, it almost feels as if it's compiler scripting. You need to have the complete idea how your project is built, it's like a system of macros for compiler options and flags. What I think is that you will like Bazel: it's Google's cross-platform build system that works across different languages, and it is rock-solid with C++. You literally just put a single WORKSPACE file in the root of your project and for every target (executable or library), you make a separate BUILD file where you tell the target, its source and header files, visibility and dependencies, and Bazel will do it. It felt for me really reliving to switch to it.
I'm really enjoying the bug bongo bit in these past videos :D
Honestly, if nothing else, that bug playing bongo always puts a smile on my face 😂
Kotlin will never kill Java. Sorry mate! I’ve been in the corporate world developing applications in Java and most other guys haven’t heard of Kotlin. It’s only going to be a niche language like other JVM languages.
Well your work environment is pretty shitty then
@@onemonsterceo Came to say this, LOL
I do think it’s going to replace java with mobile apps but yeah I don’t see it completely killing Java
kotlin is widely used in the mc community nowdays
Kotlin will replace Java. "Embrace and extend" (or simplify as it may be). It's only momentum that keeps Java around.
Google should try adopting / supporting Nim instead. Modern language with great C/C++ interop
I just have to learn it now, so when it actually released i will confidently say in my CV that i've been doing this language fo years
You're better off learning typescript 😝
منطقیه سید
Dude the little quip at 2:01 made me laugh so much my stomach hurt.
Please never stop making your top tier infotainment content. Great videos!
Doing some reading they seem to just say use rust unless your stuck in a large mainly c++ project.
Yeah, they are really right.
Hooray, yet another language to write hello world in and add to my resume!
The programming languages mentioned in the beginning - JavaScript and Java - are far from being "killed" by their more younger rivals (TypeScript and Kotlin): It's just plain lie.
Both languages keep evolving, getting new features and improvements etc.
Agree completely.
I think that's just a joke about how not every language that claims to be a "successor" of something can actually succeed in establishing the dominance
I assume he ment that as a joke
I feel like I’m still programming in C++, because I’m the kind of guy who still programs in C++. It’s very likely that I’ll still program in C++.
If I ever got to program in carbon, I'd still write c++ inside it
or become blind seeing all those ugly fn and let
I don't wanna judge, but it sounds like you're telling it to yourself so that you initially believe the lie!
@@adamkostrzewski4982
“ugly fn and let”
ah yes, because “const auto x =“ is so much prettier than “let x =“, gotcha
just admit you’re used to the old syntax and dont wanna change anything or bother trying anything new, its ok. i was the same way too
lol
As soon as i read about it I knew to come here for you to make sense of it.
I'm baffled how people always cite "std::cout
Okay but std::cout IS objectively the idiomatic C++ way of printing. You do you. And while, yeah, bit shifting has nothing to do with input/output streams, the bit shift operators do indeed look like arrows to and from the streams. They make some intuitive sense, at least enough to not warrant boycotting it lol.
Modern languages can never kill the older languages, assembly is still extremely useful as is c, java, and I hate to say it but even c++, most modern languages are more like big wrapers to make certain programes faster and easier to write, don't pick one language lean as many as you can there's knowledge in them all, especially the older languages they will give you the bigger picture and alow you to lean other languages faster it's all the same under the hood
can you (or anyone) expand on the difference between templates, generics (and c++20 concepts)?
I looked into this as part of creating my programming language - qat. Templates are for compile time, Generics are for runtime. Templates limits the different variations of functions and types to those you specify in your codebase. Generics makes it possible to spawn new variations of the functions and types during runtime. Templates are static, Generics are dynamic.
Concepts in C++20 are used to specialise template type arguments. In simpler words, you can tell the compiler that a template type should have certain characteristics. A minor variation of this is already present in slightly different forms in languages like Rust and Dart.
@@aldrinmathew Generics in Java and c# are compile-time only. Method versions for specific types are generated when you compile, based on which types you actually use.
Go to stack overflow, they love to really expand on that
@@aldrinmathew
I'm trying to understand why the video says that generics are "better".
Is it just because of code bloat issues? Or because the error message for templates are long?
I've worked with both, and I agree that c# generics are easier to write, but I felt much more power with cpp templates.
@@chris-pee Then those are not generics. Those are templates. Those are just called Generics
I feel like C++ is kind of like WoW back then lol
"Oh, this is gonna be the WoW killer"
"okay...maybe THIS will be the WoW killer!"
"no, no... THIS ONE will actually be the WoW killer!"
sure, C++ has its faults but it's still a good language. I actually use C more often than C++ but I can still appreciate C++ for what it is. I don't really care for the trendy new languages that try to solve problems I don't have.
I like how you are able to make every line a joke and still get all the information into the video. :)
don't even care if you add ads to the download you're just such a goat ❤️ ❤️ ❤️
Carbon has a bad syntax choices in my opinion, but it looks promising for future
I feel sad that Google is not *Carbon* neutral anymore
HAHAHHA
Best comment
I see what you did there
Rust is a C remplacement, it doesn't care about C++ most of the time, though it can interop with C++ as well because it's important, the C++ interop is not as clean since Rust doesn't support inheritance (by design) and C++ end up being just a blop of data that you need to control.
I love your videos. I hope you will never stop! :)
10 REM Print "Hello World" until the power goes...
20 Print "Hello world"
30 goto 20
So basically what Kotlin is for Java but for C++.
Except Vale already does that but without "le google"
@@jakelexington7610 And that's why nobody is using it!
Is what they said, but could be the Scala of Java, which is a failed attempt
The Readme says exactly that.
@@erickmoya1401 To be honest Scala was more about functional programming that replacing Java
Hey Jeff, could you do a video on the Nim programming language please?
I want that too
Nim, Zig, D, Vala and Ada (comment above).
Nim would be pretty cool to see. Its macro capabilities are kinda wild, as is the fact how easy it is to pick up compared to other languages in the league.
@@victorpinasarnault9135 And Crystal
What you describe at 2:34 is actually far worse. Those two lines of code are undefined behavior, meaning that just because they exist in a program, it would be perfectly compliant for the program to do anything (such as crashing in a separate area, deleting files, or bricking the machine).
Bruh that's not how it works. You can't delete System32, brick the machine, etc. JUST by printing an uninitialized variable. From what I know, there's nothing wrong with reading a value at a random address (as long as your program is allowed to access it). The danger develops if the address contains a function pointer and you accidentally call it, potentially calling a malicious function, and that is IF the value at that address is a pointer anyway. Also considering that you stored the value in a uintptr_t or a data type capable of storing addresses.
Or you could make the world explode and kill us all
First vid i saw of yours, subbed immediately
I see all of the recent job posts now require 4 years of Carbon experience.
Well... Not sure that it'll be a "killer" of C++, probably more like alternative with convenience of using C++ libraries. It's hard to kill a pillar on which everything is standing right now (I'm talking about C as well)
“You just need 10+ years of experience with Carbon to apply” is so accurate. 😂😂 What will the HR people from companies think of next? 😭😭😭
All I want is a language which makes multithreaded code seamless. All computers have multiple cores, though very little code takes advantage of that. The reason is that it's rarely worth it to spend the extra effort optimising code unless the application is very performance sensitive. The solution is a language which makes writing multithreaded code about the same effort to write as single threaded. The only example I know of is C# with the parallel for loop, which is amazing.
Well, kind of hard to make sequential and parallel code feel the same way when written. Though i feel as if rust does a good job, with stuff like the async ecosystem and rayon.
Seamless? I'll take safe as a first step, and an abstraction which allows for software architecture which works well with the hardware at hand and gives you an adequate amount of control.
To consider that you want something to be seamless which is fundamentally not, there is a seam, it's baked right into the hardware, due to the cache coherence problem and aliasing. So it's easy to come up with code that is much slower multithreaded than single threaded even when correct.
As to parallel For? Basically an OpenMP primitive.
If your job is so slow you need multiple cores to execute it: it is worth optimizing it.
@@TauCu You are joking, right?
@@nissimhadar No.
1:05 when he said painful he really meant for it
I love that bug playing music in your videos.
Why they've used capital P and M in print and main .. is there any advantage of it?
The C++ interop goal is huge, and probably only possible/feasible thanks to LLVM/clang, which establishes a cross-platform C++ ABI. I wish that Rust would adopt a similar goal. I also wonder how Carbon will interop with Rust, since Google is a member of the Rust Foundation as well.
How will the interop work without support for exceptions? Carbon's doc on error handling forbids errors via exceptions and instead the function author presents errors through the return type, because "in many cases, the function author wants these failures to be recoverable." Unless LLVM/clang are capable of performing some magic I'm not aware that rewrites the supported exception-handling implementations AND keeps the program semantically consistent, I don't see how Carbon is going to support full, bidirectional interop short of asserting that exceptions don't exist and anyone that says otherwise is invoking undefined behaviour (which, to be fair, is Google's current stance anyhow).
So if we write AI with it, are we creating carbon-based life forms? ;-)
Yes
2:09 how is that crap a big improvement over cout? First off, they replaced function return types with a function keyword... Why? Also, it's just "fn" to look even more awkward next to a capitalized Main() function name... Then you have var, something I'm not necessarily against, but it's followed by what looks like a variable name, a colon for some reason, then the keyword auto? And then the classic = for assignment. Then a capitalized Print() function and finally a return 0 to match the "i32" type... I can see why this is the future 😂
Just looks like an overcomplicated Python at this point
when google abandons it and leaves it in the project graveyard we can fork it