Upgrade to Pro — share decks privately, control downloads, hide ads and more …

2010-2030: linguagens no Technology Radar

2010-2030: linguagens no Technology Radar

Nessa palestra veremos quais linguagens ganharam destaque desde 2010 no ThoughtWorks Technology Radar, que registra o uso de tecnologias em grandes empresas.

Considerando essa linguagens, identificamos algumas características emergentes, e através delas podemos imaginar o como serão as linguagens mais importantes nos próximos 10 anos.

Luciano Ramalho

March 23, 2021
Tweet

More Decks by Luciano Ramalho

Other Decks in Programming

Transcript

  1. ≥ 35 ≥ 17 ≥ 10 203 JavaScript 31 C#

    13 R 110 Java 29 Go 13 Swift 066 Python 25 TypeScript 12 Objective-C 045 Ruby 20 Kotlin 12 Rust 040 Clojure 19 PHP 11 C++ 035 Scala 17 F# 10 Groovy Linguagens: 10 ou mais menções
  2. Adote Experimente março 2017 Elixir novembro 2017 Python 3 Kotlin

    maio 2018 Kotlin novembro 2018 TypeScript abril 2019 TypeScript Rust novembro 2019 Flutter (Dart) maio 2020 Rust outubro 2020 Rust
  3. • Menos herança, mais composição • Suporte a polimorfismo independente

    de herança • Ênfase em interfaces, protocolos e tipos estruturais • Extension methods • Linguagens que exemplificam: Go, Julia, Python, TypeScript Elementos de OOP 2.0
  4. Body size default to 16 px Open Sans Light. Place

    your image and “send to the back” to make use of the white mask to create the angle required. • • Text and an image
  5. Body size default to 16 px Open Sans Light. Place

    your image and “send to the back” to make use of the white mask to create the angle required. • • Text and an image
  6. “Static typing is a powerful tool to help programmers express

    their assumptions about the problem they are trying to solve and allows them to write more concise and correct code. Dealing with uncertain assumptions, dynamism and (unexepected) change is becoming increasingly important in a loosely coupled distributed world. [...] Static typing where possible, dynamic typing when needed!” - Erik Meijer and Peter Drayton (Microsoft Research)
  7. • Linguagens com tipos dinâmicos adotam tipagem estática gradual. Ex:

    TypeScript, Python 3.5, Ruby 3 • Linguagens com tipos estáticos adotam um tipo dynamic. Ex: C#, Kotlin/JS*, Go** O caminho do meio * Não Kotlin para JVM ** interface{}
  8. C++ Java Scala Go Scala Go TypeScript TypeScript Ruby Python

    JavaScript TypeScript TypeScript Python Go
  9. C++ Java Scala Go Scala Go TypeScript Python ≥ 3.8

    TypeScript Ruby Python JavaScript TypeScript Python ≥ 3.5 Ruby ≥ 3.0 TypeScript Python Go
  10. “[...] nossos padrões assumem recursos de linguagem do nível de

    Smalltalk e C++. Se estivéssemos assumindo o uso de linguagens procedurais, teríamos incluído padrões como Herança, Encapsulamento e Polimorfismo.” - Gamma, Helm, Johnson & Vlissides—Padrões de Projeto
  11. “[...] nossos padrões assumem recursos de linguagem do nível de

    Smalltalk e C++. Se estivéssemos assumindo o uso de linguagens procedurais, teríamos incluído padrões como Herança, Encapsulamento e Polimorfismo.” - Gamma, Helm, Johnson & Vlissides—Padrões de Projeto features!
  12. Body size default to 16 px Open Sans Light. Place

    your image and “send to the back” to make use of the white mask to create the angle required. • • Text and an image
  13. “Programming language ‘paradigms’ are a moribund and tedious legacy of

    a bygone age. Modern language designers pay them no respect, so why do our courses slavishly adhere to them?” Shriram Krishnamurthi—Brown University
  14. • Closures ◦ Pré-requisito para funções de ordem superior •

    Imutabilidade ◦ Pré-requisito para programação concorrente tolerante a falhas features!
  15. Além de callbacks • Corrotinas com async/await: programação assíncrona sem

    callbacks ou promises • Ex.: C#, Python 3, JavaScript ES8
  16. Além de threads e locks (1) • CSP (Communicating Sequential

    Processes): troca de dados e sincronização via channels síncronos • Ex: Go, Clojure
  17. Além de threads e locks (2) • Actor Model: funções

    autônomas comunicando-se por mensagens assíncronas • Ex: ◦ Linguagens Erlang, Elixir ◦ Framework Akka (Scala, Java)
  18. “O que permanece é o que faz sentido para o

    coletivo.” - Rosi Teixeira (ThoughtWorks)