Zum Inhalt springen

Strongtalk

aus Wikipedia, der freien Enzyklopädie
{{#if: Strongtalk | Strongtalk | {{#invoke:WLink|getArticleBase}} }}

{{#if: |

colspan="2" class="notheme" style="text-align:center; background:#Vorlage:Standardfarbe; color:#202122;" | {{{Logo}}} |
 {{#if: {{#invoke:Wikidata|claim|P154}} | 
[[Datei:{{#invoke:Wikidata|claim|P154}}|150px]]
 }}

}}{{#if: |

{{#if: Objektorientierte Sprache |
Objektorientierte Sprache }}|

}}

Basisdaten

{{#if: |

Hauptentwickler
 {{#if: {{#invoke:Wikidata|claim|P126}} | 
Maintainer claim|P126|parameter=link|references=ja|list=, }}
 }}

}}{{#if: Sun und Andere |

Entwickler
 {{#if: {{#invoke:Wikidata|claim|P178}} | 
Entwickler claim|P178|parameter=link|references=ja|list=, }}
 }}

}}{{#if: |

Erscheinungsjahr
 {{#if: {{#invoke:Wikidata|claim|P577}} | 
Erscheinungsjahr claim|P577|references=ja|list=, }} |
   {{#if: {{#invoke:Wikidata|claim|P571}} | 
Erscheinungsjahr claim|P571|references=ja|list=, }}
   }}
 }}

}}{{#ifeq: 1.1.2 / 2.0 | KEINE_ANGABE || {{#if: 1.1.2 / 2.0 |

Aktuelle Version
({{#if: | Vorlage:Datum – die Form mit drei unbenannten Parametern oder anderen einzelnen Zeiteinheiten ist veraltet und wird nicht mehr unterstützt. Bitte gib das Datum einfach im Klartext an.
format 9. August 2006 | {{#timefl:now|date}}}} {{{2}}} | T._Monat JJJJ}} lang= {{#switch: -|=de #default=de-AT
            }}
   }}

}}) }}

 {{#if: {{#invoke:Wikidata|claim|P348|P548|!Q3295609,Q51930650,Q2122918,Q21727724,Q1072356,Q6736813}} | 
Aktuelle Version claim|P348|P548|!Q3295609,Q51930650,Q2122918,Q21727724,Q1072356,Q6736813|references=ja}} {{#if: {{#invoke:Wikidata|claim|P348|P548|!Q3295609,Q51930650,Q2122918,Q21727724,Q1072356,Q6736813|qualifier=P577}} |
({{#invoke:Wikidata|claim|P348|P548|!Q3295609,Q51930650,Q2122918,Q21727724,Q1072356,Q6736813|qualifier=P577}}) }}}}}}

}}{{#ifeq: {{{AktuelleVorabVersion}}} | KEINE_ANGABE || {{#if: |

Aktuelle Vorabversion
({{#if: | Vorlage:Datum – die Form mit drei unbenannten Parametern oder anderen einzelnen Zeiteinheiten ist veraltet und wird nicht mehr unterstützt. Bitte gib das Datum einfach im Klartext an.
format {{{AktuelleVorabVersionFreigabeDatum}}} | {{#timefl:now|date}}}} {{{2}}} | T._Monat JJJJ}} lang= {{#switch: -|=de #default=de-AT
            }}
   }}

}}) }}

 {{#if: {{#invoke:Wikidata|claim|P348|P548|Q1072356,Q51930650,Q3295609,Q2122918,Q21727724}} | 
Aktuelle Vorabversion claim|P348|P548|Q1072356,Q51930650,Q3295609,Q2122918,Q21727724|references=ja}} {{#if: {{#invoke:Wikidata|claim|P348|P548|Q1072356,Q51930650,Q3295609,Q2122918,Q21727724|qualifier=P577}} |
({{#invoke:Wikidata|claim|P348|P548|Q1072356,Q51930650,Q3295609,Q2122918,Q21727724|qualifier=P577}}) }}}}}}

}}{{#if: |

Ausführungsumgebung
 {{#if: Windows | 
Betriebssystem Windows |
   {{#if: {{#invoke:Wikidata|claim|P306}} | 
Betriebssystem claim|P306|parameter=link|references=ja|list=, }}
   }}
 }}

}}{{#if: |

Programmier­sprache
 {{#if: {{#invoke:Wikidata|claim|P277}} | 
Programmier­sprache claim|P277|parameter=link|references=ja|list=, }}
 }}

}}{{#if: objektorientierte Programmiersprache |

Kategorie objektorientierte Programmiersprache

}}{{#if: BSD-ähnlich |

Lizenz
 {{#if: {{#invoke:Wikidata|claim|P275}} | 
Lizenz claim|P275|parameter=link|references=ja|list=, }}
 }}

}}{{#if: nein |

deutschsprachig faculty|nein}} | ja | nein }}

}}{{#if: |

Sonstiges {{{Sonstiges}}}Vorlage:Infobox Software/Wartung/Sonstiges

}}{{#if: strongtalk.org |

strongtalk.org |
 {{#if: {{#invoke:Wikidata|claim|P856|notdeprecated=1}} | 
{{#invoke: WLink | formatURL | {{#invoke:Wikidata|claim|P856|parameter=link|notdeprecated=1}}}}
 }}

}}{{#if: |

Dateien [[c:Category:Created with {{{Dateien}}}|{{{Dateien}}}]]

}}

Strongtalk ist eine Variante der Programmiersprache Smalltalk, die über ein optional statisches Typsystem verfügt. Auch die Sprache Strongtalk ist, vergleichbar mit Smalltalk, in ein vollständiges Programmier-Universum eingebettet. Zu diesem gehören der obligatorische Klassenbrowser, der Workspace, ein Mixins-Browser und natürlich ein Debugger. Dieses so genannte Programmier-Universum ist vergleichbar mit modernen Entwicklungsumgebungen (IDE), ist aber dennoch weitaus spezifischer, da Strongtalk nicht auf Dateiebene, sondern auf Basis eines so genannten Images arbeitet. Eine moderne IDE basiert hingegen in den meisten Fällen auf Objekten, die auf Dateisystem-Ebene abgelegt sind.

Strongtalk wurde von Urs Hölzle, einem der ursprünglichen Entwickler der Programmiersprache Self, zusammen mit anderen bekannten Experten auf diesem Gebiet wie unter anderem Lars Bak, Gilad Bracha und Robert Griesemer entwickelt.<ref>Lars Bak: <templatestyles src="Webarchiv/styles.css" />{{#if:20150923172541

      | {{#ifeq: 20150923172541 | *
    | Vorlage:Webarchiv/Wartung/Stern{{#if: Language Based Virtual Machines – … or why speed matters. | {{#invoke:WLink|getEscapedTitle|Language Based Virtual Machines – … or why speed matters.}} | {{#invoke:Webarchiv|getdomain|http://www.aosd.net/2012/images/stories/bak.pdf}} }} (Archivversionen)
    | {{#iferror: {{#time: j. F Y|20150923172541}}
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/DatumDer Wert des Parameters {{#if: wayback | wayback | Datum }} muss ein gültiger Zeitstempel der Form YYYYMMDDHHMMSS sein!
         | {{#if: Language Based Virtual Machines – … or why speed matters. | {{#invoke:WLink|getEscapedTitle|Language Based Virtual Machines – … or why speed matters.}} | {{#invoke:Webarchiv|getdomain|http://www.aosd.net/2012/images/stories/bak.pdf}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if: 2019-05-16 08:05:23 InternetArchiveBot | 2019-05-16 08:05:23 InternetArchiveBot |  }} |  des Vorlage:Referrer }} vom {{#time: j. F Y|20150923172541}} im Internet Archive{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
      }}
  }}
      | {{#if:
          | {{#iferror: {{#time: j. F Y|{{{webciteID}}}}}
    | {{#switch: {{#invoke:Str|len|{{{webciteID}}}}}
       | 16= {{#if: Language Based Virtual Machines – … or why speed matters. | {{#invoke:WLink|getEscapedTitle|Language Based Virtual Machines – … or why speed matters.}} | {{#invoke:Webarchiv|getdomain|http://www.aosd.net/2012/images/stories/bak.pdf}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if: 2019-05-16 08:05:23 InternetArchiveBot | 2019-05-16 08:05:23 InternetArchiveBot |  }} |  des Vorlage:Referrer }} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{{webciteID}}}|1|10}}/86400}} }} days}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
       | 9 = {{#if: Language Based Virtual Machines – … or why speed matters. | {{#invoke:WLink|getEscapedTitle|Language Based Virtual Machines – … or why speed matters.}} | {{#invoke:Webarchiv|getdomain|http://www.aosd.net/2012/images/stories/bak.pdf}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if: 2019-05-16 08:05:23 InternetArchiveBot | 2019-05-16 08:05:23 InternetArchiveBot |  }} |  des Vorlage:Referrer}} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{#invoke:Expr|base62|{{{webciteID}}}}}|1|10}}/86400}} }} days}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
       | #default= Der Wert des Parameters {{#if: webciteID | webciteID | ID }} muss entweder ein Zeitstempel der Form YYYYMMDDHHMMSS oder ein Schüsselwert mit 9 Zeichen oder eine 16-stellige Zahl sein!Vorlage:Webarchiv/Wartung/webcitation{{#if:  || }}
      }}
    | c|{{{webciteID}}}}} {{#if: Language Based Virtual Machines – … or why speed matters. | {{#invoke:WLink|getEscapedTitle|Language Based Virtual Machines – … or why speed matters.}} | {{#invoke:Webarchiv|getdomain|http://www.aosd.net/2012/images/stories/bak.pdf}} }} (Memento{{#if: {{#if: 2019-05-16 08:05:23 InternetArchiveBot | 2019-05-16 08:05:23 InternetArchiveBot |  }} |  des Vorlage:Referrer}} vom {{#time: j. F Y|{{{webciteID}}}}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
  }}
          | {{#if: 
              | Vorlage:Webarchiv/Today
              | {{#if:
                      | Vorlage:Webarchiv/Generisch
                      | {{#if: Language Based Virtual Machines – … or why speed matters. | {{#invoke:WLink|getEscapedTitle|Language Based Virtual Machines – … or why speed matters.}} | {{#invoke:Webarchiv|getdomain|http://www.aosd.net/2012/images/stories/bak.pdf}} }}  
                 }}}}}}}}{{#if:2019-05-16 08:05:23 InternetArchiveBot
    | Vorlage:Webarchiv/archiv-bot
  }}{{#invoke:TemplatePar|check
     |all      = url=
     |opt      = text= wayback= webciteID= archive-is= archive-today= archiv-url= archiv-datum= ()= archiv-bot= format= original=
     |cat      = Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
     |errNS    = 0
     |template = Vorlage:Webarchiv
     |format   = *
     |preview  = 1
  }}{{#ifexpr: {{#if:20150923172541|1|0}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}} <> 1
    | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Genau einer der Parameter 'wayback', 'webciteID', 'archive-today', 'archive-is' oder 'archiv-url' muss angegeben werden.|1}}
  }}{{#if: 
    | {{#switch: {{#invoke:Webarchiv|getdomain|{{{archiv-url}}}}}
        | web.archive.org = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von Internet Archive erkannt, bitte Parameter 'wayback' benutzen.|1}} 
        | webcitation.org = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von WebCite erkannt, bitte Parameter 'webciteID' benutzen.|1}} 
        | archive.today |archive.is |archive.ph |archive.fo |archive.li |archive.md |archive.vn = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von archive.today erkannt, bitte Parameter 'archive-today' benutzen.|1}}
      }}{{#if: 
         | {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}
             | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Wert des Parameter 'archiv-datum' ist ungültig oder hat ein ungültiges Format.|1}}
          |  }} 
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Pflichtparameter 'archiv-datum' wurde nicht angegeben.|1}}
      }}
    | {{#if: 
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Parameter 'archiv-datum' ist nur in Verbindung mit 'archiv-url' angebbar.|1}}
      }}
  }}{{#if:{{#invoke:URLutil|isHostPathResource|http://www.aosd.net/2012/images/stories/bak.pdf}}
    || {{#if:  || }}
  }}{{#if: Language Based Virtual Machines – … or why speed matters.
    | {{#if: {{#invoke:WLink|isBracketedLink|Language Based Virtual Machines – … or why speed matters.}}
        | {{#if:  || }}
      }}
    | {{#if:  || }}Vorlage:Webarchiv/Wartung/Linktext_fehlt
  }}{{#switch: 
    |addlarchives|addlpages= {{#if:  || }}{{#if: 1 |Vorlage:Webarchiv/Wartung/Parameter}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: enWP-Wert im Parameter 'format'.|1}}
  }}{{#ifeq: {{#invoke:Str|find|http://www.aosd.net/2012/images/stories/bak.pdf%7Carchiv}} |-1
    || {{#ifeq: {{#invoke:Str|find|{{#invoke:Str|cropleft|http://www.aosd.net/2012/images/stories/bak.pdf%7C4}}%7Chttp}} |-1
         || {{#switch: {{#invoke:Webarchiv|getdomain|http://www.aosd.net/2012/images/stories/bak.pdf }}
              | abendblatt.de | daserste.ndr.de | inarchive.com | webcitation.org = 
              | #default = {{#if:  || }}{{#if: 1 |Vorlage:Webarchiv/Wartung/URL}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Archiv-URL im Parameter 'url' anstatt URL der Originalquelle. Entferne den vor der Original-URL stehenden Mementobestandteil und setze den Archivierungszeitstempel in den Parameter 'wayback', 'webciteID', 'archive.today' oder 'archive-is' ein, sofern nicht bereits befüllt.|1}}
            }} 
       }}
  }} (PDF)</ref> Strongtalk wird unter einer Open-Source-Lizenz zur Verfügung gestellt. Im September 2006 wurden auch die Quellen der virtuellen Maschine offengelegt.
Datei:Strongtalk-system.png
Die einzelnen Komponenten des Strongtalk Entwicklungssystems im Überblick

Vergegenwärtigt man sich den Aufbau des Strongtalk Entwicklungssystems, so wird klar, dass diese Sprache viel eher als Java-Vorgänger bezeichnet werden könnte. So ist die Objekthierarchie durchgängig typisiert und das originäre Objekt ist das Objekt Object. In der Illustration ist auch zu erkennen, dass es wie in Smalltalk eine Art Klassenbrowser gibt, mittels dessen innerhalb der Objekthierarchie navigiert werden kann. Zudem veranschaulicht die Illustration den Vorgang der Instanziierung des Objektes Semaphore. Dies geschieht, ähnlich wie in einem Smalltalk-System, über die Code-Zeile:

Semaphore new.

Hier wird auf dem Klassenobjekt Semaphore die Klassenmethode new aufgerufen, die eine neue Instanz ebendieser Klasse zurückliefert. Gegenstücke zur Klassenmethode new sind beispielsweise, wie aus der Illustration zu erkennen, die Instanzmethoden signalCount und signalCount:. Sie fungieren als Getter bzw. Setter der Instanzvariablen signalCount. Dies ist die gängige Konvention in Smalltalk-Systemen.

Literatur

Weblinks

Einzelnachweise

<references />