Useful, efficient software matches the user's needs, knowledge and skill. Don't buy a swiss army knife when you need a wrench...

About Us

A young company still hungry for challenges, with 30+ years of experience with software development from small embedded systems to distributed real time PC networks and SQL databases. A reasonable design effort to deliver high-quality software e.g. for medical devices on schedule.

External links

    Customers

 

 

     Other sites

 

Preface

This is my view of the highlights of software development and is no attempt to be a complete reference, nor an attempt to be fair to all the people that have contributed to software development over the years. A bit more thorough reading is available on Wikipedia for Programming Langiages.

Prehistory

The earliest computers were programmed in their native "machine language". This consisted of mechanical plugs in holes, recabling the computer, electromechanical switches, punched card readers or similar.

There is reason to believe there were some kind of documentation on how to solve the problem, decomposed into pseudo-operations, further decomposed into some mnemonic code that was more or less a one-to-one mapping to machine language instructions. Using symbols for jump targets (labels) and for data memory locations (variables) the Assembly language evolved. It was of course specific to the computer you were programming, and hand-translated into machine language (you wouldn't waste expensive computer time for such trivial tasks).

Anyway, Assembly language was the first attempt to write an accurate human-readable representation of what the computer was intended to do. Earliest documentation I've found is this from 1949. There was of course Konrad Zuse's Plankalkül published 1948, but I don't know whether it was really used as a programming language.

FORTRAN

FORmula TRANslator was revolutionary in the sense that it was compiled into machine code by the computer, thus reducing the amount of typing for the programmers by a factor of 20 (roughly). It was machine independent (portable between different types of computers), highly optimizing and introduced decomposition by the use of subroutines. First compiler appeared 1957.

My guess is that it reduced the number of programming errors by at least a factor of 20 too. Or possibly it allowed the programmers to write much larger programs before they became too buggy to maintain...

LISP

LIst Processing Language was inspired by the theoretical Lambda Calculus. It added abstractions to high level languages such as data structures (lists, that could contain other lists as elements), first class functions (functions as data type) allowing for anonymous functions (lambda expressions) and higher order functions. Lisp allowed for recursive functions. It also required automated garbage collection of the heap. First compiler came around 1960, with a full compiler written in Lisp ready 1962. Software written in Lisp was very slow but Lisp's expressiveness made it very popular among programmers stdying artificial intelligence.

COBOL

COmmon Business Oriented Language was developed 1959-60 to provide a language for administrative programming. It was very verbose but made an effort to make programs human-readable even for non-programmers as well as portable between manufacturers.

Algol

Algorithmic Language born around 1958 and first implemented 1960. It has influenced virtually all languages designed since. It was the first language to be specified by a formal notation, Backus-Naur form (BNF). It invented the nested block structure with local variables and functions providing information hiding, and lexical scoping defining visibility by source code structure rather than execution order. There was a major revision into Algol-68 but this language specification was so complex so overy few compilers were implemented and few programmers learned this version of the language.

BASIC

Short for Beginners All-purpose Symbolic Instruction Code, not very inventive in itself but made programming more publicly available as the language was interpreted and could be used interactively. The original from 1964 has evolved into various versions and is still one of the most popular languages for application development, much thanks to Microsoft Visual Basic.

Simula 67

Simula 67 was an extension to Algol and introduced object oriented programming with classes, inheritance, reference types and objects.

C

The C programming languge is not very inventive but was very appealing to programmers due to its portablity between platforms - from small 8-bit embedded computers to mainframes and supercomputers virtually all computers have a C compiler. Also the Unix operating system was more or less entirely written in C, or rather developed i parallel with C around 1972. Many consider it to be not a high-level language but a mid-level language due to weak typing and (usually) predictable translation into assembly language.

Smalltalk

Though not as revolutionary as the invention of object-orientation, Smalltalk is a beautiful language entirely built on object orientation and message passing invocation. Implemented initially around 1972 at Pal Alto Research Center (PARC) the first public release was Smalltalk-80. Apart from the language itself the Smalltalk environment implemented a GUI (Graphical User Inteface) with WIMP (Windows, Icons, Menus and Pointing device) thus being the origin of current GUIs.

In addition to this, the Smalltalk team introduced the Model-View-Controler (MVC) programming model, the first design pattern for interactive applications and one of the first design patterns (though the term Pattern wasn't introduced until around 1987).

Prolog

Prolog is a logic programming language, i.e. a declarative programming language where the programmer declares a set of facts and rules and then specifies what the program should determine rather than how to solve the problem as in imperative programming languages. It was invented 1972 and is still in use though not very widespread.

SQL

Structured Query Language is also a declarative language that is used to specify operations on relational databases (RDBMS). RDBMS is to date the most common structured database and virtually all RDBMSes use SQL, so it is one of the most wide-spread languages and has been around since 1978. Recent developments of Object-relational mappers allow programmers to write database operations in other languages (e.g. see LINQ) that are translated into SQL for data access.

More...

There are thousands of programming languages developed to date, both generic (Java, Python, C#, ML, ...) and special purpose (Lex, Yacc, Flash, ...). I hope this page covers most ideas implemented as programming languages though I know many prefer languages not even mentioned here. Some may find it intriguing that a new fiield of science/engineering still has a history.

Of course there is a lot more to software development than programming languages - principles like structured programming, software architecture, design patterns, configuration management, collaboration (agile/scrum, open source, ...) project cost estimates (Cocomo, ...)

 

 

Copyright © 2013 Useful Software Sweden AB E-mail: info@usefulsoftware.se, Phone: +46 708 727662 
Useful Software Sweden AB