Compiladores e interpretadores são formas de tradução de um código geralmente de alto nível para um código que o computador (a máquina) interprete. Este tradutor tem a função de traduzir uma linguagem abstrata para uma linguagem binária.

 Visão Funcional de um Computador

 São 4 funções básicas que um

computador pode desempenhar:

  •  Transferência de dados
  •  Controle
  •  Processamento de dados
  •  Armazenamento de dados

As tarefas do sistema operacional, na maioria das vezes, se encaixam em seis categorias:

·         gerenciamento do processador (PROCESSOS)

·         gerenciamento da memória

·         gerenciamento de dispositivos

·         gerenciamento de armazenamento

 

Além disto, os interesses de von Neumann incluíam sistemas neurais de McCulloch e Pitts, assim que há uma tendência de explicar os vários dispositivos do computador em termos de analogia com o sistema nervoso

O sistema operacional é uma coleção de programas que:

Inicializa o hardware do computador

Fornece rotinas básicas para controle de dispositivos

fornece gerência, escalonamento  e interação de tarefas

mantém a integridade de sistema

UM PROCESSO

Um processo ou tarefa é uma porção de um programa em alguma fase de execução. Um programa pode consistir de várias tarefas, cada uma com funcionamento próprio ou como uma unidade (talvez se comunicando entre si periodicamente).

A THREAD (FILEIRA, LINHA)

Uma thread é uma parte separada de um processo. Um processo pode consistir de várias threads cada uma das quais sendo executada separadamente. Por exemplo, uma thread poderia tratar refresh e gráficos na tela, outra thread trataria impressão, outra thread trataria o mouse e o teclado. Isso dá bom tempo de resposta em programas complexos. Windows NT é um exemplo de um sistema operacional que suporta multi-thread.

SISTEMAS OPERACIONAIS DE MULTI-PROCESSO

Alguns sistemas executam só um único processo, outros sistemas executam múltiplos processos de cada vez. A maioria dos computadores é baseada num único processador, e um processador pode executar só uma instrução de cada vez. Assim, como é possível um único processador executar processos múltiplos? A resposta mais imediata é que ele não faz desse modo. O processador do computador executa um processo por um período pequeno de tempo, e então muda para o próximo processo e assim por diante. Como o processador executa milhões de instruções por segundo, isso dá a impressão de muitos processos serem executados ao mesmo tempo.

  •  ESCALONAMENTO POR COOPERAÇÃO indica que uma tarefa que está sendo executada atualmente deixará voluntariamente em algum momento o processador e permitirá que outros processos sejam executados.
  • ESCALONAMENTO PREEMPTIVO significa que uma tarefa corrente será interrompida (forçou a se render) e o processador se dedica a outro processo em estado de espera.

O problema da mudança por cooperação é que um processo poderia demorar e assim  negar a execução de outros processos e poderia resultar em nenhum trabalho ser feito. Um exemplo de um sistema de cooperação é o Windows 3.1

O escalonamento preemptivo é melhor. Dá mais respostas a todos os processos e ajuda a prevenir (ou reduz o número de ocorrências de) contra o medo de máquinas travadas. Windows NT é um exemplo de tal sistema operacional.

O PROCESSO de BOOTSTRAP

Descreve a ação da carga inicial do sistema operacional do disco para a RAM. Uma pequena rotina armazenada em ROM, chamada de CARREGADOR de BOOTSTRAP ou IPL (Carregador de Programa Inicial), lê uma rotina especial de carga no disquete. Em sistema baseado em disquete, essa rotina normalmente reside na trilha 00, setor 00 (ou 01), e é chamado de setor de booting. O código contido no setor é transferido para a RAM, e então é executada. Tem a responsabilidade exclusiva de carregar o resto do sistema operacional na memória.

Tipos diferentes de processamentos em sistemas operacionais

Sistemas operacionais são divididos em categorias que definem as suas características. Sistemas modernos podem usar combinações de essas categorias descritas a seguir.

BATCH (em LOTE)

O tipo mais antigo de SO permite só um programa ser executado de cada vez. O programa que é carregado no computador é executado completamente. Os dados usados pelo programa não podem ser modificados enquanto o programa está sendo executado. Qualquer erro no programa ou nos dados significa começar tudo novamente.

INTERATIVO

Esses permitem a modificação e entrada de dados ainda durante a execução do programa. Sistemas típicos são reservas de vôo aéreo e linguagens como BASIC.

TIME-SHARING/MULTI- USUÁRIO

Esses Sos compartilham o computador entre mais de um usuário, e adota técnicas de escalonamento preemptivo.

MULTI-TAREFAS

Mais de um processo pode ser executado concorrentemente. O processador é escalonado rapidamente entre os processos. Um usuário pode ter mais de um processo executado de cada vez.

TEMPO REAL

Principalmente usado em controle de processos, telecomunicações, etc. O SO monitora várias entradas que afetam a execução de processos, e assim afetando as saídas, dentro de um período de tempo garantido (normalmente < 1 segundo).

MULTI-PROCESSAMENTO

Um computador que tem mais de um processador central dedicados na execução de processos.

Sistema bancários controle de estoque jogos   programa de aplicação

Compiladores Editores de código Interpretadores de comandos Shell(interpretadores de comandos dos usuários ex: interface windows e dos) (Programas Basicos ou sistema).

  •  

      

    SISTEMAS OPERACIONAIS

    Introdução

    Desde a revolução causada pela Microsoft com a introdução do sistema gráfico à interface dos computadores, o mundo vem assistindo a uma acirrada disputa pelo lugar de melhor sistema operacional. Afinal, o sistema operacional é quem vai interagir com usuário. Sob essa ótica, um sistema operacional pode ser excelente para um tipo de usuário, e péssimo para outro.

    Existem hoje centenas de SO’s e apenas três se destacam no cenário mundial: Windows, da Microsoft, Linux e Mac, da Apple.

    Enquanto Windows e Mac são produtos projetados em código fechado e comercializados por grandes empresas, o Linux tem sobrevivido pelo esforço mundial de desenvolvedores que se uniram com o sonho de produzir um sistema de código aberto, livre e gratuito para todos.

    Nessa disputa, esses três se destacaram oferecendo interfaces gráficas[i] distintas, com características e particularidades próprias. Vejamos:

    SISTEMA OPERACIONAL WINDOWS XP

    Segundo a Wikipédia[ii], Microsoft Windows é uma popular família de sistemas operacionais criados pela Microsoft, empresa fundada por Bill Gates e Paul Allen. Antes da versão NT, era uma interface gráfica para o sistema operacional MS-DOS.

    O Windows é um produto comercial, com preços diferenciados para cada uma de suas versões. É o sistema operacional mais usado do mundo, embora uma grande quantidade de cópias sejam ilegais[1].

    O impacto deste sistema no mundo atual é muito grande devido ao enorme número de cópias instaladas. Conhecimentos mínimos desse sistema, do seu funcionamento, da sua história e do seu contexto são, na visão de muitos, indispensáveis, mesmo para os leigos em informática.

    O sistema operacional Windows, da Microsoft, passou por diversas versões: Windows 95, 98, ME, 200, XP e Vista.

    O XP é a versão da Microsoft que mais agradou aos usuários, pela sua grande praticidade e versatilidade, superando em preferência ao Vista, última versão lançada pela empresa.

    Vantagens do XP

    -Maior compatibilidade de programas[iii]

    -melhor suporte a hardware/software

    -restauração do sistema

    -interface amigável

    SISTEMA OPERACIONAL LINUX

    Linux é o termo geralmente usado para designar qualquer sistema operativo (português europeu) ou sistema operacional (português brasileiro) que utilize o núcleo Linux. Foi desenvolvido pelo Finlandês Linus Torvalds, inspirado no sistema Minix. O seu código fonte está disponível sob licença GPL (gratuita) para qualquer pessoa que utilizar, estudar, modificar e distribuir de acordo com os termos da licença.

    Inicialmente desenvolvido e utilizado por grupos de entusiastas em computadores pessoais, o sistema Linux passou a ter a colaboração de grandes empresas, como a IBM, a Sun Microsystems, a Hewlett-Packard, Red Hat, Novell e a Canonical.

    Existem diversas versões brasileiras do Linux, sendo as mais conhecidas e usadas: Kurumin 7 (http://www.gdhpress.com.br/kurumin/) e BRLix (http://brasilloads.blogspot.com/2008/12/brlix-o-linux-que-faltava.html) , etc.

    As versões mais distribuídas e conhecidas no Brasil são: Kurumin, Ubuntu, Mandriva, Conectiva, OpenSuse e Fedora, todas disponibilizadas em sites especializados como http://superdownloads.uol.com.br/linux/ .

    Vantagens

    Uma das grandes vantagens citadas do Linux é o fato de ser livre (gratuito, aberto, você pode modificar e fazer o que quiser com ele). É um sistema seguro, não afetado por vírus, dispensando gastos com aquisição de softwares de proteção como antivírus, antispywares e malwares. Vírus simplesmente não executam no sistema Linux, o que garante ao usuário tranqüilidade no acesso à internet.

    O Linux tem softwares livres para todos os fins;

    Desvantagens

    O Linux tem procedimento de instalação potencialmente mais difícil e só é recomendável a usuários experientes fazê-lo sem assistência.

    Por ser uma interface diferenciada, o Linux requer certa familiarização por parte de usuários que estão acostumados apenas com o Windows.

    SISTEMA OPERACIONAL MAC OS

    Macintosh, ou Mac, é o nome dos computadores pessoais fabricados e comercializados pela Apple Inc. desde janeiro de 1984. O nome deriva de McIntosh, um tipo de maçã apreciado por Jef Raskin. O Apple Macintosh foi o primeiro computador pessoal a popularizar a interface gráfica (GUI), na época um desenvolvimento revolucionário. Ele é muito utilizado para o tratamento de vídeo, imagem e som.[iv]

    Os Macintosh funcionam normalmente com o sistema operacional Mac OS, mas outros sistemas também são disponíveis, como o Linux ou FreeBSD

    Vantagens

    -Interface com o design bonito e elegante;

    -Sistema sem travamentos;

    -Rapidez, velocidade e confiabilidade na execução de programas;

    -Imbatível na edição de imagens (fotos, filmes, etc) e, por isso, o preferido em agências que trabalham com propaganda e marketing.

    Desvantagens

    -Os produtos desenvolvidos pela Macintosh atingem preços elevados em relação às demais arquiteturas, tornando-o acessível para poucos.

    -Por ser um sistema do tipo "caixa preta", com hardware e softwares específicos, é muito bom pra determinadas tarefas, mas não possui compatibilidade com softwares desenvolvidos para Windows ou Linux. Ou seja, se um software não foi desenvolvido para ele especificamente, o usuário ficará prejudicado. Sua arquitetura restringe a liberdade do usuário. A Mac vem inovando, tentando superar esses obstáculos e , recentemente, lançou seu sistema operacional em versão compatível com a arquitetura dos PCs.


    CONCLUSÕES GERAIS

    Quanto à liberdade,

    O Linux é uma plataforma verdadeiramente livre, que permite total domínio sobre o sistema operacional, sendo possível alterar seu conteúdo e funcionamento, moldando-o às necessidades de cada usuário.

    A Apple consegue bater a Microsoft no quesito liberdade. Na Microsoft, você está preso ao sistema, mas no Mac, está preso a tudo! Ao sistema e ao hardware. Para o usuário, se a liberdade no Linux é total, o Windows perto do Mac consegue ser meio livre, enquanto o Mac é totalmente fechado.

    Quanto a funcionamento

    do Mac,

    -sistema poderoso, livre de bugs e que não trava;

    -muito bom para alguns programas, mas longe de ser um computador para fazer qualquer coisa.

    -Na opinião de usuários o Mac é insuperável para editar filmes, trabalhar com imagens ou desenvolver sites...

    Do Windows

    -Na versão XP ficaram para trás os famosos “travamentos” e congelamentos, hoje mais raros.

    -Seu sistema é reconhecidamente compatível com a grande maioria dos softwares;

    -Há uma grande oferta de aplicativos para o Windows, principalmente jogos, o que o torna o preferido dos usuários domésticos.

    Do Linux

    -Requer familizarização com o funcionamento do sistema;

    -É distribuído gratuitamente em sites especializados na internet, sem limite de instalações,

    -É estável, praticamente não trava, trabalha como um verdadeiro sistema operacional multitarefa

    -A internet disponibiliza softwares gratuitos para a maioria das necessidades dos usuários. É só baixar, instalar e usar.

    Quanto à Segurança

    No quesito segurança a vantagem está a favor do Linux e do Mac. O Linux é imune a virus. O diferencial fica mais a favor do Linux, cuja arquitetura impede a execução de softwares que possam contaminar o sistema. O Mac fica em segundo, já que se constatou a criação de vírus para essa plataforma. Quanto ao Windows, é imprescindível o uso de ferramentas de proteção, como antivirus, antispywares, antimalwares, etc. Sua arquitetura permite a execução de códigos “ocultos” em softwares e documentos, podendo contaminar facilmente o sistema, ocasionando perda de dados e vazamento de informações pessoais do usuário. No Windows é imprescindível a aquisição de softwares de proteção (antivirus, firewalls, etc)

    Quanto ao Mercado Corporativo

    O Mac está praticamente fora do mercado corporativo, sendo mais usado em desktops home;

    A velha discussão Windows x Linux sempre gera polêmica, pois os dois têm fiéis defensores de suas vantagens e aplicações no mercado.

    No mercado corporativo a implantação do Linux proporciona estabilidade a baixo custo às empresas.

    A controvérsia surge quando se fala em TCO (Total Cost of Ownership/Custo Total de Propriedade), pois há quem diga que o uso do Linux sai caro em longo prazo, devido aos gastos com suporte e treinamento de pessoal – analisa.

    O ambiente Linux vem, inegavelmente, sendo o preferido em grande parte dos segmentos empresariais e governamentais.

    O Linux é hoje beneficiado pelo programa Software Livre do governo brasileiro, que lançou um portal específico, o http://www.softwarelivre.gov.br/. É um estímulo do país ao desenvolvimento de programas de código aberto que beneficiam a comunidade a custo zero. A iniciativa vem ganhando adeptos em todo o mundo e grandes empresas já se aliam para lançamento de uma versão Linux “global”, reunindo tudo o que existe de melhor nas muitas versões disponibilizadas.

    A plataforma Linux é muito utilizada em servidores, devido à estabilidade e confiabilidade oferecidos.

    CONCLUSÃO FINAL

    A questão de escolha de um sistema operacional é determinada totalmente pelo “perfil” do usuário e usos que se pretende fazer dele. Estabelecidos esses parâmetros, tem-se rapidamente o sistema ideal a ser utilizado. No entanto, devemos lembrar que o mercado de desenvolvimento de softwares está em franca expansão, estimulado pelo consumo e pelo desenvolvimento de hardwares cada vez mais poderosos. A evolução do hardware e software, aliados às tendências de mercado apontam para grandes mudanças, que podem determinar o futuro dos atuais sistemas operacionais. Fala-se em Sistema Operacional de Nuvem ou “Computação nas Nuvens”, no qual ele não será mais executado na máquina, mas acessado através da internet.

    A grande tendência do momento é este termo “computação nas nuvens” ou “cloud computing” (em inglês). Este termo surgiu pelo fato de a computação estar mudando de rumo, hoje você não vê mais como antigamente aquela vontade imensa de comprar um super computador, hoje o que você mais precisa, e o que mais precisará futuramente, será de mobilidade, portabilidade. Com isto os “super computadores” terão os seus destinos a quem realmente os precisa, mas os usuários comuns não os precisarão mais, tudo será baseado na internet, como hoje já está sendo feito, o grande centro das atenções nos dias atuais é a internet, em alguns anos, talvez meses, você utilizará seu computador na internet, terá o espaço que precisar para guardar seus arquivos como documentos, fotos, vídeos e músicas na internet. Além disto, os softwares que você utiliza também estão na internet, como há pouco tempo a Adobe lançou o Photoshop na versão web.

     

    fonte: http:asdfasdf//www.oficinadanet.com.br/artigo/1527/diferencas_entre_compiladores_e_interpretadores acessado em 15/03/2010

     

  • Diferenças entre compiladores e interpretadores
  • Compilador é um programa ou um grupo de programas que escrito por uma linguagem (esta sendo necessária de compilação para sua execução) ao ser compilado gera outro código que é interpretado pelo computador. Este código compilado é chamado de código objeto, podendo ser um arquivo executável que é reproduzido em um sistema operacional, por exemplo. Este tipo de tradutor é um dos mais utilizados.

    Os compiladores analisam o código em três partes, de forma sintática ou hierárquica, análise léxica ou linear e anâlise semântica.

    Alguns compiladores contam com um pré-processamento. Este pré-processamento é responsável por modificar o código-fonte conforme necessidades que o compilador identifique que sejam necessárias, por exemplo, otimização de código.

    Vantagens:

    • O código compilado é mais rápido de ser acessado;
    • Impossibilita ou pelo menos dificulta ser quebrado e visualizado o código-fonte original;
    • Permite otimização do código por parte do compilador;
    • Compila o código somente se estiver sem algum erro.


    Desvantagens:

    • Para ser utilizado o código precisa passar por muitos níveis de compilação;
    • Assim como vantagem a possibilidade de não poder visualizar o código-fonte, pode ser uma desvantagem;
    • Processo de correção ou alteração do código requer que ele seja novamente recompilado.


    Interpretador:

    O interpretador ao contrário do compilador roda o código-fonte escrito como sendo o código objeto, ele traduz o programa linha a linha, o programa vai sendo utilizado na medida em que vai sendo traduzido. Cada execução do programa precisa ser novamente traduzido e interpretado.

    O interpretador analisa sintaticamente e semanticamente o código, se estas duas etapas forem realizadas e executadas de forma correta o código está pronto para funcionar.  

    Vantagens:

    • Correções e alterações são mais rápidas de serem realizadas;
    • Código não precisa ser compilado para ser executado;
    • Consomem menos memória.


    Desvantagens:

    • Execução é mais lenta do programa;
    • Necessita sempre ser lido o código original para ser executado

     


    O QUE É UM PROCESSO?

     fonte: http://pt.wikipedia.org/wiki/Processos acessado em 15/03/3010

    Processo é um módulo executável único, que corre concorrentemente com outros módulos executáveis. Por exemplo, em um ambiente multi-tarefa (como o Unix) que suporta processos, um processador de texto, um navegador e um sistema de banco de dados são processos separados que podem rodar concomitantemente. Processos são módulos separados e carregáveis, ao contrário de threads, que não podem ser carregadas. Múltiplas threads de execução podem ocorrer dentro de um mesmo processo. Além das threads, o processo também inclui certos recursos, como arquivos e alocações dinâmicas de memória.

  •  

     


     

    O que é um thread?

     

  • fonte: http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/threads/threads1.html acessado em 15/03/2010

    • Para programas "normais" (single thread), tem um único ponto de execução dentro do programa num momento particular
    • Um thread é semelhante: tem um início, uma sequência e um fim, como um programa "normal"
      • Tem um único ponto de execução no certo momento dentro de um thread
    • Um thread não é um programa, mas executa dentro de um programa (ver figura)

    • Definição: um thread é um fluxo único de controle sequencial dentro de um programa
    • A coisa fica mais interessante quando temos mais de um thread no mesmo programa (ver figura)

     

    • Um browser é um exemplo de uma aplicação multithreaded
      • Várias coisas podem ocorrer ao mesmo tempo:
        • scroll
        • download de um applet
        • download de uma imagem
        • tocar uma animação
        • tocar um som
        • imprimir uma página em background
        • download de uma nova página
        • olhar 3 applets de ordenação trabalhando
    • Um thread parece ser um processo mas
      • Compartilha o mesmo "espaço de endereçamento"
      • É muito rápido chavear a execução entre threads mas não entre processos
    • Um thread recebe alguns recursos próprios durante a execução
      • Uma pilha de execução para poder chamar métodos, passar parâmetros, alocar variáveis locais
      • Um "Program Counter"
    • Chamamos isso o "contexto de execução do thread"
      • Alguns autores chamam thread de "contexto de execução"

     


     


    O que é Assembly?

    fonte: http://www.numaboa.com/informatica/tutos/assembly/1115-linguagem-assembly acessado em 15/03/2010

    Assembly é uma linguagem de programação e uma linguagem de programação serve para fazer programas. Os programas são escritos em forma de texto. Usando um editor de texto criamos o chamado código fonte. Este código fonte é transformado pelo compilador e pelo linker num programa executável.

    Muitas vezes ouvimos "linguagem assembler". É um erro muito difundido. Na realidade, Assembly é o nome da linguagem e assembler é um programa capaz de compilar código fonte em arquivos objeto.

    A linguagem Assembly é considerada de baixo nível. Isto não significa que seja menos importante ou eficiente que uma linguagem chamada de alto nível - são apenas modos diferentes de se programar e níveis diferentes de atuação. O que posso dizer é que, com uma linguagem de baixo nível como a Assembly, você pilota diretamente a CPU do seu computador - nada de intermediários.

    Uma das características da Assembly é que cada linha do código fonte possui apenas uma instrução para o processador (CPU). Por exemplo, MOV EAX,EDX irá MOVer o conteúdo do registrador EDX para o registrador EAX. Neste caso, a instrução "MOV" é chamada de mnemônico. Os mnemônicos são os "apelidos" das instruções, mais fáceis de guardar na memória do que seu valor hexadecimal ou seu valor binário exigido pelo processador. De mnemônico em mnemônico podemos escrever nosso código fonte e fazer com que o processador faça exatamente o que queremos, sem firulas ou perda de tempo. O resultado é um programa enxuto, rápido e altamente eficiente. Tome coragem! Experimente programar em Assembly!

     


    ANÁLISE LEXICA, SINTÁTICA E SEMÂNTICA

     

    Análise léxica é o processo de analisar a entrada de linhas de caracteres (tal como o código-fonte de um programa de computador) e produzir uma seqüência de símbolos chamado "símbolos léxicos" (lexical tokens), ou somente "símbolos" (tokens), que podem ser manipulados mais facilmente por um parser (leitor de saída).

    A Análise Léxica é a forma de verificar determinado alfabeto. Quando analisamos uma palavra, podemos definir através da análise léxica se existe ou não algum caracter que não faz parte do nosso alfabeto, ou um alfabeto inventado por nós. O analisador léxico é a primeira etapa de um compilador, logo após virá a análise sintática.

    O analisador léxico funciona de duas maneiras:
    Primeiro estado da análise
    A primeira etapa lê a entrada de caracteres, um de cada vez, mudando o estado em que os caracteres se encontram. Quando o analisador encontra um caracter que ele não identifica como correto, ele o chama de "estado morto" então, ele volta à última análise que foi aceita e assim tem o tipo e comprimento do léxico válido.

    Um léxico, entretanto, é uma única lista de caracteres conhecidas de ser um tipo correto. Para construir um símbolo, o analisador léxico necessita de um segundo estado.


    Segundo estado da análise
    Nesta etapa são repassados os caracteres do léxico para produzir um valor. O tipo do léxico combinado com seu valor é o que adequadamente constitui um símbolo, que pode ser dado a um parser (analisador sintático). (Alguns símbolos tais como parênteses não têm valores, e então a função da análise não pode retornar nada).

    A análise léxica facilita o trabalho do parser. O parser não mais se preocupa com símbolos e passa a preocupar-se só com questões de sintática. Isto leva a eficiência de programação, e não eficiência de execução. Entretanto, desde que o analisador léxico é o subsistema que deve examinar cada caracter único de entrada, podem ser passos intensivos e o desempenhos se torna crítico, pode estar usando um compilador.


    A análise sintática ocupa um lugar de destaque em muitas gramáticas da língua portuguesa, porque grande parte das normas do bem dizer e do bem escrever recaem sobre a estrutura sintática, isto é, sobre a organização das palavras na sentença. Para compreender o uso dos pronomes relativos, a colocação pronominal, as várias relações de concordância, por exemplo, é importante, antes, promover uma análise adequada da sintaxe apresentada pela sentença em questão. Nenhuma regra de conduta da língua culta tem sentido sem uma análise sintática da sentença que se estuda. Por isso, antes que se aplique qualquer norma gramatical é preciso compreender de que forma os elementos sintáticos estão dispostos naquela sentença especial. Isso se dá porque os elementos sintáticos também não são fixos na língua. Por exemplo: uma palavra pode funcionar como sujeito em uma sentença e, em outra, funcionar como agente da passiva. Somente a análise sintática poderá determinar esse comportamento específico das palavras no contexto da sentença.

    Sendo a análise sintática uma aplicação estritamente voltada para a sentença, parte-se dessa unidade maior para alcançar os seus constituintes - os sintagmas – que, por sua vez, são rotulados através das categorias sintáticas. Como se vê, é um exercício de decomposição da sentença. Vejamos um exemplo de análise sintática:

    Teu pai quer que você estuda antes de brincar.

    ...[há três orações]

    ...[1ª oração: teu pai quer = oração principal]

    ...[na 1ª oração: sintagma nominal = teu pai; sintagma verbal = quer]

    ...[sintagma verbal da 1ª oração: formado por um verbo modal]

    ...[2ª oração: que você estuda = oração subordinada objetiva direta]

    ...[na 2ª oração: sintagma nominal = você; sintagma verbal = estuda]

    ...[2ª oração: introduzida pelo pronome relativo que]

    ...[3ª oração: antes de brincar = oração subordinada adverbial reduzida de infinitivo]

    ...[sintagma adverbial: locução adverbial de tempo: antes de]

    ...[sintagma verbal: brincar]


    A análise sintática, assim como as outras referentes à língua, é um exercício muito próximo da matemática, pois envolve um raciocínio lógico do tipo: "se você encontrar tal elemento, então admita que esse elemento é um objeto tal". Promover esse tipo de raciocínio no estudo das sentenças é desenvolver uma análise formal, porque as categorias sintáticas são formas que não dependem do conteúdo que expressam. Grande parte das correções gramaticais se aplica ao nível de adequação sintática do texto, por isso a chamada revisão gramatical.

    Análise semântica é a terceira fase da compilação onde se verifica os erros semânticos, (por exemplo, uma multiplicação entre tipos de dados diferentes) no programa-fonte (código-fonte) e coleta as informações necessárias para a próxima fase da compilação que é a geração de programa-objeto (código objeto).

    Análise sintática (computação)

    Exemplo da análise sintática de uma expressão matemática. O resultado é uma árvore da expressão. Em ciência da computação e linguística, análise sintática (também conhecida pelo termo em inglês parsing) é o processo de analisar uma sequência de entrada (lida de um arquivo de computador ou do teclado, por exemplo) para determinar sua estrutura gramatical segundo uma determinada gramática formal. Essa análise faz parte de um compilador, junto com a análise léxica e análise semântica.

     A análise sintática transforma um texto na entrada em uma estrutura de dados, em geral uma árvore, o que é conveniente para processamento posterior e captura a hierarquia implícita desta entrada. Através da análise léxica é obtido um grupo de tokens, para que o analisador sintático use um conjunto de regras para construir uma árvore sintática da estrutura.

  •  


     

     

    BYTECODE

    Linguagens de programação "tradicionais", como o C e o C++ utilizam um compilador diferente para cada plataforma ou sistema operacional em que o programa irá rodar. O código fonte em sí pode ser escrito de forma a ser facilmente portável, ou seja, rodar em diferentes versões do Unix ou em várias famílias de processadores diferentes sem muitas alterações, mas ainda assim será necessário recompilar o código fonte, gerando um binário diferente para cada caso.

    Embora o trabalho inicial seja maior, a vantagem desta abordagem é que o desempenho é o melhor possível, já que sempre teremos um binário otimizado para a plataforma
    .

    Mas, várias linguagens mais recentes como o Java utilizam um conceito diferente. Ao invés de gerar um binário diferente para cada plataforma, é gerado um binário que pode ser executado em qualquer plataforma, dentro de uma máquina virtual. Este binário "universal" é chamado de bytecode.

    A idéia é criar aplicativos que possam ser escritos uma vez e executados em qualquer plataforma, reduzindo os custos de desenvolvimento. Apenas o software da máquina virtual é que precisa ser reescrita para cada plataforma, mas isso é problema dos desenvolvedores da linguagem, não do programador.

    Existe ainda a opção de abrir mão da flexibilidade do bytecode em troca de um maior desempenho, passando a compilar os programas com otimizações para uma determinada plataforma. Isso é muito útil quando o programa será executado apenas dentro de computadores de uma certa plataforma, como PCs rodando Linux.

    No caso do Java a máquina virtual que executa os programas é chamada de Java Virtual Machine. Muitas páginas Web utilizam applets Java, por isso a maioria das pessoas acaba instalando o suporte a Java. Hoje em dia, além do Java da Sun temos versões alternativas, como o Blackdown e o Kofee, que possuem conjuntos de recursos variados, mas são a princípio compatíveis com o código gerado para o Java da Sun.

    Embora tenha ganhado relevância com o Java, este conceito não é exatamente novo. Linguagens mais antigas como o LISP e o Prolog já utilizam bytecode e máquinas virtuais.

  •  



    2011 - Todos os direitos reservados - Prof. Walter Roque Gonçalves | Noções de Informática | Webdesign: Lucas Peperaio
    Fale Conosco