@monorail @aescling @wallhackio this is definitely showing the areas where i spend my time but to me, i write a lot of HTML and XML and Makefile and parsers for various other formats. and like, HTML parsing is a mess. Makefile parsing is full of weird quirks. XML is better than the other two but still nontrivial in a lot of ways. and obviously all of these are very different. but i think the general lesson is “computers have a certain methodology for processing what you write, and you have to understand that methodology in order to communicate meaningfully with them”.
i think with a lot of programming languages, people never learn this lesson. 99% of javascript programmers have no idea how the computer processes a javascript program, because they learn a few rules of thumb on how to write it, and assume that if they follow those rules, the computer can read it the same as a human can.
with shell, this is not the case. you absolutely have to learn the lesson that computers do not know how to read, at least not the way humans approach reading. and yes, the particularities of that are very specific. but i think learning how to learn the very specific particularities of a language and apply them consistently is the lesson here, and a good thing to teach. and shell scripts are a simple enough language that the entire format could conceivably be taught in the context of a single course.
@aescling @monorail @wallhackio if you are in a class size of greater than 40 you are probably better off learning from the internet
@aescling @monorail @wallhackio i am assuming an education system where professors have manageable class sizes otherwise the question is meaningless
@monorail @aescling @wallhackio i don't see footguns like this as a bad thing in a teaching language tho, where you are having a professor review every line you write. in fact, having an expert review every line you write is probably one of the easier ways to learn shell
is shell knowledge transferrable to other languages? i agree that the answer there is mostly no, but i think it’s an open question whether the goal of an introductory programming course is to teach transferable programming skills, or just to teach the social aspect of thinking about and writing programs.
@aescling @wallhackio i’m not sure teaching “computers have to tokenize your code before they can read it” is a bad thing necessarily
@aescling @wallhackio hmmm
@wallhackio @aescling the nspire had a full word processor in it tho so i spent a ton of time writing fanfic
@wallhackio @aescling i had an nspire eventually and spent a lot of time programming text based adventures into it but it was less good than the TI-84 where i made Space Invaders
@wallhackio i also did this the TI-83/84 instruction manual was great
@aescling @wallhackio i don't think learning how a specific C compiler infrastructure works and learning C are the same thing at all
@aescling @wallhackio curious what there is to teach here
@aescling @wallhackio name a nasty corner in POSIX shell
@aescling @wallhackio as C or as C++? because these are very different beasts
@wallhackio (actually i think there’s an argument to teach basic programming concepts in POSIX sh instead, and would also consider this acceptable, but this is a more radical take)
@wallhackio i think basic software concepts should be taught in C, because there is no more basic software concept than “produce readable, maintainable code and do not shoot yourself in the foot”, and C is the easiest language in which to discern whether a student has learned these lessons
for anything more advanced than that, idk, probably Swift
@aescling @wallhackio this is the idea behind Racket; i’m not sure i agree but i do think lisps should be a required 200-level course
@wallhackio it’s wild to go through a basic computer science class and still not be able to read a single file of C code because they never REALLY taught you how malloc() and friends worked
in programming languages like Javascript where imports are essentially dynamic links, i think it makes no sense. just use the M·P·L, it’s cleaner and more straightforward and the added virality of the G·P·L isn’t actually useful in most cases.
when writing statically linked C code: yeah okay, i get why you might want to “study the whole program”
@wallhackio our class did this and even at the time i felt like they should have just done C instead
Administrator / Public Relations for GlitchCat. Not actually glitchy, nor a cat. I wrote the rules for this instance.
“Constitutionally incapable of not going hard” — @aescling
“Fedi Cassandra” – @Satsuma
I HAVE EXPERIENCE IN THINGS. YOU CAN JUST @ ME.
I work for a library but I post about Zelda fanfiction.
For the time being, this is mostly a mirror of <https://status.ladys.computer/>. Want to get in touch? E·mail me!