Monday, September 7, 2015

New programming languages

Sometimes we create programming languages to solve problems in programming. (For example, we created PASCAL to use structured programming techniques.) Sometimes we create programming languages to take advantage of new hardware or system platforms.

Consider BASIC. It was made possible (some might say necessary) by the invention of timesharing systems.

Prior to timesharing, computing had to be done local to the processor. Computers were the stereotypical large, centralized (expensive) box one sees in movies from the 1950s and 1960s. Programs and data were supplied on punch cards or magnetic tape, which had to be processed on large (also expensive) readers. You could run a program, but only with the assistance of the system operator who would actually schedule the program for execution and load your input cards or tapes. There was no such thing as a "personal" computer.

Timesharing brought computing to remote terminals, small (relatively inexpensive) printing devices that let one issue commands to the computer without the assistance of an operator. The existing languages at the time (COBOL and FORTRAN) were not suitable for such an environment because they assumed the existence of card readers and tape drives.

BASIC was inspired by FORTRAN but it allowed for self-contained programs which could be modified by the user. The programs are self-contained in that they can include the data; COBOL and FORTRAN (and other languages) require data from an external source. With a self-contained program, no system operator was needed! (Well, not after the system operator started the timesharing service.) Users could connect, enter their programs -- including the data -- , run them, and see the results. This set of capabilities, all in one language, required a new language.

BASIC is not alone in being constructed in response to a system platform. There are others.

SQL was created for databases. We had the databases, and we needed a common, powerful language to manipulate them. Prior to SQL, each database had its own API. Moving from one database to another was a major effort -- so large that often people stayed with their database rather than switch.

JavaScript was created for web browsers. We had web pages and web browsers, and we wanted a way to manipulate objects on the web page. JavaScript (later with HTML enhancements and CSS) gave us the power to build complex web pages.

These languages (BASIC, SQL, and JavaScript) all filled a vacuum in computing. They also have had long periods of popularity. BASIC's popularity began shortly after its creation, and it moved from timesharing to microcomputers such as the Radio Shack TRS-80 and the Commodore 64. It was part of the original IBM PC, baked into the ROM so your could run BASIC without DOS (or disks!). SQL has been popular since the 1980s. JavaScript is in all of the major web browsers.

BASIC was challenged by other languages on small systems (FORTRAN, APL, Pascal, PL/M, C, and even COBOL). We eventually shifted from BASIC to Visual Basic and C++ (and later, Java, Perl, Python) but only after PCs become large enough to support those languages -- a program that contained its own data and a language its own editor was no longer needed. SQL remains popular, and no other languages have challenged it as the interface to databases.

Perhaps their popularity was due to the fact that these languages were designed to meet the needs of the specific platform. Perhaps they were so well designed, such a good fit, that other languages could not dislodge them. Perhaps we can expect JavaScript to have a long, productive life too. It has been challenged by CoffeeScript and TypeScript, but neither have made a dent in the popularity of JavaScript.

No comments: