Slashdot Mirror


The Slate Programming Language

An anonymous reader writes "I know that we have had an influx of new programming languages of late, but I feel that this one merits special attention. Theoretical computer scientists and long-time Squeak and LISP contributors Brian Rice and Lee Salzman have been rapidly developing a language called Slate. It draws on the various strengths of the Self, Smalltalk, and LISP languages. To quote from the website: 'Slate is a prototype-based object-oriented programming language based on Self, CLOS, and Smalltalk. Slate syntax is intended to be as familiar as possible to a Smalltalker, rather than engaging in divergent experiments in that respect.' The beta release is currently being written in Common LISP."

244 comments

  1. It works! by Timesprout · · Score: 3, Funny

    I prototyped this mail using it

    --
    Do not try to read the dupe, thats impossible. Instead, only try to realize the truth
    What truth?
    There is no dupe
    1. Re:It works! by Anonymous Coward · · Score: 0


      good comeback!

      loser.

  2. Pretty Cool by Anonymous Coward · · Score: 1, Informative
    Prototype based, multi-methods.

    Looks like dylan.

    1. Re:Pretty Cool by Anonymous Coward · · Score: 0


      Favorite Uncommon or Hard-to-Learn Programming Language?

      1. BPL
      2. Scheme
      3. Haskell
      4. C++
      5. CowboyNeal++

    2. Re:Pretty Cool by Anonymous Coward · · Score: 0


      That poll that you set up is pretty cool. Are you the webmaster of calcames.org. If not, can anyone setup a poll like that, or do you need special user permissions?

    3. Re:Pretty Cool by be-fan · · Score: 2, Interesting

      Dylan is very not prototyped-based. Its class-based. Extremely cool language, though.

      --
      A deep unwavering belief is a sure sign you're missing something...
    4. Re:Pretty Cool by ron_ivi · · Score: 2, Interesting
      If I recall correctly, one of the guys behind Dylan ended up working on another MIT-based Lisp-Like language called Curl (more info at Curl Corporation).

      It did a great job at bringing all the power of Lisp with all the symplicity of HTML. All the equivalents of HTML elements were just lisp-like function calls. Something like

      (text this is (font color=red size=+2 big red text))

      Since all markup was just a lisp-like function call like any other, extending the company to do more complicated things - like extending the HMTL-like-markup to do real time raytracing in the browser was really easy.

      Unfortunatelly the company suffers from bizzare licensing policies and can't figure out if they're selling a language or products built on the language.

    5. Re:Pretty Cool by Anonymous Coward · · Score: 0

      If not, can anyone setup a poll like that, or do you need special user permissions?

      Anyone can set up a poll except for those who are too stupid to be able to read the "Click Here to create your very own IMPoll!" message at the bottom of every poll. You probably shouldn't try. You would find the process too challenging.

    6. Re:Pretty Cool by Anonymous Coward · · Score: 0


      So it's a real, legitimate poll then?

    7. Re:Pretty Cool by Anonymous Coward · · Score: 0

      I don't know. Your question makes no sense.

    8. Re:Pretty Cool by ajr_trm · · Score: 1
      It did a great job at bringing all the power of Lisp with all the symplicity of HTML. All the equivalents of HTML elements were just lisp-like function calls. Something like
      (text this is (font color=red size=+2 big red text))

      It is natural way to write HTML generating code in Common Lisp. Powerful macros make the task very easy.
      Look into Graham's book ANSI Common Lisp. There is an example of HTML generating code.
      Examples from the book are available online
    9. Re:Pretty Cool by ron_ivi · · Score: 1
      The cool part about Curl was that it didn't just generate HTML, the dynamic "applet-like" parts fit so well. For example, this:

      (text this is (graph finances) an interactive graph of a company's finances)

      would put an interactive graph in the middle of the paragraph.

  3. Ah, great, Smalltalk by Deraj+DeZine · · Score: 4, Funny
    Slate syntax is intended to be as familiar as possible to a Smalltalker

    And for the rest of the world? Oh wait, sorry, Smalltalkers are gods among programmers. So foolish of me to think of myself before the Smalltalkers.

    --
    True story.
    1. Re:Ah, great, Smalltalk by hding · · Score: 3, Insightful

      I suppose the rest of the world can take the five or ten minutes that it takes to understand Smalltalk syntax.

    2. Re:Ah, great, Smalltalk by Anonymous Coward · · Score: 0

      Oh, I can't think of any other language that used smalltalk as a base... Oh yeah, except C++.

    3. Re:Ah, great, Smalltalk by Anonymous Coward · · Score: 0

      Yes, the syntax is so similar. Because I was talking about syntax in my post.

    4. Re:Ah, great, Smalltalk by Mjlner · · Score: 2, Funny
      Slate syntax is intended to be as familiar as possible to a Smalltalker

      So it is definitively not going to be very popular in Finland. The Finns are known as the worst small talkers in the world.
      Oh, wait...

      --
      Lemon curry???
    5. Re:Ah, great, Smalltalk by Anonymous Coward · · Score: 1, Funny

      Ok, fine. Since I have to, can I get it in music video form?

    6. Re:Ah, great, Smalltalk by Anonymous Coward · · Score: 0

      Put down that crack pipe, son.

    7. Re:Ah, great, Smalltalk by Anonymous Coward · · Score: 2, Interesting

      Great, indeed. I'm always amazed by comments like this. How on Earth a language designed to be easily used by small children ever acquired this lofty "ivory tower" connotation I doubt I will ever know. I've been a professional Smalltalk programmer for the last ten years. The language is literally child's play, working with it is easy and enjoyable, building large complex systems with it is trivial, maintaining them is also rather painless, the tools that are typically bundled with it are incredibly powerful, the tools I've built to go along with it have been easy to build, the community itself is very friendly. I've never come across this attitude that you describe. There are some very sharp people in this community, I would assume that there are some very sharp folks in other language communities as well. As for myself, I've never considered myself to be a master programmer, but as one person put it, "the power of Smalltalk is to allow mediocre programmers to create powerful systems". Not exactly flattering, but there is a lot of truth in that. It certainly makes my life a great deal more enjoyable. The simple truth is that most programmers, whatever language you consider, are not gurus. Never underestimate the power of a computing environment that began with the notion of giving end-users power equal to that of those who created the environment. It lets ordinary programmers such as myself look good on a daily basis.

    8. Re:Ah, great, Smalltalk by Deraj+DeZine · · Score: 1, Troll

      And while you're at it, why don't you learn Esperanto and the Dvorak keyboard layout? You sheep obviously have nothing else better to do.

      --
      True story.
    9. Re:Ah, great, Smalltalk by Deraj+DeZine · · Score: 1, Funny
      language designed to be easily used by small children...The language is literally child's play

      So basically it's a language that was designed to be used by unwanted children in sweatshop conditions? I, for one, am apalled. All you Smalltalk slave drivers should be ashamed!

      --
      True story.
    10. Re:Ah, great, Smalltalk by Anonymous Coward · · Score: 0

      actually stroustrup says C++ and smalltalk are siblings on his faq page.

    11. Re:Ah, great, Smalltalk by badmammajamma · · Score: 1, Flamebait

      lol...all smalltalkers are elitist. I have yet to meet one that doesn't think he's god's gift to OOA&D (especially when talking to people using other languages, like Java).

      --
      Any man who afflicts the human race with ideas must be prepared to see them misunderstood. -- H. L. Mencken
    12. Re:Ah, great, Smalltalk by Anonymous Coward · · Score: 0

      hmmm... a computing environment that is poewrful, yet simple to use, and your immediate assumption is that it is intended to be used to enslave children?

      So, if the language is complex to use, yet no more powerful, does that mean it is meant to enslave adults?

    13. Re:Ah, great, Smalltalk by Anonymous Coward · · Score: 0

      I've worked with Smalltalkers all my working life. They've typically been good people. Elitist? Nah. Just able to see through the cruft of a problem that isn't hidden in the self-made thicket of language.

      As for elitists... I've seen them in all language communities. Some are even quite good.

    14. Re:Ah, great, Smalltalk by Anonymous Coward · · Score: 0

      Actually he's talking about OO concepts inherited(ka-ching!) from Simula. Syntax wise he says Java is closer (and that is not very close IMHO).

    15. Re:Ah, great, Smalltalk by hding · · Score: 1

      Probably because we see no great benefit in that. I however, find Smalltalk a useful language that I would use even more than I do were it not for the existence of Lisp.

    16. Re:Ah, great, Smalltalk by Anonymous Coward · · Score: 0

      Uhhh... the Dvorak keyboard layout has been known to increase typing speed (and possibly therefore productivity) by a good 30-50%.

      Additionally, Smalltalk and company have a much smaller user base.

      I can't believe I was modded troll... ridiculous.

    17. Re:Ah, great, Smalltalk by grammar+fascist · · Score: 1

      I suppose the rest of the world can take the five or ten minutes that it takes to understand Smalltalk syntax.

      It would be nice if it only took five or ten minutes to integrate Smalltalk syntax into your intuitive understanding of program flow. Since it doesn't, though, it'll probably take a few days to a few weeks (depending on the programmer) to get used to it enough to program in it with any kind of efficiency.

      --
      I got my Linux laptop at System76.
    18. Re:Ah, great, Smalltalk by hding · · Score: 1

      If I were typing all the time, I'd agree. However, I don't find that all that much of what I do when developing is typing. Especially when using languages like Lisp and Smalltalk that let me express everything I need more concisely than some more mainstream ones.

      As for a smaller user base for Smalltalk and Lisp, true, but so what? It doesn't affect what I do in any way.

    19. Re:Ah, great, Smalltalk by Anonymous Coward · · Score: 0

      Small user base means there's not much of a reason for a ton of people to get involved with the language. Just like there's not much reason for a lot of people to learn Esperanto.

      Additionally, I've found that most of my time spent programming (in C or shell script) is spent thinking of how to make things work. Typing the code in takes only a small amount of time, so a more concise (and possibly confusing) syntax would help me as much as switching to Dvorak.

      I'm not saying you don't have legitimate reasons for using Smalltalk, I'm saying that a lot of people don't need it. And I'm proving that my post was not a troll. Flamebait, perhaps, but certainly not a troll.

    20. Re:Ah, great, Smalltalk by platypussrex · · Score: 2, Interesting

      In grad school our compiler class had to write a basic C compiler (standard fare I know). Was a good learning experience and all that (actually I wrote mine in Macintosh Pascal just to freak the professor!) Then in a course in OOP the class did a group project to create Smalltalk (only got about half of what we wanted done... that's the nature of groups I think) Was my first exposure to Smalltalk and to OOP and really liked Smalltalk. Have always thought that students getting their first exposure to OOP would be much better served using Smalltalk than C++

      Later a graphics class was done almost entirely using Smalltalk (by a visiting professor) and people from previous years were amazed at everything we got done. Never had a chance to program in it professionally, but many good memories of it. Have never had a slightest sense of elitism etc from those using it either.

    21. Re:Ah, great, Smalltalk by saunabad · · Score: 2, Funny

      Oh wait, sorry, Smalltalkers are gods among programmers.

      Indeed. They are mentioned frequently on the literature, but no one has actually seen one living and breathing. :)

    22. Re:Ah, great, Smalltalk by Anonymous Coward · · Score: 0

      Check out Dolphin Smalltalk from Object Arts. If you just do windows, I don't think you will find a better environment in any language.

      FYI, smalltalk syntax is completely self consistent there are approx 3 keywords (unlike C++ with (is it 70 now?)

      As for Slate, this is what I've dreamed of. Something even simpler than smalltalk. Self sounded so cool, but the only implementation for OS-X was rather slow.

      I understand your initially put off by Syntax, but if you want to try XP programming the way it actually works, you need to use a dynamic language that is so quick to modify.
      Just my 2cents.

    23. Re:Ah, great, Smalltalk by perkr · · Score: 1

      Actually the merits of DVORAK is of some debate still in QWERTYnomics, an economic theory stating that every damn thing follows another, meaning that since QWERTY is/was de facto standard DVORAK never succedded replacing QWERTY. The opponents refer to the experiments showing superior performance using the DVORAK layout were seriously flawed and suffered great conflict of interest. So the advantage of DVORAK may not be all that great.

    24. Re:Ah, great, Smalltalk by cybergrue · · Score: 1

      Smalltalkers are gods among programmers. So foolish of me to think of myself before the Smalltalkers.
      Hmmm, I knew there was a reason beyond supporting legacy code for taking that two week Smalltalk course. Divinity here I come.

    25. Re:Ah, great, Smalltalk by Anonymous Coward · · Score: 0

      The argument you are referring to is bullshit. You can search past comments on slashdot for the explanation, or usenet for that matter.

    26. Re:Ah, great, Smalltalk by Anonymous Coward · · Score: 0

      Work with a Smalltalk programmer on a project using a language other than Smalltalk. This will show you where the connotation comes from.

    27. Re:Ah, great, Smalltalk by hak1du · · Score: 1

      And for the rest of the world? Oh wait, sorry, Smalltalkers are gods among programmers. So foolish of me to think of myself before the Smalltalkers.

      Oh, please, spare us the cynicism. Smalltalk syntax is pretty straightforward. Yes, you, too, could learn it in a couple of hours, which is more than can be said for Java or C/C++ syntax. Does everything have to come down to braces and semicolons nowadays?

  4. Obligatory. by hot_Karls_bad_cavern · · Score: 3, Insightful

    If the new language doesn't support your needs, shut up and don't use it.

    Use what is best for the situation and don't whine.

    1. Re:Obligatory. by Anonymous Coward · · Score: 0

      This is a serious question, not a troll. But what do people use these kinds of languages for?

      For apps people use C, C++, Java, VB (God help us), etc, etc

      For low level stuff, C, C++, asm

      For scripting Perl, Python, shell script, etc

      What kind of project would this be useful for?

    2. Re:Obligatory. by Anonymous Coward · · Score: 0

      Perhaps they're compensating for something?

    3. Re:Obligatory. by Anonymous Coward · · Score: 1, Insightful

      For apps people use C, C++, Java, VB (God help us), etc, etc

      Well done - it's one of the etcs. There are applications out there written in Lisp, Haskell, Smalltalk, all sorts of weird and wonderful languages that the C world knows little about.

      You've probably used some of them without even realising.

    4. Re:Obligatory. by 11223 · · Score: 4, Informative
      Sure. I'm not good of thinking of Haskell and Smalltalk examples, but since I know Lisp, I can throw out a few. If you've:
      • Played Jak & Daxter or any of its sequels
      • Played Abuse
      • Booked a reservation on Orbitz
      • Visited the campaign web sites of Bill Clinton in '96 or Howard Dean in '04
      • Used the Mirai facial-animation software or watched Gollum in Two Towers / RoTK
      • Used an AMD processor, parts of whose logic is validated via the ACL2 theorem-prover software
      • Used GNU/XEmacs
      • Used AutoCAD
      • Used the lisppaste pastebot on a bunch of channels on Freenode
      You've used or seen a program that was written in a Lisp variant (all but Emacs and AutoCAD were done in ANSI Common Lisp). To find out more, visit CLiki.

      Not all the world is a desktop application with a GUI. Lisp and the other languages aren't going away in this space anytime soon. It's just too cumbersome to do many of these things in C++, and too slow to do them in Java (Common Lisp is usually native compiled).

    5. Re:Obligatory. by Anonymous Coward · · Score: 0
      Used an AMD processor, parts of whose logic is validated via the ACL2 theorem-prover software


      Proove it. You posted a link to ACL2, but no references to the fact that AMD used it to proove/optimize its CPU. Maybe only the floating point circuits, but even for that, if memory serves me right, they used a different language for it (not ((((((((lisp)))))))))) at all)

    6. Re:Obligatory. by 11223 · · Score: 2, Informative
      Here you go.

      Your use of parentheses there is amusing and sad. You do know that those parentheses denote serialized lists, right? You've just made a list of a list of a list of a ...

      Sheesh, learn a little about the language before you go making fun of it.

    7. Re:Obligatory. by be-fan · · Score: 1
      --
      A deep unwavering belief is a sure sign you're missing something...
    8. Re:Obligatory. by Anonymous Coward · · Score: 0
      [6]> (not ((((((((lisp)))))))))) at all)

      *** - EVAL: (((((((LISP))))))) is not a function name
    9. Re:Obligatory. by crucini · · Score: 1

      Negative comments about a new language are whining.

      Negative comments about the negative comments are insightful.

    10. Re:Obligatory. by crucini · · Score: 1

      AutoCAD isn't written in Lisp - it uses Lisp as a scripting language. And the implementation is broken (don't remember the details) so that real Lisp idioms won't work. AutoLISP scripts are more like Visual Basic recast into prefix notation. Not heavy on recursion and small functions.

      Anyhow, Autodesk has de-emphasized AutoLISP in favor of Visual Basic, which they also support. This is all secondhand - I haven't touched this stuff in years.

    11. Re:Obligatory. by 11223 · · Score: 1

      Thanks for the information. I didn't know that.

    12. Re:Obligatory. by Anonymous Coward · · Score: 0

      You really want you job outsourced to india don't you?

  5. well, by bsDaemon · · Score: 3, Funny

    at least you admit it. that's the first step to recovery.

  6. Prototyping OO is not a great paradigm by Viol8 · · Score: 1, Flamebait

    Its fine for small scripts , rubbish for large programs as object and inheritance management becomes a minefield. I'm sure this language will
    provide hours of mental masturbation in various academic ivory towers but for those of us who have to code in the real world its not going to rock it.

    1. Re:Prototyping OO is not a great paradigm by fredrikj · · Score: 1

      So, write a Java interpreter in it. Problem solved.

    2. Re:Prototyping OO is not a great paradigm by Anonymous Coward · · Score: 0

      That's exactly where HotSpot came from... The Self folks were spun off from Sun, then came back with a Java VM written in Self that ran about twice as fast as Sun's. Sun had to buy them back. Whoops.

    3. Re:Prototyping OO is not a great paradigm by ecki · · Score: 1

      So you take your JavaScript experience and come up with "JavaScript sucks, JavaScript uses prototyping, therefore prototyping sucks?" Or what other prototyping languages have you used?

    4. Re:Prototyping OO is not a great paradigm by be-fan · · Score: 1

      If you've ever used C# or Java, you can shut up promptly. Because those languages are slowly introducing advanced features in bite-sized pieces that you "real programmers" can handle.

      --
      A deep unwavering belief is a sure sign you're missing something...
    5. Re:Prototyping OO is not a great paradigm by LittleDan · · Score: 1

      Umm... JavaScript is for small scripts. You're proving his point. But there is Mozilla, written in OO Javascript.

      Daniel Ehrenberg

    6. Re:Prototyping OO is not a great paradigm by LittleDan · · Score: 2, Interesting

      What's wroing with prototype OO? You can use it in a completely class-based way if you wish. Prototyping only allows more flexibility. Many things in OO languages, such as Python exceptions, require a hierarchy of objects so they use classes. But this a hack; exceptions are objects, not classes. Although prototype-oriented languages haven't been used extensively in buisness contexts, neither have languages with type systems more advanced than Algol because the jump to a language that's not directly decendent from C is too great (unless it's from Microsoft, but for Microsoft they'd switch to assembly if it was marketed properly). Compared to FP, prototypes are almost completely unused in academia or any other sort of "ivory tower". What makes it difficult for inhreritance management? Daniel Ehrenberg

    7. Re:Prototyping OO is not a great paradigm by msobkow · · Score: 2, Insightful

      "Object and inheritance management" is only an issue for those who don't bother to analyze the problem and architect a solution. Slapping together code without understanding the problem is not "prototyping" -- it's wasting time.

      Prototypes are for understanding the application requirements, not for "scripting." If you compare prototyping tools to production applications, you are completely and thoroughly missing the point for their existance.

      --
      I do not fail; I succeed at finding out what does not work.
    8. Re:Prototyping OO is not a great paradigm by Anonymous Coward · · Score: 0

      "Prototype" is referring to alternate object-oriented semantics that use exemplar instances in place of class definitions, not a stage of design and implementation.

  7. Too obscure by Animats · · Score: 3, Insightful
    By paragraph 2 of the manual, we're here:
    • Block closures

      A block closure is an object representing an encapsulable context of execution, containing local variables, input variables, the capability to execute expressions sequentially, and finally returns a value to its point of invocation. The default return value for a block is the last expression's value; an early return can override this.

    This is a language for people who like obscure semantics.

    Yes, closures are useful. I've used them in LISP. I even used one once in production code in Perl, to do some error handling cleanly. But when the manual starts out with closures, it's clear that somebody is getting too cute.

    This is a language for "l33t haxxors", of the old MIT AI Lab persuasion. Check out "instance specific dispatch". Now that's designed to totally confuse maintainers.

    1. Re:Too obscure by Anonymous Coward · · Score: 3, Interesting

      In Smalltalk, closures are fundamental. Without them you can't do if statements or whiles or anything else.. Smalltalk closures are very simple.. in Lisp their are a bit more intimidating to the unitiated.

    2. Re:Too obscure by Anonymous Coward · · Score: 1, Funny

      Perhaps you would be more comfortable with Intercal or Brainf*ck?

    3. Re:Too obscure by Animats · · Score: 3, Interesting

      Well, it's one solution to the "how do I return a temporary" problem. There's elegance there. But it's expressed in an unnecessarily obscure way. The reference-counted Perl model is equally powerful but more comprehensible.

    4. Re:Too obscure by Anonymous Coward · · Score: 0

      Yes, closures are useful. I've used them in LISP. I even used one once in production code in Perl, to do some error handling cleanly.

      You've only ever used a closure once in Perl?

      You mean you never touch obscure "l337 h4x0r"-type functions like... well... "map" and "sort", both of which use closures?

      Man, Perl hackers ain't what they used to be...

    5. Re:Too obscure by quigonn · · Score: 1

      Well, I would, if they one built computers with Brainf*ck CPU.

      --
      A monkey is doing the real work for me.
    6. Re:Too obscure by Anonymous Coward · · Score: 1, Insightful

      Bah, although I agree with many comments in here about "yet another ass language," I can't let this one go.

      Closures are fundamental to most functional programming languages and smalltalk. They're useful, all programmers should understand them.

      They are not an obscure concept. Good programmers use them all the time.

    7. Re:Too obscure by quigonn · · Score: 3, Insightful

      No, it's not obscure. Please have a look at Ruby, where closures are the natural way of doing most things. For example, there is no for-loop, but it is implemented as method for Integer objects (literals are also objects in Ruby):

      14.upto(19) do |i|
      # do ... end is the closure
      end

      so, the closure is executed 6 times, the first time with i = 14, the next time with i = 15, the third time with i = 16, up to i = 19.

      Just have a closer look at Ruby, and you will see that the whole standard library is built on top of this simple and elegant concept. The book "Programming Ruby" can even be read online and downloaded from www.pragmaticprogrammer.com.

      --
      A monkey is doing the real work for me.
    8. Re:Too obscure by Anonymous Coward · · Score: 0

      Ruby is a bit more flexible than that.

      i.e., it has for loops available if you want 'em.

      And I always liked the curly braces instead of 'do'..'end':

      for i in 14..19
      puts i
      end

      OR:
      (14..19).each { |i|
      puts i
      }

      OR:
      (14..19).each do |i|
      puts i
      end

    9. Re:Too obscure by be-fan · · Score: 3, Insightful

      Closures are everything! All the crap that modern languages do with special-purpose features, like generators, iterators, etc, can be done with closures. Hell, OOP can be done on top of closures.

      --
      A deep unwavering belief is a sure sign you're missing something...
    10. Re:Too obscure by alangmead · · Score: 1

      I think you are confusing anonymous code blocks with closures. The map and sort functions can take an anonymous code block, but they aren't creating closures.

      It is a closure if, when it executes, it refers to my variables that were in a visible scope at the time that it was defined. You might want to re-read Function Template from the perlref man page to become a little clearer on the subject.

      The sort function doesn't use a closure, it created two new global called $a and $b. The map function doesn't use globals either, it redefines $_.

      With this kind of error of understanding, it takes away from the rest of your posting.

    11. Re:Too obscure by Anonymous Coward · · Score: 0
      No, it's not obscure. Please have a look at Ruby, where
      ...
      Just have a closer look at Ruby,


      The new-language fanboys are bickering among themselves again.

      People who have work to do prefer languages which (a) are well documented (complete documentation and clear documentation are important) and (b)are widely-enough used that the compilers or interpreters have very few bugs.

      C++ and Perl qualify. Ruby doesn't. Slate doesn't come close.

    12. Re:Too obscure by Anonymous Coward · · Score: 0

      How exactly do you define "work"?

      Ruby has proven invaluable to me in the course of my big C++, java, and C# projects, for small tools, "scripting", and even embedded...

      I think python and perl could be used the same; but I prefer Ruby -- cleaner and more powerful for what I do with it.

    13. Re:Too obscure by hak1du · · Score: 1

      But when the manual starts out with closures, it's clear that somebody is getting too cute. This is a language for "l33t haxxors", of the old MIT AI Lab persuasion.

      No, they are just following the Smalltalk tradition. Smalltalk is a language that people generally find easy to learn. The use of blocks in Smalltalk just makes things consistent and simple, and it lets you write your own control structures.

      Check out "instance specific dispatch". Now that's designed to totally confuse maintainers.

      That's object-oriented junk; you get the same stuff in any OOL. If the language doesn't have built-in support, it becomes a "pattern" (and sells lots of books).

    14. Re:Too obscure by Anonymous Coward · · Score: 0

      no, that are continuations.
      Iterators can be done with closures (and in ruby, thay actually are).
      Generators require call/cc or coroutines

    15. Re:Too obscure by jonadab · · Score: 1

      > The reference-counted Perl model is equally powerful but more comprehensible.

      Huh? The _semantic_ in Perl is natural and powerful and easy to comprehend,
      but what does that have to do with the reference counting? That's a detail
      of the implementation and, in fact, it's going away in Perl6 (wherein we are
      getting real garbage collection to replace it, so we can stop worrying about
      circular structures creating memory leaks). The things that make the Perl
      model matural and powerful and comprehensible are language-level things, not
      implementation details.

      --
      Cut that out, or I will ship you to Norilsk in a box.
  8. What I use to satisfy my needs... by ArseneLuppin · · Score: 0, Troll

    ;-)

    1. Re:What I use to satisfy my needs... by Deraj+DeZine · · Score: 2, Informative

      That link has an awful lot of plus signs. As if you're trying to hide something on the end of the URL. But what could it be? Maybe if I clic---No! Ow! My eyes!

      I can't believe they changed the goatse.cx layout.

      --
      True story.
    2. Re:What I use to satisfy my needs... by jovlinger · · Score: 1

      how does it work? I was expecting it to have an @ sign or something.

    3. Re:What I use to satisfy my needs... by Dave2+Wickham · · Score: 1

      It goes through a couple of bounces - it's just a standard redirect. Example of a standard redirect. Apparently you can put anything after the "0ADP/".

  9. right! by Anonymous Coward · · Score: 2, Funny

    I C sea Slates on the C Shore!

  10. The first thought that came to my mind... by Rahga · · Score: 3, Funny

    Even though, admittedly, this looks is a joke post, I couldn't help but think this the moment I noticed the article: "I don't really need a programming language that hates Catholic, can't grasp the realities of free-market economics, and is determined to write-in Howard Dean on the 2004 elections ballots..."

  11. why slate by larry+bagina · · Score: 5, Informative
    From the faq: Why did we decide on a new programming language?
    • Smalltalk-80 is over 20 years old. We don't think the original team intended for the model to last this long (well, from discussions on the Squeak mailing list, they've said so).
    • Smalltalk doesn't adequately express many design possibilities that show up often in good complex programs. Requiring classes, not allowing multiple dispatch, and not including some form of multiple inheritance is limiting for a lot of interesting cases.
    • The Common Lisp and Dylan communities have created some powerful interface toolkits which Smalltalk cannot easily take advantage of.
    • Cecil is statically-typed and not very dynamic. Dylan suffers from a case of too much syntax, and not enough emphasis on live environments.
    • Common Lisp is not object-centered or generic enough with its functions.
    • Goo uses the unfriendly Lisp syntax, and isn't quite suited to object-centered thinking.
    • Self turned out to be too strange an environment for Smalltalkers, and never had a decent implementation. Strongtalk was bought up.
    • Bytecode virtual machines and chunk format are old hat. It'd be worth at least trying some different run-time setup.
    • The Squeak system is very powerful in terms of some experimental libraries and user interface ideas, but is based on an aging architecture and a license that is partly troublesome.

    i think smalltalk++ would be a better approach than inventing a new language. Look at C++: it's backwards compatable with C, so a C coder is already a C++ coder and can slowly start making use of new C++ features.

    --
    Do you even lift?

    These aren't the 'roids you're looking for.

    1. Re:why slate by bsharitt · · Score: 1

      I think Smalltalk++ would be in wrong direction. Maybe OBjective-Smalltalk, or Smalltalk#.

    2. Re:why slate by Anonymous Coward · · Score: 4, Insightful

      "i think smalltalk++ would be a better approach than inventing a new language. Look at C++: it's backwards compatable with C, so a C coder is already a C++ coder and can slowly start making use of new C++ features."

      Or maybe, just maybe for once we could acknowledge that programmers are smart people and can learn new things. Lets get off trying to bend over backwards and make a broken language better -and- backwards compatible. This is exactly why C++ is the horror that it is today. Write a new clean language and just make sure that it links well with others. Then you can call functions from your old programs written in whatever the hell language you want, nobody knows and the code slowly moves over to a codebase that doesn't rape the programmer (like trying to use exceptions in a C++ program without the exception killing you!).

    3. Re:why slate by Anonymous Coward · · Score: 0

      I was going to reply to you seriously, but then I realized that your last name is "bagina"

      Forget it.

    4. Re:why slate by Anonymous Coward · · Score: 0

      I've seen worse. Miss April Guzzler decided to enlist in the Navy one day. Guess what she became? Yes, Seaman Guzzler.

    5. Re:why slate by drooling-dog · · Score: 1

      New language? We seem to get a new language every time someone completes a course in compiler construction...

    6. Re:why slate by Anonymous Coward · · Score: 0

      1) all those languages are obscure and useless to most of us (I have used many of them, but never for a production system. I use the constructs for inspiration in other more mundane languages.)

      Ruby is probably the best balance between academic and pragmatic, yet it isn't on your list for some reason.

      2) "Look at C++" .. uh, no. You have plenty of nice elegant languages on your list, why bring up the C++ monstrosity???

    7. Re:why slate by Anonymous Coward · · Score: 0
      Look at C++: it's backwards compatable with C

      Technically that is not true. For example, C programs may use C++ keywords as variables.

    8. Re:why slate by aled · · Score: 1

      You forgot JSmalltalk.

      --

      "I think this line is mostly filler"
    9. Re:why slate by bonch · · Score: 1

      And yet, whenever there's an article about C#, a bunch of Slashdotters come on pissing and moaning about "Why switch away from C++?" thereby completely missing the point of moving to C# (which, by the way, is an amazing and simple language).

    10. Re:why slate by Anonymous Coward · · Score: 0

      C coders are the last people who should be using C++. They bring all their bad C habits with them, fail to grok some key C++ ideas, and generally muck it up. Far better to train someone who isn't operating under a C handicap.

    11. Re:why slate by Anonymous Coward · · Score: 0

      Hee hee hee. You're so cute. Painfully so, like a Care Bear -- Raelian Bear.

    12. Re:why slate by Anonymous Coward · · Score: 0

      (like trying to use exceptions in a C++ program without the exception killing you!)

      If you haven't figured out how to use exceptions properly in C++, your opinions about C++ programming are worthless.

    13. Re:why slate by Anonymous Coward · · Score: 0

      C++ is perhaps the only language I have ever heard of that requires you to encapsulate your exceptions for them not to explode. Many other languages have exceptions but do not require this obscure programming practice. Exceptions were designed to be straight forward, not the maze that C++ requires.

      If exceptions were so easy, why was half the CS community divided for 5 years in the 90's on whether exceptions should ever be used in C++ programming? I suggest you read some of the old DDJ articles titled "Exceptions considered harmful", etc. MSDN has devoted about half of its C++ training articles just on safe exception programming (for a volume of probably 200 pages).

      If its not clear to you, C++ exceptions are the most broken part of the language. Considereing how many parts of C++ are broken, thats quite an accomplishment.

    14. Re:why slate by RevAaron · · Score: 1

      Slate isn't one of those kinds of languages. There was actual research involved, a couple papers- even though it is an "amateur" show- they're not CS profs. But then again, nor are they CS undergrads, who created something like Lua in a compilers/language class, but with a C++-ish method invocation syntax.

      Slate has been worked on for a few years now- not a hack done in a semester.

      --

      Working toward a usable PDA environment in the spirit of Newton OS: Dynapad
    15. Re:why slate by Anonymous Coward · · Score: 0

      What do you mean by "encapsulate" and "explode"? If main doesn't catch an exception, the runtime calls std::terminate. I don't see the problem--what do you think it ought to do instead?

      Rather than implement exceptions, Microsoft wasted years offering shoddy workarounds (MFC still has a half-assed try/catch using std::setjmp!) and trying to convince people they weren't important. The only reason there was ever any debate is that some people fell for it. The rest of us already knew that that exceptions are necessary to make RAII work, and you can hardly avoid them because the Standard Library throws some!

  12. Deja vu by spellraiser · · Score: 5, Interesting

    Slate is a prototype-based object-oriented programming language based on Self, CLOS, and Smalltalk.

    From a recent post:

    Prothon is a new industrial-strength, interpreted, prototype-based, object-oriented language that gets rid of classes altogether in the way that the Self language does.

    Does this point to a trend in language design?

    --
    I hear there's rumors on the Slashdots
    1. Re:Deja vu by Patrik_AKA_RedX · · Score: 1

      Perhaps they used the buzzword generator

    2. Re:Deja vu by Anonymous+Brave+Guy · · Score: 1
      Does this point to a trend in language design?

      Yep: if you want publicity, send an article on a brand new language that isn't finished yet to Slashdot and wait. :-)

      At least we're improving, though. The last one was "pre-alpha" (or vapourware, as it's technically known). This one is "beta" (or get-everyone-else-to-test-it-for-you, as it's technically known). One of these days, someone will write an article about a genuinely innovative language that really exists in usable form, and the eds will reject it because we've all got bored. :-)

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    3. Re:Deja vu by RovingSlug · · Score: 1

      Ok, I'll ask. What's a "prototype-based object-oriented" language and how does it differ from C++ and Java?

    4. Re:Deja vu by Imperator · · Score: 1
      Does this point to a trend in language design?

      No, just in a trend (of 2) in slashdot stories. No one really uses these languages.

      --

      Gates' Law: Every 18 months, the speed of software halves.
    5. Re:Deja vu by ZenFu · · Score: 1
      Ok, I'll ask. What's a "prototype-based object-oriented" language and how does it differ from C++ and Java?

      I was wondering the same thing and found the following items:

      http://www.dekorte.com/Proto/Chart.html
      Prototype-based languages are object oriented langauges where a new object instance is "cloned" from existing live object(a prototype) instead of being constructed by a class. This makes the language simpler by requiring one less data type and solving the infinte regress problem of classes(if you use a class to create an object, what do you use to create a class?). It is also ideal for systems such as GUIs where the pattern of creating one object by copying and modifying another is already handled by the language itself. Check out the site to see a table of similar languages.

      http://c2.com/cgi/wiki?PrototypeBasedProgramming
      In a class-based language (like Java or Smalltalk), every object is an instance of a class. An object contains its own data (instance variables), but its class holds its behaviour (methods). To make a new object, you ask a class to "instantiate" itself.

      In a prototype-based language, an object can contain both data and behaviour. It's a self-contained thing. To make a new object, you just call the "copy" method on an existing object.
    6. Re:Deja vu by angel'o'sphere · · Score: 3, Informative


      What's a "prototype-based object-oriented" language and how does it differ from C++ and Java?


      In Java and C++ you have classes. In a prototyped language usually not, there you only have objects.

      To make it simple, lets look at the java.util.Hashtable.

      Suppose if you write this:

      class MyClass {} the compiler would do this:
      Object MyClass = new HashTable();

      So, instead of defining a class, you just created an empty object ... I used a Hashtable, because that makes the later explanations more easy, it could have been simply an object of course.

      So far your class has no properties ... no data and no methods.

      So you likely would write something like this:
      class MyClass {
      Object start;
      Obejct end;
      }

      As prototyped languages are usually typeless you would only need to write this:
      class MyClass {
      start;
      end;
      }

      Our hypotetical compiler makes this from your typed code:
      Object MyClass = new Hashtable(); // define a "new class"
      MyClass.add("start", null);
      MyClass.add("end", null);

      So, instead of "defining" a class, like you did in Java or C++, you only created an object in the most global namespace. That object is called "MyClass" just as your class would have been called.

      That object has two "slots" with the names "start" and "stop", just like a class would have two attributes of type Object.

      So: the concept is called prototyping, because you would usually initialize the MyClass object more properly, so that "start" and "end" would have a value and would not be empty.

      Now comes the interesting point: we know how to make classes now. How to make objects from them?

      Well, all Objects have a method called "new".

      In java you would write new MyClass(). But you could of course asume a class had a static method called NEW().

      So MyClass.NEW() would create a new object of type MyClass. That method is usualy build into the language and every "class" has it. So, what does NEW() do? It "clones" the object MyClass.

      In Java we have a class MyClass, and with new we create objects. The objects have some kind of poitner to their class.

      In a prototyped language you only have objects. If you say new to them, they simply create a clone from themselves. The original object is called "prototype" or "traits". Instead of calling a constructor to initialize such a new created object it is fully initialized with default values during teh cloning.

      Why did I use a Hashtable as example? Well, you simply can tell a Hashtable to clone itself ... if the Hashtable describes a prototype. The slots in a Hashtable are similar to teh slots in an object of an prototyped language. Suich a slot usualy has a name and can hold any object ... methods are objects as well :D

      You can merge objects ... and so you do not only get a new object but also a new "class". Thats one way how inheritance could be implemented. But usualy you use nested Hashtables for inheritance, as yoou most often want single inheritance only .. and merging is used for mixins .... another term wixh would need an explanaition as long as this one.

      Regards,
      angel'o'sphere

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    7. Re:Deja vu by RevAaron · · Score: 1

      In Java and C++ you have classes. In a prototyped language usually not, there you only have objects.

      But then again, in real OO languages like Smalltalk, you only have objects. Classes are an object just like any string, number or Dictionary (~= hashtable) is. :)

      --

      Working toward a usable PDA environment in the spirit of Newton OS: Dynapad
    8. Re:Deja vu by RevAaron · · Score: 1

      No, people certainly don't use Prothon. And there is only a small group of people using Slate. However, there was once a lot of folks using an older proto-oo language with a biggish installed base and lots of apps to be found written in it: NewtonScript, the preferred language on the Newton PDA lines.

      But that can be brushed aside- the Newton is all but dead. There happens to be another proto-oo language that is used quite a bit- Lua. It is a pretty heavily used scripting language, incidentally a lot like NewtonScript. It is small- 100KB runtime and base lib, very easily embeddable (esp compared to monsters like Python and Perl), and used a lot in gaming scripting languages.

      --

      Working toward a usable PDA environment in the spirit of Newton OS: Dynapad
    9. Re:Deja vu by Anonymous Coward · · Score: 0

      classes in Java are objects as well...

  13. Slashdot, where censorship runs rampant by Anonymous Coward · · Score: 0

    Why was this modded down?

    Its a valid opinion. If Slashdot is going to claim to be a place of free discussion of all points of view and fight against censorship, then its going to have to practice what it preaches.

    1. Re:Slashdot, where censorship runs rampant by Anonymous Coward · · Score: 0

      Crush the dissenter!
      Crush the dissenter!
      Crush the dissenter!
      Crush the dissenter!
      Crush the dissenter!


      HAVE NO MERCY ON THE HERETIC!

    2. Re:Slashdot, where censorship runs rampant by Anonymous Coward · · Score: 0

      We have this mod points
      You troll now
      Are you afraid?
      Death to dissenters
      Death to Anti-Slash
      CowboyNeal is great

  14. Re:MOD PARENT UP by Anonymous Coward · · Score: 0

    But why would anybody use a moon as the logo for a programming language? Is this to differentiate themselves from Sun's java?

  15. Yet Another Language (to learn ?) by Anonymous Coward · · Score: 0

    BTW, beta release is not really what I do consider as "stuff that matters". Wake me up when an official release will be announced.

  16. Re:Slate's logo is intended to be fam. to Slashdot by Anonymous Coward · · Score: 0

    cool.

  17. Slate has a programming language? Cool! by acceleriter · · Score: 0, Offtopic

    Does it only let you write about a tenth of the program, then let you finish the rest after you've forked over for a subscription or read some ads?

    --

    CEE5210S The signal SIGHUP was received.

    1. Re:Slate has a programming language? Cool! by Anonymous Coward · · Score: 0

      Looks like I offended a Slate wanker. Mission accomplished!

  18. Eh by Anonymous Coward · · Score: 5, Funny

    Who gives a shit about the real world. None of the tools you cubicle-dwelling corporate serfs love so much ever came from the real world. All your programming tools come from research labs -- mere leftovers thrown away by academics once they grow bored of playing with them.

    You code monkeys are nothing but low-skilled craftsmen, so when real scientists speak, please sit down and shut up, mkay?

    1. Re:Eh by Anonymous Coward · · Score: 0

      You code monkeys are nothing but low-skilled craftsmen, so when real scientists speak, please sit down and shut up, mkay?

      If it wasn't for the plumbers of this world, real scientists would have to crap in their pants.

    2. Re:Eh by Anonymous Coward · · Score: 0

      Yeah, and if it wasn't for mechanics nobody would ever be able to travel anywhere.

  19. Sounds interesting. by Anonymous Coward · · Score: 0

    But, anyway, Brian Rice is a asshole, which I know from experience.
    Probably one of those hyper-intelligent theoreticians who should best avoid all human contact.

    1. Re:Sounds interesting. by Anonymous Coward · · Score: 0

      Agreed, "water" is a fucking asshole and anybody who doesn't know this should read the #smalltalk logs.

  20. More info by Anonymous Coward · · Score: 0

    http://lists.tunes.org/mailman/listinfo/slate

  21. eeep... by Rodrin · · Score: 0

    I feel sorry for all the people who get asked "Whats the best programming language." and then get asked "What do I have to choose from?" *sigh*

  22. April fools..I hope by rufusdufus · · Score: 4, Interesting

    Confusing things like:

    3 + 4 * 5 " ==> 35 (not 23) "

    and

    (3 / 4) == ( 3 / 4) "==> false"

    give pause for concern.

    But the example code snippet for the curious @ dispatch operator uncommented and unexplained takes the cake:

    "
    oc@(OrderedCollection traits) copyFrom: start to: end
    [| newOC |
    end start ifTrue: [^ oc newEmpty].
    newOC: (oc traits newSize: end + 1 - start).
    start to: end do: [| :index | newOC addLast: (oc at: index)].
    newOC
    ].
    "

    How could someone argue with a straight face that this gobblygook is progress in programming languages?

    1. Re:April fools..I hope by Anonymous Coward · · Score: 0

      And the explanations, where present, are even better -

      All of these literal expression types can be nested within each other without the # prefix since it all has been forced to compile-time already.

      WTF?

    2. Re:April fools..I hope by Anonymous Coward · · Score: 0

      Acedemic morons in their ivory towers.

      Idiots... Get a job!

    3. Re:April fools..I hope by Jayzz · · Score: 1

      I don't know much about smalltalk either, but the first example produces 35 instead of 23 because in smalltalk there is no operator precedence.

      That is, all operators are just messages, so they are used from the left to the right. It's like (3 + 4) * 5, thus 35.

    4. Re:April fools..I hope by ameoba · · Score: 0, Offtopic

      Sod off. Go back to using toggle switches to program machines that output to a row of LEDs.

      Give us back our garbage collected OO languages, our GUIs and our multiuser multitasking operating systems and our networking.

      --
      my sig's at the bottom of the page.
    5. Re:April fools..I hope by Chinju · · Score: 5, Informative

      I don't know much about Slate, or Smalltalk, or anything, for that matter, but a quick look at the article shows that both of your "confusing" examples are not that confusing...

      As someone else already pointed out, "3 + 4 * 5" ==> 35 (not 23) because Slate has no differences in binary operator precedence and therefore always associates to the left.

      And as for "(3/4) == (3/4)" ==> false, this is because "==" tests for _object_ equality, and the two different instances of "(3/4)", while representing the same numerical value, are distinct objects. It appears that "=" tests for numerical equality.

    6. Re:April fools..I hope by master_p · · Score: 1

      I was about to say the same thing but I hesitated because I've put the 'crap' label in many new programming languages. But I am glad someone agrees with me.

      What happened to simplicity ?

    7. Re:April fools..I hope by globalar · · Score: 1

      Sometimes I get the feeling a language is using different syntax just to be different. That and buzzwords are real turn-offs.

    8. Re:April fools..I hope by jovlinger · · Score: 1

      untested, but I'd assume that in java

      (new Integer(4) == new Integer(4))

      would also return false.

    9. Re:April fools..I hope by scrytch · · Score: 2, Insightful

      > 3 + 4 * 5 " ==> 35 (not 23) "

      As it has always been in the smalltalk family of languages (which includes basically Smalltalk and Self). This was once considered a necessity as smalltalk was interpreted strictly as a stream of instructions (much like forth is now), but now that it's always compiled, I rather wonder whether this isn't legacy baggage. Certainly flexible overloadable operators aren't inimical to the notions of operator precedence, as the ML language family shows.

      I certainly don't get why (3/4) != (3/4). If it's because it's inexact, they might learn a thing or two from how scheme handles it.

      > [snipped example]
      > How could someone argue with a straight face that this gobblygook is progress in programming languages?

      Syntax-wise it sure isn't, it looks like slavish adherence to smalltalk's syntax, with Self's prototypes and C++'s klunky "traits" stapled on (traits are meaningless when you have either manifest types like scripting languages or type inference like ML). It's implemented in a language that itself manages to be a mismatch to Slate, but I imagine they want to make it self-hosting later on.

      Slate has some really nifty ideas, but I've seen lots of nifty ideas come and go. Usually such projects run out of steam when they reach the final hump of getting everything integrated and performing well. Slate looks nice under the hood, even if it has an ugly paint job, but I damn near asphyxiated when I last held my breath on a similar project.

      --
      I've finally had it: until slashdot gets article moderation, I am not coming back.
    10. Re:April fools..I hope by be-fan · · Score: 1

      Acedemic morons in their ivory towers.

      I bet the learn to spell in those ivory towers.

      --
      A deep unwavering belief is a sure sign you're missing something...
    11. Re:April fools..I hope by Anonymous Coward · · Score: 0

      Well, 3 + 4 * 5 ==> 35 would be confusing to anyone with a background including elementary school mathematics.

    12. Re:April fools..I hope by p3d0 · · Score: 1

      It may still be progress, but you are right: any programming language that doesn't look like pseudo-code is lacking, since pseudo-code is what we use when we want to express an idea most clearly.

      --
      Patrick Doyle
      I mod down every jackass who puts his moderation policy in his sig. Oh, wait a sec....
    13. Re:April fools..I hope by angel'o'sphere · · Score: 1, Insightful


      What happened to simplicity ?


      The point is that languages like SmallTalk Self and this those new beasts: ARE SIMPLE.

      Look at it from a different point of view! Suppose you may use your favorite language and you are requested to implement a runtime system and compiler for such a language.

      Agree full heartly: SmallTalk has a shitty syntax. So has LISP. Why do I say that? Because most people believe you can learn any syntax. But: a lot of people believe SmallTalk is the BEST language ... and wonder why it is used so rarelly. Since Java is en vouge SmallTalk nearly went out of business, 3 major SmallTalk companies vanished or merged.

      Well, people reading my posts surely have noticed my typos. They are basicly because that story you may have read here on slashdot, that humans can read still good if lertts are mixed and only start and end is ok is very true for me. I proofread 100 times and I rarely see an erro, because the word crashes into my mind ... I don't see the letters, and do not notice transposed letters or missing ones.

      However somehow languages like PERL or LISP or SmallTalk are incredible hard to read for me.

      I know everything about smalltalk which I wanted, and I was at least 3 times at the point to write my own SmallTalk just with a different syntax. Why? Because using protoypes and blocks/closures makes programming so much easyer ... having blocks as first levle objects and methods/functions as well, blurs the boarderline between object oriented and functional programming.

      With refactoring browsers ... or better: an refactoring API you have an aspect oriented language incorporating oo and fuctional paradigmas.

      angel'o'sphere

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    14. Re:April fools..I hope by Decaff · · Score: 2, Informative

      It would. A common mistake in Java is to try and compare Strings using == e.g.
      if (a == "value")
      instead of
      if (a.equals("value"))

    15. Re:April fools..I hope by k_head · · Score: 1

      Although I pretty much agree with what you say I want to add this the conversation.

      In the end when choosing a programming language the programmer asks themselves a few questions. Namely.

      1) How does this programming language make me more pructive. How hard or easy is it attach to a database, pull some records out and display them in a GUI. How hard is it to create a simple server and client. How much effort does it take to express my ideas into a product.?

      2) How does my program perform once it's done? Is it fast? Is it a memory hog? Is it huge?

      3) Can I be paid to work in this language?

      4) If I was being paid to debug somebody elses code would I hate my job? What if I was being asked to extend it?

      The answers to these questions are sometimes suprising. For example take question 1. the answer has less to do with the language and more to do with the library and the community. Take perl for example. Using CPAN somebody who is brand new to Perl can implement a pre-forking server in just a few lines of code. It's amazingly simple. Why? It's not because perl has prototypes or catagories or closures or clean syntax it's because it has a built in mechanism for sharing code. It has a worldwide searchable database of community donated code that is robust and tested. It has a built in mechanism for installing CPAN modules.

      If you held a gun to my head and said you have one hour to write a jabber proxy that logs all messages to a database I would choose perl. Not because I like perl better then anything else but because I may actually be able to do it in an hour using perl.

      Language designers should really think about that. The first item on their list should be.

      "this is how you search for a module from a centralized (or distributed) repository and install it".

      Anything after that is gravy.

      --
      The best way to support the US war effort is to continue buying American products.
    16. Re:April fools..I hope by Narchie+Troll · · Score: 1

      You obviously aren't familiar with Smalltalk. The syntax is very similar.

    17. Re:April fools..I hope by Anonymous Coward · · Score: 0

      Since you seem to know about typing, the 3/4 == 3/4 example falls under the messy problems of equality types and references. I believe in this case they consider 3/4 to be a non-integral (i.e. constructed) type under a reference semantics. Thus, equality is computed as in reference equality. I am somewhat in favor of forbidding reference equality testing, as it makes memory management easier.

    18. Re:April fools..I hope by Anonymous Coward · · Score: 0

      But it is not elementary school mathematics. It is a programming language. a = a + 1 would be just as confusing but it is valid syntax in most languages.

    19. Re:April fools..I hope by Anonymous Coward · · Score: 0

      Yeah, spelling is real fucking important in programming.

      Moron.

    20. Re:April fools..I hope by voodoo1man · · Score: 1
      Well, 3 + 4 * 5 ==> 35 would be confusing to anyone with a background including elementary school mathematics.
      The fact that in some finite groups 2+3 = 1 also seems to be confusing to anyone with a background in elementary school mathematics just means the persons in question only have a background in elementary school mathematics, nothing more.
      --

      In the great CONS chain of life, you can either be the CAR or be in the CDR.

    21. Re:April fools..I hope by be-fan · · Score: 1

      A quote I really like:

      "When a programming language is created that allows programmers to program in simple English, it will be discovered that programmers cannot speak English.

      - Anonymous"

      --
      A deep unwavering belief is a sure sign you're missing something...
    22. Re:April fools..I hope by rreyelts · · Score: 1

      Actually, in the 1.5 language, that would return true, according to the autoboxing specification.

    23. Re:April fools..I hope by rreyelts · · Score: 1

      Actually, two Strings references must be identical if they are interned. References to two identical String constants in the same class file must also be identical.

      But you're probably right, that the majority of Java programmers don't know that.

    24. Re:April fools..I hope by Anonymous Coward · · Score: 0

      The fact that in some finite groups 2+3 = 1 also seems to be confusing to anyone with a background in elementary school mathematics just means the persons in question only have a background in elementary school mathematics, nothing more.

      No, it also means that a poor notation was chosen for the members of the finite group.

    25. Re:April fools..I hope by crucini · · Score: 1

      Assuming that a language has no major design mistakes, there is generally a tradeoff between simplicity of the language and simplicity for the programmer.

      Lisp is beautifully, terribly simple, but it may not be simple to write a useful program in Lisp.

      C is "simple" with its mere 31 keywords, but the flip side is typing if(!strncmp(input_name, name, strlen(name))) when you really mean "if input_name = name".

      Perl and Python are simpler for the programmer, at the cost of great complexity under the covers.

    26. Re:April fools..I hope by andrewbirkett · · Score: 1

      > (traits are meaningless when you have either manifest types like scripting
      > languages or type inference like ML)

      What does type inference have to do with traits? In C++, traits are used to get information relating to a specific type (the biggest int, the biggest float, etc). How does one do this using ML-like type inference?

    27. Re:April fools..I hope by hak1du · · Score: 1

      That's pretty standard Smalltalk stuff. C/C++/Java syntax isn't any simpler--you just have gotten more used to it.

    28. Re:April fools..I hope by Anonymous Coward · · Score: 0

      > What does type inference have to do with traits? In C++, traits are used to get information relating to a specific type (the biggest int, the biggest float, etc). How does one do this using ML-like type inference?

      Because such traits are part of the inferred class and don't have to be composed into new classes every time you create one. Check out how type families work (which is specific to Haskell) and you'll a lot more elegant way of doing it. No idea how SML/NJ or Ocaml does it.

    29. Re:April fools..I hope by voodoo1man · · Score: 1
      No, it also means that a poor notation was chosen for the members of the finite group.
      Is there any realistic alternative for modular arithmetic? And surely you're not also implying that just because x^2 can be i, exponent notation is unsuitable for composition.
      --

      In the great CONS chain of life, you can either be the CAR or be in the CDR.

    30. Re:April fools..I hope by juhaz · · Score: 1

      What happened to simplicity ?

      It's called Python.

    31. Re:April fools..I hope by juhaz · · Score: 1
      "
      oc@(OrderedCollection traits) copyFrom: start to: end
      [| newOC |
      end start ifTrue: [^ oc newEmpty].
      newOC: (oc traits newSize: end + 1 - start).
      start to: end do: [| :index | newOC addLast: (oc at: index)].
      newOC
      ].
      "


      Woah. Looks like Perl has finally met its match!
    32. Re:April fools..I hope by Anonymous Coward · · Score: 0

      Lisp should not be used to write a program. Lisp should be used to create a language in which it's simple to write your kinds of programs, even if they need unusual control structures such as Prolog backtracking. There are excellent examples in Paul Graham's On Lisp.

  23. another one by Anonymous Coward · · Score: 1, Funny


    looks like "prototype-based, object-oriented" are the new buzzwords in programming languages

    it still needs more nanotubes to leverage your ROI while creating on-demand multi-tier dynamic buisness systems creating synergy between individual nodes of your process factoring considerations

    1. Re:another one by Genda · · Score: 1

      What good is it if something isn't downsized or outsourced to India?

      Genda

  24. PLEASE DISREGARD. by Anonymous Coward · · Score: 1, Informative

    I am one of the primary authors of Slate and I *DID NOT* authorize anyone to do such advertising as this (and I believe the post is severely misleading on other levels), as we are CLEARLY not ready for any sort of exposure of this level. Unless you are really specifically interested in an essentially unuseable language, move along and ignore this. Again, move along and ignore.

  25. Wait a minute....... by MasterSLATE · · Score: 5, Funny

    Thats MY nick..... So, they're saying I'm a smalltalker with a lisp?

    Shhhtop it! :(

    --

    [sig]www.masterslate.org[/sig]
  26. Amazing. by warrax_666 · · Score: 4, Funny

    And they say its syntax is easier to understand than LISP? I wonder what they're smoking...

    --
    HAND.
  27. prototype based languages by Jecel+Assumpcao+Jr · · Score: 5, Informative
    When running a program, it is very likely that you will want to create new objects as you go along. You have some alternatives:
    • call a magic constructor fucntion (C++ and friends)
    • send a message like "new" to a factory object (like a class in Smalltalk)
    • send a message like "copy" or "clone" to an object that is like the one you want to create

    In the third case you might find out that you can get by with a set of "prototype" objects to copy from and you don't need classes at all. But to actually eliminate classes you will have to find solutions to the other things they do for you like hold the behaviors for the objects (you can put them in the objects themselves, for example) and reflection (Self uses special "mirror objects" for that).

    There are several different styles of prototype based languages.
    1. Re:prototype based languages by Piquan · · Score: 3, Interesting

      Being a Lisp programmer, I'm always looking for new ideas to bring into my Lisp programs. It looks like Lisp-- possibly even CLOS-- could support prototype-based programming without extensive pain.

      One thing that I'm wondering about in prototype-based OOP is redefining stuff. In Smalltalk and CLOS (I don't know Self), you can redefine methods over classes on the fly, or change member variable definitions, or whatever. I take advantage of this to have a production server running for months while I make improvements.

      But in a prototype language, this looks, well, difficult. If your methods are associated with prototype objects, then if you have existing non-prototype objects and change a method, then would the non-prototype objects get the method def passed down, or what?

      It seems like a prototype language would also have problems with multiple inheritance and multiple dispatch, but it looks like they've licked those too. Interesting.

  28. The Smalltalk Elite by Anonymous Coward · · Score: 0

    I'm not elitist. I use both Smalltalk and Java at work (in roughly equal amounts) and I'm quite literally four times as productive in Smalltalk as in Java. I don't write four times as much code in St as in Java, mind you, it's just that much more expressive.

    So, as a humble programmer, you would do very well to at least figure out why St is so much better than Java.

    Sean

    1. Re:The Smalltalk Elite by Anonymous Coward · · Score: 0
      Interesting! I don't use Smalltalk, but I use Java and Lisp at work about equally, and I have several years of experience in both languages. I have to say that I'm about three times more productive in Java, mainly because of the libraries and good interface/implementation separation and readable textual form.(We have a lot of legacy Lisp code that needs to be pushed ahead)

      If we combine your experience and mine, this would make Smalltalk twelve times more productive than Common Lisp. I'll have a look at it. Thanks.

  29. Check out Io by Anonymous Coward · · Score: 0

    For those who are dissatisfied with current language offerings, I encourage you to check out Io at http://www.iolanguage.com/ .. It's small, simple and pretty well planned out.

  30. ain't nothin' wrong with prototype OO by Laxitive · · Score: 3, Interesting

    Man, and here I am writing my own little VM for a prototype OO system.. seems to be all the rage nowadays :D. I'm liking the recent trends of languages evolving to use simpler and simpler higher level semantics. I am a fan of smalltalk and self, but not their syntax. Their language environment and semantics, though, are worth pursuing.

    One of the reasons I like prototype OO (specifically, delegation-based prototype OO, as opposed to languages that use embedding), is that a lot of _other_ dynamic language models fit well on top of it. For example, it would be very simple to make a Python -> Self compiler, because constructs that self exposes can be used directly to implement more specific class-oriented pythonic constructs. It leads me to beleive that a prototype-oo oriented base-vm can serve as a good abstract platform environment for several dynamic 'scripting' languages.

    I'm not sure about the multiple dispatch though. I think multi-dispatch can be confusing.. especially in languages like these where the notion of runtime types is muddled quite a bit of the time.

    -Laxitive

  31. Re:Christians by Anonymous Coward · · Score: 0

    You can't have a civil discussion with a donkey. Donkeys like to think of themselves as rational, but if you observe their behavior you'll find they are anything but. They [donkeys] are full of anger and bitterness, and react with frightful outrage whenever they encounter someone with different views from their own. Even people who think that donkeyism is a reasonable philosophy must admit that most donkeys did not arrive at their point of view through anything resembling a rational process. Rather, they are poorly educated individuals who are lashing out angrily at anything which they perceive to be valued by "intellectual" society. You really shouldn't take it personally. It is the result of an angry and profoundly unhappy psychological condition on their part, not due to you or your scietific and empirical facts.

  32. Other prototype languages w/older implementations by Anonymous Coward · · Score: 0

    So what's wrong with Io? It's been around for a while and announced on Freshmeat. Also already has code written in it. Or Lua, which has been around longer. Or, hell, just update one of the Self implementations. Why yet another language implementation other than ego?

  33. I'm going to create the Stale programming language by Anonymous Coward · · Score: 2, Funny

    It's going to be based on COBOL, but will add the most annoying features of all of the other programming languges, and will leak memory like a firehose through a collander.

  34. Re:I'm going to create the Stale programming langu by Anonymous Coward · · Score: 0

    That would definitely make it the popular "Brand X" of programming languages. Every C(+, ++, #), LISP, PROLOG, Python, Smalltalk, etc. programmer would compare their elegant creations to Stale's. It'd also win hands-down in any obfuscated code contest.

  35. Lisp vs Smalltalk by Anonymous Coward · · Score: 0, Troll
    They are trying to combine Smalltalk and Lisp into one offspring. I have to ask. What does Lisp have that Smalltalk does not have? I could easily list things that Smalltalk has, but Lisp doesn't:
    • libraries ("talk small, carry a big library")
    • extensibility in readable form (you can extend Lisp with macros, but it stays unreadable usually)
    • industry backing (well, compared to Common Lisp anyway)
    • really good IDEs (no, Emacs does not make a really good IDE - it's decent after you've configred everything, but not realy good)
  36. YAWN! by Anonymous Coward · · Score: 0

    Hooray. The 433rd way to write "Hello, World!". And it only took a year and a half of development!

    Guys, solve a problem. Don't create another way to mimic all the current solutions.

  37. Dylan is not prototype based by Anonymous Coward · · Score: 0

    IIRC

  38. What was that? by Anonymous Coward · · Score: 0

    Stale Programming Language?

  39. MOD PARENT UP!! by Anonymous Coward · · Score: 0

    nt

  40. Re:Christians by Anonymous Coward · · Score: 0
    You can't have a civil discussion with a Nazi.

    I win! Game over.

  41. Objective C by Doug+Merritt · · Score: 2, Informative
    Oh, I can't think of any other language that used smalltalk as a base... Oh yeah, except C++.

    Objective C borrows both syntax and semantics from Smalltalk (on top of C itself, of course). It's a nice small language.

    --
    Professional Wild-Eyed Visionary
  42. WTF? Mods, this is funny! by Anonymous Coward · · Score: 0

    I guess the new meaning of "Troll (-1)" is "I can't detect sarcasm."

  43. NewtonScript? by Archibald+Buttle · · Score: 4, Informative

    Yet another language turns up that claims its virtual parents are SmallTalk, Lisp, and Self...

    It would seem that Apple may have had it right ten years ago when they made NewtonScript, the native language of their Newton computers, since that language too claimed SmalllTalk, Lisp and Self as its antecedents.

    Having had a brief look though at the documentation for Slate, and yesterdays Prothon, I can't help but feel that Apple did a much better job with NewtonScript and the Newton environment. NewtonScript seems to me to be much more mature and better thought out than these two examples.

    As for comments that I read here about prototype-based languages not being suitable for application development and are effectively only the domain of accademics, I say bullshit. Class-based programming really isn't the only method of OO development, and prototypes can be equally effective. Many thousands of applications were written for the Newton, and they all used NewtonScript and its prototype-based object model. Prototypes can usually be used in a very similar way to classes, and most class-like behaviour can easily be simulated.

    If you're interested in finding out more about how NewtonScript worked and functioned there reference manual can be found here:
    http://www.unna.org/unna/development/docume ntation /NewtonScriptProgramLanguage.pdf
    For a discussion of prototype vs. class based programming consult Appendix C of the NewtonScript reference manual.

    1. Re:NewtonScript? by k_head · · Score: 1

      Isn't javascript prototype based? It's ironic that one of most widely used languages is prototype based and most people consider it a "toy" language.

      --
      The best way to support the US war effort is to continue buying American products.
  44. A better smalltalk-like language by cryptoluddite · · Score: 5, Interesting
    There are other Smalltalk-based languages that are far better than this, for example SmallScript. The guy behind it, David Simmons, is trying to learn from Smalltalk's mistakes:
    • Isolated, all-in-one environment creates a with-us or against-us situation. Smallscript can plug into .NET, and you can embed C++ or other language code directly into the program and link to external code.
    • Slow performance. Smallscript is targeted more at scripting, where performance is less critical. Even the best Smalltalks average about 1/10th the speed of C on common codes. All Smalltalks are significantly slower than Java.
    • Complete lack of security. Smalltalks allow dynamically loading and running code (there are even smalltalk-lets like applets), but have no provisions for Java-like sandbox security. Smallscript has some provisions for security and can leverage .NET's security.
    • Unnatural language syntax for programming. Smalltalkers claim their language is more like English, but most programmers just don't like it. Smallscript has added a few C-like keywords and syntax.
    • Lack of solid, stable core. One of Java's strengths is a huge core library that is unmodifiable by applications. This means that everybody knows what the core does and what is available in it. Smalltalk core is flexibly, where developers add methods to objects on a whim and re-writing the actual code for the core objects. This means that apps are not portable to future language runtime versions and can't co-exist with other applications.

    This new Slate language looks just like Smalltalk only with new features that nobody actually wants, such as prototypes instead of classes. AFAICT, it hasn't improved on any of the above problems and has actually made some of them worse. IOW, it's doomed.

    Scallscript is a start. It's definitely the best of the breed. Personally, I think the greatest barrier to acceptance of Slate / Smalltalk / Smallscript / Squeak / Whatever is the language syntax. Programmers just don't yoda talking like, and a slightly-off Germanic style of grammar just doesn't fit well with an activity like programming that is more mathematical and logical than like communication.

    1. Re:A better smalltalk-like language by zsau · · Score: 1

      Programmers just don't yoda talking like,

      You missed a 'like'.

      --
      Look out!
    2. Re:A better smalltalk-like language by GnuVince · · Score: 1
      Programmers just don't yoda talking like, and a slightly-off Germanic style of grammar just doesn't fit well with an activity like programming that is more mathematical and logical than like communication.

      I'm not sure I get this.

      myArray := Array new: 3.
      myArray at: 3 put: 'Hello'.
      This is far more readable than in languages like C.
  45. Dylan was hardly successful by tommasz · · Score: 2, Insightful

    I remember Dylan, as a matter of fact I still have the book somewhere. It was another amalgam of programming language concepts that never went anywhere.

    As elegant and admired as Lisp and Smalltalk are, they aren't exactly the most heavily used programming languages available (and I say that even though I love Smalltalk). Just because a language appeals to language designers, doesn't mean it's going to be embraced by the masses of programmers out there in the trenches. And the more of a mindshift necessary to use it, the less likely it will succeed.

    People sometimes disparage C++, but it gained acceptance because C programmers could get their work done using it even if they weren't doing OOP programming. Evolution works where revolution fails.

    1. Re:Dylan was hardly successful by DrEasy · · Score: 2, Interesting

      True, but Smalltalk was about to hit the mainstream right when Java took off. I used to get spontaneous job offers around 98 just because of my Smalltalk skills. European banks in particular were replacing their old cobol code with Smalltalk, so there was money to be made there.

      But Smalltalk couldn't rival Java in terms of marketing, and applets were supposedly the next big thing. If only ParkPlace had come up with a Smalltalk equivalent to applets...

      --
      "In our tactical decisions, we are operating contrary to our strategic interest."
    2. Re:Dylan was hardly successful by Anonymous Coward · · Score: 0

      If only the vocals weren't so nasal.
      I mean, some of the poetry on "Blood on the Tracks" is just brilliant.
      Best interpreted through someone else, though, e.g. Hendrix doing "All Along the Watchtower"
      -1, stupid, obvious

    3. Re:Dylan was hardly successful by be-fan · · Score: 3, Interesting

      So what? At this point, I've given up ever hoping that the "programmers out ther ein the trenches" will ever wise up to the superior tools that are out there. There is no point in bringing those people into discussions about languages, because they'll never accept something unless its almost exactly the same as what they are already using. Witness C#, which is ever so slowly absorbing Lisp techniques. So far, it has GC, and in 2.0 will have lambda. In another decade, it'll get multimethods, another decade later it'll get macros. By about 2030, they will have matched Lisp circa 1980.

      --
      A deep unwavering belief is a sure sign you're missing something...
  46. Dylan is technologically successful by oodl · · Score: 1

    Dylan is technologically successful (a dynamic, abstract, powerful language which produces programs that run as fast as those written in C/C++), though it has not been market-place successful. If Microsoft had put its weight behind Dylan, instead of C#, then I think Java would have been in serious trouble. The Dylan language is considerably more powerful than Java, but built on a small, very elegant extendable core. Dylan is basically a fully object-oriented descendant of Lisp with infix syntax instead of prefix syntax used by Lisp. Like Lisp, Dylan's macro system allows the language to be extended from within itself.

    The open-source Dylan compiler, Gwydion Dylan, is still being actively improved by a small group. http://www.gwydiondylan.org
    It runs on linux and MacOS X.

    1. Re:Dylan is technologically successful by smittyoneeach · · Score: 2, Insightful
      If Microsoft had put its weight behind Dylan, instead of C#, then I think Java would have been in serious trouble.

      Can we really make suck a strong claim about a language on its own?
      These days, syntax and semantics are all fine and groovy. For any language, you expect variables and functions and such. One huge contributor to making or breaking a language in the marketplace, though, is its library support.
      CPAN, the Python standard library, java.*, boost.org, .Net--all of these help their target language escape the ivory tower.
      --
      Get thee glass eyes, and, like a scurvy politician, seem to see things thou dost not.--King Lear
    2. Re:Dylan is technologically successful by hak1du · · Score: 1

      If Microsoft had put its weight behind Dylan, instead of C#, then I think Java would have been in serious trouble.

      No way. Whether Dylan is or is not better in an absolute sense, C# is the biggest increment over Java the industry is willing to swallow, just like Java was the biggest increment over C++ the industry was willing to swallow. You can't introduce too many new things in a new programming language or people won't go for it.

    3. Re:Dylan is technologically successful by Anonymous Coward · · Score: 0


      "C# is the biggest increment over Java the industry is willing to swallow, just like Java was the biggest increment over C++ the industry was willing to swallow. You can't introduce too many new things in a new programming language or people won't go for it."

      That's why it will take another 30-50 years before everybody programs in Lisp.

  47. UI by Piquan · · Score: 1

    The article says they're merging Morphic and CLIM... two of the coolest UIs I've ever used. If they pull that off, the UI at least will have definate win potential.

  48. Re:Christians by Anonymous Coward · · Score: 0

    The person who triggers Godwin's law has lost the argument. And it doesn't work if you do it on purpose.

  49. In search of an appropriate unit of abstraction... by alienmole · · Score: 3, Informative
    There does seem to be a fair amount of interest in prototype-based languages lately. Javascript's object system is also prototype-based, also inspired in part by Self, as well as Lisp/Scheme. Javascript may have helped trigger the current wave of interest in this subject.

    Purely prototype-based languages don't really compete with their more structured (class-based) cousins, though. One of the main benefits of prototype-based langauges is that they give a lightweight way to create an abstraction - you don't necessarily have to create a class first. This isn't necessarily a pure win. The structure provided by classes can be useful, too. A good language should provide both capabilities, no matter what mechanisms it uses to do that. It's possible Slate does this, I haven't looked.

    Another good candidate mechanism for lightweight abstraction is first class anonymous functions, i.e. lambda, as found in Scheme, Lisp, Javascript, Perl (Python got it wrong, unfortunately). Having real lambdas tends to eliminate a lot of the problems which other languages find themselves trying to solve. Although it helps to also have macros, which limits the list to Scheme and Lisp.

  50. Ah, great, Smalltalk-The red zone is for the...... by Anonymous Coward · · Score: 0

    Only a couple weeks if you don't have a lot of procedural baggage to get rid of.

  51. Deja vu-Small-"Talk". by Anonymous Coward · · Score: 0

    "One of these days, someone will write an article about a genuinely innovative language that really exists in usable form, and the eds will reject it because we've all got bored. :-)"

    English.

  52. UI-Random fire, brain-dead. by Anonymous Coward · · Score: 0

    Throw in some of the other OSS work out there and we truely could have a nice WE (Evas, XUL, The new X, etc). If memory serves, Apple was going to do a totally OOP's OS (Imagine drivers done the OOPs way). I think OSS could grab the Darwin kernel (Mach is a perfect fit), and throw something like Squeak on top of it. Set the GNUStep libraries beside it, and you'll have something nice. maybe even a scripting environment on the other side, for the newbies to start with.

  53. Corrections from one of the language authors by water451 · · Score: 5, Informative

    This took me by surprise, and I'm not a usual poster here, so I don't have the energy to reply to each person in turn. So I'll summarize some points I've seen:

    This post is entirely misleading; we are not researchers, and we do intend to do business based on this language. However, what the language itself is is entirely mis-represented. Note: the original submitter is not affiliated with our project in any way, and in fact does not actually know or use the language.

    First, we are not in a project mode of self-promotion or public representation at all. Nothing on that site claims to be a real tutorial, and the current efforts have mostly been about experimentation. We are still preparing the really usable implementation, and have a huge set of ideas and environment enhancements in backlog waiting for this. What's mentioned on the front page is actually a mere fraction of what we're working on.

    The project name, "Slate", is short for "Clean Slate Smalltalk". If you don't know Smalltalk, very little of it will make sense; what's at issue is that we mean what Alan Kay would say in that Smalltalk currently means Smalltalk-80, just a certain quirky snapshot of a whole range of ideas that he and others were working on. We're interested in that whole range.

    Slate is only about prototypes insofar as this was an initial language stage that was simple to play with and powerful enough to explore without too many limitations. Further revisions of the language will feature higher-level facilities for more type-safe programming and more declarative consistency (declarative in the sense of (re-)defining a class and having its instances track that consistently).

    Slate's environment is about 0.001% of completion of what we intend, and we have a huge body of experience and code and ideas to draw upon which are already largely mapped-out. What you see on the site is not representative of what we want in those terms.

    The syntax is definitely odd. At issue is the fact that we kept a minimal Smalltalk syntax core and optimized it for "phrase value" and added various annotation mechanisms, which wind up being very hard to understand until you crack open the 40-page programmers' manual which explains this all. Although it is no tutorial, everything is explained there, and improved with feedback from early users.

    Slate is eventually going to be a full environment, and be very flexible at a large scale, so that questions of prejudice about design choices will not matter, because we actively take part in designing the system so that users can make the choices: whether image-style live interaction or C-embeddable, highly-optimized, low-overhead, no-IDE deployment. And make it so you can make these choices independently; current Smalltalks, Lisps, Dylan, and hundreds of other languages (especially the more common ones) don't have this.

    There are a number of issues brought up here which are addressed but not advertised on the front page; for example, Slate will handle security at the language level, using capability analysis and the subjective programming feature mentioned. Our project has no marketting team (see Smallscript), and has actively avoided public claims until we have the demonstration at-hand. I am giving a presentation and demonstration of the next major release, featuring a self-hosting (C-friendly) setup in Seattle at Smalltalk Solutions 2004 in May.

  54. Inheritance in Prototype-based Languages by ingenuus · · Score: 3, Informative
    If your methods are associated with prototype objects, then if you have existing non-prototype objects and change a method, then would the non-prototype objects get the method def passed down, or what?
    Your use of the term "(non)-prototype object" is a bit confusing since every object is a "prototype" which can be cloned... but I think I understand your question.

    In prototype-based languages, creation of new objects occurs by copying (cloning) existing objects. After copying, the clone is independent from the original -- changing one has no effect on the other (there is no Inheritance relationship between them).

    Inheritance-style call (message) dispatch is handled through a slot named "parent" that every Object has. A call (message) that does not have an object-local slot (handler) is deferred to the objects referenced in the parent slot. In this way, objects can share the same parent and thus the same behaviour (unless locally overridden).

    Note that when a clone is made, all slots in the original are copied to the clone, so the clone has the same parents as the original. Of course, after cloning, you can change any of the clone's slots independently from the original, including the "parent" slot.

    Prototype languages are really not much different from class-based languages... they just split up the responsibilities a bit differently (and perhaps more uniformily).
    1. Re:Inheritance in Prototype-based Languages by Piquan · · Score: 1

      Your use of the term "(non)-prototype object" is a bit confusing since every object is a "prototype" which can be cloned... but I think I understand your question.

      Yeah, I was being a bit sloppy. I'd imagine that there would be a tendancy (created by programmers, not the language itself) to have objects that are created with the intent of being cloned and not used directly, and objects that are created with the intent of being not cloned; these would roughly correspond to "class" and "instance" in other OOP systems. (Of course, in the more advancecd OOP systems, the distinction between the two can get blurred at times anyway... witness CLOS's MOP.)

      Anyway, I'm not sure what the terminology is, but I'd figured you'd catch my meaning.

      Inheritance-style call (message) dispatch is handled through a slot named "parent" that every Object has.

      Ah! I see. This would also allow you to deal with multiple inheritance in a straightforward way (essentially, make "parent" a list), and multiple dispatch amounts to the same thing that it does in any generic function system.

      Thanks for the insight!

    2. Re:Inheritance in Prototype-based Languages by ingenuus · · Score: 1

      Yeah, I was being a bit sloppy.

      Perhaps I was being too strict; your terminology was mostly fine. Your sentence just confused me at first and I wanted to make sure we shared a common understanding of the word "prototype" in context. Please forgive me if I was discourteous.

      You're absolutely correct that objects in prototype-based languages are often divided into "class" (prototype) and "instance" categories.

      In fact, some prototype-based languages blur the line even further by involving the prototype directly in the inheritance hierarchy, exactly like classes. The only major difference is that the hierarchy is uniform and the prototype's own slots are copied rather than being dynamically created by the constructor / cloner.

      Of course, the "clone" message handler could be written to do extra hidden processing like constructors, and constructors could be written to copy a portion of the class' attributes/slots into the new instance it creates, like prototypes.

      With a flexible OO message dispatch system which is independent of the distinction between class and instance, prototypes and classes become practically identical.

      Thanks for the insight

      You're very welcome. I'm happy I could help.

  55. look up by Anonymous Coward · · Score: 0

    There are various articles out there, something like, "ACL2 theorems about commercial microprocessors" comes to mind. Also, Boyer and Moore have no doubt been consultants with a variety of companies. The fact that ACL2 is built in lisp is not incidental, but it is really the fundamental design concepts in the theorem prover that are more important. There are eight gazillion provers and model checkers out there, based on various formalisms. HOL, Coq, NUPRL, and ACL2 are some of the most popular provers. In Model Checking I have only fooled with MONA.

  56. I agree, go functional or logic by Anonymous Coward · · Score: 0

    Functional and logic have always been regarded as more advanced, it just took forever for people to come up with solid compilations schemes.

  57. syntax doesn't mean all that much by Anonymous Coward · · Score: 0

    Syntax is only one element; semantics and expressiveness are the keys. An otherwise awesome language with bad syntax can be fixed, as syntax can be tailored easily.

    Also, ugly or strange looking syntax can be important. Look up Ken Iverson, who won the Turing Award partly for his contributions to notation.

  58. Re:First Post by Anonymous Coward · · Score: 0

    That wasn't offtopic. It was an unneccesary post and it certainly should have been modded down, but "you fail: it" is psuedo Smalltalk/Slate, and therefore is supremely on-topic.

  59. BCPL by rice_burners_suck · · Score: 0, Troll
    I just came up with the most extraordinary idea. Why not make up a programming language where { and } are used to denote the beginning and end of a block, respectively, and expressions are terminated with a semicolon. That would be a HUGE improvement over the current languages of today, which look a lot like:
    LD1 I
    LDA BASE(0:2)
    STA *+1(0:2)
    You get the picture... (The year is 1967 right now, isn't it?)
  60. Most often used prototype based language is... by jeti · · Score: 2, Informative

    JavaScript

    You read right. JavaScript has a prototype based system for objects. I seldom see this mentioned in language design discussions.
    Actually I like JavaScript and it's prototype system quite a lot. It's a nice and powerful little language.
    But that's likely only the case because I never needed to implement any cross-browser stuff in it.

  61. Slate? by lowmagnet · · Score: 1

    A language in which one programs entirely in paradigm shifts, and "sea_change" is a reserved word. Any reference to descendant classes are referred to as frere; their parent classes as pere. I would go on, but Slate isn't as much fun as the other new programming language, Salon.

    --
    Heute die Welt, morgen das Sonnensystem!
  62. Headline we'll soon see by Anonymous Coward · · Score: 1, Funny

    "Number Of Programming Languages Exceeds Number Of Programmers"

  63. RE: Theoretical computer scientists... by Ignominious+Cow+Herd · · Score: 3, Funny

    I wonder what Real computer scientists have been working on.

    --
    Lump lingered last in line for brains, and the ones she got were sorta rotten and insane.
  64. Re:Ah, great, Smalltalk-The red zone is for the... by HorrorIsland · · Score: 1
    If you don't have "procedural baggage", how do you get anything done?

    Wouldn't you have to defined all the things that you could do, and then wait for someone to send you messages telling you what to do next?

  65. what did python get wrong? by Baki · · Score: 1
    I've heard before that python got anonymous functions wrong, and it was argued that the problem is that they don't see the scope in the correct way. Could you please elaborate?

    Yesterday I wrote a small python script (to learn some of it) and it included this (quicksort):

    def sort(l):
    if len(l) <= 1:
    return l
    pivot = l[len(l)/2]
    i = 0
    ll = filter(lambda e: e < pivot, l)
    le = filter(lambda e: e == pivot, l)
    lg = filter(lambda e: e > pivot, l)
    l = sort(ll)
    l.extend(le)
    l.extend(sort(lg))
    return l
    Here the anonymous functions do see their scope (pivot). However, unlike Perl for example, these "functions" really can be only expressions so in that sense they're more limited as. Just out of curiosity, is that what you meant with "python got it wrong"?
    1. Re:what did python get wrong? by voodoo1man · · Score: 1
      I've heard before that python got anonymous functions wrong, and it was argued that the problem is that they don't see the scope in the correct way. Could you please elaborate? ... Here the anonymous functions do see their scope (pivot). However, unlike Perl for example, these "functions" really can be only expressions so in that sense they're more limited as. Just out of curiosity, is that what you meant with "python got it wrong"?
      Anonymous functions should really be called anonymous subroutines - after all, that's how lambda is implemented in Lisp, Smalltalk, and pretty much any other language with assignment (except of course Python). The functional programming weenies might say otherwise, but I find it inconvenient, especially considering that Python is really an imperative programming language. I wrote a little bit about this in a previous post of mine. As far as scoping problems go (I'm not exaclty sure what the scoping problem is either), I don't think it poses too many problems since you can't do anything except look up the value of variables anyway (I think in this case you can even get away with just copying the value of the variable). Here is an old (probably outdated) usenet post about the issue in Python 2.1 (it seems the main problem is the fact that there is no difference between variable definition and variable assignment in Python). I'm still surprised something as simple as lexical scoping can be confused so thoroughly.
      --

      In the great CONS chain of life, you can either be the CAR or be in the CDR.

    2. Re:what did python get wrong? by alienmole · · Score: 1
      Voodoo1man's reply linked to a thread which hashes out some the issues with lambda in Python.

      The brief summary is that there are currently two problems, that I know of offhand, with lambda in Python:

      • Statements are not allowed, only expressions.
      • Modifying the value of a variable in an enclosing scope is not allowed.
      These are both quite severe restrictions that limit the ability to use lambda effectively, i.e. in ways that it is common to use them in languages which support lambda correctly.

      In languages that implement lambda correctly, lambda and functions are equivalent: you can do anything inside a lambda that you can do inside any other function. In fact, in Scheme, Lisp, Javascript and Perl, lambdas *are* functions and vice versa - there's no significant distinction (other than how a function is associated with its name, if any).

      Significantly restricting what you can do inside a lambda makes about as much sense as restricting what you can do inside a function: it cripples the construct. You can't get a real sense for what lambda can do, using Python, because in Python, lambda can't do what it can do in other languages.

      A good language to learn to get a better understanding of lambda is Scheme. You can try this tutorial, and download PLT's DrScheme to play with it.

  66. Maybe I'm just feeling cranky by crucini · · Score: 0, Troll

    Do we need yet another impractical language? Look, Perl started off solving problems in the real world and was then developed into a "real" language. These pie-in-the-sky types all have the same problem, and Larry Wall nailed it. They're inventing a language around some theoretical idea, rather than looking at what works in the real world and gently enhancing it.

    Even if the main idea is a great one, the language always sucks because it is too much enslaved to that one idea.

    And the funniest part is that the language of the week is always on a web site served up by C/C++ and (Linux|Windows).

    1. Re:Maybe I'm just feeling cranky by Anonymous Coward · · Score: 0

      you can mod me as troll, but larry wall's language is probably the worst computer language in the history of humankind right up there next to COBOL and TECMO

    2. Re:Maybe I'm just feeling cranky by crucini · · Score: 1

      Oh, absolutely. Dreadful language. But then, "There are two kinds of languages. The kind that suck, and the kind that nobody uses."

  67. GNU Smalltalk by hak1du · · Score: 2, Informative

    If you are looking for a Smalltalk-like language for scripting applications without the Smalltalk GUI, check out GNU Smalltalk. It's a pretty faithful implementation of Smalltalk, and it even has a JIT.

  68. 2nd POST ! Lisp ist ueber alles! Smalltalk sucketh by Anonymous Coward · · Score: 0

    Waste some mod points on me, you stupid slashdot-loving moderator boi!

    Lisp - it's not just for homosexuals any more!

  69. Re:Ah, great, Smalltalk-The red zone is for the... by marcello_dl · · Score: 1

    The AC parent post probably referred to "procedural baggage" as an obstacle to get advantage of Object Orientation for structuring your code.

    It's trivial to code in an imperative fashion with Smalltalk, it's no different than using Python or Java.

    --
    ---- MISSING MISCELLANEOUS DATA SEGMENT --- [sigdash] trolololol
  70. Re:In search of an appropriate unit of abstraction by angel'o'sphere · · Score: 1

    If you have prototypes classes are not needed. They give no further possible abstraction. If you have only classes prototypes are not needed either, but they provide a lot of power you lose otherwise.

    What you likely want to say is static typing versus dynamic typing. Most prototype bases languages are dynamic typed ... so the method dispatch etc. is very much done during runtime.

    In case you want to "design" a larger system with a prototyped language, you of course "design" traits objects. They are just the same thing what classes are in C++/Java etc.

    Your statement The structure provided by classes can be useful, too. comes irrelevant then, as the structure is the structure of the traits/prototype objects.

    angel'o'sphere

    --
    Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  71. Re:In search of an appropriate unit of abstraction by alienmole · · Score: 1
    If you have prototypes classes are not needed. They give no further possible abstraction. If you have only classes prototypes are not needed either, but they provide a lot of power you lose otherwise.

    What you likely want to say is static typing versus dynamic typing. Most prototype bases languages are dynamic typed ... so the method dispatch etc. is very much done during runtime.

    No, I stand by what I said. Prototype-based languages typically allow the structure of instances to be modified arbitrarily, e.g. allowing variables to be added or even removed. This is part of what I meant by the structure provided by classes. Traditional class-based systems impose a contract on instances, which is not usually offered in prototype-based languages - the contract is that an instance conforms to the exact structure specified by the class. As it turns out, this does make it easier to do static typing, but that's a consequence of the underlying difference in the structural qualities of prototype vs. class-based systems. It's that underlying difference to which I was referring.

    In case you want to "design" a larger system with a prototyped language, you of course "design" traits objects. They are just the same thing what classes are in C++/Java etc.

    Your statement The structure provided by classes can be useful, too. comes irrelevant then, as the structure is the structure of the traits/prototype objects.

    Certainly, I agree that there's a correspondence between e.g. classes and prototype objects. However, that correspondence is not exact - if it were, there'd be no difference between the two approaches. However, there is a difference, one of the main ones being what is allowable for instances cloned from prototypes, vs. instances instantiated from classes. It is this point which makes class-based programming more structured than the prototype equivalent, in general.

  72. Re:In search of an appropriate unit of abstraction by angel'o'sphere · · Score: 1

    Traditional class-based systems impose a contract on instances, ...
    Indeed, I missed that. Thats right, point taken :D

    --
    Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  73. Re:In search of an appropriate unit of abstraction by RevAaron · · Score: 1

    But then again, in a proto-oo language as flexible as Slate, one could easily impose the same restrictions- each new proto derives from some other one, its parent. You could implement a class-ish system, something that had the same restraints, pretty easily in a language like Slate.

    But then again, similarily, in a flexible enough class-based OO language- like Smalltalk- you can add protos incredibly easily. Sure, you could implement a proto-oo system in any language, but in a language like Smalltalk it is incredibly easy and sometimes quite useful.

    --

    Working toward a usable PDA environment in the spirit of Newton OS: Dynapad