Programming language BASIC is 60 years old

BASIC was the first language I mostly learned, in Junior High. Visual Basic was the first language I learned professionally, at Microsoft, no less.

3 Likes

IBM 360 assembler and PL/1 in college

6 Likes

Oooh. Java, the “COBOL of the 90’s”.

BASIC … First on the PET, then I used lots of variants on the MS dialect, then the Dartmouth dialect (a la Wang office systems) and (IIRC) Basic/09 for OS/9 with Pascal mixed in, and there was an odd dialect that came with QNX 1.0.

3 Likes

:thinking:

… more like the Pascal of the 21st century

Nobody really likes it, it’s not the best tool for any task, but it’s the first thing kids are taught now so they might as well use it for something :technologist:

6 Likes

If he prefers programming in Java, what is it about him that makes him better?

Care to rephrase that? Why does he like Java? Was that the question?

Me, I like Java. I’m not going to say there’s nothing good to say about Python or a few other languages that are less verbose, have a few libraries that make certain types of applications easier, etc. I’ve adapted to several languages over the years and accepted a few paradigm shifts.

2 Likes

It isn’'t the Java programming language that bugs me. It’s the Java software ecosystem:

Oracle now controls Java language development and sees Java licensing as just another way to suck money out of customers. Yeah, theoretically there’s OpenJDK but commercial software usually wants Oracle Java.

Every Java application I’ve had to look at is a system administration nightmare. They’re hard to install, hard to upgrade, hard to customize, and the JRE sucks tremendous resources. And applications are often supported only under specific JRE versions despite, in theory, Java’s claim to be a stable, portable language and runtime. So often you have to maintain multiple concurrent Java runtime installations, including applying security updates to all of them if you can.

4 Likes

Server-side java, me. Wouldn’t put it on a desktop except to develop. Had to kick over the application server a couple of times for deployment and clear the cache but never had the nightmare you describe. Well, that was a different team but there wasn’t a big problem helping out, nor keeping the developers’ local environment current. Which was fine even when the servers were running Unix vs. Windows. Multiple servers with firewalls between. As for Oracle, well, we were already committed to the database and to Sun Microsystems’ Java when they took over. Python for automating the deployments. The system stayed up.

2 Likes

Simplify that code. Ask your boss for arrays.

2 Likes

Meme Reaction GIF by Robert E Blackmon

3 Likes

My first professional programming gig was a VB project. I worked for a place that digitized their client list in order to build a CRM. This was early 90s, and really forward looking. Unfortunately they found out they no longer had a simple address book that the admin staff could use, and getting the consulting firm to do it would cost a fortune. So I wrote a read-only interface to the DB that could also spit out a file suitable for mail merge.

Never finished it, though. They didn’t trust me enough to let me test it on the actual DB.

It was doing a lot of stuff to format program help with markup, that looked okay on a Vic-20 (22 character width) to a fancy DEC terminal (132 width).

Not having an HP 3000, I think I’d rewrite it in something a bit more structured. :rofl:

^rj
 UNIHELP
 -------

^m3-3
^o7
Unihelp is short for Universal Help utility program.  Many
Access programs use Unihelp to provide an easy standard
way of getting help/information from Access or inside
programs.

     General information about a program is available by
typing "?".  Usually detailed information is also available.
Typing "??" will show the topics under which there is detailed
help.  To print the detailed help under a topic, type "? alpha"
(where alpha is a topic.)  To print ALL of the detailed help
as well as the general information, enter "?!".
     To get information about a program from Access, prefix
the name of the program.  E.G. Typing "WALL ?" at the  ==>
prompt will give general information about Wall.

**EXPERT NOTES
     Unihelp is a aid to help with the chore of documenting
programs.  When passed the name of a program's help file and
the sort of help wanted, Unihelp gives users two levels of
information.  (Depending on the file.)  There are four
different ways Unihelp can work:

^m3-3
^o7
 1)  ? - When just a single question mark is sent to Unihelp,
only the first paragraph of instructions will be given.  This
first paragraph should be a brief overview of instructions and
commands.  (Unihelp's first paragraph HAS to be long.)

 2)  ? comname - When a question mark and a command name is
sent, Unihelp will print the detailed help paragraph (if any)
for that command.  Unihelp will print the help for the first
command to match as much of the command name as given. (e.g.
if "? R" is sent, Unihelp would print the detailed help of
command "RUN". (If RUN were the first command beginning with
R in the help file.))

 3)  ?? - Unihelp will print all the commands names for which
there is detailed help available under.

 4)  ?! - This will print ALL the help 3Z+9  (The first
paragraph and all the detailed help.)

**PARAMETER PASSING
PASSING PARAMETERS:

     To pass to Unihelp the name of the help file and the type
of help wanted, the following must be in Q1STRING:
     "FILENAME/LOCKWORD.GROUP "+ the sort of help. (?,
? command, ??, ?!) (e.g. "ILUNAR/SKY.KIRK ? THRUST")

     If there is nothing in Q1STRING, Unihelp will print the
help for Unihelp.  If the help file is unavailable or there
is no detailed help under a command name, Unihelp will reply
accordingly.

**FILE SETUP
HELP FILE FORMAT:

     The help file must be setup as follows:
 1)  The first paragraph, containing a rough overview of the
help available.  This paragraph will be printed as is, and
shouldn't have a command marker.

 2)  Various detailed paragraphs, prefixed by a command marker
line.  These paragraphs will only be printed if detailed help
about that command or all commands is requested.

     A command marker line is used to let Unihelp know what
detailed help is available, and where it is.  The marker line
should be preceded by a blank line (for clarity), and looks
like this:

 **COMMAND
(The first star should be in the leftmost column.)  "COMMAND"
is the name of the command that the following paragraph gives
information about.
(The marker line is never printed when help is requested, it
serves as a marker for Unihelp to search the help file for.)

**TEXT FORMATING
     Unihelp has 2 ways of modifying the help output.
 (1) Adjustable left and right margins.
 (2) Right justification.

^m3-3
^o7
     The left and right margins can be indented up to six
spaces from the edge of the terminal output.  (Six spaces
should be used with care.  Consider the effect on 32 width
terminals.)
     To set the margin the following is used:

     ^Mx-y   Where x is the left indent, and y the right.
(Either or both can be omitted, and will be set to zero.)

     The margin setting will last until set again or the
next detailed topic is printed. (With ?! option.)

     Text output can be right justified (padded with random
spaces until justified to the right margin.) if wished.
     To right justify use:
     ^RJ
     ^NJ will turn off the right justification.
3 Likes

Mhh, that does not sound right (in the dialect I knew).
\ is “expansion” dyadic or scan “op” as operator, not reduction (/, as in +/) and monadic ρ gives you the size/shape of an array.

I’d have written +/ ⍳100 as in plus reduce index 100 to get the 100th triangular number.
Or, using , +\⍳100 to get a nice vector with all the triangular number from 1 to 100.

TryAPL Version 3.6.1 (enter ]State for details)
Fri May 03 2024 14:28:53
Copyright (c) Dyalog Limited 1982-2024
     +/⍴\100
100
  
      +/⍳100
5050

      +\⍳10                                                                                         
1 3 6 10 15 21 28 36 45 55 

As for BASIC, the last 5 character program +\⍳10 would be something like the following, a real APL compiler would optimize away most of the storing, this is a step by step translation.

10 REM This is the iota 10 part "⍳10", creating a temporary array with numbers 1 to 10
20 FOR I = 1 TO 10
30   S(I) = I
40 NEXT
50 REM This the plus scan part "+\", giving the running sum of the array elements
60 FOR I = 2 TO 10
70   S(I) = S(I-1) + S(I)
80 NEXT
90 REM This is the implicit print, as the resulting array value was not used or assigned.
100 FOR I = 1 TO 10
110   PRINT S(I) " ";
120 NEXT
1 Like

I used to be of that opinion, and I’ll never love java, but containers have really simplified a lot of that aspect, abstract away the storage, give it access to a DB how you prefer, and you can easily upgrade/rollback things like Jenkins, or Artifactory.

1 Like

I used to carry those articles into the Radio Shack I passed while walking home from school, sit down at their TRS-80 display, and type the code in. At first they got upset about that, but since they had very few customers in the afternoon, they ultimately ignored me.

6 Likes

Ahhh yes, Java. In the real world, WORN (write once, run nowhere). As a former sys admin, I hated JRE with a purple passion :laughing:

4 Likes

It was 48 years ago (:bangbang:) and I only took one class; without hesitation, I defer to your knowledge. :upside_down_face:

2 Likes

:roll_eyes: Dude… If you don’t like that language, you don’t have to use it. I mean there is no lack of programming language choices out there, so use what you enjoy or what you find useful… But how about not acting like what language you decide to use makes you somehow superior to others. It’s really just a nerd-masculine-pissing contest over something that comes down to an opinion and doesn’t actually matter. :woman_shrugging: But I see no reason to directly attack other users and LAUGHING at them like some grade school bully for posting a fucking link… The world sucks ass pretty bad right now, so maybe don’t take a light hearted convo as an opportunity to attack other users and make them feel like shit.

6 Likes

Weren’t IF…THENs were just conditional GOTOs in those days?
Have some birthday spaghetti:

10 IF years = 60 THEN 30
11 REM years is volatile and will be automatically incremented from time to time.
20 GOTO 10
30 celebrate
40 END