Scala

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Scala
Hallo,

ich wollte mal fragen, was ihr von der Programmiersprache Scala haltet (http://www.scala-lang.org/)

Die Sprache vereint den funktionalen mit dem objektorientierten Programmierstil und geht wohl weit über die Möglichkeiten von Java hinaus. Jedoch werden Scala-Programme zu Java-Bytecode kompiliert und in den Scala-Programmen kann man alle Java-Bibliotheken direkt einbinden.

Und: der Code wird in der Regel nur halb so lang, da in Scala nicht so redundant formuliert werden muss wie in Java.
Ausserdem ist Scala nicht so furchtbar festgelegt wie Java und lässt sich sehr leicht erweitern.

Sollte man bei immer komplexer werdenden Problemen nicht alle Abstraktionsmöglichkeiten in seinen Programmen nutzten können, die es eben in der funktionalen Programmierung gibt: Scala ist eine flexible high-level-Language.

Für eine Vorlesung wie PFP wäre so eine Sprache dann doch sicher ein sehr gutes Werkzeug?

Gruß
Oliver


Ich mag python


Schön, nur geht das an der gestellten Frage vorbei.


Python wird aber durchaus als eine der Wurzeln oder Vorbilder von Scala geenannt (neben vielen anderen)
http://www.artima.com/samples/chapter1.pdf

Erwähnenswert wäre wohl noch, dass Scala anscheinend auch für die parallele Programmierung entwickelt wurde, bzw. diese erleichtern soll.


In VHDL kann man auch toll parallel programmieren


Ich glaube, die Wahl der Sprache ist egal, so lange sie (in dieser Reihenfolge)

  • einigermassen massenkompatibel ist
  • Dir gut taugt.
    Eine Skriptsprache soll wohl jeder Informatiker gut koennen, welche da jetzt am geeignetsten ist, ist Glaubensfrage.

Ganz egal isses wohl nicht, jede Sprache - oder besser Sprachfamilie - bietet doch ihre eigenen Ausdrucksmöglichkeiten, nicht jede Sprache ist für alles gleich gut geeignet. In LISP oder Scheme programiert man auf eine andere Art als in Java oder C++.

Scala ist ja auch keine Skriptsprache (wo immer da die Abgrenzung liegen mag), sondern versucht wohl einerseits die Griffigkeit von Skriptsprachen mit der Mächtigkeit und Formbarkeit von funktionalen Programmiersprachen, wie Haskell oder eben Lisp zu vereinen, und gleihzeitig “fundamental” objektorientiert zu sein.

Ob dieser Anspruch durch Scala erfüllt wird, würde mich interesieren, also ob vielleicht jemand schon Erfahrung in Scala-Programmierung hat oder sich dafür interessiert.

Aber Danke für alle Beiträge!


Sorry, doch, wenn das der Anspruch von Scala ist, liegt es voll im Skriptsprachen-Trend :wink:
Wettbewerber mit aehnlichen Anspruechen sind (nur um ganz kurz anzureissen) Ruby, Lua; Perl-Moenche legen Wert darauf, dass auch Perl fuer alle Programmierparadigmen gut ist. Und tatsaechlich bricht es dann am Ende darauf herunter, welche Geschmacksrichtung Du bevorzugst [1] [2].

Nuja, um’s kurz zu machen, mit Scala habe ich keine praktischen Erfahrungen gesammelt, mit vielen anderen Skriptsprachen insgesamt aber schon, daher rede ich so gescheit daher.

[1] wie beim Rauchen, Nikotin haben eh alle.
[2] oder bei Kondomen… naja, lassen wir das.

Edit: Ich finde Skriptsprachen saugeil, nicht dass ein falscher Eindruck entsteht. Ich will nur sagen, dass die Entscheidung, welche genau man am Ende nutzt, halt eine persoenliche ist, weil die Unterschiede „at the end of the day“ nicht soo gross sind.

Edit2: Insofern nur los, mach was mit Scala, damit es auch ein bisschen Scala-Kompetenz am Campus gibt :slight_smile:


oh, ganz alleine…


jo schreib mal nen schickes game in scala


Natürlich Shell-Script (bash/zsh/tcsh oder was auch immer), wie soll man sonst effizient arbeiten? :slight_smile:

Quicksort in Scala
hier mal ein Beispiel, damit es etwas konkreter wird:

def qsort(lst: List[Int]):List[Int] = 
   lst match {
       case Nil => Nil
       case pivot::tail =>  qsort(tail filter { _ < pivot }) 
                                ::: pivot :: qsort(tail filter { _ >= pivot })
   }

(aus Wikipedia: http://en.wikipedia.org/wiki/Scala_(programming_language))


*gähn, also schon wieder eine Sprache die sich darüber profilieren möchte, dass qsort nur 6 Zeilen benötigt…


*gähn zu Beiträgen mit Informationsgehalt Null…


hat genauso viel gehalt als wenn ich jetzt hier ein code beispiel reingeknallt haette!


Ich vermute Oliver’s Vorhaben Prof. Philippsen zu überzeugen das Scala für FPP verwendet werden sollte wird scheitern


Mist, du hast mich durchschaut… :wink:
Aber vielleicht ist Herr Philippsen ja ein bisschen aufgeschlossener als mancher Andere…
Vor allem sollte nicht alles nach dem Motto “Ich weiss zwar nicht Bescheid, kenn mich aber bestens aus” gleich abgetan werden.


so, und um jetzt mal was zum Thema zu schreiben:

  • Interessant finde ich die Verwendung von traits, fehlt in Java meiner Meinung nach. interessieren wuerde mich wie sie das implementiert haben, spontan wuerde ich vermuten ne Wrapper Klasse mit verweisen auf Interfaces die dann konkrete Implementierungen zugewiesen bekommen

  • Everything is a object (das haben wir doch schonmal gehoert) find ich nicht so geschickt, ich finde primitive Typen sollten primitiv bleiben. Interessant hingegen ist die moeglichkeit Funktionen als Objekte zu behandeln. Okay, Java kann das auch, wird aber durch perfomance erkauft. Was bei Scala dann vermutlich nicht anders sein wird.

  • yay, man kann den Punkt-operator auf “primitive Typen” anwenden. Das haben die Java Entwickler definitiv verkackt (=> 5.toString() oder was weiss ich.)

  • autsch, es gibt einen Unterschied zwischen Methoden mit “zero arguments” und “without arguments”, interessantes Konzept, aber meiner Meinung nach Fehleranfaellig und unuebersichtlich

  • gut finde ich dass das override keyword fester Bestandteil der Sprache ist und nicht nur unterstuetzend fuer den compiler

  • rein subjektiv finde ich die meisten Code beispiele sehr unuebersichtlich.

  • was mir ein bisschen aufstoesst ist dass man 15 verschiedene moeglichkeit hat ein und dasselbe zu schreiben, dadurch entstehen sehr viele code versionen die letztendlich das gleiche tun sich aber nicht durchgehend angenehm lesen.
    zB. val o = true; ist das gleiche wie val o = true : Boolean;

  • den angepriesenen Vorteil um parallele programmierung zu erleichtern, kann ich nicht sehen

  • jetzt wollt ich noch irgendwas schreiben habs aber vergessen…

naja, Scala, nich mein Ding…


Danke, das nenn ich einen Beitrag… :slight_smile:

Was ich zum Beispiel schön finde, ist dass es keinen Unterschied zwischen Funktionen und Operatoren gibt, d.h. 1 + 2 ist dasselbe, wie b.+(2)[/b]. (alle Zeichen sind als Funktionsnamen erlaubt)
Man kann deshalb jede selbstdefinierte Funktion als Operator verwenden, was übersichtlichere Schreibweisen ermöglicht.
Dass man den Punkt-Operator auf alle Typen anwenden kann, liegt ja dann auch daran, dass in Scala nicht unterschieden wird zwischen primitiven Typen und Objekten, da eben alles als Objekt behandelt wird.
Dass man anonyme Funktionen verwenden kann, und Funktionen als Funktionsargumente übergeben kann, finde ich auch nicht schlecht.