Learning from the past can help you look into the future.
As my post 5 old Programming Languages you should know about was successful so I decided to keep going...
This time I want to share some old programming languages that might not be so "well known" but that are still important pieces of the history of programming...
To illustrate how those programming languages work, we're to use a very basic app called "Fibonacci List" which will simply output a list of requested Fibonacci numbers, for example if we ask for 5, it should return 0, 1, 1, 2, 3, 5.
We used before, so why not used it here again...
We're not going in order this time...
Miranda (1985)
Lazy, purely functional programming language.
fib :: (num, num, num) -> [char]
fib(num,a,b) = show(a+b) ++ " " ++
fib((num - 1),(a+b),a), if(a > 0 & num > 1)
= show(a) ++ " " ++ show(b) ++
" " ++ show(a+b) ++ " " ++
fib((num - 1),(a+b),b), if(a == 0)
= [], otherwise
showFib :: num -> [char]
showFib num = "\n" ++ fib(num, 0, 1) ++ "\n"
Let's see...Miranda doesn't have variables, arrays, tables or dictionaries...so lists are your best friends...doesn't have loops so recursion is a must...
It was a major inspiration for Haskell.
Compilers are available here.
To run it we do...
mira name_of_file.m
And then call the main function with its corresponding parameter
showFib 5
You can read my Miranda introduction here.
Rexx (Restructured Extended Executor - 1979)
Multiparadigm, procedural, structured and interpreted programming language, but also scripting and macro.
It is considered the very first Scripting Language.
say "Enter a number: "
pull number .
say ""
call fibo number, 0, 1
say
exit 0
if a = 0 then
do
a_b = a + b
call charout, (a b a_b)
call charout, " "
call fibo num - 1, a + b, b
end
else if a > 0 & num > 1 then
do
a_b = a + b
call charout, a_b
call charout, " "
call fibo num - 1, a + b, a
end
return
There are no arrays in Rexx...we call them compounds. We have functions and subroutines, as well as some sort of stack. It's actually pretty fun to use...
On Linux, we can get the compiler as easy as doing this...
sudo apt-get install -y regina-rexx
For other platforms, go here.
To run we simply do this
regina name_of_file.rexx
You can read my Rexx introduction here.
Icon (1977)
Very high-level programming language featuring goal-directed execution.
procedure fib(num, a, b)
local result
result := ""
if a > 0 & num > 1 then
result := result || " " || (a + b) ||
fib(num - 1, a + b, a)
else if a = 0 then
result := a || " " || b || " " ||
(a + b) || fib(num - 1, a + b, b)
return result
end
procedure main()
local num
write("Enter a number: ")
num := read()
write(" ")
write(fib(num, 0, 1))
end
There's not data type declaration...as it changes according to its value. An operations can success or fail...which prevents crashes. Icon doesn't have arrays, but lists, records and tables and list can be composed of different data types.
You can download Icon from here.
And follow these instructions to compile it.
To run our app we simply need to call it like this
icon name_of_file.icn
You can read my Icon introduction here.
Prolog (Programming Logic - 1972)
General purpose logic programming language associated with artificial intelligence and computational linguistics.
fibo(NUM,A,B,[H|T]) :- (NUM > 1 -> H is A + B, X is NUM - 1,
(A =:= 0 -> fibo(X,H,B,T); fibo(X,H,A,T))).
fibo(_,_,_,[]).
fibonacci(NUM,R) :- fibo(NUM,0,1,X), !, append([0,1], X, R).
Prolog is declarative and the program logic is expressed in terms of relations, represented as facts and rules. Recursion is a key component of Prolog.
For this I'm using swi-prolog because it's free and widely used.
To run this example, simply do this
swipl
And the call our filename like this...
[fibonacci].
Then, call the main function like this...
fibonacci(5,X).
You can read my Prolog introduction here.
And least but not last...
Forth (1970)
Imperative stack-based programming language and programming environment.
: FIBO
1 SWAP
0 DUP .
?DO
DUP . OVER OVER + ROT DROP
LOOP
DROP DEPTH
DEPTH 2 = IF 2DROP 0 THEN ;
As we manipulate the stack, we use LIFO (Last In, First Out). There's a lot of functions to help us with the stack, like duplicate, rotate, swap and so on...
If you're using Linux, simply do this...
sudo apt-get install pforth
If you're using Windows then go here.
In order to run this example simply call
pforth
And once inside the environment
INCLUDE name_of_file.fth
You can read my Forth introduction here.
That's it...I hope you like this post and next one coming should be 5 not well known Programming Language that are worth exploring.
Blag.
Top comments (2)
You misspelled major in the miranda section
Thanks! I fix it 😅 Being a Spanish speaker plays bad on me sometimes ☺️