Hacker News new | past | comments | ask | show | jobs | submit login
Real Programmers Don't Use Pascal (1982) (web.mit.edu)
131 points by lelf on March 28, 2019 | hide | past | favorite | 91 comments



Kids these days do a lot of disgusting things. They don't know how to write their own linker scripts, read assembly, or code in a real man's language (C). They think dynamic typing is "fun" and "productive". They don't even know how to manage threads or memory and use entire megabytes of RAM to send messages to each other using an inferior version of irc. Primarily they constantly waste precious cycles, eat quiche, and spend the rest of their time trying to solve the trivial problem of generating and consuming html in as many ways as possible. They don't even know who Ken is.


This reminds me of the famous quote by Socrates:

“The children now love luxury; they have bad manners, contempt for authority; they show disrespect for elders and love chatter in place of exercise. Children are now tyrants, not the servants of their households. They no longer rise when elders enter the room. They contradict their parents, chatter before company, gobble up dainties at the table, cross their legs, and tyrannize their teachers.”



But a similar quote about the young is completely real -- just not by Socrates (who after all wrote nothing), but rather by Aristotle -- Book II, Part 12 of his "Rhetoric" has him complaining about young people -- it's a long passage, but some gems "They have exalted notions, because they have not yet been humbled by life or learnt its necessary limitations; moreover, their hopeful disposition makes them think themselves equal to great things-and that means having exalted notions. They would always rather do noble deeds than useful ones: their lives are regulated more by moral feeling than by reasoning."


"Millenials" described to a tee. Socrates quote was also pretty much right on. "Millenial" might be the most ingenious modern scam amongst software vendors, marketing, and every other person hangle their shingle and selling the millenials-are-unique nonsense.

Ive ranted before about this but as the learned ancients have already spoken about it then it should be obvious to all by now - each generation is more lenient in its upbringing of the next generation, sees problems arise from that, and then tries to explain it away by any means other than accepting blame for the trouble self-inflicted.

Im old enough to have seen this repeated 3x in my own lifetime and a small amount of reading can show to anybody else that this has been the case for over 2000 years. Neither Tim, Jeff, Satya, Richard or (name your fav 'modern' CEO here) can solve this. Its a human psychology problem which we have been happily creating, recognising, refusing blame for, and buying snake-oil solutions for, for as long as the world has had the written word.

Wake up people.

For the record: Im huge fan of freepascal but write most of my own code in python out of laziness(batteries included is powerful motivator for me). Sometimes dabble in C#, now learning ecmascript(again), and next trying again to learn nim and C. Father, product manager.


In regard to ecmascript, have you considered Haxe?


Thanks for the reminder and yes i have Haxe on my 'to review' list.


Youth unemployment explained in a quote: "They would always rather do noble deeds than useful ones"


You should clarify in the text of your comment that the quote is apocryphal, as not everyone will click your link.


Apologies.


Oh no, just a friendly suggestion! I was about to post a similar comment myself, not realizing immediately that you'd beaten me to it.


As a counterpoint I would say that the old people that in that high level language called C, (real men use Punch cards ;) ), had no clue about user interfaces, developer productivity, used waterfall models for planning, and in general, creating something that was somewhat horizontal and useful ended up being a titanic task, and also with crazy price tags. Wait let me write that client/server software again using CORBA :(.


Planning is for imbeciles who are unable to fly by the seat of their pants.


s/quiche/avocado\ toast


can't even terminate s command.


Try it in vim, it works! It's an escape char for the space ;)


Vim is for \(avocado toast | quiche\) eaters. It's bloated. Real programmers use ed.


Exactly. ed(1) is the standard text editor:

https://www.gnu.org/fun/jokes/ed-msg.html


TECO users look down upon you with scorn and contempt.


I figured I'd check: is "Ken" Ken Thompson?


Presumably, though I bet Mel would be an even better figure here: http://www.catb.org/~esr/jargon/html/story-of-mel.html


IRC wasn't a great experience for a lot of things back in the day unless you setup your own bouncer/relay.


Real programmers set up their own bouncer relays


Oh please, actual Real Programmers, just picked up the phone and whistled at 9.6kb/s.


Most old POTS phone switches still had the older pulse interface, so you dialed by hitting the hangup button really fast. The new fancy frequency encoding from 300-3300Hz was faster but not proper hacking anymore, you needed extra HW for this. Doable, but generating pulses was much easier.


cough FORTAN cough Real languages have arrays


Donald Knuth wrote TeX in Pascal. I think he chose it because it was the language most widely available at the time in universities where people wanted to use TeX; many were already using Pascal for teaching. (The first version had been written in SAIL, because it was the language available at the Stanford AI Lab where he had computer access.)

Because Pascal did not have good support for strings and variable-length arrays, TeX manages all its own memory (allocating and freeing from a single giant Pascal array called “mem”); because Pascal did not have “break” or “return” he implemented those features himself with a preprocessor and a certain disciplined use of goto; because Pascal required certain things (type declarations, labels) to be all in the same place and other things to be scattered apart, he wrote a preprocessor to rearrange sections of a program in any order; because Pascal compilers varied in their support for features like pointers and nested procedures, TeX uses only a very restricted subset of Pascal.

Real programmers do whatever it takes.


Very interesting to hear Knuth augmented Pascal significantly to suit himself. Can I ask where you found that? I'd love to read more.


Sure! The entire source code of TeX has been published as a book called TeX: The Program, which is Volume B of Knuth's Computers and Typesetting series (the TeX and METAFONT manuals and source code, and the definitions of the Computer Modern fonts): https://cs.stanford.edu/~knuth/abcde.html#abcde The major part of the book (just the program itself, without the book's 1-page preface, 2-page bibliography, 6-page instructions on how to read the program, mini-indices on each two-page spread, 1-page diagram of approximate memory requirements, and hand-tweaked typesetting) are also available in any TeX distribution or online e.g. http://texdoc.net/texmf-dist/doc/generic/knuth/tex/tex.pdf

It is written using a system called WEB, and Knuth calls the idea literate programming — see article at http://www.literateprogramming.com/knuthweb.pdf and the WEB manual at http://texdoc.net/texmf-dist/doc/generic/knuth/web/webman.pd...

All this is somewhat hard to read for most modern programmers IMO. In my free time I hope to make these more readable, and I've started with simply reading and annotating the simplest of the programs written in WEB: https://shreevatsa.github.io/tex/program/pooltype/ https://shreevatsa.github.io/tex/program/tangle/ — if anyone reading this is interested let me know (create an issue on the GitHub repo or something).


This essay was entirely sarcastic, in case you missed that.


Of course. But it arose in the midst of, and makes explicit and implicit references to (and fun of), many debates and attitudes that were current at the time, not just concerning programming languages but also operating systems, structured programming, goto, etc. For instance, a few months before this essay Brian Kernighan had published “Why Pascal is Not My Favorite Programming Language” (https://www.lysator.liu.se/c/bwk-on-pascal.html) which ends with “Pascal is a toy language, suitable for teaching but not for real programming”.


Real programmers don't actually use any language, as their time is best spent in forums and chat rooms arguing with non-real (integer?) programmers why they aren't real programmers.


Integers are real numbers. Perhaps they are arguing with imaginary programmers.


I think this is a reference to an old joke about "God is Real, unless declared as Integer" since in Pascal Real and Integer are data types.


The joke is actually about FORTRAN, where variables don't have to be declared, and is implicitly declared as Integer if it's first letter is in the range I-N and otherwise implicitly declared as the type Real (usually 32-bit floating point). Thus the variable GOD will implicitly be of type real.

Pascal have the same type names, but does not allow implicit declarations.


Oh, interesting. I suspected it might be from an older language, but i expected Algol, not FORTRAN :-P.

Personally i associate it with Pascal because i first saw it on an IRC channel's topic back in the mid-90s :-).


If it's a stupid programming joke, you can probably blame it on FORTRAN. COBOL programmers don't have senses of humor.


Actually, integers are a subset of the real numbers. I think you mean complex numbers with a non-zero imaginary component.


In Pascal Real’s aren’t necessarily a superset of Integer’s (both can be four bytes, with, for example, 2^30+1 representable as an Integer, but not as a Real)


I'm so used to talking data types I forgot in math you're absolutely correct!

Cooncidentally in Pascal, real and integer are the names of two numeric data types.


That's good to know! I was born after Pascal's peak, so I've never used it, so I wasn't aware that I was wrong in a sense :D


They are using English.


A few previous discussions (these are just for curiosity; reposts are ok after a year or so).

2015: https://news.ycombinator.com/item?id=10214480

2015: https://news.ycombinator.com/item?id=9422622

2012: https://news.ycombinator.com/item?id=3585286

From 2018, this has a good comment: https://news.ycombinator.com/item?id=17105233


Real programmers can glance at a plate of spaghetti and tell where each strand of pasta begins and ends. Even when it is covered in bolognese sauce. And cheese. Can you do that with quiche? Thought not.


Someone needs to create a programming language called Real.


> Real Programmers use FORTRAN.

Ahem. No. Real Programmers use machine code.

http://www.catb.org/jargon/html/story-of-mel.html


The story features a programmer who coded in hexadecimal. It sounds a little apocryphal, but I worked with such a man myself – Tim Paterson, the creator of QDOS, which became MS-DOS. At the time he was on the Visual Basic compiler team at Microsoft, and I would go into his office while he was looking at hex dumps, which he found faster than reading disassembly.


I haven't thought of this in years. Sr Engineer wanted me to build a 'chamber simulator'. IE simulates a pressure chamber with a bunch of valves and interlocks.

Wanted me to implement it with analog circuits and jungle logic.

I went fuck that and hand built a board with an 8051. Wrote the program in assembly on paper. Hand translated it to hex. And then used a hex editor to generate the hex file. Which I used to burn the epprom. Took two days to debug it.


I love that story. In fact the whole Jargon File is a great source of elder geek lore. Another good source is http://www.folklore.org/ for tales of the original Mac development team.


Real programmers have a shortcut on C-x M-c M-butterfly.


Real programmers only use punch cards for Jacquard looms.


> Real Programmers wrote in machine code. Not FORTRAN. Not RATFOR. Not, even, assembly language. Machine Code. Raw, unadorned, inscrutable hexadecimal numbers. Directly.

Reading that brings back one of the best memories of my childhood.


The first Real Programmers used decimal, and programmed on the plugboards and portable function tables of the ENIAC. See https://en.wikipedia.org/wiki/ENIAC .

The next Real Programmers programmed in octal, and sometime made mistakes balancing their checkbook by doing octal instead of decimal mathematics. See https://www.agnesscott.edu/lriddle/women/hopper.htm .

You'll notice that Hopper and the ENIAC programmers are women. Programming at this time was seen as a woman's job.

Then it became seen as a career for men. The early women programmers were overlooked; the ENIAC programmers weren't named in the early photos, and believed to be models - 'Refrigerator Ladies'. See http://mentalfloss.com/article/53160/meet-refrigerator-ladie... .

As computers became more powerful, hex became the de facto. Much of the 'heroic literature of the olden days' comes from this era, so we view history through a decidedly - to quote the link text - "macho" lens.

While it's certainly an enjoyable story, if we repeat it without the context, we continue to obscure the work of the first Real Programmers, and we propagate the false implication that "Real Programming" is intertwined with concepts of masculinity.


A real programmer can write FORTRAN 77 in any language.

Actual thing. Friend of mine is retired black female programmer who mentioned hot patching assembly on IBM mainframes back in the late 60's.


What is the relevance of her being black & female to the anecdote?


This document was written towards one end of my life. I wonder if I look as dated as it does.


Probably. Even your name is out of date. There aren’t that many people named Tom anymore.


And yet, it used to be that everyone had a friend named Tom. In fact, Tom was your first friend. But that was a different time and Space.


Your name seems to imply you monitor for Tom all day and then pounce on him in forums. Is this true?


Wow. I haven't seen this since 1982. It circulated on the RCP/M BBSs for a while and then I never saw it again until now. What memories...


Then there are monk programmers:

http://www.mit.edu/~xela/tao.html

"The Silent Void

Thus spake the Master Programmer:

When you have learned to snatch the error code from the trap frame, it will be time for you to leave."


That's definitely one of the funniest things I've the chance to read recently.


"After three days without programming, life becomes meaningless."


The popularity of this essay in the 1980s poisoned so many minds and is one of the reasons we have to deal with so much bullshit today.


> The popularity of this essay in the 1980s poisoned so many minds and is one of the reasons we have to deal with so much bullshit today.

If the people who read this essay don't get that it's a joke after at most the first sentence, you have bigger problems than that.


Glad I'm not a real programmer.


What's a C programmer's favourite time of day?

t_time.


2010+ version is that real programmers don't use JavaScript. After all, it's a scripting language—don't try to deny it, there's "script" right there in the name—and scripting languages are not real programming languages; it is known.


I didn't know about this one https://en.wikipedia.org/wiki/Arithmetic_IF


Perhaps how much of MATLAB is influenced by Pascal,etc, but it is particularly clumsy and inelegant, as if it stuck in the 80's, not to mention proprietary, I wait for the day when we can move out of it.


Have you checked out Octave? They target (bug-for-bug?) compatibility with MATLAB, so most pure MATLAB code will port over with no edits necessary. It's also a GNU project


Well then all complaints about the MATLAB language also apply to Octave.


This seems appropriate:

https://xkcd.com/378/


Real programmers don't eat quiche!

http://www.bernstein-plus-sons.com/RPDEQ.html


A node in a binary tree was dereferenced by a^.b if I recall.


Back in the mid 1980s, I learned Pascal immediately before learning C, and to this day I (internally) pronounce C's -> operator as "up dot".


Only as a corollary,

Real Programmers drink Coke:

https://uranus.chrysocome.net/coke.htm


"Real programmers aren't afraid of GOTO"


Real programmers don't need to give explicit orders like GOTO. A scowl is enough.


GOTO is still a legit way to cleanly break out of nested loops. I cringe whenever I hear normie programmers lament on how blanketly bad it is.


> break out of nested loops

-deeply- nested loops at that.

I once was on a thread in a forum discussing state machines, and somewhere in the convo the use of GOTO popped up. I wasn't for it, but somebody made mention of how it could be used to implement a state machine very compactly.

Then he showed his code - it was done in PBASIC. I saved a copy of that code, because it was very, very elegant. While I knew there were certain very niche cases for GOTO, I never thought that a state machine would qualify. For me, it does now.

I don't have the code handy, but it reminded me of Duff's device, if you know what that is - just done in BASIC - and not as a SWITCH-CASE of course...


I prefer the syntax of newer languages that instead have you label the loop and then break/continue the loop of that level. It tends to make it a little clearer that you're doing a multi-level exit.


> It was largely due to the efforts of thousands of Real Programmers working for NASA that our boys got to the moon and back before the Russkies.

Keep in mind that despite Real Programmers being referred to as "he" throughout the article, the Real Programmer who headed that effort was a "she" - https://en.wikipedia.org/wiki/Margaret_Hamilton_(scientist)


Margaret Hamilton did not head the effort. She was a manager on the project, but she didn’t join until relatively late. At the time of Apollo 11 she was in charge of the Command Module’s software (https://www.doneyles.com/LM/ORG/index.html), but most of the work had been done by the time she assumed that position. She later became head of the whole software department, and had a lot of responsibility for modifications for later missions and Skylab, but she and others have greatly exaggerated her role on the project.


Real programmers don't reply to political bait.


I'll counter point that she/her is brought up at several points in this piece and, in general, the author seems to avoid using he/she at all, using they often.


To me, real programmers will eventually re-invent the better wheel at some points of time.


Real programmers don't use any programming language, they use other programmers.


"By hiring inexperienced workers and indoctrinating them into a religion that taught the concept that metaprogrammers were better than mere programmers and that Bill Gates, as the metametaprogrammer, was perfect, Microsoft created a system of hero worship that extended Gates’s will into every aspect of the lives of employees he had not even met." - Cringley, Accidental Empires

And oh wow, it appears that some large portion (if not all) of the book is available on Cringley's web site: https://www.cringely.com/2013/02/04/accidental-empires-part-...


:) funny to reflect that I used to call JavaScript and html dev fake developers


There was book in the early 80s called "Real Men Don't Eat Quiche", BTW.

As well, TRS-80's from Radio Shack were often called "TRASH-80s" to disparage them.

"As all Real Programmers know, the only useful data structure is the Array."

As someone trying to learn APL this is hilarious and apt!

A proud moment in tech support for me (akin to the telephone and front panel switches story) was walking a non-technical user through using vi to edit a file, over the phone.




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: