O desenvolvimento das linguagens 

Várias linguagens, muitas delas conceitualmente diferentes entre si, foram surgindo e sendo aprimoradas, incorporando-se umas em outras. Com algumas poucas exceções, o projeto de cada linguagem foi influenciado pela experiência em linguagens anteriores.
Veremos abaixo um pouco sobre a história e o desenvolvimento de alguns Software  e sistemas operacionais que surgiram ao longo do tempo:

FORTRAN
LISP
ADES
Algol-60
Basic
PL/I
Pascal
Ada
Miranda, ML e Haskell
Smalltalk
Simula
C++
Eifell, Objective C, Cedar/Mesa
Delphi
JAVA
NCSA Mosaic
DOS
OS
UNIX
 
Com relação ao FORTRAN, em 1954 ocorreu um simpósio sobre 'computação automática, e seu maior evento foi a apresentação do compilador algébrico de Laning e Zierler. Foi o primeiro 'software' que permitiu como entrada de dados um código algébrico elegante, embora limitado. Nesse meio tempo John Backus já montara um grupo de pesquisa dentro da IBM para trabalhar em um projeto sobre programação automática, para responder a uma questão fundamental: "(...) pode uma máquina traduzir uma linguagem matemática abrangente em um conjunto razoável de instruções, a um baixo custo, e resolver totalmente uma questão?". Em novembro de 1954 a equipe de Backus tinha criado o IBM Mathematical FORmula TRANslation System, o FORTRAN. O primeiro parágrafo da apresentação desse trabalho enfatizava que os sistemas anteriores ofereciam duas escolhas: ou uma fácil codificação e uma execução lenta do programa ou uma laboriosa codificação com rápida execução, mas "o FORTRAN propiciava o melhor das duas opções". Com o FORTRAN apareceram as expressões simbólicas, subprogramas com parâmetros, mas principalmente ocorreu a primeira tentativa de se definir rigorosamente a sintaxe de uma linguagem de programação. Um pouco mais tarde surgiu a notação BNF para a descrição sintática de uma linguagem de programação.

A história do LISP remonta a Turing e Church. Pela análise de Turing nos anos de 1936 e 1937, após seu famoso artigo sobre o décimo problema de Hilbert, o cálculo-lambda de Church, apesar da sua sintaxe simples, era suficientemente poderoso para descrever todas as funções mecanicamente computáveis, ou seja, pode ser visto paradigmaticamente como uma linguagem de programação. No cálculo-lambda muitos problemas de programação, especificamente aqueles referentes às chamadas de procedimento, estão em sua forma mais pura, e isto influenciará diretamente linguagens como LISP e Algol.

Em 1955 e 1956 E.K. Blum, no U.S. Naval Ordinance Laboratory desenvolveu uma linguagem completamente diferente das demais, ADES (Automatic Digital Encoding System), baseada na teoria das funções recursivas e no esquema desenvolvido para elas por Kleene. Foi a primeira linguagem "declarativa", no sentido de que o programador estabelece as relações entre as variáveis quantitativas sem explicitamente especificar a ordem de avaliação (mais à frente se falará sobre este paradigma de programação).

Aparece agora a figura de John McCarthy, matemático, um dos primeiros a trabalhar no tema de Inteligência Artificial. Juntamente com Marvin Minsky iniciou um grande projeto nessa área. Estava procurando desenvolver uma linguagem algébrica para processamento de listas, preocupado com o problema de como representar informações da realidade por meio de sentenças escritas em uma linguagem formal adequada, e de como criar um programa que executasse fazendo inferências lógicas. Surgiu então o LISP, uma linguagem que pode ser utilizada como um formalismo para descrição de algoritmos, para escrever programas e provar propriedades de algoritmos, sendo adequada à computação simbólica e à inteligência artificial. Sobretudo com LISP pode-se visualizar melhor um importante conceito na computação moderna que é o uso de estruturas de dados como objetos abstratos. É um dos aspectos centrais dessa linguagem, comparada a como a Matemática usa os números naturais como entidades abstratas. Allen Newell e Herbert Simon, da Carnegie Mellon University elaboraram o LT (Logic Theorist).Newell e Simon também inventaram a linguagem IPL, para processamento de listas, para escrever o LT. Como não tinham compilador, traduziram manualmente para o correspondente código de máquina.

Nos inícios da década de 1960, fruto do trabalho de americanos e europeus, surgiu uma linguagem projetada para representar algoritmos ao invés de se escrever programas simplesmente, Algol-60. Ela implementava o conceito de estrutura de blocos, onde variáveis, procedimentos, etc., poderiam ser declarados onde quer que o programa os necessitasse. Algol-60 influenciou profundamente muitas linguagens que vieram depois e evoluiu para o Algol-68.

A linguagem Basic (Beginners All-Purpose Symbolic Instruction Code), criada por J.Kemeny e T. Kurtz em 1963 no Dartmouth College, foi elaborada com o intuito de tornar claro o ensino dos conceitos da programação. As linguagens FORTRAN e Assembly empregavam rotinas de baixo nível para alguns controles e compilação, a Basic vinha então facilitar ao programador sua tarefa, não precisando se preocupar com métodos e algoritmos exigidos para construir e depurar programas.

PL/I surgiu como uma tentativa de se projetar uma linguagem de uso geral reunindo características de linguagens para aplicações numéricas como FORTRAN e Algol e para processamento de dados comerciais. Ela inovou ao permitir a construção de código de 'baixo nível' para o controle de exceções e o conceito de processamento concorrente, entre outros. O resultado foi algo anômalo, complexo e incoerente, de difícil implementação.

Foi a linguagem Pascal entretanto que se tornou a mais popular das linguagens do estilo Algol, porque é simples, sistemática e facilmente implementável nos diferentes computadores. Junto com o Algol-68, está entre as primeiras linguagens com uma ampla gama de instruções para controle de fluxo, definição e construção de novos tipos de dados. Ada, que veio depois do Pascal, introduziu o conceito de pacotes e permite a construção de grandes programas com estrutura modular.

Podem-se discernir na história das linguagens certas tendências. A primeira foi perseguir altos níveis de abstração. Os rótulos simbólicos e mnemônicos das linguagens de montagem abstraem códigos de operação e endereços. Variáveis e atribuição abstraem acesso a um endereço de memória e atualização. Estruturas de dados abstraem formas de armazenamento. Estruturas de controle abstraem desvios. Procedimentos abstraem sub-rotinas. E assim por diante.

Outra tendência foi a proliferação dos paradigmas. A maioria das linguagens mencionadas até agora são imperativas, caracterizadas por comandos que atualizam variáveis. A estrutura das linguagens imperativas é induzida pelo hardware, com preocupação de que os dados trafeguem o mais rapidamente possível. Daí alguns de seus aspectos relevantes: seqüência de comandos, atribuição, controles (loopings), etc. É ainda o paradigma dominante.

Já as linguagens que seguem o paradigma funcional (também conhecidas como declarativas), como o LISP, tem como características a clareza e a busca de um maior poder expressivo, procurando manter a maior independência possível do paradigma de von Neumann, que caracteriza as linguagens imperativas. Buscam uma transparência referencial e a não ocorrência de efeitos colaterais nas suas instruções. Em LISP não há o conceito de estado - dado por uma atribuição -, memória, seqüência de instruções, etcc., procurando-se tornar mais visível o uso das funções. Nas linguagens imperativas as funções dependem de estados internos, fora de seu contexto ( x := x + 'argumento'), com a produção de efeitos colaterais (alteração de valores, impressão, etc.). LISP foi a ancestral das linguagens funcionais que culminaram atualmente em linguagens como Miranda, ML e Haskell, que tratam funções como valores de primeira classe.

Smalltalk é uma linguagem baseada em classes de objetos. Um objeto é uma variável que pode ser acessada somente através de operações associadas a ele. Smalltalk é um exemplo de uma linguagem que segue o paradigma de orientação a objeto. Simula foi um ancestral de tais linguagens.

É importante reparar que a notação matemática em sua generalidade não é facilmente implementável. No entanto muitos projetistas de linguagens quiseram explorar subconjuntos da notação matemática em linguagens de programação. Surgiram então tentativas de se construir uma 'linguagem lógica', isto é, baseada em um subconjunto da lógica matemática. O computador é programado para inferir relacionamentos entre valores, ao invés de computar valores de saída a partir de valores de entrada. Prolog popularizou a linguagem lógica. Em sua forma pura é fraca e ineficiente, tendo sido alterada para incluir características não lógicas e tonar-se mais amigável como linguagem de programação.

No início da década de 1990 ocorreu um difusão intensa do paradigma da orientação a objeto. Este paradigma esteve em gestação por cerca de 30 anos e as novas tecnologias como a Internet, as necessidades geradas pela novas arquiteturas, tais como a de cliente-servidor e a do processamento distribuído, coincidiam com o paradigma da orientação a objeto: encapsulamento, mensagem, etc. O crescimento da Internet e o "comércio eletrônico" introduziram novas dimensões de complexidade no processo de desenvolvimento de programas. Começaram a surgir linguagens que buscam superar esses novos desafios de desenvolvimento de aplicações em um contexto heterogêneo ( arquiteturas de hardware incompatíveis, sistemas operacionais incompatíveis, plataformas operando com uma ou mais interfaces gráficas incompatíveis, etc.). Apareceram C++ e linguagens como Eifell, Objective C, Cedar/Mesa (elaborada pela Xerox, para fazer pesquisa de dados), Delphi (uma evolução da linguagem Pascal) entre outras. E, "o próximo passo ou um paradigma completamente novo", surge a linguagem JAVA.

A origem da Java está ligada a um grupo de pesquisa e desenvolvimento da Sun Microsystems formado em 1990, liderado por Patrick Naughton e James Gosling, que buscava uma nova ferramenta de comunicação e programação, independente da arquitetura de qualquer dispositivo eletrônico. Em 1994, após o surgimento do NCSA Mosaic e a popularização da Internet, a equipe refocalizou seus esforços para criar uma linguagem para aplicações multimídia on line.

Conforme Linden, Java foi inspirada por várias linguagens: tem a concorrência da Mesa, tratamento de exceções como Modula-3, linking dinâmico de código novo e gerenciamento automático de memória como LISP, definição de interfaces como Objective C, e declarações ordinárias como C. Apesar destas qualidades, todas importantes, na verdade duas outras realmente fazem a diferença e tornam Java extremamente atrativa: sua portabilidade e o novo conceito de arquitetura neutra.

Portabilidade significa que Java foi projetada objeticando aplicações para vários sistemas heterogêneos que podem compor uma rede como a Internet, por exempo, e as diferentes características dessa rede. Java procura obter os mesmos resultados de processamento nas diferentes plataformas.

Por arquitetura neutra entende-se que programas em Java são compilados para se obter um código objeto (byte code na terminologia Java) que poderá ser executado em um Power PC que use o sistema operacional OS/2, ou em um sistema baseado no chip Pentium debaixo do Windows 95 ou em um Macintosh usando MacOs, ou em uma estação de trabalho Sparc rodando Unix. Ou seja, em qualquer computador, desde que tal computador implemente o ambiente necessário para isso, denominado conceitualmente de Máquina Virtual Java.
 

Com a linguagem Java começou superar-se a barreira para a Internet tornar-se um computador: a barreira que impede o uso de um software utilizado em um determinado lugar, executando-o em qualquer plataforma.  


Arquiteturas de computadores e sistemas operacionais

O termo arquitetura de computador vem da possibilidade de se visualizar uma máquina como um conjunto hierárquico de níveis que permite entender como os computadores estão organizados. Os primeiros computadores digitais por exemplo somente possuíam dois níveis. O primeiro é chamado o nível da lógica digital, formado no início por válvulas e depois por transistores, circuitos integrados, etc. O segundo é chamado de nível 1, também chamado de nível de microprograma, que é o nível da linguagem da máquina, onde toda a programação era feita, através de zeros e uns, e que posteriormente seria o responsável por interpretar as instruções do nível 2.

Com Maurice Wilkes em 1951 surgiu outro nível, onde as instruções eram escritas de um modo mais conveniente para o entendimento humano: a técnica consistia em substituir cada instrução desse novo nível por um conjunto de instruções do nível anterior (nível da máquina) ou examinar uma instrução de cada vez e executar a seqüência de instruções equivalentes do nível da máquina. Denominam-se estes procedimentos por tradução e interpretação. Isto simplificou o hardware que agora somente tinha um conjunto mínimo de instruções e portanto menos circuitos eram necessários.

A partir daí a evolução do hardware avança juntamente com as novas descobertas científicas: quase na mesma época do aparecimento dos transistores, por exemplo, surgiu o conceito de barramento de dados, que acelerou a velocidade dos computadores. Ao mesmo tempo apareceram os grandes sistemas operacionais, (simplificadamente, um conjunto de programas mantidos no computador durante todo o tempo, liberando o programador de tarefas relacionadas diretamente com o funcionamento da máquina), como o DOSOS, da IBM. Estes evoluíram possibilitando novos conceitos que melhoraram a performance das máquinas, como por exemplo os sistemas de multiprogramação, isto é, a possibilidade de vários programas serem executados em paralelo em uma mesma da máquina. Se um destes programas tiver origem em um terminal remoto, tal sistema será chamado de tempo compartilhado. Um importante marco que possibilitou esses avanços foi a introdução de processadores de entrada e saída, também chamados de canais. Isso motivou o aparecimento dos conceitos de concorrência, comunicação e sincronização: uma vez que dois processadores estão operando simultaneamente, surge a necessidade de prover mecanismos para sincronizá-los e estabelecer um canal de comunicação entre eles.

É a era das arquiteturas mainframes: o suporte às tarefas computacionais e o desenvolvimento das aplicações eram feitos numa área central, denominada centro de computação. Terminais conectados diretamente à máquina eram utilizados somente por pessoas relacionadas às aplicações disponíveis.

Nos anos 70 surgiram os supercomputadores, máquinas que inovaram na arquitetura. Até o momento, o crescimento da eficiência dos computadores estava limitado pela tecnologia, mais especificamente pelo processamento escalar que exigia que o processador central de um computador terminasse uma tarefa para começar a realizar outra, produzindo o gargalo de von Neumann. Um avanço significativo veio com o supercomputador Cray-1, da Cray Research, em 1971. Foi a primeira máquina pipeline, cujo processador executava uma instrução dividindo-a em partes, como na linha de montagem de um carro. Enquanto a segunda parte de uma instrução estava sendo processada, a primeira parte de outra instrução começava a ser trabalhada. A evolução seguinte foi a denominada máquina vetorial, ou máquina SIMD (single instruction multiple data) cujo processador trabalhava com mais de um conjunto de dados ao mesmo tempo. Um pouco depois surgiu a arquitetura MIMD (multiple instructions multiple data) e apareceram máquinas com múltiplos processadores como a Connection Machine, com 65.536 processadores.

Há primariamente três limites para a performance dos supercomputadores: a velocidade do processador, o gasto de tempo (o termo técnico, amplamente utilizado na Computação, é overhead), que envolve fazer um grande número de processadores trabalharem juntos em uma única tarefa, e a velocidade de entrada e saída entre os processadores e entre os processadores e a memória. A velocidade dos processadores aumenta a cada dia, mas a um alto custo de pesquisa e desenvolvimento, e a realidade é que se está alcançando os limites dos processadores baseados em silício. Seymour Cray demonstrou que a tecnologia de gálio arsênico poderia ser a solução, mas é muito difícil trabalhar com ele e poucas indústrias estariam aptas a desenvolver processadores desse tipo. A solução, como se falará mais abaixo caminha para o uso de um maior número de processadores, dando maior velocidade ao computador pelo uso desses processadores através do processamento paralelo.

Com a tecnologia VLSI (quarta geração de computadores) surgiram os minicomputadores, o que possibilitou muitas empresas e universidades informatizarem seus departamentos. Os grandes usuários interligavam os minicomputadores para enviar tarefas aos seus mainframes. A arquitetura principal continuava no entanto estabelecida no centro de computação. Do minicomputador para o computador pessoal foi somente um passo, e no início da década de 1980 apareceram os primeiros PC's. Ainda nos anos de 1980 apareceram as arquiteturas RISC (Reduced Instruction Set Code), com a promessa de ganho de desempenho pela eliminação do conceito de microprograma. De qualquer maneira estas máquinas ainda são máquinas de von Neumann tradicionais, com todas as suas limitações, a maior delas a velocidade dos circuitos que não pode crescer indefinidamente.

As tentativas de quebrar o gargalo de von Neumann e o início da descentralização dos sistemas, com o surgimento das arquiteturas de rede que possibilitaram a universalização do uso da tecnologia da Computação, fizeram emergir e desenvolver as arquiteturas paralelas de hardware.

A idéia de incluir paralelismo nos computadores é tão antiga quanto os próprios computadores. Trabalhos desenvolvidos por von Neumann na década de 1940 já discutiam a possibilidade de algoritmos paralelos para a solução de equações diferenciais. O sistema Model V, desenvolvido entre 1944 e 1947 por G. R. Stibitz e S. B. Willians nos laboratórios da Bell Telephone é um exemplo típico de máquina paralela. Constituído por dois processadores e de três posições de entrada e saída, esse multiprocessador primitivo tanto era capaz de executar dois programas distintos como era possível que os dois processadores ficassem alocados para um mesmo programa. Posteriormente foi desenvolvido o Illiac IV, na década de 1960, constituído por 64 processadores. Como foi citado, a partir da década de 1970 começaram a ser produzidos supercomputadores baseados em arquiteturas paralelas.

Juntamente com as arquiteturas evoluíram os sistemas operacionais e a evolução das linhas de processadores de uma empresa como a Intel servem para refletir a evolução da indústria dos computadores em um determinado período. Como destaque podem-se citar o MS-DOS, o OS/2 e o UNIX. Especialmente este último, que surgiu como fruto dos trabalhos de um engenheiro da Bell Labs, Ken Thompson, foi popularizado nos meios universitários que usavam computadores PDP-11/45, durante a década de 1970. A palavra UNIX espalhou-se rapidamente por todo o mundo e no início de 1980 este sistema operacional estava disponível em mais máquinas do que qualquer outro sistema operacional da época, continuando hoje ainda a ser amplamente utilizado.
A mais nova arquitetura, que determinou a mais recente evolução da Computação foi o resultado da rápida convergência das tecnologias de comunicações de dados, telecomunicações e a própria informática. É a Internet, ou modelo computacional baseado em uma rede, que teve sua origem nos anos da década de 1970, como um esforço do Departamento de Defesa dos EUA para conectar a sua rede experimental, chamada ARPAnet, a várias outras redes de rádio e satélites. Espalhou-se logo em seguida nos meios acadêmicos e está bastante popularizada.

A Computação como Ciência

     Ao lado dessa evolução do hardware e do software, a Computação abriu-se em leque e novas tendências   surgiram dentro dela, incorporando estas duas entidades.

     A Inteligência Artificial, a Teoria da Complexidade Computacional( é um ramo da Computação que estuda o grau de dificuldade envolvido na resolução algorítmica de classes de problemas. Um dos principais tópicos abordados diz respeito à eficiência ,em termos de tempo, envolvida na execução de um algoritmo). e a Teoria de Bancos de Dados abriram  novos campos de estudo. Na década de 1960 a Ciência da Computação tornou-se uma disciplina verdadeira. A   primeira pessoa a receber um título de Ph. D. de um departamento de Ciência da Computação, foi Richard  Wexelblat, na Universidade da Pensilvânia , em 1965. Consolidaram-se os estudos sobre a Teoria dos Autômatos e a Teoria de Linguagens Formais, principalmente com Noam Chomsky e Michael Rabin. O
     nascimento do ramo das especificações formais, que introduziu um novo paradigma no desenvolvimento de   sistemas computacionais, veio dentro dessa década, com o início das buscas pela corretude de programas através do uso de métodos formais.

 R. W Floyd, em 1967, propôs que a semântica de linguagens de programação fosse definida independentemente dos processadores específicos a que se destinam aquela linguagem. A definição pode ser dada, segundo Floyd, em termos do método para a prova de programas expresso na linguagem. O seu trabalho introduziu o que passou a ser conhecido como o método das anotações (assertivas) indutivas para a verificação (prova) de programas e  uma técnica envolvendo "conjuntos com ordenação bem fundada para provar a terminação de um programa.  Uma extensão das idéias de Floyd foi proposta por C. A. Hoare em 1969. Hoare formulou uma teoria  axiomática de programas que permite a aplicação do método das invariantes de Floyd a textos de programas expressos em linguagens de programação cuja semântica é precisamente formulada. Este trabalho tornou-se ainda  um dos fundamentos do que se chamou mais tarde "programação estruturada". Dijkstra desenvolveu a idéia de que a definição (no estilo proposto por Hoare) pode ser usada para a derivação (síntese) de um programa e não  apenas para sua verificação.
 A partir dessas pesquisas surgiu a Engenharia de Software, que busca garantir a corretude na construção de  sistemas. O desenvolvimento de sistemas computacionais até então era feito de uma maneira quase que artesanal. Não havia critério orientativo algum durante o processo. Isso acabou sendo fatal, como o revelaram certos estudos, elaborados na década de 1970, sobre o
desenvolvimento de sistemas: ausência de corretude e consistência, baixa qualidade, manutenção extremamente custosa em função de problemas não detectados por ausência de uma validação de requisitos mais rigorosa, não reaproveitamento de código, prazos de implementação não cumpridos em conseqüência de erros detectados ao longo desta mesma fase de implementação, etc.
Donald E. Knuth, um rigoroso tratado sobre as bases matemáticas para a análise de algoritmos, produzindo os três conhecidos volumes do The Art of Computer Programming, que propiciaram a base para o amadurecimento dos estudos da complexidade de algoritmos. Pode-se dizer que o trabalho de Knuth é um dos grandes marcos da Computação no século XX: antes de Knuth não havia um corpo sistemático do estudo da programação e dos algoritmos.
Ainda no campo da Complexidade Computacional novos avanços se deram a partir de 1971, com o trabalho de Steve Cook e Richard Karp sobre problemas NP-completos e os estudos sobre criptografia de Ronald Rivest, Adi Shamir e Leonard Adleman. Em 1977 H.J. Bremermann desenvolveu alguns trabalhos pioneiros dentro da teoria da complexidade, mostrando os limites físicos na arquitetura de computadores de qualquer tipo e que estes limites físicos atuam como fatores restritivos para a computação de determinados problemas. De acordo com ele, existe um tempo chamado limite fundamental para a velocidade dos computadores que não pode ser ultrapassado. Tal limite deriva-se da idéia de que a velocidade máxima de transmissão de sinal entre os componentes internos da máquina é limitada pela velocidade da luz. Mesmo que se pudessem construir máquinas muito pequenas, otimizando-se a trajetória de transmissão de sinais, esse limite não pode ser ultrapassado. E ainda que se chegue a uma máquina cuja velocidade de transmissão seja próxima à da luz, existem problemas computacionais que são intratáveis, como por exemplo os "problemas NP": mesmo com a velocidade da luz tais problemas poderiam levar a idade do universo para serem processados.
 

Estrutura Básica do Software

Software - É o conjunto de programas que permitem a programação e operação do computador. Ampliando sua capacidade de processamento. Uma parte do software é fornecida pelo próprio fabricante do computador, denominada Sistema Operacional, a outra parte deve ser desenvolvida na empresa ou adquirida de Software House.

Programa - É um conjunto de instrução elementares (instruções que o computador é capaz de realizar) organizadas ordenadamente de forma a resolver um determinado problema. Podemos dizer que o software se divide em:

Software Básico - É o conjunto de programas fornecidos pelo fabricante do computador que visa atender às necessidades comuns dos usuários (denominado Sistema Operacional).

Programas Aplicativos - São "pacotes" programas desttinados à execução de processamento de natureza semelhante (Ex.: processadores de texto, planilhas de cálculo, banco de dados, outros) por um grande número de usuários. A maior parte desses programas é desenvolvida por empresas independentes.

Programas do Usuário - São programas elaborados para um fim específico determinado pelo usuário e desenvolvido para atender àquelas necessidades (ex: folha de pagamento, contabilidade, controle de estoques).

Pacotes Aplicativos - A popularização dos computadores, (particularmente dos microcomputadores) tornou-se acessíveis a um público sem conhecimentos técnicos (ou disponibilidade de tempo) suficientes para desenvolvimento de soluções para suas próprias aplicações. Dentro desse grande público encontrava-se, entretanto, grupos que defrontavam com necessidades bastante semelhantes, ou até mesmo idênticas de processamento de informações. Estava aberto, desta forma, espaço para o desenvolvimento dos denominados "pacotes"; ou conjunto de programas destinados à solução de um problema específico entretanto por um grande número de usuários.
 

Sistema Operacional

São programas responsáveis pela supervisão da operação do computador, particularmente das operações de transferência de dados entre dispositivos de armazenamento e a unidade de processamento. Os sistemas operacionais geralmente residem nos discos e são carregados para a memória pela ação do programa monitor.

Programa Monitor - É o programa responsável pela colocação da unidade de processamento em estado de operação após sua liberação e, eventualmente, pela ativação de outros itens de software. Os monitores residem na memória ROM (Memória Permanente).

O Sistema Operacional está dividido em:

· Programas de Controle - Também denominado Supervisor, tem a fuunção de controlar e atender as necessidades dos processamentos que estão sendo executados pelo computador. Sua atribuição vai desde o controle, análise das instruções, compilação ou execução dos programas dos usuários, controlando os dispositivos de Entrada e Saída (I/O);

· Programas de Processamento - São os programas responsáveis pela execução dos processos feitos pelo computador, dividindo-se em duas partes:

1. Programas de Linguagem de Processamento - são programas que traduzem os programas escritos pelos programadores (Programa Fonte), para a linguagem de máquina para que o computador possa executar (programa objeto);

2. Programas Utilitários - são programas que podem ser usados pesssoal da área de sistemas para segurança do sistema ou apenas verificação (programa de cópias backups).
 

 

TUNEL DO TEMPO

PERSONALIDADES HISTÓRICAS /

CONHEÇA UM POUCO SOBRE / LINKS E REFERÊNCIA BIBLIOGRÁFICAS /

NORMAS - PADRÕES - PRÁTICAS

ENTRADA NO MUSEU  FMET

 

 

Hosted by www.Geocities.ws

1