Skip to content

Repository files navigation

🌐 LanguageComparison

A collection of the same projects implemented across multiple languages. Goal: To compare syntax, performance, idioms, tooling, and language ergonomics—while having fun and learning.

Main Inspiration

I love programming languages and all their nuances. I have long wondered about what each language has to offer in various ways, especially beyond its standard library, package managers, and other bundled features; I was curious about the languages themselves syntactically and linguistically, and how these deliberate choices affected the overall feeling and flow of writing in each one.

I have found that languages are always evolving by building ontop of those that came before; fixing up little things the authors thought were lacking from previous iterations, bundling in the strengths of various languages, and throwing in their own little touch of novelty.

Eventually I want to write more languages than I already have, and this repo will serve as a reference of sorts.


🧰 Languages & Projects

Ada

🗂️ Projects

  • Fib – basic recursive fibonacci

⚙️ Tooling

  • Compiler:gnatmake
  • LSP:ada-language-server
BASIC

🗂️ Projects

  • Fib – basic recursive fibonacci

⚙️ Tooling

  • Compiler:fbc (freebasic)
C

🗂️ Projects

  • Fib – basic recursive fibonacci
  • Brainfuck – simple brainfuck interpreter for hello world

⚙️ Tooling

  • Compiler:gcc
  • LSP:clangd
C++

🗂️ Projects

  • Lexer – basic lexer with static input
  • Fib – basic recursive fibonacci
  • Brainfuck – simple brainfuck interpreter for hello world

⚙️ Tooling

  • Compiler:g++
  • LSP:clangd
C#

🗂️ Projects

  • Lexer – basic lexer with static input
  • Fib – basic recursive fibonacci
  • Brainfuck – simple brainfuck interpreter for hello world

⚙️ Tooling

  • Compiler:dotnet
  • LSP:csharp-ls
Clojure

🗂️ Projects

  • Lexer – basic lexer with static input
  • Fib – basic recursive fibonacci

⚙️ Tooling

  • Manager:leiningen
  • Compiler:lein
  • LSP:clojure-lsp
COBOL

🗂️ Projects

  • Fib – basic recursive fibonacci

⚙️ Tooling

  • Compiler:cobc (gnucobol)
Common Lisp

🗂️ Projects

  • Fib – basic recursive fibonacci

⚙️ Tooling

  • Compiler:sbcl
Crystal

🗂️ Projects

  • Fib – basic recursive fibonacci

⚙️ Tooling

  • Compiler:crystal
  • LSP:crystalline
D

🗂️ Projects

  • Lexer – basic lexer with static input
  • Fib – basic recursive fibonacci
  • Brainfuck – simple brainfuck interpreter for hello world

⚙️ Tooling

  • Compiler:dmd
  • LSP:serve_d
Dart

🗂️ Projects

  • Fib – basic recursive fibonacci

⚙️ Tooling

  • Compiler:dart
  • Runner:dart
Elixir

🗂️ Projects

  • Lexer – basic lexer with static input
  • Fib – basic recursive fibonacci

⚙️ Tooling

  • Manager:mix
  • Compiler:elixirc
  • Runner:elixir
  • Shell:iex
  • LSP:elixir_ls
Erlang

🗂️ Projects

  • Lexer – basic lexer with static input
  • Fib – basic recursive fibonacci

⚙️ Tooling

  • Compiler:erlc
  • Shell:erl
  • LSP:erlang_ls
F#

🗂️ Projects

  • Fib – basic recursive fibonacci
  • Brainfuck – simple brainfuck interpreter for hello world

⚙️ Tooling

  • Compiler:dotnet
  • LSP:fsautocomplete
Fennel

🗂️ Projects

  • Fib – basic recursive fibonacci

⚙️ Tooling

  • Runner:fennel || lua
  • Compiler:fennel || luac
Fortran

🗂️ Projects

  • Fib – basic recursive fibonacci

⚙️ Tooling

  • Compiler:gfortran
  • LSP:fortls
Go

🗂️ Projects

  • Lexer – basic lexer with static input
  • Fib – basic recursive fibonacci
  • Brainfuck – simple brainfuck interpreter for hello world

⚙️ Tooling

  • Runner:go
  • LSP:gopls
Haskell

🗂️ Projects

  • Lexer – basic lexer with static input
  • Fib – basic recursive fibonacci

⚙️ Tooling

  • Compiler:ghc
  • Shell:ghci
  • LSP:hls
Java

🗂️ Projects

  • Lexer – basic lexer with static input
  • Fib – basic recursive fibonacci
  • Brainfuck – simple brainfuck interpreter for hello world

⚙️ Tooling

  • Manager:maven
  • Compiler:mvn
  • LSP:jdtls
Julia

🗂️ Projects

  • Fib – basic recursive fibonacci

⚙️ Tooling

  • Runner:julia
Koka

🗂️ Projects

  • Fib – basic recursive fibonacci

⚙️ Tooling

  • Compiler:koka
Kotlin

🗂️ Projects

  • Fib – basic recursive fibonacci

⚙️ Tooling

  • Compiler:kotlinc
  • Runner:java
  • LSP:kotlin-language-server
Lua

🗂️ Projects

  • Lexer – basic lexer with static input
  • Fib – basic recursive fibonacci
  • Brainfuck – simple brainfuck interpreter for hello world

⚙️ Tooling

  • Compiler:luac
  • Runner:lua
  • LSP:lua_ls
Nim

🗂️ Projects

  • Lexer – basic lexer with static input
  • Fib – basic recursive fibonacci
  • Brainfuck – simple brainfuck interpreter for hello world

⚙️ Tooling

  • Compiler:nim
  • Runner:nim
  • LSP:nim_langserver
OCaml

🗂️ Projects

  • Lexer – basic lexer with static input
  • Fib – basic recursive fibonacci
  • Brainfuck – simple brainfuck interpreter for hello world

⚙️ Tooling

  • Manager:dune
  • Compiler:ocamlc
  • Runner:ocaml
  • LSP:ocamllsp
Odin

🗂️ Projects

  • Lexer – basic lexer with static input
  • Fib – basic recursive fibonacci

⚙️ Tooling

  • Compiler:odin
  • Runner:odin
  • LSP:ols
Pascal

🗂️ Projects

  • Fib – basic recursive fibonacci

⚙️ Tooling

  • Compiler:fpc
Perl

🗂️ Projects

  • Fib – basic recursive fibonacci

⚙️ Tooling

  • Compiler:pp
  • LSP:perlnavigator
PHP

🗂️ Projects

  • Fib – basic recursive fibonacci

⚙️ Tooling

  • Runner:php
  • LSP:phpactor
Python

🗂️ Projects

  • Lexer – basic lexer with static input
  • Fib – basic recursive fibonacci
  • Brainfuck – simple brainfuck interpreter for hello world

⚙️ Tooling

  • Runner:python
  • LSP:based_pyright
R

🗂️ Projects

  • Fib – basic recursive fibonacci

⚙️ Tooling

  • Runner:R
  • Compiler:R
Raku

🗂️ Projects

  • Fib – basic recursive fibonacci

⚙️ Tooling

  • Runner:raku
  • Compiler:rakudo
Red/Rebol

🗂️ Projects

  • Fib – basic recursive fibonacci

⚙️ Tooling

  • Runner:red
ReScript

🗂️ Projects

⚙️ Tooling

Ruby

🗂️ Projects

  • Fib – basic recursive fibonacci

⚙️ Tooling

  • Runner:ruby
  • LSP:ruby-lsp
Rust

🗂️ Projects

⚙️ Tooling

  • Compiler:cargo
  • Runner:cargo
  • LSP:rust-analyzer
  • Extrarust-script - allows shebang for running single files
Scala

🗂️ Projects

  • Fib – basic recursive fibonacci

⚙️ Tooling

  • Runner:scala
  • Compiler:scalac
StandardML

🗂️ Projects

  • Fib – basic recursive fibonacci

⚙️ Tooling

  • Compiler:mlton
  • LSP:millet
Swift

🗂️ Projects

  • Fib – basic recursive fibonacci

⚙️ Tooling

  • Compiler:swift
  • Runner:swift
Tcl

🗂️ Projects

  • Fib – basic recursive fibonacci

⚙️ Tooling

  • Runner:tclsh
Typescript

🗂️ Projects

  • Lexer – basic lexer with static input
  • Brainfuck – simple brainfuck interpreter for hello world

⚙️ Tooling

  • Compiler:npx tsc
  • Runner:npx tsx
  • LSP:typescript-language-server
V

🗂️ Projects

  • Fib – basic recursive fibonacci

⚙️ Tooling

  • Compiler:v
Vale

🗂️ Projects

  • Fib – basic recursive fibonacci

⚙️ Tooling

  • Compiler:valec
Wren

🗂️ Projects

  • Fib – basic recursive fibonacci

⚙️ Tooling

  • Runner:wren
Zig

🗂️ Projects

  • Lexer – basic lexer with static input
  • Brainfuck – simple brainfuck interpreter for hello world

⚙️ Tooling

  • Compiler:zig
  • Runner:zig
  • LSP:zls

About

writing some stuff in different languages to get a feel for how they work.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages