Lect01 120922175045-phpapp01

353 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
353
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
13
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Lect01 120922175045-phpapp01

  1. 1. Programming Languages are Not the Same Dr.Haitham A. El-Ghareeb Information Systems Department Faculty of Computers and Information Sciences Mansoura University helghareeb@gmail.com September 23, 2012Dr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 1 / 29
  2. 2. Programming LanguagesDr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 2 / 29
  3. 3. Programming Languages used for controlling the behavior of a machine (often a computer).Dr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 2 / 29
  4. 4. Programming Languages used for controlling the behavior of a machine (often a computer). programming languages conform to rules for syntax and semantics.Dr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 2 / 29
  5. 5. Programming Languages used for controlling the behavior of a machine (often a computer). programming languages conform to rules for syntax and semantics. There are thousands of programming languages and new ones are created every year.Dr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 2 / 29
  6. 6. Programming Languages used for controlling the behavior of a machine (often a computer). programming languages conform to rules for syntax and semantics. There are thousands of programming languages and new ones are created every year. Few languages ever become sufficiently popular that they are used by more than a few peopleDr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 2 / 29
  7. 7. Programming Languages used for controlling the behavior of a machine (often a computer). programming languages conform to rules for syntax and semantics. There are thousands of programming languages and new ones are created every year. Few languages ever become sufficiently popular that they are used by more than a few people professional programmers may use dozens of languages in a career.Dr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 2 / 29
  8. 8. Basis for Comparing Programming Languages 1 Object Orientation 2 Static vs. Dynamic Typing 3 Generic Classes 4 Inheritence 5 Feature Renaming 6 Method Overloading 7 Operator Overloading 8 Higher Order Functions & Lexical Closures 9 Garbage CollectionDr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 3 / 29
  9. 9. Basis for Comparing Programming Languages (Cont.) 10 Uniform Access 11 Class Variables/Methods 12 Reflection 13 Access Control 14 Design by Contract 15 Multithreading 16 Regular Expressions 17 Pointer Arithmetic 18 Language Integration 19 Built-In SecurityDr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 4 / 29
  10. 10. Object OrientationThere are several qualities for Object Oriented Languages: Dr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 5 / 29
  11. 11. Object OrientationThere are several qualities for Object Oriented Languages: Encapsulation / Information Hiding Dr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 5 / 29
  12. 12. Object OrientationThere are several qualities for Object Oriented Languages: Encapsulation / Information Hiding Inheritance Dr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 5 / 29
  13. 13. Object OrientationThere are several qualities for Object Oriented Languages: Encapsulation / Information Hiding Inheritance Polymorphism/Dynamic Binding Dr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 5 / 29
  14. 14. Object OrientationThere are several qualities for Object Oriented Languages: Encapsulation / Information Hiding Inheritance Polymorphism/Dynamic Binding All pre-defined types are Objects Dr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 5 / 29
  15. 15. Object OrientationThere are several qualities for Object Oriented Languages: Encapsulation / Information Hiding Inheritance Polymorphism/Dynamic Binding All pre-defined types are Objects All operations performed by sending messages to Objects Dr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 5 / 29
  16. 16. Object OrientationThere are several qualities for Object Oriented Languages: Encapsulation / Information Hiding Inheritance Polymorphism/Dynamic Binding All pre-defined types are Objects All operations performed by sending messages to Objects All user-defined types are Objects Dr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 5 / 29
  17. 17. Static vs. Dynamic TypingDr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 6 / 29
  18. 18. Static vs. Dynamic Typing The debate between static and dynamic typing has raged in Object-Oriented circles for many years with no clear conclusion.Dr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 6 / 29
  19. 19. Static vs. Dynamic Typing The debate between static and dynamic typing has raged in Object-Oriented circles for many years with no clear conclusion. Proponents of dynamic typing contend that it is more flexible and allows for increased productivity.Dr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 6 / 29
  20. 20. Static vs. Dynamic Typing The debate between static and dynamic typing has raged in Object-Oriented circles for many years with no clear conclusion. Proponents of dynamic typing contend that it is more flexible and allows for increased productivity. Those who prefer static typing argue that it enforces safer, more reliable code, and increases efficiency of the resulting product.Dr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 6 / 29
  21. 21. Static vs. Dynamic Typing The debate between static and dynamic typing has raged in Object-Oriented circles for many years with no clear conclusion. Proponents of dynamic typing contend that it is more flexible and allows for increased productivity. Those who prefer static typing argue that it enforces safer, more reliable code, and increases efficiency of the resulting product. A dynamic type system doesnt require variables to be declared as a spe- cific type. Any variable can contain any value or object.Dr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 6 / 29
  22. 22. Static vs. Dynamic Typing The debate between static and dynamic typing has raged in Object-Oriented circles for many years with no clear conclusion. Proponents of dynamic typing contend that it is more flexible and allows for increased productivity. Those who prefer static typing argue that it enforces safer, more reliable code, and increases efficiency of the resulting product. A dynamic type system doesnt require variables to be declared as a spe- cific type. Any variable can contain any value or object. Statically-typed languages require that all variables are declared with a specific type.Dr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 6 / 29
  23. 23. Generic Classes Dr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 7 / 29
  24. 24. Generic Classes refer to the ability to parameterize a class with specific data types. Dr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 7 / 29
  25. 25. Generic Classes refer to the ability to parameterize a class with specific data types. A common example is a stack class that is parameterized by the type of elements it contains. Dr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 7 / 29
  26. 26. Generic Classes refer to the ability to parameterize a class with specific data types. A common example is a stack class that is parameterized by the type of elements it contains. it allows statically typed languages to retain their compile-time type safety Dr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 7 / 29
  27. 27. Generic Classes refer to the ability to parameterize a class with specific data types. A common example is a stack class that is parameterized by the type of elements it contains. it allows statically typed languages to retain their compile-time type safety Dynamically typed languages do not need parameterized types in order to support generic programming Dr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 7 / 29
  28. 28. Inheritence Dr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 8 / 29
  29. 29. Inheritence the ability for a class or object to be defined as an extension or specialization of another class or object. Dr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 8 / 29
  30. 30. Inheritence the ability for a class or object to be defined as an extension or specialization of another class or object. Most object-oriented languages support class-based inheritance Dr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 8 / 29
  31. 31. Inheritence the ability for a class or object to be defined as an extension or specialization of another class or object. Most object-oriented languages support class-based inheritance others such as SELF and JavaScript support object-based inheritance Dr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 8 / 29
  32. 32. Inheritence the ability for a class or object to be defined as an extension or specialization of another class or object. Most object-oriented languages support class-based inheritance others such as SELF and JavaScript support object-based inheritance A few languages, notably Python and Ruby, support both class- and object-based inheritance, in which a class can inherit from another class and individual objects can be extended at run time Dr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 8 / 29
  33. 33. Inheritence the ability for a class or object to be defined as an extension or specialization of another class or object. Most object-oriented languages support class-based inheritance others such as SELF and JavaScript support object-based inheritance A few languages, notably Python and Ruby, support both class- and object-based inheritance, in which a class can inherit from another class and individual objects can be extended at run time Though there are identified and classified as many as 17 different forms of inheritance. Even so, most languages provide only a few syntactic constructs for inheritance Dr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 8 / 29
  34. 34. Inheritence the ability for a class or object to be defined as an extension or specialization of another class or object. Most object-oriented languages support class-based inheritance others such as SELF and JavaScript support object-based inheritance A few languages, notably Python and Ruby, support both class- and object-based inheritance, in which a class can inherit from another class and individual objects can be extended at run time Though there are identified and classified as many as 17 different forms of inheritance. Even so, most languages provide only a few syntactic constructs for inheritance Multiple Inheritence Dr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 8 / 29
  35. 35. Feature RenamingFeature renaming is the ability for a class or object to rename one of itsfeatures (a term used to collectively refer to attributes and methods) thatit inherited from a super class. Dr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 9 / 29
  36. 36. Method Overloading Method overloading (also referred to as parametric polymorphism) is the ability for a class, module, or other scope to have two or more methods with the same name. Calls to these methods are disambiguated by the number and/or type of arguments passed to the method at the call site.Dr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 10 / 29
  37. 37. Operator Overloadingability for a programmer to define an operator (such as +, or *) foruser-defined types. Dr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 11 / 29
  38. 38. Higher Order Functions and Lexical ClosuresHigher Order Functions: functions that can be treated as if they were data objects. they can be bound to variables (including the ability to be stored in collections) can be passed to other functions as parameters can be returned as the result of other functionsLexical Closure: bundling up the lexical (static) scope surrounding thefunction with the function itself, so that the function carries itssurrounding environment around with it wherever it may be used. Dr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 12 / 29
  39. 39. Garbage Collectionmechanism allowing a language implementation to free memory of unusedobjects on behalf of the programmer Reference Counting Mark and Sweep Generational Dr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 13 / 29
  40. 40. Uniform AccessAll services offered by a mod- ule should be available through a uniformnotation, which does not betray whether they are implemented throughstorage or through computation. Dr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 14 / 29
  41. 41. Class Variables/MethodsClass variables and methods are owned by a class, and not any particularinstance of a class. This means that for however many instances of a classexist at any given point in time, only one copy of each classvariable/method exists and is shared by every instance of the class. Dr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 15 / 29
  42. 42. Reflectionability for a program to determine various pieces of information about anobject at run-time. Most object-oriented languages support some form ofreflection. This includes the ability to determine: the type of the object, its inheritance structure, and the methods it contains, including the number and types of parameters and return types. It might also include the ability for determining the names and types of attributes of the object. Dr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 16 / 29
  43. 43. Access Controlability for a modules implementation to remain hidden behind its publicinterface. Dr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 17 / 29
  44. 44. Design by ContractDesign by Contract (DBC) is the ability to incorporate important aspectsof a specification into the software that is implementing it. The mostimportant features of DBC are: Pre-conditions, which are conditions that must be true before a method is invoked Post-conditions, which are conditions guaranteed to be true after the invocation of a method Invariants, which are conditions guaranteed to be true at any stable point during the lifetime of an object Dr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 18 / 29
  45. 45. Multithreadingability for a single process to process two or more tasks concurrently. Dr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 19 / 29
  46. 46. Regular Expressionspattern matching constructs capable of recognizing the class of languagesknown as regular languages. Dr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 20 / 29
  47. 47. Pointer Arithmeticability for a language to directly manipulate memory addresses and theircontents. Dr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 21 / 29
  48. 48. Language IntegrationIt is important for a high level language (particularly interpretedlanguages) to be able to integrate seamlessly with other languages. Dr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 22 / 29
  49. 49. Built-In Securitylanguage implementations ability to determine whether or not a piece ofcode comes from a trusted source (such as the users hard disk), limitingthe permissions of the code if it does not. Dr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 23 / 29
  50. 50. Dr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 24 / 29
  51. 51. Quick Tour of C# Brief OverviewDr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 25 / 29
  52. 52. Namespacesnamespace Data Structur es . Professor {class Haitham {...}} Dr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 26 / 29
  53. 53. Classespublic class Haitham : Professor , IBlogger , IMozillaReMo {public string name ;public Haitham ( string name ) {this . name = name ; // more fields and methods here} Dr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 27 / 29
  54. 54. Attributesclass P r o f e s s o r H a i t h a m {//...[ Secre tOverri de ( ” . . . ” ) ] public void Teach ( Subjects ← d a t a s t ru c t u r e s 2 0 1 2 ) {//...}} Dr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 28 / 29
  55. 55. Interfacesinterface IMozillaReMo {IBrowser F a v o u r i te B r o w s e r { get ; s e t ; }void Browse ( ) ;} Dr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 29 / 29
  56. 56. Enumsenum CoursesITeach {DataStructuresAndAlgorithms ,SystemAnalysisAndDesign ,ResearchMethodologies ,DataBase}Dr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 30 / 29
  57. 57. Structstruct Faculty {public float name ;public Faculty ( String name ) {//...}} Dr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 31 / 29
  58. 58. Methodsclass Haitham {//...public void GoToLecture ( string LectureName ) {Point location = this . targe tDataba se . Find ( targetName ) ;this . FlyToLocation ( location ) ;}} Dr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 32 / 29
  59. 59. Virtual and Override Methodsclass GiantRobot {//...public virtual void TravelTo ( Point destination ) {this . TurnTowards ( destination ) ;w h i l e ( this . Location != destination ) {this . Trudge ( ) ;}}}class FlyingRobot : GiantRobot {//...public override void TravelTo ( Point destination ) {i f ( this . WingState == WingState . Operational ) {this . FlyTo ( destination ) ;// whee !} else {base . TravelTo ( destination ) ; // oh well . . .}}}Dr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 33 / 29
  60. 60. Methodsclass Haitham {//...public void GoToLecture ( string LectureName ) {Point location = this . targe tDataba se . Find ( targetName ) ;this . FlyToLocation ( location ) ;}} Dr.Haitham A. El-Ghareeb (CIS) Data Structures and Algorithms - 2012 September 23, 2012 34 / 29

×