Tengo una idea aproximada de lo que es esto, pero si alguien tiene una explicación del "problema de expresión" que creen que es sucinta e intuitiva, me encantaría escucharla.¿Cuál es el 'problema de expresión'?
Respuesta
Reloj this lecture.
La idea es que su programa es una combinación de un tipo de datos y operaciones sobre él. El problema requiere una implementación que permita agregar nuevos casos del tipo y nuevas operaciones sin la necesidad de recompilar los módulos antiguos y mantener la seguridad del tipo estático (sin conversiones ni comprobaciones del tipo de tiempo de ejecución).
Es interesante observar que en los lenguajes de programación funcionales es fácil agregar nuevas operaciones, pero es difícil agregar casos al tipo de datos. Mientras que en un idioma OO es al revés. Esta es una de las grandes diferencias conceptuales entre los dos paradigmas de programación.
Aquí hay una solución que muestra cómo el problema de expresión se puede resolver en Clojure (programación funcional) https://gist.github.com/elnygren/e34368a86d62f0cb75f04ba903f7834a – elnygren
@elnygren He ahorcado su Gist y he reemplazado su código con Haskell: https: // gist.github.com/chrisdone/7e07b3a90474542c9d1ebef033c1ee6e –
Una bifurcación más con el ejemplo de Scala aquí: https://gist.github.com/izmailoff/41c7f790eb97042c307885388754a0be –
También existe this article about solving the problem with Clojure, sin embargo, el problema se presenta en Java, por lo que debe tener sentido incluso si no conoce Clojure, especialmente con la ayuda de las tablas pequeñas.
La idea detrás del problema es que el texto es unidimensional. Incluso si tiene líneas y columnas, generalmente las lee, palabra por palabra, línea por línea. Lo mismo ocurre con el compilador.
Y trata de representar algún tipo de 2 o más datos dimensionales en él. Por ejemplo, una tabla en orden fila-mayor es el siguiente:
((A, B, C), (D, E, F), (G, H, I))
En esta representación, es bastante fácil añadir una nueva fila al final, sin tocar el resto:
((A, B, C), (D, E, F), (G, H, I), (J, K, L))
embargo, la adición columnas es problemático un poco, tienes que tocarlo 4 lugares diferentes:
((A, B, C, M), (D, E, F, N), (G, H, I, O), (J, K, L, P))
por lo general, se encuentra con este problema en la práctica, cuando se trata de clases abstractas: es bastante fácil de añadir un nuevo subtipo como un nuevo módulo, pero cuando agrega un nuevo método abstracto, necesitará tocar todos los módulos y agregarlo; necesitas hacer lo mismo en muchos lugares. Normalmente haces abstracciones para protegerte contra estas cosas repetitivas.
No existe solución a este problema siempre que utilice la representación 1D.
La solución a este problema sería un editor que le permita editar estas tablas como cosas como una tabla real y no como texto (en una vista similar a Excel, donde puede agregar nuevas columnas y filas).
- 1. Problema de expresión regular
- 2. ¿Cuál es el problema con setw()?
- 3. ¿Cuál es el problema con reduce()?
- 4. cuál es el problema con AttachDbFilename
- 5. ¿Cuál es el problema con Cookie.setMaxAge (Integer.MAX_VALUE)?
- 6. ¿Cuál es el problema con char.GetNumericValue?
- 7. ¿Cuál es el problema con reftype {}?
- 8. ¿Cuál es el problema en esta afirmación?
- 9. ¿Cuál es el problema con IQueryable?
- 10. El operador del Espacio de nombres ... ¿cuál es el problema?
- 11. ¿Cuál es el significado de `?:` En la expresión regular
- 12. ¿Cuál es la expresión regular más eficiente?
- 13. ¿Cuál es el problema con las DLL y el Registro?
- 14. ¿Cuál es el problema de la clase base frágil?
- 15. ¿Cuál es el problema con CSS y barras de desplazamiento?
- 16. ¿Cuál es el problema con mi código de ensamblaje
- 17. ¿Cuál es el problema con la propiedad RenderMode de ToolStrip?
- 18. OpenGL: ¿Cuál es el problema con la depreciación?
- 19. jQuery NewBie Preguntas: ¿Cuál es el problema con $ (documento). (Listo)?
- 20. ¿Cuál es el problema con ODBC como tecnología?
- 21. <% $, <% @, <% =, <% # ... ¿cuál es el problema?
- 22. ¿Cuál es el problema con https al usar lxml?
- 23. FileResult con MemoryStream da resultado vacío .. ¿cuál es el problema?
- 24. ¿Cuándo es un problema demasiado complejo para una expresión regular?
- 25. Problema simple de expresión regular (Regex)
- 26. ¿Cuál es la prioridad derecha de la expresión matemática
- 27. ¿Cuál es la diferencia de enunciado y expresión en Ruby?
- 28. ¿Cuál es la expresión regular de una palabra en español?
- 29. ¿Cuál es la complejidad de la expresión regular?
- 30. JSON.parse() problema con expresión regular valora
¿Hay alguna clase de pregunta irónica, o una broma sutil? – x0n
Dado que es un concepto razonablemente complicado, no estoy seguro de que llegue muy lejos con una explicación "sucinta e intuitiva", ¡aunque me alegraría demostrar que estaba equivocado! – Gian
No es broma :) Una metáfora incompleta (y posiblemente algo inexacta) pero esclarecedora sería suficiente. – James