Login
Newsletter
Werbung

Thema: Ready, Set, Go: Programmiersprache Go 1 verfügbar

20 Kommentar(e) || Alle anzeigen ||  RSS
Kommentare von Lesern spiegeln nicht unbedingt die Meinung der Redaktion wider.
0
Von seraphim am Do, 29. März 2012 um 09:23 #

Kann mir jemand erklären was die Vor und Nachteile von Go sind, und ob z.B. Chrome oder Android mit Go erstellt werden ?

und ist der Compiler was wert ?

Gruss

Harald

[
| Versenden | Drucken ]
  • 0
    Von XA am Do, 29. März 2012 um 09:38 #

    Chrome ist so weit ich weiss in C++ geschrieben und Andriod lauft auf Java.

    [
    | Versenden | Drucken ]
    • 0
      Von gol am Do, 29. März 2012 um 10:25 #

      Android läuft auf C/C++, der Kram oberhalb von Dalvik setzt auf Java.

      [
      | Versenden | Drucken ]
      0
      Von pvb am Do, 29. März 2012 um 10:26 #

      > Andriod lauft auf Java.
      Richtig, die GUI auf dem Linux Kern von Android ist Java.

      Aber es gibt auch Qt für Android:
      http://sourceforge.net/p/necessitas/home/necessitas/
      Also C++ und das habe ich auch schon selber verwendet.

      Das Prinzip läüft da so:
      Man hat eine Stub in Java, die die Ereignisse entgegennimmt und an die eigene Anwendung weiterleitet.
      Die eigene Anwendung wird im Prinzip nur neu als Bibliothek anstatt Executable compiliert (mit Qt Creator) und die Java Stub lädt das dann beim Start.

      [
      | Versenden | Drucken ]
    0
    Von let's go am Do, 29. März 2012 um 10:45 #

    > Kann mir jemand erklären was die Vor und Nachteile von Go sind

    - Ad-Hoc Interfaces (implementiert ist, was die passenden Methoden hat => lose Kopplung)
    - Typinferenz
    - Eingebaute Concurrency via Go-Routinen (einfach "go" vor einen Funktionsaufruf schreiben, und er wird parallel ausgeführt) und typisierten Channels (zur Kommunikation)
    - Keine Klassen, stattdessen Methoden für Strukturen
    - Keine Vererbung, stattdessen Embedding (nach dem Prinzip "Favour Composition over Inheritance")
    - First-Class-Funktionen, Anonyme Funktionen, Closures
    - Nativ kompiliert, leicht kross-kompilierbar
    - Einfache Syntax (kontextfrei), schnelle Kompilierung
    - Weniger verbos als z.B. Java. Sichtbarkeit wird etwa über Groß/Kleinschreibung statt über Keywords wie public/private geregelt
    - Funktionen fangen in der ersten Spalte an, nicht erst zwei Einrückungen tiefer
    - Typen rechts (ja, das hat Vorteile gegenüber der C-Deklarationssyntax)
    - Im Gegensatz zu Java Kontrolle über Memory-Layout (will ich eine Struktur in eine andere einbetten oder eine Referenz auf eine Struktur)
    - Vorgabe der Formatierung via gofmt Tool => keine Style-Diskussionen mehr und jeder kann leichter Go-Code von anderen lesen
    - Kein Methodenüberladen (vereinfacht Aufrufs-Regeln, sowohl für Compiler als auch Entwickler)
    - Gut ausgestattete Standardlibrary
    - Gute Unicode-Unterstützung (Rob Pike und Ken Thompson sind die Entwickler von UTF-8)
    - C Funktionen lassen sich leicht aufrufen

    Nachteile:

    - keine Generics (nicht unbedingt Nachteil, manchmal aber schon)
    - kein Operator-Overloading
    - kein dynamisches Linking, nur statisch

    > und ob z.B. Chrome oder Android mit Go erstellt werden ?

    Go ist zu neu dafür. Chrome und Androids Dalvik-VM sind in C++ entwickelt bzw. Android-Apps in Java. Außerdem ist es eher keine Programmiersprache für Benutzerinterfaces, sondern eher für hochgradig nebenläufige und skalierbare Netzwerkdienste (Cloud). Ausschlag für Go war, dass Google intern bei der Infrastruktur mit C++ und Python an Grenzen stößt. Go bedient bei Google etwa täglich über eine Milliarde Requests für Youtube mit dem Vitess-Projekt zum skalieren von MySQL-Datenbanken.

    [
    | Versenden | Drucken ]
    • 0
      Von cs am Do, 29. März 2012 um 11:00 #

      Obwohl man sagen muss, dass es einige Gerüchte darüber gab, Go als Alternative zu Java auf Android aufzubauen. Auf Google Vorträgen mit Rob Pike hat er solche Fragen immer mit einem Grinsen und "kein Kommentar" abgeblockt. Ich fände Go jedenfalls als App- bzw. Anwendungsentwicklungssprache, im Vergleich zum jetzigen Java-Gehampel, recht gut.

      [
      | Versenden | Drucken ]
      • 0
        Von let's go am Do, 29. März 2012 um 11:05 #

        > Obwohl man sagen muss, dass es einige Gerüchte darüber gab, Go als Alternative zu Java auf Android aufzubauen

        Ich glaube eher, dass Dart dafür gedacht und auch passender ist. Google selbst sagt über Dart ja "The competition is not JavaScript but fragmented mobile platforms". Womit sie ja eigentlich nur Android meinen können. ;)

        [
        | Versenden | Drucken ]
        • 0
          Von cs am Do, 29. März 2012 um 11:25 #

          Dart ist als JavaScript Nachfolger konzipiert und nicht als Programmiersprache für Android Apps. Außer du meinst reine Web-Applikationen damit, die natürlich auch auf Android nutzbar sind. JavaScript führt ja jetzt schon die fragmentieren mobilen Plattformen über Web-Applikationen zusammen.
          An der Art des Kommentars von Pike würde ich darauf wetten, das Go bald als Alternative zu Java/Dalvik auf Android vorgestellt wird.

          [
          | Versenden | Drucken ]
      0
      Von mr g am Do, 29. März 2012 um 11:26 #

      kein dynamisches Linking, nur statisch

      Übrigens nicht verwunderlich, wenn man weiß, dass Rob Pike und Co. keine Fans von dynamischem Linken sind.

      [
      | Versenden | Drucken ]
      0
      Von Bolitho am Do, 29. März 2012 um 13:19 #

      Ich hättes es besser gefunden, wenn Du das nicht schon in Vor- und Nachteile gegliedert hättest. Man könnte da einiges auch anders herum bewerten - das kommt meistens auf den Standpunkt an und ist selten absolut.

      Aber Danke trotzdem für die sehr gute Zusammenfassung.

      [
      | Versenden | Drucken ]
0
Von Unerkannt am Do, 29. März 2012 um 09:33 #

>Sie wollten eine einfach zu benutzende Sprache, die sich effizient kompilieren und ausführen lässt.

Die haben doch nicht etwa Pascal übersehen? Man darf wohl nie den Reiz unterschätzen etwas eigenes zu erschaffen.

[
| Versenden | Drucken ]
  • 0
    Von og am Do, 29. März 2012 um 10:10 #
    0
    Von cs am Do, 29. März 2012 um 10:18 #

    Ich weiß nicht ob man Go mit Pascal vergleichen kann.
    Kann man in Pascal bestimmte Eigenschaften dynamischer Typung einfach nutzen wenn man sie braucht (in Go: interface{}). Hat Pascal auch ein ähnliches Package System bzw. Compiler, der entsprechende Pakete, die ein Projekt benötigt automatisch aus dem Netz herunterläd und installiert? Hat Pascal CSP, Closures?

    [
    | Versenden | Drucken ]
    • 0
      Von LH_ am Do, 29. März 2012 um 11:21 #

      "Hat Pascal auch ein ähnliches Package System bzw. Compiler, der entsprechende Pakete, die ein Projekt benötigt automatisch aus dem Netz herunterläd und installiert?"

      Stellt sich die Frage, ob sowas wirklich Teil einer Sprache sein muss. Das kann man auch Problemlos außerhalb lösen.

      Ansonsten dürfte FreePascal aktuell das Modernste Pascal sein.

      [
      | Versenden | Drucken ]
      • 0
        Von cs am Do, 29. März 2012 um 11:31 #

        In diesem Fall ja, da der Package Import die URL des Git/Mercurial/Bazar/Subversion-Repositories ist, von dem das Paket stammt.

        [
        | Versenden | Drucken ]
0
Von pvb am Do, 29. März 2012 um 10:12 #

Mir geht manches einfach zu schnell heutzutage und
ich beginne an bewährten Sachen festzuhalten.

Zu den bewährten Sachen gehören:
- C/C++
- Bibliotheken
- bash
- X11

Wenn es sich um C/C++ dreht, kommt es mir darauf an, dass die API über viele Jahrzehnte stabil bleibt, so wie das bei Posix Funktionen der Falls ist.

Bei der Oberfläche habe ich schon vor langer Zeit auf Qt gesetzt, weil das Plattformunabhängigkeit verspricht und auch hält was es verspricht.
Allerdings sind mir die Qt Entwickler manchmal zu schnell bei der Sache.
Qt1 -> Qt2 -> Qt3 hat ja relativ schmerzlos funktioniert.
Qt3 -> Qt4 war eine Kathastrophe.
Hoffentlich funktioniert Qt4 -> Qt5 wieder schmerzlos.
Mulmig wird mir da schon wieder zumute, wenn man QWidget in den Hintergrund stellt und statt dessen QML hyped.

Aus leidvollen Erfahrungen ist schon vieles in "libmylib" gewandert.

Es kann doch nicht sein, dass Funktionen, die das Fundament für eine Vielzahl von Anwendungen bilden, so alle paar Jahre über den Haufen geschmissen werden.
Oder ist das auch geplante Obsoleszenz, damit wir nicht arbeitslos werden?

Was ist nun genau das tolle an Go?

Damals fand ich Occam interessant, weil es mit SEQ, PAR und ALT parallele Programmierung unterstützt.

Lua finde ich interessant, weil man es hervorragend in seine C/C++ Anwendung integrieren kann.

Aber was macht Go besonders?
Was man nicht über eine Bibliothek machen kann.
Qt macht das doch auch einfach über eine Bibliothek.
Wenn man mit Qt programmiert, braucht man doch nur einen Subset von C++.

[
| Versenden | Drucken ]
  • 0
    Von Bolitho am Do, 29. März 2012 um 13:27 #

    Dass Du C direkt in Zusammenhang zu C++ nennst, macht mich schon nachdenklich, wie fundiert Deine Aussagen sind.

    Natürlich kann man sich immer darüber streiten, ob nicht altbewährtes ausreichend ist und wie notwendig eine neue Erfindung ist. Letztlich ist das der Lauf der Dinge; die Natur des Menschen treibt ihn einfach zu neuen Herausforderungen. Ob sich diese durchsetzen, zeigt sich schlicht irgend wann.

    Heute fahren wir ja auch mit Autos herum und nicht mit Pferdekutschen. Augmented Reality wird (hat schon teilweise) in den nächsten Jahren ins Automobil Einzug halten, genauso wie weitere Assistenzsysteme, so dass das rein manuelle Fahren von heute nichts mehr mit dem von morgen zu tun haben wird. Wozu das? Es geht ja auch so, wie es jett ist, nämlich "lat bewährt"... ;-)

    Es ist doch einfach die Frage nach der Abstraktion: Wie detailliert und aufwendig muss ich mich mit einem Problemfeld befassen, um mein Ziel zu erreichen? C ist wirklich extrem Low-Level - es gibt nicht mal eingebaute komplexere Datenstrukturen, wie Listen und Dictionaries (Maps / Hashes). Die brauche ich irgend wie in jedem Programm... ok, mittels Glib bekomme ich das zwar gratis, aber die Handhabung ist eben weit weniger generisch als z.B. die Sprachkonstrukte von Python. Aus diesen Gründen heraus werden eben neue Sprachen entwickelt. Man will eine höhere Abstraktion, um das eigentliche Ziel mit weniger "Umwegen" erreichen zu können.

    Darüber hinaus spielen dann noch andere Fragen eine Rolle, nicht zuletzt Lizenz- und Patentfragen (s. DOT.NET, Oracles JVM, usw).

    [
    | Versenden | Drucken ]
    0
    Von Meh am Do, 29. März 2012 um 21:38 #

    C kenne ich. C++ auch. Aber C/C++ ist mir neu.

    [
    | Versenden | Drucken ]
    • 0
      Von cppler am Do, 29. März 2012 um 23:10 #

      Das ist, wenn man C++ mit C-Strings, Pointern statt Referenzen und alloc/free benutzt.

      [
      | Versenden | Drucken ]
      0
      Von dark_star am Fr, 30. März 2012 um 08:16 #

      Der Ausdruck C/C++ ist etwas für die Älteren hier, die den Übergang noch mitbekommen haben :)

      Aber es passt schon solange man C-Code durch den C++-Compiler jagen kann, was manchmal durchaus Sinn macht.

      [
      | Versenden | Drucken ]
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung