Artículos de Tecnología

Lenguajes de programación: una breve introducción contextualizada

almsantana
almsantana

Introducción: ¿Cuál es el mejor lenguaje de programación?

Cuando se trata de programación de computadoras y de lo que se necesita para convertirse en un desarrollador, es posible que te hayas preguntado:

"¿Cuál es el mejor lenguaje de programación para comenzar en la carrera de programación?"

O incluso:

"¿Qué lenguaje realmente vale la pena aprender para crear cualquier programa?"

La respuesta a estas preguntas es mucho más compleja de lo que parece, ya que al buscar un lenguaje perfecto para crear nuestras aplicaciones, podemos perder la oportunidad de conocer diversas características que contribuirían a nuestro trabajo, aprovechando lo que cada uno de los lenguajes de programación existentes tiene para ofrecer.

Puede resultar frustrante que en un mundo con tanta información no tengamos métricas claras y objetivas para determinar cuál es el mejor lenguaje de programación. Por eso, te invito a sumergirte en la lectura de este artículo y a considerar estas preguntas desde otro punto de vista, comprendiendo las principales diferencias entre los lenguajes más populares y teniendo en cuenta que la elección ideal está estrechamente relacionada con el propósito de lo que queremos desarrollar.

¿Listo para empezar?

¿Qué es un lenguaje de programación?

Contextualización

Es posible que ya sepas que existen diferentes lenguajes de programación, pero quizás aún no sepas para qué se utiliza cada uno, es decir, cuál es su aplicabilidad. Por lo tanto, es posible que no te resulte tan claro lo que realmente hace que sean lenguajes de programación. Así que consideremos la siguiente situación:

En esta situación, tenemos algunas opciones posibles para evitar este problema:

  1. Buscar a alguien que hable el idioma para que traduzca simultáneamente lo que estamos diciendo.
  2. Intentar encontrar un idioma en común que ambas partes puedan hablar.

Ninguna de las dos opciones parece ser completamente viable al 100%. La traducción simultánea puede ser una buena opción, pero parte de los mensajes puede perderse durante la conversación. Y aunque la tarea de encontrar un idioma en común puede ser interesante, tampoco hay garantía de que no perderemos algunos detalles, como el uso de jerga, por ejemplo, al intercambiar mensajes.

Ahora consideremos un segundo problema. Mira la figura a continuación:

img1 - conversacion con dos personas en el whatsapp

En este pasaje, tenemos dos personas conversando, y a pesar de que la primera persona dice "¡Hola! ¿Puedes prestarme duas lápices de colores?", hay un problema en la estructura de la frase, pero parece que la segunda persona es capaz de entender lo que se pidió.

Esto sucede porque, a diferencia de las computadoras, las personas son capaces de adaptarse y comprender pequeñas variaciones en su idioma en el proceso de comunicación. ¿Pero qué tiene que ver esto con los lenguajes de programación?

¡Todo! Los lenguajes de programación, al igual que en nuestro primer problema, son idiomas que permiten a las personas comunicarse con una computadora. Y al igual que en el segundo ejemplo, tienen reglas estructurales, pero las máquinas no son tan capaces de adaptarse para entender que "duas lápices" significa lo mismo que "dos lápices", como lo hacen las personas.

Definición de Lenguaje de Programación

Hablamos el idioma portugués de Brasil, que al igual que los lenguajes de programación, utiliza un conjunto de símbolos, las letras del alfabeto. Diferentes formas de combinar estos símbolos forman palabras. La estructura de organización de estas palabras en una oración es la sintaxis. Estas palabras y frases tienen un significado (o semántica), y el contexto nos permite entenderlo mejor. Por lo tanto, para nosotros es claro que "dois canetas" se refiere a la cantidad de bolígrafos que tenemos.

Por lo tanto, podemos decir que los lenguajes de programación no son más que un idioma con reglas de escritura para garantizar la comunicación con la computadora. Entonces, ¿por qué debemos aprender tantos lenguajes diferentes?

¿Para qué sirve el lenguaje de programación?

Como mencionamos anteriormente, la computadora no puede adaptarse tan fácilmente como los seres humanos, y es por eso que se crean diversos lenguajes. De esta manera, podemos comunicarnos con la máquina de manera más rápida y eficiente, dependiendo del tema que deseamos tratar con ella, es decir, del propósito, por ejemplo, qué tipo de programa queremos desarrollar.

¿Cuál es el lenguaje de programación más utilizado?

Los lenguajes de programación tienen muchas características diferentes entre sí, desde la forma en que se definen las palabras y los símbolos especiales, hasta la forma en que las "instrucciones" dadas a la computadora se traducen desde las interfaces en las que ingresamos el código hasta el momento en que se envían a los procesadores de las computadoras.

Existen innumerables estrategias para elegir un lenguaje de programación ideal, pero tal vez la primera que debas conocer esté relacionada con consultar a la comunidad de desarrolladores. ¡Así es!

Las personas que desarrollan tienen una de las comunidades técnicas más grandes y activas entre todas las profesiones existentes, y saber cómo pedir ayuda puede ser una ventaja en cualquier etapa de tu carrera.

¿Qué lenguajes de programación recomienda la comunidad DEV?

1) Índice TIOBE

En primer lugar, podemos recurrir a las clasificaciones de lenguajes de programación para tratar de comprender las tendencias del mercado. A continuación, se muestra una tabla que presenta una clasificación construida en base al índice TIOBE de la comunidad de programadores:

Febrero 2023Febrero 2022Lenguaje de ProgramaciónClasificaciónVariación en la clasificación
11Python15,49%+0,16%
22C15,39%+1,31%
33C++13,94%+5,93%
44Java13,21%+1,07%
55C#6,38%+1,01%
66Visual Basic4,14%-1,09%
77Javascript2,52%+0,70%

Fuente: TIOBE index

2) StackOverflow

Otra estrategia puede ser buscar en los foros de la comunidad, como el conocido y confiable StackOverflow:

img2 - ranking lenguajes de la programación

Fuente: Investigación Stack Overflow

Observa que existe una gran variación en los resultados, dependiendo, por supuesto, de lo que se tenga en cuenta en la construcción de los tipos de clasificaciones. En el caso de Stack Overflow, se tuvieron en cuenta las opiniones de 71,547 personas, de las cuales el 8.72% están aprendiendo a programar, mientras que el 91.28% son profesionales desarrolladores.

Es importante tener cercanía con la comunidad, ya que a través de las contribuciones con los lenguajes, se encontrarán más información, código y ayuda en las páginas web. Para obtener más información sobre las clasificaciones de StackOverflow, puedes consultar el sitio de la Developer Survey 2022.

Otra posibilidad es verificar qué tecnologías o lenguajes son utilizados por las empresas que desarrollan software, ya que uno de los propósitos detrás de tus preguntas puede ser conseguir ese tan deseado empleo.

3) StackShare

La comunidad también puede ayudar en esto. Consultando el sitio web StackShare.io, por ejemplo, es posible ver qué lenguajes y herramientas están en tendencia según las empresas de tecnología:

img3 - principales lenguajes y herramientas

Estructuras de diferentes lenguajes de programación

¿Cuáles son los tipos de lenguajes de programación?

Los lenguajes de programación son herramientas importantes para el desarrollo de software. Los lenguajes de programación se pueden clasificar en dos categorías principales:

Lenguajes de alto nivel y bajo nivel

Los lenguajes de alto nivel se caracterizan por permitir que los códigos escritos con ellos sean más simples, lo que facilita que los desarrolladores puedan leer, editar, compartir, comentar o revisar los códigos escritos en estos lenguajes en comparación con los lenguajes de bajo nivel.

Sin embargo, los lenguajes de bajo nivel, al estar más cerca de la forma en que la máquina se comunica, son más eficientes en términos de rendimiento. Esto se debe a que, al escribir los lenguajes de manera más cercana al lenguaje de máquina (como el código binario, por ejemplo), se realizan menos conversiones y, como resultado, las instrucciones se dirigen de manera más cercana al hardware (sin capas adicionales de abstracción).

Clasificación de los lenguajes

Dentro del grupo de lenguajes de programación de alto nivel, que serán el enfoque de este artículo, los lenguajes pueden clasificarse según su tipo de paradigma de programación.

Se definen como lenguajes:

En este enfoque, el lenguaje C++ puede considerarse como de múltiples paradigmas, ya que es un lenguaje orientado a objetos que también admite la programación imperativa.

Por otro lado, el lenguaje Java, por ejemplo, también se puede clasificar como un lenguaje de múltiples paradigmas, ya que permite que los programas se escriban utilizando la programación orientada a objetos. Sin embargo, el lenguaje también admite conceptos de programación imperativa y, en versiones más recientes, utiliza características del paradigma funcional.

Al igual que el lenguaje Java, Python, JavaScript y C# también son lenguajes de múltiples paradigmas que admiten la programación orientada a objetos, la programación imperativa y la programación funcional.

Comparación entre lenguajes de programación

Para ilustrar cómo estas lenguajes difieren en cuanto a la forma de escritura (sintaxis), consideremos una implementación que podría estar presente en un juego de computadora. Imaginemos la siguiente situación:

Las alternativas son:

  1. Abrir la puerta izquierda; o
  2. Abrir la puerta derecha.

Mira la figura a continuación que ilustra la escena:

img4 - direciones de las puertas para ejemplo de algoritmo

Para resolver este problema, seguiremos el siguiente algoritmo:

  1. Definir la función principal (main), de acuerdo con el lenguaje de programación que se esté utilizando, cuando sea aplicable.
  2. Crear una variable que pueda almacenar la elección del usuario (izquierda o derecha).
  3. Solicitar al usuario que indique la opción deseada y almacenar la respuesta en una variable.
  4. Comparar la opción proporcionada por el usuario utilizando una desviación de condicional que mostrará la sala de destino del jugador según la opción elegida.
  5. Si la opción es izquierda, se mostrará el mensaje "Abriendo la Puerta 1", ya que el jugador estará en la "Entrada".
  6. Si la opción es derecha, se mostrará el mensaje "Abriendo la Puerta 2", ya que el jugador estará en la "Entrada".

Ahora que ya tenemos una idea de cómo funciona esta solución, vamos a implementarla utilizando algunos de los lenguajes de programación más utilizados en el mercado, que son:

  1. C++
  2. Java
  3. C#
  4. JavaScript
  5. Python

Si deseas profundizar en los aspectos teóricos de la programación, puedes consultar el material:

¡Vamos!

Lenguaje de Programación C++

1.1) ¿Qué es el lenguaje C++ y para qué se utiliza?

El lenguaje C++ puede considerarse una extensión del lenguaje C, que a su vez se desarrolló para acercarse al lenguaje de una computadora y se utiliza ampliamente en:

Cuando hablamos de sistemas embebidos, nos referimos a sistemas electrónicos con capacidad de procesamiento que se incorporan en un dispositivo o producto, generalmente asociados a algún hardware o dispositivo físico.

A diario vemos ejemplos de estos sistemas, como en los controladores que gestionan las funciones de los televisores o en el control de los dispositivos presentes en los automóviles que permiten la gestión de los subsistemas de un vehículo (como el motor).

1.2) Diferencias entre los lenguajes C y C++

Ambos lenguajes presentan algunas diferencias en cuanto a la forma de escribir las palabras clave reservadas para las instrucciones que se proporcionan a la computadora. Por lo tanto, también difieren en cuanto a los recursos disponibles.

1.2.1) Puntos clave de C

Podemos afirmar que C es considerado por los desarrolladores como el "lenguaje madre", diseñado para garantizar la construcción de programas desde una perspectiva definida como procedimental.

Esto significa que se utiliza para escribir programas que solicitan datos a un usuario, es decir, que permiten la captura de datos externos a la computadora para almacenarlos en la misma, y una variable. Luego, se realiza un procedimiento utilizando estos datos para generar una respuesta, ya sea para el usuario o para otra parte del código de nuestro programa.

Por lo tanto, opera en un paradigma imperativo, ya que se centra en cambiar los estados de una variable en un sistema en función de las instrucciones u órdenes que damos a la computadora.

1.2.2) Puntos clave de C++

Por otro lado, el lenguaje C++ incorpora, además de esta aproximación de codificación, la posibilidad de construir códigos orientados a objetos, más cercanos a la forma en que nos relacionamos con el mundo real. Como resultado, permite una descripción de código que es más fácil de aplicar en proyectos de software más complejos.

En general, este tipo de enfoque se centra en la relación entre los objetos (que toman el lugar de las variables), asegurando la comunicación entre ellos a través de eventos (los métodos), que pueden o no cambiar sus propias características (atributos).

¿Vamos a ver cómo crear nuestra solución utilizando este lenguaje?

1.3) Resolviendo el Desafío

En la sección anterior de este texto, discutimos la solución algorítmica necesaria para resolver el problema. En esta sección, lo resolveremos utilizando el lenguaje de programación C++. Mira la solución propuesta:

#include <iostream>
using namespace std;

int main() {
 char opcionUsuario = ' ';

 cout << "Estás en la 'entrada', ¿deseas ir a la izquierda o a la derecha? Ingresa E para izquierda o D para derecha: ";
 cin >> opcionUsuario;

 if(opcionUsuario == 'E' or opcionUsuario == 'e'){
   cout << "Abriendo la Puerta 1" << endl;
 }else if(opcionUsuario == 'D' or opcionUsuario == 'd'){
   cout << "Abriendo la Puerta 2" << endl;
 }else{
   cout << "Opción Inválida" << endl;
 }
}

Inicialmente, importamos una biblioteca que contiene códigos ya implementados para el uso adecuado del lenguaje. Para hacerlo, utilizamos la palabra reservada #include. La biblioteca iostream permite realizar operaciones de interacción con el usuario, recibiendo datos que se ingresarán y mostrando los resultados de las operaciones que vamos a ejecutar.

A continuación, tenemos una instrucción definida como using namespace std;, utilizada para definir un espacio de nombres o namespace. El namespace puede considerarse como una región que será observada por nuestro programa y contiene los identificadores de los nombres de los tipos de datos, variables y funciones que están dentro de este espacio.

En nuestro ejemplo, se identifican las funciones, variables y tipos de datos necesarios para llevar a cabo operaciones básicas del lenguaje.

La función principal (main) marca el inicio de nuestro programa y dentro de ella se ejecuta un conjunto de instrucciones que permiten obtener la respuesta al problema.

Muchos lenguajes adoptan esta palabra reservada para asegurar que, al construir el programa, sea posible identificar un punto de partida.

Después de eso:

  1. Creamos una variable llamada opcionUsuario, de tipo char. Este tipo permite almacenar solo un carácter y, en el caso del lenguaje C++, debe ser declarado cuando definimos una variable.
  2. Mostramos un mensaje al usuario utilizando la instrucción cout << "*mensaje*". cout significa "console output", es decir, lo que se mostrará en la salida de la aplicación.
  3. Utilizamos la instrucción cin >> para capturar los datos ingresados por el usuario y almacenamos esos datos en la variable mencionada justo después del operador >>.
  4. Finalmente, tenemos un conjunto de estructuras condicionales en las que, tan pronto como se cumple una regla, el código "ejecuta" uno de los bloques mencionados:
    • Si el valor ingresado por el usuario es 'E' o 'e', se mostrará el mensaje "Abriendo la Puerta 1".
    • Si, por otro lado, el valor ingresado por el usuario es 'D' o 'd', se mostrará el mensaje "Abriendo la Puerta 2".
    • Por último, si el valor ingresado es diferente de los dos casos anteriores, se mostrará el mensaje "Opción Inválida".
  5. Es importante notar que también se utiliza la instrucción endl para saltar una línea al final de la visualización del mensaje.

A pesar de que hemos mencionado la programación orientada a objetos, no hemos utilizado ningún concepto de este paradigma de programación. Continuaremos con este enfoque hasta el final y nos centraremos solo en la entrada de datos, su procesamiento y la respuesta al usuario, ¿de acuerdo?

1.4) Conceptos de lenguaje de programación: C++

El lenguaje de programación C++ tiene varios recursos de escritura que se utilizarán en otros lenguajes que veremos a continuación. Sin embargo, hay algunas características distintivas en la forma en que escribimos código en C++. Por ejemplo:

MétricasC++
Tipo de DatosFuertemente tipado (sin contar el tipo union)
Recomendado paraSistemas embebidos (hardware) o sistemas de alto rendimiento (kernel del sistema operativo, por ejemplo)
VentajasRápido, multiparadigma, altamente portátil (se pueden escribir programas para diferentes plataformas), tiene un buen conjunto de bibliotecas y no es tan bajo nivel
CaracterísticasLos bloques de código se definen con {} y se debe marcar el final de una instrucción con
1.4.1) Tipado Fuerte

Cuando decimos que un lenguaje de programación es de tipado fuerte, significa que definimos el tipo de dato en el momento de la creación de la variable y, como resultado, las operaciones relacionadas con este tipo de dato solo pueden ejecutarse con el tipo adecuado de variable.

1.4.2) Paradigmas de Programación

Los lenguajes de programación multiparadigma, por otro lado, son aquellos que pueden utilizarse en diferentes estrategias de programación. En el caso de C++, se destaca por su uso en programas con paradigma imperativo o orientado a objetos.

1.4.3) Portabilidad, abstracción y velocidad de ejecución

Decimos que el lenguaje es altamente portátil porque las principales plataformas informáticas, como Mac OS, Windows y Linux, pueden ejecutar programas escritos en C++ (con algunas adaptaciones).

También podemos considerar que C++ no es ni un lenguaje de bajo nivel ni de alto nivel. La característica está relacionada con cuán cerca están las instrucciones utilizadas para la comunicación de la interpretación por parte del procesador de una computadora (bajo nivel) o cuánto se acercan al entendimiento de las personas (alto nivel). Podemos decir que un lenguaje de alto nivel está más "abstracto" en relación con los comandos interpretados por la máquina.

Finalmente, la velocidad mencionada en la tabla se debe a que el lenguaje C++ se compila, es decir, todo lo que escribimos se convierte directamente en un lenguaje más cercano al lenguaje de la máquina, y como vimos al principio de este artículo, sin traductores en el medio, podemos comunicarnos mejor con la otra entidad que forma parte de nuestra conversación, al igual que ocurre con la computadora, que recibirá mejor las instrucciones dadas por nuestros algoritmos.

1.5) Elija el lenguaje adecuado para su proyecto

Estas características son importantes para determinar si el lenguaje C++ es adecuado o no para un proyecto. Dado que existen muchas comunidades activas que pueden brindar soporte para el lenguaje, es fundamental que sepamos si estamos utilizando las herramientas correctas para crear un programa de computadora.

Para saber más sobre la programación orientada a objetos, lea el artículo: POO: ¿Qué es la programación orientada a objetos?

2) Lenguaje de programación Java

2.1) Diferencia entre Java y C++

Java, en términos de cómo está escrito, tiene características muy similares a C++. Sin embargo, una de las principales diferencias radica en la forma en que los códigos que tecleamos se traducen a nuestros procesadores. El lenguaje Java, a diferencia del C++, se interpreta y compila al mismo tiempo. Pensemos en los efectos de este proceso sobre el rendimiento de un programa.

2.2) resolviendo el desafío

Observa cómo puede verificarse la solución del mismo problema en un código Java:

import java.util.Scanner;

public class Main {
 public static void main(String[] args) {
   Scanner entrada = new Scanner(System.in);

   char opcionUsuario = ' ';
   System.out.println("Estás en la 'entrada', ¿deseas ir a la izquierda o a la derecha? Ingresa E para izquierda o D para derecha: ");

   opcionUsuario = entrada.nextLine().charAt(0);

   if(opcionUsuario == 'E' || opcionUsuario == 'e'){
     System.out.println("Abriendo la Puerta 1 \n");
   }else if(opcionUsuario == 'D' || opcionUsuario == 'd'){
     System.out.println("Abriendo la Puerta 2 \n");
   }else{
     System.out.println("Opción Inválida \n");
   }
 }
}

En este bloque, tenemos muchos elementos similares, sin embargo, tenemos algunos fragmentos de código insertados porque son necesarios según las características del lenguaje. Los cambios principales se pueden observar de la siguiente manera:

  1. La palabra utilizada para importar una biblioteca, en este caso es "import".
  2. El marcador de la clase Main, que se incorpora en esta solución para garantizar la estructura de un lenguaje orientado a objetos. En este caso, la clase puede tratarse como un tipo de dato no primitivo que tiene propiedades (que representan su estado) y métodos (que permiten la modificación de estos estados).
  3. La necesidad de crear un objeto del tipo Scanner, que se utilizará para interactuar con el usuario, ya que en Java, todo lo que sea posible se tratará como un objeto.
  4. La necesidad de "instanciar" el objeto, asegurando que el objeto de tipo Scanner esté asociado a la entrada del sistema.
  5. Las instrucciones para mostrar mensajes en la pantalla, que se estructuran a través del método System.out.println("mensaje"); en lugar de cout << "mensaje";.
  6. La necesidad de capturar una línea completa de texto introducida por el usuario y extraer el primer carácter introducido, que se encuentra en la posición cero de esa línea.
  7. En lugar de usar << endl, utilizamos el comando \n en el propio texto que se mostrará (también existe en C++, pero no perderíamos la oportunidad de mostrar endl en este momento :}).

Observa que la parte de la construcción lógica de la solución en sí no cambia, pero el lenguaje, al ser diferente, utiliza sus propias palabras reservadas y cuenta con su propia gramática para construir las instrucciones dadas a la computadora.

2.3) Conceptos de Lenguaje de Programación

MétricasJava
Tipo de datosTipado estáticamente
Recomendado paraDesarrollo de aplicaciones dinámicas o aplicaciones web (JSP)
CaracterísticasLos bloques de código se definen con {} y es necesario marcar el final de una instrucción con ;
VentajasOrientado a objetos, fácil de programar, comunidad sólida y posee una plataforma independiente que facilita la portabilidad de la solución.
2.3.1) Tipado estático

Un lenguaje tipado estáticamente es aquel en el cual sus tipos están definidos explícitamente en el código y se verifican en tiempo de compilación.

2.3.2) Máquina Virtual Java (JVM)

A diferencia de C++, en Java existe una interfaz que se encuentra entre el código escrito por el desarrollador y la computadora. Se llama JVM (o Máquina Virtual Java) y es responsable de ejecutar los programas escritos en Java, garantizando una mayor compatibilidad entre códigos escritos para diferentes sistemas operativos.

Sin embargo, este enfoque tiene un costo, ¿puede imaginar cuál es? El tiempo necesario para que una aplicación Java se ejecute por primera vez en una máquina es relativamente mayor que si el mismo programa se hubiera escrito en C++.

Esto ocurre por dos razones principales:

  1. La estrategia de construcción de la solución y, como resultado, el almacenamiento de las variables; y
  2. La necesidad de proporcionar estas instrucciones a la JVM, que interpretará estos fragmentos de código para el procesador.

Para obtener más información sobre la JVM y Java, visita:

2.3.3) Clases

Cuando hablamos de Java, es fundamental pensar en el uso de clases. Es un concepto fundamental que proviene de la programación orientada a objetos. Otros lenguajes que comparten este enfoque de programación también incorporan este concepto.

3) Lenguaje de Programación C

3.1) Resolviendo el Desafío

Desde una perspectiva estructural, el lenguaje C# (pronunciado "C-Sharp") para aplicaciones más simples es muy similar a Java. La principal diferencia radica en la capacidad para aprovechar y gestionar recursos. También se destaca cuando la solución desarrollada utiliza los recursos de la plataforma .NET.

using System;

class Program {
 public static void Main (string[] args) {
   char opcionUsuario = ' ';
   Console.WriteLine ("Estás en la 'entrada', ¿deseas ir a la izquierda o a la derecha? Ingresa E para izquierda o D para derecha: ");

   opcionUsuario = Console.ReadLine()[0];

   if(opcionUsuario == 'E' || opcionUsuario == 'e'){
    Console.WriteLine ("Abriendo la Puerta 1 \n");
   }else if(opcionUsuario == 'D' || opcionUsuario == 'd'){
    Console.WriteLine ("Abriendo la Puerta 2 \n");
   }else{
    Console.WriteLine ("Opción Inválida \n");
   }

 }
}

Las principales diferencias a destacar, al comparar este fragmento de código con el escrito en Java, son las siguientes:

  1. La palabra clave "using", utilizada para importar la biblioteca System.
  2. El uso de la instrucción Console.ReadLine() para realizar la lectura de datos del usuario (input), en lugar de utilizar Scanner o cin >>.
  3. El uso de la instrucción Console.WriteLine() para mostrar los datos proporcionados al usuario (output), en lugar de System.out.println() o cout <<.
  4. También es posible observar que, a diferencia de Java, para acceder al primer símbolo del texto proporcionado por el usuario, no utilizamos el método charAt(0), sino solo los corchetes [0], indicando que queremos acceder a la primera posición de un vector de caracteres.

3.2) Conceptos de Lenguaje de Programación

MétricasC#
Tipo de datosTipado estáticamente
Recomendado paraDesarrollo de aplicaciones de escritorio, aplicaciones web o servicios web
CaracterísticasLos bloques de código se definen con {} y es necesario marcar el final de una instrucción
VentajasCapacidad para gestionar la memoria y los recursos de un programa (uso flexible de memoria), rápida y potente, orientada a objetos

4) Lenguaje de Programación JavaScript

A diferencia de otros lenguajes, JavaScript casi siempre está asociado, en su forma más simple, al desarrollo de aplicaciones web. Como resultado, para una demostración adecuada, se presentará junto con HTML.

¿Veamos cómo se puede diseñar esta solución?

4.1) Resolviendo el desafío

4.1.1) HTML
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>ejemplo</title>
<script src="main.js"></script>
</head>
<body>
</body>
</html>

Este fragmento de código consiste en la estructura básica para crear una página HTML en blanco, es decir, sin ningún elemento gráfico o visual. Sin embargo, es importante prestar atención a la instrucción <script src="main.js"></script>, que será responsable de "invocar" nuestro script tan pronto como la página HTML sea leída por el navegador.

En este enfoque, utilizamos la estructura HTML para asegurar que se represente y se pueda acceder a un contenido a través del navegador. Sin embargo, el archivo escrito en HTML no tiene mucha utilidad en este momento, excepto para asegurar que accedamos a las interacciones del navegador para que sea posible ejecutar nuestro ejemplo.

También es importante destacar que el papel del HTML es garantizar que podamos estructurar páginas web, definiendo la relación entre los elementos que el navegador interpretará en la página y su significado.

En este código, por ejemplo, se presentan las etiquetas <head> y <body>, que se utilizan respectivamente cuando queremos:

  1. Definir información sobre nuestra página.
  2. Describir los otros elementos que se utilizarán para diseñar la página (lo que el usuario verá).

Para obtener más información sobre la estructura HTML, visita:

4.1.2) Lenguaje JavaScript
const opcaoUsuario = prompt("Estás en la 'entrada', ¿deseas ir a la izquierda o a la derecha? Ingresa E para izquierda o D para derecha: ");

if(opcionUsuario === 'E' || opcionUsuario === 'e'){
console.log ('Abriendo la Puerta 1');
}else if(opcionUsuario === 'D' || opcionUsuario === 'd'){
console.log ('Abriendo la Puerta 2');
}else{
console.log ('Opción Inválida');
}

El fragmento de código escrito en JavaScript tiene algunas diferencias pequeñas:

  1. Observa que no hemos definido el tipo de dato al crear nuestra variable. Aunque la tipificación se considera una buena práctica al crear variables y constantes, la aplicación aún se ejecutará correctamente.
  2. Podemos escribir una String de texto tanto con comillas simples como con comillas dobles.
  3. El comando utilizado para capturar datos del usuario fue el prompt().
  4. Usamos console.log() para mostrar mensajes al usuario.
  5. No importamos ninguna biblioteca.

Sin embargo, para que podamos verificar el resultado de la solución (la salida de datos), es necesario abrir la pestaña "consola" de nuestro navegador. Para abrir la consola en el navegador Chrome, utiliza los siguientes comandos: Command + Option + J (para MacOS) o Control + Shift + J (para Windows y Linux).

Mira el ejemplo de salida en el navegador.

img5 - resultado algoritmo

4.2) Características del lenguaje

MétricasJavaScript
Tipo de datosFuertemente tipada
Recomendada paraDesarrollo de aplicaciones web o páginas de internet
CaracterísticasLos bloques de código se definen con {}
VentajasAumenta la interactividad de las soluciones, alto potencial para el diseño de interfaces ricas y mejoradas, alta demanda en el mercado laboral

Para obtener más información sobre JavaScript, visita:

5) Lenguaje de Programación Python

Finalmente, tenemos el lenguaje de programación Python, que es interpretado, pero al igual que Java, pasa por un proceso de compilación. Python ha crecido mucho en los últimos años, y una de sus principales ventajas es la velocidad en la creación de código y el apoyo de bibliotecas cada vez más simplificadas proporcionadas por la comunidad.

5.1) Resolviendo el desafío

Mira cómo quedó nuestra solución escrita en Python:

def main():
 opcionUsuario = input("Estás en la 'entrada', ¿deseas ir a la izquierda o a la derecha? Ingresa E para izquierda o D para derecha: ")

 if opcionUsuario == 'E' or opcionUsuario == 'e':
  print("Abriendo la Puerta 1\n")
 elif opcionUsuario == 'D' or opcionUsuario == 'd':
   print("Abriendo la Puerta 2\n")
 else:
   print("Opción Inválida\n")

if __name__ == '__main__':
 main()

Así como en los lenguajes Java, C++ y C#, podemos establecer una función principal, definida como def main(): e invocada en la circunstancia en que se cumple la condición del desvío condicional.

Las principales diferencias estructurales entre el código escrito en Python y los lenguajes anteriores son las siguientes:

  1. No especificamos explícitamente el tipo de dato al crear una variable.
  2. Podemos escribir una String de texto tanto con comillas simples como con comillas dobles.
  3. Para mostrar un mensaje en la pantalla, utilizamos el método print() (output).
  4. Para solicitar un mensaje al usuario, utilizamos el método input().
  5. El desvío condicional no utiliza {} para definir un bloque de código, por lo que es necesario asegurar la indentación del código.
  6. El uso del operador : define dónde comenzará un bloque de código.
  7. En lugar de utilizar "else if", utilizamos "elif".

Cuando comparamos los códigos escritos en Python con los de otros lenguajes, notamos un cambio más significativo en la forma en que escribimos código, ya que Python tiene como objetivo acercarse a la comunicación humana.

Debido a esto, el lenguaje incorpora una serie de cambios en la forma en que se estructuran los fragmentos de código y en su propia gramática (recuerda que ya discutimos que un lenguaje de programación se asemeja a los lenguajes naturales).

5.2) Conceitos de linguagem de programação

MétricasPython
Tipo de datosFuertemente tipada y dinámicamente tipada
Recomendada paraAnálisis de datos, Aprendizaje automático y también para el diseño de aplicaciones. También se puede utilizar para la creación de scripts o automatización de tareas
CaracterísticasLos bloques de código se definen con ":" y mediante la indentación
VentajasAumento de la productividad (se requiere escribir poco código para realizar una tarea), fácil de aprender, fácil de escribir

Python es un lenguaje de programación fuertemente tipado y dinámicamente tipado, lo que significa que el tipo de dato está asociado a la variable de acuerdo con el tipo asignado y en tiempo de ejecución.

Los campos de la ciencia de datos y el aprendizaje automático cuentan con potentes bibliotecas escritas en Python, y es uno de los lenguajes preferidos por la comunidad de desarrollo en este campo.

Finalmente, aunque Python tiene recursos para la creación de aplicaciones web y el diseño de soluciones de escritorio, puede ser interesante identificar si uno de los lenguajes anteriores es más adecuado para el proyecto que deseas desarrollar.

Para obtener más información sobre Python, visita:

Conclusión

Aspectos importantes en la elección de un lenguaje de programación

En este artículo hemos observado algunas características técnicas de diferentes tipos de lenguajes de programación, las principales diferencias en la forma de escribir un mismo código utilizando cada uno de ellos, cómo están presentes en la comunidad y algunas características que favorecen la elección de un lenguaje específico según diferentes tipos de proyectos.

Desde el punto de vista de la elección de un lenguaje, es importante destacar que, además de los aspectos mencionados en este texto, el equipo de trabajo al que perteneces puede haber establecido una estrategia para el desarrollo de soluciones. Por lo tanto, es importante investigar y estudiar las tecnologías asociadas a un proyecto específico.

La importancia de mantenerse actualizado y aprender nuevas tecnologías

Recomendamos que siempre te mantengas actualizado y busques aprender nuevas tecnologías para utilizar cada lenguaje como una herramienta adecuada para resolver problemas. En última instancia, no existe un lenguaje de programación que sea el mejor para todas las situaciones. Aprender nuevos lenguajes y paradigmas de programación es muy positivo, ya que nos permite reconocer las estrategias que cada lenguaje utiliza para ayudarnos a resolver un problema.

La importancia de la lógica de programación en la resolución de problemas

Además, aprender lógica de programación es un paso fundamental para que puedas resolver problemas. Observa que, independientemente del lenguaje elegido, la estructura de la solución ha experimentado pocos cambios, excepto por las palabras reservadas en la gramática de cada uno de los lenguajes seleccionados.

En resumen, aprender lógica de programación nos ayuda a estructurar las ideas utilizadas para diseñar una solución, y el lenguaje de programación es la forma en que manifestamos esa lógica para que la computadora pueda ejecutar los programas que vamos a construir.

Autor: André Santana

Profesor en Insper | Investigador del LSITec (EP-USP) | Instructor en Alura BR

Este articulo fue adecuado para Alura Latam por: Adriana Oliveira

Artículos de Tecnología

En Alura encontrarás variados cursos sobre . ¡Comienza ahora!

Precios en:
USD
  • USD
  • BOB
  • CLP
  • COP
  • USD
  • PEN
  • MXN
  • UYU

Semestral

  • 273 cursos

    Cursos de Programación, Front End, Data Science, Innovación y Gestión.

  • Videos y actividades 100% en Español
  • Certificado de participación
  • Estudia las 24 horas, los 7 días de la semana
  • Foro y comunidad exclusiva para resolver tus dudas
  • Luri, la inteligencia artificial de Alura

    Luri es nuestra inteligencia artificial que resuelve dudas, da ejemplos prácticos y ayuda a profundizar aún más durante las clases. Puedes conversar con Luri hasta 100 mensajes por semana

  • Acceso a todo el contenido de la plataforma por 6 meses
US$ 65.90
un solo pago de US$ 65.90
¡QUIERO EMPEZAR A ESTUDIAR!

Paga en moneda local en los siguientes países

Anual

  • 273 cursos

    Cursos de Programación, Front End, Data Science, Innovación y Gestión.

  • Videos y actividades 100% en Español
  • Certificado de participación
  • Estudia las 24 horas, los 7 días de la semana
  • Foro y comunidad exclusiva para resolver tus dudas
  • Luri, la inteligencia artificial de Alura

    Luri es nuestra inteligencia artificial que resuelve dudas, da ejemplos prácticos y ayuda a profundizar aún más durante las clases. Puedes conversar con Luri hasta 100 mensajes por semana

  • Acceso a todo el contenido de la plataforma por 12 meses
US$ 99.90
un solo pago de US$ 99.90
¡QUIERO EMPEZAR A ESTUDIAR!

Paga en moneda local en los siguientes países

Acceso a todos
los cursos

Estudia las 24 horas,
dónde y cuándo quieras

Nuevos cursos
cada semana