Statische Code-Analyse

Ada / Spark

go

Wolfram Language

Ideas by Shawn Corey

Quellcodes für C#

Microsoft Forschungsprojekt "Checked C"

Kotlin

ArnoldC

Fortran

Scala

Antoras

Schwer zu erklären was mir gefällt wenn ich keine 5 Seiten füllen möchte. Um beim Beispiel Lesbarkeit zu bleiben: Typinferenz ist für mich mittlerweile verdammt wichtig. Wenn der Compiler es nicht schafft alle benötigten Typen, die zum Benutzen einer Bibliothek erforderlich sind, aus dem Kontext zu inferieren wäre das für mich ein Grund diese Bibliothek nicht zu benutzen. Das würde sonst einfach zu schnell zu kompliziert werden und oft erfordern, dass ich die eingesetzte Sprache zu 100% beherrsche. Das will ich aber meist nicht (und kann es auch nicht). Ein kleines Beispiel aus Scala dazu:

 scala> 1 to 3 map (_+1) 
 res21: scala.collection.immutable.IndexedSeq[Int] = Vector(2, 3, 4) 

 scala> Predef.intWrapper(1).to(3).map(((x$1) => x$1.$plus(1)))(collection.immutable.IndexedSeq.canBuildFrom) 
 res22: scala.collection.immutable.IndexedSeq[Int] = Vector(2, 3, 4) 	

Beides bedeutet ein und dasselbe, nur letzteren ist unbenutzbar. CanBuildFrom ist das „Geheimnis“ hinter der Mächtigkeit von Scalas Collections. Benutzen kann die Collections jeder - verstehen wie sie funktionieren aber nur die wenigsten. Müsste ich CanBuidFrom explizit notieren würde ich Scala sofort wieder in die Tonne kippen. Und da bin ich nicht der einzige: Is the Scala 2.8 collections library a case of “the longest suicide note in history”? Xin schrieb:

Du sprichst hier sehr positiv von Scala. Da Du Dir vermutlich nicht die Zeit nehmen wirst, mir einen Crash-Kurs im einen oder anderen zu geben und mir die Vorzüge zu präsentieren, hast Du vielleicht gute Quellen.

Bei Haskell habe ich mal nach einem Seminar geguckt, mal eben ein halbes Jahr in eine neue Sprache investieren, soviel Zeit habe ich nicht, dafür gibt es zuviele Sprachen. Also brauche ich die Highlights konzentriert. Hast Du da was für mich?

Das hier finde ich ist eine ganz interessante Einführung (wenn Teile davon auch schon wieder veraltet sind):

Einer der besten Vorträge über Scala, über den ich bisher gestolpert bin, ist von einem indischen Professor: Why Scala? ...by a hilarious Indian guy

Die gehen alle nicht sonderlich ins Detail sondern geben mehr einen Gesamtüberblick. Wenn du detailliertere Informationen über das ein oder andere Feature haben möchtest, dann sage es einfach.

Rust

Nim (ehemals Nimrod)

Crema

Nicht Touringvollständig, löst aber das Halteproblem - vorteilhaft bei Sicherheitsfragen

Julia

Express / Step

EDMExpress verwendet einige Operatoren mit einem Prefix, die sie als Binäre Operatoren kennzeichnen:

{data type} ; casting
~& : INTEGER; bitwise AND
~| : INTEGER; bitwise OR
~^ : INTEGER; bitwise XOR
~~ : INTEGER; bitwise invert
~> : INTEGER; shift right
~< : INTEGER; shift left

Hier könnte man sich was abschauen.

Wobei Bitweise AND in Richtung ~* und bitweises OR in Richtung ~+ laufen könnte. Hier wird's nur bei der Lesbarkeit fraglich.

M#

Forenbeiträge