Ada 2012 Language Approved As Standard By ISO
hypnosec writes "The Ada Resource Association (ARA) announced that the Ada 2012 programming language has been approved and published as a standard by the International Organization for Standardization (ISO). Announcing the development, ARA and Ada-Europe said that the new version brings with it the concept of contract-based programming, Concurrency and Multicore Support, Increased Expressiveness and Container Enhancements.'"
I click on the contract based programming link to know what the fuss is about and I get landed on a separate press release? Wtf?
Anybody here using Ada, or has used Ada? Not implying anything, but genuinely interested. Isn't Ada one of the most crazy complex algorithm languages ever invented? Just my impression.
When all you have is a hammer, every problem starts to look like a thumb.
Is Beginning Every Word With A Capital Letter Mandatory In Ada?
http://en.wikibooks.org/wiki/Ada_Programming/Ada_2012
The G
cricket ... crickets ... crickets
Just as well they approved it: they only had ten days left!
It is always good to know that the language designed by committee has in fact passed the committee.
Design by Contract is a fine idea but it really would be nice if it was extended from expression
to something a little more useful like Z. There are a few systems out there that
support forall, exists, before and after state and thus move this into being really useful.
Well, that's all the Ada programmers accounted for.
I am anarch of all I survey.
Microsoft bought off all the national bodies of ISO when they ramrodded through their undocumented and impossible to implement "document standard". If ISO knew anything about business processes or standards development they could have prevented that panel-stuffing result. And yet one of the standards they set is business processes for just this situation. I don't trust them any more and I don't think you should either. They are too easily swayed by corporate interests.
Ada's cool in the esoteric nerd sort of way. Like SNOBOL or APL. I shared a girlfriend with one of the Strawman implementors of ADA and knew him moderately well. She was hot (she's probably a great-grandmother now) and he was cool, it was fun, and I'm still fond of ADA. I'm not fond of overloading operators and keywords in an RTOS in the practical sense, but as an artistic exploration of tech potentials I'm all for it as long as you don't make it the OS/language for a drone or something similar. I've never been a fan of garbage collection. It solved some problems I'd rather work around. Sadly Ada went rather overboard in the dynamic re-purposing of symbols, resulting in some unfortunate but predictable side-effects and plain code that had indeterminate use based on context.
If you can't count on a word symbol to mean a quite specific and limited thing, you can't anticipate what your app will do. In my own mind, that was the problem with ADA. By subtexting and repurposing everyting - including the "=" operator and keywords like "if" they created a thing that was useful for mapping and mimicking human intellectual processes but not for doing useful stuff.
Help stamp out iliturcy.
Charles? Anyone?
I shared a girlfriend with one of the Strawman implementors of ADA and knew him moderately well. She was hot (she's probably a great-grandmother now) and he was cool, ...
So, tell us more ....
Keywords do have well defined behaviors, so I don't see where "repurposing everything - including the ""="" operator and keywords like ""if""" happened.
And you actually do need to permit overloading of operators (otherwise you end up with nasty code [ie. in complex arithmetic]).
I've never been a fan of garbage collection. It solved some problems I'd rather work around.
Garbage collection is not required by Ada, although implementations can offer it. Interestingly, Ada does allow user-defined memory allocators to be used.
Sadly Ada went rather overboard in the dynamic re-purposing of symbols, resulting in some unfortunate but predictable side-effects and plain code that had indeterminate use based on context.
If you can't count on a word symbol to mean a quite specific and limited thing, you can't anticipate what your app will do. In my own mind, that was the problem with ADA. By subtexting and repurposing everyting - including the "=" operator and keywords like "if" they created a thing that was useful for mapping and mimicking human intellectual processes but not for doing useful stuff.
All the major languages have operator overloading these days. Somehow people manage...
Ada is syntactically similar to Pascal. Often used in aerospace applications where a single error can kill 400 people. Think flight control software interpreting pilot input and translating into control surface movements.
Just because it does not "look" like C++, Java or VBA means nothing.
Those who are in the know have lots of respect for Ada, because it epitomizes what is good about software engineering, as opposed to "bug-ridden crapola which is weekly updated".
The F35 is one of the worst-directed projects in history and their decision to "go C++" is one facet of management incompetence.
All the major languages have operator overloading these days.
Right, like Java... oh wait!
Operator overloading reached its peak in the mid-80s at the time of Ada and C++. Since then most languages have pulled back from there and today it is considered mostly a source of bugs and heavily discouraged even in languages that allow it, e.g. Python.
Used it for a fighter jet's avionics software back in the day.
Operator overloading is not "discouraged" in Python. Rather, you're encouraged to use it to make your objects "Pythonic" (i.e. support a similar range of features to a built-in python object) and to make sure the semantics are basically the same. Eliminating operator overloading from languages entirely is one of the things that makes Java suck so much and so frickin' verbose, in my opinion.
"He who would learn astronomy, and other recondite arts, let him go elsewhere. " -- John Calvin, commenting on Genesis 1
No.
Help stamp out iliturcy.
Do you know how I know you're not an Ada programmer?
Help stamp out iliturcy.
BTW: This interaction is part of how I came to claim "symbolset" as my nym.
Help stamp out iliturcy.
You guys are so far off the Ada mark that you might as well be choking your chicken at the A&P. Would you please learn some little thing about the subject?
Help stamp out iliturcy.
i.e. support a similar range of features to a built-in python object
Yes, I should have said something like "heavily restricted to straightforward overloads" such as straightforward extensions comparators and iterators with no unexpected side effects. Any other use is heavily discouraged.
You are the typical self-aggrandizing blowhard who walks in the middle of a conversation and blurts out "you know nothing about the subject", without giving any evidence of yourself having any knowledge in the subject, thus proving that either you have none or you lack the mental capacity to put it in words and express it in a meaningful way.
Plus the posting you responded to is not even talking about Ada, but about operator overloading in other languages.
So all around an epic fail for you. Now crawl back under your rock until you are spoken to.
VHDL (a hardware description language) is based on ADA; I never coded ADA but knowing VHDL quite well I felt right at home reading ADA code.
I wonder though how far the two languages went apart though. The first version of VHDL standard was released in 87 and then upgraded in 93 and 2002 (these were minor upgrades). A new VHDL standard with a slew of new features such as generic functions was released in 2008. I wonder if ADA supports them?
Basically, VHDL had a reputation for being dead even before 2008 version came out. The only simulator vendor that fully embraced is Aldec as far as I know.
What's the difference between this and using the existing assert mechanism in C, Python, or the like? Is it able to perform some sort of automated reasoning on require and ensure between functions that allows some assertions to be optimized out?
Yes, people are using Ada, in fact, it's been making a quiet comeback. Ada is the #16 most popular language according to the TIOBE programming language survey of November and December 2012, an increase from #19 in November 2011. Keller reports that by 2000 Ada use had decreased and then increased again. It's not huge compared to C or Java, of course; its use is focused in certain domains. In certain communities, such as aviation software, it continues to be a popular language and has been credited with helping to produce high-quality software within time and budget.
Historically, Ada was developed by the Department of Defense (DoD), and the DoD tried to make it the one and only universal language . An NRC report on Ada talks about this. Fundamentally, trying to make one language do everything was a bad idea, and predictably failed; there is still no one language that can be all things to all people, even many years later.
Ada isn't a complex language by today's standards, but it has a lot of "pickiness" that means you have to obey more rules. Is that a good thing? Well, you first have to understand what it was designed for - and then decide if that design is what you want.
Ada focuses on software that needs high reliability and yet absolutely no compromise of performance. If reliability isn't really all that important to you, or you can give up a lot of performance, then Ada's trade-offs may not work for you. For reliability, it has a strong typing system, and you have to use generics (etc.) instead of just saying "shut up and trust me" a la C. For performance, it doesn't mandate automatic garbage collection (as compared to Java or Python). Ada shines when you're writing programs that will could un-intentionally kill people if the program is wrong or takes too long. Think airplane flight controls, train systems, medical systems, that sort of thing. A lot of Slashdot readers have never tried to write software that could accidentally kill people, and thus can't understand why you might want a "picky" language like Ada. If your response to "it has a bug" is just "install this patch" maybe another language would be fine. But when mistakes can kill, having a language that helps prevent them can be literally a lifesaver.
- David A. Wheeler (see my Secure Programming HOWTO)
No, I don't know how you "know" that. However, I happen to know that he IS an Ada programmer.
I am so tired of runtime failure. I am tired of feeling that which has been labeled as 'shipped code' was always shipped too early, and that there's some embarrassing bug that's going to come back and bite me(us) on the ass. Perhaps programming in Ada would allow me to sleep well at night, knowing that I didn't prematurely ship code. Sure, there's still the problems of fundamental logic errors based upon the programmer(s) misunderstanding the problem, but knowing that we're clever idiots is better than being an idiotic idiot.
I keep on seeing security fails, such as recent one(s) in Android, makes me wary. I trust my old 5 lb desk phone, not the sleek gadget which has the misnomer 'smartphone'. I'd like to have code that is as solid and reliable as my old 5 lb desk phone.
It would have looked like Ada95 or Ada05 or Ada2012
General Relativity: Space-time tells matter where to go; Matter tells space-time what shape to be.
His GF cheated on him with a frenchman. He still probably still can't come to grips with that and claims it was consensual.
Are you sure you are not thinking of something like Lisp? Ada doesn't have garbage collection. And a drone would be an ideal use for Ada- it was designed for high reliability military systems.
ANU taught this language as part of concurrent and distributed systems. Ada is a excellent choice for concurrent and distributed systems or systems that require a high degree of reliability as it provides compiler support for these programming problems.
Sadly too many undergrads had trouble learning a new language (i thought good programmers could learn new languages easily), so ANU decided to teach the course in Java.
ANU the degree factory.
Microsoft bought off all the national bodies of ISO when they ramrodded through their undocumented and impossible to implement "document standard".
Cite please. I'm not asking for a check number, just someone else even making this accusation instead of the usual idiotic assumption that everyone in the standards bodies is all clamoring for a handout from Microsoft.
And didn't the failure of Algol 68 lead to Niklaus Wirth's Pascal, as a simpler, better Algol 60? And for whatever Pascal's limitations (Hello! Is there a String type? Is anyone even home?), Pascal developed a reputation of being really simple to parse, which resulted in its adoption by Anders Hejlsberg, er, I mean Phillipe Kahn in Turbo Pascal? And hadn't Wirth by some point admitted that Turbo Pascal had become the "reference dialect" of Pascal?
And when the U.S. Department of Defense held its competition for One Compiler to Rule Them All, they gave the prize to a French dude named Jean Ichbah, who gave us Ada, which was essentially Pascal with (separately compiled) modules, although Pascal compiled so fast, its fanboys claimed you didn't need separate module compilation and linking? And didn't Wirth come out with Modula, Pascal "done right" with modules, but no one would use it because it was all Bondage and Discipline to an extreme? And didn't Kahn (er, I mean Hejlsberg) come out with Turbo Pascal 4, a much friendlier Pascal with Modules?
And wasn't Ada immediately disrespected by the Sons of Algol (Djkstra, Wirth) as being a committee-designed Abomination? And wasn't it for the longest time that no one had a compiler for it, which called into question the ambigious semantics and whether programs in Ada would ever be "theorem proof" reliable?
And hasn't C-style syntax pretty much won out over Algol 60-derived syntax (Pascal, Modula, Ada)? And that everybody who is into "Bondage and Discipline" programming in this day and age (strict types, good compile time and run time error checking) pretty much embraced Java?
So I guess Ada has its "community" of "dudes with crew cuts, clean shaven, and with pocket protectors working for Defense contractors", does Ada have any "street cred" with the academic "software theorem proof" or "software reliability" communities?
This is so well documented that your denial is absurd. There are numerous online histories of this whole sordid mess. Here is one: http://www.groklaw.net/staticpages/index.php?page=20071217022527429
Help stamp out iliturcy.
1. Ada lets me say clearly what my code is supposed to be doing in the code itself; I don't have to write coding tricks, I don't have to write comments that explain what the code really does. I can write code that I can read a year from now or some other coder can read ten years from now and we'll both know what it does. Sure, I can still write obscure, obfusticated code, as can anyone who doesn't care about the long term, but it lets me do it right if I want to. Other languages fall short of this.
2. Ada turned out to be a language for software engineers, not coders. The two guys who were its chief architects, Jean Ichbiah of Honeywell and Tucker Taft of AdaCore, were/are consummate software engineers (Jean did the first version, Ada83, died about 5 years ago; Tucker did Ada95, 2005, and 2012). In general, the more educated and experienced you are as a software engineer, the more you'll like Ada.
3. In my opinion, the military use of Ada failed because good Ada programmers are not psychologically suited to work for big defense contractors. Likewise, big defense contractors don't want to pay people who write code the kind of money that good Ada programmers are worth. So they hire five cheap coders instead and it takes them seven times as long to do the coding. (It's a good thing that funding for Defense is unlimited.)
4. Ada also suffered from the COTS (Commercial Off The Shelf) fad that swept the military in the 90's. If any coding was needed and possible, it tended to be Visual Basic or C++. The closest we got was PL/SQL (Ada-derived).
Will Ada ever make a come-back? Probably not; the urban legends about it being complex, designed by a committee, and militaristic will overcome its ability to be more reliable and cheaper over the life-cycle. I can only hope that all the life-critical software I encounter -- airplanes, medical equipment, my 2021 self-driving Toyota -- is coded in Ada.
I'm on a contract that still uses Ada for part of its function; pretty much the only reason is because the government won't pay to have it rewritten in a new language. It's amazing how few engineers still really understand most of it though....
Ferret
Sic gorgiamus allos subjectatos nunc
Welcome to every standards body in the world where it's all about politics and not standards-making.
Take say, the 3GPP, responsible for a lot of mobile telephony standards. It's an old boy's club. Why do you think Apple's minor contribution created so much chaos? Basically the telecoms wanted it, RIM, Motorola, Nokia didn't. Basically just a political standoff for the most part - those who are making money backed Apple, those who were suffering because of it opposed it.
Or say, the IEEE. It's a process of getting your patent in so everyone implementing Wi-Fi or Ethernet will have to pay you.
Ditto every other standards body out there, whether it's MPEG, JPEG, DVD Forum, Blu-Ray Association, etc. Heck, I'm fairly certain the W3C isn't immune either (Google, Microsoft, Mozilla, Apple, etc., hell, remember trying to get video working and no one could agree on a codec?).
A standard is just a way for patent owners to try to finangle their way in, because getting FRAND money is well worth it. It's all about political connections - you scratch my back, I'll scratch yours, backroom deals, etc. And we all get stuck with the results.
Remember who populates these standards bodies - given the cost of entry is often in the 6 to 7 digits (the lower one is just to use the standard, if you want to participate in making them, it's $$$$ and always has been).
She did leave me for a frenchman. How did you know?
Help stamp out iliturcy.
I "know" that because in Ada not only can you overload the "=" operator, but you can change the flow of interpretation from left-to-right to Reverse Polish and back again - in the middle of a formula.
Help stamp out iliturcy.
BTW: Programming in Ada is like "Australian rules football". Changing the rules is part of the game.
Help stamp out iliturcy.
I "know" that because in Ada not only can you overload the "=" operator, but you can change the flow of interpretation from left-to-right to Reverse Polish and back again - in the middle of a formula.
Please point to a section of the Ada reference manual that allows the expression syntax to be changed. Ada's expression grammar doesn't allow for anything of the sort.
(Yes, you can overload operators. So what? Operators are just special function names. Without that, you'd have to use Equal(A, B) instead, which is no more readable or less ambiguous.)
(CAPTCHA: nonsense)
today it is considered mostly a source of bugs
[Citation Needed]
Having the facility to overload operators isn't a source of bigs; abusing that facility is a source of bugs.
Not everything that can be measured matters; Not everything that matters can be measured.
Remember who populates these standards bodies
Me, amongst others. I'm a member of a National Body delegation to an ISO committee.
given the cost of entry is often in the 6 to 7 digits (the lower one is just to use the standard, if you want to participate in making them, it's $$$$ and always has been)
This is flat out wrong; neither I not my employer pay even a single cent to participate in making ISO standards.
Not everything that can be measured matters; Not everything that matters can be measured.
abusing that facility is a source of bugs.
That is a vacuous statement. You are defining "non-abusing" as all the ones that do not create bugs and as abusing the ones that do. Duh!
No, I define "abusing" as doing things like overloading an addition operator which doesn't perform an additive operation.
(Which would be just as abusive if you used a non-operator function with a misleading name).
Can you provide an example which is non-abusive, but is a source of bugs? Or are we just expected to accept the veracity of your unsubstantiated claim that "today it is considered mostly a source of bugs"?
Not everything that can be measured matters; Not everything that matters can be measured.
I define "abusing" as doing things like overloading an addition operator which doesn't perform an additive operation.
There are other issues, such as side effects. Say if I add/merge two complex data structures or assign them does it create deep copies through and through or does it creates a new reference to the object?
It also makes errors harder to catch, since it weakens the type signatures of the overloaded functions.
Or are we just expected to accept the veracity of your unsubstantiated claim that "today it is considered mostly a source of bugs"?
No, I expect you to already know this. Just like you to know that there is such a thing as Java, without me having to give a citation.