My first Air Force assignment was as a programmer for a weapons system that originally started with the System 360, but was using the System 370 by the time I arrived. This was the Airborne Warning and Control System, the E-3A (then B & C) Sentry. The computer on the aircraft was called a "4Pi" but it basically was a 360/370 computer packaged in a special way. The earliest models used genuine "core" memory (wire-wrapped magnets), and all thru the period I worked with AWACS (82-91) it used drum memory and 800 bpi tapes for mass storage.
Being that the 4Pi was an airborne 370, the software produced on the ground support 370 systems ported directly to it, and vice versa. Most AWACS code was written in JOVIAL, with some forays into 370 Assembler language (which is one step removed from working directly in 1's and 0's), which necessitated that the programmer have a pretty detailed knowledge of how the 370 architecture worked. JOVIAL was pretty interesting, it allowed one to insert Assembler directly into the JOVIAL code, and also allow one to directly manipulate specific word and bits in physical memory. One could create some awesome problems doing this.
The 370 was a pain in the neck to use, tho. The 360/370 series was designed when IBM (Hollerith) punch cards were king, and altho we could enter data thru CRTs by the time I arrived, the whole thing was still formatted around 80 column Hollerith cards. (I did have to use punch cards in college and in Air Force training). Also, the programmer had to tell the 360 EVERYTHING it needed to know about how to run the program: how much core memory (RAM) it would use, how much mass storage, what type of mass storage, how many tracks and bytes of the hard disk would be used, which hard disks would be used, which file number on tape would be used, whether the tape would be 1600 or 800 bits-per-inch, and a whole bunch of other stuff. This was all specified in IBM Job Control Language, or JCL, which was a programming language in and of itself. It was strictly formatted, usually required a bunch of code just to get your main program to run, and if you messed up a single comma, the whole thing would abort and kick your program out of the queue (another hangover from the punchcard-based design -- some times we spent a long time waiting for our program to get to the head of the queue -- and then a JCL error would kill it. grrrrr!!).
So with the IBM machine, the programmer had to know not only the main programming language (like JOVIAL), but also have a very good grasp of all the hardware down to the bit level, the CPU architecture, the tapes and tape drives, the various types of hard drives, and of course, the weapons system we were programming for, including Air Defense concepts, TADIL-A message formats, and so forth. And on top of it all, it was all classified Secret, so there were boocoo rules on how to handle mountains of classified paper and tapes. And no "Windows" or mice to help out -- these was hairy chested cavemen programmers carving their own punch cards out of clay and baking them in our hand-dug ovens. Almost.
But ya know, the whole thing worked pretty well, actually. Expensive and labor intensive, but the AWACS was a pretty amazing piece of work.