20260914 IntrProgr - Contenido educativo
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
Vale, pues a ver, dentro de esas ideas muy generales que están aquí recogidas, si lo descargamos para tenerlo como guía, bueno, pues entonces, ¿qué es un ordenador?
00:00:00
Esto no lo quiero. Esto sí. Vale. Ya sabemos que un ordenador tiene una arquitectura, los que habéis hecho grado medio lo sabéis mejor que los demás, los que no lo sabéis da un poco igual.
00:00:19
Podemos hacer un resumen, que veréis más detallado en sistemas, de que un ordenador tiene una arquitectura de una CPU que está recibiendo continuamente instrucciones que están alojadas en su memoria RAM.
00:00:32
esas instrucciones que va recibiendo
00:00:47
las va ejecutando
00:00:50
esas instrucciones son
00:00:51
desde
00:00:54
lo que hace el sistema operativo
00:00:54
pues cuando tú le das doble clic a un icono
00:00:58
recibe la CPU
00:01:00
las instrucciones de
00:01:02
abre el icono
00:01:04
muestra lo que hay dentro
00:01:06
eso es un ordenador
00:01:07
una CPU que tiene una secuencia enorme
00:01:09
de sentencias en su memoria RAM
00:01:12
que se van entregando
00:01:15
de forma secuenciada
00:01:17
y la CPU
00:01:19
las va ejecutando
00:01:21
y esas sentencias son de todo tipo
00:01:22
lo que el sistema operativo le va mandando
00:01:25
que haga
00:01:27
que tú ejecutas un programa que has hecho tú
00:01:27
pues en particular ese programa
00:01:31
todo, una secuencia de cosas
00:01:33
todo el rato
00:01:34
desde el momento en que se arranca
00:01:35
claro, cuando el ordenador
00:01:39
se arranca
00:01:40
en el momento de arrancarse en la RAM
00:01:42
ya
00:01:45
creo que más o menos todos sabemos
00:01:46
pero bueno, sistemas informáticos
00:01:49
estudias con detalles
00:01:51
en la RAM no hay nada, la RAM es la memoria que está vacía
00:01:52
en la RAM no hay nada
00:01:55
solo hay cosas cuando el ordenador ya ha arrancado
00:01:56
entonces
00:01:59
una pequeña
00:02:01
memoria que no se borra nunca
00:02:03
una pequeña memoria que no se borra nunca
00:02:05
que es la memoria BIOS
00:02:07
pues coge
00:02:08
la
00:02:10
desencadena todo el proceso
00:02:11
para que se cargue en RAM
00:02:14
lo primero que hay que ejecutar
00:02:17
se cargan esas primeras sentencias
00:02:20
eso ya se empieza a ejecutar
00:02:22
a partir de ahí se van dando órdenes
00:02:24
para que se vayan cargando las siguientes, etc.
00:02:25
y eso es lo que hace un ordenador
00:02:28
de principio a fin, desde que le damos a load
00:02:29
hasta que le damos a load
00:02:31
ir cogiendo sentencias que están en la RAM
00:02:33
irlas ejecutando
00:02:35
e irnos mostrando los resultados
00:02:37
¿vale?
00:02:38
bueno, la suerte que tenemos es que lo hace muy rápido
00:02:41
entonces nosotros aprovechamos de eso
00:02:44
que tenemos que resolver una tarea
00:02:46
por ejemplo
00:02:48
pues tengo que dar el ok
00:02:49
a 28.000
00:02:52
facturas
00:02:54
pues hombre, un humano dar el ok
00:02:55
a 28.000 facturas
00:02:58
pues tendría que ir factura por factura
00:02:59
sería muy lento
00:03:02
nos aprovechamos de que el ordenador lo hace muy rápido
00:03:03
esas facturas
00:03:06
las digitalizamos
00:03:08
y hacemos un programa
00:03:11
que es capaz
00:03:13
de leer los datos que constituyen las facturas, leer los datos, ir poniendo el ok y generando el resultado, etc.
00:03:13
Entonces nos aprovechamos de que la CPU hace lo que nosotros sabemos hacer muy rápido.
00:03:22
¿Qué ocurre? Que a la CPU hay que decirle cómo hacerlo y con qué hacerlo, pues con qué datos.
00:03:29
Entonces, es fundamental dos cosas.
00:03:38
¿Con qué datos tienes que trabajar?
00:03:40
¿Y qué tienes que hacer?
00:03:43
¿Cómo lo tienes que hacer?
00:03:45
Pues eso es un programa.
00:03:46
Eso es lo que nosotros hacemos.
00:03:48
Un conjunto ordenado de instrucciones que el ordenador ya es capaz de ejecutar.
00:03:51
Nosotros nos plantean un problema.
00:03:56
Vale, pues voy a decidir diseñar cómo elaboro un conjunto de instrucciones para conseguir este objetivo.
00:03:59
Cuando ya lo tenga perfectamente elaborado, diseñado, etc., ya mi ordenador lo ejecutará y lo hará en un microsegundo.
00:04:07
Si yo lo hubiera tenido que hacer a mano, habría tardado muchísimo más.
00:04:15
Pero eso sí, a él hay que decirle cómo hacerlo paso a paso, cómo hacerlo paso a paso.
00:04:19
Pues eso es un programa, el conjunto ordenado de instrucciones.
00:04:24
Y eso es lo que nosotros hacemos, elaborar ese conjunto ordenado de instrucciones.
00:04:27
entonces hay conceptos que aunque nosotros no nos metemos en ellos
00:04:32
porque no nos importan especialmente
00:04:38
tenemos que saber por cultura informática
00:04:40
por cultura como desarrolladores hay conceptos que tenemos que saber
00:04:43
esos conceptos son un poquito de los que voy dando pinceladas
00:04:47
a lo largo del documento
00:04:51
entonces una vez que está claro
00:04:53
que un programa es un conjunto de instrucciones
00:04:55
que mi ordenador ejecuta
00:04:59
Ahora ya surgen un montón de preguntas
00:05:01
Y es
00:05:04
¿Y cómo escribo yo esas instrucciones?
00:05:05
Porque
00:05:09
¿Qué le digo yo al ordenador?
00:05:09
Oye, pon un ok en la factura
00:05:11
Y no me va a entender, lógicamente
00:05:12
¿Por qué no me va a entender?
00:05:14
Porque nosotros
00:05:18
Todos sabemos perfectamente
00:05:19
Que la CPU que está aquí
00:05:21
Este bicho de aquí
00:05:23
Solo es capaz de entender
00:05:24
Lo que le pasemos al lenguaje binario
00:05:27
solo es capaz de entender esto, nada más
00:05:30
entonces
00:05:32
le tenemos que dar la secuencia
00:05:34
de instrucciones a la CPU
00:05:36
en binario, en ceros y unos
00:05:38
que es lo único
00:05:40
que es capaz de ser
00:05:42
almacenado en la memoria
00:05:44
en la RAM, en la RAM solamente
00:05:46
en ceros y unos, ya está
00:05:48
jolín, pues madre mía
00:05:49
escribir un programa en ceros y unos
00:05:52
que es el lenguaje
00:05:55
y puede entender la CPU
00:05:56
menuda tarea interminable
00:05:57
un rollo, ¿quién es capaz de hacer eso?
00:05:59
pues antiguamente se hacía
00:06:04
antiguamente se hacía
00:06:05
hace 60, 70 años
00:06:07
a lo mejor no directamente en ceros y unos
00:06:09
lógicamente
00:06:12
sino en un lenguaje
00:06:13
que se llamaba ensamblador
00:06:15
que era una cosa
00:06:17
como muy esotérica
00:06:23
que ahora mostramos una imagen para que lo veáis
00:06:24
que eran unas palabras súper raras
00:06:27
unos símbolos muy extraños
00:06:30
que directamente
00:06:31
era muy fácil de traducir
00:06:33
a ceros y unos
00:06:35
o sea, programar, escribir las sentencias
00:06:36
en ensamblador
00:06:39
y escribirlas en ceros y unos era casi casi igual
00:06:40
hombre, en ensamblador
00:06:43
era un poquito más fácil
00:06:45
porque al menos eran términos más humanos
00:06:46
ahora veremos un programa en ensamblador
00:06:49
entonces luego había ya
00:06:51
unos pequeños
00:06:53
programas, dispositivos
00:06:55
que eran capaces ya de
00:06:57
traducir esto
00:06:59
que estaba en ese lenguaje extraño
00:07:01
traducirlo ya a ceros y unos
00:07:03
y cargarlo en la RAM
00:07:05
¿vale?
00:07:06
pues el lenguaje ensamblador es ese
00:07:08
un lenguaje que está
00:07:10
se dice que está muy pegado a la máquina
00:07:11
porque le da las instrucciones
00:07:14
completamente al detalle
00:07:16
como la máquina las necesita
00:07:18
que es todas detalladas
00:07:19
absolutamente deglutidas en ceros y uno
00:07:21
por ejemplo
00:07:23
muéveme, tú tenías que sumar
00:07:25
dos números
00:07:27
Pues para dar las instrucciones a la CPU hay que dárselas
00:07:28
Coge el primer número y llévalo al registro en el que tú tienes un operador
00:07:33
Ahora, coge el segundo número y muévelo al otro registro que tienes ahí habilitado para el otro operador
00:07:39
Ahora, por favor desencadena en tu unidad aritmético-lógica que tienes ahí dentro
00:07:47
Que la CPU tiene dentro una unidad aritmético-lógica para hacer operaciones
00:07:53
desencadena la acción
00:07:58
de sumar en binario
00:08:00
combinando ceros y unos con puertas lógicas
00:08:02
y guárdame
00:08:05
y lo que se te quede
00:08:07
déjalo aquí en uno de los operadores
00:08:08
con esa combinación de puertas lógicas
00:08:10
ahora este resultado
00:08:12
muévelo por favor al bus
00:08:15
para que salga
00:08:17
por pantalla
00:08:18
todo eso es lo que necesita la CPU
00:08:20
todo ese detalle
00:08:23
así, ese nivel de detalle necesita
00:08:24
la CPU solo entiende ese nivel de detalle
00:08:26
para cualquier cosa, imaginaos la cantidad
00:08:30
de cosas que le he dicho
00:08:31
para sumar dos números
00:08:32
primero que mueve hasta aquí, luego que mueva este aquí
00:08:35
luego que haga esa secuencia de operaciones
00:08:37
con puertas lógicas para que los ceros y unos
00:08:40
funcionen como una suma
00:08:42
luego que lo lleve al bus
00:08:43
todo eso para sumar dos números
00:08:45
pues sí, eso es lo que hay que decir
00:08:48
de la CPU, es que no hay rutía
00:08:49
entonces esas sentencias que se le dicen
00:08:51
en secuencia de ceros y unos
00:08:53
era más fácil programarlas en este lenguaje
00:08:55
que aún así, repito, era muy
00:08:58
farragoso, muy engorroso, había que decirle todo eso
00:09:01
en un lenguaje un poquito más natural
00:09:04
sí, pero aún así muy farragoso
00:09:07
esto ya se traducía a ceros y unos
00:09:09
por unos sobreensambladores que se llamaban y esto ya se ejecutaba
00:09:12
¿vale? entonces para que nos hagamos una idea
00:09:15
si
00:09:19
buscamos
00:09:19
vale, si buscamos por ejemplo
00:09:24
aquí
00:09:36
ejemplo
00:09:37
ensamblador
00:09:42
solo para que os hagáis una idea
00:09:44
no tengo aquí una imagen
00:09:46
chula
00:10:08
del lenguaje ensamblador
00:10:09
yo quiero ver esta imagen
00:10:11
se me ha colado aquí
00:10:23
por ejemplo, esto es un programa
00:10:32
en código ensamblador
00:10:49
veis estas sentencias tan raras
00:10:51
esto
00:10:55
hacía cualquier chorrada
00:10:57
cualquier tontería
00:10:59
a lo mejor una operación sencilla
00:11:00
mete este dato aquí
00:11:01
estos son registros de la CPU
00:11:04
que directamente había que poner en el ensamblador
00:11:06
ahora mueve este registro a este otro registro
00:11:08
ahora no sé qué
00:11:10
ahora quítale a este registro lo que tiene este
00:11:12
todo esto para hacer una chorrada
00:11:14
esto luego se traducía a ceros y unos
00:11:15
de forma inmediata, aquí en esta anexa decimal
00:11:18
pero esa decimal y los 0 y 1 son lo mismo
00:11:21
se traducía, y esto ya la CPU
00:11:23
lo entendía
00:11:25
programar el ensamblador
00:11:26
la desventaja que tenía
00:11:29
era que cada CPU
00:11:31
tiene
00:11:33
su propio conjunto de secuencias
00:11:35
propias, entonces el lenguaje
00:11:37
el programa que funcionaba
00:11:39
para una CPU
00:11:41
no te funcionaba para otra, porque cada CPU
00:11:42
cada marca
00:11:45
o sea, cada marca, me refiero, cada modelo.
00:11:46
Cada modelo de CPU tiene su propio conjunto
00:11:50
de instrucciones en 0.1, cada modelo de CPU.
00:11:53
Entonces, tú hacías un programa en ensamblador
00:11:57
para un modelo de CPU, una Intel no sé cuántos,
00:11:59
y solo te funcionaba para la CPU Intel no sé cuántos.
00:12:03
Si querías hacer eso mismo, pero ejecutar un ordenador
00:12:06
que tenía un microprocesador AMD no sé qué,
00:12:09
tenías que hacer el programa para la CPU AMD no sé qué.
00:12:13
O sea, cada modelo de CPU tenía su propio conjunto de sentencias.
00:12:16
Bueno, así salían programas estupendos y maravillosos,
00:12:23
absolutamente optimizados a la CPU, rapidísimos y magníficos.
00:12:27
¿Qué ocurre?
00:12:32
Que programar así ya ha perdido el sentido completamente.
00:12:33
Esto tenía su sentido cuando la envergadura de los programas era limitada.
00:12:37
Tú no tenías miles de millones de datos.
00:12:41
No tenías interfaces gráficas súper complicadas.
00:12:43
a lo mejor todo era por consola
00:12:46
entonces se podía o no permitir programar así
00:12:47
¿vale? ahora ya no
00:12:49
si tuviéramos que hacer cualquiera de los programas
00:12:51
que hacemos ahora con sus interfaces gráficas
00:12:53
sus conexiones a servidores de bases de datos
00:12:55
sus cargas de 200.000 millones de usuarios
00:12:58
si tuviéramos que hacer así
00:13:01
obviamente nos volveríamos locos
00:13:02
¿vale? pues entonces
00:13:04
¿qué es lo que ha surgido?
00:13:05
¿qué es lo que surgió?
00:13:07
¿vale? pues surgieron los lenguajes
00:13:11
de alto nivel
00:13:14
¿vale?
00:13:15
¿Qué es un lenguaje de alto nivel? Es un lenguaje de programación en el que tú ya te abstraes y ya escribes en un lenguaje muy natural.
00:13:17
Entonces, el ejemplo que he dicho antes de voy a hacer un programa al que yo le dé dos números y me lo suma,
00:13:26
que en ensamblador era muchas instrucciones, en un lenguaje de alto nivel el programa a lo mejor es simplemente, pues ya está, esto,
00:13:31
¡hala!, ya está, una única sentencia de código para hacer ese programa.
00:13:45
Esto en lenguaje de alto nivel
00:13:49
En ensamblador, una ristra de cosas
00:13:52
¿Lenguajes de alto nivel?
00:13:55
Pues todos los que conocéis
00:13:58
C, Python, Java, todos
00:14:00
¿Qué ocurre?
00:14:02
Que la CPU
00:14:04
Esto no lo entiende
00:14:05
Ya hemos quedado con que la CPU entiende
00:14:07
El minario
00:14:10
Que es prácticamente idéntico al ensamblador
00:14:11
La CPU esto no lo entiende
00:14:14
No pasa nada
00:14:16
Ya, afortunadamente, tenemos un proceso automático que permite convertir un programa hecho en un lenguaje de alto nivel en código binario.
00:14:18
Afortunadamente, eso existe y nosotros como desarrolladores nos podemos olvidar de esa parte.
00:14:32
Escribimos en nuestro lenguaje de alto nivel, que es mucho más sencillo de expresar lo que queremos hacer,
00:14:37
y ya lanzamos el proceso para que esto se traduzca a los ceros y unos
00:14:43
y el ordenador lo ejecute, el ordenador ya encantado con sus ceros y unos
00:14:49
lanzamos el proceso, ¿y ese proceso cuál es?
00:14:53
pues de nuevo son términos que nos tienen que ir sonando a los que no nos suenen
00:14:57
nuestra cultura informática es fundamental
00:15:00
vosotros, cualquier empresa, con cualquiera que habléis
00:15:05
cualquier compañero, vais a una
00:15:11
habéis solicitado una beca
00:15:13
habéis hecho una entrevista de trabajo, lo que sea
00:15:15
tenéis que poco a poco
00:15:16
ir ya adquiriendo
00:15:18
unos conocimientos que os permitan
00:15:21
hablar con unos términos que se vea que se sabe
00:15:23
que se sabe donde estáis
00:15:25
que conocéis el contexto, etc.
00:15:27
Bueno, pues entonces, ¿cuál es el proceso
00:15:29
para traducir
00:15:31
este código
00:15:33
escrito en un lenguaje de alto
00:15:35
nivel que se llama código
00:15:37
fuente?
00:15:39
El código fuente es el código que yo he escrito en lenguaje de alto nivel ya, el facilito.
00:15:42
Pues, ¿cuál es el proceso para llevarlo a los ceros y unos?
00:15:48
Que los ceros y unos son el ejecutable.
00:15:51
Los ceros y unos son el ejecutable.
00:15:54
Bueno, pues el proceso, hay pequeñas variantes, muy, muy por encima estamos dando las ideas, muy por encima.
00:15:57
Vale, primero, lógicamente, escribimos el código fuente utilizando el lenguaje de programación que hayamos elegido.
00:16:04
Por supuesto, escribimos el código fuente cuando ya hemos pasado lo importante y lo que lleva tiempo,
00:16:11
que es pensar el programa, diseñar cómo los pasos, cómo lo voy a hacer, voy a usar esto, estas variables para tiempo.
00:16:18
Una vez que lo tengo ya todo pensado, ya me voy a lo que es fácil, que es a tirar el código.
00:16:24
Bueno, pues escribimos el código fuente, utilizando el lenguaje de programación seleccionado.
00:16:29
¿Vale? Entonces, ese código, ahora, ¿cómo se transforma en el código ejecutable? También se puede llamar código máquina, ¿vale? Código ejecutable, código máquina serían sinónimos. Ejecutable o código máquina. ¿Cómo se transforma? Pues se puede hacer de diferentes formas.
00:16:34
compilación
00:16:55
existe un programa
00:16:58
compilador, un software compilador
00:17:01
que afortunadamente
00:17:03
no tenemos que hacer nosotros
00:17:04
nosotros disponemos ya del compilador
00:17:06
cualquiera que programa
00:17:09
cualquier lenguaje de programación tiene ya el compilador
00:17:11
no tiene que preocuparse por eso
00:17:13
y ese compilador que hace
00:17:14
recibe el código fuente que nosotros
00:17:16
hemos hecho, recibe ese código fuente
00:17:19
y saca el código ejecutable
00:17:21
y ya está, y una vez que lo ha sacado
00:17:23
pim pim, tú ya lo ejecutas
00:17:25
¿vale?
00:17:27
entonces, diseñamos la solución
00:17:29
la escribimos en código fuente
00:17:31
se la pasamos al compilador
00:17:33
el compilador
00:17:35
saca por arte de magia
00:17:37
un ejecutable que ya
00:17:39
se puede ejecutar
00:17:41
en función de
00:17:42
cómo se está bajando yo, con doble clic o como sea
00:17:43
pero que ya se puede ejecutar
00:17:47
y que la CPU lo entiende
00:17:49
esto es un proceso
00:17:50
pues bastante rápido
00:17:53
pero tiene ciertas desventajas
00:17:54
que vamos a ir entendiendo ahora o después
00:18:01
bueno, alternativas a la compilación
00:18:03
para este proceso de traducir
00:18:06
el código fuente en el código ejecutable
00:18:09
alternativas a la compilación
00:18:13
la interpretación
00:18:14
en lugar de un software compilador
00:18:16
tenemos un software intérprete
00:18:20
que se llama. ¿Y ese intérprete qué va haciendo? En lugar de coger todo el código
00:18:24
fuente de golpe y convertirlo en un código ejecutable y ya está, ese código ejecutable
00:18:29
se queda ya de por vida ahí, listo para que uno lo ejecute. Pues en lugar de hacer eso,
00:18:35
ese software intérprete se lanza y está ahí en el ordenador, cogiendo línea por
00:18:41
línea el código fuente, la va cogiendo línea por línea y tal cual la coge, la ejecuta,
00:18:46
La coge y la ejecuta, la coge y la ejecuta, la coge y la ejecuta, la coge y la transforma al código binario, cuando digo la ejecuta, la transforma en binario para poder ejecutar, o sea, va, coge, código binario, ejecución, coge la siguiente, código binario, ejecución, ¿vale?
00:18:51
entonces
00:19:08
ventajas, inconvenientes
00:19:11
esto es mucho más rápido de ejecutar
00:19:13
una vez que tú has compilado el programa
00:19:18
una vez que lo has compilado
00:19:20
ese código máquina
00:19:21
ya se ejecuta a toda velocidad
00:19:23
ya está compilado, ya son todos 0 y 1
00:19:25
es mucho más rápido, la ejecución de los programas
00:19:27
que han sido compilados es mucho más rápido
00:19:30
es mucho más rápido
00:19:32
la ejecución de los programas compilados
00:19:33
sin embargo aquí, cada vez que quieres ejecutar
00:19:35
uno de estos, tienes que lanzar
00:19:38
el intérprete, el intérprete
00:19:40
va transformando línea por línea
00:19:42
ejecutando, transformando, ejecutando
00:19:44
luego es mucho más lenta
00:19:46
la ejecución, así
00:19:48
porque hay que interpretarlo
00:19:50
cada vez, cada vez que lo quieres
00:19:52
ejecutar lo interpretas, o sea, no se genera
00:19:54
un ejecutable que te vale ya para siempre
00:19:56
no se genera un ejecutable que te vale para siempre
00:19:57
entonces diríais
00:19:59
pues ¿para qué
00:20:02
existe ese método?
00:20:04
es mucho mejor la compilación
00:20:05
Yo lo compilo, tengo ya mi ejecutable ahí, cada vez que lo quiera ejecutar a toda velocidad ya.
00:20:07
No tengo que hacer nada más.
00:20:13
¿Para qué existe esto?
00:20:15
Pues existe para poder adaptarse a que hay diferentes modelos de máquinas
00:20:19
y que nosotros querríamos que un programa que acabamos de hacer se pudiera ejecutar en cualquier máquina.
00:20:26
y que ocurre cuando el compilador
00:20:32
yo le doy un código fuente
00:20:36
y lo compila en el ejecutable
00:20:37
pues que ese ejecutable es válido
00:20:39
solo para el modelo
00:20:41
de CPU para que ese compilador
00:20:43
lo compiló, solo es válido
00:20:45
para ese modelo, entonces para ese modelo de CPU
00:20:47
va estupendo, rapidísimo
00:20:49
magnífico, pero si yo ese
00:20:51
programa que ya he compilado y he generado el binario
00:20:53
lo quiero llevar a otro
00:20:55
modelo de CPU, pues seguramente
00:20:57
no me funciona, y tengo que compilarlo
00:20:59
de nuevo en esa CPU
00:21:01
entonces cuando yo distribuyo un software por ahí
00:21:02
por la vida, por el mundo
00:21:05
si yo distribuyo un ejecutable
00:21:06
pues solamente
00:21:09
van a poder ejecutar mi programa
00:21:11
los que tengan el mismo modelo
00:21:13
de CPU para el que yo ejecute
00:21:15
mi compilación
00:21:17
¿me estoy explicando?
00:21:18
entonces eso es poco operativo
00:21:21
sobre todo ahora que distribuimos software
00:21:23
en el contexto de internet
00:21:25
yo no quiero poner esa limitación
00:21:27
de que solamente vale para el modelo
00:21:29
de Intel no sé cuándo, quiero ponerla
00:21:31
pues para eso está la interpretación
00:21:32
porque
00:21:35
cuando tú haces un software
00:21:36
que es
00:21:39
interpretado
00:21:40
tú entregas tu código fuente
00:21:42
y
00:21:44
aquel al que se lo has distribuido
00:21:46
tiene su intérprete
00:21:49
cuando quiere ejecutar tu programa
00:21:50
lanza su intérprete
00:21:53
y el intérprete
00:21:55
coge tu código y lo transforma
00:21:56
a tu propia máquina
00:21:59
coge tu línea de código
00:22:00
y lo transforma a tu propia máquina
00:22:03
entonces tú haces tu software
00:22:04
y te olvidas completamente
00:22:06
de en qué máquina se va a ejecutar
00:22:08
te va a funcionar para todas
00:22:10
siempre y cuando esa máquina tenga el intérprete
00:22:11
eso sí, está obligado a tenerlo
00:22:14
tú haces tu código, lo distribuyes
00:22:16
y ahí donde se quiera ejecutar
00:22:18
esa máquina tiene que tener
00:22:20
su intérprete
00:22:22
y lo va interpretando a tu propia máquina
00:22:23
a la que sea
00:22:26
Luego es mucho más universal
00:22:27
Pero claro, viejo, pues es universal
00:22:30
Pero realmente es que es un rollo, primero
00:22:34
¿Tienes que distribuir el código fuente siempre?
00:22:36
Por un lado no está mal
00:22:40
No está mal la idea de que el software
00:22:41
Pues sea lo más libre posible
00:22:42
Dentro de las licencias que lo regulen
00:22:44
Pero hombre
00:22:46
Tener que distribuir el código fuente siempre
00:22:48
Pues es medio raro
00:22:51
Aparte de que realmente es que es muy lento
00:22:53
interpretar línea por línea de un código fuente
00:22:56
cada vez, cada ejecución sería lentísima
00:22:58
vale, pues para no perder las ventajas
00:23:01
de poder ser ejecutado en cualquier máquina
00:23:05
pero ganar un poco de rapidez
00:23:07
es por lo que
00:23:09
salen los sistemas mixtos
00:23:11
vale
00:23:12
entre los cuales forma parte
00:23:14
Java
00:23:16
Python es un interpretado más puro
00:23:17
por eso tiene un menor uso comercial
00:23:20
tiene un más uso universitario
00:23:23
porque es como más fácil
00:23:24
para, tiene unas librerías
00:23:27
muy buenas a nivel científico
00:23:29
pero es más
00:23:31
puramente interpretado, entonces es un poquito más lento
00:23:36
y Java
00:23:39
si es un sistema mixto que combina las dos cosas
00:23:40
y diréis, ¿y cómo
00:23:43
mezclo las dos cosas?
00:23:44
vale, pues nosotros hacemos
00:23:47
nuestro código en Java, que es el lenguaje
00:23:48
al que vamos a trabajar nosotros, hacemos nuestro código
00:23:50
hacemos una
00:23:52
pequeña precompilación
00:23:55
eso no lo lleva
00:23:57
a código máquina de ningún
00:23:59
modelo de CPU, no
00:24:01
lo lleva a un código intermedio que ya no es
00:24:03
un código fuente que uno pueda ver
00:24:05
porque está en ceros y unos
00:24:07
lo lleva a un código intermedio
00:24:09
que es lo que se llaman los bytecodes estos de aquí
00:24:10
lo lleva a un código
00:24:13
intermedio que es los bytecodes
00:24:15
y ahora ya ese bytecode
00:24:16
que es un código intermedio precompilado
00:24:19
es el que distribuyes
00:24:21
Cuando uno distribuye software hecho en Java, distribuye esto. Y ahora, en cada máquina que uno quiera ejecutar ese software que te han distribuido, esa máquina tiene que tener el intérprete de Java. Por eso todos nuestros ordenadores tienen la Java Virtual Machine, la JVM, que es el intérprete de Java.
00:24:24
si tú no tienes un intérprete de Java en tu equipo
00:24:46
no podrás ejecutar nunca programas
00:24:50
que se han hecho en Java
00:24:52
vale, pues este intérprete
00:24:53
de Java es ya el que
00:24:56
es capaz de entrar
00:24:58
dentro de este bytecode
00:24:59
que es igual para todos
00:25:01
los equipos, igual
00:25:04
y ya lo va traduciendo a la máquina
00:25:05
en particular en la que tú lo estás ejecutando
00:25:08
entonces por eso Java
00:25:10
un software en Java es universal
00:25:12
tú lo haces y no necesitas
00:25:14
saber en qué máquina se va a ejecutar
00:25:15
te da igual, va a funcionar para todas
00:25:18
tú haces tu programa
00:25:20
haces esa primera
00:25:22
precompilación
00:25:24
donde obtienes esto
00:25:25
esa primera precompilación
00:25:27
y ahora ya distribuyes eso
00:25:29
que eso no es código fuente, tú lo ves y ahí no ves nada
00:25:31
no ves nada
00:25:34
y ahora ya en el ordenador
00:25:35
donde tú lo quieras ejecutar
00:25:38
lanzas la máquina virtual de Java
00:25:39
y esta máquina virtual de Java
00:25:42
va traduciendo esto, lo va interpretando
00:25:44
ahora ya sí, línea por línea
00:25:45
de algo que no se ve
00:25:48
o sea que no lo puedes entender leyéndolo
00:25:49
ahora ya sí que va traduciendo
00:25:52
línea por línea
00:25:53
para que se ejecute en la máquina
00:25:55
entonces al no ser interpretado puro
00:25:56
no es tan lento como los
00:25:59
interpretados puros
00:26:01
pero al no ser completamente compilado
00:26:02
es independiente de la plataforma
00:26:05
¿vale?
00:26:08
o sea un lenguaje independiente
00:26:09
de la plataforma significa
00:26:11
tú programas
00:26:13
y te da igual en qué equipo
00:26:15
o plataforma se ejecute
00:26:18
porque va a funcionar para todos
00:26:20
eso es un programa independiente de la plataforma
00:26:21
y así lo son los interpretados y los mixtos
00:26:23
los compilados no lo son
00:26:26
un programa que tú
00:26:28
lo has compilado completamente
00:26:30
solo va a funcionar en la máquina
00:26:31
en el modelo
00:26:33
en el modelo de máquina para el cual lo has compilado
00:26:35
¿vale?
00:26:37
luego entonces, hasta ahora
00:26:41
Tenemos ahora ya que tener utilizado en la cabeza. ¿Qué es un programa? Una lista de instrucciones para que la CPU realice una tarea. Esa lista de instrucciones la habremos diseñado, lógicamente, antes nosotros.
00:26:42
el lenguaje ensamblador
00:26:57
es un lenguaje muy próximo a la máquina
00:26:59
donde se detalla paso por paso
00:27:02
lo que es la CPU de Azure
00:27:04
como ese detalle paso por paso
00:27:05
es muy complejo
00:27:08
tenemos los lenguajes de alto nivel
00:27:09
los lenguajes de alto nivel
00:27:12
nos permiten programar
00:27:14
de forma más sencilla porque en una sola
00:27:16
sentencia la CPU va a hacer
00:27:18
ya mil cosas
00:27:20
en una sola sentencia la CPU ya hace mil
00:27:20
pero claro, ese código escrito
00:27:23
en lenguaje de alto nivel, que es el que se llama código fuente,
00:27:26
ese código fuente tiene que pasar a código ejecutable
00:27:30
o código mágico. ¿Cómo?
00:27:33
Pues con compilación, con un compilador, interpretación, con un intérprete
00:27:38
o combinando ambos. ¿Vale? Entonces todos los
00:27:42
términos y el contexto están claros, ¿no?
00:27:46
Bueno, entonces, lógicamente
00:27:49
nuestros programas, pues cuando hacemos
00:27:54
nuestros programas, hacemos una
00:27:56
primera versión, nos parece que
00:27:58
ostras, pues que guay, esto seguro que funciona
00:28:00
empezamos a lanzar
00:28:02
los programas y las cosas fallan
00:28:04
lo normal es que fallen
00:28:05
entonces tenemos que distinguir
00:28:07
dos tipos de errores
00:28:10
los de compilación
00:28:12
lo que llamamos
00:28:14
error de compilación
00:28:16
esto es lo más sencillo de detectar
00:28:18
un error de compilación es un error
00:28:22
Que se da cuando tú escribes
00:28:24
El código fuente mal
00:28:27
El código fuente tiene unas reglas
00:28:28
O sea, el lenguaje de alternativa tiene unas reglas
00:28:30
Tú no puedes poner lo que te dé la gana
00:28:32
Tiene unas reglas
00:28:33
Pues si quieres hacer el resto de una cosa entre otra
00:28:34
Tienes que poner el operador este
00:28:38
Tiene sus reglas
00:28:41
Que son las que tenemos que conocer
00:28:42
Entonces, si tú
00:28:44
Lo escribes mal
00:28:46
Quieres escribir
00:28:47
Cabo
00:28:50
haciendo la analogía al lenguaje natural
00:28:52
y escribes así porque no conoces
00:28:55
la ortografía
00:28:58
pues el corrector ortográfico de Word
00:28:59
te dice, eh, esta palabra
00:29:01
no la conozco, no la entiendo
00:29:03
pues eso
00:29:05
traducido al contexto de escribir en un lenguaje
00:29:07
de alto nivel sería el error de compilación
00:29:10
que lo que tú has escrito
00:29:12
no se corresponde con la sintaxis
00:29:13
del lenguaje, no existe
00:29:16
no tiene sentido
00:29:18
a esos errores se les llama errores de compilación
00:29:18
son los mejores que te pueden salir
00:29:22
porque te salen antes de que tú le hayas entregado
00:29:24
el programa a nadie para que lo ejecute
00:29:26
porque es que un error, un programa que tiene un error
00:29:28
de estos de compilación
00:29:30
es que no se puede ni compilar, ni interpretar, ni nada
00:29:31
no se le puede hacer nada
00:29:34
porque es que no está
00:29:36
bien escrito en el lenguaje
00:29:38
el compilador te va a decir
00:29:40
esto que me has pasado no está en mi idioma
00:29:41
o el intérprete te va a decir
00:29:44
esto que me has pasado no está en mi idioma
00:29:46
entonces no va a llegar a ejecutarse nunca
00:29:48
Nadie te va a decir, ¿me has dado algo de lo que funciona?
00:29:50
No, es que no vas a poder haberse lo dado.
00:29:52
Porque no vas a poder haberlo ni compilado ni interpretado.
00:29:54
Porque se van a haber quejado antes.
00:29:57
Vale, eso es lo que se llama errores de compilación.
00:30:00
Cuando tú escribes mal el código fuente, y eso no se entiende,
00:30:02
y luego tú puedes haber escrito un código fuente perfectísimamente,
00:30:10
el compilador lo compila, porque compila perfectamente,
00:30:14
eso está muy bien escrito,
00:30:18
o si es un lenguaje interpretado
00:30:19
el intérprete
00:30:21
traduce perfectamente las líneas
00:30:23
porque están muy bien escritas
00:30:25
tú has escrito la frase
00:30:26
en código fuente perfectamente
00:30:28
¿vale? pero cuando el programa
00:30:30
ya se ejecuta
00:30:33
¡pum! falla
00:30:34
pues es un error de ejecución
00:30:36
y es que tu programa está mal hecho
00:30:38
está mal hecho
00:30:41
está bien escrito
00:30:42
pero está mal hecho
00:30:43
¿vale?
00:30:45
claro, tú escribes
00:30:49
la casa come
00:30:50
una frase perfecta, sintácticamente
00:30:52
no tiene ningún error
00:30:55
pero luego pon tú a dar de comer a una casa
00:30:56
no vas a conseguirlo, cuando tú ves de comer a una casa
00:30:59
la casa no puede comer
00:31:01
porque no es un humano, ni un animal
00:31:02
entonces, ahí tienes un error
00:31:05
al momento de llevarlo a la práctica
00:31:07
lo has escrito perfectamente
00:31:08
pero eso no puedes llevarlo a la práctica
00:31:10
esos son los peores errores
00:31:12
lógicamente los más complicados
00:31:15
de resolver, es decir, jodid
00:31:17
Pero si es que yo creo que se hace así
00:31:18
Y lo ejecuto y no
00:31:20
O me sale un error
00:31:22
O a lo mejor no me sale error
00:31:23
Pero no hace lo que tiene que hacer
00:31:25
Le estoy diciendo que sume dos números
00:31:26
Le doy los dos números y nos está restando
00:31:29
Pues eso es un error de ejecución
00:31:31
¿Vale?
00:31:34
Bueno pues entendamos también
00:31:35
Ya esos términos desde ya
00:31:37
Error de compilación y de ejecución
00:31:39
Vale
00:31:41
Bueno y ya por último dentro de esta introducción
00:31:42
Que vamos a ver acabado justo
00:31:45
entonces, para nosotros
00:31:47
programar se va a traducir en
00:31:51
recibir
00:31:52
el enunciado de un problema
00:31:54
que tenemos que resolver
00:31:57
tenemos que resolver un problema
00:31:58
ahora, me pongo a
00:32:00
mover la cabeza, me pongo a
00:32:03
hacer mis ideas, ah pues mira, voy a coger
00:32:05
dos variables aquí
00:32:07
voy a hacer aquí un bucle que
00:32:08
me esté recorriendo de 1 a 10
00:32:11
a ver si hasta que encuentre no sé cuántos
00:32:13
yo me hago ahí mis ideas, no sé cuánto para ti
00:32:15
Una vez que ya tengo más o menos un boceto de lo que quiero hacer, ahora ya empieza un proceso, que es escribirlo en un editor de texto, escribirlo en el código fuente.
00:32:16
Intentar compilarlo o interpretarlo, depende del lenguaje en el que esté, para ver si compila o no compila, a ver si tiene errores de compilación o no los tiene.
00:32:30
si los tiene
00:32:39
los arreglo
00:32:42
si no los tiene, los lanzo a ejecutar
00:32:43
¿vale? si tiene errores de ejecución
00:32:46
pues puedo
00:32:49
entrar a depurar, es decir, hay muchas tareas
00:32:50
que nosotros podemos
00:32:52
hacer con las herramientas básicas del ordenador
00:32:54
con mi blog de notas
00:32:56
yo podría escribir mi programa
00:32:58
lanzar mi máquina virtual a mano
00:32:59
pum, lanzar la mano, decirle a mi máquina
00:33:02
virtual, coge este programa que he hecho con el blog
00:33:04
de notas, si me falla
00:33:06
me saldrá un error en la consola
00:33:08
y me iré a cambiarlo
00:33:10
pues sí, puedo programar así
00:33:12
pero hombre, como hay muchas tareas
00:33:14
que vamos a repetir todo el rato
00:33:16
nacen unos software
00:33:18
unos programas
00:33:21
que se llaman los entornos de desarrollo
00:33:22
¿vale?
00:33:25
¿vale? ¿qué es un entorno
00:33:33
de desarrollo? un entorno de desarrollo
00:33:35
es un software que está
00:33:37
pensado para ayudarte a
00:33:39
programar
00:33:41
entonces, integra
00:33:42
un editor de texto para que tú escribas
00:33:44
tu programa
00:33:46
integra herramientas
00:33:47
que rápidamente te avisan si has
00:33:51
escrito algo mal o no lo has escrito mal
00:33:52
integran herramientas
00:33:54
que te permiten automatizar
00:33:57
hacer más rápido tareas que si no
00:33:59
tendrías que hacer pues tú a mano
00:34:01
con el blog de notas que serían más pesadas
00:34:02
integran
00:34:04
que se lance el programa y no tienes tú
00:34:06
que llamar a la máquina virtual para decirle
00:34:08
oye, lanza este programa
00:34:11
se integran muchas de esas tareas, como iremos viendo.
00:34:12
¿Vale? Entonces, lógicamente, nosotros usaremos un entorno de desarrollo
00:34:15
para facilitar nuestra tarea de desarrollar software, para facilitarla.
00:34:19
En Java en particular, pues tenemos los tres más usados, ¿vale?
00:34:26
Entonces, este es de distribución gratuita y tiene, aparte de toda una trayectoria,
00:34:38
una implantación
00:34:45
en el mercado enorme
00:34:48
y es el que vamos a usar nosotros aquí en clase
00:34:48
si alguien quiere usar otro
00:34:52
que lo use, pero bueno
00:34:53
este sí que es de licencia de pago
00:34:54
y este
00:34:57
a ver, no os lo recomiendo
00:34:59
no porque nos viene muchísimo
00:35:02
de potencia como todos
00:35:04
pero se está empezando a usar menos
00:35:04
aunque hay muchísimas empresas que lo siguen usando
00:35:07
pero el NetBeans se está empezando a usar menos
00:35:09
entonces os recomiendo
00:35:12
para que uséis vosotros el que os dé la gana
00:35:14
aquí en clase, los exámenes
00:35:17
los exámenes los haremos con este
00:35:19
entonces tenéis que tener soltura con ese
00:35:21
porque si surge algo
00:35:23
en el eclipse y no me sale
00:35:25
yo asumo que vosotros ya lo sabéis usar
00:35:26
tal y como lo hayamos usado aquí
00:35:29
¿vale?
00:35:31
bueno, pues justo acabamos con esto
00:35:33
la introducción
00:35:35
¿vale? no olvidéis que el entorno de desarrollo
00:35:37
por mucho que tenga la IA integrada
00:35:39
que te dice lo que tienes que decir después
00:35:41
que lo explica y todas esas patatillas
00:35:43
¿vale?
00:35:45
no tiene que sustituir
00:35:47
porque si dejáis que os sustituya
00:35:49
no vais a aprender a programar
00:35:52
y si no aprendéis a programar, suspendéis
00:35:53
o lo que es peor, si no aprendéis a programar
00:35:55
ya robáis y luego
00:35:57
vais a lo que acaba de elaborar
00:35:58
y se acabó, ya estáis crucificados
00:36:01
¿vale? entonces cuidado con eso
00:36:03
venga, pues ahora ya
00:36:06
sí que sí, paramos
00:36:07
- Materias:
- Programación
- Niveles educativos:
- ▼ Mostrar / ocultar niveles
- Formación Profesional
- Ciclo formativo de grado superior
- Primer Curso
- Subido por:
- Raquel G.
- Licencia:
- Todos los derechos reservados
- Visualizaciones:
- 6
- Fecha:
- 15 de septiembre de 2026 - 12:10
- Visibilidad:
- Clave
- Centro:
- IES ROSA CHACEL
- Duración:
- 36′ 11″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1920x1080 píxeles
- Tamaño:
- 373.38 MBytes