Linguagens de Programação

24
LINGUAGENS DE PROGRAMAÇÃO SUB-ÁREA DA CIÊNCIA DA COMPUTAÇÃO Universidade Federal de Pelotas Bacharelado em Ciência da Computação Introdução à Ciência da Computação Professor Gerson Cavalheiro (FILHO DA PUTA)

description

Sub-área da Ciência da Computação.

Transcript of Linguagens de Programação

Page 1: Linguagens de Programação

LINGUAGENS DE PROGRAMAÇÃO SUB-ÁREA DA CIÊNCIA DA COMPUTAÇÃO

Universidade Federal de PelotasBacharelado em Ciência da Computação

Introdução à Ciência da ComputaçãoProfessor Gerson Cavalheiro (FILHO DA PUTA)

Page 2: Linguagens de Programação

2

Introdução

Será abordado, através da presente apresentação, uma visão abrangente da sub-área da Ciência da Computação denominada Linguagens de Programação.

Além disso, será apresentado o conjunto de conhecimentos necessários para o desenvolvimento dessas linguagens, um breve histórico das linguagens, a relação com as disciplinas do curso e por fim, as oportunidades no mercado de trabalho.

Linguagens de Programação

Histórico das linguagens

Conhecimentos necessários

O relacionamento com o curso

Mercado de trabalho

Page 3: Linguagens de Programação

3

LINGUAGENS DE PROGRAMAÇÃO

Page 4: Linguagens de Programação

4

Linguagens de Programação

Linguagens de programação (LP) são métodos padronizados para expressar instruções para um computador. São um conjunto de regras sintáticas e semânticas usadas para definir um programa de computador. Uma linguagem permite que um programador especifique sobre quais dados um computador vai atuar, como estes dados serão transmitidos ou armazenados e quais ações devem ser tomadas sob várias circunstâncias.

O principal objetivo das linguagens é permitir que programadores tenham uma maior produtividade, podendo expressar suas intenções mais facilmente do que quando comparado com a linguagem que um computador entende nativamente (código de máquina). Portanto, linguagens de programação são projetadas para adotar uma sintaxe de nível mais elevado, que pode ser mais facilmente entendida por programadores humanos. Enfim, elas são ferramentas importantes para que programadores possam escrever programas mais organizados e com maior rapidez.

Page 5: Linguagens de Programação

5

Sintaxe e semântica da LP

Sintaxe: conjunto de regras formais para a composição de um texto na linguagem (programa) a partir do agrupamento de letras, dígitos e/ou outros caracteres (alfabeto da linguagem). A sintaxe é um conjunto de regras formais para a escrita do programa.

Semântica: diz respeito à significação. A semântica é o estudo do sentido dos significantes. Em programação a semântica diz respeito ao significado do programa sintaticamente válido. O que pode ocorrer é que um programa seja sintaticamente válido sem, no entanto, ter um significado lógico coerente. É parte do domínio da semântica verificar esta coerência em termos de significado linguístico e não em termos de lógica de programa.

Page 6: Linguagens de Programação

6

Propriedades desejáveis de uma LP

Page 7: Linguagens de Programação

7

Níveis das LPs

Linguagem de baixo nível

• É uma linguagem mais próxima da Linguagem de Máquina (L.M.), ou seja, mais próxima do hardware. Exemplo: Assembler.

Linguagem de nível médio

• É suficientemente próxima do hardware e ao mesmo tempo prevê a utilização de recursos de alto nível. Exemplo: C++.

Linguagem de alto nível

• São linguagens, cada vez mais, afastadas da L.M., através do uso de abstrações cada vez mais complexas. Estas abstrações se dão em função da adoção de tipos de dados, palavras reservadas, funções, procedimentos automáticos, etc. Exemplos: COBOL, Pascal, Java, Visual Basic, etc.

Page 8: Linguagens de Programação

8

Programação estruturada

• Programação estruturada é uma forma de programação de computadores que preconiza que todos os programas possíveis podem ser reduzidos a apenas três estruturas: sequência, decisão e interação.

Programação orientada à objetos

• A análise e projeto orientados a objetos têm como meta identificar o melhor conjunto de objetos para descrever um sistema de software. O funcionamento deste sistema se dá através do relacionamento e troca de mensagens entre estes objetos.Programação natural

• É usado para distinguir as línguas faladas por seres humanos e usadas como instrumento de comunicação daquelas que são linguagens formais construídas.

Programação lógica

• Programação lógica é a programação que faz uso da lógica matemática.

Tipos de programação

Page 9: Linguagens de Programação

9

Interpretação X Compilação

Nas linguagens interpretadas um programa é executado instrução a instrução, ou seja, cada comando é, primeiro traduzido para a linguagem de máquina, para somente em seguida, ser executado. Na interpretação as ações resultantes de comandos da linguagem de alto nível são executadas diretamente, seguindo os passos:

Obter próximo comando

Determinar as ações a executar

Realizar a ação

Nas linguagens compiladas um programa é executado somente quando toda a tradução foi completada. A compilação de um programa fonte (texto escrito diretamente na linguagem de alto ou médio nível) prevê que o mesmo seja traduzido para a linguagem da máquina correspondente antes da execução. Esta tradução é geralmente é feita em diversas etapas:

Etapas Cria o Extensão[1ª etapa] depuração sintática

Programa fonte .C ou .CPP

[2ª etapa] geração de código de máquina relocável

Programa objeto .OBJ

[3ª etapa] linkage - liga códigos e funções de biblioteca

Programa executável

.EXE

Page 10: Linguagens de Programação

10

HISTÓRICO

Page 11: Linguagens de Programação

11

Histórico das LPs

Desde o aparecimento dos primeiros computadores ficou claro que seria necessário encontrar um método padronizado para melhor expressar as instruções que deveriam ser dadas à máquina. Um conjunto de regras sintáticas e semânticas que permitissem definir um programa, passível de ser interpretado pela máquina da forma mais eficiente.

À medida que caminhamos rumo ao século XXI, o universo programático sofreu diversas metamorfoses, onde muitas linguagens desadequadas à nova realidade computacional deixaram de existir, cedendo lugar e novas formas de comunicação neste eterno diálogo homem/máquina.

Page 12: Linguagens de Programação

12

Década de 1940

• Sistema de código ENIAC, Assembly, C-10 e Plankalkül.

1950 - 1960

• FORTRAN, LISP, Basic, COBOL, etc.

1967 - 1978

• Pascal, C, Prolog, SQL, etc.

Década de 1980

• C++, Perl, Ada, etc.

Década de 1990

• Haskell, Python, Java, Ruby, Common Lisp, JavaScript, PHP, C#, Delphi, Ruby, etc.

Década de 2000

• C#, VB.net, etc.

Histórico

Page 13: Linguagens de Programação

13

As linguagens mais utilizadas atualmente Índice de popularidade das linguagens de programação. É baseado em estatística obtida nos principais portais de informações (Google, MSN, Yahoo!, YouTube, etc.).

Note que o índice não classifica as melhores linguagens de programação, e sim as mais populares (utilizadas). Não é uma coisa absoluta, mas bem representativa do mercado global de programação.

24%

16%

10%9%7%

4%

4%4%3%

18%

As 10 mais populares

Java C C++PHP (Visual) Basic PythonC# JavaScript PerlOutras

Fonte: tiobe.com

Page 14: Linguagens de Programação

14

CONHECIMENTOS NECESSÁRIOS

Page 15: Linguagens de Programação

15

Capacidade de escolher a LP mais adequada. Conhecer os recursos oferecidos por uma linguagem e saber como esses recursos são implementados podem determinar uma boa escolha da LP a ser usada em um projeto.

Habilidade ao usar uma LP. O maior entendimento a respeito das funcionalidades e da implementação de uma LP possibilita ao programador construir programas melhores e mais eficientes.

Ser dinâmico.O programador não deve se limitar a uma única linguagem, com o mercado profissional cada vez mais competitivo e a constante atualização da área deve-se ampliar o leque de LPs, conhecendo suas características básicas e os conceitos em que elas são implementadas.

Maior capacidade de desenvolver programas. Uma maior compreensão sobre os conceitos de uma LP pode aumentar a habilidade de como pensar e resolver problemas.

O que um bom

programador precisa saber/ter?

Page 16: Linguagens de Programação

16

Qualidades ou esforços necessários

Saber inglês

Saber buscar as

informações

Gostar de ler, estudar e aprender

Gostar de problemas lógicos

O programador mediano sabe uma coisa porque ele precisa saber. O bom programador sabe alguma coisa porque ele tem vontade de

saber.

Aqui são suas

refeições, se você

não gosta de

resolver problemas

e não sente prazer

em fazer, buscar

outra área é um

bom caminho.

Para resolver um

problema é necessário

saber como buscar as

informações quanto

mais informações tiver

mais fácil será de

resolver.

Um bom programador

necessita saber inglês, a

sintaxe das linguagens

de programação é feita

de palavras em inglês, a

documentação da

linguagem, ferramentas, etc.

Você gosta de ler? Não? Sinto

muito, então é melhor você

arrumar outra profissão. É

impossível ser um bom

programador sem ler

bastante. Programação de

computadores é uma área

muito vasta e, em muitas de

suas vertentes, muito

complexa. E ainda, não existe

uma melhor forma de

aprender se não é lendo.

No English? No job.

Page 17: Linguagens de Programação

17

RELAÇÃO COM O CURSO NA UFPEL

Page 18: Linguagens de Programação

18

Algoritmos e Programaçã

o

Programação I

Estrutura de Dados

I e II

Conceitos de Linguagens

de Programação

Programação Orientada à Objetos

Análise de Algoritmo

s

Compiladores I e II

Disciplinas relacionadas com

linguagens de programação na

UFPel

Page 19: Linguagens de Programação

19

Algoritmos e Programação

• Conceitos básicos. Tipos de instruções. Tipos de algoritmos. Formas de representação de algoritmos. Técnicas de construção de algoritmos. Modularidade. Sub-algoritmo. Recursividade. Laboratório de programação seqüencial: tipos de dados, estrutura de um programa, declarações, comandos, subprogramas, entrada e saída.

Programação I

• Estudo completo de uma linguagem de programação sequencial: estrutura de um programa, tipos, tipos estruturados e ponteiros, declarações, comandos, subprogramas, entrada e saída, algoritmos com matrizes, uso de arquivos. Técnicas e ferramentas para desenvolvimento de programas.

Estrutura de Dados I e II• Estruturas de dados e algoritmos são temas fundamentais da Ciência da Computação, sendo utilizados nas mais diversas áreas do conhecimento e com os mais diferentes propósitos de aplicação. Sabe-se que algoritmos manipulam dados. Quando estes dados estão organizados (dispostos) de forma coerente, caracterizam uma forma, uma estrutura de dados.

Análise de Algoritmos

• Esta disciplina faz parte da mais vasta teoria da complexidade computacional, que permite fazer estimativas quanto aos recursos necessários para que um algoritmo resolva um determinado problema computacional.

Conceitos de Linguagens de Programação• Abstração de Dados. Manipulação de ponteiros.

Estruturas básicas: listas lineares e não lineares. Conceito de árvores, árvores binárias, árvores balanceadas. Implementação de grafos. Alocação dinâmica de memória. Compressão de dados. Pesquisa em tabelas. Métodos de classificação (ordenação) de dados. Organização de arquivos: armazenagem externa, arquivos seqüenciais, arquivos texto, arquivos indexados. Pesquisa em árvore, árvores B. Hash estático e dinâmico.

Programação Orientada à Objetos• A Programação Orientada a Objetos é um

paradigma de análise, projeto e programação de sistemas de software baseado na composição e interação entre diversas unidades de software chamadas de objetos. A análise e projeto orientados a objetos têm como meta identificar o melhor conjunto de objetos para descrever um sistema de software. O funcionamento deste sistema se dá através do relacionamento e troca de mensagens entre estes objetos.

Compiladores I e II• Para executar o código (normalmente textos numa

linguagem com uma gramática bem definida) existem programas que convertem essa linguagem para a da máquina concreta. A esses programas chamam-se compiladores.

Page 20: Linguagens de Programação

20

MERCADO DE TRABALHO

Page 21: Linguagens de Programação

21

Mercado de trabalho

O profissional que tenha uma

maior habilidade em

aprender rapidamente

uma nova linguagem

possui maiores chances de sucesso na

área.

Atualmente, sobram

vagas no mercado. O

problema é a falta de

qualificação e de o

candidato falar apenas um idioma.

O diploma nem sempre garante

um lugar no mercado de trabalho. O

sucesso na carreira depende do nível de especialização

e da área de dedicação do profissional.

Atualmente os mais bem

remunerados trabalham na área

de telecomunicações

e de desenvolvimento de soluções para

empresas.

O mercado de trabalho para

programadores é estável e

crescente nos setores privado e

público.O mercado tem

crescido, principalmente

para o profissional que

investir no aprendizado de

programas recém lançados

no mercado.

Page 22: Linguagens de Programação

Faixa salarial de acordo com área de atuação

22

Page 23: Linguagens de Programação

232 4 8 12 20 21+0

1000

2000

3000

4000

5000

6000

Anos de experiência

R$ Fonte: apinfo.com

Faixa salarial de acordo com anos de experiência

Page 24: Linguagens de Programação

24

Vídeo: mercado de trabalho na área de tecnologia da informação