Bring4th
Programmers: any Smalltalkers? - Printable Version

+- Bring4th (https://www.bring4th.org/forums)
+-- Forum: Bring4th Studies (https://www.bring4th.org/forums/forumdisplay.php?fid=1)
+--- Forum: Science & Technology (https://www.bring4th.org/forums/forumdisplay.php?fid=5)
+--- Thread: Programmers: any Smalltalkers? (/showthread.php?tid=828)



Programmers: any Smalltalkers? - Questioner - 01-26-2010

Just wondering if anyone here is fluent in the Smalltalk software environment, or can suggest good resources in that area. It seems to me to be, far and away, the most Law of One-like way to work with code.


RE: Programmers: any Smalltalkers? - Ali Quadir - 01-26-2010

I know, I'd love to understand it myself, it's on my list of things to do before I die... Figure out what Lisp is all about... (I think I understand that lisp and smalltalk are just minor variations on each other?) But so far it's been just too freakily weird for me. I tried to learn it from the web but without much luck Smile It requires more effort than most topics. However, let me indecently expose my bookmarks to you. Maybe you can make sense of it. Wink

From what I gather it's not necessarily harder than regular code.. It's just different to the level where a regular coder is having close to as much difficulty as a complete beginner. We're not used to that, we're also lazy Wink

Here's a reddit channel where people regularly post new list articles. A fair place to put questions. And a very good place for learning meta lisp. (Information about the language not necessarily required to use it, like who wrote it, why, the philosophy, peer groups, etcetera.)
http://www.reddit.com/r/lisp/

Here's various articles that seem interesting and are aimed at beginners somewhat sorted in the order I'd go through them.
http://answers.oreilly.com/tag/lisp
http://www.cs.cmu.edu/~dst/LispBook/index.html
http://cl-cookbook.sourceforge.net/strings.html
http://blog.postabon.com/a-simple-lisp-webapp-for-beginners
http://www.umcs.maine.edu/~chaitin/lisp.html


RE: Programmers: any Smalltalkers? - carrie - 01-26-2010

Small Talk and Lisp is different from traditional 3GL languages in sense they work with structured objects manipulation.

3GL is more towards Windows GUI elements (e.g. CButton, CRadioGroup, CLabel) and work with database in pre-defined manner, get, fetch, etc.

SmallTalk/Lisp goes by action-oriented decision making. This means, you define what the "object does" instead of static objects (with 3GL, you cannot easily add a new task).

The main disadvantage of small-talk/lisp is it is 2D (2-dimensional) and not 3D (3-dimensional), thus, you will have problem thinking in terms of graphics and worldspace.

The main advantage, you can simulate objects easily.

The real reason it did not catch on, these are "experimental research" languages and real-world applications are very limited.


RE: Programmers: any Smalltalkers? - Questioner - 01-26-2010

I have found several good introductory materials. What I need now is to find experienced experts who can help me with specific details. It turns out that most of the key people in the Smalltalk world have easy to find web sites and email addresses, and they invite questions and discussion. Just like you'd expect from the name of their system! So I will write to them directly, as soon as I have some halfway intelligent questions.

Ali, Smalltalk and Lisp are different programming systems. They do include some similar concepts that make them more like each other than like most mainstream types of programming. But they were developed by different people, a decade and a continent apart. Fortunately both of them have an abundance of open source resources that let a beginner tinker for free.

In the Lisp world, there are several people and organizations who have made different variations of Lisp throughout the years. For a while there were companies making hardware specially designed to run Lisp code efficiently. That business model dried up when general purpose computers became faster over time. Several versions of Lisp were merged under the banner of Common Lisp. There are now additional Lisps that work differently than Common Lisp. These alternatives include Scheme, which has been around for many years and Arc, which is still under construction.

As far as I can tell, 80% of the way any Lisp system works is identical to every other Lisp. But the last 20% is radically different. As a result, you need to choose one approach, and learn it well. Then you need to relearn a totally different point of view from another approach, before you can really call yourself a well informed Lisper.

Unfortunately, only an expert who already knows all these approaches can make an intelligent decision about which is better for a particular task. This makes for a very daunting challenge for the beginner.

In the world of Smalltalk, most of the key people have been involved with a variety of companies and ventures through the years. But their systems all share 95% of the same approach. This means that you can start anywhere, and not get lost if you want to use a different Smalltalk dialect later.

When the core Smalltalk team worked for Disney for a while, they named their system "Squeak." It seems that most Smalltalks today are either based on Squeak, or use it as a baseline from which they respectfully diverge.

Both systems are based on a unique set of concepts that were radically unique when they were invented. As a result of those unique starting points, each system expanded to offer a range of functionality that was simply not available with other systems of the day. This functionality gets copied into other systems, often without an attempt to understand the original perspective that made the functionality possible. If you don't understand and apply the key concepts, you'll never get the full benefit of either system.

As a result, the knock-offs are only partially useful and the people using them might not even realize that they're using a mediocre copy of great ideas. As one experienced and cynical Lisper put it, "Any sufficiently complicated C or Fortran program contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp."

carrie, I think you might be out of date in terms of what these systems can do. I'm surprised that you'd say that this is a 2d Windows database system unsuitable for 3d: http://www.opencroquet.org/index.php/Main_Page. It sure looks to me like a 3D virtual world collaboration system, based entirely in Smalltalk and runnable on any modern computer.

I'm learning Smalltalk with the Pharo distribution, http://www.pharo-project.org/home, which uses the Squeak virtual machine that gives identical functionality and user interface for Windows, Mac, and Unix. Personally I get a kick out of seeing Mac style windows inside the Squeak window on my XP laptop.

As far as I can tell, the Pharo team wanted to have a subset of Squeak that is focused on professional programmers and serious software r&d. Apparently they felt these goals weren't respected by some others in the Squeak world, who wanted to include a lot of personal projects and also the entire One Laptop Per Child's runtime environment, called eToys. So last year the Pharo team split off their own version of Squeak with this particular set of goals.

Personally I don't see why they couldn't have made Pharo a project within the overall world of Squeak. But I do really like the professionalism of the Pharo materials. So far I feel that Pharo is the right learning tool for me.

After I'm familiar with the basics of Pharo, I'll explore the Seaside web toolkit which works with any Squeak-based system. My primary focus now is on Web development for business, so this is the most practically useful approach for my income. I expect to be able to make business systems with this technology after a few months of study.

Next I'll look into the Croquet system, which is also based on Squeak. The collaboration features are more interesting to me than the 3D graphics. But I'll also explore the 3D stuff at least a little.

After I'm very comfortable with Smalltalk, I'll next turn my software study attention to Lisp. I read some excellent material about how they can work well together. But it requires a pretty in-depth understanding of both to make this happen.

I will share my learning notes here, if that's OK with y'all.


RE: Programmers: any Smalltalkers? - carrie - 01-26-2010

Quote:carrie, I think you might be out of date in terms of what

It has been some time, I am more involved in C++, C# and JavaScript.

One particular issue, for my customer is: how much does it cost and how long will you take to get it done? If it's too expensive or too long, the project gets shelved.

My dilemma is always time and money. It seems you can't seem to have too much of both to get a good thing going.


RE: Programmers: any Smalltalkers? - Questioner - 01-26-2010

(01-26-2010, 02:18 PM)carrie Wrote: It has been some time, I am more involved in C++, C# and JavaScript.

One of the original Smalltalkers has made a Smalltalk-like environment for Javascript, available as open source here: http://research.sun.com/projects/lively/. You might enjoy that and find it productive. Since it's all open source, it costs nothing but your time to give it a try.

The Squeak virtual machine is open-source C++. Once it starts, it then loads a Smalltalk environment into the virtual machine. My long term goal is to port this to C# so I can make calls between dotNet objects in the CLR and Smalltalk objects in the Squeak VM.

Personally I don't care much for C++. Partly this is from ignorance about how to use it very efficiently. Partly this is because the C++ experts just seem to think in a different way than my mind works, while I really feel like I "arrived home" whenever I read an interview article from a Smalltalk guru. Also the raw Win32 api is an inconsistent, complex, tangled mess compared to the .Net class library.

Yesterday I discovered that one of the old-time Smalltalkers made a Java port of the Squeak VM. This is simpler than the C++ version because the Java runtime already provides garbage collection and some other features. It should be pretty straightforward to translate this in turn from Java to C#. As far as I can tell I'm the only person working on something like this. There are some articles about a .Net bridge for Squeak, but they all point to a web site that's shut down.

Quote:One particular issue, for my customer is: how much does it cost and how long will you take to get it done? If it's too expensive or too long, the project gets shelved.

That's why I'm not going to try to sell anything using these technologies until I have studied my way to good proficiency. Meanwhile, I can continue using ASP.net, which I've been working with for quite a while, and Wordpress with PHP, which is new to me but pretty quick to get productive with if someone needs an easy to manage website tossed up in a hurry.

Quote:My dilemma is always time and money. It seems you can't seem to have too much of both to get a good thing going.

I agree!


RE: Programmers: any Smalltalkers? - Ali Quadir - 01-26-2010

Q Smile You're well on the case. I'm curious after your experiences, unfortunately I'm not an expert at it, at all apparently by mistaking the two Wink I got the idea that they simply were two major brands in a whole lot of variety... I understand that they have some standardization issues But the one that's used most was common lisp right? I thought they kinda solved that problem by running for the common denominator. I'm not sure though I'm doing all of this from memory.

The biggest issues are the availability of libraries, apparently interacting with the system is hard and you could easily decide you need two libraries but both are based on different versions of the language! However, that's improving fast, these guys are much more organized now.

You're right, not only are these languages suited for complex and fast programs. They also tend to excel at it. They really are faster. The programs are ideally suited for runtime and compile time optimization. Far better than Java and C.. They're also naturally multi core multi system capable.. Multithreading for free... That's a biggie. Writing network and serialization routines will become redundant. A client is simply a detachable part of the server program! So lisp or lisp likes are going to be much more common now that the world is moving unto computers with thousands of processors and cloud computing. Lisp and smalltalk can naturally handle that. The rest of the languages will have a much harder time.

I guess regular programmers tend to have difficulty getting it, they don't like to redo their entire education. I can read any real world code. I cannot read lisp. The simple problems, ok, but in the advanced stuff I got totally lost. Which is stupid because the basics are very simple. We learned to do things differently and now have to reinvent the wheel. Picking this up is really slow, and manycore systems are approaching like a tidal wave, it might initially be a bit messy because only a select group knows how to handle it.

I'm going to try again someday, that's for sure... Bastard lisp. Cool Oh and I now know you're going to be the expert then, run and hide my friend, run and hide Wink


RE: Programmers: any Smalltalkers? - Questioner - 01-26-2010

Ali, as for Lisp, my impression is that Common Lisp was an attempt to include pretty much every feature from pretty much every version of Lisp available at the time, making almost every option "implementation dependent." That way, the Lisp vendors could have a standard to sell into corporate America, who's more comfortable buying an "industry standard"... and let the developers sort it out later. As the spec itself says, "Common Lisp was designed as a description of a family of languages." Anyway my focus is now on Smalltalk. After I feel confident with that, I will then take another look at Lisp.

Yes, I'll post my Smalltalk notes as I go. I think you might also really enjoy this approach to software. I believe that if explained well it's actually simple and fun to learn. Just for grins, I will bring in some Law of One concepts in my explanations.


RE: Programmers: any Smalltalkers? - Ali Quadir - 01-27-2010

Lol I'll be interested in seeing you do that. Smile