AMA: A member of the ARG, the standardization group for ISO/IEC 8652

ISO 8652 is the Ada programming language.

Ada was developed in the late 70s/early 80s in response to the DoD's need for a standardized language for all its projects. Due to these requirements, Ada was designed with three overriding concerns: program reliability and maintenance, programming as a human activity, and efficiency.

Right now the ARG is adding some really nice lightweight-parallel capabilities in addition to refining the standard libraries with things like the new "Nonblocking" and "Global" aspects to allow more static detection and verification than is now doable.

I'm actually the newest member, so not nearly as intimately familiar as Randy or Tucker, but I'd be glad to answer questions.

Attached: adamascot[1].png (1553x1685, 196K)

Other urls found in this thread:

ada-auth.org/arm.html
resources.sei.cmu.edu/asset_files/TechnicalReport/1988_005_001_15650.pdf
pnyf.inf.elte.hu/kto/oktatas/ada/books/ase.pdf
adapower.com/pdfs/AdaDistilled07-27-2003.pdf
faculty.cs.wwu.edu/reedyc/AdaResources/bookhtml/contents.htm
web.archive.org/web/20041015075927/http://www.stsc.hill.af.mil:80/crosstalk/2000/08/mccormick.html
accu.org/index.php/journals/272
adacore.com/get-a-quote
adacore.com/gnatpro/toolsuite/ada-web-server
github.com/AdaCore/aws
en.wikibooks.org/wiki/Ada_Programming/Generics
en.wikibooks.org/wiki/Ada_Programming/Object_Orientation
sworthodoxy.blogspot.com/2017/03/comparing-ada-and-high-integrity-c.html
ada-auth.org/
adaic.org/
archive.adaic.com/intro/ada-vs-c/cada_art.html
youtube.com/watch?v=UTqZNujQOlA
ada-auth.org/ais.html
ada-auth.org/cgi-bin/cvsweb.cgi/ai12s/ai12-0119-1.txt?rev=1.19&raw=N
dwheeler.com/steelman/
citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.26.2533&rep=rep1&type=pdf
spectrum.ieee.org/computing/networks/osi-the-internet-that-wasnt
en.wikibooks.org/wiki/Ada_Style_Guide/Programming_Practices
twitter.com/NSFWRedditImage

Why would I use Ada?

Well, personally I use it because it helps me cut down debugging, helps me write correct code, and honestly has a design I find more enjoyable than any other language I've used.

One of the nice things about its type-system is that you can enforce things like DB query-string sanatization.

Package Example is
Type Clean() is private;
Function Create( Data : String ) return Clean;
Function To_String( Data : Clean ) return String;
Private
Type Clean is new String;
Function To_String( Data : Clean ) return String is
( String(Data) );
End Example;

Package Body Example is
Function Create( Data : String ) return Clean is
begin
-- actual sanatization
end Create;
End Example;


The above creates the type "clean" which must be created with "create" because it is an indefinite type, meaning that with "clean" being a sanitation function you are forcing every instance of this type to be sanatized.

Another great reason is if you're doing ANY multithreading. Ada's 'Task' construct is amazingly good for parallelizing logical modules, allowing you to take advantage of multi-core/-CPUs with ease and without ignoring the single-CPU possibility.

>Why would I use Ada?
Let me ask, why WOULDN'T you use Ada?

Ada ISO want become Ada in mainstream language.

Opinions about SPARK as based Ada language.

Ada's been ISO since Ada-95; unlike a lot of ISO standards Ada is freely available.

The Standard's always been free; you can literally download it right now, no strings, no conditions, no legal issues:
ada-auth.org/arm.html

if I want to work in cyberphysical systems should I learn ada or c++?

I love SPARK. While I'm still learning it, provability is a *great* quality. I joined the VASG (VHDL Analysis and Standardization Group) and am considering putting forward a proposal for the next standard to include some stuff that SPARK can use, as I think a fully verified HW and SW system would be a great thing...

As for SPARK itself, it was a brilliant move for them to capitalize on Ada 2012's 'aspects' to allow specification of the properties to prove in the code itself rather than in annotated comments. (this prevents comments/code from becoming out of synch.)

I'm also trying to work on a SPARK verified Ada compiler.

>if I want to work in cyberphysical systems should I learn ada or c++?

Ada is much better for this area because you can encode the qualities of the systems easily and naturally.

-- A motor capable of taking any position within
-- a 0..180 arc, by .001 degree steps.
Type Motor_Steps is delta 0.001 range 0.0.. 180.0;

Bump.

Attached: Desire To Know More.jpg (640x512, 39K)

The reason IMO Ada has never taken off is there is no good IDE support and no good beginners books for it. I recommend some Ada compiler company release a free version of their IDE the same way MS gives away a free version of Visual Studio. You should find a publisher like Oreily to make a easy to understand book for beginners. There is no reason that Ada shouldnt be as popular as Java and C#, its only because Ada only has shitty, boring, long winded books for it.

>The reason IMO Ada has never taken off is there is no good IDE support
That's not EXACTLY true; Ada had the Rational 1000, and while I haven't used it every single person I've talked to who has was amazed by it; sadly it's no more.
(Here's the TR: resources.sei.cmu.edu/asset_files/TechnicalReport/1988_005_001_15650.pdf [92 pages])

GPS is... alright, not bad, per se, but not *good*.

> and no good beginners books for it.
There are a few, but I agree that they're not well known and only a small number:
- Ada for Software Engineers: pnyf.inf.elte.hu/kto/oktatas/ada/books/ase.pdf
- Ada Distilled: adapower.com/pdfs/AdaDistilled07-27-2003.pdf
- Ada 95: The Craft of Object-Oriented Programming: faculty.cs.wwu.edu/reedyc/AdaResources/bookhtml/contents.htm

These are somewhat dated, but free; and a good way to learn the core of the language.

There's also the John Barnes book for the current version which IS spendy, and big, but good.

> I recommend some Ada compiler company release a free version of their IDE the same way MS gives away a free version of Visual Studio.
I'm working on that; I am working on a compiler, and hopefully I can get some help from the local university to do a decent IDE.

> You should find a publisher like Oreily to make a easy to understand book for beginners. There is no reason that Ada shouldnt be as popular as Java and C#, its only because Ada only has shitty, boring, long winded books for it.
I'm working on this as well; but there's only so much time/energy that I have, you know?

No, C++ is better because it's more popular. Programming languages are basically the same, all that matters is getting people to use them.

>> and no good beginners books for it.

>There are a few, but I agree that they're not well known and only a small number:
>- Ada for Software Engineers: pnyf.inf.elte.hu/kto/oktatas/ada/books/ase.pdf
>- Ada Distilled: adapower.com/pdfs/AdaDistilled07-27-2003.pdf
>- Ada 95: The Craft of Object-Oriented Programming: faculty.cs.wwu.edu/reedyc/AdaResources/bookhtml/contents.htm
>These are somewhat dated, but free; and a good way to learn the core of the language.
Ive read some of all 3 of these books, none of them qualify as beginners books, they are meant for industry professionals who want to get up to speed

>There's also the John Barnes book for the current version which IS spendy, and big, but good.
its good as a language reference, not for learning the language

The fact that you recommend all of these books shows how out of touch you and everyone who works with Ada compiler software is with the mainstream software industry. You guys only know how to work on government contracts, you have zero understand of commercial software.

>I'm working on that; I am working on a compiler, and hopefully I can get some help from the local university to do a decent IDE.
good idea, we need another toy IDE to try and support a language that should be used in enterprise software. lets try and make Ada look even more cheap and useless than it already does

Interviewed with Lockheed Martin a while ago for a C++ job and they told me if they extended me an offer they would expect me to pick up Ada before my first day. Why?

Objectively false.

But here's a good reference:
web.archive.org/web/20041015075927/http://www.stsc.hill.af.mil:80/crosstalk/2000/08/mccormick.html

I could dig up more, but I'm fairly sure you wouldn't actually read them.

Because aerospace programming is done in Ada you dumb frogposter.

But Lockheed does a shitload of stuff that has nothing to do with aerospace, which is what I applied and interviewed for. Probably just want someone to help maintain some legacy shit.

Ah, you mean beginner as in "new-to-programming", not "new-to-Ada"; my mistake, I should have paid a bit more attention to what you were saying.

I agree that there aren't any good beginner intro-to-programming Ada books. As I said, I'm working on this, as I've plans to work on one for my 11-year-old nephew.

> good idea, we need another toy IDE to try and support a language that should be used in enterprise software. lets try and make Ada look even more cheap and useless than it already does
I'm not a captain of industry, I have only what few resources I have. I'd like to get the university lab involved [they used to bring in a lot of money, but bad leadership hollowed them out; they're involved in several big projects that could use such a system-wide verification]... plus I think you're under the mistaken idea that I mean Editor+bells&whistles shit as an "IDE". I don't I mean a whole environment that is actually integrated and designed for development. (Akin to the aforementioned R-1000.)

>Interviewed with Lockheed Martin a while ago for a C++ job and they told me if they extended me an offer they would expect me to pick up Ada before my first day. Why?
Because if you know C++ you should know at least the basic ideas behind Ada and pick it up really quick. -- This might be interesting for you: accu.org/index.php/journals/272 (It makes a few [minor] technical mistakes on Ada's generic capabilities, but is a great comparison otherwise.)

I'll give you an extra hint on how to make a good Ada book Check out the Ada course on Pluralsight. Particularly check out the section on arrays and what a good job the guys does demonstrating the immense power that Ada arrays have. I suggested in the forum of that course to the author that he should write a book, and responded he cant find anyone to support him in writing a book...now I see why.

>plus I think you're under the mistaken idea that I mean Editor+bells&whistles shit as an "IDE". I don't I mean a whole environment that is actually integrated and designed for development. (Akin to the aforementioned R-1000.)
there are some languages you can use just with editors, there are some that require IDE's, Ada requires an IDE. I dont expect you to make an IDE, I expect the companies that already make Ada IDE's commercially to release a free community version, it would be in their best interest to do so if they want to expand their market.

>and responded he cant find anyone to support him in writing a book...now I see why.
??
I don't see; this is the first time I've even heard of Pluralsight.

>Ada requires an IDE. I dont expect you to make an IDE, I expect the companies that already make Ada IDE's commercially to release a free community version, it would be in their best interest to do so if they want to expand their market.
I am actually acutely aware of this problem; it essentially is one of the points of contention between AdaCore and the Ada community. (Right now AdaCore is the only real free Ada implementation game in town; there's FSF GNAT, but there's commonality between the two.) -- Part of this is where I'd like to put my SPARK verified-compiler to work, but it's a lot of work and I need help to actually get it done.

>Ada requires an IDE
No it doesn't. It was designed to need no such thing.

Also, good thread OP.

bamp

What language features provide reliability?

As a junior web dev, looking to get into Go and C++, why would I ever use this or SPARK? And from what I gathered on Wikipedia, this is more often used in Aerospace/defense; is there any reason/way I could use this in say the server side? (I'm still very much a beginner.)

Also on the official website, for ada, they offer pricing quotes
>adacore.com/get-a-quote
I thought programming languages are free?

>free community version
If it's not open source, only drones will use it. Ada suffers from a lack of presence in the BSD and GNU/Linux world.

AdaCore provides services (e.g. porting the GNAT toolchain to weird targets, certifying software, consulting...). You pay AdaCore to work on something, you don't buy their products.

t. AdaCore employee.

>People with jobs on Jow Forums
wat
>Right now the ARG is adding some really nice lightweight-parallel capabilities in addition to refining the standard libraries with things like the new "Nonblocking" and "Global" aspects to allow more static detection and verification than is now doable.
Seems pretty neat user.
I'm not very familiar with Ada, but how's the C FFI story with Ada?

So if I want to use Ada it's free? Is it of any use to people like me? (web devs, people who want to get into C++/Go) What uses does it have outside of Aerospace/defense?

It's very easy. You just need to write a pragma and your function is exported/imported.

>So if I want to use Ada it's free?
Yep, completely free. Just grab GNAT from your package manager and you're done.

>Is it of any use to people like me? (web devs, people who want to get into C++/Go) What uses does it have outside of Aerospace/defense?
I don't want to waste my time finding it again but I once read a study that explained that Ada software had almost no defects, while software written in other languages had tons. In my opinion, this means that if you don't want to spend lots of time debugging your software, you should use Ada. However, I'll willingly admit that writing something in Ada can be slower than prototyping something in PHP. I guess which language you're going to use depends a lot on what the software is going to be. If it's something that's going to be thrown away in six months, use PHP. If it's still going to be used in 20 years, use Ada.

> I once read a study that explained that Ada software had almost no defects, while software written in other languages had tons.
Thank you for the explanation, if this is the case, I can see why the DoD developed it. How would i use this say on the back end of a website like Jow Forums/YouTube/Facebook?

>It's very easy. You just need to write a pragma and your function is exported/imported.
Sounds good. I forgot to ask, but I'm going to guess that linking external libraries is just as easy.
Might give it a go and port some of my personal meme utilities.

Ada is only for SJW snowflakes as per their own admission.

>How would i use this say on the back end of a website like Jow Forums/YouTube/Facebook?

AdaCore makes an Ada web server for backend web programming
adacore.com/gnatpro/toolsuite/ada-web-server

Use AWS: github.com/AdaCore/aws
Fun fact: we used the AWS name before amazon started using it.

You're probably going to be annoyed by some of the limitations Ada forces on you if you only work on toy programs. I think Ada really shines when you have to maintain software.

Noice, thank you.

>You're probably going to be annoyed by some of the limitations Ada forces on you if you only work on toy programs. I think Ada really shines when you have to maintain software.
I'm fairly autistic about this at work, after being burned by myself and others. It'll be alright.

Boy I sure am glad Rust became stable last year. We finally have a safe language to code in.

(it's like Ada hasn't been a thing for 40 years)

What metaprogramming facilities does Ada have?

Ada has templates: en.wikibooks.org/wiki/Ada_Programming/Generics
And also your regular Object-Oriented model: en.wikibooks.org/wiki/Ada_Programming/Object_Orientation

Thanks. On a scale from C to Jai, how practical do you think it is to write an embeddable interpreter? (in particular the host API part)

Attached: 67uj.webm (1456x872, 2.55M)

I'm not very familiar with Ada metaprogramming but I imagine it's closer to C than to Jai. I believe it's as good as C++ templates.

>I believe it's as good as C++ templates.
Well, that's a bummer.

Trying to prove non-trivial properties in it sucks imo - last I tried proving stuff like array permutation required hacks, same with proving stuff on doubles.
Strict typecheck with no implicit coercements, derived types and subtypes are very nice and you miss them in almost any language - it's almost like having refinement types.
That's Rust you're thinking of.

OP HERE.

>Also, good thread OP.
Thanks; sorry about going MIA so suddenly. Internet outage + that pesky need for sleep.

>What language features provide reliability?
A lot of the language was designed to be correct, make common programming errors impossible or hard to do.

For example OR and AND can't be together without being parenthesized - this avoids the precedence errors, especially if you're working in multiple languages.

Things like the optional name on loops/blocks can be used to eliminate cut-and-paste errors during a refactor/move because the syntax will catch if you missed an 'end loop NAME' or 'end NAME', or conversely if you grabbed one too many.

There's a lot more, like the strong typing and subtyping (Subtype Positive is Natural Natural'Succ(Natural'First)..Natural'Last), but sometimes it's little things like this that add up.

>As a junior web dev, looking to get into Go and C++, why would I ever use this or SPARK?

You might not _need_ to go full SPARK, out of the box Ada gives you about the same level of safety as High Integrity C++ -- sworthodoxy.blogspot.com/2017/03/comparing-ada-and-high-integrity-c.html

That said, if you're doing something that needs to be secure using SPARK to prove those properties is a good choice.

> is there any reason/way I could use this in say the server side?

Sure, if you have a need for uptime the go with a provable system on your backend. That removes a *lot* of one big cause of faults, and you can concentrate on the other properties of the system.

>Also on the official website, for ada, they offer pricing quotes
The official websites for Ada aren't AdaCore, the closest you'd get to official websites would be:
(1) ada-auth.org/
(2) adaic.org/

One of the community is doing a bit of a drive to get people into the language and set up
(1) getadanow.com
(2) learnadanow.com
-- while these aren't official, they're nice efforts.

>>free community version
>If it's not open source, only drones will use it. Ada suffers from a lack of presence in the BSD and GNU/Linux world.
I'm trying to work on this; I'm sure I mentioned working on a compiler.

>I'm not very familiar with Ada, but how's the C FFI story with Ada?
FFI in Ada is *easy*:
Function Something( Input : Integer ) Return Integer
with Export, Convention => C;

(You can also use the pragma-version, but I like aspects.)
The standard defines conventions C, COBOL, and FORTRAN in Annex B -- so any implementation w/ Annex B support will have all three -- and some [GNAT does] take advantage of the implementation allowance for more to do things like C_Plus_Plus.

>>Is it of any use to people like me? (web devs, people who want to get into C++/Go) What uses does it have outside of Aerospace/defense?
>I don't want to waste my time finding it again but I once read a study that explained that Ada software had almost no defects, while software written in other languages had tons.
Hm, I am not sure I've come across that one; but here's a very nice study done about development costs of C vs Ada, it's a bit dated and Ada's gotten even better:
archive.adaic.com/intro/ada-vs-c/cada_art.html

>How would i use this say on the back end of a website like Jow Forums/YouTube/Facebook?
Well, you could roll-your-own server, you could use Ada Web Server, you could use Gnoga (gnoga.com).

Is that Ada_Programming wikibook literally the worst thing ever written? I get that its geared towards people who are coming from like ada-95 and stuff but some large majority of the examples just don't compile.

Best Types, Worst Docs: The Lang

I don't know man, I don't actually know how to write Ada. I just work on one of its compilers and we don't use fancy Ada features in it.

>Boy I sure am glad Rust became stable last year. We finally have a safe language to code in.
>(it's like Ada hasn't been a thing for 40 years)
LOL -- Yeah, while it's nice to see the industry get a bit of awareness on the need for safety, it's a bit disappointing they didn't really look into existing solutions.

>What metaprogramming facilities does Ada have?
Ada's generics are pretty great, you can have as formal parameters: generic-packages, functions, procedures, types, and *values*.
Generic
Type Input_Type() is private;
Unity : Input_Type; -- Corresponds to X**0.
with Function "*"(Left, Right: Input_Type) is ;
Function Exponent( Left : Input_Type; Right : Natural);
Function Exponent( Left : Input_Type; Right : Natural) is
Begin
case Right is
when 0 => Return Unity;
when 1 => Return Left;
when 2 => Return Left*Left;
when others =>
declare
Temp : Input_Type renames
Exponent(Left, Right/2);
begin
if Right rem 2 = 1 then
return Temp*Temp * Left;
else
return Temp*Temp;
end if;
end;
End Exponent;


>On a scale from C to Jai, how practical do you think it is to write an embeddable interpreter?
I'm not familiar w/ Jai. By writing an embeddable interpreter do you mean embedding just an interpreter, or an interpreter for Ada itself?

>Trying to prove non-trivial properties in it sucks imo - last I tried proving stuff like array permutation required hacks, same with proving stuff on doubles.
Yeah, I will admit that sometimes it can be a bit of effort for arrays.

Tucker Taft is working in Moz research isn't he? I assumed he touched Rust stuff. Thats got its own massive set of problems but it's pretty zippy.

>>On a scale from C to Jai, how practical do you think it is to write an embeddable interpreter?
>I'm not familiar w/ Jai
Jai has a way to call functions written in Jai at compile time to generate functions/data. It's a pretty cool feature but that doesn't sound like the kind of stuff Ada would have.
youtube.com/watch?v=UTqZNujQOlA

>Jai has a way to call functions written in Jai at compile time to generate functions/data.
Nifty / whatching the vid.
I like some of this guy's philosophies: removing the dependency on a culture of lousy tools.

What does a member of a standard group do?

They're the persons who decide what should and shouldn't go in the next edition of the language.

>What does a member of a standard group do?
>They're the persons who decide what should and shouldn't go in the next edition of the language.
This.
There's a lot of filtering out stuff that's unnecessary, works against the goals of the language (reliability, maintenance, programming as a human activity), or ideas that aren't "polished enough" to implement.

After that, there's lots of work put into the ideas that do make it into the language.

For example, the parallel-block mentioned upthread has an "Ada-Issue" which gives proposed syntax:
parallel_block_statement ::= parallel do handled_sequence_of_statements and handled_sequence_of_statements {and handled_sequence_of_statements} end do;


And examples,
--Example of a parallel block statement:
do
Foo(Z);
and
Bar(X, Y);
and
Put_Line ("Executing Foo and Bar in parallel with Other_Work");
Other_Work;
exception
when Constraint_Error =>
Put_Line ("Constraint Error raised doing Other_Work");
end do;

function Fibonacci (N : Natural) return Natural is
X, Y : Natural;
begin
if N < 2 then
return N;
end if;
parallel
do
X := Fibonacci (N - 2);
and
Y := Fibonacci (N - 1);
end do;
return X + Y;
end Fibonacci;


As well as all the semantics, changes to the standard, and so on; the "feature requests"/'work orders' are called "Ada Issues" and are open to the public: ada-auth.org/ais.html

This particular version of this particular issue is available in AI12-0119-1
here: ada-auth.org/cgi-bin/cvsweb.cgi/ai12s/ai12-0119-1.txt?rev=1.19&raw=N

Who promotes goals of the language? Other members, the community? And how do you settle opposing opinions on issues?

Government mandate used to define the goals, pretty cool start.

>Who promotes goals of the language?
The original goals of the language were defined by the Department of Defense in order to solve an explosion of programming languages (they had literally hundreds of languages in use on different projects) so they set out a set of goals for a standardized language, formed the High Order Language Working Group, examined the languages being used and in existence and none fit the requirements so they decided they needed to have a language created -- they invited the industry and academia to the process -- and eventually came up with the Steelman requirements, which can be found here: dwheeler.com/steelman/

The language had to have some robust features from the outset:
- The ability to do low-level interfacing; as there's no "standard interface" for e.g. a new missile.
- The ability to properly model ranges, in a compact, easy and natural manner.
- The possibility of multiple processors, hence the Task construct.
- The generic system.

> Other members, the community?
Now that HOLWG is gone, yes. Everything is pretty much community driven, though you could consider some companies like Altran and AdaCore to be part of that community.

> And how do you settle opposing opinions on issues?
Well that's what the ARG does, in part. But because the HOLWG set down a good foundation there's a certain aesthetic and philosophy that Ada follows.

For example, if your proposal is "replace 'Begin' with '{'" it's not going to go anywhere; Ada isn't about being quick to type, but instead favors readability over writing.

OTOH, if your proposal is something like "well, there's no good way to handle synchronization across multiple partitions... what about a protected object that works like *THIS*?" -- it'll generate talk and might get through. (IIUC this is what happened with protected objects.)

Bump.

Attached: excited.gif (200x113, 103K)

Ay yo why you can't have a discontinuous range with a static_predicate if it's solvable at compile time?

>Ay yo why you can't have a discontinuous range with a static_predicate if it's solvable at compile time?
You can:
Type Range_Example is new Positive
with Static_Predicate => Range_Example in 1..5 | 7..11;


The thing is that this has some restrictions on it, for example you can't declare an array which has Range_Example as an index. This is done as a nod/concession to efficiency and implementers --

(1) it would be quite burdensome to the implementation to have the index and the static-predicate interact in such a tight manner.

(2) The attributes 'Succ and 'Pred are, troublesome in such a situation. Should Range_Example'Succ(5) be 7? But this breaks compatibility with Range_Example'Base'Succ... there are arguments to be made for it, but then we're getting into territory where TYPE'BASE'attr /= TYPE'Attr and that destroys the subset relationship between Type and Subtype.

>(1) it would be quite burdensome to the implementation to have the index and the static-predicate interact in such a tight manner.
I edited out some context I shouldn't have; this is in relation to arrays and for-loops.

With an Array you'd have to have some way to represent (1..5 => , 7..11 => ) efficiently, but there'd also be the unconstrained case... and what about other discontinuities?

Say:
Subtype Range_2 is Range_Example
with Static_Predicate => Range_2 /= 10;

This gives us a set of {1,2,3,4,5,7,8,9,11} as possible values, and alters the above "aggregate" that would have to be represented as well.

For continuous ranges you could use an array as a lightweight map or function; which is rather nice -- but dealing with discontinuities would be a rather major burden on implementers -- if you need such discontinuities I'd recommend Ada.Containers.*_Maps.

Attached: cat-cool.jpg (432x444, 196K)

I wonder why all the Ada code examples ITT have keywords capitalised. Thought that went against the usual recommended formatting style.

This Is A Free Country And You Can Type Your Capital Letters However You Want

I little of this.

There's a big rant I could go on about the quality of our tools here. It ultimately devolves to the unsuitability of plain, unstructured text as the 'native format' of a program.

Honestly, code-style, "tabs-vs-spaces", and things like non-semantic changes being logged by version-control should be relics of the past, not popping up now -- we had the problem solved 30 years ago: citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.26.2533&rep=rep1&type=pdf

Sorry, everything needs to be reinvented again because you need to justify programmer salaries somehow.

Well, one of the big problems in the industry is that we chose to standardize on absolutely crippled technology -- see: spectrum.ieee.org/computing/networks/osi-the-internet-that-wasnt or pic or the [valid] criticisms of C and C++ -- a lot of it boils down to the "quick and dirty" sort of "mostly works" solutions.

Attached: vunerable-infrastructure.png (1787x921, 145K)

I'm glad we're constantly reinventing everything again. We wouldn't have Linux or Git otherwise.

>We wouldn't have Linux or Git otherwise.
>Git
See the paper in .

Git is interesting, but a poor solution for source-code control compared to what is possible. The paper referenced above is about three decades old and illustrates a method of source-control where the history of the root-node of the DB *IS* the compilable versions of the project [and only the compilable versions]... adding a filter for tests or proofs would be trivially done by hooking into the "merge upward" test.

Sure, and Minix existed and was a better OS than Linux when Linux was created. It doesn't change the fact that today I'm glad that I can use Linux instead of Windows and Git instead of SVN.

(serious answer to your question)
Its standard Ada convention to capitalize variable names
en.wikibooks.org/wiki/Ada_Style_Guide/Programming_Practices

A good editor will auto-capitalize your variable names for you. I recommend trying out ada-mode in emacs as it will auto-capitalize as you type. I say that as someone who has tried emacs and hates it as a general purpose editor, but ada-mode is awesome. ada-mode will automatically run make on all your files and check its consistency with your entire program.

Wasn't talking about identifiers. They're fine. It's the capitalisation of Function, Generic, Begin, End, Type, Subtype, etc that bothers me in a lot of the posted snippets.

TL;DR c is hard because if you use integars for everything you have to remember to do range checks. Also model trains are okay.

An oversimplification, but essentially true. There's a lot of value to being able to encode constraints into your type.

type Window is abstract tagged;
type Window_Pointer is access Window'Class;
subtype Handle is not null Window_Pointer;

procedure Resize( Object : in out Handle; H,W : Positive );
procedure Title ( Object : in out Handle; Text : String );
procedure Move ( Object : in out Handle; X,Y : Positive );
--...
In the bodies for Resize, Title, and Move the programmer _never_ has to check for Object being Null, as this is already done on the call to the subprogram. (And might be optimized away altogether if it's provable it cannot be Null.)