Mostrando las entradas con la etiqueta Thomas Kuhn. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Thomas Kuhn. Mostrar todas las entradas

3 de febrero de 2017

Paradigma.

   El concepto de paradigma resulta fundamental en la comprensión del paradigma (valga la redundancia) orientado a objetos.

   Antes de proporcionar la definición que se adoptará en el blog, se describirán algunas de las definiciones que existen de paradigma [wordreference]:
  • paradigma m. Ejemplo o ejemplar: esa chica es el paradigma de la paciencia.
  • paradigma ling. Cada uno de los esquemas formales a los que se ajustan las palabras, según sus respectivas flexiones: paradigma de la conjugación verbal.
  • paradigma ling. Conjunto de elementos de una misma clase gramatical que pueden aparecer en un mismo contexto: paradigma de las preposiciones.
  • paradigma ejemplo o modelo. En todo el ámbito científico, religioso u otro contexto epistemológico, el término paradigma puede indicar el concepto de esquema formal de organización, y ser utilizado como sinónimo de marco teórico o conjunto de teorías.
   Pero entonces, ¿qué entender por paradigma de programación?

   La palabra paradigma irrumpió en la ciencia y el vocabulario moderno a través del influyente libro "The Structure of Scientific Revolutions" del historiador de la ciencia Thomas Samuel Kuhn.

   Thomas Kuhn utilizó el término en la forma de la última definición: un paradigma es un modelo para describir un conjunto de teorías, estándares y métodos que en conjunto representan una forma de organizar el conocimiento, esto es, una forma de ver el mundo.
 
   Con base en a lo anterior, a lo largo del blog se entenderá como paradigma de programación al modelo de programación utilizado, el cual está descrito y definido por un conjunto de teorías, estándares y métodos que en conjunto, representan una propuesta de solución por software hacia una problemática determinada.

   Kuhn utilizó la ilusión óptica de la siguiente figura para ilustrar el concepto de paradigma. En dicha figura puede verse un conejo o un pato dependiendo de la perspectiva que se utilice:

Ilusión óptica del conejo-pato creada por Joseph Jastrow.
 
    El paradigma orientado a objetos cambió la perspectiva respecto del enfoque estructurado, el cual era el paradigma dominante hasta entonces.

Una perspectiva diferente.
   El concepto sobre el que subyace la esencia de la orientación a objetos es la abstracción. Por lo que, al pensar en este paradigma, se debería tener en mente una perspectiva basada en los siguientes conceptos:
  1. Entidades: agentes u objetos en interacción, donde cada uno de ellos tiene un rol y características denotadas por atributos.
  2. Responsabilidades: cada objeto proporciona un conjunto de servicios o lleva a cabo acciones que son utilizadas por otras entidades u objetos. Las responsabilidades determinan el comportamiento del objeto.
  3. Mensajes: en la POO la acción es iniciada por la transmisión de un mensaje a un objeto responsable de dicha acción. En respuesta al mensaje, el objeto receptor llevará a cabo un método para satisfacer la solicitud que le fue realizada.
   Los tres elementos anteriormente mencionados constituyen los fundamentos primordiales de la orientación a objetos. A lo largo del blog se desarrollarán de manera progresiva y se ejemplificarán con programas.
 
   Mensajes, procedimientos/funciones y métodos.
   Los mensajes son solicitudes específicas de alguno de los servicios o responsabilidades asignadas a un objeto. Los mensajes tienen un receptor específico, por lo que son enviados a un objeto en particular y pueden contener lista de argumentos.

   Los mensajes son llevados a cabo por métodos, los cuales son algoritmos asociados a un objeto (o a una clase de objetos), cuya ejecución se desencadena tras la recepción de un mensaje. En este sentido, tanto los métodos como los procedimientos o funciones son un conjunto de pasos bien definidos que llevan a cabo una acción; sin embargo, los mensajes y los procedimientos o funciones se distinguen esencialmente por dos aspectos:
  1. En un mensaje hay un receptor designado para dicho mensaje. Las funciones o procedimientos son generales, no hay un receptor específico.
  2. La interpretación o método utilizado para responder al mensaje es determinado por el receptor, y puede variar en función del receptor. Las funciones o procedimientos son únicos tanto en sus identificadores como en sus listas de parámetros.

1 de febrero de 2017

Referencias sugeridas.

  1. Bracha, Gilad, "Generics", Oracle Corporation, The Java Tutorials, (último acceso febrero 2017).
  2. Budd, Timothy A., "An Introduction to Object-Oriented Programming", Addison Wesley.
  3. Byte Magazine, Smalltalk, Volume 06 Number 08, A McGraw Hill Publication.
  4. Deitel, H. M. y Deitel, P. J., "Cómo Programar en Java", Prentice Hall.
  5. Goldberg Adele and Robson David, "Smalltalk-80 The Language and its Implementation", Addison-Wesley Publishing Company.
  6. Gökel Canol, Computer Programming using GNU Smalltalk, GNU Free Documentation License 1.3.
  7. Kuhn, Thomas Samuel., "The Structure of Scientific Revolutions", University of Chicago Press.
  8. Langsam, Yedidyah, Augenstein, M. J. and Tenenbaum, A. M., "Estructuras de Datos con C y C++", Prentice Hall Hispanoamericana.
  9. Mark Allen Weiss, "Estructuras de Datos en Java", Addison Wesley.
  10. McConnell, Steve, "Code Complete", Microsoft Corporation.
  11. Oracle, The Java Tutorials, Java Documentation.
  12. Shalloway, Alan and Trott James R., "Design Patterns Explained A New Perspective on Object Oriented Design", Addison Wesley.
  13. Sierra, Kathy and Bates, Bert, "Sun Certified Programmer & Developer for Java 2", Mc Graw Hill/Osborne.
  14. Schildt, Herbert, "C++: The Complete Reference", Mc Graw Hill Osborne.
  15. Stroustrup, Bjarne, "El Lenguaje de Programación C++", Addison Wesley.
  16. Unified Modeling Language Web Site, (último acceso febrero 2017).
  17. Wirth, Niklaus, "Algoritmos y Estructuras de Datos", Prentice Hall.


27 de enero de 2017

Citas ad hoc.

I consider to paradigms as universally recognized scientific achievements that, for a time, provide model problems and solutions for a community of researchers.
Thomas Samuel Kuhn.

Programming is one of the most difficult branches of applied mathematics; the poorer mathematicians had better remain pure mathematicians.
Edsger Wybe Dijkstra.

Technology is anything that wasn’t around when you were born.
Alan Curtis Kay, Hong Kong press conference.

Java and C++ make you think that the new ideas are like the old ones. Java is the most distressing thing to hit computing since MS-DOS.
Alan Curtis Kay.

Object-oriented programming is an exceptionally bad idea which could only have originated in California.
Edsger Wybe Dijkstra (attributed to).


I don't know how many of you have ever met Dijkstra, but you probably know that arrogance in computer science is measured in nano-Dijkstras.
Alan Curtis Kay.

Ask not what you can do to your data structures, but rather ask what your data structures can do for you.
Anónimo.

A whole stack of memories never equal one little hope.
Charles M. Schulz.

I can't predict how reading habits will change. But I will say that the greatest loss is the paper archive - no more a great stack of manuscripts, letters, and notebooks from a writer's life, but only a tiny pile of disks, little plastic cookies where once were calligraphic marvels.
Paul Theroux.

An Englishman, even if he is alone, forms an orderly queue of one.
George Mikes.

I'm very much into making lists and breaking things apart into categories.
David Byrne.

Lists have always implied social order.
David Viscott.

Concision in style, precision in thought, decision in life.
Victor Hugo.