C ++ vs JavaScript

Las hermosas compensaciones de esta vida es que nadie puede tratar sinceramente de ayudar a otro sin ayudarse a sí mismo ~ Ralph Wardo Emerson.

Ya sabes, esta cita habla mucho de muchos lenguajes de programación tal como los encontramos hoy, JavaScript en particular. JavaScript en el pasado ha sido uno de los idiomas más abusados, pero hoy es uno de los idiomas más celebrados e incluso con la mayor comunidad de desarrolladores.

La mayoría de estos idiomas ahora antiguos y “arcaicos” alguna vez han gozado de popularidad en el pasado. Esto significa que alguna vez los obsoletos Basic, Paschal, FORTRAN, etc., todos disfrutaron del patrocinio de la comunidad de desarrolladores. Pero no pudieron evolucionar a medida que la tecnología creció. Básicamente, una cosa constante en la evolución del lenguaje de programación es el deseo de satisfacer las necesidades de los usuarios de esos lenguajes y también facilitar el desarrollo de los usuarios.

En este artículo, voy a compartir brevemente con usted algunas de las diferencias y similitudes que he observado entre C ++ y Javascript, sé que algunos dirán, ¿no es obvio y claro que son diferentes y están destinadas a cosas completamente diferentes? , uno se usa para escribir scripts web mientras que el anterior se usa para crear aplicaciones de sistemas y todo eso, sí, tiene razón, pero ¿no es bueno delinear claramente algunas de las áreas que parecen ser diferentes y similares? Apuesto a que dirás vamos a seguir adelante.

Entonces, sin mucho preámbulo, me gustaría comenzar con las diferencias que pueden ser obvias para todos.

Diferencias

  1. Caso de uso principal:

JavaScript se desarrolló principalmente para brindar a los desarrolladores la oportunidad de desarrollar programas que se ejecutarán con el navegador de manera eficiente y efectiva. Es un lenguaje de programación dinámico y de tipo débil creado originalmente para servir como lenguaje de script para el navegador Netscape. Es un lenguaje interpretado, lo que significa que el código se convierte en código de máquina a medida que se ejecuta utilizando un motor de JavaScript. Chrome tiene V8 y Firefox tiene un motor de spidermonkey. Últimamente se ha vuelto popular en el uso en servidores (Nodejs) y aplicaciones de escritorio (Electron), incluso en aplicaciones móviles multiplataforma (React y ionic).

C ++, por otro lado, se creó a partir de C, y se considera súper C o C con objetos o C + 1 (en la programación, el operador de incremento es ++) y de ahí el nombre. C ++ se utiliza para programar “bare metal”, lo que significa que no hay intérprete o máquina virtual que genere una sobrecarga a medida que se ejecuta el código. Por lo tanto, algunas personas lo llaman un lenguaje de bajo nivel. Es por eso que a menudo se usa para escribir las partes centrales de un sistema operativo y para hacer aplicaciones pesadas de rendimiento, como los juegos. La mayoría de los juegos de computadora que encuentra están compilados de C / C ++ porque todos esos gráficos y la lógica del juego funcionan mejor sin algún intérprete o máquina virtual (VM, Java y algunos otros idiomas usan JVM). C ++ es un lenguaje compilado, lo que significa que el código debe construirse para un sistema en particular.

2. Proceso de compilación:

JavaScript es un lenguaje interpretado, lo que significa que el código se convierte en código de máquina una vez que se ejecuta. También es muy genérico, lo que significa que un programa JavaScript puede ejecutarse en prácticamente cualquier sistema, esta es una razón por la que se ha utilizado en la creación de aplicaciones multiplataforma y de navegador.
C ++ es un lenguaje compilado, lo que significa que cuando se ejecuta el código, el compilador compila el código directamente a los códigos de la máquina sin ningún tipo de puente (VM). Tampoco es tan genérico, lo que significa que los códigos son principalmente específicos de la plataforma o sistema para el que se desarrolló.

3. Diferencia sintáctica:

Para declarar variables en JavaScript no necesita especificar el tipo de datos de la variable, use var (ES5) O deje que (ES6) luego para declarar una variable como constante use la palabra clave const, también usa recolección de basura para descargar memoria no utilizada. En C ++, la historia es totalmente diferente, ya que debe asegurarse de usar el tipo de datos correcto al declarar cualquier variable, aunque también usa const para indicar al compilador que la variable que está declarando es una constante. En C ++, usted tiende a estar a cargo de prácticamente toda la administración de la memoria (asignación de memoria y desasignación) utilizando el puntero ‘ nuevo ‘ y ‘ eliminar ‘ para la asignación de memoria y desasignación, respectivamente.

4. Otros:

  • Se sabe que JavaScript funciona bien con Cassandra y LevelDB, incluido MongoDB, mientras que la base de datos C ++ más común es PostgreSQL y MYSQL.
  • JavaScript admite JVM (Máquina virtual Java) mientras que C ++ no
  • JavaScript no admite tipos estáticos (variables) pero C ++ sí
  • JavaScript es portátil, mientras que C ++ es enorme (gran tamaño).

Similitudes

  1. La primera similitud que señalaré es que ambos son lenguajes de programación (juego de palabras) 😜 … no es tan divertido ¿verdad? Lo sé.
  2. Tanto JavaScript como C ++ admiten el paradigma de orientación a objetos.

En JavaScript (ES6) las clases se declaran de la siguiente manera:

  rectángulo de clase { 
constructor (altura, ancho) {
this.height = height;
this.width = ancho;
}
}

Y las funciones de clase se agregan de la siguiente manera:

  rectángulo de clase { 
constructor (altura, ancho) {
this.height = height;
this.width = ancho;
}
// Getter
obtener área () {
devuelve this.calcArea ();
}
// Método
calcArea () {
devuelve this.height * this.width;
}
}
  cuadrado const = nuevo rectángulo (10, 10); 
  console.log (square.area);  // 100 

Mientras que C ++ tiene una forma de creación de clase algo compleja o no compleja (dependiendo de cómo la vea). En C ++, cuando uno crea una clase (que es la única forma de comenzar un programa en C ++), obtiene los archivos .cpp y .h de la clase

El CppClass.h

  #ifndef CPPCLASS_H 
  #define CPPCLASS_H 
  clase CppClass 
  { 
  público: 
  CppClass (); 
  ~ CppClass (); 
  vacío setHeight (int); 
  int getHeight () const; 
  vacío setWidth (int); 
  int getWidth () const; 
  protegido: 
  privado: 
  int altura; 
  ancho int; 
  }; 
  #endif // CPPCLASS_H 

El CppClass.cpp

  #include "CppClass.h" 
  CppClass :: CppClass () 
  { 
  // ctor 
  } 
  CppClass :: ~ CppClass () 
  { 
  // dtor 
  } 
  void CppClass :: setHeight (int mHeight) { 
  altura = mAltura; 
  } 
  void CppClass :: setWidth (int mWidth) { 
  ancho = mWidth; 
  } 
  int CppClass :: getHeight () const { 
  altura de retorno; 
  } 
  int CppClass :: getWidth () const { 
  ancho de retorno; 
  } 

Ambos también admiten herencia de clase.

En Javascript:

  clase animal { 
constructor (nombre) {
this.name = nombre;
}

hablar() {
console.log (this.name + 'hace ruido.');
}
}
  clase Perro extiende Animal { 
constructor (nombre) {
super (nombre); // llama al constructor de la superclase y pasa el parámetro de nombre
}
  hablar() { 
console.log (este.nombre + 'ladridos');
}
}
  let d = nuevo perro ('Mitzie'); 
d.speak (); // Mitzie ladra.

En C ++:

  #ifndef CPPCLASS_H 
  #define CPPCLASS_H 
  clase CppClass: public MyBaseClass 
  { 
  público: 
  CppClass (); 
  ~ CppClass (); 
  vacío setHeight (int); 
  int getHeight () const; 
  vacío setWidth (int); 
  int getWidth () const; 
  protegido: 
  privado: 
  int altura; 
  ancho int; 
  }; 
  #endif // CPPCLASS_H 

3. Desestructuración de objetos:

La desestructuración es una expresión que permite desempaquetar valores de matrices o propiedades de objetos en variables distintas.

En JavaScript se representa de la siguiente manera:

  var x = [1, 2, 3, 4, 5]; 
var [y, z] = x;
console.log (y); // 1
console.log (z); // 2

En C ++ se llama enlace estructurado, y generalmente se usa tanto en tuplas como en matrices. Pero, solo daré el ejemplo de su uso en matrices:

  doble myArray [3] = {1.0, 2.0, 3.0}; 
  auto [a, b, c] = myArray; 
  std :: cout << a; 

4. Expresiones y funciones de Lambda:

Las funciones de Lambda son una característica que actualmente es tendencia en la mayoría de los lenguajes de programación de hoy. Los lenguajes antiguos y modernos están comenzando a introducir funciones lambda para simplificar el desarrollo para sus usuarios.

En JavaScript, una función lambda se representa así:

  let multiplicador = (valor1, valor2) => valor devuelto1 * valor2; 

En C ++, una función lambda se representa así:

  multiplicador automático = [] (int primero, int segundo) { 
volver primero * segundo;
};

5. Valor constante (variable):

Las constantes se refieren a valores fijos que el programa no puede modificar y se denominan literales.

En JavaScript:

  const name = "Chrisantus Eze"; 

En C ++:

  int const age = 35; 

6. Número variable de argumentos:

Tanto JavaScript como C ++ tienen mecanismos que le permiten aceptar un número variable de argumentos en una función.

Sin embargo, esta implementación es diferente tanto en JavaScript como en C ++.

En JavaScript:

  función sum (... args) { 
  return args.reduce ((anterior, actual) => { 
  volver anterior + actual; 
  }); 
  } 

En C ++:

  vacío printNames (const char * name ...); 

7. Capacidad para declarar variables usando un tipo no específico:

La mayoría de los lenguajes modernos como JavaScript y Kotlin no utilizan tipos de datos específicos durante las declaraciones de variables. Algunas palabras clave permiten a los usuarios usar cualquier valor en la variable declarada.

Por ejemplo, en Kotlin, ” var ” se usa como una palabra clave para declarar una variable mutable, mientras que ” val ” se usa para declarar una variable inmutable. Esta variable puede contener cualquier valor (string, char, int, double, boolean, etc.). Los usuarios de C ++ tuvieron una sensación de alivio después del lanzamiento de C ++ 14, ya que ahora pueden unirse a sus contrapartes que trabajan con algunos de estos lenguajes modernos para trabajar con tanta facilidad sin preocuparse por el tipo de datos de la variable antes de declararla.

En Javascript:

  let name = "Chrisantus Eze"; 

En C ++:

  auto name = "Chrisantus Eze"; 

Aunque los dos idiomas pueden parecer totalmente diferentes, pero creo que ahora puede ver las pocas similitudes que pude describir que abundan en ambos idiomas.

Para leer más sobre las fortalezas y debilidades de los dos idiomas, puede consultar este artículo.

Gracias por leer