Trygve, Thank you for pressing the SEND button with a shaking hand. I am inspired by your words. But I am only 22 years younger than you, and I hope that others are reading and appreciating what you have to say.
Dave On Thu, May 10, 2018 at 12:02:44PM +0200, Trygve Reenskaug wrote: > At 87, I'm an old man. I'm told that I don't understand modern software, > which is true. I use some programs daily: WIN7, Pharo, Thunderbird, ... > From time to time, I am told that a new version of the program that > fixes bugs and improves security is available. Press the button to > install it.?? So I wonder: Is modern software out of control? Does > /anybody /understand it, or is it so complicated that it is beyond human > comprehension? Why didn't they get it right the first time? Most of us > have the GOF book on Design Patterns on our bookshelf.?? In the > introduction, they write: > > /An object-oriented program's runtime structure often bears little > resemblance to its code structure. The code structure is frozen at > compile-time; it consists of classes in fixed inheritance > relationships. The runtime structure consists of rapidly changing > networks of communicating objects.[GOF-95] p. 22./ > > ??and > > /???, it's clear that code won't reveal everything about how a system > will work. [ibid.p.23]/ > > Modern programmers are thus reduced to relying on testing the code. In > the words of Edsger Dijstra: > > /"Program testing can be used to show the presence of bugs, but > never to show their absence!"[REF] / > > Modern programmers know all this but accept it as an unavoidable part of > progress. Some may have seen it as a challenge, but they are up against > the enormous inertia of a community who haven't changed their > fundamental model of programming since the advent of the von Neumann > stored program computer in 1948. > > I can't resist another quote; this time from Tony Hoare's TuringAward > lecture: > > /???There are two ways of constructing a software design: One way is > to make it so simple that there are obviously no deficiencies and > the other is to make it so complicated that there are no obvious > deficiencies. The first method is far more difficult. ???[Hoare-81]/ > > In the lecture, Hoare was bemoaning his unsuccessful fight for > simplicity. Developers, particularly committees?? of developers, seem to > love complexity for its own sake. I have never accepted that bugs are an > unavoidable part of software.(See "2.???? ??Get it Right the First Time"?? > in the draft article). Bugs are parts of the facts of life but they are > not an acceptable part of it. Ideally, my software should be /so simple > that there are obviously no deficiencies. /One of my attempts at coming > to grips with the problem is the DCI programming paradigm. Here, /the > runtime structure of rapidly changing networks of communicating objects/ > is specified in explicit code that says (almost) everything about what > happens at runtime. Wouldn't it be wonderful if Pharo were to become > first to overcome the GOF limitation? I challenge you to play with > BabyIDE on Squeak?? and become convinced that it is a step in the right > direction. > > I won't reread this message before I?? send it. I suppose it's > controversial and should probably delete some or all of it to avoid > angry answers. Another reason why I probably shouldn't send it is that I > do not have time to engage in a discussion. I /must /give priority to > finishing my article on DCI and PP. (A ~50 page draft is on my home > page; it will be updated from time to time) > > I press the SEND button with a shaking hand > --Trygve > > > > On 09.05.2018 15:53, Richard O'Keefe wrote: > >???I have a C++ program written in the late 80s by someone > >else.?? It used to run fine under cfront 2.0 and early g++. > >Ten years after it was written it was impossible to compile. > > > >*Since* that there have been changes to streams and strings, > >amongst other things. > > > >The 1989 C standard changed the semantics of mixed signed/unsigned > >integer arithmetic.?? It also inadvertently rendered illegal a > >widely used technique.?? It is notoriously the case these days > >that compilers taking the C standards literally have "broken" > >quite a lot of code that worked with less ambitious compilers. > >I have been watching this phenomenon with considerable > >nervousness.?? See for example > >http://www.eng.utah.edu/~cs5785/slides-f10/Dangerous+Optimizations.pdf > ><http://www.eng.utah.edu/%7Ecs5785/slides-f10/Dangerous+Optimizations.pdf> > > > >I have certainly had previously acceptable C89 code be rejected > >by compilers as not being legal C11.?? It is true that compilers > >tend to have command line/IDE switches to ask that old code be > >compiled under old rules, but you cannot say that *in* the program. > >There is no way to mark the language version, no > >?????? #pragma stdc version iso99 > > > > > > > >As for Java, I could rant about the floods of deprecation warnings > >from old code.?? I shall content myself with one observation. > >Read http://java-performance.info/changes-to-string-java-1-7-0_06/ > >Before Java 1.7, the substring operation in Java took O(1) time > >and space.?? From Java 1.7 on, it takes time and space linear in the > >size of the result.?? The syntax and abstract semantics did not > >change but the pragmatics did.?? Code that had adequate performance > >could suddenly start crawling. > > > >Oracle do a tolerably thorough job of describing compatibility > >issues between JDK releases.?? See for example > >http://www.oracle.com/technetwork/java/javase/8-compatibility-guide-2156366.html#A999198 > >where we learned that the 'apt' tool was gone, the JDBC-ODBC bridge > >was gone, 32-bit Solaris support (and yes, I was still using 32-bit > >code in SPARC Solaris and Intel Solaris) was gone, and the type > >inference algorithm had changed in a way that could break things. > >I am still somewhat peeved about some of the rewriting I've had to > >do over the last several releases. > > > >Then there is the simple fact that porting code from one release of > >an OS to another can be a pain.?? Solaris 10 to OpenSolaris was easy. > >OpenSolaris to Solaris 11 was not as painless.?? Solaris 11 to > >OpenIndiana was not a happy time for me.?? OpenBSD changes forced > >rework.?? I'd finally got my program to port smoothly between Solaris, > >Darwin, and Linux.?? And then I had trouble porting to the next major > >release of Linux.?? And with Ubuntu 17, I've got another problem I > >still haven't tracked down.?? All of this in a C program that gets > >regularly (sp)linted and checked all sorts of ways, written with > >the intention of producing portable code. > > > >EVERYTHING BREAKS. > > > > > >On 7 May 2018 at 22:42, Trygve Reenskaug <tryg...@ifi.uio.no > ><mailto:tryg...@ifi.uio.no>> wrote: > > > > Please tell me when Java, C, C++, etc programs stopped working > > because their runtime systems had changed. > > Please tell me when Java, C, C++, etc compilers stopped compiling > > old code because the languages had changed. > > > > > > On 07.05.2018 11:57, Norbert Hartl wrote: > >> I understand what you are saying but it contains some > >> misconceptions about the modern software world. > >> > >> ???The earth is not stopping to turn just because you want to stay > >> on the sunny side??? > >> > >> There is two funny concepts going on in the modern software > >> industry. The one tells you that because you want to do a product > >> everything else around you should come to a full stop so can > >> comfortably build your software not disturbed by other things. > >> The second one tells you that you _have to upgrade_ ??? there is > >> this magical force preventing you from staying where you are. > >> Both notions are funny alone but they come combined and then they > >> turn out to be a non-sensical monster. > >> > >> Let???s take a different approach. Put in everything you say about > >> software, libraries, etc the word version. So you can build upon > >> Pharo version 3 your own product. You can stay at that version > >> and it won???t change. If the software you sell is not 80% pharo > >> but your own you should not have a problem just to stay on that > >> version because you develop your own stuff. But still the world > >> did not stop turning and there is pharo 4. You decide there are a > >> few nice features but the work to adjust is too big to take the > >> risk. Then there is pharo 5 and you ??? nahhh not this time???.Then > >> there is pharo6 and they not only changed the image but also the > >> way source code is managed. That prevents you further from > >> adjusting. But hey you can still be happy with pharo3 and it does > >> not change. > >> > >> So what is the real problem? Yes, money/time is not enough. I > >> think there are a lot of people risking their health to promote > >> pharo and now we have a consortium that can pay engineers to do > >> work on pharo. So let me tell you a future story: > >> > >> You see what pharo is doing and you think it is good. You can > >> also see that there are too less resources to proceed in the way > >> you need it to go. So you decide to show pharo to the world > >> inspiring people with some kind of a vision. The result is that > >> more people pay into the consortium and we hire more engineers. > >> And then one day the consortium has enough money to pay engineers > >> that can care about a LTS (long term support) version of pharo. > >> So you can stay on pharo version 3 and still get those annoying > >> bugs fixed. And hey this team has also enough time to provide you > >> with tools that make a migration to pharo version 4 more easy and > >> less annoying for you. And then you have your own product based > >> on pharo version 4. And then for version 5, version 6,???. Sounds > >> like a dream???but hey???it is indeed realistic. It just depends on > >> how the people approach it > >> > >> How does this sound? > >> > >> Norbert > >> > >>> Am 07.05.2018 um 11:31 schrieb Trygve Reenskaug > >>> <tryg...@ifi.uio.no <mailto:tryg...@ifi.uio.no>>: > >>> > >>> Thanks for your quick answer.?? I have only a fleeting knowledge > >>> of Pharo but liked what I saw. The Squeak class library has seen > >>> organic growth since 1978 or earlier. Pharo gave it a thorough > >>> overhaul. At the Pharo kernel was a minimal image with a minimal > >>> class library. The rest of the functionality was partitioned > >>> into packages that could be added to the kernel image as > >>> required. Beautiful. But only my dream? > >>> > >>> /Matthew 7:24-27: And the rain fell, and the floods came, > >>> and the winds blew and beat on that house, but it did not > >>> fall, because it had been founded on the rock. And everyone > >>> who hears these words of mine and does not do them will be > >>> like a foolish man who built his house on the sand."/ > >>> > >>> I am developing an IDE for non-programmers called BabyIDE, a > >>> non-intrusive extension of Squeak. Where the Class Browser in > >>> Squeak is used to work with one class at the time, the BabyIDE > >>> browser is used to work with structures of collaborating > >>> objects, ignoring their classes. I would like to develop a > >>> BabyIDE image that gets broad usage and long life. I'm looking > >>> for a rock to build on and hoped it could be what I thought was > >>> the Pharo kernel+ a few selected packages. In your answer, I > >>> read that if I build BabyIDE on Pharo, I will be building on sand. > >>> > >>> pharo.org <http://pharo.org/>writes: "/Pharo is a pure > >>> object-oriented programming language.../". The only language I > >>> can see is defined by the release image. A Pharo programmer > >>> builds application programs in this language. He or she can add > >>> new classes, change existing ones, subclass them, add or change > >>> methods, change the Smalltalk dictionary, etc. etc.?? An > >>> extremely flexible and powerful language. > >>> > >>> A tale from the future when Pharo is a mainstream > >>> language:Business customers benefit from end users using > >>> applications that are written by Pharo programmers who built on > >>> the Pharo language and environment that had been developed by > >>> the Pharo community. One day there is a happy announcement: A > >>> new version of Pharo will be launched tomorrow. It is truly cool > >>> and includes any number of improvements, some of them > >>> documented. And, by the way, applications written in the current > >>> Pharo will no longer work. So please inform your customers that > >>> you will not be able to serve them for a while. We are confident > >>> that all your application programmers will be happy to drop > >>> whatever they are doing in order to adapt their applications to > >>> the new Pharo so that you can start serving your customers again. > >>> > >>> Cheers > >>> --Trygve > >>> > >>> > >>> > >>> On 06.05.2018 13:00, Norbert Hartl wrote: > >>>> Can you elaborate on what you consider as a kernel? There are > >>>> always things moving in the pharo world. The last years the > >>>> virtual machine got some iterations and it is still not fully > >>>> stable. For pharo it is hard to have it stable because we feel > >>>> the need that a lot of the existing parts need to be replaced > >>>> to be useful in these times. Furthermore pharo is also > >>>> prototyping platform for programming language features. All of > >>>> these are counter-stability measures. So if you need a stable > >>>> kernel from native ground up to UI pharo won???t be that thing > >>>> you are looking for the coming years (if at all). You always > >>>> need to adopt to change so you need to define your required > >>>> scope better in order to get an estimate. > >>>> > >>>> Norbert > >>>> > >>>> Am 06.05.2018 um 11:31 schrieb Trygve Reenskaug > >>>> <tryg...@ifi.uio.no <mailto:tryg...@ifi.uio.no>>: > >>>> > >>>>> I'm working on a programing paradigm and IDE for the personal > >>>>> programmer who wants to control his or her IoT. The size of > >>>>> the target audience I have in mind is >100 million. I gave up > >>>>> Squeak long ago as a platform because they obsolete my code > >>>>> faster than I can write it.?? I have now frozen Squeak 3.10.2 > >>>>> and hope its runtime will survive until I find a better > >>>>> foundation. My hope is that Pharo has a stable kernel that I > >>>>> can build on.?? According to Stephan, this is not so. Is there > >>>>> any plan for creating a stable Pharo kernel that people can > >>>>> use for building software of lasting value for millions of > >>>>> non-expert users? > >>>>> --Thanks, Trygve > >>>>> > >>>>> On 05.05.2018 13:53, Stephan Eggermont wrote: > >>>>>> I???ve taken a look at what would be needed to > >>>>>> support magma on pharo a few years ago. Chris always told us he > >>>>>> uses it > >>>>>> professionally on squeak and/*has not enough capacity to keep up > >>>>>> with changes in pharo > >>>>>> without having a customer/maintainer for it.*/ Twice a year > >>>>>> or so someone asks about magma on pharo and takes a look. AFAIK > >>>>>> there are > >>>>>> no real obstacles to a port, but magma uses a lot of deep > >>>>>> implementation > >>>>>> specifics that will take an experienced smalltalker to deal with, > >>>>>> and a lot > >>>>>> of mailing list archeology as pharo changed a lot since magma > >>>>>> worked on > >>>>>> pharo last > >>>>>> > >>>>>> Stephan > >>>>> > >>>>> -- > >>>>> /The essence of object orientation is that > >>>>> objectscollaboratetoachieve a goal./ > >>>>> TrygveReenskaug mailto: tryg...@ifi.uio.no > >>>>> <mailto:%20tryg...@ifi.uio.no> > >>>>> Morgedalsvn. 5A http://folk.uio.no/trygver/ > >>>>> <http://folk.uio.no/trygver/> > >>>>> N-0378 Oslo http://fullOO.info <http://fulloo.info/> > >>>>> Norway Tel: (+47) 22 49 57 27 > >>> > >>> -- > >>> /The essence of object orientation is that > >>> objectscollaboratetoachieve a goal./ > >>> TrygveReenskaug mailto: tryg...@ifi.uio.no > >>> <mailto:%20tryg...@ifi.uio.no> > >>> Morgedalsvn. 5A http://folk.uio.no/trygver/ > >>> <http://folk.uio.no/trygver/> > >>> N-0378 Oslo http://fullOO.info <http://fulloo.info/> > >>> Norway Tel: (+47) 22 49 57 27 > >> > > > > -- > > > > /The essence of object orientation is that objects collaborateto > > achieve a goal. / > > Trygve Reenskaug mailto: tryg...@ifi.uio.no > > <mailto:%20tryg...@ifi.uio.no> > > Morgedalsvn. 5A http://folk.uio.no/trygver/ > > <http://folk.uio.no/trygver/> > > N-0378 Oslo http://fullOO.info <http://fullOO.info> > > Norway Tel: (+47) 22 49 57 27 > > > > > > -- > > /The essence of object orientation is that objects collaborateto achieve > a goal. / > Trygve Reenskaug mailto: tryg...@ifi.uio.no <mailto:%20tryg...@ifi.uio.no> > Morgedalsvn. 5A http://folk.uio.no/trygver/ > N-0378 Oslo http://fullOO.info > Norway??????????????????????????????????????????Tel: (+47) 22 49 57 27 >