Archivo de la categoría: Libro

Introducción a la Programación III

Sigo adelantándoles capítulos de mi futuro “libro”, para intercambiar opiniones sobre el rumbo que este lleva y como podría hacer yo para mejorarlo, esta vez, además de continuar el texto en donde me había quedado en las últimas entregas, les traigo también los tres últimos posts en formato PDF para que los puedan descargar, imprimir, y usarlos a modo de guía, si es que optan imprimirlo en formato de mini-libro.

Descargar PDF Completo de Introducción a la Programación por Juan Pablo Castañeda

Ruby

A continuación instalaremos Ruby en nuestro sistema Windows y posteriormente RubyGems, el cual nos permitirá instalar en Ruby muchas extensiones muy útiles de las cuales nosotros usaremos más que nada Sinatra y Heroku.

Para instalar Ruby en Windows debemos bajar la aplicación RubyInstaller de la página:

http://www.ruby-lang.org/es/downloads/

Y seguidamente bajar RubyGems de:

http://rubygems.org/pages/download

Instalamos Ruby como lo hacemos siempre con cualquier otro programa, asegurándonos de que quede instalado en la raíz de nuestro disco rígido, por ejemplo, si bajamos la versión 1.9.2 de Ruby y la instalamos en nuestro disco c: la ruta del mismo quedaría “C:\Ruby192”.

Descomprimimos el archivo de RubyGems también en la raíz de nuestro disco rígido. Por comodidad deberíamos descomprimir este archivo en el directorio rubygems o cambiarle el nombre al directorio una vez descomprimido, para que se ajuste a lo descrito más adelante en este mismo libro. Si Ruby fue satisfactoriamente instalado en nuestro sistema, para instalar RubyGems deberíamos seguir los siguientes pasos.

Inicio, Ejecutar, escribimos cmd en el cuadro de dialogo que apareció y apretamos Enter o hacemos click en Aceptar. Se abre la ventana del intérprete de comandos de windows, mostrándonos como prompt, lo siguiente:

C:\Users\UserName>_

Donde UserName es nuestro nombre de usuario de Windows. Para aquellos que no están familiarizados con la línea de comandos de Windows, lo que haremos a continuación será usar comandos de texto, al estilo DOS, que nos permitirán movernos entre directorios (carpetas) y ejecutar programas.

Los comandos que utilizaremos son:

CLS: Sirve para limpiar o despejar la pantalla del intérprete de comandos, útil si tenemos mucho texto que nos desconcentra, proviene del inglés Clear Screen.

DIR: Muestra una lista de todos los archivos y carpetas del directorio actual.

CD: Sirve para cambiar de directorio/carpeta.

El comando CD tiene dos opciones que nos servirán de mucho, CD.. que nos lleva al directorio anterior, es decir, sube un nivel en el árbol de directorios, y CD\ que nos lleva directamente al directorio raíz de nuestro disco rígido.

Para Windows es indiferente si los escribimos en mayúsculas o en minúsculas, interpretará lo que queremos hacer de todos modos. Estos son algunos de los llamados comandos internos de Windows/DOS. Cuando queremos ejecutar un programa (que para DOS sería un “comando externo”), debemos simplemente escribir el nombre del ejecutable de ese programa sin su extensión, por ejemplo el archivo ejecutable de Ruby se llama ruby.exe, así que solo debemos escribir ruby y apretar enter y con eso estaremos ejecutando Ruby.

En el prompt del intérprete de comandos escribimos lo siguiente:

cd\
cd rubygems
ruby setup.rb

Apretando enter despues de cada línea, eso instalará RubyGems en nuestro Ruby.

Windows posee lo que se llaman variables de entorno, son variables globales que afectan todo el sistema de operativo, una de estas variables, y la más importante para nosotros en este caso, es la que se llama PATH, la cual almacena una lista de rutas o direcciones en las cuales Windows buscará cada vez que escribamos el nombre de un ejecutable. Cuando escribimos “ruby setup.rb”, Windows buscó en todas las rutas guardadas en la variable path un archivo ejecutable que se llame ruby, al encontrarlo ruby sabe qué hacer con setup.rb ya que este último es un archivo de texto que almacena código fuente de Ruby.

Si el directorio donde instalamos Ruby no está guardado en la variable path debemos ingresarlo nosotros manualmente y reiniciar la computadora para que los cambios tengan efecto. En la variable path separamos una dirección de otra con un punto y coma (“;”) y escribimos todas las direcciones en una sola línea, así que para agregar una nueva dirección a esta variable debemos escribirla al final de esta lista separándola de la anterior con un punto y coma.

Para agregar una nueva ruta a la variable de entorno path en windows debemos buscar el ícono Equipo en el escritorio de windows y hacer click sobre él con el botón derecho del mouse y en el menú contextual que aparece elegir la opción que dice Propiedades.

Esto abre la ventana de propiedades, la cual contiene a la izquierda una barra lateral con tareas comunes, en ella debemos buscar la opción que dice Configuración avanzada del sistema, una nueva ventana se abre conteniendo las opciones avanzadas de las propiedades del sistema, veremos en este cuadro de dialogo un botón que dice Variables de entorno, sobre el cual debemos hacer click, nos mostrará dos listas, una con las variables de usuario y otra con las variables del sistema. En la lista de las variables de usuario debemos buscar la variable PATH, seleccionarla y hacer click en el botón Editar.

Una pequeña ventana se abre que dice Editar la variable de usuario con dos cuadros de texto, uno que dice Nombre de la variable y otro que dice Valor de la variable. En este último debemos agregar, al final, primero un punto y coma, y luego la ruta/dirección que queremos agregar a esta variable de entorno, por ejemplo “C:\Ruby192\bin”. A continuación hacemos click en todos los botones Aceptar, uno por uno, hasta cerrar todas las ventanas.

Esto será suficiente para que, al reiniciar la computadora, podamos invocar el ejecutable de Ruby desde la línea de comandos sin importar en que carpeta o directorio estemos trabajando.

RubyGems

Ruby posee un sistema de extensiones llamado RubyGems, con el cual podemos instalar estas mencionadas extensiones directamente desde la línea de comandos. RubyGems se encargará de descargar e instalar la extensión en Ruby automáticamente. En caso de que esta extensión tenga dependencias, es decir, necesite de otras extensiones previamente instaladas para funcionar, RubyGems bajará e instalará primero estas dependencias para luego continuar instalando la extensión que le solicitamos. Un sistema muy inteligente basado en la administración de paquetes de software que tienen sistemas operativos como Linux, en los cuales encontramos herramientas que nos permiten hacer exactamente lo mismo con todos los programas que queramos instalar en nuestro sistema operativo, y estas mismas aplicaciones nos sirven para instalar, desinstalar y actualizar todos nuestros programas.

A continuación instalaremos las “gems” de Ruby llamadas Sinatra y Heroku, y veremos como RubyGems instala automáticamente todos los requerimientos previos de estas dos muy útiles extensiones de Ruby.

Abrimos la línea de comandos de windows y tipeamos:

gem install sinatra

Esperamos a que termine todo el proceso y escribimos:

gem install heroku

Cuando finalice tendremos instaladas estas dos gems, con todas sus dependencias y hasta con su documentación, la cual nos servirá más adelante cuando queramos investigar todo lo que podemos hacer con ellas.

Windows tiene problemas para manejar direcciones muy largas de archivos. Cuando la ruta a un archivo es muy larga suele ser difícil, sino imposible, abrirlo o copiarlo. Por eso debemos tener especial cuidado en no ponerle nombres muy largos a nuestras carpetas y de no generar el efecto de muchas carpetas anidadas (es decir, carpeta adentro de carpeta adentro de carpeta), si encima los nombres de estas carpetas son muy largos, nuestra ruta hacia algún archivo guardado ahí será demasiado larga. Windows guarda un espacio de memoria para las rutas de archivo cuando copiamos o realizamos diferentes operaciones con este, esta memoria reservada tiene un espacio limitado de caracteres, el error que mencionamos con anterioridad se produce cuando nuestra ruta hacia algún archivo excede el tamaño reservado en memoria para guardar la cantidad de caracteres de la ruta.

Por otro lado, también debemos cuidarnos de usar caracteres especiales en nombres de archivos y directorios, no por Windows, sino por otros programas que no estén preparados para lidiar con estos caracteres, por ejemplo, en Linux, el nombre de usuario suele no incluir espacios, en Windows, esto sí es posible, por ejemplo, usar como nombre de usuario, “Juan Pérez”, cuando en Linux debería usar algo como “jperez”, tanto Windows como Linux generan una carpeta con el mismo nombre donde se guardan todos los archivos de ese usuario. Programas creados en Linux y luego portados a Windows pueden tener problemas cuando incluimos en sus rutas para acceder a archivos una carpeta de usuario que contenga espacios en su nombre o caracteres especiales.

Esto puede causar que no podamos usar el comando gem desde la línea de comandos para instalar las extensiones de Ruby que necesitemos, si ese es el caso, podemos solucionarlo de la siguiente manera.

Vamos a la carpeta de binarios/ejecutables de Ruby, por ejemplo “C:\Ruby192\bin”, recuerden que el número puede cambiar dependiendo de qué versión de Ruby instalamos. En esta carpeta buscamos el archivo “gem.bat” y lo abrimos con un editor de texto para modificarlo, podemos usar el Bloc de notas de Windows, o el Notepad++ o cualquier otro editor de texto plano sin formato que tengamos o que nos guste usar.

Asegurémonos de que el contenido de archivo gem.bat sea este:

@ECHO OFF
SET _HOMEDRIVE=%HOMEDRIVE%
SET _HOMEPATH=%HOMEPATH%
SET HOMEDRIVE=C:
SET HOMEPATH=/Ruby192
IF NOT "%~f0" == "~f0" GOTO :WinNT
@"ruby.exe" "C:/Ruby192/bin/gem" %1 %2 %3 %4 %5 %6 %7 %8 %9
GOTO :EOF
:WinNT
@"ruby.exe" "%~dpn0" %*
SET HOMEDRIVE=%_HOMEDRIVE%
SET HOMEPATH=%_HOMEPATH%

Pueden borrar todo el contenido del archivo original, copiar y pegar este en él y luego guardar y cerrar el editor de texto, pero asegúrense de que en SET HOMEDRIVE figure la unidad de disco donde tenemos instalado Ruby, y que en SET HOMEPATH figure el directorio donde nuestro Ruby está instalado. Así como la ruta “C:/Ruby192/bin/gem” sea la correcta dependiendo de la version de Ruby que instalamos. Noten como esta ruta usa barras que apuntan para el lado contrario de las barras en las rutas de Windows, esto es porque Ruby fue programado en Linux, y debemos respetar este formato para que todo funcione bien.

Si te gusta lo que lees considera contribuir con este blog para que el mismo pueda tener más y mejor contenido. Contribuir.

Licencia Creative Commons
Esta obra de Juan Pablo Castañeda está bajo una Licencia Creative Commons Atribución 3.0 Unported.

Anuncios

Introducción a la Programación II

Continuando con la entrega de partes de mi futuro “pseudo-libro”, aquí les traigo un poco más de lo que estoy escribiendo, para que opinen como va, y que me ayuden a mejorar. Cada uno de sus comentarios será oído, y les aseguro que todas sus sugerencias serán incluidas en la versión final del libro. Dentro de poco voy a estar subiendo versiones PDF de los capítulos, para que se los puedan ir descargando. Muchas gracias por leer.

Scripts

Una de las formas más fáciles de acercarse a la programación es a través de los lenguajes de script o scripting. Si hace algún tiempo que te interesan la programación y las computadoras, si hacés, diseñás o creás páginas webs como pasatiempo, si alguna vez usaste el RPG Maker o el Ren’Py para crear algún juego. Alguna vez te habrás topado con alguno de ellos, Perl, Python, Ruby, Lua. Son cuatro lenguajes de programación, más que nada utilizados para crear scripts, pero con la potencia necesaria para crear programas completos y mucho más complejos. Si estás muy familiarizado con las páginas webs de las llamadas dinámicas, activas, o interactivas, puede que también conozcas lenguajes como JavaScript o PHP, tecnologías como AJAX, y que también en alguna ocasión hayas utilizado Java o Flash (con su ActionScript).

A mi entender, los lenguajes más fáciles de aprender son Lua, Ruby y también JavaScript, este último te resultará muy familiar si alguna vez has usado ActionScript ya que ambos son derivados de ECMAScript.

Elegir tu primer lenguaje de programación, con el cual vas a aprender, no es fácil y una decisión equivocada puede derivar en que pronto pierdas tus ganas de aprender programación.

Yo recomiendo empezar por Ruby, es un gran lenguaje, muy usado y con muchas implementaciones que harán tus inicios en la programación mucho más fáciles y mas entretenidos. Python puede resultar muy complicado para los no iniciados, aunque algunas cosas pueden resultarte familiares si alguna vez has usado C, C++ o Java.

Lua es un gran lenguaje creado por programadores brasileros y al que le veo mucho futuro ya que me resultó muy fácil aprenderlo y tiene algunas características que lo hacen único especialmente para las cosas que se nos ocurren programar cuando recién empezamos en esto.

Pero por ahora empezaremos por Ruby, creado por un programador japonés, llamado Yukihiro Matsumoto (apodado “matz”), y más tarde derivaremos en otros, cuando la terea que nos impongamos así lo requiera.

¿Qué necesito?

  • Una computadora con sistema operativo Windows o Linux.
  • El programa de instalación de Ruby.
  • Instalar Ruby.
  • Instalar Gem.
  • Instalar extensiones (Ruby Gems) de Ruby como ser Sinatra y Heroku.
  • Empezar a practicar programación con Ruby.

Estos serian los pasos básicos que tendría que seguir para poder empezar a crear mis primeros programas y poder ejecutarlos.

Todo programa, no es nada más que simple texto, pero ese texto, tiene reglas, dependiendo de qué lenguaje de programación esté usando, es decir, tal cual como si se tratara de otro idioma, existe una sintaxis y una semántica.

Una vez escrito mi programa, con cualquier editor de texto, como el Bloc de notas de Windows, o algún editor de texto con coloreado de sintaxis, los cuales reconocen el lenguaje que estoy usando al programar y muestran las diferentes partes del programa en diferentes colores para poder diferenciarlas fácilmente a la vista. Por ej. Notepad++.

Una vez que mi código está guardado, para Ruby por ejemplo, debería guardarlo con la extensión .rb. Puedo ejecutarlo, simplemente utilizando el intérprete de Ruby que instalé y diciéndole que ejecute todo el código que escribí dentro del archivo de texto que creé. Si mi código no tiene errores, mis instrucciones serán ejecutadas por el intérprete de Ruby.

Para hacerlo, debería abrir la Terminal (en Linux) o ir a Inicio, Ejecutar (en Windows) y escribir CMD y apretar la tecla Enter del teclado o hacer click en el botón Aceptar. Esto abrirá una instancia del intérprete de comandos de windows (algo muy parecido al antiguo DOS). En la Terminal o intérprete de comandos de windows, debería escribir algo como:

ruby programa.rb

Suponiendo que programa.rb fuera el nombre del archivo de texto en el cual guardé mi código, esta instrucción, al apretar “enter” ejecutará el interprete de Ruby y le dirá que ejecute todo el código contenido en el archivo programa.rb.

Así de fácil, ejecutaríamos nuestro primer programa de Ruby. Pero, todavía no sé programar, ¿que escribo adentro de programa.rb para que pase algo?

Cuando Dennis Ritchie creó el Lenguaje C, en su libro The C Programming Language, él y su coautor Brian W. Kernighan, pusieron como ejemplo, el ahora famosísimo “Hola Mundo”. Es por ello, que en la mayoría de los libros y guías de programación, lo primero que te hacen hacer, es un programa que escriba en la pantalla de la computadora, las palabras “Hola Mundo”. En aquella época las pantallas de las computadoras carecían de interface gráfica y tan solo solían mostrar el prompt de nuestro intérprete de línea de comandos o interface de línea de comandos, nuevamente, algo parecido al DOS. Para aquellos que nunca vieron el DOS ni nada que se le parezca, bastará con que abran la Terminal de su Linux o ejecuten el programa cmd.exe de Windows mediante los pasos ya explicados.

Por lo tanto nuestro primer programa en Ruby escribirá en pantalla las palabras “hola mundo”. Para lo cual, dentro de programa.rb debemos escribir, con nuestro editor de textos favorito lo siguiente:

puts "Hola Mundo"

Y ahora sí, abrir el interprete de comandos, o la Terminal, y ejecutar ruby programa.rb, eso será suficiente para que seguidamente en la pantalla aparezcan escritas las palabras “hola mundo”. Que decepcionante, mi programa no hace más que mostrar dos palabras tontas en una ventana que nunca use en mi vida y que no quiero volver a usar jamás.

Bueno, pero antes de empezar a hacer programas más atractivos, o que realmente hagan algo, debemos entender la lógica de la programación, y cosas que existen en todos los lenguajes de programación, como por ejemplo, cómo hacer que nuestro programa se dé cuenta de las cosas, que cuente, o que sepa cuando un numero es mayor que otro, o que tome decisiones según lo que nosotros, como usuarios del futuro programa hagamos o estemos haciendo, como, mover el mouse, o hacer click, o escribir una frase. Solo mediante estas técnicas de programación que al principio usaremos para mostrar tontos textos en la pantalla podremos avanzar y usar las mismas técnicas, ya no para que un simple texto aparezca sino para que nuestro programa haga cosas realmente complicadas y poder por ejemplo, crear programas con interfaces gráficas, y hasta, por qué no, juegos.

Si te gusta lo que lees considera contribuir con este blog para que el mismo pueda tener más y mejor contenido. Contribuir.

Licencia Creative Commons
Esta obra de Juan Pablo Castañeda está bajo una Licencia Creative Commons Atribución 3.0 Unported.

Introducción a la Programación I

Este es un adelanto de aquello que estoy escribiendo y que pretendería que en algún momento se convirtiera en un libro, el tema que trata es la informática en general y la programación en particular, cuando empecé a escribirlo mi intención era que fuera una especie de introducción general a la informática para todo principiante, y de hecho nació como un documento que me pidió Nahuel, para tener a mano y estudiar un poco desde España aquellas cosas de las que yo siempre le hablaba. A medida que avancé escribiendo fue derivando en una especie de guía introductoria a los lenguajes dinámicos de scripting, especialmente Ruby, y su utilización en juegos y en web, repasando también una manera diferente de crear webs dinámicas que es a través de CGI y lenguajes como Perl y Lua. El supuesto “libro” no tiene título aún, ni siquiera un working title, así que acepto sugerencias. Espero que lo disfruten tanto o más de lo que yo lo hice mientras lo escribía, con el tiempo iré posteando en este mismo blog otras secciones de este pseudo-libro.

Reference Book to Nothing

By The Less Influent Nobody of The 21st Century

Introducción

Imaginemos por un momento que Kami-sama es un programador, que “la magia” es un lenguaje de programación y que las esferas del dragón son un programa.

Entonces Kami-sama escribió o dijo:

01    Si se juntan las siete esferas del dragón,
02    Que aparezca Shen-long.
03    Shen-long pregunta por deseo.
04    Si el deseo es cumplible,
05    El deseo se cumple y se pasa a la línea 9.
06    Si el deseo no es cumplible,
07    Se pregunta por otro deseo.
08    Repetir operaciones de las líneas 4 a 7.
09    Shen-long desaparece.
10    Las esferas del dragón se esparcen por todo el mundo.

Básicamente esta sería la forma más fácil de explicar como Kami-sama creó a Shen-long y a las esferas del dragón, obviamente hay miles de formas diferentes, sino mas, de escribir el mismo “código mágico”, aplicando por ejemplo, “buenas prácticas de programación”, utilizando lo que se llaman “funciones” o “procedimientos” en lugar de usar las instrucciones para ir a tal línea de la “receta mágica” o para repetir las acciones descritas de tal a tal línea. Pero escrito de esta forma, es una buena manera de analizar cómo se compone un “conjunto de instrucciones” o una “lista de tareas”, nuestra receta o código mágico. De más esta decir que si esto estuviera más elaborado, deberíamos “programar” cada respuesta, cada frase, que Shen-long dice a cada una de nuestras preguntas o peticiones de deseos. Así que podemos decir que Kami-sama invirtió un buen tiempo de su vida haciendo a Shen-long tan inteligente como para tener una respuesta para cada cosa que le requiramos. Más allá de que se note su “programación” cuando repite muchas veces la misma frase.

Esto fue una pequeña y muy breve introducción a como se piensa un programa cuando uno es programador y se dedica a eso. La computadora es un ente totalmente inútil si no le decimos que hacer, y no solo le debemos decir que hacer, sino que también debemos decirle cómo hacerlo. Le decimos qué y cómo hacerlo por medio de programas, esos programas que usas todos los días, alguien se tomo su tiempo, escribiendo muchas líneas de código, para que funcione como vos esperás que lo haga, y para que la computadora haga la tarea que se supone que debe hacer con ese programa, aquello para lo cual ese programa fue escrito. El sistema operativo de una computadora también es un programa, o, un conjunto de muchos programas, por lo tanto, es cierto que una computadora sin programas es totalmente incapaz de hacer nada porque no sabe cómo.

Para empezar a programar, desde cero sin nunca haberlo hecho antes y sin tener la menor idea de que se trata la programación, como se programa, y todo lo relativo a ello, primero se deben tener en claro unas cuantas cosas.

Windows no es el único sistema operativo que existe. Windows solo hace que tu computadora sepa leer y escribir en el disco rígido y en la memoria ram y que pueda ejecutar programas. Todo lo demás lo hacen otros programas que no pertenecen a Windows, aún cuando muchos de los que usás hayan sido creados por Microsoft.

Internet no es un programa. Google no es Internet. Las computadoras no se programan, en todo caso, se configuran, o se le instalan programas o un sistema operativo.

Google no es un navegador de internet o navegador web. Wi-fi no es un tipo de conexión a Internet. Internet es una red de computadoras.

Wi-fi es una forma de crear redes de computadoras sin necesidad de cables. Las computadoras que están conectadas a una misma red pueden compartir una misma conexión a Internet.

Las redes de computadoras se pueden conectar entre sí. Es así como mi red (cableada o wi-fi) se conecta a Internet (otra red de computadoras).

Dejando en claro esto. Deberían saber que en la mayoría de las escuelas públicas (y también las privadas) no enseñan informática (o computación), enseñan Windows, o a usar programas Microsoft.

Si usas una computadora Apple, conoces al sistema operativo Mac OS X, un muy buen sistema operativo basado en Unix y muy diferente a Windows.

Un sistema operativo no es una interface gráfica, es todo lo que está debajo de ella y que hace funcionar a la computadora. Así, un mismo sistema operativo puede tener muchas interfaces gráficas diferentes.

La historia corta de cómo llegamos hasta ahora

Unos programadores de los Laboratorios Bell, entre ellos Ken Thompson y Dennis Ritchie, crearon el sistema operativo Unix y un lenguaje de programación llamado C. El cual ha sido utilizado desde entonces y hasta la actualidad, para crear la mayoría de los programas que existen, sin importar su plataforma (sistema operativo/computadora). Es decir, puedo hacer que el mismo código de programación funcione en Linux, en Windows y en Mac OS X por ejemplo. Esto se llama multiplataforma o cross-platform.

Unos programadores de la Universidad de Berklee crearon un sistema operativo basado en Unix al que llamaron BSD (Berklee Software Distribution), el cual se esperaba que se convirtiera en el sistema operativo del futuro, pero no fue así.

Mientras tanto Richard Stallman, un programador independiente (entiéndase como hacker), decepcionado del rumbo que había tomado la programación en el mundo, funda la Free Software Foundation (Fundación para el Software Libre) y crea un proyecto al que llama GNU (acrónimo de Gnu Not Unix, que traducido sería Gnu no es Unix). Un nuevo sistema operativo basado en la vieja filosofía hacker del código libre o abierto. Es decir la libertad del programador de leer, modificar y redistribuir el código creado por otro. Lo cual desapareció cuando los programas empezaron a hacerse comerciales. Las empresas te licencian su software, es decir, te dejan usarlo, pero aún cuando lo hayas pagado, cuando lo instalás aceptás un contrato que dice que no te pertenece a vos sino a ellos.

En cambio, la filosofía del software libre dice todo lo contrario, y se basa en el derecho de los individuos a hacer lo que quieran con sus computadoras y sus programas. Esto suena muy raro en nuestra época y mas para la gente que ya está acostumbrada al software privativo o software comercial. Pero antiguamente, los programas se distribuían entre estudiantes y colegas por su código. Yo creaba un programa y ponía su código a disposición de quien lo quisiera, quien nada mas debía compilarlo para poder usarlo, y modificarlo de ser necesario para que ese código/programa funcione en su computadora, corrigiendo mis errores, o mejorando mi programa, o simplemente haciéndolo compatible con otra interface, plataforma, computadora o sistema operativo diferente al que yo usé para programarlo.

En otro lugar del mundo, un profesor llamado Andrew Tanembaun crea un sistema operativo basado en Unix al que llama Minix, para enseñarles a sus alumnos como programar un sistema operativo desde cero. Hace público este proyecto en Usenet (algo así como un foro pero de antes de que existieran los foros en Internet), donde llama la atención de un asiduo participante de Usenet, un finlandés llamado Linus Torvalds, quien decide crear un sistema operativo, inspirado por la lectura del libro en el cual el profesor Tanembaun explica cómo crear Minix.

Linus Torvalds creó un kernel (núcleo de sistema operativo), al cual se lo termina denominando Linux, en una computadora con procesador x86. Una gran discusión se llevo a cabo en Usenet y a través de mails entre Linus y Tanembaun sobre cuál era la mejor forma de crear un sistema operativo, si usando un microkernel o un kernel monolítico. En sus discusiones solían decir cosas como que Linux solo funcionaba en computadoras con procesadores x86 y que esa no era la arquitectura que iba a sobrevivir en el futuro, sino tal vez, los procesadores SPARC y que seguramente estas computadoras usarían BSD como sistema operativo. Esto nunca pasó, los procesadores x86, como el 386, 486 y sus sucesores los Pentium, dominaron el mercado hasta nuestra época, y el sistema operativo más usado por estas computadoras fue, primero el MS-DOS y despues el Windows, ambos de la empresa Microsoft.

Aún así el aporte de Linus fue muy importante, y le dio la oportunidad a la gente envuelta en el proyecto GNU de probar todos sus programas sin tener que esperar a que el núcleo de este sistema operativo fuera terminado de programar, creando así un hibrido conocido como GNU/Linux, es decir, todos los programas creados para el proyecto GNU mas el núcleo Linux.

Lo interesante de Linux, es la filosofía del Free Software (software libre) u Open Source (código abierto), de las cuales, si bien, difieren sus definiciones, siendo más permisiva la segunda que la primera, la idea primordial es darle a cualquier programador la posibilidad de acceder al código con el que fue hecho tal o cual programa. Creando comunidades de programadores alrededor de un programa u otro, que se encargan de que el mismo permanezca con vida a lo largo del tiempo.

Todo lo contrario pasa con los programas comerciales, de los cuales muy pocos programadores (empleados de la empresa) pueden ver partes reducidas del código y son obligados a firmar cláusulas de no divulgación en sus contratos. Esto dificulta muchísimo la corrección de errores, que puede llegar a tardar años. Además de que si la empresa decide que un programa debe dejar de existir o si la empresa que lo creaba funde, quiebra o deja de existir, ese programa desaparece para siempre, ya que al no estar su código a disponibilidad del público, ningún programador sería capaz de continuar desarrollándolo.

En el modelo del software libre, en cambio, esto nunca sucedería, siempre existiría una comunidad de programadores dispuesta a hacer que ese programa continúe con vida. Además de que estas comunidades son dinámicas y siempre hay gente dejando y entrando a tal o cual comunidad. Por lo tanto, esa capacidad renovativa, asegura que el programa tenga una vida muy larga y mucho más exitosa a nivel corrección de errores e inclusión de mejoras que los programas comerciales.

Esta característica le permite a los sistemas operativos que la implementan tener muchas de las que llamamos distribuciones. Por ejemplo, Windows, es uno solo, el Windows de Microsoft, del cual tenemos que esperar una incierta cantidad de años hasta que salga una nueva versión y esta no siempre cumple las expectativas de los usuarios, profesionales o no, y muchas veces arrastra errores de muchas generaciones anteriores que no fueron corregidos en su momento.

En cambio, hay muchos Linux, con diferentes nombres, y mantenidos por diferentes empresas, o diferentes comunidades de programadores. Y también otros sistemas operativos no basados en Linux tienen esta misma filosofía.

Así tenemos, por ejemplo, y solo por citar algunos, sistemas operativos basados en BSD, como FreeBSD, OpenBSD, NetBSD y OpenSolaris. Otros tantos basados en Linux, como Slackware, OpenSUSE, Fedora, gNewSense, Debian, Gentoo, Ubuntu, Kubuntu, Linux Mint, Sabayon, Mandriva, Trisquel, Ututo, etc. La lista completa sería tan extensa que tomaría varias páginas, y hasta hay Linux diseñados para ser usados en algún área específica, como Musix, un Linux para músicos. Todos son muy buenos sistemas operativos, además de ser muy buenas alternativas gratuitas si las comparamos con el precio de los sistemas operativos comerciales como Windows y Mac OS X (el cual solo viene en computadoras Apple).

También existen Linux comerciales, o corporativos, como el Red Hat, o el Oracle Linux. Así como también Linux “cerrados”, usados únicamente dentro de una empresa o corporación, como el Google Linux, una versión modificada de Ubuntu que solo es usada dentro de Google Inc.

Ahora que ya tenés un panorama mucho más amplio sobre programas y sistemas operativos, podés empezar a encarar tus primeros proyectos de programación, sabiendo que son muchas, sino, casi infinitas las posibilidades de las cuales podés elegir. Eligiendo el sistema operativo, programa y/o lenguaje de programación que más te convenga de acuerdo con tus necesidades, experiencias o expectativas futuras.

Una de las características más interesantes de todos los sistemas operativos que nombré anteriormente, es que mas allá de lo diferente que son entre sí, la mayoría suele usar la misma interface gráfica, la cual puede ser Gnome o KDE entre otras muchas opciones disponibles, pero, de lo que se trata esto, es que si yo aprendí a usar por ejemplo Gnome, si empiezo a usar otro sistema operativo con la misma interface gráfica me va a resultar mucho más fácil entenderlo y manejarlo, ya que voy tener una buena base. Lo mismo con aquellos que comparten el mismo núcleo, como el núcleo Linux kernel que mencionamos anteriormente, mas allá de las diferencias entre un sistema operativo Linux y otro, los “comandos internos” del núcleo son los mismos para todos, y si bien pueden traer programas o aplicaciones diferentes para tareas especificas como la instalación de paquetes de software por ejemplo, tareas comunes como la creación de directorios (carpetas) o la copia de archivos se hacen con los mismos comandos/instrucciones en todos. Lo que aún resulta más conveniente entre los sistemas operativos basados en Unix, es que la mayoría de los comandos derivan de este, así, podemos encontrar cosas en común entre los sistemas operativos BSD, los Linux y el Mac OS X por ejemplo, todos basados en Unix, o derivados de Unix.

Bueno, esta suponía ser una breve y rápida introducción a la programación, pero se me hace inevitable derivar en aquellas cosas que quien este leyendo necesitaría saber antes de seguir adelante, ya que, la mayoría de los ejemplos que encontrarán acá, pueden necesitar el uso extenso de la interface de comandos de tu sistema operativo, y estas difieren entre Windows, Linux y Mac OS X. Por lo tanto, primero ahondaré en las generalidades, para más tarde dedicarme a abordar cada tema en específico dependiendo de qué sistema operativo utilicen.

Primero y principal, pueden usar Linux sin dejar de usar Windows y hasta sin instalar ni copiar nada a su disco rígido. La mayoría de los sistemas Linux tienen una version Live-CD, Live-DVD o Live-USB, de la cual solo necesitamos bajarnos la imagen ISO, y grabarla en un CD/DVD, la mayoría de las veces será CD, ya que la mayoría de las imágenes ISO de sistemas operativos Linux casi nunca superan los 700MB. Y también podemos instalar Linux en un Pendrive, y arrancar nuestra computadora desde él.

También existe la posibilidad de usar una maquina virtual que ejecute la imagen ISO que nos bajamos como si se tratara de un emulador de videojuegos.

Y cuando estemos ya más avanzados hasta podremos hacer que nuestra computadora sea multiboot, y que cuando arranque nos pregunte con que sistema operativo deseamos hacerlo, si con Windows, o con Linux, pudiendo hasta, poner varios Windows y varios Linux en la lista. Una opción muy interesante si estamos aprendiendo, o si aún necesitamos cosas de nuestro viejo sistema operativo.

Si te gusta lo que lees considera contribuir con este blog para que el mismo pueda tener más y mejor contenido. Contribuir.

Licencia Creative Commons
Esta obra de Juan Pablo Castañeda está bajo una Licencia Creative Commons Atribución 3.0 Unported.