Kommerzielle Softwareentwicklung mit Haskell



Ähnliche Dokumente
Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

Übungen zur Softwaretechnik

Installation von NetBeans inkl. Glassfish Anwendungs-Server

Präsentation Von Laura Baake und Janina Schwemer

Mobiles SAP für Entscheider. Permanente Verfügbarkeit der aktuellen Unternehmenskennzahlen durch den mobilen Zugriff auf SAP ERP.

Internet Explorer Version 6

INDEX. Öffentliche Ordner erstellen Seite 2. Offline verfügbar einrichten Seite 3. Berechtigungen setzen Seite 7. Öffentliche Ordner Offline

Wo finde ich die Software? - Jedem ProLiant Server liegt eine Management CD bei. - Über die Internetseite

Entwicklungen bei der Linux Clustersoftware

1 Was ist das Mediencenter?

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

SharePoint Demonstration

Vorarlberger Standardschulinstallation Anbindung von Android Mobile Devices

peer-to-peer Dateisystem Synchronisation

Uwe Baumann artiso Solutions

Entwicklung des Dentalmarktes in 2010 und Papier versus Plastik.

Java: Vererbung. Teil 3: super()

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch

Synchronisations- Assistent

Kurzanweisung für Google Analytics

Kontaktlinsen über die neue Website bestellen eine Kurzanleitung

Online bezahlen mit e-rechnung

Einführung in die Informatik Tools

Agile Vorgehensmodelle in der Softwareentwicklung: Scrum

Übung 8: Semaphore in Java (eigene Implementierung)

Der schnelle Weg zu Ihrer eigenen App

Neues CAS genesisworld Berechnungsmodell Unsere Jubiläums-Aktion 20 Jahre MERIDIAN

Übung: Verwendung von Java-Threads

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen.

Herzlich willkommen zu unserem Webinar! am 10. Februar 2014

Informationsbroschüre FX24 Capital Inc.

Installationsanleitung

7HVWHQYRQ6$3$QZHQGXQJHQPLWGHP([WHQGHG &RPSXWHU$LGHG7HVW7RROH&$77

Benutzerhandbuch MedHQ-App

Wenn Sie das T-Online WebBanking das erste Mal nutzen, müssen Sie sich zunächst für den Dienst Mobiles Banking frei schalten lassen.

Das Leitbild vom Verein WIR

OP-LOG

Um zu prüfen welche Version auf dem betroffenen Client enthalten ist, gehen Sie bitte wie folgt vor:

Das Girokonto: In drei Schritten zum Produktabschluss

Social-Media Basis-Paket Ein einfaches und verständliches Unternehmens-Programm für den ersten Schritt

Neuerungen im Service Pack 2

SWE12 Übungen Software-Engineering

Mobile RPG - Smartphone-Anwendungen mit Mobile RPG - I Christian Neißl,

Step by Step Webserver unter Windows Server von Christian Bartl

THEMA: "SAS STORED PROCESSES - SCHNELL GEZAUBERT" HELENE SCHMITZ

Erfolg beginnt im Kopf

Inhalt... 1 Einleitung... 1 Systemanforderungen... 1 Software Download... 1 Prüfdokumentation... 4 Probleme... 5 Hintergrund... 5

Im Rahmen seiner Beratertätigkeit veröffentlicht er Artikel und hält Vorträge und Schulungen zu diesen und weiteren Themen.

Sicher ist sicher! itbank Hosting!

Zeitstempel für digitale Dokumente. Ein neuer Dienst in der DFN-PKI

Java Entwicklung für Embedded Devices Best & Worst Practices!

Produktvorstellung: CMS System / dynamische Webseiten. 1. Vorwort

Herzlich willkommen zur Kurzvorlesung: Die häufigsten Fehlerquellen bei der Erstellung von Webapplikationen. Udo H. Kalinna. Nürnberg, den

Python SVN-Revision 12

! " # $ " % & Nicki Wruck worldwidewruck

SAP Memory Tuning. Erfahrungsbericht Fritz Egger GmbH & Co OG. Datenbanken sind unsere Welt

Informatik, Mathematik und Naturwissenschaften

ANLEITUNG GERÄTEREGISTRATION AN KRZ.SMK IOS

Web-basierte Benutzerschnittstellen für Embedded Systeme: Eine Benutzerschnittstelle drei Sichtweisen

Gründe für fehlende Vorsorgemaßnahmen gegen Krankheit

Glaube an die Existenz von Regeln für Vergleiche und Kenntnis der Regeln

Internet online Update (Internet Explorer)

Copyright 2014 Delta Software Technology GmbH. All Rights reserved.

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup Conrad Kobsch

Vermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg.

Database Exchange Manager. Infinqa IT Solutions GmbH, Berlin Stralauer Allee Berlin Tel.:+49(0) Fax.:+49(0)

Softwareentwicklung aus Sicht des Gehirns

Anleitung Grundsetup C3 Mail & SMS Gateway V

Zielgruppenansprache von Baumärkten

Idimager ein Bildverwaltungsprogramm-DAM Software

Agenda. Ziel Problematik OS-Installation Softwareverteilung Inventarisierung Stufenplan

Einführung in PHP. (mit Aufgaben)

Onlinebanking mit PHP

Anleitung zur Anmeldung mittels VPN

Herzlich Willkommen! eine praxisnahe Übersicht. Mit Java ins Web - mb@bebox.franken.de (c) Michael Behrendt -

Leitfaden für die ersten Schritte im INIT-eCampus. mailto:

SF-RB. Modul Provisionsabrechnung & Planung Reiseagentenprovisionsabrechnung & Planung. SF-Software Touristiksoftware

Installation der SAS Foundation Software auf Windows

Schritt-für-Schritt-Anleitung So verschlüsseln Sie Ihr -Konto in der Software 6.0

INTERNET UND MMS MIT DEM QTEK2020 MARCO 28. MÄRZ 04

Schüler-E-Tutorial für mobile Endgeräte. Ein Folgeprojekt des Netzwerks Informationskompetenz Berlin/Brandenburg mit der HdM

Verwendung von USB-Datenträger in der VDI unter Mac OSX

Java Script für die Nutzung unseres Online-Bestellsystems

The ToolChain.com. Grafisches Debugging mit der QtCreator Entwicklungsumgebung

PlaceCam 3. Die Videokonferenzsoftware für Windows und Mac OS X. Jürgen Völkel Vertrieb daviko GmbH

Kombinierte Attacke auf Mobile Geräte

Welchen Nutzen haben Risikoanalysen für Privatanleger?

Version 0.3. Installation von MinGW und Eclipse CDT

w3lib - einfach Software entwickeln!

Version smarter mobile(zu finden unter Einstellungen, Siehe Bild) : Gerät/Typ(z.B. Panasonic Toughbook, Ipad Air, Handy Samsung S1):

Wie starte ich mit meinem Account?

TimeSafe Zeiterfassung. Version 3.1 (März 2010)

Über die Internetseite Hier werden unter Download/aktuelle Versionen die verschiedenen Module als zip-dateien bereitgestellt.

Handbuch. timecard Connector Version: REINER SCT Kartengeräte GmbH & Co. KG Goethestr Furtwangen

Sehr geehrter Herr Pfarrer, sehr geehrte pastorale Mitarbeiterin, sehr geehrter pastoraler Mitarbeiter!

Ursprung des Internets und WWW

Die Bundes-Zentrale für politische Bildung stellt sich vor

Anmeldung und Zugang zum Webinar des Deutschen Bibliotheksverbandes e.v. (dbv)

IPRO Eyetest-Testeübersicht

L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016

Transkript:

Kommerzielle Softwareentwicklung mit Haskell Ein Erfahrungsbericht Stefan Wehr factis research GmbH, Freiburg im Breisgau 7. Oktober 2011, Hal6 in Leipzig

Viele Fragen Wer sind wir? Wer bin ich? Wie setzen wir Haskell im kommerziellen Umfeld ein? Welche Vorteile haben wir durch Haskell? Mit welchen Problemen kämpfen wir? Welche Verbesserungen wären gut? Was haben wir gelernt? 2

Frage: Wer sind wir? Wer bin ich? Kleine Firma aus Freiburg i. Brsg. Gegründet 2001 Vier feste, etwa sechs freie Mitarbeiter Produktentwicklung im Bereich mobiler und serverbasierter Anwendungen Über mich: Haskell seit 2003 Erfahrung mit Haskell in zahlreichen wissenschaftlichen Projekten 3

Frage: Wie setzen wir Haskell im kommerziellen Umfeld ein? Produkt: Checkpad MED Elektronische Krankenakte auf dem ipad In der Entwicklung seit Anfang 2010 Pilotbetrieb in mehreren Krankenhäusern Substanzieller Teil in Haskell geschrieben 4

Architektur von Checkpad MED Krankenhaus Mobile Gateway Haskell SQL, HL7, DICOM XML, HTTP Protocol Buffers ipads Data Server 5

Aufgaben des Mobile Gateways Anpassung der Daten für das ipad Workflow Synchronisation 6

Architektur des Mobile Gateways XML, HTTP Newswatch Workflow Derivations Sync Protocol Buffers 7

Frage: Welche Vorteile haben wir durch Haskell? Hohe Ausdruckskraft Bibliothek zum bidirektionalen Serialisieren/Deserialisieren Statisches Typsystem DAG-Struktur mit statischer Garantie dass nur gewisse Knotentypen verbunden sind Kontrollierte Seiteneffekte Nebenläufigkeit mit STM Test der Netzwerkkommunikation durch Abstraktion über Netzwerkoperationen siehe nächste Folie Gute Testbarkeit QuickCheck Automatische Korrektheit Haskell Community 8

Nebenläufigkeit mit STM STM: Software Transactional Memory Atomare Ausführung dezidierter Codeblöcke Keine Locks Atomare Blöcke sind komponierbar Zitat: Ich habe noch nie Code geschrieben der (a) so nebenläufig war und (b) weniger Fehler wegen Nebenläufigkeit enthielt. 9

Erfolg mit STM Möglichst kurze Transaktionen do x <- atomically $ do y1 <- readtvar v1 Control.Exception.evaluate x y2 <- readtvar v2 let y1 = expensivecomputation y1 y2 writetvar v1 y1 return y1 Aufteilung des Zustands in TVars Zu grob: hohes Konfliktpotential Zu fein: unbequem, Inkonsistenzen möglich Überwachung wie oft eine Transaktion wiederholt wird 10

Frage: Mit welchen Problemen kämpfen wir? Welche Verbesserungen wären gut? Lazyness Laufzeit-Monitoring Bibliotheken, cabal-install Hohe Einstiegshürde 11

Lazyness Schwierige Balance zwischen lazy und strikt Striktheitsgrad für das Typsystem unsichtbar Striktheitsfragen sind low-level / operationell Ketzerische Fragen: wäre eine strikte Sprache mit Lazyness-Annotation nicht besser? 12

Laufzeit Monitoring Was macht der Server gerade? Warum verursacht eine STM Transaktion so viele Retries? Welche Threads laufen gerade? Welche Konstruktoren werden gerade alloziert?... 13

I have a dream Monitoring für Java GHC Profiler offline funktioniert nicht mit mehren Cores hohe Performanzverluste 14

Bibliotheken, cabal-install Viele Bibliotheken auf Hackage ungeeignet Nicht skalierbar, nicht performant, nicht korrekt Erfahrung nötig welche Bibliotheken geeignet Schreibe Bibliotheken selbst Problematisch für cabal-install: mehrere Version desselben Pakets Ausweg: eigenes hackage Repository Idee: stabile Teilmenge von hackage 15

Einstiegshürde Wenige Programmierer können Haskell Schritt vom Gelegenheitsprogrammierer zum professionellen Haskell Programmierer ist sehr groß Andere Sprache (wie z.b. Scala) bieten einen schrittweisen Einstieg 16

Frage: Was haben wir gelernt? Viele positive Erfahrungen mit Haskell Wichtigste negative Erfahrungen: Hohe Einstiegshürde Unzureichendes Runtime Monitoring 17

Erfahrungen mit Scala Scala Teilprojekte im Rahmen von Checkpad MED: DICOM Zugriff HL7 Zugriff Webapplikation zur Projektzeiterfassung Portierung der Haskell Bibliothek roundtrip nach Scala 18

Vergleich mit Scala Haskell Scala Ausdruckskraft + + Statisches Typsystem + + Kontrollierte Seiteneffekte + - STM +? Testbarkeit + + Automatische Korrektheit ++ + Community +? Lazyness? + Monitoring - + Bibliotheken + ++ Einstieg - + Achtung! Subjektiver Vergleich! 19

Resourcen Im Web: http://www.factisresearch.com, http://www.stefanwehr.de Hackage: http://hackage.haskell.org GHC Profiler: http://www.haskell.org/ghc/docs/latest/html/ users_guide/profiling.html Roundtrip, Bibliothek zum bidirektionalen Serialisieren/Deserialisieren: http://hackage.haskell.org/package/roundtrip HTF, Bibliothek zur Organisation von Unit Tests und QuickCheck Eigentschaften: http://hackage.haskell.org/package/htf STM in Haskell: Tim Harris, Simon Marlow, Simon Peyton-Jones, and Maurice Herlihy. Composable memory transactions. In Proceedings of the 10th ACM SIGPLAN symposium on Principles and practice of parallel programming, PPoPP 05, pages 48 60, New York, NY, USA, 2005. ACM. STM in Scala: http://nbronson.github.com/scala-stm/ David Pollack über Scala und Java (und fortgeschrittene Programmiersprachen im allgemeinen): http://goodstuff.im/scala-use-isless-good-than-java-use-for-at-l 20