In making your choice of language it is worth taking account of the following list of considerations.
Ada is the language used to write "Life Critical" air traffic control, military and railway software. It was also used to write the web-server serving this website and many others! It has a long track record of reliability yet it is no harder to learn than any other language. Take a look at AdaWorks.it where you can find detailed Ada tutorials for Linux and Ada tutorials for Mac
With Rust - "Why Rust was the best thing that could have happened to Ada".
You can run small Ada programs online at JDoodle.
Here is a simple program you can run to find the occurences of the word "Mouse" in a part of the story of the town mouse and the country mouse. You could use the same program for finding occurences of a particular codon in a DNA sequence if you were a biologist, so this little program is not just about fairy stories, it is genuinly useful example code that you can run at Tutorials Point.
If you copy this program into an intelligent editor it will highlight the syntax clearly showing the commands and variables etc. in different colours. This makes things a lot clearer.
These programs are not explained here as if you look at one of the many tutorials for the language you will soon start to see what is going on. This program is here just to illustrate the language.
with Ada.Text_IO; use Ada.Text_IO;
procedure Main is
--Declare a function to find pSubtext in pText from pIndex.
function findIndex(pText:in out String; pSubtext:in out String; pIndex:Integer) return Integer is
i:Integer:=pIndex; --Declare an integer as an index to pText.
begin
while i<=pText'Length-pSubtext'Length+1 loop
if pText(i..i+pSubtext'Length-1)=pSubtext then return i; end if;
i:=i+1;
end loop;
return 0; -- 0 is used to indicate that nothing more was found
end findIndex;
--Declare a string for new lines.
NewLine :String:=(Character'Val(13), Character'Val(10)); --Declare this new line string to use in Put_Line
--Declare two arrays of characters, mySubtext to search for in myText.
mySubtext :String := "Mouse";
myText :String := "A Town Mouse once visited a relative who lived in the country. For lunch the Country Mouse served wheat stalks, roots, and acorns, with a dash of cold water for drink. The Town Mouse ate very sparingly, nibbling a little of this and a little of that, and by her manner making it very plain that she ate the simple food only to be polite. After the meal the friends had a long talk, or rather the Town Mouse talked about her life in the city while the Country Mouse listened. They then went to bed in a cozy nest in the hedgerow and slept in quiet and comfort until morning. In her sleep the Country Mouse dreamed she was a Town Mouse with all the luxuries and delights of city life that her friend had described for her. So the next day when the Town Mouse asked the Country Mouse to go home with her to the city, she gladly said yes. Bye Mouse";
i : Integer; --Declare an integer as an index to the position in the String T.
c : Integer:=0; --Declare an integer to count with and set it to 0.
begin -- Begin the Main code
Put_Line ("Find the position of all occurences of '" & mySubtext & "'" & NewLine);
Put_Line ("in '" & myText & "'" & NewLine);
Put_Line ("Note: The first character is position 1." & NewLine);
i := 1; --Set the index to first character of myText for the loop.
loop
i := findIndex(myText, mySubtext, i); --Call findIndex to give the index of the next mySubtext in myText at or after index i.
if i=0 then exit; end if; -- 0 is used to indicate that nothing more was found - so finish while loop
Put_Line ("Found instance of '" & mySubtext & "' at position: " & Integer'Image (i));
c:=c+1; --Add 1 to the count.
i:=i+1; --Set the index one more than the last match.
end loop;
Put_Line (NewLine & "Found '" & mySubtext & "' " & Integer'Image (c) & " times in this text.");
end Main;