30 junio 2009

Historia del C y C++

Hace poco leí un artículo donde enfatizaba la importancia de conocer la historia de una ciencia para poder entenderla mejor y no cometer los mismos errores del pasado o bien aprovechar lo que se hizo y que no quede en el olvido.  (El que quiera leer el texto, es parte del libro “La piedra de Toque” de Jean-Marc Lévy-Leblond [aquí está un resumen del libro, por si te interesa]).  En parte por esta razón voy a narrar una breve historia del lenguaje de programación C++ (lo cual, forzosamente, tiene que pasar por el lenguaje C).

Tal vez debería hacer una historia de todos los lenguajes de programación, sin embargo, creo que es una tarea demasiado extenso para este post de mi blog (que no es tan breve).  Sin embargo, para aquellos interesados pueden encontrar este dibujo que resume la historia de la programación (de forma muy esquemática y sin los chismes pertinentes, pero en fin).

Lenguaje C: comenzando bien

ktdr El lenguaje C cambió la historia de la programación.  Todo comenzó en los laboratorios Bell (luego convertido en AT&T) en los 1960s.  Tenían una computadora PDP-7 (con sus tremendos 8K de memoria y sin ningún software, porque no existía).  Se necesitaba software y como te podrás imagina, el software más importante es el sistema operativo.  Sin embargo, el problema es que el único lenguaje de programación que tenían era el ensamblador y pensar en crear un programa sencillo en este lenguaje, deja un sistema operativo completo, es una tarea hercúlea.  Por lo tanto lo primero que se hizo necesario fue hacer un lenguaje de programación lo suficientemente potente como para crear un proyecto de esta envergaduraKen Thompson estaba a cargo de crear este sistema operativo, que luego se llamó Unix.  Un cuate suyo que trabajaba con él, Dennis Ritchie diseñó un lenguaje, llamado C porque tenía influencia de un lenguaje anterior llamado B, hecho por Thompson, la cual es una versión simplificada de un lenguaje más viejo llamado BCPL.  Ritchie trabajó en un servidor PDP-11 (más moderno que el anterior) durante los 1970s.

Antes de C, los lenguajes de programación generalmente se creaban con fines académicos o por comités burocráticos (como el COBOL que está hecho por administradores de negocios donde tienes que escribir chorrocientos mil líneas de código para hacer una simple suma).  C fue diseñado, implementado y desarrollado por programadores que trabajaban en problemas reales, lo cual lo hizo muy usado por programadores en todos lados y durante los 1980s y parte de los 90s.

Un gran avance de C era debido a que es un lenguaje estructurado (al igual que el Pascal), lo cual permite hacer programas grandes (cosa casi imposible con ensamblador u otros) y en su tiempo, era una innovación tremenda.

Lenguaje C++: la evolución

Saliendo del ámbito computacional, la teoría de la evolución de Darwin, pese a la que piensan algunos radicales religiosos, rifa y explica muchas cosas que el creacionismo no puede.  Básicamente nos dice que la especies sufren modificaciones aleatorias en sus genes (bueno, lo de los genes fue aportación de Dobzhansky porque la genética no existía en tiempos de Darwin) y solo subsisten los que mejor se adaptan a su medio ambiente.

¿Y para qué les digo esto?  Uno, para ampliar un poco la cultura de algunos lectores en materia de biología, pero principalmente porque con el C sucedió algo similar.  Los sistemas se iban haciendo cada vez más complejos y hacerlos en C implicaba mucho trabajo, así que C++ es el siguiente paso de la “evolución” que va desde BCPL hasta C++.

¿Pero en qué consistía esta “evolución”?  Principalmente en encontrar otra manera de hacer las cosas.  Algunos llaman a esto “paradigmas” de programación (nota cultura: el término paradigma fue acuñada por Thomas Kuhn en su libro La estructura de las revoluciones científicas.  En el texto usa la palabra paradigma para significar cosas diferentes, o sea que nadie realmente sabe lo que significa esa palabra, jeje).  Escribí algo sobre paradigmas de programación en mi post Paradigmas de Programación y muchos objetos en C++.  Como dije antes, el C es programación estructurada.  Básicamente en este tipo de programación, se ejecuta un programa línea por línea en orden.  El programa se ejecuta de principio a fin.  Sin embargo, en la programación orientada a objetos la idea es solucionar problemas de forma similar a como resolvemos problemas en el mundo “real”, es decir, contamos con muchos objetos, cada uno con sus características y acciones que puede realizar (por ejemplo, mi mano tiene ciertas características: número de dedos, tamaño, color, etc., y cosas que puede hacer: cerrar dedos, agarrar algo, etc.).  Resolvemos problemas al tomar objetos y ponerlos a funcionar (siguiendo con el ejemplo de mi mano, si mi problema consiste en escribir, puedo usar mi objeto mano y ejecutar acciones que me permiten agarrar un objeto lápiz y colocarlo sobre un objeto papel y moverlo de tal manera que escriba).  Este paradigma ayuda a reducir la complejidad de sistemas grandes

Realmente no existen lenguajes 100% orientados a objetos (el único que conozco es SmallTalk), pero lenguajes como C++ o Java combinan lo orientado a objetos con un poco de programación estructurada.

bs2

C++ fue inventada por Bjarne Stroustrup en 1979.  Al inicio lo llamó C con clases, pero en el 83 lo cambió a C++.  Lo hizo basándose en C, incluyendo todas sus características, atributos y beneficios.  Lo que agregó fue el soporte a programación orientada a objetos.  Esto hacía que la transición hacia la programación orientada a objetos (o OOP por sus siglas en inglés, o POO por su acrónimo en castellano) sea fácil y sencilla.

Pero aquí no termina nuestra historia feliz.  C++ fue sujeta a revisiones y en 1994 un comité de ANSI e ISO desarrollaron el C++ “estándar” que es el que se usa en todos los compiladores.  Algunas compañías agregan librerías y funciones, pero todos deben respetar el C++ como fue definida por el comité ANSI/ISO (por esta razón no me gusta el Dev-Cpp porque tiene muchas cosas que no son estándares y no funciona en otros compiladores).

Una nota final.  El C++ no hizo que el C cayera en desuso.  Todavía hay muchas aplicaciones donde se usa el C, por ejemplo en el campo de la robótica y otros usos en la industria manufacturera.

Por esta vez, aquí le dejamos.  Espero que les haya parecido interesante o por lo menos útil.  ¡Saludos!

24 junio 2009

El Tony y la ciencia…

Solo para comentarles que estoy participando en un blog, llamado Producción Científica Contemporánea, como parte de una materia del mismo nombre que estoy tomando en mi maestría en el ITESO.

En general trata de cosas que estamos discutiendo en clase, pero si están interesados en lo que se está haciendo en la ciencia actual, pueden visitar el sitio.

¡Saludos!

12 junio 2009

LiberKey: un montón de software en tu USB

¿No te ha pasado que vas a la computadora de un amigo (o de un cybercafé, escuela, biblioteca, etc.) a trabajar (o jugar) y resulta que no tiene tu software preferido?  ¿No es desesperante, en ocasiones, tener que usar programas a los que no estás acostumbrado o no te gustan?  A mí me pasa a cada rato y me toca usar Internet Explorer en lugar de Firefox, tener que usar el terrible Paint que viene con Windows en lugar de algo con mayores facilidades y herramientas como podría ser GIMP y en las computadoras de la escuela tienen quemador de DVD, pero no hay software para quemar discos.  Y la lista continúa y continúa…

Por esta razón me gusta usar aplicaciones portables (aunque la traducción correcta creo que debería ser portátiles), o sea, programas que puedes correr desde tu memoria USB y hay muchos sitios desde donde puedes descargar aplicaciones de este tipo (como PortableApps.com, entre otros).  Sin embargo, el otro día leí del blog de MakeUseOf acerca de LiberKey, un compendio de más de 200 programas freeware portables que puedes bajar gratis.  Los tienen divididos en 3 categorías, donde el paquete non-plus-entra mide como 200 Mb.

Tiene una interfaz gráfica sencilla de usar que te da acceso a todos los programas y los programas vas desde editores de texto, hasta quemadores de disco, edición de video y audio, redes de computadoras, arreglar tu sistema, etc.

Si te interesa, la página oficial es esta.  Desde allí puedes descargar el paquete que necesites.  Si te interesa este tipo de programas, también puedes ver una lista de 100 aplicaciones portables que es interesante.

¡Saludos!

Related Posts Plugin for WordPress, Blogger...