present and future of programming languages - ola bini
Post on 17-Oct-2014
3.262 views
DESCRIPTION
Programming languages are at the core of our profession. But we don't always give them as much credence as they deserve. The strength of Ruby lies in its heritage from a number of different languages, and a look at the history leading up to Ruby might reveal what lies in store for the future. At the moment a lot of attention is spent looking at programming languages and developers are realizing that your language is an important tool. I will talk a little bit about why languages matter, why you should know several, and what the future of languages might look like.TRANSCRIPT
![Page 2: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/2.jpg)
The Tao gave birth to machine language
Machine language gave birth to the assembler
söndag, 2010 mars 21
![Page 3: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/3.jpg)
The assembler gave birth to the compiler
Now there are ten thousand languages
söndag, 2010 mars 21
![Page 4: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/4.jpg)
Each language has its purpose, however humble
Each language expresses the Yin and Yang of software
Each language has its place within the Tao
söndag, 2010 mars 21
![Page 5: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/5.jpg)
But do not program in COBOL if you can avoid it
söndag, 2010 mars 21
![Page 6: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/6.jpg)
söndag, 2010 mars 21
![Page 7: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/7.jpg)
söndag, 2010 mars 21
![Page 8: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/8.jpg)
Greenspun's Tenth Rule of Programming
söndag, 2010 mars 21
![Page 9: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/9.jpg)
General purpose languages
Special purpose languages
Domain specific languages
söndag, 2010 mars 21
![Page 10: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/10.jpg)
Where are we now?
söndag, 2010 mars 21
![Page 11: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/11.jpg)
Java
söndag, 2010 mars 21
![Page 12: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/12.jpg)
söndag, 2010 mars 21
![Page 13: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/13.jpg)
“Scripting” languages
söndag, 2010 mars 21
![Page 14: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/14.jpg)
“Scripting” languagesPragmatic languages
söndag, 2010 mars 21
![Page 15: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/15.jpg)
Where did we come from?
söndag, 2010 mars 21
![Page 16: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/16.jpg)
Ruby lineage
söndag, 2010 mars 21
![Page 17: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/17.jpg)
a, b, c = 42, 69, 25
söndag, 2010 mars 21
![Page 18: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/18.jpg)
def foo yield 42 3.times do |n| yield n*25 endend
foo { |x| puts x }
söndag, 2010 mars 21
![Page 19: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/19.jpg)
CLU
söndag, 2010 mars 21
![Page 20: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/20.jpg)
/^(\d{3})-(\d{4})$/ =~ phone_number
söndag, 2010 mars 21
![Page 21: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/21.jpg)
$x = 42@me = other@@foo += 2
söndag, 2010 mars 21
![Page 22: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/22.jpg)
Global swearing
$/ = “%”$= = trueputs $!
söndag, 2010 mars 21
![Page 23: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/23.jpg)
puts “hello” unless moon == :full
söndag, 2010 mars 21
![Page 24: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/24.jpg)
Perl
söndag, 2010 mars 21
![Page 25: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/25.jpg)
class MyNumber < Number; end
söndag, 2010 mars 21
![Page 26: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/26.jpg)
foo.send :answer?, 42
söndag, 2010 mars 21
![Page 27: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/27.jpg)
puts obj.methods.grep /=$/
söndag, 2010 mars 21
![Page 28: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/28.jpg)
Smalltalk
söndag, 2010 mars 21
![Page 29: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/29.jpg)
class Foo include ExampleMethodsend
baz.extend ExampleMethods
söndag, 2010 mars 21
![Page 30: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/30.jpg)
Lisp Machine Lisp
söndag, 2010 mars 21
![Page 31: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/31.jpg)
def incrementor(x) lambda do next, x = x, x+1 next endend
i = incrementor(10)i.call # => 10i.call # => 11i.call # => 12
söndag, 2010 mars 21
![Page 32: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/32.jpg)
Scheme
söndag, 2010 mars 21
![Page 33: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/33.jpg)
Ruby
söndag, 2010 mars 21
![Page 34: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/34.jpg)
Good design is not innovation
Good design is choosing what to include - and what to not include
söndag, 2010 mars 21
![Page 35: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/35.jpg)
söndag, 2010 mars 21
![Page 36: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/36.jpg)
Imperative programming
söndag, 2010 mars 21
![Page 37: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/37.jpg)
Functional programming
söndag, 2010 mars 21
![Page 38: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/38.jpg)
Logic programming
söndag, 2010 mars 21
![Page 39: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/39.jpg)
Object oriented programming
söndag, 2010 mars 21
![Page 40: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/40.jpg)
Domain specific languages
söndag, 2010 mars 21
![Page 41: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/41.jpg)
Multiparadigm languages
söndag, 2010 mars 21
![Page 42: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/42.jpg)
Ceremony vs Essence
söndag, 2010 mars 21
![Page 43: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/43.jpg)
Typing
söndag, 2010 mars 21
![Page 44: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/44.jpg)
söndag, 2010 mars 21
![Page 45: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/45.jpg)
Natural languages?
söndag, 2010 mars 21
![Page 46: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/46.jpg)
söndag, 2010 mars 21
![Page 47: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/47.jpg)
Design
söndag, 2010 mars 21
![Page 48: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/48.jpg)
Communication
söndag, 2010 mars 21
![Page 49: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/49.jpg)
Abstraction
söndag, 2010 mars 21
![Page 50: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/50.jpg)
Expressiveness
söndag, 2010 mars 21
![Page 51: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/51.jpg)
First class
söndag, 2010 mars 21
![Page 52: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/52.jpg)
Focused or multiparadigm?
söndag, 2010 mars 21
![Page 53: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/53.jpg)
Where are we going?
söndag, 2010 mars 21
![Page 54: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/54.jpg)
Is concurrency really a large problem?
söndag, 2010 mars 21
![Page 55: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/55.jpg)
söndag, 2010 mars 21
![Page 56: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/56.jpg)
More programming languages - not fewer
söndag, 2010 mars 21
![Page 57: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/57.jpg)
Language leverage
söndag, 2010 mars 21
![Page 58: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/58.jpg)
söndag, 2010 mars 21
![Page 59: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/59.jpg)
Higher level
söndag, 2010 mars 21
![Page 60: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/60.jpg)
Slowness and wastefulness
söndag, 2010 mars 21
![Page 61: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/61.jpg)
Virtual machines
söndag, 2010 mars 21
![Page 62: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/62.jpg)
Text based languages?
söndag, 2010 mars 21
![Page 63: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/63.jpg)
AST languages?
söndag, 2010 mars 21
![Page 64: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/64.jpg)
Language workbenches
söndag, 2010 mars 21
![Page 65: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/65.jpg)
NBL?
söndag, 2010 mars 21
![Page 66: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/66.jpg)
Other paradigms?
söndag, 2010 mars 21
![Page 67: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/67.jpg)
söndag, 2010 mars 21
![Page 68: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/68.jpg)
söndag, 2010 mars 21
![Page 69: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/69.jpg)
It’s going to be interesting
söndag, 2010 mars 21
![Page 70: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/70.jpg)
Where is Ruby going?
söndag, 2010 mars 21
![Page 71: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/71.jpg)
Ruby 2.0
söndag, 2010 mars 21
![Page 72: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/72.jpg)
I don’t know
söndag, 2010 mars 21
![Page 73: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/73.jpg)
Easier to modify the language
söndag, 2010 mars 21
![Page 74: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/74.jpg)
Canonical AST
söndag, 2010 mars 21
![Page 75: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/75.jpg)
Simplify the core?
söndag, 2010 mars 21
![Page 76: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/76.jpg)
Scoped extensions
söndag, 2010 mars 21
![Page 77: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/77.jpg)
DSLs
söndag, 2010 mars 21
![Page 78: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/78.jpg)
Concurrency?
söndag, 2010 mars 21
![Page 79: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/79.jpg)
Typing?
söndag, 2010 mars 21
![Page 80: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/80.jpg)
RubyX
söndag, 2010 mars 21
![Page 81: Present and Future of Programming Languages - ola bini](https://reader033.vdocuments.site/reader033/viewer/2022051207/5441bf0db1af9ff44d8b4780/html5/thumbnails/81.jpg)
The future
söndag, 2010 mars 21