LDPL
| Paradigm(s) | Imperative, Procedural |
|---|---|
| Designed by | Martín del Río |
| Appeared in | 2019 |
| Type system | static, strong |
| Memory system | variable-based |
| Dimensions | one-dimensional |
| Computational class | Turing complete |
| Reference implementation | LDPL |
| Influenced by | COBOL |
| File extension(s) | .ldpl, .lsc |
LDPL (or "Lartu's Definitive Programming Language") is a compiled English-like language designed from the ground up to be excessively expressive, fast, readable and easy to learn. It is imperative and procedural. It mimics English in the likeness of older languages like COBOL. It's highly portable and runs on a plethora of different architectures and operating systems including AMD-64, ARMv8 and PowerPC Linux and Mac OS X. It even supports UTF-8 out of the box.
History

The LDPL project was initially started by Martín del Río in 2018 with a group of colleagues, but after a few days of design by committee, and due to lack of interest, the project was abandoned. Martín decided he wanted to write a programming language and so picked up the project and created a syntax loosely based on that of COBOL. The original iteration of LDPL, Mauifish was released in the end of that year.
In 2019 Martín realized the language was lacking any sort of documentation and thus, in an effort to both document the language and standardize it, he wrote the LDPL 19 Standard, giving birth to LDPL as it is today.
LDPL was originally is a relatively slow interpreted language with no scoping, objects or functions and with data structures limited to just numbers, strings and lists of these types called VECTORs. In an effort to make the language more usable, however, the compiler was modified to transpilation LDPL code to C++. It thus became a compiled language.
Examples
Hello, World!
PROCEDURE:
DISPLAY "Hello World!" CRLF
Just like COBOL. The upper case characters are optional
Every even number from 0 to 20
This program prints out all the even numbers from 20 to 0:
DATA:
it IS NUMBER
mod IS NUMBER
PROCEDURE:
STORE 20 IN it
WHILE it IS GREATER THAN 0 DO
MODULO it BY 2 IN mod
IF mod IS EQUAL TO 0 THEN
DISPLAY it " is even!" CRLF
END IF
SUBTRACT 1 FROM it IN it
REPEAT
String Splitting
This program takes a string and a delimiter and splits the string using the given delimiter:
DATA:
explode/words is text vector
explode/index is number
explode/string is text
explode/length is number
explode/stringlength is number
explode/current-token is text
explode/char is text
explode/separator is text
i is number
PROCEDURE:
# Ask for a sentence
display "Enter a sentence: "
accept explode/string
# Declare explode Subprocedure
# Splits a text into a text vector by a certain delimiter
# Input parameters:
# - explode/string: the string to explode (destroyed)
# - explode/separator: the character used to separate the string (preserved)
# Output parameters:
# - explode/words: vector of splitted words
# - explode/length: length of explode/words
sub-procedure explode
join explode/string and explode/separator in explode/string
store length of explode/string in explode/stringlength
store 0 in explode/index
store 0 in explode/length
store "" in explode/current-token
while explode/index is less than explode/stringlength do
get character at explode/index from explode/string in explode/char
if explode/char is equal to explode/separator then
store explode/current-token in explode/words:explode/length
add explode/length and 1 in explode/length
store "" in explode/current-token
else
join explode/current-token and explode/char in explode/current-token
end if
add explode/index and 1 in explode/index
repeat
subtract 1 from explode/length in explode/length
end sub-procedure
# Separate the entered string
store " " in explode/separator
call sub-procedure explode
while i is less than or equal to explode/length do
display explode/words:i crlf
add 1 and i in i
repeat
External resources
- LDPL Official Website contains examples, a guide and the standard documentation.
- r/LDPL official language subreddit.