Skip to content
/ ppm Public

Plankalkuel Package Manager - Because even 1945 deserves nice things

Notifications You must be signed in to change notification settings

Zaneham/ppm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ppm - Plankalkuel Package Manager

"Die Rechenmaschine soll dem Menschen das Denken nicht abnehmen, sondern ihm dabei helfen." ("The computer should not take over thinking from humans, but rather help them with it.")

  • Konrad Zuse, 1945

A package manager for Plankalkuel, the world's first high-level programming language, designed by Konrad Zuse between 1942-1945. In a bunker. During a war.

Because even 1945 deserves nice things.

What is Plankalkuel?

Plankalkuel ("Plan Calculus") was designed by Konrad Zuse while the Allies were bombing his country. Most people would have been hiding. Zuse was inventing computer science. Absolute legend.

The language features:

  • Data types (before most languages had types at all)
  • Two-dimensional notation (because one dimension is for quitters)
  • Seven different loop variants (because he wanted options)
  • Support for chess programs (priorities)

It was designed in 1945, published in 1972, and first implemented in 1998. This package manager is here to make sure the ecosystem is ready for the 2045 centenary revival.

Why Does This Exist?

  1. Every language deserves a package manager
  2. cargo was taken
  3. Historical preservation is a perfectly normal hobby
  4. Someone asked "but how do I share Plankalkuel code?" and now here we are
  5. Writing package managers is apparently less concerning than writing emulators for missile guidance computers

Installation

opam install ppm

Or build from source, like Zuse intended (he was all about building from scratch):

git clone https://github.com/Zaneham/ppm
cd ppm
dune build
dune install

# Contemplate that you just installed a package manager
# for a language designed before the atomic bomb was used

Requirements

  • OCaml 4.14+
  • A functioning sense of irony
  • Deep appreciation for German engineering

Commands

Commands use German for historical authenticity. Your terminal will feel like 1945, minus the existential dread.

Command German What It Does
ppm neu <name> neu = new Create a new project
ppm build - Build the project (German: bauen)
ppm test - Run tests (German: pruefen)
ppm info - Show package information
ppm fetch - Clone git dependencies

Quick Start

# Create a new project
$ ppm neu schachspiel
Erstellt: Projekt 'schachspiel'
  schachspiel/
  |- zuse.toml
  |- src/
  |  |- haupt.pk
  |- lib/
  |- test/

# Build it
$ cd schachspiel
$ ppm build
Baue: schachspiel v0.1.0
  Kompiliere: haupt.pk
Fertig!

"Fertig" means "done". You're learning German. Zuse would be proud.

Project Structure

mein-projekt/
+-- zuse.toml          # Package manifest (named after the man himself)
+-- src/
|   +-- haupt.pk       # Main source file ("haupt" = main)
+-- lib/
|   +-- *.pk           # Library modules
+-- deps/              # Git dependencies land here
+-- test/
    +-- test_*.pk      # Test files

zuse.toml

The package manifest. TOML format because XML hadn't been invented yet and we're not heathens.

[package]
name = "schachspiel"
version = "1.0.0"
author = "Konrad Zuse"
license = "public-domain"
description = "Schachspiel in Plankalkuel"

[dependencies]
# Simple version dependency
grundlagen = "0.1.0"

# Git dependency (for when someone finally hosts Plankalkuel packages)
mathematik = { version = "0.2.0", git = "https://github.com/example/mathematik" }

Included Packages

ppm ships with a curated selection of fine Plankalkuel libraries, written in the authentic style:

grundlagen (Foundation)

The standard library. Identity functions, min/max, absolute value. The basics. Like stdlib but with more umlauts.

mathematik (Mathematics)

Factorial, fibonacci, GCD, prime checking. Everything you need for serious numerical computation on your 1940s relay computer.

logik (Logic)

Boolean operations: AND, OR, NOT, XOR, NAND, NOR, IMPLIES. For when your Plankalkuel program needs to make decisions.

All packages feature authentic German function names because we take historical accuracy very seriously here.

Fun Facts

  • Plankalkuel was designed 3 years before ENIAC, the computer often credited as "first"
  • Zuse built the Z3 (first programmable computer) in his parents' apartment
  • The language includes notation for chess piece positions because Zuse wrote a chess program as one of his first applications
  • This package manager was written in OCaml, a language that's 51 years younger than Plankalkuel
  • If you're reading this README, you're one of approximately 12 people on Earth who care about Plankalkuel package management

Roadmap

  • Actually invoke a Plankalkuel compiler (minor detail)
  • Registry server (for when there are more than 3 packages)
  • Lock files (1945 didn't have supply chain attacks)
  • Version resolution (semver was 60 years away)
  • Documentation generation (assuming anyone writes docs)

Related Projects

Project Description Level of Concerning
plankalkul-compiler The actual compiler Moderate
plankalkul-ide VS Code extension with 2D editor High
jovial JOVIAL J73 compiler (for the US Air Force folks) Yes

Technical Details

+----------------------------------------------------------+
|                    ppm Architecture                       |
+----------------------------------------------------------+
|  zuse.toml                                                |
|      |                                                    |
|  Manifest Parser (hand-rolled TOML-ish)                   |
|      |                                                    |
|  Commands                                                 |
|      +-- neu: Create project from template                |
|      +-- build: Find .pk files, pretend to compile        |
|      +-- test: Find test files, report they pass          |
|      +-- fetch: git clone dependencies                    |
|      |                                                    |
|  Output: Green German text that makes you feel productive |
+----------------------------------------------------------+

Written in OCaml because:

  1. Pattern matching is nice
  2. The type system catches my mistakes
  3. It's a functional language for managing a language from before functional programming was cool
  4. I already had OCaml installed from the compiler work

Contributing

Found a bug? Want to add a feature? Have strong opinions about Plankalkuel semantics?

zanehambly@gmail.com

Located in New Zealand, where it's already tomorrow and the sheep continue to outnumber the Plankalkuel enthusiasts.

License

MIT

Use it for whatever you want. If you're somehow making money from Plankalkuel package management, I want to hear your story.


"Eines Tages werden Computer in der Lage sein, Schach zu spielen." ("One day, computers will be able to play chess.") - What Zuse was probably thinking while designing this language

Built with OCaml, caffeine, and a deep conviction that computing history matters.

About

Plankalkuel Package Manager - Because even 1945 deserves nice things

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published