Saltar al contenido
CIBERNINJAS
  • Actualidad
    • Noticias Tech
    • Ciberseguridad
    • Criptomonedas
    • Hardware
    • Juegos
    • NFT
    • Redes Sociales
    • Robótica
    • Software
  • Aprender
    • Blockchain
    • Cursos Gratis
    • Guías Desde Cero
    • Hacking Ético
    • Historia Ordenadores
    • Inteligencia Artificial
    • Linux / Windows
    • Realidad Extendida
    • Rutas de Aprendizaje
    • Teletrabajo
    • ¿Cómo empezar a aprender?
  • Devs
    • Noticias Programación
    • Conceptos Programación
    • DevJuegos
    • DevOps
    • Herramientas Programación
    • Lenguajes Programación
    • Libros
  • OFERTAS!
  • Blog

La Historia de los Lenguajes de Programación Informáticos

28 de agosto de 2020 por Pablo Álvarez Corredera

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.

Contenidos

  • Los Diferentes Tipos de Lenguajes de Programación
    • Lenguajes de máquina y ensamblaje
  • Lenguajes algorítmicos
    • FORTRAN
    • ALGOL
    • LISP
    • C
  • Idiomas orientados a los negocios
    • COBOL
    • SQL
  • Idiomas orientados a la educación
    • BASIC
    • PASCAL
    • Logo
    • Hypertalk
  • Lenguajes Orientados a Objetos
    • C++
    • C#
    • ADA
    • Java
    • Visual Basic
    • Python
  • Lenguajes declarativos
  • Lenguajes de secuencias de comandos
  • Lenguajes de formato de documentos
    • TeX
    • PostScript
    • SGML
  • Lenguajes de visualización de la World Wide Web
    • HTML
    • XML
    • Secuencias de comandos web
  • Elementos De Programación
    • Estructuras de Control
    • Estructuras de Datos

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, ) y dando reglas para el uso de elementos del documento, como que un párrafo puede aparecer dentro de una entrada de tabla. pero una tabla puede no aparecer dentro de un párrafo. Un programa de análisis puede analizar un texto marcado para determinar si se ajusta a una DTD. Otro programa puede leer las marcas para preparar un índice o traducir el documento a PostScript para imprimirlo. Otro más podría generar tipografía o audio de gran tamaño para lectores con discapacidades visuales o auditivas.</p> <h2><span class="ez-toc-section" id="Lenguajes_de_visualizacion_de_la_World_Wide_Web"></span><strong>Lenguajes de visualización de la World Wide Web</strong><span class="ez-toc-section-end"></span></h2> <h3><span class="ez-toc-section" id="HTML"></span><strong>HTML</strong><span class="ez-toc-section-end"></span></h3> <p>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.</p> <p>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 </A>, 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.</p> <h3><span class="ez-toc-section" id="XML"></span><strong>XML</strong><span class="ez-toc-section-end"></span></h3> <p>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.</p> <p>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.</p> <h3><span class="ez-toc-section" id="Secuencias_de_comandos_web"></span><strong>Secuencias de comandos web</strong><span class="ez-toc-section-end"></span></h3> <p>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.</p> <p>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).</p> <p>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.</p> <p>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.</p> <h2><span class="ez-toc-section" id="Elementos_De_Programacion"></span><strong>Elementos De Programación</strong><span class="ez-toc-section-end"></span></h2> <p>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.</p> <h3><span class="ez-toc-section" id="Estructuras_de_Control"></span><strong>Estructuras de Control</strong><span class="ez-toc-section-end"></span></h3> <p>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:</p> <ol> <li>Secuencia: combine los ingredientes líquidos y luego agregue los secos.</li> <li>Condicional: si los tomates están frescos, cocínelos a fuego lento, pero si están enlatados, omita este paso.</li> <li>Iterativo: bata las claras hasta que formen picos suaves.</li> </ol> <p>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.</p> <p>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:</p> <blockquote><p> ?‍♂️ Fórmula ?‍♂️ </p></blockquote> <p>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.</p> <p>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:</p> <blockquote><p> ?‍♂️ Fórmula ?‍♂️ </p></blockquote> <p>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:</p> <blockquote><p> ?‍♂️ Fórmula ?‍♂️ </p></blockquote> <p>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:</p> <blockquote><p> ?‍♂️ Fórmula ?‍♂️ </p></blockquote> <p>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 .</p> <p>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.</p> <h3><span class="ez-toc-section" id="Estructuras_de_Datos"></span><strong>Estructuras de Datos</strong><span class="ez-toc-section-end"></span></h3> <p>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.</p> <p>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.</p> <p>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:</p> <blockquote><p> ?‍♂️ Fórmula ?‍♂️ </p></blockquote> <p>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):</p> <blockquote><p> ?‍♂️ Fórmula ?‍♂️ </p></blockquote> <p>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.</p> <blockquote><p> ?‍♂️ Fórmula ?‍♂️ </p></blockquote> <p>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.</p> <p>> TRADUCCIÓN: Pablo Álvarez Corredera, 24 de Noviembre de 2020<br /> > CONTRIBUYENTE: <a href="https://www.britannica.com/contributor/David-Hemmendinger/5383">David Hemmendinger</a><br /> > FECHA DE PUBLICACIÓN: 19 de noviembre de 2020<br /> <br /> </p> <div class="related-post grid"> <div class="headline">Artículos Relacionados</div> <div class="post-list"> <div class="item"> <a class="title post_title" title="9 Lenguajes de Programación más Antiguos que se siguen Usando en 2023" href="https://ciberninjas.com/lenguajes-programacion-mas-antiguos/"> <span class="icon">▷ </span> 9 Lenguajes de Programación más Antiguos que se siguen Usando en 2023 </a> <p class="excerpt post_excerpt"> Un lenguaje de programación es una forma de comunicarse con las computadoras. Los lenguajes de programación se componen de una colección de reglas que permiten que los valores de cadena se conviertan en varias formas de generar código de máquina o en el caso <a class="read-more" href="https://ciberninjas.com/lenguajes-programacion-mas-antiguos/"> ¡SEGUIR LEYENDO!</a> </p> </div> <div class="item"> <a class="title post_title" title="5 Características principales de C# 11" href="https://ciberninjas.com/caracteristicas-principales-csharp-11/"> <span class="icon">▷ </span> 5 Características principales de C# 11 </a> <p class="excerpt post_excerpt"> C# 11 es la última versión del lenguaje de programación C Sharp y comprende una gran cantidad de nuevas funciones para los desarrolladores. Aquí tienes las características más esperadas del lenguaje de programación C# que los desarrolladores esperaban. Estas son las cinco mejores características <a class="read-more" href="https://ciberninjas.com/caracteristicas-principales-csharp-11/"> ¡SEGUIR LEYENDO!</a> </p> </div> <div class="item"> <a class="title post_title" title="Dov Frohman-Bentchkowsky" href="https://ciberninjas.com/dov-frohman-bentchkowsky/"> <span class="icon">▷ </span> Dov Frohman-Bentchkowsky </a> <p class="excerpt post_excerpt"> Biografía de Dov Frohman-Bentchkowsky Antes de la invención de Dov Frohman de la memoria de solo lectura programable borrable (EPROM), la memoria de solo lectura (ROM), un tipo de circuito integrado que contiene el programa principal del sistema, tenía que "quemarse" en la fábrica <a class="read-more" href="https://ciberninjas.com/dov-frohman-bentchkowsky/"> ¡SEGUIR LEYENDO!</a> </p> </div> </div> <style media="all">.related-post {} .related-post .post-list { text-align: left; } .related-post .post-list .item { margin: 5px; padding: 0px; } .related-post .headline { font-size: 18px !important; color: #999999 !important; } .related-post .post-list .item .post_title { font-size: 23px; color: #4f3c8e; margin: 3px 0px; padding: 0px; line-height: normal; display: block; text-decoration: none; font-weight: bold; } .related-post .post-list .item .post_excerpt { font-size: 13px; color: #3f3f3f; margin: 10px 0px; padding: 0px; display: block; text-decoration: none; } .related-post .post-list .item .post_thumb { max-height: 220px; margin: 10px 0px; padding: 0px; display: block; } @media only screen and (min-width: 1024px) { .related-post .post-list .item { width: 90%; } } @media only screen and (min-width: 768px) and (max-width: 1023px) { .related-post .post-list .item { width: 90%; } } @media only screen and (min-width: 0px) and (max-width: 767px) { .related-post .post-list .item { width: 90%; } }</style> </div> <div id="dpsp-content-bottom" class="dpsp-content-wrapper dpsp-shape-circle dpsp-size-large dpsp-has-spacing dpsp-hide-on-mobile dpsp-button-style-5" style="min-height:46px;position:relative"> <ul class="dpsp-networks-btns-wrapper dpsp-networks-btns-share dpsp-networks-btns-content dpsp-column-2 dpsp-has-button-icon-animation" style="padding:0;margin:0;list-style-type:none"> <li class="dpsp-network-list-item dpsp-network-list-item-twitter" style="float:left"> <a rel="nofollow noopener" href="https://twitter.com/intent/tweet?text=%3F%20%E2%96%B7%20La%20Historia%20de%20los%20Lenguajes%20de%20Programaci%C3%B3n%20Inform%C3%A1ticos%20%7C%20CIBERNINJAS&url=https%3A%2F%2Fciberninjas.com%2Fhistoria-lenguajes-programacion%2F&via=ciberninjas" class="dpsp-network-btn dpsp-twitter dpsp-first dpsp-has-label" target="_blank" aria-label="Share on Twitter" title="Share on Twitter" style="font-size:14px;padding:0rem;max-height:46px" > <span class="dpsp-network-icon"> <span class="dpsp-network-icon-inner" ><svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 30 32"><path d="M28.928 7.296q-1.184 1.728-2.88 2.976 0 0.256 0 0.736 0 2.336-0.672 4.64t-2.048 4.448-3.296 3.744-4.608 2.624-5.792 0.96q-4.832 0-8.832-2.592 0.608 0.064 1.376 0.064 4.032 0 7.168-2.464-1.888-0.032-3.36-1.152t-2.048-2.848q0.608 0.096 1.088 0.096 0.768 0 1.536-0.192-2.016-0.416-3.328-1.984t-1.312-3.68v-0.064q1.216 0.672 2.624 0.736-1.184-0.8-1.888-2.048t-0.704-2.752q0-1.568 0.8-2.912 2.176 2.656 5.248 4.256t6.656 1.76q-0.16-0.672-0.16-1.312 0-2.4 1.696-4.064t4.064-1.696q2.528 0 4.224 1.824 1.952-0.384 3.68-1.408-0.672 2.048-2.56 3.2 1.664-0.192 3.328-0.896z"></path></svg></span> </span> <span class="dpsp-network-label">Twitter</span></a></li> <li class="dpsp-network-list-item dpsp-network-list-item-facebook" style="float:left"> <a rel="nofollow noopener" href="https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fciberninjas.com%2Fhistoria-lenguajes-programacion%2F&t=%3F%20%E2%96%B7%20La%20Historia%20de%20los%20Lenguajes%20de%20Programaci%C3%B3n%20Inform%C3%A1ticos%20%7C%20CIBERNINJAS" class="dpsp-network-btn dpsp-facebook dpsp-last dpsp-has-label" target="_blank" aria-label="Share on Facebook" title="Share on Facebook" style="font-size:14px;padding:0rem;max-height:46px" > <span class="dpsp-network-icon"> <span class="dpsp-network-icon-inner" ><svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 18 32"><path d="M17.12 0.224v4.704h-2.784q-1.536 0-2.080 0.64t-0.544 1.92v3.392h5.248l-0.704 5.28h-4.544v13.568h-5.472v-13.568h-4.544v-5.28h4.544v-3.904q0-3.328 1.856-5.152t4.96-1.824q2.624 0 4.064 0.224z"></path></svg></span> </span> <span class="dpsp-network-label">Facebook</span></a></li> </ul></div> </div> <footer class="entry-meta" aria-label="Meta de entradas"> <span class="cat-links"><span class="gp-icon icon-categories"><svg viewBox="0 0 512 512" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="1em" height="1em"><path d="M0 112c0-26.51 21.49-48 48-48h110.014a48 48 0 0143.592 27.907l12.349 26.791A16 16 0 00228.486 128H464c26.51 0 48 21.49 48 48v224c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112z" /></svg></span><span class="screen-reader-text">Categorías </span><a href="https://ciberninjas.com/historia-computadoras/" rel="category tag">Historia Computadoras</a>, <a href="https://ciberninjas.com/programacion/lenguajes-programacion/" rel="category tag">Lenguajes Programación</a></span> <span class="tags-links"><span class="gp-icon icon-tags"><svg viewBox="0 0 512 512" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="1em" height="1em"><path d="M20 39.5c-8.836 0-16 7.163-16 16v176c0 4.243 1.686 8.313 4.687 11.314l224 224c6.248 6.248 16.378 6.248 22.626 0l176-176c6.244-6.244 6.25-16.364.013-22.615l-223.5-224A15.999 15.999 0 00196.5 39.5H20zm56 96c0-13.255 10.745-24 24-24s24 10.745 24 24-10.745 24-24 24-24-10.745-24-24z"/><path d="M259.515 43.015c4.686-4.687 12.284-4.687 16.97 0l228 228c4.686 4.686 4.686 12.284 0 16.97l-180 180c-4.686 4.687-12.284 4.687-16.97 0-4.686-4.686-4.686-12.284 0-16.97L479.029 279.5 259.515 59.985c-4.686-4.686-4.686-12.284 0-16.97z" /></svg></span><span class="screen-reader-text">Etiquetas </span><a href="https://ciberninjas.com/etiqueta/ada/" rel="tag">ADA</a>, <a href="https://ciberninjas.com/etiqueta/algol/" rel="tag">Algol</a>, <a href="https://ciberninjas.com/etiqueta/basic/" rel="tag">Basic</a>, <a href="https://ciberninjas.com/etiqueta/c/" rel="tag">C</a>, <a href="https://ciberninjas.com/etiqueta/cobol/" rel="tag">Cobol</a>, <a href="https://ciberninjas.com/etiqueta/estructuras-de-control/" rel="tag">Estructuras de Control</a>, <a href="https://ciberninjas.com/etiqueta/estructuras-de-datos/" rel="tag">Estructuras de Datos</a>, <a href="https://ciberninjas.com/etiqueta/fortran/" rel="tag">Fortran</a>, <a href="https://ciberninjas.com/etiqueta/html/" rel="tag">HTML</a>, <a href="https://ciberninjas.com/etiqueta/hypertalk/" rel="tag">Hypertalk</a>, <a href="https://ciberninjas.com/etiqueta/java/" rel="tag">Java</a>, <a href="https://ciberninjas.com/etiqueta/lisp/" rel="tag">Lisp</a>, <a href="https://ciberninjas.com/etiqueta/logo/" rel="tag">Logo</a>, <a href="https://ciberninjas.com/etiqueta/pascal/" rel="tag">Pascal</a>, <a href="https://ciberninjas.com/etiqueta/postscript/" rel="tag">PostScript</a>, <a href="https://ciberninjas.com/etiqueta/python/" rel="tag">Python</a>, <a href="https://ciberninjas.com/etiqueta/sgml/" rel="tag">SGML</a>, <a href="https://ciberninjas.com/etiqueta/sql/" rel="tag">SQL</a>, <a href="https://ciberninjas.com/etiqueta/tex/" rel="tag">TeX</a>, <a href="https://ciberninjas.com/etiqueta/visual-basic/" rel="tag">Visual Basic</a>, <a href="https://ciberninjas.com/etiqueta/world-wide-web/" rel="tag">World Wide Web</a>, <a href="https://ciberninjas.com/etiqueta/xml/" rel="tag">XML</a></span> </footer> </div> </article> </main> </div> <div class="widget-area sidebar is-right-sidebar" id="right-sidebar"> <div class="inside-right-sidebar"> <aside id="recent-posts-2" class="widget inner-padding widget_recent_entries"> <h2 class="widget-title">Entradas recientes</h2> <ul> <li> <a href="https://ciberninjas.com/mastodon-instancias/">¿Qué son las instancias de Mastodon? ¿Y por qué deberías saberlo?</a> </li> <li> <a href="https://ciberninjas.com/twitter-escribir-tweets-largos-gratis/">¿Cómo escribir tweets largos gratis sin Twitter Blue?</a> </li> <li> <a href="https://ciberninjas.com/re4r-aventuras-como-ada-wong/">Resident Evil 4 Remake: ¿Voy a poder jugar con Ada Wong?</a> </li> <li> <a href="https://ciberninjas.com/re4r-modo-mercenarios/">Resident Evil 4 Remake: ¿Incluye el modo Mercenarios?</a> </li> <li> <a href="https://ciberninjas.com/re4r-cambiar-traje/">Resident Evil 4 Remake: ¿Cómo cambiar de traje?</a> </li> <li> <a href="https://ciberninjas.com/re4r-que-son-espinelas-como-obtenerlas/">Resident Evil 4 Remake: ¿Qué son las espinelas y cómo obtener más?</a> </li> </ul> </aside><aside id="categories-3" class="widget inner-padding widget_categories"><h2 class="widget-title">Categorías</h2><form action="https://ciberninjas.com" method="get"><label class="screen-reader-text" for="cat">Categorías</label><select name='cat' id='cat' class='postform'> <option value='-1'>Elegir la categoría</option> <option class="level-0" value="2">Activismo Digital  (40)</option> <option class="level-0" value="3">Android  (74)</option> <option class="level-0" value="7">Awesome Listas  (24)</option> <option class="level-0" value="9">Bases Datos  (25)</option> <option class="level-0" value="2975">Big Data  (4)</option> <option class="level-0" value="11">Blockchain  (107)</option> <option class="level-0" value="13">Bootstrap  (22)</option> <option class="level-0" value="15">Ciberseguridad  (177)</option> <option class="level-1" value="3145">   Guías Eliminación de Virus, Malware, Spyware y PUP  (5)</option> <option class="level-0" value="16">Ciencia  (63)</option> <option class="level-0" value="18">CMS  (3)</option> <option class="level-0" value="19">Coches Eléctricos  (5)</option> <option class="level-0" value="93">Crear Videojuegos  (72)</option> <option class="level-1" value="2968">   Profesiones Videojuegos  (29)</option> <option class="level-2" value="2970">      Animación  (9)</option> <option class="level-2" value="2969">      Modelado 3D  (5)</option> <option class="level-0" value="20">Criptomonedas  (139)</option> <option class="level-0" value="21">Cursos Gratis  (215)</option> <option class="level-0" value="689">DevOps  (185)</option> <option class="level-1" value="14">   CI / CD  (22)</option> <option class="level-1" value="101">   ControlVersiones  (14)</option> <option class="level-1" value="3052">   DevOpsSec  (13)</option> <option class="level-1" value="29">   Entornos de Ejecución  (37)</option> <option class="level-1" value="3179">   Entornos Pruebas  (3)</option> <option class="level-1" value="84">   Servicios Nube  (47)</option> <option class="level-1" value="2978">   SRE Libro  (10)</option> <option class="level-0" value="22">Diccionario  (32)</option> <option class="level-0" value="23">Diseño  (61)</option> <option class="level-0" value="103">Diseño Web  (55)</option> <option class="level-0" value="24">Django  (13)</option> <option class="level-0" value="26">Documentales  (7)</option> <option class="level-0" value="27">Editores de Texto  (4)</option> <option class="level-0" value="28">Educación  (33)</option> <option class="level-1" value="3239">   Programación Niños  (4)</option> <option class="level-0" value="3441">Electrónica  (13)</option> <option class="level-0" value="3204">Entretenimiento  (29)</option> <option class="level-1" value="17">   Cine y Series  (16)</option> <option class="level-1" value="33">   Fondos de Pantalla para Escritorios y Móvil  (9)</option> <option class="level-0" value="12">Espacio Personal  (53)</option> <option class="level-1" value="3051">   Caricaturas  (1)</option> <option class="level-1" value="69">   Música  (5)</option> <option class="level-1" value="76">   Psicología  (11)</option> <option class="level-1" value="78">   Reflexión Personal  (16)</option> <option class="level-1" value="88">   Superación Personal  (16)</option> <option class="level-0" value="30">Estudios Oficiales  (20)</option> <option class="level-1" value="99">   Certificaciones TECH  (7)</option> <option class="level-1" value="106">   Especialización en Ciberseguridad  (7)</option> <option class="level-1" value="34">   Formación Profesional  (3)</option> <option class="level-1" value="47">   Gestión de Sistemas Informáticos  (3)</option> <option class="level-0" value="31">Eventos  (31)</option> <option class="level-0" value="32">Expertos de Google  (15)</option> <option class="level-0" value="37">Framework CSS  (16)</option> <option class="level-0" value="38">Framework Java  (2)</option> <option class="level-0" value="39">Framework Javascript  (37)</option> <option class="level-0" value="40">Framework Multiplataforma  (49)</option> <option class="level-0" value="41">Framework PHP  (3)</option> <option class="level-0" value="42">Framework Python  (7)</option> <option class="level-0" value="43">Fundación  (21)</option> <option class="level-0" value="48">Hacking Ético  (88)</option> <option class="level-1" value="3024">   Herramientas Hacking  (8)</option> <option class="level-0" value="91">Hacks Windows  (10)</option> <option class="level-0" value="49">Hardware  (284)</option> <option class="level-1" value="3444">   Auriculares  (5)</option> <option class="level-1" value="3365">   CPU  (28)</option> <option class="level-1" value="3351">   Discos Duros & Almacenamiento  (9)</option> <option class="level-1" value="45">   Gadgets  (20)</option> <option class="level-1" value="2976">   Hacks Redes  (8)</option> <option class="level-1" value="3217">   Mini Computadoras  (2)</option> <option class="level-1" value="3296">   Multimedia  (2)</option> <option class="level-1" value="3493">   Placas Base  (1)</option> <option class="level-1" value="3408">   RAM  (9)</option> <option class="level-1" value="3272">   Smartphone  (14)</option> <option class="level-1" value="3218">   Tarjetas Gráficas  (5)</option> <option class="level-1" value="3489">   Teclados  (2)</option> <option class="level-0" value="50">Historia Computadoras  (99)</option> <option class="level-1" value="3305">   Alan Turing  (12)</option> <option class="level-1" value="73">   Líderes Tecnológicos  (46)</option> <option class="level-0" value="51">Infografías  (11)</option> <option class="level-0" value="52">Inteligencia Artificial  (182)</option> <option class="level-1" value="5">   Aprendizaje Automático  (12)</option> <option class="level-1" value="6">   Aprendizaje Profundo  (8)</option> <option class="level-1" value="3344">   Herramientas IA  (40)</option> <option class="level-0" value="2858">Juegos  (293)</option> <option class="level-1" value="3301">   Gaming  (25)</option> <option class="level-0" value="10">Librería  (134)</option> <option class="level-1" value="54">   Libros Activismo Digital  (10)</option> <option class="level-1" value="3317">   Libros Blockchain  (1)</option> <option class="level-1" value="2984">   Libros Ciencia  (1)</option> <option class="level-1" value="3183">   Libros Computación  (1)</option> <option class="level-1" value="3313">   Libros DevOPS  (4)</option> <option class="level-1" value="3318">   Libros Diseño y Dibujo  (1)</option> <option class="level-1" value="55">   Libros Framework Javascript  (1)</option> <option class="level-1" value="3207">   Libros GRATIS  (9)</option> <option class="level-1" value="56">   Libros Hacking  (9)</option> <option class="level-1" value="57">   Libros Infantiles  (1)</option> <option class="level-1" value="58">   Libros Inteligencia Artificial  (4)</option> <option class="level-1" value="59">   Libros Motivación  (17)</option> <option class="level-1" value="3181">   Libros Productividad  (4)</option> <option class="level-1" value="60">   Libros Programación  (41)</option> <option class="level-1" value="2863">   Libros Psicología  (4)</option> <option class="level-1" value="61">   Libros Recomendados  (27)</option> <option class="level-1" value="62">   Libros Redes  (1)</option> <option class="level-0" value="65">Mejores Ofertas  (190)</option> <option class="level-1" value="3196">   Juegos de Cartas  (3)</option> <option class="level-1" value="3195">   Juegos de Mesa  (2)</option> <option class="level-1" value="3208">   Merchadising  (4)</option> <option class="level-1" value="3353">   Mínimo Histórico  (41)</option> <option class="level-1" value="3214">   Papelería  (2)</option> <option class="level-1" value="3227">   PC  (21)</option> <option class="level-1" value="3254">   PC Portátiles  (2)</option> <option class="level-1" value="3258">   Rompecabezas  (1)</option> <option class="level-1" value="3220">   Videoconsolas  (3)</option> <option class="level-0" value="66">Metaverso  (42)</option> <option class="level-0" value="67">Metodología de Trabajo  (7)</option> <option class="level-1" value="98">   Agile  (6)</option> <option class="level-0" value="70">NFT  (80)</option> <option class="level-0" value="71">Noticias Tecnológicas de Actualidad  (1.038)</option> <option class="level-1" value="2641">   Bigtechs  (81)</option> <option class="level-1" value="44">   Futuro  (34)</option> <option class="level-1" value="3244">   Hacks Redes Sociales  (1)</option> <option class="level-1" value="3255">   Juegos Indie  (1)</option> <option class="level-1" value="77">   Redes Sociales  (218)</option> <option class="level-0" value="74">Profesiones Digitales  (31)</option> <option class="level-1" value="3248">   Metodologías Trabajo  (2)</option> <option class="level-0" value="75">Programación  (385)</option> <option class="level-1" value="100">   Conceptos Programación  (34)</option> <option class="level-1" value="108">   Herramientas Programación  (120)</option> <option class="level-1" value="109">   Lenguajes Programación  (149)</option> <option class="level-1" value="79">   Reflexión Programación  (14)</option> <option class="level-0" value="2640">Realidad Extendida  (42)</option> <option class="level-0" value="80">retro  (7)</option> <option class="level-0" value="81">Robótica  (40)</option> <option class="level-0" value="82">Rutas de Aprendizaje  (51)</option> <option class="level-0" value="3148">Seguridad Informática  (2)</option> <option class="level-0" value="85">Sin Servidor  (4)</option> <option class="level-0" value="86">Sociedad Tecnológica  (1)</option> <option class="level-0" value="87">Software  (665)</option> <option class="level-1" value="3150">   Almacenamiento en la Nube o Cloud Storage  (8)</option> <option class="level-1" value="4">   Aplicaciones Android  (48)</option> <option class="level-1" value="3058">   Aplicaciones Apple  (5)</option> <option class="level-1" value="3347">   Aplicaciones RV/RA  (1)</option> <option class="level-1" value="102">   Diseño 2D / 3D  (15)</option> <option class="level-1" value="104">   Editores de Texto  (57)</option> <option class="level-1" value="105">   Editores Gráficos  (24)</option> <option class="level-1" value="107">   Gestores de Correos  (14)</option> <option class="level-1" value="3044">   Juegos  (24)</option> <option class="level-1" value="2952">   Mensajería  (15)</option> <option class="level-1" value="110">   Multimedia  (18)</option> <option class="level-1" value="111">   Navegadores  (76)</option> <option class="level-1" value="3381">   Ofimática  (8)</option> <option class="level-1" value="112">   Organizadores  (8)</option> <option class="level-1" value="3211">   Productividad  (3)</option> <option class="level-1" value="3047">   Redes  (2)</option> <option class="level-1" value="113">   Reproductores  (12)</option> <option class="level-1" value="114">   Seguridad  (26)</option> <option class="level-1" value="115">   Servidores  (2)</option> <option class="level-1" value="116">   Sistemas de Gestión de Paquetes  (3)</option> <option class="level-1" value="117">   Sistemas Operativos  (270)</option> <option class="level-2" value="63">      Linux  (117)</option> <option class="level-1" value="3174">   Torrents  (1)</option> <option class="level-1" value="94">   Videollamadas  (16)</option> <option class="level-0" value="2979">TEDX  (22)</option> <option class="level-0" value="89">Teletrabajo  (33)</option> <option class="level-0" value="90">Trailer Videojuegos  (19)</option> <option class="level-0" value="92">Vehículos  (31)</option> <option class="level-0" value="95">Videotutoriales  (11)</option> <option class="level-0" value="96">Webmaster  (71)</option> <option class="level-1" value="2957">   Recursos Web  (11)</option> <option class="level-0" value="97">Wikininjas  (116)</option> <option class="level-1" value="3017">   Tecnología Emergente  (2)</option> </select> </form> <script> /* <![CDATA[ */ (function() { var dropdown = document.getElementById( "cat" ); function onCatChange() { if ( dropdown.options[ dropdown.selectedIndex ].value > 0 ) { dropdown.parentNode.submit(); } } dropdown.onchange = onCatChange; })(); /* ]]> */ </script> </aside> </div> </div> </div> </div> <div class="site-footer grid-container"> <div id="footer-widgets" class="site footer-widgets"> <div class="footer-widgets-container"> <div class="inside-footer-widgets"> <div class="footer-widget-1"> <aside id="custom_html-6" class="widget_text widget inner-padding widget_custom_html"><div class="textwidget custom-html-widget"><span><p align="right"> Apóyame en Redes </p><p align="right"><a href='https://ciberninjas.com/telegram-cn/' title='Contacta con la comunidad ninja desde telegram'>¡Telegram!</a> / <a href='https://ciberninjas.com/twitter-cn/' title='Comparte con tus amigos de twitter'>¡Twitter!</a> / <a href='https://ciberninjas.com/que-es-rss/' title='RSS Ciberninjas'>¡RSS!</a></p></span><br /> <span><p align="right"> ¿Qué no te puedes perder? </p><ul align="right"> <li><a href="https://ciberninjas.com/biblioteca/">Libros GRATIS</a></li> <li><a href="https://ciberninjas.com/aprender/">Cursos GRATIS</a></li> <li><a href="https://ciberninjas.com/guias/">Guías Desde Cero</a></li> <li><a href="https://ciberninjas.com/ofertas-gaming/">¡OFERTAS GAMING!</a></li><li>Sitemap</li><br /> </ul></span></div></aside> </div> <div class="footer-widget-2"> <aside id="custom_html-5" class="widget_text widget inner-padding widget_custom_html"><div class="textwidget custom-html-widget"><span><p align="center">El objetivo de ciberninjas es, ayudar a encontrar todos su potencial a l@s principiantes tecnológicos</p></span><br /><img src="https://i0.wp.com/ciberninjas.com/wp-content/uploads/2022/11/cn-logo-ninja-peleon-300x300-1.webp" alt="Ciberninjas estudiando en búsqueda de hacer crecer su conocimiento tech" width="300px" height="300px" data-lazy-src="https://i0.wp.com/ciberninjas.com/wp-content/uploads/2022/11/cn-logo-ninja-peleon-300x300-1.webp?is-pending-load=1" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" class="jetpack-lazy-image"><noscript><img data-lazy-fallback="1" src="https://i0.wp.com/ciberninjas.com/wp-content/uploads/2022/11/cn-logo-ninja-peleon-300x300-1.webp" alt='Ciberninjas estudiando en búsqueda de hacer crecer su conocimiento tech' width='300px' height='300px' /></noscript></div></aside> </div> <div class="footer-widget-3"> <aside id="custom_html-4" class="widget_text widget inner-padding widget_custom_html"><div class="textwidget custom-html-widget"><span font-size="1.5 em"> <ul><li><a href="https://ciberninjas.com/blog/" title="Blog y todas las más de tres mil publicaciones de Ciberninjas">Blog</a></li><li><strong><a href="https://ciberninjas.com/contacto/" title="Enviar correo electrónico al CEO de Ciberninjas">Contacto</a></strong></li><li><a href="https://ciberninjas.com/que-es-ciberninjas/" title="Acerca de Ciberninjas">Acerca de Ciberninjas</a></li> </ul> </span><br /> <span><p>Avisos Legales</p> <ul><li><a href='https://ciberninjas.com/aviso-legal/#Politica_de_Afiliados'>Política de Afiliados</a></li><li><a href='https://ciberninjas.com/politica-de-cookies/'>Política de Cookies</a></li><li><a href='https://ciberninjas.com/aviso-legal/'>Política de Privacidad</a></li></ul></span></div></aside> </div> </div> </div> </div> <footer class="site-info" aria-label="Sitio" itemtype="https://schema.org/WPFooter" itemscope> <div class="inside-site-info"> <div class="copyright-bar"> <p><strong>Copyright © 2018 - Todos los derechos reservados.<br />Blog Tecnológico Alternativo: Saber Ninja, Dev, Hacker, Gamer, Geek, Tech</strong></p> </div> </div> </footer> </div> <a title="Volver arriba" aria-label="Volver arriba" rel="nofollow" href="#" class="generate-back-to-top" data-scroll-speed="400" data-start-scroll="300"> <span class="gp-icon icon-arrow-up"><svg viewBox="0 0 330 512" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414"><path d="M305.863 314.916c0 2.266-1.133 4.815-2.832 6.514l-14.157 14.163c-1.699 1.7-3.964 2.832-6.513 2.832-2.265 0-4.813-1.133-6.512-2.832L164.572 224.276 53.295 335.593c-1.699 1.7-4.247 2.832-6.512 2.832-2.265 0-4.814-1.133-6.513-2.832L26.113 321.43c-1.699-1.7-2.831-4.248-2.831-6.514s1.132-4.816 2.831-6.515L158.06 176.408c1.699-1.7 4.247-2.833 6.512-2.833 2.265 0 4.814 1.133 6.513 2.833L303.03 308.4c1.7 1.7 2.832 4.249 2.832 6.515z" fill-rule="nonzero" /></svg></span> </a><div id="mv-grow-data" data-settings='{"general":{"contentSelector":false,"show_count":{"content":false,"sidebar":false},"isTrellis":false},"post":{"ID":6291,"categories":[{"ID":50},{"ID":109}]},"shareCounts":[],"shouldRun":true,"buttonSVG":{"share":{"height":32,"width":26,"paths":["M20.8 20.8q1.984 0 3.392 1.376t1.408 3.424q0 1.984-1.408 3.392t-3.392 1.408-3.392-1.408-1.408-3.392q0-0.192 0.032-0.448t0.032-0.384l-8.32-4.992q-1.344 1.024-2.944 1.024-1.984 0-3.392-1.408t-1.408-3.392 1.408-3.392 3.392-1.408q1.728 0 2.944 0.96l8.32-4.992q0-0.128-0.032-0.384t-0.032-0.384q0-1.984 1.408-3.392t3.392-1.408 3.392 1.376 1.408 3.424q0 1.984-1.408 3.392t-3.392 1.408q-1.664 0-2.88-1.024l-8.384 4.992q0.064 0.256 0.064 0.832 0 0.512-0.064 0.768l8.384 4.992q1.152-0.96 2.88-0.96z"]},"twitter":{"height":32,"width":30,"paths":["M28.928 7.296q-1.184 1.728-2.88 2.976 0 0.256 0 0.736 0 2.336-0.672 4.64t-2.048 4.448-3.296 3.744-4.608 2.624-5.792 0.96q-4.832 0-8.832-2.592 0.608 0.064 1.376 0.064 4.032 0 7.168-2.464-1.888-0.032-3.36-1.152t-2.048-2.848q0.608 0.096 1.088 0.096 0.768 0 1.536-0.192-2.016-0.416-3.328-1.984t-1.312-3.68v-0.064q1.216 0.672 2.624 0.736-1.184-0.8-1.888-2.048t-0.704-2.752q0-1.568 0.8-2.912 2.176 2.656 5.248 4.256t6.656 1.76q-0.16-0.672-0.16-1.312 0-2.4 1.696-4.064t4.064-1.696q2.528 0 4.224 1.824 1.952-0.384 3.68-1.408-0.672 2.048-2.56 3.2 1.664-0.192 3.328-0.896z"]},"facebook":{"height":32,"width":18,"paths":["M17.12 0.224v4.704h-2.784q-1.536 0-2.080 0.64t-0.544 1.92v3.392h5.248l-0.704 5.28h-4.544v13.568h-5.472v-13.568h-4.544v-5.28h4.544v-3.904q0-3.328 1.856-5.152t4.96-1.824q2.624 0 4.064 0.224z"]}},"inlineContentHook":["loop_start"]}'></div><script id="generate-a11y">!function(){"use strict";if("querySelector"in document&&"addEventListener"in window){var e=document.body;e.addEventListener("mousedown",function(){e.classList.add("using-mouse")}),e.addEventListener("keydown",function(){e.classList.remove("using-mouse")})}}();</script> <script id='quicklink-js-before'> var quicklinkOptions = {"el":"","urls":[],"timeout":2000,"timeoutFn":"requestIdleCallback","priority":false,"origins":["ciberninjas.com"],"ignores":["feed\\=","\\\/feed\\\/","^https?:\\\/\\\/[^\\\/]+\\\/historia\\-lenguajes\\-programacion\\\/(#.*)?$","^https\\:\\\/\\\/ciberninjas\\.com\\\/wp\\-admin\\\/","^https\\:\\\/\\\/ciberninjas\\.com[^?#]+\\.php","\\\/wp\\-content",".*\\?.+"]}; </script> <script id='code-prettify-js-before'> var codePrettifyLoaderBaseUrl = "https:\/\/ciberninjas.com\/wp-content\/plugins\/code-prettify\/prettify"; </script> <script id='lazyload-youtube-js-js-before'> window.llvConfig=window.llvConfig||{};window.llvConfig.youtube={"colour":"red","buttonstyle":"youtube_button_image_red","controls":true,"loadpolicy":false,"thumbnailquality":"0","preroll":"","postroll":"","overlaytext":"","loadthumbnail":true,"cookies":false,"callback":"<!--YOUTUBE_CALLBACK-->"}; </script> <script id='lazyload-vimeo-js-js-before'> window.llvConfig=window.llvConfig||{};window.llvConfig.vimeo={"buttonstyle":"youtube_button_image_red","playercolour":"#00adef","preroll":"","postroll":"","show_title":false,"overlaytext":"","loadthumbnail":true,"thumbnailquality":"basic","callback":"<!--VIMEO_CALLBACK-->"}; </script> <script id='generate-menu-js-extra'> var generatepressMenu = {"toggleOpenedSubMenus":"1","openSubMenuLabel":"Abrir el submen\u00fa","closeSubMenuLabel":"Cerrar el submen\u00fa"}; </script> <script id='generate-navigation-search-js-extra'> var generatepressNavSearch = {"open":"Abrir la barra de b\u00fasqueda","close":"Cerrar la barra de b\u00fasqueda"}; </script> <script id='generate-back-to-top-js-extra'> var generatepressBackToTop = {"smooth":"1"}; </script> <script src='https://ciberninjas.com/wp-content/uploads/caos/e97f7f90.js' id='caos-analytics-js'></script> <script id='caos-analytics-js-after'> window.ga = window.ga || function() { (ga.q = ga.q || []).push(arguments); }; ga.l = +new Date; ga('create', 'G-3VV39WBZ2L', {"cookieName":"caosLocalGa","cookieDomain":"ciberninjas.com","cookieExpires":2592000,"cookieFlags":"samesite=none;secure","siteSpeedSampleRate":"1"}); ga('set', 'allowAdFeatures', true); ga('set', 'anonymizeIp', true); ga('send', 'pageview'); </script> <script id='pprh_prefetch_flying_pages-js-extra'> var pprh_fp_data = {"testing":"false","delay":"0","maxRPS":"3","hoverDelay":"50","maxPrefetches":"4","ignoreKeywords":["\/wp-admin","\/wp-login.php","\/cart","\/checkout","add-to-cart","logout","#","?",".png",".jpeg",".jpg",".gif",".svg",".webp"]}; </script> <script id='jetpack-lazy-images-js-extra'> var jetpackLazyImagesL10n = {"loading_warning":"Las im\u00e1genes a\u00fan est\u00e1n cargando. Cancela la impresi\u00f3n y vuelve a intentarlo."}; </script> <script id='ez-toc-js-js-extra'> var ezTOC = {"smooth_scroll":"1","visibility_hide_by_default":"","width":"100%","scroll_offset":"30"}; </script> <script src='https://stats.wp.com/e-202313.js' defer></script> <script> _stq = window._stq || []; _stq.push([ 'view', {v:'ext',blog:'190207384',post:'6291',tz:'1',srv:'ciberninjas.com',j:'1:11.7.1'} ]); _stq.push([ 'clickTrackerInit', '190207384', '6291' ]); </script> </body> </html>