Only one of Europe's three giants of programming languages is left!

I’m afraid not many people can name all three great men:

These three are Turing Award winners, and their names and inventions are scattered in various textbooks. From left to right, in order:

Niklaus Wirth

The Swiss invented 8 programming languages ​​in his lifetime, the most famous of which is Pascal, who proposed the famous "program = data structure + algorithm". In 1984, Voss won the Turing Award for developing a series of innovative computer languages.

Edsger Dijkstra

The Dutch invented the "shortest path algorithm", "semaphore", and proposed "Goto is harmful". He won the Turing Award in 1972 for his contribution to structured programming.

Tony Hoare

The British invented the "quick sort algorithm", invented Hall logic to verify the correctness of the program, proposed CSP to solve the interaction of concurrent processes, and invented the null error that caused "billions of dollars" in losses. In 1980, because of his understanding of programming Received Turing Award for fundamental contributions to the definition and design of language.

All three of them were in Europe, and they all started out studying engineering and later switched to the computer field.

They are similar in age (Voss and Hall are the same age, 4 years younger than Dijkstra), and their common interests bring them together. Not only do they often meet and collaborate closely at summer activities and academic conferences, but also in private, We also developed a deep friendship, often going back and forth and visiting each other.

Today I will tell a few short stories to talk about their great contributions.

picture

Dijkstra takes the lead

The 1960s and 1970s were the golden age of programming language development.

Fortran, the first high-level programming language, has appeared, but it is mainly used in the engineering world and is closely related to hardware.

In January 1960, a large number of top scientists including John Backus, the father of Fortran, John McCarthy, the father of Lisp, and Alan Jay Perlis, the first Turing Award winner, gathered in Paris. After some heated discussions, they ALGOL 60 was launched, a programming language that is independent of computer hardware and facilitates the description of algorithms.

ALGOL 60 has many innovations, including recursion, local variables, and begin end code blocks.

The syntax of most modern programming languages ​​is similar to ALGOL.

From the picture below, you can see ALGOL's status in the world and is the ancestor of many programming languages.

picture

Dijkstra admired Algol-60 very much. He said more than once that this was an important moment for computer science to become a discipline.

Just seven months later, Dijkstra implemented the first ALGOL60 compiler in the Netherlands, more than a year earlier than other groups.

In order to implement recursion in ALGOL60, Dijkstra introduced the concept of Stack for the first time.

Dijkstra and others also held a training class on ALGOL 60, and one of the people who came to the training was Hall. Hall had just published the quick sort algorithm. After attending the training class, he also implemented ALGOL 60 on his company's machine. , Hall's implementation has high efficiency and strong reliability, which attracted the attention of the international academic community. It entered the IFIP working group and began to maintain and develop ALGOL.

picture

The birth of PASCAL

In 1966, Hall and Voss made a proposal together to improve ALGOL. However, the ALGOL team believed that their proposal was too conservative and the changes were too small, so they rejected it.

"In a fit of anger," Voss and Hall withdrew from the ALGOL group and implemented the proposal themselves, the programming language ALGOL W.

It was in ALGOL W that Hall invented the null reference that was "criticized by countless people".

At a software conference in 2009, Hall apologized extravagantly for inventing null:

"I was designing the type system of ALGOL W, and I couldn't help but want to put null in because it was easy to implement... Unexpectedly, it led to countless errors and system crashes... In Over the past 40 years, billions of dollars have been lost."

In 1970, Voss further improved ALGOL W and became the famous Pascal

To help implement Pascal on a variety of computers, he created a new type of compiler that did not generate machine code directly, but instead generated an intermediate form of code that ran on a virtual machine.

In 1976, Voss wrote a book introducing basic data structures and algorithms, and also introduced Pascal syntax. 

The name of this book is also very magical, called "Program = Algorithm + Data Structure". From then on, this formula became famous all over the world.

picture

picture

Popularity of PASCAL

Although Pascal quickly gained recognition from universities, it took several more years for it to become mainstream.

This was due to Philippe Kahn, one of Voss's students while teaching at the Swiss Federal Institute of Technology in Zurich.

picture

Philippe Kahn saw Professor Voss's pioneering work on Pascal, and in 1982 he formed a company called Borland to engage in the development of software development tools.

In 1983, Borland launched a revolutionary integrated development environment, Turbo Pascal, which sold for only $49.95.

picture

In addition to its low price, Turbo Pascal's other killer feature is its fast compilation speed.

The compiler was written by Danish Anders Hejlsberg, who was largely inspired by the Tiny Pascal compiler in the book "Program = Algorithm + Data Structure".

For the story of Anders Hejlsberg, you can read this comic " A Man Who Supported Four Generations of Programmers ".

picture

Goto is harmful

In 1968, Dijkstra submitted a paper to ACM, sharply criticizing the overuse of Goto statements in programming at that time and his support for structured programming. He proposed that Goto statements be abolished in high-level languages!

The title of the paper is prosaic: A Case Against the Goto Statement.

Voss happened to be the editor at the time, and he conveniently changed the title to Goto Statement Considered Harmful .

In today's self-media era, Voss is definitely a headline master who is good at grabbing hot topics.

This title was like a bombshell, and many big names jumped out to support or oppose it.

Knuth wrote an article called "Structured Programming Using Goto Statements", which analyzed some common programming scenarios and pointed out that Goto is the most suitable language structure in some scenarios.

In "C Language Programming", K&R also pointed out that Goto can be used for function termination error handlers and multi-level interrupts of loops.

Even years later, Linus Torvalds, the father of Linus, and Steve McConnell, author of "The Complete Code", argued against Dijkstra's point of view, pointing out that Goto can be a useful language feature that can increase program speed, size, and code clarity. .

According to statistics, in 2013, there were approximately 100,000 gotos in the Linux kernel code.

"XXX is harmful" became a fashionable computer term that kept appearing in the following decades:

"Global variables are harmful"

"Unix style, or cat -v is harmful"

"MD5 is considered harmful"

“Human-centered design is harmful”

"Java's new features are harmful"

"Articles 'Considered Harmful' Are Harmful"

......

picture

end

Voss, Dijkstra and Hall are all in Europe, and their Turing Award wins are all related to programming languages. They can be called the three giants of European programming languages.

They were both pioneers of structured programming, and their work profoundly influenced our current programming.

On August 6, 2002, Dijkstra passed away at the age of 72 after battling cancer for many years.

On January 1, 2024, Voss passed away. He died at the age of 89.

Of the Big Three, Hall is the only one left.

In fact, in addition to these three, there is also a pair of programming language twins in Europe, Norway's Ole-Johan Dahl and Kristen Nygaard, who invented the object-oriented language Simula. Both of them also died in 2002.

Almost all the concepts and features of the programming languages ​​we use now were invented in the 1960s and 1970s, and those pioneers of programming languages ​​are gradually getting older.

The golden age of programming languages ​​has passed.

Guess you like

Origin blog.csdn.net/techforward/article/details/135451820