Escucho sobre C, C ++, Java todos los días cuando las personas comienzan a hablar de informática, pero en mi primera clase de informática se nos pide que escribamos en Scheme (DrRacket).
¿Porqué es eso?
¿Qué diferencias hará esto para mi futura comprensión de la programación?
ACTUALIZACIÓN: He terminado mi primer mandato, pero no he terminado por completo con Scheme. En mi segundo mandato (que es ahora) ingresamos a la programación en C. Al principio fue frustrante aprender punteros, pero ahora me siento mucho mejor.
No hay mucho más que decir que eso. Estoy tratando de enseñarme Java (¿o C ++?) Para la parte de OOP que me falta. Hasta ahora, todavía me gusta más la programación funcional. Lambda es simplemente fascinante. :)
Respuestas:
¡Suena como una gran escuela! Los dialectos de Lisp siguen el paradigma matemático de algoritmos mucho más de cerca. Forzan a los programadores a aprender la recursividad y el estilo funcional. Esta es una experiencia excelente. Su escuela está en las filas con MIT, que todavía usa a Abelson y Sussman para el CS 6.001 requerido.
Puede encontrar este artículo alentador y útil para comprender el problema.
fuente
Nadie espera que, como estudiante de primer año, sea lo suficientemente competente en cualquier idioma para obtener un trabajo real, entonces, ¿por qué no comenzar con uno que sea fácil de aprender? Esperar que los principiantes aprendan programación usando un lenguaje profesional en un IDE profesional es como darle un bisturí a un estudiante de medicina de primer año y hacer que trabajen en cuerpos vivos.
No te preocupes eventualmente aprenderá Java / C / C ++, probablemente comenzando su segundo año. Si comenzó a aprender Java 6 ahora, para cuando se gradúe, Java 8 ya no estará disponible. O habrá sido reemplazado por Python. O algún otro idioma que aún no se haya inventado pero que asalte la industria. Es mejor posponer el aprendizaje de las cosas "populares" el mayor tiempo posible para que no sea obsoleto cuando salga de la fuerza laboral.
Scheme / Racket lo ayudará a enfocarse en los conceptos importantes: diseño de algoritmos, estructuras de datos y manipulación de información. Ya sabes, las cosas que son comunes a todos los idiomas.
fuente
Felicitaciones, ahora te estás convirtiendo en el equivalente de un vegano en el mundo de la informática, y en dos años no podrás terminar ninguna discusión sin informar a la gente sobre el fundamento moral más elevado en el que te pones de pie. ;)
De todos modos, conseguiste una muy buena escuela. Las escuelas que no son azotadas por la industria son buenas.
Como alguien más dijo, te enseñan la ciencia, de la cual derivas el oficio .
Muchas granjas de monos de código malos le enseñan el oficio, y luego puede llegar a inferir la ciencia de él, pero no está garantizado. (y puede terminar con ideas erróneas bastante raras al respecto)
De todos modos, como miembro honrado de la multitud funcional, cuando salgas de allí, siempre te sentirás incomprendido y subestimado .
Lo cual, admitámoslo, para el asistente informático promedio no es nada nuevo.
Ahora tiene un alto riesgo de:
Probablemente también le gustará el código abierto, pero nunca encontrará suficientes colaboradores para sus proyectos funcionales.
fuente
Eso es un poco como preguntar cómo leer a Shakespeare te ayudará a escribir trabajos académicos. La programación (en cualquier idioma) es solo un medio para expresar sus ideas en forma ejecutable. La informática proporciona los bloques de construcción conceptuales que le darán algo interesante que decir. La sintaxis del esquema es relativamente simple, por lo que puede obtener ideas interesantes rápidamente y sin encontrarse con muchos errores de compilación, bibliotecas estándar, etc.
Presta mucha atención en clase: aprenderás muchas cosas interesantes este semestre.
fuente
Parece que eres muy nuevo en la programación y no tienes experiencia previa. Aquí hay algunas aclaraciones:
¿Por qué Scheme y no C / C ++ / Java ...?
Cuando el aprendizaje de un lenguaje de programación (una analogía se podría hacer con el idioma Inglés) se aprende la sintaxis que debe seguir para que su código es gramaticalmente correcta. Sin embargo, un lenguaje no le enseñará la lógica detrás de la resolución de problemas. Para aprender esa lógica, aprendes diferentes paradigmas de programación .
Cada idioma puede implementar (más o menos exactamente) uno o más paradigmas. Un paradigma es una forma de estructurar su lógica, y el paradigma implementado por Scheme se llama Programación Funcional (FP).
Entonces, la verdadera pregunta que hace es: ¿Por qué FP?
Como mencionó, C, C ++ y Java (que no implementan FP) son mucho más populares. De hecho, (y por varias razones, todos tienen su opinión) FP no es muy popular en la industria.
Por otro lado, FP es muy apreciada en los círculos académicos. Está más cerca del enfoque matemático común, se enfoca más en la capacidad de prueba y la optimización de algoritmos, y la mayoría de la gente estará de acuerdo en que lo convertiría en un mejor programador en general.
Es similar a las escuelas que enseñan latín para estudiar literatura inglesa.
fuente
Se supone que debes aprender cómo se realiza la programación y cuáles son los conceptos básicos. Los lenguajes cotidianos utilizados en la mayoría de las empresas pueden ser adecuados para producir el software que se necesita hoy en día, pero no son necesariamente los más adecuados para enseñarle las bases de la programación.
Una vez que haya comprendido los conceptos, es fácil aplicarlos a otros idiomas.
fuente
Si está aprendiendo con DrRacket, apuesto a que también está utilizando el plan de estudios Cómo diseñar programas.
Esto es lo que uno de los autores (ciertamente sesgados) de HtDP tiene que decir acerca de cómo la enseñanza de Scheme ha preparado a los estudiantes de pregrado en la Northeastern University para el programa de educación cooperativa ("cooperativo": estudiantes alternan semestres de estudio académico con semestres de tiempo completo empleo).
Editar: para aquellos muy interesados en lo racional detrás del plan de estudios, aquí está la explicación del arquitecto principal: http://www.youtube.com/watch?v=m3be1PHW5X0
fuente
Mi escuela comenzó con Scheme también. Una razón que se mencionó fue que esto ayudó a nivelar el campo de juego. La mayoría de las ciencias comp. De primer año pueden tener una exposición parcial o mucho mayor a idiomas más comunes. Era menos probable que cualquier persona tuviera mucho conocimiento de Scheme.
fuente
En realidad, como Lisp (el esquema es un dialecto) es la Gran Dama de los lenguajes funcionales (piense en F #, Groovy, Clojure, Haskell, etc.), esta capacitación tampoco lo deja en ningún tipo de desventaja comercial, ya que esta es la mejor tema en el bloque de desarrollo en este momento.
fuente
Scheme lo ayudará a mejorar y pensar de la manera adecuada para usar lenguajes de programación funcionales. Scala, por ejemplo, es un híbrido funcional / OO que es bastante brillante, aunque un poco denso. Sin embargo, idiomas como este marcan el futuro, con suerte.
Sin embargo, los lenguajes tipo Lisp tienen una pureza y simplicidad en su diseño que los hace un poco más fáciles de enseñar. Sin embargo, el buen beneficio es que después te resultará mucho más fácil aprender algo como Scala.
fuente
Completamos Scheme en la primera y primera mitad del segundo semestre. No fue hasta que empezamos a trabajar con C que comencé a darme cuenta del poder de Scheme.
En cuanto a su pregunta, por qué se elige Scheme: la respuesta es que es uno de los idiomas más simples y le permite hacer mucho (especialmente cuando comenzamos a jugar con listas perezosas más adelante). Por otra parte:
fuente