Well, I do enjoy programming...in Ada...and I certainly do NOT find it tiresome!:-)
The idea that someone would enjoy writing "bad C more than good Ada" just boggles my mind. I want my software to work, and work well, with me not having to futz around a lot to get it to that point.
Ada catches a lot of programming errors at compile time, which eliminates a whole class of errors. (BTW, the assertion is sometimes made that if a program written in Ada compiles, it'll probably work. Well, that's bogus, correct compilation of a program written in a strongly typed language simply increases the likelihood of it working more quickly because of the up-front reduction of type and interface mismatch errors.)
Once all the code compiles and links, the run-time system instantly catches additional bugs, such as out-of-range values, null pointers, array overruns, etc., similarly to the way the JVM monitors a Java program's execution. The Ada run-time simply provides more extensive checks (which of course can be disabled as needed).
The end result is that I can churn out working code very fast, code that takes full advantage of Ada's built-in object oriented constructs, generic templates, concurrency, distributed execution, and that works reliably. This way I avoid having to go back and fix badly written code again and again as I add more features and capabilities, instead I get to keep breaking new ground, which I find...enjoyable!
Name one C++ compiler that is certified ANSI/ISO C++ compliant.
(Hint: Take a look at http://www.eds-conform.com/ValProdList.html. EDS is the company chartered by the US National Institute of Standards and Technology (NIST) for performing programming language conformance assessments.)
The first Ada validation certificate was earned by "Ada/Ed", which in truth was an Ada interpreter...and verrrrry sloooooowwwwww.
The first actual compiler validations were for a Rolm/Data General box and a Western Digital system.
In 1984, TeleSoft released their compiler, which was a piece of crap, and DEC released theirs I believe in 1985. The DEC compiler was the first production quality compiler I know of, and the beta of that may have been available in late 1984. I worked on a team that worked with that beta version (due to non-disclosure, we had to call it "compiler X") and even in beta it blew away the TeleSoft compiler.
By 1986-7 there were several Ada compilers around for various platforms suitable for doing serious work.
Ok, name one commercial ADA compiler that implements the FULL specification. And by full, I don't mean "just the essentials". I -mean- the full specification. Every type, every run-time binding, every instruction, every form of inheritance, -everything-.
Okay. Ada Core Technology's GNAT. Implements the core language and all Annexes.
It's Open Source, get yerself a ready-to-install version for Linux from http://www.gnuada.org/alt.html and check it out!
Re:Just answered your own question
on
Why Not Ada?
·
· Score: 1
I know more people who write stuff in Forth(1), Objective C(3 or 4) and PostScript(2), than Ada (0).
I know more people who write stuff in Ada (dozens) than Forth(0), Objective C(0), Postscript(0), Eiffel(0), or Smalltalk(0):-)
Actually, Ada has had a stable definition of packages and generics (namespaces and templates) since 1983. Ada 95 extended their capabilities a bit, but the original functionality was not altered.
Tasking, by the way, which is Ada's fully integrated concurrency construct, has also existed in full-form since 1983. A lightweight additional construct, "protected types", was added in Ada 95.
There is a popular misconception that Ada was "designed by committee". This totally false. Just as C had K&R, C++ had Stroustrop, Eiffel had Meyer, Ada 83 had Jean Ichbian, and Ada 95 had Tucker Taft.
These language architects had final say over the architecture of their languages, and worked to ensure a consistent balance of features, clarity, and useability.
It would be interesting to see a list of the "too many features" that have made Ada a "bloated language".
Packages (comparable to namespaces)? Generics (templates)? Tasking (threads)? Object oriented constructs? What "simple task" does it require "way too much code to perform"?
The Ada programming languages has no requirement regarding the number of spaces of indentation in a block. The compiler you are likely using, GNAT, has options that enable various style checks such as the one you cite, and the use of which appears to have been mandated by your instructor.
Yes, pointers are more of an ordeal in Ada because pointers are a very powerful feature that are a major source of bugs. Ada attempts to flush out such bugs earlier by forcing the developer to understand what they expect to do with the pointer, specify it accordingly, and then enforce those expectations.
Re:Just answered your own question
on
Why Not Ada?
·
· Score: 1
The statement that "Ada is rarely(if ever) taught" is patently untrue. Scores of universities teach Ada as both a foundational language and in advanced courses. See http://www.seas.gwu.edu/~mfeldman/ada-foundation.h tml.
Ada operates in at least following nuclear facilities: Doel nuclear power plant, Belgium Hinkley Nuclear Power Station, Somerset, England US Dept. of Energy National Ignition Facility Westinghouse Czech Nuclear Shutdown System
Well, I do enjoy programming...in Ada...and I certainly do NOT find it tiresome! :-)
The idea that someone would enjoy writing "bad C more than good Ada" just boggles my mind. I want my software to work, and work well, with me not having to futz around a lot to get it to that point.
Ada catches a lot of programming errors at compile time, which eliminates a whole class of errors. (BTW, the assertion is sometimes made that if a program written in Ada compiles, it'll probably work. Well, that's bogus, correct compilation of a program written in a strongly typed language simply increases the likelihood of it working more quickly because of the up-front reduction of type and interface mismatch errors.)
Once all the code compiles and links, the run-time system instantly catches additional bugs, such as out-of-range values, null pointers, array overruns, etc., similarly to the way the JVM monitors a Java program's execution. The Ada run-time simply provides more extensive checks (which of course can be disabled as needed).
The end result is that I can churn out working code very fast, code that takes full advantage of Ada's built-in object oriented constructs, generic templates, concurrency, distributed execution, and that works reliably. This way I avoid having to go back and fix badly written code again and again as I add more features and capabilities, instead I get to keep breaking new ground, which I find...enjoyable!
Marc
Oh, by the way, one more thing...
Name one C++ compiler that is certified ANSI/ISO C++ compliant.
(Hint: Take a look at http://www.eds-conform.com/ValProdList.html. EDS is the company chartered by the US National Institute of Standards and Technology (NIST) for performing programming language conformance assessments.)
The first Ada validation certificate was earned by "Ada/Ed", which in truth was an Ada interpreter...and verrrrry sloooooowwwwww.
The first actual compiler validations were for a Rolm/Data General box and a Western Digital system.
In 1984, TeleSoft released their compiler, which was a piece of crap, and DEC released theirs I believe in 1985. The DEC compiler was the first production quality compiler I know of, and the beta of that may have been available in late 1984. I worked on a team that worked with that beta version (due to non-disclosure, we had to call it "compiler X") and even in beta it blew away the TeleSoft compiler.
By 1986-7 there were several Ada compilers around for various platforms suitable for doing serious work.
Ok, name one commercial ADA compiler that implements the FULL specification. And by full, I don't mean "just the essentials". I -mean- the full specification. Every type, every run-time binding, every instruction, every form of inheritance, -everything-.
Okay. Ada Core Technology's GNAT. Implements the core language and all Annexes.
It's Open Source, get yerself a ready-to-install version for Linux from http://www.gnuada.org/alt.html and check it out!
I know more people who write stuff in Forth(1), Objective C(3 or 4) and PostScript(2), than Ada (0).
:-)
I know more people who write stuff in Ada (dozens) than Forth(0), Objective C(0), Postscript(0), Eiffel(0), or Smalltalk(0)
Actually, Ada has had a stable definition of packages and generics (namespaces and templates) since 1983. Ada 95 extended their capabilities a bit, but the original functionality was not altered.
Tasking, by the way, which is Ada's fully integrated concurrency construct, has also existed in full-form since 1983. A lightweight additional construct, "protected types", was added in Ada 95.
There is a popular misconception that Ada was "designed by committee". This totally false. Just as C had K&R, C++ had Stroustrop, Eiffel had Meyer, Ada 83 had Jean Ichbian, and Ada 95 had Tucker Taft.
/* Do something */
These language architects had final say over the architecture of their languages, and worked to ensure a consistent balance of features, clarity, and useability.
It would be interesting to see a list of the "too many features" that have made Ada a "bloated language".
Packages (comparable to namespaces)?
Generics (templates)?
Tasking (threads)?
Object oriented constructs?
What "simple task" does it require "way too much code to perform"?
Let's compare strings:
C:
if (strcmp(str1, str2) == 0) {
}
Ada:
if str1 = str2 then
-- Do something
end if;
The Ada programming languages has no requirement regarding the number of spaces of indentation in a block. The compiler you are likely using, GNAT, has options that enable various style checks such as the one you cite, and the use of which appears to have been mandated by your instructor.
Yes, pointers are more of an ordeal in Ada because pointers are a very powerful feature that are a major source of bugs. Ada attempts to flush out such bugs earlier by forcing the developer to understand what they expect to do with the pointer, specify it accordingly, and then enforce those expectations.
The statement that "Ada is rarely(if ever) taught" is patently untrue. Scores of universities teach Ada as both a foundational language and in advanced courses. See http://www.seas.gwu.edu/~mfeldman/ada-foundation.h tml.
I hope this was a sarcastic comment :-)
m ary.html)
Ada operates in at least following nuclear facilities:
Doel nuclear power plant, Belgium
Hinkley Nuclear Power Station, Somerset, England
US Dept. of Energy National Ignition Facility
Westinghouse Czech Nuclear Shutdown System
(source: http://www.seas.gwu.edu/~mfeldman/ada-project-sum
It did not "[take] years to create a certified version of the compiler."
h tm#milestones)
ANSI/MIL-STD 1815A published -- FEB 83
First 1815A validation -- APR 83
(source: http://www.adaic.org/pol-hist/history/holwg-93/8.