Punktfreie Programmiersprache
Begründung: Was bedeutet „punktfrei“ bzw. „Punkt“? -- Olaf Studt (Diskussion) 15:41, 24. Apr. 2020 (CEST)
Punktfreie Programmierung bietet die Möglichkeit der Programmierung auf Funktionsniveau an. Die erste bekannte punktfreie Programmiersprache war ein FP-System von John W. Backus, das er in einem Aufsatz[1] anlässlich zur Verleihung des Turing Award 1977 vorstellte. Er nannte dieses FP (vom englischen Functional Programming), obwohl es eine PF (punktfreie Programmiertechnik) war, in der er einen variablenfreien Stil propagierte. Dieser variablenfreie Stil wurde durch die Verwendung der Komposition erst ermöglicht. Da er die Verwendung von Variablen vermied, nutzte er stattdessen Zahlen als Selektoren, die auf die Positionen eines Arrays, den er im Argument einer Funktion anbot, zugriffen. Es kamen auch eine begrenzte Anzahl von programmformenden Kombinatoren zum Einsatz, mit deren Hilfe einfache Primitive und Programme zu komplexeren Programmen zusammen gebaut wurden.
Heute kennt man auch den punktfreien Stil als variante Verwendung in der rein funktionalen Programmiersprache Haskell[2]. Auch die Programmiersprache FP trivia, die eine Fortsetzung der backus’schen FP-Systeme darstellt, versucht, diesen Stil zu verwenden; allerdings können auch Instanzenvariablen zu besseren Dokumentation der Programme – im selben punktfreien Stil – angewendet werden. Nicht zu vergessen sind die konkatenativen Sprachen mit deren bekanntesten Programmiersprache Joy, die viele Nachahmer gefunden hat. Die Stacksprachen haben erstaunlicherweise eine gewisse Popularität, obwohl sie Probleme des Parameterstacks mit der Ausnahmenbehandlung haben.
Zweck von punktfreier Programmierung und Sprachen
Obwohl der punktfreie Stil – besonders bei Joy zu beobachten – zu einer "Obfuscation"[3] des Quellcodes führen kann, hat dieser Stil auch einige mathematische Vorteile gegenüber Sprachen, die nur auf Lambdavariablen beschränkt sind. Der geschlossene Charakter einer punktfreien Programmiersprache ermöglicht eine "Algebra of Programming"[4], also eine mathematische Bearbeitung des Quellcodes, ähnlich wie man es in der Schule für die Termumformung von Gleichungen vermittelt bekommt. Damit steht der mathematischen Behandlung der Programme nichts mehr im Weg, wenn auf eine referenzielle Transparenz der Sprache geachtet wurde.
Bekannte punktfreie Programmiersprachen
- Backus’ FP-Systeme
- Formal FP
- FP trivia
- FL (von Function-Level, research project) und PLaSM
- J, von Kenneth E. Iverson and Roger Hui
- Joy (Konkatenative Programmiersprache – stack-orientiert) und die ganze Familie
Weblinks
- FP Interpreter in Lisp
- FP trivia, FP Repo in Lazarus dazu
- Joy, Official Joy Programming Language Website (La Trobe University), Concatenative language
- mjoy, ein Interpreter zum maschinellen Zeichnen
- Jsoftware und Wiki
- What's Point-free Programing?
- What are advantages and disadvantages of "point free" style in functional programming?
- Advantages of pointfree?
Quellenangaben
- ↑ John Backus: Can Programming Be Liberated from the von Neumann Style? A Functional Style and Its Algebra of Programs. Hrsg.: . In: Communications of the ACM. Vol. 21, No. 8, August 1978, S. 613–641. (online [PDF]).
- ↑ Pointfree - HaskellWiki. Abgerufen am 24. April 2020.
- ↑ Obfuscation - HaskellWiki. Abgerufen am 3. Mai 2020.
- ↑ Richard Bird and Oege de Moor: Algebra of Programming. Prentice Hall Europe, 1997, abgerufen am 3. Mai 2020 (englisch).
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.
