Você está na página 1de 4

Introduo Computao

Aula 03/14 Assunto: Linguagens de Programao

Linguagem de Programao uma linguagem artificial criada pelo ser humano para comunicar instrues uma mquina. Entre o ser humano e a mquina, existem nveis de linguagem a fim de facilitar a comunicao de instrues. Linguagem de Baixo Nvel Niveis Linguagem de Alto-Nvel

o cdigo de mquina especfico para cada tipo de processador, ou seja, o cdigo de mquina de um processador da marca Intel diferente do cdigo de mquina de um processador da marca Athlon, por exemplo. Assembly Languages so linguagens de baixo nvel, ou seja, requerem que o programador tenha conhecimento da arquitetura do processador. Como o cdigo de mquinas, em Assmbly, cada uma das afirmativas corresponde a exatamente uma instruo para o processador, entretanto, as instrues so representadas por simbolos mnemnicos que facilitam a programao. Os programas em Assembly so convertidos em cdigo de mquina atravs de programas conversores chamados Assemblers. Cada estrutura de processador tem um tipo especfico de Assembly, o que no permite a portabilidade do Assembly de um processador para outro. Linguagem de Alto Nvel: So linguagens com elevado nivel de abstrao da arquitetura do computador, permitindo que a programao sem o conhecimento dos detalhes de funcionamento da arquitetura do computador. Incorporam elementos da linguagem natural do ser humano e utilizam os conceitos de varivel, vetores, funes, loops por exemplo. A primeira linguagem de alto-nvel foi a Plankalkul criada por Konrad Zuse na dcada de 1940 para o seu computador Z3. Linguagens de alto nvel necessitam de programas compiladores, tradutores ou interpretadores para serem executados. Compiladores criam um arquivo executvel, interpretadores lem o programa em cdigo de mquina cada vez que so executados, e tradutores traduzem uma linguagem de alto nivel em outra linguagem que tenha uma disponibilidade de compiladores 1

Abstrao o nvel de afastamento dos detalhes da arquitetura de um computador. Maiores nvel de abstrao so relacionados a linguagens de alto nvel. Linguagem de Baixo Nvel so linguagens que possibilitam pouco nvel de abstrao da arquitetura do computador, ou seja, linguagens de baixo nvel exigem que o programador conhea a estrutura do processador. So exemplos de linguagem de baixo nvel o Cdigo de Mquina e o Assembly. A programao em linguagem de baixo nvel requer o dominio de conceitos como registradores, endereos de memrias e programao em pilha, por exemplo. Cdigo de Mquina: No nvel mais bsico se encontra o cdigo de mquina, o qual serve para comunicar instrues diretamente ao processador de um computador. O cdigo de mquina comunica suas instrues atravs de uma sequncia de 0s e 1s (sistema binrio, muitas vezes representado em Hexadecimal) diretamente aos registradores do processador. Por isto, a tarefa de programar diretamente em linguagem de mquina extremamente tediosa e complicada, pois o cdigo de mquina se afasta das linguagens naturais humanas. Ainda,

Faculdade Mario Schenberg Curso de Engenharia Civil/1o semester Prof. Rafael Pacheco

mais abrangente. Alm disto, linguagens de alto nivel possuem portabilidade, ou seja, elas podem criar cdigos executveis sem importar o tipo de processador.

IDEs, por exemplo, a linguagem C possui o DEV C++, Code Blocks, Visual C++ etc... Alto-Nivel X Baixo-Nivel: Linguagens em alto nvel so muito mais acessveis ao programador, e possuem um poder de sntese maior, pois uma simples instruo em alto nvel pode se desdobrar em vrias instrues no baixo nvel. Entretanto, linguagens de alto-nvel ao ser compiladas geram instrues em cdigo de mquinas que no so muito eficientes. Ou seja, linguagens de baixo nvel ainda so importantes em situaes onde a capacidade do processador limitada.

So exemplos de linguagem de alto nvel: C, C++, FORTRAN, BASIC, PASCAL, COBOL IDE (Integrated Development Environment) o ambiente que permite o desenvolvimento de um cdigo de programao. Pode incluir o compilador, o editor de texto e um debugger. Uma linguagem de programao pode ter vrios

Exemplo: Machine Language program and Assembly code to add two numbers:
Location Instruction Code Hex Binary 100 101 102 103 104 105 106 0010 0001 0000 0100 0001 0001 0000 0101 0011 0001 0000 0110 0111 0000 0000 0001 0000 0000 0101 0011 1111 1111 1111 1110 0000 0000 0000 0000 Instruction Code Hex 2104 1105 3106 7001 0053 FFFE 0000 Assembly Instruction LDA 104 ADD 105 STA 106 HLT operand operand operand Load first operand into AC Add second operand to AC Store sum in location 106 Halt computer 83 decimal -2 decimal Store sum here Comments

Example: (Machine Code) A function in 32-bit x86 machine code to calculate the nth Fibonacci Number (from Wikipedia.org)

8B542408 83FA0077 06B80000 0000C383 FA027706 B8010000 00C353BB 01000000 B9010000 008D0419 83FA0376 078BD98B C84AEBF1 5BC3

Faculdade Mario Schenberg Curso de Engenharia Civil/1o semester Prof. Rafael Pacheco

Example: (Assembly) The same Fibonacci Number calculator as above, but in x86 assembly language using MASM syntax (from Wikipedia.org)

fib: mov edx, [esp+8] cmp edx, 0 ja @f mov eax, 0 ret @@: cmp edx, 2 ja @f mov eax, 1 ret @@: push ebx mov ebx, 1 mov ecx, 1 @@: lea eax, [ebx+ecx] cmp edx, 3 jbe @f mov ebx, ecx mov ecx, eax dec edx jmp @b @@: pop ebx ret

Faculdade Mario Schenberg Curso de Engenharia Civil/1o semester Prof. Rafael Pacheco

Example (C++) a function that calculates the nth Fibonacci Number in C (from Wikipedia.org)

unsigned int fib(unsigned int n) { if (n <= 0) return 0; else if (n <= 2) return 1; else { int a,b,c; a = 1; b = 1; while (1) { c = a + b; if (n <= 3) return c; a = b; b = c; n--; } } }

Faculdade Mario Schenberg Curso de Engenharia Civil/1o semester Prof. Rafael Pacheco

Você também pode gostar