61 lines
4.0 KiB
Markdown
61 lines
4.0 KiB
Markdown
# *Iglishmêk* Programming Language
|
|
|
|
## What is *Iglishmêk*?
|
|
|
|
*Iglishmêk* is the hand gesture language used by the dwarves in Tolkien's Legendarium
|
|
|
|
## Ok sure, but what is the *Iglishmêk* programming language?
|
|
|
|
*Iglishmêk* is an esoteric programming language that is trying really hard to be a serious programming language.
|
|
|
|
It is inspired by both serious programming languages like C, C#, Lisp, Lua, Rust, Go, Odin, Zig, Elixir, and Haskell; but also [esoteric programming languages](https://esolangs.org/wiki/Esoteric_programming_language), like [var'aq](https://web.archive.org/web/20091026213516/http://geocities.com/connorbd/varaq/) and [ZOMBIE](https://web.archive.org/web/20201125123312/https://www.dangermouse.net/esoteric/zombie.html).
|
|
|
|
## What are the features in *Iglishmêk*?
|
|
|
|
In general the paradigms are designed to be: Esoteric, C-like, Functional, Distributed, Concurrent, JIT
|
|
|
|
Most especially I wanted it to be written in C which is the lingua universalis of most hardware, architectures, operating systems, and so on. So that if anyone for any reason, even if it is for a joke, port Iglishmêk to any known system that has a C compiler for it without *too* much trouble.
|
|
|
|
See the [SPECIFICATION](./SPECIFICATION.MD) document for more info.
|
|
|
|
## What is the purpose of this language?
|
|
|
|
Its a pretty common question for people in computer science and programming related fields "what is your favorite programming language", and for me it has changed a lot over the years. I got to the point where I would say I don't really have one. I like elements of a lot of languages and don't like other elements from those same languages.
|
|
|
|
There are a lot of languages that have good functionality and implement good ideas, but also many bad things that creep in during the process of development.
|
|
Examples of this could be through lack of resources, backwards compatibility, trading off one feature for another, and many others.
|
|
|
|
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. Python has dynamic whitespace, which although I dislike personally, has a great esthetic and makes the code look cleaner. Or like in Odin you can use emoji as variables.
|
|
|
|
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:
|
|
1. I wanted to learn about compiler design and create one
|
|
2. Mess around with some old, obscure, or just plain weird language design ideas
|
|
3. 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
|
|
4. Take all the things I liked from some languages and throw them together to see what happens
|
|
|
|
|
|
The language goals are:
|
|
1. maximize code logic density, i.e. a small amount of code should represent a complex amount of logic
|
|
2. portability/embedability, i.e. should be easy to port/embed into new hardware and implement with software
|
|
3.
|
|
|
|
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 *Iglishmêk* to handle it.
|
|
|
|
I should say that I would not expect *Iglishmêk* to do much, but it will do something
|
|
|
|
## Thanks
|
|
|
|
[Crafting Interpreters](http://www.craftinginterpreters.com/) Inspiration for
|
|
|
|
Compilers Principles, Techniques, & Tools (The Dragon Book)
|