Saving a Smalltalk Project

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
47 messages Options
123
Reply | Threaded
Open this post in threaded view
|

Re: Personal Programming onPharo

Trygve
Of course not. But one of my goals is that future dynabooks will be backwards compatible. Recent discussions have shown me that this goal is a research project.
--Trygve
On 09.05.2018 12:19, Marcus Denker wrote:


I go back to Alan Kay's vision of a Dynabook: A personal computer for children of all ages. It should contain all its owner's  personaldata, including  his or her personal programs, as they evolve through the years.  Continuity is a must; the owner shall never loose data. 



Do you really expect that the dynabook will be 100% backward compatible to Smalltalk-80? 

Marcus

--

The essence of object orientation is that objects collaborate  to achieve a goal.
Trygve Reenskaug      
[hidden email]
Morgedalsvn. 5A       
http://folk.uio.no/trygver/
N-0378 Oslo             
http://fullOO.info
Norway                     Tel: (+47) 22 49 57 27

Reply | Threaded
Open this post in threaded view
|

Re: Personal Programming onPharo

Richard O'Keefe
In reply to this post by Trygve
​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
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.
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
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 <[hidden email]> 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 <[hidden email]>:

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 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 <[hidden email]>:

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 objects collaborate  to achieve a goal. 
Trygve Reenskaug      
[hidden email]
Morgedalsvn. 5A       
http://folk.uio.no/trygver/
N-0378 Oslo             
http://fullOO.info
Norway                     Tel: (+47) 22 49 57 27 

-- 
The essence of object orientation is that objects collaborate  to achieve a goal. 
Trygve Reenskaug      
[hidden email]
Morgedalsvn. 5A       
http://folk.uio.no/trygver/
N-0378 Oslo             
http://fullOO.info
Norway                     Tel: (+47) 22 49 57 27 


--

The essence of object orientation is that objects collaborate  to achieve a goal.
Trygve Reenskaug      
[hidden email]
Morgedalsvn. 5A       
http://folk.uio.no/trygver/
N-0378 Oslo             
http://fullOO.info
Norway                     Tel: (+47) 22 49 57 27


Reply | Threaded
Open this post in threaded view
|

Re: Personal Programming onPharo

kilon.alios
Cross platform support has always been a can of worms in any language. As soon as one tries to do something that is not so popular it usually results into several issues that may be there for years if not decades. Especially in the case of third party libraries. 

This is also one of the big reasons why many large project today are made in multiple programming languages. 

In my case, I battle with lack of good documentation about OpenGL which I find very surprising, considering how popular as a library it is. In theory, I should not experience such an issue but practice tends to always have a different opinion. 

Indeed, everything breaks and everything has its own issues which become apparent as soon as you make heavy usage of the thing. Then of course you have the case where the language or the library as you already mentioned break compatibility intentionally. So instabilities are part of coding, you learn to live with them and evade them to a reasonable degree. 

On Wed, May 9, 2018 at 4:54 PM Richard O'Keefe <[hidden email]> 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
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.
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
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 <[hidden email]> 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 <[hidden email]>:

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 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 <[hidden email]>:

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 objects collaborate  to achieve a goal. 
Trygve Reenskaug      
[hidden email]
Morgedalsvn. 5A       
http://folk.uio.no/trygver/
N-0378 Oslo             
http://fullOO.info
Norway                     Tel: (+47) 22 49 57 27 

-- 
The essence of object orientation is that objects collaborate  to achieve a goal. 
Trygve Reenskaug      
[hidden email]
Morgedalsvn. 5A       
http://folk.uio.no/trygver/
N-0378 Oslo             
http://fullOO.info
Norway                     Tel: <a href="tel:+47%2022%2049%2057%2027" value="+4722495727" target="_blank">(+47) 22 49 57 27 


--

The essence of object orientation is that objects collaborate  to achieve a goal.
Trygve Reenskaug      
[hidden email]
Morgedalsvn. 5A       
http://folk.uio.no/trygver/
N-0378 Oslo             
http://fullOO.info
Norway                     Tel: <a href="tel:+47%2022%2049%2057%2027" value="+4722495727" target="_blank">(+47) 22 49 57 27


Reply | Threaded
Open this post in threaded view
|

Re: Personal Programming onPharo

Trygve
In reply to this post by Trygve
Hi Hannes,
It's great that you consider spending time on BabyIDE. Porting BabyIDE to Pharo needs to be done sooner or later, but it may be harder to find somebody who will actually use the results.(BabyIDE was first released 10 years ago. AFAIK I am still the only user of the ST version.)

A plan for creating an alpha version of PP could be
  1. Establish a project with funding and people (including project manager and lead programmer).
  2. Use present BabyIDE to create a new and clean Squeak version with DCI architecture.
  3. Port new BabyIDE to Pharo.
  4. ...
We will then have a platform that extends Pharo with the new programming  paradigm for programming system behavior (use cases). This will be a valuable addition to Pharo as a tool for professional programmers. We will also have a platform for building an alpha version of PP.

But before I do anything else, I have to finish my PP documentation on my home page
 http://folk.uio.no/trygver/
 .


More about DCI at
             http://fulloo.info
             http://fulloo.info/Examples/SqueakExamples/index.html     Includes code for examples
            http://fulloo.info/Downloads/BabyIDE.zip     Includes Squeak BabyIDE image and Win7-VM.
                  I'll update the ZIP if anybody is interested in actually running BabyIDE
--Trygve




On 08.05.2018 20:06, H. Hirzel wrote:
On 5/6/18, Trygve Reenskaug [hidden email] wrote:
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.
Hello Tryge

Good to see that you reconsider to use Smalltalk in 2018, this time Pharo.

Am I assuming correctly that you want to continue to work on your IDE
which the supports the DCI (Data-Context-Interaction) programming
style [1]? The IDE was called "BabyIDE" [2].

In 2015 you wrote to the Squeak mailing  list that you are abandoning
Squeak (Squeak 3.8, 4.5 or 4.6 at that time and Smalltalk as a whole)
in favour of JavaScript, a mainstream language. That you now at least
reconsider to use Smalltalk (Pharo) is an interesting result as it
reinforces the idea that doing things the Smalltalk way is more
promising than going for JavaScript directly [6].

As for loading the BabyIDE into Squeak: It is noteworthy that after 10
years (done around Squeak version 3.8) of maintaining a fork the
Squeakland (Etoys) image has been merged back into Squeak 6.0a trunk.
[5]

I could actually load some of your tools last year into Squeak 6.0a
with very modest fixes last year. [2].

It seems that splitting your IDE enhancements into different parts
which can be treated independently will probably help.

And in addition helpful would be  IMHO to write HOW you construct
these tools and WHY you do it. These will help people to maintain your
code even if the underlying system changes.

It seems worthwhile to try out how it goes with the most recent Squeak
version, Squeak 6.0a trunk [8].

Another option is to wait a few months and look for the bootstrap
version of Pharo 7.
All the code is in readable format on github and various types of
image files may be built  build from it [7].

And the third option is to check out if Cuis (the third Smalltalk
which runs on the OpenSmalltalk [3] VM) suits your needs. [4]


Kind regards

Hannes Hirzel


-------------------

[1] Data-Context-Interaction http://wiki.squeak.org/squeak/6048
[2] BabySRE http://wiki.squeak.org/squeak/2550
[3] http://www.opensmalltalk.org/
[4] Cuis Smalltalk
https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev ; there is a Cuis
mailing list.
[5] Etoys in 2017 http://wiki.squeak.org/squeak/6531
[6] Of course these days JavaScript cannot be avoided. But it is
preferable to generate it with a Smalltalk tool.
[7] The file format used in Pharo 7 is called Tonel (no exclamation marks!)
[8] Squeak 6.0a trunk download http://files.squeak.org/6.0alpha/



--

The essence of object orientation is that objects collaborate  to achieve a goal.
Trygve Reenskaug      
[hidden email]
Morgedalsvn. 5A       
http://folk.uio.no/trygver/
N-0378 Oslo             
http://fullOO.info
Norway                     Tel: (+47) 22 49 57 27

Reply | Threaded
Open this post in threaded view
|

Re: Personal Programming onPharo

Trygve
In reply to this post by Richard O'Keefe
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
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.
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
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 <[hidden email]> 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 <[hidden email]>:

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 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 <[hidden email]>:

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 objects collaborate  to achieve a goal. 
Trygve Reenskaug      
[hidden email]
Morgedalsvn. 5A       
http://folk.uio.no/trygver/
N-0378 Oslo             
http://fullOO.info
Norway                     Tel: (+47) 22 49 57 27 

-- 
The essence of object orientation is that objects collaborate  to achieve a goal. 
Trygve Reenskaug      
[hidden email]
Morgedalsvn. 5A       
http://folk.uio.no/trygver/
N-0378 Oslo             
http://fullOO.info
Norway                     Tel: (+47) 22 49 57 27 


--

The essence of object orientation is that objects collaborate  to achieve a goal.
Trygve Reenskaug      
[hidden email]
Morgedalsvn. 5A       
http://folk.uio.no/trygver/
N-0378 Oslo             
http://fullOO.info
Norway                     Tel: (+47) 22 49 57 27



--

The essence of object orientation is that objects collaborate  to achieve a goal.
Trygve Reenskaug      
[hidden email]
Morgedalsvn. 5A       
http://folk.uio.no/trygver/
N-0378 Oslo             
http://fullOO.info
Norway                     Tel: (+47) 22 49 57 27

Reply | Threaded
Open this post in threaded view
|

Re: Personal Programming onPharo

David T. Lewis
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 <[hidden email]
> ><mailto:[hidden email]>> 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
> >>>    <[hidden email] <mailto:[hidden email]>>:
> >>>
> >>>    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
> >>>>    <[hidden email] <mailto:[hidden email]>>:
> >>>>
> >>>>>    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: [hidden email]
> >>>>>    <mailto:%[hidden email]>
> >>>>>    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: [hidden email]
> >>>    <mailto:%[hidden email]>
> >>>    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: [hidden email]
> >    <mailto:%[hidden email]>
> >    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: [hidden email] <mailto:%[hidden email]>
> Morgedalsvn. 5A http://folk.uio.no/trygver/
> N-0378 Oslo http://fullOO.info
> Norway??????????????????????????????????????????Tel: (+47) 22 49 57 27
>

Reply | Threaded
Open this post in threaded view
|

Re: Personal Programming onPharo

trayres
In reply to this post by Richard O'Keefe
There is no way to mark the language version, no
    #pragma stdc version iso99


Delphi:

{$IF CompilerVersion >= 17.0}

Freepascal:

{$if FPC_VERSION > 2} 


No make files: the compiler handles that trash for you. 

Compatibility: Freepascal supports Delphi, Object Pascal, and has various switches for all kinds of things should you need it.

Supports Windows, Linux, Mac, Android, Amiga (...seriously) and a multitude of other systems.



On Wed, May 9, 2018, 6:54 AM Richard O'Keefe <[hidden email]> 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
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.
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
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 <[hidden email]> 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 <[hidden email]>:

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 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 <[hidden email]>:

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 objects collaborate  to achieve a goal. 
Trygve Reenskaug      
[hidden email]
Morgedalsvn. 5A       
http://folk.uio.no/trygver/
N-0378 Oslo             
http://fullOO.info
Norway                     Tel: (+47) 22 49 57 27 

-- 
The essence of object orientation is that objects collaborate  to achieve a goal. 
Trygve Reenskaug      
[hidden email]
Morgedalsvn. 5A       
http://folk.uio.no/trygver/
N-0378 Oslo             
http://fullOO.info
Norway                     Tel: (+47) 22 49 57 27 


--

The essence of object orientation is that objects collaborate  to achieve a goal.
Trygve Reenskaug      
[hidden email]
Morgedalsvn. 5A       
http://folk.uio.no/trygver/
N-0378 Oslo             
http://fullOO.info
Norway                     Tel: (+47) 22 49 57 27


123