Sé que las bases de datos relacionales se basan en la teoría de conjuntos, la programación funcional se basa en el cálculo lambda, la programación lógica se basa en la lógica (por supuesto :)), y ahora que lo pienso; No estoy seguro si la programación imperativa y genérica se basa en cualquier rama particular de las matemáticas tampoco.¿OOP se basa en cualquier rama de las matemáticas?
Respuesta
OOP no se origina de ningún formalismo estricto, pero es un formalismo de verdad. Hubo una serie de intentos para definir ese formalismo correctamente. El trabajo más notable lo realiza Luca Cardelli: http://lucacardelli.name/indexPapers.html (vea toda la sección "Objetos")
La programación imperativa podría basarse en cualquier formalismo equivalente de Turing, incluyendo cálculo lambda, lógica SK, máquina abstracta de Turing, algoritmos de Markov o cualquier otro sistema de reescritura de términos (TRS) similar. La programación genérica no es diferente, es un sistema de reescritura de términos de un tipo.
Por lo tanto, para los motivos matemáticos más comunes, literalmente, todo lo que necesita para profundizar en los sistemas de reescritura de términos.
Un trabajo más reciente es el trabajo reciente de AbdelGawad en la Universidad de Rice. Él construye un modelo matemático de OOP convencional (por ejemplo, Java, C#, C++, Scala, X10, etc.) llamado NOOP. Aquí hay un enlace a su tesis doctoral http://scholarship.rice.edu/handle/1911/70199
programación orientada a objetos tiene sus orígenes en lenguajes de programación como Simula-67 y Smalltalk-80, en lugar de cualquier teoría matemática o formalismo. Pero supongo que podría decir que los conceptos de objeto, clase y herencia de OOP son basados en sistemas de categorías y clasificación ingenuos o de sentido común; p.ej. las taxonomías desarrolladas por Linnaeus.
- 1. ¿Cómo puedo saber en qué rama remota "principal" se basa mi sucursal?
- 2. ¿Cómo se hacen las matemáticas (o matemáticas) con números mayores que MaxValue en C#?
- 3. complejo se basa en Visual Studio
- 4. Libgdx ¿SpriteBatch se basa en StencilBuffer?
- 5. Obtener git diff para cualquier rama fusionada
- 6. ¿Se pueden acortar las referencias matemáticas en C#?
- 7. ¿Cómo se traduce esto para el bucle en las matemáticas
- 8. ¿Cómo se compara Python OOP con PHP OOP?
- 9. ¿Cómo habilitar las matemáticas en sphinx?
- 10. ¿En qué marco se basa Google Body Browser (si existe)?
- 11. ¿Cómo funcionan las ecuaciones matemáticas en Java?
- 12. git: cambiar de rama e ignorar cualquier cambio sin confirmar
- 13. Django redirigir usando inversa() a una dirección URL que se basa en las cadenas de consulta
- 14. Quiero mejorar las habilidades matemáticas para programar
- 15. ¿Se implementan las variables de CSS en cualquier navegador moderno?
- 16. cómo parar "no puede parar" se basa en TeamCity
- 17. Lo que se basa en el iPhone mach_absolute_time
- 18. CTest/flujo de trabajo CDash: el despliegue de todas las noches se basa
- 19. Matemáticas de tiempo en Delphi
- 20. git/Gerrit prevenir el desarrollo de la rama que se fusionaron en rama estable/prueba
- 21. PHP OOP - ¿Cómo se maneja la autorización?
- 22. OOP multiplataforma en C++
- 23. Matemáticas en lote (ganar)
- 24. ¿Cómo se determina en qué tecnología se basa un sitio web?
- 25. Esto es OOP o como OOP
- 26. OOP. Elección de objetos
- 27. ¿Cómo se une DataGrid a las propiedades de cualquier colección?
- 28. ¿De qué rama git se sacó esta rama?
- 29. Relación de muchos a varios en oop
- 30. Sitio web para practicar las habilidades de diseño de OOP
He oído que proviene de la arquitectura de edificios :) – hgulyan
@hgulyan, no, eso es [Patrones de diseño] (http://en.wikipedia.org/wiki/Design_pattern). OOP es anterior a estos. –
@ Péter Török, tiene razón :) – hgulyan