Você está na página 1de 7

• O que é software?

o Conjunto de funções executadas na programação de um


computador.

o Não é uma entidade física, mas ganha materialização virtual.

o Manifestação de uma imagem e dos desdobramentos a partir da


construção de códigos e execuções.

• Como os softwares rodam (são executados) em um computador?

o CPU (Central Processing Unit):

▪ "Cérebro" do computador.

▪ Executa instruções de código de máquina.

o Código binário:

▪ Linguagem de baixo nível.

▪ Constituído por 0 e 1.

▪ Específico para cada família de CPUs.

o Instruções de alto nível:

▪ Linguagens de programação (JavaScript, C++, etc.).

▪ Mais complexas que código de máquina.

▪ Compreensíveis pelos humanos.

▪ Expandidas em sequências de instruções de baixo nível


antes da execução.

o Compilador:

▪ Traduz instruções de alto nível para código de máquina.

▪ Permite a execução de softwares em diferentes plataformas.

Exemplos:

• Máquina de costura: função mecânica repetitiva.

• Videogames: gráficos e programações cada vez mais complexos.

Considerações:

• Softwares estão em constante desenvolvimento e aprimoramento.

• Impossível dominar todos os softwares.


• Código-fonte: base para a criação e modificação de softwares.

• Compilador: ferramenta essencial para a execução de softwares em


diferentes plataformas.

Software de Código Aberto

• Definição:

o Software distribuído com o código-fonte original disponível.

o Licenças permitem modificação e redistribuição do código.

• Diferenças entre código aberto e código fechado:

o Código aberto:

▪ Permite ajustes, correções e incrementações no programa.

▪ Comunidade pode contribuir para o desenvolvimento do


software.

o Código fechado:

▪ Somente o fornecedor pode realizar alterações no programa.

▪ Usuários dependem do fornecedor para correções e novos


recursos.

• Vantagens do software de código aberto:

o Maior flexibilidade e personalização.

o Transparência e segurança.

o Desenvolvimento colaborativo e comunidade ativa.

o Redução de custos.

• Exemplos de softwares de código aberto:

o Linux (sistema operacional)

o Firefox (navegador web)

o LibreOffice (pacote de escritório)

o VLC Media Player (reprodutor de mídia)

Considerações:

• Software de código aberto é uma importante ferramenta para a


democratização da tecnologia.
• A comunidade de código aberto é um exemplo de colaboração e inovação.

• A escolha entre software de código aberto e código fechado depende das


necessidades específicas do usuário.

O que é um programa?

• Definição:

o Sequência de instruções de código de máquina.

o Armazenado na memória RAM durante a execução.

o Executado pela CPU uma após a outra.

• Analogia:

o Grãos de areia (instruções) formam uma escultura (programa).

• Ciclo busca-execução:

o CPU busca a instrução na RAM.

o CPU executa a instrução.

o CPU repete o ciclo para a próxima instrução.

• Tipos de instruções:

o Alterar a ordem de execução.

o Testar uma condição.

• Carregar/iniciar um programa:

o Copiar o programa do HD para a RAM.

o Informar à CPU o início do programa.

o CPU executa as instruções do programa.

Exemplos:

• Firefox (navegador web)

• Microsoft Word (editor de textos)

• Jogos digitais

Considerações:

• Programas são compostos por milhares ou milhões de instruções.

• A CPU executa as instruções de forma muito rápida.


• A ordem das instruções é importante para o funcionamento do programa.

Sistema Operacional (SO)

• Definição:

o Conjunto de programas administrativos e de supervisão.

o Organiza todo o sistema.

o Intermediário entre usuário, programas e hardware.

• Funções:

o Gerenciar memória, CPU e dispositivos de entrada/saída.

o Carregar e executar programas.

o Fornecer interface para o usuário.

o Garantir a segurança do sistema.

• Analogia:

o SO como governo de um computador.

o Firmware como constituição de um computador.

• Boot e Reboot:

o Boot: processo de inicialização do SO.

o Firmware: programa especial gravado no hardware.

o Reboot: reinicialização do computador.

• Versões de SO:

o Windows, macOS, Linux (computadores pessoais).

o Android, iOS (smartphones).

• Software funcional:

o Software que realiza uma tarefa específica.

o Importante para o desenvolvimento de soluções computacionais.

Exemplos:

• Windows (Microsoft)

• macOS (Apple)

• Linux (diversos desenvolvedores)


• Android (Google)

• iOS (Apple)

Considerações:

• O SO é essencial para o funcionamento do computador.

• Diferentes tipos de dispositivos exigem diferentes tipos de SO.

• A escolha do SO depende das necessidades do usuário

Tipos de Linguagens de Programação

• Linguagem compilada:

o Traduzida antes da execução.

o Código executável específico para cada arquitetura.

o Vantagens: alta performance, código otimizado.

o Desvantagens: processo de compilação complexo, código não


portátil.

o Exemplos: C++, C, Java (com compilador JIT).

• Linguagem interpretada:

o Traduzida linha por linha durante a execução.

o Código portátil, mas com desempenho geralmente inferior.

o Vantagens: desenvolvimento mais rápido, código mais legível.

o Desvantagens: necessidade de um interpretador, código menos


eficiente.

o Exemplos: JavaScript, Python, PHP, Ruby.

• Outras categorias:

o Linguagens de baixo nível (próximas do código de máquina):


Assembly.

o Linguagens de alto nível (mais próximas da linguagem humana):


C++, Java, Python.

o Linguagens de script: JavaScript, PHP, Ruby.

o Linguagens de marcação: HTML, XML.


Considerações:

• A escolha da linguagem de programação depende do objetivo do


programador.

• Linguagens compiladas são mais adequadas para programas que exigem


alto desempenho.

• Linguagens interpretadas são mais adequadas para programas que


precisam ser desenvolvidos rapidamente.

Exemplos:

• Firefox: escrito em C++, linguagem compilada.

• Sites web: geralmente usam JavaScript, linguagem interpretada.

Tendências em Linguagens de Programação

• Linguagens dinâmicas/interpretadas:

o Mais simples e eficientes para programar.

o Programas rodam mais lentamente na CPU.

o Tendência para uso crescente.

• Lei de Moore:

o CPUs cada vez mais baratas e com maior poder de processamento.

o Menor impacto da velocidade de execução do programa.

• JIT (Just in Time Compiler):

o Combina simplicidade de linguagens interpretadas com


desempenho de linguagens compiladas.

o Compila código dinâmico em tempo real.

o Usado em navegadores modernos para JavaScript e Java.

Exemplos:

• Navegadores modernos usam JIT para JavaScript.

• Java usa JIT para melhorar desempenho.

Considerações:

• A escolha da linguagem de programação depende do objetivo do


programador.
• Linguagens dinâmicas/interpretadas são mais adequadas para
desenvolvimento rápido.

• JITs podem melhorar o desempenho de linguagens interpretadas.

Você também pode gostar