I am writing, in French, a paper about Fortran for the bulletin of the Société Informatique de France (SIF). Of course, the Fortran-lang community will be acknowledged and its projects cited. You can join as a co-author and provide feedback and/or content. I have already written a consequent draft (12 pages in A5 format). It is not an academic paper like “The State of Fortran” but rather a paper for anyone passionate by computer science and programming and interested by the history and future of programming languages.
The deadline is the end of August for the November bulletin (it is already too late for the April bulletin). As it is in French , the impact will be low but the pleasure will be high.
The SIF is a learned society which promotes computer science at the level of education, research and culture of citizens, participates in social debates, etc. In particular, the SIF publishes its bulletin 1024 in spring and autumn, about 150 to 200 A5 pages. The PDF of its articles are in open access under Creative Commons license:
In the latest bulletin, there are for example a paper about Prolog and another one more historical about ALGOL 60.
The bulletin is definitely an interesting reading. Just read the article for Prolog (a language I wanted to try for a long time but never did) and learned things I didn’t know.
When you will have a draft for public reading or feedback, Vincent?
I could create a GitHub repository with the LaTeX code and give access to interested people within a few days. The section of the paper that still needs the more work is the second one where I present some of the new functionalities brought by Fortran>=90 standards, but focusing more specially on parallel programming features.
Concerning Prolog, I had forgotten it was born in Marseille… I had tried to play with it a few decades ago but really only the basics (same level as in the article). Finally, I hope you have enjoyed the Socrate’s illustration!
What a nice opportunity to brush up my language skills . I can offer my feedback as a non-native speaker.
Thanks Arjen, that will be a pleasure, we will combine our linguistic expertise (Fortran / French)! I will contact you when the Github repository is ready.
Same here (I guess that was obvious since my previous post).
mortal(X) :- human(X).
dead(X) :- mortal(X), poisoned(X).
poisoned(X) :- drink(X,Y), poison(Y).
?- dead(Socrates). returns
If you are a human, you are mortal. If you are mortal and poisoned you are dead. If you drink poison you are poisoned. Socrates is human, hemlock is a poison, and Socrates drinks hemlock. Therefore Socrates is mortal and poisoned, therefore he is dead. I’m sure he would like such a programming language.
Limpid syntax! Sad story…
they_know_not_what_they_do(X) :- human(X).
That’s so, so, so true. Also,
by_far_the_worst_species_on_earth(X) :- human(X). Oh, and
Hi @vmagnin here another francophile Fortraner, it would be a pleasure to help out
“Don’t put the blame on me!”
@pap, have you installed a Prolog interpreter/compiler? Which one?
(it seems the early Prolog was implemented in Fortran: Emulators and interpreters in Fortran - #14 by R_cubed)
Just the one my GNU/Linux distribution and FreeBSD both have in their repositories, gprolog. It has nice extensions (not just the ISO standard) and a compiler, together with an interpreter.
I wonder if anyone still has Marseille Prolog though, and if it can still run in modern hardware - probably not. I read a port of its interpreter was a deck of around 2000 FORTRAN IV cards. Old programmers did nice things, with limited software and hardware…
Thanks, so it’s the GNU Prolog. It will be nice, just for playing. I have still my Turbo Prolog facile 1990 pocket book! It was a Borland compiler, like Turbo Pascal . Believe me or not, on the first page of the introduction of the book, I read “Socrate est un homme”. Very classical…
Maybe some source code was preserved there:
Yes, those were the days where every byte and every CPU cycle mattered!
Those who might be looking for real world uses of Prolog in scientific programming might want to explore a number of other open source compilers and interpreters:
Addendum: Link to ECLiPSe fixed.
ECLiPSe Constraint Logic Programming: is an open-source software system for the cost-effective development and deployment of constraint programming applications, e.g. in the areas of planning, scheduling, resource allocation, timetabling, transport etc. It is also ideal for teaching most aspects of combinatorial problem solving, e.g. problem modelling, constraint programming, mathematical programming, and search techniques. It contains several constraint solver libraries, a high-level modelling and control language, interfaces to third-party solvers, an integrated development environment and interfaces for embedding into host environments. [quoted from project page].
SWI Prolog: This probably has the largest community, and a number of commercial sponsors who use it in production. Its documentation is excellent and has links to interesting research papers. I find it worth searching even if I am not using SWI.
Ciao Prolog: Incorporates many interesting ideas from functional and research areas of logic programming. The main developers are based out of the Polytechnic University of Madrid, Spain.
Yap Prolog: Yet Another Prolog (YAP) is a Prolog system originally developed in the mid-eighties and that has been under almost constant development since then. This paper presents the general structure and design of the YAP system, focusing on three important contributions to the Logic Programming community The YAP Prolog system | Theory and Practice of Logic Programming | Cambridge Core
XSB Prolog: This is the first Prolog system to implement tabling that facilitates techniques like memoization. The concepts have been ported to other systems.
Amzi Prolog was a commercial Prolog system made open source in 2016 under an MIT license. There are excellent tutorials and documents on the Prolog core as well as libraries that come with the system. It can be used to embed Prolog in another language (C, C++, Java, .NET), or call out to code in those languages.
There are other, newer open source prolog systems, but have not been as well tested as those 3. There are also commercial compilers, but I have no access to those.
Some links to the newer Prolog environments
Trealla Prolog: “It uses tree-walking, structure-sharing and deep-binding. Source is byte-code compiled to an AST that is interpreted at runtime. The intent and continued aim of Trealla is to be a small, easily ported Prolog core.”
Scryer Prolog: “Scryer Prolog aims to become to ISO Prolog what GHC is to Haskell: an open source industrial strength production environment that is also a testbed for bleeding edge research in logic and constraint programming, which is itself written in a high-level language.” [Implemented in Rust]
For those who want to see what is possible in Prolog, watch a few of these videos by Markus Triska. I consider Fortran a beautiful complement to Prolog, as destructive array updating isn’t a natural fit into a pure declarative system, but essential for productivity.
Triska blogs at:
̶T̶h̶e̶r̶e̶ ̶i̶s̶ ̶a̶ ̶d̶o̶u̶b̶l̶e̶-̶p̶a̶s̶t̶e̶d̶ ̶U̶R̶L̶ ̶h̶e̶r̶e̶.̶
The Prolog community seems alive and kicking…
I see a lot of interesting problems/puzzles in those links, and their Prolog solution.
The Humble Bundle site offers sets of programming books for $18 or less. Their Databases and Data Management bundle includes the book Programmer Passport: Prolog (2022) by Bruce Tate.
I have succeeded using the @lkedward template for collaborative writing. @Pap @Arjen @hkvzjal you will now receive an invitation to the private GitHub repository. Please read first the
ABOUT_THIS_ARTICLE.md file. Then the PDF of the draft is in the “previews” branch, in the directory “master”.
I remind you that the deadline is this summer (my goal is the 15th July). No hurry…
The article is easily imported to LyX too, for those who use this application.
Yes, the article files are just
tex/paper.bib. And the less LaTeX packages we use, the better. The editor will apply the LaTex class of its Bulletin (not publicly available).
Oh, I think you will also need the
texlive-lang-french package (name in Ubuntu).
I am interested in reading/reviewing the paper, too.