Programación
Programación
Programación
Ir a la navegaciónIr a la búsqueda
Este artículo o sección tiene referencias, pero necesita más para
complementar su verificabilidad.
Este aviso fue puesto el 15 de junio de 2016.
Índice
1Funcionamiento de un programa
2Léxico y programación
3Programas y algoritmos
4Compilación
5Programación e ingeniería del software
6Referencias históricas
7Objetivos de la programación
8Ciclo de vida del software
9Véase también
10Referencias
11Enlaces externos
Funcionamiento de un programa[editar]
Para crear un programa y que la computadora lo interprete y ejecute, las
instrucciones deben escribirse en un lenguaje de programación.
El lenguaje entendido por una computadora se conoce como código máquina.
Consiste en secuencias de instrucciones básicas que el procesador reconoce,
codificadas como cadenas de números 1 y 0 (sistema binario). En los primeros
tiempos de la computación se programaba directamente en código máquina.
Escribir programas así resultaba demasiado complicado, también era difícil
entenderlos y mantenerlos una vez escritos. Con el tiempo, se fueron
desarrollando herramientas para facilitar el trabajo.
Los primeros científicos que trabajaron en el área decidieron reemplazar las
secuencias de unos y ceros por mnemónicos, que son abreviaturas en inglés de la
función que cumple una instrucción de procesador. Por ejemplo, para sumar se
podría usar la letra A de la palabra inglesa add (sumar). Crearon así una familia de
lenguajes de mayor nivel, que se conocen como lenguaje ensamblador o
simplemente ensamblador (en inglés, assembly). Con el tiempo los
ensambladores incorporaron facilidades adicionales, pero siempre manteniendo
una correspondencia directa con las instrucciones de procesador. A nivel
conceptual, entonces, programar en ensamblador es muy similar a hacerlo en
lenguaje máquina, solo que de una forma más amigable.
A medida que la complejidad de las tareas que realizaban las computadoras
aumentaba, el lenguaje ensamblador fue mostrando limitaciones. Para hacer un
programa había que conocer en detalle el funcionamiento de la computadora
donde se iba a ejecutar, qué instrucciones proveía y cómo emplearlas. A veces las
instrucciones eran demasiado básicas, por ejemplo podía haber una para sumar
dos números pero no para multiplicar, y entonces era necesario programar un
algoritmo que realizara la multiplicación en base a instrucciones más básicas.
Otras veces, la forma de emplear las instrucciones era engorrosa. Además, si se
usaba otro modelo de computadora, en muchos casos había que reescribir el
programa con otras instrucciones. El siguiente paso fue crear los lenguajes de alto
nivel.
Una vez que se termina de escribir un programa, es necesario de alguna forma
traducirlo a lenguaje máquina, que es lo único que entiende el procesador. Esta
tarea es automática, por medio de un programa adicional que toma el código
escrito y lo procesa. Hay distintos enfoques para este procesamiento. El enfoque
clásico se llama compilación: el programa toma el código en un lenguaje y genera
código en el otro; al programa traductor se lo llama compilador. En general se
habla de compilación y compiladores cuando el lenguaje de origen es de alto nivel;
si la traducción es desde lenguaje ensamblador, se llama ensamblado y el
programa se llama ensamblador (hay que distinguir el lenguaje ensamblador del
programa ensamblador; en inglés es más claro, son assembly
language y assembler respectivamente).2Generalmente existe una fase posterior a
la compilación denominada enlace o enlazado (linking en inglés). Los programas
pueden escribirse en partes separadas y además pueden usar recursos provistos
por bibliotecas. El enlazado, realizado por un programa llamado enlazador,
combina todos los componentes y así genera un programa ejecutable completo.
En algunos lenguajes de programación, puede usarse un enfoque diferente que no
requiera compilación y enlace: un programa llamado intérprete va leyendo el
código y realizando en el momento las acciones que haría el programa. Se evita
generar código separado y la experiencia es que se está ejecutando el código en
el lenguaje de alto nivel, a pesar de que el procesador no lo entienda de forma
nativa.
Léxico y programación[editar]
La programación se rige por reglas y un conjunto más o menos reducido de
órdenes, expresiones, instrucciones y comandos que tienden a asemejarse a
una lengua natural acotada (en inglés); y que además tienen la particularidad de
una reducida ambigüedad.
En los lenguajes de programación se distinguen diversos elementos entre los que
se incluyen el léxico propio del lenguaje y las reglas semánticas y sintácticas.
Dentro del léxico, generalmente se utilizan símbolos y palabras con funciones
específicas dentro del lenguaje. Estas palabras suelen tomarse del inglés y no se
las puede utilizar de manera diferente: son las denominadas palabras reservadas.
Otra particularidad de los lenguajes es el permitir a los programadores el uso de
comentarios: frases o párrafos sin funcionalidad en el programa, que los
compiladores o intérpretes descartan y solo están destinados a ser leídos por
personas; así se pueden dejar explicaciones que ayuden a entender el código a
quien lo lea.3
Programas y algoritmos[editar]
Un algoritmo es una secuencia no ambigua, finita y ordenada de instrucciones que
han de seguirse para resolver un determinado problema. Un programa
normalmente implementa y contiene uno o más algoritmos. Un algoritmo puede
expresarse de distintas maneras: en forma gráfica, como un diagrama de flujo, en
forma de código como en pseudocódigo o un lenguaje de programación, en forma
explicativa.
Los programas suelen subdividirse en partes menores, llamadas módulos, de
modo que la complejidad algorítmica de cada una de las partes sea menor que la
del programa completo, lo cual ayuda a simplificar el desarrollo del programa. Esta
es una práctica muy utilizada y se conoce como "refino progresivo".
Según Niklaus Wirth, un programa está formado por los algoritmos y la estructura
de datos.
La programación puede seguir muchos enfoques, o paradigmas, es decir, diversas
maneras de formular la resolución de un problema dado. Algunos de los
principales paradigmas de programación son:
Programación declarativa
Programación imperativa
Programación estructurada
Programación modular
Programación orientada a objetos
Programación orientada a eventos
Compilación[editar]
El programa escrito en un lenguaje de programación de alto nivel (fácilmente
comprensible por el programador) es llamado programa fuente y no se puede
ejecutar directamente en una computadora. La opción más común es compilar el
programa obteniendo un módulo objeto, aunque también, si el lenguaje lo soporta,
puede ejecutarse en forma directa pero solo a través de un intérprete. Algunos
lenguajes, tal como BASIC, disponen de ambas formas de ejecución, lo cual
facilita la tarea de depuración y prueba del programa.
El código fuente del programa se debe someter a un proceso de traducción para
convertirlo a lenguaje máquina o bien a un código intermedio, generando así un
módulo denominado "objeto". A este proceso se le llama compilación.
Habitualmente la creación de un programa ejecutable (un típico .exe
para Microsoft Windows o DOS) conlleva dos pasos: el primer paso se llama
compilación (propiamente dicho) y traduce el código fuente, escrito en un lenguaje
de programación y almacenado en un archivo de texto, a código en bajo nivel
(normalmente a código objeto, no directamente a lenguaje máquina). El segundo
paso se llama enlazado en el cual se enlaza el código de bajo nivel generado de
todos los ficheros y subprogramas que se han mandado compilar y se añade el
código de las funciones necesarias que residen en bibliotecas externas, para que
el ejecutable pueda comunicarse directamente con el sistema operativo,
traduciendo así finalmente el código objeto a código máquina, y generando un
módulo ejecutable.
Estos dos pasos se pueden hacer por separado, almacenando el resultado de la
fase de compilación en archivos objetos (un típico .o para Unix, .obj para MS-
Windows y DOS); para enlazarlos en fases posteriores, o crear directamente el
ejecutable; con lo que la fase de compilación puede almacenarse de forma
temporal. Un programa podría tener partes escritas en varios lenguajes, por
ejemplo, Java, C, C++ y ensamblador, que se podrían compilar de forma
independiente y luego enlazar juntas para formar un único módulo ejecutable.
Referencias históricas[editar]
El trabajo de Ada Lovelace, hija de Anabella Milbanke Byron y Lord Byron, que
realizó para la máquina de Babbage le hizo ganarse el título de primera
programadora de computadoras del mundo, aunque Babbage nunca completó la
construcción de la máquina. El nombre del lenguaje de programación Ada fue
escogido como homenaje a esta programadora.
Objetivos de la programación[editar]
La programación debe perseguir la obtención de programas de calidad. Para ello
se establece una serie de factores que determinan la calidad de un programa.
Algunos de los factores de calidad más importantes son los siguientes:
Véase también