Ada-Europe’2003 Ada as a Language Ehud Lamm The Open University of Israel
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?
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
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
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)
Ada-Europe’2003 Q1: Log file Log Gen_Log Event’Class Filter’Class Writer’Class Dual Buffering
Ada-Europe’2003 Priority Queue Priority is (<>) Priority is priv. with func “<“(..) array of queues sorted linked list Q2: Priority Queue
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(<>)
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..
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.
Ada-Europe’2003 Does the choice of programming language really matter?
Ada-Europe’2003 No but...
Ada-Europe’2003 In theory, there’s no difference between theory and practice; In practice, there is.
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 AdaJava
Ada-Europe’2003 Language Community Libraries Reusable code Tools (e.g., VS IDEs, diagramming, DbC, etc.) Tutorials/textbooks etc.
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)
Ada-Europe’2003 Problematic features (Java) Conjecture. Let me know what you think. The type system Reference semantics Low level concurrency Generics are coming..
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.
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
Ada-Europe’2003 Conclusions Can we and should we try to change the way Ada is perceived in universities? How? –Evangelism –Textbooks –GNAT –etc.
Ada-Europe’2003 Thank You Any Questions?