Compilando Haskell para .NET via F#
Ano de defesa: | 2010 |
---|---|
Autor(a) principal: | |
Orientador(a): | |
Banca de defesa: | |
Tipo de documento: | Dissertação |
Tipo de acesso: | Acesso aberto |
Idioma: | por |
Instituição de defesa: |
Universidade Federal de Pernambuco
|
Programa de Pós-Graduação: |
Não Informado pela instituição
|
Departamento: |
Não Informado pela instituição
|
País: |
Não Informado pela instituição
|
Palavras-chave em Português: | |
Link de acesso: | https://repositorio.ufpe.br/handle/123456789/2389 |
Resumo: | Diferentes linguagens de programação disponibilizam diferentes formas de se implementar uma funcionalidade. Por exemplo, acessar um banco de dados usando C++ ou Python podem ser duas tarefas completamente diferentes. Por outro lado, com o surgimento da Plataforma .NET o acesso a dados com C++ .NET ou IronPython, por exemplo, se tornaram atividades muito parecidas tendo apenas algumas diferenças sintáticas. A Plataforma .NET é distribuída com um conjunto padrão de compiladores para diferentes linguagens como C#, Visual Basic .NET, JScript e J#, todas são orientadas a objetos. Com isso podemos notar uma maior atenção comercial dada ao paradigma de orientação a objetos. No entanto, esse dado não significa que devamos concluir que outros paradigmas não possam ser suportados, pelo contrário e a criação da linguagem F# é um exemplo de que a Plataforma .NET pode dar suporte a diversos paradigmas. Haskell é uma linguagem puramente funcional, não-estrita e fortemente tipada. E por ser uma linguagem de alto poder de expressão e não permitir efeitos colaterais durante sua execução, um programa escrito em Haskell se torna mais fácil de testar, otimizar e paralelizar. No entanto há um grande vazio quando tocamos na questão de ferramentas e APIs para Haskell. Devido ao fato de desenvolvedores usarem uma grande gama de ferramentas e tecnologias, cada qual com diferentes funcionalidades e tipos, tem sido historicamente difícil garantir a interoperabilidade entre as linguagens. No entanto, os compiladores e ferramentas que tem como alvo máquinas virtuais como a Plataforma .NET tiram proveito do suporte a interoperabilidade entre linguagens inerente a esses tipos de sistemas. O presente trabalho propõe um novo esquema de compilação de Haskell para a Plataforma .NET utilizando F# como linguagem intermediária. Tal abordagem nos livra dos inúmeros problemas que a geração de código diretamente para MSIL pode trazer, possibilitando irmos um pouco mais além na questão da interoperabilidade |
id |
UFPE_f09c4c3adafe60a5408519906ffbd7e9 |
---|---|
oai_identifier_str |
oai:repositorio.ufpe.br:123456789/2389 |
network_acronym_str |
UFPE |
network_name_str |
Repositório Institucional da UFPE |
repository_id_str |
|
spelling |
Kely de Melo Oliveira, GuilhermeLuís de Medeiros Santos, Andre 2014-06-12T15:57:39Z2014-06-12T15:57:39Z2010-01-31Kely de Melo Oliveira, Guilherme; Luís de Medeiros Santos, Andre. Compilando Haskell para .NET via F#. 2010. Dissertação (Mestrado). Programa de Pós-Graduação em Ciência da Computação, Universidade Federal de Pernambuco, Recife, 2010.https://repositorio.ufpe.br/handle/123456789/2389Diferentes linguagens de programação disponibilizam diferentes formas de se implementar uma funcionalidade. Por exemplo, acessar um banco de dados usando C++ ou Python podem ser duas tarefas completamente diferentes. Por outro lado, com o surgimento da Plataforma .NET o acesso a dados com C++ .NET ou IronPython, por exemplo, se tornaram atividades muito parecidas tendo apenas algumas diferenças sintáticas. A Plataforma .NET é distribuída com um conjunto padrão de compiladores para diferentes linguagens como C#, Visual Basic .NET, JScript e J#, todas são orientadas a objetos. Com isso podemos notar uma maior atenção comercial dada ao paradigma de orientação a objetos. No entanto, esse dado não significa que devamos concluir que outros paradigmas não possam ser suportados, pelo contrário e a criação da linguagem F# é um exemplo de que a Plataforma .NET pode dar suporte a diversos paradigmas. Haskell é uma linguagem puramente funcional, não-estrita e fortemente tipada. E por ser uma linguagem de alto poder de expressão e não permitir efeitos colaterais durante sua execução, um programa escrito em Haskell se torna mais fácil de testar, otimizar e paralelizar. No entanto há um grande vazio quando tocamos na questão de ferramentas e APIs para Haskell. Devido ao fato de desenvolvedores usarem uma grande gama de ferramentas e tecnologias, cada qual com diferentes funcionalidades e tipos, tem sido historicamente difícil garantir a interoperabilidade entre as linguagens. No entanto, os compiladores e ferramentas que tem como alvo máquinas virtuais como a Plataforma .NET tiram proveito do suporte a interoperabilidade entre linguagens inerente a esses tipos de sistemas. O presente trabalho propõe um novo esquema de compilação de Haskell para a Plataforma .NET utilizando F# como linguagem intermediária. Tal abordagem nos livra dos inúmeros problemas que a geração de código diretamente para MSIL pode trazer, possibilitando irmos um pouco mais além na questão da interoperabilidadeCoordenação de Aperfeiçoamento de Pessoal de Nível SuperiorporUniversidade Federal de PernambucoAttribution-NonCommercial-NoDerivs 3.0 Brazilhttp://creativecommons.org/licenses/by-nc-nd/3.0/br/info:eu-repo/semantics/openAccessCompiladoresHaskellGHCF#Plataforma .NETLinguagens funcionaisCompilando Haskell para .NET via F#info:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisreponame:Repositório Institucional da UFPEinstname:Universidade Federal de Pernambuco (UFPE)instacron:UFPEORIGINALarquivo3216_1.pdfapplication/pdf6659432https://repositorio.ufpe.br/bitstream/123456789/2389/1/arquivo3216_1.pdf29ec979f8895b39460684d09a38f9764MD51LICENSElicense.txttext/plain1748https://repositorio.ufpe.br/bitstream/123456789/2389/2/license.txt8a4605be74aa9ea9d79846c1fba20a33MD52TEXTarquivo3216_1.pdf.txtarquivo3216_1.pdf.txtExtracted texttext/plain121104https://repositorio.ufpe.br/bitstream/123456789/2389/3/arquivo3216_1.pdf.txtd52869fdc540176c1e62518e8b67b69dMD53THUMBNAILarquivo3216_1.pdf.jpgarquivo3216_1.pdf.jpgGenerated Thumbnailimage/jpeg1302https://repositorio.ufpe.br/bitstream/123456789/2389/4/arquivo3216_1.pdf.jpg71761f9c177b9b96287c9062e6f79f12MD54123456789/23892019-10-25 02:53:38.546oai:repositorio.ufpe.br:123456789/2389Tk9URTogUExBQ0UgWU9VUiBPV04gTElDRU5TRSBIRVJFClRoaXMgc2FtcGxlIGxpY2Vuc2UgaXMgcHJvdmlkZWQgZm9yIGluZm9ybWF0aW9uYWwgcHVycG9zZXMgb25seS4KCk5PTi1FWENMVVNJVkUgRElTVFJJQlVUSU9OIExJQ0VOU0UKCkJ5IHNpZ25pbmcgYW5kIHN1Ym1pdHRpbmcgdGhpcyBsaWNlbnNlLCB5b3UgKHRoZSBhdXRob3Iocykgb3IgY29weXJpZ2h0Cm93bmVyKSBncmFudHMgdG8gRFNwYWNlIFVuaXZlcnNpdHkgKERTVSkgdGhlIG5vbi1leGNsdXNpdmUgcmlnaHQgdG8gcmVwcm9kdWNlLAp0cmFuc2xhdGUgKGFzIGRlZmluZWQgYmVsb3cpLCBhbmQvb3IgZGlzdHJpYnV0ZSB5b3VyIHN1Ym1pc3Npb24gKGluY2x1ZGluZwp0aGUgYWJzdHJhY3QpIHdvcmxkd2lkZSBpbiBwcmludCBhbmQgZWxlY3Ryb25pYyBmb3JtYXQgYW5kIGluIGFueSBtZWRpdW0sCmluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gYXVkaW8gb3IgdmlkZW8uCgpZb3UgYWdyZWUgdGhhdCBEU1UgbWF5LCB3aXRob3V0IGNoYW5naW5nIHRoZSBjb250ZW50LCB0cmFuc2xhdGUgdGhlCnN1Ym1pc3Npb24gdG8gYW55IG1lZGl1bSBvciBmb3JtYXQgZm9yIHRoZSBwdXJwb3NlIG9mIHByZXNlcnZhdGlvbi4KCllvdSBhbHNvIGFncmVlIHRoYXQgRFNVIG1heSBrZWVwIG1vcmUgdGhhbiBvbmUgY29weSBvZiB0aGlzIHN1Ym1pc3Npb24gZm9yCnB1cnBvc2VzIG9mIHNlY3VyaXR5LCBiYWNrLXVwIGFuZCBwcmVzZXJ2YXRpb24uCgpZb3UgcmVwcmVzZW50IHRoYXQgdGhlIHN1Ym1pc3Npb24gaXMgeW91ciBvcmlnaW5hbCB3b3JrLCBhbmQgdGhhdCB5b3UgaGF2ZQp0aGUgcmlnaHQgdG8gZ3JhbnQgdGhlIHJpZ2h0cyBjb250YWluZWQgaW4gdGhpcyBsaWNlbnNlLiBZb3UgYWxzbyByZXByZXNlbnQKdGhhdCB5b3VyIHN1Ym1pc3Npb24gZG9lcyBub3QsIHRvIHRoZSBiZXN0IG9mIHlvdXIga25vd2xlZGdlLCBpbmZyaW5nZSB1cG9uCmFueW9uZSdzIGNvcHlyaWdodC4KCklmIHRoZSBzdWJtaXNzaW9uIGNvbnRhaW5zIG1hdGVyaWFsIGZvciB3aGljaCB5b3UgZG8gbm90IGhvbGQgY29weXJpZ2h0LAp5b3UgcmVwcmVzZW50IHRoYXQgeW91IGhhdmUgb2J0YWluZWQgdGhlIHVucmVzdHJpY3RlZCBwZXJtaXNzaW9uIG9mIHRoZQpjb3B5cmlnaHQgb3duZXIgdG8gZ3JhbnQgRFNVIHRoZSByaWdodHMgcmVxdWlyZWQgYnkgdGhpcyBsaWNlbnNlLCBhbmQgdGhhdApzdWNoIHRoaXJkLXBhcnR5IG93bmVkIG1hdGVyaWFsIGlzIGNsZWFybHkgaWRlbnRpZmllZCBhbmQgYWNrbm93bGVkZ2VkCndpdGhpbiB0aGUgdGV4dCBvciBjb250ZW50IG9mIHRoZSBzdWJtaXNzaW9uLgoKSUYgVEhFIFNVQk1JU1NJT04gSVMgQkFTRUQgVVBPTiBXT1JLIFRIQVQgSEFTIEJFRU4gU1BPTlNPUkVEIE9SIFNVUFBPUlRFRApCWSBBTiBBR0VOQ1kgT1IgT1JHQU5JWkFUSU9OIE9USEVSIFRIQU4gRFNVLCBZT1UgUkVQUkVTRU5UIFRIQVQgWU9VIEhBVkUKRlVMRklMTEVEIEFOWSBSSUdIVCBPRiBSRVZJRVcgT1IgT1RIRVIgT0JMSUdBVElPTlMgUkVRVUlSRUQgQlkgU1VDSApDT05UUkFDVCBPUiBBR1JFRU1FTlQuCgpEU1Ugd2lsbCBjbGVhcmx5IGlkZW50aWZ5IHlvdXIgbmFtZShzKSBhcyB0aGUgYXV0aG9yKHMpIG9yIG93bmVyKHMpIG9mIHRoZQpzdWJtaXNzaW9uLCBhbmQgd2lsbCBub3QgbWFrZSBhbnkgYWx0ZXJhdGlvbiwgb3RoZXIgdGhhbiBhcyBhbGxvd2VkIGJ5IHRoaXMKbGljZW5zZSwgdG8geW91ciBzdWJtaXNzaW9uLgo=Repositório InstitucionalPUBhttps://repositorio.ufpe.br/oai/requestattena@ufpe.bropendoar:22212019-10-25T05:53:38Repositório Institucional da UFPE - Universidade Federal de Pernambuco (UFPE)false |
dc.title.pt_BR.fl_str_mv |
Compilando Haskell para .NET via F# |
title |
Compilando Haskell para .NET via F# |
spellingShingle |
Compilando Haskell para .NET via F# Kely de Melo Oliveira, Guilherme Compiladores Haskell GHC F# Plataforma .NET Linguagens funcionais |
title_short |
Compilando Haskell para .NET via F# |
title_full |
Compilando Haskell para .NET via F# |
title_fullStr |
Compilando Haskell para .NET via F# |
title_full_unstemmed |
Compilando Haskell para .NET via F# |
title_sort |
Compilando Haskell para .NET via F# |
author |
Kely de Melo Oliveira, Guilherme |
author_facet |
Kely de Melo Oliveira, Guilherme |
author_role |
author |
dc.contributor.author.fl_str_mv |
Kely de Melo Oliveira, Guilherme |
dc.contributor.advisor1.fl_str_mv |
Luís de Medeiros Santos, Andre |
contributor_str_mv |
Luís de Medeiros Santos, Andre |
dc.subject.por.fl_str_mv |
Compiladores Haskell GHC F# Plataforma .NET Linguagens funcionais |
topic |
Compiladores Haskell GHC F# Plataforma .NET Linguagens funcionais |
description |
Diferentes linguagens de programação disponibilizam diferentes formas de se implementar uma funcionalidade. Por exemplo, acessar um banco de dados usando C++ ou Python podem ser duas tarefas completamente diferentes. Por outro lado, com o surgimento da Plataforma .NET o acesso a dados com C++ .NET ou IronPython, por exemplo, se tornaram atividades muito parecidas tendo apenas algumas diferenças sintáticas. A Plataforma .NET é distribuída com um conjunto padrão de compiladores para diferentes linguagens como C#, Visual Basic .NET, JScript e J#, todas são orientadas a objetos. Com isso podemos notar uma maior atenção comercial dada ao paradigma de orientação a objetos. No entanto, esse dado não significa que devamos concluir que outros paradigmas não possam ser suportados, pelo contrário e a criação da linguagem F# é um exemplo de que a Plataforma .NET pode dar suporte a diversos paradigmas. Haskell é uma linguagem puramente funcional, não-estrita e fortemente tipada. E por ser uma linguagem de alto poder de expressão e não permitir efeitos colaterais durante sua execução, um programa escrito em Haskell se torna mais fácil de testar, otimizar e paralelizar. No entanto há um grande vazio quando tocamos na questão de ferramentas e APIs para Haskell. Devido ao fato de desenvolvedores usarem uma grande gama de ferramentas e tecnologias, cada qual com diferentes funcionalidades e tipos, tem sido historicamente difícil garantir a interoperabilidade entre as linguagens. No entanto, os compiladores e ferramentas que tem como alvo máquinas virtuais como a Plataforma .NET tiram proveito do suporte a interoperabilidade entre linguagens inerente a esses tipos de sistemas. O presente trabalho propõe um novo esquema de compilação de Haskell para a Plataforma .NET utilizando F# como linguagem intermediária. Tal abordagem nos livra dos inúmeros problemas que a geração de código diretamente para MSIL pode trazer, possibilitando irmos um pouco mais além na questão da interoperabilidade |
publishDate |
2010 |
dc.date.issued.fl_str_mv |
2010-01-31 |
dc.date.accessioned.fl_str_mv |
2014-06-12T15:57:39Z |
dc.date.available.fl_str_mv |
2014-06-12T15:57:39Z |
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.citation.fl_str_mv |
Kely de Melo Oliveira, Guilherme; Luís de Medeiros Santos, Andre. Compilando Haskell para .NET via F#. 2010. Dissertação (Mestrado). Programa de Pós-Graduação em Ciência da Computação, Universidade Federal de Pernambuco, Recife, 2010. |
dc.identifier.uri.fl_str_mv |
https://repositorio.ufpe.br/handle/123456789/2389 |
identifier_str_mv |
Kely de Melo Oliveira, Guilherme; Luís de Medeiros Santos, Andre. Compilando Haskell para .NET via F#. 2010. Dissertação (Mestrado). Programa de Pós-Graduação em Ciência da Computação, Universidade Federal de Pernambuco, Recife, 2010. |
url |
https://repositorio.ufpe.br/handle/123456789/2389 |
dc.language.iso.fl_str_mv |
por |
language |
por |
dc.rights.driver.fl_str_mv |
Attribution-NonCommercial-NoDerivs 3.0 Brazil http://creativecommons.org/licenses/by-nc-nd/3.0/br/ info:eu-repo/semantics/openAccess |
rights_invalid_str_mv |
Attribution-NonCommercial-NoDerivs 3.0 Brazil http://creativecommons.org/licenses/by-nc-nd/3.0/br/ |
eu_rights_str_mv |
openAccess |
dc.publisher.none.fl_str_mv |
Universidade Federal de Pernambuco |
publisher.none.fl_str_mv |
Universidade Federal de Pernambuco |
dc.source.none.fl_str_mv |
reponame:Repositório Institucional da UFPE instname:Universidade Federal de Pernambuco (UFPE) instacron:UFPE |
instname_str |
Universidade Federal de Pernambuco (UFPE) |
instacron_str |
UFPE |
institution |
UFPE |
reponame_str |
Repositório Institucional da UFPE |
collection |
Repositório Institucional da UFPE |
bitstream.url.fl_str_mv |
https://repositorio.ufpe.br/bitstream/123456789/2389/1/arquivo3216_1.pdf https://repositorio.ufpe.br/bitstream/123456789/2389/2/license.txt https://repositorio.ufpe.br/bitstream/123456789/2389/3/arquivo3216_1.pdf.txt https://repositorio.ufpe.br/bitstream/123456789/2389/4/arquivo3216_1.pdf.jpg |
bitstream.checksum.fl_str_mv |
29ec979f8895b39460684d09a38f9764 8a4605be74aa9ea9d79846c1fba20a33 d52869fdc540176c1e62518e8b67b69d 71761f9c177b9b96287c9062e6f79f12 |
bitstream.checksumAlgorithm.fl_str_mv |
MD5 MD5 MD5 MD5 |
repository.name.fl_str_mv |
Repositório Institucional da UFPE - Universidade Federal de Pernambuco (UFPE) |
repository.mail.fl_str_mv |
attena@ufpe.br |
_version_ |
1802311180794986496 |