A couple of weeks ago I started this project. The idea was to program the Fibonacci function in as many languages as possible and explore various concepts of programming. I chose Fibonacci as my subject for this exploration as it is a good function that is is simple to understand yet complicated enough to show different programming techniques (unlike the hello world example one usually goes for).

# Idea

The idea behind this project is manifold:

• Explore various styles of programming.
• Take small concepts and elaborate on these using a simple and well-elaborated base.
• Look at many languages.

But first of all, it is intended to just be a little side project for me too explore the world of communication.

# Languages

This is the list on my current progress and a little elaboration on the concept showcased.

1. Haskell: This post introduces direct recursion and accumulated recursion in Haskell.
2. C: C as an imperative language is introduced, and Fibonacci was implemented in an iterative style.
3. Java: The Fibonacci function is implemented by means of dynamic programming.
4. Scala: Scala is the language, Continuation Passing style is the concept.
5. Prolog: Fibonacci is here implemented in logic programming. Furthermore, we use ADTs to derive the argument to the function.
6. Spreadsheet: The key idea is to abstract the concept of programming to include more than written text.
7. JavaScript: Introducing the concept of events in JavaScript. This is a base for the concepts of streams, signals, etc. which will be introduced later on.
8. Coq: The introduction of theorem proving using a programming language.
9. R: Using R to plot the relationship between $n$ and $fib(n)$.
10. Haskell Types: Implementing the Fibonacci function using dependent programming in Haskell.
11. Python: Focusing on the relationship between list comprehensions and set definitions in mathematics.
12. Fixed Point: Introducing the theoretical concept of fixed points.

From here it is just following along. This project will stay current quite some time while we explore the idiosyncrasies of programming languages.