Skip to content

4xx31/7languages7weeks

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

65 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

#7languages7weeks Challenge

This is a repository documenting my journey through the #7languages7weeks challenge.

Overview

The code in this repository is based on the following book from Pragmatic Programmers:

"At worst, by learning languages, you’ll learn to fold new concepts back into the code that you write in your chosen language."

Programming Languages:

ruby

Ruby is a programming language that gets high marks for ease of use and readability. It's a dynamic and reflective language. It supports multiple programming paradigms, including functional, object-oriented, and imperative. It features a dynamic type system and automatic memory management.

io

Io has a prototype-based object model similar to the ones in JavaScript, Self, and NewtonScript, eliminating the distinction between instance and class. Like Smalltalk, everything is an object and it uses dynamic typing. Like Lisp, programs are just data trees. Io uses actors for concurrency.

Remarkable features of Io are its minimal size and openness to using external code resources. Io is executed by a small, portable virtual machine.

Concurrency constructs with simplicity and uniformity of syntax. The minimal syntax is powerful, and the similarities to Lisp are striking. Io's uniqueness comes from its message dispatch mechanism.

prolog

Prolog is a logic programming language associated with artificial intelligence and computational linguistics.

It has its roots in first-order logic, a formal logic. Unlike many other programming languages, Prolog is declarative: the program logic is expressed in terms of relations, represented as facts and rules. A computation is initiated by running a query over these relations.

scala

Scala is a hybrid (OOP + FP) for general software applications. Scala has full support for functional programming and a very strong static type system. This allows programs written in Scala to be very concise and thus smaller in size than other general purpose programming languages. Many of Scala's design decisions were inspired by criticism over the shortcomings of Java.

Scala source code is intended to be compiled to Java bytecode, so that the resulting executable code runs on a Java virtual machine. Java libraries may be used directly in Scala code, and vice versa. Like Java, Scala is object-oriented, and uses a curly-brace syntax reminiscent of the C programming language. Unlike Java, Scala has many features of functional programming languages like Scheme, Standard ML and Haskell, including currying, type inference, immutability, lazy evaluation, and pattern matching.

erlang

Erlang is a general-purpose, concurrent, garbage-collected programming language and runtime system. The sequential subset of Erlang is a functional language, with eager evaluation, single assignment, and dynamic typing. It was designed by Ericsson to support distributed, fault-tolerant, soft-real-time, non-stop applications. It supports hot swapping, so that code can be changed without stopping a system.

While threads require external library support in most languages, Erlang provides language-level features for creating and managing processes with the aim of simplifying concurrent programming. Though all concurrency is explicit in Erlang, processes communicate using message passing instead of shared variables, which removes the need for explicit locks (a locking scheme is still used internally by the VM).

Erlang is gathering steam as a functional language that gets concurrency, distribution, and fault tolerance right. The creators of CouchDB, one of the emerging cloud-based databases, chose Erlang and have never looked back. Erlang makes designing concurrent, distributed, fault-tolerant applications much easier.

clojure

Dialect of the Lisp programming language. Clojure is a general-purpose programming language with an emphasis on functional programming. It runs on the Java Virtual Machine, Common Language Runtime, and JavaScript engines. Like other Lisps, Clojure treats code as data and has a macro system.

Clojure's focus on programming with immutable values and explicit progression-of-time constructs are intended to facilitate the development of more robust programs, particularly multithreaded ones.

Unlike other Lisp dialects, the parentheses are greatly reduced, and you have a huge ecosystem to lean on, including a huge Java library and widely available deployment platforms.

haskell

Haskell is a pure functional language. That means you won’t find mutable state anywhere. The same function with the same input parameters will give you the same output, every time. Of all the strongly typed languages, Haskell supports the most widely respected typing model.

About

Repository for my journey through the #7languages7weeks challenge

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors