It's fascinating to me looking at beginning language guides and thinking "what does this say about the culture of the language"
When I was delving into #OCaml it was (with affection) "here's hello world and here's a dense academic paper on implementing event systems in OCaml 5!"
#Java guides used to be centered on the assumption that you were a web programmer looking to do applets, even long after that assumption died.
#RustLang generally seems to assume a background in programming w/ a CLI.
@hrefna I know syntax matters to people (and I haven't yet written #Erlang, only some #Prolog), but it is just a language. Just pattern-matching and immutability make it better than most by a long shot. So, I think the Erlang inventors got the language quite all right, and Elixir might just be a nicer way to write OTP style.
A weird thing about being 50 is that there are programming languages that I've used regularly for longer than some of the software developers I work with have been alive. I first wrote BASIC code in the 1980s. The first time I wrote an expression evaluator--a fairly standard programming puzzle or homework--was in 1990. I wrote it in Pascal for an undergraduate homework assignment. I first wrote perl in the early 1990s, when it was still perl 4.036 (5.38.2 now). I first wrote java in 1995-ish, when it was still java 1.0 (1.21 now). I first wrote scala, which I still use for most things today, in 2013-ish, when it was still scala 2.8 (3.4.0 now). At various times I've been "fluent" in 8086 assembly, BASIC, C, Pascal, perl, python, java, scala; and passable in LISP/Scheme, Prolog, old school Mathematica, (early days) Objective C, matlab/octave, and R. I've written a few lines of Fortran and more than a few lines of COBOL that I ran in a production system once. I could probably write a bit of Haskell if pressed but for some reason I really dislike its syntax so I've never been enthusiastic about learning it well. I've experimented with Clean, Flix, Curry, Unison, Factor, and Joy and learned bits and pieces of each of those. I'm trying to decide whether I should try learning Idris, Agda, and/or Lean. I'm pretty sure I'm forgetting a few languages. Bit of 6502 assembly long ago. Bit of Unix/Linux shell scripting languages (old enough to have lived and breathed tcsh before switching to bash; I use fish now mostly).
When I say passable: in graduate school I wrote a Prolog interpreter in java (including parsing source code or REPL input), within which I could run the classic examples like append or (very simple) symbolic differentiation/integration. As an undergraduate I wrote a Mathematica program to solve the word recognition problem for context-free formal languages. But I'd need some study time to be able to write these languages again.
I don't know what the hell prompted me to reminisce about programming languages. I hope it doesn't come off as a humblebrag but rather like old guy spinning yarns. I think I've been through so many because I'm never quite happy with any one of them and because I've had a varied career that started when I was pretty young.
I guess I'm also half hoping to find people on here who have similar interests so I'm going to riddle this post with hashtags:
"Our principal ambition for this paper is to make invitations to pure mathematicians to consider deploying constraint logic programming systems to assist in research, and to enthusiasts of the logic programming paradigm to consider applying their skills to problems in Lie theory. To this end we narrate a recent adventure searching for new simple Lie algebras over the field F2 = GF(2) of two elements in dialogue with the Prolog programming environment"
@afilina Yes, absolutely. Like Lego. Just need to make it all fit together, and the compiler tells me what I'm doing wrong.
Which also means that I'm hopeless in dynamic languages. The only ones I've been able to write any non-trivial code in are #lisp like #emacs Lisp, #racket and also #prolog. But I do it the same way there: I write the signatures first, and keep types in my head, or in docstrings right above the functions.
As it turned out, reverting to distro #orgmode was a simple matter of deleting the site-lisp/org and restarting, and magically #orgroam is working again, so that's a plus. Lilypond will just need to wait.
I spent years coding in #Prolog, so my general solution to problematic things is "revert back to before your last decision, and make a different one" 🤣
I've been reading about #Erlang lately. I'm a little disappointed. Erlang seems real good and powerful, but it's not nearly as weird as I thought. I had somehow gotten the impression that it was #Prolog-level weird, but it's only #Lisp-level weird, which is not actually all that weird these days, since everybody else added some functional elements to their languages.
So I was ready to have my mind blown, but instead I only got it expanded.
Does anyone on here know how to make a #backtracking#algorithm faster? I'm writing a #logicprogramming language ala #Prolog in Rust and it's already pretty slow (takes 1.11 seconds to find 20 answers) at even four rules deep and a database with 84 facts. Might it be string comparisons for variable names and such? If so, how would I accelerate that?
In a different shard of the multiverse SaaS means #Smalltalk as a Service. And it’s awesome. Instant deployment of code to all client images. Replaces what we call the database, the internet and the browser. Obviously has a flavor of #lisp layered on top and #prolog upon that. I want to live in that shard. Also in this dimension smalltalk is predicated upon a typed pi-calculus not classes and inheritance. Ok that’s my fever dream.
My 18yo nephew asked me what my favorite #ProgrammingLanguage is and I don’t actually know the answer.
I use#C and #Go for applications. I write #Python for data munging and scripts and small apps. I’ve written many thousands of lines of each. I sponsor #Zig.
This video on term rewriting systems in #prolog is worth watching to admire the vlogger's #emacs configuration alone, that the content is good is the cherry on top!
I wish that there were more appreciation for #prolog (and #datalog) in our industry.
Like I'm really pleased to see languages like #rego and developments along those lines, but I get so frustrated by the continued reinventing C or BASIC syntaxes for what are fundamentally declarative problems.