Login
Newsletter
Werbung

Thema: Cheerp 1.0 kompiliert C++ nach JavaScript

16 Kommentar(e) || Alle anzeigen ||  RSS
Kommentare von Lesern spiegeln nicht unbedingt die Meinung der Redaktion wider.
1
Von HMEDW am Mi, 13. August 2014 um 16:07 #

Sie die meschugge? Genauso gut wie Linux nach MS compilieren
(falls das gehen soll/kann) oder Mercedes nach Trabant.
Sinn macht nur eins: C++ => Fortran.
Das ist die einzige Programmiersprache,die C++ Paroli bieten kann.

[
| Versenden | Drucken ]
  • 1
    Von Bolitho am Mi, 13. August 2014 um 16:25 #

    ...Fortran. Das ist die einzige Programmiersprache,die C++ Paroli bieten kann.
    Bezüglich was? Komplexität? Syntaktischen Auswüchsen? Umständlichkeit? :x

    [
    | Versenden | Drucken ]
    • 1
      Von cpp am Mi, 13. August 2014 um 17:58 #

      Syntaktischer Vielfalt. C++ ist sehr ausdrucksstark, da es viele syntaktische Möglichkeiten bildet. Leider werden diese Möglichkeiten zu häufig missbraucht, um unleserlichen Code zu schreiben. Aber den Leuten, die damit umgehen können ist es ein sehr mächtiges Werkzeug.

      Leider gibt es in der IT Welt zu viele schlecht ausgebildete Leute, die nicht wirklich wissen, wie ein Computer funktioniert. Denen gibt man lieber so ein einfaches Werkzeug wie beispielsweise Java in die Hand, mit dem sie weniger Unsinn verzapfen können. Das Ergebnis ist dann so einigermassen akzeptabel. Die mangelnde Qualität wird dann durch Unmengen an Hardware ausgeglichen.

      Für Webseiten nimmt man dann PHP. Hier wird die mangelnde Qualität durch konsequentes Wegschauen ausgeglichen.

      Würde man mehr effizienten C++ Code von Profis verwenden, könnte man das eine oder andere Kraftwerk abschalten.

      [
      | Versenden | Drucken ]
      • 0
        Von Bolitho am Mi, 13. August 2014 um 18:50 #

        Syntaktischer Vielfalt. C++ ist sehr ausdrucksstark, da es viele syntaktische Möglichkeiten bildet.
        Äh... "Ausdrucksstärke aufgrund von syntaktischer Vielfalt" habe ich auch noch nicht gehört... rofl, danke, ymmd! :x

        [
        | Versenden | Drucken ]
        • 0
          Von cpp am Mi, 13. August 2014 um 20:16 #

          Ich meine einfach, dass es in C++ ganz viele Möglichkeiten gibt, etwas auszudrücken, da der Syntax sehr umfangreich ist. Das gibt aber auch demjenigen die Möglichkeit, die passendste Formulierung zu wählen. Als einfaches Beispiel diene hier die Implementierung eines eigenen Zahlentypes. Sei es BigDecimal oder Complex oder was ähnliches. In vielen Sprachen schreibt man dann so was, um 2 dieser Objekte zu addieren:

          MyNumberType n1 = new MyNumberType(4.5);
          MyNumberType n2 = new MyNumberType(6.4);
          MyNumberType sum = n1.add(n2);

          Wobei nicht ganz klar wird, ob mit n1.add(n2) nicht doch gemeint ist, dass n2 auf n1 aufaddiert werden soll. In C++ würde man es so formulieren:

          MyNumberType n1 = 4.5;
          MyNumberType n2 = 6.4;
          MyNumberType sum = n1 + n2;

          Das finde ich ungleich eleganter und lesbarer. Dafür ist natürlich diese "hässliche" Operatorüberladung notwendig. Aber das Ergebnis überzeugt. Und genau solche Beispiele gibt es sehr viele. Das meine ich mit Ausdrucksstärke.

          [
          | Versenden | Drucken ]
          • 0
            Von ms123 am Mi, 13. August 2014 um 22:58 #

            Unten ein kleines Beispiel in Groovy,
            das zeigt das "Operatorüberladen" nicht hässlich sein muss.
            Einfach bestimmte Methodennamen verwenden, in unteren Fall "plus", und der Rest ist umsonst!
            http://groovy.codehaus.org/Operator+Overloading

            class MyNumberType{
             int num;

            public MyNumberType(num){
              this.num = num;
            }

            def plus(other){
             this.num += other.num;
             this;
            }
            String toString(){
             this.num
            }
            }

            def n1 = new MyNumberType(10);
            def n2 = new MyNumberType(20);

            def result = n1+n2;

            println("Total:"+result);
            #Total:30

            Dieser Beitrag wurde 2 mal editiert. Zuletzt am 13. Aug 2014 um 23:02.
            [
            | Versenden | Drucken ]
            • 0
              Von cpp am Do, 14. August 2014 um 00:32 #

              Das war ja nur ein Beispiel. Es gibt noch zig andere Möglichkeiten in C++ Dinge lesbar zu formulieren. Genau das meine ich.

              Und C++ ist sicher nicht einzigartig und ich kenne auch nicht alle Programmiersprachen. Wahrscheinlich geht alles, was in C++ elegant zu lösen ist in irgendeiner andere Sprache genauso elegant. Meine Erfahrung ist eben, dass C++ ausdrucksstark ist und dabei noch sehr effizient.

              Und selbst das "def n1 = new MyNumberType(10)" ist weniger Elegant als "MyNumberType n1 = 10".

              Hat n1 in Groovy an der stelle eigentlich einen Typ? Bekomme ich eine Fehlermeldung zur Compilezeit, wenn ich n2 etwas anderes zuweise als eine "MyNumberType" bzw. was macht n1+n2, wenn n2 eben kein MyNumberType ist? Ich frage hier ganz ehrlich, da ich Groovy nicht kenne.

              In C++ würde ich in so einem Fall einfach eine Fehlermeldung vom Compiler erhalten. Und nicht erst zur Laufzeit. Und das ist für grössere Programme sehr wichtig.

              [
              | Versenden | Drucken ]
              0
              Von nur kurz am Do, 14. August 2014 um 07:42 #

              schönheit liegt im auge des betrachters,
              ich zB find das viel schöbner, aussagekräftiger und auch richtiger

              Type operator+(const Type& a, const Type&B) {...}

              und warum ich das so finde kann man bei Stepanov nachlesen

              [
              | Versenden | Drucken ]
            0
            Von Bolitho am Do, 14. August 2014 um 16:16 #

            Ich meine einfach, dass es in C++ ganz viele Möglichkeiten gibt, etwas auszudrücken, da der Syntax sehr umfangreich ist.
            Und genau das ist eine der größten Schwachstellen von C++! Hat aber nichts mit Ausdrucksstärke zu tun.

            Ausdrucksstärke ist nicht von Syntax abhängig, sondern von den semantischen Spracheigenschaften. Und da ist C++ deutlich ausdrucksschwächer als viele andere Sprachen, u.a. auch als Java. (Von Sprachen wie Python, Scala, Clojure usw. ganz zu schweigen!)

            Es kommen aber noch viele andere Probleme bei C++ hinzu; dazu gibt es genügend Rants im Netz.

            [
            | Versenden | Drucken ]
            • 0
              Von cpp am Do, 14. August 2014 um 17:45 #

              Java? Zufällig kann ich Java. Und ich finde es lästig und eher irreführend, wenn ich eine Funktion immer in eine Klasse packen muss. Wenn etwas eine Funktion ist, dann soll es eben so sein.

              Ich denke da an z. B. Math.sin(). Welche Funktion hat die Klasse Math? Eigentlich doch gar keine. Sie ist ziemlich unbrauchbar. Sie wird nur benötigt, da Java keine freien Funktionen kennt.

              Das ist auch wieder nur ein Beispiel von ganz vielen. Java hat als Sprache halt wesentlich weniger Features. Und das macht die Sprache zwar einfacher, aber eben weniger ausdrucksstark.

              [
              | Versenden | Drucken ]
              • 0
                Von Bolitho am Fr, 15. August 2014 um 09:17 #

                Java hat als Sprache halt wesentlich weniger Features. Und das macht die Sprache zwar einfacher, aber eben weniger ausdrucksstark.
                Unsinn! Ausdrucksstärke als Maß ist durchaus umstritten, aber als Faustregel gilt: Je weniger Code ich für dieselbe Funktionalität brauche, um so ausdrucksstärker ist die Sprache.

                Bei C++ habe ich alleine durch die (vollkommen unnötige) Aufteilung von Deklaration (Header-Dateien) und Implementierung schon mehr Code als in anderen Sprachen.

                Es gibt kaum Reflection-Eigenschaften -> in vielen Bereichen führt das zu wesentlich längerem Code (Unit Testing z.B., dabei dann Stubbing und Mocking insbesondere).

                C++ mag viele "Features" besitzen, aber dennoch muss man idR. viel mehr Code schreiben, um Dinge zum Laufen zu bringen. Alleine alles mögliche an Destruktor-Code bei (womöglich verschachtelten) Collections... kann man sich bei Java (ein Glück) sparen.

                Java kennt seit Version 8 Lambdas - eben aus dem von Dir oben genannten Grund. (Ok, C++ fängt langsam auch wieder an, Fahrt aufzunehmen dank C++11 und folgenden Standards)

                Ich persönlich finde Java immer noch viel zu ausdrucksschwach und mag es nicht unbedingt (C# z.B. macht vieles wesentlich besser und ist als Sprache angenehmer), aber im Vergleich zu C++ ist Java dennoch ausdrucksstärker.

                Wenn Du bisher nur C++ und Java kennst, befasse Dich mal mit einer Sprache wie Python, Scala oder Ruby, um zu sehen, wie weit entfernt die beiden von diesen Sprachen sind oder gleich mit Clojure als pragmatischen Lisp-Vertreter. Ich garantiere Dir, dass Du C++ dann nur noch für Spezialfälle anfassen magst 8)

                [
                | Versenden | Drucken ]
    0
    Von hans wurst am Mi, 13. August 2014 um 17:15 #

    > Genauso gut wie Linux nach MS compilieren

    das geht seit geraumen Zeiten und nennt sich MinGW

    [
    | Versenden | Drucken ]
    0
    Von Luk am Mi, 13. August 2014 um 18:07 #

    C++ nach JavaSript hört sich an wie Adapter von Gardena auf Klinke.

    [
    | Versenden | Drucken ]
0
Von Franz Sauerzopf am Mi, 13. August 2014 um 18:31 #

C+C++ nach JavaScript+ nach JavaScript: Pervers

[
| Versenden | Drucken ]
0
Von DaDaniel am Mi, 13. August 2014 um 22:24 #

Frag mich bei sowas ja immer wie denn der C++ gestrickt sein muss damit der auch wirklich nach Javascript komiliert werden kann. Und einfach mal so den bestehenden C++ code durch den Compiler jagen und dann eine Webanwendung haben? Daran glaube ich nicht.

Wenn man sich die Beispiele auf deren Seite mal so ansieht, sieht das viel mehr danach aus als würde Cheerp die ganze Kommunikation mit dem in C++ geschriebenen Server backend vereinfachen: "Everything else (including client to server remote procedure calls, serialization and deserialization, etc.) will work automagically!"

Das klingt alles in allem nach ein wenig zuviel automagic.. Und dann ganz ehrlich, wer will den DOM-Manipulation in C++ schreiben? Denjenigen der dann die suppe aus 80er jahre C++ Geschäftslogik verwoben mit C++ DOM-Manipulation in 5 Jahren debuggen muss beneide ich wirklich nicht!

[
| Versenden | Drucken ]
  • 0
    Von weezer am Do, 14. August 2014 um 12:37 #

    Frag mich bei sowas ja immer wie denn der C++ gestrickt sein muss damit der auch wirklich nach Javascript komiliert werden kann.

    Nun ja, nicht alle Sprachkonstrukte werden unterstützt, was bei C++ aber auch wirklich verwunderlich wäre.
    Für alle Bibliotheken, die Ein- und Ausgaben erfordern (z.B. GLFW oder auch nur ) muss ein JavaScript-Backend zur Verfügung stehen.
    Dann ist es noch so, dass eine JavaScript-Anwendung nicht blockieren darf, d.h. Hauptschleifen müssen zu Eventaufrufen umgebaut werden.
    So habe ich die Limitationen von Emscripten in Erinnerung, aber bei Cheerp wird das nicht anders sein.

    Denjenigen der dann die suppe aus 80er jahre C++ Geschäftslogik verwoben mit C++ DOM-Manipulation in 5 Jahren debuggen muss beneide ich wirklich nicht!
    Wenn die API für DOM-Manipulationen gut ist und die Geschäftslogik auch, würde ich es jederzeit nativem JS vorziehen. Denn C++11 kann ich jetzt verwenden, aber bis z.B. das let-Keyword in JS verwendbar ist, hab ich graue Haare.

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