Date post: | 30-Dec-2015 |
Category: |
Documents |
Upload: | spencer-jacobs |
View: | 213 times |
Download: | 0 times |
17.6.2003 Ada-Europe’2003
Ada as a Language
Ehud Lamm
The Open University of Israel
17.6.2003 Ada-Europe’2003
Context
• Current course: Software Engineering with Ada (Booch).
• Good, but perhaps not good enough.• Ada perceived as hindrance.• I examined several Java textbooks, and
discovered Lisokv’s Program Development in Java.
• What should be our next step?
17.6.2003 Ada-Europe’2003
Why & How
• Undergraduate SE course (CS students)
• Classic Software Design– Traditional approach (imperative, OOP)
• “Essentials of Software Engineering”– Modularity, Reliability, Readability, Flexibility,
Software Life Cycle– University education
17.6.2003 Ada-Europe’2003
Why & How
• Practical course
• Challenging design problems– Programming Should be Fun– Not just “getting it to work”– Students evaluate and re-evaluate their
designs.
• Make the language invisible
17.6.2003 Ada-Europe’2003
• Interface/Implementation
• Adequacy
• Operation Categories
• Exceptions
• Pre/Post Conditions
• Invariants
Course Outline
• Data Abstraction– ADT/ADO
• Generic Units
• Inheritance
• Basic Tasking
• Flexibility
• Parameterization
• Separate Compilation
• Combining abstractions
• Runtime Polymorphism
• Heterogenic collections
• Classwide/Dispatching
• IS-A (LSP)
• Composition (HAS-A)
17.6.2003 Ada-Europe’2003
Q1: Log file
Log Gen_Log
Event’Class
Filter’Class
Writer’Class Dual Buffering
17.6.2003 Ada-Europe’2003
Priority Queue
Priority QueuePriority Queue
Priority is (<>)Priority is priv.with func “<“(..)
array of queues sorted linked list
Q2: Priority Queue
17.6.2003 Ada-Europe’2003
generic
type Struct is lim. priv.
type Elem is priv.
with proc Insert
with proc Remove
…
package Any_Struct is
end;
Package Protect_Struct
protected type Struct
….
end;
Struct is new Any_Struct(<>)
17.6.2003 Ada-Europe’2003
with pack Any_Iter(<>)function Max(S) …
begin
Start(S);
while More_Elements(S) loop
….
Next(S);
end loop;
End;
pack BST
--Binary_Search_Tree
func BST.Max..
17.6.2003 Ada-Europe’2003
generic
type Item is priv.
package Sets is
type Set is abs. tagged null rec
…
end;
generic
with func “<“(I1,I2:Item);
package Sets.Sorted_List is
type Set is new Sets.Set with priv.
17.6.2003 Ada-Europe’2003
Does the choice of programming language really matter?
17.6.2003 Ada-Europe’2003
No
but...
17.6.2003 Ada-Europe’2003
In theory, there’s no difference between theory and practice; In
practice, there is.
17.6.2003 Ada-Europe’2003
‘Ideal’ Language
• Rich type system• Information hiding
– Explicit interfaces– Value semantics
• Genericity • Inheritance• Garbage collection• Design by Contract• First-class functions• Rich libraries, variety of
tools
Ada Java
17.6.2003 Ada-Europe’2003
Language Community
• Libraries
• Reusable code
• Tools (e.g., VS IDEs, diagramming, DbC, etc.)
• Tutorials/textbooks
• etc.
17.6.2003 Ada-Europe’2003
Problematic features (Ada)(in my experience)
• Many kinds of Interfaces
• Access to subprograms (accessibility)
• Controlled (vs. other approaches to destructors/constructors)
• Controlled & Generics
• Controlling child visibility
• Verbosity (exercises take too much time)
17.6.2003 Ada-Europe’2003
Problematic features (Java)
• Conjecture. Let me know what you think.
• The type system
• Reference semantics
• Low level concurrency
• Generics are coming..
17.6.2003 Ada-Europe’2003
The textbooks
• A language can’t survive without good textbook, for all levels and needs.
• Liskov’s book is much more suited for an academic SE course.
17.6.2003 Ada-Europe’2003
Conclusions
• Ada is still a strong candidate for a teaching language for SE
• Most of the technical problems can be solved rather easily.
• Better error messages should help with the remaining issues.
• The language isn’t the problem: Good News and Bad News
• Community and Cultural roadblocks
17.6.2003 Ada-Europe’2003
Conclusions
• Can we and should we try to change the way Ada is perceived in universities?
• How?– Evangelism– Textbooks– GNAT– etc.
17.6.2003 Ada-Europe’2003
Thank You
Any Questions?