12 ms·
This article promotes a popular misconception of the programming situation for defense projects in the 1970s. There may have been "hundreds of specialized progr
by wrp 7y ago
This article promotes a popular misconception of the programming situation for defense projects in the 1970s. There may have been "hundreds of specialized programming languages" in existence that could be used, but just a handful actually predominated. Most aeronautical projects were done in JOVIAL.
I've talked about this history with engineers from the 1960s-70s. They did not regard the introduction of Ada as a good thing. The JOVIAL language had been developed by engineers and modified through experience over several years to become something they were quite happy with. The impetus that led to Ada came from management and implementation was done by academics.
- hwayne 7y agoWelp, there's my rabbit hole for the week. I've never heard of JOVIAL before, and it looks like there's lot of interesting stuff here. Thank you!
- bdavis__ 7y agofortran with nice syntax and built in bit operations.
- galangalalgol 7y agoNice fixed point types too. A fixed point all to the right of the binary point to represent angles asa semicircle was useful. Table ovelays are evil though. I'd rather have rust than ada for the functional lineage along with the performance, but the thin stdlib combined with the difficulty of getting a crates.io mirror certified clean of malcious code makes it problematic.
- Skunkleton 7y agoNot to say Rust is ready for prime for safety critical systems, but both crates.io and the standard lib are optional for Rust.
- galangalalgol 7y agoI think it is probably closer to safety critcal than it is to the middleground of safety related, where the sloc hits millions so you want boost or a thick stdlib plus posix but its still controlled enough you develop airgapped and worry about number of library contributors, trustedness and mostly futile code inspections of entire libraries. Even for server backends the rust team has expressed concern about the security implications of having such deeply nested dependency trees with so many authors.
- jlarocco 7y agoAround 2008/2009 I was briefly (about 6 months) employed to write Jovial and 286 assembly language for software that controlled satellite communication base stations. Unfortunately I was laid off before I got to write very much of it, but it seemed like a neat (if cumbersome and old fashioned) language. Information about it is pretty hard to find, and there's no open source or free compilers that I know of, but here are some links I had saved. A 1980s style tutorial: https://apps.dtic.mil/dtic/tr/fulltext/u2/a142780.pdf https://apps.dtic.mil/dtic/tr/fulltext/u2/a142780.pdf The mil-spec: http://everyspec.com/MIL-STD/MIL-STD-1500-1599/download.php?spec=MIL-STD-1589C.014577.pdf http://everyspec.com/MIL-STD/MIL-STD-1500-1599/download.php?... An explanation of how it came to be: https://jovial.com/documents/p203-schwartz-jovial.pdf https://jovial.com/documents/p203-schwartz-jovial.pdf
- kjs3 7y agoWhile you're down there, you might as well check out Coral-66.
- AndrewKemendo 7y agoThis sounds perfectly on-brand with respect to how we do business in the government. The government has an extreme aversion to encouraging competing approaches or internal competition - largely because of budget concerns around double-work - which drives this behavior.
- bdavis__ 7y agoMany of the 'programmers' of those days lacked the sophistication and education to appreciate Ada. Just the mojo required to print an integer (having to instantiate a generic) was considered complicated Ada was also very slow to compile, on the order of 10 times slower than Jovial. (my experiences) Avionics systems back then were tiny. Jovial usually ran on a 16 bit processor. Ada enabled a certain maturity and correctness to the avionics domain.
- na85 7y agoI can sympathize with resistance to Ada in a sense: Big "enterprise-y" languages can feel unwieldy and cumbersome if you're used to bit-twiddling and struct-packing in something like C. But as the recent Boeing debacle has shown, the avionics domain is in need of greater sophistication and reliability. What it doesn't need is more hackery, as satisfying as that may be for the hardware hackers. Though Ada isn't a massive household name, I think its designers were vindicated by history.
- galangalalgol 7y agoWasn't the ill fated code itself written in Ada? That is essentially all that goes on boeing aircraft. I don't think a lack of software engineering rigor is to blame for the design mistake.
- na85 7y agoPossibly; I don't work for Boeing or their subcontractor. But I was getting at more of the general sense that as aircraft become more and more computerized we need more rigour and standardization of the sort that gave rise to Ada, and less of the aerospace equivalent of hacking things together in perl.
- deleted 7y ago[deleted]
- crucini 7y ago
- Gibbon1 7y ago> The impetus that led to Ada came from management and implementation was done by academics. Impression of mine back then was academics were busy designing their perfect languages to do data transformation while ignoring real world engineering needs and that not everyone had an unlimited account on the schools big iron mainframe.
- aledalgrande 7y agoSeems like "the next big thing" has existed in the tech world from the start. I remember using Ada 95 in university, after learning C++, Java and Python in other projects. It worked very well for concurrent processes, but it was so basic as a developer experience. In C++ (98 I think) I needed to build length dynamic arrays, in Ada 95 I had to build dynamic length strings.
- xeeeeeeeeeeenu 7y ago> in Ada 95 I had to build dynamic length strings. Ada95 did have dynamic strings, they were provided by Ada.Strings.Unbounded package.
- aledalgrande 7y agoInteresting. To be honest only used the language for a project!
- deleted 7y ago[deleted]
- hollerith 7y agoAda exists because of the US Department of Defense. In particular, it formed a working group, headed by a military officer, which >crafted the Steelman language requirements, a series of documents stating the requirements they felt a programming language should satisfy. Many existing languages were formally reviewed, but the team concluded in 1977 that no existing language met the specifications. Requests for proposals for a new programming language were issued and four contractors were hired to develop their proposals [1]. The success of the language resulting from this process was ensured by the D of D's strong desire for a standard programming language shared by all of its contractors. [1] https://en.wikipedia.org/wiki/Ada_(programming_language)#History https://en.wikipedia.org/wiki/Ada_(programming_language)#His...
- dreamcompiler 7y agoAs I've probably posted before, I was at a Dijkstra lecture in the early 80s where he put up one of his famous hand-drawn slides that said "Ada: The latest government boondoggle that will take 5 years and 5 million dollars to kill." [5 million dollars was a lot of money back then.] So yeah, even the academics didn't much care for Ada.
- paulddraper 7y agoWhat did Dijkatra like? Pascal?
- Someone 7y agoALGOL 60. https://en.wikipedia.org/wiki/Edsger_W._Dijkstra#Compiler_construction_and_programming_language_research https://en.wikipedia.org/wiki/Edsger_W._Dijkstra#Compiler_co...: ”Dijkstra was known to be a fan of ALGOL 60, and worked on the team that implemented the first compiler for that language. He was closely involved in the ALGOL 60 development, realisation and popularisation.” Also: Haskell and pascal over C++ and Java (https://www.cs.utexas.edu/users/EWD/transcriptions/OtherDocs/Haskell.html https://www.cs.utexas.edu/users/EWD/transcriptions/OtherDocs...)
- microtherion 7y ago…for CS instruction. I've never come across any indication that Dijkstra wrote actual code (in the sense of something executing on a computer) after 1970 or so. The algorithms in the EWD notes are all written in ALGOL style pseudocode. Dijkstra was the CS equivalent of the Patent Law concept of a "Non-Practicing Entity", which gave him great liberty to troll all programming languages without exposing his own choices or designs to corresponding scrutiny.
- dreamcompiler 7y agoThis nails it. Dijkstra sort of hated computers; he always hand-drew overhead projector transparencies for his lectures. He's also famous for saying we should call our field "Computing Science" because "Computer science is no more about computers than astronomy is about telescopes."
- naikrovek 7y agoI'm sure that's all true. There is something to be said for a language that was written to a spec from the beginning, however. That is a luxury that few languages today can claim; most language specs were written after the first version(s) of the language were implemented, and were written to match the implementation, not the other way around. Writing the specification first makes for a much cleaner language, though not always the most comfortable, if you put any weight in your own opinions. [I am speaking generally from here onwards and I am not looking for specific examples to the contrary. I know full well that there are exceptions to the generalizations below.] Lots and lots of engineers today would (and do) express complete comfort in their daily drivers of C and C++, while producing buffer overflow bugs and use-after-free bugs all the while. Maybe it isn't in the best interest of the software landscape to let developers choose the languages they use... We have, as a community, let our feeling that software development is an art dictate how we react and deal with new information; we overwhelmingly reject it. What we're doing now is so much more comfortable, and we feel like we know what we're doing with [language x] finally! Why would I want to overturn all that comfort? Software development is not an art, it is a science, and we've been ignoring the science part of that as we refuse to abandon our favorite language(s) for things that could easily be proven to be better, if we would just do the testing to determine performance numbers, ease of bug introduction, ease of maintenance, and so on. We call ourselves "software engineers" and we don't measure anything beyond the most rudimentary measurements. We DEFINITELY do not actively look to overturn our comfort in favor of finding a better language to use. We don't try to improve anything the moment that might mean that we switch languages, no matter how significant the long term advantages could be. We don't even think about what the long term advantages could be; we're too busy telling ourselves that we are smart and that we can do it in whatever language we are comfortable with.
- m463 7y agoWhen Ada came out it was a large intimidating language. The saying was "to learn Ada, it's best to know Ada first." I haven't touched it in a long time, but I remember some of the impressions it made on me when I first used it. The type system: I think you could do some really fancy things like: speed := miles_traveled / elapsed; You could use types to make speed type mph, miles_traveled be miles and elapsed be hours. the thing is, I think you had to create some conversion stuff for the "/" so that it allowed two types to be divided, returned a third type. unchecked conversion: no matter what you did, you had to interface with hardware. So there was a lot of unchecked_conversion() stuff to convert between basic machine stuff. argument lists: You couldn't have a printf() or any other varargs type stuff that I remember. This made interfacing with external libraries that needed this kind of stuff lots harder. (maybe there are ways to do this) there were things I really did like the package and package body stuff: You could implement a bunch of interfaces, and compile against the prototypes before the implementations were written. the attributes, like foo'Size and the system package let you write your code to be correct even if system types or machine types changed A lot of Ada is really tedious, but once you got over that, working with an existing project was usually really nice.
- choonway 7y agoproduction JOVIAL code was like.... 20 lines of comments. 1 line of code. 20 lines of comments. 1 line of code.
- ajxs 7y agoSpeaking of JOVIAL: I found this great talk by Jules Schwartz on the development of JOVIAL. https://youtu.be/sXjCqa4W4iQ https://youtu.be/sXjCqa4W4iQ It's a great, quite humorous watch.