Skip to content

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

Notifications You must be signed in to change notification settings

Xemptuous/LanguageComparison

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

77 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

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
  • Extra rust-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

Watchers

Forks

Releases

No releases published

Packages

No packages published