O QUE SÃO COMPILADORES E INTERPRETADORES?

Fonte: http://www.ellensantos.com.br/2015/10/compiladores-para-linguagem-c.html

Linguagens de programação:

- Antes de falar sobre compiladores e interpretadores, o que são linguagens de alto nível e baixo nível?

  •  Alto nível: Fácil de ser trabalhada e entendida, feita para facilitar a memorização para o programador.
  •  Baixo nível: linguagem difícil, voltada para a máquina, geralmente composta por letras e números.
Compiladores x Interpretadores:

- Compiladores e interpretadores são programas que tem seu principal objetivo comum traduzir uma linguagem de alto nível para baixo nível, porém de forma diferente.

o   Compiladores: Nos compiladores o processo de tradução do código fonte se baseia na busca de erros, e caso não ocorra erro o código é traduzido para a máquina. Entretanto, nos compiladores o processo de tradução se divide em duas partes, análise e síntese.

Ø  Análise: A análise tem o objetivo de entender o código e representa-lo em uma estrutura intermediaria, e a análise se divide em três.
Léxica: Na análise léxica ocorre a procura de erros nos caracteres, no caso se alguma palavra estiver errada um erro é acusado.
Sintática: Na análise sintática diferente da léxica palavras escritas na forma certa não são mais problemas, mas sim se estão ordenadas corretamente no código.
Semântica: Na análise semântica ocorre a identificação do erro, que tipo de erro ocorre e onde ocorreu.  

Ø  Síntese: Na síntese ocorre a construção do código de máquina a partir da representação intermediaria. Pode ser composta por etapas de geração de código intermediário, otimização do código e geração do código fina (única etapa obrigatória).

Alguns compiladores incluem um pré-processador, que é responsável por mudanças no código fonte, ele é executado todas as vezes que seu programa é compilado. Além disso, alguns compiladores fazem a compilação de maneira diferente da tradicional, aonde ela só é feita quando o código for chamado e por esse motivo compiladores assim são chamados de Just-in-time compiler (JIT), que resumidamente tem a função de traduzir todo o código de uma vez.

o   Interpretadores: Nos interpretadores a tradução acontece de forma simultânea à execução, e diferente dos compiladores os interpretadores não geram um código final executável, o que é um problema, pois sempre que abrir um programa interpretado ele tem que ser executado do inicio.


Referências:
http://tudocobol.blogspot.com.br/2011/12/o-que-e-um-compilador.html
https://pt.linkedin.com/pulse/o-que-%C3%A9-um-compilador-e-como-ele-funciona-carlos-eduardo
http://marcogomes.com/blog/2005/compiladores/
http://cs.ictea.com/knowledgebase.php?action=displayarticle&id=8817&language=portuguese-pt
http://www.inf.ufsc.br/~j.barreto/cca/arquitet/arq4.htm

NOÇÕES BÁSICAS DE SISTEMAS OPERACIONAIS



Um sistema operacional é o conjunto de programas que compõe o software básico de um sistema, seu objetivo é atuar como interface entre o computador e o usuário, facilitando o uso do dispositivo, além de servir como plataforma onde os programas aplicativos serão instalados. Ele também permite gerenciar os vários usuários de uma máquina.

É sobre o sistema operacional que os recursos tais como a memória principal e a memória secundária do computador são gerenciados, além dos dados que têm prioridade para serem processados e os dispositivos de entrada e saída do computador.

Existem três tipos mais conhecidos de Sistemas Operacionais:



                   Fonte: Prof. Pedro Mascarenhas (2010)

  • Monotarefa (Monoprogramável) – o sistema operacional executa apenas uma tarefa por vez. Exemplo, caso o usuário esteja com a calculadora aberta e deseje escrever um texto, ele deve fechar a calculadora e abrir o editor de texto. Ex.: MS-DOS.
  • Multitarefa (Multiprogramável) - sistema que permite que o processador se “divida” e realize diversas tarefas de uma maneira, aparentemente, simultânea. Ex.: Windows.
  • Sistema com Múltiplos Processadores - sistema em que existem duas ou mais CPUs conectadas e trabalhando em conjunto. Existem os fortemente acoplados, quando compartilham apenas uma memória e são controlados por um Sistema Operacional; E, os fracamente acoplados, em que cada sistema interconectados possui o seu próprio Sistema Operacional.
Os principais objetivos de um Sistema Operacional são: (1) facilitar a utilização para o usuário; (2) possibilitar o desenvolvimento de novas ferramentas e o aprimoramento das funções existentes; (3) tornar o uso dos recursos do sistema eficiente.

No que se refere a sua organização, um sistema operacional possui duas camadas: a primeira é o Kernel, uma das suas partes essenciais e básicas que dá suporte à interação entre software e hardware; e a segunda que é composta pelos utilitários, que são os programas utilizados para 'rodar' dentro do Kernel, ou seja, os softwares aplicativos.



REFERÊNCIAS: 
CRESCENTE, L. S., SANTOS, O. T. GSO1: gestão de sistemas operacionais. Noções Básicas de Sistema Operacionais. Anotações de aula. Postado em 20 set 2011. Disponível em: https://www.slideshare.net/lscrecente/noes-bsicas-de-sistemas-operacionais. Acessado em: 06 mai 2018.
MARCONDES, Diego. Informática para concursos: sistemas operacionais. Blog pessoal. Postado em: 06 jun 2015. Disponível em: http://diegomarcondes.com/informatica-para-concursos-sistemas-operacionais/. Acesso em: 06 maio 2018.
OK CONCURSOS. Noções de Sistema Operacional: Windows e Linux. Informática para concursos. Disponível em: http://www.okconcursos.com.br/apostilas/apostila-gratis/130-informatica-para-concursos/1633-nocoes-de-sistema-operacional-windows-e-linux . Acesso em: 05 mai 2018.


SAUDAÇÕES

BEM-VINDOS AO CODE IS LIFE

Nesse Blog teremos a oportunidade de aprender juntos um pouco mais sobre SOFTWARE. Ao longo do semestre falaremos sobre:
  • Noções Básicas de Sistemas Operacionais
  • Windows x Linux, iOS x Android x Windows Phone x Firefox OS x Ubuntu Touch
  • Compiladores versus Interpretadores
  • saaS - Software como um Serviço
Esperamos ter um excelente aprendizado.
by
Lucas Carvalho
Matheus Araújo
Rosinadja Morato