• Save
Programming Paradigms
Upcoming SlideShare
Loading in...5
×
 

Programming Paradigms

on

  • 10,950 views

This presentation will introduce you to programming languages that support different programming paradigms and to give you the knowledge of basic concepts and techniques that will allow them to ...

This presentation will introduce you to programming languages that support different programming paradigms and to give you the knowledge of basic concepts and techniques that will allow them to differentiate between various programming paradigms.

Statistics

Views

Total Views
10,950
Views on SlideShare
10,195
Embed Views
755

Actions

Likes
11
Downloads
0
Comments
2

22 Embeds 755

http://www.ustudy.in 292
http://wiki.directi.com 198
http://sqlandsiva.blogspot.com 106
http://sqlandsiva.blogspot.in 34
http://careers.directi.com 30
http://ustudy.in 25
http://janeve.wordpress.com 21
http://www.slideshare.net 16
http://explainpoint.blogspot.in 9
http://sqlandsiva.blogspot.co.uk 5
http://sqlandsiva.blogspot.be 3
http://sqlandsiva.blogspot.mx 3
http://explainpoint.blogspot.com 2
http://sqlandsiva.blogspot.com.au 2
http://sqlandsiva.blogspot.ca 2
http://sqlandsiva.blogspot.dk 1
http://sqlandsiva.blogspot.com.es 1
http://sqlandsiva.blogspot.co.il 1
http://sqlandsiva.blogspot.fr 1
http://web1.fairfield-h.schools.nsw.edu.au 1
http://paulszulc.wordpress.com 1
http://sqlandsiva.blogspot.sg 1
More...

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…
  • Hey JeanLuc_88! To download the presentation you need to scroll down to the bottom of this page: http://wiki.directi.com/display/DEV/CodeCamp%2C+IIT+Techfest+%2709, where you will see a list of attached files. Pick the one on Programming Paradigms.

    -Shaheen Peerbhai
    Community Evangelist
    Are you sure you want to
    Your message goes here
    Processing…
  • You stated :

    'Intelligent People. Uncommon Ideas. Retrospective!!! janeve.g@directi.com & nilesh.m@directi.com http://directi.com http://careers.directi.com Download slides: http://wiki.directi.com '

    But onceI went there (http://wiki.directi.com), I was sent back to your pres on slide share that is not downloadable?


    Please show me how to download it then! or allow download from slideshare directly.


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