Making a game in Ada with Raylib

I have an embedded compiler and I swear that if someone on the computer next to me types a non ASCII character (>127) on their machine that my compiler tries to commit ritual suicide. Copy/paste from web pages is like gambling!

1 Like

I just saw this email of the stream today This Language is the Future of GameDev, don’t know if he’s joking or not.

You never know with him. That allows him to say one thing and the contrary without blinking. No problem, 1) it’s recreational programming after all, and 2) better people talking about Ada be it negative or positive, than not at all.

2 Likes

He is using Emacs now. When did he change, and what Ada mode is he using?

I just opened an issue for him to inform him of @, I tried searching to find the name, that was impossible to find.

He changed back to emacs about 10 episodes back I think.

In Ada 2022, @ was introduced as the “target name” symbol.

“@, known as the target name of an assignment statement, provides an abbreviation to avoid repetition of potentially long names in assignment statements.”

http://www.ada-auth.org/standards/22aarm/html/aa-5-2-1.html

Okay, he did a few more videos after the finale, so here are the takes :slight_smile:

Good parts

  • He likes that if can be used as an expression and it makes ternary operators cleaner.
  • He said something along the lines: “I love Ada, I just don’t understand why the developers hate documentation”. He was referring to documentation not being concise and condescending.
  • Regarding tasking: “Absolute delays is a cool concept, I never thought about it”.
  • Maybe not good per se, but he went from Ada 2022 to Ada 2012 as he was not using any Ada 2022 features and he wanted to keep as much backwards compatibility as possible.
  • He did a fairly large refactoring of the code, which was pretty nice and readable. The compiler helped most of the way. He is also happy with renames.
  • “I could see doing cool concurrent applications with tasks in Ada, like a web server”
  • “The core developers of the language, the ones that create it, are super cool”
  • User akoya_here: “but, ngl, I like the language, reading eepers code has been nice”
    • IMHO, it is not, by far, the cleanest Ada code out there! But indeed, Ada is pretty readable! ^^

Bad parts

  • He still has issues finding the attributes he wants for the different types. I share his pain.
  • He keeps doing 0..X-1 for arrays since he does not use 'First, 'Last and similar attributes.
  • Episode 21/20, 02:52h approx: “There are no useful unions in Ada” He is referring that unions are frozen at compile time. He was having issues during a large refactoring of the code (Hash Maps).
  • He does not like walls of text.

General comments

  • Ada search in Github is borked, it did not show most of the Ada projects when selecting the Ada language. It paints a pretty bleak picture and maybe it is lowering Ada in some benchmarks, such as Languish - Programming Language Trends
5 Likes

The query done by Languish, includes both the tag “ada” and the Ada language as conditions. It gives more results when you search a keyword “ada” for example, together with the language condition. It’s weird, because if you remove the keyword, 500 projects disappear.

But please, independently of that weirdness, everyone should add appropriate tags to their GitHub repositories for better discoverability, specially the “ada” tag.

3 Likes

The language filter is one aspect where SourceForge is definitely better.

He said it! :wink:
At 00h53m00s

2 Likes

The issue is, nobody can tell if he’s joking or not. Someone actually asked twice in the chat in one of the last few eps not sure which one, but he never answered them and they didn’t ask again when he went for a break.

That move could be influenced by the GNAT bug he found. I demonstrated him that it was related to the -gnat2022 switch and the compiler version he was using. Simplify Floor by using standard Ada attribute by mgrojo · Pull Request #5 · tsoding/eepers · GitHub

I think he has liked a lot the language. But, of course, saying that “this is going to be the big thing in a couple of years” probably can only be said as a joke, unless he’s so narcissist to think that his streaming is going to provoke a snow ball effect changing the game development landscape in two years!

That’s because “anonymous” is typically a bag of ‘ease’ that only yields bitter fruit: just look at all the BS surrounding anonymous access types. – Ease of use is fine, but the big “bang for your buck” would be the ability to address things at a more “generic” level and allow “current Ada” to be expressed therein.

One example is generics: there are several attempts at “automatic instantiation” which are, to be frank, doing it the stupid way: instead of realizing that the problem i inherently a combinatorial explosion needs to be constrained in any valid/usable solution — something like “Just [pre-]instantiate with all possible parameters” is obviously unworkable, whereas something like this proposal provides a method to allow generic instantiations to be “automatic” in the sense that default parameters are automatic.

I have found desire for auto instantiation for child packages of generics where the child package has no formal parameters. It kinda stinks you have to separately instantiate those. I like the option to instantiate them but would love it if I didn’t have to and the compiler could make an instantiation for those (tied to the parent package instantiation so it wouldn’t be anonymous).

I think the problem with anonymous access types was the rule set. I don’t believe the current rule set was the only means to handle them and was maybe too complex. There is definitely a need for anonymous access types to avoid unchecked programming with named access types (which is really a dangerous place to be), but a simpler implementation of the rule set that is understandable by the masses would be better (there are very few that understand the heart of darkness and they mostly refuse to teach it to anyone now adays). I saw that SPARK had something promising potentially implemented? I haven’t dug into it to see though.

4 Likes

Kudos to Tsoding; he has won my respect (even when he is still calling C floorf() instead of Float'Floor in his code).

1 Like