2008-09-19 25 views
20

Acabo de comenzar uno de mis cursos, ya que las clases comenzaron hace 2 semanas, y estamos aprendiendo Scheme en este momento en uno porque asumo que hay alguna razón más adelante, pero tan lejos de lo que enseña básicamente es cómo escribir en el esquema. Mientras estoy sentado aquí tratando de mantenerme despierto, intento comprender por qué me gustaría saber esto y por qué alguien lo usa. ¿En qué se destaca? La próxima semana planeo preguntarle, cuál es el objetivo de aprender aquí aparte de cómo escribir cosas en el esquema.Beneficios del esquema de aprendizaje?

+11

Por cierto, creo que es muy rico que usted tenga un nombre de usuario de "pollo" y está cuestionando el valor de Scheme. http://www.call-with-current-continuation.org/ –

+5

Han pasado casi exactamente 4 años desde que comenzó a aprender Scheme. Tengo curiosidad por lo que piensas que los beneficios de aprenderlo estaban mirando hacia atrás. –

Respuesta

32

Es un lenguaje de programación funcional y le ayudará a ampliar su experiencia.

Incluso si no lo usa en el mundo real no significa que no tenga ningún valor. Le ayudará a dominar cosas como la recursión y lo ayudará a forzarlo a pensar en los problemas de maneras diferentes a como lo haría normalmente.

I deseo mi escuela nos obligó a aprender un lenguaje de programación funcional.

1

Mi problema fue que al aprender esto aprendimos clisp junto con él. No pude mantener los dos lados para salvar mi vida.

Lo que aprendí de ellos fue cómo escribir mejor c y código java. Esto es simplemente por el diferente estilo de programación que aprendí. He adaptado más estilo funcional a algunos de mis programas y me ha ayudado en algunos casos.

Nunca me gustaría volver a programar en esquema o lisp si no fuera necesario, pero me alegro de que al menos hice un poco de ellas solo para aprender la diferente manera de programar.

6

Algunas personas dicen que la mayor fortaleza de Scheme es como lenguaje de enseñanza. Si bien es muy beneficioso aprender programación funcional (es una forma completamente nueva de pensar), otro beneficio en el esquema de aprendizaje es que también es "puro". Claro que no puede hacer un montón de cosas como java, pero eso también es genial, es un lenguaje hecho completamente de paréntesis, caracteres alfanuméricos y un puñado de otros signos de puntuación.

En mi curso de introducción, nos enseñan Java, y veo a muchos de mis amigos luchando con 'public static void main', aunque ese no es el objetivo del programa y cómo los profesionales no tienen otra opción que 'handwave' hasta que estén más avanzados. No ves eso en Scheme.

Si realmente desea aprender qué esquema se puede hacer en un pedazo de pastel que es muy difícil de implementar en lenguajes como Java, sugiero mirando este: http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-12.html#%_sec_1.3

Este es probablemente el mejor libro escrito sobre el Esquema .

8

Los idiomas como LISP (y el Esquema muy relacionado) son para programar qué es el latín para el inglés.

Puede que nunca vuelva a hablar en latín un día en su vida normal otra vez después de tomar un curso, pero simplemente aprender un idioma como el latín mejorará su capacidad para usar el inglés.

Lo mismo ocurre con Scheme.

6

Veo a todas estas personas aquí diciendo que si bien nunca usarían Scheme de nuevo, sin embargo, ha sido un lenguaje valioso para aprender porque obliga a una cierta forma de pensar. Si bien esto puede ser cierto, espero que aprendan Scheme porque eventualmente lo encontrarán útil y no simplemente como un ejercicio de aprendizaje.

Aunque no es tremendamente rápido como un lenguaje compilado, ni es particularmente útil para servir sitios web o analizar texto, he encontrado que Scheme (y otros ceceos por extensión) no tiene paralelo en cuanto a simplicidad, elegancia, y una poderosa manipulación funcional de estructuras de datos complejas. Para ser honesto, creo en Scheme. Es el idioma en el que resuelvo los problemas. No te des por vencido o simplemente toleres el Esquema, dale una oportunidad y no te decepcionará.

Por cierto, el mejor IDE para Scheme es DrScheme, y contiene extensiones de idioma para hacer todo lo que puede hacer en otro idioma, y ​​si encuentra algo que no puede, simplemente puede usar el C FFI y escribirlo tú mismo.

3

Scheme fue utilizado por la NASA para programar algunos de los rovers de Marte. Su uso en el mercado es bastante específico, pero como estoy seguro de que sus profesores le están diciendo, las cosas que aprenda en Scheme se trasladarán a la programación en general.

+0

¡Curiosidad de la NASA! – Timeless

1

Trate de no quedar atrapado en detalles como el paréntesis, y coche/cdr. La mayoría de lo que estás aprendiendo se traduce a otros idiomas de una forma u otra. No se preocupe si puede o no llevar Scheme al mercado, es probable que esté aprendiendo otros idiomas más comercializables en otras clases. Lo que estás aprendiendo aquí es más importante.

Si está aprendiendo un esquema, puede aprender todo sobre cómo se implementan los sistemas de objetos (sugerencia: un sistema de objetos no siempre trata de un tipo que tiene métodos y variables de instancia asociadas a él ...). Si bien este tipo de conocimiento no ayudará en el 95% de su trabajo diario, para el 5% de su trabajo dependerá de ese conocimiento.

Además, puede aprender sobre estilos completamente diferentes de computación, tales como arroyos/evaluación perezosa, o incluso la programación lógica. También puede obtener más información sobre cómo se interpretan los programas informáticos en general; desde lo básico sobre cómo se evalúa el código del programa, hasta aspectos más profundos, como crear tu propio intérprete y compilador). Conocer este tipo de información es lo que separa a un buen programador de un gran programador.

esquema no es realmente un lenguaje funcional, es más agnóstico método que eso. Tal vez más al punto, Scheme es un excelente lenguaje para elegir si desea explorar con diferentes métodos de computación. Como ejemplo, se construyó un lenguaje funcional altamente paralelo "Termite" sobre Scheme.

En resumen, el punto en el esquema de aprendizaje es por lo que se puede aprender los fundamentos de la programación.

Si necesita un poco de ayuda en la toma de la programación en el esquema más agradable, no tenga miedo de preguntar. Muchos programadores se quedan colgados (por ejemplo) del paréntesis, cuando hay formas perfectamente geniales de trabajar con el código fuente del esquema que hace que el paréntesis tenga algo que apreciar, en lugar de odiar. Como ejemplo, emacs con paredit-mode, algún tipo de modo de interacción de esquema y highlight-parenthesis-mode es bastante impresionante.

6

Sugeriría mantener una mente abierta al aprender. La mayoría de las veces en la escuela no comprendemos completamente qué/por qué estamos aprendiendo un tema en particular. Pero como he experimentado alrededor de un millón de veces en la vida, resulta ser muy útil y, por lo menos, ser consciente de ello te ayuda. El esquema, lo creas o no, te convertirá en un mejor programador.

1

Los lenguajes funcionales como Scheme tienen gran aplicación para las matemáticas, la inteligencia artificial, la lingüística y otras áreas altamente teóricos de la informática (aprendizaje automático, procesamiento de lenguaje natural, etc.). Esto se debe a la pureza de los lenguajes de programación funcionales, que no tienen efectos secundarios, así como a su capacidad para navegar por procedimientos de orden superior con facilidad.Un conocimiento sólido de los lenguajes de programación funcionales es fundamental para resolver muchas de las preguntas que se ciernen más allá de la frontera de la informática. Como beneficio adicional, se sentirá muy bien con los procedimientos de orden superior y la recursión.

+0

El esquema no es un lenguaje funcional puro. – newacct

+0

Es cierto, pero si su uso de Scheme es predominantemente no funcional, entonces no debería usar Scheme. Cualquiera que aprenda Scheme sin obtener una sólida comprensión de la programación funcional no ha logrado "aprender" Scheme. – Reggie