Info on Smalltalk DSLs or Metaprogramming...

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
187 messages Options
1 ... 45678910
Reply | Threaded
Open this post in threaded view
|

Re: [ANN] SqueakDoc (was Re: Thoughts from an outside)

Bert Freudenberg

Am 02.09.2006 um 14:00 schrieb Michael Rueger:

> J J wrote:
>> Perhaps a javadoc type tool could be written that generates  
>> documentation from the code
>> itself?  I'm not sure I understood your first example perfectly,  
>> but it sounded like a javadoc
>> type system might have solved the problem.  That is; yes if I have  
>> to go
>
> We have had this sitting around basically unused for way too long:
>
> http://source.impara.de/squeakdoc
>
> It generates DocBook XML that then can be either used in a wiki  
> like system as the one we set up at
> http://squeakdoc.impara.de/external/
>
> and/or converted to e.g. HTML.
>
> Hmm, just realizing the only doc we have is in German...
> Will translate the main things...soon?...

Actually, the Squeak Doc documentation itself (in Books - Test  
Category) is in english.

- Bert -


Reply | Threaded
Open this post in threaded view
|

Re: Thoughts from an outsider

Bert Freudenberg
In reply to this post by J J-6
Am 02.09.2006 um 12:30 schrieb J J:

> I must say, this sounds promissing I think.  I don't know how you  
> guys are
> finding this stuff. :)

Well, some of us are around for ages and can still remember stuff ;)

> The last update seems to be from 2004, is this a project without an  
> owner atm?

Masashi Umezawa is still around AFAIK, but like most Japanese  
developers he is not active on squeak-dev. You might want to drop him  
a mail.

>> http://www.mars.dti.ne.jp/~umejava/smalltalk/stClasses/dandelion/


- Bert -


Reply | Threaded
Open this post in threaded view
|

Re: Thoughts from an outsider

Trygve
In reply to this post by Klaus D. Witzel
At 14:45 02.09.2006, Klaus wrote:
>If you set "classic documentation" := "your doc book approach" then I
>cannot see any difference to what's up nowadays: the doc is always the
>first *or* the next component which is outdated.
>
>/Klaus

Of course not. I am talking about literate programming as proposed by Don
Knuth. Classic documentation is different.

Cheers
--Trygve



--

Trygve Reenskaug      mailto: [hidden email]
Morgedalsvn. 5A       http://heim.ifi.uio.no/~trygver
N-0378 Oslo           Tel: (+47) 22 49 57 27
Norway



Reply | Threaded
Open this post in threaded view
|

Re: [ANN] SqueakDoc (was Re: Thoughts from an outside)

stéphane ducasse-2
In reply to this post by Michael Rueger-6
Hi mickael

This is cool that you release the cool stuff you have been doing and  
few have been seen.
Impara deserves a broader attention form the community (and  
clients :)) but for that people
need to know that you are cool and excellent!

Stef

On 2 sept. 06, at 14:00, Michael Rueger wrote:

> J J wrote:
>> Perhaps a javadoc type tool could be written that generates  
>> documentation from the code
>> itself?  I'm not sure I understood your first example perfectly,  
>> but it sounded like a javadoc
>> type system might have solved the problem.  That is; yes if I have  
>> to go
>
> We have had this sitting around basically unused for way too long:
>
> http://source.impara.de/squeakdoc
>
> It generates DocBook XML that then can be either used in a wiki  
> like system as the one we set up at
> http://squeakdoc.impara.de/external/
>
> and/or converted to e.g. HTML.
>
> Hmm, just realizing the only doc we have is in German...
> Will translate the main things...soon?...
>
> Michael
>


Reply | Threaded
Open this post in threaded view
|

Re: Thoughts from an outsider

Rich Warren
In reply to this post by J J-6

On Sep 1, 2006, at 11:15 PM, J J wrote:


>
>> Also, I  hate being isolated from the rest of my desktop. I'm a  
>> mac  user. I like my mac. I like my mac apps. I wish Smalltalk  
>> could be  part of that environment. Visual Works gets a few points  
>> here. At  least it looks like a native interface (Though, the UI  
>> doesn't behave  in a consistently native manner--which can  
>> actually be more annoying  sometimes. And it doesn't run on intel  
>> macs yet.).
>>
>
> You points on the environment look are certainly valid (though I  
> don't mind
> it personally).  As far as isolation from the rest of the desktop,  
> let's look
> at how everyone else does it.
>
> In Java, C++, Ruby, Python, et. al. how does one build an application?
> 1. Determine what your application consists of (or what you think  
> it does)
> 2. Identify what code has already been written in this area (and  
> hopefully us
>      squeakmap like app to download/install it)
> 3.  Forevermore remember to import/#include/re/whatever to get the  
> code
>     you want visable to your system
> 4.  Develop the code (glue together the components, try new  
> components, etc)
> 5.  Package it up and deliver it to the customer.

<much snipped>

I'm not sure what this has to do with isolation from the rest of the  
desktop. Let me be clear, I wasn't talking about developing/coding  
issues, I was talking about using the UI.

While I'm coding, I inevitably need to check my e-mail, browse web  
pages, whatever (as research, of course--I'm not just playing  
around). I want to use those (and other tools) on my mac. Having the  
Squeak UI isolated from my OS UI makes rapid shuffling between  
browser windows and native OS tools more difficult than is absolutely  
necessary (at least for the way I typically work).

Also, having a separate UI means I need to learn two UIs. I have to  
constantly shift between the UIs. I have to maintain separate mental  
lists of efficiency tips for each UI. I have to remember which  
keystrokes go with which environment. Again, more work than is  
strictly necessary.

-Rich-

Reply | Threaded
Open this post in threaded view
|

Neural nets was: Re[2]: Info on Smalltalk DSLs or Metaprogramming...

Herbert König
In reply to this post by Rich Warren
Hello Rich,


RW> Here's an example of what I'm talking about. I'm about to implement a
RW> neural net. I'll be experimenting with many different sizes and
RW> topographies. This is an excellent opportunity for a DSL. I could

I'm in the process of implementing neural networks too. I'd like to
share thoughts (here or off list). This would force me to write down
something:-)

I got stalled due to business demands but hope to find time to put
something on SM some time. From this thread I guess that you should
try the squeak binding to the fann library (fast artificial neural
networks).

Didn't try myself but sounds promising.

The most interesting of my own experiments is a self organising
feature map to cluster the information for a subsequent net. Maybe
because I made a graphic trainer, I'm easily impressed by
graphics :-))

Cheers,

Herbert                            mailto:[hidden email]


Reply | Threaded
Open this post in threaded view
|

Re: Neural nets was: Re[2]: Info on Smalltalk DSLs or Metaprogramming...

Rich Warren
Hi,

I don't really know anything about FANN. I was planning on just  
implementing my own (they're not that hard). I'm torn because FANN  
might save time, but it would also make the code less portable (I'd  
need to have the FANN library installed on any computer that planned  
on running the code).

Portability is probably more important than speed at this point, so I  
may just implement my own.

The project I'm working on is actually an aLife simulation. The  
neural nets would only be a small portion (the brains of the agents).  
I like the idea of using them, since the weights can be learned  
genetically (over several generations) as well as modified within a  
single generation (using reinforcement learning).

-Rich-

On Sep 2, 2006, at 9:41 PM, Herbert König wrote:

> Hello Rich,
>
>
> RW> Here's an example of what I'm talking about. I'm about to  
> implement a
> RW> neural net. I'll be experimenting with many different sizes and
> RW> topographies. This is an excellent opportunity for a DSL. I could
>
> I'm in the process of implementing neural networks too. I'd like to
> share thoughts (here or off list). This would force me to write down
> something:-)
>
> I got stalled due to business demands but hope to find time to put
> something on SM some time. From this thread I guess that you should
> try the squeak binding to the fann library (fast artificial neural
> networks).
>
> Didn't try myself but sounds promising.
>
> The most interesting of my own experiments is a self organising
> feature map to cluster the information for a subsequent net. Maybe
> because I made a graphic trainer, I'm easily impressed by
> graphics :-))
>
> Cheers,
>
> Herbert                            mailto:[hidden email]
>
>


Reply | Threaded
Open this post in threaded view
|

Re: Neural nets was: Re[2]: Info on Smalltalk DSLs or Metaprogramming...

Hans N Beck
Hi Rich,

Am 04.09.2006 um 06:55 schrieb Rich Warren:

> Hi,
>
> I don't really know anything about FANN. I was planning on just  
> implementing my own (they're not that hard). I'm torn because FANN  
> might save time, but it would also make the code less portable (I'd  
> need to have the FANN library installed on any computer that  
> planned on running the code).

What's about SNNS (http://www-ra.informatik.uni-tuebingen.de/SNNS/) ?  
It has an C API.....
>
> Portability is probably more important than speed at this point, so  
> I may just implement my own.
>
> The project I'm working on is actually an aLife simulation. The  
> neural nets would only be a small portion (the brains of the  
> agents). I like the idea of using them, since the weights can be  
> learned genetically (over several generations) as well as modified  
> within a single generation (using reinforcement learning).

Could you tell more about this project :-))) ?

Regards


Hans

>
> -Rich-
>
> On Sep 2, 2006, at 9:41 PM, Herbert König wrote:
>
>> Hello Rich,
>>
>>
>> RW> Here's an example of what I'm talking about. I'm about to  
>> implement a
>> RW> neural net. I'll be experimenting with many different sizes and
>> RW> topographies. This is an excellent opportunity for a DSL. I could
>>
>> I'm in the process of implementing neural networks too. I'd like to
>> share thoughts (here or off list). This would force me to write down
>> something:-)
>>
>> I got stalled due to business demands but hope to find time to put
>> something on SM some time. From this thread I guess that you should
>> try the squeak binding to the fann library (fast artificial neural
>> networks).
>>
>> Didn't try myself but sounds promising.
>>
>> The most interesting of my own experiments is a self organising
>> feature map to cluster the information for a subsequent net. Maybe
>> because I made a graphic trainer, I'm easily impressed by
>> graphics :-))
>>
>> Cheers,
>>
>> Herbert                            mailto:[hidden email]
>>
>>
>
>


Reply | Threaded
Open this post in threaded view
|

Re: Thoughts from an outsider

J J-6
In reply to this post by Rich Warren



>From: Rich Warren <[hidden email]>
>Reply-To: The general-purpose Squeak developers
>list<[hidden email]>
>To: The general-purpose Squeak developers
>list<[hidden email]>
>Subject: Re: Thoughts from an outsider
>Date: Sat, 2 Sep 2006 21:25:18 -1000
>
>I'm not sure what this has to do with isolation from the rest of the  
>desktop. Let me be clear, I wasn't talking about developing/coding  issues,
>I was talking about using the UI.
>
>While I'm coding, I inevitably need to check my e-mail, browse web  pages,
>whatever (as research, of course--I'm not just playing  around). I want to
>use those (and other tools) on my mac. Having the  Squeak UI isolated from
>my OS UI makes rapid shuffling between  browser windows and native OS tools
>more difficult than is absolutely  necessary (at least for the way I
>typically work).
>
>Also, having a separate UI means I need to learn two UIs. I have to  
>constantly shift between the UIs. I have to maintain separate mental  lists
>of efficiency tips for each UI. I have to remember which  keystrokes go
>with which environment. Again, more work than is  strictly necessary.
>
>-Rich-
>

Well what I meant was working in a smalltalk environment is like
developing your next app from within the app you are building.
So I think you would feel the same isolation if you could develop
from inside of your web browser for example.

But as far as wishing the tools that exist in the image behaved like
your normal GUI, can something be done with themes?  Is anyone
looking into making themes or something like that be set up in such
a way that I could set them to "Mac" and now my image behaves
like a mac or "WinXP" and now it behaves like XP?



Reply | Threaded
Open this post in threaded view
|

Re[2]: Neural nets was: Re[2]: Info on Smalltalk DSLs or Metaprogramming...

Herbert König
In reply to this post by Rich Warren
Hello Rich,


RW> I don't really know anything about FANN. I was planning on just  
RW> implementing my own (they're not that hard). I'm torn because FANN

no they aren't, so I ended up doing my own too.

RW> Portability is probably more important than speed at this point, so I
RW> may just implement my own.

There is a Squeak implementation of a two layered perceptron with
backpropagation learning by Luciano Notarfrancesco, I decided against
it for it was too slow. Much better Smalltalk and OO though.

I needed speed in computing the outputs and FloatArray is fast in #*
and #sum.

RW> The project I'm working on is actually an aLife simulation. The

I'll take a look, when I'm online again.

RW> neural nets would only be a small portion (the brains of the agents).
RW> I like the idea of using them, since the weights can be learned  
RW> genetically (over several generations) as well as modified within a
RW> single generation (using reinforcement learning).

This (reinforcement learning) is said to be slow. What number of
inputs and how many neurons would such a brain have? How many agents?

With 500 epochs of 400 samples training of a single Perceptron of 64
hidden and 16 output neurons took over an hour on a 1.8GHz Pentium M.
It had 140 inputs.

Do you have any pointers on how to use genetic algorithms on neural
nets? More practical, I'm an EE not a CS person :-)



Cheers,

Herbert                            mailto:[hidden email]







Reply | Threaded
Open this post in threaded view
|

Re: literate programming examples (Re: Thoughts from an outsider)

Ramon Leon-4
In reply to this post by Simon Michael
> 2. ruby. http://www.ruby-doc.org/core and http://www.ruby-doc.org/stdlib 
> present current, accessible API docs and also higher level docs with
> very little fuss. These are generated from extensive code comments,
> READMEs, etc. (Many other languages do this but less effectively.)

I can't help but point out how much Ruby's doc's are just imitations of
a Smalltalk class browser.  How exactly is this better than class and
method comments in Smalltalk directly?  How is dandelion better than a
real browser either?  If you can generate the docs from the code, of
what additional value is the doc?


Reply | Threaded
Open this post in threaded view
|

Re: Info on Smalltalk DSLs or Metaprogramming...

Ramon Leon-4
In reply to this post by Rich Warren
> As an example, Body can take a variable number of Tag objects. Java  
> methods can be defined to accept variable numbers of parameters, so  
> this isn't a problem. Tag objects can also be nested inside other  tags
> (allowing us to express complete html hierarchies).  Alternatively, all
> tags (including body) could accept any objects-- and internally it calls
> toString() on the object. This would let you  pass in a mixture of Tag
> objects and literal strings.

True, that would seem to work, but only with the addition saying all
setters return "this", so properties of those objects can be set in
every possible combination, inline, equivalent to Smalltalk's ;
operator.  I've done this in the past, it's ugly, and non idiomatic, and
confuses other programmers.  It works surprisingly well, once accustomed
to it, but feels like you're working very much against the language.  I
embedded SQL into csharp using this technique, mostly for the experience
of doing so.

> Given that, I don't see any difference between my nested calls in  Java
> and your nested calls in Smalltalk.

I do, the Smalltalk ones are closures that pick up variables from the
surrounding environment automatically, the Java one would require
manually passing all such variables, or the introduction of some ugly
inner classes and all the relevant hacks to make them work.

> While I fully admit that it's easier and cleaner to do bottom-up  
> programming in dynamic languages, it is still possible (to some  degree)
> to use these techniques in any language.

Agree, but it's the difficulty in doing so, that separates languages
that you'd want to build a DSL in from those you wouldn't.

> Any time you create a function, class or whatever, you are bringing  the
> language closer to the problem domain. There's no distinguishable  line
> between bottom-up programming and simply creating well- engineered
> classes and functions. Anyone can look at both ends of the  spectrum and
> see that they look different--but that ignores how  quickly things blur
> in the middle.

I think there is, I don't think it's difficult to see DSL's as a style,
and it's easy to see that style in other people's code.  You either
write in the language, or on it.  While it's possible to do a mixture of
both, I think most people pick one or the other.  I see it as similar to
the API vs framework thing, people tend to like one or the other.

> On the other hand, there is a sharp line between interpreted DSLs and  
> regular programming. That's one of the reasons I prefer to use the  term
> DSL strictly for interpreted DSLs. The term (when used that way)  has a
> clear meaning.
>
> -Rich-

I fail to see that line, whether code is interpreted or not, imho is
orthogonal to the issue of whether or not that code is a DSL.  I find
your linking of these concepts, odd, maybe it's me, but they simply
aren't related.


Reply | Threaded
Open this post in threaded view
|

Re: Thoughts from an outsider

Ramon Leon-4
In reply to this post by J J-6
 > It isn't the "Smalltalk style".  In the early days of open source taking

I disagree, I think it is the Smalltalk style, maybe I'm wrong, but
that's my opinion.

 > off on
 > the internet everyone thought their code was "self documenting".  And
that
 > includes C and Perl programmers!
 >
 > You take what I said too personally.  I'm not calling *you*, or Luckas
 > or any
 > of the great developers here liars.  I am attacking this ridiculous
 > concept of
 > "self documenting code".  It became popular with the free software crowd

That you are attacking anything, is what bothered me.  You've used
strong insulting language from the start, not against me personally, I
take none of this personally, but against the self documenting style.
You may not prefer this style, but many do, as we've developed a
mistrust of documents not directly linked to code.

 > I did use strong language against the concept, but not as strong as some
 > other
 > people much more important then myself in much more public forums.  I

You place great value on documents, OK, great, but not everyone does, no
need to use such strong language.  You can approach the subject of more
documentation without being insulting to those who disagree with you.
Rather than arguing "for" documentation, you seem to be arguing
"against" less documentation, rather like a creationist arguing
"against" evolution rather than "for" creationism.

 > figured
 > some people would take it personal and get offended (I actually thought
 > a lot
 > more would) and I wouldn't want that, but sometimes it takes strong
wording
 > to make someone notice that something is wrong.
 >
 > Anyway, sorry for offending you.  I am very greatful for all the work
 > you and
 > everyone else has done.

Again, I'm not offended, my skin is much thicker than this, I'm simply
disagreeing with how you approached the subject.



Reply | Threaded
Open this post in threaded view
|

Re: literate programming examples (Re: Thoughts from an outsider)

timrowledge
In reply to this post by Ramon Leon-4

On 4-Sep-06, at 7:06 PM, Ramon Leon wrote:
> If you can generate the docs from the code, of what additional  
> value is the doc?

Modulo the quality of the comments in the code that are being used,  
it's the presentation that can make the difference. A form of browser  
that can gather linked comments from methods and classes and present  
them in a neatly intelligible form is surely an improvement over  
scattered snippets?

But don't forget that crucial first clause above about the quality of  
the  source material.

tim
--
tim Rowledge; [hidden email]; http://www.rowledge.org/tim
Useful random insult:- Always loses battles of wits because he's  
unarmed.



Reply | Threaded
Open this post in threaded view
|

Re: literate programming examples (Re: Thoughts from an outsider)

Ramon Leon-4
> Modulo the quality of the comments in the code that are being used,  
> it's the presentation that can make the difference. A form of browser  
> that can gather linked comments from methods and classes and present  
> them in a neatly intelligible form is surely an improvement over  
> scattered snippets?

Is not the standard Smalltalk browser such a browser?  How would some
other browser, using the same data, be able to somehow present the
information better than the Smalltalk browser?  If such a great feature
existed, wouldn't we simply add it to the existing Smalltalk browser?

>
> But don't forget that crucial first clause above about the quality of  
> the  source material.
>
> tim

Agreed, well commented code, when and where a comment adds value to what
the code already says.  Often there is value in "no comment".  As
someone earlier said, no one reads a 1000 page document. ;)


Reply | Threaded
Open this post in threaded view
|

Re: Thoughts from an outsider

Rich Warren
In reply to this post by J J-6

On Sep 4, 2006, at 12:13 AM, J J wrote:

>
>
>
>> From: Rich Warren <[hidden email]>
>> Reply-To: The general-purpose Squeak developers list<squeak-
>> [hidden email]>
>> To: The general-purpose Squeak developers list<squeak-
>> [hidden email]>
>> Subject: Re: Thoughts from an outsider
>> Date: Sat, 2 Sep 2006 21:25:18 -1000
>>
>> I'm not sure what this has to do with isolation from the rest of  
>> the  desktop. Let me be clear, I wasn't talking about developing/
>> coding  issues, I was talking about using the UI.
>>
>> While I'm coding, I inevitably need to check my e-mail, browse  
>> web  pages, whatever (as research, of course--I'm not just  
>> playing  around). I want to use those (and other tools) on my mac.  
>> Having the  Squeak UI isolated from my OS UI makes rapid shuffling  
>> between  browser windows and native OS tools more difficult than  
>> is absolutely  necessary (at least for the way I typically work).
>>
>> Also, having a separate UI means I need to learn two UIs. I have  
>> to  constantly shift between the UIs. I have to maintain separate  
>> mental  lists of efficiency tips for each UI. I have to remember  
>> which  keystrokes go with which environment. Again, more work than  
>> is  strictly necessary.
>>
>> -Rich-
>>
>
> Well what I meant was working in a smalltalk environment is like
> developing your next app from within the app you are building.
> So I think you would feel the same isolation if you could develop
> from inside of your web browser for example.

No. My web browser is integrated into my desktop environment, so I  
can rapidly switch between programs. This lets me leverage any tool  
on my system in a tightly integrated way.  I actually have done some  
seaside development from inside my web browser, and I didn't feel the  
same sense of isolation from the desktop (though I have a certain  
amount of isolation from the squeak environment in those cases).

I really don't see how development styles relates to the issue of  
feeling isolated from the OS. They seem like completely different  
issues in my mind. One of the things I love about Smalltalk is the  
way applications are built. When I do strictly Mac work, I'll often  
use FScript as a support tool, since it helps me capture a similar  
feeling.

Or, to put it another way, when I develop in VisualWorks (on my old  
mac, it still doesn't run on my new mac, which makes me sad), I don't  
feel as isolated from my OS. A little bit, since the UI doesn't  
function in a 100% native manner.  In Ambri Smalltalk, I don't feel  
isolated at all. In all three cases (Squeak, Visualworks, and Ambri),  
I am using the same style and techniques to develop the code. Squeak  
is the only one which makes me feel isolated from my desktop .

What I have been trying to describe is strictly a Squeak UI issue. It  
has nothing to do with Smalltalk in general.

Just to bring this full circle. Now that I've been using Squeak for a  
while, I've grown used to it's UI. I find that using QuickSilver, I  
can still pop out of a full-screen Squeak session with just a few  
keystrokes, check the email message that relates to the problem at  
hand, do a little web research on the topic, then slip right back  
into Squeak. But this involved bending my normal workflow around  
Squeak (where, ideally, Squeak would just slip transparently into my  
regular workflow).  Even if Visualworks was running on intel macs, I  
would probably keep coding in Squeak. However, the UI was a real  
barrier to entry, and it can drive off new users (which was my  
original point).

-Rich-

Reply | Threaded
Open this post in threaded view
|

Re: Info on Smalltalk DSLs or Metaprogramming...

Rich Warren
In reply to this post by Ramon Leon-4

On Sep 4, 2006, at 4:28 PM, Ramon Leon wrote:

>> As an example, Body can take a variable number of Tag objects.  
>> Java  methods can be defined to accept variable numbers of  
>> parameters, so  this isn't a problem. Tag objects can also be  
>> nested inside other  tags (allowing us to express complete html  
>> hierarchies).  Alternatively, all tags (including body) could  
>> accept any objects-- and internally it calls toString() on the  
>> object. This would let you  pass in a mixture of Tag objects and  
>> literal strings.
>
> True, that would seem to work, but only with the addition saying  
> all setters return "this", so properties of those objects can be  
> set in every possible combination, inline, equivalent to  
> Smalltalk's ; operator.  I've done this in the past, it's ugly, and  
> non idiomatic, and confuses other programmers.  It works  
> surprisingly well, once accustomed to it, but feels like you're  
> working very much against the language.  I embedded SQL into csharp  
> using this technique, mostly for the experience of doing so.t as  
> similar to the API vs framework thing, people tend to like one or  
> the other.

Um, it doesn't need to be that difficult. Java basically treats  
variable length arguments as a collection. You could simply iterate  
over the arguments and add each one (in order) to the tag object.

The original example I gave didn't use any setters--not in the  
conventional sense. For example, body() could simply call toString()  
on anything passed in, concatenating the string from multiple  
arguments. It could then append "<body>" to the front and "</body>"  
to the end. Then it would append the whole string to the current  
document.

Alternatively, each tag could keep its contents as a list of subtags  
and raw string, and everything only get converted to strings (with  
the relevant tags added) at the end.

It would still be uglier than Smalltalk, but it could be a very  
simple solution. Of course, I'd still prefer to do this in either  
Smalltalk, Ruby or Lisp.

>
>> On the other hand, there is a sharp line between interpreted DSLs  
>> and  regular programming. That's one of the reasons I prefer to  
>> use the  term DSL strictly for interpreted DSLs. The term (when  
>> used that way)  has a clear meaning.
>> -Rich-
>
> I fail to see that line, whether code is interpreted or not, imho  
> is orthogonal to the issue of whether or not that code is a DSL.  I  
> find your linking of these concepts, odd, maybe it's me, but they  
> simply aren't related.
>
>

OK, clearly you think the issue of interpreted/non-interpreted is  
orthogonal to the issue of
DSL/non-DSL. I don't think we're going to agree on this, so let's set  
it aside for now. For the following discussion, assume everything is  
a DSL unless explicitly stated otherwise.

In other words, let's discuss the difference between bottom-up  
embedded DSLs and interpreted embedded DSLs.

For me all Bottom-up DSL and regular, non-DSL code  lie on a  
continuum. You can clearly point to either end and say "This is a  
DLS" or "This isn't", but most code lies somewhere in the middle.  
And, the middle gets muddy.

There's a quote I've seen many times (with slightly different  
wording). "Any sufficiently complex project becomes a DSL".  This is  
exactly the type of blurring I'm referring to, and it results in a  
general loss of meaning. If everything becomes a DSL, then the term  
DSL has no meaning.

On the other hand, interpreted DSL and non-interpreted code is not a  
continuum. There is a clear line between the two cases. Something is  
either designed to interpret external strings, or it isn't. There's  
no ambiguity.

Secondly, interpreted DSLs require different techniques than bottom-
up DSLs. As far as I know, C, C++ and Java cannot natively evaluate  
arbitrary strings the way Ruby and Smalltalk can. In those languages,  
you cannot even write code to interpret external strings without  
building a parser of some sort (thus creating an external DSL). Even  
in Smalltalk and Ruby, evaluating strings requires (at minimum) an  
additional method call. More importantly, you have to decide what  
context you are evaluating the string in.

There are also other decisions that need to be made when building an  
interpreting DS that don't have to be made (or cannot be made) when  
simply building a bottom-up DSL. For example, how do you handle EOL  
symbols? Most Ruby DSLs interpret a line at a time, treating each  
line as a separate command. On the other hand, you could interpret  
the whole text as a chunk and treat EOLs just like any other white  
space.

As you can see, even if you're just repurposing the host language,  
building an interpreting DSL  requires an additional layer of tricks,  
tips and techniques that are not required for bottom-up DSLs.

Finally, there's the underlying reason behind why you're using the  
technique. Bottom-up DSLs are simply a tool for developers.  
Interpreting DSLS can also simplify the development task for  
developers; however, they also give end-users tools to change the  
application's behavior after it has been deployed. So, interpreted  
DSLs can solve a much broader range of problems than bottom-up DSLs.

All of this (unambiguous meaning, clearly different set of  
techniques, and broader range of intentions) are reasons why I prefer  
to limit the term DSL to interpreted DSLs. To my mind, there seems to  
be obvious ambiguity between what is a bottom-up DSL and what isn't  
(as exemplified by the "every significantly complex..." quote).  
Bottom-up DSLs don't require any specialized techniques--you're  
simply creating useful methods, classes and operators. And Bottom-up  
DSLS are simply another type of source code--they don't add any  
additional value outside development (here I'm including maintenance  
and testing--basically everything that's done in-house).

Bottom line is, my definition would make DSLs more obviously  
different from other, more mundane programming techniques.

-Rich-


Reply | Threaded
Open this post in threaded view
|

Re: Thoughts from an outsider

J J-6
In reply to this post by Rich Warren
>From: Rich Warren <[hidden email]>
>Reply-To: The general-purpose Squeak developers
>list<[hidden email]>
>To: The general-purpose Squeak developers
>list<[hidden email]>
>Subject: Re: Thoughts from an outsider
>Date: Mon, 4 Sep 2006 19:44:44 -1000
>
>Just to bring this full circle. Now that I've been using Squeak for a  
>while, I've grown used to it's UI. I find that using QuickSilver, I  can
>still pop out of a full-screen Squeak session with just a few  keystrokes,
>check the email message that relates to the problem at  hand, do a little
>web research on the topic, then slip right back  into Squeak. But this
>involved bending my normal workflow around  Squeak (where, ideally, Squeak
>would just slip transparently into my  regular workflow).  Even if
>Visualworks was running on intel macs, I  would probably keep coding in
>Squeak. However, the UI was a real  barrier to entry, and it can drive off
>new users (which was my  original point).
>
>-Rich-
>

Well then, I reassert my previous question:  Is it possible for someone to
do something with themes?  Is there a way to have "WinXP" theme, "Mac"
theme,
"Smalltalk-80" and "Squeak" themes that change everything to behave how one
would expect in those environments?  And maybe by default the theme is
selected
based on the platform?



Reply | Threaded
Open this post in threaded view
|

Re: Thoughts from an outsider

J J-6
In reply to this post by Ramon Leon-4
>From: Ramon Leon <[hidden email]>
>Reply-To: The general-purpose Squeak developers
>list<[hidden email]>
>To: The general-purpose Squeak developers
>list<[hidden email]>
>Subject: Re: Thoughts from an outsider
>Date: Mon, 04 Sep 2006 19:40:15 -0700
>
>That you are attacking anything, is what bothered me.  You've used strong
>insulting language from the start, not against me personally, I take none
>of this personally, but against the self documenting style. You may not
>prefer this style, but many do, as we've developed a mistrust of documents
>not directly linked to code.
>

This cancerous, destructive idea of "self documenting code" is a big barrior
to people
new to the language, and I would be willing to bet that is the main reason
it isn't taking
off faster.

I can tell you I have done various projects in various languages to get a
feel for it, and
never before have I felt like I could do so much so fast, and yet not been
able to do
very much at all.  Why?  Because the state of documentation right now is
almost
impenetrable.  Anything I do, I feel like it is probably already there in
some system
that I don't know about and have no way to find out about.

The main documentation right now, as far as I can tell, seems to be the
mailing list.

"self documenting code" as a source of documentation is simply not valid.  I
am pretty
surprised that such an obvious statement has so much resistance.

If source code is the documentation then the bar for becomming productive in
the
language is the amount of time it takes you to absorb the entire Smalltalk
class heirarchy
from the browser.  And if you download a new system, then you have to read
through
every line of source code from that system.  And that isn't enough, simply
reading the
code isn't enough.  You have to wrap your brain around *why* it does what it
does.
Otherwise any change you do is probably not going to be helpful.

As an example, I downloaded 3.8 from the web site and started trying to run
a cool 3d
example I saw on one of the tutorials.  Everything worked fine until I tried
to bring up
a viewer for my fish so I can make it move and stuff.  It brought up a
debugger because
the "costume" message wasn't understood.

I took your advice and went all around trying to understand the code.  In
the end it looks
like maybe the "WonderlandActor" class might have been a subclass of Morph
at some point
and isn't anymore.  Maybe it changed to a composite patern.  So I tried to
see if there was
a reference to something I could forward the message too.  But I didn't see
any morph's in
his instance variables, so at this point what?

All I can do is post a message on a mailing list.  I don't know who changed
what or why, I don't
know how it was suppost to work and I have no clue where I would look for
some kind of
documentation.

I spent at least an hour tracking through this and came up empty handed.  
That is bad
enough for playing around, but in business that would mean not using what
ever
component it was and writing our own from scratch.  And if we have to write
everything
from scrath then we are not getting the efficiencey from the language.

>You place great value on documents, OK, great, but not everyone does, no
>need to use such strong language.  You can approach the subject of more
>documentation without being insulting to those who disagree with you.
>Rather than arguing "for" documentation, you seem to be arguing "against"
>less documentation, rather like a creationist arguing "against" evolution
>rather than "for" creationism.
>

The arguments "for" documentation are obvious and I (and others) have stated
them.

Smalltalk has some good momentum right now because of what various folks
have done with
Seaside and the subsystems based on it (Pier and co.).  But momentum doesn't
mean anything
unless you can sucessfully turn it into something else before you lose it.

All the other languages will steal everything you have.  Anything good,
revolutionary, etc. will
be recreated in those languages and then they don't feel the need for
smalltalk anymore.  It
happened with Steve Jobs in the beginning, it happened with Java when it
started and it will
happen with Seaside eventually.

And I am not just throwing out insults, I intend to help fix the problem.  
But first the problem
must be identified and acknoledged (no one will work to fix something they
feel is not broken),
then possible solutions have to be explored.



Reply | Threaded
Open this post in threaded view
|

Re: literate programming examples (Re: Thoughts from an outsider)

J J-6
In reply to this post by Ramon Leon-4
What I saw from dandelion that looked interesting was the ability to export
directly to a UML tool.  Then you would have the ability to see the links
between
the classes visually.  At least that's how it looked to me.


>From: Ramon Leon <[hidden email]>
>Reply-To: The general-purpose Squeak developers
>list<[hidden email]>
>To: The general-purpose Squeak developers
>list<[hidden email]>
>Subject: Re: literate programming examples (Re: Thoughts from an outsider)
>Date: Mon, 04 Sep 2006 19:06:24 -0700
>
>>2. ruby. http://www.ruby-doc.org/core and http://www.ruby-doc.org/stdlib 
>>present current, accessible API docs and also higher level docs with very
>>little fuss. These are generated from extensive code comments, READMEs,
>>etc. (Many other languages do this but less effectively.)
>
>I can't help but point out how much Ruby's doc's are just imitations of a
>Smalltalk class browser.  How exactly is this better than class and method
>comments in Smalltalk directly?  How is dandelion better than a real
>browser either?  If you can generate the docs from the code, of what
>additional value is the doc?
>
>



1 ... 45678910