Un lenguaje de programación de computadoras, es un conjunto de instrucciones detalladas para una computadora digital que en su conjunto forman uno de los cualquier lenguajes de programación existentes.
Aunque existen muchos lenguajes informáticos, relativamente pocos son de uso general. Los lenguajes de máquina y ensamblador son de “bajo nivel” y requieren que un programador administre explícitamente todas las características idiosincrásicas de almacenamiento y operación de datos de la computadora.
Por el contrario, los lenguajes de alto nivel protegen a un programador de preocuparse por tales consideraciones y proporcionan una notación que los programadores escriben y leen con mayor facilidad.
El conjunto de instrucciones se puede ejecutar directamente cuando están en la forma numérica específica del fabricante de la computadora, siento esto conocido como lenguaje máquina.
El lenguaje ensamblador a menudo abreviado por ASM, es cualquier lenguaje de programación de bajo nivel en el que existe una correspondencia muy fuerte entre las instrucciones del lenguaje y las instrucciones del código máquina en su arquitectura.
Debido a que el ensamblaje depende de las instrucciones del código de máquina, cada lenguaje ensamblador está diseñado para exactamente una arquitectura de computadora específica; el lenguaje ensamblador también es denominado código máquina simbólico.
El lenguaje de programación de alto nivel es un lenguaje de programación con una fuerte abstracción de los detalles de la computadora.
A diferencia de los lenguajes de programación de bajo nivel, puede utilizar elementos del lenguaje natural, ser más fácil de usar o puede automatizar (o incluso ocultar por completo) áreas importantes de los sistemas informáticos (por ejemplo, la gestión de la memoria) lo que hace que el proceso de desarrollo de un programa sea más simple y sencillo.
La cantidad de abstracción proporcionada define qué tan “alto nivel” es un lenguaje de programación.
Los Diferentes Tipos de Lenguajes de Programación
Lenguajes de máquina y ensamblaje
Un lenguaje de máquina consta de códigos numéricos para las operaciones que una computadora en particular puede ejecutar directamente. Los códigos son cadenas de 0 y 1, o dígitos binarios (“bits”), que con frecuencia se convierten tanto de hexadecimal como a hexadecimal (base 16) para la visualización y modificación humana. Las instrucciones en lenguaje máquina suelen utilizar algunos bits para representar operaciones, como la suma, y algunos para representar operandos, o quizás la ubicación de la siguiente instrucción. El lenguaje de máquina es difícil de leer y escribir, ya que no se parece a la notación matemática convencional ni al lenguaje humano, y sus códigos varían de una computadora a otra.
El lenguaje ensamblador está un nivel por encima del lenguaje de máquina. Utiliza códigos mnemónicos cortos para las instrucciones y permite al programador introducir nombres para bloques de memoria que contienen datos. Por lo tanto, se podría escribir “agregar pago, total” en lugar de “0110101100101000” para una instrucción que suma dos números.
El lenguaje ensamblador está diseñado para traducirse fácilmente al lenguaje de máquina. Aunque se puede hacer referencia a los bloques de datos por su nombre en lugar de por sus direcciones de máquina, el lenguaje ensamblador no proporciona medios más sofisticados para organizar información compleja.
Al igual que el lenguaje de máquina, el lenguaje ensamblador requiere un conocimiento detallado de la arquitectura interna de la computadora. Es útil cuando tales detalles son importantes, como al programar una computadora para interactuar con dispositivos periféricos (impresoras, escáneres, dispositivos de almacenamiento, etc.).
Lenguajes algorítmicos
Los lenguajes algorítmicos están diseñados para expresar cálculos matemáticos o simbólicos. Pueden expresar operaciones algebraicas en notación similar a las matemáticas y permiten el uso de subprogramas que empaquetan operaciones de uso común para su reutilización. Fueron los primeros idiomas de alto nivel.
FORTRAN
El primer lenguaje algorítmico importante fue FORTRAN ( de Mula tran slation), diseñado en 1957 por un IBM equipo dirigido por John Backus . Estaba destinado a cálculos científicos con números reales y colecciones de ellos organizados como matrices unidimensionales o multidimensionales. Sus estructuras de control incluían declaraciones IF condicionales, bucles repetitivos (los denominados bucles DO) y una instrucción GOTO que permitía la ejecución no secuencial del código del programa. FORTRAN hizo que fuera conveniente tener subprogramas para operaciones matemáticas comunes y construyó bibliotecas de ellos.
FORTRAN también fue diseñado para traducir a un lenguaje de máquina eficiente. Inmediatamente tuvo éxito y continúa evolucionando.
ALGOL
ALGOL (ALGO, de algorítmico y L, de lenguaje) fue diseñado por un comité de científicos de la computación estadounidense y europeos durante 1958-1960 para la publicación de algoritmos , así como para hacer cálculos. Al igual que LISP (que se describe en la siguiente sección), ALGOL tenía subprogramas recursivos, procedimientos que podían invocarse para resolver un problema reduciéndolo a un problema más pequeño del mismo tipo.
ALGOL introdujo la estructura de bloques, en la que un programa se compone de bloques que pueden contener tanto datos como instrucciones y tener la misma estructura que un programa completo. La estructura de bloques se convirtió en una poderosa herramienta para construir grandes programas a partir de pequeños componentes.
ALGOL contribuyó con una notación para describir la estructura de un lenguaje de programación, Backus-Naur Form, que en alguna variación se convirtió en la herramienta estándar para establecer la sintaxis (gramática) de los lenguajes de programación. ALGOL fue ampliamente utilizado en Europa y durante muchos años siguió siendo el idioma en el que se publicaban los algoritmos informáticos. Muchos idiomas importantes, como Pascal y Ada (ambos descritos más adelante), son sus descendientes.
LISP
LISP ( lis t p rocessing) fue desarrollado alrededor de 1960 por John McCarthy en el Instituto de Tecnología de Massachusetts (MIT) y se basa en la teoría matemática de la recursivo función s (en el que una función aparece en su propia definición). Un programa LISP es una función aplicada a datos, en lugar de ser una secuencia de pasos de procedimiento como en FORTRAN y ALGOL. LISP usa una notación muy simple en la que las operaciones y sus operandos se dan en una lista entre paréntesis. Por ejemplo, (+ un (* b c )) representa un + b * c. Aunque esto parece incómodo, la notación funciona bien para las computadoras. LISP también usa la estructura de lista para representar datos y, debido a que los programas y los datos usan la misma estructura, es fácil que un programa LISP opere en otros programas como datos.
LISP se convirtió en un lenguaje común para la programación de inteligencia artificial (IA), en parte debido a la confluencia del trabajo de LISP y IA en el MIT y en parte porque los programas de IA capaces de “aprender” podrían escribirse en LISP como programas auto-modificables. LISP ha evolucionado a través de numerosos dialectos , como Scheme y Common LISP.
C
El lenguaje de programación C fue desarrollado en 1972 por Dennis Ritchie y Brian Kernighan en AT&T Corporation para programar sistemas operativos de computadoras . Su capacidad para estructurar datos y programas mediante la composición de unidades más pequeñas es comparable a la de ALGOL. Utiliza una notación compacta y proporciona al programador la capacidad de operar con las direcciones de datos así como con sus valores. Esta capacidad es importante en la programación de sistemas , y C comparte con el lenguaje ensamblador el poder de explotar todas las características de la arquitectura interna de una computadora. C, junto con su descendiente C ++ , sigue siendo uno de los lenguajes más comunes.
Idiomas orientados a los negocios
COBOL
COBOL ( co mmon b usiness o riented l anguage) ha sido muy utilizado por las empresas desde su creación en 1959. Un comité de fabricantes y usuarios de ordenadores y organizaciones gubernamentales de Estados Unidos estableció CODASYL ( Co mmittee sobre Da ta Sy tallos y L os idiomas) para desarrollar y supervisar el estándar de lenguaje para asegurar su portabilidad en diversos sistemas.
COBOL utiliza una notación similar a la inglesa: novedosa cuando se presenta. Los cálculos comerciales organizan y manipulan grandes cantidades de datos, y COBOL introdujo elregistrar la estructura de datos para tales tareas. Un registro agrupa datos heterogéneos , como un nombre, un número de identificación, una edad y una dirección, en una sola unidad. Esto contrasta con los lenguajes científicos, en los que son comunes las matrices homogéneas de números. Los registros son un ejemplo importante de “fragmentación” de datos en un solo objeto y aparecen en casi todos los lenguajes modernos.
SQL
SQL (lenguaje de consulta estructurado) es un lenguaje para especificar la organización de bases de datos (colecciones de registros). Las bases de datos organizadas con SQL se denominan relacionales, porque SQL proporciona la capacidad de consultar una base de datos en busca de información que se encuentre en una relación determinada. Por ejemplo, una consulta podría ser “buscar todos los registros con el apellido Smith y la ciudad Nueva York “. Los programas de bases de datos comerciales suelen utilizar un lenguaje similar a SQL para sus consultas.
Idiomas orientados a la educación
BASIC
BASIC (código de instrucción simbólico de uso múltiple para principiantes) fue diseñado en Dartmouth College a mediados de la década de 1960 por John Kemeny y Thomas Kurtz. Se pretendía que fuera fácil de aprender para los principiantes, en particular para los que no se especializan en ciencias de la computación, y para que funcione bien en una computadora de tiempo compartido con muchos usuarios. Tenía estructuras de datos y notación simples y se interpretaba: un programa BASIC se traducía línea por línea y se ejecutaba a medida que se traducía, lo que facilitaba la localización de errores de programación.
Su pequeño tamaño y simplicidad también hicieron de BASIC un lenguaje popular para las primeras computadoras personales. Sus formas recientes han adoptado muchas de las estructuras de control y datos de otros lenguajes contemporáneos, lo que lo hace más poderoso pero menos conveniente para los principiantes.
PASCAL
Alrededor de 1970, Niklaus Wirth de Suiza diseñó Pascal para enseñar programación estructurada, que enfatizaba el uso ordenado de estructuras de control condicional y de bucle sin declaraciones GOTO. Aunque Pascal se parecía a ALGOL en notación, proporcionaba la capacidad de definir tipos de datos con los que organizar información compleja, una característica más allá de las capacidades de ALGOL, así como de FORTRAN y COBOL . Los tipos de datos definidos por el usuario permitían al programador introducir nombres para datos complejos, que el traductor de idiomas podía verificar para su uso correcto antes de ejecutar un programa.
A finales de los 70 y 80, Pascal fue uno de los lenguajes más utilizados para la instrucción de programación. Estaba disponible en casi todas las computadoras y, debido a su familiaridad, claridad y seguridad, se usaba tanto para software de producción como para educación.
Logo
Logo se originó a finales de la década de 1960 como un dialecto LISP simplificado para la educación ; Seymour Papert y otros lo usaron en el MIT para enseñar el pensamiento matemático a los escolares. Tenía una sintaxis más convencional que LISP y presentaba “gráficos de tortuga”, un método simple para generar gráficos por computadora.. (El nombre proviene de un proyecto anterior para programar un robot con forma de tortuga). Los gráficos de tortuga usaban instrucciones centradas en el cuerpo, en las que un objeto se movía alrededor de una pantalla mediante comandos, como “izquierda 90” y “adelante”, que especificaban acciones relativas a la posición actual y orientación del objeto en lugar de en términos de un marco fijo. Junto con las rutinas recursivas, esta técnica facilitó la programación de patrones intrincados y atractivos.
Hypertalk
Hypertalk fue diseñado como “programación para el resto de nosotros” por Bill Atkinson para Macintosh de Apple . Usando una sintaxis simple similar a la del inglés, Hypertalk permitía a cualquiera combinar texto, gráficos y audio rápidamente en “pilas vinculadas” que se podían navegar haciendo clic con el mouse en los botones estándar proporcionados por el programa. Hypertalk fue particularmente popular entre los educadores en la década de 1980 y principios de la de 1990 para presentaciones multimedia en el aula. Aunque Hypertalk tenía muchas características de lenguajes orientados a objetos (que se describen en la siguiente sección), Apple no lo desarrolló para otras plataformas informáticas y lo dejó languidecer; A medida que la participación de mercado de Apple disminuyó en la década de 1990, una nueva forma multiplataforma de mostrar multimedia dejó a Hypertalk casi obsoleto ( verla sección Idiomas de visualización de la World Wide Web ).
Lenguajes Orientados a Objetos
Los lenguajes orientados a objetos ayudan a gestionar la complejidad en programas grandes. Los objetos empaquetan los datos y las operaciones sobre ellos de modo que solo las operaciones sean de acceso público y los detalles internos de las estructuras de datos estén ocultos. Esta ocultación de información facilitó la programación a gran escala al permitir que un programador pensara en cada parte del programa de forma aislada. Además, los objetos pueden derivarse de otros más generales, “heredando” sus capacidades. Tal jerarquía de objetos hizo posible definir objetos especializados sin repetir todo lo que está en los más generales.
La programación orientada a objetos comenzó con el lenguaje Simula (1967), que agregó información oculta a ALGOL. Otro lenguaje influyente orientado a objetos fue Smalltalk (1980), en el que un programa era un conjunto de objetos que interactuaban enviándose mensajes entre sí.
C++
El lenguaje C ++ , desarrollado por Bjarne Stroustrup en AT&T a mediados de la década de 1980, extendió C al agregarle objetos mientras preservaba la eficiencia de los programas C. Ha sido uno de los lenguajes más importantes tanto para la educación como para la programación industrial. Gran parte de muchos sistemas operativos se escribieron en C ++. C ++, junto con Java, se ha vuelto popular para desarrollar paquetes de software comerciales que incorporan múltiples aplicaciones interrelacionadas. C ++ se considera uno de los lenguajes más rápidos y está muy cerca de los lenguajes de bajo nivel, lo que permite un control total sobre la asignación y administración de memoria. Esta misma característica y sus muchas otras capacidades también lo convierten en uno de los idiomas más difíciles de aprender y manejar a gran escala.
C#
C# (pronunciado C agudo como la nota musical) fue desarrollado por Anders Hejlsberg en Microsoft en 2000. C # tiene una sintaxis similar a la de C y C ++ y se usa a menudo para desarrollar juegos y aplicaciones para el sistema operativo Microsoft Windows.
ADA
Ada recibió su nombre de Augusta Ada King, condesa de Lovelace , quien fue asistente del inventor inglés del siglo XIX Charles Babbage , y a veces se la llama la primera programadora de computadoras. Ada, el lenguaje, fue desarrollado a principios de la década de 1980 para el Departamento de Defensa de EE. UU . Para programación a gran escala. Combinó la notación similar a Pascal con la capacidad de empaquetar operaciones y datos en módulos independientes. Su primera forma, Ada 83, no estaba totalmente orientada a objetos, pero la posterior Ada 95 proporcionó objetos y la capacidad de construir jerarquías de ellos. Aunque ya no es obligatorio para su uso en el trabajo del Departamento de Defensa, Ada sigue siendo un lenguaje eficaz para diseñar grandes programas
Java
A principios de la década de 1990, Sun Microsystems, Inc. diseñó Java como lenguaje de programación para la World Wide Web (WWW). Aunque se parecía a C ++ en apariencia, estaba totalmente orientado a objetos. En particular, Java prescindió de características de nivel inferior, incluida la capacidad de manipular direcciones de datos, una capacidad que no es deseable ni útil en programas para sistemas distribuidos. Para que sean portátiles, los programas Java son traducidos por una máquina virtual Java específica para cada plataforma informática, que luego ejecuta el programa Java. Además de agregar capacidades interactivas a Internet a través de “applets” de la Web, Java se ha utilizado ampliamente para programar dispositivos pequeños y portátiles, como teléfonos móviles.
Visual Basic
Visual Basic fue desarrollado por Microsoft para ampliar las capacidades de BASIC agregando objetos y programación “dirigida por eventos”: botones, menús y otros elementos de las interfaces gráficas de usuario (GUI). Visual Basic también se puede utilizar dentro de otro software de Microsoft para programar pequeñas rutinas. Visual Basic fue reemplazado en 2002 por Visual Basic .NET, un lenguaje muy diferente basado en C #, un lenguaje con similitudes con C ++ .
Python
El lenguaje de código abierto Python fue desarrollado por el programador holandés Guido van Rossum en 1991. Fue diseñado como un lenguaje fácil de usar, con características como el uso de sangrías en lugar de corchetes para agrupar declaraciones. Python también es un lenguaje muy compacto, diseñado para que los trabajos complejos se puedan ejecutar con solo unas pocas declaraciones. En la década de 2010, Python se convirtió en uno de los lenguajes de programación más populares, junto con Java y JavaScript.
Lenguajes declarativos
Los lenguajes declarativos, también denominados no procedimentales o de muy alto nivel, son lenguajes de programación en los que (idealmente) un programa especifica qué se debe hacer en lugar de cómo hacerlo. En tales lenguajes hay menos diferencia entre la especificación de un programa y su implementación que en los lenguajes de procedimiento descritos hasta ahora. Los dos tipos comunes de lenguajes declarativos son los lenguajes lógicos y funcionales.
Lenguajes de programación lógica, de los cuales PROLOG ( pro gramación en el registro IC) es el más conocido, el estado de un programa como un conjunto de relaciones lógicas (por ejemplo, un abuelo es el padre de uno de los padres de alguien). Estos lenguajes son similares al lenguaje de la base de datos SQL . Un programa es ejecutado por un “motor de inferencia” que responde a una consulta buscando estas relaciones sistemáticamente para hacer inferencias que responderán a una consulta. PROLOG se ha utilizado ampliamente en el procesamiento del lenguaje natural y otros programas de inteligencia artificial.
Los lenguajes funcionales tienen un estilo matemático. Un programa funcional se construye aplicando funciones a argumentos. Los lenguajes funcionales, como LISP , ML y Haskell, se utilizan como herramientas de investigación en el desarrollo del lenguaje, en probadores automatizados de teoremas matemáticos y en algunos proyectos comerciales.
Lenguajes de secuencias de comandos
Los lenguajes de secuencias de comandos a veces se denominan pequeños lenguajes. Están destinados a resolver problemas de programación relativamente pequeños que no requieren la sobrecarga de declaraciones de datos y otras características necesarias para hacer que los programas grandes sean manejables. Los lenguajes de secuencias de comandos se utilizan para escribir utilidades del sistema operativo , para programas de manipulación de archivos con fines especiales y, debido a que son fáciles de aprender, a veces para programas considerablemente más grandes.
Perl fue desarrollado a finales de la década de 1980, originalmente para su uso con el sistema operativo UNIX . Se pretendía que tuviera todas las capacidades de los lenguajes de script anteriores. Perl proporcionó muchas formas de establecer operaciones comunes y, por lo tanto, permitió que un programador adoptara cualquier estilo conveniente. En la década de 1990 se hizo popular como herramienta de programación de sistemas, tanto para pequeños programas de utilidad como para prototipos de programas más grandes. Junto con otros lenguajes que se describen a continuación, también se hizo popular para programar “servidores” web de computadoras.
Lenguajes de formato de documentos
Los lenguajes de formato de documentos especifican la organización del texto y los gráficos impresos. Se dividen en varias clases: notación de formato de texto que puede cumplir las mismas funciones que un programa de procesamiento de texto , lenguajes de descripción de página que son interpretados por un dispositivo de impresión y, en general, lenguajes de marcado que describen la función prevista de partes de un documento.
TeX
TeX fue desarrollado durante 1977–86 como un lenguaje de formato de texto por Donald Knuth, un profesor de la Universidad de Stanford, para mejorar la calidad de la notación matemática en sus libros. Los sistemas de formato de texto, a diferencia de los procesadores de texto WYSIWYG (“Lo que ves es lo que obtienes”), incorporan comandos de formato de texto sin formato en un documento, que luego son interpretados por el procesador de idiomas para producir un documento formateado para su visualización o impresión. TeX marca el texto en cursiva, por ejemplo, como {\ si está en cursiva}, que luego se muestra como en cursiva.
TeX reemplazó en gran medida a los lenguajes de formato de texto anteriores. Sus capacidades poderosas y flexibles le dieron a un experto un control preciso sobre cosas como la elección de fuentes, el diseño de tablas, la notación matemática y la inclusión de gráficos en un documento.
Generalmente se usa con la ayuda de paquetes “macro” que definen comandos simples para operaciones comunes, como comenzar un nuevo párrafo; LaTeX es un paquete ampliamente utilizado. TeX contiene numerosas “hojas de estilo” estándar para diferentes tipos de documentos, y cada usuario puede adaptarlas. También existen programas relacionados como BibTeX, que administra bibliografías y tiene hojas de estilo para todos los estilos de bibliografía comunes, y versiones de TeX para idiomas con varios alfabetos.
PostScript
PostScript es un lenguaje de descripción de páginas desarrollado a principios de la década de 1980 por Adobe Systems Incorporated sobre la base del trabajo en Xerox PARC (Palo Alto Research Center). Dichos lenguajes describen documentos en términos que pueden ser interpretados por una computadora personal para mostrar el documento en su pantalla o por un microprocesador en una impresora o un dispositivo de composición tipográfica .
Los comandos PostScript pueden, por ejemplo, colocar texto con precisión, en varias fuentes y tamaños, dibujar imágenes que se describen matemáticamente y especificar el color o el sombreado. PostScript usa sufijo, también llamado notación polaca inversa, en el que el nombre de una operación sigue a sus argumentos. Por lo tanto, “300 600 20 270 carrera de arco” significa: dibujar (“carrera”) un arco de 270 grados con radio 20 en la ubicación (300, 600). Aunque un programador puede leer y escribir PostScript, normalmente lo producen programas de formato de texto, procesadores de texto o herramientas de visualización de gráficos.
El éxito de PostScript se debe a que su especificación es de dominio público y a que se adapta bien a las impresoras láser de alta resolución. Ha influido en el desarrollo de las fuentes de impresión y los fabricantes producen una gran variedad de fuentes PostScript.
SGML
SGML (lenguaje de marcado generalizado estándar) es un estándar internacional para la definición de lenguajes de marcado; es decir, es un metalenguaje . El marcado consta de notaciones llamadas etiquetas que especifican la función de un fragmento de texto o cómo se mostrará. SGML enfatiza el marcado descriptivo, en el que una etiqueta podría ser “<énfasis>”. Dicho marcado denota la función del documento y podría interpretarse como vídeo inverso en la pantalla de una computadora, subrayado con una máquina de escribir, o cursiva en texto tipográfico.
SGML se utiliza para especificar DTD (definiciones de tipo de documento). Una DTD define un tipo de documento, como un informe, especificando qué elementos deben aparecer en el documento (por ejemplo,
Lenguajes de visualización de la World Wide Web
HTML
La World Wide Web es un sistema para mostrar texto, gráficos y audio recuperados a través de Internet en un monitor de computadora. Cada unidad de recuperación se conoce como página web, y dichas páginas contienen frecuentemente “enlaces” que permiten recuperar páginas relacionadas. HTML ( h yper t ext m arkup l anguage) es el lenguaje de marcado para codificar páginas web. Fue diseñado por Tim Berners-Lee en el laboratorio del CERN de física nuclear en Suiza durante la década de 1980 y está definido por un SGML DTD. Las etiquetas de marcado HTML especifican elementos del documento, como encabezados, párrafos y tablas. Marcan un documento para que lo muestre un programa informático conocido como navegador web. El navegador interpreta las etiquetas, mostrando los encabezados, párrafos y tablas en un diseño que se adapta al tamaño de la pantalla y las fuentes disponibles.
Los documentos HTML también contienen anclas , que son etiquetas que especifican enlaces a otras páginas web. Un ancla tiene la forma <A HREF= “http://www.britannica.com”> Encyclopædia Britannica , donde la cadena entre comillas es la URL (localizador universal de recursos) a la que apunta el enlace (la dirección Web ” ”) Y el texto que lo sigue es lo que aparece en un navegador web, subrayado para mostrar que es un enlace a otra página. Lo que se muestra como una sola página también puede estar formado por varias URL, algunas con texto y otras con gráficos.
XML
HTML no permite definir nuevos elementos de texto; es decir, no es extensible. XML (lenguaje de marcado extensible) es una forma simplificada de SGML destinada a documentos que se publican en la Web. Como SGML, XML usa DTD para definir tipos de documentos y el significado de las etiquetas que se usan en ellos. XML adopta convenciones que facilitan el análisis, como que las entidades del documento están marcadas tanto por una etiqueta de inicio como por una de finalización, como … . XML proporciona más tipos de enlaces de hipertexto que HTML, como enlaces bidireccionales y enlaces relacionados con una subsección de documento.
Debido a que un autor puede definir nuevas etiquetas, una DTD XML también debe contener reglas que indiquen a un navegador web cómo interpretarlas: cómo se mostrará una entidad o cómo generará una acción como preparar un mensaje de correo electrónico.
Secuencias de comandos web
Las páginas web marcadas con HTML o XML son en gran parte documentos estáticos. Las secuencias de comandos web pueden agregar información a una página a medida que un lector la usa o permitir que el lector ingrese información que, por ejemplo, puede transmitirse al departamento de pedidos de una empresa en línea.CGI (interfaz de puerta de enlace común) proporciona un mecanismo; transmite solicitudes y respuestas entre el navegador web del lector y el servidor web que proporciona la página. El componente CGI en el servidor contiene pequeños programas llamadosscripts que toman información del sistema del navegador o la proporcionan para su visualización. Un guión simple podría preguntar el nombre del lector, determinar la dirección de Internet del sistema que usa el lector e imprimir un saludo. Los scripts pueden escribirse en cualquier lenguaje de programación, pero, debido a que generalmente son rutinas de procesamiento de texto simples, los lenguajes de script como PERL son particularmente apropiados.
Otro enfoque consiste en utilizar un lenguaje diseñado para que el navegador ejecute scripts web. JavaScript es uno de esos lenguajes, diseñado por Netscape Communications Corp. , que puede usarse con los navegadores de Netscape y Microsoft. JavaScript es un lenguaje simple, bastante diferente de Java . Un programa JavaScript puede estar incrustado en una página web con la etiqueta HTML . Las instrucciones de JavaScript que siguen a esa etiqueta serán ejecutadas por el navegador cuando se seleccione la página. Para acelerar la visualización de dinámicaspáginas (interactivas), JavaScript a menudo se combina con XML o algún otro lenguaje para intercambiar información entre el servidor y el navegador del cliente. En particular, el comando XMLHttpRequest habilita solicitudes de datos asincrónicas del servidor sin que sea necesario que el servidor vuelva a enviar toda la página web. Este enfoque, o “filosofía” de la programación se llama Ajax ( una síncrona J avascript un nd X ML).
VB Script es un subconjunto de Visual Basic. Desarrollado originalmente para el conjunto de programas Office de Microsoft, más tarde también se utilizó para scripts web. Sus capacidades son similares a las de JavaScript y puede integrarse en HTML de la misma manera.
Detrás del uso de dichos lenguajes de scripting para la programación web se encuentra la idea de la programación de componentes, en la que los programas se construyen combinando componentes independientes previamente escritos sin ningún procesamiento adicional del lenguaje. Los programas JavaScript y VB Script se diseñaron como componentes que se pueden adjuntar a los navegadores web para controlar cómo muestran la información.
Elementos De Programación
A pesar de las diferencias de notación, los lenguajes informáticos contemporáneos proporcionan muchas de las mismas estructuras de programación. Estos incluyen estructuras de control básicas y estructuras de datos. Las primeras, proporcionan los medios para expresar algoritmos y las segundas, proporcionan formas de organizar la información.
Estructuras de Control
Programas escritos en Los lenguajes de procedimiento, el tipo más común, son como recetas, con listas de ingredientes e instrucciones paso a paso para usarlos. Las tres estructuras de control básicas en prácticamente todos los lenguajes de procedimiento son:
- Secuencia: combine los ingredientes líquidos y luego agregue los secos.
- Condicional: si los tomates están frescos, cocínelos a fuego lento, pero si están enlatados, omita este paso.
- Iterativo: bata las claras hasta que formen picos suaves.
La secuencia es la estructura de control predeterminada ; las instrucciones se ejecutan una tras otra. Podrían, por ejemplo, realizar una serie de operaciones aritméticas, asignando resultados a variables, para encontrar las raíces de una ecuación cuadrática a x 2 + b x + c = 0. ElLa estructura de control condicional IF-THEN o IF-THEN-ELSE permite que un programa siga rutas alternativas de ejecución.La iteración, o bucle, le da a las computadoras gran parte de su poder. Pueden repetir una secuencia de pasos tantas veces como sea necesario, y las repeticiones apropiadas de pasos bastante simples pueden resolver problemas complejos.
Estas estructuras de control se pueden combinar. Una secuencia puede contener varios bucles; un bucle puede contener un bucle anidado dentro de él, o las dos ramas de un condicional pueden contener cada una secuencias con bucles y más condicionales. En el “pseudocódigo” utilizado en este artículo, “*” indica multiplicación y “←” se utiliza para asignar valores a las variables. El siguiente fragmento de programación emplea la estructura SI-ENTONCES para encontrar una raíz de la ecuación cuadrática, usando la fórmula cuadrática:
?♂️ Fórmula ?♂️
La secuencia es la estructura de control predeterminada ; las instrucciones se ejecutan una tras otra. Podrían, por ejemplo, realizar una serie de operaciones aritméticas, asignando resultados a variables, para encontrar las raíces de una ecuación cuadrática a x 2 + b x + c = 0. ElLa estructura de control condicional IF-THEN o IF-THEN-ELSE permite que un programa siga rutas alternativas de ejecución.La iteración, o bucle, le da a las computadoras gran parte de su poder. Pueden repetir una secuencia de pasos tantas veces como sea necesario, y las repeticiones apropiadas de pasos bastante simples pueden resolver problemas complejos.
Estas estructuras de control se pueden combinar. Una secuencia puede contener varios bucles; un bucle puede contener un bucle anidado dentro de él, o las dos ramas de un condicional pueden contener cada una secuencias con bucles y más condicionales. En el “pseudocódigo” utilizado en este artículo, “*” indica multiplicación y “←” se utiliza para asignar valores a las variables. El siguiente fragmento de programación emplea la estructura SI-ENTONCES para encontrar una raíz de la ecuación cuadrática, usando la fórmula cuadrática:
?♂️ Fórmula ?♂️
La función SQUARE_ROOT utilizada en el fragmento anterior es un ejemplo de subprograma (también llamado procedimiento, subrutina o función). Un subprograma es como una receta de salsa que se da una vez y se usa como parte de muchas otras recetas. Los subprogramas toman insumos (la cantidad necesaria) y producen resultados (la salsa). Los subprogramas de uso común se encuentran generalmente en una colección o biblioteca provista de un idioma. Los subprogramas pueden llamar a otros subprogramas en sus definiciones, como se muestra en la siguiente rutina (donde ABS es la función de valor absoluto). SQUARE_ROOT se implementa usando un ciclo WHILE (indefinido) que produce una buena aproximación para la raíz cuadrada de números reales a menos que x sea muy pequeña o muy grande. Un subprograma se escribe declarando su nombre, el tipo de datos de entrada y la salida:
?♂️ Fórmula ?♂️
Los subprogramas pueden dividir un problema en subproblemas más pequeños y manejables. A veces, un problema puede resolverse reduciéndolo a un subproblema que es una versión más pequeña del original. En ese caso, la rutina se conoce como subprograma recursivo porque resuelve el problema llamándose a sí mismo repetidamente. Por ejemplo, la función factorial en matemáticas ( n ! = N ∙ ( n −1) ⋯ 3 ∙ 2 ∙ 1 — es decir, el producto de los primeros n enteros), se puede programar como una rutina recursiva:
?♂️ Fórmula ?♂️
La ventaja de la recursividad es que a menudo es una simple repetición de una definición precisa, que evita los detalles contables de una solución iterativa .
A nivel de lenguaje de máquina, los bucles y condicionales se implementan con instrucciones de bifurcación que dicen “saltar a” un nuevo punto en el programa. La declaración “goto” en lenguajes de nivel superior expresa la misma operación, pero rara vez se usa porque dificulta a los humanos seguir el “flujo” de un programa. Algunos lenguajes, como Java y Ada, no lo permiten.
Estructuras de Datos
Mientras que las estructuras de control organizan algoritmos , las estructuras de datos organizan la información. En particular, las estructuras de datos especifican tipos de datos y, por tanto, qué operaciones se pueden realizar en ellos, al tiempo que elimina la necesidad de que un programador realice un seguimiento de las direcciones de memoria. Las estructuras de datos simples incluyen enteros, números reales, booleanos (verdadero / falso) y caracteres o cadenas de caracteres. Las estructuras de datos compuestas se forman combinando uno o más tipos de datos.
Las estructuras de datos compuestos más importantes son las matriz, una colección homogénea de datos, y larecord , una colección heterogénea . Una matriz puede representar un vector de números, una lista de cadenas o una colección de vectores (una matriz de matrices o matriz matemática ). Un registro puede almacenar información del empleado: nombre, cargo y salario. Una matriz de registros, como una tabla de empleados, es una colección de elementos, cada uno de los cuales es heterogéneo. Por el contrario, un registro puede contener un vector, es decir, una matriz.
Los componentes o campos del registro se seleccionan por nombre; por ejemplo, E.SALARY podría representar el campo de salario del registro E. Un elemento de matriz se selecciona por su posición o índice; A [10] es el elemento en la posición 10 en matriz A . Por lo tanto, un bucle FOR (iteración definida) puede ejecutarse a través de una matriz con límites de índice (PRIMERO EN ÚLTIMO en el siguiente ejemplo) para sumar sus elementos:
?♂️ Fórmula ?♂️
Las matrices y los registros tienen tamaños fijos. Las estructuras que pueden crecer se construyen con asignación dinámica , que proporciona nuevo almacenamiento según sea necesario. Estas estructuras de datos tienen componentes, cada uno de los cuales contiene datos y referencias a otros componentes (en términos de máquina , sus direcciones). Estas estructuras autorreferenciales tienen definiciones recursivas. UNAbintree (árbol binario), por ejemplo, está vacío o contiene un componente raíz con datos y bintree “hijos” de izquierda y derecha. Estos bintrees implementan tablas de información de manera eficiente. Las subrutinas para operar sobre ellos son naturalmente recursivas; la siguiente rutina imprime todos los elementos de un bintree (cada uno es la raíz de algún subárbol):
?♂️ Fórmula ?♂️
Los tipos de datos abstractos (ADT) son importantes para la programación a gran escala. Ellos empaquetan estructuras de datos y operaciones en ellos, ocultando detalles internos. Por ejemplo, una tabla ADT proporciona operaciones de inserción y búsqueda a los usuarios mientras mantiene invisible la estructura subyacente, ya sea una matriz, una lista o un árbol binario. En los lenguajes orientados a objetos , las clases son ADT y los objetos son instancias de ellas. El siguiente ejemplo de pseudocódigo orientado a objetos asume que hay un ADT bintree y una “superclase” COMPARABLE, caracterizando datos para los cuales hay una operación de comparación (como “<” para enteros). Define un nuevo ADT, TABLE, que oculta su representación de datos y proporciona operaciones apropiadas para las tablas. Esta clase es polimórfica, definida en términos de un parámetro de tipo de elemento .de la clase COMPARABLE. Cualquier instancia debe especificar ese tipo, aquí una clase con datos de empleado (la declaración COMPARABLE significa que PERS_REC debe proporcionar una operación de comparación para ordenar registros). Se omiten los detalles de implementación.
?♂️ Fórmula ?♂️
TABLE hace públicas solo sus propias operaciones; por lo tanto, si se modifica para usar una matriz o lista en lugar de un bintree, los programas que lo usan no pueden detectar el cambio. Esta ocultación de información es esencial para gestionar la complejidad en programas grandes. Los divide en partes pequeñas, con “contratos” entre las partes; aquí, la clase TABLE se contrata para proporcionar operaciones de búsqueda e inserción, y sus usuarios contratan para usar solo las operaciones así publicitadas.
> TRADUCCIÓN: Pablo Álvarez Corredera, 24 de Noviembre de 2020
> CONTRIBUYENTE: David Hemmendinger
> FECHA DE PUBLICACIÓN: 19 de noviembre de 2020