You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: INSTALL.md
+9-9Lines changed: 9 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,7 +7,7 @@ General Instructions
7
7
Try, e.g.:
8
8
9
9
make
10
-
./mnl <(echo $'{{extern "manool.org.18/std/0.5/all"} in Out.WriteLine["Hello, world!"]}')
10
+
./mnl <(echo $'{{extern "manool.org.18/std/0.6/all"} in Out.WriteLine["Hello, world!"]}')
11
11
12
12
Note that there is no need to run `./configure` (though, it's harmless), since the set of supported host/target platforms is more homogeneous than it used to be
13
13
for GNU tools, and thus all platform-specific tuning can be done in a simpler way (that is, during actual building). In theory, the source file `config.tcc` is
@@ -17,7 +17,7 @@ To run MANOOL from within a different directory, point the environment variable
<(echo $'{{extern "manool.org.18/std/0.5/all"} in Out.WriteLine["Hello, world!"]}')
20
+
<(echo $'{{extern "manool.org.18/std/0.6/all"} in Out.WriteLine["Hello, world!"]}')
21
21
22
22
The section Confirmed Builds provides more specific instructions together with recommended compilation options for 23 combinations of OSes/ISAs/ABIs/compilers.
23
23
@@ -94,7 +94,7 @@ To install MANOOL after building, try, e.g. (also read about the `PREFIX` makefi
94
94
To run installed MANOOL, point the environment variable `MNL_PATH` to the installed-library directory, e.g.:
95
95
96
96
MNL_PATH=/usr/local/lib/manool mnlexec \
97
-
<(echo $'{{extern "manool.org.18/std/0.5/all"} in Out.WriteLine["Hello, world!"]}')
97
+
<(echo $'{{extern "manool.org.18/std/0.6/all"} in Out.WriteLine["Hello, world!"]}')
98
98
99
99
To get the `mnlexec` invocation synopsis and a short description of all recognized environment variables, just run it without arguments: `mnlexec`.
100
100
@@ -104,7 +104,7 @@ environment):
104
104
105
105
cat >hello && chmod +x hello
106
106
#!/usr/bin/env mnlexec
107
-
{{extern "manool.org.18/std/0.5/all"} in Out.WriteLine["Hello, world!"]}
107
+
{{extern "manool.org.18/std/0.6/all"} in Out.WriteLine["Hello, world!"]}
MANOOL is a programming language with the same purpose as Python, Ruby, PHP, Common Lisp, or Scheme, but it is designed with one central idea in mind:
5
-
* to maximize the *expressive power / implementation complexity* ratio.
4
+
**MANOOL is meant to make exploratory programming safer and faster.**
6
5
7
-
The author's implementation fits in only 10 KLOC in C++, yet it exhibits competitive run-time performance.
6
+
Some programming tasks are common and predictable from the project management perspective, but often, even enterprise information systems (especially in the
7
+
area of startups) involve some innovation and exploratory programming. Imagine you have such task at hand. Whenever this happens you have two options:
8
+
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
9
+
2. use a language more suitable for *throw-away* programming, such as PHP, Python, Ruby, JavaScript, or even Scheme.
8
10
9
-
**For a complete project overview**, please refer to [Introduction to MANOOL](https://manool.org/specification/introduction-to-manool).
11
+
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
12
+
to get around seemingly arbitrary constraints for composite data types, devising resource management policies, and dealing with confusing program logic.
10
13
11
-
"**MA**NOOL is *Not* an Object-Oriented Language!"
14
+
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
15
+
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
16
+
prototype.
17
+
18
+
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!".
19
+
Then disaster falls on you; after some time of production use, it turns out that
20
+
* 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,
21
+
* your code has mysterious and hard to localize bugs, and of course
22
+
* the program logic itself still looks confusing and complex.
23
+
24
+
This happens because paying attention to those details would imply undue cognitive burden at the early stage of development. And unlike your managers you
25
+
already knew that: a major rewrite is unavoidable, now in a "real" implementation-level language -- does this sound familiar?
26
+
27
+
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
28
+
prototype faster and then gradually refactor your code up to a production-quality state instead of rewriting the code entirely from scratch.
// Seed Legacy Random Number Generator /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
0 commit comments