490 likes | 672 Views
Università di Pisa. Advanced Programming. Giuseppe Attardi Dipartimento di Informatica Università di Pisa. Language is an instrument of human reason, not merely a medium for the expression of thought. G. Boole, An Investigation of the Laws of Thought, 1854 . Instructors. Giuseppe Attardi
E N D
Università di Pisa Advanced Programming Giuseppe Attardi DipartimentodiInformatica Universitàdi Pisa
Language is an instrument of human reason,not merely a medium for the expression of thought.G. Boole, An Investigation of the Laws of Thought, 1854
Instructors Giuseppe Attardi Office: 292 Mail: attardi@di.unipi.it Haoyuan Li Office: 373 Mail: li@di.unipi.it
Introduction • Programming in the 21 century • Software as complex as ever • Command line interface not enough • Data must be structured in a DB • Single computer not enough • Software development is a group activity
Requirements • Cannot start from scratch • Reusable components are needed • OS + libraries not enough
Elements of a Solution • Software Framework • Component Model • Execution Environment
More Complex Software • Object-Oriented Programming allows ever larger applications to be built • Require increased high-level application and system oversight • Multi-tier applications development increases the choices on how to build applications • A new Software Architect Role is needed
Software Architect • Creating, defining or choosing an application framework • Creating the component design • Structure a complex application into pieces • Understand the interactions and dependencies among components • Select the platform based on cost/performance criteria • Organize and supervise the “construction site”
Application Framework • A software framework used to implement the standard structure of an application for a specific development environment
Software Framework • A collection of common code providing generic functionality that can be selectively overridden or specialized by user code providing specific functionality • Frameworks, like software libraries, provide reusable abstractions of code wrapped in a well-defined API
Framework Features • Inversion of control • unlike in libraries, the overall program's flow of control is not dictated by the caller, but by the framework • Hollywood Principle: Don’t call us, we’ll call you • Default behavior • Extensibility: usually by selective overriding • Non-modifiable framework code
OO Software Framework • Object-oriented programming frameworks consists in a set of abstract classes • An application can be built simply inheriting from pre-existing classes in the framework • Instantiation of a framework consists of composing and subclassing the existing classes
Examples of Frameworks • GUI • MFC • Gnome • Qt • General • Spring • Web • ASP.Net • GWT • Rails
Benefits of Frameworks • Drives solution • Dictates how to fill-in-the-blanks • Helps solving recurring problems • Designed for reuse • High value, since reduces cost of development
Framework Design • Intellectual Challenging Task • Requires a deep understanding of the problem domain • Requires mastering of software patterns, OO methods and polymorphism in particular
Course Objectives • Understand programming language technology: • Execution Models • Run-time • Analyze programming metaphors: • Objects • Components • Pattern • Learn advanced programming techniques • Understand their limits ad how to overcome them
Course Objectives • Explain how high level programming concepts and metaphors map into executable systems and which are their costs and limitations • Acquaint with modern principles, techniques, and best practices of advanced software construction • Introduce techniques of programming at higher abstraction levels, in particular generative programming, component programming and web computing • Present state-of-the-art frameworks incorporating these techniques
Programming Language Foundations • Syntax, Parsing, Abstract Syntax Tree, Parser Generators • Names, Scope, Binding • Parameter Passing • Static and Dynamic Allocaltion: Stack, Heap • Types, Inheritance, Polymorphism, Overloading • Delegates, Closures • Exception Handling
Run-time Systems • Virtual Execution Environment • Memory Management • Thread Management • Exception Handling • Security • Debugging Support • AOT and JIT Compilation • Dynamic Link/Load • Reflection • Verification • Language Interoperability
Advanced Techniques • Generic Programming • C++ templates • C# Generics • Java Generics • Generative Programming • Metaprogramming • Reflection • Template • Aspect Oriented Programming • Generators
Interoperability • Process level: interprocess communication • Language level: CORBA/IDL • Object level: DCOM
Component Based Programming • COM • JavaBeans • .NET (Assembly, Reflection, Interfaces, Attributes) • OSGi
Web Programming • Web Services, SOA • Web Frameworks • Web 2.0
Web Services • XML, XML-Schema • SOAP, RPC, Rest • WSDL • UDDI
Web Frameworks and Applications • Asp.Net • ADO.Net • J2EE • Java Server Faces • AJAX: XHR, YUI, GWT • Mashup and Service Oriented Architecture
Scripting Languages • Perl • Python • JavaScript • PHP
Text Books Programming Language Pragmatics, third ed., Michael L. Scott, Morgan-Kaufmann, 2009. Generative Programming: Methods, Tools, and Applications, Krzysztof Czarnecki, Ulrich Eisenecker, Addison-Wesley, 2000. Object Thinking , David West, Microsoft Press, 2004.
Assessment • Mid Term Paper: early November, one week homework • Term Paper: at the end of the course, one month homework
Run-Time Environments • Java Virtual Machine • .NET Common Language Runtime • Provide a virtual execution environment • Exposes a structure organized into elements • Not a simple abstraction of physical resources
Controlling execution • Avoid damages • Install/uninstall is a nightmare • Component software?
Benefits • Programmers • Use of library and tools • Shorter integration time • Higher productivity • Tool Developers • Avoid the need to care about infrastructure and interoperability • Administrators and Users • Benefit from packages solutions • Independence from processors or OS
Common Language Infrastructure • Exposes all items in a unified type system • Packages elements in self-describing units • Loads and resolves interdependencies at runtime • Exposes information that allows verifying the type-safety • Execution Engine enforces politics • Metadata available at runtime enables dynamic and extensible solutions
Question • Is it feasible to build a runtime common to all programming languages?
More in detail • Prolog • How to implement logic variable? • Can one use the Warren-Abstract-Machine? • PHP 3 • Why assignment has unusual behavior? • LISP • How to handle multiple-values?
Prolog example append(X, Y, Z) :- append(NIL, Y, Y) :- append([A . X], Y, [A . Z] ) :- append(X, Y, Z). :- append([a . b . c], [d . e], R) R = [a . b . c . d . e]
Prolog backtrack :- append(X, Y, [a . b]) :- append(X, NIL, [a . b]) X = NIL Y = [a . b] X = [a] Y = [b] X = [a . b] Y = NIL
PHP Assignement $str = ‘Ciao.’; $str2 = $str; $str{strlen($str) – 1} = ‘!’; echo $str2; • $var = $othervar • Performs copy of the value of $othervar • $var = &$othervar • Assignment by reference
Control • Can we implement tail-recursion in C? • How to handle synchronization? • Function pointers? • How to invoke an arbitrary function given a list of arguments?
General Function Invoker invoke(fun, argn, arglist) { if (n==0) return f(); else if (n==1) return f(arg[0]); else return fun(arg[0], arg[1], .. , arg[n-1]); }
Basic Data Types • Strings in C, Pascal and C++ are different • Array in row or column order?
Language Interoperability • C# and Cobol bark at each other
C# dog using System; public class Dog { public virtual void RollOver () { Console.WriteLine("Scratch my tummy."); Bark(); } public virtual void Bark () { Console.WriteLine("WOOF WOOF (C#)"); } }
Cobol BigDog 000010 CLASS-ID. BigDog INHERITS Dog. 000020 ENVIRONMENT DIVISION. 000040 CONFIGURATION SECTION. 000050 REPOSITORY. 000060 CLASS Dog. 000070 OBJECT. 000080 PROCEDURE DIVISION. 000090 METHOD-ID. Bark OVERRIDE. 000160 PROCEDURE DIVISION. DISPLAY "WOOF WOOF (COBOL)". 000210 END METHOD Bark. 000220 END OBJECT. 000230 END CLASS BigDog.
Barfing dogs public class Demo{ public static void Main() { Dog d = new Dog(); BigDog b = new BigDog(); d.RollOver(); b.RollOver(); }}
Final Term Paper • Aims at exercising ability to conceive and implement full solutions to a nontrivial problem • Examples: • ASP Code generator with regular expression matcher • Implement a DSL for handling persistent object containers • SOAP protocol and SOAP server • Code generator for searching an object DB • Xpath and XSLT Intrepreter • Language for generating network protocols • AJAX Framework
Home Work • Develop a simple implementation of primitives: • void* malloc(size_t size) • void free(void*) • Discuss the limits of the solution