• Stars
    star
    763
  • Rank 59,519 (Top 2 %)
  • Language
  • Created over 4 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A catalog of programming languages

Programming Languages for Enthusiasts

./cover-art.png

A catalogue of languages, environments, and tooling around them. Feel free to send a PR if I am missing some cool indie projects here. If you find this catalog interesting, I am tweeting updates to this repo linking the work of the awesome developers behind these programming languages: https://twitter.com/prathyvsh/status/1353399062758891523

If you are an indie language author and would like to feature your language here, add the language in lexicographic order and send a PR. It would be great if you can link to your language’s logo, documentation page, and preferrably a playground where users can interact with the language before installing it locally.

Languages

Arend

Arend is a theorem prover based on its own take on Constructive Homotopy Type Theory (with an Interval Type) developed independently and in parallel to Cubical Type Theories. It natively supports higher inductive types, a version of cubical syntax and tight integration with IntelliJ IDEA IDE.

AssemblyScript

“A TypeScript-like language for WebAssembly.”

AssemblyScript inherits basic TypeScript syntax but leaves out all of complex type features. On the other hand AssemblyScript type system is completely mandatory and strict (no Any or Unknown types) thus guiding compiler optimizations. Speaking of which, AssemblyScript employs Binaryen as a compiler back-end implementing its own specific optimizations on top of it. In addition to that it features three options for a run-time system ranging from no run-time at all with completely manual memory management to an advanced GC that still supports manual triggering. Not mentioning hand-crafted standard library implementing state-of-the-art numerical and sorting algorithms. :)

Arturo

Repo: https://github.com/arturo-lang/arturo Simple, modern and powerful interpreted programming language for efficient scripting.

Beef

https://raw.githubusercontent.com/beefytech/Beef/master/IDE/screenshot0.gif

A performance-oriented language designed to provide high level ergonomics suitable for game development.

Bobcat

A concatenative language for behavior trees

Bolt

Bolt is a language with in-built data-race freedom!

Accompanying dissertation is available here.

and the blog post on making it here

Boomerang

Boomerang is a programming language for writing bidirectional transforms using lenses. It can be thought of as providing a setting for describing computations from left to right as functions mapping inputs to outputs and from right to left as describing a function that describes a modified output, together with the original input, back to a modified input.

Website: https://www.seas.upenn.edu/~harmony/

Caramel

A functional language for building type-safe, scalable, and maintainable applications. Uses the OCaml compiler and targets the Erlang VM.

Catala

Catala is a programming language adapted for socio-fiscal legislative literate programming. By annotating each line of the legislative text with its meaning in terms of code, one can derive an implementation of complex socio-fiscal mechanisms that enjoys a high level of assurance regarding the code-law faithfulness.

https://raw.githubusercontent.com/CatalaLang/catala/master/doc/images/logo.png

https://raw.githubusercontent.com/CatalaLang/catala/master/doc/images/ScreenShotVSCode.png

Website: https://catala-lang.org/

Coalton

https://raw.githubusercontent.com/coalton-lang/coalton/main/docs/assets/coalton-logotype-gray.svg

Coalton is an efficient, statically typed functional programming language that supercharges Common Lisp.

Dafny

Dafny is a programming language with a program verifier. As you type in your program, the verifier constantly looks over your shoulders and flags any errors.

Dark

./img/darklang.gif

Dark, a combined language, editor, and infrastructure to make it easy to build backends.

Website: https://darklang.com/ Dev Blog: https://blog.darklang.com/

Dex Lang

Research language for array processing in the Haskell/ML family

Ditto

A Super Kawaii Dependently Typed Programming Language

Egison

Egison is a functional programming language featuring its expressive pattern-matching facility.

Empirical

Empirical is a language for time-series analysis. It has statically typed Dataframes that can infer type from an external source at compile time.

Enso

./img/enso.gif

A hybrid visual and textual functional programming language.

They keep a dev diary on Medium: https://medium.com/@enso_org/enso-dev-blog-18th-december-2020-e51e11c02c66

Felix

An advanced, statically typed, high performance scripting language with native C++ embedding.

Facet

A call-by-value functional language with algebraic effects, runners, quantitative type theory, and staging

Glicol

https://raw.githubusercontent.com/chaosprint/glicol/main/logo.png

A graph-oriented live coding language written in Rust.

Website: https://glicol.org

Hana

A small dynamically-typed scripting language written in Rust/C and is inspired by Pascal, Ruby and Javascript.

Imba

https://github.com/imba/branding-imba/raw/555b21940fa796fbf0eed44df48160d450ca894b/mascot/mascot-full-yellow.png

Imba is a friendly full-stack programming language for the web that compiles to performant JavaScript. It has language-level support for defining, extending, subclassing, instantiating and rendering DOM nodes.

Website: https://imba.io/

Imp

Relational Programming Environment.

Imp by Jamie Brandon is envisioned to be a programming environment for working with structured data across multiple platforms blurring the lines between a programming language and a database.

It is still in an experimental phase, but already home to a few cool ideas. Read about it here: https://scattered-thoughts.net/writing/imp-intro/

Ink

Ink is a minimal programming language inspired by modern JavaScript and Go, with functional style.

Repo: https://github.com/thesephist/ink

Irken

Irken is a strongly typed, compiled language with a lisp-like syntax extensible with macros. It uses type inference along with a powerful type system to give you the speed of a compiled language with high-level data types and a higher degree of safety than languages like C/C++.

Scopes

The Scopes programming language takes the saying “Objects are a poor man’s closures” (and its reverse, “Closures are a poor man’s objects”) seriously.

sona

The sona programming language is a 14 token language with a ~ minimal (1000 character) interpreter. It is based on and in the minimal (140 words) natural constructed language toki pona created by Sonja Lang. The design inspiration comes from assembly for simplicity. A sona playground is availible on Observable.

Souffle

Soufflé is a variant of Datalog for tool designers crafting analyses in Horn clauses. Soufflé synthesizes a native parallel C++ program from a logic specification.

Umka

Umka is a statically typed embeddable scripting language. It combines the simplicity and flexibility needed for scripting with a compile-time protection against type errors. Its aim is to follow the Python Zen principle Explicit is better than implicit more consistently than dynamically typed languages generally do.

Ur/Web

Ur is a programming language in the tradition of ML and Haskell, but featuring a significantly richer type system. Ur is functional, pure, statically typed, and strict. Ur supports a powerful kind of metaprogramming based on row types.

Elvish

Friendly Interactive Shell and Expressive Programming Language

Mascarpone

Mascarpone is a self-modifying programming language in the style of Emmental.

Pikelet

https://raw.githubusercontent.com/pikelet-lang/pikelet/main/book/assets/pikelet.png

A friendly little systems language with first-class types.

Some of Brendan’s thoughts on evolving Pikelet can be read here: https://gist.github.com/brendanzab/eba7015e6345abe79a57a704091820bb/

Teyjus

An efficient implementation of the higher-order logic programming language Lambda Prolog

Open Cypher

A declarative property graph query language

Morpheus

A stack-based programming language with derivational morphemes

Hamler

Haskell-style functional programming language running on Erlang VM

Objective-S

Objective-S is an architecture-oriented programming language inspired by Smalltalk, Objective-C, the UNIX shell and the web.

Orion

Orion is a high level, purely functional programming language with a LISP based syntax

Loda

LODA is an assembly language, a computational model and a distributed tool for mining integer sequences.

Repo: https://github.com/loda-lang

Lys

IRCIS

https://raw.githubusercontent.com/batman-nair/IRCIS/master/screencaps/banner.png

https://raw.githubusercontent.com/batman-nair/IRCIS/master/screencaps/factors.gif

IRCIS is an esoteric programming language where the program exists in a two-dimensional grid of cells, where each cell contains a single instruction, and execution can proceed in any cardinal direction across this grid – not just left-to-right, but also right-to-left, top-to-bottom, and bottom-to-top.

Wasp

./img/wasp.png

Wasp (Web Application Specification Language) is a declarative DSL (domain-specific language) for developing, building and deploying modern full-stack web apps with less code.

Website: https://wasp-lang.dev/

Clay

Clay is a programming language designed for Generic Programming.

Lawvere

A categorical programming language with effects

Alan

Alan is a programming language that does concurrency for you and can thus separate how the software is written from how it runs

Pony

https://www.ponylang.io/images/logo.png

Pony is an open-source, actor-model, capabilities-secure, high performance programming language.

A post on the history of the language: https://www.ponylang.io/blog/2017/05/an-early-history-of-pony/

A collection of talks on the language is available here: https://codesync.global/media/top-10-pony-lang-talks/

Lain

./img/lain.png

Lain is a Lisp based templating and scripting language used at Devin Lin Luvega’s website XXIIVV

An image editor called Ronin is also based on the same language: https://100r.co/site/ronin.html

Lips

Scheme based powerful lisp language in JavaScript

Futhark

A high-performance data-parallel functional programming language targeting CUDA and OpenCL. Features limited dependent types to track array dimentions, uniquness typing for local in-place mutation and a Standard ML-style module system with parametric modules. The compiler is implemented in Haskell.

GitHub repository: https://github.com/diku-dk/futhark

Paste Lang

[WIP] An esoteric programming language build around macros.

Frank

Frank is a strict, effectful functional programming language with a bidirectional type-and-effect system and effect handlers

Gottlob

http://www.attoparsec.com/artifacts/gottlob/images/functions.png

Gottlob is an esoteric language which tries to match Frege’s notation in Begriffsschrift as closely as possible.

Koka


Koka: a function-oriented language with effect inference

I encountered Koka when researching about algebraic effects. Papers from Daan Leijen on its semantics and technical details are available here: https://www.microsoft.com/en-us/research/project/koka/

Red

Red is a new programming language strongly inspired by Rebol, but with a broader field of usage thanks to its native-code compiler, from system programming to high-level scripting, while providing modern support for concurrency and multi-core CPUs.

FormCoreJS

A minimal pure functional language based on self dependent types.

Gerty

A minimal, dependently-typed programming language

Gravity

Gravity is a powerful, dynamically typed, lightweight, embeddable programming language written in C without any external dependencies (except for stdlib). It is a class-based concurrent scripting language with modern Swift-like syntax.

Ballerina

Ballerina is an open source programming language and platform for cloud-era application programmers to easily write software that just works.

Gluon

A static, type inferred and embeddable language written in Rust.

Flix

https://raw.githubusercontent.com/flix/flix/master/docs/logo.png

Flix is a principled poly-paradigm language with polymorphic effect system and first class datalog constraints.

Website: https://flix.dev

Gleam

A statically typed language for the Erlang VM

Astro

A fun safe language for rapid prototyping and high performance applications

Wyvern

Wyvern is a new general-purpose programming language designed to support adaptation and assurance.

pLam

An interpreter for learning and exploring pure λ-calculus

TopShell

Purely functional, reactive scripting language

FStar

Verification system for effectful programs

Shiro

Author: Jeffrey Guenther

A declarative, dataflow programming language for exploring alternatives

Thesis: http://summit.sfu.ca/system/files/iritems1/17048/etd9968_JGuenther.pdf

Agda

Agda is a dependently typed programming language / interactive theorem prover.

PolyML

The Poly/ML implementation of Standard ML.

Factor

Factor is a concatenative, stack-based programming language with high-level features including dynamic types, extensible syntax, macros, and garbage collection. On a practical side, Factor has a full-featured library, supports many different platforms, and has been extensively documented.

Kitten

http://kittenlang.org/logo.png

./img/kitten.png

A statically typed concatenative systems programming language.

CakeML

A Verified Implementation of ML

PunyForth

A simple, stack-based, Forth inspired programming language that primarily targets Internet of Things (IOT) devices, like the ESP8266.

Play

A small, portable language, for making reliable applications

Cedille

Cedille, a dependently typed programming languages based on the Calculus of Dependent Lambda Eliminations

DataFun

Research on integrating datalog & lambda calculus via monotonicity types.

Paper on the underlying theory: http://www.rntz.net/files/tones.pdf

Cone

Cone is a fast, fit, friendly, and safe systems programming language.

Atto

An insanely simple self-hosted functional programming language

Less Wrong

Simple CoC-based programming language

Wu

An expression oriented, gradually typed and mission-critical programming language.

XL

A super-flexible language based entirely on tree rewrites

Theseus

Functional programming language with fully reversible computation

Finkel

Finkel is a statically typed, purely functional, non-strict-by-default dialect of the Lisp programming language. Or in other words, Haskell in S-expression.

Plasma

A statically typed, side-effect free single assignment language and will have functional programming and concurrent programming features.

Oakc

A portable programming language with an compact intermediate representation

Unison

Unison is a modern, statically-typed purely functional language, similar to Haskell, but with the ability to describe entire distributed systems with a single program.

SuperCollider

An audio server, programming language, and IDE for sound synthesis and algorithmic composition.

Myia

Myia is a new differentiable programming language. It aims to support large scale high performance computations (e.g. linear algebra) and their gradients.

Fizz

fizz is an experimental language and runtime environment for the exploration of cognitive architectures and combined Machine Learning (ML) and Machine Reasoning (MR) solutions.

Passerine

Passerine is a small extensible programming language designed for concise expression with little code. Passerine has roots in Scheme and ML-flavored languages: at its core, it’s lambda-calculus with pattern-matching, structural ADTs, effect-based concurrency, and syntactic extension. The goal of Passerine is to create a tiny language core that can be extended in a composable manner, for use as a functional scripting language embeddable in other applications. Currently in early stages of development, Passerine has a 3 compilers at varying stages of completeness: one written in Rust, another D, and one in Passerine itself. It can target Wasm, its own compact bytecode format, D-lang, JS, and native code, among other formats.

Neon

The primary goal of Neon is to find out whether a useful programming language can avoid some of the common pitfalls that beginners frequently encounter in other languages.

Rockstar

Rockstar is a dynamically typed computer programming language, designed for creating programs that are also song lyrics. Rockstar is heavily influenced by the lyrical conventions of 1980s hard rock and power ballads.

V

Simple, fast, safe, compiled. For developing maintainable software.

Battlestar

Battlestar provides a different syntax for programming in Assembly, with support for inline C. The goal is to let users create tiny executables and possibly write 4k and 64k demoscene demos. It’s written for fun and for the educational process. 64-bit x86 Linux, 32-bit x86 Linux and 16-bit x86 DOS are supported.

BQN

An APL-like language that tries to put APL on a firmer footing.

Tooling

NanoCaml

TILT

TILT is a compiler for Standard ML that uses Typed Intermediate Languages.

Typer Piper

The Typer Piper: Automating Data Structure Transformations Through Type Chaining

Zod

Zod is a TypeScript-first schema declaration and validation library. I’m using the term “schema” to broadly refer to any data type/structure, from a simple string to a complex nested object.

Matechs Effect

A Fully-fledged functional effect system for typescript with a rich standard library.

Effects as Session

Formalised embedding of an imperative language with effect system into session-typed pi calculus.

Singletons

Fake dependent types in Haskell using singletons

Tamago

A safe, extensible, layered programming language that runs on top of JavaScript

Asterius

Asterius is a Haskell to WebAssembly compiler based on GHC.

Compilations

Awesome Lisp Languages

Catalog of Lisp languages

List of structural editors

More Repositories

1

category-theory-resources

Resources for learning Category Theory for an enthusiast
570
star
2

formal-systems-in-biology

Application of formal systems to model biological systems
459
star
3

models-of-interaction

Catalogue of models of interaction. Part of the trilogy on models of computers/interaction/computation
326
star
4

Illustrated-Primers

Books that makes heavy use of visuals for scientific communication
143
star
5

networked-notebooks

Hyperlinked notebooks
140
star
6

notation

Repo to track the evolution of notation in arts and sciences
133
star
7

morphisms-of-computational-structures

A visual catalogue + story of morphisms displayed across computational structures.
117
star
8

Visual-Math-Tools

Catalog of Visual Math Tools
88
star
9

lambda-calculus-visualizations

Catalog of visual lambda calculi
83
star
10

knowledge-atlases

Catalogue of portals that maps out roadmap for self learners
76
star
11

history-of-logic

A repo that keeps track of the history of logic. It chronicles the eminent personalities, schools of thought, ideas of each epoch.
54
star
12

history-of-mathematics

Catalogue of the hisotry of Mathematics
32
star
13

htdp

How to design programs
Racket
30
star
14

typefaces

Catalog of open source typefaces
27
star
15

nature-of-thought

Catalogue on the nature and bounds of thought
26
star
16

probability-statistics-reading-list

Reading list for Probability and Statistics
21
star
17

learning-topology

Resources for making sense of topology and its concepts
18
star
18

lambda-calculus

Guide elucidating Lambda Calculus
15
star
19

learn-cs

A curation of standalone books that helps a beginner to learn computer science from first principles.
13
star
20

the-little-schemer

Summary of working through the exercises of the Little Schemer
Racket
11
star
21

history-of-lambda-calculus

Survey on materials that touch on the history of Lambda Calculus
10
star
22

toe-atlas

A catalogue of theories of everything
9
star
23

algebra-books

A catalog of algebra books for self learning
8
star
24

history-of-computers

Exploring history of CS
8
star
25

database-readings

A collection of resources to construct databases with an emphasis on performing abstract/combinatorial searches
8
star
26

godel-reading-list

A reading list to understand Gödel’s Proof
5
star
27

funbox

ES6 Functional Programming Toolbox
JavaScript
5
star
28

history-of-type-theory

A catalogue for keeping track of the history of types as they evolved
4
star
29

models-of-computation

Models of Computation
4
star
30

history-of-philosophy

Catalog of history of Philosophy
4
star
31

formal-languages-reading-list

Reading list for formal languages
3
star
32

Peirce

Review of Pierce’s work with brief comments on them.
3
star
33

hidden-gems-in-computer-science

Computer science papers that are hidden gems
3
star
34

linguistics-reading

A list of resources for reading on Linguistics
3
star
35

philosophy-of-mathematics

Readings on the philosophy of Mathematics
3
star
36

Seminal-Papers-in-Computer-Science

A Catalogue of Seminal Papers in Computer Science
3
star
37

books-on-computation

A reading list that attempts to cover the gamut of story of computation
2
star
38

metacompilers

Learning Metacompilers
2
star
39

ai-design

What artificial intelligence has to offer the design field
2
star
40

yantra

Declarative Vector Graphics Library
JavaScript
2
star
41

great-ideas-in-computer-science

A collection of great ideas in Computer Science
2
star
42

syntax-semantics-pragmatics

A collection of reads on syntax, semantics, and pragmatics of languages
2
star
43

Ancient-Languages

Books for learning ancient languages
2
star
44

history-of-typefaces

Catalogue of the history of typefaces
2
star
45

use-of-maths-in-programming

Case studies where mathematics becomes useful in programming
2
star
46

art-of-memory

Resources from Frances A. Yates book Art of Memory
1
star
47

math-gifs

Learn Math with GIFs
1
star
48

reading-chomsky

Notes on papers written by Chomsky
1
star
49

visual-group-theory

Exercises and notes from Nathan Carter’s Visual Group Theory
1
star
50

talks-by-women-in-logic

Talks by Women in Logic
JavaScript
1
star
51

prathyvsh

Bio
1
star
52

history-through-cinema

Figure out history through cinema
1
star
53

fp-books

Books to learn functional programming thoroughly
1
star
54

zahar

A data driven view builder library in Javascript
JavaScript
1
star
55

theories-of-unification

A collection of theories that attempt to unify their subject of study under a novel framework
1
star
56

history-of-programming-languages

Repo to track the history of programming languages
1
star
57

history-of-geometry

Notes on the history of geometry
1
star
58

great-works-in-their-original-languages

A catalogue of great works I want to read in their original languages
1
star
59

web-assembly

Learning WebAssembly
1
star