Introdução à Computação Unidade III - Software INF0198 – Introdução à Computação 1 Software Software Aplicativo Programas Aplicativos para Finalidades Gerais Executa Tarefas de Processamento de Informações para Usuários Finais Programas Aplicativos para Específicos Navegadores de Rede Contabilidade Correio Eletrônico Gerenc. de Vendas Process. De Textos Proc. de Transações Planilhas Eletrônicas Comércio Eletrônico Gerenciam. de BD´s Ciência e Engenharia Pacotes Integrados Educação Editoração Eletrônica Entretenimento, etc. Gráficos de Apresentação Gerencia e Apóia Operações de Sistemas e Redes De Computadores Programas de Gerenciamento de Sistemas Software de Sistemas Programas de Desenvolvimento de Sistemas Sistemas Operacionais Tradutores de LinguaProgramas de Gerengem de Programação ciamento de Rede Editores e FerramenSGBD´s tas de Programação Utilitários do Sistema CASE Monitores de Desempenho Monitores de Segurança 3 - Software – Visão Geral Uma das principais funções do software é direcionar os trabalhos do hardware. O software consiste em Programas de Computador que controlam o funcionamento do hardware, ou seja, são seqüências de instruções interpretáveis pela máquina, juntamente com a Documentação do Programa usada para explicar seu funcionamento ao usuário. INF0198 – Introdução à Computação 3 Software – Visão Geral Os Programas de Computador são conjuntos de instruções ou ordens para o computador, que dirigem o circuito no hardware para operar de uma determinada maneira. A Documentação do Programa é o conjunto de descrições narrativas destinadas a auxiliar o uso e a implementação do programa, podendo ser internas ou externas. Existem dois tipos fundamentais de software: software básico e software aplicativo. INF0198 – Introdução à Computação 4 Software – Visão Geral O software básico (ou de sistemas) constitui um conjunto de programas projetados para coordenar as atividades e funções do hardware e de vários programas que rodam no computador. O software básico é projetado para determinada CPU e para uma classe particular de hardware. A configuração do hardware combinada com o software básico constituem a Plataforma do Sistema do Computador. O software aplicativo consiste em programas que ajudam os usuários a solucionar problemas específicos. Ele possui um maior potencial para atender aos processos que agregam valor a um negócio. INF0198 – Introdução à Computação 5 Software Básico ou de Sistemas Existem três tipos fundamentais de software básico: Programas Tradutores de Linguagem; Programas Utilitários; Sistemas Operacionais. INF0198 – Introdução à Computação 6 Tradutores de Linguagem A programação envolve a tradução do que o usuário quer realizar em um código que o computador possa entender e executar, desta forma surge a necessidade de Programas Tradutores de Linguagem, que convertem uma instrução de uma linguagem de programação de alto nível em uma linguagem de máquina. O código do programa de alto nível escrito pelo programador é chamado de código fonte, e o código da linguagem de máquina, código objeto. INF0198 – Introdução à Computação 7 Tradutores de Linguagem - Tipos Interpretador é um tradutor que converte cada instrução de um programa em linguagem de máquina em tempo de execução. Compilador/Ligador é um tradutor que traduz um programa completo para um programa completo em linguagem de máquina. A ligação é realizada por um programa chamado ligador, que pega os módulos-objetos (alguns podem estar armazenado em bibliotecas) e os junta como se fossem um quebra-cabeças para montar a forma final do programa – o arquivo executável. Desta forma aproveitamos a modularidade para compilarmos somente os fontes alterados. INF0198 – Introdução à Computação 8 Programas Utilitários Apesar de os desenvolvedores de sistemas operacionais tentarem oferecer todos os recursos de que os usuários precisam para utilizar e manter seus sistemas, invariavelmente eles deixam de satisfazer a algumas expectativas. Essas falhas criaram um mercado para softwares de terceiros, chamados utilitários. Os utilitários são programas que preencheram a lacuna entre a funcionalidade de um sistema operacional e as necessidades dos usuários. Com a popularização dos programas utilitários, os desenvolvedores de sistemas operacionais acabam por incorporálos a novas versões de seus produtos. INF0198 – Introdução à Computação 9 3.1 - Sistemas Operacionais Todo computador tem, em seu nível mais básico de software, uma camada de inteligência que dá vida à máquina. Quando você liga o computador, instruções internas orientam-no para encontrar e “rodar” o sistema operacional, que continua a operar durante todo o tempo em que a máquina fica ligada. Um Sistema Operacional (S.O.) nada mais é do que um programa muito especial – talvez o mais complexo e importante em um computador. O S.O. “acorda” o equipamento e faz com que ele reconheça a CPU, a memória, o teclado, o sistema de vídeo e as unidades de disco. Além disso oferece aos usuários a facilidade de se comunicar com o computador e serve de plataforma para a execução de programas aplicativos. (P.Norton) INF0198 – Introdução à Computação 10 Sistemas Operacionais Usuário Programas Sistema Operacional Hardware Arquivos O SO é o núcleo do mecanismo que faz o computador funcionar. Ele trabalha nos bastidores como intermediário entre as solicitações dos usuários e dos programas; gerencia e orienta o hardware do computador, lê e grava dados de e para unidades de disco. INF0198 – Introdução à Computação 11 Sistemas Operacionais Um S.O. compreende um conjunto de programas que controla o hardware do computador e atua como uma interface entre os aplicativos. Geralmente estão armazenados em disco, e após a inicialização da máquina, processo de boot, partes desse, é transferida para a memória principal conforme a necessidade. Dentre suas atividades, encontram-se funções comuns do hardware, proporcionando um certo grau de independência do hardware, memória e tarefas de sistemas gerenciadores, e ainda uma intermediação com o usuário. INF0198 – Introdução à Computação 12 S.O. - Funções Básicas Funções comuns de hardware. São chamadas ao sistema, onde uma função bem determinada, será executada através de um conjunto de instruções que o hardware exige. Ex: Receber registros através do teclado ou de algum dispositivo de entrada Ler e escrever dados nos discos ou outros dispositivos secundários Produzir e transcrever a informação para a tela do computador Interface com o usuário. Permite que os indivíduos acessem e comandem o computador. As primeiras interfaces, para mainframes e computadores pessoais, eram através de comandos. Hoje em dia temos as interfaces gráficas com o usuário (GUI), usando imagens (chamadas ícones) e menus exibidos na tela para enviar comandos ao computador. INF0198 – Introdução à Computação 13 S.O. - Funções Básicas (cont.) Gerenciamento da memória. Consiste em controlar o acesso, o espaço disponível e o armazenamento na memória. Controlar o acesso à memória possibilita ao computador armazenar e recuperar dados e instruções, fornecendo-os para a CPU. Áreas de memória protegida também é uma técnica utilizada para que danos não aconteçam em regiões de memória que contêm códigos críticos do SO. Devido ao espaço finito da memória, alguns sistemas operacionais fazem uso da memória virtual, que aloca espaço em disco para suplementar a capacidade funcional imediata de memória RAM. INF0198 – Introdução à Computação 14 S.O. - Funções Básicas (cont.) Independência de hardware. O SO serve como uma interface entre o programa aplicativo e o hardware. Essa interface acontece automaticamente, de forma que o usuário não precisa fazer nada para que ela ocorra. Podemos citar a troca e utilização de diferentes periféricos sem alterar o software aplicativo. Gerenciamento de tarefas. Distribui os recursos do computador para fazer o melhor uso de cada componente do sistema. Permite a um usuário rodar vários programas ou tarefas ao mesmo tempo (multitarefa ou multidocumento) e que vários usuários usem, simultaneamente, o mesmo computador (tempo compartilhado). INF0198 – Introdução à Computação 15 S.O. - Funções Básicas (cont.) Capacidade de rede. Pode prover características e recursos que tornam possível a conexão a uma rede de computador. Acesso aos recursos do sistema. Os computadores lidam com dados confidenciais que podem ser acessados por rede. O sistema operacional deve fornecer um alto nível de segurança contra o acesso não autorizado a dados e programas do usuário. Gerenciamento de arquivo. O sistema operacional executa uma função de gerenciamento de arquivo para assegurar não só que os arquivos no armazenamento secundário estarão disponíveis quando necessário, bem como que estarão protegidos contra o acesso de usuários não autorizados. INF0198 – Introdução à Computação 16 S.O. - Histórico p/ Microcomputador No início, o único padrão real entre os microcomputadores era o chip do processador, com isso muitos softwares só rodavam no computador em que tinha sido desenvolvido. Nos anos 70 foi criado o CP/M (Control Program for Microcomputers) PC/MS-DOS 1 1981 primeira versão do MS-DOS PC/MS-DOS 2 1983 HD, arquivos hierárquicos PC/MS-DOS 3 1984 disquetes de 1.2MB, redes PC/MS-DOS 4 1988 interface gráfica por shell OS/2 1988 IBM, multitarefa e memória virtual PC/MS-DOS 5 1991 utilitários de gerenc. de memória PC/MS-DOS 6 1993 compr. de dados, otimização memória PC-DOS 7 1994 desfragmentação de arquivos Windows 95 1995 interface gráfica, não requer DOS. INF0198 – Introdução à Computação 17 S.O. - Classificação Entre as questões mais básicas no projeto de um Sistema Operacional estão: O S.O. deve ser capaz de executar mais de uma tarefa ao mesmo tempo? O S.O. deve funcionar com apenas um usuário, ou deve aceitar vários simultaneamente? O S.O. deve ser capaz de usar mais de uma CPU? INF0198 – Introdução à Computação 18 S.O. - Classificação Multitarefa refere-se à capacidade que um S.O. tem de rodar mais de uma programa ao mesmo tempo. Multiusuário refere-se à capacidade que um S.O. tem de permitir que mais de um usuário acesse o computador ao mesmo tempo. Multiprocessamento refere-se à capacidade que um S.O. tem de usar e gerenciar uma série de CPUs. INF0198 – Introdução à Computação 19 S.O. - Estrutura Chamadas de Sistema Os programas de usuário solicitam serviços do sistema operacional através de execução de chamadas de sistema. A cada chamada corresponde um procedimento de uma biblioteca de procedimentos que o programa do usuário pode chamar. Tal procedimento coloca os parâmetros da chamada do sistema em locais específicos, tais como registradores, e emite uma instrução de “TRAP”, ou seja, uma chamada a procedimento protegida, para iniciar a execução do sistema operacional. Ex: Criar processo, gerenciar memória,, ler e escrever em arquivos, manipular dispositivos de I/O (terminais, impressoras). INF0198 – Introdução à Computação 20 S.O. - Estrutura Arquitetura Monolítica. Não há estruturação visível. O S.O. é escrito como um conjunto de procedimentos, cada um podendo chamar qualquer dos demais sempre que necessário. Cada procedimento deve ter uma interface bem definida em termos de parâmetros e de resultados. Todos os procedimentos individuais são compilados juntos de forma a ligá-los em um único arquivo objeto. A única estruturação é em relação às Chamadas de Sistema fornecidas pelo S.O., pois são requisitadas através da colocação de parâmetros em lugares muito bem determinados, tais como registradores ou pilhas, seguindo-se a execução de uma instrução especial de TRAP, chamada ao supervisor (ou kernel) INF0198 – Introdução à Computação 21 S.O. - Estrutura Arquitetura de Camadas. É quando o sistema operacional está organizado como uma hierarquia de níveis, cada um construído sobre o nível imediatamente abaixo. Ex: THE – foi o 1º, sendo construído por E.W. Dijkstra em 1968. 5 Operador 4 Programas do Usuário 3 Gerência dos dispositivos de I/O 2 Comunicação processo-operador 1 Gerência da memória e do tambor magnético 0 Alocação do processador e implementação da multiprogramação INF0198 – Introdução à Computação 22 S.O. - Estrutura Máquina Virtual ou estendida Evolução natural e gradual do S.O. de forma afastar o usuário da complexidade do hardware, apresentando-o uma interface muito simples de entender e de programar e equivalente ao hardware, fazendo-o pensar que a máquina é “somente dele”. O coração do sistema, conhecido como monitor de máquina virtual, roda sobre o hardware, e implementa a multiprogramação, fornecendo não só uma, mas várias máquinas virtuais para o nível acima, com cópias fiéis do hardware, incluindo os modos kernel/usuário, entrada/saída, interrupções, e tudo o mais que uma máquina real possui. INF0198 – Introdução à Computação 23 S.O. - Estrutura Modelo Cliente-Servidor O S.O. ganhou muita simplicidade pelo fato de mover parte do seu código tradicional (implementação da máquina virtual) para um nível mais alto. Uma tendência nos sistemas operacionais modernos é aproveitar esta idéia, deixando o S.O. reduzido à sua expressão mais simples, ou seja, o kernel.. Normalmente, as funções tradicionais são implementadas como processos do usuário. Para solicitar um serviço, como a leitura de um arquivo, o processo usuário, agora denominado processo cliente, envia uma requisição para o processo servidor, o qual então realiza o trabalho solicitado e envia a resposta de volta ao processo usuário. INF0198 – Introdução à Computação 24 S.O. - Estrutura Modelo Cliente-Servidor (cont.) Neste modelo, tudo o que o kernel faz é implementar a comunicação entre clientes e servidores. Através da divisão do SO em várias partes, cada uma tratando de uma faceta do sistema, tal como servidor de arquivos, de processos, de terminais, gerente de memória, consegue-se fazer com que cada uma das partes torne-se menor e mais facilmente gerenciável. Como os servidores rodam no modo usuário e não no kernel, eles não tem acesso ao hardware, como conseqüência, se for detectado um bug no servidor de arquivos, este serviço pode entrar em colapso, mas não a máquina toda. Processo Processo Servidor de Servidor de Cliente Cliente Processo Terminal ... Servidor de Servidor de Arquivo Memória Kernel Modo Usuário Modo Supervisor Processos clientes obtém serviços enviando mensagens para para os processos servidores INF0198 – Introdução à Computação 25 S.O. - Estrutura Modelo Cliente – Servidor Sistema distribuído Outra vantagem é sua adaptabilidade aos sistemas distribuídos. Se um cliente se comunica com um servidor por troca de mensagens, o cliente não precisa saber se a mensagem é tratada localmente, em sua própria máquina, ou se ela foi enviada através da rede, para um servidor em uma máquina remota. Máquina 1 Máquina 2 Máquina 3 Máquina 4 Cliente Servidor de Processo Servidor de Arquivo Servidor de Terminal Kernel Kernel Kernel Kernel INF0198 – Introdução à Computação 26 S.O. - Estrutura Existem duas correntes de pensamento a respeito da estrutura dos sistemas distribuídos. Uma diz que cada máquina deve rodar um kernel tradicional que forneça a maioria dos serviços ele próprio, outra acha que o kernel deve fornecer tão pouco serviço quanto possível, com o grosso dos serviços sendo prestado a partir de servidores a nível usuário. Kernel Monolítico é simplesmente um SO centralizado que foi ampliado com facilidades de rede e de integração remotos. A maioria das chamadas de sistema são feitas mandando um trap para o kernel, com o trabalho sendo feito no kernel, e com este retornando os resultados ao processo usuário. A maioria das máquinas tem de possuir discos e precisa gerenciar seus próprios sistemas de arquivos locais. Ex: Unix e suas extensões/imitações. INF0198 – Introdução à Computação 27 S.O. - Estrutura MicroKernel A maioria dos sistemas distribuídos que têm sido projetados desde o início, sem aproveitar nada que já esteja pronto, usa este método. O microkernel é mais flexível pelo fato de não fazer quase nada. Basicamente fornece quatro serviços: 1. Um mecanismo de comunicação entre processos. 2. Um mínimo de funções para gerência da memória. 3. Um mínimo de funções de gerência de processos e escalonamento. 4. Funções de entrada/saída de baixo nível Em particular não fornece sistemas de arquivos, de diretórios, a gerência completa de processos, e a manipulação da maioria das chamadas do sistema. O objetivo é mantê-lo o menor possível. INF0198 – Introdução à Computação 28 S.O. - Exemplos Windows Server 2003 – Microsoft Solaris 10 UNIX – Sun Microsystems Netware 5.1 – Novell Linux 6.1 – Red Hat Software INF0198 – Introdução à Computação 29 3.2 - Software Aplicativo Consiste em programas escritos para resolver problemas específicos dos usuários, sua função principal é aplicar o poder do computador para dar às pessoas, grupos e organizações a capacidade de resolver problemas e executar atividades ou tarefas específicas. Os programas aplicativos então interagem com o software básico. INF0198 – Introdução à Computação 30 3.2 - Software Aplicativo Classificação quanto ao Desenvolvimento: Uma empresa pode tanto desenvolver um programa único no gênero voltado para uma aplicação específica (chamado software proprietário) ou comprar e usar um software já existente (chamado de software padronizado). Software aplicativo proprietário. Ele geralmente é criado internamente, mas também pode ser adquirido de outra empresa. Podemos ter a opção do desenvolvimento interno ou através de uma firma terceirizada um software de contrato. INF0198 – Introdução à Computação 31 3.2 - Software Aplicativo Software aplicativo padronizado. Pode ser comprado, licenciado ou alugado de uma empresa especializada que desenvolve programas e os vende para muito usuários de computador e organizações. Pacote customizado ou personalizado. Em alguns casos, as empresas optam por uma combinação entre desenvolvimento de software interno e externo, ou seja, os pacotes de software padronizados são modificados ou adaptados pelo pessoal interno. INF0198 – Introdução à Computação 32 3.2 - Software Aplicativo Classificação quanto à Utilização: Comercial; Técnico-Científico; Automação; Educacional. INF0198 – Introdução à Computação 33 3.2 - Software Aplicativo Classificação quanto à Comercialização: Comercial; Freeware; Shareware; Domínio Público INF0198 – Introdução à Computação 34 3.2 - Software Aplicativo Comercial Comercial' não é sinônimo para ``não-livre''. Um programa é comercial se ele é desenvolvido como uma atividade de um negócio. Um programa comercial pode ser livre ou não-livre, dependendo da sua licença. Da mesma maneira, um programa desenvolvido por uma escola ou por um indivíduo pode ser livre ou não-livre, dependendo da sua licença. As duas perguntas: que tipo de entidade desenvolveu o programa e qual liberdade seus usuários possuem são independentes. INF0198 – Introdução à Computação 35 3.2 - Software Aplicativo Freeware Não é sinônimo para ``free software'' ou ``software livre''. O termo ``freeware'' foi usado comumente nos anos 80 para programas publicados apenas como executáveis, sem código fonte disponível. Atualmente não existe um consenso a respeito de sua definição. INF0198 – Introdução à Computação 36 3.2 - Software Aplicativo Shareware Softwares que pode ser testado gratuitamente por determinado tempo (normalmente 30 dias), para que o usuário possa decidir se deseja ou não comprá-lo. Após o período de avaliação, o usuário deve decidir se deseja efetuar o registro (termo utilizado para a compra de um shareware), ou removê-lo do computador. A troca fica baseada na confiança, pois o usuário utiliza, de graça, o aplicativo e, se ficar contente com o resultado, envia dinheiro para quem o desenvolveu. INF0198 – Introdução à Computação 37 3.2 - Software Aplicativo Shareware (cont.) Nem todos os usuários são confiáveis e alguns passaram a usar os produtos sem enviar qualquer contribuição para o autor. Nesse momento, os programadores resolveram aplicar restrições aos programas, até que eles fossem registrados pelos usuários. Assim que nasceram os Demos, programas que têm sua funcionalidade total durante um determinado período de tempo e também aqueles que são feitos incompletos como é o caso de demos de jogos e até os aplicativos convencionais que só possuem algumas opções habilitadas. INF0198 – Introdução à Computação 38 3.2 - Software Aplicativo Software Livre Termo que se refere à liberdade dos usuários executarem, copiarem, distribuírem, estudarem, modificarem e aperfeiçoarem o software. Mais precisamente, ele se refere a quatro tipos de liberdade para os usuários do software: A liberdade de executar o programa, para qualquer propósito. A liberdade de estudar como o programa funciona, e adaptá-lo para as suas necessidades. A liberdade de redistribuir cópias de modo que você possa ajudar ao seu próximo. A liberdade de aperfeiçoar o programa, e liberar os seus aperfeiçoamentos, de modo que toda a comunidade se beneficie. INF0198 – Introdução à Computação 39 3.2 - Software Aplicativo Software Livre (cont.) Você deve ser livre para redistribuir cópias, seja com ou sem modificações, seja de graça ou cobrando uma taxa pela distribuição. O acesso ao código-fonte é uma condição necessária ao software livre. Independente de como você obteve a sua cópia, você sempre tem a liberdade de copiar e modificar o software, ou mesmo de vender cópias. É uma questão de liberdade, não de preço. "Software Livre" Não significa "não-comercial". Um programa livre deve estar disponível para uso comercial, desenvolvimento comercial, e distribuição comercial. INF0198 – Introdução à Computação 40 3.2 - Software Aplicativo Software Aplicativo de Usuário O software aplicativo pessoal inclui ferramentas para fins especiais e programas que podem dar suporte a várias necessidades do indivíduo. Processador de texto. Se o usuário redige relatórios, cartas ou documentos em geral, os aplicativos de processamento de textos são indispensáveis. Planilha eletrônica. As pessoas usam planilhas eletrônicas para preparar orçamentos, estimar lucros, analisar programas de seguro, resumir dados de impostos e analisar investimentos. INF0198 – Introdução à Computação 41 3.2 - Software Aplicativo Software Aplicativo de Usuário (cont.) Programa de banco de dados. Os aplicativos de banco de dados são ideais para o armazenamento, manipulação e recuperação de dados e são particularmente úteis quando faz-se necessário manipular grande quantidade de dados e produzir relatórios e documentos. Software de apresentação gráfica. Um programa de apresentação pode auxiliar na elaboração de uma apresentação, um desenho ou uma ilustração. Correio Eletrônico (e-mail). Programa que permite o envio e recebimento de mensagens eletrônicas pela Internet. INF0198 – Introdução à Computação 42 3.2 - Software Aplicativo Software Aplicativo de Usuário (cont.) Navegador de Rede (browser). É a interface fundamental que é utilizada para acessarmos a Internet, bem como as Intranets e Extranets. Especialistas vêem o navegador como o modelo de como a pessoas utlizarão os computadores no futuro. Suíte de aplicativos. Corresponde a um conjunto de softwares embalados juntos em um único pacote. As suítes podem incluir processadores de texto, planilhas eletrônicas, sistemas de gerenciamento de banco de dados, programas de apresentação, ferramentas de comunicação, organizadores, etc ... INF0198 – Introdução à Computação 43 3.2 - Software Aplicativo Software Aplicativo de Grupo - Groupware O software pode também ajudar grupos de pessoas a trabalharem juntas com maior eficácia e eficiência. Um Groupware pode dar apoio a um grupo de profissionais trabalhando no mesmo problema permitindo compartilhar idéias e o trabalho através de sistemas. Deve-se notar que as pessoas nas empresas são interdependentes e estão ligadas pelos sistemas de informação da organização. INF0198 – Introdução à Computação 44 3.3 – Linguagens de Programação Tanto o software básico como o software aplicativo são escritos em esquemas de códigos denominados linguagens de programação. Uma linguagem de programação padrão compreende um conjunto de regras que descrevem como as instruções de programação devem ser escritas. A redação ou codificação destas instruções é chamada de programação, e a pessoa que escreve ou faz a codificação desempenha o papel de programador. A programação envolve a tradução do que o usuário quer realizar em um código que o computador possa entender e executar. INF0198 – Introdução à Computação 45 3.3 – Linguagens de Programação Cada linguagem de programação usa um conjunto de instruções que tem significado especial, como também sua própria série de regras, chamada de sintaxe da linguagem, que determina como estas instruções devem combinar em ordens capazes de transmitir instruções significativas à CPU. As linguagens tem evoluído com o tempo e de alguma forma regulada por padrões, devido ao fato de versões diferentes de uma mesma linguagem rodavam de maneira distinta em um mesmo computador. Um padrão de linguagem de computação consiste em uma série de normas que descrevem como os comandos e ordens da programação devem ser escritos. Ex.: ANSI – American National Standards Intitute. INF0198 – Introdução à Computação 46 3.3.1 – Linguagem de Máquina Primeira Geração. Os programadores escreviam suas instruções em códigos binários, dizendo à CPU exatamente quais circuitos ligar ou desligar, e devem possuir conhecimento detalhado das operações internas da CPU que estão utilizando. A linguagem de máquina é considerada uma linguagem de baixo nível, porque não existe um esquema de codificação do programa menos sofisticado do que os símbolos binários 1 e 0. Por ser a programação extremamente difícil, pouquíssimos programas são escritos nesta linguagem. Por ser a única capaz de instruir diretamente a CPU, toda instrução de programa em outra linguagem deve ser traduzida para ela antes de sua execução. ASCII – American Standard Code for Information Interchange. INF0198 – Introdução à Computação 47 3.3.2 – Linguagem Assembly Linguagens de 2ª geração. Os programas usados para traduzí-las em código de máquina são chamados de assemblers (montador). Foram desenvolvidas para reduzir as dificuldades inerentes à programação em linguagem de máquina, substituindo os dígitos binários por símbolos mais facilmente compreendidos pelos programadores. Da segunda geração em diante, todas as linguagens são consideradas simbólicas. Esta mudança para um código mais simbólico e legível permitiu ao programador se concentrar mais na solução do problema do que na complexidade da codificação. Apesar disso, ainda é considerada de baixo nível. INF0198 – Introdução à Computação 48 3.3.2 – Linguagem Assembly A maioria dos fabricantes fornece uma linguagem assembly que reflete o conjunto exclusivo de instruções para uma determinada linha de computadores. Essa característica é particularmente desejável para os programadores de software de sistemas (básico), uma vez que isto garante a eles maior controle e flexibilidade na concepção de seus programas. Desta forma eles podem produzir software mais eficiente, ou seja, programas que exigem um mínimo de instruções, armazenamento e tempo da CPU para realizar determinada tarefa. INF0198 – Introdução à Computação 49 3.3.3 – Linguagem de Alto Nível Linguagens de 3ª Geração. Estas linguagens mantiveram a tendência em direção ao maior uso de símbolos para instruir o computador como completar uma operação. Basic, Cobol, C, C++ e Fortran são exemplos de linguagens de terceira geração que usam declarações e comandos parecidos com o inglês. Características: Cada declaração traduz várias instruções na linguagem de máquina. A linguagem é semelhante à língua inglesa e emprega abreviações e palavras usadas na comunicação quotidiana. INF0198 – Introdução à Computação 50 3.3.3 – Linguagem de Alto Nível Características (cont.): As linguagens de terceira geração são relativamente independentes do hardware do computador. Esta característica está ganhando importância à medida que as empresas utilizam diferentes computadores em sistema de processamento distribuídos e, ainda, por força das rápidas mudanças na tecnologia de hardware. INF0198 – Introdução à Computação 51 3.3.4 – Linguagem de 4ª Geração Essas são linguagens de programação menos procedimentais e até mesmo mais parecidas com o inglês do que as de terceira geração. Ela enfatiza quais os resultados da produção são desejados mais do que como as instruções da programação devem ser escritas. Requer pouco ou nenhum treinamento. Algumas características incluem a capacidade de consultas e manipulação de banco de dados, capacidade de geração de código executável e funcionalidades gráficas. Como exemplo temos Visual C++, Visual Basic, PowerBuilder, Delphi, SQL. INF0198 – Introdução à Computação 52 3.3.5 – Linguag. Orientada a Objetos Enquanto as outras linguagens separam os dados dos procedimentos que serão executados sobre eles, as linguagens OOP os vinculam em conjunto nos objetos. Um objeto consiste nos dados e nas ações que podem ser executadas nestes dados. A maioria dos pacotes de OOP fornece uma interface gráfica com o usuário que suporta uma montagem visual de objetos do tipo “apontar e clicar”, “arrastar e soltar” conhecida como programação visual, que a torna mais fácil e intuitiva. A reutilização de objetos é um dos principais benefícios da OOP. Estas linguagens são mais fáceis de usar e mais eficientes para programar as interfaces gráficas gráficas com o usuário. INF0198 – Introdução à Computação 53 3.3.5 – Linguag. Orientada a Objetos Conceitos importantes: O encapsulamento significa que as funções ou tarefas são encapsuladas em cada objeto. O polimorfismo permite que o programador desenvolva uma rotina ou um conjunto de atividades que irão operar ou funcionar com múltiplos objetos (poli). A herança significa que os objetos de um grupo de objetos podem herdar características de outros objetos no mesmo grupo ou classe de objetos. Como exemplo temos: Smalltalk, C++ e Java. INF0198 – Introdução à Computação 54 3.3.5 – Linguag. Orientada a Objetos Linguagem Procedural. Linguagem procedimental que utiliza formulações breves e expressões matemáticas para especificar a seqüência de instruções que um computador deve executar. Linguagem não Procedural. Se aproximem mais da conversação humana. Encorajam os usuários e programadores a especificarem os resultados que eles desejam, ao passo que o computador determina a seqüência de instruções que realizará este resultado Linguagens OO. Diferentemente das anteriores, em que um programa consistia em procedimentos para executar ações sobre cada elemento dos dados, nestas os sistemas ordenam a outros objetos que executem ações sobre si mesmo. INF0198 – Introdução à Computação 55 3.3.5 – HTML e XML Assim como a Linguagem Java, são duas linguagens que constituem importantes ferramentas para a montagem de páginas para a Internet, sites e aplicações baseadas em rede. HTML – Hypertext markup Language (Linguagem de marcação de Hipertexto) é uma linguagem de descrição de página que cria documentos em hipertexto ou hipermídia. Ela insere códigos de controle em um documento em pontos que você pode especificar para criar links (hiperlinks) para outras partes do documento e para outros documentos em outros pontas da Internet. Ela embute códigos de controle no texto ASCII de um documento designando títulos, cabeçalhos, gráficos e componentes de multimídia, além de hiperlinks no documento. INF0198 – Introdução à Computação 56 3.3.5 – HTML e XML XML – eXtensible Markup Language.Diferentemente da HTML, descreve os conteúdos das páginas da web por meio de sinalizadores de identificação, ou rótulos de contexto, aos dados de documento web. Por exemplo, um site de uma agência de viagens com nomes de linhas aéreas e tempo de vôo utilizaria etiquetas de XML ocultas como “nome da linha aérea” e “tempo de vôo” para classificar a duração de cada vôo naquela página. Assim, ela torna a informação do website mais fácil de ser encontrada e classificada. Um software de procura utilizando XML poderia encontrar facilmente determinado produto se os seus dados tivessem sido rotulados com com sinalizadores XML de identificação. INF0198 – Introdução à Computação 57 3.3.7 – Selecionando uma Linguagem Selecionar a melhor linguagem de programação para uso em um programa em particular envolve a avaliação de características da linguagem, tais como custo, controle e questões de complexidade. As linguagens de máquina e assembly fornecem um controle mais direto sobre o hardware. Desenvolver programas de computador usando linguagens de altíssimo nível consome menos tempo do que com as de baixo nível. INF0198 – Introdução à Computação 58