Even when programming in "high-level" languages (aka FORTRAN IV), input devices could be quite rudimentary. As an after-school activity, I got to punch code using an IBM Port-A-Punch, which was simply a plastic frame holding a pre-perforated 80-column card, with a stylus that you used to push out the chads to write statements in IBM card code.
Though the cards were 80-column format, they only had 40 usable columns --columns; I can't now recall whetherthink it was the even or odd columns. This meant that every other column was effectively a space character, i.e., no holes punched. For FORTRAN code that doesn't matter [1] since spaces are ignored, except in Hollerith constants, so you doubled up the count.
Actually, we only had one actual Port-A-Punch to share between a half-dozen nerds, so I made my own: straighted-out paperclip expoxied into an old BIC barrel, polystyrene (styrofoam) backing pad. Totally crap, but totally available.
Programs were submitted by post office mail to be run on a 7094 under IBSYS using the PUFFT compiler. Half-a-week later you learned of your mismatched parentheses.
Kids today and their IDEs - huh! :-)
[1] Except that comment cards -- punched in column 1 -- were not possible with even-column pre-perforation. We had special cards with a machine-made hole in addition to the pre-perforation.