Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
© Acism Software Private Limited
Technology Roundup
Historical Perspective
to Understand
New Age Technologies
Better
Ashis...
© Acism Software Private Limited
Agenda

The rise of Programming Languages

Paradigms

Takeaways
© Acism Software Private Limited
The Rise of Programming Languages
© Acism Software Private Limited
FORTRAN (1956)

Developed at IBM

Proposal by John W Backus to develop high
level langu...
© Acism Software Private Limited
ALGOL (1958)

The dawn of structured programming (as
against goto spaghetti code)

Deve...
© Acism Software Private Limited
LISP (1958)

History
− Invented by John McCarthy while he was at MIT
− First implemented...
© Acism Software Private Limited
COBOL (1960)

Proposed to Pentagon in 1959

Max use of English, machine independent

A...
© Acism Software Private Limited
Imperative
Low
level
FORTRAN
1956
Assembly
COBOL
1960
LISP
1958
Structured
ALGOL
1958
© Acism Software Private Limited
Basic (1964)

Beginner's language – aimed at students from
non-computer background

Dev...
© Acism Software Private Limited
SIMULA (1967)

Stands for Simula 1 and Simula 67

Developed at Norwegian Computing Cent...
© Acism Software Private Limited
Pascal (1970)

Designed by Niklaus Wirth to honor French
mathematician Blaise Pascal

B...
© Acism Software Private Limited
Prolog

Designed by Alain Colmerauer with Philippe
Roussel

A logic programming languag...
© Acism Software Private Limited
Imperative
Declarative
Low
level
FORTRAN
1956
Assembly
COBOL
1960
LISP
1958
Structured
Ob...
© Acism Software Private Limited
C (1973)

Created at Bell labs by Dennis Ritchie and Ken
Thomson

Low level and a high ...
© Acism Software Private Limited
Ada (1980)

Extends from Pascal

Strong typing (variable ranges), modularity
mechanisms...
© Acism Software Private Limited
Objective C (1983)
Developed by Brad Cox and Tom Love at their
company StepStone
Adding S...
© Acism Software Private Limited
C++ (1983)

Developed by Bjarne Stroustrup starting 1979

Standardized in 1998

Supers...
© Acism Software Private Limited
Imperative
Declarative
Low
level
FORTRAN
1956
Assembly
COBOL
1960
LISP
1958
C
1973
Struct...
© Acism Software Private Limited
Matlab (1984)

Developed by Cleve Moler at Univ of New
Mexico - started in early 1970s
...
© Acism Software Private Limited
Perl (1987)

Derived ideas from unix shell scripting, awk and
sed

Started the trend of...
© Acism Software Private Limited
Haskell (1990)

Functional programming language – following a
start in 1985 (Miranda)

...
© Acism Software Private Limited
Visual Basic (1991)

Language and IDE

Rapid Application Development (RAD)

Easy to le...
© Acism Software Private Limited
Python (1991)

Developed by Guido Van Russon as a hobby

Readability, Fewer LOC

Suppo...
© Acism Software Private Limited
Ruby (1995)

Developed by Yukihiro Matsumoto

Purely object oriented

Supports multipl...
© Acism Software Private Limited
PHP (1995)

Rasmus Lerdorf began to maintain his
personal homepage

There was no intent...
© Acism Software Private Limited
Imperative
Declarative
Low
level
FORTRAN
1956
Assembly
COBOL
1960
LISP
1958
C
1973
Struct...
© Acism Software Private Limited
Java (1995)

Created by James Gosling at Sun
Microsystems

Write Once Run Anywhere (WOR...
© Acism Software Private Limited
Javascript (1995)

Designed by Brendan Eich at Netscape

Prototype-based scripting lang...
© Acism Software Private Limited
Imperative
Declarative
Low
level
FORTRAN
1956
Assembly
COBOL
1960
LISP
1958
C
1973
Struct...
© Acism Software Private Limited
.Net Framework (2002)

Common Language Runtime (CLR) Rivals JVM
− Managed vs native code...
© Acism Software Private Limited
Scala (2003)

Designed by Martin Odersky

Previously he was in the Java compiler team
...
© Acism Software Private Limited
Imperative
Declarative
Low
level
FORTRAN
1956
Assembly
COBOL
1960
LISP
1958
C
1973
Struct...
© Acism Software Private Limited
Paradigms
© Acism Software Private Limited
Object Oriented Programming

Based on objects containing data fields

Use encapsulation...
© Acism Software Private Limited
Dynamic Languages

Loose typing (duck typing)

Evolved as scripting languages – quick a...
© Acism Software Private Limited
Domain Specific Languages

Declarative languages

Useful, still not general purpose (Tu...
© Acism Software Private Limited
Functional Programming

Computation is evaluation of mathematical
functions

Functions ...
© Acism Software Private Limited
JVM Languages

Produce Java bytecode, targeted to run on
Java Virtual Machine

JVM hand...
© Acism Software Private Limited
4th
Generation Languages

Background

2GL – Assembly

3GL – C, C++, Java, Javascript, ...
© Acism Software Private Limited
Visual Programming

Visual representation of the flow

Typically at a high level

Exam...
© Acism Software Private Limited
Takeaways

Business inclinations, developer preferences
go into a language.

Good devel...
© Acism Software Private Limited
Thank You
Ashish Belagali,
Acism Software Private Limited,
Pune
http://www.acism.com
@Ash...
Upcoming SlideShare
Loading in …5
×

Technology Roundup - Programming Languages & Paradigms

897 views

Published on

At Acism, we often found new joinees lacking a good perspective on the software technology. The software technology was shaped not only through genius minds at work but also through business interests. For students and professionals aspiring to work in the technology area, it is crucial to understand this phenomena. This understanding enables them to understand better where the various programming languages are coming from, and also to create the right expectation of what to expect from a given language, given its classification. Therefore, for Acism's new joinees, we often cover this as a part of induction.

When invited to give a tech talk at a PMI meet, we thought about sharing this understanding with the software project manager audience. For this talk, we attempted to capture this understanding in the slideshare. The talk was well-appreciated. The slideshare is shared below.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Technology Roundup - Programming Languages & Paradigms

  1. 1. © Acism Software Private Limited Technology Roundup Historical Perspective to Understand New Age Technologies Better Ashish Belagali, Acism Software Private Limited, Pune http://www.acism.com @Ashish1IT
  2. 2. © Acism Software Private Limited Agenda  The rise of Programming Languages  Paradigms  Takeaways
  3. 3. © Acism Software Private Limited The Rise of Programming Languages
  4. 4. © Acism Software Private Limited FORTRAN (1956)  Developed at IBM  Proposal by John W Backus to develop high level language for mainframe (against Assembly)  Reduced lines of code by a factor of 20
  5. 5. © Acism Software Private Limited ALGOL (1958)  The dawn of structured programming (as against goto spaghetti code)  Developed jointly by a committee of European and American scientists at a meeting at Zurich
  6. 6. © Acism Software Private Limited LISP (1958)  History − Invented by John McCarthy while he was at MIT − First implemented by Steve Russel on IBM 704 computer − First LISP compiler written in LISP in 1962  Interchangeability of data and code  Connection with AI
  7. 7. © Acism Software Private Limited COBOL (1960)  Proposed to Pentagon in 1959  Max use of English, machine independent  Almost dead before it was born
  8. 8. © Acism Software Private Limited Imperative Low level FORTRAN 1956 Assembly COBOL 1960 LISP 1958 Structured ALGOL 1958
  9. 9. © Acism Software Private Limited Basic (1964)  Beginner's language – aimed at students from non-computer background  Developed by John Kemeny and Thomas Kurtz  Based on Fortran II and ALGOL 60  Grew in minicomputer and microcomputer era  Lost to C and C++ in the era of Shrink-wrap applications (later half of 1980s)  Revived again in VB and VB.Net
  10. 10. © Acism Software Private Limited SIMULA (1967)  Stands for Simula 1 and Simula 67  Developed at Norwegian Computing Center at Oslo, by Ole-Johan Dahl and Kristen Nygaard  Superset of ALGOL 60  Simula 67 the first Object Oriented language  Introduced objects, classes, inheritance and subclasses, virtual methods, coroutines, discrete event simulation and garbage collection
  11. 11. © Acism Software Private Limited Pascal (1970)  Designed by Niklaus Wirth to honor French mathematician Blaise Pascal  Based on ALGOL 60 and enabled programmers to define their own complex data types − Records, enumerations, subranges, dynamically allocated variables with associated pointers and sets  Allows nested procedure definition  Object Pascal powers Delphi IDE
  12. 12. © Acism Software Private Limited Prolog  Designed by Alain Colmerauer with Philippe Roussel  A logic programming language – associated with artificial intelligence and computational linguistics  Completely declarative  specify rules and make queries  EU AI researchers favored Prolog (while American AI researchers favored LISP)
  13. 13. © Acism Software Private Limited Imperative Declarative Low level FORTRAN 1956 Assembly COBOL 1960 LISP 1958 Structured Object oriented Pascal 1970 BASIC 1964 Prolog 1972 SIMULA 1967 ALGOL 1958
  14. 14. © Acism Software Private Limited C (1973)  Created at Bell labs by Dennis Ritchie and Ken Thomson  Low level and a high level language  Portable – Write Once Compile Anywhere (WOCA)  Unix kernel reimplemented
  15. 15. © Acism Software Private Limited Ada (1980)  Extends from Pascal  Strong typing (variable ranges), modularity mechanisms (packages), runtime checks, parallel processing, exceptions, generic dispatch  Ada 95 added object orientation  Designed for developing very large software systems  Strong compile time, run time checks, memory management type-safe 
  16. 16. © Acism Software Private Limited Objective C (1983) Developed by Brad Cox and Tom Love at their company StepStone Adding Smalltalk style messaging to C
  17. 17. © Acism Software Private Limited C++ (1983)  Developed by Bjarne Stroustrup starting 1979  Standardized in 1998  Superset of C language  Enhancing C language with Simula-like features
  18. 18. © Acism Software Private Limited Imperative Declarative Low level FORTRAN 1956 Assembly COBOL 1960 LISP 1958 C 1973 Structured C++ 1983 Object oriented Pascal 1970 Ada 1980 BASIC 1964 Prolog 1972 Objective C 1983 SIMULA 1967 ALGOL 1958
  19. 19. © Acism Software Private Limited Matlab (1984)  Developed by Cleve Moler at Univ of New Mexico - started in early 1970s  Intention was to give students access to LINPACK and EISPACK without learning FORTRAN  Mathworks company was formed in 1984  4th Generation language  Mathematical computations  Image processing
  20. 20. © Acism Software Private Limited Perl (1987)  Derived ideas from unix shell scripting, awk and sed  Started the trend of dynamic languages – Powerful text processing – Loose typing  Widely used in CGI scripting prior to PHP
  21. 21. © Acism Software Private Limited Haskell (1990)  Functional programming language – following a start in 1985 (Miranda)  Originated by a committee formed in 1987 at Portland, Oregon  Functions do not have side effects − distinct construct for side effects orthogonal to functions  Lazy evaluation, pattern matching, list comprehension, type classes & type polymorphism
  22. 22. © Acism Software Private Limited Visual Basic (1991)  Language and IDE  Rapid Application Development (RAD)  Easy to learn, Drag and Drop  Final release in 1998, unsupported since 2008
  23. 23. © Acism Software Private Limited Python (1991)  Developed by Guido Van Russon as a hobby  Readability, Fewer LOC  Supports multiple programming paradigms  Object oriented  Functional  Procedural  Dynamic types and automated memory management  JVM variant Jython
  24. 24. © Acism Software Private Limited Ruby (1995)  Developed by Yukihiro Matsumoto  Purely object oriented  Supports multiple programming paradigms  Functional  Object oriented  Imperative
  25. 25. © Acism Software Private Limited PHP (1995)  Rasmus Lerdorf began to maintain his personal homepage  There was no intent to write a programming language  Dynamic, easy-to-use  Perl-like variables, form handling and HTML embedding  Object orientation added in v5  No written specification existed till 2014. The effort is now on.
  26. 26. © Acism Software Private Limited Imperative Declarative Low level FORTRAN 1956 Assembly COBOL 1960 LISP 1958 C 1973 Structured C++ 1983 Object oriented Pascal 1970 Ada 1980 BASIC 1964 VB 1991 Functional Perl 1987 DynamicProlog 1972 Matlab 1984 Python 1991 Ruby 1995 PHP 1995 Objective C 1983 SIMULA 1967 ALGOL 1958 Haskell 1990
  27. 27. © Acism Software Private Limited Java (1995)  Created by James Gosling at Sun Microsystems  Write Once Run Anywhere (WORA)  Secure, configurable security  Java applets for web  Semi-interpreted, Java Virtual Machine (JVM)  Performance: JIT  Automatic memory management  Technologies: Applets, Servlets, JSP, Swing
  28. 28. © Acism Software Private Limited Javascript (1995)  Designed by Brendan Eich at Netscape  Prototype-based scripting language, with dynamic typing and first-class functions  Multi-paradigm  Object oriented  Imperative  Functional
  29. 29. © Acism Software Private Limited Imperative Declarative Low level FORTRAN 1956 Assembly COBOL 1960 LISP 1958 C 1973 Structured C++ 1983 Object oriented Pascal 1970 Ada 1980 JVM languages BASIC 1964 VB 1991 Functional Perl 1987 DynamicProlog 1972 Matlab 1984 Python 1991 Ruby 1995 Javascript 1995 PHP 1995 Objective C 1983 Java 1995 SIMULA 1967 ALGOL 1958 Haskell 1990
  30. 30. © Acism Software Private Limited .Net Framework (2002)  Common Language Runtime (CLR) Rivals JVM − Managed vs native code − Ahead of time compilation using native image generator  Collection of languages:VB.Net, Fortran.Net, C#  .Net Compact framework for Windows mobile
  31. 31. © Acism Software Private Limited Scala (2003)  Designed by Martin Odersky  Previously he was in the Java compiler team  Both Object oriented and Functional  Statically typed, smaller in size
  32. 32. © Acism Software Private Limited Imperative Declarative Low level FORTRAN 1956 Assembly COBOL 1960 LISP 1958 C 1973 Structured C++ 1983 Object oriented Pascal 1970 Ada 1980 JVM languages .Net 2002 BASIC 1964 VB 1991 Haskell 1990 Functional Perl 1987 DynamicProlog 1972 Matlab 1984 Python 1991 Ruby 1995 Javascript 1995 PHP 1995 Scala 2003 Objective C 1983 Java 1995 SIMULA 1967 ALGOL 1958
  33. 33. © Acism Software Private Limited Paradigms
  34. 34. © Acism Software Private Limited Object Oriented Programming  Based on objects containing data fields  Use encapsulation and data hiding  Can be further classified into  Class based (object blueprint)  Prototype based (object cloning)  Separation of concerns such as Aspect oriented
  35. 35. © Acism Software Private Limited Dynamic Languages  Loose typing (duck typing)  Evolved as scripting languages – quick and dirty  Mostly interpreted languages  Fast programming cycle  Compiler advantage lost
  36. 36. © Acism Software Private Limited Domain Specific Languages  Declarative languages  Useful, still not general purpose (Turing- complete)  Examples  Markup languages: HTML, MXML, XSL etc  Yacc input language  Make or Ant specification language  Hybrid (also have imperative part)  SQL  Regex
  37. 37. © Acism Software Private Limited Functional Programming  Computation is evaluation of mathematical functions  Functions are without side effects  Even logging – but some of these exceptions are often admissible  Many popular languages –not labeled as functional– can be used in functional programming style
  38. 38. © Acism Software Private Limited JVM Languages  Produce Java bytecode, targeted to run on Java Virtual Machine  JVM handles security, memory management  Also, can use Java's library  Java 6 onwards dynamic languages can run faster
  39. 39. © Acism Software Private Limited 4th Generation Languages  Background  2GL – Assembly  3GL – C, C++, Java, Javascript, C# etc  4GL language operate with large collection of information rather than bits and bytes  DB management, report generation, mathematical optimizations, GUI development or web development  Libraries like 4GL features are developed with most popular 3GL languages. Also some advanced 3GL languages include some 4GL
  40. 40. © Acism Software Private Limited Visual Programming  Visual representation of the flow  Typically at a high level  Examples  Case tools  Business process modeling  Scratch
  41. 41. © Acism Software Private Limited Takeaways  Business inclinations, developer preferences go into a language.  Good developers know at least 5 languages  Current trends  Mixing of paradigms  4GL, Visual
  42. 42. © Acism Software Private Limited Thank You Ashish Belagali, Acism Software Private Limited, Pune http://www.acism.com @Ashish1IT

×