drogon wrote:
Chromatix wrote:
Having understood this fundamental difference of design, you can start to see why Real Programmers disparage BASIC for not supporting proper structured programming.
I'm a real programmer (I get paid for it) and I really do not have any sort of disparaging thoughts towards BASIC whatsoever.
I +1 what drogon wrote. There are too many billions of lines of functioning, working BASIC code (including BDDs Thoroughbred, MS's VB, MS Access, MS Excel, legacy PICK systems, plus who knows what else) in the world doing real work, solving real problems, efficiently, for it to be criticized so harshly.
I did Great Things in BASIC on the PDP-11 back in the day, I then went on to Great Things in VAX BASIC. I did Great Things on an Alpha Micro.
On the VAX, we had one process, it was essentially a BOM problem (Bill Of Materials, which is processing on a hierarchy of dependent parts). One guy saw that and said "I MUST use Pascal cuz pointers!", and tackled the problem.
He then wrote his code, fired it off, and we watch the counters tick by.
We watched them, and watched them. I stopwatched what I saw and went to our boss let him know that this process was going to take 23 days.
I rewrote it in BASIC, leveraging the VAX RMS, which is essentially ISAM. And my process took 23 hours.
The problem wasn't Pascal, it was HOW it was implemented in Pascal. I chose BASIC because it had the best interface in to RMS (you could use it from Pascal, it's just easier from BASIC). Simply, the Pascal option used far, far to much native RAM (since the developer relied on direct pointers) and swapped to death. Mine relied on keys and ISAM records. And any benefits that Pascal offered didn't overcome the better interface to RMS that BASIC had.
Chromatix wrote:
I use "Real Programmer", capitalised as in the Jargon File, to refer to people who really knew what they were doing and tended to find most high-level languages limiting (not just BASIC). They were particularly scathing about BASIC because its limited features actively got in the way of their accustomed mode of solving problems, which usually involved Algol-style structure even if thy were working in assembly.
Craftsmen don't blame their tools. "Real Programmers" get the job done, they find a way. There's a great story of a guy used Common Lisp to simulate a Forth system embedded on a space probe so they could upload a fix to it in flight.
I've written very clever BASIC code. I've written a multi-user scheduling system controlling 16 simultaneous displays, wall mounted (via some smart controller code I wrote in C) and desktops, while interfaced via remote messaging to Yet Another system (over a very crude, serial based network). All in BASIC. BASIC didn't support tree structures, so I wrote some. Didn't have built it sorting, so I wrote that as well. All of those algorithms from Knuth can be written in BASIC. Folks would select the resources they wanted, my system would propose a scheduling option using a simple best fit algorithm.
I've written truck routing systems in BASIC. Yes, with addresses, and lat long, etc. etc. all in BASIC. I had to parse addresses (thankfully I didn't have to process Salt Lake City), I had to geocode them all myself. I asked the client if I could run the routing software over night and they said "No" because in order to do that, you had to know how many drivers you had. Well, being a charity, they didn't KNOW how many drivers they had until they showed up in the morning (always possible a recovering driver relapsed and didn't show up). So, I had to route my 500 or so daily pickups across the LA Basin in 15 minutes. In BASIC. On a 20Mhz mini computer.
I certainly appreciate BDDs all assembly network of Commodore computers, but what makes that interesting in my eye is the architecture of the network of machines via the shared drive, not that he did it all in assembly.
As I said, "Real Programmers" find a way.
I like toys, I like tools, just like everyone else. I look at a measly RSTS/E PDP-11, or even a CP/M machine, and just stand in awe of the raw capability a high level tool like BASIC can provide. What an extraordinarily simple system that bring so much value out of this little box with just the right software, solving just the right problems.
BASIC is an unsung hero. BASIC was the beginning of the home grown programmer. Whether it was my Dad typing in formulas and stock numbers from the newspapers, using clever variable names like A, AA, B, BB, and complaining how he couldn't use AAA or BBB. A Doctor crafting their own Medical system after a busy day at the office (did your doctor write their own office system? Mine did.) Some kid typing in Wumpus for the 100,000th time.
Empowering people, solving problems. That's what these things are for. It's nice we can surf the web, shop, and watch videos. But I'd much rather beam with pride over a well printed invoice or an accurate aging that has the accounting folks nodding and smiling than any of that stuff.
Once walking through the office, a colleague and I came upon one of the people that gets reports from our system. She was cutting one of them up, reordering it, taping it together, and photocopying it. We said: "You know, we can do that for you." "Oh really!??" Now you can see how a simple sort can bring light to someone's day.
And, no, given greenfield, I would probably not choose BASIC today. But I wouldn't turn it away either.