2
$\begingroup$

I've noticed with new programmers, primarily those using GUIs (e.g. Matlab, Rstudio, Spyder) that there is a strong tendency to for them to have a giant file, e.g. allmycode.R.

Within that file, there are many unrelated (or partially related) blocks of code. To do an analysis, they interactively do something like

a) run block 1

b) then block 5

c) then block 3

d) then the last line of block 6

Obviously, this programming style is very challenging from a reproducibility standpoint and makes it hard for more advanced users to help them. It's like they are using implied Go-To statements that only they know about.

Questions :

  1. Is there a name for this type of programming 'style'?

I want to know so I have the words to use with Google to find a solution that helps me educate users when they stumble with this.

$\endgroup$
3
  • $\begingroup$ I would call it 'unstructured' but I don't know if there is an accepted name. Recently I wrote some very structured, sequential code that I would describe as 'Fortran', but it wasn't literally. $\endgroup$
    – Scott Rowe
    May 19 at 23:41
  • 1
    $\begingroup$ Can you add a (minimal) example? $\endgroup$ May 21 at 8:39
  • $\begingroup$ If you give a minimal example, then I may be able to know what you are describing. Then I may be able to answer. $\endgroup$ May 27 at 12:05

2 Answers 2

1
$\begingroup$

The determined Real Programmer can write FORTRAN programs in any language.

Real Programmers don't use Pascal Ed Post 1982.
For more context see the refs here for how the meme has been taken further.

Note

  1. Real is really sarcastic!
  2. The broadside against Fortran was needed in 1982. Today it could be Java/JS/Python/PHP... Anything used by just too many (non)programmers to be able to maintain a half-decent average user profile.
  3. Yeah, it's an elitist outlook. Education is inherently elitist.
  4. I also have some personal misgivings about this quote since one of my best teachers was A Real Fortran Programmer! He was as engaging in his Numerical Analysis and Linear Algebra classes as he was doggedly committed to Fortran IV (No Fortran 77 even!)

There is likely also a very prosaic reason for your finding. The kids of today are computer savvy, but in a bizarre way: they use their devices 95% of the time as dialup modems to the internet and then social media. They don't know about the computer as a serious entity in it's own right. See right here What's a directory?, What's a file?

$\endgroup$
1
  • 1
    $\begingroup$ "kids of today are computer savvy" - it's probably more accurate to say they're savvy with mobile phones and web-surfing. There's no more technical knowledge than there ever was. $\endgroup$
    – Steve
    Jun 5 at 15:45
1
$\begingroup$

I use a term for that style, which is "driving seat" programming.

The analogy is that you have to be at the screen and keyboard constantly for the computer to make any progress, like being in the driving seat of a car.

It's actually not uncommon amongst casual programmers. They approach computers - not unreasonably - as machines that assist them to do tasks they'd otherwise have to do by hand.

So the idea that they remain in the driving seat is not disturbing to them. If you were walking and now you're driving, you've not lost, you've won. If you're using a calculator instead of working out on paper, you've won.

What professional programmers understand is that computers are not there merely to assist us with our own tasks, but assist others with theirs, and ideally to operate as autonomously as possible from human attention.

Our work is to configure a business in such a way that computers operate with maximum autonomy in performing necessary tasks, and that inputs of human labour into those tasks are minimised and made as straightforward as possible.

Where labour is still required (whether our own or anyone's), a remaining goal is to release that labour as much as possible from rigid schedules of attendance or need for immediate reaction to the condition of the computer, both so that labour (including our own) is available to be deployed elsewhere on useful terms, and so that the computer moves along reliably enough to make its use worthwhile.

It's much more difficult to program for other people, or for autonomous operation, than for yourself as an operator.

I'd guess that it's still useful for people to be able to program for their own use - just as not every student of English needs to aspire to be a novelist, and even the most rudimentary skills are better than illiteracy. So I don't think it would pay to set the standard too high.

If you wanted to have a discussion with your students, you'd be making the point that professional programming is about designing programs which require interaction as minimally and infrequently as possible.

Minimally, in that work for the operator should be reduced to as few steps as possible, and each step should be triggered by the least effort possible.

Infrequently, in that engagement or availability to engage is required as rarely and on as least strict schedule as possible.

Students should also be capable of conceiving and considering contingencies and variable circumstances before they arise in practice - including breakdowns, or the need to intervene and control - and apply the same analysis so that effort always remains as minimal and infrequent as possible.

The complexities of this analysis are what make it a difficult job in practice, that few people seem able to cope with effectively.

$\endgroup$
2
  • $\begingroup$ The analogy is fine but likely not helpful: The typical R, Matlab user unlikely sees themselves as programmers so much as driving their tool towards some science/statistics etc goal. Of the billions who drive cars 90% not trying to be good drivers, just try getting from A to B $\endgroup$
    – Rusi
    Jun 5 at 2:32
  • $\begingroup$ @Rusi, agreed but if they're the sole user - they're not programmers by occupation, any more than the clerk is a mathematician by occupation - then it's hardly worth fussing about code quality. If the code mattered, you'd just furnish a programmer to them to kick it into shape, rather than expecting everyone to be a programmer. $\endgroup$
    – Steve
    Jun 5 at 15:50

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.