technology roundup - programming languages & paradigms

42
© 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

Upload: ashish-belagali

Post on 15-Jul-2015

372 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Technology Roundup - Programming Languages & Paradigms

© Acism Software Private Limited

Technology Roundup

Historical Perspectiveto Understand

New Age TechnologiesBetter

Ashish Belagali,Acism Software Private Limited,Punehttp://www.acism.com@Ashish1IT

Page 2: Technology Roundup - Programming Languages & Paradigms

© Acism Software Private Limited

Agenda

The rise of Programming Languages Paradigms Takeaways

Page 3: Technology Roundup - Programming Languages & Paradigms

© Acism Software Private Limited

The Rise of Programming Languages

Page 4: Technology Roundup - Programming Languages & Paradigms

© 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

Page 5: Technology Roundup - Programming Languages & Paradigms

© 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

Page 6: Technology Roundup - Programming Languages & Paradigms

© 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

Page 7: Technology Roundup - Programming Languages & Paradigms

© Acism Software Private Limited

COBOL (1960)

Proposed to Pentagon in 1959 Max use of English, machine independent Almost dead before it was born

Page 8: Technology Roundup - Programming Languages & Paradigms

© Acism Software Private Limited

Imperative

Lowlevel

FORTRAN1956

AssemblyCOBOL

1960

LISP1958

StructuredALGOL

1958

Page 9: Technology Roundup - Programming Languages & Paradigms

© 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

Page 10: Technology Roundup - Programming Languages & Paradigms

© 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

Page 11: Technology Roundup - Programming Languages & Paradigms

© 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

Page 12: Technology Roundup - Programming Languages & Paradigms

© 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)

Page 13: Technology Roundup - Programming Languages & Paradigms

© Acism Software Private Limited

Imperative

Declarative

Lowlevel

FORTRAN1956

AssemblyCOBOL

1960

LISP1958

Structured

Objectoriented

Pascal1970

BASIC1964

Prolog1972

SIMULA1967

ALGOL1958

Page 14: Technology Roundup - Programming Languages & Paradigms

© 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

Page 15: Technology Roundup - Programming Languages & Paradigms

© 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 Due to safety-critical support features, it is used

in military applications and mission-critical commercial applications.

Page 16: Technology Roundup - Programming Languages & Paradigms

© Acism Software Private Limited

Objective C (1983)

Developed by Brad Cox and Tom Love at their company StepStone

Adding Smalltalk style messaging to C

Page 17: Technology Roundup - Programming Languages & Paradigms

© 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

Page 18: Technology Roundup - Programming Languages & Paradigms

© Acism Software Private Limited

Imperative

Declarative

Lowlevel

FORTRAN1956

AssemblyCOBOL

1960

LISP1958

C1973

Structured

C++1983

Objectoriented

Pascal1970

Ada1980

BASIC1964

Prolog1972

Objective C1983

SIMULA1967

ALGOL1958

Page 19: Technology Roundup - Programming Languages & Paradigms

© 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

Page 20: Technology Roundup - Programming Languages & Paradigms

© 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

Page 21: Technology Roundup - Programming Languages & Paradigms

© 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

Page 22: Technology Roundup - Programming Languages & Paradigms

© 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

Page 23: Technology Roundup - Programming Languages & Paradigms

© 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

Page 24: Technology Roundup - Programming Languages & Paradigms

© Acism Software Private Limited

Ruby (1995)

Developed by Yukihiro Matsumoto Purely object oriented Supports multiple programming paradigms

Functional Object oriented Imperative

Page 25: Technology Roundup - Programming Languages & Paradigms

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

Page 26: Technology Roundup - Programming Languages & Paradigms

© Acism Software Private Limited

Imperative

Declarative

Lowlevel

FORTRAN1956

AssemblyCOBOL

1960

LISP1958

C1973

Structured

C++1983

Objectoriented

Pascal1970

Ada1980

BASIC1964

VB1991

Functional

Perl1987

DynamicProlog1972

Matlab1984

Python1991

Ruby1995

PHP1995

Objective C1983

SIMULA1967

ALGOL1958

Haskell1990

Page 27: Technology Roundup - Programming Languages & Paradigms

© 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 200+ languages now support JVM Google chose Java for Android development

Page 28: Technology Roundup - Programming Languages & Paradigms

© 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

Page 29: Technology Roundup - Programming Languages & Paradigms

© Acism Software Private Limited

Imperative

Declarative

Lowlevel

FORTRAN1956

AssemblyCOBOL

1960

LISP1958

C1973

Structured

C++1983

Objectoriented

Pascal1970

Ada1980

JVM languages

BASIC1964

VB1991

Functional

Perl1987

DynamicProlog1972

Matlab1984

Python1991

Ruby1995Javascript

1995

PHP1995

Objective C1983

Java1995

SIMULA1967

ALGOL1958

Haskell1990

Page 30: Technology Roundup - Programming Languages & Paradigms

© 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

Page 31: Technology Roundup - Programming Languages & Paradigms

© 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

Page 32: Technology Roundup - Programming Languages & Paradigms

© Acism Software Private Limited

Imperative

Declarative

Lowlevel

FORTRAN1956

AssemblyCOBOL

1960

LISP1958

C1973

Structured

C++1983

Objectoriented

Pascal1970

Ada1980

JVM languages

.Net2002

BASIC1964

VB1991

Haskell1990

Functional

Perl1987

DynamicProlog1972

Matlab1984

Python1991

Ruby1995Javascript

1995

PHP1995

Scala2003

Objective C1983

Java1995

SIMULA1967

ALGOL1958

Page 33: Technology Roundup - Programming Languages & Paradigms

© Acism Software Private Limited

Paradigms

Page 34: Technology Roundup - Programming Languages & Paradigms

© 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

Page 35: Technology Roundup - Programming Languages & Paradigms

© 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

Page 36: Technology Roundup - Programming Languages & Paradigms

© 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

Page 37: Technology Roundup - Programming Languages & Paradigms

© 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

Page 38: Technology Roundup - Programming Languages & Paradigms

© 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

Page 39: Technology Roundup - Programming Languages & Paradigms

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

Page 40: Technology Roundup - Programming Languages & Paradigms

© Acism Software Private Limited

Visual Programming

Visual representation of the flow Typically at a high level Examples

Case tools Business process modeling Scratch

Page 41: Technology Roundup - Programming Languages & Paradigms

© 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

Page 42: Technology Roundup - Programming Languages & Paradigms

© Acism Software Private Limited

Thank You

Ashish Belagali,Acism Software Private Limited,Punehttp://www.acism.com@Ashish1IT