Stories
Slash Boxes
Comments

News for nerds, stuff that matters

Slashdot Log In

Log In

Create Account  |  Retrieve Password

Smalltalk Solutions 2001 Trip Report

Posted by timothy on Wed Apr 18, 2001 07:04 AM
from the gayle-force-winds? dept.
John Squeaker writes: "Last week while the rest of the world was worrying about corporations warning, and dot coms failing, 300 smalltalkers got together in Chicago to plan for the future. Given the fact corporations like Dell have canceled their user conference this year we were very pleased with the attendence figures. The conference hosted a key note by Alan Kay, a *must* read, and the mood and general feeling of the show was captured in this excellent trip report. More information on the conference plus links to the papers/tutorials presented there can be found at the conference site. Do you want to know where OO languages like Java, Ruby, Squeak, and SmallScript come from? Then come visit us for the real story, and see what you can expect to hear in the next five years." The whole thing is interesting, but I particularly liked Tuesday. Smalltalkers seem to have a secret from everyone else sometimes ...
+ -
story
This discussion has been archived. No new comments can be posted.
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
 Full
 Abbreviated
 Hidden
More
Loading... please wait.
  • A couple of Qs:

    1) the oopsla 99 BOF on Squeak had a fun presentation on the new Jitter for squeak -- written in a weird self interpreting style, IIRC. It seemed pretty cool. (also one of the best stories on what to use C++ for. "C++ is a great language for implementing langauges to solve your problem". Interestingly, this is the same story many of the functional programming people sing, only they use bigger words like monads and combinators) How is this jitter coming along?

    2) I also seem to remember a product that compiled smalltalk to JVM bytecode. They were very cagey about how they would get around the dispatch issues without resorting to reflection. Any word on this?
  • by Spiritwalker (109806) on Wednesday April 18 2001, @08:17AM (#283269) Homepage
    Indeed, VisualAge Smalltalk and VisualAge for Java are both written in Smalltalk. The portability of the OTI implementation allowed VA/Smalltalk and VA/Java to be shipped on Win32, OS/2 (oohhh), and Unix's. The VM was also responsible for running a Tectronic oscilloscope. Just some of the examples of successful ST products.
  • back pointers? I suppose you mean a collection of weak references.

    which languages implement this, outside of the DB world (where you could argue it is explict as well, being stored in a table) or UML (which so far has resisted all attempts at being executable)?
  • Yes, Smalltalk has been around for awhile, but it is still the source of new ideas and trends in certain areas. For example:

    Extreme Programming. The extreme programming [extremeprogramming.org] (XP) methodology grew out of a Smalltalk project 3-4 years ago. The founder of extreme programming, Kent Beck [c2.com], advocates Smalltalk as the most productive language for XP, as does Ron Jeffries, the author of the Extreme Programming Installed book.

    Refactoring. The term "refactoring" has become popular in the last few years, due in large part to the work done on the Refactoring Browser [uiuc.edu] for Smalltalk by John Brant and Don Roberts. (Martin Fowler's book on Refactoring includes a section on the Refactoring Browser.) The Refactoring Browser lets you perform automated behavior-preserving code refactorings, such as abstracting references to an instance variable, pushing a method up into its superclass, etc. (There have also been some refactoring tools written for Java, but the nature of the Java language will make it difficult to create a tool as powerful as the Refactoring Browser for Smalltalk.)

    IDE's (Integrated Development Environments). Smalltalk has generally been considered a leader in this area, with its integrated code browsers, the ability to reliably look up all senders or implementors of a method, etc. (There is the occasional effort in other languages to catch up in this area, such as VisualAge Java with its integrated browsers, but VA/Java was also written in Smalltalk.) Also, to shamelessy toot my own horn for a minute, I've created an object-oriented "stacking" code browser for Squeak/Smalltalk called Whisker [mindspring.com]. I used Smalltalk to create this because the IDE supports this sort of experimentation well.

    So, to claim that Smalltalk is somehow dead or obsolete is obviously false. True, it doesn't have the marketing hype (and market penetration) that Java does, but then, what else does? :-)

    (Also, I still consider the language features of Smalltalk to be more technically "advanced" than those of Java. My personal hunch is that if you conducted a random poll of developers with *significant* experience with both languages (say, a minimum of 1 year full-time experience with each), probably 90-98% would agree with this. Of course, the same is probably true of Scheme vs. Java, or CLOS vs. Java, etc.)

    Anyway, Smalltalk is obviously not the answer to all programming problems. (I wouldn't use it to write a device driver, for example.) But it is still one of the best (if not *the* best) options for many larger programming problems.

  • 6) "just catch messageNotUnderstood"... If it's that easy why isn't it built into the language? (Of course it isn't, quite that easy.) But we're talking about mistakes in the language, not hacks to get around the mistakes in the language...
  • Not that this is a very good example, but I did get to play with the TIBET workspace (itself in a web browser window) at a recent demo of a preliminary version of the system. After a bit of instruction, I entered some code to explicitly generate HTML in an ad hoc fashion into the workspace text area. I wanted to create a primitive class browser (the TIBET "classes" are called "types"). It didn't use any of the TIBET widgetry so the HTML construction is rather escapish, but it does show some of the Smalltalk flavor. It went something like this:

    typeHTML=TPMutableString.create();
    typeHTML.concat('<form><table>');
    TPObject.getTypeMethodNames().sort().perform(funct ion(elem){typeHTML.concat('<tr><td>',' <input type=button name="',elem,'" value="',elem,'" onClick="',elem,'.getMenu()">','</ td></tr>')});
    typeHTML.concat('</table></form>');
    newwin=window.open();
    newwin.document.open();
    newwin.document.write(typeHTML);
    newwin.document.close();

    Then I clicked the EXECUTE button on the workspace and, as expected, a browser window opened up with a column of buttons named for the various TIBET types. I didn't define the "getMenu" method so it didn't actually work, but it wasn't bad for just sitting down and messing around for 10-15 minutes.

  • Correction, that was creating a method browser -- not a class browser because the "getTypeMethodNames" method returns the names of all methods that have been defined. If I had wanted it to work, the getMenu method would probably have to have been defined as an instance method on the TPMutableString type which would generate HTML for a menu of all types that implemented the named method.

    Not exactly first top notch factored design, I know.

    Such is the fate of a first-time workspace doodle.

  • When I say Smalltalk is too insular, I mean in the really simple ways. Like, developing Smalltalk code when you can only access the server with shell and FTP access. It's hard to partition -- you can't easily split the Smalltalk application from the giant environment that comes with it. How do you ship an application based on that?

    Yes, these things can be done (well, I still don't know about developing Smalltalk code and uploading it), but they can't be done easily. This is the sort of thing that comes almost for free when you use C or Python. But just getting started can be a royal pain in the butt with something like Smalltalk, or heck, even Java.

    I spend an inordinate amount of time dealing with the environment already. (inordinate being anything more than zero -- but in practical terms it can be quite high)

    I can learn new things -- any decent programmer should enjoy learning all sorts of new things -- and when I learn them I know them. I'm always moving forward (even though expectations always increase). But with the environment stuff I always feel like I'm wasting time, and that the time I spend I'll just have to spend again when I move, or set up something new. I guess it's time spent that would be considered accidental, rather than essential -- and it's totally unsatisfying.

    It's petty, I know, which is probably why I sound really annoyed in this post. It annoys me that petty things create serious blocks to being able to use something cool. I wish it weren't so.

  • Ah yes, a newbie. I suggest you go read the FAQ.
  • Can anyone provide a URL to any real world work done in Smalltalk? Or is it just an abstract base language for the other OO tools named in the posts?

  • by hding (309275) on Wednesday April 18 2001, @04:26AM (#283288)

    I have to do some of my development in Windows, and boy was finding Dolphin Smalltalk [object-arts.com] a nice thing for me. And no, I'm not some holdover from the 80s - when I started to do programming in the past couple of years (my training is really in mathematics; I wound up here via a winding path), I looked into various languages, tried them out for some of the things that I need to do, and found that two "old-timers" languages (Common Lisp and Smalltalk) fit many of my needs (which, incidentally, are not at all exotic - I do programming for a small trading firm).

    It's a shame that so many people have preconceptions about various languages (often formed on the basis of where they were twenty years ago rather than where they've advanced to today) and therefore avoid checking them out to see what good things they can do.

  • by Carnage4Life (106069) on Wednesday April 18 2001, @04:37AM (#283289) Homepage Journal
    The story submitter states:
    Do you want to know where OO languages like Java, Ruby, Squeak, and SmallScript come from?

    Although it is true that Java is heavily influenced by Smalltalk, there are also distinctive parts of Java that are based on Modula [compaq.com]. Most prominent of which are the Exception handling mechanism [cs.sfu.ca] and threading model [uni-siegen.de] based on Monitors.

    --
  • by werdna (39029) on Wednesday April 18 2001, @04:43AM (#283291) Homepage Journal
    Language bigotry has no place in this forum, particularly when propounded in a naive and uninformed fashion. The author of the comment has apparently not built too many enterprise back-office systems, a venue in which Smalltalk has yet to be surpassed, or been following the extraordinary work at Disney R&D with Squeak.

    Smalltalk has its place in the cannon, just as does Perl and other languages. It has aged quite well, in fact, among those who have taken the time to learn something about it.

    The bigots are free to their own views. I commend to the rest of us, however, a second look. Consider Squeak, an excellent, modern and free Smalltalk implementation. Play with it a bit, and see if you don't begin, at least, to "get it."
  • by crovira (10242) on Wednesday April 18 2001, @04:44AM (#283292) Homepage
    I can report that Smalltalk it the best computer language out there despite its only flaw (contained objects don't know about their containers unless you create an explicit link back to the container. That makes instantiation in context more complicated.)

    It consists of a few fundamental rules, ruthlessly applied and a huge library of functional objects.

    I have done things in Smalltalk that are years ahead of what I accomplished in previous languages (C, COBOL, PL/I, APL, BASIC etc.) because the environment is reflexive and additions are interactive.

    Its not that I couldn't have done all this, even in assembler, but that I'd still be scratching out code and waiting on compile-links. With the Smalltalk IDE it was there waiting for me to use it and to build on it.

    The closer other languages and IDEs get to where Smalltalk was (because its a moving target,) the better Smalltalk looks.
  • How about a single substantive argument to that end? Perl is useless for Object-oriented design. Python is better than Perl in this regard, but different, in many ways.

    Have you anything to offer us but a conclusion?
  • Squeak does have some rough edges since it is mostly a research platform (although companies (other than Disney) are starting to use it for real world projects). However, to prevent your comments on Squeak from being generalized, I have some objections to your rant:

    And don't ask them to try and learn the language either, because there's no documented API, and the purportedly self-commented code really isn't.

    Learning Smalltalk is probably the easiest thing in the world, if you know the conceptual OO stuff, which is the same as for Java,C++,CLOS,... There are only 5 reserved words (true, false,nil,self,super). It literally takes you half an hour to learn Smalltalk syntax.

    Since Squeak is mostly a research platform, the code might not be documented so well in some places. However, you have superior code browsing in every Smalltalk IDE and the entire code of your library is open source. So you do not only have the comments to the code, but also the code itself, if you care. BTW, the Smalltalk frameworks have been refined for over twenty years now. Talk about clean frameworks.

    Also (and yes, I realize I'm reaching here), but the syntax is all backwards. It's not sufficiently like natural laugnage to be easy for beginners to use, and it just frustrates experienced programmers used to nearly every other language (i.e., based on C).

    I came from C++ to Smalltalk and I cringe whenever I have to go back. Smalltalk code is readable as almost normal text, whereas you often do not see the forest for all the parenthesis in C++ or Java. For example:

    In Java:

    ...
    synchronized (this) {
    while (aNumber > 0) {
    try() {
    wait();
    } catch (InterruptedException) { ... }
    }
    TheCriticalCode
    }
    ...

    The equivalent in Smalltalk:

    ...
    self synchronized:
    [ self waitWhile: [aNumber > 0].
    TheCriticalCode ]
    ...

    Squeak might not be what you want for normal product development (checkout VisualWorks [cincom.com] or one of the other 8 commercial Smalltalk implementations), but within the Squeak world, certainly the most exciting stuff is happening.

  • The extreme programming (XP) methodology grew out of a Smalltalk project 3-4 years ago. The founder of extreme programming, Kent Beck, advocates Smalltalk as the most productive language for XP, as does Ron Jeffries, the author of the Extreme Programming Installed book.

    Like so many things that recently have made a splash (extreme programming, refactoring, patterns, etc.), this is really just giving a name to programming practices and ideas that have been around for two decades. Smalltalk was one of the languages where such ideas originated (Lisp was another major one), they just didn't originate recently.

    (There have also been some refactoring tools written for Java, but the nature of the Java language will make it difficult to create a tool as powerful as the Refactoring Browser for Smalltalk.)

    Quite to the contrary. While Java isn't as convenient to program in as Smalltalk, the additional type information that Java source code contains lets you do more kinds of refactoring safely. In fact, one of the reasons refactoring has not been such a big deal in the C++/Java world is because static type checking in those languages already helps you with a lot of refactorings. For example, in Java, if you change an interface or move instance variables around, the type checker will point out every single place that you need to change. If you use a good IDE, you can breeze through those places and a refactoring only takes a single edit, compile, edit cycle. You still need to make the changes by hand, but that's pretty quick, actually faster than any of the refactoring browsers I have used in many cases.

  • I didn't think it had any specific reference. It was a joke based on what a trip report usually is for people with experience with psychedlics. Examples of "trip reports" can be found at Erowid [erowid.org] and at the Lycaeum [lycaeum.org].
  • If you think that all available developer jobs are listed on job web sites, well, there's a bigger world out there. The job web sites are good for "coding grunt" jobs, but if you're looking to play in the $150K-250K/year league, you're not going to find many of those jobs there, because that kind of developer doesn't typically get hired off the street - it usually involves more networking, word of mouth, or specialist agencies.

    I do architecture & design work, and some of the projects I've worked on have been implemented in Smalltalk. It's used especially in situations where the requirements are very complex. Most business programming is brain dead - some basic accounting, workflow/groupware/document management, and the rest is just tailoring to individual requirements.

    But in some areas of things like financial services, where the requirements can get truly complex and require math PhD's to develop the specs, languages like Smalltalk (and Scheme et al) can come into their own. In these systems, the problem domain is such that the last thing you want to have to worry about is the sort of infrastructure detail that lower-level languages like C++, Java, or PERL force you to deal with in developing large, complex systems.

    Anyway, the real reason to learn Smalltalk is to learn what object-oriented programming is supposed to be like. C++ and Java, which I'm intimately familiar with, are pale imitations that make significant compromises which dilute OO in a pervasive way, limiting the degree to which pure OO concepts can be applied. Perl isn't worth a mention when it comes to OO - sure it can do it, but not in a way that you'd want to use in large, complex systems. Python is a bit better, and Ruby seems even better, but they still don't quite achieve the level that Smalltalk does.

    Even though I don't develop in Smalltalk day-to-day, it's an important language to have gotten your head around, if you're interested in expanding your skill as a developer.

  • REPLY WHORING / REQUEST FOR INFORMED FLAMEWAR

    Seriously. I don't know why i should use this language. Convince me.

    I recently started developing with Objective C and the Cocoa/Yellow Box/NextStep API in Mac OS X. I think Objective C is fantastic, and have no terrible problem with living without exceptions or garbage collection. How would you argue that Smalltalk is better?

    What is significantly better about one language as compared to the other? Has one features or elegance the other does not? Has anyone used both? How does smalltalk provide the things that protocols and categories give you in ObjC and multiple inherhitance gives you in C++? Is there way to do the nifty things that you can do with the ObjC forwardInvocation method?

    Also: is there any reason that the smalltalk language could not interface with the Cocoa/Yellow Box/NextStep APIs? Would doing so be clumsy, or in some way degrade the concepts of the language? If you messed with the compiler, could Smalltalk objects and ObjC objects communicate transparently with each other through the objective c messaging system?

    P.S. If i could somehow touch off a flamewar here that involved in ANY way the subjects of CLOS and Objective CAML, i would be completely overjoyed.

  • The Technical Pursuit web site does not have any example code or docs. Do you have any more information you can share about what a TIBET program looks like?

  • It wouldn't be "smalltalk" now would it?

    DanH
    Cav Pilot's Reference Page [cavalrypilot.com]
  • by pallex (126468) on Wednesday April 18 2001, @03:32AM (#283316)
    Its now been 3 hours. Attempted to virtualize base methods into my new class, but got distracted by hairs on my right thumb. Also, humming from PC now becoming unbearable. Will go for a walk outside, its sunny and i can hear the birds sing. Mellow/not confusing at all, but nice visuals, especially the traces, which persist for several seconds.
  • Ahhhhhh!!!!!! Do not mention Scheme! It is the bane of my past semester at college.

    And it reminds me that I have an assignment due in about 4 hours. Waaaaaaa......

  • Pioneered in the 1970s at Xerox Park. Inspired the first object-oriented language Simula from Norway.
  • I only used Smalltalk a few times. Boy it was a good language, (although I didn't go any further with it myself, prefering Scheme). But it's dying because nobody bothered to solve the interesting problems that Java addressed - perfect portability of source and byte codes, a single standard and just-in-time compilation. If Smalltalk wants to survive it needs to deal with this. At least Scheme has Kawa [sandsmachine.com]. I'm a bit concerned about the future of programming languages what with the overly dominant Java. Java's mediocre but is good enough and ubiquitous enough that it's gaining an inordinate share over better alternatives.
  • by merigold77 (156634) on Wednesday April 18 2001, @04:53AM (#283323)
    Smalltalk Links [enteract.com]

    I believe EZBoard [ezboard.com] is written in Smalltalk

    Volkswagen Beetles [cnn.com] with code in Smalltalk

    Extreme Programming [slashdot.org] was invented while Kent Beck was consulting on Smalltalk projects

    I think that's enough for a start :)

  • by werdna (39029) on Wednesday April 18 2001, @05:00AM (#283324) Homepage Journal
    nobody bothered to solve the interesting problems that Java addressed - perfect portability of source and byte codes, a single standard and just-in-time compilation

    No, that isn't the case. The free Disney R&D implementation of Smalltalk, Squeak [squeak.org] addresses these issues, in some cases profoundly better than does Java.

    Indeed, Java hardly offers "perfect portability," the "write-once, run anywhere" claim is marketing hype at its best. It is, in practice, quite difficult to get identical results from any but the most trivial Java programs.

    In comparison, a multimedia GUI-based application in Squeak runs pixel-for-pixel IDENTICALLY across a vast array of platforms. I wrote a video game for my wife's birthday in Squeak, complete with animation sound and graphics, from the machine at my Office, a Dell PC Laptop. I sent the image by e-mail to my home, flipped it on her iMac while she slept, fired it up, and it just worked. Identically.

    On the other counts, Squeak has a JIT (plus many other nice internal features including object send caching, a sweet and super-fast generational garbage collector), and there is, in fact, an ANSI standard.

    Indeed, Smalltalk's source code is virtually identical across implementations. (The syntax, which --in this sense only-- is super-elegant, can be trivially described in a handful of rules). Except for one religious issue (closures for code blocks). Differences in and interoperability problems between implementations derive primarily from the underlying framework libraries provided with those codes -- a problem hardly unique to Smalltalk.
  • here [squeak.org] and here [extremeprogramming.org]
  • First off Kawa exists for java. (I'm too lazy to track down the link.)

    Secondly, Smalltalk has the portability of java explained in the following post. Moderate it up!

    Go to computerjobs.com or whatever and do a search for smalltalk you will see that smalltalk is still used as a programming language.

    Refactoring is a large part of the (deservedly) hyped Extreme Programming. Squeak(smalltalk) comes in with a built in refactoring browser. It can *automatically* refactor code. I believe it finds dupblicated code, and makes large methods smaller. Incredible.
    Go to www.squeak.org [squeak.org] and download smalltalk today.

    Now to go offtopic a bit...
    Finally, I'm a bit sick of the omnipresence of Java. ( flamearmor.setON() ) I know and have enjoyed the benefits of java. But I'm a little bit tired of people convincing me how great jsp pages are, javabeans, ejb etc... without knowing much about any of the alternatives. It seems like there are some great platforms out there zope/php, open-acs/tcl which allow people to build powerful flexible websites much cheaper then the java solution. Unfortunately those other ones get no coverage as Java's marketing is incredible.
  • by Baldrson (78598) on Wednesday April 18 2001, @05:45AM (#283327) Homepage Journal
    A couple of Smalltalkers have teamed up to write a very Smalltalk-like system written in Javascript [technicalpursuit.com]. There was a technical presentation at the most recent Hackers in Santa Rosa and people in attendance said it looked like the entire system including base classes (collections, widgets, MVCesque stuff, formatter/validators etc.) fit into a cached page with less bytes than that required to load one Hotmail inbox index page.

    Apparently, page 144 of Flanagan's otherwise Definitive Guide to JavaScript [oreilly.com] concerning inheritance in that language misled many to believe that multi-level inheritance would not be possible in JavaScript. As it turns out, not only is multi-level inheritance possible, but so are class methods/attributes, meta-classes and even multiple inheritance and fun stuff like instance level programming ala Self [sun.com]. Apparently JavaScript is a lot more capable than most people, even some of the better experts in it, give it credit for being.

    It would be great if TIBET got released at the WWW10 conference, but I think registration deadlines for vendors has passed.

  • But of course, Modula was influenced by Pascal which has designed by Niclaus Wirth. He is said to have worked on the same floor as the Smalltalk people at PARC at one time. It's a small world.
  • I've used Smalltalk as well. I've found it had other flaws:

    1) performance is usually a lot less than C (and subject to garbage collection slowdowns; although modern GCs are better); [however Self showed that slowdowns of only 50% over optimised C are possible.]
    2) one image fits all (and the image tends to be big, that's one thing that Java has cleaned up some; although Java admittedly has done some other things less well)
    3) 4 metalevels? What were the designers smoking? Self had this right. Smalltalk should have had 1 or 2 at the most.
    4) proprietary... (has been and remains to some extent)
    5) typing IS useful sometimes (although its not as necessary as you'd expect from using C)
    6) multiple inheritance is useful sometimes and most Smalltalk... doesn't (actually MI is not as necessary in run time typed languages but it's still handy sometimes)
  • No. C.

    Java lacks:

    - templates
    - operator overloading
    - multiple inheritance
    - anal worrying about performance...
    - performance (historically, although it's getting better)

    ;-)
  • only flaw (contained objects don't know about their containers unless you create an explicit link back to the container...
    That's its only flaw? I think Smalltalk has other flaws, but not knowing about containers only makes sense. What if you are contained by several containers? What if you really don't care about your container (and want to save memory)? What if your real container is far away (linked lists)?

    No, that's not a feature, or if it is it isn't a feature that fits with Smalltalk.

    I think Smalltalk's biggest problem by far is that it's too insular. It's hard to talk with the rest of the world, or interact with what other programs are doing in other environments. That's the price of elegance, I suppose -- purity only comes when you won't sully yourself. But it's hard to work with. The image is a big part of the problem (as much as I think the orthogonal persistence that it implies is cool).

    I really love Smalltalk, but I don't actually use it for anything real (even though I often have my choice of languages). The runtime environment is just too limiting (Smalltalk over FTP?)

  • It most certainly does not. I've just spent a semester here at Georgia Tech taking a course on OO-design and -programming, with Squeak being the language of (instructor, definitely not student) choice. Our ongoing semester project was to build an MP3 player (seems cool, right?). However, nobody seemed to notice that people who ran Squeak under Windows (a majority of the class, I believe) had no MP3 support. Oops. They were delayed at least two weeks while someone scrambled to find (or write, I dunno) the appropriate library. Even then, the Windows users had to use a specially-modified Squeak binary.

    Squeak itself didn't have an MP3 driver (we call them plugins) until just a few months ago, and it did take some time to sort it out cross-platform (there were also some licensing issues). I thought that they had this sorted by now, but I'm not sure one way or the other to where John Macintosh's excellent work has been ported.

    It is most certainly true that C-language plugin code is not automatically cross-platform portable, even when plugged into Squeak.

    God, someone just had to bring up Squeak. Ugh.

    Wow, someone who uses Squeak in the real world! I hope you're getting paid a very large sum of money to do so, since I can't imagine anyone doing it out of personal preference.
    As stated above I'm currently in a OOP class using Squeak, and maybe 75% of the people I know in there would agree with me when I say Squeak has been the worst programming language I've ever had to deal with (out of the seven or eight I've learned).

    Interesting, my personal preferences were exactly the reverse, but I suspect this may be the difference between "learning seven or eight programming languages" and building real commercial code in one. Smalltalk is an excellent tool for prototyping and building OO systems, and then for extending the prototype to a solid commercial result, at least in my experience. Perhaps this may not be apparent when writing toy programs for a class in school, but in time, you may come to understand the virtues of a programming language that makes programming easier and more efficient.


    The Squeak IDE is one of the most frustrating pieces of software I've ever had to use. Slow, ugly as sin (both the original MVC and the newer Morphic GUI), and bloated as all hell. You must have superhuman patience to be able to create a game for your wife using it.


    De gustibus non disputandum est. My experience is much to the contrary. While I am regarded by some as an excellent hacker, capable of generating high quality code with breakneck speed. I have never been as efficient as I was since I started hacking in Squeak, or as happy while coding and debugging.

    I met Squeak in early November a year or so ago after it was demonstrated by Ted Kaehler at Hackers. I went home, downloaded it, spent a little time with the old Smalltalk books, and had the product running in production form in time for her December 26 birthday, and still attend all the holiday parties.

    Since that experience, in which I was a rank newbie to Smalltalk (and now, I realize to OOP -- though I had been writing in OOPLs for years), it has only gotten better.

    I suppose we will have to take our respective positions as reasonable people, and agree to disagree.

    It's *really* hard to believe that Squeak was supposed to become the language used on the Dynabook, If a bunch of college students can't get the hang of it, I don't see how elementary-school kids could either.

    I'm trying to be polite here. MMy experience is to the contrary. For example, my 9-year old son codes in Squeak, having picked it up, indeed with some decent coaching, in just a week or so. His code is awkward at times and unpolished, but hey, he's actually writing code and thinking its fun.
  • Ironically, Wirth's B&D style of language design is complete the opposite of Smalltalk's philosophy, which generally trusts the programmer to do the right thing (while allowing them to do the wrong thing), and encourages transparency rather than firm borders. Oberon, Wirth's latest (most minimalistic) language completely annoys me with its utter lack of any sort of coolness. (I kind of liked the Oberon OS's UI, though)
  • I think you meant to say inspired by the first OO language, Simula. In one speach, Alan Kay said he felt the first case of OO programming he has found was an unnamed sargent in the army, who make a tape-based file system where the first few records of the tape contained procedures on how to access the rest of the records on the tape.

    This was something akin to the tape as an object, where you could ask it to do something (by running the programs at the known locations), but it was free to perform your queries as it saw fit.

  • by werdna (39029) on Wednesday April 18 2001, @12:04PM (#283336) Homepage Journal
    It most certainly does not. I've just spent a semester here at Georgia Tech taking a course on OO-design and -programming, with Squeak being the language of (instructor, definitely not student) choice. Our ongoing semester project was to build an MP3 player (seems cool, right?). However, nobody seemed to notice that people who ran Squeak under Windows (a majority of the class, I believe) had no MP3 support. Oops. They were delayed at least two weeks while someone scrambled to find (or write, I dunno) the appropriate library. Even then, the Windows users had to use a specially-modified Squeak binary.

    Squeak itself didn't have an MP3 driver (we call them plugins) until just a few months ago, and it did take some time to sort it out cross-platform (there were also some licensing issues). I thought that they had this sorted by now, but I'm not sure one way or the other to where John Macintosh's excellent work has been ported.

    It is most certainly true that C-language plugin code is not automatically cross-platform portable, even when plugged into Squeak.

    God, someone just had to bring up Squeak. Ugh.

    Wow, someone who uses Squeak in the real world! I hope you're getting paid a very large sum of money to do so, since I can't imagine anyone doing it out of personal preference.
    As stated above I'm currently in a OOP class using Squeak, and maybe 75% of the people I know in there would agree with me when I say Squeak has been the worst programming language I've ever had to deal with (out of the seven or eight I've learned).


    Interesting, my personal preferences were exactly the reverse, but I suspect this may be the difference between "learning seven or eight programming languages" and building real commercial code in one. Smalltalk is an excellent tool for prototyping and building OO systems, and then for extending the prototype to a solid commercial result, at least in my experience. Perhaps this may not be apparent when writing toy programs for a class in school, but in time, you may come to understand the virtues of a programming language that makes programming easier and more efficient.


    The Squeak IDE is one of the most frustrating pieces of software I've ever had to use. Slow, ugly as sin (both the original MVC and the newer Morphic GUI), and bloated as all hell. You must have superhuman patience to be able to create a game for your wife using it.


    De gustibus non disputandum est. My experience is much to the contrary. While I am regarded by some as an excellent hacker, capable of generating high quality code with breakneck speed. I have never been as efficient as I was since I started hacking in Squeak, or as happy while coding and debugging.

    I met Squeak in early November a year or so ago after it was demonstrated by Ted Kaehler at Hackers. I went home, downloaded it, spent a little time with the old Smalltalk books, and had the product running in production form in time for her December 26 birthday, and still attend all the holiday parties.

    Since that experience, in which I was a rank newbie to Smalltalk (and now, I realize to OOP -- though I had been writing in OOPLs for years), it has only gotten better.

    I suppose we will have to take our respective positions as reasonable people, and agree to disagree.

    It's *really* hard to believe that Squeak was supposed to become the language used on the Dynabook, If a bunch of college students can't get the hang of it, I don't see how elementary-school kids could either.

    I'm trying to be polite here. MMy experience is to the contrary. For example, my 9-year old son codes in Squeak, having picked it up, indeed with some decent coaching, in just a week or so. His code is awkward at times and unpolished, but hey, he's actually writing code and thinking its fun.
  • My impression is that a lot of the real-world use of Smalltalk is for in-house development. I feel I've heard it's particularly popular in financial institutions. Lots of places that are otherwise very boring.
  • Yup, EZBoard is in VisualWorks Smalltalk, using a modified VisualWave.
  • by WhyteRabbyt (85754) on Wednesday April 18 2001, @03:51AM (#283342) Homepage
    Yesterday : Ruby is crap because its too new and we have other languages that do the same thing...

    Today : Smalltalk is crap because its too old, and we have other languages that do the same...


    Morale of this? : 90% of Slashdot has the mindset "The way I do it is best. Anyone else doing it a different way is an ignorant asshole."


    Pax,

    White Rabbit +++ Divide by Cucumber Error ++

  • a multimedia GUI-based application in Squeak runs pixel-for-pixel IDENTICALLY across a vast array of platforms.
    It most certainly does not. I've just spent a semester here at Georgia Tech [gatech.edu] taking a course on OO-design and -programming, with Squeak being the language of (instructor, definitely not student) choice. Our ongoing semester project was to build an MP3 player (seems cool, right?). However, nobody seemed to notice that people who ran Squeak under Windows (a majority of the class, I believe) had no MP3 support. Oops. They were delayed at least two weeks while someone scrambled to find (or write, I dunno) the appropriate library. Even then, the Windows users had to use a specially-modified Squeak binary.

    God, someone just had to bring up Squeak. Ugh.
    <rant>
    Wow, someone who uses Squeak in the real world! I hope you're getting paid a very large sum of money to do so, since I can't imagine anyone doing it out of personal preference.
    As stated above I'm currently in a OOP class using Squeak, and maybe 75% of the people I know in there would agree with me when I say Squeak has been the worst programming language I've ever had to deal with (out of the seven or eight I've learned).
    The Squeak IDE is one of the most frustrating pieces of software I've ever had to use. Slow, ugly as sin (both the original MVC and the newer Morphic GUI), and bloated as all hell. You must have superhuman patience to be able to create a game for your wife using it.
    But good luck trying to turn it into a binary to distribute to your friends, because you can't! And don't ask them to try and learn the language either, because there's no documented API, and the purportedly self-commented code really isn't. Did I mention that that same code sometimes breaks on you, fresh from an install? Yep, believe it.
    Also (and yes, I realize I'm reaching here), but the syntax is all backwards. It's not sufficiently like natural laugnage to be easy for beginners to use, and it just frustrates experienced programmers used to nearly every other language (i.e., based on C). It's going the way of Hypercard, Apple's old natural language-based multimedia programming environment.
    It's *really* hard to believe that Squeak was supposed to become the language used on the Dynabook, [utexas.edu] If a bunch of college students can't get the hang of it, I don't see how elementary-school kids could either.
    </rant>



  • Smalltalk is sleeping. Please don't wake it up.
  • Heh. How can I be the only one who thinks that was hillarious? A darn shame I've no mod points. Maybe it's just the poppy tea talking...
  • More like C++ and Smalltalk, IMHO... borrows syntax from C++, but the object model is pure Dynabook.

    /Brian
  • Perl OO isn't dreck per se, it's just... uh... very... uh... it likes to, uh, solicit more user input than most.

    /Brian
  • Particular instances where I know personally Smalltalk is used:

    Progressive Insurance: Smalltalk is behind a *huge* amount of their operation. I interned there. VisualAge for Smalltalk as client as well as GemStone/Smalltalk (OODBMS in Smalltalk) and IBM DB2 on the backend. Mission critical, enterprise wide, blah blah blah.
    Medtronic: You ever heard of Pacemakers? Smalltalk is used to prototype the GUI for the "programmers" (devices which speak with the Pacemakers and other in-your-chest devices to, well, prorgam them). Prototyping in a very complex way- there are medical doctors, psychologists, and human-computer interface experts all over it. The department decided that Smalltalk was the best tool, being dynamic and fluid enough (where as most languages and IDEs are not).

    And I get to use it for "real world" (?) plant population and hydrological data analysis and visualization at the NRRI [umn.edu] this summer. :)
  • Smalltalk could probably interface to Obj-C pretty transparently if someone wrote a bridge. (I don't know how hard it would be; ask the TipTop guys.)

    I know that Marcel Weither (sp?) wrote a simple hack for a Squeak -> Objective-C bridge for the Mac OS X (+ Server) version of Squeak. I think it was only one way, as a proof of concept.
  • by WolfWithoutAClause (162946) on Wednesday April 18 2001, @04:06AM (#283362) Homepage
    Java is the direct decendent of (some would say bastard offspring ;-) of C and Smalltalk.