SlideShare a Scribd company logo
1 of 66
Download to read offline
Por Luis Espino
Introducción
¡Hola! Me llamo Luis y tengo una misión. Yo pienso que cualquiera que pue-
da definir claramente una serie de instrucciones puede programar, en cual-
quier lenguaje, plataforma y arquitectura; siempre y cuando conozca los prin-
cipios de la programación. Pienso también que aquél que los desconozca, no
podrá programar (bien) en ningún lenguaje.
Programar es
, mediante el uso
de un lenguaje determinado, y un lenguaje es
En este libro estableceré y detallaré estos principios, hablaré sobre su apli-
cación, lenguajes de programación, tipos de programación, arquitectura de
computadoras y los diversos universos que existen en este fascinante mundo,
para que puedas entender el trasfondo de los programas, y tengas una clara
imagen de cómo funciona este mundo, con lo que serás capaz de aprender
cualquier lenguaje y comprender cualquier plataforma y arquitectura, y pro-
gramar en ellos. Esa es mi misión.
El propósito de mi misión es reducir al mínimo el drama de las ,
aquellos conceptos y relaciones mentales en los que no tienes claridad, los que
no tienes idea de como funcionan, en los que careces de certeza sobre su es-
tructura y comportamiento. La educación clásica en programación es un culti-
vo de áreas grises, pues te enseñan sobre condiciones, ciclos, variables y fun-
ciones antes de darte luz sobre cómo funcionan las computadoras y los pro-
gramas.
Cuando era joven, en la preparatoria aprendí a programar en Visual Basic 6.
Cuando entré a la universidad y nos asignaron un proyecto en ASP .Net, lo pro-
gramé como si fuera una aplicación de Visual Basic 6. ¡Grave error! la web es
un universo distinto al escritorio. Y ¿Saben que fue lo peor? Que Visual Studio
me dejó hacerlo.
El IDE (Integrated Development Environment, Ambiente Integrado de Desa-
rrollo, o un programa para hacer más programas) me dejó hacerlo. Me dejaba
tratar a mi aplicación web como si fuera una aplicación de formularios para
Windows.
Ese fantasma me persiguió años, durante mucho tiempo viví con el paradig-
ma de los formularios de Windows. Utilizaba solo interfaces gráficas, solo am-
bientes gráficos y no me explicaba cómo funcionaban muchos programas,
puesto que no me imaginaba programándolos para Windows Forms. Es por eso
que en este libro trato primero la teoría, la comprensión de los principios an-
tes de entrar de lleno a programar. Puedes tomas un curso y en seis semanas
estarás programando en .Net. Sin embargo, sabrás programar solo para .Net.
No sabrás programar en absoluto sin Visual Studio, y esa no es la idea.
Comenzaré por establecer los principios de la programación, los fundamen-
tos que todo programador toda persona debe conocer. Cuando era muy joven
solía ver a Bob Ross en televisión, me encantaba como pintaba en media hora
un paisaje, ¡lo hacía ver tan sencillo!
Recientemente visité su canal de YouTube y vi el primer episodio - que de
joven, tal vez jamás vi - y lo que dijo al principio resonó con mis propias pala-
bras, las de él sobre pintar y las mías sobre programar. Él dijo:
de pintar un cuadro, creo que hay un artista escondido dentro de cada
uno de nosotros, y aquí voy a intentar mostrarte como sacar ese artis-
ta, ponerlo en un lienzo, porque tú también puedes pintar cuadros
grandiosos.
Muchos de nosotros hemos evitado pintar durante mucho tiempo, por-
que hemos pensado toda la vida que tienes que ir a la escuela durante
la mitad de tu vida o que tienes estar bendecido de nacimiento cómo
Miguel Ángel para ser capaz de pintar un cuadro y aquí te mostraré
Yo también, como Bob con la pintura, espero que disfrutes la alegría de
programar.
¿Para quién es este libro?
Este libro es para quien desea aprender sobre tecnología de información y
programación de forma fundamental. Contiene mucha teoría y ejemplos, para
hacernos una idea, un concepto, una referencia mental de lo que estamos ha-
ciendo.
Es para quienes quieren saber en cada paso del proceso que es lo que están
haciendo. En mi opinión es la manera correcta de hacer las cosas.
Si lo quieres es comenzar inmediatamente a codificar, este libro no es para
ti, sin embargo, antes de que te vayas a comprar otro, déjame reiterar que, si
aprendes a codificar directamente conocerás solamente un lenguaje y una for-
ma de hacer las cosas, lo que dificultará mucho tu aprendizaje posterior.
Eso mismo hice yo y las cosas fueron muy difíciles y complicadas durante
muchos años. El conocimiento que he vaciado en este libro es el producto de
una década de tropiezos. Mi objetivo principal es que las nuevas generaciones
no pasen por lo que yo pasé.
Sé lo que es ser joven e impaciente, sin embargo, créeme cuando te digo
que la paciencia infinita trae resultados inmediatos. Bien, si no te he convenci-
do y tu lo que quieres es comenzar a hacer programas desde ya, ahora si, con
pleno conocimiento de lo que te espera, puedes cambiar de libro o encontrar
cualquier otro recurso en Internet. Recuerda que siempre estaré aquí si se te
llegan a complicar las cosas.
Para todos los que decidan quedarse, me alegro mucho, son personas muy
sensatas y promete que haré todo mi esfuerzo para trasmitir el mensaje lo
más claro y divertido posible. Si no lo logró, siéntanse en la completa libertad
de hacérmelo saber :)
-
Los principios de la programación son:
1. Todo en la programación se trata de comunicación.
2. Todo programa modela una realidad.
3. Los programas manipulan a los datos.
4. Todo programa puede ser reducido a una lista ordenada de instruc-
ciones.
5. Todo programa puede ser reducido en: Entrada - Proceso - Salida
Voy a detallar cada principio ahora, para regresar a ellos durante todo el
libro, a la hora de ilustrar su aplicación.
Principio No. 1:
Todo en Programación se trata de
Comunicación
Todo es comunicación: Entre nosotros y las computadoras y entre los
programas que se ejecutan en las mismas. Todo se trata de comunicar, tu les
dices que hacer y ellas te responden, tu se los dices en una forma
que entiendan y ellas te comunican el resultado en una forma
que entiendas.
Sin comunicación no hay nada, ¿Te imaginas al mundo actual sin Inter-
escala mayor de lo que pasa dentro de las computadoras. Un programa se tie-
ne que comunicar con muchos otros para que todo funcione, desde que pue-
das abrir un archivo hasta que envíes un correo, todo es comunicación.
Los Principios de la
Programación
Principio No.2
Todo programa modela una realidad
¿Haz hecho un modelo de un avión o de un barco? Básicamente haces un
avión, simulando como es en realidad. Es lo mismo con los programas.
Piensa en el sistema operativo más utilizado en el mundo por computado-
res personales: . En un principio, fue creado para personal
de oficinas, todo su entorno estaba diseñado para que a los usuarios les resul-
que necesitabas en los viajes.
Todo el programa de Windows simulaba una realidad: la de los oficinistas.
Todas las aplicaciones modernas simulan una realidad, desde las que usamos
nejo de una empresa y los videojuegos de realidad virtual, que simulan la reali-
dad sensorial.
Todo programa que escribas simulará una realidad, modelará una realidad.
Al proceso de tomar una realidad, separarla en partes y crear un modelo le lla-
mamos .
Principio No. 3
Los programas manipulan a los datos, los da-
tos son información que es manipulada por los
programas.
¿Es un trabalenguas? No, pero casi.
La diferencia entre programa y datos es esencial en la programación. Un
claro ejemplo lo tenemos con es el programa, el archivo *.docx
es el dato. Los programas ejecutan operaciones sobre los datos. Los archivos
de datos son simplemente almacenes de información estructurada.
Principio No. 4
Todo programa puede ser reducido a una lista
ordenada de instrucciones
Todo programa no es más que una lista de instrucciones. ¡De verdad! Cual-
quiera, en cualquier lenguaje. Un ejemplo, rápido: Una sencilla suma, las ins-
trucciones serían las siguientes:
2. Hacer la suma.
3. Mostrar el resultado.
Es una lista de instrucciones que deben ejecutarse , para que la
computadora pueda hacer su trabajo correctamente. Cambia el orden u omite
alguna, y el resultado no será el esperado.
Principio No. 5
Todo programa se basa en una Entrada, un
Proceso y una Salida
Todos los programas toman una entrada
Les aplica un proceso
Y produce un resultado, una salida
( mensajes en pantalla, un archivo, un correo, etc. )
Un programa más complejo puede componerse de más programas o de fun-
ciones, que pueden reducirse a lo mismo: .
El programa de suma es un claro ejemplo:
Toma una entrada
Les aplica un proceso
(la suma)
Y arroja una salida
(el resultado de la suma)
Cada vez que tengas problemas con un desarrollo, respira profundamente y
recapitula los principios, te darán luz sobre el problema y seguramente serás
capaz de encontrar una solución.
El siguiente paso es explicar cómo es que funcionan las computadoras y los
programas, para que sepamos qué es lo que estamos haciendo a la hora de
programar y eliminemos la mayoría de las áreas grises, pero antes, repasemos
los principios que son la base de la programación:
-
Para muchos de nosotros esto es una caja negra que no comprendemos
y cuando queremos aprender a programar, nos vamos directo al código. Esto
es un drama, porque podrás aprender el lenguaje y la codificación pero en
realidad no sabes lo que estás haciendo.
Sin embargo, saber cómo funcionan las computadoras te da una tranquilidad a
la hora de diseñar y desarrollar programas, porque al fin y al cabo todo funcio-
na de una manera lógica y común, además de que sabes perfectamente que es-
tás haciendo en cada paso del proceso, sabes que esperar y cómo manejar ca-
da situación.
Pues bien, comencemos: Las computadoras funcionan simulando al cere-
bro humano, mejor dicho, al sistema nervioso. En términos muy simples, con
el solo propósito de hacer una analogía, el sistema nervioso se compone del
cerebro, médula espinal y terminales nerviosas.
El cerebro toma las decisiones, realmente nunca duerme, mantiene con-
trol sobre todas las funciones del cuerpo, permanentemente. Se comunica con
las terminales nerviosas por medio de la médula espinal para ejecutar una ins-
trucción, desde seguir respirando automáticamente hasta mover los dedos pa-
ra teclear en la computadora.
Gran parte del cerebro es representado por la memoria. Con la memoria
podemos repetir acciones, puesto que las recordamos. ¿Te ha pasado que de
repente te tienes que esforzar para recordar algo hasta que finalmente lo re-
cuerdas? Pues esto es porque existe memoria de corto plazo y de largo plazo.
En la de corto plazo está lo que eres capaz de recordar al instante y en la de
largo plazo lo que se te queda para siempre.
En realidad nunca olvidamos nada, pero batallamos mucho para evocar pensa-
mientos que casi nunca recordamos, pero ahí están. Pues a las computadoras
les sucede lo mismo.
Cómo Funcionan
las Computadoras
Las computadoras emulan estas funciones:
El cerebro es el CPU, la unidad central de procesamiento, la que reali-
za los cálculos.
Tenemos a la memoria RAM, Random Access Memory, Memoria de
Acceso Aleatorio, es la que podemos acceder inmediatamente.
Tenemos a los discos duros, la memoria de almacenamiento perma-
nente, podemos acceder a ella, aunque de manera más lenta que la
RAM.
Tenemos la tarjeta madre
permite que todos estos componentes se comuniquen.
Y tenemos los periféricos, nuestras terminales nerviosas de comuni-
cación: El monitor, las impresoras, los teclados, el mouse. Estos son
los ojos, oídos y manos de la computadora, lo que utiliza para comu-
nicarse con las personas.
Ahora vamos a establecer los principios de la programación pensando en
este ejemplo:
Comunicación: Los componentes de deben comunicar para que la
computadora funcione, lo hacen a través de la tarjeta madre y sus cir-
cuitos, la médula espinal y las terminales nerviosas.
Abstracción de la Realidad: Emula el sistema nervioso humano,
Entrada - Proceso - Salida
el procesador, valga la redundancia, realiza los procesos.
¡Oye! Espera un momento, ¿Qué hay de los otros dos principios? ¿Datos y
listas de instrucciones? Pues bien, para poder verlos claramente y eliminar
esas partes de las áreas grises, tenemos que ver bien primero cómo funcionan
los programas, lo cual veremos a continuación.
-
Un programa es una a una computado-
ra para que pueda realizar una serie de operaciones por sí misma.
Esto requiere de , tal como en la vida real. Supongamos que es-
tás bajo la supervisión de alguien - tu jefe, tu cliente que te pide un trabajo, tu
maestro o tu mamá que te pone a hacer quehaceres, depende de la época de la
vida en que te encuentres en este momento -.
Para realizarlas requerirás de esfuerzo y
que hacer, insumos y/o dinero si tienes que hacer unas compras. Pues a las
computadores les pasa lo mismo, requieren de para llevar a cabo las
instrucciones. Estos son tiempo de procesador ( el uso del procesador
se mide en tiempo ) y memoria, tanto RAM como ROM, principalmente.
Pues bien, cada programa necesitará cosas, ya sea momentá-
neamente en la RAM o permanentemente en disco. Necesitará de
para hacer los cálculos y a los periféricos para informar los resul-
tados.
Para cualquier cálculo que tenga que hacerse, se consume, se gasta
de , desde una simple suma hasta operaciones financieras com-
plejas.
Para almacenar información se gasta , RAM para guardar mo-
mentáneamente todo lo que se esté utilizando en el momento y ROM (disco)
para guardar todo lo que necesite historia o tenga que utilizarse posteriormen-
te.
¿Has cocinado alguna vez? ¿Dibujado? ¿Realizado alguna artesanía o
proyecto escolar? Mientras estas realizando el trabajo tienes todas tus herra-
mientas a la mano y estás ocupado, concentrado en el trabajo (cocinando, di-
bujando, cortando, etc.). Pues a la computadora le pasa lo mismo.
Cómo Funcionan
los Programas
Tiene que tener a la mano lo que necesita (ahí se gasta la memoria RAM) y
está ocupada pensando en los cálculos que tiene que hacer ( ahí se gasta el
tiempo de procesador). Puede que necesite estar escribiendo en disco, hacien-
do archivos temporales o leyendo archivos necesarios para la operación.
En tú caso, finalmente terminas el trabajo y entregas un , un plati-
llo, un plano, una maqueta, etc. Posteriormente limpias el lugar de trabajo, ti-
ras la basura, lo que sobró (la piel de la verduras, las rebabas y tiras de papel,
etc.), limpias la mesa y queda lista para comenzar otro trabajo.
Pues la computadora hace lo mismo, entrega el ya sea un docu-
mento en disco, imprimiendo un reporte o mostrando una pantalla determina-
da. Después, también saca la basura, borra de la todo lo que ya no
ocupa y libera , listos para ser utilizados de nuevo.
Entre más complejo el programa y más trabajos realice, más recursos con-
sume, tanto memoria, como procesador y disco. ¿Te ha pasado que cuando uti-
dos, y los estás consumiendo mucho, tanto que la computadora no puede res-
ponderte como debería.
Cuando varias aplicaciones se ejecutan al mismo, todas consumen la misma
fuente de recursos. La RAM es como espacio que se agota, como espacio en la
mesa en la que vas poniendo cosas y el disco duro, igual. El procesador en
cambio, es uno solo y atiende a varias procesos al mismo tiempo, por lo que
¡Las computadorasseparecenmásanosotrosdeloque
pensamos!
Fuerondiseñadasemulandonuestrocerebro,nuestrasfuncio-
nesnerviosas,porlo tanto,esmejorpensarenellascomoun
modelo denosotrosyno comosolo robots,paraquesus
funcionesnosresultenmásfamiliares.
¡TIP!
Cómo puedes ver, ahora podemos apreciar claramente los dos principios
faltantes, Datos y Lista de Instrucciones, pues cada programa es una lista de
instrucciones que toma datos, los procesa y entrega un resultado, utilizando
los recursos a su disposición.
Pero a todo esto, ¿Qué es un proceso?. Pues bien, lo veremos a continua-
ción.
Para el procesador todo es un proceso, valga la redundancia, es decir
una que tiene que hacer, desde una simple suma hasta una
operación estadística compleja. Las aplicaciones pueden generar uno o más
procesos, para enviarlos al procesador, así:
¿Qué es un Proceso?
Un procesador, en su hardware, puede tener varios núcleos, sin embar-
go, para fines ilustrativos y tratando de simplificar en aras de la comprensión,
lo trataremos como si siempre fuera uno solo.
Como es uno solo y tiene muchas tareas que hacer al mismo tiempo, lo
que hace para dar la impresión de que en realidad las ejecuta paralelamente es
avanzar en una, suspenderla, avanzar en la siguiente, suspenderla, avanzar en
la siguiente y así sucesivamente.
De esta manera, puede atender múltiples solicitudes de los programas.
-
Ahora que ya sabemos como funcionan tanto las computadoras como los
programas, es hora de que veamos como es que interactuamos con ellas.
Para que puedas utilizar una computadora intervienen tres programas prin-
cipales: El o boot, el y las , en ese or-
den.
La computadora primero ejecuta un proceso de arranque, luego cede el con-
trol al sistema operativo (el programa principal) y este pone a tu disposición
las aplicaciones.
¿Cómo Inter actuamos
con las Computadoras?
Las computadoras están altamente organizadas y antes que nada, verifica
que todo funcione correctamente (todos los componentes que acabamos de
mencionar, desde el CPU hasta los periféricos).
Este es el proceso de "boot" o arranque y lo hace una parte fundamental
aunque muy básica de la computadora llamada el BIOS (
trol al sistema operativo.
El arranque
El Sistema Operativo
Es el programa más importante, ya que sirve de intermediario, de intérprete
entre la computadora central y todos sus componentes. Es él quien interpreta
las órdenes (los comandos) y las solicita ejecutar a los componentes. Para en-
tenderlo más fácilmente, tomemos por ejemplo a los periféricos: Una impreso-
ra.
Una impresora tiene que comunicarse con la computadora. Para ello, necesi-
tarán hablar el mismo lenguaje, y no todos los componentes y computadoras
hablan el mismo lenguaje.
Pues bien, la impresora viene con el diccionario de su lenguaje (llamado dri-
ver), se lo entrega el sistema operativo, que lo tiene que aprender para poderle
hablar (por que así son de divas las impresoras). Entonces podrá comunicarse
con ella y podrás mandar a imprimir.
Es como una persona extranjera que viene a vivir a tu ciudad o laborar con-
tigo y trae consigo su traductor portátil, para que te puedas comunicar con ella
y puedan trabajar juntos.
Y así es con todos los componentes, con los discos, las memorias flash, los
teclados, ratones y monitores. El sistema operativo es el encargado de comuni-
carse con los periféricos. Es el que maneja los archivos. El que corre los pro-
gramas. Es el administrador de la ciudad informática.
Pues bien, una vez que arranca la computadora y cede el control al sistema
operativo, ya podemos utilizarla. Simplemente nos "promptea", es decir, se
queda esperando una orden, un comando, como si se nos quedará viendo con
cara de "¿ahora qué hago?".
Allí es cuando entran las aplicaciones.
Las Aplicaciones
Las aplicaciones son los programas que diseñamos para un sistema operati-
vo, son los diccionarios de las impresoras, los drivers, la calculadora y el pro-
cesador de texto. Son programas específicos para una función en particular.
Las aplicaciones corren, es decir, se ejecutan, utilizando un sistema operati-
vo. Pensemos por ejemplo en el procesador de texto:
El procesador de texto, para grabar nuestros archivos, tiene que pedirle el
listado de directorios al sistema operativo y pedirle permiso (así es, hay que
pedir permiso siempre) de escribir. Tiene que decirle que imprima y el sistema
operativo realizará la comunicación con la impresora.
Es importante tener una clara imagen mental de dondé estamos. Nuestro
código reside encapsulado dentro de nuestro programa. Un programa es capaz
de ejecutarse, y puede ser un archivo ejecutable (con extensión *.exe) hasta
una serie de scripts ejecutados por un servidor de aplicaciones o intérprete vía
¿Dónde estarán nuestros programas?
La comunicación es siempre:
Inclusive cuando utilizas el explorador de Windows o la interfaz de línea de
comandos, estas son también aplicaciones intermediarias entre el usuario y el
Sistema Operativo.
Sin embargo existen muchos tipos de aplicaciones: web, móviles, de escrito-
rio, etc. Hoy en día interactuamos con todas al mismo tiempo, lo mismo utili-
zamos nuestro software de oficina como nuestro correo, redes sociales y apli-
caciones móviles.
Cada uno existe en un contexto diferente, tan así que es prácticamente otro
universo. Es importante conocerlos y comprenderlos para poder utilizarlos, sa-
car el mejor provecho de ellos y producir excelentes programas para cualquier
plataforma o arquitectura. Tan es así, que los universos de la aplicaciones me-
recen su propio capítulo.
-
-
Aunque todos los programas comparten los mismos principios básicos, no
todos pertenecen al mismo conjunto.
Son muy diferentes las aplicaciones web a las de escritorio, y éstas difieren
mucho de las móviles. En escritorio tenemos servicios o daemons, aplicaciones
de consola y de interfaz gráfica. Son universos distintos. Tienen una forma
muy distante de pensarse, de abstraerse, pero todos se rigen bajo los mismos
principios.
Podemos enumerar los principales universos así:
Las aplicaciones de consola.
Los servicios o daemons.
Las aplicaciones de interfaz gráfica para los diversos sistemas opera-
tivos.
Las aplicaciones web.
Las aplicaciones móviles.
Cada uno de ellos es diferente pues utiliza diferentes recursos, diferentes
componentes, y tiene diferentes objetivos.
Los Universos de las
Aplicaciones
Las Aplicaciones de Consola
Aunque todos los programas comparten los mismos principios básicos, no
todos pertenecen al mismo conjunto.
Son muy diferentes las aplicaciones web a las de escritorio, y éstas difieren
mucho de las móviles. En escritorio tenemos servicios o daemons, aplicaciones
de consola y de interfaz gráfica. Son universos distintos. Tienen una forma
muy distante de pensarse, de abstraerse, pero todos se rigen bajo los mismos
principios.
Son aplicaciones que se están ejecutando permanentemente en el fondo, sin
que las veas. Son invisibles al usuario. Están monitoreando, esperando eventos,
funcionando como servidores, siempre presentes. Son como el subconsciente
de la computadora. Su propósito es estar siempre activo, a la espera de peticio-
nes o administrando recursos.
Los Servicios o Daemons
Los servicios
En esta clasificación caen
las tareas programadas,
las alertas, los motores de
bases de datos y los servi-
dores web, ejecutándose
en modo silencioso hasta
que las necesitas.
Normalmente son las aplicaciones las que se comunican con ellos, y el
usuario con las aplicaciones, tal como con el sistema operativo, pero para ta-
reas muy específicas, como cuando hacemos una consulta a la base de datos,
un servicio es quién la recibe, la realiza y nos devuelve la información, echan-
do mano para ello del sistema operativo, otros servicios y procesos.
Aquí está toda la ofimática (Word, PowerPoint, Excel), los programas de di-
seño, los sistemas operativos basados en ventanas y en general toda aplicación
con una interfaz gráfica.
Estas aplicaciones tiene doble complejidad, la funcional y la gráfica. En
realidad, siguen siendo programas con comandos, pero la forma de comunicar-
se con el usuario cambia, de simple texto a dibujos (todo es un dibujo en las
GUI's). Aquí te comunicas con clics y eventos con la computadora.
Las Aplicaciones de Escritorio, o de Interfaz Gráfica
Similares a las aplicaciones gráficas, las aplicaciones web tienen funcionali-
dad con una interfaz gráfica, agregando que tiene que adaptarse a recursos
más limitados y una conectividad más intensiva.
Como recordaremos, las aplicaciones corren sobre recursos, que son admi-
nistrados por el sistema operativo o directamente por la aplicación. Estos re-
cursos son los componentes de la computadora, como la memoria RAM, el dis-
co duro, el procesador, los periféricos, etc.
Aplicaciones de Escritorio
Word, Excel, Power Point,
Photoshop, Autocad,
Paint y en general todas
los programas con me-
nues, barras de herra-
mientas y áreas de traba-
jo.
Las Aplicaciones Web
Cuando una aplicación corre bajo el sistema operativo, como cuando inicias
Word, por ejemplo, esta tiene acceso a todos los recursos de la computadora,
administrados claro, por el sistema operativo. Es decir, puedes guardar en dis-
co tus archivos, leer otros, hacer un archivo grande y disponer de memoria
RAM para esto, mandar a imprimir tus archivos, etc.
Cuando una aplicación web corre lo hace bajo otra aplicación, no sobre el
sistema operativo, lo hace bajo el explorador (como Chrome o Firefox). Es el
explorador quien se tiene que comunicar con el sistema operativo para pedirle
que guarde un archivo o que imprima una página web, añadiendo otro nivel de
complejidad, otra capa de abstracción.
Los smartphones y tablets son mini computadoras, y tienen su propio siste-
ma operativo (iOS, Android), sin embargo, tienen recursos más limitados - por
ahora - que las laptops y computadoras de escritorio (RAM, procesador, disco
duro).
Las Aplicaciones Móviles
Además, al ser requerido que sean multifuncionales (hablas por teléfono en
medio de una charla de mensajes de texto mientras navegabas) igual que una
computadora pero como no tiene los recursos de la computadora, las aplica-
ciones tienen que estar diseñadas para hacer uso más eficiente de los recursos.
Es muy parecido a realizar aplicaciones web, todas las llamadas a internet
son asíncronas, por ejemplo.
Pero, Luis, ¡Lo hiciste de nuevo! ¡Soltaste un montón de jerga como si todo
el mundo la entendiera! ¿Llamadas a internet? ¿Asíncronas? ¿Qué es eso? Pues
bien, es momento de contarte una pequeña historia, así que haremos un parén-
tesis en este capítulo.
Aplicaciones Móviles
Las aplicaciones móviles tienen particu-
laridades notorias, como ser pausadas,
resumidas, permanecer en el fondo y un
consumo de recursos limitado que re-
quiere un manejo mucho más cuidadoso
que, por ejemplo, las aplicaciones de
escritorio.
Muchos de ustedes muchachos no se acordarán por que están muy chavos,
pero hubo una época en que los celulares solo servían para hablar, y no todos
teníamos uno, y para acceder a internet, lo hacías con una línea telefónica a
rapidísimos 56 kbps. No, no es broma, dije 56 kilo bytes por segundo, así co-
mo lo leen.
Los módems venían incluídos en las computadoras, unos armatostes enor-
mes con monitores CRT aún más grandes. Le conectabas el cable de tu telé-
fono y la usabas para " " llamar a tu
proveedor de Internet.
En mi caso era AOL. Dejaba a la casa sin teléfono
La comunicación entre las computadoras funciona a través de llamadas.
Cuando te conectas a Internet, lo que en realidad está pasando es que " "
a Google por ejemplo, y le solicitas te muestre su página.
Funciona así: Tu explorador llama a Google, a la dirección IP 8.8.8.8 (que se-
ría como su número de teléfono) al puerto 80 (que sería como su extensión) y
como este es público, sería como marcar al 030 y pedir la hora, Google te res-
ponde con su página de inicio, donde puedes teclear lo que buscas.
Y así cada sitio, cada aplicación, tiene su dirección (teléfono) y sus puertos
mado a tu casa, te preguntan por alguien y tu respondes "¿Quién habla?"? Pues
es lo mismo con las aplicaciones, algunas te van a preguntar quien eres, como
las aplicaciones web de correo (Gmail, Hotmail, Yahoo, etc) que te tienes que
identificar antes de poder ver tus mensajes.
Cómo puedes ver, todo son llamadas, en estricto apego a los principios, to-
do es comunicación, tanto hacia afuera como dentro de las computadoras.
Ahora que conocemos como funcionan las computadoras y los programas,
podemos proceder al siguiente paso: ¿Sabes cual es la parte más importante de
un programa? La especificación funcional. Acompáñame al siguiente capítulo
para mostrarte por qué.
-
La especificación funcional no es otra cosa que un escrito donde diga espe-
cíficamente que va a hacer el programa. Como esta es la parte más importante
del programa, me gusta decir el siguiente mantra:
Una Especificación Funcional es simplemente una descripción de las ins-
trucciones que deberás codificar para comunicarle a la computadora lo que tie-
ne que hacer. Eso es todo.
Todo se trata de contestar preguntas:
¿Qué estoy comunicando?
¿Qué realidad estoy modelando?
¿Qué datos necesito?
¿Qué datos deseo como resultado?
¿Cuáles son los pasos para obtener este resultado?
Una vez que tengas las respuestas, programar cualquier cosa solo es cues-
tión de traducir las instrucciones específicas a la computadora, en un lenguaje
que ella comprenda.
Es muy importante que tomes en cuenta que las computadoras son tontas,
no deducen o infieren lo que pretendes comunicarles, son incapaces de
Cómo puedes darte cuenta, la especificación funcional es la materialización
de los principios básicos de la programación. Pero no creas que solo aplican en
esta fase, debes tenerlos presentes durante todo el proceso de desarrollo de
software.
Tener una especificación funcional es tener la mitad del programa hecho.
La Especificación Funcional
El punto más importante a tomar en cuenta es que una especificación FUN-
CIONAL debe estar escrita COMPLETAMENTE desde el punto de vista del
USUARIO
cir, describe el qué, no el cómo.
Este es uno de los retos más grandes para un programador, porque automá-
ticamente piensas en cómo lo vas a desarrollar, en las herramientas que vas a
utilizar, en los lenguajes, es natural.
Es por eso existen personas especializadas para escribir especificaciones
funcionales, sin embargo, si trabajas como independiente o en tus proyectos
personales o en compañías muy pequeñas, es muy probable que tengas que
escribir las especificaciones tu mismo.
Piensa en una especificación como una novela. Es mejor escribir algo intere-
sante que dormir a todos con cosas técnicas y peor aún, con un documento
orientado a la calidad de la documentación en lugar de a comunicar (ya sabes,
esos documentos que tienen versión, autor, revisiones, tabla de contenidos y
rollo, mucho rollo).
Por el contrario, la especificación ha de ser más narrativa, y como en cada
narración, se tiene un planteamiento, un nudo y un desenlace.
El planteamiento debe poner en sintonía al lector, debe dar una idea clara
de cuál es el problema a resolver y en términos generales qué es lo que hará el
programa. Aquí establecemos los distintos escenarios que vamos a desarrollar.
Contiene de qué se trata el programa y de que no, es decir, el alcance del mis-
mo.
El nudo es el detalle de la funcionalidad, es la descripción del programa en
cada escenario.
En el desenlace cerramos atando cabos, estableciendo temas pendientes si
los hay, temas a los que hay que darles seguimiento, si los hay también y ce-
rramos responsabilizándonos de la especificación. Una novela necesita un au-
tor también.
Para una mejor comprensión, vamos a hacer un ejemplo de una especifica-
ción funcional, pequeña y simple, en aras de la comprensión, sobre una pieza
de software para administrar usuarios.
UserMan
Administrador de Usuarios
Descripción: UserMan es un programa para administrar a los usuarios de la
compañía Decisiones Diferentes S.A. de C.V.. Esta compañía necesita conocer
cuántos usuarios tiene, quienes son y cómo comunicarse con ellos.
Da de alta del usuario.
Lista la relación de usuarios.
Consulta información de un usuario en específico.
Cambia la información del usuario.
Da de baja a los usuarios.
No monitorea el uso de las cuentas.
No auditar actividades de los usuarios.
Para dar de alta un usuario: Entras al sistema, con tu propio usuario y con-
Para consultar información de un usuario: Entras al sistema, con tu propio
tarán los usuarios en pantalla. Ubicas al usuario que quieres consultar y en su
del usuario, misma que puedes modificar. Al terminar, si haz realizado cam-
Como podemos ver, una especificación funcional nos es otra cosa que una
descripción de cómo funciona el programa. Una vez que la tenemos, todo lo
que tenemos que hacer es traducir de nuestro lenguaje al lenguaje de las
computadoras, codificando un programa.
Los lenguajes tienen por objetivo representar instrucciones de forma clara,
concisa y específica, para que pueda ser comprendidos y ejecutado por una
máquina.
manera eficiente y ágil en el lenguaje de las computadoras, para ello se inven-
taron los lenguajes de programación, que pueden ser comprendidos por los
humanos.
Las instrucciones en estos lenguajes son traducidos al lenguaje máquina de
las computadoras por un programa especial, que puede ser un o
un . Son formas de denominar a las dos diferentes for-
mas de ejecutar un programa
Pues bien, un programa, por si solo, es solo un ar-
chivo más, pero un archivo especial, que contiene instrucciones para la compu-
tadora. A la acción de la computadora de realizar las actividades de estas ins-
trucciones la llamamos ejecución.
Los Lenguajes de
Programación
Un toma el código
fuente de los programas (las ins-
trucciones en el lenguaje de progra-
mación en forma de archivos de tex-
to) y produce un archivo binario eje-
cutable (en lenguaje máquina, ceros
y unos), que puede ser ejecutado
directamente por la computadora
(realizar las funciones que escribi-
mos en el programa).
Un es un programa
que lee las instrucciones del código
fuente (llamado script, como en
directamente el mismo, es decir, no
produce un archivo ejecutable, sim-
plemente va ejecutando instrucción
por instrucción.
Por lo tanto, existen lenguajes compilados e interpretados, según sea su
manera de funcionar. ¡Un lenguaje es un programa también! Es como aprender
otro idioma ¡Esa es la realidad que simulan! Cada lenguaje tiene una manera
distinta de establecer estas instrucciones, pero son comunes a todos los len-
guajes.
En resumen:
Las computadoras sólo entienden de ceros y unos.
Los lenguajes son para nosotros, no para ellas.
Hay programas especiales que transforman nuestro código en ins-
trucciones para la computadora.
Los hay de dos tipos:
Producen un archivo ejecutable.
Ejecutan directamente el código
Los Niveles de los
Lenguajes de Programación
esto le llamamos un bit.
Al conjunto de 8 bits, le llamamos un byte. Estas son unidades de memoria,
les de millones de bytes: 1 Gigabyte = 1 000 Megabytes = 1 000 000 Kilobytes =
1 000 000 000 Bytes.
bemos que hay memoria RAM y memoria ROM. Pues bien, todo este rollo es
para decirte que un programa en general lo que hace es mover memoria. Re-
cordemos el principio de datos y de aplicaciones, las aplicaciones manipulan
datos y los datos son manipulados por las aplicaciones.
Al día de hoy existen lenguajes realmente bellos, como Scala, Python o C#,
en los que es un placer programar. Pero esto no siempre fue así. Como dije, un
programa en esencia mueve memoria, pues bien, la primera implementación o
Acordamos de que prácticamente es imposible que le hablemos
Pues bien, la siguiente aproximación es el lenguaje ensamblador.
Este es un ejemplo de código ensamblador, tomado de la Wikipedia:
----------------------------------------------
----------------------------------------------
---------------------------------------------
----------------------------------------------
En este lenguaje se programa para los procesadores, aquí ya es posible para
el humano escribir programas, pero aun así es muy complejo.
Lo llamamos entonces de Nivel Bajo
y el cielo es nuestro lenguaje humano.
Como es aún muy difícil para un humano programar en ensamblador (o por
lo menos toma mucho tiempo y las aplicaciones se quieren crear con menos
esfuerzo) se crearon los lenguajes que utilizan los compiladores - que se crean
en ensamblador - para traducir a lenguaje máquina, como C. En este lenguaje
se programan los sistema operativos, por ejemplo (y muchas cosas más, desde
calculadoras hasta juegos, claro está).
El lenguaje C es un ejemplo de lenguaje de Nivel Intermedio, pues puede
ser utilizado para programar desde kernels hasta programas de oficina.
Este es un ejemplo de programa en C:
Pero aún se necesita de cierto esfuerzo considerable para programar aplica-
ciones estrictamente funcionales en C (las que usa uno en la vida diaria, como
suite de oficina y cosas por el estilo) y se quieren aún más rápidas y manteni-
bles (que cualquier otro programador las pueda modificar después de hechas),
por lo que se crearon lenguajes de Alto Nivel, como C++, capaces de imple-
mentar paradigmas de programación como Orientación a Objetos (un poco
más adelante lo veremos). El siguiente es un ejemplo:
--
C++ es como su nombre lo indica, un C mejorado, es un lenguaje que facili-
ta mucho las cosas, en comparación con C, claro está.
Pues llegamos al nivel alto, ¿Que fué lo ocurrió después? Después el proble-
ma fue la arquitectura, las plataformas, (Windows, Linux, Mac). Estas "marcas"
utilizan diferentes sistemas operativos, diferentes configuraciones (acomodo
de componentes, etc).
Por lo tanto, si queremos que un programa funcione tanto en Linux como
en Windows como en Mac, tenemos que hacer tres programas diferentes. Debi-
do a esto, se crearon las Máquinas Virtuales, como Java Virtual Machine.
En estas máquinas virtuales, se desarrolla una sola vez para todas las plata-
formas, es decir, un solo programa, para la máquina virtual, no para el sistema
operativo, no para Window, ni para Linux, se programa utilizando el lenguaje,
marco de trabajo (framework) y componentes de Java Virtual Machine.
Luego, se instala la JVM en cada equipo que se quiera que funcione el pro-
grama y podemos utilizar el mismo programa.
Es decir que una Máquina Virtual simula un sistema operativo para que la
aplicación corra. Tal como en el ejemplo de la aplicación web, que era el explo-
rador el que se comunicaba con el sistema operativo y no la aplicación, aquí es
la máquina virtual la que se comunica con el sistema operativo y no la aplica-
ción, esta se comunica con la máquina virtual. Es un intermediario.
Son los desarrolladores de la Java Virtual Machine los que se encargan de
hacer un programa por plataforma, no el desarrollador de las aplicaciones.
¿Interesante verdad? ¿Que fue lo que siguió? Los Frameworks - marcos de
trabajo -. Son colecciones de que ayudan en el desarrollo de progra-
mas.
Una librería es un programa también, pero en vez de ser diseñado para co-
rrer (ejecutarse) esta diseñado para ser usado por otros programas.
Por ejemplo, podemos crear un programa para buscar archivos. Si lo hace-
mos una librería, muchos otros programas podrán utilizarla y realizar las mis-
mas funciones, sin tener que programar la parte de buscar archivos. Genial!
¿No?
Como podemos ver, cada vez se crea una capa sobre otra, un programa que
abstrae, emula o modela a otra para asemejarse más y más a la forma en que
los humanos nos comunicamos, conforme a los principios básicos de la pro-
gramación y acortar la brecha de comunicación entre humanos y máquinas, ha-
ciendo cada vez más sencilla la labor del programador en la codificación y per-
mitiendo enfocarse más en lo realmente importante: La resolución del proble-
ma.
Pues bien, un framework es un montón de librerías, que resuelven un mon-
tón de problemas para que el programador se enfoque en funcionalidades es-
pecíficas.
Java tiene su framework, así como el .Net framework, que es a su vez una
máquina virtual, similar a Java (es que a Microsoft le dieron celos, pero esa es
otra historia).
En Resumen:
Existen diversos paradigmas de programación, que son diferentes formas
de programar, generalizadas en todo un lenguaje, ambiente o hasta estándar.
Para comprenderlo mejor, comencemos por explicarlos un poco.
Los Paradigmas de
Programación
Es como una cadena, como un sistema en serie, como el alfabeto, a la A le
estamos en un estado diferente del mismo. Es el más sencillo, por ello es el
primero que aprenderemos.
Si conoces algunos lenguajes, los ejemplos son C, Basic y Pascal. Pasemos a
crear la imagen mental de este paradigma, que como esta:
En la Programación Procedural o
Imperativa, un paso siempre sigue a
otro, no podemos llegar al dos sin el
uno, la aplicación o programa se en-
cuentra siempre en un estado particu-
lar.
Los principios a los que más se ape-
Conjunto de Instrucciones
Entrada Proceso Salida
El Paradigma Procedural o Imperativo
En la orientación a objetos, los datos simples se vuelven complejos
(tranquilo, complejo quiere decir que tiene varias partes, no que es complica-
do) al componerse de más datos.
Esto es una estructura de datos, es decir, dos o más datos organizados de
una manera lógica, que representa una idea, concepto o modelo de la realidad,
dentro del programa, es a lo que llamamos objeto.
de los principios de la programación, puesto como prioridad. En este, lo pri-
mordial son los objetos, los cuales tienen características y funcionalidades, tal
como en la vida real.
¿Cómo está esto? Pues aunque se oye complicado, es bien sencillo, por
ejemplo: Un auto.
Un auto tiene características
tor, etc. Pues bien, el objeto que represente a un auto las puede tener también.
En la orientación a objetos, a estas características les llamamos propiedades.
Un auto tiene funcionalidades también, es decir, acciones: Encender, mover-
se, frenar. A estas funcionalidades, en la orientación a objetos, le llamamos
métodos.
Luego, un objeto se compone de propiedades y métodos. Como en todas las
cla-
se de objetos, los autos en sí son la materialización de esta clasificación.
Una clase es una de un objeto. Un objeto tiene identidad
carro es igual a otro, tienen características que los hacen únicos, como las pla-
cas o el número de serie. Pero todos los automóviles tienen números de serie.
Las clases son solo el listado de características y funciones que debe tener
un objeto, sin identidad. Como un formato sin datos, como una plantilla, un
molde que usas para crear galletas. Luego, a partir de las clases creamos los
objetos, y como los objetos son la materialización de una clase, en programa-
ción, como todo es virtual, decimos que un objeto es una instancia de una cla-
se.
El Paradigma de Orientación a Objetos
Para obtener una buena imagen mental del paradigma, utilizaremos una pe-
queña forma que representa a una clase, la cual tiene una identificación, pro-
piedades y métodos. La imagen mental es como está:
Una clase tiene Nombre
Características, que son Propiedades
Y funcionalidades, que son Métodos.
Nombre
Propiedades
Métodos
Para comprenderlo mejor, veamos el ejemplo del auto:
Este es un paradigma bastante interesante, ya que su principal prioridad es
la declaración de lo que el programa
la marcada diferencia de que no especifica un flujo, sino simplemente declara,
como su nombre lo indica, las instrucciones a seguir, comúnmente por un mo-
tor.
Para comprenderlo mejor, estableceremos como ejemplo de este tipo de
programación al HTML, lenguaje de marcado de hipertexto. En este lenguaje
simplemente declaramos lo que queremos visualizar: Un encabezado, un pá-
rrafo, una lista, una tabla, etc. Quien realmente realiza el trabajo es el explora-
SQL
solo especificamos que datos queremos consultar y es el motor de base de da-
tos quien realiza las operaciones necesarias para mostrarnos el resultado.
Tal vez esto no te diga mucho, si no conoces absolutamente nada de estos
lenguajes, así que vamos a ejemplificarlo de mejor manera: Hacer un pedido
en línea. Cuando solicitamos algún producto o servicio, desde comprar una ca-
miseta hasta pedir una pizza, nos enfocamos en declarar que es lo queremos,
sin preocuparnos del cómo es que el producto llegará a nosotros.
¿Haz comprado un sándwich en Subway? Hay muchas combinaciones y solo
tienes que declarar que es lo quieres:
Pan:
Queso:
Carne:
Término:
Verduras: .
Aderezos:
En combo:
El Paradigma de Programación Declarativa
Este tipo de enfoque es el declarativo, y es un enfoque de gran utilidad para
los casos como los que mencionamos, ya que sería, de verdad, muchísimo más
trabajo (y te lo digo por que lo he hecho) implementar las funcionalidades de
los lenguajes declarativos con programación procedural. Bastante más trabajo.
La imagen mental que crearemos para este paradigma es una declaración,
como esta:
Cuando pienses en programa-
ción declarativa, piensa en un
documento, una declaración de-
tallada de funcionalidades y pro-
piedades, más que en un flujo.
Este paradigma las funciones mandan y es especializado en programas ma-
temáticos y estadísticos. Una función es un operación o método, una descrip-
ción de funcionalidad, como lo mencionamos en la Orientación a Objetos, con
la particularidad de que devuelve un valor siempre, por tanto el principio en el
Proceso
Como su orientación es matemática, pongamos como ejemplo la suma: Es
una función que toma dos números, les aplica un procedimiento ( los suma ) y
devuelve un resultado.
A + B = C Esto es una expresión matemática
C = A,B
Aquí está matemáticamente representado por
C = SUMA(A, B)
Aquí SUMA es la función que representa la suma, en la misma expre-
sión.
El Paradigma de Programación Funcional
Como en este paradigma todo se trata de funciones, es posible almacenar-
las en memoria, reutilizarlas y manejarlas como si fueran datos, lo que nos
brinda grandes posibilidades.
Sé que todo esto aún es muy complejo para comprenderlo, si no tienes ex-
periencia programando, pero no te preocupes, ya lo iremos descubriendo en su
momento.
El lenguaje más representativo de programación funcional es LISP, pero el
más popular, emergente y utilizado hoy en día es Javascript. Es un lenguaje
que vas a conocer a fondo si te da por el desarrollo web, ya que es el lenguaje
que utilizan los exploradores web, como o , pa-
ra implementar dinamismo a sus páginas, desde validaciones de formas, ani-
maciones y aplicaciones completas.
Realmente Javascript no es un lenguaje funcional completamente como
Lisp, y hasta puede ser utilizado tipo procedural o con orientación a objetos,
pero siempre tendrás que usar una gran cantidad de funciones y es mucho
más cómodo y divertido utilizarlo de esta manera, pero no nos adelantemos, lo
veremos dentro de poco.
La imagen mental que tendremos entonces será la del principio de Entra-
da Proceso Salida, en expresión matemática:
Este paradigma es el menos popular de todos, quizás por que es el que más
necesita de pensamiento abstracto. Es un serie de reglas lógicas, llamadas he-
chos, que se aplican para deducir un resultado.
Prolog es su lenguaje más representativo y se utiliza mucho para
(vaciar bases de conocimiento en un programa).
De por sí la lógica es una ciencia dura de aprender, pues tenemos que ser
explícitos con lo que estamos acostumbrados a ser implícitos, la programación
lógica puedo serlo aún más, sobre todo si no conocemos el mundo de la pro-
gramación antes.
Siendo sincero, es de los paradigmas más bellos y elegantes, pero también
alto, se necesitan conocimientos avanzados o una tendencia natural a este tipo
de pensamiento y capacidad para expresarlo.
No quiero asustarte, la verdad es que como programador no lo he utilizado
mucho y aunque me gusta, no lo recomendaría para nada como paradigma de
iniciación, por lo tanto en este libro es todo lo que leerás sobre él, como siem-
pre, en aras de la simplicidad.
Piensa en este paradigma como una ley, una serie de hechos establecidos.
La programación lógica es
una serie de hechos, reglas y con-
sultas a la mismas.
El Paradigma de Programación Lógica
Cuando pregunté a mis colegas ¿
La mayoría me contestó: La declaración de variables, flujos de de-
cisión, los ciclos, etc. Es decir, los principios de los lenguajes de programación.
Estos son muy importantes, pero no son los principios básicos de la programa-
ción, porque ¿De que te sirve saber un lenguaje si no eres capaz de determinar
qué es lo que debes programar en este lenguaje? Absolutamente de nada.
La utilidad de los principios básicos de los lenguajes se explota una vez que
se han aplicado los principios básicos de la programación. Que esto quede
muy claro. Ahora si, los principios básicos de los lenguajes de programación
son los siguientes:
Punto de inicio
Todo programa contiene una instrucción principal que da inicio a la ejecu-
ción de instrucciones. En c es la función main(), por ejemplo.
Tipos de datos
Los lenguajes manejan varios tipos de datos, como
la computadora que tipo de datos vamos a usar) o pueden ser inferidos implí-
Variables
Los programas, para almacenar información temporalmente que puede va-
riar, utilizan nombres simbólicos. Estas son las variables, son almacenamien-
tos temporales en memoria RAM, es decir, la computadora se acuerda en ese
ratito en que está funcionando el programa.
Los Principios de los
Lenguajes de Programación
Ciclos
Son tipos de instrucciones que nos permiten repetir otras instrucciones una
y otra vez, mientras una condición se cumpla. Esta es la verdadera fuerza de
las computadoras, los trabajos iterativos.
Funciones
Una función es método o procedimiento, un pequeño programa dentro del
principal que realiza una serie de instrucciones y devuelve un resultado, por
ejemplo, una suma ( tal y como lo vimos en el paradigma funcional ). Nos sirve
para ahorrarnos código, ya que la podemos utilizar dentro de nuestro progra-
ma cada que la necesitemos.
Las listas o arreglos
Son colecciones de variables, una serie de valores a los que accedemos me-
diante una sola referencia. Con este conjunto de instrucciones podemos crear
cualquier programa, desde una calculadora sencilla, pasando por lectura y es-
critura de archivos, hasta un videojuego.
Palabras Reservadas
Las palabras reservadas son palabras que los lenguajes utilizan exclusiva-
funciones y bloques de código, por ejemplo.
Los Componentes
Vamos a introducir el concepto de componentes. Como vemos en la ilustra-
ción, varios elementos individuales se comunican entre sí. Esto es un sistema.
Esto en español plano es un grupo de partes que se comunican entre sí para
llevar a cabo una tarea.
Veamos la siguiente ilustración:
Podemos detectar los componentes de nuestro sistema:
1. El usuario somos nosotros mientras usamos el sistema.
2. El sistema operativo que utilizamos para comunicarnos con las apli-
caciones.
3. El intérprete, que ejecuta nuestro programa.
4. Nuestra aplicación, el conjunto de instrucciones que le damos a la
computadora.
Cada uno de estos componentes realiza diferentes acciones y se comunica
con otros mediante llamadas. ¿Recuerdas la anécdota del mundo sin banda an-
cha? Allí hablamos de cómo todo es una llamada. Pues bien, por dentro de la
computadora también, todo es una llamada.
Como usuarios llamamos a las aplicaciones, lo hacemos mediante el siste-
envíe a un programa que interpreta las instrucciones que programamos y nos
devuelve una respuesta.
¿Visualizas los principios de la programación en el sistema?
Todo es comunicación, una entrada, un proceso y una salida. Como ves,
Pues bien, dentro de nuestro programa aplican de nuevo los mismos princi-
pios, y también en la existencia de componentes y las llamadas.
La sintaxis
Los lenguajes tienen reglas. Nuestro español, el idioma inglés, el alemán,
etc. Todos tienen reglas de cómo deben ir ordenadas las palabras para formar
oraciones, como deben escribirse y los símbolos que deben utilizarse.
Pues bien, los lenguajes informáticos no son la excepción. Tienen una sinta-
xis específica que debemos respetar, caso contrario podemos tener errores en
el programa y no funcionarán o no lo harán correctamente.
Conclusión
En general, la mayoría de los lenguajes, tanto procedurales como funciona-
les como de orientación a objetos y hasta los lógicos, cuentan con estos princi-
pios, y, según el paradigma, le agregan funcionalidades, apegadas a la filosofía
del paradigma, como las clases en la orientación a objetos, sin embargo, en
esencia, los principios son siempre los mismos.
Necesitaremos conocimiento de sistemas operativos si vamos a ser progra-
madores, pero no te preocupes, no vamos a comenzar programando kernels,
vamos a repasar las plataformas más populares, por cultura general y por que
necesitamos conocer en que vamos a programar, por supuesto.
En computadoras de escritorio, hay tres grandes sistemas operativos: Mi-
crosoft Windows, Apple OS X y los *nix (Unix & GNU Linux). Los primeros dos
son comerciales, del tercero los hay comerciales como gratuitos. El primero es
de código cerrado (solo la compañía tiene acceso al código fuente) y los últi-
mos pueden ser tanto de código cerrado (Unix) como de código abierto
Todo comienza con Unix
tivo, basado en un estándar llamado POSIX, se crearon BSD que es una distri-
bución cerrada y Linux, que es una distribución libre, que son implementacio-
nes de Unix, es decir, re escritas inspiradas por Unix, basadas en POSIX, no uti-
lizando el código de Unix.
Apple OS X
sado en Unix.
Windows es otra historia, es un sistema operativo no basado en Unix, sino
extendiendo MS-DOS
competirles en este mercado. Actualmente, solo Windows no está basado en
Unix (POSIX).
En el mercado móvil (
dos sistema operativos que destacan, aunque un tercero insiste en hacerles la
competencia. Cada uno de los tres más populares, están basado o derivados de
su versión de escritorio:
iOS de OS X
Windows Phone / Mobile de Windows
Android está basado en Linux.
Los Sistemas Operativos
Por lo tanto, tenemos, actualmente, en sistemas operativos, algo como esto:
Veamos ahora las diferencias más marcadas:
Ni Windows ni OS X son gratis
luego de seis meses de cada versión, pero tienes que compilarlo (ya vimos lo
que es un compilador, pero llegaremos a esto un poco más tarde).
La mayor parte de las distribuciones de Linux son de código abierto y hay
una gran comunidad de personas que regalan su tiempo para distribuir versio-
nes instalables de Linux.
Puedes instalar Linux y Windows en cualquier computadora compatible
(que actualmente son casi todas), pero OS X ex-
clusivamente y/o de mejor manera con el hardware (las piezas físicas) de Ap-
ple.
Linux muchas distribuciones. Los otros dos, so-
lo tienen una distribución, aunque muchas versiones.
Por lo tanto, en distribuciones, tenemos algo como esto:
Muy bien, ya sabemos en donde estamos por los sistema operativos, pero
¿Para que queremos saber todo esto? Pues bien, por regla general, un progra-
ma para Windows no corre en Linux, ni en Mac y viceversa, como lo vimos an-
teriormente.
Como los tres son bastante populares, y no se que sistema operativo estas
usando tu (muy probablemente sea Windows, pero uno nunca sabe, puede que
seas un Macero o Linuxero), pues tenemos que programar en algún lenguaje
La primera versión de este libro la escribí para usuarios de Windows, con la
clara intención de que no se tuviera que instalar nada, pero rápidamente me di
cuenta de que era un error excluir a los otras dos plataformas, no es algo con
lo que me sienta cómodo.
Yo aprendí en Windows, como la mayoría de estudiantes y oficinistas en
México, pero ahora me siento cómodo utilizando las tres plataformas, aunque
mi favorita por mucho es Linux.
Como te decía, en la primera versión del libro, enfocada a Windows, decidí
que no instalaras nada y utilizaba primero DOS, luego Javascript desde la con-
sola, luego en el explorador. Posteriormente enseñarte a compilar con C# y a
hacer algo de desarrollo web con Php. Sin embargo, esto solo es posible para
Windows (o con configuraciones avanzadas en los demás, o cambiando algu-
nas cosas), y como quiero que cualquier persona, no importa la arquitectura
que utilice, pueda aprender, decidí cambiar esto.
El segundo punto para decidir nuestro lenguaje es la facilidad de uso, debe
tener una curva de aprendizaje pequeña, ser fácil, intuitivo y que nos enseñe
buenas prácticas a la hora de escribir nuestro código. La respuesta estuvo allí
todo el tiempo, solo hay un lenguaje así: Python.
Python es multiplataforma, corto, simple, elegante y estricto a la hora de
indentar (organizar nuestro código con sangrías espacios entre una línea y
otra para denotar organización ). Es el lenguaje perfecto para nuestros pro-
pósitos.

More Related Content

What's hot

Polimorfismo y Clases Abstractas
Polimorfismo y Clases AbstractasPolimorfismo y Clases Abstractas
Polimorfismo y Clases Abstractascodigosyalgomas
 
Giroscópio - Lego Mindstorms Ev3
Giroscópio - Lego Mindstorms Ev3Giroscópio - Lego Mindstorms Ev3
Giroscópio - Lego Mindstorms Ev3Lucas Sabadini
 
Fundamentos del diseño de software
Fundamentos del diseño de software Fundamentos del diseño de software
Fundamentos del diseño de software AlessandreMndez
 
Curso de Raciocínio Lógico, Matemática, Estatistica p/ PC-DF 2016
Curso de Raciocínio Lógico, Matemática, Estatistica p/ PC-DF 2016Curso de Raciocínio Lógico, Matemática, Estatistica p/ PC-DF 2016
Curso de Raciocínio Lógico, Matemática, Estatistica p/ PC-DF 2016Estratégia Concursos
 
Aula 1 - Introdução a Engenharia de Software
Aula 1 -  Introdução a Engenharia de SoftwareAula 1 -  Introdução a Engenharia de Software
Aula 1 - Introdução a Engenharia de SoftwareLeinylson Fontinele
 
Estrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - ApresentaçãoEstrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - ApresentaçãoLeinylson Fontinele
 
Trabalho sobre algoritmo
Trabalho sobre algoritmoTrabalho sobre algoritmo
Trabalho sobre algoritmorpamsilva
 
Modelo Relacional, Rede e Hierárquico
Modelo Relacional, Rede e HierárquicoModelo Relacional, Rede e Hierárquico
Modelo Relacional, Rede e Hierárquicorosimaracorsino
 
PROGRAMACION POR CAPAS-UNT
PROGRAMACION POR CAPAS-UNTPROGRAMACION POR CAPAS-UNT
PROGRAMACION POR CAPAS-UNTNew Break Crew
 
Programación orientada a objetos presentacion
Programación    orientada    a objetos presentacionProgramación    orientada    a objetos presentacion
Programación orientada a objetos presentacionfranciscocain
 
Aula 1 explorando o scratch 1.4
Aula 1 explorando o scratch 1.4Aula 1 explorando o scratch 1.4
Aula 1 explorando o scratch 1.4Scratch_TCC
 
Lógica de Programação e Algoritmos
Lógica de Programação e AlgoritmosLógica de Programação e Algoritmos
Lógica de Programação e AlgoritmosMario Jorge Pereira
 
Sistema de Gerenciamento de Locadora de Vídeo - Diagramas
Sistema de Gerenciamento de Locadora de Vídeo - DiagramasSistema de Gerenciamento de Locadora de Vídeo - Diagramas
Sistema de Gerenciamento de Locadora de Vídeo - DiagramasGleyciana Garrido
 

What's hot (20)

Arquitectura Web
Arquitectura WebArquitectura Web
Arquitectura Web
 
Polimorfismo y Clases Abstractas
Polimorfismo y Clases AbstractasPolimorfismo y Clases Abstractas
Polimorfismo y Clases Abstractas
 
Giroscópio - Lego Mindstorms Ev3
Giroscópio - Lego Mindstorms Ev3Giroscópio - Lego Mindstorms Ev3
Giroscópio - Lego Mindstorms Ev3
 
Fundamentos del diseño de software
Fundamentos del diseño de software Fundamentos del diseño de software
Fundamentos del diseño de software
 
Curso de Raciocínio Lógico, Matemática, Estatistica p/ PC-DF 2016
Curso de Raciocínio Lógico, Matemática, Estatistica p/ PC-DF 2016Curso de Raciocínio Lógico, Matemática, Estatistica p/ PC-DF 2016
Curso de Raciocínio Lógico, Matemática, Estatistica p/ PC-DF 2016
 
Aula 1 - Introdução a Engenharia de Software
Aula 1 -  Introdução a Engenharia de SoftwareAula 1 -  Introdução a Engenharia de Software
Aula 1 - Introdução a Engenharia de Software
 
Estrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - ApresentaçãoEstrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - Apresentação
 
Trabalho sobre algoritmo
Trabalho sobre algoritmoTrabalho sobre algoritmo
Trabalho sobre algoritmo
 
Metodologia omt
Metodologia omtMetodologia omt
Metodologia omt
 
Modelo Relacional, Rede e Hierárquico
Modelo Relacional, Rede e HierárquicoModelo Relacional, Rede e Hierárquico
Modelo Relacional, Rede e Hierárquico
 
Diseño orientado a objeto
Diseño orientado a objetoDiseño orientado a objeto
Diseño orientado a objeto
 
Expresiones lambda
Expresiones lambdaExpresiones lambda
Expresiones lambda
 
PROGRAMACION POR CAPAS-UNT
PROGRAMACION POR CAPAS-UNTPROGRAMACION POR CAPAS-UNT
PROGRAMACION POR CAPAS-UNT
 
Diferencias swing y awt
Diferencias swing y awtDiferencias swing y awt
Diferencias swing y awt
 
Programación orientada a objetos presentacion
Programación    orientada    a objetos presentacionProgramación    orientada    a objetos presentacion
Programación orientada a objetos presentacion
 
Aula 4 - Estruturas condicionais
Aula 4 - Estruturas condicionaisAula 4 - Estruturas condicionais
Aula 4 - Estruturas condicionais
 
Aula 1 explorando o scratch 1.4
Aula 1 explorando o scratch 1.4Aula 1 explorando o scratch 1.4
Aula 1 explorando o scratch 1.4
 
Lógica de Programação e Algoritmos
Lógica de Programação e AlgoritmosLógica de Programação e Algoritmos
Lógica de Programação e Algoritmos
 
Aula 3 banco de dados
Aula 3   banco de dadosAula 3   banco de dados
Aula 3 banco de dados
 
Sistema de Gerenciamento de Locadora de Vídeo - Diagramas
Sistema de Gerenciamento de Locadora de Vídeo - DiagramasSistema de Gerenciamento de Locadora de Vídeo - Diagramas
Sistema de Gerenciamento de Locadora de Vídeo - Diagramas
 

Similar to Cómo funcionan las computadoras y los programas

Similar to Cómo funcionan las computadoras y los programas (20)

Introduccion de programacion
Introduccion de programacionIntroduccion de programacion
Introduccion de programacion
 
Taller 1 Introduccion a la programacion
Taller 1 Introduccion a la programacionTaller 1 Introduccion a la programacion
Taller 1 Introduccion a la programacion
 
Taller 1
Taller 1Taller 1
Taller 1
 
Taller 1 Introduccion a la programacion
Taller 1 Introduccion a la programacion Taller 1 Introduccion a la programacion
Taller 1 Introduccion a la programacion
 
Taller1.Que Es Programar
Taller1.Que Es ProgramarTaller1.Que Es Programar
Taller1.Que Es Programar
 
Programar
ProgramarProgramar
Programar
 
MANUAL VISUAL BASIC.pdf
MANUAL VISUAL BASIC.pdfMANUAL VISUAL BASIC.pdf
MANUAL VISUAL BASIC.pdf
 
programacion
programacionprogramacion
programacion
 
Introduccion a la programacion
Introduccion a la programacionIntroduccion a la programacion
Introduccion a la programacion
 
lenguaje de programación - Un programa de extensión para niños de escuela pri...
lenguaje de programación - Un programa de extensión para niños de escuela pri...lenguaje de programación - Un programa de extensión para niños de escuela pri...
lenguaje de programación - Un programa de extensión para niños de escuela pri...
 
Mayerly rios
Mayerly riosMayerly rios
Mayerly rios
 
Guión Powtoon
Guión PowtoonGuión Powtoon
Guión Powtoon
 
que es programar
 que es programar que es programar
que es programar
 
que es un hacker
  que es un hacker  que es un hacker
que es un hacker
 
Backup of quick basic
Backup of quick basicBackup of quick basic
Backup of quick basic
 
Java para novatos_ Como aprende - A. M. Vozmediano.pdf
Java para novatos_ Como aprende - A. M. Vozmediano.pdfJava para novatos_ Como aprende - A. M. Vozmediano.pdf
Java para novatos_ Como aprende - A. M. Vozmediano.pdf
 
Programación
ProgramaciónProgramación
Programación
 
Fundamentos de programacion I
Fundamentos de programacion IFundamentos de programacion I
Fundamentos de programacion I
 
Conceptos básicos Programacion
Conceptos básicos ProgramacionConceptos básicos Programacion
Conceptos básicos Programacion
 
Zen de libertad (revisado)
Zen de libertad (revisado)Zen de libertad (revisado)
Zen de libertad (revisado)
 

More from Luis Martín Espino Rivera

Counting valleys from Hackerrank solution explained
Counting valleys from Hackerrank solution explainedCounting valleys from Hackerrank solution explained
Counting valleys from Hackerrank solution explainedLuis Martín Espino Rivera
 
Lo que debes saber antes de iniciar un negocio por internet... Técnologicamen...
Lo que debes saber antes de iniciar un negocio por internet... Técnologicamen...Lo que debes saber antes de iniciar un negocio por internet... Técnologicamen...
Lo que debes saber antes de iniciar un negocio por internet... Técnologicamen...Luis Martín Espino Rivera
 
High Performance Organization Culture Proposal
High Performance Organization Culture ProposalHigh Performance Organization Culture Proposal
High Performance Organization Culture ProposalLuis Martín Espino Rivera
 
Quick answers to Angular2+ Interview Questions
Quick answers to Angular2+ Interview QuestionsQuick answers to Angular2+ Interview Questions
Quick answers to Angular2+ Interview QuestionsLuis Martín Espino Rivera
 
MeritocraciaYA Cultura Organizacional Ciudadana
MeritocraciaYA Cultura Organizacional CiudadanaMeritocraciaYA Cultura Organizacional Ciudadana
MeritocraciaYA Cultura Organizacional CiudadanaLuis Martín Espino Rivera
 
10 cosas que debes saber para contratar a un diseñador web
10 cosas que debes saber para contratar a un diseñador web10 cosas que debes saber para contratar a un diseñador web
10 cosas que debes saber para contratar a un diseñador webLuis Martín Espino Rivera
 

More from Luis Martín Espino Rivera (7)

Counting valleys from Hackerrank solution explained
Counting valleys from Hackerrank solution explainedCounting valleys from Hackerrank solution explained
Counting valleys from Hackerrank solution explained
 
Lo que debes saber antes de iniciar un negocio por internet... Técnologicamen...
Lo que debes saber antes de iniciar un negocio por internet... Técnologicamen...Lo que debes saber antes de iniciar un negocio por internet... Técnologicamen...
Lo que debes saber antes de iniciar un negocio por internet... Técnologicamen...
 
High Performance Organization Culture Proposal
High Performance Organization Culture ProposalHigh Performance Organization Culture Proposal
High Performance Organization Culture Proposal
 
Quick answers to Angular2+ Interview Questions
Quick answers to Angular2+ Interview QuestionsQuick answers to Angular2+ Interview Questions
Quick answers to Angular2+ Interview Questions
 
MeritocraciaYA Cultura Organizacional Ciudadana
MeritocraciaYA Cultura Organizacional CiudadanaMeritocraciaYA Cultura Organizacional Ciudadana
MeritocraciaYA Cultura Organizacional Ciudadana
 
10 cosas que debes saber para contratar a un diseñador web
10 cosas que debes saber para contratar a un diseñador web10 cosas que debes saber para contratar a un diseñador web
10 cosas que debes saber para contratar a un diseñador web
 
Exportar información de Sql Server a Excel
Exportar información de Sql Server a ExcelExportar información de Sql Server a Excel
Exportar información de Sql Server a Excel
 

Recently uploaded

Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...
Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...
Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...Luis Olivera
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofJuancarlosHuertasNio1
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 

Recently uploaded (20)

Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...
Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...
Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sof
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 

Cómo funcionan las computadoras y los programas

  • 2. Introducción ¡Hola! Me llamo Luis y tengo una misión. Yo pienso que cualquiera que pue- da definir claramente una serie de instrucciones puede programar, en cual- quier lenguaje, plataforma y arquitectura; siempre y cuando conozca los prin- cipios de la programación. Pienso también que aquél que los desconozca, no podrá programar (bien) en ningún lenguaje. Programar es , mediante el uso de un lenguaje determinado, y un lenguaje es En este libro estableceré y detallaré estos principios, hablaré sobre su apli- cación, lenguajes de programación, tipos de programación, arquitectura de computadoras y los diversos universos que existen en este fascinante mundo, para que puedas entender el trasfondo de los programas, y tengas una clara imagen de cómo funciona este mundo, con lo que serás capaz de aprender cualquier lenguaje y comprender cualquier plataforma y arquitectura, y pro- gramar en ellos. Esa es mi misión. El propósito de mi misión es reducir al mínimo el drama de las , aquellos conceptos y relaciones mentales en los que no tienes claridad, los que no tienes idea de como funcionan, en los que careces de certeza sobre su es- tructura y comportamiento. La educación clásica en programación es un culti- vo de áreas grises, pues te enseñan sobre condiciones, ciclos, variables y fun- ciones antes de darte luz sobre cómo funcionan las computadoras y los pro- gramas. Cuando era joven, en la preparatoria aprendí a programar en Visual Basic 6. Cuando entré a la universidad y nos asignaron un proyecto en ASP .Net, lo pro- gramé como si fuera una aplicación de Visual Basic 6. ¡Grave error! la web es un universo distinto al escritorio. Y ¿Saben que fue lo peor? Que Visual Studio me dejó hacerlo.
  • 3. El IDE (Integrated Development Environment, Ambiente Integrado de Desa- rrollo, o un programa para hacer más programas) me dejó hacerlo. Me dejaba tratar a mi aplicación web como si fuera una aplicación de formularios para Windows. Ese fantasma me persiguió años, durante mucho tiempo viví con el paradig- ma de los formularios de Windows. Utilizaba solo interfaces gráficas, solo am- bientes gráficos y no me explicaba cómo funcionaban muchos programas, puesto que no me imaginaba programándolos para Windows Forms. Es por eso que en este libro trato primero la teoría, la comprensión de los principios an- tes de entrar de lleno a programar. Puedes tomas un curso y en seis semanas estarás programando en .Net. Sin embargo, sabrás programar solo para .Net. No sabrás programar en absoluto sin Visual Studio, y esa no es la idea. Comenzaré por establecer los principios de la programación, los fundamen- tos que todo programador toda persona debe conocer. Cuando era muy joven solía ver a Bob Ross en televisión, me encantaba como pintaba en media hora un paisaje, ¡lo hacía ver tan sencillo! Recientemente visité su canal de YouTube y vi el primer episodio - que de joven, tal vez jamás vi - y lo que dijo al principio resonó con mis propias pala- bras, las de él sobre pintar y las mías sobre programar. Él dijo: de pintar un cuadro, creo que hay un artista escondido dentro de cada uno de nosotros, y aquí voy a intentar mostrarte como sacar ese artis- ta, ponerlo en un lienzo, porque tú también puedes pintar cuadros grandiosos. Muchos de nosotros hemos evitado pintar durante mucho tiempo, por- que hemos pensado toda la vida que tienes que ir a la escuela durante la mitad de tu vida o que tienes estar bendecido de nacimiento cómo Miguel Ángel para ser capaz de pintar un cuadro y aquí te mostraré Yo también, como Bob con la pintura, espero que disfrutes la alegría de programar.
  • 4. ¿Para quién es este libro? Este libro es para quien desea aprender sobre tecnología de información y programación de forma fundamental. Contiene mucha teoría y ejemplos, para hacernos una idea, un concepto, una referencia mental de lo que estamos ha- ciendo. Es para quienes quieren saber en cada paso del proceso que es lo que están haciendo. En mi opinión es la manera correcta de hacer las cosas. Si lo quieres es comenzar inmediatamente a codificar, este libro no es para ti, sin embargo, antes de que te vayas a comprar otro, déjame reiterar que, si aprendes a codificar directamente conocerás solamente un lenguaje y una for- ma de hacer las cosas, lo que dificultará mucho tu aprendizaje posterior. Eso mismo hice yo y las cosas fueron muy difíciles y complicadas durante muchos años. El conocimiento que he vaciado en este libro es el producto de una década de tropiezos. Mi objetivo principal es que las nuevas generaciones no pasen por lo que yo pasé. Sé lo que es ser joven e impaciente, sin embargo, créeme cuando te digo que la paciencia infinita trae resultados inmediatos. Bien, si no te he convenci- do y tu lo que quieres es comenzar a hacer programas desde ya, ahora si, con pleno conocimiento de lo que te espera, puedes cambiar de libro o encontrar cualquier otro recurso en Internet. Recuerda que siempre estaré aquí si se te llegan a complicar las cosas. Para todos los que decidan quedarse, me alegro mucho, son personas muy sensatas y promete que haré todo mi esfuerzo para trasmitir el mensaje lo más claro y divertido posible. Si no lo logró, siéntanse en la completa libertad de hacérmelo saber :)
  • 5.
  • 6. -
  • 7. Los principios de la programación son: 1. Todo en la programación se trata de comunicación. 2. Todo programa modela una realidad. 3. Los programas manipulan a los datos. 4. Todo programa puede ser reducido a una lista ordenada de instruc- ciones. 5. Todo programa puede ser reducido en: Entrada - Proceso - Salida Voy a detallar cada principio ahora, para regresar a ellos durante todo el libro, a la hora de ilustrar su aplicación. Principio No. 1: Todo en Programación se trata de Comunicación Todo es comunicación: Entre nosotros y las computadoras y entre los programas que se ejecutan en las mismas. Todo se trata de comunicar, tu les dices que hacer y ellas te responden, tu se los dices en una forma que entiendan y ellas te comunican el resultado en una forma que entiendas. Sin comunicación no hay nada, ¿Te imaginas al mundo actual sin Inter- escala mayor de lo que pasa dentro de las computadoras. Un programa se tie- ne que comunicar con muchos otros para que todo funcione, desde que pue- das abrir un archivo hasta que envíes un correo, todo es comunicación. Los Principios de la Programación
  • 8. Principio No.2 Todo programa modela una realidad ¿Haz hecho un modelo de un avión o de un barco? Básicamente haces un avión, simulando como es en realidad. Es lo mismo con los programas. Piensa en el sistema operativo más utilizado en el mundo por computado- res personales: . En un principio, fue creado para personal de oficinas, todo su entorno estaba diseñado para que a los usuarios les resul- que necesitabas en los viajes. Todo el programa de Windows simulaba una realidad: la de los oficinistas. Todas las aplicaciones modernas simulan una realidad, desde las que usamos nejo de una empresa y los videojuegos de realidad virtual, que simulan la reali- dad sensorial. Todo programa que escribas simulará una realidad, modelará una realidad. Al proceso de tomar una realidad, separarla en partes y crear un modelo le lla- mamos . Principio No. 3 Los programas manipulan a los datos, los da- tos son información que es manipulada por los programas. ¿Es un trabalenguas? No, pero casi. La diferencia entre programa y datos es esencial en la programación. Un claro ejemplo lo tenemos con es el programa, el archivo *.docx es el dato. Los programas ejecutan operaciones sobre los datos. Los archivos de datos son simplemente almacenes de información estructurada.
  • 9. Principio No. 4 Todo programa puede ser reducido a una lista ordenada de instrucciones Todo programa no es más que una lista de instrucciones. ¡De verdad! Cual- quiera, en cualquier lenguaje. Un ejemplo, rápido: Una sencilla suma, las ins- trucciones serían las siguientes: 2. Hacer la suma. 3. Mostrar el resultado. Es una lista de instrucciones que deben ejecutarse , para que la computadora pueda hacer su trabajo correctamente. Cambia el orden u omite alguna, y el resultado no será el esperado. Principio No. 5 Todo programa se basa en una Entrada, un Proceso y una Salida Todos los programas toman una entrada Les aplica un proceso Y produce un resultado, una salida ( mensajes en pantalla, un archivo, un correo, etc. ) Un programa más complejo puede componerse de más programas o de fun- ciones, que pueden reducirse a lo mismo: .
  • 10. El programa de suma es un claro ejemplo: Toma una entrada Les aplica un proceso (la suma) Y arroja una salida (el resultado de la suma) Cada vez que tengas problemas con un desarrollo, respira profundamente y recapitula los principios, te darán luz sobre el problema y seguramente serás capaz de encontrar una solución. El siguiente paso es explicar cómo es que funcionan las computadoras y los programas, para que sepamos qué es lo que estamos haciendo a la hora de programar y eliminemos la mayoría de las áreas grises, pero antes, repasemos los principios que son la base de la programación:
  • 11.
  • 12. -
  • 13. Para muchos de nosotros esto es una caja negra que no comprendemos y cuando queremos aprender a programar, nos vamos directo al código. Esto es un drama, porque podrás aprender el lenguaje y la codificación pero en realidad no sabes lo que estás haciendo. Sin embargo, saber cómo funcionan las computadoras te da una tranquilidad a la hora de diseñar y desarrollar programas, porque al fin y al cabo todo funcio- na de una manera lógica y común, además de que sabes perfectamente que es- tás haciendo en cada paso del proceso, sabes que esperar y cómo manejar ca- da situación. Pues bien, comencemos: Las computadoras funcionan simulando al cere- bro humano, mejor dicho, al sistema nervioso. En términos muy simples, con el solo propósito de hacer una analogía, el sistema nervioso se compone del cerebro, médula espinal y terminales nerviosas. El cerebro toma las decisiones, realmente nunca duerme, mantiene con- trol sobre todas las funciones del cuerpo, permanentemente. Se comunica con las terminales nerviosas por medio de la médula espinal para ejecutar una ins- trucción, desde seguir respirando automáticamente hasta mover los dedos pa- ra teclear en la computadora. Gran parte del cerebro es representado por la memoria. Con la memoria podemos repetir acciones, puesto que las recordamos. ¿Te ha pasado que de repente te tienes que esforzar para recordar algo hasta que finalmente lo re- cuerdas? Pues esto es porque existe memoria de corto plazo y de largo plazo. En la de corto plazo está lo que eres capaz de recordar al instante y en la de largo plazo lo que se te queda para siempre. En realidad nunca olvidamos nada, pero batallamos mucho para evocar pensa- mientos que casi nunca recordamos, pero ahí están. Pues a las computadoras les sucede lo mismo. Cómo Funcionan las Computadoras
  • 14. Las computadoras emulan estas funciones: El cerebro es el CPU, la unidad central de procesamiento, la que reali- za los cálculos. Tenemos a la memoria RAM, Random Access Memory, Memoria de Acceso Aleatorio, es la que podemos acceder inmediatamente. Tenemos a los discos duros, la memoria de almacenamiento perma- nente, podemos acceder a ella, aunque de manera más lenta que la RAM. Tenemos la tarjeta madre permite que todos estos componentes se comuniquen. Y tenemos los periféricos, nuestras terminales nerviosas de comuni- cación: El monitor, las impresoras, los teclados, el mouse. Estos son los ojos, oídos y manos de la computadora, lo que utiliza para comu- nicarse con las personas.
  • 15. Ahora vamos a establecer los principios de la programación pensando en este ejemplo: Comunicación: Los componentes de deben comunicar para que la computadora funcione, lo hacen a través de la tarjeta madre y sus cir- cuitos, la médula espinal y las terminales nerviosas. Abstracción de la Realidad: Emula el sistema nervioso humano, Entrada - Proceso - Salida el procesador, valga la redundancia, realiza los procesos. ¡Oye! Espera un momento, ¿Qué hay de los otros dos principios? ¿Datos y listas de instrucciones? Pues bien, para poder verlos claramente y eliminar esas partes de las áreas grises, tenemos que ver bien primero cómo funcionan los programas, lo cual veremos a continuación.
  • 16.
  • 17. -
  • 18. Un programa es una a una computado- ra para que pueda realizar una serie de operaciones por sí misma. Esto requiere de , tal como en la vida real. Supongamos que es- tás bajo la supervisión de alguien - tu jefe, tu cliente que te pide un trabajo, tu maestro o tu mamá que te pone a hacer quehaceres, depende de la época de la vida en que te encuentres en este momento -. Para realizarlas requerirás de esfuerzo y que hacer, insumos y/o dinero si tienes que hacer unas compras. Pues a las computadores les pasa lo mismo, requieren de para llevar a cabo las instrucciones. Estos son tiempo de procesador ( el uso del procesador se mide en tiempo ) y memoria, tanto RAM como ROM, principalmente. Pues bien, cada programa necesitará cosas, ya sea momentá- neamente en la RAM o permanentemente en disco. Necesitará de para hacer los cálculos y a los periféricos para informar los resul- tados. Para cualquier cálculo que tenga que hacerse, se consume, se gasta de , desde una simple suma hasta operaciones financieras com- plejas. Para almacenar información se gasta , RAM para guardar mo- mentáneamente todo lo que se esté utilizando en el momento y ROM (disco) para guardar todo lo que necesite historia o tenga que utilizarse posteriormen- te. ¿Has cocinado alguna vez? ¿Dibujado? ¿Realizado alguna artesanía o proyecto escolar? Mientras estas realizando el trabajo tienes todas tus herra- mientas a la mano y estás ocupado, concentrado en el trabajo (cocinando, di- bujando, cortando, etc.). Pues a la computadora le pasa lo mismo. Cómo Funcionan los Programas
  • 19. Tiene que tener a la mano lo que necesita (ahí se gasta la memoria RAM) y está ocupada pensando en los cálculos que tiene que hacer ( ahí se gasta el tiempo de procesador). Puede que necesite estar escribiendo en disco, hacien- do archivos temporales o leyendo archivos necesarios para la operación. En tú caso, finalmente terminas el trabajo y entregas un , un plati- llo, un plano, una maqueta, etc. Posteriormente limpias el lugar de trabajo, ti- ras la basura, lo que sobró (la piel de la verduras, las rebabas y tiras de papel, etc.), limpias la mesa y queda lista para comenzar otro trabajo. Pues la computadora hace lo mismo, entrega el ya sea un docu- mento en disco, imprimiendo un reporte o mostrando una pantalla determina- da. Después, también saca la basura, borra de la todo lo que ya no ocupa y libera , listos para ser utilizados de nuevo. Entre más complejo el programa y más trabajos realice, más recursos con- sume, tanto memoria, como procesador y disco. ¿Te ha pasado que cuando uti- dos, y los estás consumiendo mucho, tanto que la computadora no puede res- ponderte como debería. Cuando varias aplicaciones se ejecutan al mismo, todas consumen la misma fuente de recursos. La RAM es como espacio que se agota, como espacio en la mesa en la que vas poniendo cosas y el disco duro, igual. El procesador en cambio, es uno solo y atiende a varias procesos al mismo tiempo, por lo que ¡Las computadorasseparecenmásanosotrosdeloque pensamos! Fuerondiseñadasemulandonuestrocerebro,nuestrasfuncio- nesnerviosas,porlo tanto,esmejorpensarenellascomoun modelo denosotrosyno comosolo robots,paraquesus funcionesnosresultenmásfamiliares. ¡TIP!
  • 20. Cómo puedes ver, ahora podemos apreciar claramente los dos principios faltantes, Datos y Lista de Instrucciones, pues cada programa es una lista de instrucciones que toma datos, los procesa y entrega un resultado, utilizando los recursos a su disposición. Pero a todo esto, ¿Qué es un proceso?. Pues bien, lo veremos a continua- ción.
  • 21. Para el procesador todo es un proceso, valga la redundancia, es decir una que tiene que hacer, desde una simple suma hasta una operación estadística compleja. Las aplicaciones pueden generar uno o más procesos, para enviarlos al procesador, así: ¿Qué es un Proceso? Un procesador, en su hardware, puede tener varios núcleos, sin embar- go, para fines ilustrativos y tratando de simplificar en aras de la comprensión, lo trataremos como si siempre fuera uno solo. Como es uno solo y tiene muchas tareas que hacer al mismo tiempo, lo que hace para dar la impresión de que en realidad las ejecuta paralelamente es avanzar en una, suspenderla, avanzar en la siguiente, suspenderla, avanzar en la siguiente y así sucesivamente. De esta manera, puede atender múltiples solicitudes de los programas.
  • 22.
  • 23. -
  • 24. Ahora que ya sabemos como funcionan tanto las computadoras como los programas, es hora de que veamos como es que interactuamos con ellas. Para que puedas utilizar una computadora intervienen tres programas prin- cipales: El o boot, el y las , en ese or- den. La computadora primero ejecuta un proceso de arranque, luego cede el con- trol al sistema operativo (el programa principal) y este pone a tu disposición las aplicaciones. ¿Cómo Inter actuamos con las Computadoras?
  • 25. Las computadoras están altamente organizadas y antes que nada, verifica que todo funcione correctamente (todos los componentes que acabamos de mencionar, desde el CPU hasta los periféricos). Este es el proceso de "boot" o arranque y lo hace una parte fundamental aunque muy básica de la computadora llamada el BIOS ( trol al sistema operativo. El arranque El Sistema Operativo Es el programa más importante, ya que sirve de intermediario, de intérprete entre la computadora central y todos sus componentes. Es él quien interpreta las órdenes (los comandos) y las solicita ejecutar a los componentes. Para en- tenderlo más fácilmente, tomemos por ejemplo a los periféricos: Una impreso- ra. Una impresora tiene que comunicarse con la computadora. Para ello, necesi- tarán hablar el mismo lenguaje, y no todos los componentes y computadoras hablan el mismo lenguaje. Pues bien, la impresora viene con el diccionario de su lenguaje (llamado dri- ver), se lo entrega el sistema operativo, que lo tiene que aprender para poderle hablar (por que así son de divas las impresoras). Entonces podrá comunicarse con ella y podrás mandar a imprimir. Es como una persona extranjera que viene a vivir a tu ciudad o laborar con- tigo y trae consigo su traductor portátil, para que te puedas comunicar con ella y puedan trabajar juntos. Y así es con todos los componentes, con los discos, las memorias flash, los teclados, ratones y monitores. El sistema operativo es el encargado de comuni- carse con los periféricos. Es el que maneja los archivos. El que corre los pro- gramas. Es el administrador de la ciudad informática.
  • 26. Pues bien, una vez que arranca la computadora y cede el control al sistema operativo, ya podemos utilizarla. Simplemente nos "promptea", es decir, se queda esperando una orden, un comando, como si se nos quedará viendo con cara de "¿ahora qué hago?". Allí es cuando entran las aplicaciones. Las Aplicaciones Las aplicaciones son los programas que diseñamos para un sistema operati- vo, son los diccionarios de las impresoras, los drivers, la calculadora y el pro- cesador de texto. Son programas específicos para una función en particular. Las aplicaciones corren, es decir, se ejecutan, utilizando un sistema operati- vo. Pensemos por ejemplo en el procesador de texto: El procesador de texto, para grabar nuestros archivos, tiene que pedirle el listado de directorios al sistema operativo y pedirle permiso (así es, hay que pedir permiso siempre) de escribir. Tiene que decirle que imprima y el sistema operativo realizará la comunicación con la impresora.
  • 27. Es importante tener una clara imagen mental de dondé estamos. Nuestro código reside encapsulado dentro de nuestro programa. Un programa es capaz de ejecutarse, y puede ser un archivo ejecutable (con extensión *.exe) hasta una serie de scripts ejecutados por un servidor de aplicaciones o intérprete vía ¿Dónde estarán nuestros programas? La comunicación es siempre: Inclusive cuando utilizas el explorador de Windows o la interfaz de línea de comandos, estas son también aplicaciones intermediarias entre el usuario y el Sistema Operativo. Sin embargo existen muchos tipos de aplicaciones: web, móviles, de escrito- rio, etc. Hoy en día interactuamos con todas al mismo tiempo, lo mismo utili- zamos nuestro software de oficina como nuestro correo, redes sociales y apli- caciones móviles. Cada uno existe en un contexto diferente, tan así que es prácticamente otro universo. Es importante conocerlos y comprenderlos para poder utilizarlos, sa- car el mejor provecho de ellos y producir excelentes programas para cualquier plataforma o arquitectura. Tan es así, que los universos de la aplicaciones me- recen su propio capítulo.
  • 28.
  • 29. - -
  • 30. Aunque todos los programas comparten los mismos principios básicos, no todos pertenecen al mismo conjunto. Son muy diferentes las aplicaciones web a las de escritorio, y éstas difieren mucho de las móviles. En escritorio tenemos servicios o daemons, aplicaciones de consola y de interfaz gráfica. Son universos distintos. Tienen una forma muy distante de pensarse, de abstraerse, pero todos se rigen bajo los mismos principios. Podemos enumerar los principales universos así: Las aplicaciones de consola. Los servicios o daemons. Las aplicaciones de interfaz gráfica para los diversos sistemas opera- tivos. Las aplicaciones web. Las aplicaciones móviles. Cada uno de ellos es diferente pues utiliza diferentes recursos, diferentes componentes, y tiene diferentes objetivos. Los Universos de las Aplicaciones Las Aplicaciones de Consola Aunque todos los programas comparten los mismos principios básicos, no todos pertenecen al mismo conjunto. Son muy diferentes las aplicaciones web a las de escritorio, y éstas difieren mucho de las móviles. En escritorio tenemos servicios o daemons, aplicaciones de consola y de interfaz gráfica. Son universos distintos. Tienen una forma muy distante de pensarse, de abstraerse, pero todos se rigen bajo los mismos principios.
  • 31. Son aplicaciones que se están ejecutando permanentemente en el fondo, sin que las veas. Son invisibles al usuario. Están monitoreando, esperando eventos, funcionando como servidores, siempre presentes. Son como el subconsciente de la computadora. Su propósito es estar siempre activo, a la espera de peticio- nes o administrando recursos. Los Servicios o Daemons Los servicios En esta clasificación caen las tareas programadas, las alertas, los motores de bases de datos y los servi- dores web, ejecutándose en modo silencioso hasta que las necesitas. Normalmente son las aplicaciones las que se comunican con ellos, y el usuario con las aplicaciones, tal como con el sistema operativo, pero para ta- reas muy específicas, como cuando hacemos una consulta a la base de datos, un servicio es quién la recibe, la realiza y nos devuelve la información, echan- do mano para ello del sistema operativo, otros servicios y procesos.
  • 32. Aquí está toda la ofimática (Word, PowerPoint, Excel), los programas de di- seño, los sistemas operativos basados en ventanas y en general toda aplicación con una interfaz gráfica. Estas aplicaciones tiene doble complejidad, la funcional y la gráfica. En realidad, siguen siendo programas con comandos, pero la forma de comunicar- se con el usuario cambia, de simple texto a dibujos (todo es un dibujo en las GUI's). Aquí te comunicas con clics y eventos con la computadora. Las Aplicaciones de Escritorio, o de Interfaz Gráfica Similares a las aplicaciones gráficas, las aplicaciones web tienen funcionali- dad con una interfaz gráfica, agregando que tiene que adaptarse a recursos más limitados y una conectividad más intensiva. Como recordaremos, las aplicaciones corren sobre recursos, que son admi- nistrados por el sistema operativo o directamente por la aplicación. Estos re- cursos son los componentes de la computadora, como la memoria RAM, el dis- co duro, el procesador, los periféricos, etc. Aplicaciones de Escritorio Word, Excel, Power Point, Photoshop, Autocad, Paint y en general todas los programas con me- nues, barras de herra- mientas y áreas de traba- jo. Las Aplicaciones Web
  • 33. Cuando una aplicación corre bajo el sistema operativo, como cuando inicias Word, por ejemplo, esta tiene acceso a todos los recursos de la computadora, administrados claro, por el sistema operativo. Es decir, puedes guardar en dis- co tus archivos, leer otros, hacer un archivo grande y disponer de memoria RAM para esto, mandar a imprimir tus archivos, etc. Cuando una aplicación web corre lo hace bajo otra aplicación, no sobre el sistema operativo, lo hace bajo el explorador (como Chrome o Firefox). Es el explorador quien se tiene que comunicar con el sistema operativo para pedirle que guarde un archivo o que imprima una página web, añadiendo otro nivel de complejidad, otra capa de abstracción. Los smartphones y tablets son mini computadoras, y tienen su propio siste- ma operativo (iOS, Android), sin embargo, tienen recursos más limitados - por ahora - que las laptops y computadoras de escritorio (RAM, procesador, disco duro). Las Aplicaciones Móviles
  • 34. Además, al ser requerido que sean multifuncionales (hablas por teléfono en medio de una charla de mensajes de texto mientras navegabas) igual que una computadora pero como no tiene los recursos de la computadora, las aplica- ciones tienen que estar diseñadas para hacer uso más eficiente de los recursos. Es muy parecido a realizar aplicaciones web, todas las llamadas a internet son asíncronas, por ejemplo. Pero, Luis, ¡Lo hiciste de nuevo! ¡Soltaste un montón de jerga como si todo el mundo la entendiera! ¿Llamadas a internet? ¿Asíncronas? ¿Qué es eso? Pues bien, es momento de contarte una pequeña historia, así que haremos un parén- tesis en este capítulo. Aplicaciones Móviles Las aplicaciones móviles tienen particu- laridades notorias, como ser pausadas, resumidas, permanecer en el fondo y un consumo de recursos limitado que re- quiere un manejo mucho más cuidadoso que, por ejemplo, las aplicaciones de escritorio. Muchos de ustedes muchachos no se acordarán por que están muy chavos, pero hubo una época en que los celulares solo servían para hablar, y no todos teníamos uno, y para acceder a internet, lo hacías con una línea telefónica a rapidísimos 56 kbps. No, no es broma, dije 56 kilo bytes por segundo, así co- mo lo leen.
  • 35. Los módems venían incluídos en las computadoras, unos armatostes enor- mes con monitores CRT aún más grandes. Le conectabas el cable de tu telé- fono y la usabas para " " llamar a tu proveedor de Internet. En mi caso era AOL. Dejaba a la casa sin teléfono La comunicación entre las computadoras funciona a través de llamadas. Cuando te conectas a Internet, lo que en realidad está pasando es que " " a Google por ejemplo, y le solicitas te muestre su página. Funciona así: Tu explorador llama a Google, a la dirección IP 8.8.8.8 (que se- ría como su número de teléfono) al puerto 80 (que sería como su extensión) y como este es público, sería como marcar al 030 y pedir la hora, Google te res- ponde con su página de inicio, donde puedes teclear lo que buscas.
  • 36. Y así cada sitio, cada aplicación, tiene su dirección (teléfono) y sus puertos mado a tu casa, te preguntan por alguien y tu respondes "¿Quién habla?"? Pues es lo mismo con las aplicaciones, algunas te van a preguntar quien eres, como las aplicaciones web de correo (Gmail, Hotmail, Yahoo, etc) que te tienes que identificar antes de poder ver tus mensajes. Cómo puedes ver, todo son llamadas, en estricto apego a los principios, to- do es comunicación, tanto hacia afuera como dentro de las computadoras. Ahora que conocemos como funcionan las computadoras y los programas, podemos proceder al siguiente paso: ¿Sabes cual es la parte más importante de un programa? La especificación funcional. Acompáñame al siguiente capítulo para mostrarte por qué.
  • 37.
  • 38. -
  • 39. La especificación funcional no es otra cosa que un escrito donde diga espe- cíficamente que va a hacer el programa. Como esta es la parte más importante del programa, me gusta decir el siguiente mantra: Una Especificación Funcional es simplemente una descripción de las ins- trucciones que deberás codificar para comunicarle a la computadora lo que tie- ne que hacer. Eso es todo. Todo se trata de contestar preguntas: ¿Qué estoy comunicando? ¿Qué realidad estoy modelando? ¿Qué datos necesito? ¿Qué datos deseo como resultado? ¿Cuáles son los pasos para obtener este resultado? Una vez que tengas las respuestas, programar cualquier cosa solo es cues- tión de traducir las instrucciones específicas a la computadora, en un lenguaje que ella comprenda. Es muy importante que tomes en cuenta que las computadoras son tontas, no deducen o infieren lo que pretendes comunicarles, son incapaces de Cómo puedes darte cuenta, la especificación funcional es la materialización de los principios básicos de la programación. Pero no creas que solo aplican en esta fase, debes tenerlos presentes durante todo el proceso de desarrollo de software. Tener una especificación funcional es tener la mitad del programa hecho. La Especificación Funcional
  • 40. El punto más importante a tomar en cuenta es que una especificación FUN- CIONAL debe estar escrita COMPLETAMENTE desde el punto de vista del USUARIO cir, describe el qué, no el cómo. Este es uno de los retos más grandes para un programador, porque automá- ticamente piensas en cómo lo vas a desarrollar, en las herramientas que vas a utilizar, en los lenguajes, es natural. Es por eso existen personas especializadas para escribir especificaciones funcionales, sin embargo, si trabajas como independiente o en tus proyectos personales o en compañías muy pequeñas, es muy probable que tengas que escribir las especificaciones tu mismo. Piensa en una especificación como una novela. Es mejor escribir algo intere- sante que dormir a todos con cosas técnicas y peor aún, con un documento orientado a la calidad de la documentación en lugar de a comunicar (ya sabes, esos documentos que tienen versión, autor, revisiones, tabla de contenidos y rollo, mucho rollo). Por el contrario, la especificación ha de ser más narrativa, y como en cada narración, se tiene un planteamiento, un nudo y un desenlace. El planteamiento debe poner en sintonía al lector, debe dar una idea clara de cuál es el problema a resolver y en términos generales qué es lo que hará el programa. Aquí establecemos los distintos escenarios que vamos a desarrollar. Contiene de qué se trata el programa y de que no, es decir, el alcance del mis- mo. El nudo es el detalle de la funcionalidad, es la descripción del programa en cada escenario. En el desenlace cerramos atando cabos, estableciendo temas pendientes si los hay, temas a los que hay que darles seguimiento, si los hay también y ce- rramos responsabilizándonos de la especificación. Una novela necesita un au- tor también. Para una mejor comprensión, vamos a hacer un ejemplo de una especifica- ción funcional, pequeña y simple, en aras de la comprensión, sobre una pieza de software para administrar usuarios.
  • 41. UserMan Administrador de Usuarios Descripción: UserMan es un programa para administrar a los usuarios de la compañía Decisiones Diferentes S.A. de C.V.. Esta compañía necesita conocer cuántos usuarios tiene, quienes son y cómo comunicarse con ellos. Da de alta del usuario. Lista la relación de usuarios. Consulta información de un usuario en específico. Cambia la información del usuario. Da de baja a los usuarios. No monitorea el uso de las cuentas. No auditar actividades de los usuarios. Para dar de alta un usuario: Entras al sistema, con tu propio usuario y con- Para consultar información de un usuario: Entras al sistema, con tu propio tarán los usuarios en pantalla. Ubicas al usuario que quieres consultar y en su del usuario, misma que puedes modificar. Al terminar, si haz realizado cam- Como podemos ver, una especificación funcional nos es otra cosa que una descripción de cómo funciona el programa. Una vez que la tenemos, todo lo que tenemos que hacer es traducir de nuestro lenguaje al lenguaje de las computadoras, codificando un programa.
  • 42.
  • 43. Los lenguajes tienen por objetivo representar instrucciones de forma clara, concisa y específica, para que pueda ser comprendidos y ejecutado por una máquina. manera eficiente y ágil en el lenguaje de las computadoras, para ello se inven- taron los lenguajes de programación, que pueden ser comprendidos por los humanos. Las instrucciones en estos lenguajes son traducidos al lenguaje máquina de las computadoras por un programa especial, que puede ser un o un . Son formas de denominar a las dos diferentes for- mas de ejecutar un programa Pues bien, un programa, por si solo, es solo un ar- chivo más, pero un archivo especial, que contiene instrucciones para la compu- tadora. A la acción de la computadora de realizar las actividades de estas ins- trucciones la llamamos ejecución. Los Lenguajes de Programación Un toma el código fuente de los programas (las ins- trucciones en el lenguaje de progra- mación en forma de archivos de tex- to) y produce un archivo binario eje- cutable (en lenguaje máquina, ceros y unos), que puede ser ejecutado directamente por la computadora (realizar las funciones que escribi- mos en el programa). Un es un programa que lee las instrucciones del código fuente (llamado script, como en directamente el mismo, es decir, no produce un archivo ejecutable, sim- plemente va ejecutando instrucción por instrucción.
  • 44. Por lo tanto, existen lenguajes compilados e interpretados, según sea su manera de funcionar. ¡Un lenguaje es un programa también! Es como aprender otro idioma ¡Esa es la realidad que simulan! Cada lenguaje tiene una manera distinta de establecer estas instrucciones, pero son comunes a todos los len- guajes. En resumen: Las computadoras sólo entienden de ceros y unos. Los lenguajes son para nosotros, no para ellas. Hay programas especiales que transforman nuestro código en ins- trucciones para la computadora. Los hay de dos tipos: Producen un archivo ejecutable. Ejecutan directamente el código Los Niveles de los Lenguajes de Programación esto le llamamos un bit. Al conjunto de 8 bits, le llamamos un byte. Estas son unidades de memoria, les de millones de bytes: 1 Gigabyte = 1 000 Megabytes = 1 000 000 Kilobytes = 1 000 000 000 Bytes. bemos que hay memoria RAM y memoria ROM. Pues bien, todo este rollo es para decirte que un programa en general lo que hace es mover memoria. Re- cordemos el principio de datos y de aplicaciones, las aplicaciones manipulan datos y los datos son manipulados por las aplicaciones.
  • 45. Al día de hoy existen lenguajes realmente bellos, como Scala, Python o C#, en los que es un placer programar. Pero esto no siempre fue así. Como dije, un programa en esencia mueve memoria, pues bien, la primera implementación o Acordamos de que prácticamente es imposible que le hablemos Pues bien, la siguiente aproximación es el lenguaje ensamblador. Este es un ejemplo de código ensamblador, tomado de la Wikipedia: ---------------------------------------------- ---------------------------------------------- --------------------------------------------- ---------------------------------------------- En este lenguaje se programa para los procesadores, aquí ya es posible para el humano escribir programas, pero aun así es muy complejo. Lo llamamos entonces de Nivel Bajo y el cielo es nuestro lenguaje humano. Como es aún muy difícil para un humano programar en ensamblador (o por lo menos toma mucho tiempo y las aplicaciones se quieren crear con menos esfuerzo) se crearon los lenguajes que utilizan los compiladores - que se crean en ensamblador - para traducir a lenguaje máquina, como C. En este lenguaje se programan los sistema operativos, por ejemplo (y muchas cosas más, desde calculadoras hasta juegos, claro está). El lenguaje C es un ejemplo de lenguaje de Nivel Intermedio, pues puede ser utilizado para programar desde kernels hasta programas de oficina.
  • 46. Este es un ejemplo de programa en C: Pero aún se necesita de cierto esfuerzo considerable para programar aplica- ciones estrictamente funcionales en C (las que usa uno en la vida diaria, como suite de oficina y cosas por el estilo) y se quieren aún más rápidas y manteni- bles (que cualquier otro programador las pueda modificar después de hechas), por lo que se crearon lenguajes de Alto Nivel, como C++, capaces de imple- mentar paradigmas de programación como Orientación a Objetos (un poco más adelante lo veremos). El siguiente es un ejemplo: --
  • 47. C++ es como su nombre lo indica, un C mejorado, es un lenguaje que facili- ta mucho las cosas, en comparación con C, claro está. Pues llegamos al nivel alto, ¿Que fué lo ocurrió después? Después el proble- ma fue la arquitectura, las plataformas, (Windows, Linux, Mac). Estas "marcas" utilizan diferentes sistemas operativos, diferentes configuraciones (acomodo de componentes, etc). Por lo tanto, si queremos que un programa funcione tanto en Linux como en Windows como en Mac, tenemos que hacer tres programas diferentes. Debi- do a esto, se crearon las Máquinas Virtuales, como Java Virtual Machine. En estas máquinas virtuales, se desarrolla una sola vez para todas las plata- formas, es decir, un solo programa, para la máquina virtual, no para el sistema operativo, no para Window, ni para Linux, se programa utilizando el lenguaje, marco de trabajo (framework) y componentes de Java Virtual Machine. Luego, se instala la JVM en cada equipo que se quiera que funcione el pro- grama y podemos utilizar el mismo programa. Es decir que una Máquina Virtual simula un sistema operativo para que la aplicación corra. Tal como en el ejemplo de la aplicación web, que era el explo- rador el que se comunicaba con el sistema operativo y no la aplicación, aquí es la máquina virtual la que se comunica con el sistema operativo y no la aplica- ción, esta se comunica con la máquina virtual. Es un intermediario. Son los desarrolladores de la Java Virtual Machine los que se encargan de hacer un programa por plataforma, no el desarrollador de las aplicaciones. ¿Interesante verdad? ¿Que fue lo que siguió? Los Frameworks - marcos de trabajo -. Son colecciones de que ayudan en el desarrollo de progra- mas. Una librería es un programa también, pero en vez de ser diseñado para co- rrer (ejecutarse) esta diseñado para ser usado por otros programas. Por ejemplo, podemos crear un programa para buscar archivos. Si lo hace- mos una librería, muchos otros programas podrán utilizarla y realizar las mis- mas funciones, sin tener que programar la parte de buscar archivos. Genial! ¿No?
  • 48. Como podemos ver, cada vez se crea una capa sobre otra, un programa que abstrae, emula o modela a otra para asemejarse más y más a la forma en que los humanos nos comunicamos, conforme a los principios básicos de la pro- gramación y acortar la brecha de comunicación entre humanos y máquinas, ha- ciendo cada vez más sencilla la labor del programador en la codificación y per- mitiendo enfocarse más en lo realmente importante: La resolución del proble- ma. Pues bien, un framework es un montón de librerías, que resuelven un mon- tón de problemas para que el programador se enfoque en funcionalidades es- pecíficas. Java tiene su framework, así como el .Net framework, que es a su vez una máquina virtual, similar a Java (es que a Microsoft le dieron celos, pero esa es otra historia). En Resumen:
  • 49.
  • 50. Existen diversos paradigmas de programación, que son diferentes formas de programar, generalizadas en todo un lenguaje, ambiente o hasta estándar. Para comprenderlo mejor, comencemos por explicarlos un poco. Los Paradigmas de Programación Es como una cadena, como un sistema en serie, como el alfabeto, a la A le estamos en un estado diferente del mismo. Es el más sencillo, por ello es el primero que aprenderemos. Si conoces algunos lenguajes, los ejemplos son C, Basic y Pascal. Pasemos a crear la imagen mental de este paradigma, que como esta: En la Programación Procedural o Imperativa, un paso siempre sigue a otro, no podemos llegar al dos sin el uno, la aplicación o programa se en- cuentra siempre en un estado particu- lar. Los principios a los que más se ape- Conjunto de Instrucciones Entrada Proceso Salida El Paradigma Procedural o Imperativo
  • 51. En la orientación a objetos, los datos simples se vuelven complejos (tranquilo, complejo quiere decir que tiene varias partes, no que es complica- do) al componerse de más datos. Esto es una estructura de datos, es decir, dos o más datos organizados de una manera lógica, que representa una idea, concepto o modelo de la realidad, dentro del programa, es a lo que llamamos objeto. de los principios de la programación, puesto como prioridad. En este, lo pri- mordial son los objetos, los cuales tienen características y funcionalidades, tal como en la vida real. ¿Cómo está esto? Pues aunque se oye complicado, es bien sencillo, por ejemplo: Un auto. Un auto tiene características tor, etc. Pues bien, el objeto que represente a un auto las puede tener también. En la orientación a objetos, a estas características les llamamos propiedades. Un auto tiene funcionalidades también, es decir, acciones: Encender, mover- se, frenar. A estas funcionalidades, en la orientación a objetos, le llamamos métodos. Luego, un objeto se compone de propiedades y métodos. Como en todas las cla- se de objetos, los autos en sí son la materialización de esta clasificación. Una clase es una de un objeto. Un objeto tiene identidad carro es igual a otro, tienen características que los hacen únicos, como las pla- cas o el número de serie. Pero todos los automóviles tienen números de serie. Las clases son solo el listado de características y funciones que debe tener un objeto, sin identidad. Como un formato sin datos, como una plantilla, un molde que usas para crear galletas. Luego, a partir de las clases creamos los objetos, y como los objetos son la materialización de una clase, en programa- ción, como todo es virtual, decimos que un objeto es una instancia de una cla- se. El Paradigma de Orientación a Objetos
  • 52. Para obtener una buena imagen mental del paradigma, utilizaremos una pe- queña forma que representa a una clase, la cual tiene una identificación, pro- piedades y métodos. La imagen mental es como está: Una clase tiene Nombre Características, que son Propiedades Y funcionalidades, que son Métodos. Nombre Propiedades Métodos Para comprenderlo mejor, veamos el ejemplo del auto:
  • 53. Este es un paradigma bastante interesante, ya que su principal prioridad es la declaración de lo que el programa la marcada diferencia de que no especifica un flujo, sino simplemente declara, como su nombre lo indica, las instrucciones a seguir, comúnmente por un mo- tor. Para comprenderlo mejor, estableceremos como ejemplo de este tipo de programación al HTML, lenguaje de marcado de hipertexto. En este lenguaje simplemente declaramos lo que queremos visualizar: Un encabezado, un pá- rrafo, una lista, una tabla, etc. Quien realmente realiza el trabajo es el explora- SQL solo especificamos que datos queremos consultar y es el motor de base de da- tos quien realiza las operaciones necesarias para mostrarnos el resultado. Tal vez esto no te diga mucho, si no conoces absolutamente nada de estos lenguajes, así que vamos a ejemplificarlo de mejor manera: Hacer un pedido en línea. Cuando solicitamos algún producto o servicio, desde comprar una ca- miseta hasta pedir una pizza, nos enfocamos en declarar que es lo queremos, sin preocuparnos del cómo es que el producto llegará a nosotros. ¿Haz comprado un sándwich en Subway? Hay muchas combinaciones y solo tienes que declarar que es lo quieres: Pan: Queso: Carne: Término: Verduras: . Aderezos: En combo: El Paradigma de Programación Declarativa
  • 54. Este tipo de enfoque es el declarativo, y es un enfoque de gran utilidad para los casos como los que mencionamos, ya que sería, de verdad, muchísimo más trabajo (y te lo digo por que lo he hecho) implementar las funcionalidades de los lenguajes declarativos con programación procedural. Bastante más trabajo. La imagen mental que crearemos para este paradigma es una declaración, como esta: Cuando pienses en programa- ción declarativa, piensa en un documento, una declaración de- tallada de funcionalidades y pro- piedades, más que en un flujo. Este paradigma las funciones mandan y es especializado en programas ma- temáticos y estadísticos. Una función es un operación o método, una descrip- ción de funcionalidad, como lo mencionamos en la Orientación a Objetos, con la particularidad de que devuelve un valor siempre, por tanto el principio en el Proceso Como su orientación es matemática, pongamos como ejemplo la suma: Es una función que toma dos números, les aplica un procedimiento ( los suma ) y devuelve un resultado. A + B = C Esto es una expresión matemática C = A,B Aquí está matemáticamente representado por C = SUMA(A, B) Aquí SUMA es la función que representa la suma, en la misma expre- sión. El Paradigma de Programación Funcional
  • 55. Como en este paradigma todo se trata de funciones, es posible almacenar- las en memoria, reutilizarlas y manejarlas como si fueran datos, lo que nos brinda grandes posibilidades. Sé que todo esto aún es muy complejo para comprenderlo, si no tienes ex- periencia programando, pero no te preocupes, ya lo iremos descubriendo en su momento. El lenguaje más representativo de programación funcional es LISP, pero el más popular, emergente y utilizado hoy en día es Javascript. Es un lenguaje que vas a conocer a fondo si te da por el desarrollo web, ya que es el lenguaje que utilizan los exploradores web, como o , pa- ra implementar dinamismo a sus páginas, desde validaciones de formas, ani- maciones y aplicaciones completas. Realmente Javascript no es un lenguaje funcional completamente como Lisp, y hasta puede ser utilizado tipo procedural o con orientación a objetos, pero siempre tendrás que usar una gran cantidad de funciones y es mucho más cómodo y divertido utilizarlo de esta manera, pero no nos adelantemos, lo veremos dentro de poco. La imagen mental que tendremos entonces será la del principio de Entra- da Proceso Salida, en expresión matemática:
  • 56. Este paradigma es el menos popular de todos, quizás por que es el que más necesita de pensamiento abstracto. Es un serie de reglas lógicas, llamadas he- chos, que se aplican para deducir un resultado. Prolog es su lenguaje más representativo y se utiliza mucho para (vaciar bases de conocimiento en un programa). De por sí la lógica es una ciencia dura de aprender, pues tenemos que ser explícitos con lo que estamos acostumbrados a ser implícitos, la programación lógica puedo serlo aún más, sobre todo si no conocemos el mundo de la pro- gramación antes. Siendo sincero, es de los paradigmas más bellos y elegantes, pero también alto, se necesitan conocimientos avanzados o una tendencia natural a este tipo de pensamiento y capacidad para expresarlo. No quiero asustarte, la verdad es que como programador no lo he utilizado mucho y aunque me gusta, no lo recomendaría para nada como paradigma de iniciación, por lo tanto en este libro es todo lo que leerás sobre él, como siem- pre, en aras de la simplicidad. Piensa en este paradigma como una ley, una serie de hechos establecidos. La programación lógica es una serie de hechos, reglas y con- sultas a la mismas. El Paradigma de Programación Lógica
  • 57.
  • 58. Cuando pregunté a mis colegas ¿ La mayoría me contestó: La declaración de variables, flujos de de- cisión, los ciclos, etc. Es decir, los principios de los lenguajes de programación. Estos son muy importantes, pero no son los principios básicos de la programa- ción, porque ¿De que te sirve saber un lenguaje si no eres capaz de determinar qué es lo que debes programar en este lenguaje? Absolutamente de nada. La utilidad de los principios básicos de los lenguajes se explota una vez que se han aplicado los principios básicos de la programación. Que esto quede muy claro. Ahora si, los principios básicos de los lenguajes de programación son los siguientes: Punto de inicio Todo programa contiene una instrucción principal que da inicio a la ejecu- ción de instrucciones. En c es la función main(), por ejemplo. Tipos de datos Los lenguajes manejan varios tipos de datos, como la computadora que tipo de datos vamos a usar) o pueden ser inferidos implí- Variables Los programas, para almacenar información temporalmente que puede va- riar, utilizan nombres simbólicos. Estas son las variables, son almacenamien- tos temporales en memoria RAM, es decir, la computadora se acuerda en ese ratito en que está funcionando el programa. Los Principios de los Lenguajes de Programación
  • 59. Ciclos Son tipos de instrucciones que nos permiten repetir otras instrucciones una y otra vez, mientras una condición se cumpla. Esta es la verdadera fuerza de las computadoras, los trabajos iterativos. Funciones Una función es método o procedimiento, un pequeño programa dentro del principal que realiza una serie de instrucciones y devuelve un resultado, por ejemplo, una suma ( tal y como lo vimos en el paradigma funcional ). Nos sirve para ahorrarnos código, ya que la podemos utilizar dentro de nuestro progra- ma cada que la necesitemos. Las listas o arreglos Son colecciones de variables, una serie de valores a los que accedemos me- diante una sola referencia. Con este conjunto de instrucciones podemos crear cualquier programa, desde una calculadora sencilla, pasando por lectura y es- critura de archivos, hasta un videojuego. Palabras Reservadas Las palabras reservadas son palabras que los lenguajes utilizan exclusiva- funciones y bloques de código, por ejemplo. Los Componentes Vamos a introducir el concepto de componentes. Como vemos en la ilustra- ción, varios elementos individuales se comunican entre sí. Esto es un sistema.
  • 60. Esto en español plano es un grupo de partes que se comunican entre sí para llevar a cabo una tarea. Veamos la siguiente ilustración: Podemos detectar los componentes de nuestro sistema: 1. El usuario somos nosotros mientras usamos el sistema. 2. El sistema operativo que utilizamos para comunicarnos con las apli- caciones. 3. El intérprete, que ejecuta nuestro programa. 4. Nuestra aplicación, el conjunto de instrucciones que le damos a la computadora. Cada uno de estos componentes realiza diferentes acciones y se comunica con otros mediante llamadas. ¿Recuerdas la anécdota del mundo sin banda an- cha? Allí hablamos de cómo todo es una llamada. Pues bien, por dentro de la computadora también, todo es una llamada. Como usuarios llamamos a las aplicaciones, lo hacemos mediante el siste- envíe a un programa que interpreta las instrucciones que programamos y nos devuelve una respuesta.
  • 61. ¿Visualizas los principios de la programación en el sistema? Todo es comunicación, una entrada, un proceso y una salida. Como ves, Pues bien, dentro de nuestro programa aplican de nuevo los mismos princi- pios, y también en la existencia de componentes y las llamadas. La sintaxis Los lenguajes tienen reglas. Nuestro español, el idioma inglés, el alemán, etc. Todos tienen reglas de cómo deben ir ordenadas las palabras para formar oraciones, como deben escribirse y los símbolos que deben utilizarse. Pues bien, los lenguajes informáticos no son la excepción. Tienen una sinta- xis específica que debemos respetar, caso contrario podemos tener errores en el programa y no funcionarán o no lo harán correctamente. Conclusión En general, la mayoría de los lenguajes, tanto procedurales como funciona- les como de orientación a objetos y hasta los lógicos, cuentan con estos princi- pios, y, según el paradigma, le agregan funcionalidades, apegadas a la filosofía del paradigma, como las clases en la orientación a objetos, sin embargo, en esencia, los principios son siempre los mismos.
  • 62.
  • 63. Necesitaremos conocimiento de sistemas operativos si vamos a ser progra- madores, pero no te preocupes, no vamos a comenzar programando kernels, vamos a repasar las plataformas más populares, por cultura general y por que necesitamos conocer en que vamos a programar, por supuesto. En computadoras de escritorio, hay tres grandes sistemas operativos: Mi- crosoft Windows, Apple OS X y los *nix (Unix & GNU Linux). Los primeros dos son comerciales, del tercero los hay comerciales como gratuitos. El primero es de código cerrado (solo la compañía tiene acceso al código fuente) y los últi- mos pueden ser tanto de código cerrado (Unix) como de código abierto Todo comienza con Unix tivo, basado en un estándar llamado POSIX, se crearon BSD que es una distri- bución cerrada y Linux, que es una distribución libre, que son implementacio- nes de Unix, es decir, re escritas inspiradas por Unix, basadas en POSIX, no uti- lizando el código de Unix. Apple OS X sado en Unix. Windows es otra historia, es un sistema operativo no basado en Unix, sino extendiendo MS-DOS competirles en este mercado. Actualmente, solo Windows no está basado en Unix (POSIX). En el mercado móvil ( dos sistema operativos que destacan, aunque un tercero insiste en hacerles la competencia. Cada uno de los tres más populares, están basado o derivados de su versión de escritorio: iOS de OS X Windows Phone / Mobile de Windows Android está basado en Linux. Los Sistemas Operativos
  • 64. Por lo tanto, tenemos, actualmente, en sistemas operativos, algo como esto: Veamos ahora las diferencias más marcadas: Ni Windows ni OS X son gratis luego de seis meses de cada versión, pero tienes que compilarlo (ya vimos lo que es un compilador, pero llegaremos a esto un poco más tarde). La mayor parte de las distribuciones de Linux son de código abierto y hay una gran comunidad de personas que regalan su tiempo para distribuir versio- nes instalables de Linux. Puedes instalar Linux y Windows en cualquier computadora compatible (que actualmente son casi todas), pero OS X ex- clusivamente y/o de mejor manera con el hardware (las piezas físicas) de Ap- ple. Linux muchas distribuciones. Los otros dos, so- lo tienen una distribución, aunque muchas versiones.
  • 65. Por lo tanto, en distribuciones, tenemos algo como esto:
  • 66. Muy bien, ya sabemos en donde estamos por los sistema operativos, pero ¿Para que queremos saber todo esto? Pues bien, por regla general, un progra- ma para Windows no corre en Linux, ni en Mac y viceversa, como lo vimos an- teriormente. Como los tres son bastante populares, y no se que sistema operativo estas usando tu (muy probablemente sea Windows, pero uno nunca sabe, puede que seas un Macero o Linuxero), pues tenemos que programar en algún lenguaje La primera versión de este libro la escribí para usuarios de Windows, con la clara intención de que no se tuviera que instalar nada, pero rápidamente me di cuenta de que era un error excluir a los otras dos plataformas, no es algo con lo que me sienta cómodo. Yo aprendí en Windows, como la mayoría de estudiantes y oficinistas en México, pero ahora me siento cómodo utilizando las tres plataformas, aunque mi favorita por mucho es Linux. Como te decía, en la primera versión del libro, enfocada a Windows, decidí que no instalaras nada y utilizaba primero DOS, luego Javascript desde la con- sola, luego en el explorador. Posteriormente enseñarte a compilar con C# y a hacer algo de desarrollo web con Php. Sin embargo, esto solo es posible para Windows (o con configuraciones avanzadas en los demás, o cambiando algu- nas cosas), y como quiero que cualquier persona, no importa la arquitectura que utilice, pueda aprender, decidí cambiar esto. El segundo punto para decidir nuestro lenguaje es la facilidad de uso, debe tener una curva de aprendizaje pequeña, ser fácil, intuitivo y que nos enseñe buenas prácticas a la hora de escribir nuestro código. La respuesta estuvo allí todo el tiempo, solo hay un lenguaje así: Python. Python es multiplataforma, corto, simple, elegante y estricto a la hora de indentar (organizar nuestro código con sangrías espacios entre una línea y otra para denotar organización ). Es el lenguaje perfecto para nuestros pro- pósitos.