Questions

Is this minecraft?

Almost. But better.

While it is possible to use AdaBots inside minecraft, we much prefer to use the open-source alternative minetest; it is faster, more extensible through modding, and it’s free!

To do justice to the AdaBots vision, we must also make a distinction between gaming on the one hand, and programming on the other. As programmers ourselves, we believe that programming is increasingly an important skill to have in the modern world. But as parents, we do not wish to encourage children to spend their time playing videogames, which we believe to be addictive and detrimental to a child’s development, especially when overused.

Rather, we are using a game engine to present a virtual world with precisely the necessary elements to put software engineering principles into practice, without any of the distractions and game elements you would normally find in a game like minecraft; AdaBots does not contain any sort of monsters, health, potions, magic, weaponry or violence. Unlike most similar systems for teaching programming, AdaBots is a safe environment for children which we believe will serve as a gateway into the world of software engineering.

With videogames, you are a player who must perform tricks, to be rewarded or punished according to the game rules. In contrast, computer programming is all about you telling the computer what to do, and AdaBots hands you the tools, while teaching the same skills and thought processes needed to excel at programming in the real world.

What is a turtle and what can it do?

Your own robot; it does exactly what you say.

Turtles are our helpers that fly around the virtual world of AdaBots, listening precisely to the instructions given. They never get tired or bored, and always do exactly what you have told them to do.

Turtles can only see the blocks immediately in front, above, and below the space they occupy; check whether the block is occupied by a resource, instantly dig the resource using the pickaxe (retaining the block in the turtle’s inventory), or place a block from any of sixteen inventory slots. They can also turn left or right, and move: up, down, forwards and back - these simple building blocks can be combined infinitely to shape the world as you see fit.

We recommend printing the Application Programming Interface (API) cheatsheet reference and keeping it by your side as you progress through AdaBots challenges.

Why Ada?

Because Ada is great.

Even if we only count programming languages that have seen significant usage, there are over 500 programming languages, all with unique strengths and weaknesses. Here’s why we believe Ada is the best choice for teaching programming.

A well designed, modern language

Ada is a modern, robust programming language, designed to prevent human error. The latest Ada2022 standard enjoys full and open source compiler support, and was developed according to ISO/IEC standard 8652:2012(E) by the JTC1/SC 22, the international standardization subcommittee for programming languages. It was designed from the ground up for long-lived, large, complex and safety critical systems, and to this day has full backwards compatibility with the standard first drawn up in 1983. It is the first choice for software engineers in avionics, train and airplane control systems, and in any security / safety critical fields.

Read more on the Ada wikipedia page.

Statically typed, strongly typed

In teaching we have seen a shift from the traditional statically typed, compiler-based languages such as C/C++ and Java, towards new dynamically typed, interpreted languages such as python and javascript. We believe this to be a step in the wrong direction. Like a good friend, the compiler will tell you when you make a mistake, and the GNAT Ada compiler, in particular, is very good at spotting mistakes.

In languages like python and javascript, misspelling a variable name in an assignment statement can silently mean a new, unused variable is created. This is just one example of human error which in Ada will immediately trigger a helpful error message from the compiler, while in other programming languages it leads to lengthy debugging sessions.

But even when comparing with statically typed languages such as C/C++ and Java, Ada has more to offer. In Ada, it is trivial to specify, for each type in use, which ranges are valid - the compiler is then able to verify the validity of all values in use. Ada also does not allow any implicit type conversions; this is something that seasoned programmers need to get used to, but makes for a much more consistent programming environment, and makes mistakes which would otherwise be left until runtime immediately apparent.

There is a more in-depth explanation of the exceptionally strong typing that Ada presents on this Ada Information Clearinghouse page .

A real-world language

programming is real programming; the program you create is a normal, standalone program which just so happens to control bots in a minecraft-like world. This means the exact same code editor, debugger and compiler is used after graduating into the professional software development world, whether you want to do home automation on microcontrollers, or write your own text-based or graphical desktop software; it’s all possible with Ada.

Ada is seeing significant usage worldwide in the high-integrity and safety-critical domains including commercial and military aircraft avionics, air traffic control, railroad systems, and medical devices.

By choosing Ada, we are able to lean on a large community of learning resources. For anyone wishing to dive into Ada quickly and try some code out in the browser, we can recommend learn.adacore.com . However, if you want to gain a firm understanding of the entire Ada language, we recommend John Barnes’ book Programming in Ada 2012 .

Ada is simple

In Ada, different concepts have distinct names and symbols, making it much easier to learn the fundamentals of programming than when using programming languages where imprecise terms are used to mean different things. For example, assignment and comparison are two different symbols in Ada, while most programming languages require the programmer to infer the difference from context.

Subprograms in Ada can be either functions, which return a value, or procedures, which do not return a value. If you try to use a function without storing the return value, this triggers a compiler error, and likewise if you try to use a procedure as a function. Most programming language use these three terms interchangeably. Coupled with the no-implicit-conversions rule, this means that in Ada we can quite simply overload on the return type of subprograms (or the absence thereof); by comparison, the C++ overload resolution and implicit conversion rules frequently trip up experienced programmers, and if we had used a language like python it would be impractical to even discuss the topic.

Ada is a one of very few case-insensitive programming languages; coupled with the fact that code blocks are delimited by the words begin and end, rather than curly braces (C++) or meaningful but invisible indentation (python), this means that you can read a program just the way you would read natural language, and what you hear in your head is equivalent to its actual meaning.

Ada lets us offload a great deal of cognitive load by leaving implementation details to the compiler, such as parameter passing mechanisms, the bit-representation of numerical types and any desired conversions between them, and the checking of values constrained to certain ranges. In other languages you would need to add external tooling and boilerplate code in order to do these tasks that are built in to the Ada language.

How do I signup for AdaBots?

It’s coming soon.

We are excited to be working on the greatest system in teaching programming to date. With our web-based programming and lessons portal, you will be able to let your children learn independently without needing your supervision; no programming or teaching experience necessary on your part. However, if you are a programmer yourself and you can’t wait for our portal to come online, head over to the installation instructions page; you can install and start using AdaBots for free!