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

Post on 20-Aug-2015

3.589 views 1 download

Transcript of 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

Que é un ordenador?

Donde hai ordenadores?

Que hai nun ordenador?

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

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.

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.

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

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

Que fai un ordenador?

Que fai un ordenador?

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

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

Como se programa?

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)

Linguaxes de alto nivel

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

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

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

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

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

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/

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

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

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

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

COBOL

Pascal

C

Phyton Ruby

Índice TIOBE

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

Cales son as características dun bo programa?

Que funcione!

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.

Cales son as características dun bo programa?

Que funcione ben para o usuario!

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++]);}

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

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

Sitios importantes

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

Filosofía aberta

Queres programar?

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

Aprender xogando

Outros

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

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