Um estudo sobre a correspondência entre programação funcional com continuações e programação imperativa Single assignment

Detalhes bibliográficos
Autor(a) principal: Ferreira, Tiago Alexandre da Costa
Data de Publicação: 2014
Tipo de documento: Dissertação
Idioma: por
Título da fonte: Repositórios Científicos de Acesso Aberto de Portugal (RCAAP)
Texto Completo: http://hdl.handle.net/1822/34743
Resumo: Dissertação de mestrado em Matemática e Computação
id RCAP_9c711ebc3bf1dbd80546f89ec76473fa
oai_identifier_str oai:repositorium.sdum.uminho.pt:1822/34743
network_acronym_str RCAP
network_name_str Repositórios Científicos de Acesso Aberto de Portugal (RCAAP)
repository_id_str https://opendoar.ac.uk/repository/7160
spelling Um estudo sobre a correspondência entre programação funcional com continuações e programação imperativa Single assignment519.68Ciências Naturais::MatemáticasDissertação de mestrado em Matemática e ComputaçãoNo universo das linguagens de programação existe uma diversidade grande de paradigmas, frequentemente motivados pela necessidade da resolução computacional de novos problemas, em novos contextos. Dois destes paradigmas, que atraem a atenção de programadores e cientistas da computação desde os primórdios das linguagens de programação, são o paradigma imperativo e o paradigma funcional. Estes dois paradigmas assentam em ideias bastante diferentes. O paradigma imperativo baseia-se numa noção de estado e em programas que são sequências de comandos cuja execução vai provocando alterações ao estado. Por sua vez, o paradigma funcional baseia-se na noção matemática de função e a execução de programas (uma coleção de funções) corresponde ao cálculo do valor de uma expressão, envolvendo as funções definidas no programa. No entanto, existem fragmentos do paradigma imperativo e do paradigma funcional que podem ser relacionados. De facto, o formato Single-Assignment (SA), do lado imperativo, e o formato Continuation- Passing Style (CPS), do lado funcional, que são usados como linguagens “intermédias” no processo de compilação de linguagens de programação mais abstratas, por facilitarem e agilizarem processos de optimização na geração de código máquina eficiente correspondem, na essência, a uma mesma linguagem. Neste trabalho estuda-se de uma forma detalhada a relação entre programação imperativa no formato SA e programação funcional no formato CPS. Recorrendo a uma linguagem imperativa simples para representar o formato SA e a um subconjunto do λ-calculus para o formato CPS, construímos, entre eles, uma bijeção sintática (ao nível dos programas) e semântica (ao nível da execução de programas). Um resultado destas bijeções é que o formato SA pode ser pensado como uma certa escolha de representantes de classe para a noção de α-equivalência para programas imperativos correspondente a essa mesma noção para λ-termos Durante o trabalho, foi ainda desenvolvida uma pequena ferramenta computacional, implementada na linguagem Haskell, que permitiu testar e animar os diversos conceitos envolvidos no estudo.In the universe of programming languages there is a wide range of paradigms that are often motivated by the need to solve new computational problems, in new contexts. Two of these paradigms, which have drawn programmers and computer scientists’ attention since the beginnig of programming languages, are the imperative programming paradigm and the functional programming paradigm. Both paradigms are built upon different ideas. The imperative programming paradigm is based on the notion of state, its programs are built by sequencing multiple commands, and execution generates state changes. The functional programming paradigm is based on the notion of mathematical function (a program is a collection of functions) and program execution corresponds to the evaluation of expressions (involving the functions defined in the program). Nevertheless, there are fragments within the imperative programing paradigm and the functional programming paradigm that can be related. The Single Assignment (SA) form, on the imperative programming paradigm, and the Continuation-Passing Style (CPS) form in the functional programming paradigm, are used as “intermediate” languages in the compilation process of more abstract languages, due to the fact that they simplify and make more agile the processes of optimization when it comes to the genaration of efficient machine code, they are in its essence the same language. In this work we study in detail the relationship between imperative programming in the SA form and functional programming in the CPS form. Using a simple imperative language to represent the SA form and a subset of λ-calculus in CPS form, we built between them a syntatic bijection (at code level) and a semantic bijection (at program execution level). We concluded that the SA form can be tought as a certain choice of class representatives in the notion of α-equivalence in imperative programs that matches that same notion in λ-terms. During this work, we developed a small computational tool using the Haskell language which allowed us to simulate multiple concepts that are involved in the study.Pinto, Luís F.Frade, M. J.Universidade do MinhoFerreira, Tiago Alexandre da Costa20142014-01-01T00:00:00Zinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisapplication/pdfhttp://hdl.handle.net/1822/34743por201348632info:eu-repo/semantics/openAccessreponame:Repositórios Científicos de Acesso Aberto de Portugal (RCAAP)instname:FCCN, serviços digitais da FCT – Fundação para a Ciência e a Tecnologiainstacron:RCAAP2024-05-11T04:24:27Zoai:repositorium.sdum.uminho.pt:1822/34743Portal AgregadorONGhttps://www.rcaap.pt/oai/openaireinfo@rcaap.ptopendoar:https://opendoar.ac.uk/repository/71602025-05-28T14:47:26.020301Repositórios Científicos de Acesso Aberto de Portugal (RCAAP) - FCCN, serviços digitais da FCT – Fundação para a Ciência e a Tecnologiafalse
dc.title.none.fl_str_mv Um estudo sobre a correspondência entre programação funcional com continuações e programação imperativa Single assignment
title Um estudo sobre a correspondência entre programação funcional com continuações e programação imperativa Single assignment
spellingShingle Um estudo sobre a correspondência entre programação funcional com continuações e programação imperativa Single assignment
Ferreira, Tiago Alexandre da Costa
519.68
Ciências Naturais::Matemáticas
title_short Um estudo sobre a correspondência entre programação funcional com continuações e programação imperativa Single assignment
title_full Um estudo sobre a correspondência entre programação funcional com continuações e programação imperativa Single assignment
title_fullStr Um estudo sobre a correspondência entre programação funcional com continuações e programação imperativa Single assignment
title_full_unstemmed Um estudo sobre a correspondência entre programação funcional com continuações e programação imperativa Single assignment
title_sort Um estudo sobre a correspondência entre programação funcional com continuações e programação imperativa Single assignment
author Ferreira, Tiago Alexandre da Costa
author_facet Ferreira, Tiago Alexandre da Costa
author_role author
dc.contributor.none.fl_str_mv Pinto, Luís F.
Frade, M. J.
Universidade do Minho
dc.contributor.author.fl_str_mv Ferreira, Tiago Alexandre da Costa
dc.subject.por.fl_str_mv 519.68
Ciências Naturais::Matemáticas
topic 519.68
Ciências Naturais::Matemáticas
description Dissertação de mestrado em Matemática e Computação
publishDate 2014
dc.date.none.fl_str_mv 2014
2014-01-01T00:00:00Z
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/masterThesis
format masterThesis
status_str publishedVersion
dc.identifier.uri.fl_str_mv http://hdl.handle.net/1822/34743
url http://hdl.handle.net/1822/34743
dc.language.iso.fl_str_mv por
language por
dc.relation.none.fl_str_mv 201348632
dc.rights.driver.fl_str_mv info:eu-repo/semantics/openAccess
eu_rights_str_mv openAccess
dc.format.none.fl_str_mv application/pdf
dc.source.none.fl_str_mv reponame:Repositórios Científicos de Acesso Aberto de Portugal (RCAAP)
instname:FCCN, serviços digitais da FCT – Fundação para a Ciência e a Tecnologia
instacron:RCAAP
instname_str FCCN, serviços digitais da FCT – Fundação para a Ciência e a Tecnologia
instacron_str RCAAP
institution RCAAP
reponame_str Repositórios Científicos de Acesso Aberto de Portugal (RCAAP)
collection Repositórios Científicos de Acesso Aberto de Portugal (RCAAP)
repository.name.fl_str_mv Repositórios Científicos de Acesso Aberto de Portugal (RCAAP) - FCCN, serviços digitais da FCT – Fundação para a Ciência e a Tecnologia
repository.mail.fl_str_mv info@rcaap.pt
_version_ 1833594888964276224