Hi, to all those who are doing the the WalkThrough PDF of Cincoms VisualWorks . I already thought I was dumb as I saw that on version 7.5 my version of stripped down helloworld (hello.im) never was stripped down. The solution is simple: VW 7.5 ignores the name of your image and saves the file as “runtime.im” . To get an idea got to ~/vw7.4.1ns/image (if you just upgraded 7.4.1 to 7.5) and do:
$ ls -rtl
-r-xr-xr-x 1 vinci vinci 4.1M Aug 26 14:54 install.im
-r–r–r– 1 vinci vinci 13M Aug 26 14:54 visual.sou
-r-xr-xr-x 1 vinci vinci 16M Aug 26 14:54 visualnc.im
-r–r–r– 1 vinci vinci 6.6M Aug 26 14:54 visualnc.im.zip
-rw-r–r– 1 vinci vinci 3.3K Aug 29 13:39 hello.cha
-rw-r–r– 1 vinci vinci 19M Aug 29 13:39 hello.im
-rw-r–r– 1 vinci vinci 14M Aug 29 13:40 runtime.im
You see that the last entry “runtime.im” was saved last AND is the smallest image. If you then do
../bin/linux86/visual runtime.im you get this small hello world application, really without the whole workspace. I could not find any other place where I could define the resulting runtime image. Only before – but that was ignored at the strip down process.
I found another issue on VisualWorks: You cant type “ß,ö,ü,ä” (umlauts) in Workspace or anywhere else at least in the Linux version. Taht makes it quite unusable for every day work in Germany if this is the case on every system. Maybe there is a fix for this?
I have been programming very few things in the past – and rather have worked on existing stuff. I think that this is not a bad attitude if you dont want to fall into the NotInventedHereSyndrom. But I have used a lot of different applications and have also experienced limits of all kinds using this applications. I have made some good working sites in PHP for customers as they did exactly what they expected and even added or suggested things they did not think about. But I also have experienced what the developers of extreme programming wanted to circumvent: That customers find about what they really want after you have made some design “decisions”. And then the programmer has to make a decision: Either he accepts what the customer says and does not request extra money as the customer feels misunderstood – or you say what you did is what the customer wanted and demand an extra fee for design changes.
But both ways are no real solution. What one really wants is to not come into this trouble of having to make changes that are costly (time and money). So one should try to gain more flexibilty. And you dont gain that flexibility if you lets say choose WordPress for a simple blog site and then come to the conclusion that maybe Drupal is what the customer (now) really wants. But its likely that you will find out that in some weeks or months there are again some things you like to change. So you might begin to make drastic changes to the sourcecode and by that have your own patches and/or find out that upstream security fixes dont work for your version etc..
So currently I am at a different point as some years ago. I THOUGHT it would be a good idea not to program from scratch. That is true, partly – you dont need to start from scratch for every solution – you should be able to use existing code and ideas – but with Perl or PHP or Python its not that easy to extend existing code and classes. You will have to write a new app from scratch and then test it. With Smalltalk you are able to choose an example application or tweak some classes and test only these small changes if they give the results you like to see. And thats I think how development has to happen. I cant just jump into Drupal code and tweak things without hurting the application.
I cant yet say what the essence of this approach is – maybe it is: Allow small progress? I have seen that my customers where often very,very pleased with very small changes – and if I look back i think I could only do this because I did not use one big application – but where I have used one in the past it added some complexity or inflexibility so that it blocked a quicker and easier progress.
Seaside for example gives the user a nice framework to start working with web applications without either making a start a hard task nor limiting the developer in any sense. I expect the greatest things from Seaside as in the near future more and more interesting code will float around. Only problem I have now is that I still dont know how to deply it online. Squeak seems to require a GUI in order to be able to work on code? So this would then either mean to work from a home box or to open squeak via X11 oin the server. This cant be the only way? Anybody can clear this up?
In many languages a variable is of some type. Sometimes you have to define the type when you set it or at least when you read it. In Smalltalk you dont redefine the type of a variable. Its always an object. So if you want to work with a value of some type you create an object and then send the value of the source objects as a message to the new object. And as this object has expects a value and handles the value, there is no process of redefining. One could say that this is redefining But its rather something like: A thermometer measures the temperature – you dont define that the number is a temperature – you send the value of the number (like 16) to a display object . And this display then works with that value. So I think this
is much easier for many reasons: You dont have to worry of which type a variable has – you just need to send its value and rather define inside the object how to check and work with that incoming values. So you concentrate on the objects rather then on the characteristics of variables, even if they are objects in languages other than Smalltalk.
Thats a very different approach. And I think even people who know what object oriented programming is are used to, like in Python work with types of variables.
I am currently using the free version of VisualWorks. Why? Well there are some points:
- VisualWorks takes less ressources from CPU than Squeak
- VW allows me to reduce the size of the Workspace and other windows.
- They have some nice video tutorials and a good online help.
- The system browser has some nice additional functions like filling in initialize. (I am quite sure that I could do this also with Squeak, but it did not show up by default like in VW)
So I think right now VisualWorks is the best choice for me to learn Smalltalk. I continue to be interested in other solutions and whould switch to an open source solutions that could do the same things. But I also do know that switching from one Smalltalk to the other is not that hard. There are some differences but that just like different Linux distributions. Most Smalltalker that I have met use many different versions at the same time. The other thing thats not so nice about VisualWorks is that it looks very outdated in its Linux version. I guess this must be Tcl/Tk? Would be nicer to see a more modern look like newer Qt or Gtk2 give the user. The fonts are also often not nice to look at, which influences the overall reception of an application. So I like to suggest to Cincom to do some rework of the GUI (not the logic, only the Toolkit)
Those who follow that blog know that I am currently learning smalltalk while I build some more Smalltalk conary packages. I now have recently found yet another smalltalk version which looks promising. The long name is Smalltalk YX (or short: Syx). I am not knowledgeable enough to evaluate how good the code is but the project and the core maintainer look very active and full of energy and ideas. So I think it could have some great future.I think if Smalltalk should have a future it needs fresh ideas – even if not all ideas will become true. So for those Conary, rPath and Foresight users who like to test Syx can do so. It is yet not official part of Foresight contrib but will soon be if all is ok: sudo conary update syx=vincis.rpath.org@fl:1-contrib (thats a subversion pre-version of 0.1.4). Have fun!
There are some recommendations. The most common is to use A Development Example for Squeak 3.9 but I dont like it for a number of reasons: First its overly abstract and secondly it does not show you an overview of the object structure that you should add with it via the system class browser. So this is more for those of you who already know Smalltalk and just want to get into using Squeak. You then will make some things right although they are not shown. For others I have just found “Basic Aspects of Squeak and the Smalltalk-80 Programming Language” which is older but starts with some more general explanations. Anyway you can also choose others at: Squeak Tutorials.
Update: This one also gives a nice overview over Smalltalk (based on VisualWorks, some things dont work in Squeak) . Or this: bitwise magazine: “SMALLTALK : A BEGINNER’S GUIDE“
On my way through Smalltalk I had to make the experience that many tutorials are not uptodate like the freely available PDF “Joy of Smalltalk” where it seems that VisualWorks has changed since this was published. So I could not build my farm 😦
Anyway. Hust out of frustration I have started porting more smalltaks to Foresight. And just read from the LittleSmalltalk original author:
Little Smalltalk, Version 4
Timothy A. Budd, email@example.com
Oregon State University
I first started developing Little Smalltalk back in 1984, and to tell the
truth hadn’t touched it for several years now. However, when I attended
OOPSLA in Portland a few months ago, several things struck me:
* Addison-Wesley was /still/ selling my book “A Little Smalltalk”
(despite it being many years old now and very very dated), and people were
still buying it (don’t ask me why).
* There was a heck of a lot of interest in Smalltalk on the vendor floor.
* People kept asking me about Little Smalltalk.
Funny, isn’t it. Thats also my impression – Smalltalk become more popular again. And thats partly because some of the base ideas is still not available in other languages and people can be productive with it. I have built the special stable version 4 from by Charles Childers. There is also a version 5, but they describe it as alpha. So we better start with this version: Quote: This version comes with source code of the Smalltalk image and a tool that compiles that source and creates an initial image file. So this version allows bootstrapping of the complete LittleSmalltalk system with only a C compiler at hand and without magic in the image file. This version is the basis for our further work on LittleSmalltalk system 5 since April 2007. To install do sudo conary update lst=vincis.rpath.org@fl:1-contrib on a rPath/Foresight system. Please give feedback. And BTW: From version 4.1 upwards all versions are developed and maintained by Danny Reinhold / Reinhold Software Services and other contributors to the LittleSmalltalk project.
Here I just like to point to my “Foreseeing Linux” blog and the entry “Squeak packaged for Foresight“. Thats the nice thing about these free software projects: They dont require an installer.
I have just begun to learn Smalltalk. First: Why? One reason is: Because it has survived! A computer language of that age that is still used in todays projects and also becoming more popular today must be good. Simple.
Another reason is that I heard a lot good about it. Like from Ward Cunningham. I think with Smalltalk you can learn to think different and also can learn what object oriented programming is about.
Then I am not somebody who like to learn a new language every month. So maybe there are cooler languages out there. But Java for instance really is far from elegant but rather ugly if you look at the code.
I alread had some good laughs on learning the first things. Because it is sooo simplistic and elegant. I also like all the Smalltalk success stories.
What I have done is on the one side creating a package of GNU Smalltalk for Foresight and on the other side installing a CD-ROM-Version of VisualWorks. I have discovered that the net install for VisualWorks is broken (seems that some texts are not displayed but rather created as weird folders). I wrote a mail to Cincom but did not yet get any feedback. I guess its again usually the experience with closed source software. I have also tried to install Smalltalk/X from Except Software AG via CVS, but had to find out that this is just for those who already have the proprietary compiler, which is not included in the CVS version. Again here my question if they have yet considered was not answered. Seriously I ask myself why many proprietary companies think one should buy their service if the main experience is that questions are always answered late if at all. Should I expect this to change if I where a real customer? I seriously doubt it. So I havent tried the available free version of Except yet.
I have begun using Cincoms VisualWorks and worked through one of their tutorials. That was a very nice experience. I tried to also use the examples on an open GNU Smalltalk prompt, but had to see that it seems that even the simple commands like opening a file seemed to be handled differently in each Smalltalk version. I would love to see them cooperate, agree on some basic command set – maybe call that “Smalltalk 08” and then share some free libraries – and let others contribute some more extensive libraries and clients for those who want that. Right now these differences are the biggest argument against Smalltalk to me. And the reason for this seems to me that Smalltalk has grown in a prorietary market and only recently things have opened up a bit.
You may be asking why I did not use Squeak? Well its simply that I have some packaging problems on Foresight Linux, because its not buld the standard way. I plan to make a package in the future but right now my adaption strategy is to just learn Smalltalk and look at differences. I also plan to choose the latest GNU Smalltalk (2.95b as of today) for Foresight. They saythe “Hello World” program alone runs 5 times faster on this version in relation to 2.3.5. I think Foresight users like to live on the edge and from what I’ve read the latest unstable is not broken. And I guess for most of those who will look at GNU smalltalk its rather a test area and also maybe if they know a mature commercial version more features are what they insist rather than on perfect stability. I also like to do this to help GNU Smalltalk to get feedback IF there are some bugs. So I think maybe in a year from now we might want to go back to a stable version or target a version 3.0? We’ll see.
So right now I rather work in parallel. Until now I like smalltalk and it feels much easier to me because it seems like it talks to be rather than the impression that I have to learn a language to to talk to IT.
That’s it for now. I’ll keep you updated.