Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/rusini/manool
Fairly readable homoiconic language with primarily value (non-referential) semantics that balances the programmer's productivity with scalability
https://github.com/rusini/manool
compiler development dynamically-typed functional functional-core functional-language functional-programming general-purpose homoiconic imperative imperative-programming interpreter multi-paradigm practical procedural procedural-programming programming programming-language software-development strongly-typed
Last synced: 2 months ago
JSON representation
Fairly readable homoiconic language with primarily value (non-referential) semantics that balances the programmer's productivity with scalability
- Host: GitHub
- URL: https://github.com/rusini/manool
- Owner: rusini
- License: gpl-3.0
- Created: 2019-07-21T02:50:01.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2024-06-10T01:44:27.000Z (8 months ago)
- Last Synced: 2024-08-01T19:55:39.182Z (6 months ago)
- Topics: compiler, development, dynamically-typed, functional, functional-core, functional-language, functional-programming, general-purpose, homoiconic, imperative, imperative-programming, interpreter, multi-paradigm, practical, procedural, procedural-programming, programming, programming-language, software-development, strongly-typed
- Language: C
- Homepage: https://manool.org
- Size: 1.23 MB
- Stars: 61
- Watchers: 5
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
- Authors: AUTHORS.md
Awesome Lists containing this project
- awesome-programming-languages - MANOOL - MANOOL is a programming language designed with an idea to maximize the expressive power / implementation complexity ratio. (Uncategorized / Uncategorized)
README
MANOOL v0.6.0
=====================================================================================================**MANOOL is meant to make exploratory programming safer and faster.**
Some programming tasks are common and predictable from the project management perspective, but often, even enterprise information systems (especially in the
area of startups) involve some innovation and exploratory programming. Imagine you have such a task at hand. Whenever this happens you have two options:
1. use an *implementation-level* programming language, such as C, C++, Java, or maybe Rust (if you want to try a more recent approach) or
2. use a language more suitable for *throw-away* programming, such as PHP, Python, Ruby, JavaScript, or even Scheme.In the former case, you eventually get stuck with your coding -- trying to conceive some poorly understood algorithms, deciding which data types to use and how
to get around seemingly arbitrary constraints for composite data types, devising resource management policies, and dealing with confusing program logic.Then you resort to the second option, in which case you also have to conceive poorly understood algorithms, deal with confusing program logic, and occasionally
think about how to circumvent composite data type constraints, but most probably you end up familiarized yourself with the problem domain and come to a working
prototype.You show your solution (which mostly looks nice) to the managers, and suddenly they react: "OK, let's clear up the bugs; tomorrow we deploy it in production!".
Then disaster falls on you; after some time of production use, it turns out that
* your code is not scalable to a grown user base and hence larger workload, or the solution is simply slow according to your end users,
* your code has mysterious and hard to localize bugs, and of course
* the program logic itself still looks confusing and complex.This happens because paying attention to those details would imply an undue cognitive burden at the early stage of development. And unlike your managers you
already knew that: a major rewrite is unavoidable, now in a "real" implementation-level language -- does this sound familiar?While MANOOL is a general-purpose programming language, it is specifically designed to solve the above problem. It may also help you to come to a working
prototype faster and then gradually refactor your code up to a production-quality state instead of rewriting the code entirely from scratch.