Estaba leyendo el artículo aquí: http://www.paulgraham.com/avg.html y la parte sobre la "paradoja del blub" fue particularmente interesante. Como alguien que codifica principalmente en c ++ pero tiene exposición a otros idiomas (principalmente Haskell), conozco algunas cosas útiles en estos idiomas que son difíciles de replicar en c ++. La pregunta es principalmente para las personas que son competentes tanto en c ++ como en algún otro idioma, ¿hay alguna característica o idioma de lenguaje poderoso que utilice en un lenguaje que sería difícil de conceptualizar o implementar si solo estuviera escribiendo en c ++?
En particular, esta cita me llamó la atención:
Por inducción, los únicos programadores en condiciones de ver todas las diferencias de poder entre los distintos idiomas son aquellos que entienden el más poderoso. (Esto es probablemente lo que Eric Raymond quiso decir con Lisp para hacerte un mejor programador). No puedes confiar en las opiniones de los demás, debido a la paradoja de Blub: están satisfechos con el lenguaje que usan, porque dicta el cómo piensan sobre los programas.
Si resulta que soy el equivalente del programador "Blub" en virtud del uso de c ++, esto plantea la siguiente pregunta: ¿Hay algún concepto o técnica útil que haya encontrado en otros idiomas que le hubiera resultado difícil de conceptualizar si hubiera estado escribiendo o "pensando" en c ++?
Por ejemplo, el paradigma de programación lógica que se ve en lenguajes como Prolog y Mercury se puede implementar en c ++ usando la biblioteca castor, pero finalmente encuentro que conceptualmente estoy pensando en términos de código Prolog y traduciendo al equivalente de c ++ al usar esto. Como una forma de ampliar mi conocimiento de programación, estoy tratando de descubrir si hay otros ejemplos similares de expresiones útiles / poderosas que se expresen de manera más eficiente en otros lenguajes que no conozco como desarrollador de c ++. Otro ejemplo que viene a la mente es el sistema macro en lisp, generar el código del programa desde dentro del programa parece tener muchos beneficios para algunos problemas. Esto parece ser difícil de implementar y pensar desde dentro de c ++.
Esta pregunta no pretende ser un debate "c ++ vs lisp" ni ningún tipo de debate de tipo guerras lingüísticas. Hacer una pregunta como esta es la única forma en que puedo ver posible descubrir cosas que no sé sobre las que no sé.
there are things that other languages can do that Lisp can't
- Es poco probable, ya que Lisp está completo en Turing. ¿Quizás quisiste decir que hay algunas cosas que no son prácticas para hacer en Lisp? Podría decir lo mismo sobre cualquier lenguaje de programación.