Ich programmiere jetz schon fast 4 Jahre sporadisch in FB. Mittlerweile kann ich sowohl quick & dirty i-welche snippets coden, als auch gut strukturierten Code basteln. Nur... FreeBASIC ist keine tolle grundlage um andere sprachen zu lernen, bzw netzwerk- oder cluster-software zu schreiben. Klar, auch für FB gibt es schon libs für alles, aber die implementierungen sind meistens eher notdürftigt.

Ich hab mich schonmal in richtung Python umgeguckt. Mit dem ergebniss das ich ich Python zwar lesen kann, aber schreiben geht genausowenig wie vorher... auch weil ich nie wirklich angefangen hab das zu lernen. C bzw C++ sind zwar schnell und auch für mich annähernd lesbar, aber ich trau mich nicht so wirklich an den Syntax ran.

Dann hab ich mir den Syntax mehrerer scriptsprachen angeguckt.. hängengeblieben bin ich dann bei Erlang.

Meine frage: Lohnt es sich erlang zu lernen? Was genau lässt sich damit schreiben und wie sieht es mit den Libs aus(Gtk/QT, netwerk-kram, etc)? Und ganz wichtig: Wo finde ich ein gutes deutsches tutorials und ein paar gute Codes mit denen ich rumspielen (und lernen) kann?

mfg
The_Muh

P.S.: Ich weiß das zwischen erlang und FreeBASIC welten liegen, aber was ich von erlang gesehen habe gefällt mir um einiges mehr als Python, Ruby oder Perl.
Es lohnt sich meiner Ansicht nach immer, eine weit verbreitete, universelle Sprache zu lernen, und sich von dort aus zu spezialisieren. Für erstere kämen heute zweifellos C++ und Java in Frage. Wenn Dir C++ zu schwierig ist (was ich gar nicht verstehen kann ...), dann versuch Java, da lernst Du was fürs Leben. Von Java aus später einen Schritt zu einer anderen objektorientierten Sprache zu machen, sollte dann nicht mehr sooo schwierig sein (wenn man vielleicht mal von Smalltalk absieht ...)

Eine Frage ist allerdings generell, was Du damit machen willst. Wenn Du ein handfestes Projekt hast, musst Du eigentlich anhand der Anforderungen eine Sprache wählen. Das kann (eine strukturierte,) eine objektorientierte, eine funktionale oder eine Scriptsprache sein, je nach Einsatzzweck.
T.M. schriebEine Frage ist allerdings generell, was Du damit machen willst. Wenn Du ein handfestes Projekt hast, musst Du eigentlich anhand der Anforderungen eine Sprache wählen. Das kann (eine strukturierte,) eine objektorientierte, eine funktionale oder eine Scriptsprache sein, je nach Einsatzzweck.
Direkt geplant habe ich nichts, aber ich will mir schon seit längerem einen IRC-client coden, mit FreeBASIC geht das zwar, aber ich wollte schon gerne mit GTK arbeiten, und das ist in FreeBASIC eine katastrophe. Einen Chat-server wollte ich auch schon immermal schreiben. Auch das geht in FB, aber schwierig (der chatserver ist übrigens nicht direkt für mich).

Konkret wollte ich mich erstmal nach lohnenswerten, einfach zu lernenden Alternativen zu FreeBASIC umgucken. Zu C und C++ werd ich früher oder später sowieso kommen (zumal ich im Fachinformatik-bereich mein geld verdienen möchte). Java.. was ich so über java gehört und gelesen habe reicht mir. Ich als minimalist bin sowieso kein freund der java-VM...

Python ist mir übrigens zu ordentlich. Durch die gezwungene "lesbarkeit" des Codes, geht meinermeinung nach oft die übersicht flöten. Außerdem hab ich gern die freiheit code so zu schreiben, wie ich das für richtig halte, und nicht wie sich die entwickler der sprache das vorstellen (von wegen einrückung).

Mfg
The_Muh

PS: Bei C/C++ find ich die sache mit den vielen includes i-wie verwirrend...
Ich würde eher zu Python raten. Da wird dir das Programmierparadigma nicht vorgeschrieben, und die Syntax erscheint mir wesentlich einfacher als die von C++. Und Java ist einfach nur furchtbar.
Finde Java jetzt nicht direkt furchtbar; die Standard-Lib ist halt sehr gut dokumentiert und ziemlich umfangreich. Die Sprache selbst ist aber meiner Meinung nach zu restriktiv, zwingt einen zu Boilerplade-Exzessen und ist leider auch nicht wirklich sprachlich "sauber"; sie ist zum Beispiel nicht durchgängig objektorientiert, was zu solchem Mist wie AutoBoxing etc pp führt.

Aber mit Eclipse und dem SDK kann man schon recht angenehm damit coden. Nachteile sind imho: Java ist unter Linux nicht sooo verbreitet (ich habe kein JDK mehr installiert) und GTK ist unter Java auch nicht wirklich einfach, da das eigentlich eher ein "Fremdkörper" ist. GUIs werden mit Java meistens mit Java-Swing gemacht und die GUIs sind eher übel.

C++ ist eigentlich recht verbreitet, dass heißt es gibt auch Tonnen von Libs und Bindings für alles möglich. Die Sprache selbst ist aber imho echt beschissen zu lernen.

Schnelleren Erfolg wirst du wohl eher mit Python oder Perl (die Einarbeitung in die OO ist etwas mühsamer, mit Moose aber auch recht gut) haben; Interpreter sind eigentlich bei jeder (Desktop) Linuxinstallation vorhanden. Die Interpreter sind aber meistens langsamer als java 6.
The_Muh schrieb Python ist mir übrigens zu ordentlich. Durch die gezwungene "lesbarkeit" des Codes, geht meinermeinung nach oft die übersicht flöten. Außerdem hab ich gern die freiheit code so zu schreiben, wie ich das für richtig halte, und nicht wie sich die entwickler der sprache das vorstellen (von wegen einrückung).
Da kann ich eigentlich eher zu Perl raten. Die Sprache erlaubt einem wirklich große Freiheiten, der Code ist aber meiner Meinung nach dennoch sehr lesbar (ich persönlich verstehe nicht, warum Perl da so einen schlechten Ruf hat; habe aber vermutlich noch zu wenig Perl-Code gesehen).

Wenn du unbedingt kompilierten Code haben willst, kommst du meiner Meinung nach an C++ (c würde ich zur Anwendungsentwicklung nicht verwenden) nicht wirklich vorbei. Alternativen wie D und Erlang sind einfach zu selten, um damit schnell entwickeln zu können.

Deine Aversion gegen die JVM oder andere VMs kann ich verstehen, aber ich denke davon muss man sich mittlerweile lösen. Praktisch jede Hochsprache braucht ihre Laufzeitumgebung und die JVM ist (vom starten abgesehen) auch nicht wesentlich langsamer als C++Code.
The_Muh schriebKonkret wollte ich mich erstmal nach lohnenswerten, einfach zu lernenden Alternativen zu FreeBASIC umgucken.
Zu FreeBASIC ist so ziemlich alles eine lohnende Alternative, glaub ich.
The_Muh schrieb Zu C und C++ werd ich früher oder später sowieso kommen (zumal ich im Fachinformatik-bereich mein geld verdienen möchte). Java.. was ich so über java gehört und gelesen habe reicht mir. Ich als minimalist bin sowieso kein freund der java-VM...
Darum geht's ja auch nicht. Zum Begreifen, was objektorientierte Programmierung ist, wie es funktioniert, wie man Klassenbibliotheken benutzt und erweitert, ist Java hervorragend geeignet, besitzt allerdings längst nicht die Strenge und Komplexität von C++. Es gibt übrigens ganz hervorragende Java-Applikationen (sag ich alter, grauer C++-Wolf ...)
Was meinst du damit, dass Java nicht die Strenge von C++ besitzt? Ich muss ehrlich sagen, (Python kenne ich nur oberflächlich), dass ich keine Sprache kenne die weniger Freiheiten lässt als Java.
Kinch schriebDa kann ich eigentlich eher zu Perl raten. Die Sprache erlaubt einem wirklich große Freiheiten, der Code ist aber meiner Meinung nach dennoch sehr lesbar (ich persönlich verstehe nicht, warum Perl da so einen schlechten Ruf hat; habe aber vermutlich noch zu wenig Perl-Code gesehen).
Das Problem mit Perl ist, dass es so ziemlich alles erlaubt und irgendwie interpretiert. Nichts, was nicht irgendeine Bedeutung hätte. Selbstverständlich kann man in Perl vernünftige und saubere Programme schreiben. Aber es erlaubt eben auch (und zwar absichtlich) furchtbarsten quick-and-dirty-style, absolut unlesbar, selbst für den, der es geschrieben hat, nicht zu erklären, nicht zu debuggen, nicht zu warten, aber irgendwie funktioniert's halt. Perl hat zudem erhebliche Schwächen in der Syntax, $_ ist einfach kein Name für eine Variable, beispielsweise auch überhaupt diese Sonderzeichen, die an Bezeichnern dranhängen und den Typ steuern. Das ist etwas Urtümliches, ich könnte auch sagen: etwas Primitives, das man in modernen Programmiersprachen nicht mehr findet. Oder die Mehrfachverwendung von Symbolen in Abhängigkeit von der Zugriffsart: wenn ich ein Array an eine numerische Variable zuweise (vielleicht nicht ganz präzise ausgedrückt), ist plötzlich die Anzahl der Elemente gemeint - d.h. impliziter Bedeutungswechsel - argh, grauenhaft! Ich weiss ferner gar nicht, wie weit moderne Perl-Versionen mit der Objektorientierung sind. Kann man denn jetzt richtige Klassen definieren?
Kinch schriebWas meinst du damit, dass Java nicht die Strenge von C++ besitzt? Ich muss ehrlich sagen, (Python kenne ich nur oberflächlich), dass ich keine Sprache kenne die weniger Freiheiten lässt als Java.
Ich behaupte, durch die automatische Speicherverwaltung, Mehrfachvererbung nur in Form von Interfaces und viele andere Dinge ist man in Java sicherer und schneller darin, ein Programm zu schreiben, das grundlegende Fehler nicht enthält. Für einen Anfänger ist es sicher schwierig, all die Dinge zu berücksichtigen, die C++ zwingend erfordert, die Header-Includes sind dabei das geringste Problem. Es gibt eben auch zahlreiche Stolperstellen in C++, die für einen erfahrenen Programmierer eher von Vorteil sind, die es aber einem Anfänger schwermachen. Generell halte ich C++ nicht unbedingt für schwieriger im Anspruch, es ist einfach umfangreicher und leistungsfähiger.
Deine Kritik ist sicherlich berechtigt. Aber ich finde es dennoch nicht wirklich schwer zu lesen; vielleicht liegt mir diese Art des programmierens einfach. Wenn man weiß, dass $_ eine implizite Variable ist, die halt in Schleifen von selbst definiert wird, ist es halt klar was damit gemeint ist.

Ein:
foreach(string s: array) {
  print s;
}
finde ich jetzt nicht wesentlich einfacher zu lesen als:
foreach(@array) {
  print $_;
}
Im Gegenteil: Es ist immer eigentlich eindeutig, was $_ meint; im Gegensatz zu freiwählbaren Bezeichnern. Zumindest gehts mir so.

Und wer das partou nicht mag, kann ja das "englisch"-Modul einbinden und englische Bezeichner für die Sondervariable lesen.

Und klar: Perl hat extrem viel syntaktischen Zucker. Aber ich finde nicht, dass das auf Kosten der Lesbarkeit geht. Ich finde ein:
do_something() unless(a == b);
leichter zu lesen, als:
if(a != b)
  do_something();
weil es einfach der natürlichen Sprache näher ist.

Na ja, ich weiß nicht, wie sinnvoll so eine Diskussion ist; vermutlich sind da die persönlichen Vorlieben einfach entscheidend.

Die Objektorientierung in Perl ist immer noch eher "gewöhnungsbedürftig", ja. Man kann natürlich richtige Klassen deklarieren, Verebung etc wird natürlich unterstützt, aber das Handling ist etwas behäbig (meiner Meinung nach), und auch da sind überdurchschnittliche Freiheiten möglich, die erstmal verwirren. Aber des gibt das Modul "moose", dass das auch eine eher traditionelle Objektorientung möglich macht.
(Und Perl 6 ist auch irgendwann fertig).

Edit: Deinem letzten Post stimme ich zu.
Von freebasic auf perl? Spinnt ihr? Zwischen dem FB- und dem Perl-Syntax sind welten! Das wäre ungefär so, als wenn ich programmieren nochmal komplett neu lerne... das war nicht wirklich mein plan. Ein bisschen ähnlichkeit im Synax wäre mir schon wichtig (beispielsweise der aufbau der if-klauseln, case-blöcke und strings bei denen man im normalfall nicht merkt, das es verkettete listen sind). aber ich weiß nartürlich das Basic-Sprachen für sowas keine tolle grundlage sind... der Syntax von *BASIC ist einfach zu eigen.

Zu python hab ich ja meinen senf schon abgegeben. Aber auch diese sprache werde ich in den nächsten jahren noch lernen.

Das Erlang nicht unbedingt für das erlernen von OOP geeignet ist stört mich nicht, FB ist da auch nicht wirklich toll für. Es fehlt unter anderem Vererbung, aber auch die Klassen sind keine richtige klassen, sondern "user defined types", damit kann man zwar halbwegs OOP programmieren, aber das ware ist es wirklich nicht.

Wie schon gesagt: Mich interessiert an Erlang vorallem die "Funktionale Programmierung". Ich benutze mittlerweile fast garkeine shared-varibalen (globale varis) mehr außer es muss sein. Das bei den wenigen globalen variablen trotzdem noch Seiteneffekte auftreten stört extrem. vorallem bei mehr als 2000 Zeilen code...
The_Muh schriebWie schon gesagt: Mich interessiert an Erlang vorallem die "Funktionale Programmierung".
Aber mal ehrlich: Wer nutzt das schon. Ich kenne ganz genau EIN Projekt in erlang, und das ist scheiße zu konfigurieren, und jedes Update ist ein Glücksspiel.
The_Muh schriebVon freebasic auf perl? Spinnt ihr? Zwischen dem FB- und dem Perl-Syntax sind welten! Das wäre ungefär so, als wenn ich programmieren nochmal komplett neu lerne... das war nicht wirklich mein plan. Ein bisschen ähnlichkeit im Synax wäre mir schon wichtig (beispielsweise der aufbau der if-klauseln, case-blöcke und strings bei denen man im normalfall nicht merkt, das es verkettete listen sind). aber ich weiß nartürlich das Basic-Sprachen für sowas keine tolle grundlage sind... der Syntax von *BASIC ist einfach zu eigen.

Zu python hab ich ja meinen senf schon abgegeben. Aber auch diese sprache werde ich in den nächsten jahren noch lernen.

Das Erlang nicht unbedingt für das erlernen von OOP geeignet ist stört mich nicht, FB ist da auch nicht wirklich toll für. Es fehlt unter anderem Vererbung, aber auch die Klassen sind keine richtige klassen, sondern "user defined types", damit kann man zwar halbwegs OOP programmieren, aber das ware ist es wirklich nicht.

Wie schon gesagt: Mich interessiert an Erlang vorallem die "Funktionale Programmierung". Ich benutze mittlerweile fast garkeine shared-varibalen (globale varis) mehr außer es muss sein. Das bei den wenigen globalen variablen trotzdem noch Seiteneffekte auftreten stört extrem. vorallem bei mehr als 2000 Zeilen code...
Wenn funktional, dann richtig: Haskell! Die einzig wahre funktionale Programmiersprache!
The_Muh schriebVon freebasic auf perl? Spinnt ihr? Zwischen dem FB- und dem Perl-Syntax sind welten! Das wäre ungefär so, als wenn ich programmieren nochmal komplett neu lerne...
Sehe ich komplett anders; die Fähigkeit zu Programmieren ist unabhängig von der gewählten Programmiersprache. Wenn man ein Paradigma beherrscht ist der Transfer auf die Syntax einer anderen Sprache imho eher trivial. Umfangreicher ist es, die Details der Sprache zu lernen und ihre Laufzeit-Umgebung; das wirst du aber bei jeder Sprache tun müssen.

Dass du den Umstieg von FB auf Perl scheust, aber dann von einer imperativen auf eine funktionale Programmierung umsteigen willst, finde ich etwas widesprüchlich.

Wenn du funktional Programmieren willst: Lisp, Scheme oder Haskell. Sind halbwegs verbreitet und unter Linux kein Problem zum Laufen zu bekommen.
Also eher Haskell als Erlang? Ist das genauso wie Erlang inner VM? Oder wie python in nem interpreter? Ich bin aus dem Wikipedia-artikel nicht wirklich schlauf geworden. Syntax sieht interssant aus. Und das keine polnische notation (oder wie heißt das? "+ 8 8") verwendet wird, find ich super =)

Kinch: Der Perl-Syntax sieht für mich aus wie mit Blowfisch verschlüsseltes Hebräisch. Eine der wenigen von mir "angeguckten" sprachen die ich absolut garnicht verstehe. Und das man damit code erzeugen kann, der wie ein Kamel aussieht, und sich selbst auf den Bildschirm zaubert, ist zwar beeindruckend, aber für micht nicht ausschlaggebend diese sprache zu lernen.

Dies sollte übrigens kein Flamewar werden. Ich wollte wissen ob es sich lohnt Erlang zu lernen. Die 4 Passenden antworten habe ich registriert und ich nehme die summe der teile mal als "Nein".
Ich würd jetz gern noch nen bissel über haskell wissen wollen (der wikipedia-artikel ist echt mist) und vielleicht nen link zu nen tutorial, wenn nicht die beteiligten hier der meinung sind, ich solle kein haskell lernen.
Die haupsächlich verwendete haskell-Implementation ist der Compiler ghc. In [extra] gibt es auch noch hugs, einen Interpreter.
The_Muh schriebAlso eher Haskell als Erlang?
Du solltest Dir überlegen, was Du eigentlich machen willst, auch perspektivisch, beruflich. Diese beiden Sprachen haben keinerlei praktische Bedeutung, wie auch 100 andere Computersprachen, so interessant und fortschrittlich sie vielleicht sind. Die Frage ist, gibt es einen Grund, warum Du so etwas lernen solltest, oder wäre es nicht vernünftiger, mit einer weit verbreiteten Sprache zu beginnen, allein schon wegen der vorhandenen Code-Basis, Leuten, Foren, Büchern usw., d.h. um überhaupt erstmal Programmieren bzw. Entwickeln an sich zu lernen, das Vorgehen, das Denken, den Umgang mit Projekten.

Ich würde Dir heutzutage dringend ein imperativ-objektorientiertes Fundament empfehlen (C++, Java, C#), nicht ein funktionales. Python wäre vielleicht sogar ideal, denn Du könntest später Programmierparadigmen verschiedener Welten mischen, wenn Du es unbedingt möchtest (dies ginge allerdings auch in anderen Sprachen, es kommt einfach darauf an, wie man was schreibt). Du wirst hingegen in der Praxis kaum irgendwo auf rein funktionale Sprachen treffen, behaupte ich, es sei denn in vergleichsweise seltenen, meist universitären Nischen.

Eine solche Entscheidung halte ich für wichtig. Gerade wenn Du Berufsanfänger bist, sind Deine Kenntnisse für einen Arbeitgeber schon ein bedeutsames Auswahlkriterium.
Hrmpf... ich glaub ihr habt recht =/

Nur sind meine bisherigen 3 versuche Python zu lernen auf mysteriöse weise gescheitert (ich bin kein buch-mensch. ich brauch ne referenz und nen code um zu lernen, kein tutorial). C ist gescheitert weil das Buch nicht zum Compiler passte (es funzten 0% der beispielcodes im buch). Java -> No way.
The_Muh schriebC ist gescheitert weil das Buch nicht zum Compiler passte (es funzten 0% der beispielcodes im buch). Java -> No way.
Nicht C, C++! Das ist ein grosser Unterschied, auch was die Portabilität angeht. Und bei Java wäre erstens Deine Lernkurve steiler und Du könntest zweitens später noch leicht auf C++ (oder C# oder Perl) umschwenken, wenn es die Situation erfordert.