English 2013 2012 Im Jahr 2014 habe ich die Devoxx in Antwerpen besucht. Hier sind ein paar Notizen dazu: Was ist Devoxx? Devoxx ist eine Konferenz der belgischen Java-User-Group Belgien ist dreisprachig, Konferenz aber 100% in Englisch Lokation in riesigem Kinokomplex guter Sound, gute Sitze, gute Projektoren, „cool“ 8 tracks, bei Keynotes „overflow“ Gut organisiert …
Kategorie-Archive: Programmiersprachen
Memory bei Java-Zeichenketten
Es hat von Java 1.6 nach Java 1.7 eine für den Memoryverbrauch relevante Änderung gegeben. Bis Java 1.6 wurde bei substring eine Zeichenkette konstruiert, die das selbe interne Array von Zeichen (char) referenziert und nur andere Werte für Anfang und Länge enthält. Das hatte den Vorteil, dass in vielen Fällen Memory gespart wurde, weil man …
Auf GPU rechnen
Heutige Rechner haben bekanntlich sehr leistungsfähige CPUs mit „Quadcore“ und mehr. Aber auch die Grafikkarten sind ziemlich toll geworden und haben zum Teil auch so große eigene Lüfter wie die CPU. Sie haben eine Menge eigenes Memory und sie können recht komplizierte Operationen selbsttätig rechnen, natürlich nur für die grafische Darstellung. Nun stellt sich die …
Einheiten mitführen
Typische Programme rechnen mit Größen, also mit Zahlwerten, die mit irgendeiner Einheit kombiniert sind. Das können Temperaturen, Längen, Zeitdauern, Geldbeträge und vieles mehr sein. Weil früher jedes Byte teuer war, hat sich etabliert, dass man nur mit den Zahlwerten arbeitet und die Einheiten implizit durch die Programmlogik ins Spiel kommen. Das funktioniert in einfache Fällen, …
Non-Blocking I/O
In Posix-Systemen (Linux, Unix, MacOS X,…) basieren die I/O-Operationen hauptsächlich auf den Systemaufrufen read(..) und write(..). Die meisten anderen I/O-Operationen lassen sich darauf zurückführen und auch I/O von anderen Programmiersprachen als C dürfte letztlich indirekt zu read() und write() führen. read() ist eine Funktion, die einen (numerischen) Filedeskriptor, einen Pointer auf einen hinreichend großen Speicherbereich …
Ist Ruby funktional
Wenn die Liste der funktionalen Sprachen erstellt wird, dann tauchen Haskell, Scala, Erlang, F#, Clojure und einige andere Lisp-Varianten auf. Wenn man sich anschaut, welche Merkmale funktionale Sprachen auszeichnen, dann stellt sich die Frage, ob das nicht alles mit Ruby auch machbar ist. Schauen wir einmal was man so typischerweise findet, meist auf Englisch: Functions …
Zufällige Zeichenkette erzeugen
Oft braucht man so eine zufällige Zeichenkette, die nur aus bestimmten Zeichen bestehen darf. Hier ist eine einfache Ruby-implementierung dafür: #!/usr/bin/ruby arr = (‚a’…’z‘).to_a + (‚A’…’Z‘).to_a + (‚0’…’9‘).to_a + [‚.‘, ‚/‘] val = (0..16).inject(„“) do |a, x| i = (arr.size() * rand()).to_i;a + arr[i] end puts val Es wird eine 16-Zeichen lange Zeichenkette generiert, die …
Scala Days in Berlin 2014
English Am 16., 17. und 18. Juni 2014 war ich bei der Konferenz „Scala Days“ in Berlin. Wie so oft bei diesen Veranstaltungen gibt es einen Haufen Vorträge, in diesem Fall bis auf die jeweilige „Keynote“ jeweils vier gleichzeitig. Das Veranstaltungslokal war wie bei der Devoxx in Antwerpen ein Kino, allerdings in diesem Fall schon …
Closures III (in C)
English Geht so etwas überhaupt? Ein Element sind die Funktionspointer. Es ist immer recht schwierig, die Signatur davon richtig zu treffen, aber ein typedef hilft. Die nächste Schwierigkeit ist, dass C normalerweise keine inneren Funktionen erlaubt und dass man auch keinen Kontext einbinden kann. Das lässt sich lösen: Die Funktion hat einen weiteren Parameter für …
Getter und Setter
English In der objektorientierten Programmierung gilt es als fortschrittlich, getter und setter zu verwenden, statt auf Attribute direkt zuzugreifen, weil das einem die Flexibilität gibt, später auf berechnete Attribute umzuschwenken. Etwas hässlich ist das, weil die getter und setter, etwas willkürlich den Attributnamen mit so einem vorangestellten „get“ oder „is“ oder „set“ und eventueller Umwandlung …