Open Source im professionellen Einsatz

Newsletter abonnieren
Seite durchsuchen

HEFTARCHIV | NEWS | E-BIBLIOTHEK | VIDEO | BLOGS | WHITEPAPER | EVENTS | ACADEMY | ABO | SHOP

user friendly

  Home  »  Heft & Abo  »  Heftarchiv  »  2001  »  07  »  Klasse Federn  

RSS-Feed der aktuellen News von Linux-Magazin Online Folgen Sie Linux-Magazin Online auf Twitter
Diesen Artikel druckenDiesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren
Share/Bookmark

Alles in allem

Mit [incr Tcl] lassen sich auf einfache Weise Klassen inklusive Vererbung definieren, dabei können Variablen und Methoden in unterschiedlichen Stufen vor Zugriff geschützt werden. Die Möglichkeiten lehnen sich - inklusive der Mehrfachvererbung - an C++ an. Übrigens können [incr Tcl]-Klassen sogar von C++-Klassen erben. Ein besonders gutes Beispiel ist die CORBA-Erweiterung Combat von Frank Pilhofer [6].


Abbildung 2: Der Type-1-Editor baut auf den Programmstücken aus diesem Artikel auf.

Die Verwendung der Objekte ist jedem Anwender vertraut, der schon mal mit Tk gearbeitet hat. Die Möglichkeiten von [incr Tcl] sind damit ohne großen Lernaufwand nutzbar. Die zuerst in [incr Tcl] entwickelten Namensräume haben schon seit einigen Jahren den Weg in das normale Tcl gefunden, deshalb wurde auf sie hier nicht weiter eingegangen. Weiterführende Literatur zu [incr Tcl] findet sich auf [7].

Die vorgestellten Beispiele und ein daraus abgeleiteter Editor (Abbildung 2) sind auf [8] zu finden. Bislang fehlt allerdings jeglicher Quelltext, um die Buchstaben im Canvas darzustellen. Auf die Möglichkeiten des Canvas-Widgets wird dann das nächste Feder-Lesen eingehen. (fjl)

Listing 1: Klassendefinition mit Methoden und Variablen
package require Itcl
namespace import itcl::*

class Punkt {
 public variable x
 public variable y
 
 constructor {_x _y} {
   set x $_x
   set y $_y
   
   puts "Konstruktor: $this, $x:$y"
 }
 
 destructor {}
 
 public method verschieben {dx dy} {
   set x [expr {$x + $dx}]
   set y [expr {$y + $dy}]
   return [list $x $y]
 }
}
Listing 2: Die interaktive Punkt-Klasse
% Punkt p1 10 10
p1
% p1 cget -x
10
% p1 configure -x 200
% p1 cget -x
200
% Punkt #auto 20 20
punkt0
% punkt0 verschieben 10 20
20 30
% punkt0 isa Punkt
1
% punkt0 isa Oink
0
% delete object p1 punkt0
% delete class Punkt
Listing 3: Vererbung und Mehrfachvererbung
class Zeichnen {
 constructor {} {}
 destructor {}
 
 public method zeichnen {} {
   if {[$this isa Kontrollpunkt]} {
      # zeichne Kontrollpunkt
   } elseif ...
 }
}

class Knotenpunkt {
 inherit Punkt

 constructor {_x _y} {
   Punkt::constructor $_x $_y
 } {
   # Konstruktor des Knotenpunkts
 }
 
 public method koordinaten {} {
   return [list $x $y]
 }
}

class Kontrollpunkt {
 inherit Punkt Zeichnen
 
 constructor {_x _y} {
   Punkt::constructor $_x $_y
   Zeichnen::constructor
 } {
   # Konstruktor des Kontrollpunkts
 }
}
Listing 4: Delegation
class Linie {
  private variable k1
  private variable k2
  
  constructor {_k1 _k2} {
    foreach k {$_k1 $_k2} {
      if {![$k isa Knotenpunkt]} { 
        error "Knoten $k ist kein Knotenpunkt!"
      }
    }
    set k1 $_k1
    set k2 $_k2
  }
}
Tcl: Was bisher geschah


John Ousterhout, der Vater von Tcl. Mit "Tcl/Tk for Dummies" hat er aber offenbar noch Probleme.

John Ousterhout, der geistige Vater der Sprache, war auch viele Jahre ihr Hauptentwickler. Er entwarf die Grundlagen als Professor an der Universität von Berkeley, bevor er mit einem Entwicklerteam zu Sun Microsystems wechselte. Dort schuf das Team den Bytecode-Compiler und machte erste Schritte in Richtung Unicode. Bevor mit Tcl 8.1 die Internationalisierung vollendet war, verließ Ousterhout jedoch Sun, um die eigene Firma Scriptics ins Leben zu rufen.

Scriptics hatte das Ziel, Entwicklungswerkzeuge (Tcl Pro) und professionellen Support für Tcl zu verkaufen. Damit sollte auch die Weiterentwicklung der Sprache finanziert werden. Unter der Ägide von Scriptics wurden die Releases 8.1 bis 8.3 entwickelt. Allerdings war der Verkauf von Tcl Pro wohl nicht ausreichend, um damit die hauptberuflichen Tcl-Entwickler zu finanzieren.

Das ist ein klassisches Dilemma von Firmen im Open-Source-Umfeld, ein ähnliches Problem stellte sich vor kurzem bei Python. Scriptics wurde deshalb in Ajuba Solutions umbenannt. Neuer Schwerpunkt war der Verkauf von B2B-Produkten (Business-to-Business), mit denen sich Datenbanken per XML ins Internet integrieren lassen. In der Folge kannten sich die Entwickler bei Ajuba wohl zu gut mit XML aus - die ganze Firma wurde schließlich von Interwoven übernommen, einem großen Hersteller von B2B-Software, der allerdings an der Weiterentwicklung von Tcl kein Interesse hat.

Wie stellt sich die Situation für Tcl etwa ein halbes Jahr später dar? Schon zu Ajubas Zeiten hatte Ousterhout den Stammsitz der Tcl-Quellen zu Sourceforge verlagert. Dort finden sich übrigens neben dem Interpreter etwa 200 weitere Projekte, die Tcl-Werkzeuge oder Erweiterungen entwickeln. Hierzu gehören auch die Werkzeuge der Tcl-Pro-Suite. Da Interwoven die Kronjuwelen von Scriptics nicht vermarkten wollte, wurden sie noblerweise als Open Source veröffentlicht.

Die Lagerung der Quellen ist die eine, auf der anderen Seite galt es, die Leitung aus den Händen eines wohlwollenden Diktators in die der Entwicklergemeinde zu geben. Die Lösung ist das Tcl Core Team (TCT). Die Tcl-Nutzer hatten im Internet bestimmt, wer Mitglied im TCT ist und damit über die Richtung der Weiterentwicklung bestimmt. Vorschläge für Entwicklungen (meist inklusive der Lösung) werden als Tcl Improvement Proposal (TIP) eingereicht. Nach einer Diskussion in der öffentlichen Mailingliste stimmen die TCT-Mitglieder darüber ab.

Mit diesem Verfahren hat die Weiterentwicklung inzwischen ein beachtliches Tempo aufgenommen. Dennoch hätte der Wegfall der von Scriptics bezahlten hauptamtlichen Tcl-Entwickler natürlich eine große Lücke hinterlassen. Doch hier sprang die Firma Active State ein. Sie ist schon bei Perl- und Python-Anwendern für Support und Portierungen bekannt, mit Tcl hat sie nun alle drei großen Skriptsprachen im Angebot. Mit Jeffrey Hobbs und Andreas Kupries sind inzwischen zwei prominente Tcl-Entwickler bei Active State gelandet.

Von Active State wird es in absehbarer Zeit auch die Batteries-included-Distribution geben, mit der das ewige Suchen nach der passenden Erweiterung ein Ende haben soll. Zur Zeit wird gerade an der Tcl-Version 8.4 gearbeitet, eine neue Alpha-Release sollte schon bei Drucklegung dieses Heftes auf Sourceforge bereitstehen. Sowohl in der Mailingliste des TCT wie auch in der Newsgruppe Comp.lang.tcl ist jedoch schon ein erstes Donnergrollen für Tcl 9.0 zu vernehmen. Man kann noch einiges erwarten.

Infos

[1] Informationsseite für Entwickler: http://tcl.activestate.com

[2] Tcl-Foundry bei Sourceforge: http://sourceforge.net/foundry/tcl-foundry

[3] Tcl'ers Wiki: http://mini.net/cgi-bin/wikit/0.html

[4] Tcl-Newsgruppe: news://comp.lang.tcl

[5] [incr Tcl] bei Sourceforge: http://sourceforge.net/projects/incrtcl/

[6] Combat, eine Tcl-CORBA-Erweiterung: http://www.fpx.de/Combat/

[7] Die Tcl-Tk-Homepage: http://www.tcltk.org/

[8] Der Type-1-Editor: http://www.tu-harburg.de/~skfcz/tcltk.html

Der Autor

Carsten Zerbst ist wissenschaftlicher Mitarbeiter an der TU Hamburg-Harburg. Neben der Forschung über die Dienste-Integration an Bord von Schiffen beschäftigt er sich mit Tcl in allen Lebenslagen.

Diesen Artikel druckenDiesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren
Share/Bookmark
Whitepaper
The Role of Open Source in Data Integration

Obwohl in den letzten Jahren viele technische Fortschritte erzielt werden konnten, verfügen die meisten Datenintegrationsprozesse nach wie vor nur über eine sehr begrenzte Automatisierung. Das vorliegende White Paper von dem Industry Analyst Mark Madson wird zunächst ein grundlegendes Verständnis von Daten Integration vermitteln, die Vorzüge von Open Source Lösungen für Daten Integration erläutern und Ihnen professionelle Empfehlungen geben, damit Sie Ihre Integrationsjobs noch einfacher und produktiver gestalten können.

Download PDF (Registrierung erforderlich)
Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele (Folge 2)

Der zweite Teil des Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele White Papers beleuchtet anhand weiterer ausgewählter Case Studies die Implementierung von Open Source Datenintegration in der Praxis und benennt die daraus resultierenden Vorteile.

Download PDF (Registrierung erforderlich)
Kommentare (0)