Daniel Maldonado

viernes, 31 de agosto de 2007

Eric S. Raymond

Continuando un poco con la Biografia de grandes programadores, tengo el placer de presentarles al gran Eric Raymond, quizas aquellas personas que conocen y utilizan Software Libre seguro saben quien es.

Eric Steven Raymond, también conocido como ESR, es el autor de The Catedral and the Bazar (traducido como La Catedral y el Bazar) y el responsable actual del Jargon File (también conocido como The New Hacker's Dictionary). Si bien con el Jargon File obtuvo fama como historiador de la cultura hacker, se convirtió después de 1997 en una figura líder en el Movimiento del Software Libre y el Código abierto. Hoy día es uno de sus personajes más famosos y controvertidos.

Raymond es un liberal confeso. Tiene un gran interés en la ciencia ficción y las armas de fuego. Es músico amateur y cinturón negro de taekwondo. Su apoyo al derecho a llevar armas de la Segunda Enmienda y su apoyo la invasión de Iraq del 2003 no han gustado mucho a algunos, pero él parece divertirse con la controversia que genera. Además sufre una leve parálisis cerebral congénita.

Seguramente en internet podemos encontrar gran documentación de esta gran personalidad y ahora le dejo su Personal Home Page

jueves, 30 de agosto de 2007

Todo lo que siempre quiso saber de C++ y no se animo a preguntar

Visitando diariamente RetroNet, encontre este post que lo queria compartir con ustedes.

Nuestro querido y odiado Bjarne Stroustrup nos acerca un conciso compendio respuestas a preguntas frecuentes sobre técnica y estilo en C++.

miércoles, 22 de agosto de 2007

Tarjetas de referencia rápida

Navegando un poco por RetroNet, vi este post y me pareció una herramienta muy práctica para tener siempre a mano.

Las tarjetas de referencia rápida son documentos de no mas de un par de paginas que brindan a los programadores y usuarios de algunas aplicaciones un mecanismo rápido de consulta sobre usos y formas del tema tratado por cada tarjeta, es buena practica, al menos yo lo hago, imprimirlas y ponerlas en un lugar visible para su rápida consulta. Aqui podemos encontraras una buena colección de ellas.

Estructuras de Control

En los Lenguajes de Programación, las estructuras de control permiten cambiar o modificar el flujo de la ejecución de las instrucciones de un programa.

Practicamente y casi todos los lenguajes de programación cuentan con estas estructuras:

* De acuerdo a una condición, ejecutar un grupo u otro de sentencias (If-Then-Else y Select-Case)
* Ejecutar un grupo de sentencias mientras exista una condición (Do-While)
* Ejecutar un grupo de sentencias hasta que exista una condición (Do-Until)
* Ejecutar un grupo de sentencias un número determinado de veces (For-Next)
* Etc

Como características de estas estructuras de control es que tienen un único punto de entrada y un único punto de salida, de esta forma es como se rige la programación estructurada.

Como explicaba al principio del post, practicamente todos los lenguajes de programación poseen estas estructuras de control, que mas adelante detallaremos cada uno, y que se diferencian unos de otros por la sintaxis del lenguaje.

lunes, 20 de agosto de 2007

Miguel de Icaza

Miguel de Icaza es un desarrollador mexicano de software libre. Entre sus aportaciones destacan la fundación del proyecto Gnome, el controlador de archivos o ficheros Midnight Commander (mc), Gnumeric, el modelo de componentes Bonobo y la plataforma Mono (.Net de GNU/Linux).

De Icaza nació en el año de 1972 en la ciudad de México. Su padre es físico y su madre bióloga. Cursó la licenciatura en Matemáticas en la facultad de ciencias de la Universidad Nacional Autónoma de México donde a la edad de 18 años comenzó a participar en el proyecto GNU. Su primera aportación fue el gestor de archivos o ficheros Midnight Commander.

No finalizó sus estudios de licenciatura en la UNAM. Su reputación como programador le valió un viaje con gastos pagados a las oficinas de Microsoft para una entrevista de trabajo, la cual aprovechó para predicar las ventajas del software libre a la empresa fabricante de Windows. No obtuvo el empleo, pero trabó amistad con Nat Friedman, quien años más tarde se asociaría con él para fundar la empresa Helix Code (posteriormente rebautizada como Ximian) en la ciudad de Boston.

En agosto de 1997, con el apoyo del también mexicano Federico Mena, fundó el proyecto Gnome con el propósito de crear un entorno gráfico de escritorio y proveer una infraestructura sólida para el desarrollo de software libre. Su trabajo le hizo acreedor dos años después al Premio al Software Libre de la FSF y a ser reconocido como el Innovador del Año por el Tecnológico de Massachusetts.

En septiembre de 2000 la revista Time lo nombró uno de los 100 principales innovadores para el siglo XXI. Meses después anunció la creación del proyecto Mono, una reimplementación de la plataforma .NET para Linux y otros sistemas Unix. Tras una breve participación en la película Antitrust (2001) contrajo matrimonio en el año 2003 con María Laura, una ciudadana brasileña.

Actualmente es el Vicepresidente de Desarrollo en Novell (la empresa estadounidense que adquirió su compañía en el 2003) y dirige el proyecto Mono, además de participar en múltiples conferencias de difusión o promoción del software libre a nivel internacional.

domingo, 19 de agosto de 2007

Las Bases de Datos

Uno de los conceptos básicos que todabía no se trató es el de las Bases de datos. Este concepto es muy importante a la hora de la construcción de aplicaciones, es tan importante como la elección del lenguaje de programación y muchas cuestiónes relacionadas con el mismo.

Una base de datos o banco de datos es un conjunto de datos que pertenecen al mismo contexto almacenados sistemáticamente para su posterior uso. En este sentido, una biblioteca puede considerarse una base de datos compuesta en su mayoría por documentos y textos impresos en papel e indexados para su consulta. En la actualidad, y debido al desarrollo tecnológico de campos como la informática y la electrónica, la mayoría de las bases de datos tienen formato electrónico, que ofrece un amplio rango de soluciones al problema de almacenar datos.

En informática existen los sistemas gestores de bases de datos (SGBD), que permiten almacenar y posteriormente acceder a los datos de forma rápida y estructurada. Las propiedades de los sistemas gestores de bases de datos se estudian en informática.

Las aplicaciones más usuales son para la gestión de empresas e instituciones públicas. También son ampliamente utilizadas en entornos científicos con el objeto de almacenar la información experimental.

Aunque las bases de datos pueden contener muchos tipos de datos, algunos de ellos se encuentran protegidos por las leyes de varios países. Por ejemplo en España, los datos personales se encuentran protegidos por la Ley Orgánica de Protección de Datos de Carácter Personal (LOPD).

Al igual que contamos con leguajes de programación de código libre o privativos con la adquisición de su licencia, también contamos con Motores de Bases de Datos, tanto libres como así también Privativas.

Que son los Frameworks

Para aquellas personas que se dedican a la programación, la palabra frameworks se comenzó a mencionar en estos últimos años muy seguido. Navegando un poco por la web, encontre cientos de definiciones, pero resumiendo un poco escogí esta.

En el desarrollo de software, un framework es una estructura de soporte definida en la cual otro proyecto de software puede ser organizado y desarrollado. Típicamente, un framework puede incluir soporte de programas, bibliotecas y un lenguaje de scripting entre otros softwares para ayudar a desarrollar y unir los diferentes componentes de un proyecto.

Un framework representa una arquitectura de software que modela las relaciones generales de las entidades del dominio. Provee una estructura y una metodología de trabajo la cual extiende o utiliza las aplicaciones del dominio.

Los frameworks son diseñados con el intento de facilitar el desarrollo de software, permitiendo a los diseñadores y programadores pasar más tiempo identificando requerimientos de software que tratando con los tediosos detalles de bajo nivel de proveer un sistema funcional. Por ejemplo, un equipo que usa Apache Struts para desarrollar un sitio web de un banco puede enfocarse en cómo los retiros de ahorros van a funcionar en lugar de preocuparse de cómo se controla la navegación entre las páginas en una forma libre de errores. Sin embargo, hay quejas comunes acerca de que el uso de frameworks añade código innecesario y que la preponderancia de frameworks competitivos y complementarios significa que el tiempo que se pasaba programando y diseñando ahora se gasta en aprender a usar frameworks.

Fuera de las aplicaciones en la informática, un framework puede ser considerado como el conjunto de procesos y tecnologías usados para resolver un problema complejo. Es el esqueleto sobre el cual varios objetos son integrados para una solución dada.

En la actualidad existen muchos frameworks para una gran cantidad de lenguajes de Programación.

Artículo completo Wikipedia

jueves, 16 de agosto de 2007

Un programa en C

Generalizando, un programa en C consta de tres secciones. La primera sección es donde van todos los headers. Estos headers son comúnmente los #define y los #include. Como segunda sección se tienen las funciones. Al igual que Pascal, en C todas las funciones que se van a ocupar en el programa deben ir antes que la función principal (main()).

Declarando las funciones a ocupar al principio del programa, se logra que la función principal esté antes que el resto de las funciones. Ahora, solo se habla de funciones ya que en C no existen los procedimientos.

Y como última sección se tiene a la función principal, llamada main. Cuando se ejecuta el programa, lo primero que se ejecuta es esta función, y de ahí sigue el resto del programa.

Los símbolos { y } indican begin y end respectivamente. Si en una función o en un ciclo while, por ejemplo, su contenido es de solamente una línea, no es necesario usar llaves ({ }), en caso contrario es obligación usarlos.

Y ahora un pequeño ejemplo de un programa escrito en C

/*Programa ejemplo que despliega el contenido de "ROL" en pantalla*/

#include
#define ROL "9274002-1"

despliega_rol() {
printf("Mi rol es : \%s\n", ROL);
}

void main() {
despliega_rol();
}

/* Fin programa */


Mas información wikilearning.com

miércoles, 15 de agosto de 2007

Oracle

Oracle es un sistema de gestión de base de datos relacional (o RDBMS por el acrónimo en inglés de Relational Data Base Management System), fabricado por Oracle Corporation.

Se considera a Oracle como uno de los sistemas de bases de datos más completos, destacando su:

* Soporte de transacciones.
* Estabilidad.
* Escalabilidad.
* Es multiplataforma.

Su mayor defecto es su enorme precio, que es de varios miles de euros (según versiones y licencias). Otro aspecto que ha sido criticado por algunos especialistas es la seguridad de la plataforma, y las políticas de suministro de parches de seguridad, modificadas a comienzos de 2005 y que incrementan el nivel de exposición de los usuarios. En los parches de actualización provistos durante el primer semestre de 2005 fueron corregidas 22 vulnerabilidades públicamente conocidas, algunas de ellas con una antigüedad de más de 2 años.

Aunque su dominio en el mercado de servidores empresariales ha sido casi total hasta hace poco, recientemente sufre la competencia del Microsoft SQL Server de Microsoft y de la oferta de otros RDBMS con licencia libre como PostgreSQL, MySql o Firebird. Las últimas versiones de Oracle han sido certificadas para poder trabajar bajo Linux.

Articulo completo Wikipedia

C y algunos enlaces webs

Como le he venido mencionando C posee una gran cantidad de documentación asi que reunir y poder elegir algunos se puede volver medios tediosos, pero bueno aca les mando alguno de los que vi y me intereso, de todos modos si conocen mas envíenme en los comentarios...

http://www.abcdatos.com - ABCDatos
http://es.wikibooks.org - WikiBooks
http://www.programacionutn.com.ar/ - programacionutn
http://elvex.ugr.es - elvex.ugr.es
http://www.mygnet.net - MyGnet

martes, 14 de agosto de 2007

Ahora te toca "C"

Si bien en los anteriores post dí una reseña del lenguaje C y sus creadores, no se hablo en profundidad del lenguaje ni de sus características, asi que ahora le toca a C.

Como dijimos antes C es un lenguaje muy antiguo creado en 1969 en los laboratorios Bell y para hablar de este tipo de lenguaje seguramente nos llevara muchisimo tiempo pero comencemos con lo básico...

Se trata de un lenguaje débilmente tipado de medio nivel pero con muchas características de bajo nivel. Dispone de las estructuras típicas de los lenguajes de alto nivel pero, a su vez, dispone de construcciones del lenguaje que permiten un control a muy bajo nivel. Los compiladores suelen ofrecer extensiones al lenguaje que posibilitan mezclar código en ensamblador con código C o acceder directamente a memoria o dispositivos periféricos.

La primera estandarización del lenguaje C fue en ANSI, con el estándar X3.159-1989. El lenguaje que define este estándar fue conocido vulgarmente como ANSI C. Posteriormente, en 1990, fue ratificado como estándar ISO (ISO/IEC 9899:1990). La adopción de este estándar es muy amplia por lo que, si los programas creados lo siguen, el código es portable entre plataformas y/o arquitecturas. En la práctica, los programadores suelen usar elementos no-portables dependientes del compilador o del sistema operativo.

Ventajas
Lenguaje muy eficiente puesto que es posible utilizar sus características de bajo nivel para realizar implementaciones óptimas.
A pesar de su bajo nivel es el lenguaje más portado en existencia, habiendo compiladores para casi todos los sistemas conocidos.
Proporciona facilidades para realizar programas modulares y/o utilizar código o bibliotecas existentes.

Por el momento esta fue la introducción de C, mas adelante seguimos viendo mas cositas atrapante de C.

domingo, 12 de agosto de 2007

Conceptos relacionados a POO

Una ves vista el paradigma de Programación Orientada a Objeto (POO) podemos ver que atrás de él hay una serie de conceptos que estan intimamente relacionados y que ahora los vamos a detallar uno por uno:

Objeto: entidad provista de un conjunto de propiedades o atributos (datos) y de comportamiento o funcionalidad (métodos). Corresponden a los objetos reales del mundo que nos rodea, o a objetos internos del sistema (del programa).

Clase: definiciones de las propiedades y comportamiento de un tipo de objeto concreto. La instanciación es la lectura de estas definiciones y la creación de un objeto a partir de ellas.

Método: algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecución se desencadena tras la recepción de un "mensaje". Desde el punto de vista del comportamiento, es lo que el objeto puede hacer. Un método puede producir un cambio en las propiedades del objeto, o la generación de un "evento" con un nuevo mensaje para otro objeto del sistema.

Evento: un suceso en el sistema (tal como una interacción del usuario con la máquina, o un mensaje enviado por un objeto). El sistema maneja el evento enviando el mensaje adecuado al objeto pertinente. También se puede definir como evento, a la reacción que puede desencadenar un objeto, es decir la acción que genera.

Mensaje: una comunicación dirigida a un objeto, que le ordena que ejecute uno de sus métodos con ciertos parámetros asociados al evento que lo generó.

Propiedad o atributo: contenedor de un tipo de datos asociados a un objeto (o a una clase de objetos), que hace los datos visibles desde fuera del objeto, y cuyo valor puede ser alterado por la ejecución de algún método.

Estado interno: es una propiedad invisible de los objetos, que puede ser únicamente accedida y alterada por un método del objeto, y que se utiliza para indicar distintas situaciones posibles para el objeto (o clase de objetos).

Componentes de un objeto: atributos, identidad, relaciones y métodos.

Representación de un objeto: un objeto se representa por medio de una tabla o entidad que esté compuesta por sus atributos y funciones correspondientes.

Si logramos entender y aplicar estos conceptos de este paradigma, la programación es mas fácil...

sábado, 11 de agosto de 2007

Pascar, algunos enlaces interesantes

Luego de darle un vistaso un poco rápido a este lenguaje antiguo pero muy potente, estructurado y con muchas características mas, les dejo un par de enlaces que encontre en la Web para aquellos que esten interesados y quieran continuar y profundizar su aprendizaje...

http://www.wikipedia.com - Wikipedia
http://www.mygnet.com - Mygnet
http://www.lenguajes-de-programacion.com - Lenguajes de Programación
http://www.abcdatos.com - ABCDatos
http//http://www.terra.es - Terra


Desde ya estoy seguro que hay muchisima información de este lenguaje en internet, asi que visiten estoy link y a programar se dijo...

viernes, 10 de agosto de 2007

Niklaus Wirth, el creador de Pascal

Niklaus Wirth (Winterthur Suiza, 15 de febrero, 1934). Científico de la computación.

En 1959 obtiene el título de Ingeniero en Electrónica en la Escuela Politécnica Federal de Zúrich (ETH) en Suiza. En 1960 obtuvo un M.Sc. de la Universidad de Laval, Canadá. En 1963 obtiene un Doctorado (Ph.D.) en la Universidad de California, Berkeley.

De 1963 a 1967 el sirvió como profesor auxiliar de Informática en la Universidad de Stanford y de nuevo en la Universidad de Zúrich. A partir de 1968 se convirtió en profesor de Informática en la ETH en Suiza, tomándose dos años sabáticos en la Xerox PARC de California.

Wirth fue el jefe de diseño de los lenguajes de programación Euler, Algol W, Pascal, Modula, Modula-2 y Oberon. También ocupó gran parte de su tiempo en el equipo de diseño e implementación de Sistemas Operativos Lilith y Oberon para el Lola en el diseño del hardware digital y el sistema de simulación.

Su artículo de desarrollo de un programa por refinamiento sucesivo ("program development by stepwise refinement") es considerado un texto clásico en la ingeniería del software, así como su libro Algoritmos + Estructuras de datos = Programas, que recibió un amplio reconocimiento, y que aun hoy en día es útil en la enseñanza de la programación. Recibió el Premio Turing por el desarrollo de estos lenguajes de programación en 1984. Se jubiló en 1999.


Artículo completo Wikipedia

Pascal! para comenzar

Pascal es un lenguaje de programación desarrollado por el profesor suizo Niklaus Wirth a finales de los años 60. Su objetivo era crear un lenguaje que facilitara el aprendizaje de la programación a sus alumnos. Sin embargo con el tiempo su utilización excedió el ámbito académico para convertirse en una herramienta para la creación de aplicaciones de todo tipo.

Pascal se caracteriza por ser un lenguaje de programación estructurado fuertemente tipificado. Esto implica que:

1. El código esta dividido en porciones fácilmente legibles llamadas funciones o procedimientos. De esta forma Pascal facilita la utilización de la programación estructurada en oposición al antiguo estilo de programación monolítica.
2. El tipo de dato de todas las variables debe ser declarado previamente para que su uso quede habilitado.

El nombre de Pascal fue escogido en honor al matemático Blaise Pascal.

Características únicas

Sus programas tienen definidas dos partes: declarativa y ejecutiva. En la primera debe aparecer todo lo que se usará en la segunda, de lo contrario se detecta como desconocido y evita ciertas incomprensiones como veremos más adelante. En la parte declarativa se enuncian Unit existentes, procedimientos, funciones, variables, constantes y nuevos tipos de datos estructurados.

Otra diferencia importante es que en Pascal, el tipo de una variable se fija en su definición; la asignación a variables de valores de tipo incompatible no están autorizadas (En C, en cambio, el compilador hace el mejor esfuerzo para dar una interpretación a casi todo tipo de asignaciones). Esto previene errores comunes donde variables son usadas incorrectamente porque el tipo es desconocido. Esto también evita la necesidad de notación húngara, esto es prefijos que se añaden a los nombres de las variables y que indican su tipo.

jueves, 9 de agosto de 2007

Comencemos a Programar!

Asi es señoras y señores, a partir de ahora vamos a comenzar a ver cuestiones de los lenguajes de programación en particular, características, utilización y varias aspectos interesantes, voy a subir ejemplos de aplicaciones realizadas, por mi o por gente que conozco para compartirlas y continuar aprendiendo.

No te pierdas los proximos post por que comenzamos a ver el primer lenguaje de programación que aprendi, con ustedes... "Pascal"

Programación orientada a objetos

La Programación Orientada a Objetos (POO u OOP según siglas en inglés) es un paradigma de programación que define los programas en términos de "clases de objetos", objetos que son entidades que combinan estado (es decir, datos), comportamiento (esto es, procedimientos o métodos) e identidad (propiedad del objeto que lo diferencia del resto).

La programación orientada a objetos expresa un programa como un conjunto de estos objetos, relacionados que colaboran entre ellos para realizar tareas. Esto permite hacer los programas y módulos más fáciles de escribir, mantener y reutilizar. A su vez, dispone de mecanismos de interacción (los llamados métodos) que favorecen la comunicación entre objetos (de una misma clase o de distintas), y en consecuencia, el cambio de estado en los propios objetos.

Dada esta propiedad de conjunto de una clase de objetos, que al contar con una serie de atributos definitorios, requiere de unos métodos para poder tratarlos (lo que hace que ambos conceptos están íntimamente entrelazados), el programador debe pensar indistintamente en ambos términos, ya que no debe nunca separar o dar mayor importancia a los atributos en favor de los métodos, ni viceversa. Hacerlo puede llevar al programador a seguir el hábito erróneo de crear clases contenedoras de información por un lado y clases con métodos que manejen esa información por otro (llegando a una programación estructurada camuflada en un lenguaje de programación orientado a objetos).

Esto difiere de la programación estructurada tradicional, en la que los datos y los procedimientos están separados y sin relación, ya que lo único que se busca es el procesamiento de unos datos de entrada para obtener otros de salida. La programación estructurada anima al programador a pensar sobre todo en términos de procedimientos o funciones, y en segundo lugar en las estructuras de datos que esos procedimientos manejan. En la programación estructurada se escriben funciones y después les pasan datos. Los programadores que emplean lenguajes orientados a objetos definen objetos con datos y métodos y después envían mensajes a los objetos diciendo que realicen esos métodos en sí mismos.

La Programación Orientada a Objetos (POO) como solución

Este tipo de programación se esta utilizando en la actualidad con la ayuda de nuevos conceptos que superan y amplían conceptos antíguos ya conocidos, entre ellos:
Objetos, Clases, Métodos, Eventos, Mensajes, Propiedad o atributo, Estados Internos, Componentes de un Objeto, etc.


Entre las características de la POO

Hay un cierto desacuerdo sobre exactamente qué características de un método de programación o lenguaje le definen como "orientado a objetos", pero hay un consenso general en que las características siguientes son las más importantes:
Abstracción, Encapsulamiento, Principio de Ocultación, Polimorfismo, Herencia, etc.

Programación estructurada

La programación estructurada es una forma de escribir programación de ordenador de forma clara, para ello utiliza únicamente tres estructuras: secuencial, selectiva e iterativa; siendo innecesario y no permitiéndose el uso de la instrucción o instrucciones de transferencia incondicional ( GOTO ).

Ventajas de la programación estructurada

Con la programación estructurada, elaborar programas de computador sigue siendo una labor que demanda esfuerzo, creatividad, habilidad y cuidado. Sin embargo, con este estilo podemos obtener las siguientes ventajas:

1. Los programas son más fáciles de entender, ya que pueden ser leído de forma secuencial, sin necesidad de hacer seguimiento a saltos de línea (GOTO) dentro bloques de código para entender la lógica.

2. La estructura del programa es más clara puesto que las instrucciones están más ligadas o relacionadas entre sí.

3. Reducción del esfuerzo en las pruebas. El seguimiento de las fallas ("debugging") se facilita debido a la lógica más visible, por lo que los errores se pueden detectar y corregir más fácilmente.

4. Reducción de los costos de mantenimiento.

5. Programas más sencillos y más rápidos.

6. Los bloques de código son auto explicativos, lo que apoya a la documentacion.


Inconvenientes de la programación estructurada

El principal inconveniente de este método de programación, es que se obtiene un único bloque de programa, que cuando se hace demasiado grande puede resultar problemático su manejo, esto se resuelve empleando la programación modular, definiendo módulos interdependientes programados y compilados por separado. Un método un poco más sofisticado es la programación por capas, en la que los módulos tienen una estructura jerárquica muy definida y se denominan capas.


Artículo completo Wikipedia

miércoles, 8 de agosto de 2007

Los grandes culpables de C

Asi es señores, ellos son los culpables de haber creado un buen lenguaje, que digo buen, el excelente y tan conocido lengua de programación llamado C.
De quien estoy hablando? de Ken Thompson y Dennis M. Ritchie, cuando en 1969 y de los laboratoris Bell dieron inicio a este proyecto tomado como evolución de B, basado en BCPL.
C es apreciado por la eficiencia del código que produce y es el lenguaje de programación más popular para crear software de sistemas, aunque también se utiliza para crear aplicaciones.
Seguramente vamos a seguir dando mas características del Lenguaje C, pero ahora los protagonista son ellos.

Kenneth Lane Thompson (Nueva Orleans, 4 de febrero de 1943), conocido como Ken Thompson, es un pionero en las ciencias de la computación. Su trabajo con el lenguaje de programación B y el sistema operativo UNIX.


Dennis MacAlistair Ritchie (n. en 1941) es un físico estadounidense que colaboró en el desarrollo del sistema operativo Unix y creó el lenguaje de programación C, entre otas cosas y lenguajes creados.


Ambos Programadores gracias a sus aportes en el campo de los Sistemas Operativos han sido reconocidas con el Premio NEC C&C en 1979, con el Premio Turing de la ACM en 1983 y con la Medalla Nacional de Tecnología de los Estados Unidos en 1998.

Seguramente estos mounstruos de la programación quedarán en la historia como los pioneros de programación, por haber colaborado con tanta programación y sobre todas las cosas por haber realizado uno de los leguajes mas conocidos como es C.

Fuentes de Información Wikipedia

lunes, 6 de agosto de 2007

Aprenda C++ de manera interactiva

Adelantando un poco los conceptos que venimos viendo, los dejo con un post escrito por un amigo RetroMan, (Retronet.com.ar) mostrando y dando a conocer algunas cositas respecto a C++. Que lo disfruten...

Yo vengo de la vieja escuela de programación, de la procedural, en algún momento de mi historia profesional necesite modificar un software GNU que había sido desarrollado en C++. Ya había echo hacia unos años un intento de entrar a la programación orientada a objetos, pero sin lograr buenos resultado. Al necesitar modificar el software antes mencionado tuve que entrar de la peor manera a la programación orientada a objetos, a la fuerza, sin embargo luego gracias a python y a algunos libros y tutoriales pude adentrarme en el mundo de la POO en C++.

Hoy buscando material para mis alumnos encontré un muy interesante Tutorial interactivo de C++.

Que es SQL?

El Lenguaje de Consulta Estructurado (Structured Query Language) es un lenguaje declarativo de acceso a bases de datos relacionales que permite especificar diversos tipos de operaciones sobre las mismas. Una de sus características es el manejo del álgebra y el cálculo relacional permitiendo lanzar consultas con el fin de recuperar información de interés de una base de datos, de una forma sencilla. Es un lenguaje de cuarta generación (4GL).

Con respecto a las caracteristicas podemos decir que el SQL es un lenguaje de acceso a bases de datos que explota la flexibilidad y potencia de los sistemas relacionales permitiendo gran variedad de operaciones sobre los mismos. Es un lenguaje declarativo de alto nivel o de no procedimiento, que gracias a su fuerte base teórica y su orientación al manejo de conjuntos de registros, y no a registros individuales, permite una alta productividad en codificación. De esta forma una sola sentencia puede equivaler a uno o más programas que utilizasen un lenguaje de bajo nivel orientado a registro.

domingo, 5 de agosto de 2007

Lenguajes Compilados e Interpretados

Este es un concepto muy claro que marca muchas veces diferencia entre los lenguajes de programacón que normalmente utilizamos y es un punto clave a la hora de elegir uno para llevar a cabo nuestras aplicaciones. Como corresponde en este blog probaremos tanto lenguajes compilados como también interpretados...

-Lenguajes compilados

Naturalmente, un programa que se escribe en un lenguaje de alto nivel también tiene que traducirse a un código que pueda utilizar la máquina. Los programas traductores que pueden realizar esta operación se llaman compiladores. Éstos, como los programas ensambladores avanzados, pueden generar muchas líneas de código de máquina por cada proposición del programa fuente. Se requiere una corrida de compilación antes de procesar los datos de un problema.

Los compiladores son aquellos cuya función es traducir un programa escrito en un determinado lenguaje a un idioma que la computadora entienda (lenguaje máquina con código binario).

Al usar un lenguaje compilado (como lo son los lenguajes del popular Visual Studio de Microsoft), el programa desarrollado nunca se ejecuta mientras haya errores, sino hasta que luego de haber compilado el programa, ya no aparecen errores en el código.

-Lenguajes interpretados

Se puede también utilizar una alternativa diferente de los compiladores para traducir lenguajes de alto nivel. En vez de traducir el programa fuente y grabar en forma permanente el código objeto que se produce durante la corrida de compilación para utilizarlo en una corrida de producción futura, el programador sólo carga el programa fuente en la computadora junto con los datos que se van a procesar. A continuación, un programa intérprete, almacenado en el sistema operativo del disco, o incluido de manera permanente dentro de la máquina, convierte cada proposición del programa fuente en lenguaje de máquina conforme vaya siendo necesario durante el proceso de los datos. No se graba el código objeto para utilizarlo posteriormente.

La siguiente vez que se utilice una instrucción, se le debe interpretar otra vez y traducir a lenguaje máquina. Por ejemplo, durante el procesamiento repetitivo de los pasos de un ciclo, cada instrucción del ciclo tendrá que volver a ser interpretado cada vez que se ejecute el ciclo, lo cual hace que el programa sea más lento en tiempo de ejecución (porque se va revisando el código en tiempo de ejecución) pero más rápido en tiempo de diseño (porque no se tiene que estar compilando a cada momento el código completo). El intérprete elimina la necesidad de realizar una corrida de compilación después de cada modificación del programa cuando se quiere agregar funciones o corregir errores; pero es obvio que un programa objeto compilado con antelación deberá ejecutarse con mucha mayor rapidez que uno que se debe interpretar a cada paso durante una corrida de producción.


Artículo completo Wikipedia

Clasificación de los Lenguajes de Programación

Los lenguajes de programacion se determinan según el nivel de abstracción, Según la forma de ejecución y Según el paradigma de programación que poseen cada uno de ellos y esos pueden ser:

-Lenguajes de bajo nivel

Los lenguajes de bajo nivel son lenguajes de programación que se acercan al funcionamiento de una computadora. El lenguaje de más bajo nivel es, por excelencia, el código máquina. A éste le sigue el lenguaje ensamblador, ya que al programar en ensamblador se trabajan con los registros de memoria de la computadora de forma directa.

-Lenguajes de medio nivel

Hay lenguajes de programación que son considerados por algunos expertos como lenguajes de medio nivel (como es el caso del lenguaje C) al tener ciertas características que los acercan a los lenguajes de bajo nivel pero teniendo, al mismo tiempo, ciertas cualidades que lo hacen un lenguaje más cercano al humano y, por tanto, de alto nivel.

-Lenguajes de alto nivel

Los lenguajes de alto nivel son normalmente fáciles de aprender porque están formados por elementos de lenguajes naturales, como el inglés. En BASIC, el lenguaje de alto nivel más conocido, los comandos como "IF CONTADOR = 10 THEN STOP" pueden utilizarse para pedir a la computadora que pare si CONTADOR es igual a 10. Por desgracia para muchas personas esta forma de trabajar es un poco frustrante, dado que a pesar de que las computadoras parecen comprender un lenguaje natural, lo hacen en realidad de una forma rígida y sistemática.

jueves, 2 de agosto de 2007

La primera de todos...


La primera programadora de computadora conocida fue Ada Lovelace, hija de Anabella y Lord Byron. Anabella introdujo en las matemáticas a Ada, quien después de conocer a Charles Babbage, tradujo y amplió una descripción de su máquina analítica. Incluso aunque Babbage nunca completó la construcción de cualquiera de sus máquinas, el trabajo que Ada realizó con éstas le hizo ganarse el título de primera programadora de computadoras del mundo. El nombre del lenguaje de programación Ada fue escogido como homenaje a esta programadora.

No olvidemos que este proceso está aplicado a todos los metodos cientificos que actualmente se practican.

Ada Lovelace nacida un 10 de Diciembre de 1815 en Inglaterra es considerada la primera programadora en la historia.

A que llamamos "Compilación"

Llamamos Compilación al proceso por el cual se traducen programas en Código Fuente en Código Objeto. El programa que realiza esta acción se llama Compilador. El archivo de Código Objeto que se obtiene despues de la compilación esta representado normalmente en Código de Maquina, aunque también puede ser un codigo binario intermedio multiplataforma (bytecode).

Para conseguir el programa ejecutable final a partir de todos los archivos de Código Objeto se debe utilizar un programa llamado montador o un enlazador (linker). Este proceso de montaje tiene como resultado un archivo ejecutable que contiene el programa en Código Máquina listo para ser ejecutado con la ayuda del Sistema Operativo (GNU/Linux, Windows, Mac OSX, etc...)
El proceso de enlazamiento arreglas las referencias a subrutinas externas.

Entradas populares