Talk:Self (programming language)

From Wikipedia, the free encyclopedia

Contents

[edit] Rapidly dated information

I think it's utterly pointless to include information that is guaranteed to be out of date quickly. Saying that development was still proceding as of September, 2004 is effectively a statement that will need to be updated every single month (assuming that development really is continuing). Giving the version number of the last release is again another piece of information that is likely to need to be updated. What useful purpose does this information serve? For example, what information does "version 4.2.1" provide to the reader? The article doesn't bother to give any additional information about Self's version history. To someone who's not already quite familiar with Self's development, "version 4.2.1" is just a meaningless number. It's worth noting that this kind of information is against policy.

When it comes to the state of development, I think it is fine to just say "Self is still under active development", or some statement to that effect -- that presents about as much information as the article currently does and won't need to be updated until the statement itself is false (i.e. when development on Self stops). As for the version number, I think we ought to get rid of it entirely, for the reasons stated above. Neilc 08:22, 5 Sep 2004 (UTC)

  • What about Java?:

#1.4 (2002) - this is the most widely used version as of 2004. The release added the assert keyword, which helps to find errors that might otherwise be difficult to notice or track down. # 5 - The 1.5 release was renamed to Java 2 version 5. This is the most recent release. It includes a number of new language features, some of which could be argued to have been modeled on Microsoft's C#, which was self-consciously modeled on earlier versions of Java

  • And Perl?:

The current version, 5.8.5, includes Unicode support. Development of the next major release, Perl 6, is also underway. It will run on Parrot, a virtual machine which is being developed as a possible multi-language target architecture.

  • I understand your concern. How can we find a solution that can fits both needs? — danakil 16:09, Sep 5, 2004 (UTC)
Just because other pages do this doesn't mean they aren't also wrong :) Personally, I think including version information is fine where there's something novel or interesting about a particular release of the language; mentioning that Java 1.5 (erm, 5.0) finally includes generics, for example, or is considered by some to be developed in response to new features in C#, would both qualify as interesting version-specific information. But I'm not sure I see the value in saying "the current version is x, it was released on date y" and nothing more. Neilc 02:39, 7 Sep 2004 (UTC)
  • something novel or interesting about a particular release... that's way too subjective for you to have a point. To use your own example: Java finally includes generics, for example, or is considered by some to be developed in response to new features in C#... well, from the point of view of the number of programmers for the language, then it is interesting that Java does that; however, from another point of view, that one of pure technology itself, those two statements couldn't be more boring and insignificant: Generics have existed in other languages for at least twenty years if not more, and many other languages have been extended in response to new features that appear in competitors; whereas on the other hand, Self has been a significant source of cutting edge technology for past ten years (optimized compilation for dynamic langs, the MORPHIC user/programming interface, the idea of prototype-based OO) and the fact that the new version runs on Mac OS X is, under still another point of view, quite "relevant" given the fact that the use of Mac OS X is increasing importantly. Many people blame Self's lack of popularity to the fact that the only optimized implementation only ran on Sun hardware. — danakil 03:53, Sep 7, 2004 (UTC)

[edit] Windows version

I have searched in vain for a version of Self runnable on Windows. Should I stop? In other words, is there such a thing? --Phil | Talk 09:55, Sep 6, 2004 (UTC)

There is no Self-for-Windows version. That's because part of the Self engine code is writen in Sun Sparc Assmebly language. I learned it long time ago, trying to port Self to a Debian Linux System. Champs, 11:19, Mar 13, 2005 (BRT).

Self has been ported to the PowerPC Macs by the Sun group and to x86 Linux by Gordon Cichon and Harald Gliebe. The latter port is also supposed to work on Windows using Cygwin, but I am not aware of anyone actually using this. I try to keep an updated list of ports in http://www.merlintec.com:8080/Self/ Jecel 17:43, 23 Mar 2005 (UTC)

The Self versions for Windows and Linux require compilation with GCC 2.x. With GCC 3, the C++ ABI changed (I.e. the location of the virtual method tables in C++). Additionally, GCC 3 and 4 have a different interpretation of the C++ standard which makes porting of C++ programs from previous releases (IMHO unnecessarily) hard. --Gordon Dec 10, 2005

[edit] First of a kind

Is Self the first protoype-based language historically? If not, what is? Wouter Lievens 14:56, 30 Mar 2005 (UTC)

Object Logo for the Mac was already available commercially in 1986 and it had most of the interesting features of prototype-based languages. Jecel 23:50, 8 Apr 2005 (UTC)

[edit] Is self no longer actively maintained?

I just peeked at Sun's Self page, and it talks about Sun's Self Group and the Self language as things that Sun has done, rather than as things Sun is doing. Does this mean that no one is working to improve the language right now, and perhaps that there are no self implementations under active development?

--Ryguasu 23:28, 31 October 2005 (UTC)

The Self Project was killed in 1995 as part of Sun's strategy for promoting Java. The core of the group was able to hang on for a while by studying the effects of Self technology on Java (PEP, a Java implementation in Self), studying ways to make more portable virtual machines (Self 4.1 on the Mac), investigating distance learning using the Kansas GUI and looking into different directions in language design (Us, the subjective version of Self). But by 1997 the group was effectively disbanded with everyone being reassigned to Java related projects. In late 1999 things had changed sufficiently that Self 4.1 was finally released to the public and the following year David Ungar was able to start a new language project related to Self instead of Java. There is currently no public information about this project but a side effect of it was that development of Self was restarted and there have been several new releases in the past years. There is a rumor that a new Self virtual machine written in Self is part of this. In any case, the Self Project itself has not been officially restarted at Sun so it makes sense for them to refer to it as you mentioned.

Besides the official project at Sun there have been other Self related projects, like the port to the PC and alternative implementations. A variation of the language that runs on top of Squeak Smalltalk was released this year, for example. I have renamed my own project from "Self/R" to "Neo Smalltalk" to avoid having to explain to each new person I meet that Self is indeed a Smalltalk but the language is still just as related to Self as before.

Jecel 22:24, 9 November 2005 (UTC)

[edit] The environment

Every time I see this page I am very tempted to simply rip out the first paragraph of "The environment" section complaining about the problems of virtual machine based systems. Since this is a matter of opinion, however, I have so far left it as the original author wrote it.

The problem is that C programs that are stand-alone entities are possible but extremely rare. I have created such myself and this means no dynamic linking of any kind, not even an operating systems. Just your code, a few self contained libraries and the bare hardware. All other C programs depend on rather large and complex run time environments that make Self's virtual machine seem frugal in comparison. You can't take a .exe file and expect it to run on Linux, for example, unless you provide a replacement for the required environment using something like Wine.

The reason why Self's environment looks worse than what programmers are used to is that it is being nested on top of another environment - the operating system. On a computer where Self ran on the bare hardware users would think of applications in Self as very lightweight and stand-alone things. Programs written in C, on the other hand, would seem to need bloated and awkward support systems in order to run on such a machine. I go into more details about this in my ECOOP'95 paper [1] but the important thing is that the complaint about the virtual machine is valid for the particular situation we have today (Self on Unix-like operating systems) but not in general. Jecel 02:20, 15 January 2006 (UTC)

Yeah. The current text isn't neutral or entirely accurate.
The thing about Self (& SmallTalk) is that--unlike many of the other languages most programmers are more familiar with--they tend to insist you come play in their environment rather than trying to integrate with the environment you already have.
(Although, EcmaScript in the browser is kind of an analogous...)
The "persistant image" thing also turns off people (like me) who grew up on C because we're used to being able to make the world come to an end & reboot it fresh. Plus, I don't understand how such a system deals with version control issues, which is another thing that I think can make people uncomfortable with it.
So, those are the things I think a rewrite ought to address.
--Malirath 18:49, 12 April 2006 (UTC)
This is a rather different issue and you raise some very good points. I have had some long discussions with people about the differences between what I call "blueprint systems" (those which are created from scratch from a plan each time they run, so any permanent change must be made to the plan) and "living systems" (once they start they run forever and must be changed on the fly). Each has its advantages but there is a trend to evolve systems that started out as blueprint to be more and more living ones by adding system registries and user configuration files. This gets you the worst of both worlds since then the issues you mentioned don't even get discussed or considered. --Jecel 00:24, 20 July 2006 (UTC)

[edit] Spelling the name of the language

This isn't an issue for this page, but since I have seen "SELF" in so many papers and web pages I thought I should mention this bit of trivia, which might avoid somebody "fixing" this page in the future.

In the original Self paper the name of the language used the small caps typographic convention for the main title and in the text. This was also done in most other papers by the Self group. So the "S" was indeed a capital letter but the "elf" only seemed so if you were distracted or wanted to reproduce that appearance with a typewriter or some similarly limited medium. --Jecel 00:33, 20 July 2006 (UTC)

[edit] Article needs a lot of work

Issues:

  • It's completely unsourced.
  • It reads somewhat like advocacy for the language.
  • Much material is redundant with, and/or more appropriate for, Prototype-based programming.
  • The tone is more like a tutorial/HOWTO than an encyclopedia article.
  • Quite a bit of interesting material, such as polymorphic inline caches, is omitted.

I'll start addressing these as I have time to do so. Other editors of the article might do this as well.

--EngineerScotty 20:14, 28 November 2006 (UTC)