Developments in programming techniques have led to the creation of many different approaches to calculus with infinite objects. Among these, we will study in detail one of the most interesting and with a vast set of applications, transformations on streams. We can find many examples of stream implementation, probably one of the best known are pipes in Unix, a feature still widely used today, which was added in an early shell version of Unix by Ken Thompson. The inspiration came from the work of McIlroy on streams, starting from a quote written on a piece of paper pinned to the wall of his office: "We should have some ways of connecting programs like garden hose – screw in another segment when it becomes necessary to massage data in another way. This is the way of IO also.” (McIlroy 1964) this approach helps us to see how we can process streams by transformations of data flows. We will also see how streams are implemented in functional languages, including Lucid, and in more modern languages ​​such as Haskell as special cases of potentially infinite sequences (lazy lists).

Gli sviluppi delle tecniche di programmazione hanno portato alla creazione di diversi approcci al calcolo con oggetti infiniti. Tra questi andremo ad approfondire uno dei pi`u interessanti e con un vasto insieme di applicazioni, le trasformazioni su stream. Possiamo trovare molti esempi di implementazione di stream, probabilmente uno tra i pi`u conosciuti sono le pipe in Unix, funzionalità ampiamente utilizzata ancora oggi, che fu aggiunta già in una delle prime versioni della shell Unix da Ken Thompson. L’ispirazione veniva dal lavoro di McIlroy sugli stream, partendo da una sua famosa citazione scritta su un pezzo di carta appeso al muro del suo ufficio: “We should have some ways of connecting programs like garden hose – screw in another segment when it becomes necessary to massage data in another way. This is the way of IO also.” (McIlroy 1964) questo tipo di approccio ci aiuta a vedere come possiamo elaborare gli stream mediante trasformazioni dei flussi di dati. Vedremo anche come gli stream sono implementati nei linguaggi funzionali, tra cui Lucid, e in linguaggi piu‘ moderni come Haskell quali casi particolari di sequenze potenzialmente infinite (liste lazy).

Calcolare con l’infinito: breve storia degli stream

FORMENTIN, LORENZO
2021/2022

Abstract

Gli sviluppi delle tecniche di programmazione hanno portato alla creazione di diversi approcci al calcolo con oggetti infiniti. Tra questi andremo ad approfondire uno dei pi`u interessanti e con un vasto insieme di applicazioni, le trasformazioni su stream. Possiamo trovare molti esempi di implementazione di stream, probabilmente uno tra i pi`u conosciuti sono le pipe in Unix, funzionalità ampiamente utilizzata ancora oggi, che fu aggiunta già in una delle prime versioni della shell Unix da Ken Thompson. L’ispirazione veniva dal lavoro di McIlroy sugli stream, partendo da una sua famosa citazione scritta su un pezzo di carta appeso al muro del suo ufficio: “We should have some ways of connecting programs like garden hose – screw in another segment when it becomes necessary to massage data in another way. This is the way of IO also.” (McIlroy 1964) questo tipo di approccio ci aiuta a vedere come possiamo elaborare gli stream mediante trasformazioni dei flussi di dati. Vedremo anche come gli stream sono implementati nei linguaggi funzionali, tra cui Lucid, e in linguaggi piu‘ moderni come Haskell quali casi particolari di sequenze potenzialmente infinite (liste lazy).
ITA
Developments in programming techniques have led to the creation of many different approaches to calculus with infinite objects. Among these, we will study in detail one of the most interesting and with a vast set of applications, transformations on streams. We can find many examples of stream implementation, probably one of the best known are pipes in Unix, a feature still widely used today, which was added in an early shell version of Unix by Ken Thompson. The inspiration came from the work of McIlroy on streams, starting from a quote written on a piece of paper pinned to the wall of his office: "We should have some ways of connecting programs like garden hose – screw in another segment when it becomes necessary to massage data in another way. This is the way of IO also.” (McIlroy 1964) this approach helps us to see how we can process streams by transformations of data flows. We will also see how streams are implemented in functional languages, including Lucid, and in more modern languages ​​such as Haskell as special cases of potentially infinite sequences (lazy lists).
IMPORT DA TESIONLINE
File in questo prodotto:
File Dimensione Formato  
922126_formentinlorenzotesi.pdf

non disponibili

Tipologia: Altro materiale allegato
Dimensione 1.05 MB
Formato Adobe PDF
1.05 MB Adobe PDF

I documenti in UNITESI sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/20.500.14240/139007