PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Welche Sprache zu wählen



Katya
03-02-2008, 14:35
Hallo,

ich bin hier auf der Suche nach der "besten" Scriptsprache für mich. Hauptanwendung ist die Verarbeitung von Texten, es wird mit Regulären Ausdrücken viel gemacht.

Bis jetzt habe ich mir folgende Sprachen angeschaut: Perl, Python, Ruby. Ausser diesen Sprachen bin ich auch mit Java etwas vertraut.
Hier ist die Liste, der Nachteile, warum mir diese Sprachen mir nicht ganz passen:

Perl: sehr cryptisch (viele unnötige zeichen), Objektorientierung sehr umständlich.
Python: Einrückungen statt {}, mit Einrückungen bin ich immer sehr unsauber, daher würde ich gerne {} für Blöcke verwenden.
Ruby: auch wieder keine {} für Blöcke.
Java: etwas zu groß für meine Aufgaben, etwas umständlich wegen Variablentypen usw.

Also suche ich eine Scriptsprache ähnlich zu Python oder Ruby, wo man aber {} verwenden muss, wo auch Objektorientierung leicht zu machen ist.

Ich hoffe, meine Ansprüche sind hier nicht zu hoch :rolleyes:

Vielen Dank

Molaf
03-02-2008, 17:40
Auch wenn Du Perl schon abgehakt hast, nur so interessehalber für mich: Was ist denn da so cryptisch (besonders was bei den anderen dreien einfacher wäre) ?

Gruß Molaf

Katya
03-02-2008, 17:51
Na zum Beispiel folgende Zeichen, die in allen möglichen Kombinationen auftauchen können: %, $, &, _ .
Es ist klar, dass man damit mit etwas Training zurecht kommt, aber da finde ich sogar Javas Variante viel schöner:
int i=0;
i=5;
Objektorientierung wird in allen beschriebenen Sprachen viel schöner implementiert: Variable.methode.
Einigermassen vertraut bin ich allerdings nur mit Java. Deswegen kann es sein, dass ich mit Ruby und Python etwas falsch liege.

Molaf
03-02-2008, 18:13
Danke, jetzt weiß ich bescheid. Ich war mir nicht ganz sicher was bei der knappen Syntax noch stören sollte.

Obwohl die Aufgabenstellung ja wie eine Beschreibung von Perl klingt,
Und das JAVA-Beispiel auch noch deutlich mit Typkonventionen nervt/bremst.

Bin gespannt welche Sprache das Rennen macht.

Katya
03-02-2008, 18:29
> Und das JAVA-Beispiel auch noch deutlich mit Typkonventionen nervt/bremst.

ja eben, deswegen suche ich eine andere Sprache, weil Java bei solchen Sachen ungeeignet ist. Laut Beispielen aus Python und Ruby wird es da ohne Variablentypen so gemacht:
x = x + 1
auch wieder ohne kryptischen zeichen, aber in diesen Sprachen gibt es keine {}, was mich stört

ContainerDriver
03-02-2008, 21:19
In PHP hast du auch eigentlich keine Datentypen und man kann gut mit Strings arbeiten. Die Variablen haben natürlich alle ein $ vorne dran stehen.

jan61
03-02-2008, 22:03
Moin,

ich rate dennoch zu Perl. Die Lernkurve ist ziemlich flach (oder um es mal mit Larry Wall's Worten auszudrücken - in der deutschen Übersetzung seiner Perl-Bibel: "Perl ist eine Sprache, mit der Sie Ihre Arbeit erledigt bekommen ... Kurz gesagt wurde Perl entworfen, um die einfachen Aufgaben einfach zu halten, ohne die schwierigen Aufgaben unmöglich zu machen").

Ich kenne keine Programmiersprache, die so effizient und performant mit regulären Ausdrücken und dem Parsen (auch riesiger) Textdateien umgehen kann wie Perl. Die Übersichtlichkeit des Codes hängt im großen Maß von Dir als Programmierer ab. Und was Objektorientierung betrifft: Was ist so umständlich an der Schreibweise
my $objekt = new KlasseX([parameter[, ...]]);
my $result = $objekt->methode([parameter[, ...]]); ? Wo ist der große Unterschied zu Java
KlasseX objekt = new KlasseX([parameter[, ...]]);
KlasseY result = objekt.methode([parameter[, ...]])?

Perl hat sicher Schwächen im Objektmodell (soll sich mit Version 6 aber bessern), aber die Programmierung von Klassen und deren Verwendung ist nicht schwieriger als in anderen Sprachen.

Jan

Katya
04-02-2008, 08:39
my $result = $objekt->methode([parameter[, ...]]);

Gerade diese $ und -> und eine Menge von diesem unnötigen Kramm ist des, was mich etwas ärgert. Intuitiv kann ich diesen -> nicht verstehen.
Ausserdem selber schreiben geht gerade noch, aber das ganze zu lesen ...
Was mich auch immer geärgert hat war "_" der glaub ich statt dem Hash-Zeichen oder Array-Zeichen verwendet werden konnte.
Perl ist einfach zu wild. Er versucht viele Abkürzungen zu schaffen, damit es schneller geht, daraus entstehen sehr viele Konventionen, die den Code unlesbar machen. IMHO

Übrigens braucht man in Java keine [], man ruft eine Methode mit:
Methodenname(Arg1, Arg2) auf.

Matflasch
04-02-2008, 10:38
Übrigens braucht man in Java keine [], man ruft eine Methode mit:
Methodenname(Arg1, Arg2) auf.

Die [] stehen für optionale Parameter, daher kannst du laut der Beschreibung entweder keinen, einen oder viele Parameter nehmen ;)
Ebenso in den anderen erwähnten Sprachen.

Ich finde gerade die Einrückung in Python genial. Wenn man das Einrücken eben "noch" nicht sauber macht, zwingt die Sprache den Programmierer dazu, das macht Fremdcode auch gut lesbar.

Auch wenn du die beiden Sprachen (Python, Ruby) schon getestet hast, würde ich dir vorschlagen, die beiden nochmal genauer unter die Lupe zu nehmen. Beide bieten sich für RegEx und Dateiverarbeitung ideal (leserlich) an. Von Perl bin ich auch nicht so begeistert, was aber einfach Geschmackssache ist.

In Python wird die "Klammerung" durch die Einrückung übernommen. In Ruby hingegen gibt es doch auch immer das "end", was das Ende eines Blocks kennzeichnet, müssen es unbedingt die {} sein?

mfg, Matflasch

Katya
04-02-2008, 10:57
Ja, ich glaube eben, dass ich mich doch für Python entscheide. Wahrscheinlich muss ich mir einfach etwas Disziplin beibringen :rolleyes:

jan61
04-02-2008, 20:54
Moin,


my $result = $objekt->methode([parameter[, ...]]);

Gerade diese $ und -> und eine Menge von diesem unnötigen Kramm ist des, was mich etwas ärgert. Intuitiv kann ich diesen -> nicht verstehen.

Sowas muss man auch nicht intuitiv verstehen, dafür gibts Doku. Und die Bezeichnung "unnötiger Kram" zeigt mir eigentlich, dass Du Dich wohl noch nie ernsthaft mit Perl befasst hast. Dann würdest Du nämlich wissen, wofür das gut ist und dass es mitnichten unnötig, sondern Teil der Sprachstruktur ist.


Was mich auch immer geärgert hat war "_" der glaub ich statt dem Hash-Zeichen oder Array-Zeichen verwendet werden konnte.

Du meinst sowas wie $_ (Default-Argument)? Wenns Dich stört, dann nimm es doch nicht, nimm $ARG dafür.


Perl ist einfach zu wild. Er versucht viele Abkürzungen zu schaffen, damit es schneller geht, daraus entstehen sehr viele Konventionen, die den Code unlesbar machen. IMHO

Übrigens braucht man in Java keine [], man ruft eine Methode mit:
Methodenname(Arg1, Arg2) auf.

Perl zwingt Dich doch nicht, so zu programmieren. Du musst keine Kurznamen benutzen, Du musst nicht kompakt programmieren und jede sprachliche Feinheit von Perl ausnutzen.

Die von mir benutzte Syntax mit den eckigen Klammern und ihrer Bedeutung hatte ja Matflasch schon erklärt.

Wenn Du bei so vielen Programmiersprachen Dich immer an Äußerlichkeiten störst, dann gehst Du IMHO falsch an die Sache ran. Ich persönlich würde mich eher daran orientieren, wie die Sprache zum Lösen meines Problems geeignet ist.

Jan

Katya
07-02-2008, 12:31
Danke für Eure Meinungen.

Ich weiß schon, dass jeder die Sprache verteidigt, die einer am besten kann. Und da eben Perl sehr verbreitet ist, gibt es sehr viele Stimmen für Perl (auch da, wo ich studiere, ist es so). Der größte Vorteil in Perl für mich wäre der, dass ich immer Menschen finden kann, die mir mit Perl helfen könnten. Allerdings finde ich in Perl einfach viele Sachen unübersichtlich.

Da ich kein Profi bin, versuche ich die Lösungen von den anderen immer nachzuschauen und für meine Zwecke anzupassen. Wenn aber der Code nicht gut lesbar ist, ist es eben öfter ziemlich schwierig.
Es ist mir klar: wenn man sich mit dem Programmieren länger beschäftigt, gewöhnt man sich an solche Sachen. Aber bei Java beispielsweise, kann man oft relativ schnell verstehen, was der Code macht, was bei Perl (für mich) nicht der Fall ist. Nur ist Java halt in diesem Fall für meine Zwecke nicht ganz geeignet.

Ich habe mich jetzt für Python entschieden. Vom ersten Blick kommt mir die Sprache ziemlich übersichtlich vor und für die Textverarbeitung (beispielsweise mit Regulären Ausdrücken) gut geeignet. Was daraus wird zeigt die Zeit :)

Molaf
07-02-2008, 13:14
Was daraus wird zeigt die Zeit :)

Wehe Du schreibst, Du wärst mit einer anderen Sprache als Perl glücklich geworden. :p

juan_
07-02-2008, 15:06
Habe nicht alles gelesen, aber wo hat ruby denn keine { } für Blöcke?
Da Ruby sehr flexibel ist, hast du 2 Varianten, Blöcke zu nutzen.
Eine davon ist die Verwendung von {}.


ciao