a ciencia da programación de ordenadores (tamén en galego)

35
A Ciencia da Programación de Ordenadores (TAMÉN EN GALEGO) Manuel Caeiro Rodríguez 5 de novembro de 2014

Upload: manuel-caeiro-rodriguez

Post on 20-Aug-2015

3.598 views

Category:

Education


1 download

TRANSCRIPT

Page 1: A ciencia da programación de ordenadores (tamén en galego)

A Ciencia da Programación de

Ordenadores

(TAMÉN EN GALEGO)

Manuel Caeiro Rodríguez

5 de novembro de 2014

Page 2: A ciencia da programación de ordenadores (tamén en galego)

Que é un ordenador?

Page 3: A ciencia da programación de ordenadores (tamén en galego)

Donde hai ordenadores?

Page 4: A ciencia da programación de ordenadores (tamén en galego)

Que hai nun ordenador?

Hardware (cousas que se poden tocar) Dispositivos electrónicos Circuitos impresos Cables

Page 5: A ciencia da programación de ordenadores (tamén en galego)

Que hai nun ordenador?

Software (non se pode tocar) Programas Datos

Bits: ceros e uns Cargas eléctricas, correntes e outras

propiedades físicas que poden estar en dous estados (binarios, dixitais)

As agrupacións de ceros e uns (bytes) son as que realmente almacenan programas e datos.

Page 6: A ciencia da programación de ordenadores (tamén en galego)

Almacenamento de datos

1889: Herman Holleritz, desenvolveu as tarxetas perforadas para gardar datos (censo dos EEUU).

Os datos (e programas) poden ser codificados como buracos nunha tarxeta.

Page 7: A ciencia da programación de ordenadores (tamén en galego)

A máquina de Turing

1936: máquina imaxinaria Dispositivo que manipula símbolos sobre unha cinta

de acordo a unha táboa de regras. A pesar da súa simplicidade, pode ser adaptada para

simular a lóxica de calquera ordenador actual A diferenza marcaa a Lei de Moore

http://gl.wikipedia.org/wiki/Alan_Turing

Page 8: A ciencia da programación de ordenadores (tamén en galego)

Arquitectura de Von Neumann

1945: Modelo teórico que describe a estructura básica dos ordenadores actuais Concepto de programa almacenado UCP e zona de almacenamento separadosDefiniu o bit “Binary digit”

http://gl.wikipedia.org/wiki/John_von_Neumann

Page 9: A ciencia da programación de ordenadores (tamén en galego)

Que fai un ordenador?

Page 10: A ciencia da programación de ordenadores (tamén en galego)

Que fai un ordenador?

Ollo, os ordenadores só executan os programas ...

Licenza CC-BY-NC-ND 3.0 de csumplugged.org

Page 11: A ciencia da programación de ordenadores (tamén en galego)

Como se programa?

Page 12: A ciencia da programación de ordenadores (tamén en galego)

Como se programa?

Ensam

blarE

nsamblar

Ensam

blarE

nsamblar

Com

pilarC

ompilar

1 23

Traducir

InterpretarInterpretar

Linguaxe máquina

Linguaxeensambladora

Linguaxe de alto nivel(3ª generación)

Page 13: A ciencia da programación de ordenadores (tamén en galego)

Linguaxes de alto nivel

Page 14: A ciencia da programación de ordenadores (tamén en galego)

Por que hai varias linguaxes de ordenador?

O que se pode facer nun ordenador ven determinado pola linguaxe máquina

O que cambia unha linguaxe de programación é a forma en que nós (as persoas) nos podemos comunicar cos ordenadores e con outras persoas

Page 15: A ciencia da programación de ordenadores (tamén en galego)

Linguaxes de Programación máis Relevantes

1957-1959: FORTRAN (Formula Translation) LISP (List Processor) COBOL (Common Business-Oriented Language)

Son considerados as linguaxes máis antigas pero ainda se usan (sistemas legados). Caixeiros automáticos Tarxetas de crédito

Curiosidade: Terminator veCOBOL no seuvisor

Page 16: A ciencia da programación de ordenadores (tamén en galego)

Linguaxes de Programación máis Relevantes

1970: “Pascal” Alto nivel En honra ao matemático/físico Blaise Pascal, que

desenvolvera a Pascaline Ensino de programación estructurada. Creador: Niklaus Wirth Usado para programar Skype

Page 17: A ciencia da programación de ordenadores (tamén en galego)

Linguaxes de Programación máis Relevantes

1972 “C” Linguaxe moi utilizado, de propósito xeral. Moitas

outras linguaxes derivadas: C++, C#, Java, JavaScript, Perl, PHP e Python.

Creador: Dennis Ritchie Usado para servidores WWW

Page 18: A ciencia da programación de ordenadores (tamén en galego)

Linguaxes de Programación máis Relevantes

1983 “C++” “C Con Clases” ++ é o operador incremento Extensión de C orientada a obxectos Creador: Bjarne Stroustrup Usado para programar navegadores web

Page 19: A ciencia da programación de ordenadores (tamén en galego)

Linguaxes de Programación máis Relevantes

1980 “Ada” En honra a “Ada (Augusta Byron) Lovelace” 1843: fixo primeiro algoritmo para a máquina

analítica deseñada por Charle Babbage. Ada desenvolveuse como un encargo do DoD US

http://www.lavozdegalicia.es/noticia/sociedad/2012/12/10/ada-lovelace-implicacion-maquina-analitica-babbage/00031355146716765243152.htmhttp://www.computerhistory.org/babbage/

Page 20: A ciencia da programación de ordenadores (tamén en galego)

Linguaxes de Programación máis Relevantes

1991 “Python” Por honra aos comediantes “Monty Python” Creado para permitir distintos estilos de

programación e ser divertido. Creador: Guido Van Rossum Usado para programar

Google Yahoo! Spotify

Page 21: A ciencia da programación de ordenadores (tamén en galego)

Linguaxes de Programación máis Relevantes

1993 “Ruby” Por ser a pedra de nacemento dun dos

colaboradores do creador Deseñado para ser moi productivo e ao mesmo

tempo divertido. Creador: Yukihiro Matsumoto Usado para programar

Twitter Groupon

Page 22: A ciencia da programación de ordenadores (tamén en galego)

Linguaxes de Programación máis Relevantes

1995 “Java” Pola cantidade de café que tomaron os seus

creadores mentres traballaban nel Deseñado para ser utilizado en aparellos de

electrónica de consumo. Creador: James Gosling Usado para programar

Android apps

Page 23: A ciencia da programación de ordenadores (tamén en galego)

“Hola Mundo” na historia das linguaxes de programación

COBOL

Pascal

C

Phyton Ruby

Page 24: A ciencia da programación de ordenadores (tamén en galego)

Índice TIOBE

Un indicador da popularidade das linguaxes de programación, baseado en uso por parte de programadores, cursos e empresas

Page 25: A ciencia da programación de ordenadores (tamén en galego)

Cales son as características dun bo programa?

Que funcione!

Page 26: A ciencia da programación de ordenadores (tamén en galego)

Grandes desastres software 1962: Cohete Mariner 1 (18,5 M. $). Fallo no sistema de guía

por un “-” 1983: (Casi) III Guerra Mundial. O sistema de aviso da Unión

Soviética detectou un lanzamento falso. 1985: Therac-25. Mortes por máquina médica radiación en

Canadá. 1990: AT&T comunicacións de teléfono. 60.000 usuarios sen

servizo. Erro na especificación de protocolos. 1994: Procesadores Pentium, cometen erros matemáticos. 1996: Ariane-5. Estoupa no aire. Problema: conversión 64 bits a

16 bits. 1998: Mars Climate Orbiter da NASA. (327,6 M. $). O aparello

estaba orientado nun ángulo incorrecto. Problema: utilización de diferentes unidades de medida (libras-forza por segundos vs. Newtons por segundo).

2000: Erro do milenio. Asumiuse que o software só funcionaría para os anos que comenzasen con 19. Polo tanto, o 1 de xaneiro de 2000 sería o 1 de xaneiro de 1900.

Page 27: A ciencia da programación de ordenadores (tamén en galego)

Cales son as características dun bo programa?

Que funcione ben para o usuario!

Page 28: A ciencia da programación de ordenadores (tamén en galego)

Cales son as características dun bo programa?

Que se entenda! Facilite a comunidación entre as persoas

Malos ExemplosCódigo ofuscado Código espagueti (goto)#include <time.h>#define ch(x) "/|\\"[sgn(x)+1]#define sgn(x) (x>0?1:x?-1:0)main(){long a=0,b=0,c=0,d=0,i=0,j=0;char s[21][40];memset(s,' ',0x348);while(j++<0x15)s[j][-1]='\0';srand(time(NULL));while(++i<<15){switch(rand()%7){ case 0:c&&(c-=sgn(c)*(rand()%(2*c))); case 1:c--,c^=-~-~-~-~-~-~-~-8;break; case 2:d=18-~!c,c=-sgn(a)+d>>3;break; case 3:c=a=(c>0?1:-1)*(d=b=18);break; case 4:c=a=sgn(a)*(d=b*=7.0/9);break; case 5:sgn(c)*c>2&&(c-=3*sgn(c),d--);}s[d][19+c]=ch(c);}while(i&21^21)puts(s[31&i++]);}

Page 29: A ciencia da programación de ordenadores (tamén en galego)

O Software aberto

Comunidades abertas e libres. Dereitos do Software libre (Richard Stallman)

do GNU Project: Para executar o software como queiras. Para estudar o software e cambialo

(acceso ao código fonte) Para redistribuir copias. Para distribuir copias das modificacións.

http://gl.wikipedia.org/wiki/Richard_Stallman

Page 30: A ciencia da programación de ordenadores (tamén en galego)

Sitios importantes

Stack overflow. É un sitio web no con preguntas e respostas

sobre cuestións relacionadas coa programación de ordenadores.

É a mensaxe de erro máis típica e menos explicativa en C

Page 31: A ciencia da programación de ordenadores (tamén en galego)

Sitios importantes

Git hub. É un sitio no que se poden gardar proxectos software e manter un control de versións.

Filosofía aberta

Page 32: A ciencia da programación de ordenadores (tamén en galego)

Queres programar?

2007: “Scratch” Plantexado para que programen os nenos Creador: Mitchel Resnick (MIT Media Lab) Dispoñible en Galego

Page 33: A ciencia da programación de ordenadores (tamén en galego)

Aprender xogando

Page 34: A ciencia da programación de ordenadores (tamén en galego)

Outros

http://193.146.210.92:3001/gl/boards/1157

Page 35: A ciencia da programación de ordenadores (tamén en galego)

Programar e máis en Galego Concurso de Scratch

http://aprendoprogramando.cpetig.org/ Código Octupus

http://www.tecnoloxia.org/codigooctopus/

A traducir ao galego http://www.trasno.net/ “Programación para Rapaces” en Edu-AREA (Beta)

http://193.146.210.92:3001/gl/boards/1157