technology roundup - programming languages & paradigms
TRANSCRIPT
© Acism Software Private Limited
Technology Roundup
Historical Perspectiveto Understand
New Age TechnologiesBetter
Ashish Belagali,Acism Software Private Limited,Punehttp://www.acism.com@Ashish1IT
© 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 language for mainframe (against Assembly)
Reduced lines of code by a factor of 20
© 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
© 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
© Acism Software Private Limited
COBOL (1960)
Proposed to Pentagon in 1959 Max use of English, machine independent Almost dead before it was born
© Acism Software Private Limited
Imperative
Lowlevel
FORTRAN1956
AssemblyCOBOL
1960
LISP1958
StructuredALGOL
1958
© 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
© 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
© 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
© 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)
© Acism Software Private Limited
Imperative
Declarative
Lowlevel
FORTRAN1956
AssemblyCOBOL
1960
LISP1958
Structured
Objectoriented
Pascal1970
BASIC1964
Prolog1972
SIMULA1967
ALGOL1958
© 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
© 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.
© Acism Software Private Limited
Objective C (1983)
Developed by Brad Cox and Tom Love at their company StepStone
Adding Smalltalk style messaging to C
© 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
© Acism Software Private Limited
Imperative
Declarative
Lowlevel
FORTRAN1956
AssemblyCOBOL
1960
LISP1958
C1973
Structured
C++1983
Objectoriented
Pascal1970
Ada1980
BASIC1964
Prolog1972
Objective C1983
SIMULA1967
ALGOL1958
© 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
© 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
© 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
© 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
© 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
© Acism Software Private Limited
Ruby (1995)
Developed by Yukihiro Matsumoto Purely object oriented Supports multiple programming paradigms
Functional Object oriented Imperative
© 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.
© 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
© 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
© 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
© 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
© 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
© 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
© 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
© Acism Software Private Limited
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
© 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
© 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
© 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
© 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
© 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.
© Acism Software Private Limited
Visual Programming
Visual representation of the flow Typically at a high level Examples
Case tools Business process modeling Scratch
© 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
© Acism Software Private Limited
Thank You
Ashish Belagali,Acism Software Private Limited,Punehttp://www.acism.com@Ashish1IT