What's happening to programming in text?

Where is text programming going? Even though all I am looking for these days is an environment or a platform in which the programming is in text, at most I’m finding ones where there are bits and pieces you can do in text, and a bunch of mousing around that ties it all together.

The latest is PLCs, programmable logic controllers. The hope was that these would be versatile enough to automate an experiment, but would be stable and reliable. Once upon a time, PCs did this pretty well, but now they’ve become more like a shopping mall, with a huge amount of business oriented traffic going on and no real way to control it.

So, the PLC programming is off to a start. The text programming language is like Pascal, they say. Except, you can’t define variables; that gets done with some other tool that’s like a database with a bunch of dialogs and rows and columns. And, you can’t define functions; you make a separate little project out of each one, and link them all together with a thing that looks like the left half of Windows Explorer. So it’s all in scattered bits here and there, and noplace that feels integrated.

I guess the most textual generally oriented tool I know now is VisualStudio with its languages, like C#. The language actually seemed pretty elegant and powerful. But there’s still a huge amount of fiddling with interfaces and fiddling with forms and fiddling with properties and so forth.

The thing is, I guess, I don’t quite know what to ask for, what it’s called. 20 to 30 years ago, computers were generally for programming, and you’d get a book that explained how the language worked, and you could read the book and write a program and get it working. You could read the program to somebody over the phone or paste it into an email. You could paste it right here -> <-. Now I’d have to try to recite a litany of little dialogs and forms and windows. There was a little yellow triangular thingy, and then a box that asked for this number, which I put in - I think I put it in, anyway - and then everything died. It’s like giving directions with no street names, no odometer, no compass. It’s less and less programming, and more and more fiddling around until nothing noticeable seems wrong.

This is not to say that the old computers were better, or that they should still work that way. It was a pain in the ass that you had to do things with memory in 64K pages, and couldn’t manipulate things that were bigger than that without having a whole different approach. It was a pain in the ass deciding what loops could be counted on never to iterate more than 32767 times. It was a pain in the ass unpacking and packing arrays because memory was so small. It was a pain in the ass that all names had to be 6 characters or less (or 8 or whatever). It was a pain in the ass to deal with the 640K barrier, and debates about extended memory versus expanded memory, and all the excludes in config.sys, and things that would go wrong either with TSRs or because of them. But it seems that they kept adding messy things faster than they removed them. I still occasionally hit 64K page problems, like their trickle-down effect on Excel data set limitations. I found a nice Forth compiler but it still fights with PharLap extenders.

And the ground is always moving, we’re always building on sandbars. I worked a bit last month to turn an algorithm into software - it takes two real number arguments, and returns an array of about 5 to 10 reals that represent as neat numbers, few digits and tending toward 0 or 5 or maybe 2, 4, 6, or 8 in the last digit, that cover slightly more than the range between the two input arguments. If you want to automate making a graph, you need this routine to create the labels. So, anyway, I needed that, and wrote a routine that did it, in something under WinXP. Trouble is, I did this in ROM Basic on a CPM machine over 30 years ago, and several times in between. It won’t stay written. There’s nothing new about this little shack, but the real estate underneath it keeps changing. This shouldn’t have to be. Information machines have been way faster and more accurate than a diligent human for decades, but they don’t even outlast a dog.

Why isn’t there a tidy box available someplace, that has been around a few years and will be around a few more, that has a flat memory space, and a simple filesystem with 40 character names, and some clean vanilla dialects of C or Fortran or Modula-2, and a small enough number of video modes that you can generally just stick with one? I think somebody could build one with 1988 technology (there would no longer be any of those patents in force). They still sell 80386 processors - hell, they still sell Z80’s, lots and lots of them. This thing could cost a few hundred and people would stick them all over to do dedicated jobs.

Ah, well, shit, I think I’m going to go home and pet the cats. That’s a very nice bit of complicated recursive technology that has been stable for centuries.

Yes, I think I would suggest you go home and pet the cats too.

:smiley:

And this is why every programmer should know how to use emacs and emacs lisp. :smiley:

Not any kind of answer to you whole problem, but if I were trying to do something that needed a fairly tight machine with no frills and no fuss, I would go for one of these:
Soekris net4801 info. I would put Ubuntu Linux on it.

It’s a fanless single-board PC that you can run anything on. Instead of a hard drive, it uses a compact flash memory card (though they offer a 2.5" internal hard drive adapter)

I set one of these up as the main firewall over the summer at my nephew’s school, running m0n0wall, and I have been seriously impressed with the quality of the hardware.

For a computer geek, it would be a relatively easy matter to run some flavor of Linux on this, build and compile your own programs in C++ or whatever you choose, and have it serve as a slick little appliance that just works.

I guess I’m not quite sure what the OP is looking for. Kind of rambling… Is there a particular problem you’re looking to solve, or just hoping to reclaim the glory days of the C64?

Have you tried using something like Python or Ruby? You can get a lot done with just a text editor. They have nice interpreters you can run that give you immediate feedback, as well.

Programming a PLC with structured text is difficult and wonky because everyone programs them (and always has) with ladder logic or function block diagrams, so the programming environments and compilers were specifically designed for those roles. Most ST implementations seem like band-aids that fit that ladder logic model.

PLCs are in many ways old school devices. Lots of manipulation of words at the bit level, boolean operators, communication protocols that are decades old… Things like scan times and I/O order of operations are very important. Newer PLCs have some REALLY nifty features that boil down to an object oriented programming language, but you still kinda need to work in the confines of ladder logic or FBD. That’s life.

Also, is the OP some form of stream of consciousness brain fart? Or just rambling?

Mmmm. Thanks, folks. The OP is some form of rambling stream of consciousness. Not a brain fart, but still uncertain what is missing.

Though, I think some of it came to me last night. Something in the nature of textbooks changed about 20 years or so ago, though not cleanly and suddenly. Instead of a cogent narrative, the discussion became diffused over various sidebars, illustration captions, and other little subvenues. Magazines were perhaps always more likely to do this, and Scientific American offers nice examples - you can go online and download the text of many articles, and if you read the text and then compare thit with the printed magazine the distinction is very obvious. That narrative is still there, but if you go through the magazine version page by page you have to keep jumping into the narrative and back out. What would otherwise be a story is scattered. Superficially, it feels stimulating, it feels like variety. But what is actually happening is that the train of thought keeps jumping around. The content isn’t varietous; the process of consuming it is. The movie isn’t full of fresh moments; it’s interrupted by commercials, snacks, and pee breaks.

Programming these days seems full of context switches, for the programmer. Even the instructions for the PLC I’m using today say you should jump between all four languages on a task by task basis, and I think there are really at least five languages, because the IDE itself, with all its little panes and glyphs, actually becomes the glue that holds together all the tasks. Does execution pass in some sequential way between the little folders in the Project Organizer tree? How does scoping work on the scale of all the dialog boxes that configure things? What are the interactions between the timing of the Counter/Timer instructions and the timing instructions you accomplish in the Controller Configuration Box? Why do they stress the difference between “instructions” and “functions” over and over, and then insist that log10(x) is an “instruction” that “moves a value into Destination” and give "Destination := log10(Source); as the example - aren’t they confusing themselves, and isn’t the assignment operator “:=” the only instruction here, and isn’t “log10()” an operator? It’s making a confusing mess of what used to be clearly understood as linguistic questions.

I do appreciate the suggestions. In particular I look forward to following the Soekris link. I haven’t tried Python or Ruby, thinking of them as languages - already, all the 20 or so languages I know are perfectly nice in this regard, and it’s the systems that are the problem. Unless, perhaps, Python and Ruby environments are more clearly and honestly integrated? Is that it?

I don’t want to reclaim the supposed glory days of the C64. The C64 wasn’t glorious. All those things had tremendous difficulties. It just seems that there are 1000 environments and systems and platforms that moved laterally from the C64, and close to 0 that fixed the things that were wrong. Now “Hello world” takes half a gigabyte, and far too much has to go right for it to work.

“Soekris Engineering net4801
[…]
Please note that this product has reached end of life status.”

Oh, god, please stop, you’re killing me here.

They can’t get the processor anymore. I believe you can step up to the newer models, but this one works just peachy, and it was “end of life” when I bought it.

“The AMD Geode SC1100 processor used in the net48xx series boards was discontinued by the manufacturer some time ago. Soekris Engineering did a significant last time buy, but our stock is now running low. We have been able to locate some additional stock, but only of the 233 Mhz version.”