¿Por qué Scheme es mi primer idioma en la universidad?

79

Escucho sobre C, C ++, Java todos los días cada vez que la gente comienza a hablar de informática, pero en mi primera clase de informática, se nos pide que escribamos en Scheme (DrRacket).

¿Por qué es eso?

¿Qué diferencias hará esto para mi futura comprensión de la programación?

ACTUALIZACIÓN: he terminado mi primer término, pero no lo hice completamente con Scheme. En mi segundo término (que es ahora) llegamos a la programación en C. Al principio se sintió frustrado al aprender punteros, pero ahora me siento mucho mejor.

No hay mucho más que decir que eso. Estoy tratando de enseñarme a mí mismo Java (o C ++?) Para la parte OOP que me estoy perdiendo. Hasta ahora, todavía me gusta más la programación funcional. Lambda es simplemente fascinante. :)

    
pregunta Erica Xu 20.10.2011 - 05:29

11 respuestas

89

¡Suena como una gran escuela! Los dialectos Lisp siguen el paradigma matemático de los algoritmos mucho más de cerca. Obligan a los programadores a aprender la recursividad y el estilo funcional. Esta es una excelente experiencia. Su escuela está en los rangos con MIT, que todavía utiliza Abelson y Sussman para el CS 6.001.

Puede encontrar este artículo alentador y útil para entender el problema.

    
respondido por el Jonathan Henson 20.10.2011 - 05:39
36

Nadie espera que, como estudiante de primer año, sea lo suficientemente competente en el lenguaje cualquier para obtener un trabajo real, así que, ¿por qué no comenzar con uno que sea fácil de aprender? Esperar que los principiantes aprendan a programar usando un lenguaje profesional en un IDE profesional es como dar un escalpelo 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 a partir de su segundo año. Si comenzó a aprender Java 6 ahora, cuando se gradúe, Java 8 estará fuera. O habrá sido reemplazado por Python. O algún otro lenguaje que aún no se ha inventado pero que asola a la industria. Es mejor posponer el aprendizaje de las cosas "populares" el mayor tiempo posible para que no quede obsoleto cuando ingresas a la fuerza laboral.

Scheme / Racket te ayudará a centrarte en los conceptos importantes: diseño de algoritmos, estructuras de datos y manipulación de información. Ya sabes, lo que es común a todos los idiomas.

    
respondido por el Barry Brown 20.10.2011 - 06:17
34

Enhorabuena, ahora se está convirtiendo en el equivalente a un vegano en el mundo informático, y en dos años no podrá terminar ningún debate sin informar a las personas sobre el < fuerte> mayor base moral en la que te levantas. ;)

De todos modos conseguiste una muy buena escuela. Las escuelas que no son azotadas por la industria son buenas.
Como dijo alguien más, te enseñan la ciencia, de la que derivas el oficio .

Muchos code-monkey-farms malos te enseñan el oficio, y luego puedes deducir de ello la ciencia, pero no está garantizado. (y puedes terminar con ideas muy extrañas sobre esto)

De todos modos, como miembro honrado de la multitud funcional, cuando salga de allí, siempre se sentirá malentendido y debajo de apreciado .

Lo cual, admitámoslo, para el ordenador promedio no es nada nuevo.

Ahora estás en un alto riesgo de:

  • tratando de terminar en una carrera académica ,
  • embarcarse en la búsqueda de un PHD ,
  • ... emacs .

Es probable que también te guste el código abierto, pero nunca encontrarás suficientes colaboradores para tus proyectos funcionales.

    
respondido por el ZJR 20.10.2011 - 14:45
22
  

¿Qué diferencias hará esto para mi futura comprensión de la programación?

Es un poco como preguntar cómo leer Shakespeare te ayudará a escribir trabajos de trimestre. La programación (en cualquier idioma) es solo un medio para expresar sus ideas en forma ejecutable. La ciencia de la computación proporciona los bloques de construcción conceptuales que le darán algo interesante que decir. La sintaxis de los esquemas 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.

Preste mucha atención en la clase: aprenderá muchas cosas interesantes este semestre.

    
respondido por el Caleb 20.10.2011 - 07:00
13

Parece que eres muy nuevo en la programación y no tienes experiencia previa. Así que aquí hay algunas aclaraciones:

¿Por qué Scheme y no C / C ++ / Java ...?

Al aprender un lenguaje de programación (se podría hacer una analogía con el idioma inglés), aprendes la sintaxis que debes seguir para que tu código sea gramaticalmente correcto. Sin embargo, un lenguaje no le enseñará la lógica detrás de resolver problemas. Para aprender esa lógica, aprendes diferentes paradigmas de programación .

Cada idioma puede implementar (con mayor o menor precisión) 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 está haciendo es: ¿Por qué FP?

Como mencionaste, C, C ++ y Java (que no implementan FP) son mucho más populares. En realidad, (y por varias razones, todos tienen su opinión), FP no es muy popular en la industria.

Por otro lado, la FP es muy apreciada en los círculos académicos. Está más cerca del enfoque matemático común, se centra más en la capacidad de prueba y la optimización de los algoritmos, y la mayoría de las personas estarán 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 en inglés.

    
respondido por el rahmu 20.10.2011 - 13:06
10

Se supone que debes aprender cómo se realiza la programación y cuáles son los conceptos básicos. Los idiomas 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 necesariamente son los más adecuados para enseñar los aspectos básicos de la programación.

Una vez que haya comprendido los conceptos, es fácil aplicarlos a otros idiomas.

    
respondido por el perdian 20.10.2011 - 09:21
9

Si estás aprendiendo con DrRacket, apuesto a que también estás utilizando el plan de estudios Cómo diseñar programas.

Esto es lo que tiene que decir uno de los autores (admitidos sesgados) de HtDP sobre la forma en que Teach Scheme ha preparado a los estudiantes universitarios en la Northeastern University para el programa de educación cooperativa ("cooperativa": los estudiantes alternan semestres de estudios académicos con semestres de empleo a tiempo completo).

  

Antes de mi llegada, Northeastern había estado usando un plan de estudios estándar   Durante dos décadas: tres términos del lenguaje actualmente de moda.   (Pascal, C ++, Java), usando un conjunto de ejercicios extremadamente ricos en gráficos   Entrelazadas con lecciones sobre aplicaciones prácticas. El curriculum fue   ampliamente publicado en SIGCSE y comunidades relacionadas, pero no   trabajo. A la altura de la burbuja web, solo alrededor de un tercio de la   los estudiantes consiguieron cooperativas de programación; la mayoría de los otros terminaron como "técnicos" como   se llamaban a sí mismos: mover computadoras, ejecutar scripts, configurar   enrutadores y redes, etc. Y toda esta educación cuesta $ 150,000   matrícula.

     

Después de un año en Northeastern, nuestro decano me pidió que me encargara de la primera   curso. La primera instancia fue un éxito, contrariamente a las predicciones de   algunos profesores locales. A pesar de que había sido considerado un juicio, nosotros   Cambiado al TeachScheme! plan de estudios de forma permanente; el decano   sugirió que diseñara un curso puente para conectar el curso HtDP a   el resto del currículum; esto comenzó mi colaboración en HtDC con   Viera Proulx. Vea la posdata a continuación. Dentro de un par de años, yo   comenzó a escuchar de nuestra facultad cooperativa que la parte de la programación   Las posiciones estaban subiendo. Para 2007, la última vez que estuve involucrado con   Por supuesto, me dijeron que la proporción de programación en la primera cooperativa   Subió a dos tercios y más. Mientras tanto, todo TeachScheme!   Los cursos han sido impartidos por numerosos miembros de la facultad con bastante   Diferentes estilos de enseñanza y personalidades que las mías. La relación de   programación cooperativa ha aumentado a tres cuartos y más, y todos los   Los profesores de downstream están contentos con las habilidades de programación de los estudiantes.

Editar: para aquellos que estén muy interesados en la racionalidad detrás del currículo, aquí está la explicación principal del arquitecto: enlace

    
respondido por el pidge 20.10.2011 - 19:14
6

Mi escuela comenzó con Scheme también. Una de las razones que se mencionó fue que esto ayudó a nivelar el campo de juego. La mayoría de los alumnos de primer año de Comp Sci pueden estar expuestos, o mucho, a idiomas más comunes. Era menos probable que alguien tuviera mucho conocimiento de Scheme.

    
respondido por el dark fader 20.10.2011 - 06:05
6

En realidad, como Lisp (el esquema es un dialecto) es la Gran Dama de los lenguajes funcionales (piense en F #, Groovy, Clojure, Haskell, etc.), entonces esta capacitación no le deja en ningún tipo de desventaja comercial, ya que es el tema más candente en el bloque de desarrollo en este momento.

    
respondido por el adrianmcmenamin 20.10.2011 - 17:43
4

El esquema te ayudará a mejorar y a pensar de 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, lenguajes como este marcan el futuro, con suerte.

Sin embargo, los lenguajes similares a 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 te será mucho más fácil aprender algo como Scala después.

    
respondido por el egervari 20.10.2011 - 13:01
3

Completamos Scheme en la primera y primera mitad del segundo semestre. No fue hasta que realmente empezamos a trabajar con C cuando comencé a darme cuenta del poder de Scheme.

En cuanto a tu pregunta, por qué se elige Scheme: la respuesta es que es uno de los idiomas más simples que existen y te permite hacer muchas cosas (especialmente cuando comenzamos a jugar con listas lentos más adelante). Además:

  1. Para las personas que no tienen experiencia en programación, es más fácil de aprender. No hay muchos detalles técnicos y solo algunas formas especiales.
  2. Permite una abstracción de nivel superior. Un buen curso puede centrarse en enseñar a los programadores a pensar en lugar de centrarse en los detalles técnicos que permiten a los estudiantes convertirse en mejores programadores.
  3. Las listas son increíbles. Hay tanto que puedes hacer con ellos. Car y cdr resultan ser herramientas poderosas y solo cuando empiezas a trabajar con punteros te das cuenta de que Scheme era increíble en el manejo de listas.
respondido por el Avian78 08.07.2013 - 12:50

Lea otras preguntas en las etiquetas