¿Dónde se origina "método" como término especial en OOP?


13

"Método" es un término especial en la programación orientada a objetos. ¿Alguien sabe cuándo comenzó a usarse la palabra en este sentido particular y en relación con qué lenguaje de programación u otra rama del aprendizaje cuantitativo?

Respuestas:


11

Java y C # obtuvieron el método de C ++, que lo obtuvo de Simula .

Y Algol probablemente tuvo influencia en Simula:

Además, una versión de MIT ALGOL, AED-0, vinculaba estructuras de datos ("plexes", en ese dialecto) directamente con procedimientos, prefigurando lo que luego se denominaron "mensajes", "métodos" y "funciones miembro"


3
IIRC, C ++ generalmente prefiere 'función miembro' sobre 'método'.
tdammers

De acuerdo con ese mismo artículo de Wikipedia, eso coloca la acuñación del término (relacionado con OOP) dentro de la primera mitad de los años 60.
Tulains Córdova

2

Es difícil encontrar una respuesta definitiva, pero el primer idioma en referirse a las cosas como métodos parece haber sido Simula, aunque esto puede ser falso o retroactivo. Dado que las funciones (de las matemáticas) y los procedimientos (también de las matemáticas) aparecen en los lenguajes de programación, lo mejor que puedo entender es que "Método" es la forma abreviada de "Metodología".

Todos estos son subrutinas, fragmentos de código que componen un programa de computadora. Me imagino que se eligió "Método" porque la idea detrás de la programación de estilo OOP es reutilizar el código tanto como sea posible. Por lo tanto, podría tener un procedimiento, pero un método deja más claro que es un nuevo estilo en el trabajo. Honestamente, se me conoce por llamar funciones de métodos y he escuchado funciones llamadas métodos.


66
Me temo que 'figura' incorrectamente: el método (un proceso para lograr un objetivo) y la metodología (el estudio) tienen diferentes significados.
JK

1
Además, "método" ha existido como una palabra en inglés durante mucho tiempo. No hay necesidad de buscar una palabra más larga para contratar.
Steve314

Al usar "función" en lugar de "método", eso es en gran parte culpa de C ++, y debido al hecho de que C no tiene el concepto de un "procedimiento", solo una "función" que regresa void. Las funciones miembro de C ++ están muy relacionadas con las funciones ordinarias (a diferencia de Simula): tener un thisparámetro implícito y (posiblemente) un mecanismo de despacho de tiempo de ejecución realmente no cambia lo que está tratando. No sé si C fue el primero en funciones y procedimientos que el mismo que tratar, pero Pascal (un lenguaje más reciente) tiene functiony procedurepalabras clave - aunque IIRC, Pascal funciones podrían tener efectos secundarios.
Steve314

Específicamente, el método es una forma de lograr un objetivo, una descripción / conocimiento, no el proceso en sí. Esto tiene un significado en relación con la "clase", otro concepto abstracto, que define un tipo de objetos. Obtiene una clase de objetos y un método para hacer X con cada uno de los objetos, siempre que sean de esa clase. Aplica un método genérico a un objeto específico y obtiene resultados específicos para ese objeto.
SF.

1

He estado buscando información sobre esto durante décadas. Supongo que hasta ahora el término llegó a Simula desde el subcampo especial de computación numérica, donde el algoritmo específico para implementar una función (por ejemplo, un valor propio o lo que sea) a menudo se llama método . Esto se debe a que puede tener varios métodos numéricos diferentes para calcular la misma función matemática, con varias compensaciones. En OOP, debido a la anulación del método, puede tener la "misma" función implementada de manera diferente según sea apropiado para la clase; por ejemplo, el área se implementaría de manera diferente para Círculo y Rectángulo , que son ambas Formas , que tienen un área. Esto parece una extensión razonable del concepto tradicional de método numérico.


0

No sé nada sobre etimología de esta palabra en la historia de OOP. Pero sé que no es deduccional (deducible). Un término mejor (un término más deductivo o MDT) para ello podría ser reacción o acto


2
Estoy completamente seguro de que no estoy de acuerdo con usted. "Método" es una palabra perfectamente cromulenta para lo que comenzó todo, una forma de modelar varias cosas, con cada 'cosa' siendo de una clase, teniendo métodos para cambiar cómo era la cosa. De la misma manera que los métodos cambian las cosas en el mundo real, como.
Vatine

Supongo que "método" describió originalmente el código de implementación, similar a "procedimiento": el método / procedimiento / algoritmo para calcular el resultado. Usarlo para una interfaz donde no se conoce la implementación es un poco extraño, pero originalmente (en Simula) probablemente se usó un "mensaje" para eso. Aun así, cuando llama a un método, está invocando el código de implementación, incluso si no puede saber (en el sitio de la llamada) qué implementación.
Steve314

1
Supongo que las tres palabras 'función', 'procedimiento' y 'método', 'función' tienen una connotación matemática (asignar entradas a salidas), 'procedimiento' es imperativo (realizar una serie de pasos, también utilizados en el mismo sentido en el ejército); 'método' no tiene ninguna connotación, lo que probablemente es la razón por la que se prefiere en OOP.
tdammers

@Vatine +1 para "cromulent"
MattDavey

-1

Los programadores con experiencia en REAL BASIC, VBx y VB.net conocen dos tipos de declaraciones de métodos "FUNCIÓN" y "SUB". La familia de idiomas BASIC permite declarar una función con la palabra clave "FUNCIÓN" y la palabra clave "SUB". La diferencia entre estos dos es que una "FUNCIÓN" puede o no devolver un valor donde como "SUB", solo ejecuta el código pero no devolverá ningún valor. Pero con el advenimiento de los conceptos OO, los términos sub y function se comienzan a utilizar indistintamente como métodos.


2
Lo mismo ocurre con el procedimiento / función de
Pascal

3
VB usa "Función" y "Sub", abreviatura de "Subrutina", no "Método".
Ant

55
Dudo que Alan Kay estuviera pensando en Basic cuando se le ocurrió OOP y Smalltalk
Maglob
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.