Archiv verlassen und diese Seite im Standarddesign anzeigen : Hat wer Erfahrungen mit "anderen" Sprachen? (Nicht imperativ)
ceisserer
28-11-2002, 20:07
Servus!
Ich würde mich sehr gerne mit alternative Programmiersprachen beschäftigen, da ich der Meinung bin dass z.B. Sprachen wie Java nur suboptimal arbeitet, von C/c++ gar nicht zu schweigen.
Besonders interressieren mich Sprachen die einen anderen Ansatz als interpretative Sprachen haben. Also Sprachen, den man nicht jeden Schritt einprogrammieren muss, etwa so wie Haskell.
Ganz wichtig ist ein nativer Compilier und ein GTK-Binding. Automatisches Speichermamagement dürfte wohl eh kein Thema sein...
Kennt wer solche Sprachen, hat wer schon erfahrungen gemacht? Wie habt ihr empfunden, ists wirklich brauchbar? Ich interessiere mich was dass angeht wirklich für jeden "feuchten Scha*", es gibt ja nicht wirlich viel Informationen zu diesem Thema.
Hoffe ihr wisst was zu dem Thema, ich bin wirklich voll gespannt.
Mfg Linuxhippy
ich hätte ja Ruby eingeworfen, aber scheinbar arbeiten Interpretersprachen sowieso 'suboptimal' oder wie versteeh ich dein Posting ?
ansonsten www.ruby-lang.org
ceisserer
29-11-2002, 07:25
Hi!
Im Linux-Magazin war mal ein Beicht über Ruby, muss aber ehrlich sein, ich habe mich da nicht wieter eingearbeitet, da mir das Konzeot chon etwas sehr merkwürdihg vorkam...
Ja, du hast recht, eine Scriptsprache sollte es möglichst nicht sein, wenn dann schon was "ordentliches"....
Mfg Linuxhippy
ComSubVie
29-11-2002, 09:11
das java suboptimal ist weiß ich ja auch, aber was stört dich an c++?
wenn du all das nicht magst kannst du dir ja mal prolog ansehen, das ist nicht wirklich eine scriptsprache...
sehr praktisch und gut finde ich ruby und perl, auch wenn das skriptsprachen sind, mit ruby hab ich mich noch nicht so beschäftigt, aber mit perl solltest du keine probleme haben irgendwas zu machen...
peschmae
29-11-2002, 09:37
als M$ - Verfechter ;) bringe ich jetzt natürlich noch .NET ins Spiel :D
das ist extrem laufzeit-nativ-jit - kompilierter sch...
im Ernst: etwas wirklich perfektes kenne _ich_ nicht!
MfG Peschmä
anda_skoa
29-11-2002, 09:38
Ich hab mal mit Occam gearbeitet.
Das ist zwar auch eine imperatve Sprache, aber serh interessant weil hoch parallel.
Wurde für Transputer entworfen, die es leider nicht mehr gibt.
Dann hatten wir auf der Uni ein paar Sachen in SML, einer funktionalen Sprache.
Das ist am Anfang schon eine ganz schöne Umstellung, wenn man aus der imperativen Programmierung kommt :)
Ist aber wesentlich leichter als Lisp, das ja prakisch die bekannteste funktionale Sprache ist.
Ciao,
_
ceisserer
29-11-2002, 12:52
Moin!
@ComSubView:
das java suboptimal ist weiß ich ja auch
Warum sollte Java bitte suboptimal sein? Hast du damit schon einmal gerbaeitet? Ist zwar vom Sprachumfang her nicht ganz so mächtig aber wesentlich komfortabler als C++.
Lass mich raten, du hast noch nicht mit Java programmiert, falls doch, dann entschuldige, sollte keine Beleidigung sein.
@anda-skoa:
Und, was hältst du so davon? Ist weniger fehleranfällig oder produktiver oder was hast du davon gehalten? Ich finde den Ansatz irgendwie extrem genial, weil man halt nicht mehr so viel Synthaxgrübeln muss, und das braucht ja schließlich den großteil der Zeit....
Danke wie immer für die Antworten! Naja, das wine-tool werd ich halt mal in Java schreiben, mal sehen was ich danach machen soll.
Schade halt, dass bei alternativen Sprachen man ziemlich wenig Chance hat in der Community einen Helfer zu finden, wenn man nicht C/C++ nimmt. Java ist schon eher selten, richtig blöd wird dann bei Sachen wie Eiffel oder Haskel....
Mfg Linuxhippy
Original geschrieben von ceisserer:
Warum sollte Java bitte suboptimal sein?
Original geschrieben von ceisserer:
da ich der Meinung bin dass z.B. Sprachen wie Java nur suboptimal arbeitet...
Ja was denn nun ???
Gruß micha
anda_skoa
29-11-2002, 16:01
Original geschrieben von ceisserer
@anda-skoa:
Und, was hältst du so davon? Ist weniger fehleranfällig oder produktiver oder was hast du davon gehalten? Ich finde den Ansatz irgendwie extrem genial, weil man halt nicht mehr so viel Synthaxgrübeln muss, und das braucht ja schließlich den großteil der Zeit....
Wie schon gesagt, war es anfangs eine ziemlich Umstellung.
Funktionale Sprachen sind ganz gut, wenn man Daten transformiert.
Also zB eine Filterkette oder ähnliches.
Das coolste sind da Funktionen höherer Ordnung.
Die geben zB als Rückgabewert eine Funktion zurück, bzw nehmen Funktionen als Parameter.
Die Funktoren in der C++ Standardbibliothek sind da ja eine Entwicklung in diese Richtung.
Ciao,
_
ceisserer
29-11-2002, 18:35
@anda_skoa: Das hört sich wirklich verdammt geil an! Mal sehen wenn ich mehr zeit habe,´ werd ich mich da mal reinhaun...
@micha: Nein, so wars nicht gemeint. Java ist bisher das so ziemlich beste, was ich gefunden habe, natürlich in Funktionalität steht es C++ nach, aber was die wartbarkeit und die Struktur der Sprache angeht, finde ich sie toll.
Was ich als suboptimal bezeiche, ist die Art wie dem Computer mitgeteilt wird, was er machen soll. Bei Java oder C++ muss man dem Comuter schritt für schritt sagen, was er machen soll, was ich nicht für optimal halte.
Bei funktionalen Sprachen, sagt man dem Computer nur, wie das Ergebnis aussehen soll, nicht wie ers machen soll. Naja, hoffe das stimmt so, hab das auch noch nicht gane gechecked. (Auch wenn die sagen dass ict einfacher als C ;-) )
Na dann, danke!
Mfg Linuxhippy
ComSubVie
29-11-2002, 18:49
Original geschrieben von ceisserer
Warum sollte Java bitte suboptimal sein? Hast du damit schon einmal gerbaeitet? Ist zwar vom Sprachumfang her nicht ganz so mächtig aber wesentlich komfortabler als C++.
Lass mich raten, du hast noch nicht mit Java programmiert, falls doch, dann entschuldige, sollte keine Beleidigung sein.
ja, ich habe zur genüge mit java gearbeitet. Hab mich mit Xerces gespielt, hab ein Reservierungssystem mit JDBC gebastelt, aber es sind da genug Dinge die mich daran stören. Zum Beispiel das ich für jede Klasse eine eigene Datei basteln muss, ich kann zum Beispiel nicht alle geometrischen Figuren die voneinander vererbt werden in eine Datei basteln. Klar, GUI-Anwendungen sind mit Java sicher leicht zu erledigen, aber versuch mal eine Konsolenanwendung zu basteln....
Und das die Geschwindigkeit von Java eine Katastrophe ist, ist ja wohl bekannt (ja, klar, es gibt diverse Native-Code-Schnittstellen für DirectX, OpenGL und was weiß denn ich was noch alles, aber im Prinzip ist der JIT suboptimal - das Problem ist bei .net nicht sooo extrem). Schon mal geschaut was ein java -version ausgeführt und geschaut wie viel Speicher das braucht???
anda_skoa
29-11-2002, 19:27
Original geschrieben von ComSubVie
Zum Beispiel das ich für jede Klasse eine eigene Datei basteln muss, ich kann zum Beispiel nicht alle geometrischen Figuren die voneinander vererbt werden in eine Datei basteln.
Ich empfinde das eher als Vorteil, bei C++ mache ich das genau so, bzw. kommt da ja noch pro Klasse ein Header.
Mehrere Klasse zusammenfassen bringt vielleicht was bei winzigen Klassen.
Aber die gehören ohnehin selten zu API und solche Klassen kann man auch in Java in eine Datei schreiben.
Ciao,
_
ceisserer
29-11-2002, 20:06
Hi!
1.) Öhhm, jede Klasse ne eigene datei? Ist nur eine Halbwahrheit! Wenn du das public vor der Klasse weglässt, kannst du ruhig mehere classen in eine Datei stopen, sie sind dann im selben Package sichtbar. Solche Multi-klassen sind also nicht von "außen" zugänglich, was aber soweiso keinen sinn macht, solche Multiklasen von außen zugänglich zu machen, da dies die ganze Package-Architektur unbrachbar machen würde...
Java erlaubt sogar klassen in einer Funktion, so genannte inner-klases. Die haben bei denstatischen Komppiliern einige Zeit lang für ziemliche Probleme gesort, dürfte irgendwie schwer zu implementieren sein...
In ein und dem selben Programm kannst du ruhig mehrere Klassen in eine Datei schreiben.
2.) Konsolenprogramme schwer?
Öhhm, warum sollten Konsolenprogramme schwerer sein? Das einzige was man machen muss, ist einen Reader auf die Konsole zu definieren. Das sind 1 oder zwei zeilen, danach kannst mit readLine ganz einfach zeile für zeile (oder halt eingabe für eingabe) hohlen, und musst nicht einmal das format angeben, das umwandeln macht man explizit, wenns nicht klapt stürzt das Proggi nicht ab, sonder wirft eine exception. Klasse zum abfangen, wenn man Probleme herausfinden will..
3.)Speicherverbrauch.
Nun, Computer haben heutzutage mindestens 128MbRam, da ist das nicht so schlimm. Das ist halt der Presi für die automatische Speicherverwaltung. Hab mich einmal mit GarbageCollection unter C beschäftigt, das ists dann genauso.
4.) geschwindigkeit: Das einzige was an Java langsam ist, ist die Oberfläche SWING. Ich benutze SWT und kann somit Java-Sourcecode mittels GCJ in native Eceutables erzeugen. Also ganz genau wie ein C++-Programm.
In Low-Level Benchmarks überhohlt Java C sogar schon in manchen benchmarks! Natürlich ist Java nicht so schnell wie C, aber über Python oder Perll regt sich keiner auf, obwohl diese Sprachen bis zu 20x-langsamer als Java sind!
5.) Sei mir bitte nicht böse, aberhast du dich wirklich intensiv mit Java beschäftigt? Ich meine nicht einfach programmiert, sondern auch mit den Hilfsmitteln der Sprache beschäftigt, die nicht unbedingt die Funktionsweise des Programms beeinflussen, sondern nur zu besserm code beitragen angeschaut?
Abschließend noch ein paar Links:
www.eclipse.org //Natives Java-Gui, benutzt GTK2 unter Linux, leider ohne GarbageCollection (echter Schwachpunkt...)
www.fsf.org/software/gcc/java //Macht aus java ganz normale executables, hat aber kein AAWT oder SWING
www.javabuch.de //Wer Java wirklich bin in die details und trotzdem she verständlich lernen will. DASD Javabuch ist allerding "Thinknig in Java"
@anda_skoa: Sorry dass ich wieder Flamewar machen tu, aber Java ist doch toll, ich verstehe nicht dass soviele leute motzen. Sicher ich finde C++ auch sehr mächtig, und auch toll was machne Sachen angeht. Es ist wirklich beeindruckend wieviele möglichkeiten zur Programmgestaltung es in C++ giebt. Allerdings bürgen diese Pointer auch sehr leicht knifflige Fehler und auch memory-leaks passieren schnell mal.
Sucht doch mal nach "Boehm Garbage" da gibt nen GC für C++/C, der auch als leak-detector benutzt werden kann. Erste Sahne!!
Also dann, sorry für den Traffic ud den Müll, Mfg Linuxhippy
ComSubVie
29-11-2002, 20:51
ad 1) hm, schon möglich, aber das weiß scheinbar keiner.
2) da musst du erst mal draufkommen. wie schön einfach ist dagegen ein scanf, gets, cin, ncurses....
3) schon mal gehört das java auch auf PDA's und Handy's und so zeug laufen sollte? Was bringt mir Plattformunabhängigkeit, wenn ich massenhaft Speicher brauche?
4) irgendwie bezweifel ich, das ein JIT von der Geschwindigkeit an Native Code rankommt...
5) das erste was mir aufgefallen ist (mal von der konsoleneingabe abgesehen) waren die fehlenden pointer.
eclipse mag ich nicht, das ist mir zu langsam. ich verwende vi und manchmal anjuta
naja, wenn du aus java native code erzeugst führst du ja das konzept ad absurdum...
thinking in java hab ich gelesen, thinking in c++ auch...
und warum keiner was gegen perl sagt? bei mir ist es zumindest so, das ich perl recht gerne verwenden. auch wenn ich bei perl zugegebenermaßen manche probleme suboptimal löse, ich hab mit perl noch nie probleme gehabt. und es lässt sich auf servern der generation 486 auch noch problemlos damit arbeiten.... bei java zweifel ich daran ;)
und wenn wir schon dabei sind, einen flame-war auszutragen, vielleicht kann mir mal wer erklären, warum ich in einer sprache "depreciated" funktionen habe? es gibt die funktionen zwar, aber man soll sie nicht verwenden, und der compiler streikt wenn man sie verwendet.... nur wegen der abwärtskompatibilität?
sorry, ich kann mit java nicht besonders produktiv arbeiten, und für mich wirkt diese sprache - noch immer - unausgereift... Sun baut gute Hardware, aber von Software sollten sie die Finger lassen...
ceisserer
29-11-2002, 21:16
Servus!
Ich gehöre nicht zu der Personengruppe, die anderen etwas aufbinden will, nur weil ich es mag, oder damit klar komme. Nicht dass du nen falschen Eindruck von mir kriegst.
zu 1.) doch, ich bin auch kein "profi", istn ganzn normales Sprachfeature. Wird bei events sehr häufig eingesetzt.
zu 2.)Das stimt schon, dass Java nicht wirklich viel wert auf sie Konsole legt. dafür gibts ja C/C++.
zu 3.) Das sind spezielle Versionen. IMHO bringt gerade da Java was (wurde ja auch dafür entwickelt). Stell dir vor, jedes Handy benutzt einen anderen Prozessor und ein anderes betriebsystem, folglich auch unterschiedliche apis oder sogar programmiersprachen. Mit dem von SUN-Genormten Java-Handy standard läuft ein und das slebe Progii plötzlich auf ganz vielen Handies, der Author muss es nur auf einem testen (Natürlich muss er bildschirmverhältnisse beachten).
Ich kenn wen, der hat eines der ersten Siemens mit Java, da läuft Mohrhun in Java ganz ordentlich drauf ;-)
Natürlich läuft SWING nicht auf Handies, das wäre ja blöd!
zu 4.) Hab dir ein bilchen angehängt. Es muss natrülich gesagt werden, dass interpretierte Sprachen immer langsamer sein müssen, aber ich finde das Ergebnis trotzdem nicht schlecht!!
Jede Programmiersprache hat seine Vor und Nachteile, einigen wir uns drauf *Friede*
Mfg Linuxhippy
anda_skoa
30-11-2002, 12:54
Original geschrieben von ComSubVie
ad 1) hm, schon möglich, aber das weiß scheinbar keiner.
Nunja, Java Programmierer wissen das :)
2) da musst du erst mal draufkommen. wie schön einfach ist dagegen ein scanf, gets, cin, ncurses....
Ob der Standardinoutstream jetzt cin oder Sysmte.in heißt, sollte doch kein großer Unterschied sein, oder?
5) das erste was mir aufgefallen ist (mal von der konsoleneingabe abgesehen) waren die fehlenden pointer.
Ich kann das nur aus Warte eines C++ Programmierers sagen, aber da braucht man selten die direkte Addressierbarkeit.
Meistens hat man Pointer nur als Datentyp, wenn man große Objekte übergibt oder immer das selbe Objekt meint.
Und das ist in Java ja inherent bei Objekten er Fall.
und wenn wir schon dabei sind, einen flame-war auszutragen, vielleicht kann mir mal wer erklären, warum ich in einer sprache "depreciated" funktionen habe? es gibt die funktionen zwar, aber man soll sie nicht verwenden, und der compiler streikt wenn man sie verwendet.... nur wegen der abwärtskompatibilität?
Das ist ansich eine gute Einrichtung.
Bei C oder C++ hat man zwei Möglichkeiten.
Entweder man behält die alte API zusätzlich und müllt damit seine API zu (zB MFC) oder man macht einen Schnitt und bringt einen Source und binär inkompatible neue Version (zB Qt).
Java hat da jetzt die Möglichkeit, die API praktisch in einem Zwischenschritt binär- und sourcekompatible zu halten, dem Entwickler neuer Applikationen aber zu sagen, welche Funktionen besser nicht mehr verwendet werden sollen.
Bzw, das adaptieren auf eine neue Version wird verkürzt, weil der Compiler alle betroffenen Stellen findet.
Ciao,
_
vBulletin® v3.8.6, Copyright ©2000-2012, Jelsoft Enterprises Ltd.