SlideShare a Scribd company logo
1 of 79
Download to read offline
© 2014 Bruce Tate 
Fear and the Evolution of Languages 
Bruce A. Tate 
(Oct25), 2014
© 2014 Bruce Tate 42 miles, day and night (Oct25), 2014
© 2014 Bruce Tate Fear shapes places (Oct25), 2014
© 2014 Bruce Tate (You can see it from space) (Oct25), 2014
© 2014 Bruce Tate Fear vs. Discovery (Oct25), 2014
© 2014 Bruce Tate 
Fear and language 
creation 
(Oct25), 2014
© 2014 Bruce Tate 
(Oct25), 2014
© 2014 Bruce Tate 
Fear and language 
creation 
(Oct25), 2014
© 2014 Bruce Tate 
Fear and language 
adoption 
(Oct25), 2014
© 2014 Bruce Tate 
(Oct25), 2014
© 2014 Bruce Tate Technology Adoption Curve (Oct25), 2014
Innovators 
Early 
Adoptors 
Early 
Majority 
Late 
Majority 
Laggards 
© 2014 Bruce Tate Technology Adoption Curve 
(Oct25), 2014
Innovators 
Early 
Adoptors 
Early 
Majority 
Late 
Majority 
Laggards 
© 2014 Bruce Tate Language Adoption Curve 
(Oct25), 2014
... ... ... ... 
© 2014 Bruce Tate 
C++ Java 
Cobol 
Fortran Visual Basic PhP 
... ... ... 
Language Adoption Curve 
(Oct25), 2014
Syntax 
Types 
... ... ... ... 
© 2014 Bruce Tate 
Cobol C++ Java 
Fortran Visual Basic PhP 
... ... ... 
Libraries 
Language Adoption Curve 
(Oct25), 2014
HLL Structured OOP Functiona 
Paradigm Adoption Curve (Oct25), 2014 
© 2014 Bruce Tate
HLL Structured 
OOP Functiona 
Paradigm Adoption Curve 
© 2014 Bruce Tate 
Mental Model 
(Oct25), 2014
The Chasm 
© 2014 Bruce Tate Language Adoption and Fear 
(Oct25), 2014
:( (Oct25), 2014 
The Chasm 
© 2014 Bruce Tate Language Adoption and Fear
© 2014 Bruce Tate Language Adoption and Fear 
:) :) 
:) 
The Chasm 
:) :) 
:) 
:):) 
:) 
:( (Oct25), 2014
The Chasm 
People 
:) :) 
Tools 
Jobs 
:) 
:) :) 
Frameworks 
:) 
Conferences 
:) 
Training 
:):) 
© 2014 Bruce Tate Language Adoption and Fear 
(Oct25), 2014
:( (Oct25), 2014 
The Chasm 
Beer 
Fun 
Diversity 
© 2014 Bruce Tate Language Adoption and Fear
End: Moore; Begin: Tate 
© 2014 Bruce Tate Language Adoption and Fear 
(Oct25), 2014
© 2014 Bruce Tate 
Paralyzing 
Fear 
Language Adoption and Fear (Oct25), 2014
© 2014 Bruce Tate 
Paralyzing 
Fear 
Language Adoption and Fear (Oct25), 2014
Will it be abandoned? 
Will I lack talent? 
© 2014 Bruce Tate 
Will we have to retool? 
What will it cost me? 
Paralyzing 
Fear 
Will it break? 
Is it too difficult to learn? 
(Oct25), 2014
© 2014 Bruce Tate Language Adoption and Fear (Oct25), 2014
© 2014 Bruce Tate Language Adoption and Fear (Oct25), 2014
© 2014 Bruce Tate Language Adoption and Fear (Oct25), 2014
Paralyzing 
Fear Cobol 
Language Adoption and Fear (Oct25), 2014 
© 2014 Bruce Tate
Paralyzing 
Fear C(++) 
Language Adoption and Fear (Oct25), 2014 
© 2014 Bruce Tate
© 2014 Bruce Tate 
Paralyzing 
Fear Java 
Language Adoption and Fear (Oct25), 2014
Longer cycles 
© 2014 Bruce Tate Language Adoption and Fear 
(Oct25), 2014
Bigger chasms 
© 2014 Bruce Tate Language Adoption and Fear 
(Oct25), 2014
© 2014 Bruce Tate 
Motivating 
Fear 
Language Adoption and Fear (Oct25), 2014
© 2014 Bruce Tate 
Motivating 
Fear 
Language Adoption and Fear (Oct25), 2014
© 2014 Bruce Tate 
Java 
C++ 
Language Adoption and Fear 
(Oct25), 2014
© 2014 Bruce Tate 
Paralyzing 
Fear 
Motivating 
Fear 
-Too much to learn 
-Proprietary 
-Old hardware 
Language Adoption and Fear 
(Oct25), 2014
© 2014 Bruce Tate 
Paralyzing 
Fear 
Motivating 
Fear 
-C++ Syntax 
-Internet 
-JVM 
+ Deployment 
Language Adoption and Fear (Oct25), 2014
(As late as the mid 1990s) 
(10 diskettes) 
© 2014 Bruce Tate Deployment Problem 
(Oct25), 2014
(10 diskettes) X (9 registers per store) 
© 2014 Bruce Tate Deployment Problem 
(Oct25), 2014
(10 diskettes) X (9 registers per store) X (5 stores) 
© 2014 Bruce Tate Deployment Problem 
(Oct25), 2014
(10 diskettes) X 
(9 registers per store) X 
(5 stores) X 
(3 services) X 
(n fixpacks/year) ... 
© 2014 Bruce Tate Deployment Problem 
(Oct25), 2014
Now add... 
© 2014 Bruce Tate Deployment Problem 
(Oct25), 2014
Multiple vendors 
Sanctioned application code 
Fragile techniques 
(screen scraping) 
Unprotected memory 
Multiple tiers 
© 2014 Bruce Tate IT 
(Oct25), 2014
Multiple vendors 
Sanctioned application code 
Unsanctioned apps and macros 
Fragile techniques 
(screen scraping) 
Unprotected memory 
Multiple tiers 
© 2014 Bruce Tate it 
(Oct25), 2014
Multiple vendors 
Sanctioned application code 
Unsanctioned apps and macros 
Fragile techniques 
(screen scraping) 
Unprotected memory 
Multiple tiers 
© 2014 Bruce Tate ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
(Oct25), 2014
© 2014 Bruce Tate Java crosses the chasm (Oct25), 2014
© 2014 Bruce Tate Java crosses the chasm (Oct25), 2014
© 2014 Bruce Tate Java crosses the chasm (Oct25), 2014
© 2014 Bruce Tate 
Java 
Java crosses the chasm (Oct25), 2014
© 2014 Bruce Tate 
Java 
Erlang (Elixir) 
Clojure 
Haskell 
Elixir 
Sc..a. la 
Java crosses the chasm (Oct25), 2014
© 2014 Bruce Tate Today 
Paralyzing 
Fear 
Motivating 
Fear 
(Oct25), 2014
© 2014 Bruce Tate Today 
Paralyzing 
Fear 
Motivating 
Fear 
? 
(Oct25), 2014
© 2014 Bruce Tate 
Java 
(Oct25), 2014
© 2014 Bruce Tate 
Java 
What’s the 
best way 
to eat an 
elephant? 
(Oct25), 2014
© 2014 Bruce Tate 
What’s the 
best way 
to eat an 
elephant? 
(Oct25), 2014
1. Building communities is easier 
© 2014 Bruce Tate 
(Oct25), 2014
2. OO languages, FP features 
© 2014 Bruce Tate 
(Oct25), 2014
3. Deployment options abound 
© 2014 Bruce Tate 
(Oct25), 2014
© 2014 Bruce Tate 
4. Interfaces are cleaner 
(Oct25), 2014
© 2014 Bruce Tate Today 
Paralyzing 
Fear 
Motivating 
Fear 
? 
(Oct25), 2014
© 2014 Bruce Tate 
1. Code complexity 
(always first) 
(Oct25), 2014
© 2014 Bruce Tate 
defmodule 
VidStore 
do 
use 
StateMachine 
state 
:available, 
[ 
rent: 
[ 
to: 
:rented, 
calls: 
[ 
&VidStore.renting/1 
]]] 
state 
:rented, 
[ 
return: 
[ 
to: 
:available, 
calls: 
[ 
&VidStore.returning/1 
]], 
lose: 
[ 
to: 
:lost, 
calls: 
[ 
&VidStore.losing/1 
]]] 
state 
:lost, 
[] 
... 
end 
(Oct25), 2014
© 2014 Bruce Tate 
defmodule 
VidStore 
do 
use 
StateMachine 
state 
:available, 
[ 
rent: 
[ 
to: 
:rented, 
calls: 
[ 
&VidStore.renting/1 
]]] 
state 
:rented, 
[ 
return: 
[ 
to: 
:available, 
calls: 
[ 
&VidStore.returning/1 
]], 
lose: 
[ 
to: 
:lost, 
calls: 
[ 
&VidStore.losing/1 
]]] 
state 
:lost, 
[] 
... 
end 
VidStore.rent video 
VidStore.return video 
video |> rent |> lose 
(Oct25), 2014
2. Multicore and Distribution 
© 2014 Bruce Tate 
(the real Y2K) 
(Oct25), 2014
© 2014 Bruce Tate 
defmodule Chatroom do 
use OtpDsl.GenServer, initial_state: HashDict.new() 
defcall enter(name), users do 
send_all(users, "#{name} has entered the room") 
reply(:ok, Dict.put(users, name, _from)) 
end 
defcall leave(name), users do 
d = Dict.delete(users, name) 
send_all(users, "#{name} has left the room") 
reply(:ok, d) 
end 
defcall message(name, message) do 
send_all(users, message) 
reply(:ok, d) 
end 
defp send_all(users, message) do 
Enum.each(Dict.values(users), User.send_line(&1, message)) 
end 
end 
code example: Copyright © 2014 - Peter Minten 
(Oct25), 2014
© 2014 Bruce Tate 
replaces... 
(Oct25), 2014
© 2014 Bruce Tate 
defmodule Chatroom2 do 
use GenServer.Behaviour 
def enter(name) do 
:gen_server.call(:chatroom, { :enter, name }) 
end 
def leave(name) do 
:gen_server.call(:chatroom, { :leave, name }) 
end 
def message(name, message) do 
:gen_server.call(:chatroom, { :message, name, message }) 
end 
def init(_args) do 
{ :ok, HashDict.new() } 
end 
def handle_call({ :enter, name }, from, users) do 
send_all(users, "#{name} has entered the room") 
{ :reply, :ok, Dict.put(users, name, from) } 
end 
def handle_call({ :leave, name }, _from, users) do 
d = Dict.delete(users, name) 
send_all(users, "#{name} has left the room") 
{ :reply, :ok, d } 
end 
def handle_call({ :message, name, message }, _from, users) do 
send_all(users, message) 
{ :reply, :ok, users } 
end 
defp send_all(users, message) do 
Enum.each(Dict.to_list(users), fn { user, pid } -> 
User.send_line(user, message) 
end) 
end 
end code example: Copyright © 2014 - Peter Minten 
(Oct25), 2014
© 2014 Bruce Tate 
replaces... 
(Oct25), 2014
© 2014 Bruce Tate 
Too big to show 
(Oct25), 2014
DSL from Dave Thomas: 
https://github.com/pragdave/otp_dsl 
Example from Peter Minten 
Thinking in Elixir: Hiding Your Messages 
http://pminten.github.io/blog/2013/09/14/thinking-in-elixir-hide-your-messages/ 
code example: Copyright © 2014 - Peter Minten 
© 2014 Bruce Tate References 
(Oct25), 2014
© 2014 Bruce Tate 
3. Complexity 
Is JavaScript the best we can do? 
(Oct25), 2014
© 2014 Bruce Tate 
import 
Mouse 
import 
Window 
drawPaddle 
w 
h 
x 
= 
filled 
black 
(rect 
80 
10) 
|> 
moveX 
(toFloat 
x 
-­‐ 
toFloat 
w 
/ 
2) 
|> 
moveY 
(-­‐(toFloat 
h 
* 
0.45)) 
display 
(w, 
h) 
x 
= 
collage 
w 
h 
[ 
drawPaddle 
w 
h 
x 
] 
main 
= 
lift2 
display 
Window.dimensions 
Mouse.x 
(Oct25), 2014
© 2014 Bruce Tate 
Java 
Erlang (Elixir) 
Clojure 
Haskell 
Elixir 
Scala 
... 
(Oct25), 2014
© 2014 Bruce Tate 
Erlang (Elixir) 
Clojure 
Haskell 
Elixir 
Scala 
... 
(Oct25), 2014
© 2014 Bruce Tate 
Erlang (Elixir) 
Clojure 
Haskell 
Elixir 
Sc..a. la 
(Oct25), 2014
© 2014 Bruce Tate ? (Oct25), 2014
DSL from Dave Thomas: 
https://github.com/pragdave/otp_dsl 
Example from Peter Minten 
Thinking in Elixir: Hiding Your Messages 
http://pminten.github.io/blog/2013/09/14/thinking-in-elixir-hide-your-messages/ 
code example: Copyright © 2014 - Peter Minten 
© 2014 Bruce Tate References 
(Oct25), 2014

More Related Content

More from Naresh Jain

Agile India 2018 Conference
Agile India 2018 ConferenceAgile India 2018 Conference
Agile India 2018 ConferenceNaresh Jain
 
Agile India 2018 Conference
Agile India 2018 ConferenceAgile India 2018 Conference
Agile India 2018 ConferenceNaresh Jain
 
Pilgrim's Progress to the Promised Land by Robert Virding
Pilgrim's Progress to the Promised Land by Robert VirdingPilgrim's Progress to the Promised Land by Robert Virding
Pilgrim's Progress to the Promised Land by Robert VirdingNaresh Jain
 
Concurrent languages are Functional by Francesco Cesarini
Concurrent languages are Functional by Francesco CesariniConcurrent languages are Functional by Francesco Cesarini
Concurrent languages are Functional by Francesco CesariniNaresh Jain
 
Erlang from behing the trenches by Francesco Cesarini
Erlang from behing the trenches by Francesco CesariniErlang from behing the trenches by Francesco Cesarini
Erlang from behing the trenches by Francesco CesariniNaresh Jain
 
Anatomy of an eCommerce Search Engine by Mayur Datar
Anatomy of an eCommerce Search Engine by Mayur DatarAnatomy of an eCommerce Search Engine by Mayur Datar
Anatomy of an eCommerce Search Engine by Mayur DatarNaresh Jain
 
Setting up Continuous Delivery Culture for a Large Scale Mobile App
Setting up Continuous Delivery Culture for a Large Scale Mobile AppSetting up Continuous Delivery Culture for a Large Scale Mobile App
Setting up Continuous Delivery Culture for a Large Scale Mobile AppNaresh Jain
 
Towards FutureOps: Stable, Repeatable environments from Dev to Prod
Towards FutureOps: Stable, Repeatable environments from Dev to ProdTowards FutureOps: Stable, Repeatable environments from Dev to Prod
Towards FutureOps: Stable, Repeatable environments from Dev to ProdNaresh Jain
 
Value Driven Development by Dave Thomas
Value Driven Development by Dave Thomas Value Driven Development by Dave Thomas
Value Driven Development by Dave Thomas Naresh Jain
 
No Silver Bullets in Functional Programming by Brian McKenna
No Silver Bullets in Functional Programming by Brian McKennaNo Silver Bullets in Functional Programming by Brian McKenna
No Silver Bullets in Functional Programming by Brian McKennaNaresh Jain
 
Functional Programming Conference 2016
Functional Programming Conference 2016Functional Programming Conference 2016
Functional Programming Conference 2016Naresh Jain
 
Agile India 2017 Conference
Agile India 2017 ConferenceAgile India 2017 Conference
Agile India 2017 ConferenceNaresh Jain
 
Unleashing the Power of Automated Refactoring with JDT
Unleashing the Power of Automated Refactoring with JDTUnleashing the Power of Automated Refactoring with JDT
Unleashing the Power of Automated Refactoring with JDTNaresh Jain
 
Getting2Alpha: Turbo-charge your product with Game Thinking by Amy Jo Kim
Getting2Alpha: Turbo-charge your product with Game Thinking by Amy Jo KimGetting2Alpha: Turbo-charge your product with Game Thinking by Amy Jo Kim
Getting2Alpha: Turbo-charge your product with Game Thinking by Amy Jo KimNaresh Jain
 
MVP Design Hacks
MVP Design HacksMVP Design Hacks
MVP Design HacksNaresh Jain
 
Functional Conf 2015
Functional Conf 2015Functional Conf 2015
Functional Conf 2015Naresh Jain
 
Agile India 2016 Conference
Agile India 2016 ConferenceAgile India 2016 Conference
Agile India 2016 ConferenceNaresh Jain
 
Test Driving a jQuery Plugin
Test Driving a jQuery PluginTest Driving a jQuery Plugin
Test Driving a jQuery PluginNaresh Jain
 
Making Sense Through Action by Dave Snowden
Making Sense Through Action by Dave SnowdenMaking Sense Through Action by Dave Snowden
Making Sense Through Action by Dave SnowdenNaresh Jain
 

More from Naresh Jain (20)

Agile India 2018 Conference
Agile India 2018 ConferenceAgile India 2018 Conference
Agile India 2018 Conference
 
Agile India 2018 Conference
Agile India 2018 ConferenceAgile India 2018 Conference
Agile India 2018 Conference
 
Pilgrim's Progress to the Promised Land by Robert Virding
Pilgrim's Progress to the Promised Land by Robert VirdingPilgrim's Progress to the Promised Land by Robert Virding
Pilgrim's Progress to the Promised Land by Robert Virding
 
Concurrent languages are Functional by Francesco Cesarini
Concurrent languages are Functional by Francesco CesariniConcurrent languages are Functional by Francesco Cesarini
Concurrent languages are Functional by Francesco Cesarini
 
Erlang from behing the trenches by Francesco Cesarini
Erlang from behing the trenches by Francesco CesariniErlang from behing the trenches by Francesco Cesarini
Erlang from behing the trenches by Francesco Cesarini
 
Anatomy of an eCommerce Search Engine by Mayur Datar
Anatomy of an eCommerce Search Engine by Mayur DatarAnatomy of an eCommerce Search Engine by Mayur Datar
Anatomy of an eCommerce Search Engine by Mayur Datar
 
Setting up Continuous Delivery Culture for a Large Scale Mobile App
Setting up Continuous Delivery Culture for a Large Scale Mobile AppSetting up Continuous Delivery Culture for a Large Scale Mobile App
Setting up Continuous Delivery Culture for a Large Scale Mobile App
 
Towards FutureOps: Stable, Repeatable environments from Dev to Prod
Towards FutureOps: Stable, Repeatable environments from Dev to ProdTowards FutureOps: Stable, Repeatable environments from Dev to Prod
Towards FutureOps: Stable, Repeatable environments from Dev to Prod
 
Value Driven Development by Dave Thomas
Value Driven Development by Dave Thomas Value Driven Development by Dave Thomas
Value Driven Development by Dave Thomas
 
No Silver Bullets in Functional Programming by Brian McKenna
No Silver Bullets in Functional Programming by Brian McKennaNo Silver Bullets in Functional Programming by Brian McKenna
No Silver Bullets in Functional Programming by Brian McKenna
 
Functional Programming Conference 2016
Functional Programming Conference 2016Functional Programming Conference 2016
Functional Programming Conference 2016
 
Agile India 2017 Conference
Agile India 2017 ConferenceAgile India 2017 Conference
Agile India 2017 Conference
 
The Eclipse Way
The Eclipse WayThe Eclipse Way
The Eclipse Way
 
Unleashing the Power of Automated Refactoring with JDT
Unleashing the Power of Automated Refactoring with JDTUnleashing the Power of Automated Refactoring with JDT
Unleashing the Power of Automated Refactoring with JDT
 
Getting2Alpha: Turbo-charge your product with Game Thinking by Amy Jo Kim
Getting2Alpha: Turbo-charge your product with Game Thinking by Amy Jo KimGetting2Alpha: Turbo-charge your product with Game Thinking by Amy Jo Kim
Getting2Alpha: Turbo-charge your product with Game Thinking by Amy Jo Kim
 
MVP Design Hacks
MVP Design HacksMVP Design Hacks
MVP Design Hacks
 
Functional Conf 2015
Functional Conf 2015Functional Conf 2015
Functional Conf 2015
 
Agile India 2016 Conference
Agile India 2016 ConferenceAgile India 2016 Conference
Agile India 2016 Conference
 
Test Driving a jQuery Plugin
Test Driving a jQuery PluginTest Driving a jQuery Plugin
Test Driving a jQuery Plugin
 
Making Sense Through Action by Dave Snowden
Making Sense Through Action by Dave SnowdenMaking Sense Through Action by Dave Snowden
Making Sense Through Action by Dave Snowden
 

Recently uploaded

Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension AidPhilip Schwarz
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisamasabamasaba
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...SelfMade bd
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnAmarnathKambale
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisamasabamasaba
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...Jittipong Loespradit
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyviewmasabamasaba
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplatePresentation.STUDIO
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2
 
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...masabamasaba
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfonteinmasabamasaba
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in sowetomasabamasaba
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationJuha-Pekka Tolvanen
 
WSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - KeynoteWSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - KeynoteWSO2
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...Shane Coughlan
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park masabamasaba
 

Recently uploaded (20)

Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the Situation
 
WSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - KeynoteWSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - Keynote
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 

Fear: The Role of Fear in Language Adoption by Bruce Tate

  • 1. © 2014 Bruce Tate Fear and the Evolution of Languages Bruce A. Tate (Oct25), 2014
  • 2. © 2014 Bruce Tate 42 miles, day and night (Oct25), 2014
  • 3. © 2014 Bruce Tate Fear shapes places (Oct25), 2014
  • 4. © 2014 Bruce Tate (You can see it from space) (Oct25), 2014
  • 5. © 2014 Bruce Tate Fear vs. Discovery (Oct25), 2014
  • 6. © 2014 Bruce Tate Fear and language creation (Oct25), 2014
  • 7. © 2014 Bruce Tate (Oct25), 2014
  • 8. © 2014 Bruce Tate Fear and language creation (Oct25), 2014
  • 9. © 2014 Bruce Tate Fear and language adoption (Oct25), 2014
  • 10. © 2014 Bruce Tate (Oct25), 2014
  • 11. © 2014 Bruce Tate Technology Adoption Curve (Oct25), 2014
  • 12. Innovators Early Adoptors Early Majority Late Majority Laggards © 2014 Bruce Tate Technology Adoption Curve (Oct25), 2014
  • 13. Innovators Early Adoptors Early Majority Late Majority Laggards © 2014 Bruce Tate Language Adoption Curve (Oct25), 2014
  • 14. ... ... ... ... © 2014 Bruce Tate C++ Java Cobol Fortran Visual Basic PhP ... ... ... Language Adoption Curve (Oct25), 2014
  • 15. Syntax Types ... ... ... ... © 2014 Bruce Tate Cobol C++ Java Fortran Visual Basic PhP ... ... ... Libraries Language Adoption Curve (Oct25), 2014
  • 16. HLL Structured OOP Functiona Paradigm Adoption Curve (Oct25), 2014 © 2014 Bruce Tate
  • 17. HLL Structured OOP Functiona Paradigm Adoption Curve © 2014 Bruce Tate Mental Model (Oct25), 2014
  • 18. The Chasm © 2014 Bruce Tate Language Adoption and Fear (Oct25), 2014
  • 19. :( (Oct25), 2014 The Chasm © 2014 Bruce Tate Language Adoption and Fear
  • 20. © 2014 Bruce Tate Language Adoption and Fear :) :) :) The Chasm :) :) :) :):) :) :( (Oct25), 2014
  • 21. The Chasm People :) :) Tools Jobs :) :) :) Frameworks :) Conferences :) Training :):) © 2014 Bruce Tate Language Adoption and Fear (Oct25), 2014
  • 22. :( (Oct25), 2014 The Chasm Beer Fun Diversity © 2014 Bruce Tate Language Adoption and Fear
  • 23. End: Moore; Begin: Tate © 2014 Bruce Tate Language Adoption and Fear (Oct25), 2014
  • 24. © 2014 Bruce Tate Paralyzing Fear Language Adoption and Fear (Oct25), 2014
  • 25. © 2014 Bruce Tate Paralyzing Fear Language Adoption and Fear (Oct25), 2014
  • 26. Will it be abandoned? Will I lack talent? © 2014 Bruce Tate Will we have to retool? What will it cost me? Paralyzing Fear Will it break? Is it too difficult to learn? (Oct25), 2014
  • 27. © 2014 Bruce Tate Language Adoption and Fear (Oct25), 2014
  • 28. © 2014 Bruce Tate Language Adoption and Fear (Oct25), 2014
  • 29. © 2014 Bruce Tate Language Adoption and Fear (Oct25), 2014
  • 30. Paralyzing Fear Cobol Language Adoption and Fear (Oct25), 2014 © 2014 Bruce Tate
  • 31. Paralyzing Fear C(++) Language Adoption and Fear (Oct25), 2014 © 2014 Bruce Tate
  • 32. © 2014 Bruce Tate Paralyzing Fear Java Language Adoption and Fear (Oct25), 2014
  • 33. Longer cycles © 2014 Bruce Tate Language Adoption and Fear (Oct25), 2014
  • 34. Bigger chasms © 2014 Bruce Tate Language Adoption and Fear (Oct25), 2014
  • 35. © 2014 Bruce Tate Motivating Fear Language Adoption and Fear (Oct25), 2014
  • 36. © 2014 Bruce Tate Motivating Fear Language Adoption and Fear (Oct25), 2014
  • 37. © 2014 Bruce Tate Java C++ Language Adoption and Fear (Oct25), 2014
  • 38. © 2014 Bruce Tate Paralyzing Fear Motivating Fear -Too much to learn -Proprietary -Old hardware Language Adoption and Fear (Oct25), 2014
  • 39. © 2014 Bruce Tate Paralyzing Fear Motivating Fear -C++ Syntax -Internet -JVM + Deployment Language Adoption and Fear (Oct25), 2014
  • 40. (As late as the mid 1990s) (10 diskettes) © 2014 Bruce Tate Deployment Problem (Oct25), 2014
  • 41. (10 diskettes) X (9 registers per store) © 2014 Bruce Tate Deployment Problem (Oct25), 2014
  • 42. (10 diskettes) X (9 registers per store) X (5 stores) © 2014 Bruce Tate Deployment Problem (Oct25), 2014
  • 43. (10 diskettes) X (9 registers per store) X (5 stores) X (3 services) X (n fixpacks/year) ... © 2014 Bruce Tate Deployment Problem (Oct25), 2014
  • 44. Now add... © 2014 Bruce Tate Deployment Problem (Oct25), 2014
  • 45. Multiple vendors Sanctioned application code Fragile techniques (screen scraping) Unprotected memory Multiple tiers © 2014 Bruce Tate IT (Oct25), 2014
  • 46. Multiple vendors Sanctioned application code Unsanctioned apps and macros Fragile techniques (screen scraping) Unprotected memory Multiple tiers © 2014 Bruce Tate it (Oct25), 2014
  • 47. Multiple vendors Sanctioned application code Unsanctioned apps and macros Fragile techniques (screen scraping) Unprotected memory Multiple tiers © 2014 Bruce Tate ~~~~~~~~~~~~~~~~~~~~~~~~~~~ (Oct25), 2014
  • 48. © 2014 Bruce Tate Java crosses the chasm (Oct25), 2014
  • 49. © 2014 Bruce Tate Java crosses the chasm (Oct25), 2014
  • 50. © 2014 Bruce Tate Java crosses the chasm (Oct25), 2014
  • 51. © 2014 Bruce Tate Java Java crosses the chasm (Oct25), 2014
  • 52. © 2014 Bruce Tate Java Erlang (Elixir) Clojure Haskell Elixir Sc..a. la Java crosses the chasm (Oct25), 2014
  • 53. © 2014 Bruce Tate Today Paralyzing Fear Motivating Fear (Oct25), 2014
  • 54. © 2014 Bruce Tate Today Paralyzing Fear Motivating Fear ? (Oct25), 2014
  • 55. © 2014 Bruce Tate Java (Oct25), 2014
  • 56. © 2014 Bruce Tate Java What’s the best way to eat an elephant? (Oct25), 2014
  • 57. © 2014 Bruce Tate What’s the best way to eat an elephant? (Oct25), 2014
  • 58. 1. Building communities is easier © 2014 Bruce Tate (Oct25), 2014
  • 59. 2. OO languages, FP features © 2014 Bruce Tate (Oct25), 2014
  • 60. 3. Deployment options abound © 2014 Bruce Tate (Oct25), 2014
  • 61. © 2014 Bruce Tate 4. Interfaces are cleaner (Oct25), 2014
  • 62. © 2014 Bruce Tate Today Paralyzing Fear Motivating Fear ? (Oct25), 2014
  • 63. © 2014 Bruce Tate 1. Code complexity (always first) (Oct25), 2014
  • 64. © 2014 Bruce Tate defmodule VidStore do use StateMachine state :available, [ rent: [ to: :rented, calls: [ &VidStore.renting/1 ]]] state :rented, [ return: [ to: :available, calls: [ &VidStore.returning/1 ]], lose: [ to: :lost, calls: [ &VidStore.losing/1 ]]] state :lost, [] ... end (Oct25), 2014
  • 65. © 2014 Bruce Tate defmodule VidStore do use StateMachine state :available, [ rent: [ to: :rented, calls: [ &VidStore.renting/1 ]]] state :rented, [ return: [ to: :available, calls: [ &VidStore.returning/1 ]], lose: [ to: :lost, calls: [ &VidStore.losing/1 ]]] state :lost, [] ... end VidStore.rent video VidStore.return video video |> rent |> lose (Oct25), 2014
  • 66. 2. Multicore and Distribution © 2014 Bruce Tate (the real Y2K) (Oct25), 2014
  • 67. © 2014 Bruce Tate defmodule Chatroom do use OtpDsl.GenServer, initial_state: HashDict.new() defcall enter(name), users do send_all(users, "#{name} has entered the room") reply(:ok, Dict.put(users, name, _from)) end defcall leave(name), users do d = Dict.delete(users, name) send_all(users, "#{name} has left the room") reply(:ok, d) end defcall message(name, message) do send_all(users, message) reply(:ok, d) end defp send_all(users, message) do Enum.each(Dict.values(users), User.send_line(&1, message)) end end code example: Copyright © 2014 - Peter Minten (Oct25), 2014
  • 68. © 2014 Bruce Tate replaces... (Oct25), 2014
  • 69. © 2014 Bruce Tate defmodule Chatroom2 do use GenServer.Behaviour def enter(name) do :gen_server.call(:chatroom, { :enter, name }) end def leave(name) do :gen_server.call(:chatroom, { :leave, name }) end def message(name, message) do :gen_server.call(:chatroom, { :message, name, message }) end def init(_args) do { :ok, HashDict.new() } end def handle_call({ :enter, name }, from, users) do send_all(users, "#{name} has entered the room") { :reply, :ok, Dict.put(users, name, from) } end def handle_call({ :leave, name }, _from, users) do d = Dict.delete(users, name) send_all(users, "#{name} has left the room") { :reply, :ok, d } end def handle_call({ :message, name, message }, _from, users) do send_all(users, message) { :reply, :ok, users } end defp send_all(users, message) do Enum.each(Dict.to_list(users), fn { user, pid } -> User.send_line(user, message) end) end end code example: Copyright © 2014 - Peter Minten (Oct25), 2014
  • 70. © 2014 Bruce Tate replaces... (Oct25), 2014
  • 71. © 2014 Bruce Tate Too big to show (Oct25), 2014
  • 72. DSL from Dave Thomas: https://github.com/pragdave/otp_dsl Example from Peter Minten Thinking in Elixir: Hiding Your Messages http://pminten.github.io/blog/2013/09/14/thinking-in-elixir-hide-your-messages/ code example: Copyright © 2014 - Peter Minten © 2014 Bruce Tate References (Oct25), 2014
  • 73. © 2014 Bruce Tate 3. Complexity Is JavaScript the best we can do? (Oct25), 2014
  • 74. © 2014 Bruce Tate import Mouse import Window drawPaddle w h x = filled black (rect 80 10) |> moveX (toFloat x -­‐ toFloat w / 2) |> moveY (-­‐(toFloat h * 0.45)) display (w, h) x = collage w h [ drawPaddle w h x ] main = lift2 display Window.dimensions Mouse.x (Oct25), 2014
  • 75. © 2014 Bruce Tate Java Erlang (Elixir) Clojure Haskell Elixir Scala ... (Oct25), 2014
  • 76. © 2014 Bruce Tate Erlang (Elixir) Clojure Haskell Elixir Scala ... (Oct25), 2014
  • 77. © 2014 Bruce Tate Erlang (Elixir) Clojure Haskell Elixir Sc..a. la (Oct25), 2014
  • 78. © 2014 Bruce Tate ? (Oct25), 2014
  • 79. DSL from Dave Thomas: https://github.com/pragdave/otp_dsl Example from Peter Minten Thinking in Elixir: Hiding Your Messages http://pminten.github.io/blog/2013/09/14/thinking-in-elixir-hide-your-messages/ code example: Copyright © 2014 - Peter Minten © 2014 Bruce Tate References (Oct25), 2014