Forgot your password?
typodupeerror
Programming IT Technology

The Return of Ada 336

Posted by Zonk
from the lord-byron-will-be-in-the-sequel dept.
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."
This discussion has been archived. No new comments can be posted.

The Return of Ada

Comments Filter:
  • by thedak (833551) on Tuesday April 15, 2008 @01:05PM (#23079390) Journal
    I may just be a whippersnapper, get off my lawn and whatnot; as a Java, C, C++ coder, but the project being completed under-budget and pre-deadline and having that attributed to Ada itself seems rather misguided to me.

    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)

    by Xipher (868293) on Tuesday April 15, 2008 @01:06PM (#23079416)
    I had to use Ada in my Data Structures class with John McCormick at UNI http://www.cs.uni.edu/~mccormic/ [uni.edu] This guy teaches a tough class but you end up learning a lot, and he is very big on Ada. While I haven't used it much since I did like a lot of features in the language.
  • by Digi-John (692918) on Tuesday April 15, 2008 @01:14PM (#23079554) Journal
    Perhaps a language which is slower and a bit more difficult to write prevents programmers from dumping so many lines of semi-working crap, requiring them to put a little more thought into the code?
  • by msgmonkey (599753) on Tuesday April 15, 2008 @01:14PM (#23079556)
    Most projects do not meet their goals and/or timeframes from bad project management. Whilst the choice of language is obviously important, I have never heard of choice of language being a major factor when reporting on contracts that are over due/over budget or plain just dont work.

    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.
  • by Anonymous Coward on Tuesday April 15, 2008 @01:15PM (#23079562)
    Ada is a strong programming language and it is harder to make some of the more common stupid mistakes in Ada. But I think you are right and especially so with Ada. I haven't seen a junior Ada programmer in a LONG time. Projects using Ada tend to have senior people who understand their domain and don't make newbie mistakes.

    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.

  • by larry bagina (561269) on Tuesday April 15, 2008 @01:16PM (#23079572) Journal
    Aside from writing code, you also have to test it. That extra security/straightjacket can mean it works right the first time.
  • by Detritus (11846) on Tuesday April 15, 2008 @01:22PM (#23079658) Homepage
    One of the advantages of a language like Ada is that more problems can be detected at compile time and corrected at low cost, as opposed to languages like C that assume that you know what you're doing and are optimized for speed. Ada also has run-time checks that can catch many problems. It's usually more efficient for the project to do the work up-front, rather than to hack together something and debug it.
  • by samkass (174571) on Tuesday April 15, 2008 @01:24PM (#23079694) Homepage Journal
    Not at all. Most of the time spent between project kickoff and software delivery is NOT spent actually typing the code. If you program in a language that makes it harder to write bugs, easier to find bugs, easier to express algorithms, easier to read other people's code, and easier to do automated testing and verification you'll save huge amounts of time even if coding takes several times as long.

    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.
  • by Jason King (909684) on Tuesday April 15, 2008 @01:27PM (#23079730)
    Yes, 10 uber-coders can finish a project ahead of 10 clueless coders every time. What Ada does is it makes it harder for the clueless coder to hose the whole system. Because its persnickety you don't find buffer overruns (for example) in the wild. You always get them in test or sometimes they even generate compiler errors. The earlier in the cycle you get your errors the easier they are to fix.
  • Re:Ada (Score:5, Insightful)

    by Maaras (1171713) on Tuesday April 15, 2008 @01:28PM (#23079738)
    You hit the nail on the head. I wrote Ada on a defense project for about 4 years. From a purely technical standpoint, it is the best programming language that I have ever used. However, in the real world, other concerns tend to dominate. Concerns such as IDE's (AdaCore's IDE was exceptionally slow and hard to use, on Solaris, at least.) and finding developers who know Ada (or are willing to REALLY learn it) counter-balance a lot of Ada's strengths. What good is the best language on Earth if you can't get developers to use it?
  • by Anonymous Coward on Tuesday April 15, 2008 @01:31PM (#23079784)

    but it's pretty easy to read any Java coder's source code from anywhere in the world
    Only if India's on the moon.
  • by wfstanle (1188751) on Tuesday April 15, 2008 @01:36PM (#23079846)
    You are forgetting something... Actually writing the original code takes up a small part of the total time spent on a program in its life cycle. There is debugging, testing and updating that have to be considered. I have updated programs written in Ada and in other programming languages. Have you actually had to read code the code written by others? Reading a C or C++ program is not easy. Some say that C (and all of its derivatives) are "Write only languages". At least in Ada, it is easier to make sense of the code that others write.
  • Re:I used ada.... (Score:5, Insightful)

    by TargetBoy (322020) on Tuesday April 15, 2008 @01:37PM (#23079860)
    Likewise, I also used Ada in college.

    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.

  • by mihalis (28146) on Tuesday April 15, 2008 @01:38PM (#23079872) Homepage
    Bug? Phooey - The software in question performed exacly as per spec... the spec for the Ariane 4 rocket, that is.
  • by somersault (912633) on Tuesday April 15, 2008 @01:39PM (#23079890) Homepage Journal
    That's what I was thinking too. Testing should be a major part of any project - and especially one where large pieces of metal hurtling through the air are involved :p
  • by hitmark (640295) on Tuesday April 15, 2008 @01:39PM (#23079892) Journal
    and debug, debug, debug, reimplement, debug, debug, debug, reimplement, debug, debug, debug, discard/emulate on top of new hacked together system, and the pattern goes on...
  • by aldousd666 (640240) on Tuesday April 15, 2008 @01:40PM (#23079898) Journal
    haha in refernce to your java being easy to read by default, you're forgetting about people like this [p-nand-q.com].
  • Re:I used ada.... (Score:5, Insightful)

    by Chris Mattern (191822) on Tuesday April 15, 2008 @01:42PM (#23079928)

    Ever try reading in and storing an arbitrary length string? I'm fairly convinced it's not possible in Ada.


    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.
  • by Alistair Hutton (889794) on Tuesday April 15, 2008 @01:49PM (#23080058) Homepage
    I think that any strongly typed language with lots of compile time and link time checks would be about as good (e.g., Java). Java, all the verbosity of Ada without any of the benefits. I can't work out how Java managed to make programmers type so many characters without achieving anything. Java's compile time checking is decent but seriously weak when compared to Ada. I've always liked the Ada compiler pointing out my spelling mistakes :-)
  • by nullkill (835502) on Tuesday April 15, 2008 @02:06PM (#23080268) Homepage
    My first three foundation CS courses (back in 2001) were all taught in ADA. This provides the benefit of qualifying me to talk on the subject, with the drawback of providing a heavily biased opinion...

    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.
  • by Ephemeriis (315124) on Tuesday April 15, 2008 @02:08PM (#23080290)

    You need to make a distinction: they weren't writing new code, they were updating existing code. This is a very important distinction. We are all aware of "code rot" [wikipedia.org], etc. and how over time documentation gets lost, people have to re-learn a piece of code based purely on the source, etc. However they took an older piece of code and revamped it, right on time and under budget. This is notable, and may be attributable to some of the properties of Ada [wikipedia.org].

      Maybe, maybe not, but there's a good chance it had something to do with Ada.
    Ada is almost self-documenting. The syntax is all very verbose and human readable.

    If you have to walk in blind and maintain someone else's code, Ada is the language to do it in.
  • by fitten (521191) on Tuesday April 15, 2008 @02:12PM (#23080350)

    However, one particular feature of Ada seems more suited to current hardware than other languages: it was designed to allow many computers/CPUs to communicate via the rendezvous.


    "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)

    by harmonica (29841) on Tuesday April 15, 2008 @02:13PM (#23080358)

    It's more verbose and stuff, but I didn't see any completely foreign concepts in Ada that aren't around in most other langauges.
    However, Ada had a lot of those concepts working reliably in 1983 and 1995 (the years the first two major versions were released if I remember correctly), when most other people were using not-so-sophisticated languages, to put it mildly.

    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)

    by David Greene (463) on Tuesday April 15, 2008 @02:17PM (#23080408)

    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?

  • by Petaris (771874) on Tuesday April 15, 2008 @02:33PM (#23080600)
    Whats wrong with searching Google?

    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.
  • by afidel (530433) on Tuesday April 15, 2008 @02:50PM (#23080760)
    No, I'm saying most of the bottom 90% have no idea what Ada is =)
  • by hey! (33014) on Tuesday April 15, 2008 @03:00PM (#23080870) Homepage Journal
    Not necessarily.

    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.
  • by Abcd1234 (188840) on Tuesday April 15, 2008 @03:03PM (#23080926) Homepage
    Nah. "Hack it 'til it compiles" still works in a strict language. It just takes a little longer.

    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.
  • by iamacat (583406) on Tuesday April 15, 2008 @03:29PM (#23081306)
    That is, for those bugs that make it past the relatively extensive automated checks that are possible because of the straightforward syntax.

    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.

  • by Nimey (114278) on Tuesday April 15, 2008 @03:59PM (#23081782) Homepage Journal
    Unix syscalls in Ada: like ripping your cock off to give yourself head. -- anonymous
  • by Kartoffel (30238) on Tuesday April 15, 2008 @04:15PM (#23081978)
    Mod parent up. Bondage and discipline prevents sloppy hack jobs, yet hinders quick hackish projects. For small projects, rapid hacks are ok. For large projects, you want thoughtful organization and testing along the way.
  • by Darinbob (1142669) on Tuesday April 15, 2008 @04:17PM (#23082004)
    "Return of C"? Has it ever gone away? I use it all the time in places where C++ is too bloated and assembler isn't required.

    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.
  • by bnenning (58349) on Tuesday April 15, 2008 @04:58PM (#23082534)
    That extra security/straightjacket can mean it works right the first time.

    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.
  • by gbjbaanb (229885) on Tuesday April 15, 2008 @05:11PM (#23082718)
    Actually, I think its the reason you get uber-coders in the first place.

    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.
  • by darkwing_bmf (178021) on Tuesday April 15, 2008 @08:40PM (#23084492)
    As a programmer, *I* find it more readable as well. This doesn't matter when writing your own small program from scratch, but it's damn convenient when you've got to maintain someone else's code. You can do fewer "clever" things in Ada.

    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 := b;
    IF b /= 0 THEN
      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)

    by jonadab (583620) on Tuesday April 15, 2008 @09:58PM (#23085124) Homepage Journal
    > > Ever try reading in and storing an arbitrary length string? I'm fairly convinced it's not possible in Ada.
    > 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.
  • by chgros (690878) <.gro.x4m. .ta. . ... g.irneh-selrahc.> on Wednesday April 16, 2008 @02:24AM (#23086748) Homepage
    Note that the verbosity is not due to static typing. For instance, what you do in Python can also be done with most ML family languages (e.g. OCaml), which are statically typed.

    For instance in OCaml you'd write:
    let emps = List.filter (fun e -> e.salary>limit) employees

To understand a program you must become both the machine and the program.

Working...