Compilers Glossary: Termos Chave Explicados

Bem-vindo(a) ao nosso Compilers Glossary! Este guia foi especificamente concebido para ajudar estudantes de inglês e aspirantes a desenvolvedores a entender a terminologia essencial do compilador frequentemente usada no desenvolvimento de software e na ciência da computação. Aprender este vocabulário especializado é um passo crucial para qualquer pessoa que se aprofunda em programação ou engenharia de software. Forneceremos definições claras e exemplos práticos, oferecendo valiosas dicas de vocabulário para facilitar o domínio destes frequentemente complexos termos técnicos. Vamos decifrar juntos o mundo dos compiladores e aprimorar seu vocabulário de programação!

Image: English for Software Development

Sumário

O que é Compilers Glossary?

Compreender um Compilers Glossary é fundamental para qualquer pessoa que trabalhe com linguagens de programação ou estude ciência da computação. Esta seção divide a terminologia essencial do compilador em partes simples e digeríveis. Exploraremos termos comuns que você encontrará ao discutir como o código-fonte é transformado em programas executáveis, um conceito central no léxico da engenharia de software.

A jornada do código-fonte legível por humanos para instruções executáveis por máquina envolve várias etapas intrincadas. Cada etapa tem seu próprio conjunto de termos. Familiarizar-se com este Compilers Glossary não só melhorará sua compreensão dos compiladores de linguagens de programação, mas também ajudará a compreender documentação técnica e discussões com outros desenvolvedores. Esta é uma parte vital para evitar erros comuns de aprendizado de idioma ao discutir assuntos técnicos.

VocabulárioClasse GramaticalDefinição SimplesExample Sentence(s)
CompilersubstantivoUm programa especializado que traduz código-fonte escrito em uma linguagem de programação de alto nível (como C++, Java ou Python) para uma linguagem de nível inferior, geralmente código de máquina ou bytecode, que o processador de um computador pode executar.The GCC compiler is a popular open-source tool used for many programming languages.
Source CodesubstantivoO conjunto de instruções, escritas por um programador usando uma linguagem de programação legível por humanos, que define como um programa deve funcionar.Before compilation, the source code must be free of syntax errors.
Machine CodesubstantivoUma linguagem de programação de baixo nível que consiste em instruções binárias ou hexadecimais que a unidade central de processamento (CPU) de um computador pode executar diretamente.The final output of a typical C++ compiler is an executable file containing machine code.
InterpretersubstantivoUm programa que executa diretamente instruções escritas em uma linguagem de programação ou script linha por linha, sem a necessidade de que elas sejam previamente compiladas em código de máquina.Python and JavaScript often use an interpreter, allowing for more dynamic execution of scripts.
Lexical Analysis (Scanning)locução substantivaA fase inicial da compilação onde o compilador lê o código-fonte caractere por caractere e os agrupa em sequências chamadas lexemas, que são então convertidas em tokens.During lexical analysis, whitespace and comments are usually discarded, and sequences like int or myVariable are identified.
TokensubstantivoUm bloco de construção fundamental da sintaxe de uma linguagem de programação; é uma sequência de caracteres categorizada, como uma palavra-chave (if, while), identificador (variableName), operador (+, =) ou literal (100, "hello").The lexical analyzer converts the input stream count = 0; into a series of tokens: IDENTIFIER(count), EQUALS_OPERATOR, INTEGER_LITERAL(0), SEMICOLON.
Syntax Analysis (Parsing)locução substantivaA segunda fase da compilação onde a sequência de tokens gerada pelo analisador lexical é verificada em relação às regras gramaticais da linguagem de programação para garantir a estrutura sintática correta.Syntax analysis constructs a parse tree to represent the grammatical structure of the token stream, flagging errors like mismatched parentheses.
Parse Tree (Syntax Tree / Abstract Syntax Tree - AST)locução substantivaUma representação em árvore hierárquica que reflete a estrutura sintática do código-fonte, conforme definida pela gramática da linguagem de programação, após a análise sintática.The parse tree visually shows how different language constructs, like expressions and statements, are nested and related.
Semantic Analysislocução substantivaUma fase crucial da compilação que verifica o código-fonte quanto à consistência semântica, garantindo que expressões e declarações sejam significativas de acordo com as regras da linguagem (por exemplo, verificação de tipos, declarações de variáveis).Semantic analysis would detect an error if you tried to assign a string value to an integer variable without proper conversion.
Intermediate Code Generationlocução substantivaUma fase em alguns compiladores onde o código-fonte (ou sua representação analisada) é traduzido para uma linguagem intermediária ou representação que é mais simples e fácil de otimizar e traduzir para o código de máquina de destino.Many compilers use intermediate code generation to create a platform-independent representation before final code generation for a specific architecture.
OptimizationsubstantivoO processo de transformar um programa (código intermediário ou código de destino) para melhorar sua eficiência, como reduzir o tempo de execução, o uso de memória ou o consumo de energia, sem alterar seu comportamento funcional.Compiler optimization techniques can include loop unrolling, constant folding, and dead code elimination.
Code Generationlocução substantivaA fase final da compilação onde o código intermediário (potencialmente otimizado) ou a árvore de sintaxe abstrata é traduzido para a linguagem de destino, que frequentemente é código de máquina executável ou linguagem assembly.The code generation phase must carefully manage register allocation and instruction selection for the target processor.
LinkersubstantivoUm programa utilitário que pega um ou mais arquivos objeto gerados por um compilador (e, às vezes, bibliotecas) e os combina em um único arquivo executável, resolvendo referências externas e dependências de símbolos.The linker combines your compiled code with library functions to produce the final runnable program.
DebuggersubstantivoUma ferramenta de software usada por programadores para testar e encontrar erros (bugs) em outros programas, permitindo controlar a execução, inspecionar variáveis e rastrear o fluxo do programa.Using a debugger, the developer stepped through the problematic function to identify the cause of the crash.
IDE (Integrated Development Environment)substantivoUma aplicação de software abrangente que fornece aos programadores um conjunto de ferramentas para o desenvolvimento de software, incluindo tipicamente um editor de código-fonte, ferramentas de automação de build (geralmente incorporando um compilador) e um debugger, tudo em uma única interface.Visual Studio Code and IntelliJ IDEA are popular IDEs that streamline the coding, compiling, and debugging process.

Leia mais: Technical Debt Glossary Termos Chave Explicados

Frases Comuns Usadas

Além dos termos individuais do nosso Compilers Glossary, existem frases comuns que você ouvirá frequentemente ao discutir compiladores, o processo de compilação e o desenvolvimento geral de software. Compreender estas frases ajudará você a entender melhor as discussões técnicas sobre compiladores de linguagens de programação e a contribuir de forma mais eficaz. Esta seção esclarece algumas expressões frequentemente usadas, enriquecendo ainda mais seu vocabulário de programação.

Essas frases geralmente descrevem estados, processos ou técnicas específicas relacionadas a como o código é transformado e executado. Aprendê-las faz parte de dominar o jargão técnico da engenharia de software e o ajudará a evitar mal-entendidos. Elas são essenciais para qualquer pessoa envolvida em entender compiladores ou na criação de software.

FraseExplicação de UsoExample Sentence(s)
Compilation ErrorRefere-se a um erro detectado pelo compilador durante a tradução do código-fonte para uma forma de nível inferior. Esses erros, muitas vezes devidos a erros de sintaxe ou incompatibilidade de tipos, impedem a criação bem-sucedida de um programa executável.The build failed because of a compilation error indicating an "undefined variable" was used.
Runtime ErrorUm erro que ocorre durante a execução de um programa, ou seja, depois de ter sido compilado com sucesso e estar em execução. Estes são frequentemente erros lógicos, problemas de recursos ou entrada inesperada.A runtime error like "NullPointerException" occurred when the program tried to access an object that hadn't been initialized.
Build ProcessA sequência completa de etapas envolvidas na conversão de arquivos de código-fonte e outros ativos em um artefato de software autônomo, como um programa executável, uma biblioteca ou um pacote implantável. Isso frequentemente inclui compilação, ligação (linking), teste e empacotamento.Our continuous integration server automates the entire build process every time new code is committed.
Cross-CompilationO processo de compilar código-fonte em um tipo de sistema de computador (o sistema host) para gerar código executável que será executado em um tipo diferente de sistema de computador (o sistema alvo), que pode ter uma arquitetura de CPU ou sistema operacional diferente.We used cross-compilation to develop applications for ARM-based embedded devices on our x86-based development machines.
Ahead-of-Time (AOT) CompilationUma estratégia de compilação onde o código-fonte ou código intermediário é compilado para código de máquina nativo antes que o programa seja executado, tipicamente durante o processo de build. Isso pode levar a tempos de inicialização mais rápidos e potencialmente melhor desempenho em tempo de execução.Languages like C++ and Go primarily use Ahead-of-Time compilation to produce efficient executables.
Just-in-Time (JIT) CompilationUma estratégia de compilação onde partes do código de um programa são compiladas para código de máquina nativo durante a execução do programa (em tempo de execução), em vez de antes. Isso permite otimizações dinâmicas com base no comportamento real em tempo de execução.The Java Virtual Machine (JVM) employs Just-in-Time compilation to optimize frequently executed bytecode for improved performance.
Target ArchitectureRefere-se à arquitetura específica da Unidade Central de Processamento (CPU) (por exemplo, x86-64, ARMv8, RISC-V) e ao sistema operacional para o qual o compilador está gerando código de máquina executável.When compiling the software, we had to specify the correct target architecture to ensure it would run on the customer's servers.

Leia mais: Legacy Systems Glossary Termos Chave de TI Guia Completo

Conclusão

Dominar este Compilers Glossary é um salto significativo em sua jornada pelas complexidades do desenvolvimento de software e da ciência da computação. Os termos e frases abordados são fundamentais para entender como o software é engenhosamente criado e como componentes cruciais como compiladores de linguagens de programação operam. Este conhecimento forma uma base sólida para seu léxico de engenharia de software.

Continue praticando e usando ativamente estes termos em contexto. Quanto mais você se envolver com este vocabulário de programação, mais natural e confortável se sentirá. Não se desanime com os erros iniciais de aprendizado de idioma; veja-os como degraus no processo de dominar qualquer jargão técnico especializado. Encorajamos você a continuar explorando o fascinante mundo dos compiladores e do desenvolvimento de software. Boa sorte com seu aprendizado contínuo!

List Alternate Posts