Home

Awesome

<p id="begin" align="center"> <img width="60%" src="https://user-images.githubusercontent.com/16124324/174399599-462c8ab7-e76d-4ea9-9589-022092ff0074.png#gh-dark-mode-only" alt="Banner" /> <img width="60%" src="https://user-images.githubusercontent.com/16124324/174399545-b753a93e-3b5e-4ef5-8c16-0d7e4f012218.png#gh-light-mode-only" alt="Banner" /> <br> <a href="https://nightly.link/iAmGio/pikt/workflows/maven/master/pikt.zip"> <img width="35%" src="https://user-images.githubusercontent.com/16124324/174477531-eff55703-63df-474a-a617-a6e51293fb1c.svg" alt="Download"> </a> </p> <br>

Ah a language to code by while listening to Pink Floyd - a guy from Reddit

This looks like it belongs on the list of those things I totally want to do if I ever become immortal - another guy from Reddit


<br>

Pikt is a pixel-based, dynamically typed, Turing complete esoteric programming language able to generate fast and lightweight programs out of aesthetically pleasant image sources.
Indeed, Pikt's most interesting feature is flexibility: every keyword, statement, function and operator is linked to one - or more - color, easily customizable via color schemes.

<!--suppress HtmlDeprecatedAttribute --> <p align="center"> <br> <a href="https://www.youtube.com/watch?v=Wr7RJqqrw7s"> <img width="55%" src="https://i.imgur.com/rYscSbe.png" alt="Video" /><br> </a> <br> </p>

Pikt compiles executables via the Kotlin compiler, therefore compilation for both JVM and native* targets is available, along with runtime interpretation.

Want to create your first Pikt program? Check out the wiki!

<!--suppress HtmlDeprecatedAttribute --> <p align="center"> <br> <a href="https://github.com/iAmGio/pikt/wiki/Fibonacci-breakdown"> <img width="130" src="https://i.imgur.com/lytDoDv.png" alt="Fibonacci" /><br> </a> <i>A high-performance Fibonacci sequence algorithm.</i> <br><br> <a href="https://github.com/iAmGio/pikt/wiki/Prime-numbers-breakdown"> <img width="130" src="https://i.imgur.com/bP5fuyc.png" alt="Prime numbers" /><br> </a> <i>A prime numbers algorithm.</i> <br><br> <a href="https://github.com/iAmGio/pikt/wiki/FizzBuzz-breakdown"> <img width="170" src="https://i.imgur.com/PVWHDDs.png" alt="FizzBuzz" /><br> </a> <i>A FizzBuzz algorithm.</i> <br><br> <a href="https://github.com/iAmGio/pikt/wiki/Insertion-sort-breakdown"> <img width="200" src="https://i.imgur.com/2zNX4eT.png" alt="Insertion sort" /><br> </a> <i>An insertion sort algorithm.</i> <br><br> <a href="https://github.com/iAmGio/pikt/wiki/String-reverser-breakdown"> <img width="130" src="https://i.imgur.com/4Kz9DsI.png" alt="Reverser" /><br></a> <i>A string reverser.</i> <br><br> <a href="https://github.com/iAmGio/pikt/wiki/Tree-breakdown"> <img width="130" src="https://i.imgur.com/aKg4I59.png" alt="Tree" /><br></a> <i>A tree that prints "A tree!".</i> </p>

These examples take advantage of custom color schemes.
Click on the examples for a breakdown/explanation.

<br>

How does Pikt work?

<br>

Table of contents

Properties

The following properties define parameters needed by Pikt to run.
Syntax: java -Dproperty=value -jar pikt.jar -arguments.

Settings arguments

The following arguments enable settings that affect Pikt's behavior.

Command arguments

The following arguments execute tasks and exit when completed.
These are handy shortcuts that replace several manual actions, such as image transformations, while being unrelated to code generation and compilation.

More in-depth information about image transformation commands can be found here.

Building

The downloadable archive is already built off the latest GitHub commit. If you wish to build it yourself from source simply run mvn clean install.

Tip: setting your run configuration to execute mvn clean install -pl stdlib -am compiles the standard library before launching Pikt, in case you need to make frequent updates to it.
If you are using IntelliJ IDEA consider importing configuration templates from the runConfigurations folder.

Roadmap

Code

Generation

* Native support is limited due to the lack of Kotlin/Native libraries and is being temporarily discontinued. Bringing it back is planned in the long term.