Introducción á programación para o Día da Ciencia en Galego promovido pola Coordinanadora de Equipos de Normalización e Dinamización Lingüistica (grazas a Valentina Formoso e a Román Landín)
4. Que hai nun ordenador?
Hardware (cousas que se poden tocar)
Dispositivos electrónicos
Circuitos impresos
Cables
5. 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.
6. 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.
7. 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
8. 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 separados
Definiu o bit “Binary digit”
http://gl.wikipedia.org/wiki/John_von_Neumann
14. 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
15. 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 ve
COBOL no seu
visor
16. 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
17. 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
18. 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
19. 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.http://www.computerhistory.org/babbage/ htm
20. 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
21. 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
22. 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
23. “Hola Mundo” na historia das
linguaxes de programación
COBOL
Pascal
C
Phyton Ruby
24. Índice TIOBE
Un indicador da popularidade das linguaxes
de programación, baseado en uso por parte
de programadores, cursos e empresas
25. Cales son as características
dun bo programa?
Que funcione!
26. 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.
27. Cales son as características
dun bo programa?
Que funcione ben para o usuario!
28. Cales son as características
dun bo programa?
Que se entenda!
Facilite a comunidación entre as persoas
Malos Exemplos
Có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++]);}
29. 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
30. 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
31. Sitios importantes
Git hub. É un sitio no que se poden gardar
proxectos software e manter un control de
versións.
Filosofía aberta
32. Queres programar?
2007: “Scratch”
Plantexado para que programen os nenos
Creador: Mitchel Resnick (MIT Media Lab)
Dispoñible en Galego
35. 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
Notas del editor
Darlle as grazas a Valentina Fornoso pola invitación e a Román.
Presentarme.
Esta charla vai sobre a ciencia dos ordenadores, en particular sobre a programación, que é un tema moi técnico, pero que tamén está moi relacionada coas linguas, xa que cando programamos o que tentamos e expresar o que queremos que un ordenador faga nunha linguaxe que poida entender.
Internamente o ordenador fala nunha linguaxe propia e nos falamos na nosa linguaxe propia tamén, o galego. A linguaxe de programación é unha linguaxe intermedia entre nos e o ordenador.
Os programas de ordenadores son textos con instruccións que lle pasamos ao ordenador para que as faga. Hai centos de linguaxes de progrmación, pero todos eles consiste de instruccións claras e non ambigüas dirixidas a dispositivos que non entenden o significado do que se lles di.
Un ordenador é unha máquina programable. As dúas carácterísticas principais dun ordenador son:
Responde a un conxunto de instruccións específicas dunha maneira determinada
Executa programas, conxuntos de instruccións.
Os ordenadores aos que nos soemos referir son os sistemas anteriores, nos que vemos un teclado e unha pantalla na que se amosa información, máis hai ordenadores en moitos outros dispositivos, cada vez en máis, que nos arrodean na nosa vida cotiá.
Para que funcionen estes dispositivos teñen que ter programas e esta charla vai dirixida a explicar que son eses programas e como se poden desenvolver.
Pero, qué é realmente un ordenador? Por que se caracterizan estos sistemas? E que fan? E como se consigue que o fagan?
Hai outros tipos de ordenadores, mecánicos ou electro-mecánicos, ou cuánticos.
Nun DVD a información gardase como posibles reflexos. Se se reflexa a luz un 1 e se non un 0.
A idea tomouna dos revisores dos trens, que facían buracos nos billetes para identificar ás persoas.
Dende a invención da programación ata mediados dos 80, moitos dos programas facíanse a través de tarxetas perforadas.
O Premio máis relevante no mundo da informática é o premio Alan Turing.
Os ordenadores actuais seguen o modelo de von Neumann.
Un programa de ordenador é un conxunto de isntruccións paso a paso que lle indican ao ordenador como facer unha tarefa.
A imaxe ten licenza CC-BY-NC-ND 3.0 e é de csumplugged.org
Un programa de ordenador é un conxunto de isntruccións paso a paso que lle indican ao ordenador como facer unha tarefa.
A imaxe ten licenza CC-BY-NC-ND 3.0 e é de csumplugged.org
Escribindo ceros e uns non.
Matrix, ceros e uns
A nivel de linguaxe máquina, representacións de cifras decimais e enteiras
A nivel de linguaxe ensambladora, CISC vs. RISC
http://www.science.uva.nl/research/amstel/dws/masters/index.php?page_id=1264
Falar dos paradigmas de programación.
Se todos estes son ordenadores … que é realmente un ordenador.
Fonte: http://www.epocalc.net/pages/mes_timeline/the-history-of-programming-languages.html
Linguaxes de alto nivel creados para a programación científica, matemática e empresarial
1642. Calculadora mecánica que suma e resta. Sobreviven 8.
Basado nunha linguaxe anterior chamada “B”
Adobe
Google Chrome
Mozilla Firefox
Microsoft Internet Explorer
Traballou na máquina calculadora mecánica de Charles Babbage, chamada máquina analítica. Primeira proposta de ordenador de propósito xeral. Diseñouno, pero no puido construir.
En Londres no 2002, 153 anos despois de tela deseñada, construirona en Londres, pesa 5 toneladas. No 2008 fixeron outra en california.
Fixo o primeiro algoritmo destinado a ser procesado por unha máquina. En linguaxe similar a ensamblador (Turing completo con bucles e condicionais)
Non se puido construir por que se temía que fora utilizada para fins bélicos.
A máquina debía funcionar con un motor a vapor e tería 30 metros de longo por 10 de ancho. Entrada de datos con tarxetas perforadas.
Os tutoriais, exemplos de código e as instruccións soen conter referencias aos Monty Python.
Os tutoriais, exemplos de código e as instruccións soen conter referencias aos Monty Python.
1642. Calculadora mecánica que suma e resta. Sobreviven 8.
Eu son profesor de programació
http://www.devtopics.com/20-famous-software-disasters/
http://www.computerworld.com/article/2515483/enterprise-applications/epic-failures--11-infamous-software-bugs.html
1. Fallo nunha fórmula, no que se escenceron de poñer un guión ou signo menos.
Eu son profesor de programació
O Código tamén se le, como a literatura.
Por iso quizáis a maioría das linguaxes de programación son en inglés.
Se non sabes algo de programación e o buscas nun navegador (Google) probablemente che devolva páxinas deste sistema.
Se non sabes algo de programación e o buscas nun navegador (Google) probablemente che devolva páxinas deste sistema.
Os tutoriais, exemplos de código e as instruccións soen conter referencias aos Monty Python.
Os tutoriais, exemplos de código e as instruccións soen conter referencias aos Monty Python.
Os tutoriais, exemplos de código e as instruccións soen conter referencias aos Monty Python.
A habilidade para programar non so trata sobre o desenvolvemento de programas de ordenador, senón que tamen ensina a pensar e a resolver problemas. A programación pode ser ademais unha actividade moi creativa na que desnevolver contidos multimedia, música e outros elementos para darlle renda solta á imaxinación.
Hai moitas disciplinas e competencias que se poden traballar a través da programación, entre outras:
Matemáticas: lóxica, xeometría, álxebra, estatística, etc.
Música
Física
Robótica
Comunicación: programación en parella, comunicación, etc.