¿Te duele aprender bits de muchos lenguajes de programación?


37

Comencé mi carrera de programación con BASIC, durante el noveno grado. Aprendí un poco de BASIC escribiendo programas simples para sumar, restar e imprimir. Luego fui a la universidad y estudié Ingeniería Informática y Sistemas. En el primer año me enseñaron C, y tengo un buen dominio sobre él.

Luego aprendí C ++ en el segundo año. Simplemente me enseñó algunos conocimientos de OOP. Ahora estoy haciendo PHP (junto con HTML). No he dominado C ++, BASIC o PHP. Ahora estoy planeando pasar al desarrollo móvil. Pero siento que no he cubierto todo en los idiomas que aprendí.

¿Realmente importa?

Respuestas:


50

Todos estamos aprendiendo bits de lenguajes de programación. Solo consideraría que los implementadores del lenguaje son aquellos que tienen un 10 de 10 en el conocimiento de un idioma.

Aprender múltiples idiomas y paradigmas es la única forma de desarrollar un "gusto" por lo que le gusta y no le gusta. Si solo aprendió un idioma, ni siquiera sería capaz de decidir si realmente le gusta o no.

En realidad lo estás haciendo de la manera correcta. Podrá reutilizar los fundamentos más importantes que aprende en cada uno mientras se expone a diferentes sintaxis, bibliotecas y marcos.


16
Me gusta esta respuesta, excepto que es menos "lo que te gusta", y es más "la herramienta adecuada para el trabajo". Nadie debería usar el mismo lenguaje para resolver todos los problemas. Eso haría un mal desarrollador de software. Cada idioma y paradigmas tienen pros y contras.
user606723

1
Dado que los compiladores e intérpretes tienen errores, no creo que sea humanamente posible llegar a 10 para la mayoría de los idiomas.
jmoreno

66
No creo que incluso las personas que escriben compiladores de C ++ entiendan C ++. Individualmente, quiero decir. Obviamente colectivamente, tienen que entender de alguna manera todo el idioma, pero no creo que haya una sola persona en este planeta que lo entienda todo. De hecho, los miembros del comité generalmente son bastante claros sobre el hecho de que todos entienden solo su propia área de especialización. De manera similar en Java: Martin Odersky dijo recientemente que cree que solo hay 3 personas en el mundo que entienden los comodines. Y por el tono del correo electrónico, tuve la impresión de que no se incluía a sí mismo
Jörg W Mittag, el

2
en ese grupo, a pesar de que en realidad diseñó Java Generics (junto con Phil Wadler, por supuesto). Aunque, para ser justos, se agregaron comodines a su diseño sin su consentimiento, de hecho, en contra de su disenso expreso.
Jörg W Mittag

1
@brian, confía en mí, no tienes que saber el idioma para poder implementar su compilador. Puede traducir la especificación a un código a ciegas. Pero como resultado, aprenderá al menos algunos conceptos básicos del idioma, por eso es mi forma preferida de aprender los nuevos idiomas.
SK-logic

21

Si todavía estás en la universidad, aún no debería importar que no sientas que has cubierto todo en ninguno de los idiomas que conoces. Comprender las teorías fundamentales comunes detrás de estos idiomas es mucho más importante. Una vez que comprenda los conceptos básicos, puede aprender los detalles de otros idiomas cuando los necesite.


55
En mis primeros dos años, creo que aprendimos un nuevo idioma cada 3 a 4 semanas para acompañar el Pascal, que fue la base de la mayor parte de nuestro trabajo del proyecto (1982-85), algunos de los cuales fueron lenguajes funcionales. Parte del objetivo era tratar de asegurarnos de separar la "programación" de la "codificación"
Murph

12

Creo que lo más importante en la programación es comprender los diferentes paradigmas .

En su pregunta, mencionó la Programación Orientada a Objetos (OOP) . Si dominas este tema, deberías poder explicarlo usando solo pseudocódigo y esencialmente alguna representación de modelado gráfico (como los diagramas de clase UML).

Si decide usar Java, C ++ o C # (...) depende de usted o de la empresa para la que trabaja, pero lo realmente importante es comprender / reconocer los diferentes problemas y decidir el mejor modelo para resolverlos . Una forma muy importante de resolver problemas en la programación es utilizar los patrones de diseño que puede descubrir en este libro de referencia .

En cuanto a los lenguajes incrustados, creo que lo importante es comprender los diferentes problemas asociados con dichas tecnologías.

De manera metafórica, compararía esto con escribir un buen libro científico; lo importante es la teoría que expones, los problemas que logras resolver, etc. Si escribes el libro en inglés, en francés o en japonés, no es tan importante al final.

Dicho esto, también es importante conocer los detalles de un idioma en particular si desea especializarse en esa tecnología para explotarlo de manera muy eficiente.


2
+1 para los paradigmas. No es importante enfocarse en el azúcar sintáctico del lenguaje X o Y (por supuesto, lo necesita si usa el lenguaje X todos los días en el trabajo); lo que es útil es estudiar diferentes paradigmas porque, en mi humilde opinión, te ayudan a ser más abierto y creativo en la resolución de problemas.
sakisk

5

En mi opinión, no tiene mucho sentido cambiar el idioma con mucha frecuencia. Nunca entenderás ninguno de ellos. Especialmente algunos como C ++, donde algunas personas pasan una década escribiendo el lenguaje y todavía tienen su código como C.

Si no puede escribir las mejores prácticas en un idioma, no siga adelante, OMI. Eso significa que cubrir más de una pareja llevará muchos años, si no décadas.


5

Creo que no dolerá aprender un poco de muchos idiomas diferentes, pero al mismo tiempo debe aprender al menos uno o dos en profundidad.


3

He usado muchos lenguajes durante mi carrera, como AMOS Basic, Java, C ++, PHP, VB6, Delphi, etc. Hoy uso C #, JavaScript, Ruby y algunos Clojure en el trabajo, y también he jugado con Pyhton, Erlang, Lisp común y esquema.

Pero este otoño quería hacer un calendario especial de Navidad para mi blog, y decidí familiarizarme y resolver un problema particular en 24 idiomas adicionales. Esta fue una gran experiencia, aprendí mucho y recomiendo hacerlo una vez que tenga experiencia en programación.

Mi respuesta para usted es esta: aprenda un par de idiomas muy bien (deberían ser bastante diferentes), pero asegúrese de probar y familiarizarse con muchos.

Hoy es importante conocer tanto OOP como FP (programación funcional), y también debe sentirse cómodo en un lenguaje muy estático y muy dinámico.

PD: Mi blog está en noruego, pero si desea ver la lista de idiomas que cubrí , puede echar un vistazo aquí .


2

Aprendo lo que necesito aprender en un idioma en particular cuando necesito aprender algo nuevo. El "disparador" que me dice que necesito profundizar en un lenguaje es que un fragmento de código en particular se ve feo o torpe, parece imposible de mantener o es difícil de probar o comentar. A menudo, estos desencadenantes apuntan a mi falta de conocimiento de un idioma de programación particular, estilo, estructura de datos, etc.


2

Aprender múltiples lenguajes de programación es una buena práctica y es necesaria hoy en día; tantas veces no siempre puedes usar tu idioma de elección para todo.

Los beneficios de ver cómo otros idiomas hacen las cosas te ayudarán como programador; incluso si ocasionalmente cuando saltas, cometes errores sintácticos (por ejemplo, está buscando desigualdad !=, ~=o <>). Sin embargo, debe tener cuidado de aprender más que la sintaxis de un idioma, sino también las mejores prácticas dentro de un idioma, así como las buenas habilidades generales de ingeniería de software. Si aprendió C y luego aprendió C ++, debe asegurarse de que al escribir código C ++ esté en el estilo del código C ++ (en lugar de solo C con algunas palabras clave nuevas. Es decir, tiene varias clases / objetos, prefiera referencias / punteros inteligentes sobre punteros en bruto, etc.


1
No me hagas comenzar con If x <b> = </b> 5 Entonces. Tengo que verificar todo mi código C durante aproximadamente una semana después de mantener todo lo relacionado con BASIC.
user606723

2

¡Es bueno estudiar lenguajes de diferentes paradigmas de programación al menos! Lenguaje de procedimiento, declarativo, funcional, orientado a objetos, prototípico y dinámico: cada clase de programación ofrece su propio conocimiento sobre cómo organizar y resolver un problema. Eventualmente descubres uno o más paradigmas con los que eres más productivo y feliz y los usas.


2

Definitivamente no. Por supuesto, también debes asegurarte de estar aprendiendo diferentes estilos de idiomas. Aprender tanto C # como Java no expandirá su mente de manera importante, pero aprender Java y Haskell sí lo hará.

Consulte el Libro Siete idiomas en siete semanas , que lo guiará a través de una introducción a Ruby, IO, Scala, Erlang, Prolog, Clojure y Haskell. Si te gustan los idiomas, te encantará ese libro.


1
Aprender C # después de Java puede expandir tu mente gracias a su programación funcional (y otras características que le faltan a Java). Pero si es solo para aprender, Haskell probablemente será mucho mejor, debido a lo puramente funcional que es.
svick

1

Bueno, C y C ++ no te harán ningún daño en la programación móvil. Puede usar ambos con Cocoa Touch o Android NDK, y a veces lo necesita para el rendimiento. Además, a veces lo desea porque desea escribir código que se ejecuta en varias plataformas. En ese caso, suponiendo que no solo esté utilizando un marco de terceros, puede escribir su aplicación en C / C ++ y compilar en contenedores específicos de la plataforma para los elementos nativos requeridos (por ejemplo, la única forma de obtener un contexto OpenGL en iPhone es usando la clase nativa CAEAGLLayer).

Por lo tanto, es como cuantas más herramientas tenga en el cajón, más opciones tendrá para hacer el trabajo. Descubrirá que tiene preferencia por algunos, ya que se especializa en varios tipos de tareas. Si solo haces cosas de UI, C podría no ser tu favorito de todos los tiempos. Me preocuparía más sobre el tipo de cosas que quería hacer, y luego aprendería cualquier herramienta que necesitaba para hacerlas.


1

En realidad, es tan útil como aprender un poco de francés, español, inglés, árabe, hindi y chino sin conocer a ninguno de ellos.


66
No tengo idea de qué estabas tratando de decir con eso.
svick

Te das cuenta de que la mayoría de nosotros no conoce "bien" ni siquiera nuestros idiomas nativos, ¿verdad?
Spidey

1

Por el contrario, creo que duele cuando no puedo / no puedo aprender un nuevo lenguaje de programación. Puede ser por falta de tiempo u otras razones. Por lo que veo, los programadores / desarrolladores de software están encantados de desafiar los idiomas, poner mejores cosas / productos, y cuando ves que siempre estás haciendo lo mismo, no te sientes bien. Por lo tanto, desea un nuevo desafío, un nuevo idioma, algo nuevo que aprender y poner más productos en él.

Así que creo que me emociona seguir nuevos lenguajes, nuevas bibliotecas, nuevos enfoques, nuevas tecnologías. Pero no tengo tiempo para obtenerlos todos, y la gente no siempre puede profundizar lo suficiente. Entonces duele no aprender más; pero no hace daño aprender más.


0

Estoy de acuerdo con Brian, FrustratedWithFormsDesign y SRKX, pero me gustaría agregar que durante la universidad esto, ampliar su conocimiento con múltiples lenguajes y paradigmas de programación, es la forma deseable de convertirse en un buen profesional.

Es realmente improbable que salgas de la universidad como programador formado. La programación es una tarea difícil y necesitará años en la industria trabajando junto a buenos programadores, asistiendo a buenos programas de capacitación y reuniones comunitarias, y sobre todo, tendrá que enfrentar los problemas de la artesanía y fracasar mucho, hasta que aprenda a dominar eso.

Aprender múltiples paradigmas, múltiples idiomas, resolver los múltiples problemas de nuestra área, le brindará una buena base de apoyo para aprender el oficio por su cuenta, diariamente, mientras actúa como profesional en la industria.

Puede asistir a una clase de compiladores, pero no saldrá como diseñador de idiomas, creador o incluso como desarrollador de compiladores. Obtendrá los pasos, los procesos y los problemas y las soluciones básicas, y eso le dará la ventaja para adaptar este conocimiento a una amplia gama de problemas.


0

Respuesta corta: no.

Respuesta larga: gran parte del trabajo de un programador o ingeniero de software o diseñador es independiente de un lenguaje específico pero muy dependiente de una determinada metodología. Por ejemplo, la Programación Orientada a Objetos tiene mucho que ver con dónde existen las cosas en la memoria y en el tiempo de ejecución, qué tan accesibles son y qué tan disponibles están para su uso posterior (herencia y encapsulación). Las implementaciones difieren, como que Java tenga un Objeto de clase heredado de nivel superior, le guste o no y C ++ no tenga ninguno que no especifique.

Muchos idiomas comparten características (y muchos divergen). La sintaxis difiere, por supuesto, y es más complicada cuando se comparan paradigmas completamente diferentes como imperativo versus funcional. Pero el procesamiento de cadenas es en gran medida el mismo donde quiera que vaya, una vez que obtenga pequeñas preguntas sobre sintaxis, índice y mutabilidad. Cualquier lenguaje con escritura estática generalmente tiene algún método de conversión y coerción, pero cómo y cuándo puede hacerlo depende del diseñador del lenguaje.

El lenguaje es la herramienta. Solo estás poniendo más herramientas en tu cinturón. Pero la herramienta es tan buena como el artesano que la maneja.

Ahora, cuánto aprendes es una elección personal. Nunca aprendería un idioma por aprender uno nuevo. Cualquier opción para aprender un nuevo idioma se debe a un requisito del curso (tuvo que elegir js, php y R para una sola clase el año pasado), un requisito del proyecto existente (si el 90% del trabajo se realiza en perl 6 antes te contratan, también lo es el 10% restante después) o un beneficio específico de la aplicación (R sobre digamos Java combinado con alguna biblioteca azucarada para análisis estadístico).

Dicho esto, quieres aprender qué hay disponible y disponible. Mi universidad enseñó un curso sobre este tema, Conceptos del lenguaje de programación . Fue un curso general amplio, no una matemática rigurosa o una codificación relacionada, que cubrió los conceptos básicos de lo que podría considerarse práctico en lugar de teórico de la informática. Fue un gran curso y desearía que fuera algo ofrecido en el 1º y 2º año en lugar del 3º y 4º. El texto era Conceptos de lenguajes de programación . No digo que tengas que salir a leer este libro, pero eso ciertamente ampliaría tus horizontes.


0

Bueno, la forma en que lo veo es que no tienes que aprender todos y cada uno de los idiomas. Pero intente aprender características muy básicas que también serán necesarias en otros idiomas.
Por ejemplo, los conceptos OOPS son necesarios en todos los idiomas, ya sea Java , PHP o cualquier otro lenguaje.
Los conceptos de asignación de memoria son bastante similares en muchos lenguajes de programación. Este tipo de temas nunca debes perderte.
Todos y cada uno de los idiomas tienen gramática y reglas, lo mismo se aplica para los lenguajes de programación; Dennis Ritchie mismo aceptó ese hecho. Entonces uno debe aprender la gramática de ese idioma.
Pero lo que veo es que tienes que aprender los factores no comunes entre dos lenguajes de programación. Le permitirán identificar qué idioma representa qué. C ++ es todo OOP (Programación Orientada a Objetos) básica, por lo que una vez que aprenda los conceptos de OOP , aprenderá la gramática que verá también en PHP y Java.
Mi flujo de aprendizaje fue:
Visual Basic 5 (parcial) -> HTML 2.0 (parcial) -> C (parcial) -> CPP (parcial) -> Java (parcial)
y luego aprendí C Language nuevamente seguido de C ++ seguido de JAVA ( completar esta vez) y luego me mudé a Android ya que estaba familiarizado con Java y XML(parcial) y lo aprendí en el tiempo medio. El primer intento me enseñó menos, pero en el segundo intento asegúrese de aprender todo lo que le ayudará la próxima vez.


esta publicación es bastante difícil de leer (muro de texto). ¿Te importaría editarlo en una mejor forma?
mosquito
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.