hm....: programmierumgebung für scala

hi leute,

ich bin gerade dabei mir scala grundwissen anzueignen und habe bereits mit der workspace erste probleme.

ich habe mir eclipse indigo runtergeladen und dort das scala plugin installiert. die scala programmierung geht in dieser eclipse umgebung.

das problem ist, dass das programmieren mit scala in dieser umgebung extrem langsam ist und alles teilweise hängt (ich tippe schneller als der computer schreibt).

könnt ihr mir einen tipp geben wie ich die geschwindigkeit verbessern kann? oder ob es eine bessere entwicklungsumgebung gibt?

  1. Meine Herren,

    ich bin gerade dabei mir scala grundwissen anzueignen und habe bereits mit der workspace erste probleme.

    könnt ihr mir einen tipp geben wie ich die geschwindigkeit verbessern kann? oder ob es eine bessere entwicklungsumgebung gibt?

    Vorweg, ich höre gerade zum ersten mal von "scala".
    Das Problem mit Eclipse und anderen aufgeblähten IDEs die oft ein "Visual" oder "Studio" im Namen tragen ist mir aber durchaus bekannt. Ich setze auf schmale Code-Editoren mit starker Erweiterbarkeit. Notepad++ und Sublime Text 2 sind meine Favoriten.

    Aber jetzt mal zu deinem Problem: Wofür brauchst du Eclipse? Hast du es mal mit dem Compiler "scalac" direkt probiert?

    --
    Hey Girl,
    i wish you were asynchronous, so you'd give me a callback.
  2. Das Lift Webframework wäre auch eine Möglichkeit. Kenn ich aber nur dem Namen nach.

  3. Eclipse und IntelliJ sind gute Beispiele dafür, dass Java auf dem Desktop einfach nicht funktioniert.
    Ich würde versuchen, der JVM etwas mehr Luft zum Atmen zu geben (mit -Xmx<size> lässt sich die maximale Größe des Java Heap-Speichers festlegen).
    Ansonsten halt mal gucken, ob man bestimmte Features/Plugins nicht einfach deaktiviert, wenn man sie nicht braucht.
    Aber wie gesagt, das eigentliche Problem liegt eine Ebene tiefer – sieh dich besser nach Alternativen um!

    1. Eclipse und IntelliJ sind gute Beispiele dafür, dass Java auf dem Desktop einfach nicht funktioniert.

      Jetzt hör doch auf hier dieses 10 Jahre alte Märchen zu verbreiten. Natürlich funktioniert Java auf dem Desktop, es funktioniert sogar super. Wenn irgendwelche Programmierer Mist verzapfen, hat das immer noch nichts mit der Programmiersprache zu tun. Es gibt genug in Java geschrieben Programme die das das Gegenteil aufzeigen.

      1. Eclipse und IntelliJ sind gute Beispiele dafür, dass Java auf dem Desktop einfach nicht funktioniert.

        Ich hab NetBeans vergessen..

        Jetzt hör doch auf hier dieses 10 Jahre alte Märchen zu verbreiten.

        Dass die JVM sehr ressourcenhungrig ist, ist schon viel länger bekannt als 10 Jahre ;)

        Es gibt genug in Java geschrieben Programme die das das Gegenteil aufzeigen.

        Mir fällt keines ein.
        Besonders Swing-Anwendungen waren immer unerträglich langsam, allerdings ist mir seit 3-4 Jahren keine mehr untergekommen. Hat sich da was getan?

        1. hi,

          Martin hat im Grunde schon recht, Java ist einfach unerträglich langsam manchmal. Vergleich-Benchmarks mit zum Beispiel C++ belegen zwar rein theoretisch das Gegenteil, die Wirklichkeit sieht aber anders aus. Desktop-Applikationen wie Eclipse sind einfach Müll, meines Erachtens. Was u.a. an diesem scheiß Swing liegt.

          Ich programmiere seit einigen Jahren 2D-Games in Java, und ich sehe hier performancemäßig allerdings wenig Unterschiede zu C++, wenn man es richtig macht. Probleme sind u.a.  Speicherverwaltung, die virtuellen Maschine, Delays in der Garbage Collection. 3D-Games habe ich mal etwas rumgespielt, aber ich denke, damit wird man nicht glücklich. Dafür ist JAVA schlicht und ergreifend nicht perfomant genug. Es gibt nämlich kaum professionelle (richtige) 3D-Games. Ich rede nicht von Android-pseudo 3d-Games.

          1. Ich programmiere seit einigen Jahren 2D-Games in Java, und ich sehe hier performancemäßig allerdings wenig Unterschiede zu C++, wenn man es richtig macht. Probleme sind u.a.  Speicherverwaltung, die virtuellen Maschine, Delays in der Garbage Collection. 3D-Games habe ich mal etwas rumgespielt, aber ich denke, damit wird man nicht glücklich. Dafür ist JAVA schlicht und ergreifend nicht perfomant genug. Es gibt nämlich kaum professionelle (richtige) 3D-Games. Ich rede nicht von Android-pseudo 3d-Games.

            Ich werf mal Minecraft in den Raum.
            Natürlich ist Java für 3D Spiele nicht gedacht. die Java Code ist (im Normalfall) nunmal betriebssystemunabhängig. Bei halbwegs vernünftiger Programmierung (Nutzung von Nebenläufigkeit) ist Swing aber völlig okay. Programmierluschen, die das nicht nutzen, erzeugen natürlich träge Programme, aber das ist bei C++ nicht anders.
            Lahm ist die JVM höchstens beim Initialisieren, das stimmt, aber danach gibt es kaum noch Unterschied (außer in sehr speziellen Bereichen wie aufwendige Spieleprogrammierung).

            1. Meine Herren,

              Ich werf mal Minecraft in den Raum.
              Natürlich ist Java für 3D Spiele nicht gedacht. die Java Code ist (im Normalfall) nunmal betriebssystemunabhängig.

              Javascript ist auch plattformunabhängig und performt bei 3D-Anwendungen recht gut. Siehe <www.unrealengine.com/html5/>. Minecraft halte ich demnach für ein schlecht gewähltes Beispiel.

              Meine persönlichen empirischen Erfahrungen sagen auch, dass Java-Programme i.d.R. ziemlich langsam sind und das liegt meine Erachtens nach nicht immer an "Programmierluschen". Gerade den Jungs hinter Eclipse traue ich eine Menge zu.

              --
              Hey Girl,
              i wish you were asynchronous, so you'd give me a callback.
              1. Meine Herren,

                Ich werf mal Minecraft in den Raum.
                Natürlich ist Java für 3D Spiele nicht gedacht. die Java Code ist (im Normalfall) nunmal betriebssystemunabhängig.

                Javascript ist auch plattformunabhängig und performt bei 3D-Anwendungen recht gut.

                Recht gut? Komm, vergleich mal die Auslastung mit dem entsprechenden Pendant in C geschrieben.

                Meine persönlichen empirischen Erfahrungen sagen auch, dass Java-Programme i.d.R. ziemlich langsam sind und das liegt meine Erachtens nach nicht immer an "Programmierluschen". Gerade den Jungs hinter Eclipse traue ich eine Menge zu.

                Es bietet aber auch keine mir bekannte Entwicklungsumgebung die Features und Unterstützung die Eclipse bietet. Das liegt auch daran, dass andere Sprachen eine solche Unterstützung aufgrund der fehlenden vergleichsweise strengen Typisierung stark erschweren oder unmöglich machen.

                Ansonsten gibt es ja genug Tests über das ganze Thema und deren Tenor ist doch klar.

                1. Meine Herren,

                  Javascript ist auch plattformunabhängig und performt bei 3D-Anwendungen recht gut.

                  Recht gut? Komm, vergleich mal die Auslastung mit dem entsprechenden Pendant in C geschrieben.

                  Der Kern der Aussage sollte sein, guck dir diese olle Skriptsprache an, von der bekannt ist, dass sie mit der Geschwindigkeit nativer Sprachen nicht mithalten kann, selbst damit bekomm' ich die Unreal-Engine mit akzeptabler Framerate ans laufen. Minecraft sollte dann jawohl auch kein Problem sein. Minecrafts Grafikengine hat ungefähr dieselben Ansprüche wie eine Sticky-Anwendung, und ist deshalb als Beispiel dafür, wie gut Java auf dem Desktop performt, schlicht unnütz.

                  --
                  Hey Girl,
                  i wish you were asynchronous, so you'd give me a callback.
                  1. Meine Herren,

                    Javascript ist auch plattformunabhängig und performt bei 3D-Anwendungen recht gut.

                    Recht gut? Komm, vergleich mal die Auslastung mit dem entsprechenden Pendant in C geschrieben.

                    Der Kern der Aussage sollte sein, guck dir diese olle Skriptsprache an, von der bekannt ist, dass sie mit der Geschwindigkeit nativer Sprachen nicht mithalten kann, selbst damit bekomm' ich die Unreal-Engine mit akzeptabler Framerate ans laufen.

                    Ja und Ergebnis? Sie kann nicht mithalten. Der Kern der Aussage wäre höchstens sinnvoll, wenn sie doch mithalten könnte. "akzeptable Framerate" reicht dafür nicht.

                    Minecraft sollte dann jawohl auch kein Problem sein. Minecrafts Grafikengine hat ungefähr dieselben Ansprüche wie eine Sticky-Anwendung, und ist deshalb als Beispiel dafür, wie gut Java auf dem Desktop performt, schlicht unnütz.

                    Äh, langsam wirds mir zu doof. Lies einfach (noch?)mal, was ich über den Spezialfall 3D geschrieben habe.

                    1. Meine Herren,

                      Meine Herren,

                      Javascript ist auch plattformunabhängig und performt bei 3D-Anwendungen recht gut.

                      Recht gut? Komm, vergleich mal die Auslastung mit dem entsprechenden Pendant in C geschrieben.

                      Der Kern der Aussage sollte sein, guck dir diese olle Skriptsprache an, von der bekannt ist, dass sie mit der Geschwindigkeit nativer Sprachen nicht mithalten kann, selbst damit bekomm' ich die Unreal-Engine mit akzeptabler Framerate ans laufen.

                      Ja und Ergebnis? Sie kann nicht mithalten. Der Kern der Aussage wäre höchstens sinnvoll, wenn sie doch mithalten könnte. "akzeptable Framerate" reicht dafür nicht.

                      Ich versuch's mal mit einer Analogie:
                      Wenn ein Dresseur einer Schlange das Laufen auf zwei Beinen beibringen kann, wird niemand mehr für den Dompteur applaudieren, dessen Löwe eindrucksvoll ein Stück Zebrakeule verschlingen kann.

                      Minecraft sollte dann jawohl auch kein Problem sein. Minecrafts Grafikengine hat ungefähr dieselben Ansprüche wie eine Sticky-Anwendung, und ist deshalb als Beispiel dafür, wie gut Java auf dem Desktop performt, schlicht unnütz.

                      Äh, langsam wirds mir zu doof. Lies einfach (noch?)mal, was ich über den Spezialfall 3D geschrieben habe.

                      Ich werf mal Minecraft in den Raum.
                      Natürlich ist Java für 3D Spiele nicht gedacht.

                      Okay, die Spezialfälle Entwicklungsumgebungen und 3D gehören also nicht zu Javas Stärken, aber SONST, ja SONST bricht Java alle Geschwindigkeitsrekorde.

                      --
                      Hey Girl,
                      i wish you were asynchronous, so you'd give me a callback.
                      1. Meine Herren,

                        Meine Herren,

                        Javascript ist auch plattformunabhängig und performt bei 3D-Anwendungen recht gut.

                        Recht gut? Komm, vergleich mal die Auslastung mit dem entsprechenden Pendant in C geschrieben.

                        Der Kern der Aussage sollte sein, guck dir diese olle Skriptsprache an, von der bekannt ist, dass sie mit der Geschwindigkeit nativer Sprachen nicht mithalten kann, selbst damit bekomm' ich die Unreal-Engine mit akzeptabler Framerate ans laufen.

                        Ja und Ergebnis? Sie kann nicht mithalten. Der Kern der Aussage wäre höchstens sinnvoll, wenn sie doch mithalten könnte. "akzeptable Framerate" reicht dafür nicht.

                        Ich versuch's mal mit einer Analogie:
                        Wenn ein Dresseur einer Schlange das Laufen auf zwei Beinen beibringen kann, wird niemand mehr für den Dompteur applaudieren, dessen Löwe eindrucksvoll ein Stück Zebrakeule verschlingen kann.

                        Ah, hier sitzt also das Problem. Es geht dir also um das Applaudieren. Tut mir Leid, dass ich dich mit Fakten verwirrt habe.

                        Minecraft sollte dann jawohl auch kein Problem sein. Minecrafts Grafikengine hat ungefähr dieselben Ansprüche wie eine Sticky-Anwendung, und ist deshalb als Beispiel dafür, wie gut Java auf dem Desktop performt, schlicht unnütz.

                        Äh, langsam wirds mir zu doof. Lies einfach (noch?)mal, was ich über den Spezialfall 3D geschrieben habe.

                        Ich werf mal Minecraft in den Raum.
                        Natürlich ist Java für 3D Spiele nicht gedacht.

                        Okay, die Spezialfälle Entwicklungsumgebungen und 3D gehören also nicht zu Javas Stärken, aber SONST, ja SONST bricht Java alle Geschwindigkeitsrekorde.

                        Jedenfalls ist es (bei richtiger Programmierung - im Gegensatz zu Javascript) nicht langsamer als C und Konsorten. Der einzige Grund, warum viele Programme in Java träge sind (ausgenommen der Start der JVM) liegt an den Programmierern. Ähnlich wie bei PHP, da sind auch viele Kiddies unterwegs und einen entsprechenden Ruf hat die Sprache. Nicht dass ich PHP irgendwie gut finden würde, aber es hat einen schlechteren Ruf als es ist.

  4. gudn tach!

    [eclipse]
    das problem ist, dass das programmieren mit scala in dieser umgebung extrem langsam ist und alles teilweise hängt (ich tippe schneller als der computer schreibt).

    das problem kenne ich. beim tippen gehts bei mir zwar meistens, aber copy&paste kommt bei mir haeufig nicht hinterher, und das an einem xeon-quad-core mit htt, 8GB ram und hastenichgesehn. (und an KDE liegt das in diesem fall nicht.)

    könnt ihr mir einen tipp geben wie ich die geschwindigkeit verbessern kann?

    von scala (insb. unter eclipse) habe ich keine ahnung, ich nutze eclipse nur fuer c++. und da macht es sinn, den indexer nicht auf "volle-pulle", sondern nur auf "halbherzig" zu stellen. ganz abstellen wuerde ich ihn nicht, weil der indexer letztlich der einzige grund fuer eclipse ist.
    falls es den indexer auch unter der scala-umgebung gibt, koennte das ja vielleicht mal ein ansatzpunkt sein.

    oder ob es eine bessere entwicklungsumgebung gibt?

    wenn du keine angst vor gvim hast: https://github.com/derekwyatt/vim-scala.
    oder wenn du keine angst vor emacs hast: https://github.com/aemoncannon/ensime.

    prost
    seth