Here's my take on the Advent of Code challenge. Instead of choosing "the right tool for the job", I decided to take the opportunity of solving the problem using different programming languages (so far 19).
Some of the programming languages I know by heart, others I had never tried and barely seen before this challenge. And some occasions were definitely a case of "the absolutely wrong tool for the job". So there's a BIG disclosure regarding code quality... 🙈🙈🙈
🔍First appeared 2009. Concurrent, functional, imperative, object-oriented.
🔍First appeared 2011. Functional, concurrent, distributed. Inspired by Ruby, Erlang, and Clojure. Builds on top of Erlang and is running on the BEAM.
💡Elixir comes with a detailed and well-written documentation
🔍First appeared 2014. General-purpose, multi-paradigm. Influenced by e.g. Objective-C, Python, Haskell.
🔍First appeared 1987. General-purpose, functional, imperative, object-oriented, reflective. Influenced by e.g. BASIC, C, Lisp. Influenced JavaScript, Julia, PHP, Python, Ruby.
🔍First appeared 1972. Imperative (procedural), structured. Influenced e.g. C++, Java, PHP, C#.
📚C Programming Language (Brian W. Kernighan, Dennis M. Ritchie)
🔍First appeared 1958. Functional, procedural, reflective, meta. Influenced e.g. Erlang, Prolog, Forth, Haskell.
💡You can find information here about how to download and get started with Lisp.
Start the sbcl shell and run using the following command:
(load "puzzle2-step1.lisp")
(start)
🔍First appeared 1995. Imperative, functional, object-oriented, procedural.
🔍First appeared 1972 (Squeak in 1996). Object-oriented with its own virtual machine, on which the code can be changed while the program is running.
💡Squeak can be downloaded here and there is an outstanding aide-memoire to be found here.
🔍First appeared 2004. Functional, imperative, object-oriented. Running on the JVM.
💡A Scala tutorial can be found here
🔍First appeared 2012. Procedural, functional.
🔍First appeared 1995. Functional, imperative, object-oriented.
🔍First appeared 1986. Concurrent, functional.
🔍First appeared 1993. Imperative, functional.
💡Lua can be tried online here
🔍First appeared 1995. Object-oriented (class-based), imperative.
🔍First appeared 1995. Event-driven, functional, imperative, object-oriented.
🔍First appeared 1990. Functional.
💡SWI Prolog can be tried online here
🔍First appeared 1990. Functional, imperative, object-oriented, reflective.
🔍First appeared 2000. Structured, imperative, object-oriented, event-driven, task-driven, functional, generic, reflective, concurrent.