Smalltalk: Requiem or Resurgence? {Dr. Dobb's Journal (05/06/06) Chan, Jeremy}

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

Re: Smalltalk: Requiem or Resurgence? {Dr. Dobb's Journal (05/06/06) Chan, Jeremy}

Alejandro F. Reimondo
Hernan,

If you rename Smalltalk...
It will be smalltalk.
Smalltalk is the "last language", to put it in the terms
 you all love (to name it a language :).

Why Smalltalk is "the last XXXXX" ?
 (place language, environment, ambient
  instead of XXXXX)

To work "in" Smalltalk is to work
 preserving the IDENTITY of the XXXXX.
You can change any piece, but the change
 will do the system more or less stabe...
 but will be the SAME system.
It preserves it's identity.
And preservation of the identity of
 the hole is preceived as evolution,
 defines an history.. and do not require
 to be "redefined" as languages.

A language (as any formal system),
 when changed defines a NEW language.
A new language because rules defines a closed
 system, and if you change a rule, you defines
 another system without any relation, in practice,
 with the old.
Languages are born to be replaced.
Smalltalk can be changed and if it survives the
 change, the change become part of it
 but the XXXX preserve it's identity
 (the same way anObject preserves identity)

A language exists if there is any person
 that use it's syntax.
Smalltalk exists if there is at least an image runing.

The vertical propagation of smalltalk habbits
 defines a "formula" that limits smalltalk
 propagation.

The importance of marketing for smalltalk will
 be proved after one or two observable cases.

best,
Ale.

----- Original Message -----
From: "Hernan Wilkinson" <[hidden email]>
To: "The general-purpose Squeak developers list"
<[hidden email]>
Sent: Friday, May 12, 2006 12:12 PM
Subject: Re: Smalltalk: Requiem or Resurgence? {Dr. Dobb's Journal
(05/06/06) Chan, Jeremy}


> Hi,
>     I could not read the whole thread, but I will give my opinion on
> this topic. Sorry if I say something somebody already said.
>     I think the problem with Smalltalk is not technical, nor a problem
> of education either. We all now that Smalltalk has nothing to envy from
> Java, C++, .Net and the like, but the other way around. We all know that
> Smalltalk has a great VM, has a great environment and tools and no other
> main stream language can compete with Smalltalk on this features.
>     Smalltalk can be use in large project (it is not true that only
> scale in small projects, we have a project with 7155 classes and works
> great!... I can not image a Java project of 7155 files...) and I see
> that Smalltalk is not difficult to learn. Every time we contract a
> junior programmer, they feel fine with the language in a period of two
> weeks... so, the syntax is not a problem, not the class library or the
> debugger, etc.
>     The problem with Smalltalk is a MARKETING problem, no technical. We,
> people of the computer field, like to have new things all the time... we
> like to have new widgets like mp3 players, palms, cell phones, smaller
> and faster laptops, etc. "New" it is almost a synonym of "Better", but
> more important, "new" means "cool".... Because of this, most programmer
> think that  new languages are better, just because they are new they are
> "more cool". So, the problem with Smalltalk is that it is OLD.
>     Let's take Ruby as example, is it better than Smalltalk? We all now
> that it is not.... Perl? no... Phyton?, no... What's the difference?
> They are newer... Now Ruby seems to be getting a great attention... why?
> just because Ruby On Rails?. I believe Ruby On Rails is helping to get
> the attention, but Ruby is a "new" language (at least, it does not have
> a long history), and that helps, and compared with Smalltalk, it is
younger.

>     The word Smalltalk has a history, and almost everybody relates that
> word to not sucessful histories (I believe, they do it wrongly). Every
> time you say "we use Smalltalk", people ask "Isn't that a language for
> university only?", "Isn't that language old? how does it integrate to
> databases? can you do web apps with Smalltalk?", etc.... So, I have came
> to a sadly conclusion, Smalltalk will never be a main stream language
> because it is OLD.
>     Therefore, my CRAZY suggestion is to create a NEW language, a new
> language that we can name it "COOL" (because it is cool ;-) ), but this
> new language is, at the end, Smalltalk... but nobody has to know it!
> nobody has to relate it to Smalltalk because if they do it, it will
> loose all its "momentum"... With a NEW language, that it is COOL at the
> same time, and of course, with a little bit of help from one big
> company, COOL will be widely accepted... and nobody will care about its
> technical aspects as  most people don't do with the current main-stream
> languages.
>
>     Anyway, just an opinion...
>     Bye, Hernan.
>
>
>
> Ralph Johnson wrote:
>
> > People keep mentioning technical aspects of Smalltalk as being the
> > ones that will make people want to use it.  Technologists are
> > interested in technology, so this is not surprising.  However, people
> > are more important than technology.  If Smalltalk is going to have a
> > resurgence, the people who know and love Smalltalk will have to make
> > it happen.  It isn't going to happen automatically.  Jeremy Chan is
> > right to emphasize people problems like "no big company is pushing
> > it".
> >
> > Every tool has its stengths and weaknesses.  To make Small prosper,
> > people should use it where it works and not use it where it doesn't
> > work.  Smalltalk is fantastic in small groups of motivated
> > programmers.  It is not so good in large groups with high turnover.
> > People seem to get excited about large Smalltalk projects, and to long
> > for the days of ten years ago when there were 100 person projects.  In
> > my opinion, those projects were never run well, and were probably all
> > a mistake.  Many of them were successful in the sense of bringing a
> > product to market, but all the ones I saw could have been done faster
> > and cheaper with a smaller team.
> >
> > Smalltalk fans ought to go start companies.  Smalltalk has lots of
> > advantages in a startup, where it is important to get something
> > running quickly and where compatibility with existing systems is not
> > so important.  It doesn't work as well in a big company, where it is
> > iimportant to play it safe and there are existing standards and lots
> > of  existing systems.
> >
> > Smalltalk is a wonderful language both for teaching and for research.
> > I've always wondered why it did so poorly in universities.  I think
> > that one of the reasons is that it is hard to learn.  There are too
> > many things about Smalltalk that are new.  The language is easy, but
> > the class libraries are large, and the programming environment is
> > different from what people are used to.  People are not used to "live
> > objects" and do not know how to take advantage of them.  The class
> > library is not modularized, so it is hard for newcomers to see what to
> > learn first.
> >
> > Smalltalk is pretty easy to learn if you are pair programming with an
> > expert whose main goal is for you to learn, not to build a system.  It
> > is hard to learn from a book and from experimentation.  I taught
> > myself Smalltalk 20 years ago and have since taught it to a thousand
> > or so students.  I tell my students that they all will learn Smalltalk
> > faster than I did, because they will have a teacher.  This is not 100%
> > true, since some students didn't try very hard.  But it is pretty easy
> > to learn when you have a teacher who knows Smalltalk well.  One of the
> > problems with getting it used in schools is that somebody has to teach
> > the teachers.
> >
> > So, if you want to help Smalltalk spread, sit down and program with a
> > newbie!
> >
> > -Ralph Johnson
> >
> >
> >
>
>
> --
> ______________________________
> Lic. Hernán A. Wilkinson
> Gerente de Desarrollo y Tecnología
> Mercap S.R.L.
> Tacuari 202 - 7mo Piso - Tel: 54-11-4878-1118
> Buenos Aires - Argentina
> http://www.mercapsoftware.com
> ---------------------------------------------------------------------
> Este mensaje es confidencial. Puede contener informacion amparada
> por el secreto profesional. Si usted ha recibido este e-mail por error,
> por favor comuniquenoslo inmediatamente via e-mail y tenga la
> amabilidad de eliminarlo de su sistema; no debera copiar el mensaje
> ni divulgar su contenido a ninguna persona. Muchas gracias.
>
> This message is confidential. It may also contain information that is
> privileged or otherwise legally exempt from disclosure. If you have
> received it by mistake please let us know by e-mail immediately and
> delete it from your system; you should also not copy the message nor
> disclose its contents to anyone. Thanks.
>  ---------------------------------------------------------------------
>
>


Reply | Threaded
Open this post in threaded view
|

Re: Smalltalk: Requiem or Resurgence? {Dr. Dobb's Journal (05/06/06) Chan, Jeremy}

Frank Shearar
In reply to this post by Trygve
Oh OK, I thought perhaps the failing of the URL had indicated something, or
that something had gone wrong with your browser, but had no idea which. I
didn't mean to sound difficult or anything.

frank

"Trygve Reenskaug" <[hidden email]> wrote:

> My sincere apologies. It must be something with the setup of my browsers.
> So my experience doesn't illustrate anything.
> --- Trygve
>
>
> At 15:06 12.05.2006, you wrote:
> >"Trygve Reenskaug" <[hidden email]> said:
> > >
> > > At 13:51 12.05.2006, Bert wrote:
> > >
> > > ++++++
> > >
> > > >>For all practical purposes, a desktop application written in squeak
> > > >>will only be used by squeak programmers. Note the term: "desktop
> > > >>application".
> > > >
> > > >And I think you'll be proven wrong with Sophie:
> > > >
> > > >         http://www.geeksrus.com/sophie/2006-05-09.html
> > > >
> > > >- Bert -
> > >
> > >
> > > An excellent illustration to this thread. 2006-05-09.html doesn't work
in
> > > my Opera web browser and it crashes my IE.
> >
> >Does the page not working illustrate something? What does it illustrate?
It
> >opens just fine in my Opera (8.51, on Windows 2k). The video doesn't
work,
> >probably because I've got an ancient QuickTime, but that's beside the
point.

> >
> >frank
>
>
> --
>
> Trygve Reenskaug      mailto: [hidden email]
> Morgedalsvn. 5A       http://heim.ifi.uio.no/~trygver
> N-0378 Oslo           Tel: (+47) 22 49 57 27
> Norway
>
>
>
>


Reply | Threaded
Open this post in threaded view
|

RE: Smalltalk: Requiem or Resurgence? {Dr. Dobb's Journal (05/06/06) Chan, Jeremy}

Michael Latta
In reply to this post by Hans-Martin Mosner
You are correct.  Smalltalk is much more like an OS than just a language.
That is part of the issue.  Unix in many ways could have been much more
successful had there been more to the standard library.  That is a large
part of why Java/.Net are doing so well.  .Net because it has Microsoft
behind it and runs on 90% of the desktops out there.  Java because it runs
on all the platforms out there.  If it were not for vendor introduced bugs
(Apple & IBM VMs being different from Sun's VM) it would be almost as
portable as an ST-80 image.  It also helps open source efforts like Squeak
to have commercial interests involved.  Because Squeak is a separate
platform that becomes harder to make happen.  For example Gemstone supports
VW but not Squeak or Dolphin because the effort required to port vs. the
customer need.  If it was easier to port then there would be more
opportunity to get vendors to support all the platforms and a larger
ecosystem would result.

Michael



-----Original Message-----
From: [hidden email]
[mailto:[hidden email]] On Behalf Of
Hans-Martin Mosner
Sent: Friday, May 12, 2006 1:46 PM
To: The general-purpose Squeak developers list
Subject: Re: Smalltalk: Requiem or Resurgence? {Dr. Dobb's Journal
(05/06/06) Chan, Jeremy}

Michael Latta wrote:

>The point is not who's design is better, nor technical issues.  The point
is
>that from a user of the system the differences in libraries has negative
>value.  I do not know or care which is better.  I do know that if I could
>take Smalltalk code form one VM to another the market for my work would be
>larger.  The way each VM vendor has chosen to head in their own direction
>means that they do not build a viable ecosystem.  Each vendor's product
>stands alone, and has to build its own ecosystem.
>
The problem with this comparison is that it is treating Smalltalk as a
programming language.
It's much easier if you treat it like an operating system or a SQL
database - it's a platform.

In theory, your C program should just run on HP-UX, Linux, AIX, Windows,
MacOSX, RiscOS, AmigaOS, ...
Why did all those operating system vendors invent incompatible system
calls, libraries, file system conventions?

Or why can't you just take your SQL application from ORACLE to MySQL or
Sybase?
After all, SQL is a standard!

I don't know enough about SQL, but at least in the operating system
world you can achieve a lot of portability by sticking to POSIX which is
supported on most platforms.
Similarly, you get pretty good portability in Smalltalk by sticking to
the ANSI Smalltalk subset.
Of course, GUI widgets etc. are not included in that standard and so are
non-portable.
But does POSIX include standard GUI widgets? Can you write a GUI
application in C and port it from Linux to Windows without a lot of work?

I agree with you that it would be great to have easier portability
between the different Smalltalk systems, so you could switch platforms
when needed without too much work.
But in reality, switching between platforms has never been easy.
Actually, the closest thing to effortless platform migration was/is
*Smalltalk* with its image file which can be run unchanged on a large
number of platforms! I've done it with VisualWorks, Squeak and
VisualAge. The two Smalltalk-80 descendants provide much easier
migration (just snapshot your image and start up on another machine) but
VisualAge is pretty doable as well as long as you're willing to work
around the quirks of the different native widgets under OS/2, Windows
and Unix/X.

Cheers,
Hans-Martin


Reply | Threaded
Open this post in threaded view
|

Re: Smalltalk: Requiem or Resurgence? {Dr. Dobb's Journal (05/06/06) Chan, Jeremy}

Alejandro F. Reimondo
In reply to this post by Andreas.Raab

> And how exactly do you know that? Do you know anything at all about how
> the FFI evolved, which tradeoffs were made for what?

Where can we read details on FFI?
I am interested becasue I feel that the FFI implementation
 requires Assembly code to be compiled.
Is it true?
Is there any "slow" code in slang for platforms that do not have
 easy assemblers?

thanks in advance,
Ale.




----- Original Message -----
From: "Andreas Raab" <[hidden email]>
To: "The general-purpose Squeak developers list"
<[hidden email]>
Sent: Friday, May 12, 2006 5:07 PM
Subject: Re: Smalltalk: Requiem or Resurgence? {Dr. Dobb's Journal
(05/06/06) Chan, Jeremy}


> Michael Latta wrote:
> > There are some differences based on VM design and VW has chosen to
redesign
> > the entire way that classes are defined.  But, to a user it should all
work
> > if it is Smalltalk.  The COM integration for example on VW and Dolphin
do
> > not need to be different, and Squeak did not have to use a different way
to
> > call native methods.
>
> And how exactly do you know that? Do you know anything at all about how
> the FFI evolved, which tradeoffs were made for what?
>
>    - A.
>


Reply | Threaded
Open this post in threaded view
|

FFI usage

Andreas.Raab
Alejandro F. Reimondo wrote:
> Where can we read details on FFI?

Below ;-)

> I am interested becasue I feel that the FFI implementation
>  requires Assembly code to be compiled.
> Is it true?

That depends on whether you mean it literally or figuratively. For
running the FFI there is a bit of per-platform support code needed, some
of which (the actual call-out) is typically implemented directly in
machine code and written using assembler.

> Is there any "slow" code in slang for platforms that do not have
>  easy assemblers?

The FFI is (like many other parts of Squeak) "incomplete" in such that
it requires a bit of extra support code to implement the actual ABI
(e.g., setting up the call stack, calling the function, popping args
from the stack etc). This is handled in the platform specific files (see
sqWin32FFI.c for an example) and requires some 20 functions or so to
work (most of those are trivial but provided just in case some platform
has odd behavior wrt. to some data type).

It is certainly possible to implement much of it without the use of
assembler. For example, if a platform basically passes everything as
words (32bit ints) you could do something like here:

int args[MAX_ARGS];
int argCount;

/* take an int as next argument */
int ffiPushSignedInt(int value) {
   args[argCount++] = value;
   return 1;
}

/* tons of other int types eliminated for brevity here */

int ffiPushSingleFloat(double value) {
   /* this will push the 32bit equiv. of the float value */
   float single = (float) value;
   ffiPushSignedInt(*(int*)(&single));
   return 1;
}

/* ... double works just the same way; 2x32bit entity ...*
/* ... structures ditto ...*/

/* finally, do the actual callout */
int ffiCallAddress(int fn) {
   switch(argCount) {
     case 1: return ((int(*)(int))fn)(args[0]);
     case 2: return ((int(*)(int, int))fn)(args[0], args[1]);
     case 3: return ((int(*)(int, int))fn)(args[0], args[1], args[2]);
     /* ... etc ... */
}

This will work just fine and requires no assembler but so far I haven't
found any platform where things would be as simple as that (both Intel
as well as PPC have more complex rules than can be reasonably modeled by
this technique). But if you happen to have a platform where things are
that simple (or if it's okay to restrict yourself to a subset that can
be modeled as simply) that's certainly an option.

Cheers,
   - Andreas

Reply | Threaded
Open this post in threaded view
|

Re: Smalltalk: Requiem or Resurgence? {Dr. Dobb's Journal (05/06/06) Chan, Jeremy}

Diego Fernández
In reply to this post by Hernan Wilkinson
Hernan, I agree with you in a lot of points... but disagree in others
(and since my English is not good, I prefer to explain my point using
very poor sentences).

On 5/12/06, Hernan Wilkinson <[hidden email]> wrote:
> (...)
> I have worked with Assembler, C, C++, Java and some C#... but Smalltalk
> is a "one way street". You take it and when you understand it, you don't
> want to go back.

This kind of responses are not helping in "marketing"... :P
Yes, in Smalltalk we work different, but not because "we saw the
light". Is just because we have learned the "code" of the language.
(It reminds me the theory of Bernstein in education, see:
http://www.doceo.co.uk/background/language_codes.htm). So I think that
instead  of saying: "go learn! before talk", we have to understand how
is the process of learning smalltalk, to communicate it better to
newbies.

> (..)
> > If you mean the hole environment, then I can't agree with you.
> > One thing Java and .Net have in common, C++ is trying to get and
> > Smalltalk is missing, is a standard
> > library set. Every dialect of Smalltalk has its own set.
>
> I don't see this as a problem. The main classes are similar and I don't
> go from one Smalltalk to other coding. We develop in with one Smalltalk,
> why would I need to use other Smalltalk?.

I think that "standardized" APIs are too restrictive.Because no one
wants to change it...just to follow the standard (ie. the DateTime in
ANSI ST), even when the design proposed by the standard is ugly.
As long you develop in a closed group is easy: just modify St as you
want... but what happens when you want to share it with a community?
Porting and testing in each platform (or merging changes in the same
platform)... may be is not difficult, but it could take a lot of time.
So I see a problem here.

> (...)
> But why do you need to port "libraries"? Anyway, if that's your problem,
> I understand it, but if you want a broad support for different
> platforms, just choose VisualWorks that works in almost all platforms...
> (Squeak also ;-) )

Yes but VW is very expensive for commercial projects, and Squeak
currently lacks of tools and frameworks for doing a "commercial"
software project... someone can say "but you can make a nice UI using
Morphic or Tweak", but in the current state of Squeak this requires a
lot of work compared with other tools (Seaside and web apps is another
history).

The lack of commercial oriented tools, is ok in Squeak because, Squeak
was conceived as a learning tool. We have to take this in account when
comparing Squeak with other languages like Java.... maybe it would be
good to have a "commercial" oriented distribution of Squeak. That's
why I think that Spoon is wonderful, with a correct testing and
modularization it will a allow different distributions of Squeak
without forking the code base... and we can have an equivalent to Ruby
on Rails for commercial purposes :)

Regards,
Diego.-

Reply | Threaded
Open this post in threaded view
|

Re: Smalltalk: Requiem or Resurgence? {Dr. Dobb's Journal (05/06/06) Chan, Jeremy}

Waldemar Dick
In reply to this post by Hans-Martin Mosner
Hi,

Hans-Martin Mosner schrieb:
> The problem with this comparison is that it is treating Smalltalk as a
> programming language.
> It's much easier if you treat it like an operating system or a SQL
> database - it's a platform.
In previous posts, Smalltalk was compared against Ruby, Python, etc. and
why it doesn't,
as the more mature language, get the same attention.
Ruby, Python, Java, .Net are all a language + VM or interpreter/compiler
(for more then one OS)
+ a basic set of libraries.

Smalltalk is only the language. The language comes in a bundle with VM +
libraries + IDE.
So, actually you can't compare Smalltalk with any other bundle (Ruby,
Python, ...).
Instead you have to compare, for example Squeak, with the others.
And that is point, that confuses people and makes the entry to Smalltalk
difficult.

> In theory, your C program should just run on HP-UX, Linux, AIX,
> Windows, MacOSX, RiscOS, AmigaOS, ...
> Why did all those operating system vendors invent incompatible system
> calls, libraries, file system conventions?
The languages we compare Smalltalk to, do this abstraction by providing
a VM.
> Or why can't you just take your SQL application from ORACLE to MySQL
> or Sybase?
> After all, SQL is a standard!
Right, all databases have SQL 95 as least common denominator. You can
work with
the SQL standard.
I was trying to say, that the least common denominator, ANSI Smalltalk,
is to small to
base actual work on it. No networking, threading, file system (only file
stream), ...., database, ...

>
> I don't know enough about SQL, but at least in the operating system
> world you can achieve a lot of portability by sticking to POSIX which
> is supported on most platforms.
> Similarly, you get pretty good portability in Smalltalk by sticking to
> the ANSI Smalltalk subset.
> Of course, GUI widgets etc. are not included in that standard and so
> are non-portable.
> But does POSIX include standard GUI widgets? Can you write a GUI
> application in C and port it from Linux to Windows without a lot of work?
Standards across more than one interested party are difficult to
achieve. And most
of the time this standards come out as a least common denominator, which is
better than nothing, but not a lot more.
Every language hyped or mainstream right now, got exactly one interested
group.
Creating standards is easy for them.
On the other side, Smalltalk has a lot of interested groups (dialects).
Creating a
standard is quite difficult.
But without (at least) a standard library, you won't be able to compare
Smalltalk
to the other languages. Then you are right, you will have to compare it
with operating
systems.
As a side note: At least one language from above, is successful, because
it promised
to overcome the operating system barriers.

> I agree with you that it would be great to have easier portability
> between the different Smalltalk systems, so you could switch platforms
> when needed without too much work.
> But in reality, switching between platforms has never been easy.
> Actually, the closest thing to effortless platform migration was/is
> *Smalltalk* with its image file which can be run unchanged on a large
> number of platforms! I've done it with VisualWorks, Squeak and
> VisualAge. The two Smalltalk-80 descendants provide much easier
> migration (just snapshot your image and start up on another machine)
> but VisualAge is pretty doable as well as long as you're willing to
> work around the quirks of the different native widgets under OS/2,
> Windows and Unix/X.
Smalltalk showed that it is possible to overcome operating system
barriers. It was the foundation for Java Swing and SWT. It is a: all
been there,
all done that. And I don't understand, why the Smalltalk community can't
come up with a common library layer.
Don't aim for GUI, but start with something like a common file system
library.
>
> Cheers,
> Hans-Martin
Greetings
Waldemar Dick


Reply | Threaded
Open this post in threaded view
|

Re: FFI usage

Alejandro F. Reimondo
In reply to this post by Andreas.Raab
Thankyou Andreas for the explanation and code.
I asked for a non-assembly option to compile for PocketPC
 without learning assembly (to rewrite 20lines of code :-)
thanks again!
Ale.


----- Original Message -----
From: "Andreas Raab" <[hidden email]>
To: "The general-purpose Squeak developers list"
<[hidden email]>
Sent: Friday, May 12, 2006 7:31 PM
Subject: FFI usage


> Alejandro F. Reimondo wrote:
> > Where can we read details on FFI?
>
> Below ;-)
>
> > I am interested becasue I feel that the FFI implementation
> >  requires Assembly code to be compiled.
> > Is it true?
>
> That depends on whether you mean it literally or figuratively. For
> running the FFI there is a bit of per-platform support code needed, some
> of which (the actual call-out) is typically implemented directly in
> machine code and written using assembler.
>
> > Is there any "slow" code in slang for platforms that do not have
> >  easy assemblers?
>
> The FFI is (like many other parts of Squeak) "incomplete" in such that
> it requires a bit of extra support code to implement the actual ABI
> (e.g., setting up the call stack, calling the function, popping args
> from the stack etc). This is handled in the platform specific files (see
> sqWin32FFI.c for an example) and requires some 20 functions or so to
> work (most of those are trivial but provided just in case some platform
> has odd behavior wrt. to some data type).
>
> It is certainly possible to implement much of it without the use of
> assembler. For example, if a platform basically passes everything as
> words (32bit ints) you could do something like here:
>
> int args[MAX_ARGS];
> int argCount;
>
> /* take an int as next argument */
> int ffiPushSignedInt(int value) {
>    args[argCount++] = value;
>    return 1;
> }
>
> /* tons of other int types eliminated for brevity here */
>
> int ffiPushSingleFloat(double value) {
>    /* this will push the 32bit equiv. of the float value */
>    float single = (float) value;
>    ffiPushSignedInt(*(int*)(&single));
>    return 1;
> }
>
> /* ... double works just the same way; 2x32bit entity ...*
> /* ... structures ditto ...*/
>
> /* finally, do the actual callout */
> int ffiCallAddress(int fn) {
>    switch(argCount) {
>      case 1: return ((int(*)(int))fn)(args[0]);
>      case 2: return ((int(*)(int, int))fn)(args[0], args[1]);
>      case 3: return ((int(*)(int, int))fn)(args[0], args[1], args[2]);
>      /* ... etc ... */
> }
>
> This will work just fine and requires no assembler but so far I haven't
> found any platform where things would be as simple as that (both Intel
> as well as PPC have more complex rules than can be reasonably modeled by
> this technique). But if you happen to have a platform where things are
> that simple (or if it's okay to restrict yourself to a subset that can
> be modeled as simply) that's certainly an option.
>
> Cheers,
>    - Andreas
>


Reply | Threaded
Open this post in threaded view
|

Re: Smalltalk: Requiem or Resurgence? {Dr. Dobb's Journal (05/06/06) Chan, Jeremy}

Kendall Shaw
In reply to this post by Göran Krampe
Hmm, so many different people to reply to. I'll pick this one.

First off. Okay, I think my comments about "if it doesn't look exactly
the same" are wrong. Yes, innovation is great, and there is plenty to
improve upon in UIs. Some of the morphic GUI elements are pretty nifty,
it's just that they are in some "weird" flat color and they appear
within their own desktop on my OS desktop. So, I would refine what I
said to be that "if your UI looks weird, it will be severely disadvantaged".

Like other people have said, if the app does something incredibly great
than people will be so impressed that they won't care if the UI is "weird".

What is weird is subjective. So, if Microsoft makes it, or Apple (or KDE
or Gnome), then it automatically becomes less weird than something
someone else makes.

It there is an unusual UI that has a great feel to it, that can win out
over the fact that it's unusual. Developing new UI ideas is good.
Unfortunately, at this point, I don't think the new UI ideas in Squeak
overcome the weirdness factor for normal desktop application users.

WxSqueak, if it could be launched without squeak's desktop appearing
too, could probably make squeak more worth people's time to develop
desktop applications with.

A great GUI would be different than the current GUIs and not be an
emulation.

[hidden email] wrote:

> Hi!
>
> I am not really arguing here - just mentioning some pointers about these
> bullets that might be interesting to hear about:
>
> Kendall Shaw <[hidden email]> wrote:
>> If your program doesn't look exactly like every other program and use
>> exactly the same procedure they've had to use for every program, then
>> game over, you might as well not have even bothered to write the program.
>>
>> In squeak, the controls don't look or behave like the other controls a
>> user will use on their computer, so game over, you might as well not
>> have even bothered to write the program.
>
> http://www.wxsqueak.org
>
> ...or just use Dolphin for win32 apps - it is really nice for that.
> Or turn the app into a localhost webapp, like we are currently doing
> with the issue tracker we are writing.

My complaint about the GUI, doesn't have to do with Smalltalk, just Squeak.

>> It doesn't matter what I think about it. It's what the user is likely to
>> think about it.
>>
>> Most importantly though, I can't open emacs on squeak's desktop.
>
> wxSqueak doesn't "force" a deskop. Try the demo. And even so - why not
> run Emacs on the side? :) Or inside Squeak:
> http://map.squeak.org/packagebyname/svi

The point is that there is a barrier between the smalltalk in squeak and
the files on my OS file system. Having a more functional editor inside
Squeak, doesn't get rid of the barrier.

> And then we have Areithfa Ffenestri or what the heck it is called. ;)
> (the code for supporting multiple windows from within Squeak - but
> wxSqueak already gives you that actually)

Hmm. I'll have to look at Areithfa Ffenstri.

>> Also, I can't easily check a squeak application into a version control
>> system, separate from other squeak applications, but together with other
>> source files in other languages, and other files.
>
> Mmmmm, "easily"... well. There have been numerous approaches of
> mirroring Smalltalk code into files for that like MonticelloCVS or
> CVSTProj. I even hacked up a almost fully functional cvs pserver
> protocol implementation. ;) But these days Monticello is so convenient
> to use and just needs a file dir or an ftp server for team work - there
> is no real incentive to bother. Especially not now that MC2 is seeing
> the light.

The point again is about the Barrier between stuff that's in squeak, and
what's on the file system. Even if there is some great squeak version
control system, that means I'm locked into that system. I can't freely
choose to switch over to Subversion or something else.

> And if the idea is to just "bundle" a snapshot with other snapshots of
> software - then just dump the .mcz into your choice of repo, no big
> deal.
>
>> I can't run find on a combination of squeak classes and other files.
>
> You shouldn't. ;) But apart from that aspect - adding a mirroring
> mechanism of source into files that is "live" shouldn't be that hard if
> someone really wanted to do it.

So, changing or extending squeak could make it different. I agree. If
there were a live file system mirror that didn't depend on the
individual instance of squeak that one person has on their desktop, that
could eliminate the problem that I'm describing.

>> I can't easily include it in a test procedure involving multiple languages.
>
> Hmmm, why not? I mean - what makes Squeak harder to use in a test
> procedure than *any other* mixing of languages?

The barrier between stuff that's in squeak and what's on the file system.

>> I don't think you could easily distribute it as an rpm or a debian
>> package etc. and deal with dependencies between squeak applications.
>
> You can very easily deploy a Squeak app as an rpm or deb. The simplest
> way is to just bundle the VM with the image. No external deps at all.
> And I can't see why Squeak would add any further obstacle than any other
> language in that respect.

Again there is the problem with squeak being monolithic. How would you
handle dependencies between multiple squeak applications written by
different people and dependencies on external software, from the
external packaging system of your choosing, and not be locked into one
particular packaging system?

>> I can't use installshield to integrate it into someone's squeak applications.
>
> Not sure what you mean. Making an "installshield" installer for a Squeak
> app is trivial. Just test:
> http://swiki.krampe.se/gohu/23
>
> That is old though, Cees has improved it a bit and I am using it right
> now for our issue tracker.

That's an installer for Squeak right? Not a mixture of possibly
interdependent software, some written in squeak and some not.


Reply | Threaded
Open this post in threaded view
|

RE: Smalltalk: Requiem or Resurgence? {Dr. Dobb's Journal (05/06/06) Chan, Jeremy}

tblanchard
In reply to this post by Michael Latta
On that note, I think it would be cool to have a linux distro that used squeak as THE desktop.  The downside is that there are a lot of holes in the toolset (like web browser) that are difficult to recreate.  The upside is that this would force the holes to be filled in.
 
On Friday, May 12, 2006, at 02:07PM, Michael Latta <[hidden email]> wrote:

>Smalltalk is much more like an OS than just a language.

Reply | Threaded
Open this post in threaded view
|

Re: FFI usage

Andreas.Raab
In reply to this post by Alejandro F. Reimondo
Alejandro F. Reimondo wrote:
> Thankyou Andreas for the explanation and code.
> I asked for a non-assembly option to compile for PocketPC
>  without learning assembly (to rewrite 20lines of code :-)

You still need to understand the ABI and personally, I typically find
this harder than learning the basics of the assembler language involved.
For an unknown ABI I'd actually recommend learning the assembler
language as a starter, to understand the processor architecture. It
explains a lot when you read through the ABI and try to understand some
oddball reference to a register you've never heard about and what its
purpose might be.

Cheers,
   - Andreas

> thanks again!
> Ale.
>
>
> ----- Original Message -----
> From: "Andreas Raab" <[hidden email]>
> To: "The general-purpose Squeak developers list"
> <[hidden email]>
> Sent: Friday, May 12, 2006 7:31 PM
> Subject: FFI usage
>
>
>> Alejandro F. Reimondo wrote:
>>> Where can we read details on FFI?
>> Below ;-)
>>
>>> I am interested becasue I feel that the FFI implementation
>>>  requires Assembly code to be compiled.
>>> Is it true?
>> That depends on whether you mean it literally or figuratively. For
>> running the FFI there is a bit of per-platform support code needed, some
>> of which (the actual call-out) is typically implemented directly in
>> machine code and written using assembler.
>>
>>> Is there any "slow" code in slang for platforms that do not have
>>>  easy assemblers?
>> The FFI is (like many other parts of Squeak) "incomplete" in such that
>> it requires a bit of extra support code to implement the actual ABI
>> (e.g., setting up the call stack, calling the function, popping args
>> from the stack etc). This is handled in the platform specific files (see
>> sqWin32FFI.c for an example) and requires some 20 functions or so to
>> work (most of those are trivial but provided just in case some platform
>> has odd behavior wrt. to some data type).
>>
>> It is certainly possible to implement much of it without the use of
>> assembler. For example, if a platform basically passes everything as
>> words (32bit ints) you could do something like here:
>>
>> int args[MAX_ARGS];
>> int argCount;
>>
>> /* take an int as next argument */
>> int ffiPushSignedInt(int value) {
>>    args[argCount++] = value;
>>    return 1;
>> }
>>
>> /* tons of other int types eliminated for brevity here */
>>
>> int ffiPushSingleFloat(double value) {
>>    /* this will push the 32bit equiv. of the float value */
>>    float single = (float) value;
>>    ffiPushSignedInt(*(int*)(&single));
>>    return 1;
>> }
>>
>> /* ... double works just the same way; 2x32bit entity ...*
>> /* ... structures ditto ...*/
>>
>> /* finally, do the actual callout */
>> int ffiCallAddress(int fn) {
>>    switch(argCount) {
>>      case 1: return ((int(*)(int))fn)(args[0]);
>>      case 2: return ((int(*)(int, int))fn)(args[0], args[1]);
>>      case 3: return ((int(*)(int, int))fn)(args[0], args[1], args[2]);
>>      /* ... etc ... */
>> }
>>
>> This will work just fine and requires no assembler but so far I haven't
>> found any platform where things would be as simple as that (both Intel
>> as well as PPC have more complex rules than can be reasonably modeled by
>> this technique). But if you happen to have a platform where things are
>> that simple (or if it's okay to restrict yourself to a subset that can
>> be modeled as simply) that's certainly an option.
>>
>> Cheers,
>>    - Andreas
>>
>
>
>


Reply | Threaded
Open this post in threaded view
|

Re: FFI usage

johnmci

On 12-May-06, at 6:51 PM, Andreas Raab wrote:

> Alejandro F. Reimondo wrote:
>> Thankyou Andreas for the explanation and code.
>> I asked for a non-assembly option to compile for PocketPC
>>  without learning assembly (to rewrite 20lines of code :-)
>
> You still need to understand the ABI and personally, I typically  
> find this harder than learning the basics of the assembler language  
> involved. For an unknown ABI I'd actually recommend learning the  
> assembler language as a starter, to understand the processor  
> architecture. It explains a lot when you read through the ABI and  
> try to understand some oddball reference to a register you've never  
> heard about and what its purpose might be.
>
> Cheers,
>   - Andreas


Yes, and when reading the ABI ensure you follow *all* the clues,  
casual mention of "quad word alignment" lurking
casually somewhere really does mean that, perhaps the code *will*  
appear to  run,  right to the point you make
the first OpenGL call...

Oh, and careful about assuming you have a correct ABI, look for the  
revised edition (if any).

--
========================================================================
===
John M. McIntosh <[hidden email]> 1-800-477-2659
Corporate Smalltalk Consulting Ltd.  http://www.smalltalkconsulting.com
========================================================================
===


Reply | Threaded
Open this post in threaded view
|

Re: *****SPAM***** Re: Smalltalk: Requiem or Resurgence? {Dr. Dobb's Journal (05/06/06) Chan, Jeremy}

Charles Hixson-2
In reply to this post by timrowledge
tim Rowledge wrote:

>
> On 12-May-06, at 9:15 AM, Charles D Hixson wrote:
>
>> (Well,
>> compilation to C would be better, but I'm presuming that this is
>> impossible.)
>
> Why would compilation to C be better? You wouldn't gain any
> performance in any serious application. Consider a moment; to send
> messages you have to do certain work. If you compiled
> ...
> tim
> --
> tim Rowledge; [hidden email]; http://www.rowledge.org/tim
> Oxymorons: Soft rock

Compilation of Squeak to C would be better because there are well know
ways to distribute programs written in C to various different
platforms.  I understand that this probably wouldn't yield any
performance gain, that would require designing the program in the
language of implementation, and for that purpose I'd rather choose
something other than C.  D, perhaps, or even Eiffel.  The problem with
those is no graphic interface.  Ada is a possibility, and has a decent
connection to Gtk.  But Ada code is HUGE.

However, it has been said that my first qualm, that there isn't an easy
way to distribute a program after it's been written to a machine that
doesn't already have Squeak installed is false...in which case none of
these arguments apply.  (OTOH, I don't currently know them, so I have no
idea what the limitations of these methods are.  Presumably I'll run
across them before I need them.)




Reply | Threaded
Open this post in threaded view
|

Re: Smalltalk: Requiem or Resurgence? {Dr. Dobb's Journal (05/06/06) Chan, Jeremy}

Alejandro F. Reimondo
In reply to this post by Waldemar Dick

> Creating standards is easy for them.
> On the other side, Smalltalk has a lot of interested
> groups (dialects).  Creating a
> standard is quite difficult.

It is called "diversity", and is an emergent observable
 with evolution.

In languages defined as one-for-all (now called "standard")
 diversity is not observed because they are products
 of formal design (and not of normal evolution).

For formal definitions, any difference represent a problem.
For non-formal activities a divergence is a natural path
 to be taken by a newcommer.
This differences make diferences in the propagation
 process of products of formal&non-formal activities.

cheers,
Ale.



----- Original Message -----
From: "Waldemar Dick" <[hidden email]>
To: "The general-purpose Squeak developers list"
<[hidden email]>
Sent: Friday, May 12, 2006 7:37 PM
Subject: Re: Smalltalk: Requiem or Resurgence? {Dr. Dobb's Journal
(05/06/06) Chan, Jeremy}


> Hi,
>
> Hans-Martin Mosner schrieb:
> > The problem with this comparison is that it is treating Smalltalk as a
> > programming language.
> > It's much easier if you treat it like an operating system or a SQL
> > database - it's a platform.
> In previous posts, Smalltalk was compared against Ruby, Python, etc. and
> why it doesn't,
> as the more mature language, get the same attention.
> Ruby, Python, Java, .Net are all a language + VM or interpreter/compiler
> (for more then one OS)
> + a basic set of libraries.
>
> Smalltalk is only the language. The language comes in a bundle with VM +
> libraries + IDE.
> So, actually you can't compare Smalltalk with any other bundle (Ruby,
> Python, ...).
> Instead you have to compare, for example Squeak, with the others.
> And that is point, that confuses people and makes the entry to Smalltalk
> difficult.
>
> > In theory, your C program should just run on HP-UX, Linux, AIX,
> > Windows, MacOSX, RiscOS, AmigaOS, ...
> > Why did all those operating system vendors invent incompatible system
> > calls, libraries, file system conventions?
> The languages we compare Smalltalk to, do this abstraction by providing
> a VM.
> > Or why can't you just take your SQL application from ORACLE to MySQL
> > or Sybase?
> > After all, SQL is a standard!
> Right, all databases have SQL 95 as least common denominator. You can
> work with
> the SQL standard.
> I was trying to say, that the least common denominator, ANSI Smalltalk,
> is to small to
> base actual work on it. No networking, threading, file system (only file
> stream), ...., database, ...
> >
> > I don't know enough about SQL, but at least in the operating system
> > world you can achieve a lot of portability by sticking to POSIX which
> > is supported on most platforms.
> > Similarly, you get pretty good portability in Smalltalk by sticking to
> > the ANSI Smalltalk subset.
> > Of course, GUI widgets etc. are not included in that standard and so
> > are non-portable.
> > But does POSIX include standard GUI widgets? Can you write a GUI
> > application in C and port it from Linux to Windows without a lot of
work?
> Standards across more than one interested party are difficult to
> achieve. And most
> of the time this standards come out as a least common denominator, which
is

> better than nothing, but not a lot more.
> Every language hyped or mainstream right now, got exactly one interested
> group.
> Creating standards is easy for them.
> On the other side, Smalltalk has a lot of interested groups (dialects).
> Creating a
> standard is quite difficult.
> But without (at least) a standard library, you won't be able to compare
> Smalltalk
> to the other languages. Then you are right, you will have to compare it
> with operating
> systems.
> As a side note: At least one language from above, is successful, because
> it promised
> to overcome the operating system barriers.
> > I agree with you that it would be great to have easier portability
> > between the different Smalltalk systems, so you could switch platforms
> > when needed without too much work.
> > But in reality, switching between platforms has never been easy.
> > Actually, the closest thing to effortless platform migration was/is
> > *Smalltalk* with its image file which can be run unchanged on a large
> > number of platforms! I've done it with VisualWorks, Squeak and
> > VisualAge. The two Smalltalk-80 descendants provide much easier
> > migration (just snapshot your image and start up on another machine)
> > but VisualAge is pretty doable as well as long as you're willing to
> > work around the quirks of the different native widgets under OS/2,
> > Windows and Unix/X.
> Smalltalk showed that it is possible to overcome operating system
> barriers. It was the foundation for Java Swing and SWT. It is a: all
> been there,
> all done that. And I don't understand, why the Smalltalk community can't
> come up with a common library layer.
> Don't aim for GUI, but start with something like a common file system
> library.
> >
> > Cheers,
> > Hans-Martin
> Greetings
> Waldemar Dick
>
>


Reply | Threaded
Open this post in threaded view
|

Re: Smalltalk: Requiem or Resurgence? {Dr. Dobb's Journal (05/06/06) Chan, Jeremy}

Nicolas Cellier-3
Le Samedi 13 Mai 2006 15:10, Alejandro F. Reimondo a écrit :

> > Creating standards is easy for them.
> > On the other side, Smalltalk has a lot of interested
> > groups (dialects).  Creating a
> > standard is quite difficult.
>
> It is called "diversity", and is an emergent observable
>  with evolution.
>
> In languages defined as one-for-all (now called "standard")
>  diversity is not observed because they are products
>  of formal design (and not of normal evolution).
>
> For formal definitions, any difference represent a problem.
> For non-formal activities a divergence is a natural path
>  to be taken by a newcommer.
> This differences make diferences in the propagation
>  process of products of formal&non-formal activities.
>
> cheers,
> Ale.

Ale, very good theory,

There are also 2 main modes of reproduction: sexual or not (simple division).

Sexual is somehow superior, because it allows mixing advantages of two
individuals.

Diversity is good since the chances of survival are increased.
But above a certain degree of difference, sexual reproduction is not possible
anymore.

I'd like Smalltalk dialects to have more sexual relations, and allow natural
mixing of some VW genes with some Squeak ones for example.
By now, i must rely on some genius of genetics to do the transplatation in
laboratory, something very expensive!

Nicolas


Reply | Threaded
Open this post in threaded view
|

Re: Smalltalk: Requiem or Resurgence? {Dr. Dobb's Journal (05/06/06) Chan, Jeremy}

Jason Rogers-4
One issue I continue to face in trying to get Squeak to be a viable
solution at my workplace is that Squeak does not integrate with the
common idioms of the day very well.

For instance, Squeak doesn't support SSL and HTTPS.  These are very
common protocols that just about every other major language supports.
I don't know enough about these technologies to be able to code it
myself, but surely there are people in the community who can.  My
biggest project at work is an integration with Salesforce.com via SOAP
which is currently impossible in Squeak because of the lack of HTTPS
connections.  I tried doing it in VW 7.3, but I could never get the
SOAP support worked out properly.

So, in my opinion, if we would like Smalltalk in general (and Squeak
in particular) to be easily accessible to a larger group of
developers, or even if we want it to be MORE easily accessible to its
current group of developers, these issues of "playing well in the
sandbox with other children" need to be worked out.

--
Jason Rogers

"Where there is no vision, the people perish..."
    Proverbs 29:18

Reply | Threaded
Open this post in threaded view
|

Re: Smalltalk: Requiem or Resurgence? {Dr. Dobb's Journal (05/06/06) Chan, Jeremy}

Klaus D. Witzel
Hi Jason,

on Sun, 14 May 2006 02:33:45 +0200, you <[hidden email]> wrote:

> One issue I continue to face in trying to get Squeak to be a viable
> solution at my workplace is that Squeak does not integrate with the
> common idioms of the day very well.
>
> For instance, Squeak doesn't support SSL and HTTPS.  These are very
> common protocols that just about every other major language supports.
> I don't know enough about these technologies to be able to code it
> myself, but surely there are people in the community who can.

Here's how others have done it without additional coding

- http://www.google.com/search?q=squeak+apache+https

I think that most sites are running their Squeak headless Web apps on the  
back-end of a front-end http server.

> My
> biggest project at work is an integration with Salesforce.com via SOAP
> which is currently impossible in Squeak because of the lack of HTTPS
> connections.

Happy squeaking ;-) and let us know how it worked.

/Klaus


Reply | Threaded
Open this post in threaded view
|

Re: Smalltalk: Requiem or Resurgence? {Dr. Dobb's Journal (05/06/06) Chan, Jeremy}

Philippe Marschall
> Here's how others have done it without additional coding
>
> - http://www.google.com/search?q=squeak+apache+https
>
> I think that most sites are running their Squeak headless Web apps on the
> back-end of a front-end http server.

I think Jason wants to talk to a server via https/ssl from squeak, not
the other way around.

Maybe this helps:
http://www.stunnel.org/examples/https_client.html

Cheers
Philippe

Reply | Threaded
Open this post in threaded view
|

Re: Smalltalk: Requiem or Resurgence? {Dr. Dobb's Journal (05/06/06) Chan, Jeremy}

tblanchard
That doesn't quite do it either unless you always want to talk to the  
same server.  OSProcess with curl is good, or someone could write a  
plugin for libcurl. I need this as well but haven't had time to do it.

On May 14, 2006, at 2:19 AM, Philippe Marschall wrote:

>
> I think Jason wants to talk to a server via https/ssl from squeak, not
> the other way around.
>
> Maybe this helps:
> http://www.stunnel.org/examples/https_client.html
>
> Cheers
> Philippe
>


Reply | Threaded
Open this post in threaded view
|

Re: Smalltalk: Requiem or Resurgence? {Dr. Dobb's Journal (05/06/06) Chan, Jeremy}

Chris Muller
In reply to this post by Nicolas Cellier-3
Nicolas wrote:
 
 > If you try to mimic the OS native interface, it's only a defensive strategy,
> by construction something imperfect and always one version late...
> You're wasting development forces to follow the leaders, and don't invent
> anymore in this domain...

 +1  thank you Nicolas for nailing my sentiments about native widget emulation.
 
 The goal should be good looking, easy-to-use interfaces.  Innovate, don't emulate.
 
 I must admit, I've never understood why some are so concerned with native look and feel anyway.  Why is it such a big deal if the drop-shadow on my buttons appears lower-left instead of lower-right (this is a made up example, is there a better one)?  If Microsoft does it in their new version of Windows, THEN its ok.  It suddenly becomes (gong please) "the new standard" that we all must "conform" to.  Please..  The only way to break this cycle of following is to break it.
 
 Frankly, I also wonder about those who feel "blocked" by Squeaks "weird" look and feel.  It's basically the same as anything else as far as I can tell.  You have lists, buttons, scroll-bars, text editors, etc.  They're styled a bit differently than native windows but operate pretty much the same.  These widget differences are like the differences between driving a Ford vs a Chevy, not much, and most anyone is able to figure it out.
 
 The fact is, going forward, new-and-refined UI's *will* be designed, both in and out of Squeak.  The only thing any user can do is adjust, get used to it, and develop an exploratory nature when working with computers.  Either that or stay with MS Word and MS Excel forever..   :)
 
  - Chris
 




123456