Quais as desvantagens encontradas em uma linguagem de máquinas?

O software foi o primeiro recurso que proporcionou a evolução dos computadores. A história do computador mostra como sua evolução demandou soluções originais para os mais variados problemas. Isso levou ao surgimento de linguagens de programação, sistemas operacionais, padrões, protocolos, etc... Vários recursos criados ao longo de meio século foram sepultados seguindo a lei de Darwin, alguns recursos foram aprimorados concomitantemente as maquinas evoluíam, mas preservando sua filosofia. Entender a necessidade de cada uma dos elementos que compõe as maquina microprocessada é importante para um bom desempenho em computação, podendo desta forma, escolher as melhores ferramentas em cada situação.

 Muitas vezes é mais fácil compreender a necessidade de determinado elemento computacional observando a realidades antes de eles existirem, mas a historia da computação não será o foco aqui, como também detalhes técnicos de sistemas operacionais, arquitetura de computadores ou protocolos que devem ser buscados em livros específicos (Tanenbaum, 1999). Neste capitulo apresentaremos de forma introdutória importância e funções dos principais elementos que constitui qualquer sistema microprocessado.

No inicio os primeiros computadores eram vistos como qualquer maquina da época, eram construídos para executar uma tarefa e feita a tarefa tinha que ser desmontados ou refeitos para outra tarefa, ou seja, a programação era a nível de hardware. Assim um computador que fosse construído para mostrar o teorema de Fermat, faria somente isso até ser refeito para fazer outra tarefa. Hoje existem maquinas que trabalha como os primeiros computadores, que não possuem software apesar de apresentam unidades lógicas, como alguns sistemas de controle, alguns tipos de semáforo, elevadores mais antigos. 

A idéia do software é que um maquina com a mesma estrutura física pudesse executar tarefas diferentes dependendo de uma lista de comandos passada a ela. É mais claro perceber esta idéia observando microcontroladores. Os microcontroladores podem ser visto como um computador em um único chip. O mesmo chip pode ser usado em um carrinho de controle remoto, um semáforo ou um elevador. Em cada um deles a única diferença será no software armazenado na memória do chip, dessa forma uma mesma maquina, neste caso um chip, terá diversas aplicações bastando para isso carregar um programa diferente. Na segunda geração, o computadores  também já não necessitariam mais ser refeitos para fazerem cálculos diferentes, bastava carregar um programa diferente.

O novo conceito de software para ser implantado necessitou de uma grande evolução e um aumento considerável da complexidade do hardware que em pouco tempo trouxe novas necessidades. Esta levou ao surgimento de mecanismos como as linguagens de programação de alto nível. Para uma melhor compreensão desta necessidade voltamos ao exemplo dos microcontroladores atuais.   Para programar um microcontrolador de um semáforo, é necessário conhecer fisicamente o semáforo. Saber em quais terminais do microcontrolador estará ligado ao circuito que acenderá cada lâmpada, a freqüência (clok) de operação do microcontrolador para que manipulado estas informações seja passada as instruções ao microcontrolador (algoritmo) especificando em quantos cloks este deve por 1 ou 0 em algum dos seus terminais, e dessa forma gerar o acendimento de cada lâmpada no tempo correto. Como vemos um programa que tenha sido escrito para um semáforo não terá utilidade em um semáforo que tenha um circuito ou um clok diferente. Este foi outra dificuldade encontrada, a programação feita em Asembler (linguagem de baixo nível) exigia do programador o conhecimento da maquina, e à medida que aumentava a complexidade dos computadores este trabalho tornava se cada vez mais inviável.

Em poucas décadas surgiram diferentes linguagens de programação. As linguagens possibilitaram o desenvolver programas com mais velocidade, pois a responsabilidade que era do programador passou a ser dos compiladores e sistemas operacionais. A abstração do hardware surje entao. Os  sistemas operacionais surge como um programa ou conjunto de programas cuja função e servi de interface entre um computador e o usuário. O sistema operacional gerencia os recursos, controlando quais aplicações podem ser executadas quando e que recursos(memória, disco, periféricos) podem ser utilizados.

Nos primeiros computadores, e como alguns supercomputadores atuais, os sistemas operacionais eram únicos, pois cada computador vendido necessitava de um sistema operacional específico. Esse problema era resultado de arquiteturas diferentes e da linguagem de máquina utilizada, fato semelhante ao que ocorre em telefones celulares atualmente. A grandes quantidades de recursos que os celulares apresentam necessita de  um sistema que controle de processos e recursos sofisticado que nada mais é que um sistema operacional. Ainda assim a maioria dos celulares tem um sistema especifico, ou seja, o sistema só roda naquele celular específico, e devido a arquitetura fechada é impossível outra empresas produzir um sistema que rode nele. A plataforma aberta dos computadores PC e varias padronizações de hardware possibilitou a implementação sistemas operacionais que rodam em todos computadores. A mesma situação começa a surgi em celulares os acordos das empresas fabricantes de celular e com os investimentos do Google na plataforma android.

Um sistema operativo pode ser visto como um programa de grande complexidade que é responsável por todo o funcionamento de uma máquina desde o software a todo hardware instalado na máquina. Todos os processos de um computador estão por de trás de uma programação complexa que comanda todas as funções que um utilizador impõe à máquina. Existem vários sistemas operativos; entre eles, os mais utilizados no dia a dia em computadores domésticos, são o Windows, Linux, OS/2 e Mac OS X. Cada sistema tem vantagens e desvantagens, em computação científica os sistemas Linux e BSD são os mais utilizados.

Assim como os computadores as linguagens não pararam de evoluir. Os  programas tornaram-se muito complexos, havendo necessidade de um melhor reaproveitamento de código como também sugiram novas tecnologias como: placas gráficas, internet, aceleradores gráficos 3D, celulares, que demandaram novos conceitos de programação.

Todas as linguagens atuais possuem vantagens para determinadas aplicação.  Mesmo o Assembler umas das primeiras linguagens pode ser a mais apropriada em determinadas aplicações.  Na computação cientifica entre as varias linguagens existentes, o Fortran e o C++ são as mais utilizadas.  O C++ ,por ser uma das primeiras linguagens a incorporas os conceitos de programação orientada a objeto, tem uma aceitação tanto no mundo acadêmico como em instituições comercias, tendo aplicações nos mais variados produtos de software. Já o Fortran na sua versão Fortran 90 á uma linguagem bem estruturada e de mais fácil utilização, sendo assim a mais utilizada em Física Computacional.

Neste livro, devido seu caráter didático, adotamos o Fortran  como linguagem para exemplificar a utilização de determinados algoritmos. Por isso dedicamos a Seção 2   uma introdução ao Fortran

Duvidas???

Quais são as desvantagens encontradas em uma linguagem de máquina?

A linguagem de máquina aponta diretamente ao hardware do computador, dando ao programador um controle completo de cada aspecto da execução de um programa. A desvantagem dessa abordagem é que o programador deve conhecer a arquitetura de cada conjunto de circuitos integrados (chipset) para escrever um código eficaz.

Qual a vantagem desvantagem de desenvolver um só na linguagem Assembly?

Desvantagens. Programar em Assembly consome muito tempo para o programador; A linguagem é portável apenas dentro de uma família de processadores. Como é uma linguagem especifica para processadores de cada máquina, é necessário desenvolver um programa para cada máquina.

Quais as vantagens de se ter uma linguagem alto nível é quais são as desvantagens?

Vantagens e desvantagens das linguagens de alto nível Em relação às vantagens das linguagens de alto nível, podemos dizer que a principal é a facilidade de aprendizagem, mas esse não é o único ponto. Outro grande benefício é a produtividade que a pessoa programadora ganha ao usar esse tipo de linguagem.

Quais são as linguagens de máquina?

Linguagem de máquina (machine languale): é a linguagem de mais baixo nível de entendimento pelo ser humano e a única, na verdade, entendida pelo processador (UCP). É constituída inteiramente de números, o que torna praticamente impossível entendê-la diretamente.