|
||
---|---|---|
.LICENSE.~undo-tree~ | ||
.README.md.~undo-tree~ | ||
.SPECIFICATION.MD.~undo-tree~ | ||
LICENSE | ||
README.md | ||
SPECIFICATION.MD |
README.md
ghun Programming Language
What is ghun?
ghun is an esoteric programming language that is trying way too hard to be a serious programming language.
'ghun' (pronounced like "hu-oon" with the hu being in the back of the throat like in 'chutzpa') is a verb in Klingon which means "program", in the context of "to program a computer".
It is inspired by both esoteric programming languages, like var'aq, uiua, and ZOMBIE and serious programming languages like C, Perl, Common Lisp, Lua, Rust, Go, Odin, Zig, Elixir, and Haskell.
What are the features in ghun?
In general the paradigms are designed to be: var'aq-like, Interpreted, JIT, Distributed, Concurrent
See the SPECIFICATION document for more info.
What is the purpose of this language?
For the most part though, most modern languages are pretty much the same syntactically, they just differ for their paradigms and use case. This makes them a super dry and not very fun to program in.
Conversely we have esolangs which are fun, but usually useless (e.g. turing tarpits) or not implemented in a way that you are able to seriously program projects in it.
Most serious languages do not take the time to think outside the box, or add elements to make the language look good or be fun to program in.
There are of course some exceptions to this. like in Odin you can use emoji as variables, but that is uncommon.
All of the others were esoteric languages or languages designed to be used for games (e.g. golfing languages, video game specific languages such as TIS100, and the like).
Lets get back on track though as to why this language.
As far as my personal goals go they are:
- I wanted to learn about compiler design and create one
- Mess around with some old, obscure, or just plain weird language design ideas
- Combine these ideas into a language that would be both fun and able to be used for real projects; probably more along the lines of scripting, or small scale programs, but real projects nonetheless
- Take all the things I liked from some languages and throw them together to see what happens
The language goals are:
- make the language fun to program in.
- make it simple to learn (the english interpreter at least)
- maximize code logic density, i.e. a small amount of code should represent a complex amount of logic
- portability/embedability, i.e. should be easy to port/embed into new hardware and implement with software. I wanted it to be very Lua This is why I went with a Interpreted-JIT style over compiled.
- follow the design from var'aq, but in a more "c to zig" kind of way than a "c to c++" kind of way.
The idea is using an iterative process, that being as I find new programming projects to do; the language will inevitably fail to be able to handle that project and so I will have to add new functionality to ghun to handle it.