Sie sind nicht angemeldet.

  • Anmelden

Lieber Besucher, herzlich willkommen bei: MastersForum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

nC_eru

Erleuchteter

  • »nC_eru« ist der Autor dieses Themas

Beiträge: 5 381

Wohnort: Bremen

Beruf: Physiker

  • Nachricht senden

1

12.03.2010, 20:05

Go (Programming Language)

Hi,

durch Zufall, auf der Suche nach einer für mathematischer und grafischer geeignet Programmiersprache, die auch Geschwindigkeit besitzt, bin ich heute auf eine Sprache namens Go gestoßen. Die Sprache wird offenbar von Google entwickelt und ist sehr jung (November 2009, wenn ich das richtig gelesen habe).
Da ich von Google bisher gute Qualität kenne, habe ich mir die Sprache mal genauer angeguckt und finde das Sprachkonzept sehr interessant. Einerseits ist Go C sehr ähnlich, anderseits auch den üblichen Interpretersprachen (Python, Ruby, etc.), so unterstützt es beispielsweise Polymorphie (und viele andere strange Dinge). Trotz solcher, eigentlich hochsprachenfremden, Sprachmittel ist Go ziemlich hardwarennahe, so sogar geeigent für OS-Programmierung. Die Geschwindigkeit wird mit der von C und C++ verglichen.

So ein "Ruby mit Geschwindigkeit" wäre für mich ein Traum. Dadurch, dass die Sprache aber wirklich seeehr jung ist, gibt es noch nicht viel dafür, so zum Beispiel Plattformübergreifende Wrapper wie wxWidgets (ums mal aufs Klickibunti zu bringen :D ). Die gänginsten Kompiler sind aktuell gogcc bzw. g6 (x64) und g8 (x86), keiner davon mit direktem Windows Binding. Da ich auch schon diverse Berichte von am Kompilieren gescheiterten Linux Benutzern gelesen habe, denke ich, kann man Cygwin auch direkt vergessen.
Frage(n) ^^
Interessant wäre jetzt für mich, was ihr von dem Sprachkonzept so haltet. Lohnt es sich Zeit darein zu investieren, oder stirbt die Sprache eh bevor sie aus den Kinderschuhen raus ist? Gibt es für mich interessante Alternativen (vgl. erster Satz)?

Zum selber Lesen:
Wiki
Heise
Offizelle Seite (Englisch)

lg - eru

2

13.03.2010, 01:23

es ist immer lohnenswert eine neue sprache zu lernen :-) Jede Sprache bringt eigene Konzepte mit welche man sich zu eigen macht.

Wenn du auf der Suche nach einer Allround-Sprache bist: nimm Java. Hier findest du alles, von 3D Engines, über 2D und Desktop Widgets bis hin zu mathematischem Zeug und Serverprogrammierung. Nicht so hardwarenah, dafür portabel und es gibt sehr sehr wenige Aufgaben die damit nicht gelöst werden können. Geschwindigkeit ist entgegen aller Märchen überhaupt kein Problem. Auch nicht für Grafiklastige Angelegenheiten oder Spiele - und schon überhaupt nicht für IO-lastige Aufgaben. Auch gibt es schöne Lösungen für parallele Verarbeitung.

Das riesige Ecosystem ist eines der innovativsten welche ich bisher kennengelernt habe.


Meine Top-Sprachen die man beherrschen sollte, bzw. die sehr interessant sind:
- Java (alternativ .NET / C#)
- C oder C++
- Python
- Clojure (einfach nur um funktional zu denken ;)
- evtl. Scala
- Ruby und PHP nach Lust und Laune

und was einige überraschen mag:
- JavaScript

Diese Sprache ist neu in meiner Liste - aber immer mehr Plattformen basieren darauf ( Palm's webOS, Mozilla Extensions, etc). Ich denke wir werden in Zukunft noch mehr JavaScript sehen. Und dan Engines wie V8 ist es mittlerweile auch vernünftig schnell und stabil. Natürlich nichts für grafikintensive Sachen... aber dank HTML5 Canvas habe ich auch schon recht schicke Spiele damit implementiert gesehen.

Go fasziniert mich nicht weil es kein Ecosystem gibt.. die damit reaslisierbaren Aufgaben sind noch sehr überschaubar.

nC_eru

Erleuchteter

  • »nC_eru« ist der Autor dieses Themas

Beiträge: 5 381

Wohnort: Bremen

Beruf: Physiker

  • Nachricht senden

3

13.03.2010, 14:40

Zitat

Original von fast_tam
es ist immer lohnenswert eine neue sprache zu lernen :-) Jede Sprache bringt eigene Konzepte mit welche man sich zu eigen macht.

Sicher, sehe ich genauso. Das Problem ist, dass ich als Schüler auch nicht unendlich viel Zeit habe und ich deshalb nur eine Sprache lerne, wenn sie für mich praktischen Nutzen hat. Informatik will ich nach der Schule nämlich nicht studieren.
Desweiteren müsste ich wieder ein Linux System auf eine Maschine installieren, was auch nochmal ein Haufen Arbeit mit sich bringt.


Zitat

Original von fast_tam
Wenn du auf der Suche nach einer Allround-Sprache bist: nimm Java. Hier findest du alles, von 3D Engines, über 2D und Desktop Widgets bis hin zu mathematischem Zeug und Serverprogrammierung. Nicht so hardwarenah, dafür portabel und es gibt sehr sehr wenige Aufgaben die damit nicht gelöst werden können. Geschwindigkeit ist entgegen aller Märchen überhaupt kein Problem. Auch nicht für Grafiklastige Angelegenheiten oder Spiele - und schon überhaupt nicht für IO-lastige Aufgaben. Auch gibt es schöne Lösungen für parallele Verarbeitung.

Bezüglich Geschwindigkeit habe ich gelesen, dass Java 1/20 der Geschwindigkeit von C besitzt, was imo sehr ins Gewicht fällt. Dazu muss ich wohl sagen, dass ich öfters Sachen schreibe, wofür dann mehrere millionen Rechnungen benötigt werden (Stichwort: Fraktale). Die Geschwindigkeit von Go wird mit der von C verglichen... aus dem Sprachkonzept von Go kann man aber lesen, dass dies nicht erreicht wird. Dennoch schätze ich wird es ca. das 15fache von Java sein.


Zitat

Original von fast_tam
Das riesige Ecosystem ist eines der innovativsten welche ich bisher kennengelernt habe.

Ecosystem? Häh? Wie meinen?


Zitat

Original von fast_tam
Meine Top-Sprachen die man beherrschen sollte, bzw. die sehr interessant sind:
- Java (alternativ .NET / C#)
- C oder C++
- Python
- Clojure (einfach nur um funktional zu denken ;)
- evtl. Scala
- Ruby und PHP nach Lust und Laune

Mit den meisten Sprachen davon habe ich mich schon auseinandergesetzt, entweder waren sie zu schwer für was größeres oder langsam :( . C# ist zwar einfach und schnell, allerdings undurchsichtig. Wenn ich was schreibe, will ich es selber schreiben und verstehen und nicht fremde Codestücke in meinem Code verwenden.
Zudem habe ich schon diverse böse Blicke geerntet, dass ich Konsolenanwendungen unter C# entwickle.
Die Ähnlichkeit zwischen Java und C# hat mich aber auch beeindruckt :D .


Zitat

Original von fast_tam
und was einige überraschen mag:
- JavaScript

Diese Sprache ist neu in meiner Liste - aber immer mehr Plattformen basieren darauf ( Palm's webOS, Mozilla Extensions, etc). Ich denke wir werden in Zukunft noch mehr JavaScript sehen. Und dan Engines wie V8 ist es mittlerweile auch vernünftig schnell und stabil. Natürlich nichts für grafikintensive Sachen... aber dank HTML5 Canvas habe ich auch schon recht schicke Spiele damit implementiert gesehen.

Ganz nett sicherlich, wenn man dynamische Webseiten gestalten will, aber für mich wohl nicht zu gebrauchen.



Danke für deine Antwort! :)
lg - eru

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »nC_eru« (13.03.2010, 14:40)


4

13.03.2010, 14:54

Zitat

Original von nC_eru
Bezüglich Geschwindigkeit habe ich gelesen, dass Java 1/20 der Geschwindigkeit von C besitzt, was imo sehr ins Gewicht fällt. Dazu muss ich wohl sagen, dass ich öfters Sachen schreibe, wofür dann mehrere millionen Rechnungen benötigt werden (Stichwort: Fraktale). Die Geschwindigkeit von Go wird mit der von C verglichen... aus dem Sprachkonzept von Go kann man aber lesen, dass dies nicht erreicht wird. Dennoch schätze ich wird es ca. das 15fache von Java sein.


Sorry, aber das ist nichts als FUD. Java ist bei vielen Aufgaben sogar schneller als C - das liegt daran das der HotSpot Compiler selbständig optimiert.

Du schreibst C# wäre schnell - dabei benutzt es die selbe Technik wie Java: Es wird in Bytecode compiliert und läuft auf einer virtuellen Machine.

Java war etwas träge - vor ca. 10 Jahren. Leider ist bei vielen immer noch nicht angekommen das sich seitdem eine Menge getan hat. Wie gesagt, C# basiert weitgehend auf der selben Technik.. nur das Java ein paar Jahre vorsprung hat.

Zitat

Ecosystem? Häh? Wie meinen?


Mit Ecosystem meine ich den Reichtum an Bibliotheken, Frameworks und Innovationen welche im Java-Umfeld stattfinden und nichts mit SUN bzw. jetzt Oracle zu tun haben.

Auch die Tools welche zur Verfügung stehen suchen Ihres gleichen - angefangen von IDEs über Code Analysen zu Build Management. Es gibt denke ich kein Ecosystem in welchem mehr Tooling existiert.

Zitat

C# ist zwar einfach und schnell, allerdings undurchsichtig. Wenn ich was schreibe, will ich es selber schreiben und verstehen und nicht fremde Codestücke in meinem Code verwenden.
Zudem habe ich schon diverse böse Blicke geerntet, dass ich Konsolenanwendungen unter C# entwickle.
Die Ähnlichkeit zwischen Java und C# hat mich aber auch beeindruckt :D.


Niemand zwingt dich auf die Bibliotheken zurückzugreifen - du kannst auch alles selbst Schreiben. ABER - bei größeren Anwendungen will man nicht das Rad ständig neu Erfinden. Wiederverwendbarkeit ist ein großes Thema - auch bei C oder C++. Wenn du zB. Qt benutzt, dann verstehst du auch nicht was diese Bibliothek macht. Selbes gilt für andere Frameworks oder die standard Lib.

Auch für Java gilt: du hast viele fertige Module welche du verwenden kannst - du kannst aber auch alles neu erfinden. Das geht für einfache Anwendungen, sobald aber die Komplexität steigt möchtest du dich auf die Businesslogik konzentrieren, und dich nicht mit Datenbanken, Netzwerkkommunikation oder anderem Low-Level Zeug abgeben. Es hilft aber natürlich wenn man weiß was da im Hintergrund werkelt :-)

Die Ähnlichkeit zwischen C# und Java ist nicht sehr verwunderlich, hat Microsoft sich Java doch zum Vorbild genommen.

5

13.03.2010, 15:02

Um das ganze ein bisschen zu untermauern, hier ein paar Links:

- http://www.javaworld.com/javaworld/jw-02…w-02-jperf.html
Man beachte das dieser Artikel von 1998 ist!!

- http://www.stefankrause.net/wp/?p=9

eine Neuauflage von

- http://kano.net/javabench/

[Edit:
Was stimmt ist allerdings: Java spielt seine Stärken bei lang laufenden Anwendungen aus. Umso länger eine Java Anwendung läuft, umso mehr Zeit hat der JIT Compiler den Maschinencode zu optimieren. Seit Java 6 Update 10 ist allerdings auch der erste Durchlauf des Bytecodes extrem schnell geworden (notwendig für JavaFX, welches auch auf Mobiltelefonen läuft).
]

6

13.03.2010, 15:11

edit: meine trauer über meine unfähigkeit mich für computer sprachen zu interessieren obwohl ich muss ist schwer zu ertragen...

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Aerys II« (13.03.2010, 15:12)