Please create an account to participate in the Slashdot moderation system

 



Forgot your password?
typodupeerror
×
Programming Technology

Slate is Bootstrapped 29

aster_ken writes "The latest Slate compiler is finally able to compile itself. To quote 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." The latest version of Slate, 0.3, is now available for download. It was previously mentioned in this Slashdot article."
This discussion has been archived. No new comments can be posted.

Slate is Bootstrapped

Comments Filter:
  • Anyone else mistake this Slate for the M$ Slate [msn.com] when reading the title?
    • ..."my goodness, Bill really didn't like that Slate article [msn.com] recommending a switch to FireFox, did he?" (-:

      I note that Slate was put up for sale recently, and am quietly wondering if that is a real reaction to editorial honesty.
  • by shoppa ( 464619 ) on Tuesday August 10, 2004 @08:15AM (#9928338)
    rm -rf /usr/bin/gcc*
  • Common Lisp? (Score:2, Interesting)

    by School_HK ( 757129 )
    Is it bootstraped? I think it may be bootstraped by smalltalk or something similar (like Self), but it use Lisp...... quite different language.
    • Re:Common Lisp? (Score:5, Informative)

      by WolfWithoutAClause ( 162946 ) on Tuesday August 10, 2004 @08:24AM (#9928413) Homepage
      Yeah, it's boostrapped- he used CLisp to write a Slate interpreter, then using the Slate language he wrote a new compiler/interpreter, and then compiled the interpreter/compiler to machine code; then he restarted Slate running on the new compiler/interpreter; and CLisp is gone now. Any future changes to the compiler will be self compiled.

      'Job's a good'un'.

    • Lisp is not that different from Smalltalk or Slate. Smalltalk itself is derived from Lisp in a lot of ways, sort of a cross between Lisp philosophy and the concept of OO in Simula.

      Smalltalk and Lisp both embody elegent simplicity. Yes, Slate is more like Smalltalk in a lot of ways, but the megaflexibility of Common Lisp- think macros and other features- make it an ideal language for language design and implementation.
  • by wbav ( 223901 ) <Guardian.Bob+Slashdot@gmail.com> on Tuesday August 10, 2004 @08:49AM (#9928639) Homepage Journal
    Last time I tried to do that I kept getting a syntax error. Some error about a missing colon.

    My Lord! So that's it! And I thought they took my spleen!
  • Cool (Score:4, Informative)

    by jefu ( 53450 ) on Tuesday August 10, 2004 @10:51AM (#9930129) Homepage Journal
    I played around with Self a while back and was very impressed by the potential of prototype languages. There are some problems, but so many possibilities.

    Now there are several such languages available (other than slate). Once they're all a bit more stable (some are stable now) it will be interesting to do a bake-off and see how they compare.

    These seem to be the most influential and active (at least at the moment) :

    • Self for solaris, x86, several web sites
    • Cecil [washington.edu]
    • prothon [prothon.org] prototype language in the python mood
    • IO Desktop [iodesktop.com]

    Are there other major/active languages in this vein?

    • newtonscript if you feel like visiting eBay for a Newton.
    • I'm not sure it meets the formal definition of a prototype language, but Ruby [ruby-lang.org] seems to come pretty close.
      • No it doesn't. Ruby uses class based OOP, whereas in true prototype based OO, any object may serve as either an object or a class-like prototype that can be cloned to create new objects.
        • Hmm, maybe I'm misunderstanding what you mean, but you can modify and clone instances in Ruby:

          ob = Object.new
          class "world"
        • Re:Cool (Score:3, Informative)

          by aero6dof ( 415422 )
          Sorry, must remember to preview...

          Hmm, maybe I'm misunderstanding what you mean, but you can modify and clone instances in Ruby:
          ob = Object.new
          class << ob
          def hello
          puts "world"
          end
          end

          o2 = ob.clone
          o2.hello => world
          • I stand corrected. Having only dabbled with Ruby, I was not aware that it allowed objects to be cloned. However, it does seem that Ruby's main focus is class based OO.
            • I would say that's true - especially with newer Ruby users. My feeling is that the most advanced users of Ruby end up using both aspects as circumstances suggest.
    • Re:Cool (Score:3, Informative)

      by bmac ( 51623 )
      Yup, good 'ol Javascript [netscape.com] & ECMAScript [ecma-international.org].

      Have fun.

      Peace & Blessings,
      bmac
    • Re:Cool (Score:3, Interesting)

      by Anonymous Coward
      You can do prototype-based coding in many other languages, actually.

      For instance in Perl you can do (after some setup of course):

      $obj = Object->new; # get started

      $obj->{name} = 'Joe';
      $obj->{shoe_size} = 12;
      $obj->{age} = 21;
      $obj->{is_old_enough_to_drink} = sub {
      shift->{age} >= 21;
      };

      etc.

      Add a little syntactic sugar using AUTOLOAD and they look just like static classes. Add some more scaffolding and you have inheritence, and everything else.

      Actually, many perl objects already let yo
    • Re:Cool (Score:3, Funny)

      by RevDobbs ( 313888 ) *
      I also played with self... I don't think anyone would be particularly impressed with my results. I mean, I finished quickly enough -- but the output was rather messy.
    • There are a couple prototype packages for Squeak. Very handy, especially for Morphic programming.

      The most popular proto-based language is Lua [lua.org]. Surprised you didn't mention it. It is used in a lot of games. It has a class system too, but is a lot like NewtonScript. NewtonScript itself is an *awesome* proto language, and it's fun to play with Lua, it being so close in some ways.
    • IO Desktop is a source package for the prototype-based language Io, and its web site is www.iolanguage.com [iolanguage.com], not www.iodesktop.com.
  • by water451 ( 200460 ) on Tuesday August 10, 2004 @11:16AM (#9930400) Homepage

    So it looks like the original story here wasn't such a fluke after all. I was really kind of shocked that anyone would even look at it or want to use it given that it was written in Common Lisp [hackles.org] for experimentation.

    The language we write the system code in is currently not quite Slate, but it's designed to make the C code more consistent and relatively safe. We spent some months debugging the new implementation, so this release is focussed on being debugged. Future releases will have more features, and so forth.

    And, no, I still don't care about the online magazine of the same name. Just think of it as "Clean Slate" Smalltalk or Slate Smalltalk. Too many other things are named Slate or some variation thereof, anyway (see the USPTO's registry).

    My partner on the project plans on full compilation without a C back-end, but also that it will take time, so I can't promise you guys a darned thing yet - don't hold your breath! (He's a talented guy, and great to work with, but things like this take time to develop.)

    • My partner on the project plans on full compilation without a C back-end, but also that it will take time, so I can't promise you guys a darned thing yet - don't hold your breath! (He's a talented guy, and great to work with, but things like this take time to develop.)

      Hey, compile it back to Lisp! CMUCL [cons.org] has a very effective lisp compiler! Gee, I'm a genius, wonder why I haven't created my own programming language yet...

      • by water451 ( 200460 ) on Tuesday August 10, 2004 @08:33PM (#9935933) Homepage

        I realize you're joking, but that's actually what the original implementation did, up to a point (and it was decently non-abyssmal in performance). We had an inlining semi-compiler (to avoid the fact that Lisp implementations differ, you can't rely on specific ANSI-variable behaviors) with a few critical optimizations applied which we are now applying to the VM-based implementation (some are already present).

        Let me just say that ANSI Common Lisp makes for a really poor virtual machine; that's really not what it excels at. It excels at optimizing Lisp programs, not other languages with a substantial impedance-mismatch. Slate super-heavily relies on polymorphism, and this just isn't something that Lisp compiler implementors focus on optimizing.

  • This brings to mind the satan character in Time Bandits who blew up one of his minions after it told him that "The Supreme Being couldn't be all bad because he created you, sire." The satan character retorted "Don't ever talk to me that way again, I compiled myself."

The goal of Computer Science is to build something that will last at least until we've finished building it.

Working...