SlideShare uma empresa Scribd logo
1 de 29
Baixar para ler offline
Programming languages
Trends in software development
Ganesh Samarthyam
sgganesh@gmail.com
Agenda
n  Why languages matter
n  Language popularity
n  Domain Specific Languages
(DSLs)
¡  Case study: LaTeX
n  New and emerging languages
¡  Case study: Go language
n  Learning new languages
n  That’s it!
Why languages matter?
n  There are numerous languages in the
programming world
¡  See list of 2500 languages in
http://people.ku.edu/~nkinners/LangList/Extras/
langlist.htm
n  Hundreds of languages released every year!
¡  Well-known recent languages include Go, Scala,
and Clojure languages
n  People are passionate about languages
¡  Sometimes even emotional
Languages in programmer’s life
n  Languages have special place in
programmer’s life
¡  Unlike “gizmos” or “technologies”
¡  We use languages on day-to-day basis
¡  Languages we use shapes our thoughts
n  Programming is a creative activity
¡  that separates computer science from other
engineering disciplines
¡  Learning programming is not just about
learning the language features
n  it is more about creative problem solving using
the existing features
Example: Creativity in Programming
Sierpinski triangle fractal!
n  The word ‘fractal’ was
coined by a
mathematician named
Mandelbrot in 1975.
n  Fractals are created
based on some simple
patterns and simple
rule(s).
n  This program creates
Sierpinski triangle fractal
by printing @ and .
characters to the console!
Programming languages and research
n  Approx 50% of Turing award winners closely
associated with programming or languages
¡  Turing award is highest award in CS
¡  Dijkstra & Peter Naur (Algol)
¡  Backus (Fortran)
¡  Iverson (APL)
¡  Ritchie (C)
¡  Dahl & Nygaard (Simula)
¡  Alan Kay (Smalltalk)
¡  …
Power of a language!
n  Which language is more powerful?
¡  C, Pascal, Fortran, Assembly or Basic?
n  A meaningless question!
¡  Fundamentally, languages are equally powerful
n  But languages differ in their ability to perform
some specific tasks easier!
¡  By providing different language features or same
language features in different ways
A simple example: String replacement
n  Simple string rewriting based on a set of
rules.
n  An interesting application
¡  Converting a binary to unary by string
replacement by applying a set of rules.
n  So what’s the big deal?
¡  This algorithm is shown to be “Turing
complete”!
Markov’s string replacement algorithm
Let us see the rules first:
Rule 1: "#0" => "0##"
Rule 2: "1" => "0#"
Rule 3: "0" => ""
Rule 4: "#" => "1"
Input string: "11"
Step 1: "0#1" (apply rule 2)
Step 2: "0#0#" (apply rule 2)
Step 3: "00###" (apply rule 1)
Step 4: "0###" (apply rule 3)
Step 5: "###" (apply rule 3)
Step 6: "1##" (apply rule 4)
Step 7: "11#" (apply rule 4)
Step 8: "111" (apply rule 4)
Terminate.
"100"
=> "0#00"
=> "00##0"
=> "00#0##"
=> "000####"
=> "00####"
=> "0####"
=> "####"
=> "1###"
=> "11##"
=> "111#"
=> "1111"
Language influence and evolution
n  A new language is not created from
nowhere
¡  It is influenced by many other languages,
technologies or ideas
n  Language evolution tree
¡  Graphical representation of how
languages are influenced by others
¡  Almost all here know C; but do you know
how many languages it got influenced
from?
Language popularity
n  Many languages have started getting more
popular
¡  Those were relatively unknown in just recent past
¡  E.g. Ruby, Python, Lua, …
n  How to we know the popularity of a language?
¡  Tiobe “language popularity index” is most widely
referred (http://www.tiobe.com/)
¡  Latest status is in next slide
TIOBE Index (as on Jan 2016)
Language popularity …
n  Popularity depends on so many factors
¡  Like company sponsorship/backing
n  Best example is Swift
¡  It is popular because of Apple
¡  Does it solve new problems or changes in the world
around us
n  For example, Java became popular when released in 1995
because of web
n  Concurrent languages will become popular because of multi-
core processors
¡  …
Language popularity: Observations
n  C is the second most popular language!
¡  And its >3 decades old
¡  Continues to be popular for embedded programming
n  C++ is steadily losing popularity
¡  C#, Java, etc ate from C++ pie
n  Popular company related languages
¡  ActionScript (Adobe), C# (MS), Obj-C & Swift
(Apple)
n  OO languages are very popular (55%)
¡  Procedural languages (40%)
¡  Functional, logic and other languages (5%)
Language popularity: Observations
n  Statically typed languages are very popular (57%
share)
¡  Losing steadily to dynamic languages (42%)
n  Web is becoming more & more pervasive
¡  PHP popularity reflects that
n  Scripting languages are more popular than ever
before
¡  Loser: Perl; Gainers: Python & Ruby
n  Non-GC languages losing popularity
¡  C++, Cobol, Fortran etc; except for C
Domain Specific Languages (DSLs)
n  Surprisingly general purpose languages (like C,
Java…) are not best languages for specific uses
¡  Domain Specific Languages (DSLs) are best suited
for specific uses
n  DSLs are about a specific domain, and provides
solutions for that domain
¡  E.g.: HTML, SQL, LaTeX, GraphViz, VHDL Verilog…
¡  The main problem is the time taken to learn
n  and become productive
DSL Case study: LaTeX
n  I’ve written full-length books using MS Word
¡  Bitten by the problems in managing a large
document
¡  MS Word not well suited for a specific purpose
like writing a book
n  LaTeX is a markup language for document
preparation
¡  Like writing papers, letters, articles, thesis …
¡  Its macros on top of TeX (created by D.Knuth)
LaTeX vs. MS Word
n  Can you find which document is created
with LaTeX and with MS Word?
MS Word LaTeX
Sample LaTeX program
documentclass[12pt]{article}
begin{document}
centering{
textbf{Hello world!}
}
end{document}
$ latex hello
$ dvips hello
$ gv hello.ps
$ ps2pdf hello.ps
The best programming language?
n  Most of the programmers know which is the
best programming language.
¡  Each programmer has different answer!
¡  “the most favourite” is not “the best”
It is C you
know – there is
nothing like
that
Python! Its so intuitive
to program in it
its PHP - I think you
haven't used it – if you
use it you'll agree that
its the best
New and emerging languages
n  The computing world is changing fast
¡  Old languages (C, Fortran…) are not very suitable
n  Major trends
¡  More pervasive web/internet
¡  Multi-core processors
¡  Larger and more complex software
¡  Need for more reusable/pluggable software
¡  Wider use of embedded systems
¡  Reliability more important (e.g. s/w in pacemaker
device)
¡  ...
What are the new languages?
n  Many new languages getting designed
with this new world order in mind
¡  Scala, Go, Swift etc
n  General trend in new languages
¡  Garbage collected, concurrent, more
dynamic, higher-level, …
¡  Less importance for efficiency, OO, …
n  Case study: Go language
Go: Background
n  Go is from Google (Sep 09)
¡  Created lots of excitement in the programming community
n  Many tout it as the next C language
¡  ‘C’ evolved from ‘B’; many languages are named as ‘D’, or
want to be the ‘D’ language
¡  But nothing has made the cut so far; “Go” might (or will it be
“Gone” in a few years ;-) )
n  Go won Tiobe’s ‘language of the year award 2009’
n  Robert Griesemer, Ken Thompson (of Unix fame), and Rob
Pike are the creators of the language.
¡  All three are well-known in programming community
Go: Important characteristics
n  Simplicity: Go has a clean and concise syntax
¡  Characteristic of Google products
¡  For example, light-weight type system
n  Use it to believe it
n  Separation of interface and the implementation
¡  I know it’s often misused statement, but Go has it!
¡  Arguably a novel feature of Go
n  Goroutines
¡  Is based on CSP: much safer than lock-based, like Java
n  And more:
¡  E.g. Reflection (yes! but this is systems prog. lang!)
Go Interfaces: A novel feature
n  Interfaces specified with
‘interface’ keyword
¡  Not same as in C#/Java
n  The structs doesn’t
have to say it
implements an interface
¡  Any struct that
implements the methods
as specified by any
interface satisfies that
interface
¡  Strict static type checking
& “duck typing”!
Learning new languages
n  Its worth learning new languages
¡  New ways of thinking or solving problems
¡  ‘As I write a program, I should use a
language that minimizes the distance
between the problem solving strategies
that I have in my head and the program
text I eventually write on paper’
-  Jon Bentley (Programming Pearls)
n  Go beyond learning the mainstream
languages
¡  Take the road less travelled!
Wrapping up
n  Programming languages is an exciting
topic
¡  From research as well as practical usage
perspectives
n  Consider learning a new language
¡  New like Swift, Scala, Go, Clojure …
¡  Or different ones like Lisp, Prolog,
Python, LaTeX…

Mais conteúdo relacionado

Mais procurados

Seeing is Correcting:Linked Open Data for Portuguese
Seeing is Correcting:Linked Open Data for PortugueseSeeing is Correcting:Linked Open Data for Portuguese
Seeing is Correcting:Linked Open Data for PortugueseValeria de Paiva
 
Class9
 Class9 Class9
Class9issbp
 
Programing paradigm & implementation
Programing paradigm & implementationPrograming paradigm & implementation
Programing paradigm & implementationBilal Maqbool ツ
 
PL Lecture 01 - preliminaries
PL Lecture 01 - preliminariesPL Lecture 01 - preliminaries
PL Lecture 01 - preliminariesSchwannden Kuo
 
PL Lecture 02 - Binding and Scope
PL Lecture 02 - Binding and ScopePL Lecture 02 - Binding and Scope
PL Lecture 02 - Binding and ScopeSchwannden Kuo
 
BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
BERT: Pre-training of Deep Bidirectional Transformers for Language UnderstandingBERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
BERT: Pre-training of Deep Bidirectional Transformers for Language UnderstandingYoung Seok Kim
 
Portuguese Linguistic Tools: What, Why and How
Portuguese Linguistic Tools: What, Why and HowPortuguese Linguistic Tools: What, Why and How
Portuguese Linguistic Tools: What, Why and HowValeria de Paiva
 
Better problem solving through scripting: How to think through your #eprdctn ...
Better problem solving through scripting: How to think through your #eprdctn ...Better problem solving through scripting: How to think through your #eprdctn ...
Better problem solving through scripting: How to think through your #eprdctn ...BookNet Canada
 
R programming advantages and disadvantages
R programming advantages and disadvantagesR programming advantages and disadvantages
R programming advantages and disadvantagesPrwaTech
 
Neural Network Language Models for Candidate Scoring in Multi-System Machine...
 Neural Network Language Models for Candidate Scoring in Multi-System Machine... Neural Network Language Models for Candidate Scoring in Multi-System Machine...
Neural Network Language Models for Candidate Scoring in Multi-System Machine...Matīss ‎‎‎‎‎‎‎  
 
Principles of-programming-languages-lecture-notes-
Principles of-programming-languages-lecture-notes-Principles of-programming-languages-lecture-notes-
Principles of-programming-languages-lecture-notes-Krishna Sai
 
CS152 Programming Paradigm
CS152 Programming Paradigm CS152 Programming Paradigm
CS152 Programming Paradigm Kaya Ota
 
ANTLR4 and its testing
ANTLR4 and its testingANTLR4 and its testing
ANTLR4 and its testingKnoldus Inc.
 
Linguistic markup and transclusion processing in XML documents
Linguistic markup and transclusion processing in XML documentsLinguistic markup and transclusion processing in XML documents
Linguistic markup and transclusion processing in XML documentsSimon Dew
 

Mais procurados (20)

Seeing is Correcting:Linked Open Data for Portuguese
Seeing is Correcting:Linked Open Data for PortugueseSeeing is Correcting:Linked Open Data for Portuguese
Seeing is Correcting:Linked Open Data for Portuguese
 
ANTLR4 in depth
ANTLR4 in depthANTLR4 in depth
ANTLR4 in depth
 
Programming for Problem Solving
Programming for Problem SolvingProgramming for Problem Solving
Programming for Problem Solving
 
Class9
 Class9 Class9
Class9
 
Learning to code in 2020
Learning to code in 2020Learning to code in 2020
Learning to code in 2020
 
Programing paradigm & implementation
Programing paradigm & implementationPrograming paradigm & implementation
Programing paradigm & implementation
 
PL Lecture 01 - preliminaries
PL Lecture 01 - preliminariesPL Lecture 01 - preliminaries
PL Lecture 01 - preliminaries
 
Paradigms
ParadigmsParadigms
Paradigms
 
PL Lecture 02 - Binding and Scope
PL Lecture 02 - Binding and ScopePL Lecture 02 - Binding and Scope
PL Lecture 02 - Binding and Scope
 
BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
BERT: Pre-training of Deep Bidirectional Transformers for Language UnderstandingBERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
 
Portuguese Linguistic Tools: What, Why and How
Portuguese Linguistic Tools: What, Why and HowPortuguese Linguistic Tools: What, Why and How
Portuguese Linguistic Tools: What, Why and How
 
Better problem solving through scripting: How to think through your #eprdctn ...
Better problem solving through scripting: How to think through your #eprdctn ...Better problem solving through scripting: How to think through your #eprdctn ...
Better problem solving through scripting: How to think through your #eprdctn ...
 
R programming advantages and disadvantages
R programming advantages and disadvantagesR programming advantages and disadvantages
R programming advantages and disadvantages
 
Neural Network Language Models for Candidate Scoring in Multi-System Machine...
 Neural Network Language Models for Candidate Scoring in Multi-System Machine... Neural Network Language Models for Candidate Scoring in Multi-System Machine...
Neural Network Language Models for Candidate Scoring in Multi-System Machine...
 
Principles of-programming-languages-lecture-notes-
Principles of-programming-languages-lecture-notes-Principles of-programming-languages-lecture-notes-
Principles of-programming-languages-lecture-notes-
 
CS152 Programming Paradigm
CS152 Programming Paradigm CS152 Programming Paradigm
CS152 Programming Paradigm
 
CoLing 2016
CoLing 2016CoLing 2016
CoLing 2016
 
Fossetcon15
Fossetcon15Fossetcon15
Fossetcon15
 
ANTLR4 and its testing
ANTLR4 and its testingANTLR4 and its testing
ANTLR4 and its testing
 
Linguistic markup and transclusion processing in XML documents
Linguistic markup and transclusion processing in XML documentsLinguistic markup and transclusion processing in XML documents
Linguistic markup and transclusion processing in XML documents
 

Semelhante a About programming languages

Which programming language should you learn next?
Which programming language should you learn next? Which programming language should you learn next?
Which programming language should you learn next? Ganesh Samarthyam
 
From Programming to Modeling And Back Again
From Programming to Modeling And Back AgainFrom Programming to Modeling And Back Again
From Programming to Modeling And Back AgainMarkus Voelter
 
Unit 4 Assignment 1 Comparative Study Of Programming...
Unit 4 Assignment 1 Comparative Study Of Programming...Unit 4 Assignment 1 Comparative Study Of Programming...
Unit 4 Assignment 1 Comparative Study Of Programming...Carmen Sanborn
 
Google's Go Programming Language - Introduction
Google's Go Programming Language - Introduction Google's Go Programming Language - Introduction
Google's Go Programming Language - Introduction Ganesh Samarthyam
 
A First Look at Google's Go Programming Language
A First Look at Google's Go Programming LanguageA First Look at Google's Go Programming Language
A First Look at Google's Go Programming LanguageGanesh Samarthyam
 
Lect 1. introduction to programming languages
Lect 1. introduction to programming languagesLect 1. introduction to programming languages
Lect 1. introduction to programming languagesVarun Garg
 
What is the best programming language for beginner?
What is the best programming language for beginner?What is the best programming language for beginner?
What is the best programming language for beginner?Designveloper
 
COMPUTER LANGUAGES AND THERE DIFFERENCE
COMPUTER LANGUAGES AND THERE DIFFERENCE COMPUTER LANGUAGES AND THERE DIFFERENCE
COMPUTER LANGUAGES AND THERE DIFFERENCE Pavan Kalyan
 
Programming languages and concepts by vivek parihar
Programming languages and concepts by vivek pariharProgramming languages and concepts by vivek parihar
Programming languages and concepts by vivek pariharVivek Parihar
 
Proglangauage1.10.18
Proglangauage1.10.18Proglangauage1.10.18
Proglangauage1.10.18Thinkful
 
introtonlp-190218095523 (1).pdf
introtonlp-190218095523 (1).pdfintrotonlp-190218095523 (1).pdf
introtonlp-190218095523 (1).pdfAdityaMishra178868
 
Intro to nlp
Intro to nlpIntro to nlp
Intro to nlpankit_ppt
 
Ti1220 Lecture 1: Programming Linguistics
Ti1220 Lecture 1: Programming LinguisticsTi1220 Lecture 1: Programming Linguistics
Ti1220 Lecture 1: Programming LinguisticsEelco Visser
 
Introduction To Computer Programming
Introduction To Computer ProgrammingIntroduction To Computer Programming
Introduction To Computer ProgrammingHussain Buksh
 
English de lenguaje de programacion
English de lenguaje de programacionEnglish de lenguaje de programacion
English de lenguaje de programacionVillalba Griselda
 
Scales02WhatProgrammingLanguagesShouldWeTeachOurUndergraduates
Scales02WhatProgrammingLanguagesShouldWeTeachOurUndergraduatesScales02WhatProgrammingLanguagesShouldWeTeachOurUndergraduates
Scales02WhatProgrammingLanguagesShouldWeTeachOurUndergraduatesHans Ecke
 
pdx893ff61f-1fb8-4e15-a379-775dfdbcee77-7-14-26-112
pdx893ff61f-1fb8-4e15-a379-775dfdbcee77-7-14-26-112pdx893ff61f-1fb8-4e15-a379-775dfdbcee77-7-14-26-112
pdx893ff61f-1fb8-4e15-a379-775dfdbcee77-7-14-26-112Thinkful
 
Go/Ruby/Java: What's next?
Go/Ruby/Java: What's next?Go/Ruby/Java: What's next?
Go/Ruby/Java: What's next?Hernan Wilkinson
 
Build your own Language - Why and How?
Build your own Language - Why and How?Build your own Language - Why and How?
Build your own Language - Why and How?Markus Voelter
 
Introduction Programming Languages
Introduction Programming LanguagesIntroduction Programming Languages
Introduction Programming LanguagesManish Kharotia
 

Semelhante a About programming languages (20)

Which programming language should you learn next?
Which programming language should you learn next? Which programming language should you learn next?
Which programming language should you learn next?
 
From Programming to Modeling And Back Again
From Programming to Modeling And Back AgainFrom Programming to Modeling And Back Again
From Programming to Modeling And Back Again
 
Unit 4 Assignment 1 Comparative Study Of Programming...
Unit 4 Assignment 1 Comparative Study Of Programming...Unit 4 Assignment 1 Comparative Study Of Programming...
Unit 4 Assignment 1 Comparative Study Of Programming...
 
Google's Go Programming Language - Introduction
Google's Go Programming Language - Introduction Google's Go Programming Language - Introduction
Google's Go Programming Language - Introduction
 
A First Look at Google's Go Programming Language
A First Look at Google's Go Programming LanguageA First Look at Google's Go Programming Language
A First Look at Google's Go Programming Language
 
Lect 1. introduction to programming languages
Lect 1. introduction to programming languagesLect 1. introduction to programming languages
Lect 1. introduction to programming languages
 
What is the best programming language for beginner?
What is the best programming language for beginner?What is the best programming language for beginner?
What is the best programming language for beginner?
 
COMPUTER LANGUAGES AND THERE DIFFERENCE
COMPUTER LANGUAGES AND THERE DIFFERENCE COMPUTER LANGUAGES AND THERE DIFFERENCE
COMPUTER LANGUAGES AND THERE DIFFERENCE
 
Programming languages and concepts by vivek parihar
Programming languages and concepts by vivek pariharProgramming languages and concepts by vivek parihar
Programming languages and concepts by vivek parihar
 
Proglangauage1.10.18
Proglangauage1.10.18Proglangauage1.10.18
Proglangauage1.10.18
 
introtonlp-190218095523 (1).pdf
introtonlp-190218095523 (1).pdfintrotonlp-190218095523 (1).pdf
introtonlp-190218095523 (1).pdf
 
Intro to nlp
Intro to nlpIntro to nlp
Intro to nlp
 
Ti1220 Lecture 1: Programming Linguistics
Ti1220 Lecture 1: Programming LinguisticsTi1220 Lecture 1: Programming Linguistics
Ti1220 Lecture 1: Programming Linguistics
 
Introduction To Computer Programming
Introduction To Computer ProgrammingIntroduction To Computer Programming
Introduction To Computer Programming
 
English de lenguaje de programacion
English de lenguaje de programacionEnglish de lenguaje de programacion
English de lenguaje de programacion
 
Scales02WhatProgrammingLanguagesShouldWeTeachOurUndergraduates
Scales02WhatProgrammingLanguagesShouldWeTeachOurUndergraduatesScales02WhatProgrammingLanguagesShouldWeTeachOurUndergraduates
Scales02WhatProgrammingLanguagesShouldWeTeachOurUndergraduates
 
pdx893ff61f-1fb8-4e15-a379-775dfdbcee77-7-14-26-112
pdx893ff61f-1fb8-4e15-a379-775dfdbcee77-7-14-26-112pdx893ff61f-1fb8-4e15-a379-775dfdbcee77-7-14-26-112
pdx893ff61f-1fb8-4e15-a379-775dfdbcee77-7-14-26-112
 
Go/Ruby/Java: What's next?
Go/Ruby/Java: What's next?Go/Ruby/Java: What's next?
Go/Ruby/Java: What's next?
 
Build your own Language - Why and How?
Build your own Language - Why and How?Build your own Language - Why and How?
Build your own Language - Why and How?
 
Introduction Programming Languages
Introduction Programming LanguagesIntroduction Programming Languages
Introduction Programming Languages
 

Mais de Ganesh Samarthyam

Applying Refactoring Tools in Practice
Applying Refactoring Tools in PracticeApplying Refactoring Tools in Practice
Applying Refactoring Tools in PracticeGanesh Samarthyam
 
CFP - 1st Workshop on “AI Meets Blockchain”
CFP - 1st Workshop on “AI Meets Blockchain”CFP - 1st Workshop on “AI Meets Blockchain”
CFP - 1st Workshop on “AI Meets Blockchain”Ganesh Samarthyam
 
Great Coding Skills Aren't Enough
Great Coding Skills Aren't EnoughGreat Coding Skills Aren't Enough
Great Coding Skills Aren't EnoughGanesh Samarthyam
 
College Project - Java Disassembler - Description
College Project - Java Disassembler - DescriptionCollege Project - Java Disassembler - Description
College Project - Java Disassembler - DescriptionGanesh Samarthyam
 
Coding Guidelines - Crafting Clean Code
Coding Guidelines - Crafting Clean CodeCoding Guidelines - Crafting Clean Code
Coding Guidelines - Crafting Clean CodeGanesh Samarthyam
 
Design Patterns - Compiler Case Study - Hands-on Examples
Design Patterns - Compiler Case Study - Hands-on ExamplesDesign Patterns - Compiler Case Study - Hands-on Examples
Design Patterns - Compiler Case Study - Hands-on ExamplesGanesh Samarthyam
 
Bangalore Container Conference 2017 - Brief Presentation
Bangalore Container Conference 2017 - Brief PresentationBangalore Container Conference 2017 - Brief Presentation
Bangalore Container Conference 2017 - Brief PresentationGanesh Samarthyam
 
Bangalore Container Conference 2017 - Poster
Bangalore Container Conference 2017 - PosterBangalore Container Conference 2017 - Poster
Bangalore Container Conference 2017 - PosterGanesh Samarthyam
 
Software Design in Practice (with Java examples)
Software Design in Practice (with Java examples)Software Design in Practice (with Java examples)
Software Design in Practice (with Java examples)Ganesh Samarthyam
 
OO Design and Design Patterns in C++
OO Design and Design Patterns in C++ OO Design and Design Patterns in C++
OO Design and Design Patterns in C++ Ganesh Samarthyam
 
Bangalore Container Conference 2017 - Sponsorship Deck
Bangalore Container Conference 2017 - Sponsorship DeckBangalore Container Conference 2017 - Sponsorship Deck
Bangalore Container Conference 2017 - Sponsorship DeckGanesh Samarthyam
 
Let's Go: Introduction to Google's Go Programming Language
Let's Go: Introduction to Google's Go Programming LanguageLet's Go: Introduction to Google's Go Programming Language
Let's Go: Introduction to Google's Go Programming LanguageGanesh Samarthyam
 
Java Generics - Quiz Questions
Java Generics - Quiz QuestionsJava Generics - Quiz Questions
Java Generics - Quiz QuestionsGanesh Samarthyam
 
Software Architecture - Quiz Questions
Software Architecture - Quiz QuestionsSoftware Architecture - Quiz Questions
Software Architecture - Quiz QuestionsGanesh Samarthyam
 
Core Java: Best practices and bytecodes quiz
Core Java: Best practices and bytecodes quizCore Java: Best practices and bytecodes quiz
Core Java: Best practices and bytecodes quizGanesh Samarthyam
 
Advanced Debugging Using Java Bytecodes
Advanced Debugging Using Java BytecodesAdvanced Debugging Using Java Bytecodes
Advanced Debugging Using Java BytecodesGanesh Samarthyam
 

Mais de Ganesh Samarthyam (20)

Wonders of the Sea
Wonders of the SeaWonders of the Sea
Wonders of the Sea
 
Animals - for kids
Animals - for kids Animals - for kids
Animals - for kids
 
Applying Refactoring Tools in Practice
Applying Refactoring Tools in PracticeApplying Refactoring Tools in Practice
Applying Refactoring Tools in Practice
 
CFP - 1st Workshop on “AI Meets Blockchain”
CFP - 1st Workshop on “AI Meets Blockchain”CFP - 1st Workshop on “AI Meets Blockchain”
CFP - 1st Workshop on “AI Meets Blockchain”
 
Great Coding Skills Aren't Enough
Great Coding Skills Aren't EnoughGreat Coding Skills Aren't Enough
Great Coding Skills Aren't Enough
 
College Project - Java Disassembler - Description
College Project - Java Disassembler - DescriptionCollege Project - Java Disassembler - Description
College Project - Java Disassembler - Description
 
Coding Guidelines - Crafting Clean Code
Coding Guidelines - Crafting Clean CodeCoding Guidelines - Crafting Clean Code
Coding Guidelines - Crafting Clean Code
 
Design Patterns - Compiler Case Study - Hands-on Examples
Design Patterns - Compiler Case Study - Hands-on ExamplesDesign Patterns - Compiler Case Study - Hands-on Examples
Design Patterns - Compiler Case Study - Hands-on Examples
 
Bangalore Container Conference 2017 - Brief Presentation
Bangalore Container Conference 2017 - Brief PresentationBangalore Container Conference 2017 - Brief Presentation
Bangalore Container Conference 2017 - Brief Presentation
 
Bangalore Container Conference 2017 - Poster
Bangalore Container Conference 2017 - PosterBangalore Container Conference 2017 - Poster
Bangalore Container Conference 2017 - Poster
 
Software Design in Practice (with Java examples)
Software Design in Practice (with Java examples)Software Design in Practice (with Java examples)
Software Design in Practice (with Java examples)
 
OO Design and Design Patterns in C++
OO Design and Design Patterns in C++ OO Design and Design Patterns in C++
OO Design and Design Patterns in C++
 
Bangalore Container Conference 2017 - Sponsorship Deck
Bangalore Container Conference 2017 - Sponsorship DeckBangalore Container Conference 2017 - Sponsorship Deck
Bangalore Container Conference 2017 - Sponsorship Deck
 
Let's Go: Introduction to Google's Go Programming Language
Let's Go: Introduction to Google's Go Programming LanguageLet's Go: Introduction to Google's Go Programming Language
Let's Go: Introduction to Google's Go Programming Language
 
Java Generics - Quiz Questions
Java Generics - Quiz QuestionsJava Generics - Quiz Questions
Java Generics - Quiz Questions
 
Java Generics - by Example
Java Generics - by ExampleJava Generics - by Example
Java Generics - by Example
 
Software Architecture - Quiz Questions
Software Architecture - Quiz QuestionsSoftware Architecture - Quiz Questions
Software Architecture - Quiz Questions
 
Docker by Example - Quiz
Docker by Example - QuizDocker by Example - Quiz
Docker by Example - Quiz
 
Core Java: Best practices and bytecodes quiz
Core Java: Best practices and bytecodes quizCore Java: Best practices and bytecodes quiz
Core Java: Best practices and bytecodes quiz
 
Advanced Debugging Using Java Bytecodes
Advanced Debugging Using Java BytecodesAdvanced Debugging Using Java Bytecodes
Advanced Debugging Using Java Bytecodes
 

Último

Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 

Último (20)

Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 

About programming languages

  • 1. Programming languages Trends in software development Ganesh Samarthyam sgganesh@gmail.com
  • 2. Agenda n  Why languages matter n  Language popularity n  Domain Specific Languages (DSLs) ¡  Case study: LaTeX n  New and emerging languages ¡  Case study: Go language n  Learning new languages n  That’s it!
  • 3. Why languages matter? n  There are numerous languages in the programming world ¡  See list of 2500 languages in http://people.ku.edu/~nkinners/LangList/Extras/ langlist.htm n  Hundreds of languages released every year! ¡  Well-known recent languages include Go, Scala, and Clojure languages n  People are passionate about languages ¡  Sometimes even emotional
  • 4. Languages in programmer’s life n  Languages have special place in programmer’s life ¡  Unlike “gizmos” or “technologies” ¡  We use languages on day-to-day basis ¡  Languages we use shapes our thoughts n  Programming is a creative activity ¡  that separates computer science from other engineering disciplines ¡  Learning programming is not just about learning the language features n  it is more about creative problem solving using the existing features
  • 6. Sierpinski triangle fractal! n  The word ‘fractal’ was coined by a mathematician named Mandelbrot in 1975. n  Fractals are created based on some simple patterns and simple rule(s). n  This program creates Sierpinski triangle fractal by printing @ and . characters to the console!
  • 7. Programming languages and research n  Approx 50% of Turing award winners closely associated with programming or languages ¡  Turing award is highest award in CS ¡  Dijkstra & Peter Naur (Algol) ¡  Backus (Fortran) ¡  Iverson (APL) ¡  Ritchie (C) ¡  Dahl & Nygaard (Simula) ¡  Alan Kay (Smalltalk) ¡  …
  • 8.
  • 9. Power of a language! n  Which language is more powerful? ¡  C, Pascal, Fortran, Assembly or Basic? n  A meaningless question! ¡  Fundamentally, languages are equally powerful n  But languages differ in their ability to perform some specific tasks easier! ¡  By providing different language features or same language features in different ways
  • 10. A simple example: String replacement n  Simple string rewriting based on a set of rules. n  An interesting application ¡  Converting a binary to unary by string replacement by applying a set of rules. n  So what’s the big deal? ¡  This algorithm is shown to be “Turing complete”!
  • 11. Markov’s string replacement algorithm Let us see the rules first: Rule 1: "#0" => "0##" Rule 2: "1" => "0#" Rule 3: "0" => "" Rule 4: "#" => "1" Input string: "11" Step 1: "0#1" (apply rule 2) Step 2: "0#0#" (apply rule 2) Step 3: "00###" (apply rule 1) Step 4: "0###" (apply rule 3) Step 5: "###" (apply rule 3) Step 6: "1##" (apply rule 4) Step 7: "11#" (apply rule 4) Step 8: "111" (apply rule 4) Terminate. "100" => "0#00" => "00##0" => "00#0##" => "000####" => "00####" => "0####" => "####" => "1###" => "11##" => "111#" => "1111"
  • 12. Language influence and evolution n  A new language is not created from nowhere ¡  It is influenced by many other languages, technologies or ideas n  Language evolution tree ¡  Graphical representation of how languages are influenced by others ¡  Almost all here know C; but do you know how many languages it got influenced from?
  • 13. Language popularity n  Many languages have started getting more popular ¡  Those were relatively unknown in just recent past ¡  E.g. Ruby, Python, Lua, … n  How to we know the popularity of a language? ¡  Tiobe “language popularity index” is most widely referred (http://www.tiobe.com/) ¡  Latest status is in next slide
  • 14. TIOBE Index (as on Jan 2016)
  • 15. Language popularity … n  Popularity depends on so many factors ¡  Like company sponsorship/backing n  Best example is Swift ¡  It is popular because of Apple ¡  Does it solve new problems or changes in the world around us n  For example, Java became popular when released in 1995 because of web n  Concurrent languages will become popular because of multi- core processors ¡  …
  • 16. Language popularity: Observations n  C is the second most popular language! ¡  And its >3 decades old ¡  Continues to be popular for embedded programming n  C++ is steadily losing popularity ¡  C#, Java, etc ate from C++ pie n  Popular company related languages ¡  ActionScript (Adobe), C# (MS), Obj-C & Swift (Apple) n  OO languages are very popular (55%) ¡  Procedural languages (40%) ¡  Functional, logic and other languages (5%)
  • 17. Language popularity: Observations n  Statically typed languages are very popular (57% share) ¡  Losing steadily to dynamic languages (42%) n  Web is becoming more & more pervasive ¡  PHP popularity reflects that n  Scripting languages are more popular than ever before ¡  Loser: Perl; Gainers: Python & Ruby n  Non-GC languages losing popularity ¡  C++, Cobol, Fortran etc; except for C
  • 18. Domain Specific Languages (DSLs) n  Surprisingly general purpose languages (like C, Java…) are not best languages for specific uses ¡  Domain Specific Languages (DSLs) are best suited for specific uses n  DSLs are about a specific domain, and provides solutions for that domain ¡  E.g.: HTML, SQL, LaTeX, GraphViz, VHDL Verilog… ¡  The main problem is the time taken to learn n  and become productive
  • 19. DSL Case study: LaTeX n  I’ve written full-length books using MS Word ¡  Bitten by the problems in managing a large document ¡  MS Word not well suited for a specific purpose like writing a book n  LaTeX is a markup language for document preparation ¡  Like writing papers, letters, articles, thesis … ¡  Its macros on top of TeX (created by D.Knuth)
  • 20. LaTeX vs. MS Word n  Can you find which document is created with LaTeX and with MS Word? MS Word LaTeX
  • 21. Sample LaTeX program documentclass[12pt]{article} begin{document} centering{ textbf{Hello world!} } end{document} $ latex hello $ dvips hello $ gv hello.ps $ ps2pdf hello.ps
  • 22. The best programming language? n  Most of the programmers know which is the best programming language. ¡  Each programmer has different answer! ¡  “the most favourite” is not “the best” It is C you know – there is nothing like that Python! Its so intuitive to program in it its PHP - I think you haven't used it – if you use it you'll agree that its the best
  • 23. New and emerging languages n  The computing world is changing fast ¡  Old languages (C, Fortran…) are not very suitable n  Major trends ¡  More pervasive web/internet ¡  Multi-core processors ¡  Larger and more complex software ¡  Need for more reusable/pluggable software ¡  Wider use of embedded systems ¡  Reliability more important (e.g. s/w in pacemaker device) ¡  ...
  • 24. What are the new languages? n  Many new languages getting designed with this new world order in mind ¡  Scala, Go, Swift etc n  General trend in new languages ¡  Garbage collected, concurrent, more dynamic, higher-level, … ¡  Less importance for efficiency, OO, … n  Case study: Go language
  • 25. Go: Background n  Go is from Google (Sep 09) ¡  Created lots of excitement in the programming community n  Many tout it as the next C language ¡  ‘C’ evolved from ‘B’; many languages are named as ‘D’, or want to be the ‘D’ language ¡  But nothing has made the cut so far; “Go” might (or will it be “Gone” in a few years ;-) ) n  Go won Tiobe’s ‘language of the year award 2009’ n  Robert Griesemer, Ken Thompson (of Unix fame), and Rob Pike are the creators of the language. ¡  All three are well-known in programming community
  • 26. Go: Important characteristics n  Simplicity: Go has a clean and concise syntax ¡  Characteristic of Google products ¡  For example, light-weight type system n  Use it to believe it n  Separation of interface and the implementation ¡  I know it’s often misused statement, but Go has it! ¡  Arguably a novel feature of Go n  Goroutines ¡  Is based on CSP: much safer than lock-based, like Java n  And more: ¡  E.g. Reflection (yes! but this is systems prog. lang!)
  • 27. Go Interfaces: A novel feature n  Interfaces specified with ‘interface’ keyword ¡  Not same as in C#/Java n  The structs doesn’t have to say it implements an interface ¡  Any struct that implements the methods as specified by any interface satisfies that interface ¡  Strict static type checking & “duck typing”!
  • 28. Learning new languages n  Its worth learning new languages ¡  New ways of thinking or solving problems ¡  ‘As I write a program, I should use a language that minimizes the distance between the problem solving strategies that I have in my head and the program text I eventually write on paper’ -  Jon Bentley (Programming Pearls) n  Go beyond learning the mainstream languages ¡  Take the road less travelled!
  • 29. Wrapping up n  Programming languages is an exciting topic ¡  From research as well as practical usage perspectives n  Consider learning a new language ¡  New like Swift, Scala, Go, Clojure … ¡  Or different ones like Lisp, Prolog, Python, LaTeX…