Consejos y trucos para programadores competitivos | Conjunto 2 (Idioma que se utilizará para la programación competitiva)

Esta es una pregunta que se hace con bastante frecuencia, ya que en qué idioma se debe preferir para ser eficiente en la programación competitiva. Es algo de lo que uno no debe preocuparse ya que lo que importa es la lógica, no el lenguaje. La mayoría de los lenguajes son más o menos iguales, pero hasta ahora el lenguaje preferido es C++, y estas son las razones.

Python 

Simple y fácil: Python es simple, fácil de escribir (necesitamos escribir menos) y tiene una gran colección de módulos con casi todas las funciones que puedas imaginar.

Tipos de datos:  generalmente se prefiere Python, ya que no tiene ningún límite superior en la memoria de enteros . Además, no es necesario especificar qué tipo de datos es y cosas como esta facilitan la codificación pero al mismo tiempo dificultan la compilación (en referencia al tiempo necesario para la compilación).

Ejecución lenta:  los programas de Python son generalmente más lentos en comparación con Java (ver esto ). Python está bastante descartado en el propio arranque debido a su elevado tiempo de ejecución.

Ahora nos quedamos en su mayoría con Java, C, C++, ahora aquí se vuelve difícil de comparar y depende principalmente del usuario, pero analicemos los puntos buenos y malos de cada uno de ellos.

Java 

  • STL vs contenedores: STL en C++ está realmente bien diseñado, mientras que a algunas personas les encantan los contenedores de Java más que nada. Hay pocas situaciones en las que STL no tiene una solución directa. Por ejemplo, la prioridad_cola en STL no admite la operación de disminución de clave que se requiere para las implementaciones del algoritmo de ruta más corta de Dijkstra y el algoritmo de Prim.

El manejo de excepciones en Java es incomparable: el código Java proporciona un manejo de excepciones más sólido que el de C++. Por ejemplo, es más fácil rastrear una excepción ArrayIndexOutOfBound o una falla de segmentación en Java. C++/C puede darte respuestas incorrectas, pero Java seguramente es confiable en este contexto.

Se excede el límite de tiempo : es posible que obtenga TLE debido a que Java es un poco más lento en el lado del límite de tiempo (especialmente en SPOJ), Codeforces.

Gran número entero y expresiones regulares: Java tiene algunas ventajas con respecto a los concursos de programación. Biginteger, Regular Expressions y la biblioteca de geometría son algunos de ellos.

  • Ahora pasemos a C++.

C++  y  C  

  • La velocidad de C++ es comparable a la de C:   muchos programas de C también son programas de C++ válidos, y dichos programas de C se ejecutan a la misma velocidad cuando se compilan.
  • C++ no fuerza la programación orientada a objetos:  el lenguaje C++ contiene algunas extensiones del lenguaje que facilitan la programación orientada a objetos y C++ no fuerza el diseño orientado a objetos en ninguna parte, simplemente lo permite.
  • Tipos parametrizados  La palabra clave plantilla permite al programador escribir implementaciones genéricas (independientes del tipo) de algoritmos. Donde en C, uno podría escribir una implementación de lista genérica con un elemento como: 
    struct element_t 
    {
       struct element_t *next, *prev;
       void *element;
    };
  • C++ permite escribir algo como: 
template <typename T>
struct element_t 
{
    element_t<T> *next, *prev;
    T element;
};
  • Una biblioteca estándar más grande:  C++ permite el uso completo de la biblioteca estándar de C y C++ incluye sus propias bibliotecas, incluida la Biblioteca de plantillas estándar . El STL contiene una serie de plantillas útiles, como la rutina de clasificación anterior. Incluye útiles estructuras de datos comunes como listas, mapas, conjuntos, etc. Al igual que la rutina de ordenación, las otras rutinas y estructuras de datos STL están «adaptadas» a las necesidades específicas que tiene el programador: todo lo que tiene que hacer el programador es completar el formulario. tipos 
    Por ejemplo, si necesitamos implementar la búsqueda binaria para un problema, tendremos que escribir nuestra propia función, mientras que en C++ la rutina STL de búsqueda binaria se define como 
 binary_search(startaddress, endaddress, valuetofind)

C++ vs Java  
 Los códigos Java son más largos Un programador necesita escribir más cuando programa en Java

  • Java es detallado : en C++, la entrada y salida es más simple simplemente escribiendo scanf/printf. En Java, necesita la clase BufferedReader, que nuevamente es tediosa.

C++ STL vs Java Containers: A la mayoría de los programadores les resulta más fácil usar STL.

C++ es más popular: ya sea por el año de origen o por la comodidad de uso, pero C++ supera a Java en términos de cantidad de usuarios que usan el lenguaje.

C++ ahorra tiempo: Es bien sabido que Java es más lento que C++. Generalmente necesitamos compilar y ejecutar programas muchas veces para probarlos. Toma relativamente mucho menos tiempo en C++. Por lo tanto, en los concursos de tiempo limitado, nuestro tiempo se puede ahorrar.

En resumen, C++ es hasta la fecha el lenguaje preferido seguido de Java cuando se trata de concursos de programación, pero siempre debe elegir un lenguaje con el que se sienta cómodo. Tener CONFIANZA en cualquier idioma es lo más importante. Nunca elijas un idioma que “acabas de aprender”, ya que será difícil expresarte en ese idioma.

Para los temas, comience con preguntas sencillas y luego pase a preguntas ad-hoc, luego cubra los algoritmos estándar y la estructura de datos . Finalmente aprenda a optimizar su código. Todo este tiempo énfasis en el aprendizaje de las matemáticas, ya que  los algoritmos matemáticos son una parte importante de la excelencia en la programación competitiva.

¡Feliz codificación! 

Referencia: http://unthought.net/c++/c_vs_c++.html 

Este artículo está redactado exclusivamente con las contribuciones de nuestros Campus Geeks: Rahul Agarwal, Aditya Chatterjee, Shubham Singh Rajput, Vineet Sethia, Saiteja Reddy, Shaily Seth, Mudit Maheshwari, Ajay Jain y Ruchir Garg.

Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo y enviarlo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Consejos y trucos para programadores competitivos | Juego 1 (para principiantes) 

Si eres nuevo en la programación competitiva, este artículo puede ayudarte a escribir tu primer código.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *