[en] TYPED LUA: AN OPTIONAL TYPE SYSTEM FOR LUA

Detalhes bibliográficos
Autor(a) principal: ANDRE MURBACH MAIDL
Data de Publicação: 2015
Tipo de documento: Outros
Idioma: eng
Título da fonte: Repositório Institucional da PUC-RIO (Projeto Maxwell)
Texto Completo: https://www.maxwell.vrac.puc-rio.br/colecao.php?strSecao=resultado&nrSeq=25305@1
https://www.maxwell.vrac.puc-rio.br/colecao.php?strSecao=resultado&nrSeq=25305@2
http://doi.org/10.17771/PUCRio.acad.25305
Resumo: [pt] Linguagens dinamicamente tipadas, tais como Lua, não usam tipos estáticos em favor de simplicidade e exibilidade, porque a ausência de tipos estáticos significa que programadores não precisam se preocupar em abstrair tipos que devem ser validados por um verificador de tipos. Por outro lado, linguagens estaticamente tipadas ajudam na detecção prévia de diversos bugs e também ajudam na estruturação de programas grandes. Tais pontos geralmente são vistos como duas vantagens que levam programadores a migrar de uma linguagem dinamicamente tipada para uma linguagem estaticamente tipada, quando os pequenos scripts deles evoluem para programas complexos. Sistemas de tipos opcionais nos permitem combinar tipagem dinâmica e estática na mesma linguagem, sem afetar a semântica original da linguagem, tornando mais fácil a evolução de código tipado dinamicamente para código tipado estaticamente. Desenvolver um sistema de tipos opcional para uma linguagem dinamicamente tipada é uma tarefa desafiadora, pois ele deve ser o mais natural possível para os programadores que já estão familiarizados com essa linguagem. Neste trabalho nós apresentamos e formalizamos Typed Lua, um sistema de tipos opcional para Lua, o qual introduz novas características para tipar estaticamente alguns idiomas e características de Lua. Embora Lua compartilhe várias características com outras linguagens dinamicamente tipadas, em particular JavaScript, Lua também possui várias características não usuais, as quais não estão presentes nos sistemas de tipos dessas linguagens. Essas características incluem funções com aridade flexível, atribuições múltiplas, funções que são sobrecarregadas no número de valores de retorno e a evolução incremental de registros e objetos. Nós discutimos como Typed Lua tipa estaticamente essas características e também discutimos nossas decisões de projeto. Finalmente, apresentamos uma avaliação de resultados, a qual obtivemos ao usar Typed Lua para tipar código Lua existente.
id PUC_RIO-1_c69493472b322cccff398296be4710d2
oai_identifier_str oai:MAXWELL.puc-rio.br:25305
network_acronym_str PUC_RIO-1
network_name_str Repositório Institucional da PUC-RIO (Projeto Maxwell)
repository_id_str 534
spelling [en] TYPED LUA: AN OPTIONAL TYPE SYSTEM FOR LUA[pt] TYPED LUA: UM SISTEMA DE TIPOS OPCIONAL PARA LUA[pt] LINGUAGENS DE SCRIPT[pt] TIPAGEM GRADUAL[pt] SISTEMAS DE TIPOS OPCIONAIS[pt] SISTEMAS DE TIPOS[pt] LUA[en] SCRIPTING LANGUAGES[en] GRADUAL TYPING[en] OPTIONAL TYPE SYSTEMS[en] TYPE SYSTEMS[en] LUA[pt] Linguagens dinamicamente tipadas, tais como Lua, não usam tipos estáticos em favor de simplicidade e exibilidade, porque a ausência de tipos estáticos significa que programadores não precisam se preocupar em abstrair tipos que devem ser validados por um verificador de tipos. Por outro lado, linguagens estaticamente tipadas ajudam na detecção prévia de diversos bugs e também ajudam na estruturação de programas grandes. Tais pontos geralmente são vistos como duas vantagens que levam programadores a migrar de uma linguagem dinamicamente tipada para uma linguagem estaticamente tipada, quando os pequenos scripts deles evoluem para programas complexos. Sistemas de tipos opcionais nos permitem combinar tipagem dinâmica e estática na mesma linguagem, sem afetar a semântica original da linguagem, tornando mais fácil a evolução de código tipado dinamicamente para código tipado estaticamente. Desenvolver um sistema de tipos opcional para uma linguagem dinamicamente tipada é uma tarefa desafiadora, pois ele deve ser o mais natural possível para os programadores que já estão familiarizados com essa linguagem. Neste trabalho nós apresentamos e formalizamos Typed Lua, um sistema de tipos opcional para Lua, o qual introduz novas características para tipar estaticamente alguns idiomas e características de Lua. Embora Lua compartilhe várias características com outras linguagens dinamicamente tipadas, em particular JavaScript, Lua também possui várias características não usuais, as quais não estão presentes nos sistemas de tipos dessas linguagens. Essas características incluem funções com aridade flexível, atribuições múltiplas, funções que são sobrecarregadas no número de valores de retorno e a evolução incremental de registros e objetos. Nós discutimos como Typed Lua tipa estaticamente essas características e também discutimos nossas decisões de projeto. Finalmente, apresentamos uma avaliação de resultados, a qual obtivemos ao usar Typed Lua para tipar código Lua existente.[en] Dynamically typed languages such as Lua avoid static types in favor of simplicity and exibility, because the absence of static types means that programmers do not need to bother with abstracting types that should be validated by a type checker. In contrast, statically typed languages provide the early detection of many bugs, and a better framework for structuring large programs. These are two advantages of static typing that may lead programmers to migrate from a dynamically typed to a statically typed language, when their simple scripts evolve into complex programs. Optional type systems allow combining dynamic and static typing in the same language, without affecting its original semantics, making easier this code evolution from dynamic to static typing. Designing an optional type system for a dynamically typed language is challenging, as it should feel natural to programmers that are already familiar with this language. In this work we present and formalize the design of Typed Lua, an optional type system for Lua that introduces novel features to statically type check some Lua idioms and features. Even though Lua shares several characteristics with other dynamically typed languages such as JavaScript, Lua also has several unusual features that are not present in the type system of these languages. These features include functions with exible arity, multiple assignment, functions that are overloaded on the number of return values, and the incremental evolution of record and object types. We discuss how Typed Lua handles these features and our design decisions. Finally, we present the evaluation results that we achieved while using Typed Lua to type existing Lua code.MAXWELLROBERTO IERUSALIMSCHYANDRE MURBACH MAIDL2015-10-14info:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/otherhttps://www.maxwell.vrac.puc-rio.br/colecao.php?strSecao=resultado&nrSeq=25305@1https://www.maxwell.vrac.puc-rio.br/colecao.php?strSecao=resultado&nrSeq=25305@2http://doi.org/10.17771/PUCRio.acad.25305engreponame:Repositório Institucional da PUC-RIO (Projeto Maxwell)instname:Pontifícia Universidade Católica do Rio de Janeiro (PUC-RIO)instacron:PUC_RIOinfo:eu-repo/semantics/openAccess2022-07-12T00:00:00Zoai:MAXWELL.puc-rio.br:25305Repositório InstitucionalPRIhttps://www.maxwell.vrac.puc-rio.br/ibict.phpopendoar:5342022-07-12T00:00Repositório Institucional da PUC-RIO (Projeto Maxwell) - Pontifícia Universidade Católica do Rio de Janeiro (PUC-RIO)false
dc.title.none.fl_str_mv [en] TYPED LUA: AN OPTIONAL TYPE SYSTEM FOR LUA
[pt] TYPED LUA: UM SISTEMA DE TIPOS OPCIONAL PARA LUA
title [en] TYPED LUA: AN OPTIONAL TYPE SYSTEM FOR LUA
spellingShingle [en] TYPED LUA: AN OPTIONAL TYPE SYSTEM FOR LUA
ANDRE MURBACH MAIDL
[pt] LINGUAGENS DE SCRIPT
[pt] TIPAGEM GRADUAL
[pt] SISTEMAS DE TIPOS OPCIONAIS
[pt] SISTEMAS DE TIPOS
[pt] LUA
[en] SCRIPTING LANGUAGES
[en] GRADUAL TYPING
[en] OPTIONAL TYPE SYSTEMS
[en] TYPE SYSTEMS
[en] LUA
title_short [en] TYPED LUA: AN OPTIONAL TYPE SYSTEM FOR LUA
title_full [en] TYPED LUA: AN OPTIONAL TYPE SYSTEM FOR LUA
title_fullStr [en] TYPED LUA: AN OPTIONAL TYPE SYSTEM FOR LUA
title_full_unstemmed [en] TYPED LUA: AN OPTIONAL TYPE SYSTEM FOR LUA
title_sort [en] TYPED LUA: AN OPTIONAL TYPE SYSTEM FOR LUA
author ANDRE MURBACH MAIDL
author_facet ANDRE MURBACH MAIDL
author_role author
dc.contributor.none.fl_str_mv ROBERTO IERUSALIMSCHY
dc.contributor.author.fl_str_mv ANDRE MURBACH MAIDL
dc.subject.por.fl_str_mv [pt] LINGUAGENS DE SCRIPT
[pt] TIPAGEM GRADUAL
[pt] SISTEMAS DE TIPOS OPCIONAIS
[pt] SISTEMAS DE TIPOS
[pt] LUA
[en] SCRIPTING LANGUAGES
[en] GRADUAL TYPING
[en] OPTIONAL TYPE SYSTEMS
[en] TYPE SYSTEMS
[en] LUA
topic [pt] LINGUAGENS DE SCRIPT
[pt] TIPAGEM GRADUAL
[pt] SISTEMAS DE TIPOS OPCIONAIS
[pt] SISTEMAS DE TIPOS
[pt] LUA
[en] SCRIPTING LANGUAGES
[en] GRADUAL TYPING
[en] OPTIONAL TYPE SYSTEMS
[en] TYPE SYSTEMS
[en] LUA
description [pt] Linguagens dinamicamente tipadas, tais como Lua, não usam tipos estáticos em favor de simplicidade e exibilidade, porque a ausência de tipos estáticos significa que programadores não precisam se preocupar em abstrair tipos que devem ser validados por um verificador de tipos. Por outro lado, linguagens estaticamente tipadas ajudam na detecção prévia de diversos bugs e também ajudam na estruturação de programas grandes. Tais pontos geralmente são vistos como duas vantagens que levam programadores a migrar de uma linguagem dinamicamente tipada para uma linguagem estaticamente tipada, quando os pequenos scripts deles evoluem para programas complexos. Sistemas de tipos opcionais nos permitem combinar tipagem dinâmica e estática na mesma linguagem, sem afetar a semântica original da linguagem, tornando mais fácil a evolução de código tipado dinamicamente para código tipado estaticamente. Desenvolver um sistema de tipos opcional para uma linguagem dinamicamente tipada é uma tarefa desafiadora, pois ele deve ser o mais natural possível para os programadores que já estão familiarizados com essa linguagem. Neste trabalho nós apresentamos e formalizamos Typed Lua, um sistema de tipos opcional para Lua, o qual introduz novas características para tipar estaticamente alguns idiomas e características de Lua. Embora Lua compartilhe várias características com outras linguagens dinamicamente tipadas, em particular JavaScript, Lua também possui várias características não usuais, as quais não estão presentes nos sistemas de tipos dessas linguagens. Essas características incluem funções com aridade flexível, atribuições múltiplas, funções que são sobrecarregadas no número de valores de retorno e a evolução incremental de registros e objetos. Nós discutimos como Typed Lua tipa estaticamente essas características e também discutimos nossas decisões de projeto. Finalmente, apresentamos uma avaliação de resultados, a qual obtivemos ao usar Typed Lua para tipar código Lua existente.
publishDate 2015
dc.date.none.fl_str_mv 2015-10-14
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/other
format other
status_str publishedVersion
dc.identifier.uri.fl_str_mv https://www.maxwell.vrac.puc-rio.br/colecao.php?strSecao=resultado&nrSeq=25305@1
https://www.maxwell.vrac.puc-rio.br/colecao.php?strSecao=resultado&nrSeq=25305@2
http://doi.org/10.17771/PUCRio.acad.25305
url https://www.maxwell.vrac.puc-rio.br/colecao.php?strSecao=resultado&nrSeq=25305@1
https://www.maxwell.vrac.puc-rio.br/colecao.php?strSecao=resultado&nrSeq=25305@2
http://doi.org/10.17771/PUCRio.acad.25305
dc.language.iso.fl_str_mv eng
language eng
dc.rights.driver.fl_str_mv info:eu-repo/semantics/openAccess
eu_rights_str_mv openAccess
dc.publisher.none.fl_str_mv MAXWELL
publisher.none.fl_str_mv MAXWELL
dc.source.none.fl_str_mv reponame:Repositório Institucional da PUC-RIO (Projeto Maxwell)
instname:Pontifícia Universidade Católica do Rio de Janeiro (PUC-RIO)
instacron:PUC_RIO
instname_str Pontifícia Universidade Católica do Rio de Janeiro (PUC-RIO)
instacron_str PUC_RIO
institution PUC_RIO
reponame_str Repositório Institucional da PUC-RIO (Projeto Maxwell)
collection Repositório Institucional da PUC-RIO (Projeto Maxwell)
repository.name.fl_str_mv Repositório Institucional da PUC-RIO (Projeto Maxwell) - Pontifícia Universidade Católica do Rio de Janeiro (PUC-RIO)
repository.mail.fl_str_mv
_version_ 1814822592316440576