a ciencia da programación de ordenadores (tamén en galego)
TRANSCRIPT
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