¿Cuándo C es una mejor opción que C ++? [cerrado]

7

No puedo imaginar que haya alguna razón para no usar las características OOP de C ++. Es tan rápido como C y, lo que es más importante para mí, es transparente, al igual que C. (quiero decir "transparente" que conozco, para qué se compila mi fuente. O, creo, lo sé).

¿Hay alguna razón para no usar el poder de la programación orientada a objetos en la programación en C?

Acepto solo sistemas embebidos u otras plataformas restringidas como excepciones, donde no se dispone de dicha gestión de memoria, lo cual es requerido por C ++. También acepto el desarrollo del sistema operativo. O los programas comenzaron a escribir antes de C ++. Está bien, eso es todo.

ACTUALIZACIÓN: la pregunta es solo acerca de C vs C ++, no de C / C ++ vs otros idiomas. Estoy usando C / C ++ solo en el "caso final".

    
pregunta ern0 23.01.2011 - 22:54

6 respuestas

14

Mi razón favorita para no usar C ++ es que C tiene un ABI estándar de facto en la mayoría de las plataformas. En otras palabras, debido a que no existe una mutilación de nombres, etc., generalmente puede vincular el código compilado con dos compiladores de C diferentes. Con C ++, buena suerte porque la necesitarás.

    
respondido por el dsimcha 24.01.2011 - 00:08
8

Casos:

  1. Simplemente no te gusta la POO: es un paradigma, después de todo, no un dogma;
  2. Necesitas escribir una aplicación pequeña (en términos de líneas) con un tiempo de compilación potencialmente enorme;
  3. No te gustan / necesitas algunas de las características de C ++.

Después de todo, son dos idiomas diferentes con una sintaxis mayormente compartida. Acaba de elegir el que mejor se adapte a sus necesidades / gusto.

    
respondido por el cbrandolino 23.01.2011 - 23:06
7

Una razón legítima por un empleador anterior:

Trabaja con ingenieros que no aprendieron OOP y su gerente preferiría que pudieran entender su código sin necesidad de hacerlo.

    
respondido por el mootinator 23.01.2011 - 23:12
5

Respuesta corta: depende de las características de C ++ que uses - Y - si has habilitado al compilador para que las use.

Ejemplo específico para admitir el ejemplo anterior: Manejo de excepciones en C ++: con las declaraciones try, throw, catch. Algunos compiladores tienen una opción de línea de comando para habilitar o deshabilitar el soporte para el manejo de excepciones, es decir, el código con intento de captura de compilación. Habilitar el soporte para el manejo de excepciones, incluso sin usarlo, puede hacer que el binario compilado aumente hasta un tercio en tamaño en comparación con cuando está apagado. Por lo tanto, si la memoria para almacenar su programa es escasa y no utiliza el manejo de excepciones o puede encontrar otra forma de informar errores, desactive esta opción en el compilador.

Su pregunta se aplica especialmente a los sistemas integrados en tiempo real (por ejemplo, electrónica de consumo, sistemas de control) y semi-integrado (es decir, quioscos, teléfonos móviles, consolas de juegos) donde los recursos (tiempo de CPU y RAM no son tan abundantes como en un escritorio) ). Sin embargo, trabajé en 2 proyectos integrados en tiempo real donde parte de la pila de software se escribió en C ++, uno estaba en el firmware de la unidad óptica (grabadoras de DVD / CD) y el otro era un software de control de multiplexor de fibra óptica.

Estoy de acuerdo con @mootinator en que depende de con quién trabajas porque podría afectar la entrega de tu proyecto si tus compañeros de equipo necesitan ponerse al día con C ++.

C ++ puede aportar beneficios de reutilización y mantenibilidad a través de los conceptos de Programación Orientada a Objetos que proporciona.

Por lo tanto, es posible que desee investigar cuidadosamente el rendimiento (velocidad y memoria) de C ++ en su campo elegido. Una vez que esté seguro de que aún puede usar C ++ después de esta investigación, deberá implementar y realizar pruebas regularmente para confirmar que las necesidades de rendimiento de su proyecto aún se están cumpliendo, para que no haya sorpresas.

    
respondido por el therobyouknow 23.01.2011 - 23:23
2

Por supuesto, C ++ no es malo (aunque lo he visto invitar a abusar). Sin embargo, hay algunos casos en los que me atengo a C.

Los compiladores de C ++ manejan nombres, y tienden a tener una gran cantidad de soporte de biblioteca para la administración de memoria, E / S en serie, bibliotecas de clases, etc. Todas esas cosas tienen valor si las necesito. A veces no quiero todo eso, y prefiero algo más cercano al "metal".

    
respondido por el Mike Dunlavey 23.01.2011 - 23:51
2

La respuesta podría depender del equipo y del proyecto que vayan a utilizar C o C ++.

Creo que aquí puede encontrar una buena revisión de los beneficios de plain C vs C ++. El autor argumenta desde el punto de vista del desarrollador integrado, pero muestra casos prácticos en los que C "gana" sobre C ++ en términos de rendimiento, facilidad de mantenimiento y transparencia. El mismo autor es el autor de C ++ FQA , una colección de C ++ golpeando artículos que, sin embargo, son bastante informativos incluso para un entusiasta de C ++.

Otro aspecto a considerar son los modismos típicos de C ++. Algunos de ellos pueden ser molestos aunque no estén realmente relacionados con la POO en general.

Un ejemplo de eso son los constructores, que no devuelven valores pero permiten el paso de parámetros y las listas de inicialización. El autor de lo anterior argumenta que los constructores y las listas de inicialización crean más problemas que los que deberían resolver y, en muchos lineamientos de codificación, de hecho se recomienda no usar constructores complicados con muchos parámetros, sino usar los más simples, incluso los predeterminados. constructor, y proporcionar al usuario las rutinas de inicialización adecuadas. Este es, por ejemplo, el enfoque adoptado en Ada95 y más allá, donde los objetos tienen, en su caso, solo un constructor sin argumentos, similar al constructor predeterminado en C ++.

    
respondido por el Andrea 23.01.2011 - 23:51

Lea otras preguntas en las etiquetas