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

Ruby Alternatives in 2017

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for ASoft 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!

Avatar for ASoft

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