Skip to content

Xemptuous/LanguageComparison

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

C++

🗂️ Projects

  • Lexer – basic lexer with static input

⚙️ Tooling

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

🗂️ Projects

  • Lexer – basic lexer with static input

⚙️ Tooling

  • Compiler: dotnet
  • LSP: csharp-ls
Clojure

🗂️ Projects

  • Lexer – basic lexer with static input

⚙️ Tooling

  • Manager: leiningen
  • Compiler: lein
  • LSP: clojure-lsp
Common Lisp

🗂️ Projects

⚙️ Tooling

Crystal

🗂️ Projects

⚙️ Tooling

D

🗂️ Projects

  • Lexer – basic lexer with static input

⚙️ Tooling

  • Compiler: dmd
  • LSP: serve_d
Dart

🗂️ Projects

⚙️ Tooling

Elixir

🗂️ Projects

  • Lexer – basic lexer with static input
  • Calculator – shunting yard RPN parser + calculator

⚙️ Tooling

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

🗂️ Projects

  • Lexer – basic lexer with static input

⚙️ Tooling

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

🗂️ Projects

⚙️ Tooling

Fennel

🗂️ Projects

⚙️ Tooling

Go

🗂️ Projects

  • Lexer – basic lexer with static input

⚙️ Tooling

  • Runner: go
  • LSP: gopls
Haskell

🗂️ Projects

  • Lexer – basic lexer with static input

⚙️ Tooling

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

🗂️ Projects

  • Lexer – basic lexer with static input

⚙️ Tooling

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

🗂️ Projects

⚙️ Tooling

Koka

🗂️ Projects

⚙️ Tooling

Kotlin

🗂️ Projects

⚙️ Tooling

Lua

🗂️ Projects

  • Lexer – basic lexer with static input

⚙️ Tooling

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

🗂️ Projects

  • Lexer – basic lexer with static input

⚙️ Tooling

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

🗂️ Projects

  • Lexer – basic lexer with static input

⚙️ Tooling

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

🗂️ Projects

  • Lexer – basic lexer with static input

⚙️ Tooling

  • Compiler: odin
  • Runner: odin
  • LSP: ols
Python

🗂️ Projects

  • Lexer – basic lexer with static input

⚙️ Tooling

  • Runner: python
  • LSP: based_pyright
Raku

🗂️ Projects

⚙️ Tooling

Red/Rebol

🗂️ Projects

⚙️ Tooling

ReScript

🗂️ Projects

⚙️ Tooling

Rust

🗂️ Projects

  • Lexer – basic lexer with static input

⚙️ Tooling

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

🗂️ Projects

⚙️ Tooling

Tcl

🗂️ Projects

⚙️ Tooling

Typescript

🗂️ Projects

  • Lexer – basic lexer with static input

⚙️ Tooling

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

🗂️ Projects

⚙️ Tooling

Vale

🗂️ Projects

⚙️ Tooling

Wren

🗂️ Projects

⚙️ Tooling

Zig

🗂️ Projects

  • Lexer – basic lexer with static input

⚙️ 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