After all of ThePrimeagen content I've watched, turns out this is my favorite format. I always want to make more time to read content like this anyway. Getting it in this format with your commentary is gold
@spikespaz Жыл бұрын
He has (and voices) the obvious thoughts so I don't have to
@SpaceShot Жыл бұрын
He has the ability to speak to you on the same level as the author or article without apologies. If some of the concepts elude you (sometimes I'm not at the complete level of understanding on the particular topic) he says "hang on we're going full throttle anyways". At no time do I feel it is rude or obnoxious. I don't feel like it steals from the author. It's like hanging out in the next cubicle with him and that's a great feeling.
@aftalavera Жыл бұрын
Brilliant!
@licokr7 ай бұрын
Same here 💯
@nixoncode Жыл бұрын
I think Golang is the next best language for your team if you're moving from a dynamic language, if you use py, ruby, js or any other dynamic language in the backend. try golang, we started using it to run our backend daemons with redis and MySQL, trust me. since we moved from long running processes in PHP, and legacy Java to go... the rest of the team has been calm and anyone is able to troubleshoot problems, over the past year. I feel like we've been so productive with go, even with our new developers, straight from Uni are able to understand production code and be able to contribute significantly to the team. i love go, and am the project manager. so get on with it team
@pixoul2237 Жыл бұрын
"Perfection isn't achieved when there's nothing left to add, but when there's nothing left to remove."
@jfdirienzo Жыл бұрын
Go has a special place in my heart. I spent some time to get on the Rust train but in the end, when I need to get something done quickly, with a fairly decent performance... Go is the language I pick everytime, it's so easy and fun to write.
@cmelgarejo Жыл бұрын
I agree with this, same for me
@TechdubberStudios Жыл бұрын
Your content is getting better and better. I loved this particular video and the Rich Harris ones so far.
@wcrb15 Жыл бұрын
Every time I read/listen to stuff about Go I gain more respect for it. It's very quickly becoming my favorite language to write in.
@Ellefsen97 Жыл бұрын
I only understand around 20% of the articles Primeagen reads, but I still find it fascinating
@ThePrimeTimeagen Жыл бұрын
:)
@alexandersemionov5790 Жыл бұрын
Remembering what you don't know will make you learn it better down the road
@lashlarue79249 ай бұрын
@@alexandersemionov5790 I honestly believe this.
@Rohinthas Жыл бұрын
This type of video is your peak-youtube-content to me. I am too adhd to get through full articles on my own and *actually* consider their implications, I need some way to actively engage with them and I dont have people around who are into this stuff. When you read the articles and think about them out loud my brain starts to engage as well and I actually pull up passages to re-read and think about them myself. Thanks buddy, you make learning fun for me!
@babc142 Жыл бұрын
Snap, well put
@lunafoxfire Жыл бұрын
Go is like 30 amazing ideas to create the perfect language, and then like 2 bad ideas that make me absolutely hate using it, lol.
@hamm8934 Жыл бұрын
Which features? I hate capital letters for exports
@minciNashu Жыл бұрын
@@hamm8934mplicit interfaces just rub me wrong, also codegen required to fill in gaps
@spell105 Жыл бұрын
@@minciNashu Implicit interfaces are awesome.
@electricant555 ай бұрын
@@hamm8934error handling
@tongpoo89853 ай бұрын
What features are those?
@daltonyon Жыл бұрын
Everyday i love more Go lang, there is a lot of good stuffs. I want know MORE MORE MORE
@silveradopunked83293 ай бұрын
That "Ken" is Ken Thompson. The guy who wrote UNIX, B (which is the predecessor to C) and grep.
@MrAlanCristhian Жыл бұрын
I think that the python software foundation is in the "more feature" train right now.
@andythedishwasher1117 Жыл бұрын
Typescript is basically like trying to polish a turd, failing miserably, and then covering up the turd with a convincing image of a clean floor for someone to step in later.
@yeeteshpulstya98905 ай бұрын
polish a turd lmaoooo
@TheBuzzSaw Жыл бұрын
The argument against generics is a strange one. My love of generics in other languages has little (nothing?) to do with inheritance or subclassing. I want my data structures to be strongly typed; that's all. I want to be able to create a ConcurrentRingBuffer or whatever. Go didn't let me do that. I also just don't understand this arrogance. (Yes, it's arrogance.) The language creators kept the power of generics for themselves. Go has generic arrays, maps, and channels. If generics are so terrible, why not return to the Java 1.0 days where arrays and maps just use Object for everything? OBVIOUSLY, strong typing is a good thing.
@spell105 Жыл бұрын
I'd rather a language creator is arrogant and sticks to a vision and design philosophy, than for a language to throw in every feature ever. You wanted strongly typed generics? C++ is right there for you.
@jonaskoelker4 ай бұрын
> The argument against generics is a strange one. It's because it isn't one. I didn't notice a single thing to do with generics in that section of the article. It was 100% an argument against inheritance, which was not what was asked about. The word 'strawman' springs to mind-or, more charitably, 'misunderstanding'. Of course, if I go with the charitable interpretation I conclude that Go is designed by people who don't know the difference between inheritance and generics.
@schneefackel7053 Жыл бұрын
Rob "who would ever use map() and filter() instead of _for_ loops" Pike retired a few months before Go got generics. Coincidence?
@jepemz873 Жыл бұрын
Exactly. Generics were necessary for built in collections but for a long time off limits to everyone else. Golang is ridiculously verbose for these use cases.
@isodoubIet Жыл бұрын
That last paragraph is truly baffling. What does he think abstractions are for if not to reduce programmer effort?
@mkvalor Жыл бұрын
Go was touted as a "systems" language back then. Very few agreed because... gc.
@neilcarrier1620 Жыл бұрын
"Features will continue until productivity improves."
After a LONG time trying to learn go I was moved into a position at worked where I NEED to learn Go and I'm so excited. This video arrived just in time for me
@paulogodinho3275 Жыл бұрын
Prime, I often have this kind of stuff on a second screen, people that read and react to news/articles are just screen readers for all of us, but you my dude, you ad so much to the already juicy article that I find myself pausing the game and just listening to you my fella. Thank you for this amazing work, cheers.
@TomStine Жыл бұрын
I really loved that talk. Thanks, Prime, for reading that. I'm learning Go, and that helped put a few things in context. Go is so so soooo much better than TS (current work code base).
@flyinginthedark6188 Жыл бұрын
I don't agree, adding atomics to C++ (and the memory model in general) is the best decision ever made by C++ committee. This solved so much broken code and allowed us to write code that is portable on x86_64 and arm platforms.
@EmiNNsoNify Жыл бұрын
Quick question - what was the big problem with porting before atomics? Asking because the Linux kernel is written in C and is by far the most ported project ever.
@vadzimdambrouski5211 Жыл бұрын
@@EmiNNsoNifyConcurrency primitives in the Linux kernel are not portable by definition. If you try to use them in some other project it won't work because they rely on specific compiler flags and/or make assumptions about the kernel environment which may not be the same for other projects. Also before introduction of the memory model a lot of gcc optimization passes broke and miscompiled the concurrent code. Because without a memory model it's not possible to answer if a specific optimization (which could be perfectly fine for a single threaded code) is not valid when executed concurrently from another thread.
@EmiNNsoNify Жыл бұрын
@vadzimdambrouski5211 @bbourbaki Okay, fair points! My point was more on the "Linux kernel is massive project which is in C and you don't see them yearning for atomics." Should have been more explicit.
@DmytroDukov Жыл бұрын
yep, there's a reason why Rust took it practically as-is. I also disagree with that take on atomics (although they are certainly not the easiest part to grok)
@LambdaCalculator Жыл бұрын
Reminds me of the "Worse is Better" lore in the Lisp world. You should really consider reading some of Richard Gabriel's essays if you liked this one.
@esra_erimez Жыл бұрын
My dad was a developer when C++ first came out. It was a transpiler at the time, it converted C++ to C then you compiled that. He remembers thinking it was a good idea at the time. But, it never evolved into what it could have been. It lacked standards such as an object model, libraries, etc. Java would come along and fix issues like these but at the cost of having to use a JVM with an interpreted language. C++ has too many traps and pitfalls and makes you have to program defensively.
@isodoubIet Жыл бұрын
skill issue honestly
@totof2893 Жыл бұрын
You need to test modern C++. The language has really changed. Most error prone stuff have disappear. It still requires some discipline with beginner, but when you are used to it, memory issue become very rare. With the invention of RAII, managing ressources (not juste memory, but connection, file, etc...) is easier than Java/Python. With the notion of rvalue, you have the notion of move instead of copy which avoid putting pointer/reference everywhere like Java and Python do by default. Now every life cycle is related to the stack and thus automatically freed by compiler at correct time. Lambda makes easier to write functor and functional code. Constexpr enables adding logics and interface at compile time instead of doing virtual polymorphism. And all the nice addition like std::variant (a easy to use sum type), std::tuple, std::optional to better represent data instead of horrible void* or Java everything is an Object. Still Rust refined those ideas and does even better. For example, due to backward compatibility, C++ is copy by default. While Rust is move by default, which enables to hide the l-value/r-value concept most of the time. Rust is const by default, C++ needs to have const everywhere. And Rust has lifecycle check which is very useful to avoid multi-thread issue and dangling reference. Even if modern C++ has less and less memory issue, it can still happen when beginner code like Java in C++. Rust completely avoid that by throwing a compilation error. And the memory model of Rust is far better than C++ unchecked exception or Java checked exception because it is directly using the return value. It becomes very easy to combine with functional code.
@vikramkrishnan6414 Жыл бұрын
With smart pointers and STL a lot of these problems don't exist
@lashlarue79249 ай бұрын
@@isodoubIet No, that's a biased take. The point of any language should be to increase productivity - not to raise artificial competitive barriers to entry that increase YOUR relative pay grade because it shuts out other humans from being productive due to a high learning curve. THAT is the truth.
@isodoubIet9 ай бұрын
@@lashlarue7924 Who said anything about "artificial competitive barriers"? C++ is a language that lets you be extraordinarily productive. Complaining about "pitfalls" that are mostly very easy to learn and avoid is a skill issue, sorry to say.
@KevinLyda Жыл бұрын
Just as an aside, the original pager on Unix was pg. But then someone wrote "more" - named because of its UI where it prints "More" at the bottom of the screen. But you couldn't go backwards on pipes. So someone wrote "less" that could do that - named because less is more.
@ardnys35 Жыл бұрын
i want to change to that direction. like Rust is very interesting with all the features, it's like finding yourself in a baggage claim conveyors in airport but all sorts of japanese vending machines come from the belt instead of luggage. it's all interesting and nice to learn but also confusing and complicated. especially with my lack of expertise. perhaps it's more effective to learn it after more programming experience. i went back to C to smell the machine a bit more and solidify the basics. honestly go sounds more and more compelling, especially if it's that easy to learn. it's probably better to work on the languages i know for now but maybe like next year i'll slowly learn Go
@_____case Жыл бұрын
"Even if Node came with a singlular tool. Compilation, build, everything." That is what Deno is.
@ThePrimeTimeagen Жыл бұрын
i said node, and claiming another thing all togethre doesn't some how make node in one tool you require a reordering of the javascript ecosystem to be deno.
@_____case Жыл бұрын
@@ThePrimeTimeagen Their Node compatibility is getting better each release, so maybe that won't be true forever.
@georgeokello8620 Жыл бұрын
@@_____caseNodeJS will never correct the fundamental issue of JavaScript’s type system. That’s a language design problem and language design problems can only be solved my making a better language design not by micro-optimizations with intermediary tools.
@seanknowles9985 Жыл бұрын
Would love a course and deep dive on Javascript workers/threads/async etc... When and how to use worker threads, use cases with efficient practical algos that we'd use in the wild to make javascript performant in certain situations. There's definitely a market for a course like this.
@biskitpagla Жыл бұрын
man ive been looking for something like this since forever
@seanknowles9985 Жыл бұрын
@@biskitpagla Same!
@aftalavera Жыл бұрын
That shit that you feel in Go; like something is missing, it’s on purpose thats the withdrawal effect. By the way OCAML is the new shiny object!
@massy-3961 Жыл бұрын
Theprimeagen is slowly converting to a gopher
@mangalegends Жыл бұрын
Everytime i hear about something the primeagen is doing at his job, i get a little envious at how interesting it sounds lol. I haven't done anything nearly that fun at my job...
@trapexit Жыл бұрын
My problem with GoLang has always been the insular design of it. After it got some traction there were a lot of (poor) comparisons of GoLang and Erlang from, IMO, people rather ignorant of one or the other language. After a while I recall some of the Erlang communities' criticisms of Go's designs got back to core architects. The issue, from the Erlang folks, was ... why goroutines? Over the past 40 years there had been a lot of research into concurrency models and a fancier coroutine mechanism built into the language was better than nothing but Erlang and other languages / libraries had really powerful concurrency models that seemed to be entirely ignored in GoLang's design. And as I recall the response was kinda like: "we didn't look into the topic. :shrug:" I don't like that at all. In an age when concurrency is more important to make easier than any time in history and you spent time to design a language with concurrency built in... kinda important to do your homework. no? Erlang isn't perfect but when it comes to concurrency and general simplicity I absolutely adore it. You can understand the whole language without much effort. Worrying about contention rather than how to create the concurrency in the first place is truly game changing and I've never built distributed services more easily. Add in a fast built in serialization/marshaling library and simple technique for handling out of VM IPC... it is just a pleasure working with. I wish other languages took more of the Erlang communities' ideas. And I wish GoLang would have had actors instead of coroutines. You have languages like Pony that tried to go in an actor like direction but didn't get much traction.
@trapexit Жыл бұрын
Just saw @17:20 "Go's concurrency model might be the best ever." Can't agree even a little. It's not bad but actor systems, and proper scaffolding (like Erlang's supervisor module), are so much better for wide scale concurrency.
@spell105 Жыл бұрын
@@trapexit OK but no one cares about Erlang, sorry. It took a whole different language (Elixir) for people to care.
@trapexit Жыл бұрын
@@spell105 "No one cares..." Checks major apps used across the OSS world written in Erlang as are critical apps in multiple fields ... Yes, no one cares. Elixir is not all that much more than a syntax change. The fundamentals of Elixir are the same as Erlang. They run on the same VM. They have the same actor model because the VM is purpose built for concurrency. For Erlang. Elixir never would have existed had it not been for BEAM VM and the fundamental designs built into necessary to accomplish what it sets out to accomplish. It is why other platforms can't do the kind of concurrency models Erlang has. Why the Java Erlang implementation failed. If you want to be able to create fundamentally different patterns you have to often do fundamentally different things. And even when they fail to catch on they can provide a lot of value to others. So feel free to ignore alternative technologies but you aren't gaining anything from the ignorance.
@TankorSmash Жыл бұрын
Great editing on this, almost no downtime and all content.
@YouPrincipal7 ай бұрын
I love that the text he reads at 0:40 perfectly fits what he's signaling with his hands. "out. go."
@lashlarue79249 ай бұрын
The article and the Take basically nailed it. If you're a Python dev and you just want to increase your speed a bit without having to completely worry about too many leg cannons, why would you bother to learn C++? It's the same reason some other large platforms (which shall remain nameless) don't get adopted - you have to devote your entire existence to learning that tool. I don't even need a better tool than Python at this point for what I do; the need simply doesn't exist in my world and it never will. But if you devoted your entire existence to learning how to write clever code that manages memory directly, why would you ever want to give that up? Of course you wouldn't! Time will tell.
@kevinb1594 Жыл бұрын
I would love to hear a detailed rant on the over expressiveness of Typescript. I'm a JS/GO dev and I know the benefits of a type system but I absolutely HATE typescript and have a hard time explaining why. I thought it was originally because I hated typed languages but I love GO. It is specifically TS.
@taragnor Жыл бұрын
Well TS is clunky, because it has to abide by the rules of Javascript. So that really holds it back.
@oscarljimenez5717 Жыл бұрын
TS is nice if you use it right, but that's the problem, you can use it bad in too many ways :). Also if you think TS from a C++/Go/Rust perspective, you miss the point of the language.
@beastofthenumber6764 Жыл бұрын
ts type system is more like java thats why
@oscarljimenez5717 Жыл бұрын
@@beastofthenumber6764 not is not, is nothing like Java, maybe if you only use interfaces?. If you use interfaces for TS, you're using it wrong again. And you go back to my previous comment, too many ways of using it wrong.
@beastofthenumber6764 Жыл бұрын
@@oscarljimenez5717 i agree they can be used better, but the "wrong" way is the intended or at least the more promoted way. Even in java you can construct classes in ways that are better but almost nobody does.
@achrefnasri8847 Жыл бұрын
go for me as a javascript /python programer is like my savior i dont give a damn about memory management (we deal with backend services here not developping an operating system )as long as i can ship my code faster with less bugs and more readable for my team i'm happy in short go for us GETS THE JOB DONE .
@flarebear5346 Жыл бұрын
Go is the balance we needed between performance and simplicity
@mgord9518 Жыл бұрын
Memory management is pretty important when talking about performance And just because a language has a GC doesn't mean that you can completely forget about memory management
@achrefnasri8847 Жыл бұрын
I agree with you but I already came from garbage collected languages (js and python) performance is not my focus but faster code and ship time is
@hamm8934 Жыл бұрын
Ah so you throw hardware at the problem ;) You absolutely need to handle memory in GC languages, I.e. through object pooling, especially in something like a web server with concurrency, I.e. one of go’s primary applications.
@achrefnasri8847 Жыл бұрын
@@hamm8934 if i want to go through that may well just code with Rust and frankly in the end of the day the gain is insignificant besides i want a finished working web app not a school project that may or may not be finished the next year
@porttikivi Жыл бұрын
Three computer science articles, ever, stand on top for me: Ken's "Reflections on Trusting Trust", Hoare's "Emperor's Old Clothes" and this "Less is exponentially more".
@rogergalindo7318 Жыл бұрын
is his argument really against haskell/rust? he seems to talk mostly about type hierarchies, in the sense of classes/superclasses/subclasses… maybe it could be said that of typeclasses and traits, but, not really… types, at least in haskell, don’t have any “hierarchy” in the sense that he seems to talk about.
@rogergalindo7318 Жыл бұрын
if anything, go is more similar (in spirit) to haskell and rust, since he talks about what makes it different is the compositional nature of interface methods
@benlevy1896 Жыл бұрын
I don't know that procedural programming is strictly more natural than functional, though some things are naturally sequential in nature and therefore procedural fits better for those. I think it really is an exposure thing, the classic example being to ask students how to make a peanut butter and jelly sandwich.
@ThePrimeTimeagen Жыл бұрын
this is a great thing to watch, but its not a great argument. recursive thinking is definitely not a natural format, procedural is something we do with a _LOT_ of brain filling in the gaps
@LambdaCalculator Жыл бұрын
@@ThePrimeTimeagenThis is an apples-to-oranges comparison. Strict FP may require recursion, but most functional code out there doesn't explicitly use it (preferring higher level abstractions like map/fold/reduce/etc instead). To make it a fair comparison, you'd have to compare strict functional code with strict procedural code, which would look more like assembly and preclude much of the common usage of functions found even in a language like C. And obviously, even the strictest functional code still has elements of procedural style in the way function calls are arranged and executed sequentially (though Haskell does complicate that a bit more with it's laziness). Point being: the whole Functional vs Procedural thing is just a poor dichotomy all around. You can't really produce good code with just one or the other, because they never existed in mutually exclusive vacuums to begin with. Good code is eventually going to rely on both styles where appropriate. However, functional style building blocks do become more useful the higher up you go on the abstraction ladder. And I don't mean pointless java-style "abstractions", but rather layers in a properly segmented cake-like architecture, more like the abstraction that occurs when going from ASM -> C -> Python (ie. stratified design). Procedural methods become more limiting the further up you go in abstraction because they were designed to work with lower-level primitive values. Thus when you try to make higher level abstractions work procedurally, you're forced to expose a lot more internal implementation details to enable working with them, which means leaky abstractions, more cognitive overhead for the developer, and prevents the formation of properly stratified layers. You might think to yourself "That's absurd. I code procedurally all the time and can still separate everything well with good API boundaries". But if you look at the situation closer, you'll notice that the entire concept of an API boundary is actually more functional than procedural, because you're asking the API to do something for you as opposed to telling it how to do it (ie. a function call as opposed to a GOTO). Which goes back to my original point about there not being any actual hard-and-fast separation between the two.
@AsbestosSoup Жыл бұрын
There's always the argument of whether the goal justifies the means, but so far Go seems to tackle both with its great performance. Rust can do the same, if you grind enough to get used to it
@srijanraghavula6 ай бұрын
chat never fails to be in either completely sync with prime or completely out of sync with prime. He's tryna read something seriously and chat just makes fun and vice versa. Such a good channel btw.
@StrengthOfADragon138 ай бұрын
I worked at a company that used Go while I was getting my undergrad. Having graduated and spent almost as much time in industry as I did getting my degree I think I need to revisit Go. Java was my undergrad, and it's much of what I do at my current job, but I'm starting to see it's many issues (not sure how many of the issues in my current project stem from the fact that I'm the most experienced dev on my team though)
@EMWMIKE Жыл бұрын
"Less is more" is the slogan for a Swedish toilet paper/paper holder company. Used in companies and public places. It is stamped on their equipment :)
@homelessrobot Жыл бұрын
Yeah. Ruby was the rust of my generation. back when people in the indie-lang space thought there was a right way to do OOP. I imagine we will eventually arrive at a similar situation for rust things where we are like "Yeah that was an embarassingly long and windy dead end."
@funkdefied1 Жыл бұрын
“Wisdom remains unchanged but ideas can change quite a lot”
@olbluelips3 күн бұрын
The taxonomy bit always sticks in my head, but it's only *almost* correct. MANUALLY CONSTRUCTED type hierarchies are taxonomy, but an implicit immutable type hierarchy could be useful
@homelessrobot Жыл бұрын
and on the technical debt of types? Yes. The closer a type system gets to turing completeness, the more expressive it is necessarily. But if your type system is subject to the halting problem, there are now some perflectly valid types you can express that no compiler can compute.
@benheidemann3836 Жыл бұрын
Functional != recursion Recursion is a valuable tool for procedural programs. I learned it very early on and I think more people should as I think it’s easier to learn initially before your mental model starts to harden…
@cmelgarejo Жыл бұрын
I can see ThePrimeagen loving go a bit more down the road
@morgengabe1 Жыл бұрын
Welter weight languages are underrated and overpowered. Free variables are all you need for calculus; not limits or epsilon delta. The simpler the syntax, the simpler the re writes.
@damionmurray8244 Жыл бұрын
Desiderata...that's a piece by Max Erhmann. Words to live by.
@Robert-ht5kd Жыл бұрын
Good luck Michael on convincing JS programmers to use such a complictaed language like Rust in their work :)
@Manja500 Жыл бұрын
True, most JavaScript programmers don't have the intelligence to learn anything harder.
@KadenCartwright Жыл бұрын
@@Manja500I hope this comment made you feel better about yourself
@Manja500 Жыл бұрын
@@KadenCartwright Welp boys, we have our first JavaScript programmer. I'm sorry that your programming career is limited to the lack of brain matter in your head. I learned Python at the age of 11 and JavaScript at the age of 13. The language has it's uses, but people who make a career out of just JavaScript (other than frontend people, they don't have a choice) clearly have the intelligence of a 13 year old.
@EluLawlielt Жыл бұрын
@@Manja500 You know you really don't need to validate your existence by putting down others for choices they most likely didn't make? I know and have used many languages both in side projects and production code, you learn to take something valuable from all of them. Would you say someone like Rich Harris has the intelligence of a 13 year old? Or a myriad of devs working on hundreds, if not thousands, of apps that service millions of people using JS are also comparable to 13 year old? Do you think software like Slack, Discord, Chrome to some degree, the app where you're reading this very comment are products of a bunch of dumdums? A senior level, or even mid level, JS programmer would be perfectly capable of coding in most languages given some time - problem solving skills are not tied to the language after all.
@redyau_ Жыл бұрын
@@Manja500Who are you writing this to? Do you think this toxic vibe is what is cool?
@hiphiphorhayy Жыл бұрын
I've been looking for a back end language to learn now that I'm sure I don't want to do full stack development. I'm starting with JS because there's more resources out there but I'm planning to jump to Go once I got an idea of what I'm doing
@JamesJones-zt2yx Жыл бұрын
English speakers typically say /DEH-zih-de-RAH-tah/; it's from Latin, meaning "wanted things". Based on HN responses to comments about C++'s complexity, C++ devotees typically respond with "C++ isn't too complex; you're just not good enough to handle C++", so I'm not surprised C++ programmers wouldn't switch to Go.
@Simas1234 Жыл бұрын
I think I've read somewhere that it was mainly designed for C++ devs but what happened instead was that Python and JS devs started to adopt it
@ssokolow Жыл бұрын
Yeah. My understanding is that it was developed to replace Google's use of C++, which, due to the scale they operate at, is more like what other people tend to use Python and JS for.
@k98killer Жыл бұрын
I've been using Python to build proofs-of-concept for several years now. I learned Go this month and have been able to do some incredible things in it already; I can safely say that it is my new go-to language for anything that doesn't require GUIs, and I plan to build some GUI applications with Qt to see if it can become my go-to language for GUI apps as well. Also, curse C++, we hates it. Nasty C-pluses ruins the code.
@a4e69636b Жыл бұрын
@@k98killer I build GUI apps in Go too. Which operating system do you use?
@k98killer Жыл бұрын
@@a4e69636b Linux and Windows. I have a friend who has to use Mac for his work, so it would be an additional bonus if I can get things working for it.
@totof2893 Жыл бұрын
@@ssokolow I don't understand why JS and Python would be the correct language for Google use of C++. C++ is for long term software when you know exactly the concepts and want to write them in the code. Thus the compiler can do the check for you and catch most errors. the goal is to be correct by construction. Changing becomes slower when writing code but faster in validating it. Because most issues are found with the type system. it also brings performance and memory predictability, good when you want to industrialize your software by consuming less ressources. JS/Python enables writing incorrect code without any warning but a crash in production. And their VM makes it unpredictable and not efficient in term of performance and memory. Thus it is better to do POC and try stuff when everything is blurry. Or to write quickly disposable script to manage existing library/software. But if you build huge program with it, you will just con your clients with many support case for runtime errors.
@emjizone Жыл бұрын
19:56 My more generic feeling about this is: *No classification changes what things are.* And my politics would be: *Qualify rather than classify.* If it quacks like a duck, walks like a duck, and flies like a duck, maybe it's *still not* a duck, but maybe *we don't care* because all we need to know is *it can do it.* All we actually need is to assert that the thing *comply* with a bunch of criteria. Now, before you invent more types than in _Rust_ , remember the number $n$ of types you can make with $c$ independent criteria is $n=2^c$. This is already *too much* to pre-define in a programming language syntax. And also, keep in mind that, inside the binary machine, the only actual type is *positive integer* . *Any other type is simulated* by tagging some positive integer with purely *arbitrary* meaning.
@Jarek.10 ай бұрын
As somebody said... *Go is built for grug brained programmers* (like me). Or saying differently: *Go is for old, grumpy man* who grew up in 80-90 on their old Atari, Commodore or ZX spectrum.
@miguelalzate4850 Жыл бұрын
I love your videos. I learn a lot of English with them. Greetings from Colombia.
@lashlarue79249 ай бұрын
Bro you must be a complete genius. Most people who speak English would only understand about 20% of what this guy says. I'm an Ivy League graduate who has never scored blow 99% on any single standardized "verbal" English test (truth!), and I only understand maybe 75% of the engineering context despite being a relatively intelligent nerd with all the capacity to be this man's peer; I often understand English words that Primeagen does not, and I do enjoy watching him struggle, because I am a bad person (and because he is an infinitely better engineer than I am). So, if you're able to learn English by watching this guy, you're a Gigachad. Bigups to you.
@maf_aka Жыл бұрын
how is implicit interface in Go a good thing? AFAIK it's the only language that does this and it's confusing for me.
@danielsharp2402 Жыл бұрын
Actually typescript does thing like this. They call it structural typing.
@matez8355 Жыл бұрын
Go really just needs a couple of tiny tweaks to become THE language to use for anything in between the frontend shenanigans and OS&kernel. Already started pivoting slowly into it as a dotnet/node fullstack microservices merchant
@devnexen Жыл бұрын
what do you think they need to tweak to make it usable for os programming?
@matez8355 Жыл бұрын
@@devnexen I doubt it will ever get into that area fully, thats why I said it's starting to look like a great language for everything not frontend or super low level stuff like OS. That being said and to answer your question it would require GO to have no garbage collection at all in order to be used for it. Thats why C and C++ were kings for the past 40 years of OS development, and languages like Rust and Zig are the candidates to go in there
@devnexen Жыл бұрын
@@matez8355 for starter it would need to remove the garbage collection part (or at least making optional like nim). A lot easier said than done tough.
@matez8355 Жыл бұрын
@@devnexen I would say impossible unless they sacrifice a lot of the good things about concurrency they already have
@devnexen Жыл бұрын
@@matez8355 fair point, but trust me you do not want a driver written in go with huge latency because of the GC 😀
@glauco_rocha Жыл бұрын
Just so you guys know a little piece of ultra nerdy trivia: desiderata (from the italian, meaning "those who are desired") appears in another article that Rob Pike wrote about how UTF-8 was created by him and Ken Thompson.
@BlackDragon-tf6rv Жыл бұрын
Ty
@isodoubIet Жыл бұрын
Directly from Latin actually, desideratum
@glauco_rocha Жыл бұрын
@@isodoubIet yes
@natrixnatrix Жыл бұрын
I almost got into Go but got turned off by the stupidity of the date formating.
@artifishul Жыл бұрын
Another way of stating the conclusion here is that Go is intercepting those that would have otherwise found their way to C++ when the need arose
@lucky_luke4785 Жыл бұрын
Haha i had functional programming in my first year as a cs student and 75% of the class failed. Your opinions resonate with me very well.
@lucky_luke4785 Жыл бұрын
@@d_6963 Haskell. And it‘s not like we were a bad year. We had a 86% average on the math classes the same year. We just had little to no experience programming and understanding how one can manipulate data and control flow.
@isodoubIet Жыл бұрын
@@lucky_luke4785 Interesting perspective. Lots of Haskell evangelists claim Haskell _seems_ hard because we're all just ossified boomers whose brains have been so deformed by years of coding procedurally that we can't imagine how to do things another way, and that if only we'd learned Haskell first it would be procedural code that would seem hard instead. I always thought this was obvious BS but it's nice to have some evidence that newbs will find Haskell confusing too.
@pieterrossouw85968 ай бұрын
Came from a Java and C# enterprise world, used some Python for side stuff. Now I really feel like Go can give me the performance and type safety I miss from Java and C# but with some of the simplicity Python made me appreciate
@BreytnerNascimento Жыл бұрын
Functional with a bit of classes here and there will win in the end.
@maxnew453 Жыл бұрын
You mean something along the lines of Scala ?
@nescafezos42653 ай бұрын
I never looked closely before into go and it's syntax. and after watching video I wondered how it is possible that it has no generics but is strongly typed lang. I checked and found that it has in fact "map[keyType]valueType" that is look to me as built-in generic. and makes me think it has no way to define custom generics but has built-in ones
@j-wenning Жыл бұрын
Very odd that there was just about 0 pushback on the statement "Go's claim is that minimizing programmer effort is a more important consideration," considering the fact that Prime regularly says DX isn't a thing. That's literally DX in more words.
@ThePrimeTimeagen Жыл бұрын
i say that modern dx is the definition of "i am familiar with this approach" that on the other hand is the summation of the post claiming to pair down features into the minimum amount to make it the most effective. i can agree with that statement / little argue because of the totality of the article and my knowledge of go
@snippletrap Жыл бұрын
C pioneered returning error values. 0 means success, anything else means error.
@onsearchfocus10 ай бұрын
@ThePrimeTime What's with the selecting all but the first and last character in (almost) every text?
@tytywuu Жыл бұрын
This article describes me. Python as native language and switches to Go for concurrency fun.
@milankovacs4259 Жыл бұрын
Can someone explain the joke at 3:18
@connormc7112 ай бұрын
Understanding something is not always breaking down into smaller and smaller parts. While you are reducing the subject you are increasing losing context. To really understand the world more you would find patterns and similarities and not fracture your understanding of the world
@michaelslattery3050 Жыл бұрын
It's too bad Nim hasn't gotten more adoption by Python refugees.
@harshitarora693 Жыл бұрын
I just started learning a language after like 1 year of doing nothing(I'm actually in Cyber Security so I was busy just reading codes and I got sudden interest in go lang when randomly reading code in some vulnerable machine) and now watching this lol
@IvanRandomDude Жыл бұрын
I wish go had opinionated feature-rich web framework. Instead here I am, working on a project where I have to freaking write auth system wtf. Coming from aspnet core this is pain....
@mcspud Жыл бұрын
Bruh, don't be that guy.
@QckSGaming Жыл бұрын
You are not forced to write your own, there's a billion choices out there, and most are generally composed from standard interfaces so..
@IvanRandomDude Жыл бұрын
@@QckSGaming suggest some
@flarebear5346 Жыл бұрын
@@IvanRandomDudeif you can't even Google idk what to tell you.
@jugurtha292 Жыл бұрын
Pocketbass
@kc3vv Жыл бұрын
Isn't Go's concurrency model similar to Erlang's?
@kawo666 Жыл бұрын
CSP vs Actor’ish
@orustammanapov Жыл бұрын
I'm yet to meet anyone in real life, who likes "letter case sets visibility"☺
@omeryehezkely3096 Жыл бұрын
Hi!
@orustammanapov Жыл бұрын
@@omeryehezkely3096 Hi!
@WayneRadinsky Жыл бұрын
Hi!
@orustammanapov Жыл бұрын
@@WayneRadinsky Hi! ☺
@isodoubIet Жыл бұрын
I love how this guy lists that as a positive. Like, holy smokes what a misfeature
@kokizzu Жыл бұрын
+1 agree about the beauty of err (but i wish for better syntax XD `returnIf(err, ErrOptionalWrapper)` for example), colorless goroutine
@rili136 Жыл бұрын
can you make a video about qwik? thanks in advance
@andythedishwasher1117 Жыл бұрын
Can someone possibly refer me to a Prime video where he explains his disdain for Uncle Bob in detail? I have my own qualms with the man, but I'm interested to understand Prime's take on the issue.
@fennecbesixdouze1794 Жыл бұрын
"Go has this python esque feeling to it" lmao, you could literally only be referring to the no-semicolons. Go absolutely doesn't feel like python at all.
@spell105 Жыл бұрын
I was about to say, Go feels and writes nothing like Python. Mostly for the better.
@captainfordo1 Жыл бұрын
Go is C for the web.
@zhamed9587 Жыл бұрын
some golang "features": * no immutability qualifiers (const/final/readonly) * verbose and error prone error handling * terrible time package * no stack traces in errors * zero types are error prone * no default interface function implementation * generics are very weak * structural typing is a hack, and an annoyance in large code bases and many more
@NoX-512 Жыл бұрын
It’s not a surprise to me that Go isn’t a replacement for C and C++. A language with GC is not a systems programming language. We still need a good replacement for C. I’m rooting for Zig to become that.
@mike2000177 ай бұрын
I think the answer is simpler than that. While trying to sell a new language to C++ programmers, the moment you pronounce the words "garbage collector" or "no RAII", you've pretty much lost 90% of them already.
@paivacn08 Жыл бұрын
I know templates are terrible designed in C++, but the idea behind metaprogramming is good per se for me. Maybe generic as Java and Rust are just enough.
@BosonCollider Жыл бұрын
This. The point of a type system with generics is that static type systems may not give you more expressiveness than a dynamically typed language, but if you don't include generics they can definitely reduce expressiveness a lot. It isn't so much about taxonomy as just making many functions impossible to write.
@manofqwerty Жыл бұрын
Was Go amed so because it is the first word in the Desiderata text?
@wagnernoise Жыл бұрын
Desiderata is from Italian and it means desired 👍Cheers!
@LusidDreaming Жыл бұрын
Implicit casting 32 to 64 is all fun and games, until you're working with an in house serializer and suddenly can't figure out why the client is getting errors trying to deserialize
@Megalcristo2 Жыл бұрын
Wait, you understand Rust borrowing system, but you don't understand rvalue references? The borrow checker is exactly the same as rvalue reference but with the compiler making sure you are doing it right
@elcugo Жыл бұрын
I think the problem is the name, borrow checker just checks borrow, but a rvalue reference? What the heck is a rvalue and why are you referencing it?
@infastin3795 Жыл бұрын
@@elcugo"rtfm lol"
@isodoubIet Жыл бұрын
@@elcugo rvalue references make perfect sense apart from the fact that value categories are distinct from types and you can have an lvalue of type rvalue reference and vice versa. That is the single most confusing aspect of the whole thing. Conceptually though, it's actually pretty simple, it's an rvalue because it's the sort of thing that goes on the right hand side of an assignment, which is 'just' a way to detect when references point to temporaries.
@elcugo Жыл бұрын
@@isodoubIet I know what rvalue references are, but the explanation just gave sounds like technobable to anyone that isn't already entrenched into C++. Thinking about a better name I came out with "ownership transferring references" which isn't a great name especially since it isn't accurate because moves may or may not happen.
@isodoubIet Жыл бұрын
@@elcugo The problem with other more descriptive names is they lose accuracy. Maybe that particular ship sailed with std::move but an rvalue, to me, doesn't imply ownership will be transferred. It just means I shouldn't rely on the object living past the semicolon. I will never understand the lvalue - glvalue vs prvalue - rvalue dichotomy though. Seems pretty silly and inconsistent.
@gtsteel Жыл бұрын
Neither Rust nor Haskell have inheritance, the complaint about type hierarchies are about C++ and (especially) Java.
@spell105 Жыл бұрын
C++ and Java programmers have long moved on from type hierarchies, stop inventing straw men. C++ has embraced composition over inheritance 12 years ago before it was the cool thing, and even Java programmers know inheritance causes headaches, with Spring moving to remove most forms of inheritance from its code, preferring interfaces where possible.
@RicardoSuarezdelValle6 ай бұрын
Am I crazy or cant there just be a lang that does it all? interpreted, compiled, types, no types, etc and just have the programmers that use it choose how to use it
@GoWithAndy-cp8tz8 ай бұрын
desiderata is a kind of poem how to live in a good way, how to don't waste your lifetime and wisely make good things which supports others;) BTW letter case sets visibility is not good because in case you have to change certain function to be visible or not, you have to rename all places where particular function was invoked. It is unnecessary,time consuming and ant work.Cheers! BTW/IMHO Go is awesome anyway.
@mashebemunalula890110 ай бұрын
This has me interested in c++
@MindBlowerWTF Жыл бұрын
What do you mean? C++ is perfect language, why would they swap? he worked at Google btw
@UGPepe Жыл бұрын
13:29 why would that be surprising? what did you expect to happen and why? I bet you can't figure out better semantics without introducing a separate int type
@NoX-512 Жыл бұрын
@Prime, why don’t you make a series where you learn assembly programming? I think RISC-V would be a great ISA to begin with, because it’s super simple compared to X86. You can use QEMU to run the code.
@OM-bs7of Жыл бұрын
What do you all think about Elixir for web services? Bulletproof runtime.
Go is extremely unsafe. You can access nil pointer everywhere, nobody is going to warn you, you can partially initializw your structs and forget some fields. Just horrible.