Skip to content

Xemptuous/LanguageComparison

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

54 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

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