Re:Green vs. Brown Programming Languages
by Jtsummers on Thursday April 22, 2021 @03:06PM
(#26906805)
I keep writing poor tutorials (due to space) of Ada here. Check out https://learn.adacore.com/ for more.
Overall I like Go, but for software engineering in the large Ada, in contrast to Go, has:
Explicit separation of specification and implementation of packages and types making it easier to shard the work out to numerous individuals and teams.
What a package exports is explicit, not the result of case conventions.
package Foo is
procedure Bar(N : in Integer); -- exported
private
procedure Baz(N : out Integer); -- unexported
end Foo;
package body Foo is
-- implementations of the above
end Foo;
Generics from day 1, which enabled a set of collection packages similar to C++'s STL in Ada 2005 among other things.
Tasks, similar to Go's goroutines, but have a lot of additional guarantees and behaviors that have to be made explicit in Go.
Protected objects and protected types which permit you to write code without explicitly acquiring/releases mutexes and using condition variables.
Design-by-contract with SPARK/Ada becoming a proper subset of Ada in Ada 2012.
Overall I like Go, but for software engineering in the large Ada, in contrast to Go, has:
Explicit separation of specification and implementation of packages and types making it easier to shard the work out to numerous individuals and teams.
What a package exports is explicit, not the result of case conventions.
Generics from day 1, which enabled a set of collection packages similar to C++'s STL in Ada 2005 among other things.Tasks, similar to Go's goroutines, but have a lot of additional guarantees and behaviors that have to be made explicit in Go.
Protected objects and protected types which permit you to write code without explicitly acquiring/releases mutexes and using condition variables.
Design-by-contract with SPARK/Ada becoming a proper subset of Ada in Ada 2012.