Pular para o conteúdo

Software de Sistema

Ciência da Computação do A-Level · Tópico 5

Treinar
Videoaula para este tópico Abrir a página do vídeo
21:02

Sistemas Operacionais

Você nunca viu isso, e nunca verá — mas ele está sempre lá. Atrás de cada aplicativo que você abre, cada arquivo que você salva, cada toque na tela, um invisível…

Narração em inglês · Legendas em inglês + 中文 gravadas

5.1

Sistemas Operacionais

Programa
Os candidatos devem ser capazes de: Notas e orientações
Explicar por que um sistema computacional requer um Sistema Operacional (SO)
Explique as principais tarefas de gestão realizadas pelo Sistema Operacional Incluindo gestão de memória, gestão de ficheiros, gestão de segurança, gestão de hardware (entrada/saída/periféricos), gestão de processos
Demonstre compreensão da necessidade de software de utilidade típico fornecido com um Sistema Operacional Incluindo formatador de disco, verificador de vírus, software de desfragmentação, análise de conteúdos de disco / software de reparação de disco, compressão de ficheiros, software de cópia de segurança
Demonstre compreensão de bibliotecas de programas Incluindo: • o software em desenvolvimento é frequentemente construído utilizando código existente de bibliotecas de programas • os benefícios para o desenvolvedor do software construído utilizando ficheiros de biblioteca, incluindo ficheiros Dynamic Link Library (DLL)

Fonte: Programa Cambridge International

Por que um computador precisa de um SO

Hardware sozinho pode apenas buscar e executar instruções — não sabe nada sobre arquivos, programas, redes ou usuários. O sistema operacional 操作系统 (OS) é a camada de software que:

  • gerencia o hardware (processador 处理器, memória, E/S, armazenamento) para os programas em execução.
  • fornece serviços (sistema de arquivos, rede, contas de usuário) através de uma interface clara, para que programas não precisem falar diretamente com o hardware.
  • fornece uma interface para o usuário (linha de comando, GUI, toque).
  • permite que vários programas compartilhem o hardware com segurança — cada um obtém tempo justo de CPU e é mantido fora da memória dos outros.

Sem um SO, cada programa precisaria de seus próprios drivers, e apenas um programa poderia rodar com segurança por vez.

"Descreva o propósito de um SO — lista de cinco pontos." O OS (1) fornece uma interface entre o usuário e o hardware; (2) oculta a complexidade do hardware do usuário e dos programas de aplicação; (3) gerencia os recursos de hardware — tempo de processador, memória, armazenamento e dispositivos de entrada/saída — e os compartilha entre programas; (4) carrega software de aplicação na memória e o executa, dando a todo programa a mesma plataforma para rodar; (5) permite que vários programas rodam ao mesmo tempo (multitarefa 多任务处理) enquanto os mantém, bem como os dados dos usuários, seguros. Dê cinco pontos diferentes; "ele roda o computador" ou "ele gerencia recursos" isoladamente não vale nada.

Um sistema operacional desktop na tela
Um sistema operacional desktop gerencia a tela, arquivos e programas para o usuário
Um smartphone segurado em uma mão, mostrando a tela inicial do Android com seus ícones de aplicativos
Um telefone precisa de um tão quanto: este é um sistema operacional mobile, Android

Tarefas principais de gerenciamento

O programa de estudos nomeia cinco. Cada ponto abaixo é uma coisa que o SO realmente faz, o que uma questão "descreva" quer.

  • gestão de memória 内存管理 — aloca memória para cada programa quando ele é carregado, mantém a memória de cada programa separada (proteção de memória 内存保护) para que um não sobrescreva outro, libera a memória quando um programa termina, e troca páginas entre RAM 随机存取存储器 e armazenamento secundário 辅助存储器 (o disco) (memória virtual 虚拟内存 / paginação 分页) para que mais programas possam estar abertos do que a memória física permite.
  • gestão de processos 进程管理 — um programa em execução é um processo 进程. O SO cria e encerra processos, decide qual processo obterá a CPU a seguir (escalonamento 调度) e por quanto tempo (uma fatia de tempo 时间片), alterna entre eles, resolve conflitos quando dois querem o mesmo recurso, e pode matar um que parar de responder.
  • gestão de hardware (entrada/saída e periféricos) — conversa com cada dispositivo através de seu driver de dispositivo 设备驱动, enfileira e bufferiza dados indo para dispositivos lentos como uma impressora, responde a interrupções 中断 de dispositivos, e compartilha um dispositivo entre vários programas.
  • gestão de arquivos — cria, nomeia, copia, move e exclui arquivos e pastas, mantém a estrutura de diretório 目录 e um registro de onde cada arquivo está armazenado no disco, aloca espaço de disco para arquivos, e impõe direitos de acesso 访问权限 (leitura / gravação / execução) para cada usuário.
  • gestão de segurança — contas de usuário e senhas (autenticação 身份验证), direitos de acesso, criptografia de dados armazenados, firewall, atualizações de segurança automáticas, e um log de quem fez o quê.
Diagrama de hub com o sistema operacional no centro ligado por raios à gestão de memória, processo, arquivo, dispositivo e segurança e à interface do usuário
As principais tarefas que o sistema operacional gerencia
Um mapa de memória com o sistema operacional e três aplicativos cada em seu próprio bloco, separados por endereços de fronteira; um acesso dentro de um bloco é permitido mas um acesso que ultrapassa uma fronteira é bloqueado
A proteção de memória mantém cada aplicativo em seu próprio bloco de memória

Como a gestão de memória e de processos suporta multitarefa (um favorito de quatro pontos). A gestão de memória carrega vários programas na memória ao mesmo tempo, cada um em sua própria área protegida, e acompanha quais endereços pertencem a quais; a gestão de processos compartilha o processador entre eles — cada processo roda por uma fatia de tempo, o SO salva seu estado e alterna para o próximo, e a alternância é tão rápida que todos os programas parecem rodar juntos. Interrupções permitem que o SO retome o processador de um processo sempre que um dispositivo precisar de atenção.

Interrupções. Uma interrupção de hardware 硬件中断 vem de um dispositivo: uma tecla pressionada, um clique do mouse, uma impressora sem papel, um disco terminando uma transferência, uma falha de energia. Uma interrupção de software 软件中断 vem de um programa: divisão por zero, uma instrução inválida, uma tentativa de usar memória que não pertence, ou uma solicitação de serviço do SO. O manipulador de interrupções 中断处理程序 do SO salva o estado do processo em execução, lida com a interrupção e depois restaura o processo (o tópico 4 cobre o detalhe busca–execução).

Software utilitário

Programas utilitários 实用程序 são software de sistema que mantêm, reparam ou otimizam o computador em vez de fazer a tarefa do usuário; o examinador aceita "realiza uma tarefa específica de manutenção que melhora o desempenho ou a segurança". A maioria dos SOs embute estes:

Programas utilitários comuns: antivírus, backup, compressão de arquivos e desfragmentação de disco
Programas utilitários: antivírus, backup, compressão e desfragmentação
  • formatador de disco — prepara um disco novo (ou apaga um antigo) para uso: configura seu sistema de arquivos e partições, apagando quaisquer dados existentes.
  • verificador de vírus (antivírus 杀毒软件) — varre arquivos e memória, compara código contra um banco de dados de assinaturas 签名 de vírus conhecidos e vigia comportamentos suspeitos, então isola ou exclui o que encontrar; roda em um cronograma e em cada download, e precisa ser atualizado conforme novos vírus aparecem.
  • software de desfragmentação (desfragmentador de disco 碎片整理) — um disco rígido armazena um arquivo em quaisquer blocos livres que encontre, então após muitas salvamentos e exclusões um arquivo fica espalhado (fragmentado 碎片化) pelos pratos e a cabeça de leitura/escrita deve pular entre as peças. O desfragmentador move as peças de cada arquivo lado a lado e junta o espaço livre em uma única região, para que arquivos carreguem mais rápido e novos arquivos não fiquem fragmentados. Não necessário em um SSD, que não tem cabeça móvel.
  • análise de conteúdo do disco / software de reparo de disco — mostra o que está usando o espaço do disco (arquivos grandes, duplicados ou temporários) para que possam ser removidos; encontra e repara setores defeituosos, clusters perdidos e erros de sistema de arquivos.
  • compressão de arquivos (compressão 压缩) — encolhe arquivos para que ocupem menos armazenamento e transfiram mais rápido; arquivagem agrupa muitos arquivos em um.
  • software de backup (backup 备份) — copia arquivos para outro meio (disco externo, rede, nuvem) em um cronograma para que os dados possam ser restaurados após perda, corrupção ou ataque de ransomware; uma cópia completa é seguida por backups incrementais 增量备份 de apenas o que mudou.
  • um firewall 防火墙 (filtra tráfego de rede por regras) e ferramentas de criptografia, para segurança; um monitor do sistema e atualizações automáticas.

Embutir estes com o SO economiza ao usuário a instalação de cada um.

Qual utilitário faz o quê. Desempenho: desfragmentação (acesso a arquivos mais rápido), reparo de disco (um disco com erros é lento ou falha), análise de conteúdo do disco (espaço livre ao excluir lixo), compressão (mais cabe no disco). Segurança: verificador de vírus, firewall, criptografia e backup (a única recuperação de ransomware). Uma questão "trace uma linha" associa cada utilitário a exatamente um propósito — aprenda os pares acima e use os nomes do programa de estudos.

Exemplo resolvido. Explique como a desfragmentação pode melhorar o desempenho de um computador (3 pontos).

Com o tempo um arquivo é armazenado em blocos espalhados pelo disco rígido, então lê-lo precisa de muitos movimentos da cabeça de leitura/escrita. O desfragmentador rearranja os blocos para que cada arquivo seja armazenado contigüemente e o espaço livre esteja junto. Arquivos são então lidos com menos movimentos de cabeça, então carregam mais rápido, e novos arquivos podem ser escritos em um espaço contínuo.

Explorar

Onde o sistema operacional se situa

Toque em cada camada. O SO é a camada do meio — ele fica entre seus aplicativos e o hardware, compartilhando a máquina seguramente para que programas nunca toquem o hardware diretamente.

Vocabulário Treinar
Inglês Chinês Pinyin
operating system/ˈɒpəreɪtɪŋ ˈsɪstəm/ 操作系统 cāo zuò xì tǒng
processor/ˈprəʊsesə/ 处理器 chǔ lǐ qì
multitasking/ˈmʌltitæskɪŋ/ 多任务处理 duō rèn wù chǔ lǐ
memory management/ˈmeməri ˈmænɪdʒmənt/ 内存管理 nèi cún guǎn lǐ
memory protection/ˈmeməri prəˈtekʃn/ 内存保护 nèi cún bǎo hù
RAM/ræm/ 随机存取存储器 suí jī cún qǔ cún chǔ qì
secondary storage/ˈsekəndəri ˈstɔːrɪdʒ/ 辅助存储器 fǔ zhù cún chǔ qì
virtual memory/ˈvɜːtʃuːəl ˈmeməri/ 虚拟内存 xū nǐ nèi cún
paging/ˈpeɪdʒɪŋ/ 分页 fēn yè
process management/ˈprəʊses ˈmænɪdʒmənt/ 进程管理 jìn chéng guǎn lǐ
process/ˈprəʊses/ 进程 jìn chéng
scheduling/ˈʃedjuːlɪŋ/ 调度 diào dù
time slice/taɪm slaɪs/ 时间片 shí jiān piàn
device driver/dɪˈvaɪs ˈdraɪvə/ 设备驱动 shè bèi qū dòng
interrupts/ˈɪntərʌpts/ 中断 zhōng duàn
directory/daɪˈrektəri/ 目录 mù lù
access rights/ˈækses raɪts/ 访问权限 fǎng wèn quán xiàn
authentication/ɔːˌθentɪˈkeɪʃn/ 身份验证 shēn fèn yàn zhèng
firewall/ˈfaɪəwɔːl/ 防火墙 fáng huǒ qiáng
hardware interrupt/ˈhɑːdweə ˈɪntərʌpt/ 硬件中断 yìng jiàn zhōng duàn
software interrupt/ˈsɒftweə ˈɪntərʌpt/ 软件中断 ruǎn jiàn zhōng duàn
interrupt handler/ˈɪntərʌpt ˈhændlə/ 中断处理程序 zhōng duàn chǔ lǐ chéng xù
utility program/juːˈtɪlɪti ˈprəʊɡræm/ 实用程序 shí yòng chéng xù
antivirus/ˌæntɪˈvaɪrəs/ 杀毒软件 shā dú ruǎn jiàn
backup/ˈbækʌp/ 备份 bèi fèn
compression/kəmˈpreʃn/ 压缩 yā suō
disk defragmenter/dɪsk ˌdiːˈfræɡmentə/ 碎片整理 suì piàn zhěng lǐ
signatures/ˈsɪɡnɪtʃəz/ 签名 qiān míng
fragmented/fræɡˈmentɪd/ 碎片化 suì piàn huà
incremental backups/ˌɪŋkrɪˈmentl ˈbækʌps/ 增量备份 zēng liàng bèi fèn
program library/ˈprəʊɡræm ˈlaɪbrəri/ 程序库 chéng xù kù
subroutines/ˈsʌbruːtiːnz/ 子程序 zi chéng xù
library routines/ˈlaɪbrəri ruːˈtiːnz/ 库例程 kù lì chéng
static library/ˈstætɪk ˈlaɪbrəri/ 静态库 jìng tài kù
executable/ɪɡˈzekjʊtəbl/ 可执行文件 kě zhí xíng wén jiàn
dynamic library/daɪˈnæmɪk ˈlaɪbrəri/ 动态库 dòng tài kù
translator/trænˈsleɪtə/ 翻译器 fān yì qì
machine code/məˈʃiːn kəʊd/ 机器码 jī qì mǎ
5.1

Bibliotecas de Programas

Uma biblioteca de programas 程序库 é código pré-escrito (subrotinas 子程序, classes, módulos) que programas reutilizam em vez de escrevê-lo eles mesmos — ex.: uma biblioteca matemática, uma biblioteca de rede, uma biblioteca de gráficos.

Um novo programa em desenvolvimento reutilizando rotinas prontas de uma biblioteca de matemática, uma biblioteca de gráficos e uma biblioteca de rede
Um novo programa reutilizando rotinas prontas de bibliotecas

Benefícios: economiza tempo (código pronto), confiável (bem testado, amplamente utilizado) e padronizado (comportamento consistente).

A lista de benefícios para o examinador, do ponto de vista do desenvolvedor. As rotinas da biblioteca 库例程 já estão escritas e testadas, portanto o desenvolvimento é mais rápido e barato; são confiáveis e, por serem usadas por muitos programas, largely error-free; o desenvolvedor não precisa de especialização naquela área (gráficos, compressão, criptografia, busca de caminho); o programa é mais fácil de manter porque o código comum fica em um único lugar; e toda uma equipe pode usar as mesmas rotinas, garantindo resultados consistentes. Desvantagens: uma rotina pode não fazer exatamente o que você precisa e você não pode alterá-la; seu programa depende da biblioteca estar disponível, correta e segura — um bug ou uma falha de segurança na biblioteca é um bug no seu programa; e você precisa aprender como chamá-la.

  • uma biblioteca estática 静态库 é copiada para o executável no tempo de compilação (funciona isoladamente, mas maior e precisa ser recompilada para atualização).
  • uma biblioteca dinâmica 动态库 (DLL, Biblioteca de Ligação Dinâmica; .so) é carregada em tempo de execução (executáveis menores, compartilhada por muitos programas, atualizada uma vez para todos).
Uma biblioteca estática é copiada para o executável no tempo de compilação, criando um programa autônomo maior; um arquivo de biblioteca dinâmica (.dll ou .so) permanece separado, é carregado no tempo de execução e é compartilhado por vários programas
Estática: a biblioteca é copiada para o executável. Dinâmica: um arquivo de biblioteca compartilhada é carregado no tempo de execução

Arquivos de Dynamic Link Library (DLL). Uma DLL é uma biblioteca que é carregada na memória apenas quando um programa a chama, no tempo de execução, e permanece como um arquivo separado em vez de ser copiada para o executável. Benefícios: o executável é menor; vários programas em execução compartilham uma cópia da DLL na memória; uma DLL pode ser atualizada (correção de bug, novo dispositivo) sem recompilar os programas que a utilizam; e a memória é usada apenas enquanto a rotina estiver necessária. Desvantagens: o programa não funcionará se a DLL estiver ausente, movida ou for a versão errada; uma DLL atualizada pode quebrar um programa que dependia do comportamento antigo; e uma DLL falsa colocada no seu lugar roda com os direitos do programa.

Exemplo resolvido. Uma equipe escreve o software para um robô de restaurante e usa uma biblioteca de programas que inclui uma rotina para encontrar o caminho mais curto entre mesas. Explique dois benefícios e uma desvantagem para a equipe.

Benefícios: a rotina já está escrita e testada, então a equipe economiza tempo e pode confiar no resultado; a equipe não precisa entender algoritmos de busca de caminho e pode gastar o tempo nas funcionalidades próprias do robô. Desvantagem: a rotina pode não lidar exatamente com as necessidades do restaurante (mover cadeiras, corredores de sentido único) e a equipe não pode alterá-la, então podem ter que contornar suas limitações.

Explorar

Laboratório de conceitos de computação

Classifique exemplos concretos pelo conceito de computação que eles demonstram.

5.2

Tradutores de linguagem

Programa
Os candidatos devem ser capazes de: Notas e orientações
Demonstre compreensão da necessidade de: • software ensamblador para a tradução de um programa em linguagem assemble • um compilador para a tradução de um programa em linguagem de alto nível • um intérprete para a tradução e execução de um programa em linguagem de alto nível
Explique os benefícios e desvantagens do uso de um compilador ou intérprete e justifique o uso de cada um
Demonstre consciência de que programas em linguagem de alto nível podem ser parcialmente compilados e parcialmente interpretados, como Java (modo console)
Descreva características encontradas num Ambiente de Desenvolvimento Integrado (IDE) típico Incluindo: • para codificação, incluindo prompts sensíveis ao contexto • para deteção inicial de erros, incluindo verificações de sintaxe dinâmicas • para apresentação, incluindo formatação automática, expansão e contração de blocos de código • para depuração, incluindo passo a passo, pontos de interrupção, i.e., variáveis, expressões, janela de relatório

Fonte: Programa Cambridge International

Você escreve código-fonte; o computador executa código de máquina 机器码. Um tradutor 翻译器 converte entre eles.

Montador

Um montador 汇编器 traduz linguagem de montagem 汇编语言 em código de máquina: cada instrução mnemônica (LDD, ADD, JMP) torna-se exatamente uma instrução de código de máquina, e endereços simbólicos e rótulos são substituídos por endereços reais. É necessário porque o processador executa apenas código de máquina, e a linguagem de montagem é usada onde o programador precisa de controle direto do hardware (sistemas embarcados, drivers de dispositivos).

Compilador

Um compilador 编译器 traduz um programa de alto nível em código de máquina uma vez, antes de ser executado.

  • ele relata todos os erros no tempo de compilação; uma vez limpo, produz um executável 可执行文件 independente que roda sem o compilador instalado e pode ser executado muitas vezes.
  • geralmente mais rápido no tempo de execução (nenhuma tradução durante a execução), mas atrelado a uma CPU/SO — recompilar para cada plataforma.

A descrição de duas marcas: um compilador traduz o programa inteiro de alto nível em código de máquina (código objeto 目标代码) antes de ser executado, produz um arquivo executável e relata todos os erros de sintaxe juntos como uma lista no final da tradução. Ele não executa o programa.

Interpretador

Um interpretador 解释器 traduz e executa um programa de alto nível linha por linha, não produzindo nenhum executável.

  • ele relata um erro quando chega nessa linha, depois para; você pode corrigi-lo e continuar — bom para desenvolvimento.
  • o interpretador deve estar instalado para executar o programa; geralmente mais lento (cada execução re-traduz), mas fácil de portar entre plataformas.

A descrição de duas marcas: um interpretador traduz uma declaração do programa de alto nível por vez e a executa imediatamente antes de passar para a próxima; nenhum arquivo executável é produzido; ele para no primeiro erro encontrado e o relata. Tanto o código-fonte quanto o interpretador devem estar presentes sempre que o programa for executado.

Um compilador traduz o código-fonte uma vez em um executável que então roda muitas vezes sem tradutor presente; um interpretador traduz e executa o código-fonte linha por linha, em cada execução
Um compilador traduz uma vez em um programa independente; um interpretador traduz linha por linha, em cada execução

Escolhendo entre eles

Use um compilador quando: Use um interpretador quando:
velocidade no tempo de execução importa você quer ciclos rápidos de edição–execução
distribuir para usuários sem ferramentas de desenvolvimento escrever scripts multiplataforma
o programa roda muitas vezes o programa é pequeno ou rodado uma única vez
ensinar iniciantes

Benefícios e desvantagens, conforme a lista do gabarito.

compilador interpretador
velocidade de execução rápida — já é código de máquina lenta — traduzida em cada execução
o que o usuário precisa apenas o executável; sem tradutor, e o código-fonte permanece privado o código-fonte e o interpretador
encontrar erros todos os erros listados de uma vez, após a tradução do programa inteiro cada erro relatado na linha onde ocorre, à medida que você desenvolve
alterar o código recompilar o programa inteiro após cada alteração editar e executar novamente imediatamente
portabilidade código de máquina roda em apenas uma plataforma; recompilar para cada a mesma fonte roda em qualquer lugar que exista um interpretador

Exemplo resolvido. Um desenvolvedor usa um interpretador enquanto escreve um programa e um compilador quando termina. Explique como cada um é usado (4 marcas).

Durante o desenvolvimento, o interpretador executa o programa parcialmente escrito imediatamente, sem esperar por uma tradução completa; ao encontrar um erro, ele relata a linha, então o desenvolvedor corrige e executa novamente imediatamente — um ciclo rápido de edição–execução que facilita o debugging. Quando o programa está terminado, o compilador traduz todo o programa em um executável que roda mais rápido, não precisa de tradutor no computador do usuário e não revela o código-fonte, podendo ser vendido ao público.

Híbrido: Java

Java é compilado em bytecode 字节码 (uma forma intermediária independente de plataforma), que uma máquina virtual 虚拟机 (a JVM) então interpreta — ou usa compilação just-in-time 即时编译 para transformar partes quentes em código nativo. Assim, erros são capturados cedo, o bytecode roda em qualquer lugar com uma JVM (

A frase do syllabus é "parcialmente compilado e parcialmente interpretado": a etapa do compilador captura erros de sintaxe e produz bytecode compacto e portátil 可移植的; a etapa de interpretação permite que esse único arquivo de bytecode seja executado em qualquer máquina que tenha uma máquina virtual, ao custo de alguma velocidade. Java em modo console (um programa de texto executado pela linha de comando) é o exemplo do syllabus.

O código-fonte Java é compilado uma vez em bytecode independente de plataforma (.class), que uma JVM no Windows, macOS ou Linux então interpreta ou compila JIT em código nativo
Java compila para bytecode portátil que qualquer JVM executa — escreva uma vez, execute em qualquer lugar

Exemplo resolvido. O código-fonte Java é compilado em bytecode, que uma JVM então interpreta. Por que usar ambos, em vez de compilar diretamente para código de máquina? Um compilador produz código de máquina para um processador e sistema operacional, então um programa compilado em uma máquina não funcionará em outra. O compilador do Java, em vez disso, visa uma máquina virtual, então o bytecode que ele produz é idêntico em todos os lugares; cada plataforma então fornece sua própria JVM para interpretar esse bytecode em suas próprias instruções nativas. Um único arquivo compilado, portanto, funciona em qualquer lugar onde exista uma JVM - "escreva uma vez, execute em qualquer lugar". O preço é a velocidade: interpretar bytecode é mais lento do que executar código nativo, razão pela qual uma JVM real também usa compilação JIT para transformar bytecode frequentemente executado em código nativo enquanto o programa roda. Nomeie ambos os lados - os pontos são pela portabilidade comprada ao custo da velocidade.

Explorar

O caminho do compilador: código-fonte para programa em execução

Passe por como um compilador funciona — traduzindo todo o programa uma vez, antes de executar. Contraste com um interpretador, que traduz e executa uma linha de cada vez.

Vocabulário Treinar
Inglês Chinês Pinyin
compiler/kəmˈpaɪlə/ 编译器 biān yì qì
object code/ˈɒbdʒekt kəʊd/ 目标代码 mù biāo dài mǎ
interpreter/ɪnˈtɜːprɪtə/ 解释器 jiě shì qì
bytecode/ˈbaɪtkəʊd/ 字节码 zì jié mǎ
virtual machine/ˈvɜːtʃuːəl məˈʃiːn/ 虚拟机 xū nǐ jī
just-in-time compilation/dʒʌst ɪn taɪm ˌkɒmpɪˈleɪʃn/ 即时编译 jí shí biān yì
portable/ˈpɔːtəbl/ 可移植的 kě yí zhí de
5.2

Ambiente de Desenvolvimento Integrado (IDE)

Um ambiente de desenvolvimento integrado 集成开发环境 (IDE) reúne as ferramentas para escrever, testar e depurar código em um único aplicativo:

Um IDE reúne o editor de código, um botão Executar e um depurador em um único programa
Um IDE agrupa o editor, um botão Executar e um depurador

O syllabus agrupa as funcionalidades em quatro tipos. Aprenda qual funcionalidade pertence a qual, porque as perguntas pedem para classificá-las e descrever uma de cada grupo.

  • Para codificação: prompts sensíveis ao contexto 上下文相关提示 — conforme você digita, o IDE exibe os identificadores, palavras-chave ou parâmetros que se encaixam naquele ponto do código; auto-complete 自动补letina completa o nome para você; indentação automática e correspondência de colchetes mantêm o layout correto enquanto você digita.
  • Para detecção inicial de erros: verificações de sintaxe dinâmicas 动态语法检查 — o editor verifica a sintaxe enquanto você digita e sublinha ou destaca um erro imediatamente, antes que o programa seja traduzido; após a tradução, mensagens de erro com números de linha.
  • Para apresentação: prettyprint 代码美化 — palavras-chave, identificadores, strings e comentários mostrados em cores ou fontes diferentes (destaque de sintaxe 语法高亮) com indentação consistente, para que a estrutura seja visível à primeira vista; expandir e recolher blocos de código — ocultar o corpo de um loop, um IF ou uma subrotina para ver o contorno.
  • Para depuração: breakpoints 断点 — o programa pausa ao atingir uma linha marcada; single stepping 单步执行 — a partir da pausa, execute uma linha por vez; uma janela que mostra os valores atuais de variáveis e expressões à medida que mudam; e uma report window 报告窗口 que lista erros, avisos e saída.

Outras funcionalidades: integração com tradutor (compilar ou executar com um atalho, erros mostrados em linha), um debugger 调试器 que aciona as funcionalidades de depuração acima, integração com version control 版本 controle (git), gerenciamento de projetos, sistema de ajuda, ferramentas de refactoring 重构 (renomeação segura) e integração com unit test 单元测试.

Uma janela de IDE anotada com tags numeradas: palavras-chave coloridas (prettyprint), bloco de código contraído, prompt pop-up sugerindo um nome, sublinhado ondulado do verificador dinâmico de sintaxe, ponto de breakpoint na margem, seta na linha atual durante single stepping, painel de variáveis e report window
As funcionalidades da IDE apresentam os nomes do syllabus, nos locais onde você os veria na tela

Uma IDE acelera o desenvolvimento ao colocar escrever → executar → depurar → corrigir atrás de uma única interface. IDEs comuns: Visual Studio, PyCharm, Eclipse, VS Code.

Um fluxo de trabalho de debugger: defina um breakpoint, execute o programa e, quando ele atingir o breakpoint, pause para inspecionar as variáveis, depois faça single stepping linha por linha ou continue
Um debugger: defina um breakpoint, execute, então pause para inspecionar variáveis e faça single stepping pelo código

Exemplo resolvido. Uma função Calculate() retorna um valor inesperado quando o programa é executado. Descreva como as funcionalidades de depuração de uma IDE típica ajudam a encontrar a causa (4 pontos).

Defina um breakpoint na primeira linha de Calculate(), para que o programa pause lá em vez de continuar executando. Em seguida, faça single-step pela função uma linha por vez. Após cada passo, leia os valores das variáveis e de qualquer expressão que você tenha pedido à IDE para watch, e compare-os com os valores esperados; a primeira linha após a qual um valor está errado é onde está o erro lógico. A report window mostra qualquer mensagem de erro de tempo de execução e a saída produzida até então.

Exemplo resolvido. Coloque cada funcionalidade no seu grupo do syllabus: prettyprint, context-sensitive prompt, dynamic syntax check, breakpoint, expand/collapse code blocks, report window.

Coding: context-sensitive prompt. Detecção inicial de erros: dynamic syntax check. Apresentação: prettyprint, expand/collapse code blocks. Depuração: breakpoint, report window.

Vocabulário Treinar
Inglês Chinês Pinyin
debugger/ˈdiːbʌɡə/ 调试器 tiáo shì qì
context-sensitive prompts/ˈkɒntekst ˈsensɪtɪv prɒmpts/ 上下文相关提示 shàng xià wén xiāng guān tí shì
auto-complete/ˈɔːtəʊ kəmˈpliːt/ 自动补全 zì dòng bǔ quán
dynamic syntax checks/daɪˈnæmɪk ˈsɪntæks tʃeks/ 动态语法检查 dòng tài yǔ fǎ jiǎn chá
prettyprint/ˈpretɪprɪnt/ 代码美化 dài mǎ měi huà
syntax highlighting/ˈsɪntæks ˈhaɪlaɪtɪŋ/ 语法高亮 yǔ fǎ gāo liàng
breakpoints/ˈbreɪkpɔɪnts/ 断点 duàn diǎn
single stepping/ˈsɪŋɡl ˈstepɪŋ/ 单步执行 dān bù zhí xíng
report window/rɪˈpɔːt ˈwɪndəʊ/ 报告窗口 bào gào chuāng kǒu
version control/ˈvɜːʃn kənˈtrəʊl/ 版本控制 bǎn běn kòng zhì
refactoring/rɪˈfæktərɪŋ/ 重构 chóng gòu
unit test/ˈjuːnɪt test/ 单元测试 dān yuán cè shì
5.2

Definições aceitas pelo examinador

Uma questão de definição é avaliada contra wording fixo. Aprenda estas exatamente, e dê apenas uma resposta.

Termo Definição
sistema operacional software que gerencia o hardware e recursos do computador e fornece uma interface entre o usuário, os programas de aplicativo e o hardware
software utilitário software de sistema que executa uma tarefa específica para manter, otimizar ou proteger o computador, como um verificador de vírus ou desfragmentador
biblioteca de programas conjunto de rotinas pré-escritas e testadas (subrotinas, classes, módulos) que um programa pode usar em vez de escrever as próprias
Dynamic Link Library (DLL) uma biblioteca de programas cujas rotinas são carregadas na memória apenas quando o programa as chama, em tempo de execução, e são compartilhadas entre programas
assembler tradutor que converte um programa de linguagem de montagem em código de máquina, uma instrução por instrução
compiler tradutor que converte todo um programa de linguagem de alto nível em código de máquina antes de ser executado, produzindo um arquivo executável
interpreter tradutor que traduz e executa um programa de linguagem de alto nível uma declaração por vez
integrated development environment aplicativo único que fornece as ferramentas para escrever, traduzir, executar e depurar um programa
context-sensitive prompt pop-up que sugere identificadores, palavras-chave ou parâmetros que se encaixam no ponto atual do código
dynamic syntax check verifica a sintaxe do código à medida que é digitado e sinaliza um erro antes que o programa seja traduzido
prettyprint exibe o código com palavras-chave, identificadores e comentários em cores ou fontes diferentes e com indentação consistente
breakpoint linha marcada na qual o programa em execução pausa para que as variáveis possam ser inspecionadas
single stepping executa um programa pausado uma declaração por vez sob o controle do programador
Vocabulário Treinar
Inglês Chinês Pinyin
assembler/əˈsemblə/ 汇编器 huì biān qì
assembly language/əˈsemblɪ ˈlæŋɡwɪdʒ/ 汇编语言 huì biān yǔ yán
integrated development environment/ˈɪntɪɡreɪtɪd dɪˈveləpmənt enˈvaɪrənmənt/ 集成开发环境 jí chéng kāi fā huán jìng
5.2

Dicas de prova

  • Liste as tarefas do SO pelos seus nomes do syllabus (gestão de memória, processo, hardware, arquivos e segurança) e diga o que cada uma faz — "gerencia recursos" sozinho é muito vago.
  • Comparar compiler vs interpreter vs assembler: o que cada um traduz, quando o traduz e como os erros são relatados.
  • Explique o que uma IDE oferece usando os grupos do syllabus: coding, detecção inicial de erros, apresentação, depuração.
  • Uma resposta de "benefício para o desenvolvedor" nomeia a economia do desenvolvedor: tempo, custo, competência, confiabilidade ou manutenção. Um "drawback" nomeia uma dependência: disponibilidade, versão, adequação, segurança.
  • Para "descrever a operação de" um tradutor, dê três coisas: o que é traduzido (programa inteiro ou uma declaração), quando (antes de executar ou enquanto executa) e como os erros são relatados (todos de uma vez ou no primeiro erro).

Erros comuns

  • Escrever "o OS controla o computador" ou "gerencia recursos" sem exemplo de tarefa. Cada ponto é uma tarefa nomeada com o que ela faz.
  • Dizer que um interpreter "compila linha por linha". Um interpreter traduz e executa cada declaração; ele nunca produz um executável.
  • Dizer que um compiler executa o programa. Ele apenas traduz; o executável roda depois, sem o compiler.
  • Colocar uma DLL "dentro" do executável. Isso é uma biblioteca estática; uma DLL permanece um arquivo separado carregado em tempo de execução.
  • Dizer que a desfragmentação "exclui" ou "comprime" arquivos, ou que é necessária em SSDs. Ela apenas move blocos para que cada arquivo seja armazenado contiguamente.
  • Classificar prettyprint ou contrair blocos sob "depuração". Eles são funcionalidades de apresentação; depuração refere-se a breakpoints, single stepping, watching variables e report window.

Aulas interativas sobre este tópico

Passe por ele passo a passo, com exercícios de verificação instantânea.

Provas Anteriores

Mais tópicos em Ciência da Computação do A-Level

Entrar ou criar conta

IGCSE, A-Level & AP