Tal vez soy solo yo, pero como estudiante actual de CS ya me he encontrado con muchas preguntas en este sitio y en otros lugares sobre no solo "¿Qué lenguaje debo usar para x?" pero también "¿Alguien todavía usa el lenguaje Y?" Mi primera clase de CS se enseñó en Scheme, que, si no me equivoco, no se usa ampliamente (al menos en comparación con lenguajes como Java, PHP, Python, etc.). Muchos de mis compañeros de clase se opusieron a la idea de tener que aprender un idioma que nunca tendrían que volver a usar, pero no entiendo de dónde viene tanto miedo a aprender idiomas menos populares. No, no puedo usar Scheme en ningún trabajo que obtengo, pero ciertamente no me arrepiento de haber aprendido a usarlo (aunque sea de manera muy principiante, no muy profunda en ese semestre). Estoy tomando una clase de motores de búsqueda este semestre, lo cual se hace en Perl y nuevamente veo compañeros quejándose de la elección del idioma. Puedo entender que tengo un idioma favorito y que no me gustan los demás, pero ¿por qué algunos se molestan por aprenderlo en primer lugar? ¿Realmente puedes aprender el idioma "equivocado"? ¿Acaso aprender algo como Scheme o Haskell no es un buen ejercicio mental, y nada útil, al menos, para exponerse a diferentes formas de resolver problemas?
28
Respuestas:
El objetivo de un título de CS no es enseñarle C # y Java, puede aprenderlos por su cuenta. Es para enseñarle sobre programación y computación. El lenguaje es solo un detalle. En el transcurso de una carrera en programación utilizará muchos idiomas. Hoy puede ser Java o C #, pero dentro de 10 o 15 años podría ser Erlang o algo que aún no se ha inventado. Aprender diferentes estilos de programación y diferentes formas de atacar un problema es mucho más importante que aprender cualquier idioma.
fuente
Porque tu primer idioma dará forma a cómo piensas, hasta que aprendas lo contrario.
Si usted es analfabeto computacional (programador por primera vez), y el primer idioma que aprende es demasiado "básico", es posible que no conozca conceptos de orden superior como orientación a objetos, despacho múltiple, herencia, funciones de primera clase, meta programación, etc.
El primer idioma que aprende generalmente está vinculado a su primera incursión en el pensamiento computacional. Si alguien te dice, Jimmy, que el mundo que tienes delante consiste en símbolos A, B y C, todo tu pensamiento estará en términos de A, B y C. Hasta que un día, un nerd elegante se burla de ti por no saber X , Y, y Z conceptos. No hay forma de que supieras esto sabiendo solo ABC.
Las personas que están más preocupadas por el primer idioma de alguien son probablemente programadores ilustrados que han luchado en la oscuridad. Oh, ahora sé qué es una función de primera clase. ¡Ojalá supiera sobre la inyección de herencia y dependencia hace dos años!
Su primer idioma no es tan importante como su actitud con respecto a los idiomas posteriores. Si puede ver muy por delante de usted para saber que hay un mundo más allá de BASIC / C / Perl / PHP / etc., entonces está muy por delante del juego. Es por eso que muchas personas son fanáticas de los lenguajes funcionales, ya que muchos lenguajes desarrollados activamente están convergiendo hacia ellos.
fuente
Cuando estaba en la universidad, conocía a muchas personas que decidieron especializarse en economía no porque fuera algo en lo que estuvieran particularmente interesados o apasionados, sino porque pensaron que les conseguiría un buen trabajo.
Me especialicé en Estudios de Asia Oriental porque las clases que tomé como efecto secundario de mi interés inicial en la literatura me engancharon. Fui a Alemania porque quería hacer un programa de intercambio, donde pasé la mayor parte de mi tiempo en programas de japonología y sinología. Estudié lo que más me interesaba. Decidí no usar la universidad para estudiar cosas relacionadas con la computadora, ya que había pirateado bastante durante mi infancia, pero pasé un tiempo programando y entendiendo Internet, y eventualmente, quizás de manera improbable. , Conseguí un buen trabajo que logró combinar todos esos intereses.
La diferencia es entre el profesional y alguien que aprende por aprender. The Careerist está preocupado de que hayan estudiado The Wrong Thing y de que se arrepientan porque no será lo correcto para conseguirme un trabajo. La persona que aprende por aprender se da cuenta de que tiene 4 años para dedicar tiempo a explorar todo tipo de campos con presiones relativamente manejables; el profesional piensa que el trabajo de la escuela es enseñarles algo. El alumno resuelve las cosas cuando golpea un territorio desconocido y tiene una mejor oportunidad de encontrar el trabajo adecuado para ellos. The Careerist termina siendo un contador de segunda categoría en una empresa de tercer nivel, paga las cuentas y resiente a su jefe.
Sí, estos son arquetipos, y todos tienen que equilibrar el pragmatismo con sus pasiones, pero esa es la diferencia esencial. De acuerdo, alguien con la estética del programador también puede hacer la pregunta, pero más en el contexto de "cuál será el uso menos derrochador de mi tiempo". Pero supongo que es el impulso profesional hacer esa pregunta, porque el profesional tiene mucho más miedo de cometer un error que el alumno, y el alumno generalmente es un mejor programador porque el alumno no teme los errores. El alumno, como el programador, acepta el fracaso en la búsqueda de la habilidad.
fuente
Sí, aprender lenguajes funcionales como Scheme y Haskell es bueno como introducción a la programación funcional. En lo que respecta a tus compañeros de clase quejándose de Perl, aunque Perl no es tan popular como solía ser, sin duda sigue siendo un idioma muy utilizado en los negocios.
Puedo entender a tus compañeros de clase que desean aprender lenguajes prácticos utilizados en el mundo real, pero creo que pierden el punto de que una vez que eres un programador experimentado y has estado expuesto a varios paradigmas de programación, aprender nuevos idiomas es solo cuestión de aprender La nueva sintaxis. Por lo tanto, siempre que tenga exposición a los conceptos, puede "especializarse" en cualquier idioma que su eventual empleador prefiera sin mucha dificultad.
fuente
Tal vez porque las personas han sido influenciadas por declaraciones como el clásico troleo de Edsger Dijkstra, "Es prácticamente imposible enseñar una buena programación a los estudiantes que han tenido una exposición previa a BASIC: como programadores potenciales, son mutilados mentalmente más allá de la esperanza de regeneración". ( enlace )
Conduce al miedo de sufrir daño cerebral permanente si aprende el lenguaje "incorrecto". Su ejemplo de Perl no es sorprendente, ya que Perl es uno de esos lenguajes que a menudo invoca críticas como esta de sus detractores.
fuente
Su primer idioma debe centrarse en conceptos, no en sintaxis o modismos. Usando eso como una guía:
fuente
Pregúnteles a sus compañeros cómo saben que un idioma está "mal" si no lo han usado. Solo puede descubrir lo que le gusta utilizando una amplia variedad de idiomas.
Sin conocerlos, no puedo decir con certeza por qué se sentirían así. Quizás son flojos. Tal vez hayan usado el idioma antes y no les haya gustado. Quizás tienen miedo de probar otro idioma. Quién sabe. Lo que sí sé es que, como estudiante de CS, investigador y después de haber trabajado en la industria, conocer una variedad de idiomas, bueno, es una gran ventaja y nunca sabes lo que vas a usar o no. Ejemplo: cuando estaba aprendiendo C por primera vez, mi maestro nos introdujo a los scripts de shell y las utilidades de línea de comandos como
grep
yawk
. Mis amigos no se molestaron en aprenderlos a un nivel de competencia. Ahora los uso en el trabajo todos los días.Perl es muy poderoso y si sabes cómo usarlo, puede hacerte la vida mucho más fácil. También es similar a Python y Python se usa mucho en uno de los principales reclutadores de estudiantes de CS: Google. Tus compañeros de clase deberían estar comiendo esto. FWIW, sé que Perl y Python a un nivel intermedio (no es un principiante pero no un experto).
¿Joven y vanidoso? Yo también fui así. Pero mi "molestia" estaba más en el ámbito de las matemáticas. Entonces, a partir de esa experiencia, apostaría a que están nerviosos porque no les gusta aprender cosas nuevas o que les resulta difícil aprender nuevos idiomas. (Pero entonces, cualquier cosa que valga la pena saber no va a caer en tu regazo, digo)
A la primera oración: No, pero definitivamente puedes aprender idiomas que preferirías no tener + tos + Lisp + tos + =)
Al resto: ¡sí! Debes aprender tantos idiomas como sea posible para descubrir lo que te gusta y ampliar tus horizontes. No es necesario dominarlos a todos, pero tener un conocimiento práctico siempre es útil. Usted nunca se sabe cuando un idioma que pensé que sería una pérdida de tiempo para aprender es muy útil.
fuente
Debido a que la contratación de programadores es un proceso tan arbitrario y caprichoso, el simple hecho es que si elige la tecnología incorrecta, es posible que siga el camino del dodo
En la portada en cualquier momento, verá un fervor religioso cercano en creencias tales como:
La única constante a través de todo esto es que el 99% de las compañías quieren que tengas X años de experiencia con la tecnología Y ... Y dado que una persona solo tiene tantos ciclos disponibles, lo que gastan esos ciclos es muy importante.
fuente
Creo que el miedo a elegir el lenguaje "incorrecto" para aprender se debe principalmente a la falta de información y falta de orientación , como por ejemplo:
fuente
Estamos expuestos a más opiniones.
En comparación con la forma en que se hicieron las cosas en el pasado, hay más dudas acerca de cómo estamos gastando nuestro tiempo porque estamos expuestos a más opiniones: todos tienen su opinión sobre cuál debería ser el primer lenguaje de programación y dado que es Un tema tan complicado, cualquiera puede justificar cualquier cosa .
Debido a nuestro estilo de vida rápido, todos tienen un miedo innato a perder el tiempo. El miedo acentuado de aprender el idioma equivocado es simplemente el resultado de que las personas se exponen fácilmente a una multitud de opiniones.
fuente
Es la aversión general de aprender algo que tiene una utilidad cuestionable. Puedo ver que la picadura aquí es aún peor, ya que esta es la clase que la gente quiere tomar y todavía están aprendiendo algo que piensan que es inútil. Sé que si fuera a hacer collage me gustaría aprender algo que pueda usar en el mundo real.
La única parte en la que podría estar en desacuerdo con esas otras personas es cuando un idioma se usa mucho y simplemente no quieren salir de su burbuja para aprenderlo. Solo entonces la queja no tiene sentido.
fuente
¿Por qué es "miedo"? Yo lo llamaría animosidad de haber sido alimentado a la fuerza con algo que no desea o no siente que es importante. No hay lenguaje incorrecto, pero tenemos un tiempo limitado para concentrarnos en las cosas. Tenía que hacer mis clases de CS con Java y no estaba contento con eso. No porque temiera que Java fuera el lenguaje equivocado, sino que ese no era el enfoque de mi carrera.
Ahora Java es útil ¿verdad? LOL Todos aprenden Java. Eso es en lo que no quieres competir. Tu currículum estará en una pila de 1000 con el título Graduado de CS reciente que conoce Java. En realidad, probablemente sea mejor utilizar el esquema de aprendizaje inteligente, ya que esa es la señal secreta de que fuiste a una universidad de élite y no a un pequeño colegio comunitario.
También diría que este tipo de animosidad es mucho más amplia que la CS en general, pero indicativa de la educación superior en general. Estoy seguro de que el instructor eligió a Perl porque conoce a Perl y puede calificarlo fácilmente, y teme aprender idiomas más nuevos que los estudiantes preferirían aprender. Creo que es tu propia educación y deberías poder trazar las tecnologías que consideres necesarias para tu propio éxito.
(PS MIT renunció a Schema y cambió a Python)
fuente
El tiempo es el bien más raro de todos, una vez que salgas al mundo real, y nadie quiere perder el tiempo en habilidades que no les darán ningún beneficio real.
Dicho esto, no creo que haya un lenguaje 'incorrecto' para aprender, pero desearía haber descubierto Ruby hace años en lugar de luchar para hacer cosas avanzadas en PHP ...
fuente