Most Popular Programming Languages 1965 - 2019

SamR

Joined Mar 19, 2019
5,024
In 65 about all they had (that I knew of) was Cobol for business and Fortran (PL1 for computers that couldn't handle the memory requirements for Fortran) for engineering and assembler for hardware. Never even heard of basic until later in the 70s. But I wasn't playing around with small computers. IBM 360 was the smallest for me back then and it couldn't run Fortran.
 

ericgibbs

Joined Jan 29, 2010
18,743
hi,
Stantec-Zebra, built in Holland

Designed by Willem L. van der Poel of the Netherlands PTT in early 1950s.
Manufactured by Standard Telephones and Cables Limited in South Wales.
First deliveries in 1958; at least forty machines built, most of which were exported.

This is one of the earliest computers I worked on, kept two in service for many years.
We used a form of Assembler coding
E
https://sites.google.com/site/hedwigzebra/home/stantecZebra

@bertus
 
Last edited:

Thread Starter

nsaspook

Joined Aug 27, 2009
12,998
APL and FORTH were two of my favorite languages.
I also had to learn ALGOL, LISP and SNOBOL in school before moving on to Pascal, not to mention FORTRAN, BASIC and ASM.
FORTH is still around in machine controllers. We still have old machines with FORTH processors, the RTX 2000. Not my favorite language but I still have a few books on the shelf for it.
https://forum.allaboutcircuits.com/threads/old-embedded-systems-that-are-still-running.132038/
https://forum.allaboutcircuits.com/...uages-for-embedded-system.145842/post-1240362

My favorite language was MODULA-2, a PASCAL family language for systems programming. The latest C++ 20 standard will include modules much like MODULA-2 did in addition to headers and includes.
https://pspdfkit.com/blog/2020/cpp20-in-2020-modules/
https://docs.microsoft.com/en-us/cpp/cpp/modules-cpp?view=vs-2019
 
Last edited:

cmartinez

Joined Jan 17, 2007
8,212
My first language was BASIC (for the Timex-Sinclair 1000, back in 1982) and then I moved on to Pascal, Fortran, Apple II BASIC, Cobol, Quick Basic, LISP, MDL, Visual Basic, 8051 Assembly, DBASE, FoxBase, VB.Net, PIC16 Assembly.

And now I'm currently learning Kotlin, which shows up at the bottom of the very last frame in the video. This language is proving to be a challenge, because it's based on Java, which I've never programmed in and has a structure that I'm not familiar with.
 

cmartinez

Joined Jan 17, 2007
8,212
Not even remotely familiar with Python... my thinking at this moment is that smartphones are the most promising future when it comes to front-end applications. And Kotlin is the most promising language in the future of smartphones. That's why I'm making the huge effort of learning it.
 

joeyd999

Joined Jun 6, 2011
5,220
I'd like to see a distinction between "popular" vs. "lines of code".

COBOL (and, associated, RPG and CICS) should have been higher on the list for much of the time* -- in terms of lines of code. But I suppose most COBOL development happened "behind the scenes" at private commercial and financial concerns. It'd be difficult, if not impossible, to track.

*Edit: for proof -- early in my career I worked for the largest private computer consulting firm on earth. Nearly all of our code was COBOL.
 

Chris65536

Joined Nov 11, 2019
270
I started with BASIC, then 6502 machine language on the Apple IIe. There wasn't an assembler program, only a "disassembler". So I'd enter a bunch of machine codes, then list it with the disassembler to check my work. I'm pretty sure I got started with a manual written by Wozniak. These days at work, I use Access and VBA.
 

joeyd999

Joined Jun 6, 2011
5,220
I started with BASIC, then 6502 machine language on the Apple IIe. There wasn't an assembler program, only a "disassembler". So I'd enter a bunch of machine codes, then list it with the disassembler to check my work. I'm pretty sure I got started with a manual written by Wozniak. These days at work, I use Access and VBA.
I'm surprised you didn't do what the rest of us did: write your own assembler (in machine code!).
 

Chris65536

Joined Nov 11, 2019
270
I'm surprised you didn't do what the rest of us did: write your own assembler (in machine code!).
I was happy to make spinning shapes and really fast counters. I wasn't smart enough to write an assembler. My only resources were the manuals and a subscription to Nibble magazine. Still, it got me started, and the machine language stuff was kind of enlightening as to how computers actually work. Then I went to college and forgot all the Apple II stuff. There was this new thing called the Internet!
 

BobaMosfet

Joined Jul 1, 2009
2,110
This is because Google revived Java, which was a dead language, about to be abandoned (and rightfully so). Java only holds a high rank because of it's ubiquitous use on cellphones. And yes, Java is a language I know. I've written games with predictive logic (quake style) using it, and frankly. it sucks.

Let's put it this way- Java can update a graphic screen on a cellphone, between 10 and 90fps at most. In C, you can do it over 100,000fps. I kid you not. You just have to know what you're doing. Sadly, while javascript is an essential language for doing anything cool on the web, it was a language designed by committee- pile of crap like most 'committee' endeavors. It has so many failings, incomplete aspects, and other issues with it... And yes, I know it too, so I'm not just badmouthing it for the sake. In fact, I'm highly competent and familiar with virtually all programming languages.

Still, at the end of the day, C/C++ has not been surpassed by any other language for power, performance, capability, and is the go to language for anything serious. IMHO.
 

Thread Starter

nsaspook

Joined Aug 27, 2009
12,998
Did you, by any chance, use Stony Brook Modula-2?

Bob
I started with TDI Modula-2 for the Atari-ST as an alternative to programming the MX2 operating system code in C. I loved the discipline and structure of the language but time passed it by.

Some old Atart-ST Modula-2 code
Code:
MODULE mx2net; (*$T-$S-,$A+ *)
FROM    SYSTEM  IMPORT  CODE,ADDRESS;
FROM    NETWORK IMPORT  initnetwork,recframe;
FROM    GEMX    IMPORT  BasePageAddress;
FROM    GEMDOS  IMPORT  TermRes,Super;
FROM    BIOS    IMPORT  Device;
VAR
       vblptr [456H]                            : POINTER TO ARRAY [0..7]
                                                  OF ADDRESS;
       i                                        : CARDINAL;
       ssv                                      : ADDRESS;

(*      it runs as a background process in a vbl time slot              *)
(*$P- *)
PROCEDURE VBLrecframe;
BEGIN
        CODE(02f39H,0,04a2H); (* move.l $4a2,-(sp) save BIOS pointer *)
        CODE(04b9H,0,02eH,0,04a2H); (* sub 46 from pointer *)
        recframe; (* check network for data *)
        CODE(023dfH,0,04a2H); (* restore BIOS pointer *)
        CODE(4e75H); (* rts *)
END     VBLrecframe;
(*$P+ *)

BEGIN
        initnetwork(HSS);
        i:=1; (* don't use 0 because some programs don't check. *)
        ssv:=0;
        Super(ssv);
        WHILE vblptr^[i]#0H DO
              INC(i);
        END;
        (* set up vbl vector for NETWORK input *)
        vblptr^[i] := ADDRESS(VBLrecframe);
        Super(ssv);
    WITH BasePageAddress^ DO
    TermRes(CodeLen+BssLen+LONGCARD(CodeBase-ADDRESS(BasePageAddress)),0);
    END;
END     mx2net.
C:
/* These are some interface routines for MX2 using C. It is written     */                                                                                                                                                                                                          
/* using Mark Johnson's Shareware C compiler version 1.2                */                                                                                                                                                                                                          
/* If I receive requests maybe I will write a complete interface or     */                                                                                                                                                                                                          
/* someone else can feel free.                                          */                                                                                                                                                                                                          


#define MX2GLOBAL       0x144L
#define MX2MAGIC        22261L
struct  PIPE    {
        char    pipename[80];
        short   buf[1024];
        int     bufsize;
        int     bufhead;
        int     buftail;
        int     cnt;
};
struct  sysreq  {
        int     req;
        int     pid;
        long    magic;
};
struct  spinttype {
        long    proc;
        int     pid;
        long    data;
};
struct  sysvar  {
        long    *currentprocess;
        int     *MULTI;
        long    *slicebegin;
        long    *contextswitch;
        long    *command;
        long    *request;
        long    *CRON;
        int     *spintenable;
        int     *spintmask;
        long    *spint;
        long    *bpsave;
        long    *pipes;
        long    *sysmemsize;
        long    *gemsaveGvec;
        long    *StartProcess; /* The following are pointers to fuctions */
        long    *SwapProcess;
        long    *TermProcess;
        long    *NextPid;
        long    *SleepProcess;
        long    *WakeupProcess;
        long    *ChangeProcessPriority;
        long    *MultiBegin;
        long    *MultiEnd;
        long    *DozeProcess;
        long    *WaitProcess;
};
        struct  sysvar  *mx2var;

main()
{
        long    *contextswitch,*sysmemsize;

        GetSysVar(); /* store mx2 system variable pointers in mx2var */
        contextswitch = (long *) mx2var->contextswitch;
        printf("Total context switches  %lu   / address %lx / \n",
                *contextswitch,contextswitch);
        sysmemsize = (long *) mx2var->sysmemsize;
        printf("MX2 system memory  %lu   / address %lx / \n\n",
                *sysmemsize,sysmemsize);
        exit(0);
}


/*      This routine will read MX2 system variables and procedures      */
/*      and return them as a pointer in mx2var.                         */
void    GetSysVar()
{
        long    *adr,ssv;

        ssv = 0L;
        ssv = (long *) trap(1,0x20,ssv);
        adr = MX2GLOBAL;           /* system variable address pointer */
        mx2var = (struct sysvar *) *adr;
        ssv = trap(1,0x20,ssv);
}
Niklaus Wirth, a Master of computer science and electrical engineering.

http://www.projectoberon.com/
 
Last edited:
Top