Workspace oder Image?

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

Workspace oder Image?

R. Baumann
Anlässlich des Euler-Projekts stellt sich mir die Frage: "Was kommt (auf Dauer) ins Squeak-Image, wofür reicht der Workspace?"

Meiner Meinung nach sollten häufig gebrauchte Werkzeuge (Prädikate wie istPalindrom, istPandigital usw. oder Funktionen wie teilersumme, primfaktoren etc.) ins Image, aber nicht die Lösungen einzelner Euler-Probleme. Diese lassen sich bequem im Workspace entwickeln und später in einer Textdatei aufbewahren, das Image sollte damit meines Erachtens nicht belastet werden. (Es ist sowieso schon so unaufgeräumt.)

Was meinen die Gelehrten dazu?

R. Baumann
Reply | Threaded
Open this post in threaded view
|

Re: Workspace oder Image?

Stefan Schmiedl
On Tue, 16 Nov 2010 10:08:29 -0800 (PST)
"R. Baumann" <[hidden email]> wrote:

> Anlässlich des Euler-Projekts stellt sich mir die Frage: "Was kommt (auf
> Dauer) ins Squeak-Image, wofür reicht der Workspace?"
>
> Euler-Probleme.
>
> Was meinen die Gelehrten dazu?

Ich bin kein Gelehrter, habe aber trotzdem eine Meinung.

Was im Image ist, kann ich finden.

Und es wäre doch ganz schön, wenn man

        Euler17 solve

oder

        Euler42 browse

sagen könnte, oder nicht?

s.
Reply | Threaded
Open this post in threaded view
|

Re: Workspace oder Image?

R. Baumann
Ja, aber die verschiedenen Teile der Lösung (Prozeduren, Methoden) wären auf unterschiedliche Klassen (z. B. Integer, String) verteilt. Wo im System würde man eigentlich die Lösungen (Algorithmen) der verschiedenen Probleme des Euler-Projekts unterbringen?
R. B.
Reply | Threaded
Open this post in threaded view
|

Re: Workspace oder Image?

Stefan Schmiedl
On Tue, 16 Nov 2010 12:41:31 -0800 (PST)
"R. Baumann" <[hidden email]> wrote:

>
> Ja, aber die verschiedenen Teile der Lösung (Prozeduren, Methoden) wären auf
> unterschiedliche Klassen (z. B. Integer, String) verteilt. Wo im System
> würde man eigentlich die Lösungen (Algorithmen) der verschiedenen Probleme
> des Euler-Projekts unterbringen?
> R. B.

Gibt's nicht sowas wie Namespaces oder Packages, womit man solche Sachen
organisieren kann? Dann könnte man ja ein Package je Problem anlegen,
in dem die spezifischen Algorithmen zu finden sind, und ggf. auf ein
"EulerBase" für allgemein Interessantes verweisen.

s.
Reply | Threaded
Open this post in threaded view
|

Re: Workspace oder Image?

R. Baumann
Das ist sicher ein guter Hinweis. In Squeak gibt es sogenannte Kategorien, und zwar Klassenkategorien und Methodenkategorien. Man könnte, diesem Hinweis folgend, eine Klassenkategorie "Eulerprojekt" anlegen und darin eine Klasse "Eulerlösungen". In dieser Klasse zu jeder Aufgabe, etwa zu Aufgabe 74, eine Methodenkategorie "Euler-074".

Zu Aufgabe 74 gibt es drei Methoden, nämlich "faksumme", "kettenlänge" sowie die Hauptmethode, welche die gesuchte Lösungszahl errechnet. Aber die beiden ersteren müssen in der Klasse Integer implementiert werden, weil sie auf ganzen Zahlen operieren, und wie mit der dritten zu verfahren ist, weiß ich überhaupt nicht.

Vielleicht kann einer der Squeak-Experten weiterhelfen.

R. B.
Reply | Threaded
Open this post in threaded view
|

Re: Workspace oder Image?

Stefan Schmiedl
On Wed, 17 Nov 2010 01:46:58 -0800 (PST)
"R. Baumann" <[hidden email]> wrote:

>
> Das ist sicher ein guter Hinweis. In Squeak gibt es sogenannte Kategorien,
> und zwar Klassenkategorien und Methodenkategorien. Man könnte, diesem
> Hinweis folgend, eine Klassenkategorie "Eulerprojekt" anlegen und darin eine
> Klasse "Eulerlösungen". In dieser Klasse zu jeder Aufgabe, etwa zu Aufgabe
> 74, eine Methodenkategorie "Euler-074".
>
> Zu Aufgabe 74 gibt es drei Methoden, nämlich "faksumme", "kettenlänge" sowie
> die Hauptmethode, welche die gesuchte Lösungszahl errechnet. Aber die beiden
> ersteren müssen in der Klasse Integer implementiert werden, weil sie auf
> ganzen Zahlen operieren, und wie mit der dritten zu verfahren ist, weiß ich
> überhaupt nicht.

Du fragst einen Integer nach seiner faksumme und seiner kettenlänge.
Wen fragst du nach der Lösung der Euleraufgabe?

Das _könnte_ je nach Aufgabe ein Integer sein, aber dann wird es in der
Tat schwierig, den Überblick zu behalten. Deswegen mein ursprünglicher
Vorschlag, eine Klasse je Aufgabe anzulegen. Dort kannst du dann
evtl. "teure" Ergebnisse zwischenspeichern und so Verwaltungskram
erledigen.

        Aufgabe74 new
                faksumme: 42;
                kettenlänge: 56;
                lösung.

und die Methoden würden auf die "richtigen" Implementationen verweisen.

fakSumme: anInteger
        ^anInteger fakSumme

Auf die Art hast du einen einheitlichen Zugang für alle Aufgaben und
findest mit ein paar Klicks die Arbeitstiere.

s.
Reply | Threaded
Open this post in threaded view
|

Re: Workspace oder Image?

Enrico Schwass-2
In reply to this post by R. Baumann
"R. Baumann" <[hidden email]> writes:


Hallo Rüdeger,

ich habe eine Kategorie Enno-Euler. In dieser Kategorie habe ich zu
jedem Problem eine Klasse, die ich ProblemXY nenne. Zu jeder Klasse habe
ich dann ein initialize-release Protokoll in dem sich eine Methode
initialize befindet, die nur ^self solveA bzw. eine der anderen
solve-Varianten aufruft. Die solve- Methoden könnte man unter arithmetic
einsortieren, muss man aber nicht

So kann ich Problem1 new mit Alt-p aufrufen und direkt die Lösung sehen

Hilfsmethoden, die immer wieder benötigt werden kann man zu Integer oder
dergleichen hinzufügen. Das ist durchaus sinnvoll. isPalindrome, kann
man sogar in Integer UND String unterbringen.

Bis dann
Enno

PS: Monticello kann auch Änderungen an Standardklassen verwalten. Mal unter
dem Begriff extend existing classes in diesem PDF gucken.

https://gforge.inria.fr/frs/download.php/27018/Monticello.pdf

> Das ist sicher ein guter Hinweis. In Squeak gibt es sogenannte Kategorien,
> und zwar Klassenkategorien und Methodenkategorien. Man könnte, diesem
> Hinweis folgend, eine Klassenkategorie "Eulerprojekt" anlegen und darin eine
> Klasse "Eulerlösungen". In dieser Klasse zu jeder Aufgabe, etwa zu Aufgabe
> 74, eine Methodenkategorie "Euler-074".
>
> Zu Aufgabe 74 gibt es drei Methoden, nämlich "faksumme", "kettenlänge" sowie
> die Hauptmethode, welche die gesuchte Lösungszahl errechnet. Aber die beiden
> ersteren müssen in der Klasse Integer implementiert werden, weil sie auf
> ganzen Zahlen operieren, und wie mit der dritten zu verfahren ist, weiß ich
> überhaupt nicht.
>
> Vielleicht kann einer der Squeak-Experten weiterhelfen.
>
> R. B.