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

Ruby Alternatives in 2017

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!

ASoft

June 22, 2017
Tweet

More Decks by ASoft

Other Decks in Programming

Transcript

  1. 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"
  2. 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
  3. – 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.”
  4. WHY SHOULD WE LEARN? — Have more opportunities — Make

    right decisions — Just for fun — Grow up as engineers
  5. 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)
  6. 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)
  7. 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)
  8. 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)
  9. HISTORY OF LANGUAGES . 2001 C# . 2003 Scala .

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

    Clojure 2007 . 2009 Go . Rust 2010 . 2012 Elixir Most Loved Top Paying
  11. 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
  12. 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
  13. CLOJURE CONS PROS + the ecosystem (JVM) + concurrency +

    data is code - prefix notation - readability - learning curve
  14. GO

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

    & type switches 6. Goroutines & channels 3. Pointers 4. Defer
  16. GO CONS PROS + learning curve, simplicity + GC +

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

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

    macroses 4. Actors & Agents 5. Erlang/OTP 3. Polymorphism via protocols KEY FEATURES
  19. ELIXIR CONS PROS + the ecosystem (Erlang, Phoenix, Ecto) +

    concurrency + syntax, readability - small amount of libraries - deployment process + learning curve
  20. RUBY? — Mature — Great for an MVPs — Ruby

    3x3? — Still works for the most cases — Community — Lots of work