Categories
Rafa

Guia para programar computadoras

Este articulo lo escribi cuando estaba en sexto semestre de prepa en el IEST. Mi papa me pidio que escribiera este articulo ya no me acuerdo para que. Al parecer para este entonces yo ya sabia mucho sobre los distintos lenguajes de programacion. El articulo sirve como una buena introduccion a la programacion y lo que esta escrito es meramente mi opinion y no es necesariamente 100% preciso.

 

 

Guía para programar computadoras

 

Introducción

Actualmente las computadoras se están volviendo un instrumento de gran ayuda para el hombre, muchas cosas han cambiado y ahora casi no se puede hacer nada sin una computadora.  Las computadoras controlan muchas cosas y ayudan a realizar muchas tareas que serían prácticamente imposibles para el hombre llevar a cabo.  Es por eso que las computadoras son tan importantes actualmente.

 

Sin embargo, una computadora por sí sola no puede hacer nada, necesita algo que le diga que hacer, y esto es, un programa; y alguien tiene que hacer estos programas: el programador.  El programador tiene un papel muy importante pues de él depende el buen funcionamiento de un programa y de todo el sistema que esté controlando este programa.  Este texto presenta una pequeña guía para aprender a programar en las computadoras modernas.

 

¿Que es programar?

La computación es relativamente nueva, y la programación también, sin embargo estas avanzan muy rápidamente y cada vez se crean nuevas técnicas, nuevos lenguajes, etc.  Programar más que nada requiere de un buen razonamiento y de una buena lógica, y una buena comprensión de la computadora para que así el programador pueda solucionar los problemas que tiene que programar.  Existen muchas técnicas de programación que sirven para solucionar muchos problemas comunes que se presentan en programación. 
Sin embargo, saber programar no es saberse muchas técnicas y aplicarlas al programar, un programador debe saber crear sus propias técnicas que sean adecuadas para solucionar los problemas particulares que se presenten.

 

Tipos de lenguajes

Actualmente existen varios lenguajes de programación que son muy utilizados.  El más popular y más utilizado es el C/C++.  La programación se puede dividir en dos tipos: de bajo nivel, y de alto nivel.

El lenguaje de bajo nivel está más apegado a la máquina, usa instrucciones muy simples y es algo difícil de comprender para los principiantes.  Ej. el assembler, y el C (a veces)

El lenguaje de alto nivel es más fácil de programar pues usa instrucciones con un lenguaje más humano, pero que resultan más complejas para la máquina de entender.  Ej: basic, pascal, C++, smalltalk, perl, etc…

 

Técnicas de programación

La programación ha ido progresando, al principio solo se usaba assembler, luego se usaron otros lenguajes como el fortram, basic,  etc., estos eran lenguajes sencillos y simples.  Luego surgió la programación estructurada, los programas eran ya más robustos, como en pascal.  Luego surgió la programación orientada a objetos, este tipo de programación es muy complejo, gracias al OOP (object oriented programming), es posible crear programas muy complejos, y resolver problemas muy difíciles, además es un tipo de lenguaje muy bien estructurado.

Aunque el OOP sea muy bueno, no se puede decir que sea la mejor manera de hacer las cosas, siempre se seguirán creando nuevas técnicas de programación.  Actualmente también están de moda las interfaces que consiste en crear diferentes interfaces para una sola clase.  También se usa la programación controlada por eventos, como en los programas de windows.

 

Por donde empezar

Ok, así que quieres programar?.  Bueno, aquí van unos cuantos tips para programar:

Lo primero que debes hacer es aprender a usar una computadora, y saber usar la plataforma donde piensas programar.  Es decir si vas a hacer un programa de DOS, debes saber bien como usar DOS, no sólo saber ejecutar programas o copiar archivos… sino saber cambiar configuraciones, hacer archivos batch, conocer todos los comandos, etc., si vas a hacer un programa para windows, debes saber bien como usar windows, y como dije, no sólo saber meterte a Internet , mandar mails, o clickear el “Inicio” para entrar a un programa, etc.  ¿Cómo vas a hacer un programa que grabe a un archivo si ni siquiera sabes como guardar en Word, o un programa de windows que haga soniditos si no sabes como instalar la tarjeta y configurarla en windows, o un juego de nintendo si no sabes jugar los juegos?

Así es que si no sabes usar bien una PC o una Mac o un nintendo, etc., ponte a trabajar en eso, todavía te falta mucho por aprender.  Saber usar la computadora y el sistema es muy importante. 

Los tipos de sistemas que son importantes aprender son: DOS, Windows, MacOS, Unix y X Window System, y si vas para hacer juegos, que seas bueno con el Super Nintendo y el Nintendo 64 aunque sea.

 

El modo texto

Se debe empezar por programar en modo texto, al estilo terminal, que van apareciendo líneas de texto y cuando se llega al final de la pantalla, el texto se corre para arriba.  No es posible empezar a programar en un estilo gráfico (como windows) pues las bases están en el estilo de modo texto, además el modo gráfico requiere mucha programación extra la cual es ya más avanzada.

 

El buen BASIC

Probablemente sea buena idea aprender BASIC al principio y entretenerse con él haciendo programitas y jueguitos sencillos.  El BASIC no requiere mucho entendimiento de la máquina.  El BASIC es un lenguaje no muy estructurado y carece de muchas cosas, y debes usar tu ingenio para resolver los problemas, tu puedes programar como se te de la gana y BASIC no se quejará, sin embargo cuando empieces con programas más complicados y grandes tus programas empezarán a llenarse de errores y será muy difícil hacerlos funcionar. No es necesario aprender BASIC pues existen mejores maneras de programar, sin embargo es un buen lenguaje para programas sencillos y vale la pena echarle una probadita.

 

 

El lenguaje estructurado: el odioso pascal

Ahora si es muy necesario que aprendas todos los conceptos básicos de una computadora para empezar con el pascal, el pascal es un buen comienzo para programar.  Aprender C directo es muy difícil, y probablemente te revuelvas mucho si no sabes nada de programación.  Agarra un libro de computación y estudia algunos conceptos básicos, como bit, byte, memoria, CPU, etc., sólo para que te des una idea de cómo están las cosas.

También tienes que aprender los elementos de un programa estructurado, cosas como: variables, tipos de variables, funciones, procedimientos, entrada y salida, estructuras de control flow (while, do, for, until, repeat, etc.), estructuras de datos…

Una vez aprendidos estos conceptos, a programar en pascal se ha dicho.

Al contrario de cómo en BASIC, pascal te va a dar muchos dolores de cabeza al principio pues es muy estricto y muchas veces te va a poner peros a lo que estás tratando de hacer, sin embargo al ratito ya vas a agarrarle la onda y tus programas van a tener un mejor diseño, una mejor estructura, y vas a tener menos chance de experimentar un “crash” de tu programa cuando se esté ejecutando.

 

Principios básicos del funcionamiento de una computadora

Antes de seguir adelante con un lenguaje más avanzado es necesario aprender conceptos más avanzados en cuando a el funcionamiento de computadoras y programación: compilador, lenguaje de máquina, almacenamiento de datos (bytes, bits), CPU, álgebra boleana, etc… este tipo de introducción es muy importante.  Recomiendo una leída a los primeros capítulos de “The art of Assembler” de Randall Hyde

 

El poderoso C

Hay que admitirlo, C es el lenguaje más popular y más usado actualmente y probablemente lo siga siendo por mucho tiempo.  El lenguaje C realmente es un muy buen lenguaje.  Ha logrado de cierta manera juntar los dos tipos de programación (el de alto nivel y el de bajo nivel).  El C tiene mucho que ver con el funcionamiento de la máquina, es como un lenguaje ensamblador de alto nivel, además el C es muy flexible, es un lenguaje muy extenso y produce código compacto que se ejecuta muy rápidamente.

Pero cuidado, con C estas jugando con fuego, es como con el assembler.  En el C se aflojan un poco las cosas, no es tan estricto como el pascal.  Se pueden hacer muchas cosas que el pascal no te permite pero, es necesario seguir respetando el estilo estructurado (para eso aprendiste pascal), y usar las características especiales de C adecuadamente (para eso aprendiste mas a fondo el funcionamiento de la computadora).

 

El veloz assembler

Ahora sí, a entrarle al assembler.  Aún en C no es posible hacer todo, se necesita el assembler.  El assembler va a hacer que tus programas ocupen muy poca memoria y sean increíblemente veloces.  El inconveniente es que es algo complicado programar en assembler.  Muchos programadores le sacan al assembler, pero no tienes idea de cómo puede el assembler mejorar tus programas.  No estoy diciendo que de ahora en adelante siempre uses assembler pero que lo sepas utilizar donde es necesario, aquellas partes de programa que deben ejecutarse rapidamente, o donde no puedes ocupar mucha memoria, etc.

 

Compatiblidad

Mucha gente no le gusta programar en assembler por que dicen que el programa es incompatible con otras plataformas, claro que esto es cierto, pero no es buena excusa pues en realidad, es casi imposible hacer un programa que sea compatible con otra máquina diferente, este escrito en C, en C++, en pascal, en lo que tu quieras.  Es por eso que le doy tanta importancia a que conozcas bien la(s) máquina(s) y el sistema(s) donde piensas programar pues no basta con saber un lenguaje de programación.

Afortunadamente las computadoras no son TAN diferentes entre sí, además se han creado varias librerías estándares con funciones comunes que toda computadora debe poder realizar, así que ahora es más fácil pasar un programa de una plataforma a otra, y a la hora de pasarlo a la otra plataforma es necesario aprovechas aquellas capacidades que tenga la computadora para hacer nuestro programa más eficiente.

 

C++, el C orientado a objetos

Existen otros lenguajes que son orientados a objetos, sin embargo, C++ es el más popular y probablemente el mejor de todos modos.  Así que para aprender lo que es lenguaje orientado a objetos, está perfectamente bien aprender con C++.

 

Juntándolo todo

Ahora que sabes un lenguaje estructurado como C, assembler, y un lenguaje orientado a objetos como C++, es necesario que utilices estos tres en tu programa y hagas un equilibrio.  Ciertas partes de tu programa van a ser muy complejas y vas a necesitar un poco de C++, creando varias clases, otras partes van a tener tareas sencillas, y unas cuantas funciones bastarán, y otras partes van a ser críticas en velocidad y aquí es cuando utilizas el assembler.

 

Gráficos

Hay muchas aplicaciones de los gráficos en las computadoras: juegos, animaciones, diseño, interfaces del usuario, etc.

Sería bueno que aprendieras algo de cómo funcionan los gráficos en computadora, que conozcas algunas funciones gráficas y las técnicas básicas de animación.  Esto no es necesario para windows pero como windows es un sistema gráfico, lo más probable es que sepas algo de gráficos.  Además debes saber lo básico en cuanto a gráficos en assembler (checa los VGA tutorials de Grant Smith, de Asphixia), también libros de Michael Abrash, etc., pues definitivamente esta es la mejor manera de lograr buenas animaciones.  Si sólo quieres crear gráficos como para una interfaz del usuario, puedes utilizar las funciones incluidas con el compilador que tengas.

Si quieres hacer un juego o una aplicación multimedia, necesitas usar gráficos, tienes 2 opciones: crear tu propia librería de funciones (para esto necesitarías conocer programar gráficos en assembler), o utilizar una librería de otra persona, como Allegro, FastGraph, o DirectX, etc.

 

Programación con interfaz gráfica del usuario

Ok, aquí es donde entra Windows, ni modo, debido a que es el sistema operativo gráfico más utilizado, es en el que yo recomiendo que aprendas a hacer tus programas con interfaz gráfica.  Para esto ya debes saber C, y lo mejor es empezar por la manera tradicional de programar en windows, para conocer las bases del funcionamiento del sistema échale un ojo al “Programming Windows” de Charles Petzold.  Después ya puedes seguirle con el C++ usando MFC de Microsoft o OWL de Borland para hacer tus programas, y también aprende a usar el Visual C++, Borland C++ Builder, si puedes aprender los 2 mejor, pues son los más utilizados.  Es bueno también que aprendas varias técnicas para diseñar tu interfaz del usuario, hay varios libros para eso, aunque tu solo puedes ir aprendiendo con la práctica.  Otros sistemas gráficos son el MacOS de Apple y el X Window System creado por estudiantes del MIT, para Unix.  Aprender estos otros sistemas ya depende de a que plataforma de vas a dedicar a programar, claro si es necesario que aunque sea los aprendas usar mas o menos bien.

 

Otros lenguajes para windows

Existen otros lenguajes muy populares para programar en windows: Visual Basic y Delphi.  Ya sabiendo programar windows en C no es necesario para nada usar Visual Basic o Delphi, pues en un paquete como Visual C++ o C++ Builder es posible hacer un programa mucho mejor.

Sin embargo, paquetes como Visual Basic y Delphi son relativamente fáciles de usar y se pueden hacer programas rápidamente sin mucho esfuerzo,  muchos programadores lo usan, así que si quieres conocer un poco más de ellos, no estaría mal que los aprendieras, si ya conoces programación de windows en C, aprender Visual Basic o Delphi es pan comido.  Delphi es buena opción pues utiliza el lenguaje Object Pascal, el cual tiene un muy buen soporte para el lenguaje orientado a objetos y eventos.

Aunque Visual Basic probablemente se usa más pues es de Microsoft.

 

Internet, html, y Java

Actualmente Internet está muy de moda y aunque no vayas a programar Java debes saber algo del funcionamiento de Internet, así le podrás sacar el mayor provecho posible, de Internet podrás obtener una invaluable cantidad de información que te va a servir para muchas cosas y para estar actualizado.

Ahora si piensas hacer algo en Internet, poner un sitio, o algo, tendrás que aprender el código html y el Java, el cual es muy parecido al C, así que no debe ser difícil para ti aprenderlo.  Java no es muy rápido ni nada, además tiene muchas limitaciones, pero es el precio que se paga para que los programas sean portables de una plataforma a otra.

 

Diseño de lenguajes de programación, compiladores y sistemas operativos

Hasta ahorita he estado asumiendo que los programas que vas a hacer son aplicaciones que corren en una máquina con un sistema operativo, esto es muy común.  Los lenguajes de programación, los compiladores y el sistema operativo son la base para poder programar, pero eventualmente podrás crear tu propio lenguaje de programación, tu propio compilador y hasta tu propio sistema operativo!.  Para esto ya tienes que dominar perfectamente el assembler de la máquina donde vas a hacer tu sistema.  También tienes que conocer muy bien el hardware, y claro debes saber bien como está hecho un sistema operativo, y ser creativo y crear algo nuevo, no sirve de nada hacer otro windows, el objetivo es hacer algo nuevo o mejor.

 

Inteligencia artificial

Muy de moda también actualmente.  Es necesario saber técnicas de inteligencia artificial, ya que tienen aplicación en muchas cosas, como juegos, simuladores, robots, hasta incluso programas como procesadores de texto.  Es bueno crear programas que sean “inteligentes” y que puedan tomar decisiones de cómo hacer mejor las cosas; y que puedan hacer tareas más complicadas.

 

Para terminar

Aquí se presentan una serie de aspectos de la programación, y tips, que según mi opinión deben estudiarse para poder ser un buen programador.  Hay muchas cosas que probablemente no mencioné aquí pero que podrían ser importantes también, así que es importante estar siempre actualizado y al tanto de lo nuevo que va saliendo en el mundo de las computadoras, nunca se termina de aprender.

 

Glosario

Interface: Es un conjunto de declaraciones de funciones que forman parte de una librería o una clase.

Clase: En OOP, es un tipo de objeto.  Un objeto tiene propiedades y funciones o métodos. Ej. Clase: gato, propiedad: color, función: saltar.

Evento: Es algo que sucede directa o indirectamente por la acción del usuario. Ej: el clic a un botón, el movimiento del mouse, que se minimice una ventana.

Leave a Reply

Your email address will not be published. Required fields are marked *