Programming Paradigms
Upcoming SlideShare
Loading in...5
×
 

Programming Paradigms

on

  • 2,457 views

 

Statistics

Views

Total Views
2,457
Slideshare-icon Views on SlideShare
1,446
Embed Views
1,011

Actions

Likes
1
Downloads
33
Comments
0

5 Embeds 1,011

http://www.janeve.me 998
http://blog.janeve.me 10
http://www.slideshare.net 1
http://feeds.feedburner.com 1
http://translate.googleusercontent.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Programming Paradigms Programming Paradigms Presentation Transcript

    • Programming Paradigms ( http://www.directi.com | http://wiki.directi.com | http://careers.directi.com )‏ Licensed under Creative Commons Attribution Sharealike Noncommercial By, Janeve George [email_address] & Nilesh Mevada [email_address]
    • Creative Commons Sharealike Attributions Noncommercial Few Instruction
      • It's a workshop not a presentation !!!
      • Parking Lot
      • Perks
    • Creative Commons Sharealike Attributions Noncommercial Aim of the session
      • Introduction to programming concepts and techniques
      • Differentiate between various programming paradigms
      Q: Why there are so many programming paradigms? A: Q: Isn't there 'one language' that would suffice? A: Q: How can we deal with understanding so many paradigms? A:
    • Creative Commons Sharealike Attributions Noncommercial Flow of the session
      • Programming Paradigm Definition
      • Why bother about 'Programming Paradigms'?
      • Appreciating 'Programming paradigms'
      • Programming Concepts
        • An Overview
        • Eager and Lazy Evaluation
        • Procedures
        • Functions
        • External and Internal State
        • Concurrency
        • Static vs Dynamic Typing
      • Some Real-Life Problems
        • Search (Java vs Prolog)‏
        • Higher Order Functions (Java vs Haskell)‏
    • Creative Commons Sharealike Attributions Noncommercial Flow of the session
      • Programming Paradigm - Definition
      • Why bother about 'Programming Paradigms'?
      • Appreciating 'Programming paradigms'
      • Programming Concepts
        • An Overview
        • Eager and Lazy Evaluation
        • Procedures
        • Functions
        • External and Internal State
        • Concurrency
        • Static vs Dynamic Typing
      • Some Real-Life Problems
        • Search (Java vs Prolog)‏
        • Higher Order Functions (Java vs Haskell)‏
    • Creative Commons Sharealike Attributions Noncommercial Programming Paradigm - Definition
      • What are Programming Paradigms?
        • Fundamental style of computer programming. (wikipedia.org)‏
        • It serves as a pattern or model for a programming‏ language
      Function Oriented Object Oriented Logical Programming Java ML Haskell Prolog Mercury Oz Erlang Smalltalk
    • Creative Commons Sharealike Attributions Noncommercial Flow of the session
      • Programming Paradigm - Definition
      • Why bother about 'Programming Paradigms'?
      • Appreciating 'Programming paradigms'
      • Programming Concepts
        • An Overview
        • Eager and Lazy Evaluation
        • Procedures
        • Functions
        • External and Internal State
        • Concurrency
        • Static vs Dynamic Typing
      • Some Real-Life Problems
        • Search (Java vs Prolog)‏
        • Higher Order Functions (Java vs Haskell)‏
    • Creative Commons Sharealike Attributions Noncommercial Why bother about 'Programming Paradigms'?
    • Creative Commons Sharealike Attributions Noncommercial Why bother about 'Programming Paradigms'?
    • Creative Commons Sharealike Attributions Noncommercial Why bother about 'Programming Paradigms'?
    • Creative Commons Sharealike Attributions Noncommercial Why bother about 'Programming Paradigms'?
      • Tools (Programming Languages) may not suffice to deal with the real life problems.
        • They might not support the solution at all or only partially.
      • Learning new programming languages becomes easier
      • To bring innovations in programming technologies
    • Creative Commons Sharealike Attributions Noncommercial Flow of the session
      • Programming Paradigm - Definition
      • Why bother about 'Programming Paradigms'?
      • Appreciating 'Programming paradigms'
      • Programming Concepts
        • An Overview
        • Eager and Lazy Evaluation
        • Procedures
        • Functions
        • External and Internal State
        • Concurrency
        • Static vs Dynamic Typing
      • Some Real-Life Problems
        • Search (Java vs Prolog)‏
        • Higher Order Functions (Java vs Haskell)‏
    • Creative Commons Sharealike Attributions Noncommercial Appreciating 'Programming paradigms'
      • An example of how a trivial concept can affect/support a computation and hence a particular style of programming...
      Int X; Int Y = X; Print( Y );
        • Execution Flow
      ?
    • Creative Commons Sharealike Attributions Noncommercial Flow of the session
      • Programming Paradigm - Definition
      • Why bother about 'Programming Paradigms'?
      • Appreciating 'Programming paradigms'
      • Programming Concepts
        • An Overview
        • Eager and Lazy Evaluation
        • Procedures
        • Functions
        • External and Internal State
        • Concurrency
        • Static vs Dynamic Typing
      • Some Real-Life Problems
        • Search (Java vs Prolog)‏
        • Higher Order Functions (Java vs Haskell)‏
    • Creative Commons Sharealike Attributions Noncommercial Programming Concepts – An Overview Set of Programming Concepts Procedures Functions Higher/1 st Order Evaluation Eager/Lazy Variables Single/Multi store Scope Scope of variables Typing State Internal/External Objects Classes Concurrency & on & on & on.....
    • Creative Commons Sharealike Attributions Noncommercial Programming Concepts – An Overview Subset of Concepts Programming Model Set of Programming Concepts Programming Language(s)‏ Embraced by Followed by Embraced by Followed by
    • Creative Commons Sharealike Attributions Noncommercial Programming Concepts – An Overview Subset of Concepts OO Programming Model Set of Programming Concepts OO Programming Language(s)‏ Embraced by Followed by
      • Java
      • Ruby
      • Oz
      • C++
      • Scala
      • Etc...
      • Objects
      • Classes
      • Inheritance
      • Polymorphism
      • Explicit State
      • Etc...
      Embraced by Followed by
    • Creative Commons Sharealike Attributions Noncommercial Programming Concepts – An Overview Subset of Concepts Functional Programming Model Set of Programming Concepts Functional Programming Language(s)‏ Embraced by Followed by
      • Lazy/Eager Evaluation
      • Functions
      • Higher Order Func.
      • Etc...
      • Haskell
      • Erlang
      • ML
      • Scheme
      • Etc...
      Embraced by Followed by
    • Creative Commons Sharealike Attributions Noncommercial Programming Concepts – An Overview
    • Creative Commons Sharealike Attributions Noncommercial Programming Concepts – An Overview
    • Creative Commons Sharealike Attributions Noncommercial
      • Few important concepts
        • Eager Evaluation
        • Lazy Evaluation
        • Procedures
        • Functions
        • External State
        • Internal State
        • Concurrency
        • Static vs Dynamic Typing
      Programming Concepts – An Overview
    • Creative Commons Sharealike Attributions Noncommercial Programming Concepts – Eager Evaluation
      • An expression which is evaluated as soon as it gets bound to a variable
      • Importance
        • Simple
        • Commonly found
        • Easy implementation for languages
      • Problems
        • Expressions are always evaluated
      • Languages supporting easy evaluation
        • Almost all including java, c#, c, etc.
    • Creative Commons Sharealike Attributions Noncommercial Programming Concepts – Eager Evaluation .... List Gen ( int N ) { ArrayList list = new ArrayList(); list. add ( N ); list. addAll ( Gen (N+1) ); return list; } void myMethod () { List K = Gen (1); System.out. println ( "Elements: " + K. getElementAt ( 3 ) ); } ....
    • Creative Commons Sharealike Attributions Noncommercial Programming Concepts – Lazy Evaluation
      • An expression is evaluated only when needed
      • Also known as delayed evaluation or call-by-need.
      • Importance
        • To deal with potentially infinite data.
        • Generally, calculations are not repeated.
      • Problems
        • Difficult at glance
        • Difficult to predict time/space complexity
      • Languages supporting Lazy Evaluation
        • Haskell, Oz, Scheme, OCamel
    • Creative Commons Sharealike Attributions Noncommercial Programming Concepts – Lazy Evaluation declare fun lazy { Gen N} N | { Gen N+1} end declare K = { Gen 1} { Browse “Elements: ” + Nth K 3}
    • Creative Commons Sharealike Attributions Noncommercial Programming Concepts – Procedures
      • A code construct which can
        • Execute a set of statements in an order
        • Accept zero or more arguments
        • Return zero or more results
        • Produce a side effect
      • Importance
        • One of the most basic building block of any programming language
        • A means of telling the system how to execute some behavior
        • May be used as to abstract out functions, objects & classes
      • Languages that support procedures
        • C, C++, C#, Oz
      proc { Max X Y ?Z} if X>=Y then Z=X else Z=Y end end
    • Creative Commons Sharealike Attributions Noncommercial Programming Concepts – Procedures local Default MaxOrDefault in Default=10 proc { MaxOrDefault Arg ?Result} if Arg >= Default then Result = Arg else Result = Default end end local Result in { MaxOrDefault 5 Result} { Browse Result} end end
    • Creative Commons Sharealike Attributions Noncommercial Programming Concepts – Functions
      • A code construct which can
        • Execute a set of statements in a given order
        • Accept zero or more arguments
        • Returns only one result and no side effect
        • Pure functions avoid state and mutable data
      • Importance
        • A basic building block of many programming language
        • A means of telling the system how to execute some behavior
        • Can replicate a pure mathematical model
      • Languages that support Functions
        • Haskell, OCamel, ML, Oz
      fun { Max X Y} if X>=Y then Z=X else Z=Y end end Z = { Max 10, 20}
    • Creative Commons Sharealike Attributions Noncommercial Programming Concepts – Functions (Higher Order)‏
      • Higher Order Functions
        • Accepts functions as arguments along with other types
        • Can return a function as result
        • Ordering means...
          • 1st order :- having no functions as args
          • 2nd order :- can have 1st order functions as args
          • nth order :- can have n-1th order functions as args
        • We can build abstraction using Higher Order Functions
      map f [] = [] map f (x:xs) = f x : map f xs numbers = [ 7,9,13 ] inc x = x + 1 more_numbers = map inc numbers
    • Creative Commons Sharealike Attributions Noncommercial Programming Concepts – Functions (Higher Order)‏ listsum [] = 0 listsum (x:xs) = x + listsum xs listprod [] = 1 listprod (x:xs) = x * listprod xs fold op init [] = init fold op init (x:xs) = x `op` fold op init xs listsum = fold (+) 0 listprod = fold (*) 1
    • Creative Commons Sharealike Attributions Noncommercial Programming Concepts – External and Internal State
      • Explicit State
        • State remembrance across calls
        • Importance
          • One of the base concept for Object Orientation
      • Implicit state
        • Defined by the function for its internal calculations.
        • Importance
          • Storing temporary results which otherwise might require repetitive calls.
      • Languages that support external state
        • Object Oriented languages like Java, Smalltalk, etc
        • Languages that have global variables
      • Languages that support internal state
        • All languages that have variables in procedures / functions
    • Creative Commons Sharealike Attributions Noncommercial Programming Concepts – External and Internal State fun { Sum Numbers} Result = { NewCell 0} Input = { NewCell Numbers} proc { Sum } case @Input of nil then skip [] X | Y then Result := @Result + X Input := Y { Sum } end end in { Sum } @Result end
    • Creative Commons Sharealike Attributions Noncommercial Programming Concepts – Concurrency
      • Multiple and independent executions
      • From real-life problems point of view, the definition adds this clause “and communicates only when needed”
      • Importance
        • relates more to real-life problems
        • response time improved due to parallel executions
      • Problems
        • race condition
      • Languages that support concurrent execution
        • Java, Oz
      thread ConcurrentFlow1 = { GenerateNumbers 1 10} end
    • Creative Commons Sharealike Attributions Noncommercial Programming Concepts – Concurrency fun { GenerateNumbers FromArg ToArg} { Delay 100} if FromArg > ToArg then nil else FromArg | { GenerateNumbers FromArg+1 ToArg} end end thread ConcurrentFlow1 = { GenerateNumbers 1 10} end thread ConcurrentFlow2 = { GenerateNumbers 11 20} end { Browse ConcurrentFlow1} { Browse ConcurrentFlow2}
    • Creative Commons Sharealike Attributions Noncommercial Programming Concepts – Concurrency .... public void main(String[] args) throws InterruptedException { Temp temp = new Temp(); createAConcurrentFlow(1, 10); createAConcurrentFlow(11, 20); } .... private void createAConcurrentFlow( int FromArg, int ToArg) { new Runnable() { public void run() { try { new Temp().GenerateNumbers(FromArg, ToArg); } catch (InterruptedException e) { } } }; } ....
    • Creative Commons Sharealike Attributions Noncommercial Programming Concepts – Static Typing
      • Type checking is performed during compile-time
      • Variables should be defined before they're used.
      • Variables can be cast into other types
      • Variables don't get converted
      • Importance
        • Improved error-catching ability, efficiency, security
        • partial program verification
      • Problems
        • reducing expressiveness of the programming language
        • restrictions for the programmer on the programs he can write
      • Languages that use static typing
        • C, C++, C#, Java, ML, Pascal, Haskell
    • Creative Commons Sharealike Attributions Noncommercial Programming Concepts – Static Typing int num, sum; // explicit declaration num = 5; // now use the variables sum = 10; sum = sum + num;
    • Creative Commons Sharealike Attributions Noncommercial Programming Concepts – Dynamic Typing
      • Type checking is performed during runtime
      • It's not necessary to define the variable before used
      • Variables can be converted to other types implicitly
      • Importance
        • variables can be bound to any first-class-citizen in the lang. (proc, func, mix of data-types, etc.)‏
        • independent compilations of the program (since no type checking at compile time)‏
      • Problems
        • more type-error-prone code at run-time.
      • Languages that uses dynamic typing
        • JavaScript, Lisp, Perl, PHP, Prolog, Python, Ruby
    • Creative Commons Sharealike Attributions Noncommercial Programming Concepts – Dynamic Typing foo() { x = 1; x = 'hello'; }
    • Creative Commons Sharealike Attributions Noncommercial Flow of the session
      • Programming Paradigm Definition
      • Why bother about 'Programming Paradigms'?
      • Appreciating 'Programming paradigms'
      • Programming Concepts
        • An Overview
        • Eager and Lazy Evaluation
        • Procedures
        • Functions
        • External and Internal State
        • Concurrency
        • Static vs Dynamic Typing
      • Some Real-Life Problems
        • Search (Java vs Prolog)‏
        • Higher Order Functions (Java vs Haskell)‏
    • Creative Commons Sharealike Attributions Noncommercial Some Real-Life Problems – Prolog vs Java % % Facts % male(hrithik). male(shahrukh). male(salman). male(abhishek). male(akshay). male(aamir). female(diya). female(aishwarya). female(katrina). female(malaika). parent(hrithik,shahrukh). parent(hrithik,salman). parent(hrithik,diya). parent(shahrukh,abhishek). parent(shahrukh,akshay). parent(salman,aishwarya). parent(salman,katrina). parent(salman,aamir). parent(diya,malaika). % % Rules % father(X,Y) :- parent(X,Y), male(X). mother(X,Y) :- parent(X,Y), female(X). grandparent(X,Y) :- parent(X,Z), parent(Z,Y). paternalgrandfather(X,Y) :- father(X,Z), father(Z,Y). sibling(X,Y) :- parent(Z,X), parent(Z,Y). brothers(X,Y) :- sibling(X,Y),male(X),male(Y), + (X=Y). % % Queries % cmd: mother(diya,malaika) % Outupt: yes/no cmd: mother(Mother,Child). % Output: lists (mother,child) pair found in facts % according to associations defined
    • Creative Commons Sharealike Attributions Noncommercial Some Real-Life Problems – Statistics
    • Creative Commons Sharealike Attributions Noncommercial How to approach Programming Paradigm?
      • Our Way was...
        • Concepts first, Languages Later.
      • Other effective ways...
        • Mastering any one programming model (e.g. Object Oriented) and then comparing it with others (e.g. functional, procedural, etc.)‏
    • Creative Commons Sharealike Attributions Noncommercial References
      • Books
        • Concepts, Techniques & Models Of Computer Programming by Peter Van Roy & Seif Haridi
      • Links On Web
        • http://wikipedia.org
        • http://www.infocheese.com/programmingparadigms.html
    • Creative Commons Sharealike Attributions Noncommercial What we expect post this session
      • Experimentation with other programming languages
        • Functional language -> Haskell / ML / Scheme
        • Object Oriented language -> Java, C++, C#, Scala
        • Aspect Oriented language -> AspectJ, AspectC++
        • Logic language -> Prolog / Mercury
        • Mixed languages -> Scala, Oz
      • Sharing your experiences with us...
        • A testimonial
      “ I want to thank you and DIRECTI for conducting such a marvelous session and I am very much indebted for that. I fell in love with LISP programming language and found that it was very much ideal for signal processing algos. The approach u have suggested was just great and the book you have suggested was really really great.” - Chinni Krishna, Mukt '08 Session Attendee
    • Questions??? [email_address] & [email_address] http://directi.com http://careers.directi.com Download slides: http://wiki.directi.com
    • Retrospective!!! [email_address] & [email_address] http://directi.com http://careers.directi.com Download slides: http://wiki.directi.com