The Return of Ada
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."
In school. It wasn't actually any different from very many other languages that have huge class libraries, it's just that they were all 'included' in the langauge instead of linked in separately. 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. Just more typing, from what I remember.
Speak for yourself.
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.
Today's Sesame Street was brought to you by the number e.
I took a class in Ada for a previous employer. I found it a lot like Pascal and not all that difficult. The main issue was the cost of compilers which had to go through an expensive certification process. I did find the language a but verbose for many things, e.g. here
The real issue isn't that it's hard to learn, it's that it's a little cumbersome, but more importantly, not many people know it and they typical clueless manager wants to see 10+ years of Ada experience on the resume/cv before hiring someone. Those people are few and far between, but and competent software developer can learn it.
I don't know, but it works for me.
Here's a crazy idea: DoD should consider contracting out the work to Apple or Google! http://backpackcomputing.com/
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.
All that vulnerable client-side code (image libraries, HTML parser, etc.) would be immune to buffer overflows if it were in Ada.
Even better, write it in proof-carrying Ada. (while an aritrary theorem prover is impossible, one can get a theorem prover to work in practice via minor tweaks to the input)
"P.S. Have fun paying high price for your addiction to oil."
I can't help but wonder what industrialized country you live in that is somehow not addicted to oil.
If someone says he and his monkey have nothing to hide, they almost certainly do.
I don't think I'm the only one who has had to work with really lousy programming and IT coworkers. One of the good things about the past was that programmers had a much harder time hiding their mistakes. In the days of dual-core processors and tons of RAM, even a mediocre programmer can get Java or any of the .NET languages to produce code that works. Of course, readability, maintainability and speed aren't really a factor.
Is going back to Ada and other similar languages a good idea? Maybe. But I think you could get the same result by just demanding better quality work out of existing languages. People have correctly pointed out that the languages aren't really to blame, because you can write garbage in just about any language.
I sound like an old fogey, but I'd much rather see a smaller IT workforce with a very high skill set than a huge sea of mediocre IT folks. This would help combat outsourcing and the other problems affecting our jobs. Almost everyone I've heard complaining the loudest about outsourcing has been either downright lazy or just not very good at what they do.
I'm primarily a systems engineer/administrator. There are many parallels in my branch of IT to the development branch. We've got the guys who can really pick a system apart and get into the guts of a problem to find the right answer. We also have the ones who search Google for an answer, find one that solves half the problem, and wonder why the system breaks a different way after they deploy it.
Not sure how to solve it, but I think it's a problem that we should work on.
I'm actually quite fond of Ada as a language. Yes, it's a very verbose language but unlike, say Java or C#, the verbosity gives you a lot of stuff. It gives you good threading. It gives you a very good encapsulation. It gives you a very nice parameter system for procedures/functions That's a point, it seperates between procedures and functions. It gives very, very, very good typing. Very good typing. It's very good. I like it. It's what I want when I'm doing strong, static typing rather than the wishy-washy getting in the way mess that many other main-stream languages. When I use a type I want it to mean something. It's a good language to teach students about programming in my opinion.
Puzzle Daze is now my job
I just have to answer to a post like this (and to all the rest like it) not for the content because it is an opinion amongst others but that the poster did not have the courage to attach a name to it.
...and have the guts to stand up for it. What? you worried the NSA is going to put the death squad after you? Come on!
/. I tune in and post less frequently because of it.
Do you not believe in what you say?
Or is this just flame bait?
Maybe time to eliminate Post Anonymously on
You got something to say? Say it. I'm listening.
I make a nice living rewriting Ada systems into C++. When DoD suspended the "only quote us system development costs based on Ada" requirement, most bidders dropped Ada like a burning bag of poop. Its best advances such as exception handling have been picked up by modern system programming languages and even Java. The doctrinaire variable type enforcements have yet to be equaled but OO it really aint. Bottom line, plenty of old defense software systems have few living authors who will admit to knowing the code and upkeep is expensive, talent hard to find. This is ironic since DoD spec'd Ada in the first place because it had a maintenance nightmare of hundreds of deployed languages. So of course the managers think a more popular language with "all the features" of Ada should be a porting target. Eventually even customers demanded modernization and compatibility ports.
I know a few die hard Ada programmers who just love it...but very few. The brilliance of the language can be debated but its moot: no talent pool to speak of.
And besides, Ada is really French. [why did GNU make an ada compiler??????????????]
technology market: you can't separate technical merits from market forces
open source: your market has a small leak and is slowly collapsing.
SLASHDOT: news for people who can't concentrate on work or have no life at all and got tired of yelling back at the TV.
That was my aunt's name and she passed away many years ago.
I was running out the door with my zombie survival guide & bug out bag heading for my arctic hideout to escape the impending invasion and I noticed out of the corner of my eye a reference to programming.
Thank god, Aunt Ada was a tad weird when she was alive, I really didn't want to meet zombie Ada.
Shop smart, Shop S-Mart.
1) Ada is cumbersome, especially when you are dealing with character strings of variable length.
2) Garbage collection is managed by hand.
3) Poor interfacing with C++. (Well, so has most everything but C++.)
4) Programs in Ada tend to be HUGE!!!. That's the big one. I'm talking about source code size here, not binary size, which is reasonable.
5) If you don't know the type of data you're reading in, it's difficult to handle it. This is both a problem and an advantage.
6) Ada's handling of inheritance is very different from that of most other languages. Lisp is probably the language that comes closest to it. You could think of it as noun dominated rather than verb dominated. (I.e., instead of functional it's ??? I don't know the proper term. It works, but it's a very different model. Calling the inheritable types objects isn't really appropriate (and the term isn't used).)
I think we've pushed this "anyone can grow up to be president" thing too far.
When I was in the USAF (1984-88) I was sent to Ada training. When I finished, we were given an exemption, allowing our system to remain in C. 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 don't believe that C/C++, Pascal/Delphi, or any of the most commonly used languages can say that. (I'm sure someone knows of another language that does, but I suspect it isn't used very much when compared to the others.)
Couple that with the concept that, "if Ada will compile (and link) your application it will do what you asked it to do," it seems to me that Ada may have simply been 20 years or so ahead of its time. (smile)
I think that any strongly typed language with lots of compile time and link time checks would be about as good (e.g., Java).
In Ada, you can declare a variable to be an integer in the range 1..100, and if it goes outside that range at any point during its lifetime, an exception is immediately thrown. In most languages, you'd have to check it every time you assign it.
Also, you can declare subtypes which not only define ranges but wall themselves off from each other. If you declare "MonthType" and "DateType" as types, and then ThisMonth and ThisDate as variables, you can't say assign ThisMonth to ThisDate (or vice-versa) without an explicit cast, even if the value stored is within range.
I programmed in Ada more-or-less exclusively for a year, with all the warnings possible turned on, and it did change a bit how I think about programming. I always know, instantly, what type any object is and what its limits are, because I got so used to thinking about those things when using Ada.
Not that it's perfect, or the ultimate, or anything. I had a job where I wrote C only for about 2 years, and that definitely changed how I thought about programming too. When writing C++ I have sense of what the computer is going to have to do to actually run the code.
There's a quote that any language which doesn't change how you think about programming isn't worth knowing. Ada built up my mental macros for making sure my types and values were in order, and for that alone it was worth learning and using for a year.
... i thought this story's title read, "the return of ABBA."
ABBA was an early 80's rockband. ADA was an early 80's programming language. ABBA is seeing a resurgence in interest now. ADA is also seeing increased in interest now. ABBA consisted of four singers, and ADA consisted of four programming languages.
Coincidence? I too think not. Take a chance on it.
Take the cheese to sickbay, the doctor should see it as soon as possible - B'Elanna Torres, "Learning Curve"
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 :-)
Puzzle Daze is now my job
I had ADA in all 4 years of my college schooling, and I have just graduated in December. ADA is a complicated, cumbersome, yet extremely powerful and EFFICIENT language than many other popular varieties. I have seen this through experience. Programming algorithms and doing numerical analysis may seem difficult at first with ADA, but when you break the algorithm down into its necessary steps and requirements, creating packages that can inherit when needed, and check the packages and program for errors and bugs in the code at compile time is a blessing. It has saved me from doing extra work in all of my classes, and has helped prevent me from making the most horrible, and embarrassing mistakes. It's also a great language to learn as your first programming language. The concepts it can help introduce and refine is just great. I'll be honest, too. I'm not a very good programmer, but ADA, in the long run, helped me write my code better than a C/C++ compiler could have.
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.
Please don't feed this troll.
I worked in Ada for a few years. I guess I better go and dust off my books.
And, here I spent all that time learning Java. Sheesh.
[signature]
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?
Overall, well done, sir. Well done.
Oh, yeah, and by the way, is it any coincidence that they're both anagrams? And, what's really surprising, if you mathematically extract the alphanumerics; ABBA = ADA; where A=1, B=2 [...] Z=26. Coincidence? I think not too.
I hope, when they die, cartoon characters have to answer for their sins.
Speaking from my own experience as a software "engineer" working on defense contracts for the last decade, I would say their success on this project is more likely due to proper scheduling/budgeting than whatever tools the developers used. More often than not, when estimating schedules and costs for software projects managers and developers both tend to focus on code implementation time and forget about thorough design, testing, and rework time. Add to that the nearly inevitable requirements changes that occur over the life of a project and you have a disaster waiting to happen.
In my time I've seen several projects succeed and several projects fail. Those that succeeded always began with a robust and flexible design that would allow for growth and changes down the line. Those that failed were often rushed to implementation with just enough design to get the job done, then struggled to keep up with customers' changing requirements. I've seen every major programming language, development environment, operating system, and tool du jour used on both sides of the succeed/fail fence and never once did it make a bit of difference to the success or failure of the project. Personally, I'd be much more interested in seeing this project's WBS than hearing about how Ada may or may not have helped.
(As a parenthetical side note, there is definitely a dis-incentive to succeed in that those contracts that get dragged out year after year struggling to appease the customer continue to get funding while a successful project's funding ends when it's scheduled to end, leaving the development team looking for more work.)
Comment removed based on user account deletion
We're talking about an alleged "addiction" to oil. In the US only 7 percent of our electric power is created from petroleum. Therefore, 93% of our electricity is not created by oil. So, what exactly is your point about France? Thanks. I won't be holding my breath.
If someone says he and his monkey have nothing to hide, they almost certainly do.
Back in the 70s there was a big fuss being made about something called "Structured Programming". A lot of people took notice when a big project, an indexing system for the New York Times was finished with remarkably few errors. Yet, that success did not seem to become the norm. (It's mentioned briefly in the wikipedia article on 'structured programming').
COBOL used to be touted as a great language because it was 'self documenting'. Yet a lot of retired COBOL programmers got a last hurrah when they were hired to update obscure code in this 'self-documenting' language to handle dates with the year 2000 in them back at the end of the 90s.
Basically, I think what it boils down to is discipline and talent in the development process. That is far more important than the choice of language. To some extent, I would buy the idea that the fewer lines of code required to write out a program, the better, because there are fewer chances of errors. But even that can be taken to extremes in a language like APL, or if the lines refer back through obscure nests of classes. By few lines of code I mean a few readable lines of code that a programmer can look at and actually know what is supposed to be happening and how.
In theory, theory and practice are the same; in practice they're different. (Yogi Berra & A. Einstein)
According to this statistics, about 1/3 of the energy in France comes from oil (or at least, came from oil two years ago), with another 1/7 from natural gas. Remember, electricity is only part of the energy consumption. Electric cars are the exception, and so is electric heating of buildings.
Having 33% of your energy production dependent on oil can well be considered "addicted". Would the oil sources disappear over night, you'd certainly have much trouble (as would the rest of the industrialized world).
The Tao of math: The numbers you can count are not the real numbers.
I think the main issue that people are afraid to talk about here is that Ada will soon be replaced by a language based entirely on cat macros.
Nasa...
There was a period where any program projected to be over 50k lines had to be in Ada.
So they did the only logical thing.. broke projects into 50k line components.
She was like chocolate when she drank... semi-sweet at first and then increasingly bitter.
I am glad to confirm the upsurge in the use of Ada. Google Groups had a thread about that just a month ago: http://groups.google.com/group/comp.lang.ada/msg/edc2dd0acb7bed50
I write code in Ada at the moment. It is part of the data handling used in a satellite.
Although it is decent for the application side, the parts I am writing deals with low level access to the hardware, and for this Ada absolutely SUCKS big-time.
Also the typing system is ridiculous, basically, you define a new type for everything, with certain constraints (this is part of enhancing safety). But, this means that you have several hundreds of types to track, it would be better if the constraints were enforced in contracts for the functions and procedures, but no, that is not how Ada works, instead I spend about 30% of my time looking up type definitions for various integer types.
It is a very sucky language that force you to write more lines of code and makes it difficult to write unit-tests for your code (without having the unit test in the same package as the code, but we are of-course not allowed to embed the unit tests in the flight software).
Anyhow, Ada suck!!!
"Civis Europaeus sum!"
Oddly, they're saying a language which is slower for people to write, and considerably more obscure than most languages, is the reason something is done under-budget and quickly? It seems like those traits would make it more secure, but take much longer to make...
:-)
Ada may force more up front design and less seat of the pants hacking. This can lead to fewer bugs and less reworking of code. Some of the worst code I've seen came from otherwise intelligent people who jump write in and expeditiously write a lot of code fast rather than taking some time to think about things. Sadly, others end up having to spend time cleaning up such messes, or it ships and users end up with buggy code.
I'm usually not happy with things in C/C++ until the third rewrite, perhaps in Ada I'd be happy on the second rewrite.
He writes And so, the best of my advice to the originators and designers of ADA has been ignored. In this last
resort, I appeal to you, representatives of the programming profession in the United States, and citizens
concerned with the welfare and safety of your own country and of mankind: Do not allow this language
in its present state to be used in applications where reliability is critical, i.e., nuclear power stations,
cruise missiles, early warning systems, anti-ballistic missile defense systems. The next rocket to go
astray as a result of a programming language error may not be an exploratory space rocket on a harmless
trip to Venus: It may be a nuclear warhead exploding over one of our own cities.
god n. : the Supreme Being, indistinguishable from a good random number generator.
I am Oliver E Cole, the president of OC Systems (oec@ocsystems.com). The Ada compiler and associated tools used by ERAM is PowerAda, done by OC Systems. We have worked closely over a number of years with the ERAM project and its predecessors. Yup, they are using Ada because of all its robustness and features, but they also have a good mature software development process. Part of a muture process is choosing the right language and tools for the job. Sometimes php is the right choice, sometimes C, C++ and sometimes Ada. For a project like Air Traffic Control (very long lived, high quality) a strong argument can be made for Ada. Ada catches a lot of errors "automatically" and is designed for big systems.
Unpossible... ABBA's drummer died a few weeks ago :(
(In case anyone doesn't get this, it's already here, albeit not yet complete.)
I must admit I wished Delphi had some of the features that Ada has (though there appears to be a lot of commonality). Delphi is already awesome, but with some of Ada's features it would be uber.
Ada didn't fail because it was hard to use. Ada failed because it had the misfortune to be a non-Object Oriented language that arrived right when the object oriented paradigm was taking the software engineering world by storm. It's a bit of a joke to blame its failure on being difficult given that it showed up nearly the same time C++ did.
The cake is a pie
"ahead of schedule and under budget, which is something you don't often hear about in government circles"
If you put your double(or more actual, tripple it up) up schedule far ahead enough, let sales cut it in half, you can actually do a project on time.
Don't know why is this news. Ada is used in High Integrity System
for long long time.
http://www.praxis-his.com/sparkada/index.asp/
Cheers
BT
Your comment indicates that you don't really know how to use Ada. I use Ada to write what are basically device drivers for complex ASICs. I would argue that Ada is the very best choice for low-level hardware interfacing because it supports precise specification of data layout (size, endianness, record bitfields, etc.) Done right, all of this is a compile time activity without any runtime penality. Ada is also a good language for writing simulations of hardware.
You certainly don't have to (and shouldn't) create new & different types for everything. Types (should) arise from thoughtful design.
Maybe it would be best to use a language that is just as fast (or faster) than C++ but has learned from the past like D. The language is maturing yes, but the design is excellent.
This Wiki Feeds You TV and Anime - vidwiki.org
I guess the Internation Obfuscated Ada Code Competition is a non-starter then.
(Notes that ioacc.org is unregistered)
Compare IOCCC
Ada has a lot going for it when it "has to be correct every time"; that is its main purpose. The big advantage is that the language maximally checks everything at compile time - so if it HAS to work correctly every time, that's a big plus. It also has more run-time checks. It even has some extra features that let it be more specific. It has a nearly-unique ability to specify number ranges; if you spec a variable as being in the range 1..100, then any attempt to assign outside that range is immediately detected. That turns out to detect lots of errors before they get out of hand. It's not the best language for EVERY purpose, but it has its place. I have a tutorial here, if you're curious: Lovelace tutorial.
- David A. Wheeler (see my Secure Programming HOWTO)
If Anonymous posts bother you, set them to -6 score in your preferences, and as long as you read posts with your threshold at 0 or more, you'll never see them.
I agree that learning the most interesting programming languages changes the way you think about all programming languages. And certainly, C makes you think more about what's going on under the covers, which is undoubtedly a good thing.
But when writing C or C++, you really only have a sense of what a VAX or PDP-11 would have had to do to run the code. You don't have a very good sense of what a modern processor actually does - nothing in C or C++ gives you an intuitive understanding of pipelining, of the cost of cache misses, etc. If you look at the object code produced by a good modern optimizing compiler, you would probably be surprised how far it departs from what you thought you were doing.
So while C does give you some slight exposure to low-level concepts, in the modern age it really doesn't serve as a good substitute for actually hand-writing some assembly code. It's a bit like taking a walking tour of Paris using an audio guide narrated by Peter Ustinov in 1972. It's hard to separate the Paris part from the Ustinov and the 1972 parts.
-Graham
But of all of these Pascal-derived languages, why Ada? What about Wirth's Component Pascal? But how about Delphi?
The thing about Delphi is that it compiles like a bat-out-of-Hell while last I heard Ada compilers are these complex ponderous things. A lot had to do with Delphi preserving enough of the structure of Pascal that was compiler friendly; the word I heard is that Ada is far from compiler friendly.
Why worry that a thing is compiler friendly -- should it not be programmer friendly at leave the work to the computer. Yes, up to a point, but if something is not compiler friendly, how are we to know that the compilers don't have hidden bugs? Besides, fast compiles means something, even on Core-2 Duos and all of that. Have you compiled anything under Delphi lately and compared that experience to anything else?
You could say the ultimate in compiler friendly syntax is Lisp, but I think there has to be some middle ground some something more infix and readable. I think that Delphi, or at least Object Pascal if you are thinking other platforms (think Free Pascal) is that middle ground, not Ada.
i worked in ada, late '80s, early '90s, alsn, wrote a troff clone;-) i had just learned c & chafed @ the strictness (i don't need no steenkin compile-time checks;-) but i grew to appreciate it...definitely leads to better code.
http://www.adaic.org/atwork/trains.html gives an interesting case history of the superiority of ada for teaching real-time programming:-)
" The only difference between the years in which teams succeeded in implementing their projects and those in which no team succeeded was the implementation language."
It is not exactly a extension of Ada. It is actually a subset of Ada that can be annotated and statically analysed. That said it was an interesting article. Ada had many problems when it started (bad and expensive implementations, since it was a big topdown design with many inovations - I think it was the first language with generics), but is probably the best system language nowadays for things that do not use garbage collection (things that are usually done with C/C++). And since there is an current free Gnu Ada compiler (Gnat), it should be more used.
If it gets in style, it will be one less cliche example of "see what happens to things designed by committee?"
Table-ized A.I.
Last time I programmed Ada was for a class in the University around 1991. What I recall is that language documentation was poor at best. I also recall that the compilers generated error messages which must have been worded to save ink on the teletype.
This article has convinced me that maybe I should evaluate if Ada has advanced, but I'm predicting beforehand that given the minimal interest in it, it probably has not come too far during this time.
If I find otherwise, I'll come back here and eat my words.
P.S. Back then, the libraries were not quite so huge hehe
> In Ada, you can declare a variable to be an integer in the range 1..100, and if it goes outside that range at any point during its lifetime, an exception is immediately thrown. In most languages, you'd have to check it every time you assign it.
// whoops, colliding with C runtime, ignore that
// compiles // doesn't compile
// throws exception when instantiated with out-of-range value
I know it's not the same, but can't you get the same effect in other languages? In particular, C++ can be used to implement numbers with ranges and units. Something like this...
template <int min_value, int max_value, typename type_tag>
class checked_integer;
struct distance_tag { };
struct time_tag { };
struct speed_tag { };
typedef checked_integer<1, 100, distance_tag> distance_t;
typedef checked_integer<1, 10, time_tag> time_t;
typedef checked_integer<1, 10, speed_tag> speed_t;
// add some other function or template specification that distance / time = speed
meters_t distance = 30;
seconds_t time = 5;
speed_t speed = distance / time;
meters_t whoops = distance / time;
meters_t distance = 100000;
Anyone noticed how similar PL*Sql (Oracle) and TSql (Sql Server) are to ADA? Even Oracle Forms uses an ADA like language for all it's behind the scene's coding...
Are you telling me that you can't do enterprisey architectures in ADA? But where would we get our daily dose of humor (http://thedailywtf.com/ from then? This has to be stopped!
Here's another Ada experience:
:-), and then wrote 5 lines of code. The 'control' doing his code in C spent the same amount of time writing 200 lines of code.
Where I used to work, we did an IR&D project on incremental formal verification, using SPARK (a provably correct subset of Ada, see http://www.praxis-his.com/sparkada/ ) We were implementing a subset of the SCPS protocol, a variation on TCP designed for satellites and large latency networks. I coded the sequential processing in SPARK, and added 'normal Ada' for the concurrent/timing related aspects. (This is before SPARK added support for concurrency.) As our control, another guy with experience doing protocols coded the same stuff in C.
One thing we needed to code was the timeout in TCP/SCPS, i.e. "send a message and wait N milliseconds. If you timeout, generate an error." I knew this should be doable with Ada95 Asynchronous Transfer of Control, a feature of the language I hadn't used before. I read the RM, talked to Ben Brosgol
Guess which implementation had a bug in it?
But by conventional cost/size/effort/productivity models, he was 40 times more productive that week than I...
dave
People rarely add apples to oranges. But they often screw up and add count-of-apples to count-of-oranges, i.e. most type errors are made with scalar types. And that's a problem I have with Java. In Ada everything can be strongly typed (and you learn from experience just how valuable typing scalars can be after a while...)
In C, things like typedef and lint can be your friends here.
But in Java, scalars are weakly typed, and I haven't seen any practical way to add this on, e.g. with a standardized pre-processor. I think that's a significant weakness in Java.
dave
ADA failed in use as a general purpose language only because it was never intended to be one. It was designed for the US Military as a language for aircraft autopilots. Until ADA, every new aircraft autopilot's chipset was programmed with its own proprietary assembler and compiler. There were nasty crashes because each new aircraft essentially was running version 1.0 of the autopilot. ADA was designed from the ground-up to be for "man-rated" systems - systems where lives were on the line if the system failed. With ADA, each new autopilot's bidder merely had to provide ADA for the chipset and existing, proven autopilot code could be re-used. ADA is outstanding for that purpose and saved the military a ton of money and issues. ADA is designed such that it can handle and restart after virtually any kind of failure. And it is designed such that, if a program compiles, it will almost never fail. It may not do what you want it to, but it will almost never outright crash. Unfortunately, the US Congress saw the success ADA had and decided that all new US code should use the same approach. But ADA is a poor language for general usage for several reasons. One is that wants to be the ultimate supervisor rather than subject to another supervisor. Another problem is that there are absolutely no standard bindings or API's for business processes like reporting, databases, sorting, etc. And a third problem is that it takes far longer to program since constructs that save time to program but might be done incorrectly do not even exist in the language. But an air traffic control system doesn't need business API bindings, doesn't have to be just one more sub-program in a general purpose OS environment, and can endanger thousands of lives if it fails. That is a near perfect match for ADA. I have written ADA for military projects and have professional code running in 13 other computer languages over the last 30 years, so I feel qualified to comment on this. People who compare it to dissimilar languages like C, C++, T-SQL (give me a break), either do not know ADA or never really understood it. It really is the right language for a man-rated system.
It is not surprising that Ada is going through a "rediscovery" phase. A few days ago I was discussing with a professional software developper the pros and cons of Java and I realized that C programmers who migrated to Java did so for some of its features that Pascal had long before Java was even "born". It is likely that most Java programmers were never exposed to either of Ada, Pascal, or Delphi. Perhaps it's not too late; a fully featured, non-time limited, free version of Delphi (Turbo Delphi Explorer http://cc.codegear.com/free/turbo) is available from Codegear, the Borland spin-off.
Many commercial flight management systems are written in Ada. Ada is a MUST HAVE skill if you want to work in Aerospace, either military or commercial.
Friends help you move
Good friends help you move Bodies
Electricity is NOT what the "oil addiction" is about. Afaict no first world country gets a significant portion of their electrity from oil because it just doesn't make economic sense to generate electricity from it. Most electricity comes from coal, natural gas, dam based hydro or nuclear.
Afiact europe tends to be less sensitive to oil price increases than the USA because of tax structures that have discouraged SUV ownership and better public transport networks. but we europeans would definately be hit hard by a major oil shortage.
note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register
Ada was always a really nice teaching language as it forces the programmer to be very specific in thinking about why and how their code is going to work. An interesting property is that the more "clever" you try and get the more verbose you have to be (casts and conversions have to be explicit). This means that if actually required they tend to get encapsulated behind a clean interface just because they are so ugly.
You'll hate the compiler, but you'll love the whip and jackboots.
cheap labor conservatives - they want to keep you hungry enough to be thankful for minimum wage.
Actually the only OO features missing Ada 83 where late binding and inheritance for record types.
.31);)
Ada 83 had:
* Operator overloading.
* Function overloading.
* Generics.
* Inheritance for primitive types (type Day_Of_Month is new Integer range (1
The later became important later when inheritance "as we know it" was added: It fittest perfectly into the existing type system.
Saying all that: Late binding was the "hype" and it was missing.
Martin
Pascal was first. Ada and Delphi are both Pascal decendens - that is Ada and Delphi are sibelings.
Martin
For those who don't know enough Python to see this as a troll -- this could only happen in such a way as to cause undesired flow control (rather than an up-front parse error) if one isn't following PEP-8 conventions and is mixing tabs and spaces. Newer interpreters will stop this from happening anyhow, and static checking tools for Python will catch it (and have caught mixed-whitespace conditions for ages).
If one is following PEP-8, a single space being wrong could cause an up-front syntax error, but never invalid runtime behavior.
So, to the parent -- if you genuinely allowed code that won't pass pychecker (or even allow a module import w/o raising a syntax error) onto a production system, you might as well upload C source to a critical system without so much as compiling it on dev or QA hosts first; either way, you deserve what's coming to you.