Wednesday, November 10, 2010

Niklaus Wirth

I first heard of Niklaus Wirth name during my freshmen years at college. I didn't know who he is, but my professor keep repeating his name in correlation to MODULA-2 language that we used in our classes. At first I did't like MODULA-2 language because it look very simple and well not very modern language (then it was all about C++ and Java). But as time pass, I realize that simplicity of this language and shortage of libraries  (as compare to Java for instance) is really beneficiary because it did't divert our attention to less important stuff. Off course most people will recognize Wirth as father of PASCAL language.

Name of Niklaus Wirth can also be connected to programming languages as: Euler, PASCAL, Algol, Oberon, PL/0.  Also Oracle's PL/SQL is very similar to MODULA-2 and Oberon for example. You can learn more about him at wikipedia.

I have recently watched interview with him on you tube and  I want to repeat most important and useful notes from this video. You can really recognize how he really understand problems of old and modern programming languages and programming concepts and gives some solution to this issues.

Video is separated into 3 parts, but first part is deleted or something, so here are only second and third part. I decide to do overviews of these videos because I really think that there good and useful observations that I want to repeat.

Second (first) video is not so interesting in concepts insights, but it is more interesting for historic overview of PASCAL language.

In third (second) video Wirth talks about gap between real hardware and high level language (like Java, C#) and how compilers need to bridge this gap in between. He say that because this gap is getting wider, it is more difficult to bridge this gap.

Also he say that hardware people are only looking for more speed and they are not taking software aspects into consideration and thus making programmers life more difficult. Here he is talking about difficulties that new hardware is creating for compilers and because of that new compiles are more complex and they really should't be if you think about it. They should be simpler and simpler as we create more complex CPUs.


The most interesting part of this interview is when he start talking about programs verification. He define program verification like exercise if formalism and say that you can make verification using only basics language axioms and derivations rules that are in heart of definition of language. This is really what it is all about if you ask me: clear formal programs and programming concepts. He say that we need formal and precise ambiguously defined languages for this (language based of clear rules and without access to any hardware stuff - hint any pointer language does not belong to this group, OBERON does).
He stated that Java is beautiful language, but it is long and lengthy and unnecessary complicated. And if you design language in some Ad hoc way and think that compiler will deal all difficulties, then you cannot have good language (C++ anyone? :) ).
He say that using languages that are not clear and formal lead to more necessary complexities and disasters. He criticized universities because they only buy software from companies and do not create new values and ideas any more.

Also as final statement he say that modern systems (and current programmers) are challenging many difficulties because they need to use libraries which do not have properly specified interfaces and many work goes to linking our program with this libraries. This leads to buggy programs and debugging as he stated is not science and not even engineering but only try-error principle.

You can also find great qoutes on wiki from this great scientist and engineer.

Also please read his book about Algorithms and Data Structures. This book was holy grail at our university (translated to our native language) and if you read it, it will teach you basic principles of good programming (algorithms + data structures = program).

No comments:

Post a Comment