The spec has graphics! LineDrawing, Mouse, all sorts of cool stuff!

Of course GCC doesn't include this, because then GNU would have to spend some effort on something besides sexism & whining about Nintendo.
#modula2

So all the super fun parts of archaic languages.

Strings are either ARRAY OF CHAR, which you allocate statically but then are invalid outside the function obvs. Or DynamicStrings "String", which you have to StringInit & KillString.

There's at least 3, maybe more, IO systems. Original (PIM) sucks, it can talk to one stream or file at a time. IOChan (kawaii!) is saner, but functions for each type are in 99 different modules.

Compile/link is so annoying. I may have to use make! UGH!
#modula2

Old-timey (pre-80s) people had some peculiar ideas about gender roles.

#modula2

Having amusing flashbacks to college graphics class, which Prof Chuck taught with Pascal & his own graphics lib, OR you could use Turbo Pascal, or C, or whatever. I did about half in Modula-2 on my ST, & the rest in C with INT $10 calls on my OS/2 machine.
#modula2

Modula-2 is a lot less bitchy about semicolon placement than Pascal, & has implicit BEGIN everywhere, so it's actually kinda nice.

CAPSLOCK keywords, or exactly matching case of every function is required. @_@

When it does blow up, tho, like by using = instead of := assignment, I get 5-10 lines of nonsense errors saying the program's incomplete, & it gives up on finding any other errors. It might be as bad as a 1980s C compiler ever was, just comically awful at error reporting.
#modula2

Modula-2 compile time & performance on linear stuff seems fine (anecdotal, I need to code a few proper benchmarks). Recursion eats a lot of memory & CPU, but it's tolerable.

There's no easy way to read/write longs except by IO. I had a screaming/stabbing rage fit for a bit, trying to figure out how IOChan & command-line arguments work, because of course there's no clear IO examples in the specs.

Similar test in Chez Scheme, got smoked a bit, I presume by moving to bignums.

FUN!
#modula2

Good news! I got the Modula-2 compile front-end in gcc to work!

% sudo port install gcc15
% cat hello.mod
MODULE hello;

FROM StrIO IMPORT WriteString, WriteLn;

BEGIN
WriteString('Hello Mod-2!');
WriteLn()
END hello.
% gm2-mp-15 -o hellomod2 hello.mod
% ./hellomod2
Hello Mod-2!

Yes, the compiler is "gm2-mp-15", had to do `port contents gcc15` to work that out.

Now I just need to relearn Mod-2, haven't touched it since the '80s.
#modula2 #retrocomputing

What's not in my profile?

I used to be a huge Wirth-ian in the 1990s and spewed excellent tirades against the evils of C. Niklaus Wirth is also my "PhD grandfather" via Michael Franz at #UCIrvine.

I prefer lecturing sitting down in front of a laptop and talking while I do stuff on said laptop. I very much dislike slides and prefer chalk and blackboard for things like data structures.

I got my "15 minutes of fame" served unexpectedly:

https://www.insidehighered.com/news/2013/02/12/students-boycott-final-challenge-professors-grading-policy-and-get
https://boingboing.net/2013/02/19/students-get-class-wide-as-by.html
https://archive.nytimes.com/economix.blogs.nytimes.com/2013/02/14/gaming-the-system/

But it still was fun.

I got my undergraduate degree from https://www.cs.hm.edu/ which back then was not allowed to feed into PhD programs. It's a thing in Germany: Everything is tiered and changing the tiers requires a change to the constitution of the republic (I am joking, but not really) so it takes a while. (Nowadays it would be easier to go on to a PhD from there.) The "plus" was that I spent two semesters in industry. In one I quickly out-FORTRAN-ed my boss, in the other I learned C++ from Stroustrup in two weeks while riding the bus. Beat that Ivy League!

I grew up on #c64 #basic and #mos6502 (well, #mos6510 I guess) assembly, went on to #m68k assembly, #gfabasic and lots of #oberon. Of course I was dabbling in #modula2, #prolog, #scheme, and more. Then it was mostly whatever I needed so #fortran, #cpp, #java, lots of #python, lots more #c, lots more #arm and #x86 assembly, some #golang, some #ocaml, some #csharp even if you can believe it. Nowadays it's pretty much #c all day with chunks of #python and bits of #rust now and then. And chunks of #bash too.

(Proudly self-plagiarized off of a few 2023/2024 posts from my previous account.) #introduction #SorryItsLate

Students boycott final to challenge professor's grading policy (and get As)

To test limits of Johns Hopkins professor's scaled grading policy, all of his students boycott the final -- and all get As as a result.

Inside Higher Ed | Higher Education News, Events and Jobs
#COBOL (*suspiro*), #Prolog (*ains*), #Simula67 (oh!), #Modula2 (ah!), #SML (+ #MoscowML y #PolyML), #APL (jijiji), #BASIC modernizao, #LISP, #C, #JULIA, ¡¡y #FORTRAN!!
@CGM I never heard of #SASL! I have always been a huge #Wirth fan. Did tons of real-life work in #Pascal, moved through #Modula2 up to, finally, #Oberon2. Had such fond memories of it that I tried to use it last year for #AdventOfCode and learned that it was not nearly as good as I remembered. Have you tried #Racket (a kind of #Scheme)? It’s not for me but it’s interesting. Used it in a job interview once. Your description of how flow control is defined in #TCL really reminds me of Racket. I’m learning #RustLang and having the kind of #Macros you get in #Lisp and Scheme is another reason Rust is so enjoyable.