110 likes | 251 Views
Ada, the Language of Kings. Paradigm Presentation Shane Nelson and Rogan Magee 10/05/2011. History: Before 1983. Temperature Control in Nuclear Submarines (USS Nautilus). Inertial Guidance (Thor IRBM).
E N D
Ada, the Language of Kings Paradigm Presentation Shane Nelson and Rogan Magee 10/05/2011
History: Before 1983... Temperature Control in Nuclear Submarines (USS Nautilus) Inertial Guidance (Thor IRBM) Before 1983, the US Military used over 2000 domain specific languages, some obsolete and/or error prone, in embedded systems. The Department of Defense established the Higher Order Working Language Group in 1975 to research a modular, general purpose language. • In 1978, they established the Steelman Language Requirements (mainly reliability, maintainability, and efficiency) to judge potential languages. • No existing language was adequate. So they hosted a competition... GPS in Avionics (Boeing 747-230B)
Started in 1977: accepted 17 proposals. Judged by the HOWLG under Col. William A. Whitaker. The Semifinalists History: The Competition The Organizers (HWOLG) Lt. Col. Whilliam A. Whitaker USAF – (chairman) David Fisher, Secretary Cmdr. Jack Cooper (with Bernie Zempolich And Robert Kahane) Navy Representative(s) Bill Carson, ARPA Rep. Maj. Tom Jarrell, USAF Paul Cohen, DCA Lt. Col. Schamber, Marine Corps. Maj. Breault, Army Benjamin Brosgol (Intermetrics)- Cambridge, MA: Veterans of MIT's Instrumentation Lab-(Q Guidance Systems) Jay Spitzen (SRI International)- Menlo Park, CA General Science Research (Packet Switched Radio, Software Fault-Tolerance) Jean Ichbiah (CII Honeywell Bull)- Paris, France: Design Computers-(Micral) John Goodenough (SofTech)-Lowell, MA Behind Computer Aided Design (CAD) Systems
After declaring Green the winners, they sorted through many names and settled on Dod-1. • Jack Cooper thought the name's “military overtones” would discourage non-military users, so he proposed Ada. History: What about that name? The Countess Jacquard Loom (punch cards) • Named after Ada Augusta King, Countess of Lovelace (1815-1852) • Daughter of Lord Byron, incredibly gifted and eccentric mathematician. • Worked on documentation for Charles Babbage's Analytical Engine • Wrote “first program” ever – counting algorithm for machine Trial model of the Analytical Engine
History: Immediate Apps. - 1983 Ada's final review and formation finished in 1983 – with the publication of MIL-STD-1815A, after which it was used almost immediately in many military, commercial, and industrial systems. -Ada used in French rail systems (TGV), “The train that saved French railways”, SNCF pres. Louis Gallois -Ada used in West Virginian hot steel rolling mills
Ada is... Language Details: Data Structures Strongly typed: Ada does not allow for cross-type operations... Care must be taken when dealing with types. • Types are: • static – checked at compile time*, • strong – incompatible with each other, • equivalent by name – not by implementation at bit level (an integer is an integer), • (can be) abstract – • "tagged type intended for use as an ancestor of other types, but which is not allowed to have objects of its own" • (user has control) Predefined Types: Integer, Float, Duration, Character, String, Boolean, System.Address, System.Storage_Elements (address arithmetic and memory management)
Generics: Ada allows for user defined types and functions of unknown type - generics. The user can either build a new type from existing types or develop one entirely his own. Ada offers low level control like C++. Language Details: Generics
Language Details: Unique Data Structure Packages: "program units that allow the specification of groups of logically related entities. Typically, a package contains the declaration of a type (often a private type or private extension) along with the declaration of primitive subprograms of the type, which can be called from outside the package, while their inner workings remain hidden from outside users".
Language Details: Control Structures Procedure – (like a C++ void function) statement which doesn't return Function – block of code which does return If-Else – Both if and if-else Case – compares one specific to another Loops – Both for, while, and varied(see below) Goto and Returns – transfers control after label(goto)