I tried Swift and came out a different person

Поделиться
HTML-код
  • Опубликовано: 21 дек 2024

Комментарии • 483

  • @halemm
    @halemm 3 месяца назад +464

    Good old raylib speedrun

    • @cybernit3
      @cybernit3 3 месяца назад +8

      Nice of him to test it out and give us a summary of this language. I only knew it was some language Apple developed and didn't care much for it.

    • @BboyKeny
      @BboyKeny 3 месяца назад +16

      I've never heard of ffi before watching Tsoding, now I'm injecting C into everything.

    • @Bvngee
      @Bvngee 3 месяца назад +2

      LOL didn’t go so “good”

  • @tianned
    @tianned 3 месяца назад +363

    1:47:50 swift cant find the CLITERAL which is quite relatable

    • @karmatraining
      @karmatraining 2 месяца назад +16

      Most regrettable name award

    • @CHURCHISAWESUM
      @CHURCHISAWESUM 2 месяца назад +1

      oh no

    • @pik910
      @pik910 Месяц назад +1

      It cannot be found because no such thing exists, there is no other explanation to me never having seen one.

  • @rogo7330
    @rogo7330 3 месяца назад +146

    You know it's gonna be fun when byte translator compressed weights more than the entire linux kernel.

    • @GeorgeTsiros
      @GeorgeTsiros 3 месяца назад +8

      I mean the clang exe is 150+ MB so

  • @Fakheet
    @Fakheet 3 месяца назад +49

    Named parameters in functions are very handy because you usually can tell at a glance what the function uses those parameters for without having to look inside the function or into documentation
    Also inclusion of classes in pretty much non negotiable because Swift has to interop with Objective-C and Apple's SDKs written in objc

  • @alexitosworld
    @alexitosworld 3 месяца назад +127

    Honestly, as somebody quite involved with Swift, I have to thank you for this stream! It was great, very good feedback. I hope the community takes this opportunity to fix and improve things. Swift is OSS so I'm sure we can make documentation and tooling better to get the Raylib speedrun down to a more reasonable time! ❤

    • @grendel6o
      @grendel6o 3 месяца назад +25

      Move on bro, Swift is cooked

    • @stefanalecu9532
      @stefanalecu9532 2 месяца назад +2

      ​@@grendel6o cope

  • @m0ntyl3f
    @m0ntyl3f 3 месяца назад +109

    Imagine multiple year experienced swift developers just getting to know about the existence of swiftc after that video

    • @VanessaQ.-pk1yl
      @VanessaQ.-pk1yl Месяц назад +1

      That's the magic of not using shitty IDEs

  • @labsendeyshent
    @labsendeyshent 3 месяца назад +102

    Now tsoding is certified apple dev

  • @neqkk
    @neqkk 3 месяца назад +36

    It's interesting to hear Chris Lattner talking today about Swift and about all the regrets he has. (For instance in a recent conversation with the creator of Roc) Of course, he has a new language to plug (Mojo)

    • @melodyogonna
      @melodyogonna 3 месяца назад +11

      And he is not making those mistakes: Mojo has very little syntax sugar at the moment (even the ones in Python), he is adamant about not adding sugar too early; is not being built in secret; has very dump type inference; starts out with Linux as the most supported platform; says a lot of "No!" to feature requests; All in all, very encouraging first steps.
      Edit: I have to add that the entire interview was about Mojo, it wasn't being plugged. When Chris Lattner says he is working on something the entire software industry holds its breath.

  • @Mth-Ryan
    @Mth-Ryan 3 месяца назад +574

    Swift:
    - Good language
    - Trash toolchain
    - Diabolic company behind

    • @theevilcottonball
      @theevilcottonball 3 месяца назад +25

      Yeah, I wanted to try out Swift on my windows machine, but after I saw the installer size I stopped and deleted it. (My disk is small, btw)

    • @twenty-fifth420
      @twenty-fifth420 3 месяца назад +31

      @@theevilcottonballA windows user with a small drive? Well I wouldn’t say ‘that is new’ but definitely rarer.
      For context, I installed on Windows. It is actually not that bad, bloaty tools aside.
      Now on Linux, installing this thing is a fucking nightmare lol. Apple holds it back and it shows.
      I am considering its evil brother, Odin instead 😂.

    • @craftrumzen2393
      @craftrumzen2393 3 месяца назад

      ​@@twenty-fifth420 Odin? Isn't Odin like Rust?

    • @theevilcottonball
      @theevilcottonball 3 месяца назад +8

      But ODIN does not have super swift string interpilation. It kinda is C like (maybe better). Nah I'll hack C compiler to recognize \( as an escape sequence, and you can make a cursed print in C with just % and no type by cleverly combining NARGS macro with _Generic and so on.

    • @twenty-fifth420
      @twenty-fifth420 3 месяца назад +5

      @@theevilcottonball I don’t know if this is a joke but I do actually like swift string interpolation?
      And to answer above, Odin is not like Rust, more like C but Pascaly dna lol

  • @julkiewitz
    @julkiewitz 3 месяца назад +166

    to ship a binary written in Swift you're supposed to wrap it in a docker container 😆

    • @twenty-fifth420
      @twenty-fifth420 3 месяца назад +21

      Swift, only as containable as your availability in disk space and cpu compute 😂.

    • @araarathisyomama787
      @araarathisyomama787 3 месяца назад +8

      Please tell me that it is a joke, there is no way this is real 😱

    • @MP-df8wm
      @MP-df8wm 3 месяца назад +4

      @@araarathisyomama787its not a thing

  • @thunderstein5041
    @thunderstein5041 3 месяца назад +107

    the first 5 minutes are a perfect example of swift.

    • @aciddev_
      @aciddev_ 3 месяца назад +16

      first 15

  • @BachenBenno99
    @BachenBenno99 3 месяца назад +17

    It is quite trivial, that a language designed for apple products is dynamically linked when it is meant to run on a finite set of devices probably coming with the libraries necessary to run Hello World

  • @Cyberbeni
    @Cyberbeni 3 месяца назад +17

    Although Swift Package Manager is bad and I have written a replacement for it at my previous workplace, the how to interop with C/C++ guide was good, it just assumed you already know how to use SPM for Swift code or at least can read the error message, which tried to explain that if you have multiple targets then you need a subdirectory for each of them instead of placing your code at the root of the Sources directory.
    Swift 6 will bring the option to cross-compile statically linked binaries with musl, the current static linking flags are just experimental. Currently if you build on one machine, and try to run on a different machine with a different Linux version, it probably will crash. That's why docker is currently the preferred for Linux.

  • @bbdgl7413
    @bbdgl7413 3 месяца назад +49

    Tsoding, you are holding it wrong!

  • @chouyangv3
    @chouyangv3 3 месяца назад +17

    Compilers in Docker containers are great because now we can switch to any version at any time. We can also collaborate with the exact same setup through our teams, and it improves CI/CD pipelines a lot. that's why.

  • @bayzed
    @bayzed 3 месяца назад +52

    "I ain't using a freaking Docker container for a byte translator" Holy Based

  • @JLarky
    @JLarky 3 месяца назад +30

    9:45 now he gets why Linux version of Swift is distributed as docker, because you need the whole 1gb image to run your hello world server

  • @Argoon1981
    @Argoon1981 3 месяца назад +46

    That last part made swift extremely better than C3 to interfacing with C!!? I hate Apple and its culture but that interfacing with C was awesome.
    I love that you don't need to rename C functions and not do that extern bs, but call them directly, like it should be.
    Please for the love of God, C3 compiler developers, you should have a better C interface than swift, that language is not even trying to be "a better C" you guys are!
    So be a better C by all means but make working with old C libraries a breeze!

    • @eldonad
      @eldonad 3 месяца назад +2

      To be fair near seamless interop with C is not that great of an achievement. I remember clearly importing dynamic libraries in python, and it was also very easy and straightforward. No static linking of course, but yeah, that should be a priority for any good modern systems language.

    • @leightonmitchell2564
      @leightonmitchell2564 3 месяца назад +13

      I guess they cared a great deal about C interoperability because Objective-C where most of their APIs are written is a strict superset of C that really doesn’t add that much that isn’t already implemented in C

    • @AK-vx4dy
      @AK-vx4dy 3 месяца назад +3

      They cared humogus deal of care to C / Objective-C interoperabilty for many reasons. On YT is whole talk about it.

    • @simply6162
      @simply6162 3 месяца назад

      swift is meant to replace c++. that's what apple themselves said

  • @kala-telo
    @kala-telo 3 месяца назад +308

    This is not even LLVM wrapper, it's clang wrapper 😭

    • @tauiin
      @tauiin 3 месяца назад +22

      oh..... oh thats nasty

    • @soracc_
      @soracc_ 3 месяца назад +31

      In many cases it's Swift maintainers choose to put certain features in Clang/LLVM instead of Swift compiler itself (since Apple maintains and uses all of them).

    • @PavitraGolchha
      @PavitraGolchha 3 месяца назад +36

      llvm creator is the creator of swift 🤔

    • @rakaboy1619
      @rakaboy1619 3 месяца назад +6

      vlang literally

    • @realSimonPeter
      @realSimonPeter 3 месяца назад +24

      The Swift compiler is built on LLVM and links libclang into itself so it can import C/C++ interfaces natively. Swift doesn’t compile to C or use clang to generate machine code.

  • @owlmostdead9492
    @owlmostdead9492 3 месяца назад +75

    Containers are nice because we fucked up how installing software works, I want my system to stay virgin so I never end up with a weird/broken OS.

    • @iamdozerq
      @iamdozerq 3 месяца назад +10

      Installing anything on linux is cursed af, even windows make it no so cursed

    • @owlmostdead9492
      @owlmostdead9492 3 месяца назад +21

      @@iamdozerq Installing software is cursed everywhere, it doesn't matter if macOS, Linux, Windows even BSD

    • @toramancik
      @toramancik 3 месяца назад +18

      you don't have such problem in NixOS

    • @owlmostdead9492
      @owlmostdead9492 3 месяца назад +8

      @@toramancik Nix is overly complicated compared to just using containers, it's also standard which Nix is not

    • @seanhdka
      @seanhdka 3 месяца назад

      @@owlmostdead9492just install nix packet manager and start a shell with nix-shell -p [packages] and your in a shell with the packages in your $PATH, containers are way more difficult than that. but if you're referring to nixos i agree but give it a serious try, you'll love it.

  • @spaceowl5957
    @spaceowl5957 3 месяца назад +72

    Here’s my perspective as an Apple developer: Swift has pretty syntax and is neat for simple things but if you do a larger project compile times are pretty terrible. Also generics are kinda underdeveloped,, language has too much magic and random things can be super slow when you don’t expect it (while other things are super fast) Binaries tend to be huge, and the language is extremely complicated imo with tons of special syntax and abstract stuff for special cases.
    Overall the language just feels bloated and “conceptually” ugly and complicated even if on the surface it looks very simple and pretty since the syntax is very concise.
    I think I’m more productive with Apples old la gauge Objective-C. It’s very verbose on the syntax but it’s conceptually very simple and pretty. Like the opposite of Swift. I like it more. (And I’m not just old, Swift was actually the first language I learned after python.)

    • @arden6725
      @arden6725 3 месяца назад +5

      swift has the most flexibility in generics I've used in any language ever, other than typescript but that hardly counts

    • @infastin3795
      @infastin3795 3 месяца назад +1

      ​@@arden6725have you used C++?

    • @alxkub
      @alxkub 3 месяца назад +8

      Generics are supposed to be really powerful in Swift, but I would actually prefer a simple dumb generics, like in Java. Something that a simple coder without a phd in astrophysics could understand. Otherwise I totally agree, Swift is a complicated mess. The only way I can live with it, using it every day, is by avoiding all of its “advanced“ features.

    • @memes_gbc674
      @memes_gbc674 3 месяца назад +2

      objective-c feels so weird

    • @TheOisannNetwork
      @TheOisannNetwork 3 месяца назад +5

      If build times are that bad, you're doing it wrong ngl.

  • @crueI
    @crueI 3 месяца назад +28

    The Docker obsession is derived from the mind set that I don’t want to install stuff on my machine

    • @AntranigVartanian
      @AntranigVartanian 3 месяца назад +16

      But I also don’t want to install Docker… LOL

    • @Krmpfpks
      @Krmpfpks 3 месяца назад +3

      @@AntranigVartaniandocker is the worst to install…

    • @Comeyd
      @Comeyd 3 месяца назад

      @@AntranigVartanianso use podman

    • @jan.tichavsky
      @jan.tichavsky 2 месяца назад +1

      Why are people afraid to touch their system and hardware? Not everything needs to be isolated, abstracted away, run in the cloud or in a series of virtual machines. Come on.

    • @Krmpfpks
      @Krmpfpks 2 месяца назад

      @@jan.tichavsky right. My company makes cloud software, and everyone wants to run it on VMware or container or something. I always advocate for running it bare metal, providing lower latency and less points of failure.
      People usually come along doing that after a few years of hunting complex bugs and trying to get around the limits of hypervisors. (In our case it’s usually the high amount of small udp packets that are hitting all sorts of bottlenecks of hypervisors or containers)
      KISS, if the software can handle failover its simpler and cheaper to run many identical systems on bare metal. Troubleshooting is way easier that way.

  • @kiosmallwood576
    @kiosmallwood576 3 месяца назад +16

    Epic rants in this one lol. Already wtched the VOD so this one is for the algorithm.

  • @orobiodecastro
    @orobiodecastro 3 месяца назад +11

    The ability to read error messages is an underrated skill

  • @flobuilds
    @flobuilds 3 месяца назад +39

    He got every achievement on pc now he has to get all on mobile

    • @GreggHarris-gm7ef
      @GreggHarris-gm7ef 3 месяца назад +4

      giving kotlin a shot would be pretty interesting. making a basic android game using raylib

    • @flobuilds
      @flobuilds 3 месяца назад

      @@GreggHarris-gm7ef would that be possible with kotlin and raylib? Because drivers and co?

    • @GreggHarris-gm7ef
      @GreggHarris-gm7ef 3 месяца назад +2

      @@flobuilds through god all things are possible, so jot that down

    • @onigurumaa
      @onigurumaa 3 месяца назад +2

      @@flobuilds possible, raylib compiles to all platforms except ios

    • @flobuilds
      @flobuilds 3 месяца назад

      @@onigurumaa thats crazy

  • @Taimoorabdullah
    @Taimoorabdullah 3 месяца назад +31

    I think the reason it has bad documentation for c interop is because Apple intends for people to use it in their ecosystem (xcode) which handles the language bridging by itself and provides an easier interface. Btw i think you missed the function param labeling, you looked at 'x:' and '_ x:', but it also does 'posX x:' kind of stuff too, it has its usecases. Also the use case for function param labels e.g. 'x:' that i used back when i did iOS dev was that it lets you overload functions, e.g. color(hex: string), color(r: int, g: int, b: int), color(r: int, g: int, b: int, a: int) etc.

    • @27onionnebell40
      @27onionnebell40 24 дня назад +1

      maybe color(r:Int, g:Int, b:Int) and color(h: Int, s: Int, v: Int) will be a better example. You definitely can't do it in languages without labeled params.

  • @MagpieMcGraw
    @MagpieMcGraw 3 месяца назад +19

    One reason why I got into Odin way back in 2018 was because I downloaded the compiler and it just worked. I also tried Zig around that time and it gave me some LLVM error instead of an executable.

    • @raykirushiroyshi2752
      @raykirushiroyshi2752 3 месяца назад +8

      Funnily enough it was the other way around for. but to be fair it was a issue on the windows side so I can't really blame Odin for that

    • @MagpieMcGraw
      @MagpieMcGraw 3 месяца назад

      @@raykirushiroyshi2752 Hey you gotta use what works.

  • @caiocouto3450
    @caiocouto3450 3 месяца назад +16

    well, before I was prejudiced with swift, now I'm just judicied

  • @douglasgabriel99
    @douglasgabriel99 3 месяца назад +23

    tsoding is an official swifter now

    • @techlydaily
      @techlydaily 3 месяца назад +9

      *Swifty

    • @rasibn
      @rasibn 3 месяца назад +8

      ​@@techlydaily Swiftie*

  • @billynugget7102
    @billynugget7102 3 месяца назад +39

    Lets get swifty in here, shit on the floor, lets get swifty in here

  • @user-plgmgrs326
    @user-plgmgrs326 3 месяца назад +12

    あなたのビデオは私にやる気を与えます good job

  • @blzr8
    @blzr8 3 месяца назад +11

    man, never change

  • @arcxm
    @arcxm 3 месяца назад +6

    It's always a lovely day when Tsoding uploads a language review (more commonly known as a "raylib speedrun"). It's really interesting to see his reaction and hear his thoughts about it. I found out about Pascal, Fortran and Ada through his videos (never tried them before but knew about them to be specific) and tried them out on my own and liked them, especially with the C interop. Im quite interested to see which language he might review next. 😀

  • @soracc_
    @soracc_ 3 месяца назад +9

    I think the "trash compiler" comment is a bit unfair. It's more unfamiliar interface than anything else. `cargo build` doesn't accept file name as argument, and `swift build` behave exactly the same (even the error messages are comparable).

  • @ShawnShaddock
    @ShawnShaddock 3 месяца назад +16

    Can you look at Gleam next?

    • @lpil
      @lpil 3 месяца назад +3

      🥰

  • @tauiin
    @tauiin 3 месяца назад +9

    Swift truly is the Taylor Swift of languages

  • @JusticeHunter
    @JusticeHunter 3 месяца назад +5

    By the way, the star of the show, alimpfard, is one of the maintainers of SerenityOS. Super cool!

  • @nathanpotter1334
    @nathanpotter1334 3 месяца назад +4

    please more ground-up content like this. last 10 videos or so have been amazing

  • @Cmanorange
    @Cmanorange 3 месяца назад +28

    i see the vision. make the language as hard as possible to get running on your machine so you instantly get sunk cost fallacy so now you have to finish the project in swift. bravo tim

    • @htcbelyaev
      @htcbelyaev 3 месяца назад +4

      So now you need to buy a new MacBook™ 😂

  • @berkensayilir6467
    @berkensayilir6467 3 месяца назад +4

    I love how you go from hating everything to "swift is a chad language"! Swift is such a joy to write, honestly.

    • @nordeenhasan6030
      @nordeenhasan6030 3 месяца назад

      what about forced named arguments. really annoying

    • @berkensayilir6467
      @berkensayilir6467 3 месяца назад

      @@nordeenhasan6030 they are not forced but implicit by default. You can always skip the label (if the function is self explanatory) or use a more caller friendly label. It‘s actually a nice language level feature. Take this function declaration for example:
      func addDays(_ amount: Int, to startDate: Date) → Date { … }
      calling addDays(3, to: Date.now) is much more readable than addDays(3, startDate: Date.now), don’t you think?

    • @LosFarmosCTL
      @LosFarmosCTL 2 месяца назад

      @@nordeenhasan6030 it’s not forced, you can use func name(_ x: type) if the meaning of the argument is clear from the function name itself

    • @berkensayilir6467
      @berkensayilir6467 Месяц назад

      @@nordeenhasan6030 func foo(_ nameLess: Bool) → String..... print(foo(false))

    • @tibui-c4k
      @tibui-c4k Месяц назад

      @@nordeenhasan6030Not really. Named arguments are one of the best features of it

  • @mxlje
    @mxlje 3 месяца назад +8

    The comments here are so embarrassing. Stay in your caves if you want, but don’t make up stuff to fit your narrative and reject things for the wrong reasons without ever trying them.

    • @PRIMARYATIAS
      @PRIMARYATIAS 3 месяца назад +3

      Okay Apple FanBoy

    • @mxlje
      @mxlje 3 месяца назад +12

      @@PRIMARYATIAS lol there are plenty of reasons to hate Apple and I’m fully on board. But transferring those over to Swift, which they not only open sourced a while ago but which is also fully community driven is wild.

  • @billsun
    @billsun 3 месяца назад +5

    Swift was the fourth language I've learned. Back in 2014, I only knew C++, Java, and a little bit of Delphi, and I found it pretty pleasent to use, especially compared with objective-C. The problem I guess is that they've changed the standard a lot, so old code wouldn't even work. And nowadays, people have way more choices.

    • @stefanalecu9532
      @stefanalecu9532 2 месяца назад

      Delphi mentioned

    • @serpent213
      @serpent213 2 месяца назад

      @@stefanalecu9532 Turbo Pascal up to the grave.

  • @johnddb
    @johnddb 3 месяца назад +88

    670MB download for a compiler ☠☠

    • @GeorgeTsiros
      @GeorgeTsiros 3 месяца назад +39

      it's 670MB for an entire suite of libraries and tools. It makes more sense to compare it to an SDK rather than a compiler.

    • @Marhaenism1930
      @Marhaenism1930 3 месяца назад +12

      compressed -,-

    • @jan.tichavsky
      @jan.tichavsky 2 месяца назад +3

      That used to be the size of a whole OS install including the desktop environment, not so long ago.

    • @wasituzayer9728
      @wasituzayer9728 Месяц назад

      @@jan.tichavsky Still is on some of the smaller linux distros (Tiny Core comes to mind).

  • @phuripatkongsakban8580
    @phuripatkongsakban8580 3 месяца назад +2

    This finding documents situation is not only in swift! Almost every “NEW” language that I learn how to import some external libraries just dumps “everything” to the document, but sometimes I just want to know “how it works“, not “how we should do it”.

  • @DaliborFilus-zs4om
    @DaliborFilus-zs4om 3 месяца назад +1

    The required parameter naming is done for Swift-to-Objective-C interop I think, where methods and their parameters are also specified by name on the call site.
    The C-interop is designed to be easy because it was the main focus for the first versions of Swift - to be able to call C and Obj-C functions/classes/methods from Swift (and sometimes even calling Swift from Obj-C) without jumping through hoops. It was required to "sell" the idea of Swift to Obj-C developers, similar to how Kotlin makes Java interop their priority. I was working with Swift 1, 2 in an iOS project back when Swift was new, and I've used the interop with Obj-C heavily (and easily at the same time).

  • @BogdanTheGeek
    @BogdanTheGeek 3 месяца назад +4

    I am a C dev, had to use Swift for a project. Really enjoyed once I wrote my own makefile. It sometimes feels like distopian future C (it still has #defines and other C looking features).

  • @ash1one
    @ash1one 3 месяца назад +11

    Where did the expectation that Swift is a system language (or wants to compete with Rust) come from??
    Swift is a modern replacement for Objective-C, and therefore fully interoperable with C libraries, but it's used by tons of developers to build iOS and MacOS apps.
    It's an app development language, like C# or Kotlin, but way more efficient, with no garbage collector or fat runtime. Plus it was open sourced a long time ago.

  • @saeedxgholami
    @saeedxgholami 3 месяца назад +3

    Very useful and informative stream; specially when comparing languages features with each other

  • @TheAndiKurz
    @TheAndiKurz 3 месяца назад +10

    Will you also look at odin lang? I find it is a great language to look at aswell!

  • @rickpala_
    @rickpala_ Месяц назад

    This guy knows so much about the history of programming languages.Detailed breakdown of the history of string interpolation, and Guido Van Rossum's hatred for do-while loops.

  • @Dfso200x
    @Dfso200x Месяц назад +1

    1:10:07 All of this because Swift decided at some point to change the template's source directory from `/Sources/[ProjectName]/main.swift` to `/Sources/main.swift` (usable only when you have a single build target) without considering the tutorials or having any kind of documentation for this

  • @Odod4000
    @Odod4000 3 месяца назад +7

    Swift be like: Good.. Bad... Good... Bad...

  • @MDMAviation
    @MDMAviation 3 месяца назад +5

    10 days later, Swift 6.0 released

  • @CritterPop
    @CritterPop 3 месяца назад +9

    longest hello world ever

  • @ChrisHorneVL
    @ChrisHorneVL 2 месяца назад

    First video of yours I've seen.. highly informative and entertaining.. also glad to know I'm not the only one that goes through a new language screaming wtf is this all the time.

  • @twenty-fifth420
    @twenty-fifth420 3 месяца назад +8

    Also, Swift and Ada taught me the two extremes of package managers. And if I design my own, Swift in particular black pilled me that a PM is a dumb idea 🤷

    • @rogo7330
      @rogo7330 3 месяца назад +1

      I don't know Ada at all, but I believe that C way (especially when you compile only one .c file for one .o at the time and after that everything done by linker which have nothing to do with the language that produced those .o files), everything you do in language should be able to be fitted into one signle text file: exporting and importing symbols (data and functions), maybe even letting the developer specify by which convention it should be done, but C FFI is obviously should be the default one; importing other files, probably in the way that it is possible to put it namespace but not by default creating it since it then be impossible to just read those includes as one stream if needed; etc.. I feel like types are generally broken in all popular languages or just unusable, and this especially obvious when language lets you to work on variables as on real data objects in memory and you are so abstracted away from what would be produced by compiler that it's just impossible to write simple code that translates 1to1-ish that program text will look like in the end.

    • @krux02
      @krux02 2 месяца назад

      maybe Odin is for you then, because the developer (ginger bill) thinks PM are a dumb idea as well.

    • @diadetediotedio6918
      @diadetediotedio6918 2 месяца назад

      @@krux02
      Why, exactly, he thinks one of the best things in programming, package managers, are a "dumb idea"?

  • @JakobKenda
    @JakobKenda 3 месяца назад +3

    isn't a named tuple just a struct or am i missing something?

    • @yjlom
      @yjlom 3 месяца назад +8

      yes and no, it's structurally typed
      but yeah technically everything is just an integer or just a struct or just a pointer or just an array or whatever
      and if you go deeper everything is an array of booleans

  • @Y1001
    @Y1001 3 месяца назад +2

    Does the document suck because it's Swift 6.0 beta?

  • @stolenlaptop
    @stolenlaptop 3 месяца назад +2

    Around the 23 mark he's incorrect. You can take the cpp route and just add a preparser to gain whatever features you want without worrying about the compiler.

  • @srivarshan7925
    @srivarshan7925 3 месяца назад +7

    2:10 May be that docker image use for things like github action (CI/CD). and people use those things nowadays just to escape from managing package installation by them self.... they are not used to cloning repo and build the compiler, library by them self...

    • @rogo7330
      @rogo7330 3 месяца назад +2

      While working at company, I felt that docker is basically a shitty replacement for proper system administration with package manager and stuff and everyone just trust Docker that their garbage would work and isolate everything properly (spoiler: it is not, most of the time). So yeah, basically it's a compromise between developers who ate a corpo-pill and learned how to program in SlopLang while not being able even to setup their own laptop so it would not overheat because of shit 12GiB text editors that they're using to work.

  • @ludwintor4986
    @ludwintor4986 3 месяца назад +13

    wen speedrunning raylib in C#?

    • @iamdozerq
      @iamdozerq 3 месяца назад +4

      It will be the fastest

  • @lowlight1063
    @lowlight1063 3 месяца назад +2

    i wonder how much more i have to learn every time i watch your videos, its honestly humbling. i feel like I would really just start by reading the documentation and you are 12 minutes into it and already just exposing all the shit behind the language, like whaaat? would be really cool to know what those "dependencies" of an executable you were talking about and stuff

    • @andreffrosa
      @andreffrosa 3 месяца назад +1

      Its the "dlls" that are required to run the program, it seems its the Swift runtime

    • @lowlight1063
      @lowlight1063 3 месяца назад

      @@andreffrosa and dlls are the compiled library code?

  • @alexanderkalashnikov2721
    @alexanderkalashnikov2721 3 месяца назад +4

    Named parameters come from objective-c, cuz swift have to be compatible with good old NS Cocoa and other shit like this

  • @btarg1
    @btarg1 3 месяца назад +29

    I love how he tries to figure out commands without even reading the docs and gets mad about it lol

    • @Argoon1981
      @Argoon1981 3 месяца назад +22

      Because he expects things to be simpler then they are and he is absolutely right, plus most languages use roughly the same compiler and linker ideas and he is able to do it successfully 99.99% of the time, most of us here would just give up at the first sign of trouble and many of us can't even do it without a IDE.

    • @xXxRaVeNcRoFt_LuVrr69
      @xXxRaVeNcRoFt_LuVrr69 3 месяца назад +7

      @@Argoon1981 Yeah, it's a great method of stress testing for intuitiveness.

    • @btarg1
      @btarg1 3 месяца назад +2

      @@Argoon1981 I was also very surprised at his hatred of build systems, considering how much I love Gradle and similar systems... I guess low-level devs really just think different

    • @4445hassan
      @4445hassan 3 месяца назад +6

      That is kind of the point of the stream

    • @BboyKeny
      @BboyKeny 3 месяца назад +3

      ​@@btarg1I think if you're used to working with a compiler cli, a build system just gets in the way.

  • @semenkuzovchikov8150
    @semenkuzovchikov8150 3 месяца назад +28

    когда он попытался сделать статичный бинарник была РЖОМБА

    • @nel_tu_
      @nel_tu_ 3 месяца назад +10

      it was RZHOMBA indeed

    • @aciddev_
      @aciddev_ 3 месяца назад +6

      ржомба indeed

    • @hermanzhukov8044
      @hermanzhukov8044 3 месяца назад

      indeed it was РЖОМБА

  • @xXxRK0xXx
    @xXxRK0xXx 2 месяца назад

    What software does he use to zoom in on things realtime on his screen? Is there such a thing on Windows? Would be super useful for coding session w/ teams

  • @MrAdricraft
    @MrAdricraft 3 месяца назад

    seeing him getting madder and madder through the whole video is pure entertainement tbh

  • @salamanetwork
    @salamanetwork 3 месяца назад +6

    Actually, The Guy *'Graydon Hoare'* Who Invinted 'Rust', He works as a Team Member and involves in 'Swift' at Apple.

  • @Александр-ч4п5ъ
    @Александр-ч4п5ъ 3 месяца назад

    Congrats on your coming out 🎉

  • @Stupendousboy
    @Stupendousboy 2 месяца назад

    what command line tool you using for directory/file operations? looks really cool

  • @chillydill4703
    @chillydill4703 3 месяца назад

    Now this is content lol, love it. And as someone who works in an enterprise corp, I can confirm documentation is exactly that.

  • @rasulseidagul
    @rasulseidagul 3 месяца назад +3

    New Language Unboxing! Lets Goooo!

  • @johnforde7735
    @johnforde7735 3 месяца назад +4

    I guess you aren't used to reading documentation on the fly. I would calm down and take a more rational approach to evaluating a new language. I guess that doesn't cater to streaming, however.

  • @schlimmpf158
    @schlimmpf158 3 месяца назад +1

    I was supprised how much the syntax looks like odin

  • @ferdynandkiepski5026
    @ferdynandkiepski5026 3 месяца назад +3

    You skipped over the part that structs are always passed by copy and classes by reference. btw this documentation is still better than cmake documentation.

  • @mimisbrunnur
    @mimisbrunnur 3 месяца назад +1

    Cool! Swift recently added Linux support I believe?

  • @kemaruproduction
    @kemaruproduction Месяц назад

    Some people just want to test the language without polluting nothing in their host system, and docker images provide just that. But Tsoding is a power user, he can easily test and purge everything afterwards.

  • @edbrito-swdev
    @edbrito-swdev 3 месяца назад +5

    Thought I was going crazy for disliking Docker for every single thing nowadays, especially in cases like this.

    • @edbrito-swdev
      @edbrito-swdev 3 месяца назад +1

      Almost 18 minutes to get to the hello world? Ooooooofffff.

  • @cheemsandfriends5325
    @cheemsandfriends5325 3 месяца назад +2

    I'd love to see your take on Haxe! I think it's pretty interesting and I'd love to see your take when tackling onto it 🙂

  • @D369_
    @D369_ 3 месяца назад

    This was fkn hilarious. 😂 Great stuff.

  • @bitmanagent67
    @bitmanagent67 3 месяца назад +5

    SmallTalk > Objective-C > Swift

  • @dorbie
    @dorbie 3 месяца назад

    Doesn’t turning one sequence of bytes into another sequence of bytes pretty much describe all software?

  • @_jam1eK
    @_jam1eK 3 месяца назад

    which is more ergonomic lang between kotlin and swift?

  • @shaunpearce-k9p
    @shaunpearce-k9p 3 месяца назад +1

    I've always thought the Common Lisp format string is the best string interpolator on Earth

  • @xspager
    @xspager 3 месяца назад +4

    Imagine if Linux had a stable userspace API

  • @user-td5gy2fh3p
    @user-td5gy2fh3p Месяц назад

    is that an actual song between 1:36:45 and 1:37:05?

  • @_alanlyc_
    @_alanlyc_ 2 месяца назад +1

    I the expectation is wrong here. Swift shouldn’t really be compared to c/rust (and idk why people do that). Yes, swift doesn’t use GC but that’s all. The main use of swift is to make apps on iOS/macOS, or server side applications on Linux. That’s why there’s a package manager and a docker image.
    I don’t know why the example in the doc isn’t working. If you have followed everything correctly and it still didn’t work, that is a problem of the swift team. But the reason they don’t provide a “simple” example is because normally you wouldn’t just write a “simple” program. Normally you shouldn’t have to invoke swiftc directly and normally you shouldn’t have to pass flags to clang or the linker. That’s why it isn’t in the doc.

    • @orobiodecastro
      @orobiodecastro 2 месяца назад

      Swift should definitely be compared to c/rust. There are still some low-level features missing, but it has been designed for systems programming from the start.
      The error message clearly showed why it wasn’t working. I don’t think this guy’s inability to read should be the swift team’s concern. I do think it’s good that he didn’t catch that, though. This way he figured out the more direct approach with the lower-level tools

  • @cheebadigga4092
    @cheebadigga4092 3 месяца назад +7

    Docker is used to pin specific versions of tools, if that was your question. Makes it easier to update software in production and especially test source code with different versions of compilers all at once in CI environments, for example.

  • @user-mj1wg5oz2b
    @user-mj1wg5oz2b 3 месяца назад +6

    10:21 russian hacker, hacked Apple with an underscore

  • @Dfso200x
    @Dfso200x Месяц назад

    33:02 because Apples main focus is working along Xcode, their IDE

  • @FaZekiller-qe3uf
    @FaZekiller-qe3uf 3 месяца назад +3

    Rust's print uses macros, not the kind of compiler analysis he was talking about. You can write your own print macro with comptime error messages.

    • @TheArtikae
      @TheArtikae 3 месяца назад +4

      Actually, that’s not technically true. ‘println’ can capture identifiers from string literals. Macros can’t do that in Rust. ‘println’ is a language feature pretending to be a macro.

    • @diadetediotedio6918
      @diadetediotedio6918 2 месяца назад

      @@TheArtikae
      The advantage of it being this way is that eventually it can be lifted out if needed.

  • @theoriginyt4869
    @theoriginyt4869 9 дней назад

    Compiler in a docker container as the only official binary distribution? Lgtm and no questions asked.

  • @zerberus1097
    @zerberus1097 3 месяца назад +1

    hello mr. saucing, thanks for unboxing swift

  • @zeratax
    @zeratax 3 месяца назад

    i really don’t get the docker issue. doesn't jai only work with very few distros cos the stdlib uses so many libraries that might be not be correctly setup for every distro?
    like i remember a stream where you had to prepare a ton of stuff cos jai didnt work properly on your debian. which is probably where docker wouldve been helpful :p

  • @psudobuddha
    @psudobuddha 3 месяца назад +9

    The build system cruft is all about walking you into the Apple ecosystem. They can't afford to lose programmers, or control of their tools, which happened with Objective c because Next insisted on building their objective c compiler on GCC. Apple wants the utility of being able to lean on a open source project for resources, but not the responsibility of contributing back, because that might benefit someone other than them.

    • @tibui-c4k
      @tibui-c4k Месяц назад

      You really have no idea. Apple contributes a lot of code to open source projects.

    • @notmynameonyoutube6658
      @notmynameonyoutube6658 20 дней назад

      spm wasn't supported in xcode until a few years ago.

  • @scarymonkey3496
    @scarymonkey3496 3 месяца назад +2

    Wait till he finds out about swizzling

  • @samuraijosh1595
    @samuraijosh1595 3 месяца назад +2

    I wish Tsoding would do more of this. Pick a language without any prior knowledge and learn it on stream. The next languages I would suggest is: IDRIS.

  • @rnged
    @rnged 3 месяца назад +6

    600 megs of emoji utf codes 😂

  • @adamconrad5249
    @adamconrad5249 3 месяца назад +3

    tsoding you are a hero. never stop fighting the slop

  • @cryptonative
    @cryptonative 3 месяца назад +2

    Ironic how this is a recreational programming session