Casi he terminado mi carrera de programación de juegos. Esto no es un título en ciencias de la computación, por lo que gran parte de la teoría se evita a favor de la creación práctica de carteras y lo que veo como aprendizaje JIT, que aparentemente es más importante en la industria de los juegos. El primer tema fue "Introducción a la programación orientada a objetos".
Esa frase no me molestó hasta que aprendí sobre los diferentes paradigmas de programación (obtengo esta lista de https://en.wikipedia.org/wiki/Comparison_of_programming_paradigms ):
- Imperativo
- Funcional
- Procesal
- Estructurado
- Evento conducido
- Orientado a objetos
- Declarativo
- Basado en autómatas
Entiendo que esta no es una lista exhaustiva, y que no todos estos conceptos son iguales, y la mayoría de ellos ni siquiera son exclusivos, pero no entiendo por qué la mayoría de ellos solo tienen una palabra: imperativo; funcional; declarativo, pero cuando hablamos de programación con objetos, tenemos que aclarar que estamos orientados en torno a esos objetos. ¿No podemos simplemente usar objetos? ¿No podemos simplemente tener objetos? ¿Por qué deben orientarnos , como nuestra estrella guía?
Mirando aquí ( https://en.wikipedia.org/wiki/Object-oriented_programming ), en ninguna parte se utiliza el término "orientado" como su propio término. Solo se explica el "objeto".
Además, puedo ver por razones prácticas por qué se utiliza Event-Driven, porque la programación de eventos ya es algo que se hace cuando se realiza una conferencia, y la programación automática hace que parezca que está configurando una línea de producción robótica, por lo tanto, ayuda tener palabras aclaratorias adicionales allí.
¿Qué hace que la programación de objetos, como frase, no sea suficiente para describir lo que hacemos cuando usamos objetos en nuestra programación?
Obviamente, por mi tono, no me gusta demasiado la palabra "orientado". Me recuerda a mi tiempo como reportero de la corte, escuchando a un abogado tras otro usar la frase "en relación con" como una especie de señal verbal. No significaba nada; era solo un término que usaban para llenar el aire mientras trataban de pensar qué decir a continuación. Sin embargo, no estoy tratando de abogar por un cambio de idioma, solo estoy preguntando por qué es así. Si alguien sabe por qué se supo de esa manera por razones puramente históricas y vestigiales, entonces esa es la respuesta. Será una munición si alguna vez decido perder el tiempo abogando por un cambio de idioma.
Por otro lado, si realmente hay una razón útil de por qué un lenguaje o código debe apuntar hacia los objetos, con exclusión de todas las demás direcciones, en lugar de simplemente tenerlas en su cinturón de herramientas , como herramientas , realmente estaría interesado en aprender al respecto. Me gusta aprender cosas útiles.
fuente
Respuestas:
Creo que está leyendo manera demasiado en un simple construcción gramatical. Eche un vistazo a su lista de paradigmas, ordenados de manera diferente por una razón que veremos en breve:
¿Qué tienen en común todas las palabras? Todos son adjetivos porque están destinados a modificar la palabra "programación". Además, con la excepción del "imperativo", no todos son adjetivos "naturales", sino sustantivos "adjetivos", sustantivos que realmente describen el núcleo del paradigma: función, estructura, autómatas y objeto.
Y hay dos formas diferentes en que los sustantivos se adjetivan: a través de un sufijo como -al o -ed, o mediante la creación de una palabra compuesta usando un guión. Ahora, como ha señalado Doc Brown, los sufijos que podrían usarse para adjetivar "objeto" tienen un significado diferente. Lo que deja la composición.
Y afirmo que es pura coincidencia o gusto que Alan Kay eligió usar "orientado" para su adjetivo compuesto "orientado a objetos". También podría haber sido "impulsado por objetos" o "basado en objetos", y también podría leer demasiado en ellos. ¿No "impulsado" suena como una especie de obsesión malsana?
fuente
Francamente, es un remanente de la historia. La programación funcional es realmente programación orientada a funciones, la programación declarativa es realmente programación orientada a declaraciones ... después de todo, ¿no solo usamos funciones? ¿No podemos simplemente tener funciones?
"Orientado a objetos" sale mejor de la lengua e históricamente está arraigado.
La 'orientación' viene porque no estamos hablando de programación sino de diseño. El hecho de que usemos objetos, o usemos funciones, o usemos eventos no significa que nuestra metodología de diseño se realice modelando los tres. Al especificar la orientación de la metodología de diseño, ayuda a comunicar a los programadores cómo deben interpretar y extender ese diseño, cómo el enfoque de modelado colorea la implementación.
fuente
Llamarlo así ayuda a explicar que los objetos son una parte muy importante del paradigma.
La programación orientada a objetos tiene sus raíces en Simula , que era esencialmente ALGOL más algunas características nuevas de programación de objetos. Y de acuerdo con esa historia, incluso hoy en día es completamente posible en muchos idiomas (incluso los "lenguajes OO puros") codificar algo que es esencialmente solo un programa de procedimiento con algunos objetos en él. Pero esto es considerado un mal estilo por los desarrolladores más experimentados.
En realidad, hacer algo "de la manera orientada a objetos" es muy diferente de "la forma de procedimiento". El concepto más importante es el uso de la herencia y el polimorfismo. Cuando realmente entiendes e internalizas la forma en que funcionan las clases y los métodos virtuales, es una experiencia reveladora que cambia la forma en que escribes código en muchos casos, un verdadero cambio de paradigma. (Suponiendo, por supuesto, que primero comenzaste a escribir código de procedimiento. Muchos estudiantes en estos días van directamente a Java o C # como primer idioma, e IMO se pierden en comprender realmente los beneficios de OO al hacerlo).
Lo llamamos programación orientada a objetos porque un programa escrito en estilo OO no solo contiene objetos; La estructura de todo el programa se basa en ellos y en su forma de trabajar.
fuente