Why I’m Switching To Go in 2024

Поділитися
Вставка
  • Опубліковано 15 вер 2024

КОМЕНТАРІ • 262

  • @dei8bit
    @dei8bit Місяць тому +20

    Alan Kay seems to be the inspiration for the Golang logo.

    • @awesome-coding
      @awesome-coding  Місяць тому +4

      😂😂😂 shame on you!

    • @dei8bit
      @dei8bit Місяць тому +1

      @@awesome-coding xD sorry it just seemed to me

    • @CoConnoisseur
      @CoConnoisseur Місяць тому +5

      @@dei8bitThat was hilarious

    • @alinghinea98
      @alinghinea98 Місяць тому +8

      underrated comment 😂

    • @user-eg6nq7qt8c
      @user-eg6nq7qt8c 27 днів тому +1

      how dare you! 😂😂😂😂😂

  • @nyagah243
    @nyagah243 Місяць тому +64

    Going from Python to Go has been pretty fun for me tbh. So much just in the standard library.

    • @awesome-coding
      @awesome-coding  Місяць тому +3

      Glad to hear!

    • @ccgarciab
      @ccgarciab 29 днів тому +6

      That's an interesting comment. The Python stdlib is known to be quite large and varied.

    • @brandonmbanks
      @brandonmbanks 2 дні тому

      I also went from python to go! I felt like it was kinda the opposite. Go's standard library is relatively small. Actually pretty helpful to learn the language. But I definitely felt like some things were missing coming from Python's expansive stdlib.

  • @arjandhaliwal4962
    @arjandhaliwal4962 Місяць тому +142

    Concurrency deep dive!

  • @rafalk0
    @rafalk0 Місяць тому +40

    Re: Java - for quite a few years now Java has RECORDS, so you no longer need to create getters, setters, constructor or methods related to comparing object.
    You can simply define your movie type like this: `public record Movie(String name, double score) { }`

    • @davidchavez4054
      @davidchavez4054 Місяць тому +10

      Good luck using those on old projects

    • @PortalUser2
      @PortalUser2 Місяць тому +2

      Yep, and C#, which in Program.cs you could write:
      ```
      var a = new Movie(Name: "Seven", Score: 10);
      record Movie(string Name, float Score);
      ```
      But the convention-based approach of Go looks reasonably nice to me (the uppercase versus lowercase names dictating public versus private). There was nothing I saw in the video that would make me switch to Go, but I can still respect it is elegant syntax.

    • @victorbitencourt9481
      @victorbitencourt9481 Місяць тому +4

      for who is reading, this is only for making IMMUTABLE objects. it doesn't generate setters! sadly, we're not quite there in Java ;-;

    • @rafalk0
      @rafalk0 Місяць тому

      ​@@victorbitencourt9481 records are intentionally immutable which is a massive benefit.

    • @vasanthvel501
      @vasanthvel501 25 днів тому

      It's from scala actually(case class), and some of other higher level lang has this like kotlin dataclass

  • @greendsnow
    @greendsnow Місяць тому +175

    good luck if error is not nil

    • @cryptonative
      @cryptonative Місяць тому +16

      “_err” problem solved

    • @awesome-coding
      @awesome-coding  Місяць тому +8

      😅

    • @sequbeats
      @sequbeats Місяць тому +51

      errors as values is the best feature of golang

    • @awesome-coding
      @awesome-coding  Місяць тому +15

      @@sequbeats I agree, but it takes a bit of time to get used to them.

    • @OldKing11100
      @OldKing11100 Місяць тому +3

      My life for syntax sugar:
      f, ? := os.Open(filename) // return err and zero everything else out
      f, ?err1 := os.Open(filename) // call func err1
      f, ?err2 := os.Open(filename) // call func err2

  • @luiscarlosjayk
    @luiscarlosjayk Місяць тому +11

    I started with Go last year, but then tried Rust and then got in love with it.

  • @Niksorus
    @Niksorus Місяць тому +10

    Greatest intro, I'd love to see more of Go from you

    • @awesome-coding
      @awesome-coding  Місяць тому +2

      More to come! Thanks for the feedback!

  • @MrBran4
    @MrBran4 Місяць тому +44

    I was the biggest Go fanboy you could imagine but I'm sick to the teeth of having to check if every interface is nil or a pointer to nil or...

    • @hamm8934
      @hamm8934 Місяць тому +6

      For me, the biggest shortcoming of go is all properties being optional. If you could set a compiler flag for required properties or add a lil syntax, it would go a long way.

    • @bionic_batman
      @bionic_batman Місяць тому +4

      It sounds like you are doing something wrong. The only case when you need to explicitly check for nil is usually error handling. Everything else can be covered by default values and nil receivers

    • @MrBran4
      @MrBran4 Місяць тому +24

      @@bionic_batman if your function accepts an interface type as an argument, that argument can be nil at runtime

    • @HappyCheeryChap
      @HappyCheeryChap 8 днів тому

      ​@@hamm8934yeah that's my biggest issue with it too. I'm surprised how little anyone else mentions this. I think your comment here is the first one I've seen, aside from all my own.

  • @eliasalerno8942
    @eliasalerno8942 Місяць тому +5

    much love for go, especially the package manager saves me so many nerves

  • @Lucas-gt8en
    @Lucas-gt8en Місяць тому +9

    Go is looking pretty good, might give it a spin instead of hammering everything in with TypeScript

  • @dami-i
    @dami-i Місяць тому +17

    It's been a few weeks that I made the decision to ditch Node.js in the company I work for. Every one of our Node.js applications will be rewritten over time in Go or Java due to obvious reasons.

    • @maacpiash
      @maacpiash Місяць тому

      May I ask what those obvious reasons are?

    • @girxchin
      @girxchin Місяць тому

      i want to know too

    • @diasutsman
      @diasutsman Місяць тому +1

      ​@@maacpiash like idk, it's literally JavaScript?

    • @dami-i
      @dami-i Місяць тому

      ​ @maacpiash @girxchin Glad you asked.
      We started 3 years ago using Node.js. It was chosen as our main platform due to the following reasons:
      a) The team's average technical skills and stack at that time.
      Apart from myself, we had two beginner developers who only knew front-end JavaScript and had limited (college-level) knowledge of Python. We immediately discarded Python as an option for the back-end (the reasons for this should be obvious).
      b) The size and scope of the applications we were building back then.
      At that time, we were creating simple web apps for a single industrial customer, hosted locally. Few users, simple authentication mechanism, we theoretically had available as much computing power as we needed.
      As time passed, the complexity of our customers' demands increased. As the codebase of our apps grew, maintaining the code and adding new features became increasingly difficult. This wasn't due to poor design, architecture, or lack of clean code. This is an inherent issue with any other dynamically typed language.
      [Quick advice: if you want robust, less error-prone applications, you need a static/strict/strong-typed language.]
      I felt it was time to enforce the adpotion of TypeScript. The team quickly got the hang of it. And we kept using it up to this day.
      However, I knew that TypeScript would eventually reach its limitations.
      As we gained more customers, we started building and selling larger, multi-tenant applications. Our team grew in size and experience, and the developers became familiar with concepts like types and pointers.
      The perhaps not-so-obvious reasons for moving from Node.js to Go/Java are as follows:
      a) JavaScript
      The language was not created for back-end. It was adapted.
      The most important issue is that as a dynamically typed language, it has a high level of ambiguity, particularly with its "truthy" and "falsy" values - for example, "if (0)" translates to "if (false)" in JS. Such a situation wouldn’t occur in a properly typed language like Go or Java.
      b) Compilation and build size (Go advantage only)
      Recently we deployed a complex queue handler app in a container with a single 9MB executable!
      c) Memory consumption (Go advantage only)
      It's fairly known that Go applications eat a lot (like, A LOT) less memory than Node runtime.
      Also, Go's learning curve is shallow.
      Hope this clarifies.

    • @dami-i
      @dami-i Місяць тому

      ​ @maacpiash @girxchin Glad you asked.
      We started 3 years ago using Node.js. It was chosen as our main platform due to:
      a) The average technical skill and stack of our team at that time.
      Except for myself, we had two beginner devs that knew only front-end JS and a bit (college knowledge only) of Python. Note: Python was immediately discarded as an option for back-end (I assume the reasons for this one are obvious here).
      b) The size and scope of the applications we were building back then.
      We were crafting simple web apps for a single industrial customer, hosted locally. Few users, simple authentication mechanism, we theoretically had available as much computing power as we needed.
      Time passed by and the complexity of our customer demands increased. As the codebase of our apps was growing, it was becoming harder and harder to maintain the code and to adding new features. It was not a matter of design or architecture or clean code. It would happen with any other dynamically typed language.
      [Quick advice: if you want robust, less error-prone applications, you need a static/strict/strong-typed language.]
      I felt it was time to enforce the adpotion of TypeScript. The team quickly got the hang of it. And we kept using it up to this day.
      However, I knew it was only a matter of time for TypeScript to not be sufficient anymore.
      We gained more customers and started building and selling multi-tenant, bigger apps. The team grew in size and we are more experienced. Devs now understand types and pointers.
      The perhaps-not-so-obvious reasons for moving from Node.js to Go/Java are:
      a) JavaScript
      The language was not created for back-end. It was adapted.
      The most important thing: as it's dynamically typed, the level of ambiguity is high, especially because of the famous "truthy" and "falsy" values - "if (0)" translates into "if (false)" in JS. Something like that wouldn't compile in a properly typed language, like Go or Java.
      b) Compilation and build size (Go advantage only)
      Recently we deployed a complex queue handler app in a container with a single 9MB executable!
      c) Memory consumption (Go advantage only)
      It's fairly known that Go applications eat a lot (like, A LOT) less memory than Node runtime.
      Also, Go's learning curve is shallow.
      Hope this clarifies.

  • @abdulw-c2q
    @abdulw-c2q 26 днів тому +2

    I really like explanation. It's clear, concise, and insightful. Keep it up!

  • @BlizzGMX
    @BlizzGMX Місяць тому +15

    I really like go. You can type go doc and the package name when you forget something you want to use and it pops right up in the terminal. Most of what you need is already in the language. Very nice.

    • @awesome-coding
      @awesome-coding  Місяць тому +1

      Good tip!

    • @hugochavez6170
      @hugochavez6170 Місяць тому

      Not everything is or was in the language. Why do frameworks or libraries like gin exist?

    • @BlizzGMX
      @BlizzGMX Місяць тому

      @@hugochavez6170 Most != everything.

    • @pookiepats
      @pookiepats Місяць тому

      @@hugochavez6170 because js devs come to Go and immediately start writing libraries instead of reading the docs

    • @BlizzGMX
      @BlizzGMX 24 дні тому

      @@hugochavez6170 most != everything

  • @skl9942
    @skl9942 Місяць тому +1

    I switched from Python to Go for both internal CLIs and webwidgets last year at work and haven't regret it.

  • @Brofix_
    @Brofix_ Місяць тому +5

    I took the Elixir pill and I'm really happy

  • @ASmith2024
    @ASmith2024 Місяць тому +2

    Great video! Very insightful about OOP and objects.

  • @kellymoses8566
    @kellymoses8566 13 днів тому +2

    Go is now actually simpler than Python.

  • @youtubevanged9359
    @youtubevanged9359 Місяць тому +9

    go is beautiful. my current favorite

  • @Thassalocracy
    @Thassalocracy День тому +1

    Imo Go is possibly the fastest GCPL there is. This is a great pity, since it's made to be so versatile and not tied to any ecosystem (*ahem*swift*ahem*). I feel Google made a mistake here when they created three different PLs (Go, Kotlin, Dart) for different use cases. They should only have made Go, then aggressively pushed Android to switch from Java to Go, likewise with Flutter. Now Kotlin is stuck with the JVM which slows down its compile speed while Dart is only about as fast as JavaScript even though JS as a dynamic PL is JIT compiled and Dart as a static PL is AOT compiled.

  • @alinghinea
    @alinghinea Місяць тому +4

    I was waiting for this🙏🏻

  • @laztheripper
    @laztheripper 18 днів тому +2

    It might just be me, but I kind of disagree about Go being concurrent. It using physical cores or threads is kind of irrelevant to how the code behaves, and it behaves as parallel threads, and that's the entire reason why Go's model sets itself apart from C++ for example, where parallelism often requires complex thread locking and mutexes, which don't preclude deadlocks in the least.
    Concurrent to me is more like C++ coroutines, where you have many tasks you are juggling and it is explicit by the API that there's context switching happening within the scope of your app, not the operating system's automated scheduling.
    In other words: if you start a bunch of tasks, and they all happen at the same time - then it doesn't matter if the scheduler technically split them up into small chunks, as far as your code is concerned, it's parallel.
    Otherwise, if you implement coroutines in Go, what do you call those? Super/Strict Concurrency? Nah

  • @nisem0no
    @nisem0no Місяць тому +3

    I really want to, but the language has some strange paradigms that I'm not fond of and I keep returning to Rust due to finding I trust my code more. But Golang is very appealing in terms of all that it does well, and how flexible it is.

  • @PanosGeorgiadis
    @PanosGeorgiadis Місяць тому +9

    You forgot to mention web assembly. Go compiler can build in that and you effectively have a web app as well :)

    • @awesome-coding
      @awesome-coding  Місяць тому +3

      I actually have a whole video on this exact topic - ua-cam.com/video/v8-yeWXCsi4/v-deo.html

  • @matress-4-2323
    @matress-4-2323 Місяць тому +2

    rust syntax is closer to js than go which is one reason that i like it more. mainly the type system and pattern matching is something i find difficult to live without.

  • @cyrus01337
    @cyrus01337 Місяць тому

    Started learning Go today. Because I can't constantly build and run my application, it's helped me to write features more incrementally by taking baby steps rather than defaulting to building and running my aoplication, especially when writing large chunks.

  • @omnilothar
    @omnilothar 9 днів тому +1

    things I dont get used to is, the awareness to know directly when to use * or & , why must have package name that follow its folder name?

  • @hamm8934
    @hamm8934 Місяць тому +11

    Go is the future of web dev. By 2030, Go is going to be a powerhouse once Templ, HTMX, and Alpine get more mature.
    Go is what typescript and pedantic pretend to be.

  • @kasvith
    @kasvith Місяць тому +4

    Go's simplicity makes programs extremely verbose

  • @cherradiyacyn
    @cherradiyacyn Місяць тому +2

    Thing is I don't think that any of the languages I use ( JS, PY, GO ) is good. I just use them that's all ...

  • @geraldodev
    @geraldodev Місяць тому +1

    Concurrent , but verbose, and generics being added late to the language, the libraries needs to adapt. Awesome standard library.

  • @soverain
    @soverain Місяць тому

    Error handling in Go reminds me of the "Try Pattern" in C# where a method would return a boolean for status and have one or more "out" parameters to get your stuff back.
    I'm using Unity 90% of my time and I use this pattern A LOT to get around object lifecycle and I like it very much, so I guess GO would not be hard to adapt to.

  • @papajohnvspapajhin6541
    @papajohnvspapajhin6541 Місяць тому +5

    I have also recently started exploring Go. My background is mostly in Java but I also have a good understanding of Python and JS as well. I'm not really impressed by my first week of learning Go. I like the fact that is compiled in a single binary. I actually like the errors as values because it forces you to think more about error handling and it would definitely be my go to for writing concurrent programs. However, I'm really annoyed with the systax sometimes, for example appending to a slice, type conversion etc
    Do you think that I would get used to it and start liking it more once I get more familiar with the standard library and the "go way of things"? How was your experience in the beginning coming from JVM languages as well?

    • @bionic_batman
      @bionic_batman Місяць тому +3

      >Do you think that I would get used to it and start liking it more
      It is quite possible. I hated some of the things in Go when I started working with it
      Now, after about 5 years of working with it on daily basis I love it and understand why those things were done the way they were.

    • @papajohnvspapajhin6541
      @papajohnvspapajhin6541 Місяць тому

      @@bionic_batman that's encouraging! Thanks

    • @hugochavez6170
      @hugochavez6170 Місяць тому

      ​@@bionic_batman. After 5 years you can like every language.

    • @beaticulous
      @beaticulous 15 днів тому

      You came from another universe.

  • @piotrtamulewicz5131
    @piotrtamulewicz5131 Місяць тому +2

    I tried it, I had problems with reading files. Many problems. I did not have that problem with any other new languages I was starting with. I passed it after an hour of fights. You may say I'm noob, yes I am, but to me that's much hassle with simple things making work.

    • @everyhandletaken
      @everyhandletaken 21 день тому

      Would be interested to know what those problems were. My first Go use case was parsing, splitting & writing csv files. Whilst it wasn't quite as simple as something like NodeJS, it was not complex & extremely performant. Struct tags are a great feature, I find.

  • @TechBuddy_
    @TechBuddy_ Місяць тому +2

    the best part is it's cross compiler and pair it with zig linker and it's just awesome

    • @awesome-coding
      @awesome-coding  Місяць тому +1

      Didn't get the chance to spend too much time with Zig yet.

    • @C4CH3S
      @C4CH3S Місяць тому +1

      ​@@awesome-codingwith the zig linker you can make statically linked binaries even with libraries that use CGO. It's not flawless and I haven't seen perf testing, but it works

    • @TechBuddy_
      @TechBuddy_ Місяць тому

      @@C4CH3S wdym by flawless?

    • @C4CH3S
      @C4CH3S Місяць тому

      @@TechBuddy_ it will sometimes fail to produce a binary whereas a regular linker wont.

    • @TechBuddy_
      @TechBuddy_ Місяць тому

      @@C4CH3S huh wierd, i never had that issue. the zig linker is just the clang one with some stuff around it so it shouldn't be different

  • @ParthaSarathylink
    @ParthaSarathylink Місяць тому +4

    Folks warning ! Unused variables is a error in go

  • @henrymaddocks984
    @henrymaddocks984 Місяць тому +2

    Java used to be a nice simple language too. Go is heading in the same direction

    • @dexternepo
      @dexternepo Місяць тому

      One of Golang's aims was to keep it as a simple language and so they won't keep adding features to it like they do to Java, C++ and Rust. And Java creators aim was never to keep it simple.

  • @benardallotey
    @benardallotey Місяць тому +3

    Go is a cool language at first but I found myself reinventing the wheel a lot for very simple things. Does it have a map now?

    • @exismys
      @exismys 29 днів тому

      Yes... It had maps for long time now

  • @garfield584
    @garfield584 15 днів тому +2

    Go ❤

  • @driveDoses
    @driveDoses 4 дні тому

    I learned java first then switched to go and it is simple and fast I am loving it but it sucks at handling errors. Also I am following java these days and it seems it is improving a lot. Now Java method can also return multiple different type values, no setter getters required with record . they are also working on project like Lilliput, Valhalla and Leyden to improve performance and cut memory usage by almost 50%. If this happen I will happily switch to java again

    • @awesome-coding
      @awesome-coding  3 дні тому

      I didn't know about Java supporting multiple value returns.

  • @rankarat
    @rankarat Місяць тому +7

    GO to C#
    Much better and more modern in every aspect you can imagine.

  • @piotr780
    @piotr780 5 днів тому

    arent objects simply data structures + algorithms (methods) ? if so then GO handles objects, but operations like inheritance are not implemented

  • @cbaesemanai
    @cbaesemanai 4 дні тому

    If I have to build a api or service, sure I am using go.

  • @renbangbprd7236
    @renbangbprd7236 27 днів тому +4

    You should try the new Java

  • @bijayaprasadkuikel5162
    @bijayaprasadkuikel5162 Місяць тому +1

    Please make a deep dive tutorial on concurrency please.

  • @StiekemeHenk
    @StiekemeHenk Місяць тому +2

    I find go hard to follow and read

  • @mrcruz1107
    @mrcruz1107 20 днів тому

    So the separation of structs and interface is a reaction to oop? To simplify things when before all these methods, and types were bound up in a class?
    Am I understanding this correctly?

  • @kvelez
    @kvelez Місяць тому +1

    Great video.

  • @paw565
    @paw565 Місяць тому +2

    Can anyone recommend good data validation library for Golang?

  • @joeportnoy-qh9en
    @joeportnoy-qh9en Місяць тому +2

    i like go for very small projects and prototyping. it's too simple and verbose when i want to be expressive. if there was a better balance it would be the perfect language. i like elixir phoenix more.

  • @levizin917
    @levizin917 Місяць тому +3

    what will you build with it tho?

  • @paca3107
    @paca3107 Місяць тому +4

    go is my favourite language

  • @Codewello
    @Codewello 28 днів тому

    I wish you could use it in my job, but JavaScript frameworks like Next.js make everything move faster in development.

  • @LetrixAR
    @LetrixAR Місяць тому +5

    The syntax throws me off.
    I prefer Rust because of this. Its syntax is more similar to JS.

    • @awesome-coding
      @awesome-coding  Місяць тому +3

      It's the other way for me. I find Rust's syntax off compared to Go :))

    • @dexternepo
      @dexternepo Місяць тому

      That's a wild take. Rust has a strange syntax and Golang's syntax is in line with C, C++ and Java type of languages.

    • @log8746
      @log8746 5 днів тому

      JS has the worst syntax, you need to create separate functions just to catch and handle errors, otherwise your code is going to nest too much. I like understanding how my code works at a deeper level and I would have to spend too many hours doing that in JavaScript.

  • @Jollyrogger805
    @Jollyrogger805 13 днів тому

    Go is good but lack of AOP makes to difficult to create enterprise level system

    • @awesome-coding
      @awesome-coding  13 днів тому +1

      Hmm... it is good enough for Uber, Docker, Twitch, Dropbox, or Netflix :D

    • @Jollyrogger805
      @Jollyrogger805 13 днів тому

      @@awesome-coding they had to create a lot of libraries to make it enterprise level, ex. Uber has to create zap as go standard logger wasn't that good, jaeger for distributed tracing. I had to create my own tracer for printing the traces in logs. All these are autoconfigured in java

  • @awnion
    @awnion 19 днів тому +4

    Just use Rust 🦀

  • @cg219
    @cg219 Місяць тому +1

    More Go pls

  • @Contractor48
    @Contractor48 Місяць тому +4

    Have you tried c#?

    • @ripple123
      @ripple123 Місяць тому

      he did java for a long time, C# doesnt really offer anything game changing

    • @Contractor48
      @Contractor48 Місяць тому +6

      @@ripple123 what game changing things does Go have which c# doesn’t?

    • @diamondkingdiamond6289
      @diamondkingdiamond6289 Місяць тому +6

      @@ripple123C# is designed better compared to the cluster fuck of Go. I swear whoever designed Go did not put no thought into it.

    • @MaximT
      @MaximT Місяць тому

      @@diamondkingdiamond6289 Fully agree. I started to learn Go after C#. C# much more thought out lang than go. And It has channels too. The most ugly thing in the Go is the implicit interface implementation. Never knows what interfaces has the struct.

    • @fantoSama
      @fantoSama Місяць тому +3

      I was about to ask the same, all these features actually are present in C# with a better syntax and readability

  • @samuelvishesh
    @samuelvishesh Місяць тому +1

    What about Haskell?

  • @spetz911
    @spetz911 Місяць тому +1

    This is just a brain dump, not sure what I’m supposed to get from it 😢

  • @tsykin
    @tsykin Місяць тому +9

    After webdevcody's latest video I am sceptical about all that GO thing

    • @awesome-coding
      @awesome-coding  Місяць тому

      I'm not familiar with his take on Go. Isn't he a fan?

    • @hamm8934
      @hamm8934 Місяць тому +2

      He wasnt skeptical of go, but templ and htmx, both of which are very young and will improve a lot over the next few years. Also, he’s so deep in react, he couldnt justify it for himself.

    • @awesome-coding
      @awesome-coding  Місяць тому +7

      @@hamm8934 Ah I got it. There is a big distinction between Templ / HTMX and Go. I'm thinking Go in broader terms, as a general purpose language, not just as a solution to build UIs.

    • @cethien
      @cethien Місяць тому

      ​@@hamm8934 also a "fullstack app stack" in go is not really beginner friendly since go is a "structure your project yourself" language, which propably scares of a lot of people.
      myself, i build a "dev" command with wgo, which works great, but is pretty advanced. also templ lsp is a bit frustating, so i switched to Gomponents, with the downsides of no intellisense for tags and attributes and you cant copy paste stuff from other projects or components. kinda makes sense that people go back to js, since its easier and sometimes you just need to get stuff done quickly

    • @hamm8934
      @hamm8934 Місяць тому

      @@awesome-coding100% agree with you

  • @AnnasVirtual
    @AnnasVirtual Місяць тому +6

    maybe it just me i just don't like golang syntax

    • @tokisuno
      @tokisuno Місяць тому +1

      it feels pretty great once you use it enough

    • @awesome-coding
      @awesome-coding  Місяць тому

      @AnnasVirtual what's your background?

    • @SirJagerYT
      @SirJagerYT Місяць тому +4

      What you are talking about bro ? Go is the neat and clean language. Half of the community love go only for its simplicity, minimal and neat code.
      And bonus is it has almost fastest compiler.

    • @tokisuno
      @tokisuno Місяць тому +1

      @@SirJagerYT it's probably just typing := which to be fair, i still hate typing to this day.

    • @SirJagerYT
      @SirJagerYT Місяць тому +2

      @@tokisuno So you must be loving typing
      this in js/ts and probably in any other lang :-
      try {
      const res =await funcMightThrowErr(opts);
      return res;
      } catch (error) {
      // handle error or return
      }
      than typing :=
      res,err := mightThrowErr(opts)
      if err != nil {
      // handle error
      return
      }

  • @AmirHosseinHonardust
    @AmirHosseinHonardust Місяць тому +1

    Huh. I started with go and then Rust. But now moving to Elixir.

    • @awesome-coding
      @awesome-coding  Місяць тому

      A lot of Elixir mentions in the comments - interesting.

    • @AmirHosseinHonardust
      @AmirHosseinHonardust Місяць тому +1

      @@awesome-coding I was skeptical because of its typing system. Now, after building, launching and maintaining 3 medium (100000LoC) to large (1_000_000 LoC) that Elixir covers more of the pain points of developing a server-side web app and web backend than go, and has tons of more useful, unique features that make the bug resolution easier than having a static type check. Also the memory profile of elixir is much more stable than go while still having the flexibility of using rust or zig for CPU-bound tasks. So putting it all together, I will choose Elixir for any server code rather than Go and Rust, given the chance. And the community and the documentation! Just amazing!
      If you like, I can go on about it for the rest of the day. Just know that Elixir is probably the most underrated language I have seen.

    • @infantfrontender6131
      @infantfrontender6131 Місяць тому +1

      Same

  • @naranyala_dev
    @naranyala_dev Місяць тому +1

    htmx, htmx, htmx

  • @PaulSebastianM
    @PaulSebastianM Місяць тому

    Why not F#? I find F# much more expressive, safer, and just as fast.

  • @fabricehategekimana5350
    @fabricehategekimana5350 Місяць тому +1

    Great video ! Will you work with Rust ?

    • @awesome-coding
      @awesome-coding  Місяць тому +3

      I played a little bit with Rust, but I'm not that confident in my Rust skills yet. The learning curve is pretty steep compared to Go.

    • @fabricehategekimana5350
      @fabricehategekimana5350 Місяць тому

      @@awesome-coding Yeah, it true it's pretty steep unfortunately. THANK YOU for talking about the real purpose of OOP. I think Go and Rust are the true spiritual heirs of OOP

  • @piotr780
    @piotr780 17 днів тому +3

    GO error messages are horrible

  • @anuragprakash7256
    @anuragprakash7256 Місяць тому +1

    Only pain is error handling

    • @awesome-coding
      @awesome-coding  Місяць тому

      It's a matter of getting used to it.

    • @log8746
      @log8746 5 днів тому

      how, can you explain? To me it seems a lot better than using try-catch

    • @anuragprakash7256
      @anuragprakash7256 5 днів тому

      @@log8746 In one function you just need one try catch block and in the catch block you can write logic to segregate the errors by its type. Now compare this with golang error handling where after every function call you need to add a if statement to check if the function is returning error

  • @-vis-2492
    @-vis-2492 Місяць тому +1

    Thanks to The Primeagen Marketing 😂

  • @NoahNobody
    @NoahNobody 26 днів тому

    I guess if you don't want to use generics, you don't have to use generics :)

  • @justintie
    @justintie 25 днів тому +2

    Go is awesome because it doesn't have all the OOP bullshit

  • @botyironcastle
    @botyironcastle Місяць тому +1

    its not clean at all

    • @MaximT
      @MaximT Місяць тому

      Exactly.

  • @nikitatimofeenko9351
    @nikitatimofeenko9351 Місяць тому +1

    pokemon GO??? pokemon Rust!!!

  • @nabinsaud4688
    @nabinsaud4688 Місяць тому +1

    Concurrency go deep dive

  • @Adamskyization
    @Adamskyization 16 днів тому +1

    Rust

  • @Danielo515
    @Danielo515 Місяць тому +4

    You know, and I know that go sucks.
    But let's pretend it does not

    • @awesome-coding
      @awesome-coding  Місяць тому +1

      I'm actually really excited about it, and I am planning to integrate it in one of the projects I am working on.
      But I am curious to find out why you don't like it.

    • @MaximT
      @MaximT Місяць тому +2

      * The most ugly thing in Go is the implicit interface implementation. Never knows what interfaces a struct implements
      * Dependency injection in GO is very convoluted
      * Handling dependencies (external packages versioning) in GO is more difficult than in C#.
      * The way to handle attaching methods to pointers and values. They are different in behavior and polymorphism can be broken. Theres an example of that in the book - Go n Action.

  • @watchchat
    @watchchat Місяць тому

    Concurrency deep dive please

  • @kasvith
    @kasvith Місяць тому

    Try elixir to see real message passing...

    • @awesome-coding
      @awesome-coding  Місяць тому

      will do! thanks for the suggestion

    • @kasvith
      @kasvith Місяць тому

      @@awesome-coding unlike go, it has the best abstraction about OOP from Dr Alan. Go was also inspired by Erlang mailboxes
      Elixir/Erlang just does it better

  • @AhmedMohammed23
    @AhmedMohammed23 Місяць тому +1

    use a better lanague kids use c#

  • @vpetryniak
    @vpetryniak Місяць тому +3

    Why not Rust?
    Better safer code align with Rust a lot

    • @awesome-coding
      @awesome-coding  Місяць тому +2

      Rust is way more difficult, or maybe I’m just dumb 🥲

    • @vpetryniak
      @vpetryniak 21 день тому +1

      @@awesome-coding I’m dumb. You are practical I guess 🙂😅 but yeah, I agree rust is difficult. But it is so enjoyable to write backend in it. I used Axum. It is like you wrote it once and have no surprises in prod as with js. And just writing rest APIs, connecting to db is not that hard. Also sqlx in rust is so good

  • @yoyoentertainment9265
    @yoyoentertainment9265 Місяць тому

    Which frontend to be combined with?

  • @dasaavawarsuploads1143
    @dasaavawarsuploads1143 Місяць тому

    Awesome, but it's still hard to find a job

    • @awesome-coding
      @awesome-coding  Місяць тому +1

      I agree - Java and C# are still the best bets for comfy enterprise jobs

  • @meryplays8952
    @meryplays8952 20 годин тому

    "Why I’m Switching To Go in 2024" because you are a healthy individual?

  • @Gruak7
    @Gruak7 27 днів тому

    Once Go receives syntax for error handling I'm hopping into that bandwagon.

  • @sergsergesrgergseg
    @sergsergesrgergseg 3 дні тому

    i tried using go to make websites but there is no good way of making auth and there is no ecosystem.. maybe in a few years

    • @sergsergesrgergseg
      @sergsergesrgergseg 3 дні тому

      also i hate how the go docs site makes people not want to write actual documentation

  • @yuryyukhananov8516
    @yuryyukhananov8516 8 днів тому

    🦀

  • @BinaryMaestro1
    @BinaryMaestro1 Місяць тому

    the only thing golang needs in my opinion is try and catch block 🙏

  • @PRiKoL1ST1
    @PRiKoL1ST1 26 днів тому +1

    Go error handling is awful

  • @EricLouisYoung
    @EricLouisYoung 17 днів тому +2

    there is just nothing good about go

  • @janakaone
    @janakaone 26 днів тому

    Go can’t run in browser like js

    • @awesome-coding
      @awesome-coding  26 днів тому +2

      it can via WASM :)

    • @janakaone
      @janakaone 25 днів тому +1

      @@awesome-coding hmm that’s true, didn’t think about it before. Thank you for the pointer

  • @ariefnurandono9917
    @ariefnurandono9917 Місяць тому

    go compiled as one binary is killer, now I use ncc to compile my node.js app to make it single file

  • @frankbardon
    @frankbardon 22 дні тому +1

    The number of comments complaining about having to consider and handle all errors is why we have so many bad libraries and crap code floating around.

  • @robchr
    @robchr Місяць тому +3

    If you want reliable messages passed between objects, you should learn Elixir, not Go.

  • @superakaike
    @superakaike Місяць тому +6

    Nah, Go is no fun, verbose as hell. It has just too many weird things going on too, like enforcing public or private methods by relying on case sensitivity. The community is also toxic as soon as you tell them to use anything but the stdlib. It's an awesome language if you don't want to have fun writing and want something worse than Java - in terms of being verbose.

    • @flarebear5346
      @flarebear5346 Місяць тому +9

      I can't believe that someone actually thinks go is more verbose than java, like what are you talking about

    • @superakaike
      @superakaike Місяць тому +1

      ​@@flarebear5346 What I mean by that is that Golang, compared to Java, is more like C-low-level oriented. Because of this, you sometimes have to write a lot more boilerplate or reinvent the wheel in Golang compared to Java. It doesn’t offer the same level of abstraction that you get with Java’s ecosystem. E.g. write a transaction in Go vs write a transaction in Java with Spring.

    • @0oShwavyo0
      @0oShwavyo0 Місяць тому +1

      @superakaike pretty sure that’s why a lot of people like Go - that you can actually do stuff from scratch without wanting to shoot yourself in the face.

    • @superakaike
      @superakaike Місяць тому

      @@0oShwavyo0 Yeah, you’re totally right, and for everyone who likes that, I also think Go is definitely an awesome language 👍

  • @Anhar001
    @Anhar001 Місяць тому +2

    Go? in 2024? horrible little language that belongs in the bin. Sorry it's kills braincells.

  • @magiccuttlefish
    @magiccuttlefish Місяць тому +5

    i still think kotlin is the goat. Prove me wrong

    • @awesome-coding
      @awesome-coding  Місяць тому +5

      Keep in mind that I am still mostly a Kotlin dev and Kotlin has amazing syntactic sugar.
      Cons compared to Go:
      - Long build times especially if you pair it with something like Spring which is pretty bad for microservices;
      - The JVM setup;
      - This might be subjective but Maven / Gradle are a nightmare to deal with.

    • @julienlecoq3539
      @julienlecoq3539 Місяць тому

      @@awesome-coding Well, you said it all. Sometimes, when I’m planning to work on a new project, I wonder: “What programming language should I choose?” I often think of Kotlin, but then I remember that setting up a Kotlin project can be a nightmare, almost forcing you to use JetBrains’ IntelliJ IDEA to get it working. It’s such a shame for a modern language to have such poor tooling!
      Just this is enough for me to not use
      Kotlin.
      A programming language should not require a factory to be used. A single file and a simple command to run it should be enough.

    • @julienlecoq3539
      @julienlecoq3539 Місяць тому

      @@awesome-coding Well, you said it all. Sometimes, when I’m planning to work on a new project, I wonder: “What programming language should I choose?” I often think of Kotlin, but then I remember that setting up a Kotlin project can be a nightmare, almost forcing you to use JetBrains’ IntelliJ IDEA to get it working. It’s such a shame for a modern programming language to have such bad tooling/ecosystem!
      A modern programming language should not require a factory to get started in..
      Just this is enough for me to not use it.

    • @Lemmy4555
      @Lemmy4555 Місяць тому

      ​@@awesome-coding Yeah the technology on top of which kotlin is based kind of sucks.
      However I think you should focus on something that Go really got right that is duck-typing, this is really what makes a lot of things easier compared to other languages and it's a game changer because it's duck typing that allows you to not care anymore about inheritance and "implements" of interfaces aka traits.
      If Kotlin ever decides to support it, I would forget about Go and invest time into Kotlin the day after, but I don't think they ever will.

    • @magiccuttlefish
      @magiccuttlefish Місяць тому

      @@awesome-coding The JVM setup!?!?!? I will say gradle and maven are terible and to just get a working jar can take weeks to figure out. Enjoy your time with go!!!!! Dont forget kotlin!!!!

  • @agedvagabond
    @agedvagabond 19 днів тому +1

    Should of went rust 😂

  • @bear458ziif-s
    @bear458ziif-s 24 дні тому

    go is too radical in it's vision of simplicity. anything beyond a toy program ends up being more complex and verbose than languages that are less simple. at least with more features you can decide whether or not you would like to use them. go doesn't give you any choices. it's one of the worst experiences i've had with a language.

    • @awesome-coding
      @awesome-coding  24 дні тому

      I feel like this verbosity is linked to error handling - am I right?

    • @bear458ziif-s
      @bear458ziif-s 24 дні тому

      ​@@awesome-coding go doesn't have map, filter, reduce, iterators, linked lists, etc. you have to reinvent the wheel every time you use it. the error handling is bad but that's on the lower end of my criticisms. interfaces and concurrency can also be very verbose and difficult. the simplicity makes the language worse.

    • @awesome-coding
      @awesome-coding  24 дні тому

      @@bear458ziif-s I understand. Our of curiosity - what's your preferred language?

    • @bear458ziif-s
      @bear458ziif-s 24 дні тому

      @@awesome-coding my ideal language is gleam, but it's still in it's early stages and needs more time. my preferred language given all of the current options is rust. it has it's own set of drawbacks but the positives outweigh the negatives for me. i would prefer to use gleam for most things, but like i said it still needs more time.

    • @awesome-coding
      @awesome-coding  23 дні тому

      @@bear458ziif-s Thanks for the details!

  • @ayushchothe8785
    @ayushchothe8785 Місяць тому

    Rust is way better than Go in every aspect. 🎉

    • @awesome-coding
      @awesome-coding  Місяць тому

      I believe you, but I’m too stupid to get Lifetimes and async / await in Rust

  • @dalanxd
    @dalanxd Місяць тому

    Great video! I'd love to listen to your takes on Gleam... I know it's new but it feels super promising

    • @awesome-coding
      @awesome-coding  Місяць тому

      I am planning to explore the whole Erlang world sooner or later. I just need 3 free months for it :))

  • @fifty6737
    @fifty6737 Місяць тому

    ohh the if err != nil language
    how could they get everything right and ruin it with the worst error handling

    • @julienlecoq3539
      @julienlecoq3539 Місяць тому +1

      The worst error handling is by far the one of TypeScript.

    • @justintie
      @justintie 25 днів тому

      they didn't ruin anything, if err != nil is fine, better than try catch for sure

    • @log8746
      @log8746 5 днів тому

      @@justintie exactly I don't get why people are malding over this. try-catch either leads to a nesting hell or forces you to write more code just to prevent nesting too much.