/tinyprograms

Tiny Programs

Primary LanguagePythonMIT LicenseMIT

Tiny Programs

Learning a new language can be hard. Developers go to "Hello World" but this is so trivial a program so as to be almost useless.

This project is a collection of tiny programs that may help you learn a language. It is similar to Rosetta Code except that all programs here will be implementations and not library calls.

Programs

  • Brainfuck: A complete Brainfuck implementation
  • Lisp: A tree-walking s-expression interpreter capable of running a fibonacci function
  • Potential:
    • JQ: A tiny JQ clone
    • UUID: A UUIDv4 generator
    • HTTP: An HTTP server from UNIX sockets
    • RBTree: A red-black tree

Contributing an implementation

A few rules:

  1. Keep it simple.
  2. Do not copy any existing code. Write the program from scratch. See rule 1.
  3. Use existing implementations in this project as guidelines. Use the same or similar algorithms and data structures. See rule 1.
  4. Avoid programming patterns and object-oriented design and functional programming for the sake of patterns and OOP and FP. See rule 1.
  5. Avoid unnecessarily complex syntax, even if the complex syntax is more idiomatic in the language. See rule 1.
  6. Copy program.yaml and implement the prepare and run settings so that your implementation is automatically tested in Github Actions.

Ultimately, Phil is the BDFL and reserves the right to be picky. :)

Call for languages

  • Ada
  • FreePascal
  • FreeBASIC
  • R
  • Octave
  • Common Lisp
  • Swift
  • Kotlin
  • Scala
  • Clojure
  • Lua
  • C++
  • D
  • Standard ML
  • OCaml