Will Ada Replace C/C++?

Ғылым және технология

Links:
- Download the Game: tsoding.itch.io/eepers
- Source Code of the Game: github.com/tsoding/eepers
- Twitch: / tsoding
- The NSA joke tweet: / 1764595562291024333
- The NSA list of memory-safe programming languages: readwrite.com/the-nsa-list-of...
- Type 42 (Author of the Soundtrack): / type42
- Raylib: www.raylib.com/
- Old Ada Mode for Emacs: github.com/tkurtbond/old-ada-...
- Learn Ada: learn.adacore.com/
Chapters:
- 0:00:00 - Intro
- 0:01:44 - Eepers
- 0:04:45 - Hello World
- 0:09:41 - "Advanced" Build Systems
- 0:10:51 - Text Editors
- 0:12:29 - Raylib
- 0:16:15 - Biggest Secret in Tech
- 0:18:37 - Interfacing with C
- 0:25:02 - Library Bindings
- 0:27:16 - Windows
- 0:30:14 - Documentation
- 0:32:59 - Best Feature of Ada
- 0:43:02 - Conclusion

Пікірлер: 465

  • @SimGunther
    @SimGuntherАй бұрын

    Took me a bit to notice this was not the Tsoding Daily channel. Welcome once again, 3rd owner of the channel 😊

  • @jamesnewman9547

    @jamesnewman9547

    Ай бұрын

    Wow. I was subbed to daily and not this channel 😂 Love your content tsoding.

  • @lolidkstudio

    @lolidkstudio

    Ай бұрын

    3rd owner? Sorry im new here this channel was just recommended to me

  • @obsessedcultist3012

    @obsessedcultist3012

    Ай бұрын

    I didn't notice until the very end

  • @boy_deploy

    @boy_deploy

    3 күн бұрын

    Whew! I thought all videos are gone

  • @im_gin
    @im_ginАй бұрын

    the (third) owner of main Tsoding channel finally remembered his password

  • @lolcat69

    @lolcat69

    Ай бұрын

    Why third owner?

  • @cobbcoding

    @cobbcoding

    Ай бұрын

    @@lolcat69 have you seen the other two guys who run this channel?

  • @MohammedShuayb

    @MohammedShuayb

    Ай бұрын

    ​@@cobbcoding Wow i also follow you and you watch this guy😂

  • @judahwilson6756

    @judahwilson6756

    Ай бұрын

    Lol

  • @FaZekiller-qe3uf

    @FaZekiller-qe3uf

    12 күн бұрын

    @@cobbcoding never

  • @000dr0g
    @000dr0gАй бұрын

    I "studied" Ada as an Edinburgh University CS student in the early 80s, with access only to a book about it, rather than a working compiler. I love how you've renewed my interest in Ada with your exciting explanation of its type safe indexes. I don't remember that powerful feature, nor can I think of a similar thing cropping up in subsequent language designs elsewhere. Great job.

  • @daruyami

    @daruyami

    Ай бұрын

    "[...] rather than a working compiler." I've read that in the history of Ada there was a time at the beginning where compiler developers advertised their support for Ada which in reality was extremely lacking and buggy ...is that what you refer to here? 😅

  • @000dr0g

    @000dr0g

    Ай бұрын

    @@daruyami back when I was at Uni, Ada was the US DoD military standard MIL-STD-1815, and my lecturer recommended a recent published book on it to read (which I probably have in my attic). If you wanted a compiler, you wrote your own from that stuff.

  • @daruyami

    @daruyami

    Ай бұрын

    @@000dr0g thanks for the response, I always love hearing about how differently people had to approach things like these back in the day! I guess all that stuff about the compilers must've come from the perspective of somebody that experienced the commercial side of Ada around that timeframe or maybe it was just another speck of misinformation from the internet lol. Anyways, did you end up working with Ada after that, or did you just study it for some time? Did it sound like anything amazing or innovative when compared to other technologies used at that time?

  • @000dr0g

    @000dr0g

    Ай бұрын

    @@daruyami The Edinburgh CS course had a 3rd year module which examined the interesting features of Ada, which represented a step forward in thinking from the systems programming languages being used at the time. In particular, I remember we looked at the definition of its module/packages system and its concurrency model (tasks and rendezvous). Since swotting for the end of year exam on it, I've forgotten the details, and never looked at Ada since. This is why I am happy to see that these days I can easily try it out for real, and was happily surprised by Tsoding highlighting the Range feature, which I definitely did not remember.

  • @user-mj6vt1oy5r

    @user-mj6vt1oy5r

    Ай бұрын

    @@000dr0g I was at the Army Comp Sci school late '91 to spring '92. I was studying System Administration, but my buddies were taking the programming track. They were expecting "C", but got Ada. Oh My God. These were already senior programmers that were going through a pud course to have the official job in the Army. The entire time I was at Ft. Gordon, all I heard was screaming, bitching, and gnashing of teeth about Ada. They barely had a compiler, and the first class spent their entire course building basic modules for the library. I'm talking basic routines to talk to a video display ( It was designed so the primary output was a line printer). Compared to Ada, Python is a gift from the programming gods. Hell, even Java is better. I heard that the school got rid of it after a while and went back to "C". They wrote off Ada as a big waste of time for everyone involved. It may have been a good language, "in theory", but was total trash when they tried to use it in anger.

  • @nulligor
    @nulligorАй бұрын

    Ruby mentioned btw

  • @ExCyberino
    @ExCyberinoАй бұрын

    Wait a minute, THIS IS the OG channel. That's @everyone was pinged instead of the @Pinged. Damn congrats bro

  • @notreallyme425
    @notreallyme425Ай бұрын

    Learned C++ in school, then took a class in Ada. I noticed I could write a project in a couple hours in C++ and then spend the next 3 days debugging. But with Ada it would take me 2 days to write the code, and about 15 minutes to debug. Took me awhile, but I learned to love it!

  • @friedrichmyers

    @friedrichmyers

    Ай бұрын

    Well, that depends on the complexity of the task too... If you had to make an operating system, would Ada or Rust really be good alternatives to C/C++? I don't think so.

  • @dalestanbrough2290

    @dalestanbrough2290

    Ай бұрын

    @@friedrichmyers Why would C be better? What features does it have that you would need that Ada wouldn't have?

  • @friedrichmyers

    @friedrichmyers

    Ай бұрын

    @@dalestanbrough2290 Too much handholding on memory. Too much complexity compared to C (When you C, you C the Assembly).

  • @dmitrykargin4060

    @dmitrykargin4060

    Ай бұрын

    @@friedrichmyers”when you C, you C the assembly” is nice

  • @user-uf4rx5ih3v

    @user-uf4rx5ih3v

    Ай бұрын

    @@friedrichmyers People have already created an OS in Rust, the language is also in the Linux kernel. Personally, I find it rather annoying to write in Rust, but would much prefer it over C++ any day. I think lumping C and C++ together is also rather strange. They are not even that similar honestly.

  • @joemamium
    @joemamiumАй бұрын

    Tsoding 2: Here We Цод Again

  • @LukeAGuest
    @LukeAGuestАй бұрын

    The ALI file contains the dependencies so that the linker can generate the correct linking information, also the binder uses it to generate code that needs to run to initialise things in your code, as you found out in Ada you can initialise data even with executable code. ALI's are gnat specific. Original Ada compilers were more like LISP systems with a program database, which was specified by the standard. When initialising data, you don't have to put the items in order when using names, you can do ```Y => 0.0, X => 1.0```. GCC's binding generator isn't great, you have to do a lot of work to fix what it generates. The ' allows you to access the attributes of the object in the language, whether that's a type, a variable/constant, package, task, etc. Everything is an object (not in the OOP sense), and every object has a set of attributes (language defined ones are listed in the reference manual and implementation defined ones are in the compiler's reference manual), so you can get a types first and last values or the length of a string that way. Ada had object derivation (not in the OOP sense) from the first version, look at the example of deriving an unpacked record from a package one in the Ada 83 rationale. What you can do with Ada when binding to C is to provide bounds to types, thus giving your binding a type safe veneer over the C API, this I what I did with SDLAda, but I will say that bitfields are more difficult to bounds check. Also, binding burnout is a real thing, so beware when doing it by hand.

  • @ViaConDias
    @ViaConDias17 күн бұрын

    This was amazing. I absolutely fell in love with Ada. How did we go from such a beautiful language to some of the atrocities we see today is beyond me.

  • @gkelly
    @gkellyАй бұрын

    He's back! Glad to see you uploading again. The Rust contingent must be furious to have their golden child appear in a list with Ada and Go. 😅

  • @angelcaru

    @angelcaru

    Ай бұрын

    And Ruby

  • @friorento4416

    @friorento4416

    Ай бұрын

    ​​@@angelcaruAnd python

  • @driedurchin

    @driedurchin

    Ай бұрын

    Why?

  • @pookiepats

    @pookiepats

    Ай бұрын

    @@driedurchinask chatGPT

  • @BrianMcKee

    @BrianMcKee

    Ай бұрын

    And Pascal.

  • @KushLemon
    @KushLemonАй бұрын

    Short answer - no. Long answer - no.

  • @russianbotfarm3036

    @russianbotfarm3036

    Ай бұрын

    Was a click-bait title, truthfully.

  • @therealpeter2267

    @therealpeter2267

    Ай бұрын

    All I needed was a glimpse of the language, and that says much considering we are talking about c++ in the same context

  • @enginerdy

    @enginerdy

    15 күн бұрын

    @@therealpeter2267I don’t know any language that enforces value constraints like Ada does. It’s a very rigid language for very demanding applications

  • @kleoCodes
    @kleoCodesАй бұрын

    The channel is back baby!

  • @musdevfrog

    @musdevfrog

    Ай бұрын

    but your father don't.

  • @kleoCodes

    @kleoCodes

    Ай бұрын

    @@musdevfrog bro what?

  • @MoolsDogTwoOfficial
    @MoolsDogTwoOfficialАй бұрын

    I hope you upload more frequently on this channel. I love listening to you explaining things when it comes to programming.

  • @tubeincompetence
    @tubeincompetenceАй бұрын

    Really great video. Educational, having code large enough to actually be properly visible, not repeating yourself so that it feels focused. Very enjoyable.

  • @jeezusjr
    @jeezusjrАй бұрын

    I first found you by searching for ada a few years back. Now I find a new channel. Nice work, and thank you for sharing!

  • @beauteetmusculation8191
    @beauteetmusculation8191Ай бұрын

    Thanks a lot for this video. It's great to see you again on this channel. I just discovered a bit of Ada thanks to you, and I agree with almost all your takes. Simplicity is the most complicated goal in programming and computer engineering in general, but by far the most rewarding.

  • @valigo
    @valigoАй бұрын

    We are so back! Also sickest thumbnail art!

  • @fishsayhelo9872
    @fishsayhelo9872Ай бұрын

    took a good 10 minutes to notice this wasn't just an extra-fancy tsoding daily video :p

  • @m4rt_
    @m4rt_Ай бұрын

    I did not expect to see a new upload on this channel in my lifetime, yet here I am. I'm exited to see where this continues.

  • @ndrechtseiter
    @ndrechtseiterАй бұрын

    ЦОДИНГ ЗАПОСТИЛ ДЕНЬ ВОССТАНОВЛЕН

  • @artembaguinski9946

    @artembaguinski9946

    Ай бұрын

    СПЕЦИФИКЛИ

  • @joseph-montanez
    @joseph-montanezАй бұрын

    This is the language I always bring up when someone asks me about my favorite, this is it. Built-in language level concurrency, really good type system, pre and post contracts (runtime), Ada Spark, and now Alire for package manager. However... AdaCore supports GNAT (built tools) and doesn't provide bug fixes for the community edition, until the next major release. There is also really only x86 support, meaning on Apple Silicon it will compile to x86 on Mac. It can cross compile to ARM/RISC, but not for ARM on macOS. There is a way to get native AARCH64 builds for macOS, but its a rabbit hole. Editor support is also... lacking. The go to editor is GNAT Studio is Linux/Windows only, (there is a community build for macOS - iffy). SooOoOo, don't expect hand holding when working in this language. I really wanted to use this for embedded programming as this is where it shines but I end up getting lazy and instead reach for Rust.

  • @daruyami
    @daruyamiАй бұрын

    That's a really good introductory video on Ada, the only thing that I wish you had mentioned would be Alire, it's quite a fresh piece of the whole toolchain, however it's becoming a vital one. Anyways, nice work!

  • @PaulSpades
    @PaulSpadesАй бұрын

    Your description of array, range and indices in Ada provided more insight and food for thought than I was expecting from this video. Well done!

  • @konstantinrebrov675

    @konstantinrebrov675

    Ай бұрын

    These features are very interesting.

  • @forayer
    @forayerАй бұрын

    Really enjoyed the video 😊

  • @jkharabet
    @jkharabetАй бұрын

    The code written in C and C++ is probably well-established, which means we can rely on it despite the fact it was written in memory-unsafe languages. On the other hand, the new code that we write is worth writing in memory-safe languages even though we link it with c/c++ code.

  • @beauteetmusculation8191

    @beauteetmusculation8191

    Ай бұрын

    It is somewhat true, to some extent. I think you don't really get reliable code when reaching for a C lib, but you'll get the same errors as everybody else. 😄

  • @absalomdraconis

    @absalomdraconis

    Ай бұрын

    ​@@beauteetmusculation8191: Your code will be as reliable as the wrappers that you write. That is the problem.

  • @ScipiPurr

    @ScipiPurr

    Ай бұрын

    @@beauteetmusculation8191 I think even if linking to a C/C++ lib isn't inherently safe, you can at least constrain much of the risk to just those libraries. I also think that even with so much code being written in C/C++, it doesn't mean many of those codebases can't be migrated to other languages over time

  • @araarathisyomama787

    @araarathisyomama787

    Ай бұрын

    @@ScipiPurr With thread/memory/address/leak/undefinedbehavior sanitizers we have now, you can extensively test your usage and internals of those libraries (if you can compile them from source) yourself, and get most of the benefits of being "memory safe" and more (deadlock possibility detection in tsan is goty), just in runtime, and obviously, in your extensive test suite you should already have.

  • @monad_tcp

    @monad_tcp

    Ай бұрын

    C++ is almost as memory-safe as Rust if there was an option to disable some features. The way move semantics work is almost like ownership. Also, Rust doesn't preclude undefined behaviors either, so its not totally memory safe and you can indeed leak memory in some cases, you can break it without even invoking "unsafe". Particularly I think garbage collectors are a better solution to the problem of managing memory at scale, the fact that the hardware doesn't have optimizations for garbage collectors is the problem. We really need some kind of pointer tagging system, either to solve the spectre problems with leaking on hardware and to make GC faster and more predictable. Memory allocation speed should have never been a problem as programs shouldn't be allocating memory at steady state, if you don't do something, it doesn't matter how costly it is do it. Everything should always go on stack, so the fact that you can have "arenas" to speed up GC is enough. The real problem is that programmers rely on algorithms that uses too much pointers, like trees, those are kind of slow, we should use arrays, like John Backus intended Fortran to be, no suck shenanigans as "pointers" or dynamic memory.

  • @FDominicus
    @FDominicusАй бұрын

    One of the greatest videos from you. It’s really remarkable .

  • @GrazHero
    @GrazHeroАй бұрын

    When the world needed him most, he returned

  • @OCTAGRAM
    @OCTAGRAMАй бұрын

    Kudos for proper Ada maskot! I am Ada programmer on freelance. I've done some complicated project in Ada on freelance, and eventually I receive maintenance tasks on it. There were several projects, but two were maintained several years. One died because of sanctions. 5:33 I have seen another Ada compilers. ObjectAda and AdaMagic. They can have file names module.spec.ada and module.body.ada. It's just GNAT beeing free and supporting latest Ada standard, defined de facto standards 9:06 Turbo Pascal has TPU, Delphi has DCU, Free Pascal has PPU. GNAT makes use of GCC object formats, but then it has to offload the rich metainformation that just does not fit into object files. So ALI = DCU - OBJ = PPU - O. For instance, Ada has predictable initialization (called elaboration in Ada standard). On most platforms this facility cannot be fully put inside O files, so it's offloaded to ALI. ALI specifies dependencies between packages, and GNATBIND creates the "main program" that invokes initialization code for packages in a topological order, and then starts the Ada program itself. Also, GNAT allows some tweaks to be done from that "main program", so "main program" is also a storage for tweaks. For instance, leap seconds support can be force enabled via binder settings. Printing exception stack trace is another popular option. C++ has favoritism. So whatever C++ demands, usually comes into file formats and tools i.e. inline variables that require some sort of deduplication, are handled by ld. C++ binder is forced into ld. And C++ initialization/finalization without guaranteed order. Ada has no such favoritism. Dull people are deaf to our demands. Some particular Ada compilers may possibly go Delphi way and invent their own DCU with all the information they need, but GNAT's decision to use native Mach-O/ELF/etc. formats lacking Ada features, lead to adoption of additional ALI files. 10:06 gprbuild serves me well enough that I even use it for pure C and C++ projects if I can decide about toolchain, but cannot decide about programming language. It can handle static or shared libraries. I miss grpbuild in Delphi. And I miss gprbuild in AdaMagic. It's Alire, the next layer, that is sometimes questionable, but gprbuild is good. 17:18 It's not a problem it's written in C. The problem is that it's written in C in an unlinkable way. Without COM. In 1990s OS/2 guys were laughing at Windows guys for having such a pathetic COM thing, no match for IBM SOM, but now we are on Linux, and Linux does not even have COM as a common thing. We are degrading on Linux. On Windows programmer would make COM facade for a library and then Python automatically generates binding from TLB. COM library vendor provides freedom to use library from Ada, Delphi, whatever. On Linux developers provide direct bindings. Direct binding from Python to a specific library, and that direct binding is not usable for other languages. By the way, for COM analogue on Linux I would recommend VirtualBox XPCOM as opposed to Mozilla XPCOM. 17:43 Some useful unsafe code could be hardened by CCured. CCured is the "interesting thing in C compilers" 19:48 You don't need Interfaces.C for interfacing with C. You need aspect Import or pragma Import and aspect Convention or pragma Convention with value C. Aspect is like attribute in COM IDL, Delphi and .NET. Aspects appeared lately in Ada, and old pragmas can be written in either syntax. Interfaces.C package is for C types. Sometimes long ago there could possibly be a situation where Ada Character is not the same as C char, and Ada Integer is not the same as C int, and for that matters Interfaces.C.char is what surely shall match C char. Nowadays it's all so ridiculous, it's legacy, and let's just use ordinary types. 23:37 Niklaus Wirth had big regrets about retaining from Algol begin-end in Pascal. He fixed his mistake in each and every subsequent language, starting from Modula and all the way to Oberon. Ada also has fixed this error. But they all together failed to phase out old bad Pascal, and this shame persisted. Each new RemObjects Oxygene inherits from shameful Pascal and does not contain fixes. What a pain. 25:33 Not perfect, but that comes from C developers. Usually it's convenient to make automatically generated bindings and they copy-paste manually reviewed pieces of source text. Also I've heard about Ada plug-in for SWIG, but don't know how mature it is. I recall the author tried to bind wxWidgets, and in wxWidgets there is a copyable class inheriting from non-copyable class, and such mind tricks do not map to Ada well. I have missed if SWIG became a real thing for Ada. 35:50 This is from Pascal. Not originated in Ada. And I am not sure about Pascal origins. Maybe Algol had it before. If compatibility is desired then: subtype Xs_Index is Integer range 1 .. 200; If compatibility is not desired, then it's possible to write type Xs_Index is new Integer range 1 .. 200; Turbo Pascal and Delphi also have similar syntax: type A = type B. But the wall between A and B is not as thick as in Ada. Delphi vendor does not study Ada and does not deliver features that Ada has for decades. Delphi customers also don't know Ada and don't demand. What a pain. 37:12 SPARK did not have pointers for a long time, but there was a container library for it. IIRC GNAT GPL 2012 is the latest one to contain it. Those containers had predefined capacity and used array of full capacity size. Map was implemented by balanced tree and array indices 39:35 Yeah, I tried to explain this to Rust programmers, how broken their enumerations are, but they have conversion to Integer, and they think it solves all the problem. Indeed I like how Pascal family languages enable organizing stuff on low level with convenient building blocks. 40:32 Indeed, another nice feature that I just can't get in another languages. Not in Delphi, not in Rust. Not a rocket science, but they won't do. 41:12 And that's huge omission from Ada. Unlike Pascal, Ada parameters are read-only by default, but ordinary variables are mutable. So we're stuck with writing constant. That surely improves readability and reasoning. Rust started later and made immutable by default, that is certainly a good thing. Delphi has recently introduced inline variable declarations with assignment. Alright, but next logical step would be inline constant declarations. But one needs to know Ada to know one's next steps in language evolution, and Delphi vendor lacks that wisdom. 42:43 Speaking about abstraction, you can instantiate Ada.Containers.Vectors with "type Some_Index is new Positive;"

  • @neilclay5835
    @neilclay5835Ай бұрын

    Fascinating video. Thanks.

  • @RockyDesigne
    @RockyDesigneАй бұрын

    Hey man, you're really cool. I am watching the streams on twitch where you were developing Ada, and I am glad you finished it on stream. I really enjoy watching you program and seeing how you think, you're like the programmer I aspire to be really. Thanks for the vids and all the work.

  • @actualFix
    @actualFixАй бұрын

    Ada seems like a language that has developed healthily, it seems like a language I can see myself using. It's simple, and aside from a few personal preferences, it's quite to my liking. And it's interesting to finally see the origin influence behind Odin's enumerated arrays(it works exactly the same), which is one of it's best features. Overall seems like a great language, and I'd love to see a wider adoption of it, over *a lot* of other languages currently in use. I'll definitely give it a shot. Thank you for this video, Zozin!

  • @joshuadonahue5871

    @joshuadonahue5871

    Ай бұрын

    I think they were both influenced by pascal on enumerated arrays, but I'm not sure

  • @absalomdraconis

    @absalomdraconis

    Ай бұрын

    ​@@joshuadonahue5871: Pascal (with Oberon in between, and maybe something I'm forgetting?) is a known influence on Ada (and I think shares a language designer).

  • @russianbotfarm3036

    @russianbotfarm3036

    Ай бұрын

    @@absalomdraconis Modula 2, maybe.

  • @konstantinrebrov675

    @konstantinrebrov675

    Ай бұрын

    Yes, you are right.

  • @doce3609
    @doce3609Ай бұрын

    Amazing video. Loved it. Gotta try out Ada at some point. Actually looks very unique and interesting

  • @KushLemon

    @KushLemon

    Ай бұрын

    Till you actually want to do something with it - the language and its ecosystem are a mess.

  • @starc0w
    @starc0w24 күн бұрын

    That was awesome! Thank you so much! 🍀✨

  • @chandragunawan4105
    @chandragunawan4105Ай бұрын

    i didnt expect i would enjoy this long video. you did a great job, the third owner of the channel.

  • @albinekb
    @albinekbКүн бұрын

    I was so confused, I was sure I was already subbed! Hello again!

  • @boogly3716
    @boogly3716Ай бұрын

    Wow, it's so goddam different from usual streams. Nice takes on the lang, a lot of interesting info

  • @tamantaman
    @tamantamanАй бұрын

    This video is very very instructive, thank you sir :)

  • @KydEv
    @KydEvАй бұрын

    34:25 The 'Image is because you are not printing the array, you are printing the string representation of that array (so its appearance, in a way, its 'Image'). It is type safe, works with wide strings using Wide_Image... And it is very cool with enums and NULL stuff like that when printing

  • @user-uf4rx5ih3v

    @user-uf4rx5ih3v

    Ай бұрын

    OK, why is it not a function? Why introduce new syntax, that's not even nice?

  • @KydEv

    @KydEv

    Ай бұрын

    @@user-uf4rx5ih3v One big thing in Ada is clarity and definition about what is being done. Let’s say we don’t use ‘Image, but .To_String. We return a string with that function otherwise it is just Put_Line. Well, if I get a list of int as inputs. How do I know the size of the return value ? (Out). It may not depend ? What if there are side effects at the same time ?…

  • @KydEv

    @KydEv

    Ай бұрын

    @@user-uf4rx5ih3v another way of saying it. Using Ada syntax, if Read_File was outputting the content of the file, then we would have to know the contents of that file before reading it to be able to write the return type at definition

  • @TsvetanDimitrov1976
    @TsvetanDimitrov1976Ай бұрын

    If I had a $ for every language that was suposed to replace C....

  • @kevinchadwick8993

    @kevinchadwick8993

    Ай бұрын

    It has replaced C for me and it is so much better that words would not suffice. Truly I say to you that Ada is the best language for embedded, memory registers/drivers and network protocols.

  • @MultiPoiu

    @MultiPoiu

    Ай бұрын

    I think you might get 20-50$ for those

  • @EduardoEscarez

    @EduardoEscarez

    Ай бұрын

    The point of the NSA recommendation (and also the general one from the White House) is that C (and C++ to certain extend) has been problematic due to bugs and memory safety, while that could be a skill issue of the programmers, we still have those problems since several decades because there isn't a good solution for them due to the nature of the languages. What they are saying is more nuanced, like "if this program can be written in a memory safe language, do it that way" which should be the first consideration in many areas where cybersecurity is critical. And even they say that are areas where C cannot be replaced like avionic or satellite systems, where the garbage collector nature could be a great problem. At the end their intention is not to replace C but only using it in areas were its capabilities are a requirement.

  • @stolenlaptop

    @stolenlaptop

    Ай бұрын

    ​@@EduardoEscarez So use a language written in c instead of c itself. Checks out.

  • @LukeAGuest

    @LukeAGuest

    Ай бұрын

    I replaced both C and C++ with Ada in 2005.

  • @sealoftime
    @sealoftimeАй бұрын

    Thank you for covering Ada! I'm a total smelly nerd for this language. Really wish there'll be more videos about it!

  • @im_gin
    @im_ginАй бұрын

    Finally! The main “Tsoding” channel got a new video 🎉 (First 5 seconds I thought this was another video on Tsoding Daily channel lol)

  • @friggindoc
    @friggindocАй бұрын

    This game looks insanely cool! Props to you man

  • @jccosta78
    @jccosta78Ай бұрын

    Finally a coding video that I can watch. I just found your channel. Keep the good work! Exta bonus: he codes in Emacs! 😀

  • @orestissabethai830
    @orestissabethai830Ай бұрын

    The game looks great and the video was very informative. Thank you!

  • @AndrewMilesMurphy
    @AndrewMilesMurphy11 күн бұрын

    Your game is very beautiful in concept and to the eye as well.

  • @ludolpif
    @ludolpifАй бұрын

    Very cool coverage of all steps to try this by myself, after 10 years of not writing any ADA line code :) Was used as base language to teach procedural programming in some French high-school. Planes produced in France are / were shipping ADA code as critical code for flight. Trading in the biggest bank company from here have / were actually got production code in ADA too.

  • @sanjarkuliev7770
    @sanjarkuliev7770Ай бұрын

    очень крутой видос получился. thanks bro! the edit is concise and captivating. you really help me get my motivation going. you see, i think i started burning out at work around a year ago, i took a couple of months off work, and tried to recover, but ever since i've been having troubles keeping myself motivated at programming (even my own side projects) so i wanted you to know: i appreciate the work that you do like making content and editing videos, it helps me getting through these tough couple of months. thank you

  • @diadetediotedio6918
    @diadetediotedio6918Ай бұрын

    17:39 So, this is an interesting take in many ways, but are you considering the possibility of making applications by making code in safe languages? I don't think it is a justified argument to draw that, from the fact we use past-written C/C++ code to make useful things, it implies that it "vanishes" the safety benefits of safe languages.

  • @y00t00b3r
    @y00t00b3rАй бұрын

    Instant subscription. I had an Ada course in college 30+ years ago.

  • @cobbcoding
    @cobbcodingАй бұрын

    Tsoding is back let's go

  • @mahdiaghaei8154
    @mahdiaghaei8154Ай бұрын

    Love this kind of content!❤ It would be awesome if you could make courses Tsoding!

  • @muhammadmustafa3158
    @muhammadmustafa3158Ай бұрын

    Great video Mr zozin !

  • @jawad9757
    @jawad9757Ай бұрын

    Does it really count as circumventing the borrow checker when you still have to immutably or mutably borrow to actually get/set the data in the vector/array?

  • @lowlevelcodingch
    @lowlevelcodingchАй бұрын

    I didnt even notice this is the other channel, finally you uploaded again! 🤣

  • @saqibshafin
    @saqibshafinАй бұрын

    35:17 ...and that will actually work...almost... I love the way you present. I came for copper, and I found gold - your works are indeed gold to me. IMHO.

  • @jongeduard
    @jongeduardАй бұрын

    Thanks for another great video! Made me curious about exploring Pascal again. Turns out Pascal has quite exactly those same features with indexing and enumerations! I knew about those enumerations, but I wasn't sure about the array indexing aspect. Now I tried it on linux with freepascal. Ada en Pascal are very similar here too. Actually great, also from memory safety perspective. Somehow, many years of having to work in someone else's existing Delphi code (which is really just a Pascal dialect) never invited me to explore every aspect of the language myself. Especially also because none of those good things where ever in all that code. And I have always been more a C family languages guy and worked with C# too. Maybe Ada is more memory safe on other aspects as well, or the compiler does more checks, I don't know. But both Pascal and Ada deserve actual credits I think.

  • @benmarr5128
    @benmarr5128Ай бұрын

    I've been enjoying your stream and the Tsoding daily channel, but this long form edited style really fucking works nice man! I came across Ada when working for a company that provided code analysis tools for safety critical applications. Ada seemed to be a relevant choice in these areas.

  • @SuperNolane
    @SuperNolaneАй бұрын

    Indices are natural part of abstract container semantics. While iterator (pointer) invalidation rules are a detail of some specific implementation.

  • @BrianBurciaga
    @BrianBurciagaАй бұрын

    I just finished a course on Safety and Security and our labs were in Ada. Nice to see something in the obscure lang

  • @Stockwise-jt8yp
    @Stockwise-jt8ypАй бұрын

    awesome video keep making such videos

  • @MadMathMike
    @MadMathMikeАй бұрын

    I'm only 3 days in, and you built that in 20 days?! That's actually amazing!

  • @SlinkyD
    @SlinkyDАй бұрын

    *Jeezy Voice: Welcome back, welcome back This got a 1990s elementary "The Learner Will" video mixed with PBS documentary vibe. You got a spicy bag o talent.

  • @vicktorioalhakim3666
    @vicktorioalhakim3666Ай бұрын

    As a FPGA engineer used to VHDL this language hits right home!

  • @r2com641

    @r2com641

    Ай бұрын

    vhdl sucks and its not ergonomic and its absent sensitivity to letter case is retarded

  • @juanpauloazaelpalacios-vil5422

    @juanpauloazaelpalacios-vil5422

    Ай бұрын

    VHDL mentioned, auto like 🦅🦅🦅

  • @bloodgain

    @bloodgain

    Ай бұрын

    Not surprising. One of the few areas where Ada still has a large (for the industry) following is embedded programming, which is a next-door neighbor to FPGA programming.

  • @earx23

    @earx23

    Ай бұрын

    That's because VHDL was actually based on ADA. ADA was already intended to be a replacement for C in the late 70's. It had military roots.. just like VHDL.

  • @notnrrful
    @notnrrfulАй бұрын

    Sweet! Someone else really, really likes how array index types work in Ada. It was starting to feel a little lonely.

  • @caddr
    @caddrАй бұрын

    Finally, tsoding remembered the password, and started uploading a new video

  • @FunkschyIsWatchingYou
    @FunkschyIsWatchingYouАй бұрын

    A new "main" channel video. 2024 is a good year AYAYA

  • @motbus3
    @motbus3Ай бұрын

    Sometimes I feel I am tired of software. I think I will just give up or something, then I watch Tsoding and I remember why I always loved programming. You are a legend. I watch your videos since back Haskell times. I don't have the time for the twitch stuff but I wish I did. Keep being awesome, and thank you. ❤ Ps. Another video about Ada would be quite cool.

  • @rubberduck2078
    @rubberduck207828 күн бұрын

    the title is genius

  • @user-wb5tr9wl5f
    @user-wb5tr9wl5fАй бұрын

    Cooool!!! He finally become a KZreadr!!

  • @suvetar
    @suvetar15 күн бұрын

    That game looks a bit like a fun version of that Adventure game on the Atari 2600! Awesome stuff man, I love your commitment to digging your heels in and just grabbing any old language by its short and curlies!

  • @sandrojukovic20
    @sandrojukovic20Ай бұрын

    Interesting format of videos. Was listening while washing dishes and then Ada kinda reminded me on PL/SQL. I googled that, it turns out Oracle borrowed syntax from Ada.

  • @maksymiliank5135
    @maksymiliank5135Ай бұрын

    the type system in ada seems to be very neat. Really like how expressive it is without any comments

  • @rapsoydc
    @rapsoydcАй бұрын

    Thank you so much for the time you have taken to make this video. This is the second time I muster up the courage to reach out to you regarding which path to take in the field of programming languages. Perhaps you or one of the readers could guide me, especially since I don't have anyone else in my area to ask for advice. Towards the end of the video, you mentioned integrating Ada into a resume to land a job in the programming industry. I believe you answered no, and truthfully, I am unsure which language to turn to for this purpose. I'd like to express my interest in programming by learning a language that would allow me to secure a remote job. Thank you very much. I understand you may not have the time to reply personally, but if anyone from the community could offer guidance, I would be immensely grateful.

  • @gravityrainbow
    @gravityrainbow14 күн бұрын

    more. we want more of this.

  • @alexeski4109
    @alexeski4109Ай бұрын

    Ada is a really cool language. I hope I have some time to check it out. Zig is similar to Ada in how they interop with c. It’s interesting how they are focusing on the tool chain and building things from the ground up while supporting interop with c from the beginning.

  • @murilloventura2823
    @murilloventura2823Ай бұрын

    Literally the best code streamer

  • @salim444
    @salim444Ай бұрын

    mista zozing is cooking

  • @motbus3
    @motbus3Ай бұрын

    Oh Man. I was looking this channel the other day wondering if you would revive this channel besides the daily one

  • @kodosunofficial
    @kodosunofficialАй бұрын

    Yes!!!! This channel is alive

  • @lhpaoletti
    @lhpaolettiАй бұрын

    Are you going to post the Eepers VODs in the Tsoding Daily channel? I can't find them somehow, so I thought that you don't have them posted yet

  • @jcmunioz
    @jcmuniozАй бұрын

    I used Ada in college and I liked it very much. No one else in my class figured out how to interface Ada with assembler to manipulate the serial port, but me. That was one of my proudest moments in college :)

  • @codeplay4947
    @codeplay4947Ай бұрын

    hey how can you share your discord channel link ???

  • @FEiSTYFEVER
    @FEiSTYFEVERАй бұрын

    You can have a look at the secure subset of Ada called SPARK, which implements design by contract. A great concept that more languages should adopt.

  • @skejeton
    @skejetonАй бұрын

    ahh, finally someone said about how indexes are similar to pointer (and why it's basically a way to circumvent the borrow checker lol)

  • @ar_xiv
    @ar_xivАй бұрын

    the bit at 25:00 about bindings stands out as maybe the most important part of this video

  • @fr3fou
    @fr3fouАй бұрын

    he's back

  • @eazypeazy8559
    @eazypeazy8559Ай бұрын

    this format is hot!

  • @theevilcottonball
    @theevilcottonballАй бұрын

    Since Ada is memory safe but not garbage collected, how does it handle dynamic memory allocation and deallocation? Or does it not have that feature and you have to allocate things statically?

  • @LukeAGuest

    @LukeAGuest

    Ай бұрын

    There is a new keyword and a generic procedure, Unchecked_Deallocation which you instantiate to free it. The language could always have a GC if the implementer's wanted to, it was allowed from the initial versions and iirc some of the original research compiler's had it, but they were also nothing more than an extended Pascal back then, the papers are available on the acm.

  • @blastygamez
    @blastygamezАй бұрын

    Now this guy is what I call a professional good programmer ^-^

  • @hugosales8102
    @hugosales8102Ай бұрын

    Totally agree with the take about reading the source. People seem to think libraries are magic. A funny aside, is that, among friends, we've been referring to reading the code as the "russian docs" xd

  • @ayoubelmhamdi7920
    @ayoubelmhamdi7920Ай бұрын

    this channel still working

  • @diegorocha2186
    @diegorocha2186Ай бұрын

    Holly shit, this is an amazing video!!! I really liked the style and how you approach the demo! I'm wondering if you will upload the ada session in entirity on your daily channel, really loking forward in watching it!!!! Thanks!!

  • @AleksyGrabovski
    @AleksyGrabovskiАй бұрын

    I'm simple man, see Ada - I press like. Good job for spreading a word about this awesome language.

  • @yan-amar
    @yan-amarАй бұрын

    43:04 Justice for Ada!

  • @popcorn109i
    @popcorn109iАй бұрын

    Witness font for section headers? Nice vod btw

  • @Echiduna
    @EchidunaАй бұрын

    tsoding is always my hero❤

  • @asdfghyter
    @asdfghyterАй бұрын

    17:17 what i really want is a new standard for FFI that isn’t limited by C’s weak type system and allows different languages to communicate with each other what they know about the code and what they don’t. i think it should probably allow further specification than what the language the code was written in allows, kind of like typescript specification files for js libraries, so assuming we trust the specification, you can write code in most other languages using only safe primitives linking against it

  • @alecs2056
    @alecs2056Ай бұрын

    37:00 I don't understand how this is supposed to circumvent the borrowchecker, the owner of the memory is still the list, regarding remembering in what list you are indexing I believe it can also done in rust (I'm not a rust programmer but I can do it pretty easily in Haskell)

  • @alecs2056

    @alecs2056

    Ай бұрын

    Yeah but the memory is owned by the data structure not the pointer, so you can have at most one mutable reference of that regardless of any pointer so such thing cannot happen

  • @dariofagotto4047
    @dariofagotto4047Ай бұрын

    So in Ada arrays can be mapped by ranges and enumerators (*like in pascal*) :) a lot of interesting things are present in pascal that should be everywhere like native bit sets for enumerators etc..., curious about the concurrency and other things of the language tho, will look into it!

  • @hashfall5338
    @hashfall53387 күн бұрын

    Now we need an Adalings project to help learning Ada.

Келесі