Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

languages.map(&:latest).reduce(&:future).sort.first - Rupy Campinas 2015

1,952 views

Published on

Uma breve viagem pelo tempo para entender a genealogia das linguagens de programação, a evolução do hardware durante esse período e o advento do LLVM como "the One Ring to Rule them all"!

Published in: Software

languages.map(&:latest).reduce(&:future).sort.first - Rupy Campinas 2015

  1. 1. languages. map(&:latest). reduce(&:future). sort.first @akitaonrails
  2. 2. Fabio Akita @akitaonrails
  3. 3. Gordon Bell - DEC early employee
  4. 4. $100M $10M $1M $100K $10k $1k $100 $10 1940 1960 1970 1980 1990 2000 2010
  5. 5. $100M $10M $1M $100K $10k $1k $100 $10 1940 1960 1970 1980 1990 2000 2010 Supercomputadores
  6. 6. $100M $10M $1M $100K $10k $1k $100 $10 1940 1960 1970 1980 1990 2000 2010 Supercomputadores Minicomputadores
  7. 7. $100M $10M $1M $100K $10k $1k $100 $10 1940 1960 1970 1980 1990 2000 2010 Supercomputadores Minicomputadores Workstations
  8. 8. $100M $10M $1M $100K $10k $1k $100 $10 1940 1960 1970 1980 1990 2000 2010 Supercomputadores Minicomputadores Workstations Personal Computers
  9. 9. $100M $10M $1M $100K $10k $1k $100 $10 1940 1960 1970 1980 1990 2000 2010 Supercomputadores Minicomputadores Workstations Personal Computers Scalable Clusters
  10. 10. $100M $10M $1M $100K $10k $1k $100 $10 1940 1960 1970 1980 1990 2000 2010 Supercomputadores Minicomputadores Workstations Personal Computers Small Devices Scalable Clusters
  11. 11. $100M $10M $1M $100K $10k $1k $100 $10 1940 1960 1970 1980 1990 2000 2010 Supercomputadores Minicomputadores Workstations Personal Computers Small Devices Scalable Clusters
  12. 12. Vaticano 2005
  13. 13. Vaticano 2013
  14. 14. Gordon Moore - Intel co-founder
  15. 15. 0 1,000,000,000 2,000,000,000 3,000,000,000 4,000,000,000 5,000,000,000 6,000,000,000 7,000,000,000 8,000,000,000 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 2015 2020 Intel1Processors1Transistor1Count
  16. 16. 0 1,000,000,000 2,000,000,000 3,000,000,000 4,000,000,000 5,000,000,000 6,000,000,000 7,000,000,000 8,000,000,000 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 2015 2020 Intel1Processors1Transistor1Count Intel 4004 10 µm Intel 80386 Pentium 0.8 µm Itanium 2 Six-core Xeon 7400 8-core Itanium Poulson 32 nm 18-core Xeon Haswell-E5 22 nm 15-core Xeon Ivy Bridge-EX Duo-core + GPU Core i7 Broadwell-U 14 nm
  17. 17. 0 1,000,000,000 2,000,000,000 3,000,000,000 4,000,000,000 5,000,000,000 6,000,000,000 7,000,000,000 8,000,000,000 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 2015 2020 Intel1Processors1Transistor1Count Intel 4004 10 µm Intel 80386 Pentium 0.8 µm Itanium 2 Six-core Xeon 7400 8-core Itanium Poulson 32 nm 18-core Xeon Haswell-E5 22 nm 15-core Xeon Ivy Bridge-EX Duo-core + GPU Core i7 Broadwell-U 14 nm Apple A7 Apple A8 Apple A8X 20 nm
  18. 18. .NET C CoffeeScriptElixir F# Groovy Java JavaScript Objective-C PHP Perl PythonRuby Swift Visual Basic .NET
  19. 19. .NET C CoffeeScript Elixir F# Groovy Java JavaScript Objective-C PHPPerl Python Ruby Swift Visual Basic .NET
  20. 20. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010
  21. 21. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 Speedcode (1953) John Backus - interpreter took 310 memory words, about 30% of the memory available on a 701 - twenty times that of machine code
  22. 22. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 Fortran (1957) John Backus - first optimizing compiler - complex number types/ electric engineering
  23. 23. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 CPL (1963) Christopher Strachey - Combined/Cambridge/
 Combined Programming Language - low and high level
  24. 24. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 BCPL (1966) Martin Richards - Basic CPL - Bootstrap CPL - popular choice for bootstrapping a system
  25. 25. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 occam (1983) INMOS - concurrent programming language - Bootstrap CPL - communication between processes work through named channels
  26. 26. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010
  27. 27. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010
  28. 28. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 Algol (1958) ETH Zürich committee - Algol 58, Algol 60, Algol 68, Algol W - Context-free Grammars (Backus-Naur Form/BNF) - "ALGOL 68 was the first (and possibly one of the last) major language for which a full formal definition was made before it was implemented” - “ALGOL 68 has been criticized, most prominently by some members of its design committee such as Hoare and Dijkstra, for abandoning the simplicity of ALGOL 60” - "Steve Bourne, who was on the Algol 68 revision committee, took some of its ideas to his Bourne shell (and thereby, to descendant shells such as Bash) and to C (and thereby to descendants such as C++)."
  29. 29. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 Modula (1960) Niklaus Wirth - "One of the first languages designed from the start for modular programming"
  30. 30. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 MUMPS (1966) Neil Pappalardo - "Massachusetts General Hospital Utility Multi- Programming System” - hierarchical ACID built-in database - InterSystems Caché (SQL driver)
  31. 31. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 ADA (1966) MIL-STD - strong typing, generics - modularity mechanisms (packages) - run-time checking - access to unallocated memory, buffer overflow errors, range violations, off-by-one errors, array access errors, and other detectable bugs - parallel processing (tasks, synchronous message passing, protected objects, and - nondeterministic select statements) - exception handling - widely used in critical systems, where any anomaly might lead to very serious consequences, e.g., accidental death, injury or severe financial loss. Examples of systems where Ada is used include avionics,ATC, railways, banking, military and space technology
  32. 32. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 Hope (1970s) Edinburgh University - NPL and Hope: first languages with call-by-pattern evaluation - influenced Standard ML, Haskell
  33. 33. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010
  34. 34. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010
  35. 35. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 SNOBOL (1962) AT&T Bell Labs - patterns as a first-class data type - operators for pattern concatenation and alternation - early regular expressions/pattern matching
  36. 36. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 FLOW-MATIC (1955) Grace Hopper - 1952 - A0 compiler - 1959 - COBOL - English-like high level language
  37. 37. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 Simula (1967) Ole-Johan Dahl, Kristen Nygaard - object-oriented programming - inheritance and subclasses - virtual methods, coroutines - Garbage Collector
  38. 38. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 CLU (1974) Barbara Liskov - early object-oriented programming - classes with constructors and methods, without inheritance - iterators, abstract data types, type-safe parameterized/variant types - multiple return values (parallel assignment)
  39. 39. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010
  40. 40. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010
  41. 41. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 ISWIM (1965) Peter J. Landin - "If you See What I Mean" - functional programming
 (SASL, Miranda, ML, Haskell) - lazy evaluation
 (SASL, KRC, Hope, Miranda, Haskell,
  42. 42. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 Miranda (1985) David Turner - lazy, purely functional programming - list comprehensions (Haskell)
  43. 43. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 Clean (1987) Radboud University Nijmegen - mutable state and I/O is done through a uniqueness typing system (Haskell Monads) - performance comparable to Haskell
  44. 44. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 Self (1987) David Ungar, Randall Smith - dialect of Smalltalk (OOP) - prototype-based (Javascript) - Just in time Compiling (JVM)
  45. 45. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 Prolog (1972) Alain Colmerauer - logic programming (influenced Erlang) - natural language processing - relations, represented as facts and rules - running a query over these relations
  46. 46. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010
  47. 47. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010
  48. 48. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 Erlang (1986) Joe Armstrong, Robert Virding and Mike Williams - distributed, fault-tolerant, soft-real- time, non-stop applications. It supports hot swapping - processes communicate using message passing
  49. 49. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 ML (1973) Robin Milner/University of Edinburgh - Hindley–Milner type system - parametric polymorphism - “Type Inference” - ML Family (Standard ML, OCaml), Clean, Haskell
  50. 50. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 REBOL (1997) Carl Sassenrath - "Relative Expression Based Object  Language" - dialecting: small, optimized, Domain-Specific Language (DSL) for code and data - influenced JSON
  51. 51. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010
  52. 52. • APL (1964) introduced: array programming, influenced: functional programming • ALGOL (1958) refined both structured procedural programming and the discipline of language specification. • Simula (1967) first language designed to support object-oriented programming; Smalltalk (1972) followed with the first "purely" object-oriented language. • C (1969 - 1973) popular system programming language • Prolog (1972), first logic programming language. • ML (1978) built a polymorphic type system on top of Lisp, pioneering statically typed functional programming languages.
  53. 53. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 2015
  54. 54. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 2015 FORTRAN (1957) John Backus - FORTRAN 2015
  55. 55. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 2015 COBOL (1959) Conference on Data Systems Languages (CODASYL) - COBOL 2014
  56. 56. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 2015
  57. 57. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 2015
  58. 58. 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 2015
  59. 59. 23% 32% 45% Python Fortran C 500k LOC
  60. 60. 2017 60 anos de FORTRAN 2014 55 anos de COBOL 2013 55 anos de LISP 2012 40 anos de Smalltalk 2015 35 anos de ADA
  61. 61. 2010 2011 2012 2013 20142006 2007 2008 2009
  62. 62. 2010 2011 2012 2013 20142006 2007 2008 2009
  63. 63. 2010 2011 2012 2013 20142006 2007 2008 2009
  64. 64. https://github.com/replit
  65. 65. LLVM
  66. 66. LLVM Optimizer Clang (C/C++/ObjC Frontend) llvm-gcc Frontend GHC Frontend X86 Backend PowerPC Backend ARM Backend C Fortran Haskell
  67. 67. LLVM Optimizer Clang (C/C++/ObjC Frontend) llvm-gcc Frontend GHC Frontend X86 Backend PowerPC Backend ARM Backend C Fortran Haskell ASM.js WebGL Backend
  68. 68. “drawing ideas from Objective-C, Rust, Haskell, Ruby, Python, C#, CLU …” Swift 1.0 September 9th, 2014 with Xcode 6
  69. 69. Chris Lattner Director of the Developer Tools department at Apple and the creator of Swift
  70. 70. http://www.phoronix.com/scan.php?page=news_item&px=MTU4MzE
  71. 71. June 2015
  72. 72. http://llvm.org/docs/BitCodeFormat.html
  73. 73. dex2oat
  74. 74. www.akitaonrails.com
  75. 75. Obrigado@akitaonrails

×