Ir al contenido

Diferencia entre revisiones de «Lenguaje de programación»

De Wikipedia, la enciclopedia libre
Contenido eliminado Contenido añadido
TXiKiBoT (discusión · contribs.)
Línea 1: Línea 1:
Con la aparición de las [[computadora]]s desaparecen las secuencias de posiciones de llaves mecánicas que debían desconectarse para obtener una acción determinada, una llave conectada era un 1 y una llave desconectada era un 0. Una sucesión de llaves en cualquiera de sus dos posiciones definía una secuencia de ceros y unos (por ejemplo: 0100011010011101...) que venía a representar una instrucción o un conjunto de instrucciones ([[programa (computación)|programa]]) para el ordenador (o computador) en el que se estaba trabajando. A esta primera forma de especificar programas para una computadora se la denomina [[lenguaje máquina | lenguaje máquina o código máquina]].
La '''programación imperativa''', en contraposición a la [[programación declarativa]] es un [[paradigma de programación]] que describe la programación en términos del estado del programa y sentencias que cambian dicho estado. Los programas imperativos son un conjunto de instrucciones que le indican al [[computador]] cómo realizar una tarea.


La necesidad de recordar secuencias de programación para las acciones usuales llevó a denominarlas con nombres fáciles de memorizar y asociar: ADD (sumar), SUB (restar), MUL (multiplicar), CALL (ejecutar subrutina), etc. A esta secuencia de posiciones se le denominó "instrucciones", y a este conjunto de instrucciones se le llamó [[lenguaje ensamblador | lenguaje ensamblador]].
La implementación de [[hardware]] de la mayoría de computadores es imperativa; prácticamente todo el hardware de los computadores está diseñado para ejecutar [[código de máquina]], que es nativo al computador, escrito en una forma imperativa. Esto se debe a que el hardware de los computadores implementa el paradigma de las [[Máquina de Turing|Máquinas de Turing]]. Desde esta perspectiva de bajo nivel, el estilo del programa está definido por los contenidos de la memoria, y las sentencias son instrucciones en el lenguaje de máquina nativo del computador (por ejemplo el [[lenguaje ensamblador]]).


Posteriormente aparecieron diferentes lenguajes de programación, los cuales reciben su denominación porque tienen una estructura [[sintáctica]] similar a los lenguajes escritos por los humanos.
Los lenguajes imperativos de alto nivel usan [[variable]]s y sentencias más complejas, pero aún siguen el mismo paradigma. Las recetas y las listas de revisión de procesos, a pesar de no ser programas de computadora, son también conceptos familiares similares en estilo a la programación imperativa; cada paso es una instrucción, y el mundo físico guarda el estado (Zoom).


==Concepto==
Los primeros lenguajes imperativos fueron los lenguajes de máquina de los computadores originales. En estos lenguajes, las instrucciones fueron muy simples, lo cual hizo la implementación de hardware fácil, pero obstruyendo la creación de programas complejos. [[Fortran]], cuyo desarrollo fue iniciado en [[1954]] por [[John Backus]] en [[IBM]], fue el primer gran lenguaje de programación en superar los obstáculos presentados por el código de máquina en la creación de programas complejos.
[[Imagen:Programming language textbooks.jpg|thumb|right|200px|Varios libros sobre diversos '''lenguajes de programación'''.]]
Un '''[[lenguaje]] de [[programación]]''' es un conjunto de símbolos y reglas [[sintaxis|sintácticas]] y [[semántica|semánticas]] que definen su estructura y el significado de sus elementos y expresiones. Es utilizado para controlar el comportamiento físico y lógico de una máquina.


Aunque muchas veces se usan los términos 'lenguaje de programación' y '[[lenguaje informático]]' como si fuesen sinónimos, no tiene por qué ser así, ya que los lenguajes informáticos engloban a los lenguajes de programación y a otros más, como, por ejemplo, el [[HTML]] (lenguaje para el marcado de [[página web|páginas web]] que no es propiamente un lenguaje de programación).
== Algunos lenguajes imperativos ==

*[[Active Server Pages|ASP]]
Un lenguaje de programación permite a uno o más [[programador|programadores]] especificar de ''manera precisa'' sobre qué datos debe operar una computadora, cómo estos datos deben ser almacenados o transmitidos y qué acciones debe tomar bajo una variada gama de circunstancias. Todo esto, a través de un [[lenguaje]] que intenta estar ''relativamente'' próximo al lenguaje humano o natural, tal como sucede con el lenguaje [[Léxico]]. Una característica relevante de los lenguajes de programación es precisamente que más de un programador puedan tener un conjunto común de instrucciones que puedan ser comprendidas entre ellos para realizar la construcción del programa de forma colaborativa.
*[[BASIC]]

*[[Lenguaje de programación C|C]]
Los procesadores usados en las computadoras son capaces de entender y actuar según lo indican programas escritos en un lenguaje fijo llamado [[lenguaje de máquina]]. Todo programa escrito en otro lenguaje puede ser ejecutado de dos maneras:
*[[C Sharp|C#]]

*[[C++]]
* Mediante un programa que va adaptando las instrucciones conforme son encontradas. A este proceso se lo llama ''interpretar'' y a los programas que lo hacen se los conoce como [[intérprete informático|intérpretes]].
*[[Fortran]]
* Traduciendo este programa al programa equivalente escrito en lenguaje de máquina. A ese proceso se lo llama ''compilar'' y al programa traductor se le denomina [[compilador]].
*[[Pascal]]

*[[Lenguaje de programación Java|Java]]
{{endesarrollo}}
*[[Perl]]

*[[PHP]]
==Clasificación de los lenguajes de programación==
*[[Lua]]

Los lenguajes de programación se pueden clasificar atendiendo a varios criterios:
*
* Según el nivel de abstracción
* Según el paradigma de programación que poseen cada uno de ellos
* lenguaje de ensamblador
===Según su nivel de abstracción===
====Lenguajes de Máquina====
{{AP|Lenguaje de máquina}}
Están escritos en lenguajes directamente legibles por la máquina (computadora), ya que sus instrucciones son cadenas binarias (0 y 1). Da la posibilidad de cargar (transferir un programa a la memoria) sin necesidad de traducción posterior lo que supone una velocidad de ejecución superior, solo que con poca fiabilidad y dificultad de verificar y poner a punto los programas.

====Lenguajes de bajo nivel====
{{AP|Lenguaje 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 por excelencia es 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.
Ejemplo:
<source lang="asm">
;Lenguaje ensamblador, sintaxis Intel para procesadores x86
mov eax,1 ;mueve a al registro eax el valor 1
xor ebx, ebx ;pone en 0 el registro ebx
int 80h ;llama a la interrupción 80h (80h = 128 sistema decimal)
</source>
Ejecutar ese código en sistemas [[UNIX]] o basados en él equivale a una funcion exit(0) (terminar el programa retornando el valor 0)

====Lenguajes de medio nivel====
{{AP|Lenguaje 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 de programación C|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.
Ejemplo:
<source lang="c">
/*Lenguaje C*/

/*declaración de las funciones estandars de entrada y salida*/
#include <stdio.h>

int main(int argc, char **argv)
{
char *p; /*creamos un puntero a un byte*/
if(argc == 1){
printf("\nIngrese un argumento al programa\n");/*imprimimos el texto*/
return 1;
}
p = 0x30000 /*el puntero apunta a 0x30000 */
*p = argv[1][0] /*el primer caracter del primer argumento lo copiamos a la posición 0x30000 */
return 0;
}

</source>
El ejemplo es muy simple y muestra a los [[Puntero_(programación)|punteros]] de C, éstos no son muy utilizados en [[lenguajes de alto nivel]], pero en C sí.

====Lenguajes de alto nivel====
{{AP|Lenguaje 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, uno de los lenguajes de alto nivel más conocidos, los comandos como <code>"IF CONTADOR = 10 THEN STOP"</code> pueden utilizarse para pedir a la computadora que pare si el '''CONTADOR''' es igual a '''10'''. Esta forma de trabajar puede dar la sensación de que las computadoras parecen comprender un lenguaje natural; en realidad lo hacen de una forma rígida y sistemática, sin que haya cabida, por ejemplo, para ambigüedades o dobles sentidos.
Ejemplo:
<source lang="pascal">
{Lenguaje Pascal}
program suma;
var x,s,r:integer; {declaración de las variables}
begin {comienzo del programa principal}
writeln('Ingrese 2 números enteros');{imprime el texto}
readln(x,s); {lee 2 números y los coloca en las variables x y s}
r:= x + s; {suma los 2 números y coloca el resultado en r}
writeln('La suma es ',r); {imrpime el resultado}
readln;
end.{termina el programa principal}
</source>
Ese es el lenguaje Pascal, muy utilizado por principiantes al aprender a programar.

===Según el paradigma de programación===
{{AP|Paradigma de programación}}

Un paradigma de programación representa un enfoque particular o filosofía para la construcción del software. No es mejor uno que otro, sino que cada uno tiene ventajas y desventajas. Dependiendo de la situación un paradigma resulta más apropiado que otro.

Atendiendo al paradigma de programación, se pueden clasificar los lenguajes en :

* El [[Programación imperativa | paradigma imperativo o por procedimientos]] es considerado el más común y está representado, por ejemplo, por el [[lenguaje de programación C|C]] o por [[BASIC]].
* El [[Programación funcional | paradigma funcional]] está representado por la familia de lenguajes [[LISP]] (en particular [[Scheme]]), [[ML]] o [[Haskell]].
* El [[Programación lógica | paradigma lógico]], un ejemplo es [[PROLOG]].
* El [[Programación orientada a objetos | paradigma orientado a objetos]]. Un lenguaje completamente orientado a objetos es [[Smalltalk]].

'''Nota''': La representación orientada a objetos mejora la estructura de los datos y por lo tanto se ha aplicado a diferentes paradigmas como [[Red de Petri|Redes de Petri]], Imperativo Secuencial, Lógica de Predicados, Funcional, etc. No obstante, la manipulación no queda fundamentalmente afectada y por lo tanto el paradigma inicial tampoco a pesar de ser re-orientado a objetos.

Si bien puede seleccionarse la forma pura de estos paradigmas a la hora de programar, en la práctica es habitual que se mezclen, dando lugar a la [[programación multiparadigma]].

Actualmente el paradigma de programación más usado debido a múltiples ventajas respecto a sus anteriores, es la [[programación orientada a objetos]].

==== Lenguajes imperativos ====
Son los lenguajes que dan instrucciones a la computadora, es decir, órdenes.

====Lenguajes Funcionales====
Paradigma Funcional: este paradigma concibe a la computación como la evaluación de funciones matemáticas y evita declarar y cambiar datos. En otras palabras, hace hincapié en la aplicación de las funciones y composición entre ellas, más que en los cambios de estados y la ejecución secuencial de comandos (como lo hace el paradigma procedimental). Permite resolver ciertos problemas de forma elegante y los lenguajes puramente funcionales evitan los efectos secundarios comunes en otro tipo de programaciones.

====Lenguajes Lógicos====
La computación lógica direcciona métodos de procesamiento basados en el razonamiento formal. Los objetos de tales razonamientos son "hechos" o reglas "if then". Para computar lógicamente se utiliza un conjunto de tales estamentos para calcular la verdad o falsedad de ese conjunto de estamentos. Un estamento es un hecho si sus tuplas verifican una serie de operaciones.

Un hecho es una expresión en la que algún objeto o conjunto de objetos satisface una relación específica. Una tupla es una lista inmutable. Una tupla no puede modificarse de ningún modo después de su creación.[http://es.diveintopython.org/odbchelper_tuple.html]

Un regla if then es un estamento que informa acerca de conjuntos de tuplas o estamentos relacionados que pueden predecir si otras tuplas satisfacerán otras relaciones.

Un estamento que es probado verdadero como resultado de un proceso se dice que es una inferencia del conjunto original. Se trata por tanto de una descripción de cómo obtener la veracidad de un estamento dado que unas reglas son verdaderas.

La computación lógica está por tanto relacionada con la automatización de algún conjunto de métodos de inferencia.

====Lenguajes orientados a objetos====
{{AP|Programación orientada a objetos}}
La [[Programación Orientada a Objetos]] (POO u OOP según sus siglas en inglés) es un paradigma de programación que usa objetos y sus interacciones para diseñar aplicaciones y programas de computadora. Está basado en varias técnicas, incluyendo herencia, modularidad, polimorfismo y encapsulamiento. Su uso se popularizó a principios de la década de 1990. Actualmente son muchos los lenguajes de programación que soportan la orientación a objetos.

==Implementación==

La implementación de un lenguaje es la que provee una manera de que se ejecute un programa para una determinada combinación de software y hardware. Existen básicamente dos maneras de implementar un lenguaje: Compilación e interpretación.
Compilación es la traducción a un código que pueda utilizar la máquina. Los programas traductores que pueden realizar esta operación se llaman [[compilador]]es. É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 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 compilación para utilizarlo en una ejecució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 (informática)|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 procesamiento de los datos. El código objeto no se graba para utilizarlo posteriormente.

La siguiente vez que se utilice una instrucción, se la deberá interpretar otra vez y traducir a lenguaje máquina. Por ejemplo, durante el procesamiento repetitivo de los pasos de un ciclo o bucle, cada instrucción del bucle tendrá que volver a ser interpretada en cada ejecución repetida del 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 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 ejecución del código.


==Véase también==
==Véase también==
*[[Computadora]]
*[[Programación]]
*[[Programación]]
*[[Lenguajes de programación]]
*[[Lenguaje de alto nivel]]
*[[Lenguaje interpretado]]
*[[Paradigma de programación]]
*[[Lenguaje de programación esotérico|Lenguajes esotéricos]]
*[[Programación funcional]]

*[[Programación declarativa]]
== Enlaces externos ==
{{wikiversidad|Lenguajes de Programación}}
*[http://www.levenez.com/lang/history.html Árbol genealógico de los lenguajes de programación]
*[http://www.levenez.com/lang/ Árbol cronológico de los lenguajes de programación] (en inglés)
*[http://people.ku.edu/~nkinners/LangList/Extras/langlist.htm Lista de lenguajes de programación] (en inglés)
*[http://www.alegsaonline.com/art/13.php Paradigmas de los lenguajes de programación] (clasificación)

{{destacado|he}}
{{destacado|it}}
{{destacado|vi}}


[[Categoría:Paradigmas de programación]]
[[Categoría:Lenguajes de programación]]
[[Categoría:Programación Imperativa]]


[[af:Programmeertaal]]
[[ast:Llinguaxe de programación imperativu]]
[[als:Programmiersprache]]
[[be-x-old:Імпэратыўнае праграмаваньне]]
[[am:የፕሮግራም ቋንቋ]]
[[bs:Imperativno programiranje]]
[[an:Luengache de programazión]]
[[cs:Imperativní programování]]
[[ar:لغة برمجة]]
[[de:Imperative Programmierung]]
[[ast:Llinguaxe de programación]]
[[el:Προστακτικός προγραμματισμός]]
[[be:Мова праграмавання]]
[[en:Imperative programming]]
[[bg:Език за програмиране]]
[[fa:زبان‌های دستوری]]
[[bn:প্রোগ্রামিং ভাষা]]
[[fi:Imperatiivinen ohjelmointi]]
[[br:Areg]]
[[fr:Programmation impérative]]
[[bs:Programski jezik]]
[[gl:Programación imperativa]]
[[bug:ᨅᨔ ᨀᨚᨇᨘᨈᨛᨑᨛ]]
[[ja:命令型プログラミング]]
[[ca:Llenguatge de programació]]
[[ko:명령형 프로그래밍]]
[[cs:Programovací jazyk]]
[[nl:Imperatief programmeren]]
[[da:Programmeringssprog]]
[[pl:Programowanie imperatywne]]
[[de:Programmiersprache]]
[[pt:Programação imperativa]]
[[el:Γλώσσα προγραμματισμού]]
[[ro:Programare imperativă]]
[[en:Programming language]]
[[ru:Императивное программирование]]
[[eo:Programlingvo]]
[[sh:Imperativno programiranje]]
[[et:Programmeerimiskeel]]
[[sr:Императивно програмирање]]
[[eu:Programazio-lengoaia]]
[[sv:Imperativ programmering]]
[[fa:زبان‌های برنامه‌نویسی]]
[[uk:Імперативне програмування]]
[[zh:指令式編程]]
[[fi:Ohjelmointikieli]]
[[fr:Langage de programmation]]
[[gl:Linguaxe de programación]]
[[he:שפת תכנות]]
[[hi:प्रोग्रामिंग भाषा]]
[[hr:Programski jezik]]
[[hsb:Programěrowanske rěče]]
[[hu:Programozási nyelv]]
[[ia:Linguage de programmation]]
[[id:Bahasa pemrograman]]
[[ilo:Lengguahe ti panangprograma]]
[[is:Forritunarmál]]
[[it:Linguaggio di programmazione]]
[[ja:プログラミング言語]]
[[ka:პროგრამირების ენა]]
[[ko:프로그래밍 언어]]
[[la:Lingua programmandi]]
[[lb:Programméiersprooch]]
[[lt:Programavimo kalba]]
[[lv:Programmēšanas valoda]]
[[mk:Програмски јазик]]
[[ml:പ്രോഗ്രാമിംഗ് ഭാഷ]]
[[mn:Программчлалын хэл]]
[[mr:प्रोग्रॅमिंग लँग्वेज]]
[[ms:Bahasa pengaturcaraan]]
[[nl:Programmeertaal]]
[[nn:Programmeringsspråk]]
[[no:Programmeringsspråk]]
[[pl:Język programowania]]
[[pt:Linguagem de programação]]
[[ro:Limbaj de programare]]
[[ru:Язык программирования]]
[[simple:Programming language]]
[[sk:Programovací jazyk]]
[[sl:Programski jezik]]
[[sq:Gjuhë programimi]]
[[sr:Програмски језик]]
[[su:Basa program]]
[[sv:Programspråk]]
[[ta:நிரல் மொழி]]
[[te:ప్రోగ్రామింగు భాష]]
[[tg:Забони барномасозӣ]]
[[th:ภาษาโปรแกรม]]
[[tl:Wikang pamprograma]]
[[tr:Programlama dili]]
[[uk:Мова програмування]]
[[ur:برمجہ زبان]]
[[vi:Ngôn ngữ lập trình]]
[[zh:编程语言]]
[[zh-min-nan:Thêng-sek gí-giân]]
[[zh-yue:程式語言]]

Revisión del 01:59 25 abr 2009

Con la aparición de las computadoras desaparecen las secuencias de posiciones de llaves mecánicas que debían desconectarse para obtener una acción determinada, una llave conectada era un 1 y una llave desconectada era un 0. Una sucesión de llaves en cualquiera de sus dos posiciones definía una secuencia de ceros y unos (por ejemplo: 0100011010011101...) que venía a representar una instrucción o un conjunto de instrucciones (programa) para el ordenador (o computador) en el que se estaba trabajando. A esta primera forma de especificar programas para una computadora se la denomina lenguaje máquina o código máquina.

La necesidad de recordar secuencias de programación para las acciones usuales llevó a denominarlas con nombres fáciles de memorizar y asociar: ADD (sumar), SUB (restar), MUL (multiplicar), CALL (ejecutar subrutina), etc. A esta secuencia de posiciones se le denominó "instrucciones", y a este conjunto de instrucciones se le llamó lenguaje ensamblador.

Posteriormente aparecieron diferentes lenguajes de programación, los cuales reciben su denominación porque tienen una estructura sintáctica similar a los lenguajes escritos por los humanos.

Concepto

Varios libros sobre diversos lenguajes de programación.

Un lenguaje de programación es un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones. Es utilizado para controlar el comportamiento físico y lógico de una máquina.

Aunque muchas veces se usan los términos 'lenguaje de programación' y 'lenguaje informático' como si fuesen sinónimos, no tiene por qué ser así, ya que los lenguajes informáticos engloban a los lenguajes de programación y a otros más, como, por ejemplo, el HTML (lenguaje para el marcado de páginas web que no es propiamente un lenguaje de programación).

Un lenguaje de programación permite a uno o más programadores especificar de manera precisa sobre qué datos debe operar una computadora, cómo estos datos deben ser almacenados o transmitidos y qué acciones debe tomar bajo una variada gama de circunstancias. Todo esto, a través de un lenguaje que intenta estar relativamente próximo al lenguaje humano o natural, tal como sucede con el lenguaje Léxico. Una característica relevante de los lenguajes de programación es precisamente que más de un programador puedan tener un conjunto común de instrucciones que puedan ser comprendidas entre ellos para realizar la construcción del programa de forma colaborativa.

Los procesadores usados en las computadoras son capaces de entender y actuar según lo indican programas escritos en un lenguaje fijo llamado lenguaje de máquina. Todo programa escrito en otro lenguaje puede ser ejecutado de dos maneras:

  • Mediante un programa que va adaptando las instrucciones conforme son encontradas. A este proceso se lo llama interpretar y a los programas que lo hacen se los conoce como intérpretes.
  • Traduciendo este programa al programa equivalente escrito en lenguaje de máquina. A ese proceso se lo llama compilar y al programa traductor se le denomina compilador.

Clasificación de los lenguajes de programación

Los lenguajes de programación se pueden clasificar atendiendo a varios criterios:

  • Según el nivel de abstracción
  • Según el paradigma de programación que poseen cada uno de ellos
  • lenguaje de ensamblador

Según su nivel de abstracción

Lenguajes de Máquina

Están escritos en lenguajes directamente legibles por la máquina (computadora), ya que sus instrucciones son cadenas binarias (0 y 1). Da la posibilidad de cargar (transferir un programa a la memoria) sin necesidad de traducción posterior lo que supone una velocidad de ejecución superior, solo que con poca fiabilidad y dificultad de verificar y poner a punto los programas.

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 por excelencia es 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. Ejemplo:

;Lenguaje ensamblador, sintaxis Intel para procesadores x86
mov eax,1 ;mueve a al registro eax el valor 1
xor ebx, ebx ;pone en 0 el registro ebx
int 80h ;llama a la interrupción 80h (80h = 128 sistema decimal)

Ejecutar ese código en sistemas UNIX o basados en él equivale a una funcion exit(0) (terminar el programa retornando el valor 0)

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. Ejemplo:

/*Lenguaje C*/

/*declaración de las funciones estandars de entrada y salida*/
#include <stdio.h> 

int main(int argc, char **argv)
{
    char *p; /*creamos un puntero a un byte*/
    if(argc == 1){
      printf("\nIngrese un argumento al programa\n");/*imprimimos el texto*/
      return 1;
    }
    p = 0x30000 /*el puntero apunta a 0x30000 */
    *p = argv[1][0] /*el primer caracter del primer argumento lo copiamos a la posición 0x30000 */
    return 0;
}

El ejemplo es muy simple y muestra a los punteros de C, éstos no son muy utilizados en lenguajes de alto nivel, pero en C sí.

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, uno de los lenguajes de alto nivel más conocidos, los comandos como "IF CONTADOR = 10 THEN STOP" pueden utilizarse para pedir a la computadora que pare si el CONTADOR es igual a 10. Esta forma de trabajar puede dar la sensación de que las computadoras parecen comprender un lenguaje natural; en realidad lo hacen de una forma rígida y sistemática, sin que haya cabida, por ejemplo, para ambigüedades o dobles sentidos. Ejemplo:

 {Lenguaje Pascal}
 program suma; 
                                                     
 var x,s,r:integer; {declaración de las variables}                                                             
 begin {comienzo del programa principal}                                                                  
     writeln('Ingrese 2 números enteros');{imprime el texto}
     readln(x,s);  {lee 2 números y los coloca en las variables x y s}
     r:= x + s; {suma los 2 números y coloca el resultado en r}
     writeln('La suma es  ',r);  {imrpime el resultado}                                             
     readln;
 end.{termina el programa principal}

Ese es el lenguaje Pascal, muy utilizado por principiantes al aprender a programar.

Según el paradigma de programación

Un paradigma de programación representa un enfoque particular o filosofía para la construcción del software. No es mejor uno que otro, sino que cada uno tiene ventajas y desventajas. Dependiendo de la situación un paradigma resulta más apropiado que otro.

Atendiendo al paradigma de programación, se pueden clasificar los lenguajes en :

Nota: La representación orientada a objetos mejora la estructura de los datos y por lo tanto se ha aplicado a diferentes paradigmas como Redes de Petri, Imperativo Secuencial, Lógica de Predicados, Funcional, etc. No obstante, la manipulación no queda fundamentalmente afectada y por lo tanto el paradigma inicial tampoco a pesar de ser re-orientado a objetos.

Si bien puede seleccionarse la forma pura de estos paradigmas a la hora de programar, en la práctica es habitual que se mezclen, dando lugar a la programación multiparadigma.

Actualmente el paradigma de programación más usado debido a múltiples ventajas respecto a sus anteriores, es la programación orientada a objetos.

Lenguajes imperativos

Son los lenguajes que dan instrucciones a la computadora, es decir, órdenes.

Lenguajes Funcionales

Paradigma Funcional: este paradigma concibe a la computación como la evaluación de funciones matemáticas y evita declarar y cambiar datos. En otras palabras, hace hincapié en la aplicación de las funciones y composición entre ellas, más que en los cambios de estados y la ejecución secuencial de comandos (como lo hace el paradigma procedimental). Permite resolver ciertos problemas de forma elegante y los lenguajes puramente funcionales evitan los efectos secundarios comunes en otro tipo de programaciones.

Lenguajes Lógicos

La computación lógica direcciona métodos de procesamiento basados en el razonamiento formal. Los objetos de tales razonamientos son "hechos" o reglas "if then". Para computar lógicamente se utiliza un conjunto de tales estamentos para calcular la verdad o falsedad de ese conjunto de estamentos. Un estamento es un hecho si sus tuplas verifican una serie de operaciones.

Un hecho es una expresión en la que algún objeto o conjunto de objetos satisface una relación específica. Una tupla es una lista inmutable. Una tupla no puede modificarse de ningún modo después de su creación.[1]

Un regla if then es un estamento que informa acerca de conjuntos de tuplas o estamentos relacionados que pueden predecir si otras tuplas satisfacerán otras relaciones.

Un estamento que es probado verdadero como resultado de un proceso se dice que es una inferencia del conjunto original. Se trata por tanto de una descripción de cómo obtener la veracidad de un estamento dado que unas reglas son verdaderas.

La computación lógica está por tanto relacionada con la automatización de algún conjunto de métodos de inferencia.

Lenguajes orientados a objetos

La Programación Orientada a Objetos (POO u OOP según sus siglas en inglés) es un paradigma de programación que usa objetos y sus interacciones para diseñar aplicaciones y programas de computadora. Está basado en varias técnicas, incluyendo herencia, modularidad, polimorfismo y encapsulamiento. Su uso se popularizó a principios de la década de 1990. Actualmente son muchos los lenguajes de programación que soportan la orientación a objetos.

Implementación

La implementación de un lenguaje es la que provee una manera de que se ejecute un programa para una determinada combinación de software y hardware. Existen básicamente dos maneras de implementar un lenguaje: Compilación e interpretación. Compilación es la traducción 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 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 compilación para utilizarlo en una ejecució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 procesamiento de los datos. El código objeto no se graba para utilizarlo posteriormente.

La siguiente vez que se utilice una instrucción, se la deberá interpretar otra vez y traducir a lenguaje máquina. Por ejemplo, durante el procesamiento repetitivo de los pasos de un ciclo o bucle, cada instrucción del bucle tendrá que volver a ser interpretada en cada ejecución repetida del 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 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 ejecución del código.

Véase también

Enlaces externos