<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-15"
 http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Hi all,<br>
If you don't like the Squeak language as it is, all you need to do is
to write a new compiler and use it for compiling the methods of your
own classes. Many different languages can co-exist in the same image
without problems. VW has done it; the methods of some classes were
written in SQL when I looked at it several years ago. I've done it when
I got rid of the annoying class companion, the metaclass.
(Several of my classes shared the same metaclass). The experiment
didn't lead where I wanted to go, so I abandoned it. My BabyIDE
environment for DCI programming does it by extending Traits with
knowledge about the (DCI) Context of the methods. None of it exactly
straight forward, but doable.<br>
<br>
Here are some details if you're interested<br>
<br>
Most programming languages such as Java are used to specify complete
programs. The 'original' of a program is its text form. A compiler
translates to a binary form.<br>
<br>
There is no Smalltalk language in this sense. The 'original' of a
program is its binary form as an object structure in the image. The
creation of a new class object is done by a process in this image. 
Usually, this is done by a command in the Browser. The
common textual form for defining a new class is a 'doIt'; a statement
to be interpreted by the image. The so called Smalltalk language is
used to specify methods; one method at the time. The compilation and
installation of a method is done by the class; the methods of different
classes can be specified in different languages.<br>
<br>
So, if you really want a different syntax, you can write your own
compiler and share it with other people who share your interests.
There's no need for an up-front decision and translation of all legacy
code.<br>
<br>
Many interesting experiments could be made this way.<br>
--Trygve<br>
<br>
<br>
<br>
<br>
On 2011.06.01 03:24, Juan Vuletich wrote:
<blockquote cite="mid:4DE594B5.8040605@jvuletich.org" type="cite"><a class="moz-txt-link-abbreviated" href="mailto:info@tomsik.cz">info@tomsik.cz</a>
wrote:
  <br>
  <blockquote type="cite">On Tue, 31 May 2011 22:01:14 +0200, Randal L.
Schwartz <a class="moz-txt-link-rfc2396E" href="mailto:merlyn@stonehenge.com">&lt;merlyn@stonehenge.com&gt;</a> wrote:
    <br>
    <br>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">
          <blockquote type="cite">
            <blockquote type="cite">
              <blockquote type="cite">"info@tomsik" == info@tomsik cz
<a class="moz-txt-link-rfc2396E" href="mailto:info@tomsik.cz">&lt;info@tomsik.cz&gt;</a> writes:
                <br>
              </blockquote>
            </blockquote>
          </blockquote>
        </blockquote>
      </blockquote>
      <br>
info&gt; In short: 1.) binary messages make sense only for math. I've
never
      <br>
info&gt; implemented even one binary message, have you? (for non-math
      <br>
info&gt; things)
      <br>
      <br>
info&gt; Why not step further and make dsl for equations? let them live
      <br>
info&gt; outside of language.  (with everything common to math world)
      <br>
      <br>
info&gt; 2.) keyword messages with more than 2 arguments are just ugly
-
      <br>
info&gt; they smell in the "missing another object" way. And 2
arguments
      <br>
info&gt; are rare too. I would allow one argument at top.
      <br>
      <br>
So, you've now eliminated both possible ways of creating a new Point:
      <br>
      <br>
    3 @ 4
      <br>
    Point x: 3 y: 4
      <br>
      <br>
    </blockquote>
    <br>
I'll go few steps further to show big-picture in hypothetical syntax
    <br>
(one-argument closures with argument as implicit receiver, no returns
-&gt; CPS)
    <br>
    <br>
Point new: [x: 3, y: 4, printOn: aStream].
    <br>
&lt;rcvr&gt; &lt;msg&gt;: &lt;arg&gt;[&lt;msgForNew&gt;: &lt;arg&gt;,
&lt;msgForNew&gt;: &lt;arg&gt;, &lt;msgForNew&gt;: &lt;arg&gt;].
    <br>
concepts: always left-to-right (receiver-&gt;message-&gt;argument), no
parentheses -&gt; uniformity
    <br>
returns: nothing, does something
    <br>
  </blockquote>
  <br>
So, #new: creates a point without values for x and y... What if I want
to only build objects that make sense, meaning that their instance
variables must conform to some invariant defined by the class?
  <br>
  <br>
  <blockquote type="cite">vs.
    <br>
(Point x: 3 y: 4) printOn: aStream.
    <br>
(&lt;rcvr&gt; &lt;msg&gt;: &lt;arg&gt; &lt;key2&gt;: &lt;arg2&gt;)
&lt;msg&gt;: &lt;arg&gt;.
    <br>
concepts: sometimes left-to-right, depending on parentheses and
message-type (syntax)
    <br>
returns: aPoint, which won't be used anyway, because it was printed
already.
    <br>
  </blockquote>
  <br>
Easy choice. This is much nicer.
  <br>
  <br>
Cheers,
  <br>
Juan Vuletich
  <br>
  <br>
  <blockquote type="cite">
    <blockquote type="cite">I wonder what language we would end up with
if all of your (even
      <br>
conflicting) goals were implemented.
      <br>
      <br>
The more syntax you eliminate, the more you end up with LISP.  Maybe
you
      <br>
want LISP... you know where to find it!
      <br>
      <br>
    </blockquote>
    <br>
I'm not saying "let's drop objects", I'm saying "let's simplify
language, let's drop unused/misused/bad-in-long-process things"
    <br>
    <br>
    <br>
    <br>
-----
    <br>
No virus found in this message.
    <br>
Checked by AVG - <a class="moz-txt-link-abbreviated" href="http://www.avg.com">www.avg.com</a>
    <br>
Version: 10.0.1375 / Virus Database: 1509/3663 - Release Date: 05/27/11
    <br>
    <br>
    <br>
  </blockquote>
  <br>
  <br>
  <br>
</blockquote>
<br>
<div class="moz-signature">-- <br>
<meta http-equiv="Content-Type" content="text/html; ">
<meta name="ProgId" content="Word.Document">
<meta name="Generator" content="Microsoft Word 10">
<meta name="Originator" content="Microsoft Word 10">
<link rel="File-List" href="TrygveSignature-filer/filelist.xml">
<title>-- </title>
<!--[if gte mso 9]><xml>
 <w:WordDocument>
  <w:SpellingState>Clean</w:SpellingState>
  <w:GrammarState>Clean</w:GrammarState>
  <w:HyphenationZone>21</w:HyphenationZone>
  <w:PunctuationKerning/>
  <w:DrawingGridHorizontalSpacing>6 pt</w:DrawingGridHorizontalSpacing>
  <w:DrawingGridVerticalSpacing>6 pt</w:DrawingGridVerticalSpacing>
  <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery>
  <w:DisplayVerticalDrawingGridEvery>3</w:DisplayVerticalDrawingGridEvery>
  <w:UseMarginsForDrawingGridOrigin/>
  <w:DoNotShadeFormData/>
  <w:Compatibility>
   <w:FootnoteLayoutLikeWW8/>
   <w:ShapeLayoutLikeWW8/>
   <w:AlignTablesRowByRow/>
   <w:ForgetLastTabAlignment/>
   <w:LayoutRawTableWidth/>
   <w:LayoutTableRowsApart/>
   <w:UseWord97LineBreakingRules/>
  </w:Compatibility>
  <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
 </w:WordDocument>
</xml><![endif]-->
<style>
<!--
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {mso-style-parent:"";
        margin:0cm;
        margin-bottom:.0001pt;
        mso-pagination:widow-orphan;
        font-size:12.0pt;
        font-family:"Times New Roman";
        mso-fareast-font-family:"Times New Roman";}
span.SpellE
        {mso-style-name:"";
        mso-spl-e:yes;}
span.GramE
        {mso-style-name:"";
        mso-gram-e:yes;}
 /* Page Definitions */
 @page
        {mso-page-border-surround-header:no;
        mso-page-border-surround-footer:no;}
@page Section1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 70.85pt 70.85pt;
        mso-header-margin:35.4pt;
        mso-footer-margin:35.4pt;
        mso-paper-source:0;}
div.Section1
        {page:Section1;}
-->
</style><!--[if gte mso 10]>
<style>
 /* Style Definitions */
 table.MsoNormalTable
        {mso-style-name:"Vanlig tabell";
        mso-tstyle-rowband-size:0;
        mso-tstyle-colband-size:0;
        mso-style-noshow:yes;
        mso-style-parent:"";
        mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
        mso-para-margin:0cm;
        mso-para-margin-bottom:.0001pt;
        mso-pagination:widow-orphan;
        font-size:10.0pt;
        font-family:"Times New Roman";}
</style>
<![endif]--><!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="2050"/>
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1"/>
 </o:shapelayout></xml><![endif]-->
<div class="Section1">
<p class="MsoNormal" style=""><span class="SpellE"><span
 style="font-size: 10pt; font-family: Arial;" lang="EN-GB">Trygve</span></span><span
 style="font-size: 10pt; font-family: Arial;" lang="EN-GB">
Reenskaug<span style="">       </span>mailto: <span class="SpellE"><a class="moz-txt-link-abbreviated" href="mailto:trygver@ifi.uio.no">trygver@ifi.uio.no</a></span></span><span
 style="font-size: 10pt; font-family: Arial;"><o:p></o:p></span></p>
<p class="MsoNormal" style=""><span class="SpellE"><span class="GramE"><span
 style="font-size: 10pt; font-family: Arial;" lang="EN-GB">Morgedalsvn</span></span></span><span
 class="GramE"><span style="font-size: 10pt; font-family: Arial;"
 lang="EN-GB">.</span></span><span
 style="font-size: 10pt; font-family: Arial;" lang="EN-GB"> 5A <span
 style="">        </span> <a class="moz-txt-link-freetext" href="http://folk.uio.no/trygver/">http://folk.uio.no/trygver/</a><o:p></o:p></span></p>
<p class="MsoNormal" style=""><span
 style="font-size: 10pt; font-family: Arial;">N-0378
Oslo<span style="">               </span>Tel: (+47) 22 49 57 27<o:p></o:p></span></p>
<p class="MsoNormal" style=""><span class="SpellE"><span
 style="font-size: 10pt; font-family: Arial;">Norway</span></span><span
 style="font-size: 10pt; font-family: Arial;"><o:p></o:p></span></p>
</div>
</div>
</body>
</html>