{"componentChunkName":"component---src-templates-matter-js","path":"/novidades/ne-029-1","result":{"data":{"mdx":{"body":"function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"title\": \"Codon - executando códigos Python até 100 vezes mais rápidos\",\n  \"featuredImage\": \"../../src/images/ed029/NovEv_1_capa.png\",\n  \"category\": \"novidades\",\n  \"author\": \"Lucas Freitas\",\n  \"order\": 1,\n  \"resumo\": \"O Python está entre as linguagens de programação mais populares da atualidade. No entanto, ela possui uma grande limitação quando se trata de velocidade em comparação com outras linguagens. Pensando nisso, pesquisadores do MIT desenvolveram a ferramenta Codon, que ajudará os nativos do Python a desenvolverem programas mais eficientes e com velocidades comparáveis a de uma linguagem compilada.\",\n  \"issue\": 29\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, [\"components\"]);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"img\", {\n    src: image_29_evo1b,\n    alt: \"\"\n  }), mdx(\"p\", null, \"Imagem: \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"https://github.com/exaloop/codon\"\n  }), \"https://github.com/exaloop/codon\")), mdx(\"p\", null, \"A linguagem Python vem ganhando popularidade nos \\xFAltimos anos, com legi\\xF5es de usu\\xE1rios migrando diariamente para a linguagem por sua facilidade de uso, devido \\xE0 sua sintaxe simples, e de aprendizagem, por ser uma linguagem de alto n\\xEDvel. Em meio a esse contexto, pesquisadores do Laborat\\xF3rio de Ci\\xEAncia da Computa\\xE7\\xE3o e Intelig\\xEAncia Artificial (CSAIL) do MIT e de outros lugares criaram uma ferramenta, Codon, para ajudar a executar c\\xF3digos Python de maneira mais eficiente e eficaz, permitindo a personaliza\\xE7\\xE3o e adapta\\xE7\\xE3o a diferentes necessidades e contextos.\"), mdx(\"p\", null, \"Os desenvolvedores t\\xEAm a possibilidade de criar novas linguagens espec\\xEDficas de dom\\xEDnio (DSLs) dentro do Python. As DSLs s\\xE3o linguagens especializadas adaptadas a tarefas espec\\xEDficas que podem ser mais f\\xE1ceis de trabalhar do que linguagens de programa\\xE7\\xE3o de uso geral. Esse tipo de ferramenta n\\xE3o \\xE9 feita pensando em desenvolvedores, mas sim no uso corriqueiro de usu\\xE1rios que s\\xE3o especializados em outras \\xE1reas de conhecimento e precisam de uma aplica\\xE7\\xE3o menos complicada das linguagens de programa\\xE7\\xE3o. Exemplos de DSLs s\\xE3o HTML, apropriado para layouts de p\\xE1ginas da Web, e SQL, usado para bancos de dados. \"), mdx(\"p\", null, \"Pensando na dificuldade que \\xE9 aprender uma nova linguagem de programa\\xE7\\xE3o, os desenvolvedores da DSL Codon incorporaram a sintaxe, sem\\xE2ntica e bibliotecas usuais no Python em sua nova ferramenta, dessa forma um usu\\xE1rio j\\xE1 habituado a programar em Python pode rodar seu c\\xF3digo nessa nova linguagem sem ter que se preocupar com adapta\\xE7\\xF5es e obt\\xE9m uma resposta na ordem de 10 a 100 vezes mais r\\xE1pida do que teria com o Python cl\\xE1ssico.\"), mdx(\"p\", null, \"A equipe submeteu cerca de 10 aplicativos gen\\xF4micos comumente usados escritos em Python e os compilaram usando Codon, e alcan\\xE7aram acelera\\xE7\\xF5es de cinco a 10 vezes em rela\\xE7\\xE3o \\xE0s implementa\\xE7\\xF5es originais. Al\\xE9m da gen\\xF4mica, eles exploraram aplica\\xE7\\xF5es em finan\\xE7as quantitativas, que tamb\\xE9m lidam com grandes conjuntos de dados e usam fortemente o Python. A plataforma Codon tamb\\xE9m possui um back-end paralelo que permite aos usu\\xE1rios escrever c\\xF3digo Python que pode ser explicitamente compilado para GPUs ou v\\xE1rios n\\xFAcleos, tarefas que tradicionalmente exigiam conhecimento de programa\\xE7\\xE3o de baixo n\\xEDvel.\"), mdx(\"p\", null, \"Uma das primeiras etapas mais importantes em um compilador \\xE9 a \\u201Cverifica\\xE7\\xE3o de tipo\\u201D, essa etapa garante que o que est\\xE1 sendo feito no c\\xF3digo, seja uma vari\\xE1vel ou fun\\xE7\\xE3o, tenha o tipo de dado apropriado para o contexto que est\\xE1 sendo utilizada. Sendo uma linguagem interpretada, todas essas verifica\\xE7\\xF5es em Python s\\xE3o realizadas quando o programa \\xE9 executado. Esta \\xE9 uma das raz\\xF5es pelas quais a linguagem se torna lenta. Os pesquisadores desenvolveram certos avan\\xE7os no Codon, usando um mecanismo de verifica\\xE7\\xE3o de tipo est\\xE1tico bidirecional que ocorre antes da execu\\xE7\\xE3o do programa, removendo assim a sobrecarga significativa que ocorre no python cl\\xE1ssico.\"), mdx(\"p\", null, \"Adicionar implementa\\xE7\\xF5es de otimiza\\xE7\\xE3o est\\xE1 entre o pr\\xF3ximo conjunto de etapas importantes. O Codon usa uma representa\\xE7\\xE3o intermedi\\xE1ria totalmente nova chamada Codon Intermediate Representation (CIR) para simplificar a inclus\\xE3o de otimiza\\xE7\\xF5es e acelerar as an\\xE1lises espec\\xEDficas de cada dom\\xEDnio de computa\\xE7\\xE3o (Bioinform\\xE1tica, finan\\xE7as quantitativas, Machine Learning, etc). O arquivo execut\\xE1vel resultante gerado pelo compilador \\xE9 executado em uma velocidade compar\\xE1vel \\xE0 de C ou C++ ou ainda mais r\\xE1pido quando as otimiza\\xE7\\xF5es espec\\xEDficas do dom\\xEDnio s\\xE3o aplicadas.\"), mdx(\"p\", null, \"Embora o Codon alcance aumentos de desempenho impressionantes, ele continua a ter certas defici\\xEAncias porque o compilador de dom\\xEDnio ainda precisa oferecer suporte a todos os recursos do Python. A equipe Codon tamb\\xE9m est\\xE1 trabalhando duro para aumentar a cobertura de bibliotecas Python do compilador na tentativa de torn\\xE1-la o mais semelhante poss\\xEDvel ao Python. Todo o c\\xF3digo relacionado ao Codon est\\xE1 atualmente dispon\\xEDvel publicamente no GitHub.\"), mdx(\"p\", null, \"Para saber mais:\"), mdx(\"p\", null, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"https://dl.acm.org/doi/abs/10.1145/3578360.3580275\"\n  }), \"Codon: A Compiler for High-Performance Pythonic Applications and DSLs | Proceedings of the 32nd ACM SIGPLAN International Conference on Compiler Construction\")), mdx(\"p\", null, mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"https://github.com/exaloop/codon\"\n  }), \"GitHub - exaloop/codon: A high-performance, zero-overhead, extensible Python compiler using LLVM\")));\n}\n;\nMDXContent.isMDXComponent = true;","slug":"novidades/ne-029-1","frontmatter":{"title":"Codon - executando códigos Python até 100 vezes mais rápidos","category":"novidades","author":"Lucas Freitas"}}},"pageContext":{"slug":"novidades/ne-029-1"}},"staticQueryHashes":[]}