c++ - programacion - que se puede hacer con java
¿Saber C y/o C++ me hará un mejor desarrollador? (25)
A menudo he pensado en tratar de aprender un lenguaje como C ++ para comprender mejor las computadoras. Para mí saber que C / C ++ es como el cinturón negro de la programación. Pero luego miras a los grandes desarrolladores y no creo que hayan aprendido C ++.
¿Es una buena idea para algún día lluvioso (más como un año lluvioso) o debería seguir superando los límites de los idiomas que ya conozco?
EDITAR: Para responder a algunas preguntas. Tengo un buen par de años de experiencia en Java. He trabajado bastante con Delphi y hace aproximadamente un año y medio comencé a usar C # para algunas aplicaciones web que tenía que crear.
¡Nunca es malo saber un idioma más! Si aprendes C y Assembler, verás cómo empezó todo. Esto es realmente útil para charlas en reuniones;)
Eso es más sobre ti, que tus habilidades de programación.
¿Estás hablando de C o C ++?
No dices lo que sabes actualmente. Si no has hecho C, sin duda lo recomendaría. Le ayudará a comprender lo que está sucediendo en el nivel bajo, cerca del metal. Su diseño y estilo influyen en gran parte de las implementaciones actuales de lenguaje / script.
Si desea aprender un lenguaje OO, tal vez le sugiera una introducción más sencilla a OO, quizás Java o C # inicialmente. C ++ puede ser una introducción intimidante a este tema.
Aprender otro idioma te hará un mejor programador. ¡Especialmente cuando el paradigma del idioma es significativamente diferente de cualquier otro idioma que ya conozca!
Aprender C te dará una mejor comprensión de lo que realmente estás haciendo. Será como estar acostumbrado a una calculadora gráfica con todas las funciones y luego aprender a hacer toda la aritmética, el álgebra, el cálculo y la gráfica con solo una pizarra y tiza. Será mucho trabajo, pero si tiene éxito, su modelo mental del código estará mucho más cerca de lo que realmente está sucediendo en la máquina.
Esto no es realmente necesario para ser un buen programador. En realidad, creo que una de las características de un buen codificador es la capacidad de comprender el código en un nivel más alto de abstracción y de ver el sistema en su totalidad. El conocimiento de bajo nivel no te ayuda con el panorama general. Sin embargo, si quieres ser grande, tienes que ir más allá de lo bueno. Debería poder entender el sistema en diferentes niveles de abstracción desde el nivel del diagrama conceptual superior hasta el nivel de código de máquina. Saber C te ayudará a entender los niveles bajos. ¡Ser capaz de depurar C te ayudará a solucionar problemas en todos los niveles!
C ++ le permite realizar las operaciones de bajo nivel de C, pero agrega un montón de mecanismos de abstracción y facilidades de reutilización de código para que pueda ser un poco más productivo. Si ya conoce un lenguaje de nivel superior como Python, Ruby, Perl, VB, Java, etc., le recomendaría que haga un esfuerzo para adquirir habilidades en C y no intente abordar C ++ todavía. El propósito de aprender otro idioma debe ser expandir sus horizontes. De esa manera, aunque no termines de usarlo como profesional o como aficionado, mejorarás tus habilidades de codificación y análisis para los idiomas que usas.
Aprendería plantillas de C ++ como ejercicios de cerebro. Esto, como cualquier otra técnica de programación, te obligará a pensar en una tarea de manera más amplia.
C ++ - No estoy seguro.
C - ciertamente:
Te hará consciente de la gestión de la memoria, por ejemplo, nadie que no "piense" que C puede entender o pensar en el grupo de Apache
Lo hará conocer los problemas de rendimiento, como el cálculo de vector / conjunto de bits y el desenrollado de bucle (porque a veces lo hará a mano)
Te sentirás más cómodo con Unix
C sigue siendo la industria lingua franca.
Cada lenguaje y herramienta que aprendes te convierte en un mejor programador. Sí.
Debes tratar de aprender C y debes tratar de aprender C ++. Cuando lo haces, pronto te das cuenta de por qué los separé.
También te hará un mejor programador, ya que aprenderás más sobre la máquina en la que se ejecuta el código en comparación con los idiomas que conoces hasta ahora. Eso en sí mismo ya sería suficiente recompensa. Aprender C ++ también podría hacer que aprendas herencia múltiple, que es otro concepto de programación útil que no está tan extendido en otros idiomas. Si aprende a usar bien el preprocesador, entonces también lo extrañará en otros idiomas.
Sin embargo, hay que tener en cuenta una cosa: aprender realmente estos dos idiomas lleva mucho tiempo, porque no es suficiente leer sobre ellos. Necesitas trabajar con ellos y resolver problemas reales. Esa es la parte más gratificante al aprender estos idiomas, pero también es la parte más frustrante y lenta. Estoy aprendiendo desde hace 10 años y me siento incapaz de decir que ahora conozco ambos idiomas. Me siento bastante cómodo, pero sé que estoy lejos de ser perfecto.
Hay un dicho:
Tú vales tantas personas como la cantidad de idiomas que conoces.
Esa es la única razón real para aprenderlos;)
Hay un gran artículo sobre la superación personal en la programación: "Enseñe a ti mismo a programar 10 años"
Dice que siempre es bueno aprender cosas nuevas. C ++ es difícil de aprender, y aún más difícil de dominar.
Pero te enseña todo tipo de procesamiento de bajo nivel, que es crucial para entender al escribir software a gran escala.
Joel y Jeff han debatido mucho sobre esto en los primeros podcasts y no es concluyente y es muy controvertido.
Como la mayoría de los programadores antiguos (no regalando mi edad aquí) tiendo a creer que cuanto más sepa sobre el sistema subyacente y su funcionamiento interno, mejor hará uso de formas más modernas y abstractas de programación.
Por lo tanto, conocer acerca de (m) asignar (asignar memoria para una variable como una cadena o estructura) y, por lo tanto, comprender por qué algunas manipulaciones de cadena son lentas en los lenguajes de alto nivel puede ser rentable. Esto es sólo un ejemplo.
Si desea aprender sobre los conceptos de OO, hay mejores lugares para ir que un lenguaje híbrido como C ++ (puede sentir la ruptura entre OO y la capa sin OO).
Así que, diría, echar un vistazo a C no puede hacer daño.
La codificación en C le brinda una perspectiva más cercana de lo que está haciendo el sistema real. Realmente es "codificación al metal" de la máquina.
También le brinda una apreciación más profunda de lo que los lenguajes como Java / C # / Python / Ruby están haciendo por usted.
Y finalmente, la gran mayoría (aunque no todos) del código * nix / * BSD está escrito en C, al igual que en muchos sistemas modernos, por lo que saberlo te abre las puertas si estás considerando un parche o si intentas unirte a un equipo en una empresa determinada.
Le sugiero que lea este libro: http://csapp.cs.cmu.edu/ .
Es una lectura extremadamente buena para cualquier programador. Realmente te enseñará cómo funcionan tus programas a bajo nivel.
Este libro utiliza ensamblaje y C, pero no sé realmente si es legible sin conocimiento de C. De todos modos, sugiero que no dedique mucho tiempo a aprender C. Es probable que necesite al menos un año antes de comenzar a entender cómo escribir buenos programas de C (yo necesitaba dos años, personalmente).
C y C ++ no enseñan mucho sobre cosas de bajo nivel (sí, sé que muchas personas dicen lo contrario). Aprendes a asignar / desasignar memoria, pero creo que eso es todo. Por otro lado, el libro que vinculé arriba te enseñará cómo escribir tu propio asignador de memoria, cómo optimizar programas y mucho más.
No hay nada especial sobre C y C ++, aparte de:
- C es un lenguaje muy poco ambicioso. Su objetivo es / era más o menos crear un lenguaje de ensamblaje portátil. Nada más avanzado que eso, no tiene cabida en el lenguaje. Como tal, en cuanto al lenguaje, no hay nada que aprender de C. No es de ninguna manera un lenguaje difícil, pero requiere mucho trabajo para lograr incluso las cosas más simples. Y, por supuesto, es muy propenso a errores e inseguro en comparación con los idiomas de nivel superior.
- C ++ es un lenguaje muy complicado. Ha tenido muchas influencias diferentes a lo largo de los años y ha robado ideas de una amplia gama de lenguajes y paradigmas de programación. Y luego, en la última década más o menos, esto fue rematado por la comunidad de C ++ al inventar su propio paradigma (programación genérica). Como tal, C ++ ha encontrado algunas soluciones bastante inteligentes para muchos problemas comunes (en todos los idiomas). Por mucho que a la gente le guste mirar hacia abajo en C ++, con frecuencia lo extraño cuando trabajo en C #. Hay una serie de técnicas y abstracciones de alto nivel que son más simples, más limpias y más elegantes en C ++. Entonces, desde una perspectiva de lenguaje puro, creo que vale la pena aprender C ++. (Y me gustaría que los diseñadores de Javas o C # se hubieran molestado en hacerlo, en lugar de basar sus idiomas en lo que puede describirse con más precisión como "C con clases".
Pero creo que lo que está tratando de entender es que aprender estos idiomas le dará una mejor comprensión de "lo que está pasando debajo del capó".
Puedo ver el punto en eso. C / C ++ le proporciona punteros que casi se pueden asignar directamente a las direcciones de memoria subyacentes. Aprender estos idiomas ciertamente te da una especie de intuición sobre lo que está sucediendo debajo. (Pero como siempre con la intuición, no siempre es correcto. Uno de los errores más comunes en C ++ es suponer que "los punteros son direcciones de memoria". No lo son. En muchos aspectos se comportan de manera similar, pero los punteros obedecen a muchos más. restricciones que pueden o no existir en el hardware real.)
Así que para estas cosas, ¿por qué no ir directamente a la fuente? Aprenda el ensamblaje, aprenda sobre la CPU en sí, aprenda sobre compiladores.
Todo lo anterior vale la pena aprender y te hará un mejor programador. Pero aprenda C ++ por el bien del lenguaje (no es hermoso, pero hay lecciones que aprender de él), y aprenda sobre todos los mecanismos subyacentes (compiladores, el hardware en el que está ejecutando, la CPU) al estudiarlos directamente. .
Pero para lo que sea que vayas, definitivamente diversifica. Debería aprender los idiomas en los que realmente trabaja, obviamente , pero no se detenga allí. Aprende algo más , casi sin importar lo que sea. Más idiomas, o una mejor comprensión de la infraestructura subyacente, te harán un mejor desarrollador.
Finalmente, no pienses en C / C ++ como el "cinturón negro". C ++ en particular puede ser uno de los lenguajes más difíciles de dominar, pero eso no significa que los que lo saben sean los mejores programadores. Lejos de ahi.
Por supuesto que realmente depende de donde quieras mejorar. Si vas a hacer algunos sistemas de programación, por ejemplo, entonces deberías. Sin embargo, si desea desarrollar en el frente de aplicaciones web, no se moleste. Para obtener más detalles sobre esto, consulte: ¿Qué sector de la industria del software utiliza c ++?
Sin embargo, lo primero que se debe recordar al comenzar a aprender: no existe un lenguaje como C / C ++.
Que podría. Hay algunos conceptos muy importantes que se presentan en tu cara, especialmente en C, con los que tienes que tratar.
Yo diría que dar un paso más y aprender asamblea. Nunca he programado profesionalmente en ningún lenguaje ensamblador, pero el tiempo que dediqué a trabajar en cada capítulo y ejercicio en Assembly Langauge para PC ha sido el que más dividendos ha pagado de mis estudios, la escuela o la escuela independiente. Sabrá lo que son un puntero y un desplazamiento, comprenderá mejor por qué es importante la codificación de caracteres, conocerá la pila y el montón, la administración de memoria, etc. Nunca podrá usar nada de eso directamente, pero Te hará mejor programador.
Sí, si te refieres a conocer en profundidad, no solo algunos conocimientos básicos. C ++ combina la proximidad con los elementos internos de la computadora con una gran flexibilidad, por lo que un conocimiento profundo de C ++ implica que usted comprende cómo funciona una computadora muy bien. Y este último sin duda te da una ventaja.
Sí. (mas o menos)
Cada vez que programa en un lenguaje manejado por la memoria, le permite al compilador hacer el trabajo por usted, y con el tiempo confía en cosas de las que tiene poco o ningún conocimiento del funcionamiento interno de.
En un lenguaje no administrado por memoria como C o C ++, debe dedicar tiempo a pensar dónde apuntará un puntero al final de un método, ya sea para pasar por referencia o devolver una variable, y otras cosas que lo hagan pensar sobre el Código que estás escribiendo de una manera mucho más objetiva.
La cuestión es que la capacidad de saber cosas como si usar un vector o un arrailista en java es el camino correcto que nunca se puede aprender hasta que comprenda los conceptos fundamentales detrás de muchas de las estructuras de datos que usa en el día a día. base.
Así que sí, aprender a usar C o C ++ lo convertirá en un mejor programador, pero si decide tomar este conocimiento y usarlo para hacer un mejor desarrollador, es su elección.
Saber C / C ++ te hace un desarrollador más útil. C / C ++ son bastante omnipresentes y la sintaxis de muchos otros lenguajes se deriva de ellos.
Nunca duele aprender C tampoco, porque realmente no oculta nada al desarrollador. Aprenderá sobre compilación, vinculación, bibliotecas, etc. en detalles sangrientos. Aprenderá sobre las llamadas de sistema sin formato y la arquitectura de la máquina; cosas que los lenguajes de nivel superior ocultan de ti con sus propias abstracciones de conceptos.
Aprender otro idioma lo suficientemente bien como para resolver problemas prácticos lo hará un mejor desarrollador simplemente porque ahora tiene una nueva herramienta que se puede aplicar para resolver algunos problemas mejor que otras herramientas. Más herramientas siempre es útil. Aprender las nuevas formas de resolver problemas en otro idioma consolidará aún más su conocimiento de conceptos, patrones de diseño, estructuras de datos, etc. ¡Solo puede ser algo bueno!
Saber el idioma no te hace un mejor desarrollador. Aplicar el idioma de manera correcta (la mayoría de las veces, evite abusar de los conceptos del lenguaje).
Usando el poder del lenguaje hace un mejor desarrollador.
Si tuviera que responder a su pregunta en una palabra, "SÍ". Es bueno dominar al menos un idioma, pero siempre es mejor aprender más de uno ... quién sabe qué pasará mañana.
En lo que respecta a la comprensión de la computadora, C ++ puede no ser muy útil, pero C ++ proporciona muchas opciones durante la programación.
Y sí, ¿aprenderlo te hace un mejor programador? Lo hace. Cada idioma es único en ciertos aspectos. Aprender más idiomas le ayuda a explorar la posibilidad de implementar la singularidad de un idioma en otro.
Siempre se recomienda ampliar su base de conocimientos. Y como a menudo lo afirma Joel Spolsky.
Su argumento es que es como conducir con un bastón y saber sobre la mecánica, codificar en C (o ensamblaje fácil de usar) lo ayuda a comprender lo que sucede debajo del capó.
Te sugiero que aprendas el lenguaje C. Esto te ayudará a aprender todo sobre programación de computadoras. Para mí, hay un buen libro disponible para que los programadores aprendan la programación en C, desde la programación hasta la administración de la memoria, los conceptos del sistema operativo y otras cosas.
http://www.cs.cf.ac.uk/Dave/C/
Eche un vistazo a este libro web para saber cuán poderoso es el idioma ...
Un lenguaje de programación es solo una herramienta. Para mejorar, debe conocer mejor sus herramientas, ya sea su herramienta C / C ++, un pincel o cualquier otra cosa.
Una de las cosas más importantes al diseñar aplicaciones es la cantidad de códigos de usuario / bibliotecas en torno al idioma, fragmentos de código, tutoriales y todo lo demás.
Dicho esto, C, aunque sea un idioma antiguo, es lo que Esperanto debería haber sido en idiomas humanos, el idioma que todos deberían saber :)
Por qué ? No es importante. Lo importante es que encontrarás C en todas partes.
Yo diría que cada nuevo lenguaje mejora sus habilidades de programación, por lo que aprender nuevos es siempre una buena idea. Sin embargo, me parece que aprender idiomas que pertenecen a otros paradigmas diferentes a los que actualmente estoy más acostumbrado es una manera sensata de convertir a un mejor programador. Por ejemplo, aprender prólogo me hizo entender verdaderamente la recursión por primera vez, smalltalk y ruby me ayudaron a entender la belleza de la tipografía dinámica, simplemente dejé de pensar y C me hizo darme cuenta de lo que estaba pasando detrás de las cortinas ...
Si estás pensando en aprender un nuevo idioma, te lo digo. C te ayudará a entender la asignación de memoria como nada más (a menos que vayas por cosas aún menos complejas como ensamblador), y C ++ te ayudará a amar cualquier otro idioma que puedas saber mucho más. ;)
¡La mejor de las suertes!