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

Ruby Alternatives in 2017

Df9a94a76097d0a18c3245b7f403aaac?s=47 ASoft
June 22, 2017

Ruby Alternatives in 2017

Dmitry Halai, Minsk.rb, 2017
https://blog.asoft.co/ruby-alternatives-in-2017-a737e2cf93d

ASoft (https://asoft.co/) is a software company with a strong focus on the quality of code and products.
Our main activities are chatbots and e-commerce apps.
Do you want to be a part of a great team? Join us https://asoft.co/join-us!

Df9a94a76097d0a18c3245b7f403aaac?s=128

ASoft

June 22, 2017
Tweet

More Decks by ASoft

Other Decks in Programming

Transcript

  1. Ruby Alternatives in 2017 Dmitry Halai ASoft.co

  2. WHOAMI @dm_halai dmitry.halai d-halai.com

  3. WHOAMI ASOFT.CO

  4. WHOAMI

  5. None
  6. WHAT’S THE CHOICE?

  7. REALITY (GT)

  8. REALITY (SOT)

  9. REAL REALITY

  10. None
  11. TIOBE* * https://www.tiobe.com/tiobe-index/ The Importance Of Being Earnest Search engines:

    Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube and Baidu Keyword: "<language> programming"
  12. PYPL* * http://pypl.github.io/PYPL.html Keyword: "<language> tutorial" Share – linear regression

    over the last 12 Summary: Java is the most popular language, Python grew the most in the last 5 years (8.7%) and PHP lost the most (-5.0%) Source: Google Trends
  13. PYPL* * http://pypl.github.io/PYPL.html

  14. SO SURVEY 2017* * https://insights.stackoverflow.com/survey/2017 Most Popular Most Popular (Web

    Devs)
  15. SO SURVEY 2017* * https://insights.stackoverflow.com/survey/2017

  16. SO SURVEY 2017* * https://insights.stackoverflow.com/survey/2017 Most Loved Top Paying

  17. – Robert C. Martin, Clean Code: A Handbook of Agile

    Software Craftsmanship “It is not the language that makes programs appear simple. It is the programmer that make the language appear simple.”
  18. WHY SHOULD WE LEARN? — Have more opportunities — Make

    right decisions — Just for fun — Grow up as engineers
  19. None
  20. HISTORY OF LANGUAGES . 1822 Charles Babbage’s difference engine (mechanical

    computation of polynomial functions) . 1942 ENIAC (electrical signals) . 1945 John Von Neumann (shared-program technique & conditional control transfer) . 1957 FORTRAN (FORmula TRANslating system. Procedural programming. IF, DO, GOTO, basic types, alternative to assembly language)
  21. HISTORY OF LANGUAGES . 1958 LISP (LISt Processing. The first

    dynamically typed functional programming language. Designed for AI, tree data structures, automatic storage management) . 1959 COBOL (Common Business-Oriented Language. numbers, strings, arrays, records) . 1964 BASIC (Beginner’s All-purpose Symbolic Instruction Code. GC) . 1968 Pascal (teaching purpose, structured programming, improved the “pointer” data type CASE)
  22. HISTORY OF LANGUAGES . 1972 C (Dynamic variables, multitasking, interrupt

    handling, forking, and strong, low-level, input-output) . 1980 Smalltalk (OOP. MVC, reflection) . 1983 C++ (C With Classes. Virtual functions and templates) . 1983 Objective-C (Message-passing functionality based on Smalltalk language) . 1986 Erlang (concurrent programming)
  23. HISTORY OF LANGUAGES . 1987 Perl (Practical Extraction and Reporting

    Language, report processing, improved version of sed and awk tools) . 1990 Haskell (purely functional programming) . 1993 Ruby (Designed for productive and enjoyable programming) . 1995 Java (Cross-platform functionality) . 1995 JavaScript (prototyping model)
  24. HISTORY OF LANGUAGES . 2001 C# . 2003 Scala .

    Clojure 2007 . 2009 Go . Rust 2010 . 2012 Elixir
  25. HISTORY OF LANGUAGES . 2001 C# . 2003 Scala .

    Clojure 2007 . 2009 Go . Rust 2010 . 2012 Elixir Most Loved Top Paying
  26. None
  27. CLOJURE

  28. CLOJURE

  29. CLOJURE 1. “Cambridge Polish” syntax (S-expressions) 2. “Data as code”

    strategy 4. Lazy Evaluation 5. STM (software transactional memory) 3. Macro system and protocols KEY FEATURES
  30. CLOJURE “S-EXPRESSIONS” SYNTAX OR(x, y) vs x OR y

  31. CLOJURE “DATA AS CODE” STRATEGY Homoiconicity* Language text has the

    same structure as its abstract syntax tree (AST) * https://en.wikipedia.org/wiki/Homoiconicity Clojure code is just nested lists of symbols that can be evaluated
  32. CLOJURE MACRO SYSTEM & PROTOCOLS

  33. CLOJURE LAZY EVALUATION

  34. CLOJURE STM

  35. CLOJURE TOOLS ClojureScript https://github.com/razum2um/awesome-clojure Datomic Leiningen Ring … Core.async Luminus

  36. CLOJURE REAL EXAMPLES https://clojure.org/community/companies

  37. CLOJURE CONS PROS + the ecosystem (JVM) + concurrency +

    data is code - prefix notation - readability - learning curve
  38. CLOJURE

  39. CLOJURE http://clojurecourse.by

  40. GO

  41. GO KEY FEATURES 1. Package system 2. Structs 5. Interfaces

    & type switches 6. Goroutines & channels 3. Pointers 4. Defer
  42. GO PACKAGE SYSTEM

  43. GO STRUCTS

  44. GO POINTERS

  45. GO DEFER

  46. GO INTERFACES & TYPE SWITCHES

  47. GO GOROUTINES & CHANNELS

  48. GO TOOLS Bigcache https://github.com/avelino/awesome-go CockroachDB Godoc Testing … Gin

  49. GO REAL EXAMPLES https://github.com/golang/go/wiki/GoUsers Need some more?

  50. GO CONS PROS + learning curve, simplicity + GC +

    no VM - no REPL - no generics - size of binaries + infrastructure + concurrency - pointers
  51. GO

  52. GO https://tour.golang.org

  53. ELIXIR CLEAR CODE IS BETTER THAN CONCISE CODE

  54. ELIXIR 1. Pipeline operator, pattern matching, destructuring 2. Metaprogramming &

    macroses 4. Actors & Agents 5. Erlang/OTP 3. Polymorphism via protocols KEY FEATURES
  55. ELIXIR |>, PATTERN MATCHING, DESTRUCTURING

  56. ELIXIR METAPROGRAMMING & MACROSES AST -> MACROS -> AST https://qed.elixir.pm/

  57. ELIXIR POLYMORPHISM VIA PROTOCOLS

  58. ELIXIR ACTORS & AGENTS

  59. ELIXIR ERLANG/OTP http://learnyousomeerlang.com/what-is-otp

  60. ELIXIR TOOLS Ecto https://github.com/h4cc/awesome-elixir Phoenix Mix Cowboy … Edeliver Plug

  61. ELIXIR REAL EXAMPLES https://github.com/doomspork/elixir-companies

  62. ELIXIR CONS PROS + the ecosystem (Erlang, Phoenix, Ecto) +

    concurrency + syntax, readability - small amount of libraries - deployment process + learning curve
  63. ELIXIR

  64. ELIXIR

  65. RUBY? https://stackshare.io/stackups/ruby-vs-clojure-vs-go-vs-elixir

  66. RUBY? — Mature — Great for an MVPs — Ruby

    3x3? — Still works for the most cases — Community — Lots of work
  67. ALREADY BUT NOT YET

  68. WHAT’S NEXT? RUST SCHEME ELM F# HASKELL ERLANG CRYSTAL TYPESCRIPT

    SCALA
  69. BOOK

  70. REAL REALITY

  71. FIN ASOFT.CO