Diese Diskussion wurde archiviert.
Es können keine neuen Kommentare abgegeben werden.
|
|
|
|
|
Von Anonymer Feigling am Saturday 16. October 2004, 13:57 MEW (#1)
|
|
|
|
|
Ich bin C/C++ oder vielleicht noch Java und C# Entwickler. Wenn man dann sowas wie Perl ansieht sieht es doch sehr merkwürdig aus.
Ich weiß auch nicht wieso. PHP auch, kann ich nicht mit umgehen.
Ich bin immer wieder erstaunt was so manche Leute damit anstellen.
dvdrip z.B.
Aber das liegt sicher an meiner C geprägten Umgebung.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Hmm... kenn ich nur allzu gut! Wenn ich Perlcode sehe, läuft es mir oft kalt den Rücken runter. Es sieht IMHO einfach häufig sehr kryptisch aus, was einige sicher l33t finden, aber eben... ich kann damit nicht viel anfangen.
Als Skriptsprache würd ich jedem Python empfehlen. Eine sehr saubere Sprache, mit einer umfangreichen Standard Library. Habe schon relativ viel damit gemacht, auch GUI's (z.B. wxWindows) sind damit sehr bequem machbar. Als C/C++ Programmierer fühlt man sich auch schnell wohl.
|
|
|
|
|
|
|
|
|
|
|
|
|
Ich denke, die Wahl der Programmiersprache ist einfach Geschmackssache. Für manche Leute mag die C-Famile (C, C++, Java, C# etc, pp) das höchste der Gefühle sein, für andere wiederum Python und für wieder andere ist es halt die Perl-Familie (Perl 1-6, PHP, Ruby). Es soll sogar Leute geben, die LISP als saubere Sprache empfinden ;)
Schlussendlich muss jede/r die Programmiersprache finden, mit welcher sie/er am besten zurecht kommt. Ich persönlich mag Perl für kleine Admin-Skripte und für textorientierte Aufgaben. Dafür würde ich um keinen Preis C oder Java nehmen. Für systemnahe Programmierung ist wohl C wieder besser geeignet (obwohl auch hier Perl umfangreiche Libraries bietet *1).
Kurz und gut: Jedem das Seine und seien wir froh, gibt es (gerade in der OpenSource-Welt) eine so grosse Auswahl an Programmiersprachen, so dass jede/r ihre/seine liebste Sprache aussuchen kann.
Gruss, tuxedo
--
*1 Python wohl auch, nur kenn ich mich mit dieser Sprache nicht aus.
|
|
|
|
|
|
|
|
|
|
|
|
|
Klar, the right tool for the job gilt natürlich immer. Aber man kann sehr wohl Abstufungen machen zwischen Low Level, High Level und Skriptsprachen machen. Meistens ist C/C++/Java völlig ungeeignet für etwas wo man ernsthaft eine Skriptsprache in Erwägung zieht.
Und ja, auch das Klammermonster LISP hat seine Anwendungen. Man muss fairerweise auch sagen, dass es sich dort um ein anderes Paradigma handelt (Funktionale Programmierung).
Ich würd Python einfach mal anschauen, ich bin sicher, du wirst nichts anderes mehr mögen. Ich musste es für einen Job lernen, und hatte anfangs auch Vorurteile (och, nicht noch ne Skriptsprache...), aber nach ner Weile kam dann das grosse Aha-Erlebnis ;-)
cheers, asuzuki
|
|
|
|
|
|
|
|
|
|
|
|
|
Also erstens würde mich interessieren, was tuxedo bitte an LISP unsauber findet, denn immerhin ist es eine sehr konsequent umgesetzte Sprache... Dass die Syntax vielleicht einem nicht gefällt, kann ich nachvollziehen (auch wenn ich sie schön finde), aber LISP ist eine der letzten Sprachen, der ich Unsauberkeit unterstellen würde.
Und zweitens: Bei LISP handelt es sich keinesfalls nur um funktionale Programmierung, Common Lisp ist eine Multiparadigmensprache: funktional, prozedural, objektorientiert, aspektorientiert, applikativ ... wobei das Objektsystem noch um einiges mächtiger ist als die Objektsysteme anderer sich objektorientiert schimpfenden Programmiersprachen. Common Lisp setzt Objektorientierung noch konsequenter um als Ruby[1] und unterstützt zudem Methodenkombinationen und multiple Dispatch.
Die Klammern in Lisp haben auch ihren Grund: der Quellcode des Programms selbst besteht aus Lisp-Objekten, nämlich aus Listen und Bäumen, was eine große Flexibilität ermöglicht: man kann der Sprache einfach neue Syntax hinzufügen.
Was mich an Python stört: es unterscheided zwischen Statement und Expression ... in Ruby und Lisp gibt einfach alles einen Wert zurück. Wobei mir einfällt: "Lisp programmers know the value of everything but the cost of nothing". ;)
[1] weil in Ruby die Methoden nicht automatisch Objekte sind, sondern erst zu solchen gemacht werden müssen)
|
|
|
|
|
|
|
|
|
|
|
|
|
Damit habe ich eigentlich nicht gemeint, das LISP unsauber ist. Der passendere Ausdruck wäre wohl unkryptisch oder so ;)
Sehr viele Sprachen basieren ja AFAIK schlussendlich auf LISP. Also nichts gegen LISP an sich, wem's gefällt, der soll's benutzen.
Gruss, tuxedo
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ich würd Python einfach mal anschauen, ich bin sicher, du wirst nichts anderes mehr mögen.
Hab's mir vorgenommen. Aber irgendwie kann ich mich mit dem "Whitspaces als Teil der Syntax"-Gedanken (wenn man das so ausdrücken kann) nicht anfreunden.
Gruss, tuxedo
|
|
|
|
|
|
|
|
|
|
|
|
|
Genau so gings mir auch als ich in der Firma mal ein paar alte Proggies abändern musste. Seit da hab ich Python nie wieder angeschaut...
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Man muss fairerweise auch sagen, dass es sich dort um ein anderes Paradigma handelt (Funktionale Programmierung).
Schwachsinn. Lisp ist nicht von Haus aus funktional, im Gegenteil. Es ist nur so, dass man mit funktionaler Programmierung in Lisp relativ weit kommt, da man sonst Macros bemuehen muss.
|
|
|
|
|
|
|
|
|
Von Anonymer Feigling am Sunday 17. October 2004, 17:10 MEW (#27)
|
|
|
|
|
Ich würde Ruby keineswegs als Mitglied der Perl-Familie betrachten. Ruby hat von so ziemlich jeder Programmiersprache die ich kenne ein paar Bissen, meiner Meinung nach meistens die Besten, abgekupfert.
Perl war da sicher auch beteiligt, aber keineswegs als "Stammvater".
Woher kommen eigentlich die anonymen Blöcke in Ruby?
foreach(1..10) { |number|
echo number + endl
}
|
|
|
|
|
|
|
|
|
Von Anonymer Feigling am Sunday 17. October 2004, 17:48 MEW (#28)
|
|
|
|
|
Anonyme Blöcke in Ruby: wenn mich nicht alles täuscht, sind die aus Smalltalk, wie hier:
http://www.99-bottles-of-beer.net//s.html#SmallTalk
[murphy]
|
|
|
|
|
|
|
|
|
Von Anonymer Feigling am Monday 18. October 2004, 01:48 MEW (#31)
|
|
|
|
|
Ruby hat aber keine multible Vererbung. Ist das jetzt schlecht? Ich habe diese bei Java nur in Ausnahmefällen vermisst.
chvt
|
|
|
|
|
|
|
|
|
Von Anonymer Feigling am Monday 18. October 2004, 12:16 MEW (#34)
|
|
|
|
|
Ich habe multiple Vererbung bisher noch nie eingesetzt. Die einzigen Anwendungsfälle sind (meiner Meinung nach) durch Interfaces (z.B. Java) doch abgedeckt. Oder gibt es da Sachen die man wirklich braucht und sich durch Interfaces nicht verwirklichen lassen?
|
|
|
|
|
|
|
|
|
|
|
|
|
*uäh* Python, eine Sprache, bei der die Einrückung essentiell ist. *grusel* ;-) Die Python-Dosis, die ich beim Mailman-Patchen abbekommen habe, hat mir jedenfalls für ein paar Jahre gereicht.
Naja, ich mag halt Perl, finde es auch schon lange nicht mehr kryptisch. Selbst JAPHs haben ihren Schrecken seit Jahren verloren. Wie meinte mal jemand so schön: "Perl ist der gelungene Versuch, einen Braindump ausführbar zu machen." Selbst GUIs kann man (egal ob nun mit wxWidgets oder Tk) recht schnell basteln. Und für dynamische Webseiten kommt mir sowie nix anderes in die Tüte, äh, in den Apache. Wobei das da dann Embperl, Template-Toolkit oder Slashcode sein kann. Hauptsache kein PHP oder JSP. PHP ist sowieso grausam. Hat bei mir ungefähr das gleiche Image wie VisualBasic. Sowohl vom Konzept her (keines), den Altlasten (PHP1 war in Perl geschrieben, wovon VisualBasic abstammt, sagt der Namen schon) als auch den Sachen, die damit programmiert werden. *rant* :-)
Wobei ich auch zu denjenigen gehöre, die Perl 6 seit jeher verteufeln und mit Sicherheit noch lange Zeit bei Perl 5 bleiben werden. Die Änderungen in der Syntax finde ich einfach nur heftig. Der Schritt von Perl 4 zu Perl 5 (Möglichkeit des objekt-orientierten Programmierens) war harmlos dagegen.
Lisp-artige Sprachen gefallen mir auch ganz gut, egal ob als "sauberes" Scheme, "unsauberes" Common-Lisp (Huhu RvB! *duck*) oder ganz übles Emacs-Lisp. ;-)
C geht so, am besten gefällt mir Apache-C. ;-)
Java mag ich weniger: Für Applets, wenn's denn sein muß, ganz ok, aber sonst? Nein, danke! Und bzgl. der Portabilität: Perl läuft auf mehr Hardware-Plattformen als Java...
C++ mag ich btw noch weniger. Aber wer mag das schon... ;-)
--
There is no place like $HOME
|
|
|
|
|
|
|
|
|
|
|
|
|
Huhu XTaran. ;)
Du brauchst dich gar nicht ducken: auch ich finde Scheme sauberer als Common Lisp, allerdings ist zweiteres für mich wegen des großen Standards weitaus "einsetzbarer". Schemes Syntaxdefinitionen sind außerdem "hygienischer" als Common LISPs Makros, allerdings lässt sich mit CL-Makros mehr machen und ich würde die Sprache nicht unsauber nennen.
Auf meinem Palm programmiere ich allerdings gerne Scheme, denn die dortige Scheme-Implementierung "LispMe" bietet eine adäquate Entwicklungsumgebung und hat alles Nötige zum Schreiben von Palm-Anwendungen. :)
|
|
|
|
|
|
|
|
|
|
|
|
|
Perl? Python? PHP? Bleib' mir vom Leib.
Bei Perl ist /dev/urandom ausführbar.
Bei Python ist WHITESPACE signifikant, BITTE?
Bei PHP... ist es zu leicht, unsicheren Code zu
schreiben - dafür ist die Sprache immerhin so
beschränkend, daß man meist verstehen kann, was
gemeint ist.
Nein, SHELL ist das einzig Wahre, zum Beispiel
in http://wiki.mirbsd.de/MirbsdKsh - die kann
einiges mehr als die GNU Bash, z.B. Coroutinen
(gut für Datenbankabfragen).
Achja: GUIs, nicht "GUI's"(sic!).
Siehe http://wiki.mirbsd.de/ApoStrophen oder
wahlweise http://linuxwiki.de/ApoStrophen
-- Ich bin BSDler, ich darf das!
|
|
|
|
|
|
|
|
|
|
|
|
|
Sorry, aber was ist eigentlich so verdammt schlimm daran, dass Python Whitespace als Indentation verwendet? Vermutlich hast du nicht eine Zeile Pythoncode geschrieben, denn man gewöhnt sich sehr schnell dran, und will es bald nicht mehr missen.
Wirkt für mich ehrlich gesagt mehr wie ein billiger Trollversuch, aber das kommt bei dir ja öfters vor.
|
|
|
|
|
|
|
|
|
Von Anonymer Feigling am Saturday 16. October 2004, 21:20 MEW (#16)
|
|
|
|
|
Es ging ihm weniger darum was zu kritisieren, als mal wieder fuer "sein" OS zu werben...
|
|
|
|
|
|
|
|
|
Von Anonymer Feigling am Sunday 17. October 2004, 09:17 MEW (#22)
|
|
|
|
|
so hab ich das auch verstanden... nur peinlich, wenn die leute es eben merken. ich denke mirbsd waere nicht mal so schlecht, aber wenn ich mir leute wie mirabile ansehe, dann werd ich mich noch lange hueten, so etwas auch nur anzutesten. tja, wie man's verkauft spielt eben immer noch eine rolle
|
|
|
|
|
|
|
|
|
|
|
|
|
Nunja, ich arbeite viel mit Leuten zusammen, die
nvi oder vim als Editor nutzen, und habe andauernd
Streß mit ihnen, weil ihre Editoren, besonders
vim, Probleme mit der korrekten Anwendung von
Whitespace haben.
Sicher, es ist zwar fast alles PEBKAC und Sache
davon, wie man es konfiguriert, aber in einer
Datei plötzlich 8 Spaces statt eines TAB (huhu
Makefile) zu haben, oder sowohl TAB- als auch
4-Space(yuck!)-Indention, ist mehr als ärgerlich.
Überflüssiger Whitespace am Ende der Zeile oder
Datei nervt nur, aber es nervt eben.
Davon unabhängig ist die Verwendung von
Whitespace - egal welcher Art - keine Sache, die
die Programmiersprache, sondern der Coding-Style,
den man verwendet, bestimmt. Zumindest finde ich
das.
Gruß
(nein, kein Trollversuch.)
-- Ich bin BSDler, ich darf das!
|
|
|
|
|
|
|
|
|
|
|
|
|
Da kann ich nur ":help modeline" sagen: vim wie auch emacs sind in der Lage am Anfange und am Ende einer Datei nach Konfigurationsanweisungen zu suchen, wie z.B.:
# vim: ts=4 sw=4 et ft=UTF-8
aka.
# vim: tabstop=4 shiftwidth=4 expandtab fileencoding=UTF-8
So wo ist das Problem - der Python-Support von vim ist nämlich hervorragend. Ist sogar via Python skriptbar, das Teil. Achso vergass, Deine l33ten Freunde sind zu doof vim, statt der verkrüppelten BSD-Variante zu benutzen. Oder sie fühlen sich zu l33t für RTFM. Ok, dann sollen sie ruhig weiter FUD verbreiten.
Für meinen Teil jedenfalls mag ich die indentbasierte Syntax von Python: Die Spaces tippt man sowieso, ob sie nun zur Syntax gehören oder nicht. Sie taugen zum eindeutigen Identifizieren der Codeblöcke. Somit stellt sich die Frage, warum um alles in der Welt soll ich mir ständig via -7 und -0 die Finger verbiegen? Nein , ich bin Deutscher und benutze Umlaute - "verwend' halt 'ne englische Tastatur" gilt also nicht als Argument. -- Addicted by code poetry...
|
|
|
|
|
|
|
|
|
|
|
|
|
Versuche Du mal, die Gewohnheiten von Leuten zu
aendern. TOFU hab ich den meisten noch nicht
abgewoehnt bekommen, und unified statt context
diffs zu schicken hat mich auch einiges an
Yberzeugungsarbeit gekostet - besonders bei denen,
die "nur 'mal nen patch" schicken wollten.
Und _ich_ verwende ed statt (n)vi. Oder jupp.
Nochwas: Du bist nur Ost-, kein Deutscher ;-)
*ducks & runs*
Ansonsten solltest Du Dich mal auf http://fsinfo.cs.uni-sb.de/~abe/typing-8bit.html umschauen.
-- Ich bin BSDler, ich darf das!
|
|
|
|
|
|
|
|
|
|
Von Anonymer Feigling am Sunday 17. October 2004, 01:10 MEW (#20)
|
|
|
|
|
genau!
[chris@hirnlego ~]$ gcc /dev/urandom
/usr/bin/ld:/dev/urandom: file format not recognized; treating as linker script
/usr/bin/ld:/dev/urandom:1: syntax error
collect2: ld returned 1 exit status
|
|
|
|
|
|
|
|
|
Von Anonymer Feigling am Sunday 17. October 2004, 01:43 MEW (#21)
|
|
|
|
|
Also m4 kommt etwas weiter mit urandom.
Hier:
$ m4 /dev/urandom
Ç6ŽrÎjQcÌêy
oyñ Âg_è¢ú±ÿ|KBuqNo³vÐÒõDÔX±Ó4^eŒQ©jØb'l¡[/MmçÎçöôcÓOãäŒ?
ÀbœðABɪnhInŽiÍì~œdkÁF$
zálÐÄ{Pœ8oêé"-¶šcI{P(
v4¡dͱÆ$hmõs1=~dKÊ®
©²á
>šØ`{ù5DzÏ-ÁVôêZÃ$
S`:ÃɶÆæ(dC\[zyCÙeκ3å;
K>hRñnéݵfªÛpåÎiË:C³1è8yªÁ&zU°þtøwÌ+5Üt
=#Ÿo2CY+ž|YÛD
ä..orcŽðïNœ zÕg[Nòt/+yàJìE¥bÕ?±Ž cÞ
szH0ÇÓYP(1*Þpx !ñ~Õï ÁyÕFar=Fi"Õ_¥XWEØ|ªäá(È*[.·nTKÛ qÔUNœañ¶q~Sœ Û{fZt
ÿÎìPpœkx-ÎÌt)Æ ž)ô¥JPLïñpCËÇ9
û[QGççláÏŸÕ~5í¶ŒÎÞ&W,òæžÃSUxò€?î)]$kêVN. ua.K
§
C E¿Úµ^[[?1;2c^[[?1;2c^[[?1;2c^[[?1;2c
crazy@crystal-debian:~$ ?1;2c^[[?1;2c^[[?1;2c^[[?1;2c
...
chvt
|
|
|
|
|
|
|
|
|
Von Anonymer Feigling am Saturday 16. October 2004, 17:36 MEW (#5)
|
|
|
|
|
Ja ich habe ähnliche Erlebnisse gehabt,
dennoch glaube ich, dass man dieses Thema objektiver
betrachten muss, und sich zur Vergleichbarkeit,
mehr Quellcodeteile eines Projekts anschauen sollte, an dem viele unterschiedliche Entwickler mitgearbeitet haben,
ein Beispiel wäre da "webmin", das fdisk-modul
oder auch die Mandrake Tools version 9.1/9.2
(da weiss ich nicht mehr welches Modul),
aber die MDK-Tools in Version 9.1 u. 9.2
zeigen doch sehr unterschiedlich gute Codemarkups
von sehr gut lesbar, bis hin zu PÖÄHRL!
|
|
|
|
|
|
|
|
|
|
|
|
|
In meinem professiellen Umfelt habe ich schon zwei bis drei mittlere Perl-Projekte durchgezogen. Diese haben eigentlich immer als Kleinprojekte angefangen und sind dann organisch gewachsen.
Die wichtigsten Gründe die für Perl als Sprache war, dass dieses schon installiert war, wir es schon etwas kannten und dass die benötigten Bibliotheken in 5 Minuten ab CPAN installiert waren.
Perl als Sprache war eher ein Gegenargument, die Syntax ist zu komisch und nicht unbedingt intuitiv. Heute würde ich für die selben Dinge eher zu Python greifen, dieses war damals allerdings zu neu und unbekannt.
Wenn eine neue Release von Perl zu den alten nicht kompatibel, verliert es seinen grössten Wert, die Module auf CPAN. Da schwenke ich dann lieber auf was modernes (wie Python) um, das in Bezug auf verfügbare Module auch aufholt.
Markus
P.S. Persönlich hasse ich die Blockbildung per Einrücken von Python. Ein klassischer Mechanismus mit geschweiften Klammern wäre mir viel lieber. Der Rest ist ausgezeichnet. Bei Perl gefällt mir der Konstrukt while () { if (/toto/) { blabla; } }, das ist ja aber auch fast das einzige das ich mag...
|
|
|
|
|
|
|
|
|
Von Anonymer Feigling am Saturday 16. October 2004, 19:01 MEW (#12)
|
|
|
|
|
das einzig wahre ist Shell Programmierung. Die GNU Bash ist jedermans Freund. Perl ist zu komplex, Bash Programmeriung kann einfach jeder!
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Das Argument "GNU bash kann einfach jeder" stößt
bei mir gleich zwei Mal übel auf.
Einmal wegen der GNU bash - ich verwende zwar
mittlerweile auch ksh-eigene Features, das ist
dann aber auch a) unportabel gedacht und b)
dokumentiert. Sonst denke ich, ist es 'best
practice', wenn Bourne Shell (sh) wirklich nicht
ausreicht, nur die Schnittmenge der Erweiterungen,
die sowohl bash als auch ksh können, zu verwenden.
Die meisten Skripte, die GNU bash verwenden,
laufen auch mit #!/bin/sh - aber viele vergessen,
daß es nicht überall eine /bin/bash gibt (die
liegt dann z.B. in /usr/local/bin).
Das zweite ist das "kann einfach jeder". Das ist
nämlich der Ruin von PHP - und wenn "jeder"
anfängt, in Shell zu schreiben, haben wir das
gleiche Problem wie bei PHP (nur daß es in Shell
etwas diffiziler ist, sich auszudrücken - eine
nette Newbie-Sperre) oder den unleserlichen
Perl-Skripten (von denen ich zugegebenermaßen
nicht viel mitbekommen habe - cvsweb, sirc und
usemod-wiki sind erstaunlich wart- und lesbar
geschrieben, selbst wenn man kein Perl kann, und
auch cgiirc ist in Maßen anpaßbar).
Gruß
-- Ich bin BSDler, ich darf das!
|
|
|
|
|
|
FUD (Score:4, Interessant)
|
|
|
|
|
|
|
|
Der Autor des Artikels und viele Kommentatoren hier sind wohl vom Blub Paradox betroffen:
As long as our hypothetical Blub programmer is looking down the power continuum, he knows he's looking down. Languages less powerful than Blub are obviously less powerful, because they're missing some feature he's used to. But when our hypothetical Blub programmer looks in the other direction, up the power continuum, he doesn't realize he's looking up. What he sees are merely weird languages. He probably considers them about equivalent in power to Blub, but with all this other hairy stuff thrown in as well. Blub is good enough for him, because he thinks in Blub.
Perl 6 ist viel mächtiger als Perl 5, genauso wie Perl 5 mächtiger als Perl 4 ist. Das Problem ist einfach, dass Perl 6 zusammen mit Ruby und Python sehr weit oben im "power continuum" ist (direkt unter den Lisp-artigen Sprachen) und deshalb von den meisten als komisch und kryptisch abgetan wird.
Ich beschäftige mich jetzt bereits seit 3 Jahren mit Perl 6 und muss sagen, dass ich es kaum erwarten kann, bis es erscheint. Wer sich mit Perl 6 auseinander setzen möchte, soll Perl 6 and Parrot Essentials lesen und nicht einen Artikel eines frustrierten Perl 5 Programmieres, der fürchtet, dass Perl 6 nicht mehr Perl sein wird.
--
Real programmers can write assembly code in any language. :-)
--Larry Wall
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Wie soll eigentlich Perl 6 in die Betriebssysteme
kommen, wenn Perl 6 Parrot braucht, und Parrot
Perl 5 (mindestens) zum Bauen braucht?
Ablösen kann es es so nicht...
Gruß
-- Ich bin BSDler, ich darf das!
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Danke für die Info. Davon habe ich bisher noch nie gehört, obwohl ich mir schon einige Papers zu Perl 6 angesehen habe. (Wobei mir ehrlich gesagt trotzdem noch nicht ganz klar, was nun an Perl 6 mächtiger sein soll als an Perl 5, außer vielleicht durch die Trennung von Perl-Parser/-Compiler und dem Parrot-Interpreter...)
Parrot an sich finde ich eine ziemlich gute Idee, nur eben die Syntaxänderungen in Perl 6 (_ vs . vs ->, $ vs @ vs %, etc.) überhaupt nicht.
BTW: Ist das Absicht, daß Poniecode fast wie Punycode klingt?
--
There is no place like $HOME
|
|
|
|
|
|
|
|
|
|
|
|
|
Perl 6 wird einige sehr nette Eigenschaften habe. Manche sind nur syntactic sugar, andere sind wiederum viel mehr.
Syntactic sugar sind z.B. junctions, der Zip-Operator/Funktion, Smart Match sowie das neue switch-Statement:
# Junctions:
if ($value == 1) || ($value == 2) { ... }
# entspricht
if $value == 1 | 2 { ... }
# Zip-Operator/Funktion:
@a = (1, 2, 3);
@b = (4, 5, 6);
@c = zip(@a, @b) # @c ist (1, 4, 2, 5, 3, 6)
# Smart Match
# damit können Skalare, Listen, Arrays,
# Hashes, Junctions, Objekte und Subroutinen
# verglichen werden
# Objekt:
$ship ~~ Vogon::Constructor # entspricht $ship.isa(Vogon::Constructor)
# Junctions
/illi/ ~~ all("Gillian", "million", "Trillian") # true
/illi/ ~~ one("Zaphod", "Ford", "Trillian") # true
/illi/ ~~ none("Zaphod", "Ford", "Trillian") # false
# switch Statement
given $bugblatter {
when Beast::Traal { close_eyes(); }
when 'ravenous' { toss('steak'); }
when .feeding { sneak_past(); }
when /grrr+/ { cover_ears(); }
when 2 { run_between(); }
when (3..10) { run_away(); }
}
# hier können als Vergleiche dieselben Objekte
# wie beim Smart Match Operator verwendet werden.
# Eigentlich ist given ... when nichts anderes als
given $bugblatter {
when $_ ~~ Beast::Traal { ... }
...
}
Neuerungen sind Grammars and Rules mit denen endlich lesbare Regular Expressions geschrieben werden können. Zudem gibt es nun ein schönes Objekt-Modell mit Attributen, Rollen (in etwa vergleichbar mit Interfaces in Java oder traits in Smalltalk), anonymen Klassen, Information Hiding ohne dass Closures verwendet werden müssen, etc. Apocalypse 12 erklärt das Objekt-Modell ausführlich.
Was die Syntax-Änderungen angeht, so sind diese für den Anfänger logischer und für den fortgeschrittenen Perl-Programmierer eigentlich schnell zu lernen. Ein Skalar wird immer mit $, ein Array immer mit @ und ein Hash immer mit % angesprochen. Die neue Syntax ist konsistent, denn auch wenn nur ein Element eines Arrays oder Hashes gefragt ist, wird immer mit @ bzw. % darauf zugegriffen. Die Änderung von ., _ und -> wurde notwendig, weil es nur begrenzt viele Operatoren gibt.
Ponie heisst übrigens "Perl On New Internal Engine" ;)
Mehr zu Perl 6 gibt es auf dev.perl.org und perl.com. Einen Ausschnitt aus "Perl 6 and Parrot Essentials" gibt es ebenfalls auf perl.com. Es handelt sich dabei um das dritte Kapitel der ersten Ausgabe, Perl 6 Design Philosophy und sollte alle beruhigen, welche befürchten, dass Perl 6 nicht mehr Perl sein wird.
--
Real programmers can write assembly code in any language. :-)
--Larry Wall
|
|
|
|
|
|
|
|
|
|
|
|
|
Ok, entweder gab's davon einiges noch nicht, als ich mich mit Perl 6 beschäftigt habe (vor anderthalb bis zwei Jahren) oder ich hab das schon wieder vergessen gehabt. Danke jedenfalls für die ganzen Details!
Klingt ja doch nicht ganz so düster, die Zukunft... Nur wenn ich mir den Teil zu "Grammars and Rules" ansehe, dann wird glaubbich Perl mit Perl 6 noch viel kränker als bisher. (Und das ist gut so. ;-)
/me fragt sich, wann die ersten JAP6Hs auftauchen.. ;-)
--
There is no place like $HOME
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Jo, wir haben im www.netzladen.org bei www.luusa.org
auch 'nen lokalen Perl-Monk, der das verbreitet
(und sogar schon mal Parrot auf MirOS gebaut hat,
ich hab ihm 'ne Shell gegeben).
-- Ich bin BSDler, ich darf das!
|
|
|
|
|
|