The Return of Ada 336
Pickens writes "Today when most people refer to Ada it's usually as a cautionary tale. The Defense Department commissioned the programming language in the late 1970s but few programmers used Ada, claiming it was difficult to use. Nonetheless many observers believe the basics of Ada are in place for wider use. Ada's stringency causes more work for programmers, but it will also make the code more secure, Ada enthusiasts say. Last fall, contractor Lockheed Martin delivered an update to ERAM, the Federal Aviation Administration's next-generation flight data air traffic control system — ahead of schedule and under budget, which is something you don't often hear about in government circles. Jeff O'Leary, an FAA software development and acquisition manager who oversaw ERAM, attributed at least part of it to the use of the Ada, used for about half the code in the system."
Skill and not language used? (Score:5, Insightful)
As far as I'm concerned, if a competent team is hired; skilled programmers and developers, then anyone could get it done under-budget and pre-deadline. (yes, yes, military intelligence, oxymoron, but it seems to have worked out with this project)
I think the headline could later read, "the return of C", or any other language in the future if a team manages to finish a project efficiently due to the use of skilled developers.
Not necessarily a praise of language used is necessary, and a congratulatory beer for the team may be advised.
Re:I used ada.... (Score:2, Insightful)
Re:Skill and not language used? (Score:5, Insightful)
Language Magic Bullets (Score:3, Insightful)
I'm just worried that some PHB will read this and go, "Hmm, Ada, we must use that!"
Btw Ada is n't that bad a language, but does n't guarentee success. I remember being told that an Ariene rocket that exploded mid flight was written in Ada, the cause was a overflowing integer.
Re:Skill and not language used? (Score:1, Insightful)
When you combine a language that encourages errors at compile time rather than run-time with experienced people, you are going to get good results.
Re:Skill and not language used? (Score:3, Insightful)
Re:Skill and not language used? (Score:5, Insightful)
Re:Skill and not language used? (Score:3, Insightful)
Interestingly, that's one of the arguments in support of Java. Hardcore C or C++ hackers find it cumbersomely verbose, but it's pretty easy to read any Java coder's source code from anywhere in the world and debug it with relatively little time spent in the code archeology phase. That is, for those bugs that make it past the relatively extensive automated checks that are possible because of the straightforward syntax.
Re:Skill and not language used? (Score:5, Insightful)
Re:Ada (Score:5, Insightful)
Re:Skill and not language used? (Score:2, Insightful)
Re:Skill and not language used? (Score:5, Insightful)
Re:I used ada.... (Score:5, Insightful)
I found it very easy to work with and is only slightly more verbose than VB or PowerBuilder.
Frankly a language that forces programmers to do the right thing up front might just be the thing to do. It's always faster to re-type something than to try to find the bug in your code after it is running.
Re:Language Magic Bullets (Score:5, Insightful)
Re:Skill and not language used? (Score:3, Insightful)
Re:Skill and not language used? (Score:2, Insightful)
Re:Skill and not language used? (Score:4, Insightful)
Re:I used ada.... (Score:5, Insightful)
It's not possible anywhere, unless you have access to an arbitrary size memory. Ada simply makes you aware of that fact before you put the code into production.
Re:It is not just the language (Score:3, Insightful)
Ada never went anywhere... (Score:2, Insightful)
Because of the nature of the language, you HAVE to know what you are doing to write a program in Ada. Getting something to compile in Ada pretty much guarantees you get something that will run reliably.
Schools that train programmers starting with Java or C++ provide the benefit of making their graduates highly employable, but with a greater risk of turning out highly incompetent programmers.
Ada never went anywhere, there has just been a large increase in the number of developers trained on other languages. The reason its 'Returning' is because almost any Project that uses Ada does provide for a success story (As long as you use developers who have been trained on Ada (Googling for source examples is not training)). Its a professional language for applications that just have to run. (Examples of great software written in ada: (Air Traffic Control, Flight Software, Hello World, etc...)
As I said, my opinion is biased.
Re:Skill and not language used? (Score:5, Insightful)
Maybe, maybe not, but there's a good chance it had something to do with Ada.
If you have to walk in blind and maintain someone else's code, Ada is the language to do it in.
Re:Ada was designed for multiple CPUs (Score:2, Insightful)
"I can do it in C" was the line we always used when our Ada teacher said anything "could be done in Ada but nothing else".
"Rendezvous" was built into Ada explicitly but other standards have given it directly or through libraries to everything else. It's just thread synchronization that you can emulate/simulate/do in many other languages with similar code... semaphores, mutexes, events/conditionals, etc. but perhaps with a little more explicitness by the programmer.
The first thing to remember is that no (higher level) language gives magical properties to a computer. If one language can do it, I can guarantee that at least one other can tap into it as well... Machine Language being the easiest example because even magical Ada gets compiled into ML or interpreted by ML at one point or another... if it can be done, it can be done in ML. C is just a step up from Assembly/ML (we used to joke that C was portable Assembly).
You *might* can say that Ada was the first to actually have it as a construct defined in the language specification (I dunno the history of it, there may have been a language before Ada with it designed in) but even by Ada's heyday (mid- to late 80s), we could do it in C.
Re:I used ada.... (Score:3, Insightful)
Getting into Ada is rather complicated and time-consuming, though, so it's not surprising that it never took off in a big way.
Political Agenda (Score:2, Insightful)
Look, can we get beyond the "government is always inefficient" meme? It's just not true. Many government projects come in on schedule and on budget. Some project are late and over budget. Guess what? It happens in the private sector too.
Government is actually more accountable to the people than private corporations are. Numerous cost controls are in place. Public officials are elected. I have not seen the same level of scrutiny in the private sector.
So let's move beyond the ultra conservative and libertarian talking points, ok?
Re:Anything that forces discipline is good. (Score:3, Insightful)
Its a tool that can lead you to valuable information just as asking a colleague or consulting a book or other publication can. No one knows everything or has come across every issue, but there is usually a good chance someone has. Just because you have seen someone use it to find information who then did a half-assed job of fixing the issue doesn't mean the tool they used is no good or always lends itself to half-assed fixes.
Re:Skill and not language used? (Score:5, Insightful)
Re:Skill and not language used? (Score:5, Insightful)
C is a good language if you (a) need a portable language but don't have another portable language to implement it with and (b) you need the language to be well designed enough for a team of competent programmers to tackle nearly any problem.
You can give a language more features that makes it easier to tackle certain problems, but it tends to undermine the portability goal. C is something like a portable assembler, only with the most critical abstractions for day to day programming provided. Once you get into more, you start to run into assumptions. Static or dynamic typing? It depends on your software engineering methodologies, particularly testing.
What C is emphatically not is idiot proof. Even worse, it is spectacularly not clever person proof. I dunno. I've never worked in Ada myself, but I suspect this might be some of its, er, attraction. It looks like a language in which it is not fun to be cleverer than you need to be.
Re:Skill and not language used? (Score:3, Insightful)
The reality is, bad programmers will inevitably generate bad code. Skilled programmers, however, can always write quality code, regardless of the language, however they will also be able to utilize available language features (such as DBC, etc) to improve their work. At least, IME.
Re:Skill and not language used? (Score:3, Insightful)
Are we talking about the same old Java that doesn't support typedefs and uses Object for all standard data structures? Generics add a bit of syntactic sugar, but do little to ensure safety. You can cast a HashMap to HashMap without any way to check if it is valid at compile OR run time. Compared to that, C++ can be used for safer programming by encapsulating all pointers into template classes and relying on local destructors for reliable memory management.
Re:we need it where it matters (Score:3, Insightful)
Re:Skill and not language used? (Score:3, Insightful)
Re:Skill and not language used? (Score:4, Insightful)
I think C is the languages that killed Ada. Ada was about code safety and correctness, and C was about being able to break the rules. Early Ada also did not give sufficient access to the underlying machine, which made it suitable for applications but not so much for systems work where C excelled. By the time Ada evolved, C was already entrenched as the system language and C++ was starting to dominate applications.
As a language, Ada is great. Maybe a few nits I'd change, but very well grounded and building on the solid base of Pascal and Modula-II.
Re:Skill and not language used? (Score:5, Insightful)
Or not. I'm not quite sure why, but my Python code has a significantly higher frequency of working right the first time than my Java code, and that's after developing in Java for 10 years and Python for less than 2. My theory is that it Java's static typing and verbosity consumes a portion of my mental energy that makes it harder to focus on the actual algorithm.
Re:Skill and not language used? (Score:3, Insightful)
If you want cowboy coders, then choose the latest, coolest anguage there is. You'll soon see the muppets who couldn't hack it with an established language who had to do real work with real systems using it. By saying they work with the latest, they get to blame the language "its a learning process", or just by following where the money is.
Coders who insist on the latest stuff are always worse than the people who are content to work in the old stuff. They are the people who are more interested in getting the system implemented well, and not playing with the new toys.
So, choose ADA. If you can find them, experienced ADA devs will be far better for your business than some C# kids.
Re:Skill and not language used? (Score:5, Insightful)
Suppose we want to assign b to a, then execute c if b is non-zero:
In C:
if (a=b) c;
It is clever. But can easily be misread as a comparison between a and b instead of an assignment. Obviously (or maybe not) good programmers won't write this way, but C allows it and you don't always get to choose who wrote the code you're currently working with. And this is just a trivial example. It can get far more complex and clever than I'm willing to attempt.
Ada doesn't let you be that clever. You're forced to write it out:
a
IF b
c;
END IF;
Now pretend someone else wrote this and you don't know the original goal of the code segment. You're not even sure if the code is 100% correct or not. Which one would you rather maintain?
Re:I used ada.... (Score:3, Insightful)
> It's not possible anywhere, unless you have access to an arbitrary size memory.
And yet, a language without the capability to attempt that (and only fail if the string actually gets too long for memory, which in practice doesn't happen very often) is pretty much useless for writing real-world programs like, say, an XML parser, or an email proxy, or, you know, anything much beyond classroom-example programs.
Re:Skill and not language used? (Score:3, Insightful)
For instance in OCaml you'd write:
let emps = List.filter (fun e -> e.salary>limit) employees