Domain: smalltalk.org
Stories and comments across the archive that link to smalltalk.org.
Comments · 69
-
Re:Smalltalk 80 (72?)Operator precedence was your primary issue with Smalltalk?
I remember reading Alan Kay's starting goals with Smalltalk was to have a language syntax that would fit on a 3x5 index card. Instead wasting brain cells on that abortion known as C++ operator precedence (Java, C#, C aren't much better btw), you have a single rule that works everywhere: left to right. That's it.Let's tie this back to the Fine Article: Checking in at 1979 (I don't see this in the article), I'd say Smalltalk has a good shot at being the first IDE:
Steve Jobs on Smalltalk
Steve Jobs had co-founded Apple Computer in 1976. The first popular personal computer, the Apple 2, was a hit - and made Steve Jobs one of the biggest names of a brand-new industry.
At the height of Apple's early success in December 1979, Jobs, then all of 24, had a privileged invitation to visit Xerox Parc. (emphasis added)This is what Steve had to say about his visit to Xerox Parc.
"And they showed me really three things.
But I was so blinded by the first one I didn't even really see the other two.
One of the things they showed me was object orienting programming they showed me that but I didn't even see that.
The other one they showed me was a networked computer system...they had over a hundred Alto computers all networked using email etc., etc., I didn't even see that.
I was so blinded by the first thing they showed me which was the graphical user interface. I thought it was the best thing I'd ever seen in my life. Now remember it was very flawed, what we saw was incomplete, they'd done a bunch of things wrong. But we didn't know that at the time but still though they had the germ of the idea was there and they'd done it very well and within you know ten minutes it was obvious to me that all computers would work like this some day."You say we've moved "beyond" Smalltalk ?
Away from it, sure.
But beyond? Unless you're Smalltalk fluent, how would you know?
I'm not saying that to be rude: please consider what Paul Graham said about how programmers rate languages; he expressed this idea very well in Beating The Averages: here is the relevant excerpt:Programmers get very attached to their favorite languages, and I don't want to hurt anyone's feelings, so to explain this point I'm going to use a hypothetical language called Blub. Blub falls right in the middle of the abstractness continuum. It is not the most powerful language, but it is more powerful than Cobol or machine language.
And in fact, our hypothetical Blub programmer wouldn't use either of them. Of course he wouldn't program in machine language. That's what compilers are for. And as for Cobol, he doesn't know how anyone can get anything done with it. It doesn't even have x (Blub feature of your choice).
As long as our hypothetical Blub programmer is looking down the power continuum, he knows he's looking down. Languages less powerful than Blub are obviously less powerful, because they're missing some feature he's used to. But when our hypothetical Blub programmer looks in the other direction, up the power continuum, he doesn't realize he's looking up. What he sees are merely weird languages. He probably considers them about equivalent in power to Blub, but with all this other hairy stuff thrown in as well. Blub is good enough for him, because he thinks in Blub.
When we switch to the point of view of a programmer using any of the languages higher up the power continuum, however, we find that he in turn looks down upon Blub. How can you get anything done in Blub? It doesn't even have y.
By induction, the only programmers in a position to see all the differences in power between the various languages are those who understand the most powerful one. (This is probably what Eric Raymond meant about Lisp making you a better programm
-
Re:Teach 'em the basics
...people need to understand the concepts of bits, bytes, words, longwords, binary/octal/hex numbers, thinking sequentially and logically,
what an operating system actually does, what an IO system is and does, how a computer actually does math, etc., etc., etc.I think there's a careful distinction to be made in such a discussion, between fundamental concepts and implementation details. For example, I think knowing binary is an important skill for a casual (non-professional) programmer, whilst hex isn't so much since it's just used as a more compact form to displaying binary in for humans*. Similarly bits are important, bytes not so much since the notion of 8 bits in a byte is just an arbitrary standard. Knowing things like the distinction between float and double, short and long, etc. isn't IMHO suitable for such an age group. This is because learning such things enough to be second-nature is often difficult since they're arbitrary and thus will probably rely on rote-learning (ie. they're boring) but more dangerously, since they would always be in the student's mind when they're taking the course it would distract them from the actual concepts being taught.
At University every computing course I took was based in Java (though I learned C and C++ from my Physics classes too), and it showed: Masters level students would struggle to grasp important steps in straightforward algorithms, yet their incorrect coursework implementations would show a clear appreciation for such irrelevant details as serialise versions (in code destined to never have a subsequent version), extraneous exception handler definitions (most of which would actually leave the state in a broken way) and elaborate layering of objects for streams, readers, writers, buffers, builders, factories, etc. to get data into and out of their wrong, one-method implementation of the algorithm, in a text-book-exact way (sometimes not even changing the variable names).
My recommendations for things to include:
Message-passing Object Oriented programming; no throwbacks from structured programming like if/then/else, for/foreach/while/dowhile, etc. Stick to one concept that has no special-cases, and languages with as few reserved keywords as possible (since lots of keywords implies that some things need to be achieved via some non-pervasive concept, usually hard-coded into the compiler/interpreter). Here I would recommend Smalltalk ( http://www.smalltalk.org/main/ ), since it's been taught to children for years all over the world, so there's lots of experience to build on. It's based on objects with classes which send and receive messages, and essentially defined OO programming as it's known today. There's very little syntax to learn, if/then/else are messages sent to objects (eg. myCondition ifTrue: myTrueCode ifFalse: myFalseCode), loops are also messages (myListOfObjects do: myLoopBody) and so on. The distinction between classes and instances might be unnecessarily confusing, so you *may* want to look into languages like Self ( http://selflanguage.org/ ) which use prototypes in a similarly pervasive way. Smalltalk also has Etoys ( http://www.squeakland.org/ ) to play with, which is a prototype-based 'ultimate LOGO' and really makes the message-passing concept of OO explicit via the menu structure. DrGeo ( http://community.ofset.org/index.php/DrGeo ) runs in Smalltalk, which provides an incentive to kids to learn the system (since it would give those students who learn it an advantage in Maths classes, since they'd have access to a really sophisticated geometric calculator). Scratch ( http://scratch.mit.edu/ ) is built in Smalltalk too, but bears little relation to the underlying system (whereas with Etoys it is a simple step to pure Morphic, then to classes/instances, then t
-
Re:Hackers vs Designers - Hackers Loose every time
Utter nonsense.
Yeah, glue is used to hold wood together till you nail it together with nails to hold it in place permanently.
PERL might be temporary glue but it's an icky solution that fails any design requirements for reliability, stability, or understandability.
Sure PERL is used by hackers, but so what? That doesn't mean it SHOULD be used for solutions. In fact PERL itself is a horrific hack. It takes a team of hackers with chainsaws to slice a path of understanding through it's unnecessary complex syntax where the rule seems to be if it's not in the library add it with NEW syntax to make the language more complex. See this excellent article on PERL's syntax complexity here: Simplicity and Power Comes from the Smalltalk Syntax. It requires a complex "PERL Periodic Table of the Operators" to comprehend the PERL syntax.
When compared to a powerful language like Smalltalk that is designed rather than hacked it's clear that the extra brain power used to comprehend the bizarre overly complex syntax of PERL is just a waste of precious life energy and time.
It's clear that PERL is a language with an extremely heavy syntax burden that doesn't give it any advantages unless your trying to win a cryptic programming contest. But then that is what hackers are trying to do in their heads when they work. I know, I've had the misfortune of working with too many PERL programmers. Shivers.
PERL is for hackers just like GPL is for nested acronym freaks who have nothing better to do than solve so duku puzzles when they should be getting real work done on projects.
While no programming language is perfect it makes no sense to burden the human mind with the nonsensical and unnecessary burden of the extra syntax layers for PERL. Heck even a EBNF is very unlikely for the darn thing.
So ok go ahead mr hacker and use PERL as your glue but watch out as it's addictive when you sniff it for too long. Drug addicts don't make good designers mr perl hacker.
;-) -
Re:Hi.
I don't treat men and women differently when it comes to work, except maybe when it comes to the small talk.
I thought programming was supposed to be a matter of Smalltalk, so that's not saying much.
/ducks and runs away -
Re:Perl is hated because it begets a putrid mess!
Junk that always looks like this crap
&%*$)#$^%()##!%&T_)^%_!_#!@%&-0
verses awesomeness like this:
1 to: 100 do: [:index |
Transcript show: index printString; cr
].Obviously the beauty of simplicity (but not simplistic) is in the eye of the beholder. Hey if you want cryptic crap that's up to you, just don't expect those of us who like clarity to like your cryptic crap.
Languages like Perl are syntax heavy. That is a FACT. Rather than sanely putting the function points into the library new function points are added by adding special syntax over and over again. I'd rather learn additional objects in a library that all use the same simple syntax than have to learn yet another cryptic special case syntax.
C++ is another example of a language that keeps adding syntax, C++0x is going to be a mess with their new syntaxes. Of course it seems reasonable to them to add new keywords and syntax since they don't want to mess with the old syntax and it's meanings, so to avoid confusion they add new syntax. At least though they are learning and have stated that anything that CAN be added via a library will be. Finally some sanity.
The problem with special syntaxes is that they are special, as in, you know, a special needs syntax. In other words, special syntaxes are retarded imho.
In looking at the Smalltalk language a new variant has found ways to eliminate syntax and are doing so for my language. Rather than adding new syntax they are reusing the same existing syntax so that it has multiple meanings with the old meaning being the default and the new meanings being accessed via the library! As a result a *number* (two or three) of syntax elements are removed since they become redundant and ONLY *one* new syntax is added for accessing any meta data in the virtual machine level; something that couldn't be done without. Otherwise all the new features use existing syntax elements or objects in the library (new or existing objects). This is sane. The one new syntax enables the new variant to go where few languages have gone before, allowing all meta information to be accessed as full first class object citizens in the world of objects. This continues, and richly deepens, Smalltalk's tradition of everything being an object. It makes this new variant more Smalltalk than Smalltalk! Making a language more pure with the net outcome of less syntax is the direction to move in. It also, along with some new virtual machine techniques, makes possible very fast native code compilers that meet or exceed the speed of C.
As for proof which you ask for, "easy" is subjective and might vary for each person, thus I've likely lost the argument before I started typing one word. It really depends on how open you are to reasonable arguments and other points of view, or if you are stuck in the one point of view that you have. I prefer multiple points of view myself, which is known as multi-perspective thinking.
First off, technically if the language is turning complete then it can in theory perform any computation as any other language. However, that doesn't make every language desirable or practical to use.
Here is the proof of "ease" you asked for.
(1) By having special syntaxes a language like Perl takes much longer to learn.
(2) It's easier to make mistakes that you can't solve if you don't know all the syntax forms.
(3) The Perl Chart of the Elements is proof enough that perl is overly complex: http://smalltalk.org/articles/article_20040914_a1.html.
(4) A simple syntax at least means that you'll be able to read and comprehend programs in their entirety, while with Perl or C++ or other heavy syntax languages you're stuck wondering what the mess means and scrambling for google or a set of good books on the language (if there are any).
(5) Complex syntax is a serious problem for compiler writers as they are confronted with the complexities
-
Perl is hated because it begets a putrid mess!
Have you actually seen the Perl syntax? It's a horrifying mess designed for people who like twisted grammar puzzles and cryptic codes (and cyptics like RMS who think that recursive acronyms are cool). To express anything clearly in Perl requires a frontal lobotomy and a C-section at the same time (yeah, even if you're male).
It's such a freakish language that it's got syntax for syntax rather than a very clear simple syntactic idea like LISP or Smalltalk or Self or, fuck, even C is easier to comprehend than Perl.
There's an article over here that covers some points why Perl sucks the big one and doesn't even suck well at it! When a language sucks at least I want a good blow job!
http://smalltalk.org/articles/article_20040914_a1.htmlBasically Perl sucks because you need this to figure it out:
http://www.ozonehouse.com/mark/blog/code/PeriodicTable.pdfProfessional systems people want their systems to be clear and as easy to grasp as possible, Perl provides the opposite. We ONLY use it when the existing system is using it, and then we only do maintenance bug fixes (lots of those) and do not under any circumstances add new features to programs written in it!
The above are a few reasons that Perl is ostracized from the corporate space and should be excised from your brain.
If you want to hack your way through life, fine, be cryptic and use Perl. If you want excellent systems that perform and get results use a language that helps in that regard: Smalltalk, Lisp, C. Avoid Java, C++. Heck use Assembly Language before Perl!
-
Show your son SmalltalkShow him Smalltalk and let him get on with it.
It's probably the most productive language and programming paradigm ever created.
It'll probably blow your mind apart, but youngsters take to it like ducks to water.
The slogan is: Smalltalk makes hard things possible, and the impossible, possible.- The canonical portal Notice the links in the LH column.
- The Highly Graphical and Fun One. Free Software.
- The One for Children. Free Software.
- The Super Fast One Available for unsupported use gratis, but not Free Software.
- The Big Commercial One. Commercial software, but gratis for personal and non-commercial use.
- Free Online Books
If he gets a reasonable grasp of the principles of these, I assure you he can look forward to a very profitable and rewarding life.
-
A well rounded developer knows dynamic systems
While it's very important to know low level languages such as Assembly Language, C, C++, etc... as well as middle level languages such as Java, SQL, C#, etc... it's crucial to learn high level dynamic systems such as Smalltalk and LISP as they provide flexibility that you'll never find in low level and typed systems.
A well rounded education and set of skills as a developer will provide you the best chances in the work environment. While languages like Java and C# are the new COBOL and might be the "language de jure" (language of the day) times are a changing (as the saying goes) and it's best to be prepared. Beyond that, the most interesting problems are best solved in languages that approach things from a freedom of expression that Smalltalk and LISP provide.
The simply fact is that typed systems put a straight jacket upon the mind when they are used. Free your mind.
Assembly Language, Smalltalk and LISP are three languages that share a tremendous amount of freedom for the mind. Somehow that's lost with C as the so called "type safety" begins to constrain ones thinking. It gets worse, as the other article pointed out, as you head contracts into the limiting space of Java and C#. Goo languages that the mind's creativity gets stuck in. At least that's the case for me and a great many programmers that I know.
Assembly language is the most important language for programmers and developers to learn as it's the foundation for almost ALL other computing and programming languages. Once you've mastered assembly language all the other languages can be related to from a common perspective.
LISP is an important language to learn since it's the quintessential paradigm shift where programs are data and data can be programs!
Smalltalk is a crucial language to learn to grasp with fluidity the concepts of a pure Messaging language where Objects communicate. Smalltalk also has Block Closures, aka Lambda's, where code is a full first class object. In addition everything in Smalltalk is an Object that can be reflected upon, that is you can write programs that manipulate the program, or parts thereof. This provides incredible power in what kinds of programs can be written.
There are of course a number of other programming paradigms that are also important to learn as they might be of occasional use, and who knows, your brain might find them easy or compatible with your way of thinking. Check out Prolog and Functional Languages such as Erlang.
There are thousands of programming languages and even more implementations. The key is to learn one or more from each paradigm, that way you're flexible as possible in the types of work that you can deal with.
Anyone who tells you that the "only" language is X is a fool or has an agenda for you that might not be of your choosing.
A good starting point for Smalltalk is smalltalk.org. Seek out the best resources of the other languages.
Beyond programming languages it's crucial to have excellent debugging skills to find out what's really going on in a program or system or between systems. Without that forget it. Debugging is a huge win in the work place as if you can debug systems to find out what's really going on a lot of money can be saved by businesses.
The other most important area to study is concurrency and parallel programming as with multi-core processors a whole new generation of applications need to be written. The current single core focused applications can't be easily converted to multi core without being rethought. That goes for the current crop of boring operating systems such as Linux, Macosx, Windows Vista/XP/NT, etc... All these systems have got serious concurrency problems. There's gold in them concurrent systems. Users are waiting to access the full power potential that the N-Core processors provide. Oh, and those "New Cobol" (Java, C#, etc...) programmers don't get concurrency - I know as I've earned excellent money cleaning up their many messes as they attempt -
I'd rather cite Alan Kay than The X Files
http://www.smalltalk.org/alankay.html
Don't worry about what anybody else is going to do... The best way to predict the future is to invent it. Really smart people with reasonable funding can do just about anything that doesn't violate too many of Newton's Laws!
-
Re:Will this ever see the light of day?
I know a few people who disagree with you.
-
What to do? read, Read, READ!Go the college route only IF you can afford it, and IF the college has a well developed and staffed CS/IT department. If it hasn't then you are just throwing away your money, which would be much better spent on a decent library of text-books. Assuming you decide to teach yourself then you'll need to learn a language or three. I'd suggest you learn what the OO paradigm is all about. These languages are pretty good implementations of it:-
- Smalltalk - The original OO language and programming environment
- Ruby - OO in a sane file oriented environment
- SQL - You'll need to store your data somehow
- C and C++ - Get these downloadable books FAQ & Tutorial.
-
Learn a different language.
Start doing some personal projects in a different language to the one you're exeperienced in.
If you use an object oriented language, then learn Smalltalk, you'll definitely learn some stuff that you'll be able to apply to your main language. -
Re:Squeak
Squeak is actually a Smalltalk derivative.
[/pedant]
-
Squeak and old news?
I recall seeing Squeak (based on Smalltalk) being used in schools in Extremadura. The government used Linux on some 60,000 computers..
Here's the report from 2005:
http://video.google.com/videoplay?docid=-768010651 3348266522
Web-sites:
http://squeak.org/
http://squeakland.org/
http://smalltalk.org/ -
For fast development: Smalltalk & SQLIt'll stand you in good stead to learn Smalltalk. Now for the Free Database of choice:- And the books to study:- Get your head around that lot and you will be a very valuable item. Toss in a modicum of accounting knowledge to ice the cake.
Everything mentioned in the above links is $ free. -
The best starting out language is ...
Smalltalk, because you are completely isolated from the boring mechanics of programming. Nasty things like files, editors, compilers, linkers.
http://www.smalltalk.org/main/
http://en.wikipedia.org/wiki/Smalltalk
Smalltalk, because there are 2 very good free (gratis),
http://www.exept.de/exept/english/Smalltalk/frame_ uebersicht.html
http://smalltalk.cincom.com/index.ssp
and at least 2 Free ( Libre ) implementations.
http://www.squeak.org/
http://www.gnu.org/software/smalltalk/smalltalk.ht ml
Smalltalk, because is was deliberately designed for small people to have fun,
yet you can grow-up with it.
http://www.squeakland.org/
Smalltalk, because it is well documented.
http://www.iam.unibe.ch/~ducasse/FreeBooks.html
http://www.whysmalltalk.com/tutorials/visualworks. htm
In a couple of words, it Just Works, and your sanity will not be harmed.
If you can't drop the "program in a file" paradigm, then checkout
http://www.ruby-lang.org/
http://www.python.org/
Don't even dream about anything BASIC because your dreams will turn into really horrendous nightmares before you can even turn around twice. -
Readability of Smalltalk code
Smalltalk is highly legiable. Any new language style you learn is obviously unfamiliar at first seems unusual. Smalltalk's syntax is simplier than most langugages (C, Java,
...) and is easy to learn. (See the example in the other responses to the above (parent) message).
Smalltalk.org has free online books and links available for learning Smalltalk, including tutorials for those familar with languages such as C, C++, Java... See http://smalltalk.org/smalltalk/learning.html. -
Re:depends on what you code
You missed one language that fits into all the categories.
There are a few languages groups:
Special: Sql, Fortran, ASM, Smalltalk
Brute force: C,C++,Smalltalk
Object: C++, Py, Java, Ruby, Lua, Smalltalk
Scripting: Perl, PHP, asp, Smalltalk
High level: Haskel, LISP, Smalltalk
Download a version of Smalltalk that fits your needs today from http://www.smalltalk.org/versions. -
Re:C++ has its place
C++ remains as the only proper object-oriented language.
Really? Lets ask someone else's opinion on the matter:
"I invented the term Object-Oriented, and I can tell you I did not have C++ in mind."
Hmm, I think I'll beg to disagree with your quote.
-Alan Kay -
Re:PatentHawk charges $125/hour
I realize this is a post on a user forum and hardly authoritative, but it was the best I could find on short notice to respond to the 'nitwit' belittlement.
I was unkind, and your response was levelheaded. Let me back off. Here's the deal:- Apple gave Xerox a $1 million block of pre-IPO stock in return for the rights to visit PARC, without an NDA, and take notes. Xerox showed them everything openly and happily. Keep in mind this is well before software patents etc. http://www.woz.org/letters/pirates/12.html, http://www.sitepoint.com/article/real-history-gui
/ 5 http://www.smalltalk.org/alankay.html - Apple subsequently hired half of the Alto staff.
- Xerox later sued Apple, claiming Apple was using Xerox-"copyrighted" code. The complaint wasn't so much that Apple was making money off of the code, as it was that Xerox was not able to license the code to others because the others were worried Apple would sue them. http://www.krsaborio.net/research/legal/xerox.htm
- The lawsuit was not dismissed on a "technicality" -- it was dismissed because Xerox's claims were found to be entirely unfounded. Apple wasn't using a single bit of Xerox code. Furthermore, Xerox had decided long ago not to patent the relevant technology. And the judge ruled that if other firms were worried about being sued by Apple, then it was they and not Xerox who should be suing Apple.
- Unlike the Apple-Xerox transaction, Microsoft didn't pay Apple anything.
- Apple gave Xerox a $1 million block of pre-IPO stock in return for the rights to visit PARC, without an NDA, and take notes. Xerox showed them everything openly and happily. Keep in mind this is well before software patents etc. http://www.woz.org/letters/pirates/12.html, http://www.sitepoint.com/article/real-history-gui
-
Re:What is a zillionaire?
>Since early 1980's? Probably they knew that. But in early 1970's, Allen and
>Gates were just a couple of nerdy students, sharing a belief that the
>future is in household computers.While in that age everyone else shared a
>belief that a "computer" is meant to be maintained and operated only by
>specially trained staff wearing laboratory overalls.
This sounds like an history rewrite from Orwell's 1984.
Probably in early 1970's, Allen and Gates only want to do money.
Note that in 60's a group of people started to develop personal computers, see http://www.smalltalk.org/smalltalk/TheEarlyHistory OfSmalltalk_Abstract.html.
(in fact they develop things that even today are advanced, ie. compare the early St with Java/C#)
So don't believe this lie. Gates and Allen weren't "visionaries" of personal computers. -
Learn Smalltalk
Go to the start of it all and really learn objects and messages in a full object system. Download a version of Smalltalk for free from http://www.smalltalk.org/versions.
-
Arguing about *Languages* is so 90's
To paraphrase Jonathan Edwards, I used to be a language bigot and now I'm a tool bigot.
(And yes Smalltalk had a great IDE (and framework) in it's day (and Squeak is still fun, fun, fun), but for building non-trivial web apps, the tooling on the Java side beats anything else I know of...) -
Startup Times for Images.
I'm wondering if this technique would work better with an image-based OS?
-
Re:more tinkering around the edgesAlright, since you know what your talking about, I nominate you to go write a window manager in assembly code. God knows you can write better assembler than a compiler.*
Wrong direction. What makes KDE bloated, cumbersome, and inefficient is that it is using a low-level language like C++; going to assembler would make that worse, not better.
Honestly, have you ever written a Qt/KDE app? It's a breeze!
It's "a breeze" only if your standards are already low (MFC, Gtk+, etc.).
OO makes everything make sense, and even though in most cases its overused, for UI its perfect.
Well, wouldn't it be nice then if KDE actually were written in a real object-oriented language instead of C++.
Remember that Alan coined the phrase "Object-Oriented". He has this to say "I invented the term Object-Oriented, and I can tell you I did not have C++ in mind." (here)
Maybe Qt/KDE is a little nicer than Gtk+/Gnome, but from the point of view of the state of the art of OOP, GUIs, and programming environments, that's like worrying about whether flintstones or wooden sticks are a better way to start a fire. You guys are reinventing the stone wheel for the third time. Come on, get with the program and move into the 21st century. -
Re:Does anyone know how this software ..
My nephew is an operator at a major park here in Texas I took a look see one time in their DC and one was running smalltalk and another was running f77.
The system is important but not as critical as you would think. If there is anything outside of range the system doesn't launch. For that matter sometimes when everything is within normal ranges it doesn't launch :) -
Very interesting article
Shame the wide public does not read about these things, and commonly believe Microsoft is the innovator and responsible for cheap computing.
Microsoft's success was that of dirty business tactics and marketting - not innovation.
Microsoft - the "Missionaries" never really cared about the (world) population at large.
When will people "get the true facts"?
Also for years I've been saying Bill Gates never donated a dime to the poor, somehow the Microsoft P.R Engine picked on that and told him - "Hey go philantropic it is a good investment".
So the new propaganda is working well to buy more sympathy from the ignorant public.
What about people that have no money but still devote their time to charitable causes - that impresses me, that is true sacrifice.
Otherwise, if you are a billionary it is your f***ing duty !! For him it is hardly a dent into his luxury lifestyle. He is the world's richest man - he can donate just as much with the FUD campaign, and sick ploys against Linux and FOSS.
But then again I wonder if Apple won the monopoly if they would be just as nasty, after all Steve Jobs does possess nasty tyranical streaks.
Alan Kay - now that was someone that truly cared about people. -
Smalltalk
I had forgotten how impressive small talk was, and still is. For more on the history of smalltalk you can go here
-
Re:What's the flaw again?
Turning everything into an object in a procedural language like Java would have a tremendous negative impact on performance, since currently there aren't practical optimizations to take care of that. Such a hypothetical language would be an immediate failure, even though it might look ellegant.
Funny, I seem to have heard of some real, practical languages where every variable is an object. -
Re:Squeak and e-toysUnder Linux with X-11, Squeak can be set up to be its own window manager. Dropping the Gnome, KDE etc. layer from the software stack results in a speed increase which is quite remarkable. It's then just about useable on a 400MHz P/II.
While Squeak, as in the e-Toys environment, as its name implies, is a plaything, but it's a pretty good plaything none the less. It leads directly on to the commercial Smalltalks which are arguably the premier 'productivity' language. Onward links include:-
- Squeakland for the e-Toys.
- Squeak Smalltalk The Language itself.
- The Smalltalk Community Portal
- SmalltalkX A brilliant super-fast implementation.
- Cincom Smalltalk The direct decendant from the original Xerox PARC version.
-
Where is the inventor of ....
... the Object Oriented paradigm and the whole Windowing and GUI idea?
Smalltalk may well end up being a mere side-show in the Annals of Time 1972 page 43, but imho Alan Kay at least deserves a mention. -
Oh well.
I guess it's time for us all to move to Smalltalk, or maybe Flash. Yup, Java loses the intarweb. Microsoft wins. Go home.
-
Re:Pivot Table History
I suppose this is another example of Microsoft getting credit for company's innovations [apple.com]?
I'm getting tired of just about every discussion about Microsoft being used as an opportunity by Apple fans to promote their favorite company. Keep that sort of stuff to the Apple groups, please. Whether or not Microsoft copied a feature from Lotus Improv has nothing to do with Apple.
Furthermore, it is stupid for Apple fans to point fingers when it comes to copying: without copying other companies' innovations, Apple wouldn't exist; they copied the very core of their platform from others (SRI, PARC, Alan Kay). Apple does have better taste than Microsoft in what they copy, but I hardly think they are more original. -
A few ideas
First, there are two kinds of small languages:
1. small languages like lua, io, and scheme that are small in the built-in libraries and in the total distro. These three are great places to start- both are small, OOPish, allow higher-order programming by passing classes, objects, functions and methods as objects.
2. Then there are languages that are big in some ways, but small in syntax. Some of these are easier to extend than so-called "little languages." The reason is usually that their syntax is small, in an isolated place, easy to get at, and meant to be modified. The two best examples for this are Smalltalk and Lisp. Both of these languages satisfy your other requirements and really kick ass for extention. Unlike the above languages, the so-called little-languages, most Smalltalk and Lisp dialects have big, useful libraries. Unlike a big fat language like perl or C++, having a useful library doesn't mean that the language is a huge pain in the ass to extend.
Both Lisp and Smalltalk have a number of implementations. I am a big fan of Squeak Smalltalk, though systems like Little Smalltalk or even GNU Smalltalk maybe worth checking out.
A lot of people here have bad feelings about Lisp-like languages. It's a shame, since Scheme, ISLISP (OpenLisp is a great implementation) and Common Lisp are all *very* powerful languages. You can be quite productive with them once you get over the part about whining about parens. But Lisp may very well be the best option here, there is a long history of people writing custom-syntaxes and language extensions. Look up Common Lisp macros- power almost beyond comprehension, a lot of fun to play with, and with an elegance all its own.
There are examples of people writing a C-like syntaxes for various Scheme implementations. IIRC, Gambit-C (a Scheme to C compiler) comes with one. On Cliki, there are a bunch of other alternative Scheme syntaxes listed.
To, one of the big advantages to using a language in the second category is that syntax extension/modification is done in the language itself, rather than in C. With that comes the familiarity of the language you're creating and the other benefits you gain by using a high-level language like Smalltalk or Common Lisp.
Just some thoughts... -
A few ideas
First, there are two kinds of small languages:
1. small languages like lua, io, and scheme that are small in the built-in libraries and in the total distro. These three are great places to start- both are small, OOPish, allow higher-order programming by passing classes, objects, functions and methods as objects.
2. Then there are languages that are big in some ways, but small in syntax. Some of these are easier to extend than so-called "little languages." The reason is usually that their syntax is small, in an isolated place, easy to get at, and meant to be modified. The two best examples for this are Smalltalk and Lisp. Both of these languages satisfy your other requirements and really kick ass for extention. Unlike the above languages, the so-called little-languages, most Smalltalk and Lisp dialects have big, useful libraries. Unlike a big fat language like perl or C++, having a useful library doesn't mean that the language is a huge pain in the ass to extend.
Both Lisp and Smalltalk have a number of implementations. I am a big fan of Squeak Smalltalk, though systems like Little Smalltalk or even GNU Smalltalk maybe worth checking out.
A lot of people here have bad feelings about Lisp-like languages. It's a shame, since Scheme, ISLISP (OpenLisp is a great implementation) and Common Lisp are all *very* powerful languages. You can be quite productive with them once you get over the part about whining about parens. But Lisp may very well be the best option here, there is a long history of people writing custom-syntaxes and language extensions. Look up Common Lisp macros- power almost beyond comprehension, a lot of fun to play with, and with an elegance all its own.
There are examples of people writing a C-like syntaxes for various Scheme implementations. IIRC, Gambit-C (a Scheme to C compiler) comes with one. On Cliki, there are a bunch of other alternative Scheme syntaxes listed.
To, one of the big advantages to using a language in the second category is that syntax extension/modification is done in the language itself, rather than in C. With that comes the familiarity of the language you're creating and the other benefits you gain by using a high-level language like Smalltalk or Common Lisp.
Just some thoughts... -
Re:This is going to get me in trouble
I can't argue your excellent points.
I would add that (given time) that he may want to look at SmallTalk also.
At least for inspiration. -
Smalltalk.org has an item on this
-
Re:haha (repeated less times due to lameness filte
Hey aspect oriented programming was formalized by Java people.
I thought it was formalized (at least in the 'widescale' that was the 1960s) by Smalltalk people?
Cumbersome::Dictionary.examples(1)=Java -
There are many better alternatives to PHPA mini-language designed for one purpose will eventually become a general-purpose language (as PHP already has), and it doesn't mean it is well-designed in the first place (as my superficial familiarity with PHP tells me). That being said, there are many alternatives to PHP that work quite well.
The ones I'm most familiar with are extensions of Common Lisp. There are 3 CL web servers, each with dynamic HTML generation capability (AllegroServe, Araneida, CL-HTTP). Then there's Lisp Server Pages, Active Lisp Pages, etc., and another whole load of CGI solutions. I use (and highly recommend) AllegroServe. There is a whole big list over at Cliki (which runs on Araneida).
There are many CGI bindings for various Scheme implementations, and the PLT web server is kind of popular. I'm not very familiar with Scheme web solutions though, so I probably left something out.
There is a lot of activity with Smalltalk-based web apps. Seaside is a continuation-based framework that gets a lot of attention. There's also AIDA/Web, and an unfinished mod.Smalltalk. I am not very familiar with Smalltalk web solutions either, so I probably missed a few.
Python is a very popular option, and Zope seems to be a very popular framework. I don't know anything about web programming in Python aside from that.
Take pretty much any of the recent lightweight (in the conference meaning of the term) languages, and you're bound to find good options, almost all of them better in terms of security and speed than PHP; I can't think of a single one that has a more annoying syntax or more convoluted and limited semantics than PHP, though. Another thing that you should consider is the website we're posting on is pretty interactive, and kind of popular, and it's written in Perl.
-
Someone to tell
My friend will be real happy to hear about this. He's a serious smalltalk geek.
-
Re:A new hot topic?
I tried learning Eiffel.
Really liked the concept, its not that hard.
And definitely much prettier/neater than the grotesque C# (which am not proud to admit is the language I program in most)
Eiffel code is heavily based on structured English, ok it won't go as far as Revolution whose syntax is 100% English.
Eiffel code is very object-orientated but not as bizarre as Smalltalk which vows to be easy but most people finds it the opposite.
Eiffel seems to produce very safe code, because of contracts .. so, of what I understood, you are force to debug/test each time you write a new class and function. If your project finishes - your app should be incredibly stable - so no more BugBuddies or CrashHandlers :)
Eiffel's code seems like documentation, because of the tags.
Real shame I couldn't play with it more - but seriously, it's just a hunch, Eiffel is a very powerful language. And for many things it can make a difference ... Java, C# and C++ (specially) just begs for crashing apps. -
comps might have been easier but at higher cost
for all the problems that MS do bring to the market I can still remember the cost of Macs (in AUS) as always being well above comodity PC's with MS software. MS has always traditionally had low entry costs (hah eat my own words) pre say 1998.
Consider Macs, easier yes. but they still cost a lot. What about Xerox. Parc was not geared up to selling. It was at that time a thinktank for very smart engineers. Alto, easy to use but never destined to be commercialised. Consider it. The mouse (Englebart), smalltalk (Alan Kay), ethernet (metcalfe, boggs[see networking] ) all within Parc but never commercialised within Parc.
For all it's faults, Microsoft kick started the personal PC revolution to the masses. Say what you like about the quality of the software, usability, the price we pay for it and the tatics the company employs.
They excelled in bringing together the mouse, languages, hardware (forget networking
... took ages) - the bits needed to use a computer in the form of operating system(s) a lot like say Ford did with the T-Ford: exploiting all those developers who built the components ecessary to build cars. -
Smalltalk?
Lets say that the majority of people were more interested in science and math than smalltalk.
So what if people don't like a particular object-oriented environment?
That's how different from the median I am.
Syndromes that appear to exist purely due to an abitrary definition of normal worry me.
I conjecture that psychologists define "normal" as "median in capacity to learn emotion and in capacity to learn science" and that governments define "normal" as "most likely to conform to laws passed by the bought-and-paid-for powers that be."
-
If anyone can get this right, it'll be PARC...PARC has a history of doing things meta before anyone else, and by and large getting it right.
A couple of examples:
Smalltalk - took "everything is an object" to the extreme. Smalltalk's byte-coded portability worked, in 1980.
CLOS - its "meta-object protocol" lets developers change the language's object-model semantics.
-
A couple of non-standard responsesI'd like to see Rodger Doxsey's desktop. I'll have to see if he makes it into the office tomorrow.
These guys have a cool desktop, if you can call it that.
Riccardo Giacconi was using a fairly ordinary CDE on Solaris desktop on a beautiful 24 inch wide-screen monitor the last time I saw it, with some very cool galaxy images from the Chandra Deep Field.
Steven Squyres probably also has an interesting desktop, and I think I saw it on ABC News last week, before they switched to talking about the problems with the rover.
You can see Asia Carrera's desktop in the background, but it's not safe from work. Looks mundane.
I wonder if Pheobe has a cool desktop. Not Alyssa Milano, but her character.
Speaking of fiction, I wonder whether David Kay uses Windows or Mac?
While I like innovators, I'm more interested in users. They at least try to do useful things. That was the problem with Alan Kay. He always has interesting desktops. He showed squeak at a conference a few years ago that just stunned people, but none of us could figure out what we would actually do with it.
-
Re:Apple and Microsoft
Apple stole the idea on which they built the gui concepts microsoft in turn cloned, from xerox.
Not quite, one reason Xerox invited Jobs to PARC was because Xerox was investing in Apple and than likely he'd be able to do better job of commercializing home/small computer technology than they could. And that's born out by history, PARC has come up with a bunch stuff but they rarely ever commerically release what they do. Done properly it's the smart thing, go ahead and create new stuff then incubate a startup to commercialize it.Steve Jobs Tours Xerox
"In 1979, the Xerox Palo Alto Research Center developed the first prototype for a GUI. A young man named Steve Jobs, looking for new ideas to work into future iterations of the Apple computer, traded US $1 million in stock options to Xerox for a detailed tour of their facilities and current projects. One of the things Xerox showed Jobs was the Alto, which sported a GUI and a three-button mouse. When Jobs saw this prototype, he had an epiphany and set out to bring the GUI to the public. "
www.smalltalk.org -
Re:Programming is Creating...
regarding your languages point... great languages do exist, and have existed for decades. Two in point:
1. APL is probably the definitive data manipulation programming language, very concise, very very powerful. It dates from the 1960s, is symbol orientated and needs the programmer to have a good understanding of linear algebra or be intelligent enough to pick it up. 1 'line' of APL code can do what it takes 300 lines of the most concise C to do... and APL will do it faster and ore efficiently.
2. Smalltalk, a truely object orientated language, created in the late 70s. Smalltalk programmers refer to languages like C++ as nailing legs onto a dog to make it an octopus, and C being as powerful as assembly and as nice to program as assembly. Smalltalk is 100% object, the language is all nouns and verbs, very 'human'... .
So here is the crux: great languages do exist and are very successful in their academic and high level applications, but the reason they are not totally widespread is they need intelligent people to use them, and highly intelligent people are rarer and cheaper than a bank of code-monkeys to which C/C++/C#/VB etc work can be deligated to. -
Just for the record
Aha! So God invented OOP, not Stroustrop as we previously thought.
"I invented the term Object-Oriented, and I can tell you I did not have C++ in mind." -- Alan Kay, author of Smalltalk (Why Smalltalk?), Conference on Object-Oriented Programming, Systems, Languages, and Applications, 1997.
-
Just for the record
Aha! So God invented OOP, not Stroustrop as we previously thought.
"I invented the term Object-Oriented, and I can tell you I did not have C++ in mind." -- Alan Kay, author of Smalltalk (Why Smalltalk?), Conference on Object-Oriented Programming, Systems, Languages, and Applications, 1997.
-
Other Smalltalk's available for *nixThere are other Smalltalk flavors available for *nix platforms as well.
- Squeak
- GNU Smalltalk for one.
- VisualWorks
- Smalltalk/X
I've used 'em all, each has its strengths and weaknesses, depending on what you're trying to do. They're all Smalltalk though, and that makes 'em great! - Squeak