Aprendí C-Style C ++ durante unos 6 años. ¿Cometí un error?

Bueno, aunque prefiero Java yo mismo, tu profesor no debería llamarte estúpido.

Además, las últimas tendencias definitivamente no son OOP sino programación funcional.

Si desea aprender un lenguaje funcional utilizado en la industria, puede echar un vistazo a Scala (tiene una participación justa en el análisis de datos y alto rendimiento) o haskell (tiene una participación muy pequeña pero ha crecido bastante últimamente).

También siempre puedes aprender Java. Me parece bastante lindo. Pero tiene sus “peculiaridades del lenguaje de 20 años”. Básicamente, el lenguaje es bastante detallado y no tan elegante; pero su fuerza se basa en el increíble ecosistema construido a su alrededor y en todos los marcos que hacen que su uso sea un placer.

Obtendrá el beneficio adicional de que es la forma más fácil de ingresar a la industria.

También puedes aprender JavaScript. Lo cual no recomendaría, ya que es bastante mediocre, hasta el punto de que casi nadie escribe JavaScript, pero otros lenguajes que lo compilan … Sin embargo, Typecript, uno de ellos, es bastante agradable.

C ++ no es OOP? De Verdad ?

No tiene razón en llamarlo así para ser honesto. En cambio, debería animarte.
Aprender C ++ por tu cuenta nunca es un error.
Estoy seguro de que tiene una base sólida y puede aprender cualquier otro idioma (idiomas que su maestro JAVA supone que son el futuro) tan rápido.
Bueno, ya que te enseñaste a ti mismo C ++, ahora puedes aprender C # y algo de SQL, ya sea usando MS SQL u Oracle.

No cometiste ningún error. ¿Empecé a aprender ASP.Net recientemente y cometí un error al aprender C o C ++? Infierno NO

C ++ estilo C ++, a veces llamado “C con clases” es útil, aunque no sea por otra razón que el mantenimiento de bases de código heredadas.

El código heredado escrito en C ++ estilo C ++ puede ser de muy alta calidad, con un excelente rendimiento en tiempo real. Algunos equipos eligieron este estilo deliberadamente para mantenerse cerca del hardware mientras incorporan patrones de OOP sin las complejidades percibidas de, por ejemplo, plantillas o herencia múltiple.

No puede afirmar que ha dominado C ++ conociendo solo este subconjunto del lenguaje. En cambio, sea honesto sobre lo que sabe en sus entrevistas de trabajo. Es posible que algunos equipos usen el idioma exactamente como usted.

¡El tiene razón!

Pero también tiene razón, al aprender C y C ++, estructuras de datos reales y no solo abstracciones, comprenderá Java más profundamente al tener un conocimiento práctico de las estructuras informáticas íntimas.

La programación OOP (ya sea basada en la herencia o en un prototipo) es el camino a seguir para la mayoría de los proyectos, la recolección de basura fue aún más disruptiva (¡cada programador básico lo disfrutaba para la gestión de cadenas!).

Conocer el trabajo interno de una computadora o CPU (o modelo de memoria, por ejemplo) no es una desventaja, es una ventaja a largo plazo, también lo ayudará a aprender nuevos idiomas, comprender las estructuras de datos que aprovecha y así ver a través el espejo, descubriendo que muchos idiomas modernos, a pesar de la oposición entre sus creyentes, se basan en los mismos patrones exactos.

Creo que en algún momento cualquier gran desarrollador debe aprender C o lenguaje ensamblador y sumergirse profundamente en las estructuras físicas, mmap (), captación previa, reordenamiento de instrucciones, extensiones del conjunto de instrucciones SIMD, comencé con i8080 y M6800 a finales de los 70, use OOP + Idiomas GC a diario, y aún juegan con OpenCL y AVX / AVX2, ¡es una fortaleza!

Agregado: Escribí sitios web basados ​​en CGI en Ansi-C (Netscape Server en Windows NT4) a mediados de los 90, todo es posible incluso si no lo considero nuevamente, ¿o no?

El profesor de Java es mitad equivocado y mitad correcto.

Medio equivocado porque OOP podría no ser “el futuro” (se usa con frecuencia en exceso), pero medio correcto, porque el concepto se usa en todas partes, y es una muy buena idea estar familiarizado con él (bueno, es casi un trabajo requisito para la programación en C ++, a quién estoy engañando).

Al restringirse a C ++ de estilo C, le falta más de la mitad del poder que ofrece el lenguaje (espero que al menos sea familiar con RAII y la regla de los Tres).

Incluso si no te gusta la POO, definitivamente debes familiarizarte con ella.

Un buen ejemplo de un enfoque muy centrado en OOP es la biblioteca gui de Qt 5:
Documentación Qt

Creo que un proyecto de este tipo y de esta escala ni siquiera sucederá con el enfoque de estilo C para C ++.

Básicamente, conozca todas las herramientas que ofrece el lenguaje y seleccione la herramienta adecuada para el trabajo. OOP es una herramienta más para aprender.


Hablando de programación web, hay proyectos interesantes para recompilar el código C ++ en el ensamblaje web y javascript. Ver, por ejemplo, Emscripten. Básicamente, es posible ejecutar código C ++ en su navegador. Creo que Unreal 4 usa algo similar.

Creo que en la escala de tiempo de tu vida, no has cometido ningún tipo de error. Le resultará fácil tomar su conocimiento de C ++ y aprovecharlo en OOP, ya que C ++ ya tiene todas las herramientas de OOP que necesita. Una cosa que vale la pena señalar es que seguir los principios y el diseño orientados a objetos es una habilidad separada de la programación real en un lenguaje orientado a objetos. Puede programar con objetos y fallar por completo en los principios, y puede hacer diseños de sonido, pero no puede implementarlos en ningún lenguaje. También me he encontrado con casos en los que el diseño es sólido, pero el lenguaje de programación lo hizo completamente inapropiado. (Estoy mirando su patrón Abstract Factory en perl; está interpretando todos estos módulos que no necesita en absoluto).

Supongamos que estamos de acuerdo en que la afirmación “SI un idioma es inherentemente mejor que otros en todos los casos, ENTONCES otros no valen la pena aprender”. es verdad. Como sabe que vale la pena aprender otros idiomas, como lo demuestra mucha gente que los aprende y usa, puede concluir que no es el caso de que un idioma sea inherentemente mejor que otros. Supongamos que estamos de acuerdo en que Java, siendo el futuro, es el único que vale la pena aprender. No podemos decir nada acerca de que sea inherentemente mejor que otros en todos los casos porque la afirmación podría ser completamente cierta. Si su profesor de Java no está de acuerdo con este párrafo, envíelo a su profesor de lógica modal. (Dicho profesor puede estar en el departamento de filosofía).

Java es un buen lenguaje. Sin embargo, no reemplazará a Bash como lenguaje de script. No reemplazará a C como lenguaje de creación de sistema operativo. No reemplazará a C ++ como un lenguaje en el que puede realizar programación dependiente de la arquitectura y orientar objetos. Estas son pruebas por contraejemplo de la afirmación de que no vale la pena aprender otros lenguajes además de Java.

¡Absurdo sin sentido!

Dirijo una pequeña empresa. Desarrollamos un producto (babblevoice.com). Una plataforma VOIP alojada. Utilizamos una increíble cantidad de software de código abierto escrito en diferentes idiomas y estilos y luego escribimos mucho software nosotros mismos.

Dependiendo del problema que necesitemos resolver y muchos otros parámetros, usamos Python, C ++, C, Lua, JavaScript y HTML 5 extras y muchos más que probablemente recordaré después de publicar esto.

Algunas áreas usamos OOP, algunas áreas es completamente inapropiado usar OOP.

Un buen ingeniero elige la herramienta adecuada para el trabajo correcto. Esta larga lista de herramientas estará por mucho tiempo por venir.

En primer lugar, C ++ es un lenguaje orientado a objetos.

Este es el argumento más estúpido que puede dar un maestro. Aprender algo nunca ha sido ni confundir ni una cosa estúpida.

Aprender C te dará una mejor comprensión de la programación de bajo nivel (administras memoria, punteros, etc.). Si haces web más tarde, esto será una ventaja para ti.

Y es agradable ver a un primer ministro aprender cómo programar, porque uno de los grandes problemas que enfrento a veces en mi trabajo es que algunos PM a menudo no tienen conocimientos técnicos, por lo que no se preocupan por cosas importantes, y eso causa más retrasos, etc. .

Disparates. Si bien la Web puede ser el futuro, incluso la Web tiene que ejecutarse en algo. Siempre habrá una necesidad de programación de bajo nivel y C, con o sin objetos, forma el núcleo de los tres (dos, realmente) principales sistemas operativos modernos: Windows, Unix / Linux / MacOS.

Del mismo modo, los sistemas de bases de datos en los que se basa gran parte de la Web están escritos al menos en parte en C / C ++.

Saber un lenguaje de nivel de sistemas es una habilidad valiosa para tener.