1 / 37

Advanced Programming

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. Instructor. Giuseppe Attardi

Télécharger la présentation

Advanced Programming

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Università di Pisa Advanced Programming Giuseppe Attardi DipartimentodiInformatica Universitàdi Pisa

  2. 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

  3. Instructor Giuseppe Attardi Office: 292 Mail: attardi@di.unipi.it

  4. Introduction • Programming in the 21 century • Software as complex as ever • Command line interface not enough • Data comes from multiple sources: structured (DB) and unstructured • Single computer not enough • Software development is a group activity • Deployment on Web or mobile devices

  5. Requirements • Cannot start from scratch • Reusable components are needed • OS + libraries not enough

  6. Elements of a Solution • Software Framework • Component Model • Execution Environment

  7. 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

  8. Software Architect Duties • 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”

  9. Application Framework • A software framework used to implement the standard structure of an application for a specific development environment

  10. 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

  11. 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

  12. 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

  13. Examples of Frameworks • GUI • MFC • Gnome • Qt • General • Android • Spring • Cocoa • Web • ASP.Net • GWT • Rails • Concurrence • Hadoop Map/Reduce

  14. Class Hierarchy (NextSTEP 1988)

  15. Cocoa (2013)

  16. 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

  17. Framework Design • Intellectual Challenging Task • Requires a deep understanding of the problem domain • Requires mastering of software patterns, OO methods and polymorphism in particular

  18. Design Pattern • More abstract than frameworks • Frameworks can be embodied in code, but only examples of patterns can be embodied in code • Design patterns explain the intent, trade-offs, and consequences of a design • Smaller architectural elements than frameworks • A typical framework contains several design patterns but the reverse is never true. • Less specialized than frameworks • Frameworks always have a particular application domain • Design patterns can be used in nearly any kind of application

  19. Examples • Visitor • Publish/Subscribe • Factory • Dependency Injection • Chain of Responsibility • Observer • Iterator • Decorator

  20. Dependency Injection • Allows avoiding hard-coded dependencies and changing them • Allows selection among multiple implementations of a given dependency interface at run time • Examples: • load plugins dynamically • replace mock objects in test environments vs. real objects in production environments

  21. Course Objectives • Understand programming language technology: • Execution Models • Run-time • Analyze programming metaphors: • Objects • Components • Patterns • Learn advanced programming techniques • Understand their limits ad how to overcome them

  22. 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

  23. Syllabus

  24. 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

  25. 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

  26. Advanced Techniques • Generic Programming • C++ templates • C# Generics • Java Generics • Generative Programming • Metaprogramming • Reflection • Template • Aspect Oriented Programming • Generators

  27. Interoperability • Process level: interprocess communication • Language level: CORBA/IDL • Object level: DCOM

  28. Component Based Programming • COM • JavaBeans • .NET (Assembly, Reflection, Interfaces, Attributes) • OSGi

  29. Web Programming • Web Services, SOA • Web Frameworks • Web 2.0

  30. Web Services • XML, XML-Schema • SOAP, RPC, Rest • WSDL • UDDI

  31. Web Frameworks and Applications • Asp.Net • ADO.Net • J2EE • Java Server Faces • JQuery • AJAX: XHR, jQuery, YUI, GWT • Mashup and Service Oriented Architecture

  32. Scripting Languages • Perl • Python • JavaScript • PHP

  33. 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.

  34. Text Books jQuery in Action, B. Bibeault, Y. Katz, Manning, 2010.

  35. Assessment • Mid Term Paper: early November, one week homework • Term Paper: at the end of the course, 20 days homework

  36. 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 • Unit Testing Framework • State Charts

  37. Home Work • Develop a simple implementation of primitives: • void* malloc(size_t size) • void free(void*) • Assume to have available a block of memory of size MemSize starting at MemStart • Discuss the limits of the solution

More Related