vales todos test tema sobre sirvo ser secretos saber rapido puedo programar programador para los facilmente como aprender lisp scheme common-lisp new-operator

lisp - todos - vales para programador todo sobre el tema



¿Sería Lisp extremadamente difícil de aprender para un nuevo programador(ish)? (14)

Tengo un poco de experiencia con Python (suficiente para lo que puedo hacer si / else / elif y alguna generación de números aleatorios), pero siempre he tenido una extraña fascinación con los idiomas Lisp. Descargué el código fuente de un esquema para ver la sintaxis, pero para mí era bastante absurdo.

Para un programador con solo un poco de experiencia en programación como yo, teniendo en cuenta algunos buenos libros, sitios web y algún tiempo, ¿sería particularmente difícil aprender Common Lisp o Scheme? ¿Cuál de los dos sería más fácil? ¿Cómo se comparan con Python y C, en cuanto a la facilidad de aprendizaje?

Gracias


Dados algunos buenos libros, sitios web y algún tiempo, ¿sería particularmente difícil aprender Common Lisp o Scheme?

No.

¿Cuál de los dos sería más fácil?

Esquema, porque

¿Cómo se comparan con Python y C, en cuanto a la facilidad de aprendizaje?

Creo que es más difícil aprender C que aprender Python o Scheme, porque para aprender C realmente tienes que desarrollar el modelo de la máquina, los punteros y la memoria dinámica.

Entre Scheme y Python, es realmente difícil predecir cómo reaccionará un alumno individual. Realmente me gustan los espacios en blanco significativos de Python, y encuentro los paréntesis de Scheme molestos y distraídos. A mucha gente realmente le gustan los paréntesis de Scheme, y encuentran que los importantes espacios en blanco de Python son molestos y distraen. (Hay diferencias semánticas importantes, pero es difícil escapar de la tiranía de la sintaxis).

¿Qué libros debo usar? (pregunta que debiste haber preguntado y no)

No use la Estructura e Interpretación de Programas de Computación (SICP). El punto de vista de ese libro es "mostremos cuán inteligentes somos al codificar toda la informática en Scheme". El libro es un tremendo tour de force intelectual, pero no es adecuado para principiantes. Cuando el MIT lo usó en 6.001, fue como un curso de "eliminación" porque el 30–40% de todos los estudiantes del MIT querían graduarse en EECS, y estaban tratando de rechazar a las personas. SCIP es excelente para un estudiante senior de CS o un programador con 5 años de experiencia. No trates de aprender de ello.

Algunos buenos libros para aprender de:

  • Cómo diseñar programas por Felleisen et al. Ha sido cuidadosamente elaborado y perfeccionado a través de años de experiencia. Utiliza Scheme y te enseña exactamente lo que dice en el título. Muy recomendable.

  • Simply Scheme de Harvey and Wright es un libro introductorio de CS realizado por personas que consideraron que SCIP necesitaba una "precuela". Disfruté leyéndolo pero no he enseñado de ello.

  • Si puedes soportar la ternura, The Little Schemer de Felleisen y Friedman tiene un estilo dialéctico muy inusual, con un montón de ejemplos, que te pueden gustar.


Considere (el mal titulado) "Lenguajes de programación, un enfoque basado en intérpretes" por Samuel N. Kamin. Aprenderá cómo programar en 7 idiomas diferentes (incluidos Lisp, Scheme, SASL, CLU) y cómo implementar intérpretes para cada uno. Debe comprender bien cómo difieren los idiomas, por qué están diseñados como están, cuáles son las ventajas y desventajas de usarlos, etc.


El esquema es (intencionalmente) más compacto que Common Lisp, y descubrirá que puede aprender el idioma muy rápidamente. Ahora, dominar el (cualquier) concepto de lenguaje e informática es otra historia, y la sugerencia del libro de @Matt Greer sería un lugar maravilloso para comenzar.


En cuanto a lo que es más fácil, Lisp o Scheme, al ser "dialectos" de la familia Lisp, en el nivel de principiante son prácticamente lo mismo e intercambiables. Aprendí Common Lisp de "Practical Common Lisp" de Peter Siebel, luego aprendí SICP y realicé todos los ejercicios a través de los primeros dos capítulos utilizando Common Lisp en lugar de Scheme. Hay solo unas pocas palabras clave diferentes y cosas como el uso de funcall en CL donde un par de paréntesis bastaría en Scheme.

Tanto el libro de Siebel como el SICP están disponibles de forma gratuita en su totalidad en la web. Descárgalos y consigue hackin ''!


En realidad, puede encontrar un curso de video completo sobre Estructura e interpretación de programas de computadora en Google Video. Comience aquí: http://video.google.com/videoplay?docid=933300011953693438#

Los videos fueron hechos en los años 80 por Hewlett-Packard, y enseñados por Sussman y Abelson (los autores originales). La clase está llena de HP HW / ingenieros mecánicos que están siendo reentrenados como ingenieros de SW. HP los lanzó al dominio público.

Cualquiera podría ver estos videos y ser un programador de Lisp al final. Increíble, excelentes instructores.


La última vez que revisé las conferencias de las clases de introducción para CS61A en Berkeley que usaban SICP, estaban disponibles en iTunes, que le daría una serie completa de conferencias para ayudarlo a aprender el idioma. ¡Gratis! Le pedí ayuda a Brian Harvey a finales de los 90 y a los estudiantes les gustaron sus conferencias.

http://deimos3.apple.com/WebObjects/Core.woa/Browse/berkeley.edu.1621506930


Lisp no es difícil de aprender. Puede enseñarse de manera deficiente y tiene algunos conceptos de "alto nivel", especialmente si viene del imperativo "clásico" mundo de la programación.

Pero hoy, muchos de los idiomas modernos tienen aspectos muy similares a los que ofrece Lisp, por lo que es probable que no haya mucho "nuevo" en Lisp en comparación con otros idiomas, especialmente Python.

Mi "obstáculo" con Lisp (y Scheme) era simplemente "lambda". Esencialmente, mi problema fundamental era que no tenía nada que ver con lo que era una "lambda", por qué se llamaba "lambda", etc.

Si se llamara "función" o "rutina" o algo así, habría sido trivial. Pero tal como está, la palabra "lambda" no tenía sentido en todos los sentidos. Podrían haberlo llamado "mork", "bleem", o "fizbin" y hubiera sido tan útil.

Una vez que rechiné "lambda", el resto cayó en su lugar.

Si está interesado en un A Lisp (es decir, un idioma que es esencialmente de la familia Lisp), Scheme es una buena opción. Pero, Scheme NO es Common Lisp (que es lo que "Lisp" significa en la actualidad), son idiomas realmente diferentes.

Si quieres aprender Common Lisp, empezaré con Common Lisp y saltaré Scheme.

Puede consultar Practical Common Lisp para escribir Lisp sin "tener que aprenderlo", por así decirlo.


No, en absoluto. Creé una plataforma llamada Clojurecademy que tiene como objetivo enseñar el lenguaje de programación Clojure (que es un dialecto de Lisp ) y tiene un modelo de enseñanza interactiva (práctica) como Codecademy.

Puedes comenzar con eso y verás lo fácil que es.


Obtener

"El pequeño intrigante"

y

"El avanzado Schemer"

Estos libros son INVALUABLES como asistentes de conceptos de programación. Personalmente los hago antes de SICP solo porque SICP es un poco rápido si no has programado mucho antes ... ¡e incluso si tienes libros geniales!

Personalmente creo que Scheme es un lenguaje pedagógico muy bueno. Se puede usar para casi cualquier cosa que suponga, pero es muy bueno para enseñar construcciones de programación sin enredarse en problemas sintácticos. Lo más cercano a la semántica pura que obtendrás.


Obtener SICP (Estructura e Interpretación de Programas de Computación). Fue el libro de texto de clase de nivel de entrada CS en MIT hasta hace muy poco. Se basa enteramente en el esquema. Si te gusta CS, te encantará este libro. Es fantastico También te alejarás de un programador mucho mejor después de leerlo (e idealmente hacer la mayoría de los ejercicios). Es un libro ideal para principiantes, comienza desde el principio y te ayuda a ser bastante competente en Scheme. Sin embargo, es un libro de texto de la universidad, así que a menos que tenga un poco de habilidad para la programación, puede ser un poco difícil.


Relativamente, es un lenguaje muy difícil de aprender si eres tan terco como yo :) Python es un lenguaje OOP, y aunque FP es posible, todavía es OOP. Lisp es un lenguaje FOP como Haskell. Como Python, puede hacer OP, pero sigue siendo FOP. Términos utilizados: OOP = Programación Orientada a Objetos OP = Programación Objeto FOP = Programación Orientada Funcional FP = Programación Funcional


Si le fascina el idioma, creo que lo encontrará fácil. Pero debo decir que no es para todos. Intenté varias veces aprender Scheme y Common Lisp y perdí el interés. Cuando veo un "si" en un lenguaje de programación, empiezo a buscar "entonces", "else", una llave abierta, dos puntos, etc., pero Lisp no tiene nada de eso. Sólo veo una sopa de paréntesis.

Además, algunos conceptos son más fáciles en otros idiomas. Estoy de acuerdo con los chicos que no les gusta la palabra "lambda". Realmente lo entendí cuando aprendí Lua (Javascript es muy similar). En Lua y Javascript, cuando necesita una función anónima, escribe (adivina qué) "función (etc.)". Cuando desea crear un cierre al devolver una función, escribe (adivina qué) "función de retorno (etc., Etc.)". En Lisp, escribe "lambda" y usa el retorno implícito al final de la función. No es muy amigable para los principiantes.

También estoy de acuerdo con Norman Ramsey: No utilice la Estructura e Interpretación de Programas de Computación (SICP).

Este libro es raro. Comienza realmente fácil, en la página 1 aprendes algunas expresiones como (+ 137 349). Muy fácil. Luego, en la página 2 aprendes funciones. En la página 3 aprendes recursión. En la página 4 aprendes funciones de orden superior con lambdas (!!!). En la página 5 en adelante, usted dice WTF y no puede dar sentido a nada. El libro tiene solo 5 capítulos cada uno con mil páginas. Introduce la asignación en el capítulo 3. Tal vez su cerebro sea funcional, pero mi cerebro es ciertamente imperativo y necesito ver lo que hace la máquina: asignar valores, copiar memoria, etc. En mi imperativo, enseñar funciones de orden superior antes de la asignación cerebro. En el último capítulo, el libro habla sobre compiladores, intérpretes y recolección de basura. ¿Es este el mismo libro que comenzó a enseñar expresiones como (+ 137 349)? Ahora puedo entender los últimos capítulos de este libro, pero solo después de aprender media docena de lenguajes de programación de diferentes paradigmas y leer mucho sobre los lenguajes de programación y su implementación. No sé cómo alguien podría seguir el ritmo que este libro impone al lector.


Yo diría que un Lisp será más fácil de aprender como un nuevo programador que si esperas. Esto se debe a que la forma en que la mayoría de los lenguajes lo alientan a pensar acerca de la programación es un obstáculo para aprender Lisp; tener experiencia con un lenguaje más convencional probablemente ayudará de alguna manera, pero no con las cualidades que hacen que Lisp sea único.

Scheme, el Lisp con el que estoy más familiarizado, probablemente sea tan fácil de aprender como Python, especialmente si eliges el esquema PLT (ahora retitulado Racket), que te ofrece muchas extensiones útiles. Common Lisp probablemente tenga la misma dificultad, aunque me parece menos instintivo por razones que probablemente no sean universales. He encontrado a C mucho más difícil que cualquiera de los dos, por las razones que sugiere Norman Ramsey.

Lo que sugeriría aprender depende mucho de lo que quieras hacer con él. Si desea aprender un lenguaje claro y sin adornos, cuyo núcleo se puede aprender rápidamente, aprenda un Esquema que implementa el estándar R5RS, como el Scheme48 . Si desea un Esquema más capacitado, ya sea inmediatamente o más tarde, aprenda el Esquema / Raqueta PLT . Si desea un lenguaje grande, amigable y difuso de inmenso poder pero no tan visiblemente coherente internamente como Scheme, elija Common Lisp; Steel Bank Common Lisp es una buena implementación.


Yo recomendaría ir con Common Lisp.

Cuenta con excelentes implementaciones que proporcionan una variedad de capacidades diferentes. Las mejores son todavía las implementaciones comerciales (aunque tienen versiones sin costo para aprender Lisp) como Allegro CL de Franz y LispWorks. Ofrecen bibliotecas extensas e incluyen entornos de desarrollo basados ​​en GUI. Pero el código abierto y las implementaciones gratuitas también son excelentes: SBCL, CCL, ECL, CLISP, ...

Hay un montón de excelentes libros para Lisp, como Peter Seibel''s Practical Common Lisp.

Aprender Common Lisp no es tan difícil, pero obtener experiencia más profunda puede tomar algo de tiempo, porque el lenguaje y su ecosistema son sorprendentemente ricos.

El esquema de aprendizaje también es útil. También aprender SICP puede ayudar. Pero no hay necesidad inmediata, ya que la literatura de Lisp habla sobre muchos de los mismos problemas. Desafortunadamente, Scheme perdió parte de su atractivo en los últimos años (encuentro que el último R6RS es totalmente decepcionante) y también encuentro que implementaciones como ''Raqueta'' se están moviendo en la dirección equivocada. En su lugar, es posible que desee aprender algunos de los mejores dialectos e implementaciones de ML (por ejemplo, OCAML). Aunque podría ser interesante revisar varias implementaciones de Esquemas, hay algunas con capacidades interesantes.

Las ideas centrales que deberías aprender de Lisp son estas:

  • programación multi-paradigma
  • lenguaje de programación programable
  • computación simbólica
  • desarrollo interactivo y exploratorio

Conozca cómo Lisp apoya estas ideas y por qué son importantes.