Welche Programmiersprache?

Mr_Blonde

Uelzener Rambour
Registriert
09.02.05
Beiträge
373
Auch wenn du dich schon entschieden hast, als Scriptsprache kann ich dir Tcl empfehlen. GUIs kann man dort ganz einfach mit Tk basteln.

Hier die Homepage:
www.tcl.tk

Ein weiterer Vorteil, Tcl/Tk Interpreter gibt es für alle grösseren Betriebssysteme (Mac OS, Linux, Windows, PalmOS ...) Zudem gibt es für Tcl ganz nette Erweiterungen. Zu nennen wäre da z.B. Expect, mit dem sich von deiner Software aus Command Line Tools wie z.B. SSH oder FTP "bedienen" lassen. (Sehr hilfreich wenn man Testsoftware schreibt)

Vom "Zeilenaufwand" her gesehen, ist Tcl auch ganz angenehm. Hier ein Hello World:

Code:
#!/usr/bin/tclsh

puts "Hello World!"

Und hier ein kleiner Webserver, der auf Anfrage HTML Dateien zurückschickt:

Code:
#!/usr/bin/tclsh

proc serv { s addr port } {
	fconfigure $s -buffering line
	gets $s requestline
	if { [regexp "GET /(.*) " $requestline match uri] == 1 } {
		set filename [file join htdocs $uri]
		set f [open $filename r]
		set filecontents [read $f]
		close $f
		puts $s "HTTP/1.0 200 OK"
		puts $s "Content-type: text/html"
		puts $s "Content-length: [string length $filecontents]"
		puts $s ""
		puts $s $filecontents
	}
	close $s
}

# Start the Webserver and wait forever
socket -server serv 8080
vwait serverexit


(Mac OS X hat den Tcl/Tk Interpreter schon installiert. Quellcode einfach in eine leere Datei, chmod a+x DATEINAME und dann ausführen ./DATEINAME)


Hier hab ich eine kleine mini Einführung.
 
  • Like
Reaktionen: mullzk

Tekl

Fairs Vortrefflicher
Registriert
01.06.05
Beiträge
4.630
Hi,

sehr interessant. Sehen die GUIs auch Mac-Like aus?
 

Mr_Blonde

Uelzener Rambour
Registriert
09.02.05
Beiträge
373
Jap. Hat das normale Aqua Look'n'Feel.

Code:
     button .b -text "Push Me" -command {puts "hello, world"; exit}
     pack .b -padx 20 -pady 10

Einfach den Code in eine Datei packen und dann in der Shell via der 'wish' shell aufrufen. (wish shell ist der Interpreter für Tk)

wish MyScript.tcl


Was bei Tcl/Tk auch ganz nett ist: Man kann einfach die Shell aufrufen und lostippen. Das Programm wird dann on-the-fly interpretiert. Um es auszuprobieren einfach nur wish in der shell eingeben. Danach dann die beiden Zeilen eintippen. Nach der ersten Zeile (nachdem Enter drücken), wird die 'Variable' .b erstellt. Sobald das pack eingegeben wurde, erscheint der Button im Fenster. Jetzt kannst du noch fröhlch weitertippen und Sachen hinzufügen, usw.
 

Tekl

Fairs Vortrefflicher
Registriert
01.06.05
Beiträge
4.630
Hi,

hört sich verdammt cool an. Leider funktionieren deine Beispiele insofern nicht, dass ich keine Fenster am Bildschirm sehe. Nur das Wish-Symbol erscheint im Dock.
 

mullzk

Linsenhofener Sämling
Registriert
04.01.04
Beiträge
2.529
bei mir funktioniert es, allerdings ist das (sehr kleine) fenster ganz hinten hinter allen anderen fenster versteckt...

muss mir diese sprache wohl wirklich auch mal anschauen...
 

MacApple

Schöner von Bath
Registriert
05.01.04
Beiträge
3.652
Mr_Blonde schrieb:
Jap. Hat das normale Aqua Look'n'Feel.
Na ja, der Look ist ähnlich, aber nicht der normale Aqua Look. Vom Feel würde ich da erst gar nicht sprechen.

MacApple
 

Mr_Blonde

Uelzener Rambour
Registriert
09.02.05
Beiträge
373
@MacApple: Natürlich ist das Feeling nicht wie bei einer Cocoa app. Allerdings darf man auch nicht vergessen, dass es sich hier um eine Scriptsprache handelt.

Warum das Fenster immer im Hintergrund auf geht, weiss ich auch nicht. Vielleicht liegt das an der shell Ausführung. Werde mal schauen, ob ich dazu etwas finde.


Um jetzt die Werbeaktion für Tcl abzuschliessen, hier noch ein nettes Feature:
Man kann in C/C++ oder Java Extensions für Tcl/Tk schreiben. Wenn einem also Befehle fehlen oder es auf Geschwindigkeit ankommt, kann man Tcl so erweitern.
Howto

Ich habe mir z.B. eine Extension gebastelt, die 30 Zeichen lange Strings AES256 ver- und entschlüsseln kann. Link (Falls das jemand benutzen möchte: Ich gebe keine Garantie auf die Qualität der Verschlüsselung, da die Routinen zur ver-/entschlüsselungen nicht von mir sind.)


Am häufigsten verwende ich Tcl/Tk zur Testautomatisierung. Meine bisher umfangreichstes Tcl Projekt war ein Netzwerk Topologie Monitor.
Das Tool holt sich von Netzwerkknoten (in diesem Fall BelAir HotSpot Nodes) via SNMP (Extension Scotty) oder per command line interface der Nodes (Extension Expect) Zustandsinformationen über die Nodes selbst, angeschlossene Nachbarn, Spanning Tree Infos, etc. Dies wird dann graphisch angezeigt und man kann über dieses Tool die Konfiguration der Nodes ändern.
Das ganze habe ich bis zu 40 Nodes getestet und es lief stabil + flüssig. Hier ist wieder anzumerken, eine compilierte Sprache ist natürlich zuverlässiger. Allerdings hätte ich für das Tool auch wesentlich länger zur Implementierung gebraucht.
 

Tangarama

Braeburn
Registriert
17.12.05
Beiträge
46
Grütze!
Tekl schrieb:
Zudem haben ich Erfahrung mit Javascript und PHP. In Delphi/Pascal hatte ich auch schon mal reingeschnuppert.
Auch wenn Deine Anfrage jetzt schon ein paar Nächte und Tage hinter sich gelassen hat, möchte ich Dir doch kurz mal einen Tipp geben auf den Du vielleicht noch gar nicht gekommen bist.

Mit PHP kannst Du auch ohne Webserver (Stichwort: Commandline), GUI-Anwendungen (TCL) für Deinen Rechner programmieren. Ja, PHP ist Scriptsprache und ja, man kann damit auch den Rechner programmieren. Hierzu möchte ich Dir das Buch PHP De Luxe von den beiden Experten "Richard Samar" und "Christian Stocker" (<-- ist auch ein MACianer) (erschienen im mitp-Verlag) ans Herz legen.

Grüsse aus einem verschneiten Spessart
Jeanot Bruchmann

coming soon as possible: www.fontworld.de
 
  • Like
Reaktionen: Squart

pi26

Adams Parmäne
Registriert
17.12.04
Beiträge
1.297
Tekl schrieb:
Ich wollte aber keinen Explorer nachbauen, sondern einfach ein Verzeichnis nach bestimmten Dateien durchsuchen und in Textform in einem Dialog ausgeben. Mit AppleScript scheint das möglich zu sein, mit RealBasic wahrscheinlich auch.

Applescript hat sein Stärken in der applikations- und systemübergreifenden Programmierung. Realbasic ist weitgehend universell aber nicht applikationsübergreifend - lässt aber hierzu die Einbindung von AS zu.
Folgendes Realbasic-Beispiel hängt z.B. die Dateinamen des gebebenen Ordners an den Inhalt der Listbox1 im Fenster1:

dim dir as folderitem
dim i as integer

dir = getfolderitem("HD:Ordner")
if dir = nil then
msgbox "Ordner nicht gefunden"
else
for i = 1 to dir.count
if not dir.item(i).directory then //wenn es kein Ordner ist
fenster1.listbox1.addrow dir.item(i).name
end if
next
end if

mfg pi26
 

Tekl

Fairs Vortrefflicher
Registriert
01.06.05
Beiträge
4.630
Hallo und Danke nochmal für die weiteren Antworten.

Ich habe das genannte PHP-Buch, doch die GUI-Sachen gefallen mir auf den ersten Blick nicht so sonderlich, zudem ist mir das doch zu weit vom System entfernt. AppleScript passt da schon ganz gut. Realbasic wäre zwar interessant, doch nur zum Rumspielen ist mir das dann doch zu teuer.

Tekl
 

Cortex85

Gast
Tekl schrieb:
Hi,

danke für die vielen Antworten. Ich habe mich jetzt einfach mal für den Anfang für AppleScript entschieden. Die Anleitung von Ficher-Bayern ist sehr gut und ich denke AppleScript ist ein guter Einstieg, zumal man damit ja recht schnell einfache Sachen automatisieren kann und es mehr oder weniger systemnah arbeitet. Ich kann z.B. Fenster verschieben, was mir sehr wichtig ist.

Vielen Dank für die vielen ausführlichen Antworten und die kleinen Belehrungen. Ich werde sie im Hinterkopf behalten, falls mit AppleScript dann nicht mehr reicht. Dann werde ich aber wohl ObjC oder Java verwenden, je nachdem, wieviel ich noch mit Windows zu tun haben werde.

Applescript ist gut, wenn du automatisieren willst. Und unter Umständen kannst du deine Applescripts bis runter zu System 7.5 nutzen.
 

Pythomias

Gast
Hallo Tekl,

ich würde dir Python empfehlen !
C,C++ ,Java und Perl besitzen eine schreckliche unübersichtliche Syntax. Kein Wunder ! Ihre Gramatik wurde ja auch weitgehend von C und C++ übernommen.
Wenn ich mir den Quellcode con C,C++ und Java ansehe wird mir ganz übel. :(

Schau dir mal folgenden Bericht an, in dem die Entstehung der Programmiersprachen erläutert wird:

http://www.bernd-leitenberger.de/echte-programmierer-neu.shtml
 

Tekl

Fairs Vortrefflicher
Registriert
01.06.05
Beiträge
4.630
Danke,

das ist ja mal ein interessanter Artikel, auch wenn das alles einen leichten Beigeschmack hat, dass da jemand sein geliebtes Pascal/Delphi in den Himmel loben möchte.

In wie weit treffen die Kritiken an C eigentlich auf ObjectivC zu? Das soll sich ja teilweise stark von C/C++ unterscheiden und an das gelobte SmallTalk angelehnt sein.

Wie steht denn Ruby da, wenn man Bernds Kirterien anwendet? Vielfach wird es ja noch über Python gestellt.

Aber was für mich jetzt wichtig wäre. Kann ich in Python performante GUI-Anwendungen umsetzen die wirkliche Apple-like sind?
 

tjp

Altgelds Küchenapfel
Registriert
07.07.04
Beiträge
4.057
Danke,

das ist ja mal ein interessanter Artikel, auch wenn das alles einen leichten Beigeschmack hat, dass da jemand sein geliebtes Pascal/Delphi in den Himmel loben möchte.
Pascal, Modula-II und Ada sind ISO normiert, nur hat damit Turbo-Pascal/Delphi herzlich wenig zu tun. Wenn der Autor also die Kompatibilitätsprobleme zwischen zwei C++ Compiler bemängelt ist das zumindest irreführend, wenn nicht so gar dumme Polemik, weil er das ganze mit einer proprietären Programmiersprache eines bestimmten Herstellers vergleicht, die zu nichts kompatibel ist. Es ist trivial, daß es daher keine Kompatibilitätsprobleme gibt.
In wie weit treffen die Kritiken an C eigentlich auf Objectiv-C zu?
Die ganzen Probleme von C sind in Objective-C vorhanden, in C++ hast Du die Möglichkeit Alternativen zu nutzen (viele tun es nicht und haben deshalb Probleme), die Option gibt es in Objective-C bisher nicht. Low-Level-Programmieren ist in Objective-C reines C-Programmieren. Mit Objective-C 2.0 wird es eine wichtige Fehlerquelle nicht mehr geben: Speicherallokation und Freigabe dieser Blöcke. Bisher gab es nur Autorelease Pools neu wird es auch Garbage Collection geben.
Kann ich in Python performante GUI-Anwendungen umsetzen die wirkliche Apple-like sind?
Nein und nein, Python ist weder sehr schnell noch entspricht es wirklich Apples Style-Guide. Für die Aufgaben für die man üblicherweise Python benutzt reicht die Perfomance mehr als aus, Low-Level Sachen schreibt man als Erweiterungen von Python in C und integriert sie dann in die Sprache. Für Rapid Prototyping ist das genau der richtige Ansatz.
 

atlan

Golden Delicious
Registriert
19.04.06
Beiträge
10
Eine für mich zumindest - da ich diese gewohnt bin - mit GUI (MaxIDE) ist BlitzMax - Nachfolger von BlitzBasic. Als "Prüfer" nehme ich von den Anwendungsentwicklern und angehenden Systemintegratoren mehr C, C#, Java und PHP unter die Lupe. Aber als alter C64 "Dino" komme ich von der Sprache nicht los :) Der Preis ist super, im Internet massig Informationen und die "Erfolge" sind irre schnell für Einsteiger.
Link: http://www.blitzmax.com/ und http://www.blitzbasic.de/ für OSX die BlitzMax Version. In einigen Wochen ist PureBasic auch eine prima Alternative:) Die aktuelle Version ist etwas buggy - aber die 4.0 ist schon in der Mache - Das Tolle beider Sprachen ist, dass die Entwicklungen auf der Ebene Win, Linux und OSX ohne große Änderungen machbar sind.
 
Zuletzt bearbeitet: