-
Notifications
You must be signed in to change notification settings - Fork 0
Home
2025-10-20: all major advances starting with scripting language wren and all major modifications of existing source code will be noted here
-
2026-06-29: Dylan
-
2026-06-23: Answer Set Programming (ASP)
-
2026-06-24: "speed part" of microbenchmark program in SPARK
-
2026-06-24: fixed a bad bug in the SWI Prolog program: at the 2nd char there's also now a check to not exceed the totally allowed length of the generated password; while that wasn't so bad, the old program version sometimes stopped prematurely with a false. result. I added some lectures from here to my Prolog page: https://cs.union.edu/~striegnk/learn-prolog-now/html/node29.html
-
2026-06-23: Curry
-
2026-06-21: Tcl
- 2026-05-22...2026-06-19: another round of refactoring
(A) POSIX [:graph:] + POSIX [:alphanumerical:] at variable pattern (for a regular expression) if possible <==> variable char_set (for a set/hash of characters/strings):
development target: move more program versions, if feasible and reasonable, (back) from char_set to pattern. It succeeded nicely with GNU Smalltalk, and thus should be possible with many more languages: this refactering will definitely decrease the SLOC's of a number of program versions (like already done at AssemblyScript)!!
- first question here should always be: is pattern matching simple enough in language xy? Can I stay within this language or would pattern matching with regular expression need external resources? (don't implement such a solution; stay "native")
- use Google AI to see, if a set of chars can be refactored into a regular expression (named pattern); have a look at the elegant Go solution
- if using regular expressions are not possible or feasible:
- for a set/hash of characters/strings, take the (old) Groovy or (old) Java or old Scala implementation as a role model which uses characters instead of codepoints throughout, here in Scala:
- var char_set = (('a' to 'z') ++ ('A' to 'Z') ++ ('0' to '9')).toSet
- _ char_set = (('!' to '~')).toSet_
- for a set/hash of characters/strings, take the (old) Groovy or (old) Java or old Scala implementation as a role model which uses characters instead of codepoints throughout, here in Scala:
- so, if possible, check if characters can be used instead of codepoints, which are then transpiled into chars/single char strings
(B) check for other potential improvements, mostly for saving source lines of code, at the first user dialog:
- can the elegant Java implementation of: if (answer_str.matches("\d+")) {..} be a role model to strictly check string answer_str to only allow strict integer values? => try to save one if-then-else construct to reduce this section to two if-then-else constructs:
- if#1: is answer_str strictly an int value? (check for only allowing decimal digits)
- if#2: if yes, is its value >= 8?
(C) if done, update language in this list: Pattern matching: (POSIX compliant) regular expressions or a set or hash of characters or single character strings, respectively?
-
2026-06-18: Pike
-
2026-05-21: Smalltalk
-
2026-05-19: Java
-
2026-05-18: Haxe
-
2026-05-11: Ballerina
-
2026-05-07: JS++: program isn't completely working (try-catch exception handling fails); thus only "speed part" implemented, which is otherwise basically working => no further consideration of JS++
-
2026-05-03: AssemblyScript
-
2026-04-27: COBOL
-
2026-02-17: CoffeeScript
-
2026-02-12: TypeScript: 05d - TypeScript on Bun and Deno runtimes + TypeScript and JavaScript
-
2026-02-11: PHP
-
2026-02-09: another clean-up job: have dedicated string variables bits_x_str + bits_hex_str in the masterloop (which have been introduced for testing); if needed, rename existing string variables bits_x_str + bits_hex_str to bits_x_str_total + bits_hex_str_total: this will further even out the different implementations of the algorithm (though, it shouldn't have a siginificant effect on execution speeds)
2026-02-08: done: Dart
2026-02-05: done: Groovy
2026-01-26:
- re-checking if the very low level string concatenation solutions in C and C3 and specifically Ada can be brought to at least the more abstract level of Fortran or C++ without sacrificing too much of execution speed. Also the Eiffel solution of create bits_x.make (M1) and bits_x.append (bits_x_str) may serve as a role model here
- Ada: no faster solution with copying little strings bits_x_str at a dynamic position in the one, big string bits_x of fixed length than the original C-like solution: 20.6ms versus original solution with 18.8 ms
- C: no faster solution with using function strncpy to copy from little strings into the big strings: 8.2 ms versus original solution with 7.8 ms
- C3: in contrast to Ada, the new solution with copying little strings bits_x_str at a dynamic position in the one, big string bits_x of fixed length is even a little bit faster than the original C-like solution!
- fixing Perl 5 with its confusing variable naming (for experimental reasons back then)
- with the fixing of the Perl 5 program came a more polished version of the Raku program (which didn't fix the issue of its slow exe speed, however)
- fixing V with its confusing variable naming (for experimental reasons back then)
- fixing Inko for having, like the other languages, extra string variables bits_x_str and bits_hex_str (just to be fair and having them for testing purposes)
- trying to a find better solution in Swift for the needed string padding of bits_x_str: I didn't find anything
2026-01-24: done: Eiffel
2026-01-22: done: D
2026-01-19: done: Ruby
2026-01-15: done: C++
2026-01-13: done: Nim
2026-01-12: cleaned up the "masterloop" in the PowerShell programs a bit to have a more logical and efficient program
2026-01-09: done: Odin
2026-01-06: done: Fortran
2026-01-05: change of mind: I plan to implement the microbenchmark program, if possible for me, at last in J, because I'm afraid that it will take me a long time, longer than a week for example. Although, my first baby steps in J worked. Before, I just shortly played with ELI - A System for Programming with Arrays, but didn't get it working. This language (from McGill University: https://www.sable.mcgill.ca/~hanfeng.c/eli/) hasn't been updated since 2015. The only question then is what to do with The Nial Language: https://www.nial-array-language.org/, as another array-oriented language.
2026-01-04: done: Julia (which is not a contender to Mojo or Chapel)
2025-12-31: full microbenchmark program in Bigloo Scheme. It highlights the differences to Racket Scheme.
2025-12-25: cleanup work almost done; cf. Bigloo Scheme
2025-12-16: I'm not continuing with LFE (Lisp Flavoured Erlang: https://lfe.io/about/): even already compiled escripts are being re-compiled when running them again ($ rebar3 lfe run-escript); thus, LFE programs always have a slow start. I'm happy with Gleam as a (performant) language on Erlang's virtual machine and will keep it like that.
2025-12-13: update to latest Mojo version 0.26.1.0... with the Pixi package manager. The old Magic package manager, a fork of Pixi, is now deprecated: https://docs.modular.com/pixi; some slight, formalistic source code changes to get rid of new warnings: Mojo
2025-12-10: Oz: "speed part" of microbenchmark done, though not the rest because that has become practically impossible with this dead programming language
2025-11-22: done: SWI Prolog as a representative for the still numerous and actively maintained Prolog systems
2025-11-16: done: Mercury, a logic and functional language in a purely declarative style: my microbenchmark program is working correctly and swiftly in this language. However and apparently, implementing solutions for more than simple Constraint Satisfaction Problems is (almost) impossible in this language.
2025-11-01: done: Wolfram Language: too slow, but working
2025-10-29: done: Gleam, statically typed, functional programming on Erlang's BEAM virtual machine
2025-10-25: done: Futhark: not a general-purpose language, though I did a little demo
2025-10-24: done: wren: too slow, but working
2026-06-24: so far, I haven't touched yet these corners of programming languages:
- Dylan: https://opendylan.org/download/: Dylan is a direct descendant of Scheme and CLOS (without the Lisp syntax).. (CLOS = Common Lisp Object System)
- Hy is a Lisp dialect that's embedded in Python: https://hylang.org/
-
Stack-oriented programming languages: https://en.wikipedia.org/wiki/Forth_(programming_language)
- 2025: Implementing Forth in Go and C: https://eli.thegreenplace.net/2025/implementing-forth-in-go-and-c/
- Haskell, a pure functional programming language
- Web programming:
- PureScript, a pure functional programming language that transpiles to JavaScript: https://www.purescript.org/ --> do this after Haskell!
- Pure Programming Language is a pure functional programming language:
- Lambda Prolog (λProlog), Teyjus implementation: a first test showed that backtracking is principally working; so, it should be usable as a general-purpose programming language: https://www.lix.polytechnique.fr/Labo/Dale.Miller/lProlog/ Open question: can I read user input into a string on the terminal?
-
Array-oriented languages; maybe:
- (GNU Octave (https://octave.org/): 2025-11-01: I will skip this MATLAB clone (https://www.rath.org/matlab-is-a-terrible-programming-language.html), since I successfully implemented the microbenchmark program in Wolfram Language, though I had to put that language onto my list of too slow languages, to my regret by the way.)
- The Nial Language: https://www.nial-array-language.org/
- J
One or two "non-web" GUI apps for random_streams_for_perf_stats for Linux:
[ ] Tkinter is Python's de facto standard GUI: https://docs.python.org/3/library/tkinter.html
[ ] binary compiled language: Vala with GNOME-centric GTK with very low overhead; compiles to C (instead of the usual combo C++ + Qt): a "Hello, World!" app is already portable and working in a few Linux distros
One or two "web-based" GUI app for random_streams_for_perf_stats for Linux:
[ ] Dart
[ ] ReScript + React: https://rescript-lang.org/docs/react/introduction/
##_ end