-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathREADME
More file actions
40 lines (32 loc) · 1.8 KB
/
README
File metadata and controls
40 lines (32 loc) · 1.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Not Another Programming Language
================================
What is it?
-----------
Not Another Programming Language (NAPL) is a simple, high level domain specific
language for defining pure functions, with a platform independant binary format
for sending functions between systems. NAPL is not and does not attempt to be
a general purpose programming language - it is intended to be used where
business logic needs to be communicated between multiple systems, possibly
running on different platforms.
But, what is it for?
--------------------
NAPL is intended to be used as an alternative to RPC to reduce resource usage
and boost performance. For example, instead of a web browser sending an AJAX
request back to a server to perform sorting and filtering operations, the server
could have sent a NAPL function, generated on whatever platform the server
happens to be using, that will safely be evaluated locally in the web browser.
The nature of NAPL makes it safe to use even between partially trusted systems.
Functions defined in NAPL are guaranteed to be pure functions that cannot read
or affect state when evaluated. NAPL functions are also guaranteed
to terminate with a result in a timely manner, as it intentionally does not
include generic looping or recursion constructs. This makes it safe to use even
in single threaded environments such as JavaScript, as well as performance
critical applications such as servers.
What's in the box?
------------------
NAPL includes an API for defining functions, a compact binary serialization
format based on Google Protocol Buffers for sending functions across networks
or persist for later use, and a compiler for converting NAPL functions to
efficient platform native functions.
NAPL is currently implemented for the .NET platform only, with plans to support
Java and JavaScript.