Programming languages that change how you think about programming...

* Assembly
* BASIC
* Forth
* Haskell
* Lisp
* Perl
* Raku

What else should be on this list?

#programming #assembly #basic #freebasic #forth #haskell #lisp #perl #rakulang

@profoundlynerdy C++.

It definitely changes how you think about programming.

@profoundlynerdy Elixir (for parallel programming)

@profoundlynerdy Some other languages that had a profound effect on how I think about programming are:

Fractran
https://wiki.xxiivv.com/site/fractran.html

Orca
https://wiki.xxiivv.com/site/orca

fractran

By Devine Lu Linvega

XXIIVV
@brhfl Ah, yes, APL. I definitely missed that one!

@profoundlynerdy for me, Rust and especially C. Even Java, because I started having to think about compilation and runtime...

BASIC is what I started with, so there was nothing to change...

@profoundlynerdy

piet; great for smuggling source code :)

https://esolangs.org/wiki/Piet

helli world:

@profoundlynerdy Definitely an array language like APL. Also a logic programming language like Prolog. Maybe a very pure object-oriented language like Smalltalk or Self.
@oantolin @profoundlynerdy Aye, I think about Io all the time, which is Self-like
@j3rn io is very cool, I like it too.
@oantolin @profoundlynerdy
Yes, APL (or successors Iverson J, K) is Functional and Matrix oriented with meta and hyper operators-on-operators.
Quite mind-bendy in delightful ways.

@profoundlynerdy

Piet: source code is an image that usually looks like a Mondrian painting. The model is a 2 dimensional state machine with stack (PDA).

(No, this is not a serious suggestion. But it *does* change people's boundaries about what a programming language's notation can be.)

https://www.dangermouse.net/esoteric/piet.html

DM's Esoteric Programming Languages - Piet

@profoundlynerdy
Unison. Encoding functions, code, and even data as their abstract syntax tree then having the system refer to them by a hash of their value as a way to ensure you are always running the machine code you intended to run is a cool way to think about source/machine code maintenance.
Home ⚡ Zig Programming Language

@sleepyhoodie I absolutely should have mentioned Zig. It's a nice language.
@profoundlynerdy all of them do in their own little ways XD
@profoundlynerdy python and C come to mind for me
@profoundlynerdy IRs like GIMPLE/RTL, LLVM IR, etc
@profoundlynerdy Both SQL and Rust were different ways of thinking for me.

@profoundlynerdy Octave/Matlab?

Matrices being well supported as a simple data type helped a lot with my understanding of Linear Algebra

@profoundlynerdy @samebchase
Shell script
powershell
postscript
@profoundlynerdy I like Julia a lot, it made me learn all kinds of stuff and recently Uxntal :3

@profoundlynerdy

Programmers never think of it but spreadsheet formulas ARE computer programming .. functional programming, like LISP and FORTH; completely different concept ...

@profoundlynerdy Smalltalk. Understanding complete object orientation, true polymorphism, and the meta-object hierarchy were eye-openers. (You *can* do some of that in Lisp, but it doesn't feel the same.)

@profoundlynerdy I have some knowledge of the first six, and I know what concepts they embody. I'm curious what's special about Raku?

Also, I don't see a heavily object-oriented language on your list, so maybe Smalltalk would be a good addition.

@sebhans Regarding Raku: relatively intuitive grammars and the fact that it's an eclectic grab bag of programming ideas.
Eiffel

Eiffel development method and the Eiffel programming language

@profoundlynerdy
HLSL/GLSL (or other shader languages)
Limbo
C (specifically, the Plan 9 dialect)
Erlang
Yacc (technically, not a language, but still)
Esoteric languages as a category
@profoundlynerdy
SmallTalk is the most purely OO language I've experienced.

@profoundlynerdy

More than _one_ Assembler helps, as architectures can be quite different.
PDP-11 vs 386 vs IBM 360/370 vs PDP-8.

One may consider "C" to be just a better PDP-11 Assembler, and as such perhaps it doesn't extend the list. IBM 370 MASM had marco abilities that made it sometimes higher level than C.

C++ was arguably the wrong marriage of C and OO; Objective C was more like how SQL gets embedded in a host language, so one was clear when a line of code was OO vs Procedural.

@profoundlynerdy
Sometimes it's a useful exercise to use the wrong tools for the job, whereby one finds out why they are wrong.
In one shop, I did text ops in Fortran since it had the best subs and operators for it (poor set of choices).
Arithmetic in Prolog because pencil-and-paper world domain data had too much of it.
An Expert System in recursive MASM macros because it was the only interpretive language on VM370.

@profoundlynerdy

& in-house email in VM/CMS command files or DEC-10 System1022 pseudo-relational DBMS macros (because we didn't have email on the systems yet!)

(Yes I'm old, why do you ask?)

@profoundlynerdy any stack language, APL, uiua, etc.
They're more compelling than others on this list.