Hi everybody. I'm AJ and I'm kind of obsessed with Ada. So it started around 16 years ago
when I first picked up an old 8 and 95 book at my university library and I was immediately
hooked. I had just learned C++ the previous semester and with summer starting I was trying
to learn as many languages as I could. I dug into everything from fourth to cobalt, but Ada's
focus on structure and safety had always stuck with me. I would annoy my friends and colleagues
about who always work in like C and later Python and go trying to argue in favor of Ada.
In my defense, I fell in love with the language, the expressive syntax and the powerful type system.
Since I could build constraints directly into the data structure, I can code my program in a
declarative way without ever worrying about the underlying architecture. If low-level features
would need it, well that's fine too. I could even define certain data types by how many bits
it should have or where and memory it should go. I could go on all day about Ada's features
from its built in multi-threading with text-safe objects to enforcing readable and correct code
through its syntax, but this is a lightning talk and well now I've got less than 15 minutes.
About seven years ago, I came across a post on Reddit called going all in with Ada. It was
post-abiant architect who discovered Ada while nerding out on aviation. With no programming
background, he taught himself to code in Ada and started a software company. This was kind of the
push I needed to put my money where my mouth is and practice what I preached. I bought a copy of
John Barnes programming in Ada 2012 and decided that any coding I do moving forward will be written
in Ada. In the following years, I would watch another language focused on safety,
memory safety exact, quickly become one of the fastest rising languages with an ever-growing
community. First of all, at the same time, this language was rising. I saw Ada shrinking every
single year. Yes, I'm talking about rust. Those very same friends who weren't interested in
Ada, they embraced rust fully. So it seemed to be the answer that they were waiting for. So I
had to ask myself, why not Ada? I spoke to several of those friends over what they found
great about rust and what issues they ran into with Ada and they gave me some feedback.
So, oops, there we go. So first rust was very easy to install. You could simply visit
rust.rs, run a command, congratulations. You now have cargo. Ada on the other hand,
well, what license do I use? What is a net pro? Community edition? What's that? What run time
license? Rust, it was easy to install a new project. You just open up cargo, type in cargo,
new food, CT food, cargo build. Then congratulations. Now you have a project. Library, there's an
ecosystem with crates.io. And the library and the ease of creating a project,
a layer actually makes that pretty easy now. So that's a solve problem, but more on that later.
Must also had accessible documentation, vibrant community. And even an absolute beginner
can start using rust with almost no barrier to entry.
Uh oh, okay. There we go. So, like I said, many of these points have been
addressed in the 2020s for Ada with the retirement of community edition and the introduction to
a layer. However, when I see someone trying to learn Ada with no prior knowledge,
a layer's almost never mentioned. And the first impression that you get with Ada is
getting tied up with net maker GPR build. For those that do come across a layer,
there are either using older versions from their package manager or they have to go through
the manual installation process, such as adding things to path and such. And that's why I wrote
Get Ada to try and make things try to lower that barrier to entry as easy as possible,
essentially to be like how rust up works in rust. So, in this next video, I can show you how I used
Get Ada to go from having absolutely nothing, Ada related on my Mac to having a fully
working compile version of a world in less than two minutes. So, I visit GetAida.dev. I just copy and
paste this command in my terminal. It prompts me. I select yes. It downloads and installs a layer.
I have to either restart my terminal or copy and paste this environmental command to add it to
the path or make sure it's added to paths. Then I see the projects, start a new project,
ALR in it, been dev hello world, jump in. I'm just using the defaults here. And then
it automatically goes out, grabs the latest version of that as it's my computer. And now I have a
project. It sets up a little shell project for me automatically. So, now I just have to edit this
file here. I can add my quick hello world. And then I save. I run aLR build. I can compile
it and add it to the binary directory, bin directory, and I do hello bin hello world and it runs.
And that's it. Is anyone have any questions?
Sure. You mentioned that people use all the ways from decades, neither just, yes, or all the way up,
just introducing what you just showed as the package into both decades.
So, for the listeners, asking about saying there were older versions of the package manager,
and what was the last second part? What's the hold-up of just using the one in the package manager?
So, just getting what you just told me? Oh, just getting what you're in. How
it looked into getting, get data into the package manager's yet? Ideally, that would be the next,
the next good step to do. Yeah, the reason a lure being in the package manager's causing
issues is because older versions of a lure are not getting updated, and they're not
just like missing features and there's issues with the index and stuff, but getting, get data into
the package manager would actually make things pretty streamlined, I think. Yes.
How many defaults are doing around the unit test? How much harder it is to get the first unit test?
Yes. So, there's a bit, I'm having everything automated in GitHub actions,
and when everything is pushed, it is recompiled and tested on all of the available platforms,
which except for ARM, which is coming soon. But yeah, it does not have a new release until
everything is passing all of those tests. There are some new features in framework,
or what's going on saying like, gee, I don't have to think what the kick around my unit test.
I'm not too familiar with the unit tests for eight, I know there's a unit.
There's a lot of, there's a whole library built around unit testing for framework for data,
and I think that gets, that can be included in a lure. I think you just do ALR with a unit,
and it pulls in the unit testing library, and you can also bring in a GNAT Prove and Spark,
and all of that. So, anything that's available in ADA is generally available in a lure,
and you can just go to alir.ataddevslashcrate.html, and there's tons of libraries that
are already submitted to the alir index, and it's super easy to add a library. You just ALR with
library name, and it pulls it all, and including the US tests functionality.
There's a lot of libraries, but there is some irony when it's just where you can sell the
labels, if that was in safety, it's a pearl, some of the spree, I could do that.
That's fair, that's fair. You can download and run, get ADA from the GitHub repo if you don't
want to pipe curl to shell. I'm pretty much following what rust stuff is using to get that,
and for, I guess, getting, I mean, it's valid for people who are security conscious. They don't
want to do that. You can just load the file and read it yourself. It's ALR is doing is pulling
the installer and running it in a temporary directory, but, you know, questions or comments?
Great. Well, thank you.