diff options
Diffstat (limited to 'doc')
| -rw-r--r-- | doc/paradigms.md | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/doc/paradigms.md b/doc/paradigms.md index c20cf289..37189854 100644 --- a/doc/paradigms.md +++ b/doc/paradigms.md @@ -30,7 +30,7 @@ BQN uses [namespaces](namespace.md) as **modules** to organize code; the only po BQN supports **object-oriented** programming [only incidentally](oop.md). This is not as bad as it sounds, and programming with objects in BQN can often feel pretty similar to other object-based languages. The main differences are that objects don't have a `this` property to pass themselves into functions, and there's no built-in way to find the class of an object. There is also no support for inheritance, which is not unheard of in the object-oriented world. -BQN does not support **metaprogramming** such as macros or reflection, except with very crude techniques like `•Eval`. Functions describe computations and can easily be written, passed around, and applied: they can fill in for any use of macros or generics in a C-like language. If desired, it's easy to use lists as S-expressions to form structures that can be easily manipulated and also evaluated—roughly, embedding Lisp in BQN. +BQN does not support **metaprogramming** such as macros or reflection, except with very crude techniques like `•BQN` to evaluate a string. Functions describe computations and can easily be written, passed around, and applied: they can fill in for any use of macros or generics in a C-like language. If desired, it's easy to use lists as S-expressions to form structures that can be manipulated and also evaluated—roughly, embedding Lisp in BQN. BQN does not yet have support for **concurrent** programming. It's likely that its strict approach to lexical scoping and encapsulation make it a good fit for concurrent execution, but designing such a system is not a priority. In contrast, array operations are ideal for **parallel** computing, including SIMD or GPU computation. To enable highly-parallel algorithms, the implementation must evaluate primitives (or combinations) using these algorithms, and the programmer must use primitives that have been implemented in this way. It would be possible to define a subset of BQN that restricts the programmer to code with an efficient parallel implementation, but BQN itself does not have any such restrictions. |
