Ada, Scheme, REmory Wingard
Ada
History• Department of Defense in search of high
level language around 1975.
• Requirements drafted for the language.
• Competition between vendors to produce language narrowed down to four.
• Cii-Honeywell/Bull's language design won.(1979)
History cont.
• Large requirements called for a large language.
• Was not released to the public during testing.
• Dr. Jean Ichbiah headed the French team
• Based on Pascal
The Compiler
• Compilers for Ada were not developed until four years after the language was completed.
• Compilers are trademarked.
• Slow compile-time and run-time performance in the beginning.
Versions
• Original: Ada 83
• Ada 95
• Ada 2005
• Current version: Ada 2012
Usage
• Embedded systems
• Modern principles of software engineering
• Large software systems
Structure of programs
• Programs composed of program units
• Program units have subprograms, packages, task units, protected units, and generic units.
• Units consist of two parts: specifications and the body
• Most can be compiled separately
Subprograms
• Used to express algorithms
• Two kinds: procedures and functions
• Procedure is a way to bring up actions
• Functions provide computation of a value.
Packages• Considered the highlight of Ada
• Program units that encapsulate a group of related declarations and control visibility.
• Supports definition of interfaces and implementations
• Information hiding and abstract data types
• Structure for larger systems
Exception Handling
• Based on PL/I and CLU
• Handled locally in the code so reference environment is the same.
• Inadequate for task.
• No extension to Ada 95 for exception handling.
Types
• Integer
• Character
• Boolean
• Float
• String
*Considered to be strongly typed*
• Readability?
• Writability?
• Cost?
RFunctional, Statistical Computing, Graphics, Data
Analysis
History
• Implementation of the S programming language
• Created by Ross Ihaka and Robert Gentleman
Advantages
• Open sourced
• Available across multiple platforms
• Ease of design of graphics
• Data analysis
Packages• Stores data sets and functions.
• Similar to classes in Java
• Functions in packages are related
• Large number of packages for many different purposes
• Only a handful loaded by default
Commands• Two forms: expressions assignments
• Expression are printed immediately, values are not stored
• Assignments pass values to variables, these results are not printed
• Commands can be grouped by braces
• Separation of commands done by semi-colons
expression/assignment examples
Objects
• Numeric vectors, character vectors, lists, functions
• Actually everything in R are objects
• example
Constants
• Building blocks for data objects
• Numbers, character values, and symbols
• examples.
Precedence rules• function calls and grouping expressions
• Index and lookup operators
• Arithmetic
• Comparison
• Formulas
• Assignment
• Help
Control Structures
• Conditional Statements
if (condition) true_expression else false_expression
Scheme
Overview
• Developed in the 70s at MIT
• An extension of LISP
• Uses: optimizing compilers, financial analysis packages, operating systems, and writing text editiors
The Interpreter
• Interactive
• Infinite read-evaluate-print loop
• Very small, increased reliability
Programs• Collection of functional definitions
• DEFINE
• binds names to a value
• binds names to lambda expressions
• prototypes
• expression
Programs cont.• Block structured
• keywords and variables are lexically scoped
• This makes the programs modular
• Increases readability and reliability
• Maintenance is easier
Programs cont.
• Scope of binding determined before evaluation of program by compiler
• Makes the code more efficient
Arithmetic
• Scheme uses prefix notation
• This simplifies precedence and associativity of operators
• example
Data Structures• Scheme uses lists rather than arrays
• Shown as sequences of objects surrounded by parenthesis.
• quote is used to tell the program that the list is to be treated as data and not a procedure
• List manipulation:
• car- returns the first element in a list
• cdr- returns the rest of the list
• cons- used to construct list
Advantages
• Portable
• Used to teach programming in high schools
• Very small and simplistic