SlideShare une entreprise Scribd logo
1  sur  85
Télécharger pour lire hors ligne
Technology,
a means to
an end.
Thibault Imbert
1996 - Discovered BASIC on my dad’s T07.


1998 - Started playing with Flash in my bedroom
!
2004 - Teaching programming
!
2008 - Joined Adobe (France)
!
2010 - Moved to San Francisco (PM for Flash Player)
!
2014 - Working on next-gen web authoring tools/services
projectparfait.adobe.com
CSS Shapes
Blend modes
Masking
justinjackson.ca/words.html
Technology
to serve a goal.
Focus on the goal, implementation is a detail.
detail.
C++, Objective-C, ActionScript, JavaScript, Java, C#…
Don’t place a technology.
Use the best one to do the best job.
DHTML!
Flash
Ajax!
Flash
Silverlight!
Flash
Familiar?
Native!
HTML/JS!
It is about the result, the end goal.
Technologies, come and go.
So I should not care?
Be passionate, stay curious,
and always assume you don’t know.
"The most dangerous thought you can have as a creative
person is to think you know what you're doing.” - Bret Victor
JavaScript will win.
C++ will win.
Obj-C will win.
Dart will win.
Why should one win?
There is no safe bet.
By being religious, you barricade yourself.
You stop learning and start having
preconceived ideas.
JavaScript is for “scripting” only.
asmjs.org
an extraordinarily optimizable, low-level subset of JavaScript
JavaScript is not object-oriented.
ES6
//	
  entities.js	
  
module	
  entities	
  {	
  
	
  	
  	
  	
  	
  
	
  	
  	
  	
  export	
  class	
  Person	
  {	
  
!
	
  	
  	
  	
  	
  	
  private	
  message	
  =	
  "Hi	
  my	
  name	
  is	
  ";	
  
!
	
  	
  	
  	
  	
  	
  constructor	
  (public	
  name,	
  public	
  age,	
  public	
  town){	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  this.name	
  =	
  name;	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  this.age	
  -­‐	
  age;	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  this.town	
  =	
  town;	
  
	
  	
  	
  	
  	
  	
  }	
  
!
	
  	
  	
  	
  	
  	
  talk(){	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  return	
  this.message	
  +	
  this.name;	
  
	
  	
  	
  	
  	
  	
  }	
  
!
	
  	
  	
  	
  	
  	
  get	
  isAbove18(){	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  return	
  this.age	
  >=	
  18;	
  
	
  	
  	
  	
  	
  	
  }	
  
}
But what if I want static-typing?
www.typescriptlang.org
//	
  entities.js	
  
module	
  entities	
  {	
  
	
  	
  	
  	
  	
  
	
  	
  	
  	
  export	
  class	
  Person	
  {	
  
!
	
  	
  	
  	
  	
  	
  private	
  message	
  :string	
  =	
  "Hi	
  my	
  name	
  is	
  ";	
  
!
	
  	
  	
  	
  	
  	
  constructor	
  (public	
  name:	
  string,	
  public	
  age:	
  number,	
  public	
  	
  
town:	
  string){	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  this.name	
  =	
  name;	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  this.age	
  =	
  age;	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  this.town	
  =	
  town;	
  
	
  	
  	
  	
  	
  	
  }	
  
!
	
  	
  	
  	
  	
  	
  talk(){	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  return	
  this.message	
  +	
  this.name;	
  
	
  	
  	
  	
  	
  	
  }	
  
!
	
  	
  	
  	
  	
  	
  get	
  isAbove18(){	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  return	
  this.age	
  >=	
  18;	
  
	
  	
  	
  	
  	
  	
  }	
  
}
Which will generate plain ES5 compatible JS
var	
  Person	
  =	
  (function	
  ()	
  {	
  
	
  	
  	
  	
  function	
  Person(name,	
  age,	
  town)	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  this.name	
  =	
  name;	
  
	
  	
  	
  	
  	
  	
  	
  	
  this.age	
  =	
  age;	
  
	
  	
  	
  	
  	
  	
  	
  	
  this.town	
  =	
  town;	
  
	
  	
  	
  	
  	
  	
  	
  	
  this.message	
  =	
  "Hi	
  my	
  name	
  is	
  ";	
  
	
  	
  	
  	
  	
  	
  	
  	
  this.name	
  =	
  name;	
  
	
  	
  	
  	
  	
  	
  	
  	
  this.age	
  -­‐	
  age;	
  
	
  	
  	
  	
  	
  	
  	
  	
  this.town	
  =	
  town;	
  
	
  	
  	
  	
  }	
  
	
  	
  	
  	
  Person.prototype.talk	
  =	
  function	
  ()	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  return	
  this.message	
  +	
  this.name;	
  
	
  	
  	
  	
  };	
  
!
	
  	
  	
  	
  Object.defineProperty(Person.prototype,	
  "isAbove18",	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  get:	
  function	
  ()	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  return	
  this.age	
  >=	
  18;	
  
	
  	
  	
  	
  	
  	
  	
  	
  },	
  
	
  	
  	
  	
  	
  	
  	
  	
  enumerable:	
  true,	
  
	
  	
  	
  	
  	
  	
  	
  	
  configurable:	
  true	
  
	
  	
  	
  	
  });	
  
	
  	
  	
  	
  return	
  Person;	
  
})();	
  
Challenge, run the original Space Invaders ROM in JS
Ported in an hour to JavaScript
Chose the best option (for me)
to get the job done.
C# is for Windows developers only
Xamarin
C++ is way too low-level.
C++11
#include	
  <iostream>	
  
#include	
  <stdint.h>	
  
#include	
  <iostream>	
  
#include	
  <vector>	
  
#include	
  <algorithm>	
  
!
int	
  main(int	
  argc,	
  const	
  char	
  *	
  argv[])	
  
{	
  
	
  	
  	
  	
  std::vector<uint32_t>	
  data	
  =	
  {	
  234,	
  76767,	
  43,	
  343,	
  4322,	
  33,	
  122	
  };	
  
	
  	
  	
  	
  	
  
	
  	
  	
  	
  std::sort(data.begin(),	
  data.end(),	
  []	
  (uint32_t	
  a,	
  uint32_t	
  b)	
  {	
  return	
  a	
  <	
  b;	
  });	
  
	
  	
  	
  	
  	
  
	
  	
  	
  	
  for	
  (auto	
  i	
  =	
  data.begin();	
  i	
  <	
  data.end();	
  i++)	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  std::cout	
  <<	
  *i	
  <<	
  std::endl;	
  
	
  	
  	
  	
  }	
  
	
  	
  	
  	
  	
  
	
  	
  	
  	
  class	
  MyClass	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  public:	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  MyClass(size_t	
  size)	
  :	
  m_size(size)	
  {	
  }	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  MyClass(const	
  char	
  *str)	
  :	
  MyClass(strlen(str))	
  {	
  }	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  size_t	
  Size()	
  {	
  return	
  m_size;	
  }	
  
	
  	
  	
  	
  	
  	
  	
  	
  private:	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  size_t	
  m_size;	
  
	
  	
  	
  	
  };	
  
	
  	
  	
  	
  	
  
	
  	
  	
  	
  MyClass	
  obj("Hello!");	
  
	
  	
  	
  	
  std::cout	
  <<	
  obj.Size()	
  <<	
  std::endl;	
  
	
  	
  	
  	
  return	
  0;	
  
}
I am a web guy, doing scripting, cool
native stuff is hard.
Starry Night by Petros Vrellis
openFrameworks
Functional programming languages are not for real world usage.
Imperative programming is:
I want a latte.
Heat some milk.
Put it into a cup.
Brew some coffee with a stovetop Moka pot.
Pour the coffee into the heated milk.
Thank you.
Functional programming is:
I want a latte.
Thank you.
Have a look at F#
let numbers = [ 0..2..20 ]
!
val numbers : int list = [0; 2; 4; 6; 8; 10; 12; 14; 16; 18; 20]
var value = Math.abs ( Math.round ( Math.sqrt ( 3.56 ) ) );
let result =
3.56
|> System.Math.Sqrt
|> System.Math.Round
|> System.Math.Abs
let numbers = [ 0..3..30 ]
let square x = x * x
!
let sumSquare nums =
let mutable buffer = 0
for i in nums do
buffer <- buffer + square i
buffer
!
let result = sumSquare numbers
let sumSquare nums =
nums
|> Seq.map ( fun x -> x * x )
|> Seq.sum
Multicore and web apps? No way.
&
myPA	
  =	
  [1,	
  2,	
  3];	
  
	
  	
  
//	
  incrementation	
  is	
  parallelized	
  on	
  the	
  GPU	
  
myPlusPA	
  =	
  myPA.mapPar(val	
  =>	
  val	
  +	
  1);	
  
myPA	
  =	
  [1,	
  2,	
  3];	
  
	
  	
  
//	
  incrementation	
  is	
  parallelized	
  on	
  the	
  GPU	
  
myPlusPA	
  =	
  myPA.mapPar(val	
  =>	
  val	
  +	
  1);	
  
OpenCL (behind the scene)
Multicore and web apps? No way.
River Trail
bit.ly/qme8BY
You may never use these, but they will
make you a better developer, so keep
learning new stuff.
Creativity, but stepping back from technology.
Goal
Experiment
Fail
Iterate
Not good!
Not good
Looks good!
Looks good!
Success is not an event, it is a process.
James Clear.
@thibault_imbert
Thank you!

Contenu connexe

Tendances

MiamiJS - The Future of JavaScript
MiamiJS - The Future of JavaScriptMiamiJS - The Future of JavaScript
MiamiJS - The Future of JavaScriptCaridy Patino
 
Coscup2021-rust-toturial
Coscup2021-rust-toturialCoscup2021-rust-toturial
Coscup2021-rust-toturialWayne Tsai
 
Coscup2021 - useful abstractions at rust and it's practical usage
Coscup2021 - useful abstractions at rust and it's practical usageCoscup2021 - useful abstractions at rust and it's practical usage
Coscup2021 - useful abstractions at rust and it's practical usageWayne Tsai
 
Fertile Ground: The Roots of Clojure
Fertile Ground: The Roots of ClojureFertile Ground: The Roots of Clojure
Fertile Ground: The Roots of ClojureMike Fogus
 
Design Patterns in Go Code
Design Patterns in Go CodeDesign Patterns in Go Code
Design Patterns in Go CodeKamil Mówiński
 
Taking Inspiration From The Functional World
Taking Inspiration From The Functional WorldTaking Inspiration From The Functional World
Taking Inspiration From The Functional WorldPiotr Solnica
 
Code as data as code.
Code as data as code.Code as data as code.
Code as data as code.Mike Fogus
 
Python легко и просто. Красиво решаем повседневные задачи
Python легко и просто. Красиво решаем повседневные задачиPython легко и просто. Красиво решаем повседневные задачи
Python легко и просто. Красиво решаем повседневные задачиMaxim Kulsha
 
Imugi: Compiler made with Python
Imugi: Compiler made with PythonImugi: Compiler made with Python
Imugi: Compiler made with PythonHan Lee
 
Writing SOLID C++ [gbgcpp meetup @ Zenseact]
Writing SOLID C++ [gbgcpp meetup @ Zenseact]Writing SOLID C++ [gbgcpp meetup @ Zenseact]
Writing SOLID C++ [gbgcpp meetup @ Zenseact]Dimitrios Platis
 
Super Advanced Python –act1
Super Advanced Python –act1Super Advanced Python –act1
Super Advanced Python –act1Ke Wei Louis
 
Naïveté vs. Experience
Naïveté vs. ExperienceNaïveté vs. Experience
Naïveté vs. ExperienceMike Fogus
 
The Lesser Known Features of ECMAScript 6
The Lesser Known Features of ECMAScript 6The Lesser Known Features of ECMAScript 6
The Lesser Known Features of ECMAScript 6Bryan Hughes
 
Useful javascript
Useful javascriptUseful javascript
Useful javascriptLei Kang
 

Tendances (20)

MiamiJS - The Future of JavaScript
MiamiJS - The Future of JavaScriptMiamiJS - The Future of JavaScript
MiamiJS - The Future of JavaScript
 
Coscup2021-rust-toturial
Coscup2021-rust-toturialCoscup2021-rust-toturial
Coscup2021-rust-toturial
 
C++ L01-Variables
C++ L01-VariablesC++ L01-Variables
C++ L01-Variables
 
Coscup2021 - useful abstractions at rust and it's practical usage
Coscup2021 - useful abstractions at rust and it's practical usageCoscup2021 - useful abstractions at rust and it's practical usage
Coscup2021 - useful abstractions at rust and it's practical usage
 
Fertile Ground: The Roots of Clojure
Fertile Ground: The Roots of ClojureFertile Ground: The Roots of Clojure
Fertile Ground: The Roots of Clojure
 
Design Patterns in Go Code
Design Patterns in Go CodeDesign Patterns in Go Code
Design Patterns in Go Code
 
Taking Inspiration From The Functional World
Taking Inspiration From The Functional WorldTaking Inspiration From The Functional World
Taking Inspiration From The Functional World
 
C++ L05-Functions
C++ L05-FunctionsC++ L05-Functions
C++ L05-Functions
 
ProgrammingwithGOLang
ProgrammingwithGOLangProgrammingwithGOLang
ProgrammingwithGOLang
 
Lambda expressions in C++
Lambda expressions in C++Lambda expressions in C++
Lambda expressions in C++
 
Metaprogramming
MetaprogrammingMetaprogramming
Metaprogramming
 
Code as data as code.
Code as data as code.Code as data as code.
Code as data as code.
 
Python легко и просто. Красиво решаем повседневные задачи
Python легко и просто. Красиво решаем повседневные задачиPython легко и просто. Красиво решаем повседневные задачи
Python легко и просто. Красиво решаем повседневные задачи
 
Imugi: Compiler made with Python
Imugi: Compiler made with PythonImugi: Compiler made with Python
Imugi: Compiler made with Python
 
ES6 Overview
ES6 OverviewES6 Overview
ES6 Overview
 
Writing SOLID C++ [gbgcpp meetup @ Zenseact]
Writing SOLID C++ [gbgcpp meetup @ Zenseact]Writing SOLID C++ [gbgcpp meetup @ Zenseact]
Writing SOLID C++ [gbgcpp meetup @ Zenseact]
 
Super Advanced Python –act1
Super Advanced Python –act1Super Advanced Python –act1
Super Advanced Python –act1
 
Naïveté vs. Experience
Naïveté vs. ExperienceNaïveté vs. Experience
Naïveté vs. Experience
 
The Lesser Known Features of ECMAScript 6
The Lesser Known Features of ECMAScript 6The Lesser Known Features of ECMAScript 6
The Lesser Known Features of ECMAScript 6
 
Useful javascript
Useful javascriptUseful javascript
Useful javascript
 

En vedette

Beyond the Waterfall: Rethinking How We Work
Beyond the Waterfall: Rethinking How We WorkBeyond the Waterfall: Rethinking How We Work
Beyond the Waterfall: Rethinking How We WorkFITC
 
Managing Responsive Design Projects
Managing Responsive Design ProjectsManaging Responsive Design Projects
Managing Responsive Design ProjectsFITC
 
21st Century Crystal Ball
21st Century Crystal Ball21st Century Crystal Ball
21st Century Crystal BallFITC
 
Front-end Tools: Sifting Through the Madness
 Front-end Tools: Sifting Through the Madness Front-end Tools: Sifting Through the Madness
Front-end Tools: Sifting Through the MadnessFITC
 
The Shifting Nature of FED Role
The Shifting Nature of FED RoleThe Shifting Nature of FED Role
The Shifting Nature of FED RoleFITC
 
Functional Web Development
Functional Web DevelopmentFunctional Web Development
Functional Web DevelopmentFITC
 
DownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
DownTheRabbitHole.js – How to Stay Sane in an Insane EcosystemDownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
DownTheRabbitHole.js – How to Stay Sane in an Insane EcosystemFITC
 
Accumulations with Nicholas Felton
Accumulations with Nicholas FeltonAccumulations with Nicholas Felton
Accumulations with Nicholas FeltonFITC
 
CSS: A Slippery Slope to the Backend
CSS: A Slippery Slope to the BackendCSS: A Slippery Slope to the Backend
CSS: A Slippery Slope to the BackendFITC
 
Your UX is not my UX
Your UX is not my UXYour UX is not my UX
Your UX is not my UXFITC
 
Graphic Designer to Object Designer: Your 3D Printing Evolution
Graphic Designer to Object Designer: Your 3D Printing EvolutionGraphic Designer to Object Designer: Your 3D Printing Evolution
Graphic Designer to Object Designer: Your 3D Printing EvolutionFITC
 
Creating Content that Captivates
Creating Content that CaptivatesCreating Content that Captivates
Creating Content that CaptivatesFITC
 
Kickstarting Your Stupid Magazine
Kickstarting Your Stupid MagazineKickstarting Your Stupid Magazine
Kickstarting Your Stupid MagazineFITC
 
Building Tools for the Next Web
Building Tools for the Next WebBuilding Tools for the Next Web
Building Tools for the Next WebFITC
 
Unleashing the Power of 3D with WebJS
Unleashing the Power of 3D with WebJSUnleashing the Power of 3D with WebJS
Unleashing the Power of 3D with WebJSFITC
 
The Future is in Pieces
The Future is in PiecesThe Future is in Pieces
The Future is in PiecesFITC
 
Everydays
EverydaysEverydays
EverydaysFITC
 
Squishy pixels
Squishy pixelsSquishy pixels
Squishy pixelsFITC
 
Gamify Your Life – My Epic Quest of Awesome - Eric Boyd
Gamify Your Life – My Epic Quest of Awesome - Eric BoydGamify Your Life – My Epic Quest of Awesome - Eric Boyd
Gamify Your Life – My Epic Quest of Awesome - Eric BoydFITC
 

En vedette (20)

Means end chain
Means end chainMeans end chain
Means end chain
 
Beyond the Waterfall: Rethinking How We Work
Beyond the Waterfall: Rethinking How We WorkBeyond the Waterfall: Rethinking How We Work
Beyond the Waterfall: Rethinking How We Work
 
Managing Responsive Design Projects
Managing Responsive Design ProjectsManaging Responsive Design Projects
Managing Responsive Design Projects
 
21st Century Crystal Ball
21st Century Crystal Ball21st Century Crystal Ball
21st Century Crystal Ball
 
Front-end Tools: Sifting Through the Madness
 Front-end Tools: Sifting Through the Madness Front-end Tools: Sifting Through the Madness
Front-end Tools: Sifting Through the Madness
 
The Shifting Nature of FED Role
The Shifting Nature of FED RoleThe Shifting Nature of FED Role
The Shifting Nature of FED Role
 
Functional Web Development
Functional Web DevelopmentFunctional Web Development
Functional Web Development
 
DownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
DownTheRabbitHole.js – How to Stay Sane in an Insane EcosystemDownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
DownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
 
Accumulations with Nicholas Felton
Accumulations with Nicholas FeltonAccumulations with Nicholas Felton
Accumulations with Nicholas Felton
 
CSS: A Slippery Slope to the Backend
CSS: A Slippery Slope to the BackendCSS: A Slippery Slope to the Backend
CSS: A Slippery Slope to the Backend
 
Your UX is not my UX
Your UX is not my UXYour UX is not my UX
Your UX is not my UX
 
Graphic Designer to Object Designer: Your 3D Printing Evolution
Graphic Designer to Object Designer: Your 3D Printing EvolutionGraphic Designer to Object Designer: Your 3D Printing Evolution
Graphic Designer to Object Designer: Your 3D Printing Evolution
 
Creating Content that Captivates
Creating Content that CaptivatesCreating Content that Captivates
Creating Content that Captivates
 
Kickstarting Your Stupid Magazine
Kickstarting Your Stupid MagazineKickstarting Your Stupid Magazine
Kickstarting Your Stupid Magazine
 
Building Tools for the Next Web
Building Tools for the Next WebBuilding Tools for the Next Web
Building Tools for the Next Web
 
Unleashing the Power of 3D with WebJS
Unleashing the Power of 3D with WebJSUnleashing the Power of 3D with WebJS
Unleashing the Power of 3D with WebJS
 
The Future is in Pieces
The Future is in PiecesThe Future is in Pieces
The Future is in Pieces
 
Everydays
EverydaysEverydays
Everydays
 
Squishy pixels
Squishy pixelsSquishy pixels
Squishy pixels
 
Gamify Your Life – My Epic Quest of Awesome - Eric Boyd
Gamify Your Life – My Epic Quest of Awesome - Eric BoydGamify Your Life – My Epic Quest of Awesome - Eric Boyd
Gamify Your Life – My Epic Quest of Awesome - Eric Boyd
 

Similaire à Technology: A Means to an End with Thibault Imbert

Extreme Swift
Extreme SwiftExtreme Swift
Extreme SwiftMovel
 
JavaScript Advanced - Useful methods to power up your code
JavaScript Advanced - Useful methods to power up your codeJavaScript Advanced - Useful methods to power up your code
JavaScript Advanced - Useful methods to power up your codeLaurence Svekis ✔
 
.NET Foundation, Future of .NET and C#
.NET Foundation, Future of .NET and C#.NET Foundation, Future of .NET and C#
.NET Foundation, Future of .NET and C#Bertrand Le Roy
 
Clean Code Development
Clean Code DevelopmentClean Code Development
Clean Code DevelopmentPeter Gfader
 
Kotlin : Happy Development
Kotlin : Happy DevelopmentKotlin : Happy Development
Kotlin : Happy DevelopmentMd Sazzad Islam
 
NetPonto - The Future Of C# - NetConf Edition
NetPonto - The Future Of C# - NetConf EditionNetPonto - The Future Of C# - NetConf Edition
NetPonto - The Future Of C# - NetConf EditionPaulo Morgado
 
Practices For Becoming A Better Programmer
Practices For Becoming A Better ProgrammerPractices For Becoming A Better Programmer
Practices For Becoming A Better ProgrammerSrikanth Shreenivas
 
Game Design and Development Workshop Day 1
Game Design and Development Workshop Day 1Game Design and Development Workshop Day 1
Game Design and Development Workshop Day 1Troy Miles
 
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8tdc-globalcode
 
Pick up the low-hanging concurrency fruit
Pick up the low-hanging concurrency fruitPick up the low-hanging concurrency fruit
Pick up the low-hanging concurrency fruitVaclav Pech
 
University of arizona mobile matters - technology, a means to an end
University of arizona   mobile matters - technology, a means to an endUniversity of arizona   mobile matters - technology, a means to an end
University of arizona mobile matters - technology, a means to an endThibault Imbert
 
How much performance can you get out of Javascript? - Massimiliano Mantione -...
How much performance can you get out of Javascript? - Massimiliano Mantione -...How much performance can you get out of Javascript? - Massimiliano Mantione -...
How much performance can you get out of Javascript? - Massimiliano Mantione -...Codemotion
 
Community-driven Language Design at TC39 on the JavaScript Pipeline Operator ...
Community-driven Language Design at TC39 on the JavaScript Pipeline Operator ...Community-driven Language Design at TC39 on the JavaScript Pipeline Operator ...
Community-driven Language Design at TC39 on the JavaScript Pipeline Operator ...Igalia
 
How do you create a programming language for the JVM?
How do you create a programming language for the JVM?How do you create a programming language for the JVM?
How do you create a programming language for the JVM?Federico Tomassetti
 
TypeScript Introduction
TypeScript IntroductionTypeScript Introduction
TypeScript IntroductionHans Höchtl
 
TypeScript - All you ever wanted to know - Tech Talk by Epic Labs
TypeScript - All you ever wanted to know - Tech Talk by Epic LabsTypeScript - All you ever wanted to know - Tech Talk by Epic Labs
TypeScript - All you ever wanted to know - Tech Talk by Epic LabsAlfonso Peletier
 

Similaire à Technology: A Means to an End with Thibault Imbert (20)

Extreme Swift
Extreme SwiftExtreme Swift
Extreme Swift
 
JavaScript Advanced - Useful methods to power up your code
JavaScript Advanced - Useful methods to power up your codeJavaScript Advanced - Useful methods to power up your code
JavaScript Advanced - Useful methods to power up your code
 
Effective Object Oriented Design in Cpp
Effective Object Oriented Design in CppEffective Object Oriented Design in Cpp
Effective Object Oriented Design in Cpp
 
.NET Foundation, Future of .NET and C#
.NET Foundation, Future of .NET and C#.NET Foundation, Future of .NET and C#
.NET Foundation, Future of .NET and C#
 
Clean Code Development
Clean Code DevelopmentClean Code Development
Clean Code Development
 
Kotlin : Happy Development
Kotlin : Happy DevelopmentKotlin : Happy Development
Kotlin : Happy Development
 
NetPonto - The Future Of C# - NetConf Edition
NetPonto - The Future Of C# - NetConf EditionNetPonto - The Future Of C# - NetConf Edition
NetPonto - The Future Of C# - NetConf Edition
 
Novidades do c# 7 e 8
Novidades do c# 7 e 8Novidades do c# 7 e 8
Novidades do c# 7 e 8
 
Practices For Becoming A Better Programmer
Practices For Becoming A Better ProgrammerPractices For Becoming A Better Programmer
Practices For Becoming A Better Programmer
 
Game Design and Development Workshop Day 1
Game Design and Development Workshop Day 1Game Design and Development Workshop Day 1
Game Design and Development Workshop Day 1
 
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
 
Pick up the low-hanging concurrency fruit
Pick up the low-hanging concurrency fruitPick up the low-hanging concurrency fruit
Pick up the low-hanging concurrency fruit
 
University of arizona mobile matters - technology, a means to an end
University of arizona   mobile matters - technology, a means to an endUniversity of arizona   mobile matters - technology, a means to an end
University of arizona mobile matters - technology, a means to an end
 
A More Flash Like Web?
A More Flash Like Web?A More Flash Like Web?
A More Flash Like Web?
 
How much performance can you get out of Javascript? - Massimiliano Mantione -...
How much performance can you get out of Javascript? - Massimiliano Mantione -...How much performance can you get out of Javascript? - Massimiliano Mantione -...
How much performance can you get out of Javascript? - Massimiliano Mantione -...
 
Community-driven Language Design at TC39 on the JavaScript Pipeline Operator ...
Community-driven Language Design at TC39 on the JavaScript Pipeline Operator ...Community-driven Language Design at TC39 on the JavaScript Pipeline Operator ...
Community-driven Language Design at TC39 on the JavaScript Pipeline Operator ...
 
How do you create a programming language for the JVM?
How do you create a programming language for the JVM?How do you create a programming language for the JVM?
How do you create a programming language for the JVM?
 
TypeScript Introduction
TypeScript IntroductionTypeScript Introduction
TypeScript Introduction
 
Es6 hackathon
Es6 hackathonEs6 hackathon
Es6 hackathon
 
TypeScript - All you ever wanted to know - Tech Talk by Epic Labs
TypeScript - All you ever wanted to know - Tech Talk by Epic LabsTypeScript - All you ever wanted to know - Tech Talk by Epic Labs
TypeScript - All you ever wanted to know - Tech Talk by Epic Labs
 

Plus de FITC

Cut it up
Cut it upCut it up
Cut it upFITC
 
Designing for Digital Health
Designing for Digital HealthDesigning for Digital Health
Designing for Digital HealthFITC
 
Profiling JavaScript Performance
Profiling JavaScript PerformanceProfiling JavaScript Performance
Profiling JavaScript PerformanceFITC
 
Surviving Your Tech Stack
Surviving Your Tech StackSurviving Your Tech Stack
Surviving Your Tech StackFITC
 
How to Pitch Your First AR Project
How to Pitch Your First AR ProjectHow to Pitch Your First AR Project
How to Pitch Your First AR ProjectFITC
 
Start by Understanding the Problem, Not by Delivering the Answer
Start by Understanding the Problem, Not by Delivering the AnswerStart by Understanding the Problem, Not by Delivering the Answer
Start by Understanding the Problem, Not by Delivering the AnswerFITC
 
Cocaine to Carrots: The Art of Telling Someone Else’s Story
Cocaine to Carrots: The Art of Telling Someone Else’s StoryCocaine to Carrots: The Art of Telling Someone Else’s Story
Cocaine to Carrots: The Art of Telling Someone Else’s StoryFITC
 
Everyday Innovation
Everyday InnovationEveryday Innovation
Everyday InnovationFITC
 
HyperLight Websites
HyperLight WebsitesHyperLight Websites
HyperLight WebsitesFITC
 
Everything is Terrifying
Everything is TerrifyingEverything is Terrifying
Everything is TerrifyingFITC
 
Post-Earth Visions: Designing for Space and the Future Human
Post-Earth Visions: Designing for Space and the Future HumanPost-Earth Visions: Designing for Space and the Future Human
Post-Earth Visions: Designing for Space and the Future HumanFITC
 
The Rise of the Creative Social Influencer (and How to Become One)
The Rise of the Creative Social Influencer (and How to Become One)The Rise of the Creative Social Influencer (and How to Become One)
The Rise of the Creative Social Influencer (and How to Become One)FITC
 
East of the Rockies: Developing an AR Game
East of the Rockies: Developing an AR GameEast of the Rockies: Developing an AR Game
East of the Rockies: Developing an AR GameFITC
 
Creating a Proactive Healthcare System
Creating a Proactive Healthcare SystemCreating a Proactive Healthcare System
Creating a Proactive Healthcare SystemFITC
 
World Transformation: The Secret Agenda of Product Design
World Transformation: The Secret Agenda of Product DesignWorld Transformation: The Secret Agenda of Product Design
World Transformation: The Secret Agenda of Product DesignFITC
 
The Power of Now
The Power of NowThe Power of Now
The Power of NowFITC
 
High Performance PWAs
High Performance PWAsHigh Performance PWAs
High Performance PWAsFITC
 
Rise of the JAMstack
Rise of the JAMstackRise of the JAMstack
Rise of the JAMstackFITC
 
From Closed to Open: A Journey of Self Discovery
From Closed to Open: A Journey of Self DiscoveryFrom Closed to Open: A Journey of Self Discovery
From Closed to Open: A Journey of Self DiscoveryFITC
 
Projects Ain’t Nobody Got Time For
Projects Ain’t Nobody Got Time ForProjects Ain’t Nobody Got Time For
Projects Ain’t Nobody Got Time ForFITC
 

Plus de FITC (20)

Cut it up
Cut it upCut it up
Cut it up
 
Designing for Digital Health
Designing for Digital HealthDesigning for Digital Health
Designing for Digital Health
 
Profiling JavaScript Performance
Profiling JavaScript PerformanceProfiling JavaScript Performance
Profiling JavaScript Performance
 
Surviving Your Tech Stack
Surviving Your Tech StackSurviving Your Tech Stack
Surviving Your Tech Stack
 
How to Pitch Your First AR Project
How to Pitch Your First AR ProjectHow to Pitch Your First AR Project
How to Pitch Your First AR Project
 
Start by Understanding the Problem, Not by Delivering the Answer
Start by Understanding the Problem, Not by Delivering the AnswerStart by Understanding the Problem, Not by Delivering the Answer
Start by Understanding the Problem, Not by Delivering the Answer
 
Cocaine to Carrots: The Art of Telling Someone Else’s Story
Cocaine to Carrots: The Art of Telling Someone Else’s StoryCocaine to Carrots: The Art of Telling Someone Else’s Story
Cocaine to Carrots: The Art of Telling Someone Else’s Story
 
Everyday Innovation
Everyday InnovationEveryday Innovation
Everyday Innovation
 
HyperLight Websites
HyperLight WebsitesHyperLight Websites
HyperLight Websites
 
Everything is Terrifying
Everything is TerrifyingEverything is Terrifying
Everything is Terrifying
 
Post-Earth Visions: Designing for Space and the Future Human
Post-Earth Visions: Designing for Space and the Future HumanPost-Earth Visions: Designing for Space and the Future Human
Post-Earth Visions: Designing for Space and the Future Human
 
The Rise of the Creative Social Influencer (and How to Become One)
The Rise of the Creative Social Influencer (and How to Become One)The Rise of the Creative Social Influencer (and How to Become One)
The Rise of the Creative Social Influencer (and How to Become One)
 
East of the Rockies: Developing an AR Game
East of the Rockies: Developing an AR GameEast of the Rockies: Developing an AR Game
East of the Rockies: Developing an AR Game
 
Creating a Proactive Healthcare System
Creating a Proactive Healthcare SystemCreating a Proactive Healthcare System
Creating a Proactive Healthcare System
 
World Transformation: The Secret Agenda of Product Design
World Transformation: The Secret Agenda of Product DesignWorld Transformation: The Secret Agenda of Product Design
World Transformation: The Secret Agenda of Product Design
 
The Power of Now
The Power of NowThe Power of Now
The Power of Now
 
High Performance PWAs
High Performance PWAsHigh Performance PWAs
High Performance PWAs
 
Rise of the JAMstack
Rise of the JAMstackRise of the JAMstack
Rise of the JAMstack
 
From Closed to Open: A Journey of Self Discovery
From Closed to Open: A Journey of Self DiscoveryFrom Closed to Open: A Journey of Self Discovery
From Closed to Open: A Journey of Self Discovery
 
Projects Ain’t Nobody Got Time For
Projects Ain’t Nobody Got Time ForProjects Ain’t Nobody Got Time For
Projects Ain’t Nobody Got Time For
 

Dernier

Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 

Dernier (20)

Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 

Technology: A Means to an End with Thibault Imbert

  • 1. Technology, a means to an end. Thibault Imbert
  • 2. 1996 - Discovered BASIC on my dad’s T07. 
 1998 - Started playing with Flash in my bedroom ! 2004 - Teaching programming ! 2008 - Joined Adobe (France) ! 2010 - Moved to San Francisco (PM for Flash Player) ! 2014 - Working on next-gen web authoring tools/services projectparfait.adobe.com
  • 6.
  • 9. Focus on the goal, implementation is a detail.
  • 11.
  • 12. C++, Objective-C, ActionScript, JavaScript, Java, C#…
  • 13. Don’t place a technology. Use the best one to do the best job.
  • 18. It is about the result, the end goal.
  • 19.
  • 20.
  • 21.
  • 23. So I should not care?
  • 24. Be passionate, stay curious, and always assume you don’t know.
  • 25.
  • 26. "The most dangerous thought you can have as a creative person is to think you know what you're doing.” - Bret Victor
  • 27. JavaScript will win. C++ will win. Obj-C will win. Dart will win. Why should one win? There is no safe bet.
  • 28. By being religious, you barricade yourself.
  • 29. You stop learning and start having preconceived ideas.
  • 30. JavaScript is for “scripting” only.
  • 31.
  • 32. asmjs.org an extraordinarily optimizable, low-level subset of JavaScript
  • 33. JavaScript is not object-oriented.
  • 34. ES6
  • 35. //  entities.js   module  entities  {                    export  class  Person  {   !            private  message  =  "Hi  my  name  is  ";   !            constructor  (public  name,  public  age,  public  town){                      this.name  =  name;                      this.age  -­‐  age;                      this.town  =  town;              }   !            talk(){                      return  this.message  +  this.name;              }   !            get  isAbove18(){                      return  this.age  >=  18;              }   }
  • 36. But what if I want static-typing?
  • 38. //  entities.js   module  entities  {                    export  class  Person  {   !            private  message  :string  =  "Hi  my  name  is  ";   !            constructor  (public  name:  string,  public  age:  number,  public     town:  string){                      this.name  =  name;                      this.age  =  age;                      this.town  =  town;              }   !            talk(){                      return  this.message  +  this.name;              }   !            get  isAbove18(){                      return  this.age  >=  18;              }   }
  • 39. Which will generate plain ES5 compatible JS
  • 40. var  Person  =  (function  ()  {          function  Person(name,  age,  town)  {                  this.name  =  name;                  this.age  =  age;                  this.town  =  town;                  this.message  =  "Hi  my  name  is  ";                  this.name  =  name;                  this.age  -­‐  age;                  this.town  =  town;          }          Person.prototype.talk  =  function  ()  {                  return  this.message  +  this.name;          };   !        Object.defineProperty(Person.prototype,  "isAbove18",  {                  get:  function  ()  {                          return  this.age  >=  18;                  },                  enumerable:  true,                  configurable:  true          });          return  Person;   })();  
  • 41. Challenge, run the original Space Invaders ROM in JS
  • 42. Ported in an hour to JavaScript
  • 43.
  • 44. Chose the best option (for me) to get the job done.
  • 45. C# is for Windows developers only
  • 46.
  • 47.
  • 48.
  • 49.
  • 51.
  • 52. C++ is way too low-level.
  • 53. C++11
  • 54. #include  <iostream>   #include  <stdint.h>   #include  <iostream>   #include  <vector>   #include  <algorithm>   ! int  main(int  argc,  const  char  *  argv[])   {          std::vector<uint32_t>  data  =  {  234,  76767,  43,  343,  4322,  33,  122  };                    std::sort(data.begin(),  data.end(),  []  (uint32_t  a,  uint32_t  b)  {  return  a  <  b;  });                    for  (auto  i  =  data.begin();  i  <  data.end();  i++)  {                  std::cout  <<  *i  <<  std::endl;          }                    class  MyClass  {                  public:                          MyClass(size_t  size)  :  m_size(size)  {  }                          MyClass(const  char  *str)  :  MyClass(strlen(str))  {  }                          size_t  Size()  {  return  m_size;  }                  private:                          size_t  m_size;          };                    MyClass  obj("Hello!");          std::cout  <<  obj.Size()  <<  std::endl;          return  0;   }
  • 55. I am a web guy, doing scripting, cool native stuff is hard.
  • 56.
  • 57. Starry Night by Petros Vrellis
  • 59. Functional programming languages are not for real world usage.
  • 60. Imperative programming is: I want a latte. Heat some milk. Put it into a cup. Brew some coffee with a stovetop Moka pot. Pour the coffee into the heated milk. Thank you.
  • 61. Functional programming is: I want a latte. Thank you.
  • 62. Have a look at F#
  • 63. let numbers = [ 0..2..20 ] ! val numbers : int list = [0; 2; 4; 6; 8; 10; 12; 14; 16; 18; 20]
  • 64. var value = Math.abs ( Math.round ( Math.sqrt ( 3.56 ) ) ); let result = 3.56 |> System.Math.Sqrt |> System.Math.Round |> System.Math.Abs
  • 65. let numbers = [ 0..3..30 ] let square x = x * x ! let sumSquare nums = let mutable buffer = 0 for i in nums do buffer <- buffer + square i buffer ! let result = sumSquare numbers
  • 66. let sumSquare nums = nums |> Seq.map ( fun x -> x * x ) |> Seq.sum
  • 67. Multicore and web apps? No way.
  • 68. &
  • 69. myPA  =  [1,  2,  3];       //  incrementation  is  parallelized  on  the  GPU   myPlusPA  =  myPA.mapPar(val  =>  val  +  1);  
  • 70. myPA  =  [1,  2,  3];       //  incrementation  is  parallelized  on  the  GPU   myPlusPA  =  myPA.mapPar(val  =>  val  +  1);  
  • 72. Multicore and web apps? No way.
  • 74. You may never use these, but they will make you a better developer, so keep learning new stuff.
  • 75. Creativity, but stepping back from technology.
  • 76.
  • 77.
  • 79.
  • 80.
  • 81.
  • 82. Not good! Not good Looks good! Looks good!
  • 83.
  • 84. Success is not an event, it is a process. James Clear.