Will Ada Replace C/C++?

  Рет қаралды 68,331

Tsoding

Tsoding

Күн бұрын

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

Пікірлер: 448
@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
@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
@joemamium
@joemamium Ай бұрын
Tsoding 2: Here We Цод Again
@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.
@kleoCodes
@kleoCodes Ай бұрын
The channel is back baby!
@musdevfrog
@musdevfrog Ай бұрын
but your father don't.
@kleoCodes
@kleoCodes Ай бұрын
@@musdevfrog bro what?
@GrazHero
@GrazHero Ай бұрын
When the world needed him most, he returned
@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.
@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.
@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.
@fishsayhelo9872
@fishsayhelo9872 Ай бұрын
took a good 10 minutes to notice this wasn't just an extra-fancy tsoding daily video :p
@KushLemon
@KushLemon Ай бұрын
Short answer - no. Long answer - no.
@russianbotfarm3036
@russianbotfarm3036 Ай бұрын
Was a click-bait title, truthfully.
@therealpeter2267
@therealpeter2267 23 күн бұрын
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 Күн бұрын
@@therealpeter2267I don’t know any language that enforces value constraints like Ada does. It’s a very rigid language for very demanding applications
@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.
@valigo
@valigo Ай бұрын
We are so back! Also sickest thumbnail art!
@ndrechtseiter
@ndrechtseiter Ай бұрын
ЦОДИНГ ЗАПОСТИЛ ДЕНЬ ВОССТАНОВЛЕН
@artembaguinski9946
@artembaguinski9946 29 күн бұрын
СПЕЦИФИКЛИ
@MoolsDogTwoOfficial
@MoolsDogTwoOfficial Ай бұрын
I hope you upload more frequently on this channel. I love listening to you explaining things when it comes to programming.
@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!
@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!
@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.
@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.
@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.
@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.
@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 29 күн бұрын
Yes, you are right.
@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 29 күн бұрын
These features are very interesting.
@neilclay5835
@neilclay5835 Ай бұрын
Fascinating video. Thanks.
@rubberduck2078
@rubberduck2078 14 күн бұрын
the title is genius
@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.
@OCTAGRAM
@OCTAGRAM 28 күн бұрын
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;"
@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)
@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 29 күн бұрын
@@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 29 күн бұрын
@@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
@salim444
@salim444 Ай бұрын
mista zozing is cooking
@boogly3716
@boogly3716 Ай бұрын
Wow, it's so goddam different from usual streams. Nice takes on the lang, a lot of interesting info
@FDominicus
@FDominicus 20 күн бұрын
One of the greatest videos from you. It’s really remarkable .
@starc0w
@starc0w 10 күн бұрын
That was awesome! Thank you so much! 🍀✨
@cobbcoding
@cobbcoding Ай бұрын
Tsoding is back let's go
@RockyDesigne
@RockyDesigne 23 күн бұрын
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.
@chandragunawan4105
@chandragunawan4105 Ай бұрын
i didnt expect i would enjoy this long video. you did a great job, the third owner of the channel.
@ViaConDias
@ViaConDias 4 күн бұрын
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.
@lowlevelcodingch
@lowlevelcodingch Ай бұрын
I didnt even notice this is the other channel, finally you uploaded again! 🤣
@mahdiaghaei8154
@mahdiaghaei8154 26 күн бұрын
Love this kind of content!❤ It would be awesome if you could make courses Tsoding!
@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.
@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.
@tamantaman
@tamantaman Ай бұрын
This video is very very instructive, thank you sir :)
@FunkschyIsWatchingYou
@FunkschyIsWatchingYou Ай бұрын
A new "main" channel video. 2024 is a good year AYAYA
@y00t00b3r
@y00t00b3r Ай бұрын
Instant subscription. I had an Ada course in college 30+ years ago.
@friggindoc
@friggindoc 29 күн бұрын
This game looks insanely cool! Props to you man
@sandrojukovic20
@sandrojukovic20 18 күн бұрын
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.
@caddr
@caddr Ай бұрын
Finally, tsoding remembered the password, and started uploading a new video
@jccosta78
@jccosta78 28 күн бұрын
Finally a coding video that I can watch. I just found your channel. Keep the good work! Exta bonus: he codes in Emacs! 😀
@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
@fr3fou
@fr3fou Ай бұрын
he's back
@motbus3
@motbus3 Ай бұрын
Oh Man. I was looking this channel the other day wondering if you would revive this channel besides the daily one
@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!!
@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.
@jongeduard
@jongeduard 26 күн бұрын
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.
@sanjarkuliev7770
@sanjarkuliev7770 16 күн бұрын
очень крутой видос получился. 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
@MadMathMike
@MadMathMike Ай бұрын
I'm only 3 days in, and you built that in 20 days?! That's actually amazing!
@kodosunofficial
@kodosunofficial Ай бұрын
Yes!!!! This channel is alive
@blastygamez
@blastygamez Ай бұрын
Now this guy is what I call a professional good programmer ^-^
@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 29 күн бұрын
VHDL mentioned, auto like 🦅🦅🦅
@bloodgain
@bloodgain 26 күн бұрын
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 22 күн бұрын
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.
@orestissabethai830
@orestissabethai830 Ай бұрын
The game looks great and the video was very informative. Thank you!
@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.
@muhammadmustafa3158
@muhammadmustafa3158 19 күн бұрын
Great video Mr zozin !
@notnrrful
@notnrrful 29 күн бұрын
Sweet! Someone else really, really likes how array index types work in Ada. It was starting to feel a little lonely.
@user-wb5tr9wl5f
@user-wb5tr9wl5f Ай бұрын
Cooool!!! He finally become a KZfaqr!!
@Stockwise-jt8yp
@Stockwise-jt8yp 29 күн бұрын
awesome video keep making such videos
@murilloventura2823
@murilloventura2823 Ай бұрын
Literally the best code streamer
@SuperNolane
@SuperNolane Ай бұрын
Indices are natural part of abstract container semantics. While iterator (pointer) invalidation rules are a detail of some specific implementation.
@suvetar
@suvetar Күн бұрын
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!
@ayoubelmhamdi7920
@ayoubelmhamdi7920 Ай бұрын
this channel still working
@AleksyGrabovski
@AleksyGrabovski Ай бұрын
I'm simple man, see Ada - I press like. Good job for spreading a word about this awesome language.
@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.
@JohnDoeNobody
@JohnDoeNobody Ай бұрын
Yippie!
@maksymiliank5135
@maksymiliank5135 Ай бұрын
the type system in ada seems to be very neat. Really like how expressive it is without any comments
@jcmunioz
@jcmunioz 19 күн бұрын
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 :)
@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.
@judahwilson6756
@judahwilson6756 Ай бұрын
This game looks actually dope
@rapsoydc
@rapsoydc 28 күн бұрын
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.
@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.
@gravityrainbow
@gravityrainbow 14 сағат бұрын
more. we want more of this.
@EkShunya
@EkShunya Ай бұрын
welcome back
@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
@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)
@eazypeazy8559
@eazypeazy8559 Ай бұрын
this format is hot!
@connorlatham9578
@connorlatham9578 Ай бұрын
Some of the expressiveness at the end reminds me of Apple's new language Pkl. For those types that are ranges, do you need to use them like enumerations or can you perform arithmetic? And if you can perform arithmetic, how does the type behave if it overflows? Maybe I just need to read the docs... Fascinating video, thanks for taking the effort here to break this all down.
@connorlatham9578
@connorlatham9578 Ай бұрын
I ask how they behave because I think it relates strongly to a lot of the "try_" style functions in Rust, and the complexity that seems to drive downstream to a dev.
@connorlatham9578
@connorlatham9578 Ай бұрын
It's really fascinating that Ada seems to take this route of add complexity to language "words" to improve relationship expression between them instead of driving that to the runtime of the program. I wonder if so many languages seem to have a small set of source symbols because they are developed by English-speaking workers as opposed to German or Chinese. Where a single word is as expressive as a whole sentence in English.
@popcorn109i
@popcorn109i Ай бұрын
Witness font for section headers? Nice vod btw
@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?
@yan-amar
@yan-amar Ай бұрын
43:04 Justice for Ada!
@Echiduna
@Echiduna Ай бұрын
tsoding is always my hero❤
@ManderO9
@ManderO9 Ай бұрын
he is back
@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!
@SteveRowe
@SteveRowe Ай бұрын
I thought the teaser line was "Will Ada replace C/C++ in Tsoding's programming stream for more than just one project?"
@user-cy1rm5vb7i
@user-cy1rm5vb7i Ай бұрын
28:30 I usually use msys2 in a windows virtual machine for that exact purpose. It comes with pacman plus some gnu tools + bash, so it's almost just a drop in replacement for me, since I use make for building stuff
@tremon3688
@tremon3688 29 күн бұрын
ADA has lots of features integrated into it. At uni I used it to program realtime systems
@FEiSTYFEVER
@FEiSTYFEVER 28 күн бұрын
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.
@034omkar
@034omkar Ай бұрын
amazing
I Tried JAI, Can It Replace C++?! (Programming Language)
21:05
I bought the most MINIMALIST Tech ever.
48:11
Mrwhosetheboss
Рет қаралды 1 МЛН
YouTube's Biggest Mistake..
00:34
Stokes Twins
Рет қаралды 68 МЛН
How to open a can? 🤪 lifehack
00:25
Mr.Clabik - Friends
Рет қаралды 14 МЛН
Let's all try it too‼︎#magic#tenge
00:26
Nonomen ノノメン
Рет қаралды 51 МЛН
Зу-зу Күлпәш. Стоп. (1-бөлім)
52:33
ASTANATV Movie
Рет қаралды 967 М.
the new PS4 jailbreak is sort of hilarious
12:21
Low Level Learning
Рет қаралды 37 М.
I programmed in TypeScript like in Haskell (Lazy Evaluation)
1:22:26
Why is Raylib becoming so popular?
9:24
Chris_PHP
Рет қаралды 11 М.
i cant stop thinking about this exploit
8:40
Low Level Learning
Рет қаралды 265 М.
So You Think You Know Git - FOSDEM 2024
47:00
GitButler
Рет қаралды 922 М.
You Probably Shouldn't Watch This
8:22
The Math Sorcerer
Рет қаралды 257 М.
I'm a Mess, so I'm Making My Own File Organizer [TagStudio]
23:32
Zed “kills” VSCode
12:10
Alex Ziskind
Рет қаралды 458 М.
Faster than Rust and C++: the PERFECT hash table
33:52
strager
Рет қаралды 497 М.
APPLE УБИЛА ЕГО - iMac 27 5K
19:34
ЗЕ МАККЕРС
Рет қаралды 97 М.
M4 iPad Pro Impressions: Well This is Awkward
12:51
Marques Brownlee
Рет қаралды 6 МЛН
What % of charge do you have on phone?🔋
0:11
Diana Belitskay
Рет қаралды 350 М.
Edit My Photo change back coloured with Bast Tech
0:45
BST TECH
Рет қаралды 333 М.