Nicolás, buenas noches, te veo desde Argentina, tengo que decirte que me pone muy contento la calidad que está teniendo tu contenido, espero sigas así, porque está genial, creo que vas a llegar muy lejos 😁🔥
Esto lo leí en su día, pero no recuerdo si por vía de Uncle Bob, o curioseando directamente por algún blog. El caso es que lo he seguido leyendo aplicado a otras áreas como el testing (Steve Freeman, Nat Pryce) o como dicen más abajo, a microservicios. Me pareció bastante iluminador cuando lo leí por primera vez, pero se me ha ido difuminando junto a toda la pila de conceptos que uno va recogiendo por el camino. A mí parecer muchos de los principios SOLID derivan en parte de esa primera intuición, que no es más que dotar de autonomía a cada entidad y limitarlo a una canal de comunicación controlado. Pero entiendo que recurrir a una analogía física sea tan socorrido y útil para explicar otro tipo de abstracciones. Muy top el vídeo.
De los mejores videos que he visto en tu canal. Gracias por el contenido! En base a la poca experiencia que tengo, puedo decir que Ruby si implementa el modelo de Alan Kay de OOP. Fue muy inflienciado por SmallTalk. Si algún beginner ve este comentario, le recomiendo mucho que aprenda Ruby en vez de Java para OOP.
Estoy totalmente de acuerdo, con el profe. Una cosa son los líderes comerciales de la industria de la tecnología y otra, los que se destacan por el contenido técnico.
soy diseñador ui y maquetador web (maqueto para angular y react.js en estos momentos) hace más de 7 años, también me he metido en la programación en los proyectos y aunque aveces me cuesta entender estos vídeos son oro puro, gracias por compartir tu conocimiento con nosotros.
Gracias. He revisado la historia de los lenguajes de programación, historia de sus conceptos, entre otros. Hay muchísima bibliografía en inglés en ese ámbito. Pero reducida discusión en castellano. GRACIAS POR TU APORTE
Gracias Shifu, si tan solo hubiera más gente como tú. Creo que esto de la educación a distancia sería todo un éxito. Eres un genio. Gracias por todo tu esfuerzo
Hola Mundo de Nicolás, Me fascino este vídeo porque me permitió reencontrarme conmigo mismo, nunca he podido mascar el paradigma de la POO no sé porque, egresé de la USACH el 90 y salí con la programación de esos años y hasta que llegue al año 2K o 2k+1 donde construí o desarrolle mi mágnum opus, fui unos de los arquitectos del sistema de pago "Sencillito", en realidad lo había modelado en mi mente el año 91 cuando nos reunimos todos los compañeros egresados y todos habíamos cambiado de ser estudiantes mantenidos por recién casados con primeras pegas y fue en una de esas juntas en qué salió en la conversación además de hablar de pega el cacho en qué consistía pagar cuentas y salió la pregunta ¿No habrá un sistema donde vayas y pagues todas las cuentas juntas en vez de ir de banco en banco o de centro de pago en centro de pago? era poco eficiente y se perdía tiempo. En ese momento me vino a la mente la solución del "la máquina de estados", la compartí de inmediato con mi ex compañeros lo validamos y salió el OK, pero "donde echarlo a correr" y ahí salió lo pobre de nuestra visión de ese año 91. Desde ese año 91 al 2000 me hice bueno para las bases de datos y programación en C y me hice consultor Oracle, estando en Oracle Chile un día en un pasillo en la oficina de Oracle escuche hablar a mis compañeros consultores referido al desarrollo de "Sistema Financiero de GTECH(Administrador de la red de terminales de La Polla en esos años)" , les pregunté ¿A qué se referían? por si se trataba del financiero contable del ERP de Oracle en GTECH y la respuesta de “Cristian L y Hestor P”, fue muy ambigua porque él no tenía claro como que estaban desarrollando y me dicen... "No es como un mecanismo donde vas donde juegas al Loto y pagas una cuenta de servicios del hogar", bueno mi respuesta fue la de un torpe ingeniero que no cuida lo que lo que vale y se produjo la siguiente conversación: Yo: "Es re fácil" Hestor P y Cristian L; ¿Porque es fácil? Yo: "¿Dónde correrá el Sistema Financiero de GTECH?, ¿En el mismo servidor de los terminales del Loto? Hestor P y Cristian L; "¡No tenemos idea! " Yo: "¿La base Oracle estará instalada en algún servidor UNIX o en el VMS del Loto? " Hestor P y Cristian L; "¡No sabemos todavía!" Yo: "Si están en máquinas diferentes desarrollas un socket en el Servidor Oracle y lo comunicas con el VMS en base al protocolo de comunicación", Les consulté ¿Cuál sería el ancho de banda entre los servidores? Hestor P y Cristian L; "¡Cachamos menos de los nos estás preguntando! " Yo: me retire del pasillo hablando en voz alta diciendo "Si el canal es 10 mb habría que programar las "TLI"de la capa 2 del TCP y desarrollar la máquina de estado en el lado del Oracle". Paso un par de semanas "Cristian L y Hestor P" me invitaron a ser parte del equipo "Sistema Financiero de GTECH" y qwe me encargaría de las comunicaciones. Yo les dije que bueno, les volví a preguntar lo del canal de conexión y si tenían la respuesta Cristian L y Hestor P: "Los servidores estarán conectados por fibra óptica(hilacha de ojo)". Yo: "Es más fácil entonces solo hay que programar la aplicación(la máquina de estado)", les pregunté ¿Tienen el protocolo de la mensajería? Cristian L y Hestor P: "¡No tenemos idea! " Bueno en reuniones posteriores apareció el protocolo de mensajería he hice mi pega que en esencia motivo esté relato, esa máquina de estado que es el gestor transaccional (ACID) lo explique antes de programarlo como explicas la POO según "Alan" Saludos Nik
Es cierto el POO es muy iportante y a la hora de hacer Poliformismo puedo aclara que Python es muy efectivo y ademas el el unico que puede hacer simple y multiple Herencia, Instancia y Encapsulamento. Gracias por su video es muy interesante sobre todo a quien que todavia no usa el modo de programa POO.
Excelente vídeo!!! Se puede intuir que la teoría de POO elaborada por Alan Kay constituye la base fundamental de la arquitectura de sistemas basadas en microservicios, la cual funciona mediante sistemas independientes los cuales se comunican a través de mensajes, indicando los resultados de la operación solicitada. Estos sistemas pueden estar desarrollados en distintos lenguajes ya que utilizan el protocolo universal http para comunicarse entre ellos. Tu explicación ha sido de 10, sigue así crack !!
Qué pasada! Lambda calculo, categorías, álgebras de verificación... Me quito el sombrero. Gracias por el vídeo. Increíblemente didáctico para la profundidad que alcanzaste.
excelente video yo siempre pense que la orientacion a objetos eran solo colocar botones o imagenes y cosas asi y ya que estoy empezando esto me va genial entenderlo
Mientras veía el vídeo, muchas cosas "familiares" aparecían en el camino. La forma en que se propone un sistema basado en la conexión de "objetos" basados en mensajes, al igual como algunos frameworks de JS funcionan al día de hoy: React - Redux, Vue - Vuex, aplicando particularmente la lógica de listening y mutating para los componentes con los que se conforma el sistema/aplicación. Buen video!
Yo igual estoy haciendones esa ruta de aprendizaje pero con video de otros programadores en UA-cam. He aprendido un monton. Igual quisiera tomar esos cursos. Pregunta; Que tal los cursos de él? Me imaginos que son bueno.
@@juanpabloshortfilms Son bastante buenos, cada tema es un vídeo de entre 5-10 min así que no hay pierde y además los temas los explica de manera muy clara 100% recomendado
Saludos desde México, la verdad es que mientras programo te escucho y de todos los canales que sigo, uno de los más prominentes es el tuyo, me gusta que además del conocimiento que aportas a los programadores también nos instruyas en cosas que no vemos muy a menudo en los videos.
Excelente explicación es un mundo el cambio de la POO que se escucha en la calle, a la verdadera teoría pura de objetos, hace poco termine unos cursos sobre esto y me cambio mi manera de pensar y de programar en un 1000%.
suena interesante, pero existe alguna comparativa de algun producto real vs su version digamos en C o java, me interesa para ver que ventajas podria tener. Siempre se dice que lo mas complicado es tener un soft que sea adaptable a los cambios sin hacer tanto refactor, que ventaja tendria en este sentido?
@@JOSECCB10 puedes hacer unas pruebas en smalltalk que es un ambiente de objetos vivos, pero el mayor concepto es la aplicación de los lineamientos de la teoría verdadera y pura de objetos en cualquier lenguaje hasta donde te lo permita, yo la aplico usando .netcore creando representaciones reales del dominio en forma de objetos y haciendo colaboraciones entre ellos. La empresa 10 pines da cursos internacionales sobre diseño avanzado con objeto bajo los lineamientos de Alan Kay
Hola, te recomiendo que veas los lenguajes Erlang/Elixir y Pony, implementan el modelo de actores, que es a lo que Kay se referia con POO. Alan Kay reconoció a Erlang como el lenguaje que más se acerca a su visión de POO. Joe Armstrong, co-creador de Erlang, prefería llamarlo Programación Orientada a la Concurrencia.
Quiero felicitarte por tu canal, tienes una buena combinación de tu dia a dia en un pais tan distante, tendencias de software y aspectos técnicos. Estoy muy agradecido por tus vídeos que resultan entretenidos, educativos y motivacionales. Exitos!
Últimamente me he metido con temas design patterns y como la POO no soluciona todos los problemas, estaría genial que hablaras en un vídeo de Design Patterns, Gran video
En la startup en la que trabajo, el líder nos preguntó a todo el equipo de tech: “qué es programación orientada a objetos?” La verdad, pocos supimos explicar bien qué era. Muchas gracias por explicar, ya tengo un enfoque más claro de lo que es y de lo que originalmente era.
Me recuerda a lo que es el modelo de actores al momento de que explicas la forma en la que los mensajes son despachados. Hace un tiempo trabajé en sistemas de compra/venta de acciones y se utilizaba el modelo de actores para establecer comunicación entre las diferentes partes del sistema dentro de lo que era el scope de la aplicación propiamente tal. La herencia siempre me ha parecido tóxica por eso es importante creo yo favorecer lo que es la composición frente a lo que es la herencia y un nivel más allá sería utilizar lo que es inyección de dependencias para poder visibilizar jerarquías y colaboraciones si es que quieres algo más estructurado. Para sistemas distribuidos conozco 2 formas de organizar las colaboraciones 1.- Mediante orquestación 2.- Mediante coreografía en base a mi experiencia las orquestaciones son siempre un poco menos caoticas que las coreografías puesto que la coreografía no centraliza las dependencias en un único punto de unión para la colaboración y se hace necesario tener un dibujo a mano de la arquitectura si o si para poder entender donde va cada cosa. Otra cosa con la que he pecado y he visto es responder de forma sincrona en componentes que no requieren respuesta... en sistemas distribuidos que requieren un alto performance y baja latencia lo mejor en un contexto de comunicaciones basadas en el protocolo http es arrojar un 202 lo antes posible para liberar recursos de red y no bloquear los sistemas. Creo que me desvié del tema y escribí demaciado jajajaja
Si a usted la Herencia le parece tóxica es porque bajo su conocimiento no puede concebirla más allá de la reutilización de código. Lástima que vea tan poco potencial en esa característica.
De verdad me gustó tu vídeo. Excelente. Ojalá pudieses hablar un poco más de las aplicaciones de la Teoría de Categorías a las Ciencias de la Computación. Fue toda una revelación para mí este vídeo.
La Teoría de Categorías al igual que toda formalización de sistemas axiomáticos de la Lógica Simbólica se implementa exclusivamente en ámbitos de la Computación Teórica, donde, se abordan teoremas relacionados a la decibilidad, complejidad y solución de algoritmos bajo su enfoque más teorético. En la práctica, son ineludiblemente carentes de viabilidad de uso, ya que, la gramática formal misma en la cual se fundamentan los Lenguajes de Programación debe apegarse a la concepción del modelo de la Máquina de Turing.
Es imposible crear un lenguaje de programación puro que corresponda a abstracciones matemáticas, ya que, las computadoras se rigen físicamente por estados. Sin embargo, por eso se inventaron las tecnologías de alto nivel para crear capas de abstracción y poder trabajar lo más cercano posible a estas axiomatizaciones (lenguajes como Haskell, por ejemplo); no obstante, son demasiado complejos de aprender y, a los programadores actuales, no les gusta lo difícil.
Me parece un tema Interesante!, de hecho una de mi principal barrera mental que tengo en la programación es entender afondo la programación orientada a objetos solo entiendo la punta del Iceberg en este tema, me gustaría saber donde puedo obtener más documentación sobre este paradigma de programación, te felicito Nicolás! tus videos son muy motivantes para seguir en esta carrera. un saludo desde Colombia y muchos éxitos!
1 ahora soy fan de Ivan Sutherland y Alan Kay que carajo tan pro.... 2 alan key es una mente 3 este es el mejor video para explicar como trabaja una funcion (function) cuan importante es y porque debes trabajar con informacion dinamica y no estatica; Los valores no se limitan a si una simple accion el objetivo de trabajar con programación orientada a objectos es simple, reutilizar y limitar el acceso a diferentes acciones sin tener que limitar nuestro trabajo ... Man 10 de 10 este video, complejo si pero muestra lo que todo coder necesita saber de la programacion orientada a objetos
Excelente video, muy interesante: "POO: El regreso de la promesa", entiendo la idea pienso que al alcanzar ese punto vendría otro nivel en la seguridad.
Me recuerda mucho al patrón MVC (modelo - vista - controlador). Creo que la mayoría de los frameworks han implementado esta visión de orientación a objetos en cierta manera, aunque se olvidaron de los sistemas distribuidos y en red en favor de una caché centralizada. Ojalá se avance en este aspecto con más fuerza. Gracias por el vídeo, me recordaste simula, smalltalk (para mí el más avanzado de la época en orientación a objetos). List era una caña, para mí ha sido el mayor desperdicio de la programación actual. Ójala estos conceptos tengan un renacimiento adaptado al siglo xxi.
Wow lo había estado esperando mucho desde que mencionaste que ibas a hacer este video, un saludo desde México, eres de mis creadores de contenido favoritos, un abrazo y mucho éxito Nico!
Interesante el video. Despues de años recien ahora estoy aprendiendo OOP mediante el estudio de los patrones de diseño. Eh visto algo de oido de funcional, como lo hacia de objetos. El polimorfismo es una manera muy interesante de abstraer detalles de conceptos de implementacion, creo que la OOP te da una vision estructral/arquitectonica muy solida para organizar el codigo, para mi son interesantes las dos maneras funcional, y OOP.
Ambas son equivalentes, ninguna es mejor que la otra. De hecho, la concepción de objetos como estructuras algebraicas se venía abordando desde muchísimo antes. No obstante, la Orientación a Objetos superó las expectativas cuando introdujo acepciones como la Herencia a la mesa.
Exactamente lo mismo que yo pensé, para ser mas específicos me imagine microservicios integrados con alguna librería de mensajes como por ejemplo kafka
@@JAlbertSG de hecho me recordó a la teoría de sistemas distribuidos lo expuesto en el vídeo... De hecho recuerdo que había usado Kafka para emular un modelo de sistema distribuido...
Que genial. Estoy aprendiendo código y para empezar solo js. css. y html. Aquí entendí mucho más claro que es un objeto. Ya he visto varios de tus videos y me encantan. Explicas muy bien. ¿Podrías hacer un video hablando sobre algo técnico avancada? Algo para los que saben y para los que no sabemos, tener una idea de cuánto universo nos queda por aprender.
Excelente tema, una vez trabajé en la actualización de un proyecto custom donde todo estaba orientado a objetos, las vistas, las consultas de la base de datos, todo, era muy interesante pero lo considero poco práctico para un desarrollo rápido, los frameworks actuales se hacen mas orientados a programación funcional porque es mas fácil de leer e interpretar para los seres humanos. ejemplo de esto reactjs.org/docs/components-and-props.html
Excelente tu contenido bro, como siempre. No sé si te han mencionado esto con anterioridad, las ediciones de tus vídeos son excelentes y tienen mucho nivel. Pero esta en particular se excedió un poco, en el sentido de que las referencias que colocabas no parecían encajar del todo con lo que hablabas y por un momento tuve que pausar y retroceder el vídeo para retomar lo que decías. Es solo una pequeña observación que pude notar así que no es mal de morirse. Recuerdo que cuando empece aprender y escuchar sobre POO, fue con Java y al leer un poco sobre la historia siempre hacían inca-pie sobre los orígenes de Java, pero nunca sobre el paradigma de POO. Gracias por compartir un poco de historia. Saludos.
Me gustó el video pero me hubiera gustado más si en la última explicación hubieses aclarado bien la diferencia entre esa teoría y la implementación con las clases, porque la verdad si no estoy mal todo lo que dijiste creo que se puede hacer normalmente con la POO de Java y C++. También me hubiera gustado ver un ejemplo de la verdadera POO en Javascript o Python y por qué es más parecido a lo que decía Alan Kay. Bueno, de todas formas buen video, sigue así.
De acuerdo, hubiera sido bueno un paralelo como el que propones. Sin embargo, de lo que entendí es que Alan Kay le da una calificación de penosa a la POO de Java (y al Java mismo, ver el otro video), y esa frase viniendo de alguien que sabe de lo que habla tiene su peso. Esa es la primera pista. La segunda pista en este video la dan cuando Nicolás cuenta que un lenguaje que maneja subclases equivoca la versión original de Alan Kay. Y la última pista la da cuando cita a Eric Elliot criticando al _"fallido experimento de la herencia por clases"_ y _"la necesidad de integrar áreas matemáticas en el desarrollo"._ En ese sentido, la Teoría de Categorías debería ser de obligatorio aprendizaje en la formación o autoformación de los programadores. Como cuestión crucial, deberíamos entender de que aunque en Java se puedan hacer programas que funcionarán por siempre (con su particular POO), no significa que la manera en que fueron programados sea la mejor implementación, ni logra el mínimo costo de horas por humano, ni es la más simple o la más eficiente
Excelente video, solo un dato interesante sobre un language ya no tan popular estos dias: En Objective-C tu no ejecutas "methods" envías "messages" y el objeto en runtime decide que hacer con el. Muy parecido a la filosofía de SmallTalk. Saludos
Lo que Alan propone requiere que las limitaciones colocadas por la infraestructura sean reemplazadas o abstraídas (puertos, servicios, peticiones HTTP, sockets). Algo que algunos lenguajes de programación han tratado de hacer desde hace mucho (ASP.NET, J2EE, Python) pero les ha quedado grande.
Totalmente de acuerdo, por el lado Steve Jobs fué Paul Allen el genio en Microsoft y por el lado de Steve Jobs fué Steve Wosniak en Apple, mi preferido de todos. Aunque si nos vamos a principios de los 80 lo único que recuerdo es el Commodore 64, El 128 y el Apple 2C, los mejores! Y el nunca bien ponderado mi Sinclair ZX81 con 1KB. 8) ok, ok, y el Atari 800XL, ya está... todos contentos.
Microservicio es algo completamente diferente pero entiendo lo que mencionas, aunque esto tiende más a parecerse a la programación reactiva asíncrona y basado en eventos.
Después de ver el vídeo, la opinión que me deja es que un paradigma mucho más parecido a la idea original de Alan Kay, es la Programación Orientada a Agentes. Yo hice mi tesis de grado basada en un sistema multiagente y, mientras más hablabas, más recordaba los fundamentos y mecanismos para la construcción de este tipo de sistemas.
Buena onda que hagas conocer al obra de Alan Kay, genio de las cs de la computacion. Pero como programador de Smalltalk desde hace 6 años, pienso que no hay porque ser tan drástico con el punto del "fracaso de la herencia" como mencionas al final del video. Si, es cierto que POO se trata mas de objetos, mensajes y colaboraciones... que de clases y herencia. Pero estos no son conceptos contrapuestos. Como bien dijiste, C++ y Java solo tomaron una porcion de los conceptos de la programacion orientada a objetos... entre esos conceptos tomados, estan las clases, la jerarquizacion del conocimiento y la herencia del mismo. Es decir, estos conceptos ya estaban en Smalltalk (no recuerdo exactamente en que version, pero en la 80 ya estaba seguro). De hecho en Smalltalk, las clases son un objeto como cualquier otro, si hasta los mensajes son objetos! que digo! hasta el propio Smalltalk es un entorno vivo (es decir, un objeto!). Por lo tanto, esto no va contra la idea original de Alan Kay, es cierto que no es la esencia, pero coexisten... Voy un paso mas alla, usar clases no solo no contradice lo hecho por Alan Kay, sino que Smalltalk es un dialecto de POO que se inclina mas para el lado de la categorizacion del conocimiento en familias jerarquicas (es decir, usar clases), muy por el contrario al lenguaje Self que tambien pertenece al paradigma orientado a objetos y por el contrario, es un lenguaje de objetos prototipados y ahi si, no existen las clases (es decir, ahi si que se puede implementar el patron Singleton correctamente jaja). Entonces, lo malo de haber pensado POO en la manera que nos enseñó C++ y Java, no es por usar clases (que repito, no está mal, no es grave, ni siquiera contradice el trabajo que se hizo en Smalltalk)... lo malo es que las practicas usadas en dichos lenguajes hicieron que los programadores, durante decadas no respetaran los conceptos de encapsulamiento (todos usan setters y getters impunemente), no trabajen la cohesion de sus objetos, el acoplamiento de sus modulos (es muy comun que un mismo objeto de modelo sepa como renderizarse, como bajarse a disco, como imprimirse en pantalla, como transformarse en un json... mezclando las responsabilidades y desaprovechando el concepto de mensajeria). Creo que el tema va por ahi, y de hecho podrian ser excelentes temas para que hables en videos. Buenas practicas de programacion. Finalmente, leyendo algunos de los comentarios, creo que muchisimos entendieron que el tema de la mensajeria y los objetos aislados, hace referencia a arquitecturas distribuidas, microservicios o sistemas de brokers o queues... cosas que no necesariamente van de la mano. Nuevamente, lo importante no es el mensaje en sí... lo importante es que el mensaje tambien es un objeto y tiene las mismas caracteristicas que todos los objetos, solo conoce sus colaboradores internos y eventualmente externos. El emisor del mensaje conoce al receptor, pero el receptor no conoce al emisor, asegurando asi, que el comportamiento reactivo del receptor no dependa de quien fue el emisor, sino que depende unicamente del contenido del mensaje (que eventualmente podria incluir la referencia del emisor... pero no es lo usual). En cambio, cuando hablamos de brokers o colas de mensajeria... como rabbitmq o apache kafka, claramente hay una red de por medio, hay protocolos de nivel de transporte, de aplicacion... hay handshake de ambas partes, se conocen mutuamente y se intercambian mensajes mutuamente todo el tiempo (por ejemplo un heartbeat). Por lo tanto, me parece que se fueron por las ramas haciendo ese tipo de comparaciones.... creo que hubiera sido mejor si tu ejemplo se hubiera basado en algo que no involucre un servidor, una vista, un almacenamiento, etc... podias hacer un simple ejemplo con objetos solo de modelo y ya.. y hasta en un entorno como Pharo, para mostrar como es eso de crear, modificar o eliminar objetos en runtime. Espero que muestres mas videos de POO y Smalltalk! Buen canal, saludos desde argentina
@@cerealguyfrank5509 yo creo que smalltalk es de los lenguajes mas intuitivos y fáciles de aprender. Tiene una sintaxis muy simple y concisa (tiene solo un puñado de palabras reservadas... true, false, nil, self y super).. todo lo demas se puede sobreescribir. Encima eso de "Todo es un objeto en smalltalk", hasta el ambiente, que está vivo... es espectacular. Te da muchisimas ventajas... Tenes el codigo de todo el lenguaje, del entorno y de la vm ahi a tu alcance, podes cambiarlo a tu antojo. Poder debuggear el codigo con un debugger super amigable, tanto que te permita ver el contenido de variables, resultados intermedios de codigo, modificar el codigo on-the-fly... no tiene precio. Quizas lo mas complicado es la parte "filosofica" y "paradigmatica" de smalltalk... mas si venis de otros lenguajes bien imperativos como C++ o Java. Si es tu primer lenguaje, creo que es un paseo por el parque.. es mas parecido a experimentar y jugar en un jupyter notebook, con una sintaxis aun mas facil. Por otro lado, si efectivamente venis de C++ o Java, lo mas dificil es empezar a dejar de pensar en imperativo, para pasar a pensar en colaboraciones de objetos que se comunican por mensajes... eso puede ser un salto mental enorme, pero vale la pena. Despues de eso, no solo aprendes un lenguaje nuevo, sino que para mi, te llevas un monton de re buenas practicas de modelado a otros lenguajes donde eso no es moneda corriente.
Me gustó el video.... Felicitaciones es la misma duda que tuve siembre y con miedo de expresar... Al final es importante pensar en lógica... Mantenerse activo...
Sería interesante si hicieras un vídeo sobre los lenguajes lógicos/relacionales, como Prolog, que nació en la misma época que Lisp, pero nunca ha llegado tener una apreciación igual a otros paradigmas por la industria y la academia
En mi universidad se le dio bastante importancia y dios mío, fue un dolor de cabeza entenderlo. Actualmente se usa para inferir información de un texto mola mucho :P
@@nassreml curioso, yo apenas entraré a la universidad y por lo que he visto es algo opcional y ya en un punto avanzado en la carrera, de todas formas me interesa y estoy aprendiendo por mi cuenta, algún consejo?
@@sergiosanchez3229 Sí, cierto. Es ya en un punto más avanzado donde también se da web semántica, inferencia de información... El consejo que te puedo dar es que practiques mucho y que cuando veas que no puedes resolverlo busca otros puntos de vista evita perder el tiempo estando estancado, no ganas nada ahí, intenta despejarte, hacer otras cosas
Tuve que repetir el video varias veces para entenderlo,jaja, eres todo un PRO al iniciar tu video dando argumentos solidos con algo tan controversial, esos es Nivel Dios . YA ME SUBSCRIBI!!!
Excelente video! La verdad todos tus videos han sido muy buenos en mi opinión. Me gustaría que hicieras algún video sobre la IA o los ganadores del premio Turing, pues tienes una manera de explicar excelente. Saludos desde CR!
gracias por los videos cada semanas son temas muy interesantes y que siempre espero para ver, este video lo repeti como 5 veces y aun asi no logro entenderlo del todo jajajaja
Hola! En videos como este sería genial que coloques las referencias en las que te basas para tus videos, asi, quienes lo desean, pueden profundizar más.
En realidad los verdaderos creadores fueron Johan Dhal y Kristen Nygaard con Simula en la década de los 60. Según mi conocimiento histórico, la tecnología de ellos fue creada antes de Smalltalk, así que es imposible que Kay fuera el primero en concebir el concepto de "objeto". Ahora bien. aún cuando Kay hubiese sido primero; siéndole sincero, su modelo es bien ortodoxo y poco práctico. El sistema que Alan Kay dio no es ideal para las corrientes modernas de estandarización de principios de Arquitectura de Software.
Aunque claro, yo siendo Alan Kay me hubiera esforzado un poco más en demostrar que la corriente por la cual yo estuviera yendo es más eficiente. Dejó mucho qué desear en lo que testificó acerca de este supuesto hecho en el cual éste se autoproclama como el creador de la programación orientada a objetos.
Muy interesante, lo curioso es que lo que explicas es la definición de micro servicios jejejeje, son piezas independientes que se comunican por mensajes y cada uno se encarga de sus propios métodos y problemas sin externalizarlos. Muy buen dato histórico
Q entretenido es escuchar toda la historia y me encantó los videos q subes soy nuevo aquí y llegué aquí buscando cosas de programascion por q nose si inclinarme a eso me encanta mucho pero tengo miedo de q sea muy difícil
Me acordé mucho de mis clases de estilos y lenguajes de programación, en esa época me toco aprender prolog y todavía es difícil de entender, muy chévere tus vídeos, no sé por qué me gustaría mucho una clase de ola mundo en la U o en platzi.
Esta bien interesante que la antigua forma de análisis a través de eventos se bien reflejada en el manejo de estado de react, como que tomaron muy en cuenta esto para mantener el ciclo de vida de un componente.
Es interesante ver cómo la Arquitecta de microservicios, se parece mucho a lo explicado en el vídeo, el desarrollo de componentes distribuidos, los apigetways, la abstracción de objetos como servicio y su antología sobre el guardar el estado, etc.
Muy bueno es algo profundo pero si ves el vídeo concentrado lo entiendes... X cierto me gusta este formato para explicar con la pantalla genial. Saludos y éxitos.
Hola mundo..! Encontré tu canal por casualidad, y realmente a sido un regalo haberlo visto cada vídeo es increíble y me motiva a seguir aprendiendo, ya tengo en mente seguir tu ejemplo migrar soy de Ecuador. En que orden me recomiendas seguir tus cursos para optar por una oportunidad de trabajar como tú en Nueva Zelanda. Mil gracias por toda la info qque compartes, chao mundo :D un fuerte abrazo
Interesanteeeeee... Uno de los videos de tu canal que tiene un excelente contenido...
4 роки тому
Interesante vídeo, y la verdad tiene mucho sentido el modelo original de Kay... No sé, pero se me asemeja en algunos aspectos a la teoría de sistemas distribuidos...
eso estoy tratando de hacer desde hace mucho 🤣🤣🤣🤣🤣🤣, incluso cree un microprograma en phyton que actuaba solo si recibia la orden de otro programa hecho en visual basic, funciona, pero aun estoy pensando como solucionar el problema de un posible rollback por x motivos, para eso se me ocurrio una programación orientada (privado), despues lo dare a conocer, buen video amigo
todos :
que interesando el tema
yo :
que buena barba bro
jajaj te mamaste
Podrías hacer un video sobre tu ruta de aprendizaje para llegar a lo que eres ahora? o algo parecido?. eres bacan =)
Estaria interesante
Apoyo la idea
@HolaMundo, si estimado te lo agradeceríamos mucho 💪🏻👍🏻
Apoyo
Apoyo
Nicolás, buenas noches, te veo desde Argentina, tengo que decirte que me pone muy contento la calidad que está teniendo tu contenido, espero sigas así, porque está genial, creo que vas a llegar muy lejos 😁🔥
Hay no falta que le de un beso no mas😅
Esto lo leí en su día, pero no recuerdo si por vía de Uncle Bob, o curioseando directamente por algún blog. El caso es que lo he seguido leyendo aplicado a otras áreas como el testing (Steve Freeman, Nat Pryce) o como dicen más abajo, a microservicios.
Me pareció bastante iluminador cuando lo leí por primera vez, pero se me ha ido difuminando junto a toda la pila de conceptos que uno va recogiendo por el camino. A mí parecer muchos de los principios SOLID derivan en parte de esa primera intuición, que no es más que dotar de autonomía a cada entidad y limitarlo a una canal de comunicación controlado. Pero entiendo que recurrir a una analogía física sea tan socorrido y útil para explicar otro tipo de abstracciones.
Muy top el vídeo.
De los mejores videos que he visto en tu canal. Gracias por el contenido! En base a la poca experiencia que tengo, puedo decir que Ruby si implementa el modelo de Alan Kay de OOP. Fue muy inflienciado por SmallTalk. Si algún beginner ve este comentario, le recomiendo mucho que aprenda Ruby en vez de Java para OOP.
Estoy totalmente de acuerdo, con el profe. Una cosa son los líderes comerciales de la industria de la tecnología y otra, los que se destacan por el contenido técnico.
soy diseñador ui y maquetador web (maqueto para angular y react.js en estos momentos) hace más de 7 años, también me he metido en la programación en los proyectos y aunque aveces me cuesta entender estos vídeos son oro puro, gracias por compartir tu conocimiento con nosotros.
Gracias. He revisado la historia de los lenguajes de programación, historia de sus conceptos, entre otros. Hay muchísima bibliografía en inglés en ese ámbito.
Pero reducida discusión en castellano.
GRACIAS POR TU APORTE
Gracias Shifu, si tan solo hubiera más gente como tú. Creo que esto de la educación a distancia sería todo un éxito. Eres un genio. Gracias por todo tu esfuerzo
Buen aporte el de mencionar el fundamento matemático (teoría de las categorías) de los paradigmas que utilizamos para programar. Muchas gracias.
Hola Mundo de Nicolás,
Me fascino este vídeo porque me permitió reencontrarme conmigo mismo, nunca he podido mascar el paradigma de la POO no sé porque, egresé de la USACH el 90 y salí con la programación de esos años y hasta que llegue al año 2K o 2k+1 donde construí o desarrolle mi mágnum opus, fui unos de los arquitectos del sistema de pago "Sencillito", en realidad lo había modelado en mi mente el año 91 cuando nos reunimos todos los compañeros egresados y todos habíamos cambiado de ser estudiantes mantenidos por recién casados con primeras pegas y fue en una de esas juntas en qué salió en la conversación además de hablar de pega el cacho en qué consistía pagar cuentas y salió la pregunta ¿No habrá un sistema donde vayas y pagues todas las cuentas juntas en vez de ir de banco en banco o de centro de pago en centro de pago? era poco eficiente y se perdía tiempo. En ese momento me vino a la mente la solución del "la máquina de estados", la compartí de inmediato con mi ex compañeros lo validamos y salió el OK, pero "donde echarlo a correr" y ahí salió lo pobre de nuestra visión de ese año 91.
Desde ese año 91 al 2000 me hice bueno para las bases de datos y programación en C y me hice consultor Oracle, estando en Oracle Chile un día en un pasillo en la oficina de Oracle escuche hablar a mis compañeros consultores referido al desarrollo de "Sistema Financiero de GTECH(Administrador de la red de terminales de La Polla en esos años)" , les pregunté ¿A qué se referían? por si se trataba del financiero contable del ERP de Oracle en GTECH y la respuesta de “Cristian L y Hestor P”, fue muy ambigua porque él no tenía claro como que estaban desarrollando y me dicen... "No es como un mecanismo donde vas donde juegas al Loto y pagas una cuenta de servicios del hogar", bueno mi respuesta fue la de un torpe ingeniero que no cuida lo que lo que vale y se produjo la siguiente conversación:
Yo: "Es re fácil"
Hestor P y Cristian L; ¿Porque es fácil?
Yo: "¿Dónde correrá el Sistema Financiero de GTECH?, ¿En el mismo servidor de los terminales del Loto?
Hestor P y Cristian L; "¡No tenemos idea! "
Yo: "¿La base Oracle estará instalada en algún servidor UNIX o en el VMS del Loto? "
Hestor P y Cristian L; "¡No sabemos todavía!"
Yo: "Si están en máquinas diferentes desarrollas un socket en el Servidor Oracle y lo comunicas con el VMS en base al protocolo de comunicación", Les consulté ¿Cuál sería el ancho de banda entre los servidores?
Hestor P y Cristian L; "¡Cachamos menos de los nos estás preguntando! "
Yo: me retire del pasillo hablando en voz alta diciendo "Si el canal es 10 mb habría que programar las "TLI"de la capa 2 del TCP y desarrollar la máquina de estado en el lado del Oracle".
Paso un par de semanas "Cristian L y Hestor P" me invitaron a ser parte del equipo "Sistema Financiero de GTECH" y qwe me encargaría de las comunicaciones.
Yo les dije que bueno, les volví a preguntar lo del canal de conexión y si tenían la respuesta
Cristian L y Hestor P: "Los servidores estarán conectados por fibra óptica(hilacha de ojo)".
Yo: "Es más fácil entonces solo hay que programar la aplicación(la máquina de estado)", les pregunté ¿Tienen el protocolo de la mensajería?
Cristian L y Hestor P: "¡No tenemos idea! "
Bueno en reuniones posteriores apareció el protocolo de mensajería he hice mi pega que en esencia motivo esté relato, esa máquina de estado que es el gestor transaccional (ACID) lo explique antes de programarlo como explicas la POO según "Alan"
Saludos Nik
Muchas gracias por esta historia, muy motivante sin duda
Es cierto el POO es muy iportante y a la hora de hacer Poliformismo puedo aclara que Python es muy efectivo y ademas el el unico que puede hacer simple y multiple Herencia, Instancia y Encapsulamento.
Gracias por su video es muy interesante sobre todo a quien que todavia no usa el modo de programa POO.
Excelente vídeo!!! Se puede intuir que la teoría de POO elaborada por Alan Kay constituye la base fundamental de la arquitectura de sistemas basadas en microservicios, la cual funciona mediante sistemas independientes los cuales se comunican a través de mensajes, indicando los resultados de la operación solicitada. Estos sistemas pueden estar desarrollados en distintos lenguajes ya que utilizan el protocolo universal http para comunicarse entre ellos. Tu explicación ha sido de 10, sigue así crack !!
Ojalá en las universidades enseñaran esto y hubiesen profesores tan dedicados como tu. Excelente video!!!
Pienso lo mismo...
Qué pasada! Lambda calculo, categorías, álgebras de verificación... Me quito el sombrero. Gracias por el vídeo. Increíblemente didáctico para la profundidad que alcanzaste.
excelente video yo siempre pense que la orientacion a objetos eran solo colocar botones o imagenes y cosas asi y ya que estoy empezando esto me va genial entenderlo
Mientras veía el vídeo, muchas cosas "familiares" aparecían en el camino. La forma en que se propone un sistema basado en la conexión de "objetos" basados en mensajes, al igual como algunos frameworks de JS funcionan al día de hoy: React - Redux, Vue - Vuex, aplicando particularmente la lógica de listening y mutating para los componentes con los que se conforma el sistema/aplicación. Buen video!
Un video fantástico 10/10
PD: Estoy haciendo tu curso de Javascript , HTML, CSS3 y NodeJS desde cero y es increíble.
felicidades :D
donde está ese curso??
Yo igual estoy haciendones esa ruta de aprendizaje pero con video de otros programadores en UA-cam. He aprendido un monton. Igual quisiera tomar esos cursos. Pregunta; Que tal los cursos de él? Me imaginos que son bueno.
@@juanpabloshortfilms Son bastante buenos, cada tema es un vídeo de entre 5-10 min así que no hay pierde y además los temas los explica de manera muy clara
100% recomendado
Css3 es una version antigua, hay que actualizarse
@@erickfernandocastaneda9871 xD?
Saludos desde México, la verdad es que mientras programo te escucho y de todos los canales que sigo, uno de los más prominentes es el tuyo, me gusta que además del conocimiento que aportas a los programadores también nos instruyas en cosas que no vemos muy a menudo en los videos.
Excelente explicación es un mundo el cambio de la POO que se escucha en la calle, a la verdadera teoría pura de objetos, hace poco termine unos cursos sobre esto y me cambio mi manera de pensar y de programar en un 1000%.
suena interesante, pero existe alguna comparativa de algun producto real vs su version digamos en C o java, me interesa para ver que ventajas podria tener. Siempre se dice que lo mas complicado es tener un soft que sea adaptable a los cambios sin hacer tanto refactor, que ventaja tendria en este sentido?
@@JOSECCB10 puedes hacer unas pruebas en smalltalk que es un ambiente de objetos vivos, pero el mayor concepto es la aplicación de los lineamientos de la teoría verdadera y pura de objetos en cualquier lenguaje hasta donde te lo permita, yo la aplico usando .netcore creando representaciones reales del dominio en forma de objetos y haciendo colaboraciones entre ellos. La empresa 10 pines da cursos internacionales sobre diseño avanzado con objeto bajo los lineamientos de Alan Kay
Hola, te recomiendo que veas los lenguajes Erlang/Elixir y Pony, implementan el modelo de actores, que es a lo que Kay se referia con POO. Alan Kay reconoció a Erlang como el lenguaje que más se acerca a su visión de POO. Joe Armstrong, co-creador de Erlang, prefería llamarlo Programación Orientada a la Concurrencia.
Quiero felicitarte por tu canal, tienes una buena combinación de tu dia a dia en un pais tan distante, tendencias de software y aspectos técnicos. Estoy muy agradecido por tus vídeos que resultan entretenidos, educativos y motivacionales. Exitos!
Sarpado el vídeo... Estoy con Laravel aplicando POO me vino de 10! Saludos desde Salta-Argentina
Últimamente me he metido con temas design patterns y como la POO no soluciona todos los problemas, estaría genial que hablaras en un vídeo de Design Patterns, Gran video
En la startup en la que trabajo, el líder nos preguntó a todo el equipo de tech: “qué es programación orientada a objetos?” La verdad, pocos supimos explicar bien qué era.
Muchas gracias por explicar, ya tengo un enfoque más claro de lo que es y de lo que originalmente era.
Me recuerda a lo que es el modelo de actores al momento de que explicas la forma en la que los mensajes son despachados. Hace un tiempo trabajé en sistemas de compra/venta de acciones y se utilizaba el modelo de actores para establecer comunicación entre las diferentes partes del sistema dentro de lo que era el scope de la aplicación propiamente tal. La herencia siempre me ha parecido tóxica por eso es importante creo yo favorecer lo que es la composición frente a lo que es la herencia y un nivel más allá sería utilizar lo que es inyección de dependencias para poder visibilizar jerarquías y colaboraciones si es que quieres algo más estructurado. Para sistemas distribuidos conozco 2 formas de organizar las colaboraciones 1.- Mediante orquestación 2.- Mediante coreografía en base a mi experiencia las orquestaciones son siempre un poco menos caoticas que las coreografías puesto que la coreografía no centraliza las dependencias en un único punto de unión para la colaboración y se hace necesario tener un dibujo a mano de la arquitectura si o si para poder entender donde va cada cosa. Otra cosa con la que he pecado y he visto es responder de forma sincrona en componentes que no requieren respuesta... en sistemas distribuidos que requieren un alto performance y baja latencia lo mejor en un contexto de comunicaciones basadas en el protocolo http es arrojar un 202 lo antes posible para liberar recursos de red y no bloquear los sistemas. Creo que me desvié del tema y escribí demaciado jajajaja
Si a usted la Herencia le parece tóxica es porque bajo su conocimiento no puede concebirla más allá de la reutilización de código. Lástima que vea tan poco potencial en esa característica.
De verdad me gustó tu vídeo. Excelente.
Ojalá pudieses hablar un poco más de las aplicaciones de la Teoría de Categorías a las Ciencias de la Computación.
Fue toda una revelación para mí este vídeo.
La Teoría de Categorías al igual que toda formalización de sistemas axiomáticos de la Lógica Simbólica se implementa exclusivamente en ámbitos de la Computación Teórica, donde, se abordan teoremas relacionados a la decibilidad, complejidad y solución de algoritmos bajo su enfoque más teorético. En la práctica, son ineludiblemente carentes de viabilidad de uso, ya que, la gramática formal misma en la cual se fundamentan los Lenguajes de Programación debe apegarse a la concepción del modelo de la Máquina de Turing.
Es imposible crear un lenguaje de programación puro que corresponda a abstracciones matemáticas, ya que, las computadoras se rigen físicamente por estados. Sin embargo, por eso se inventaron las tecnologías de alto nivel para crear capas de abstracción y poder trabajar lo más cercano posible a estas axiomatizaciones (lenguajes como Haskell, por ejemplo); no obstante, son demasiado complejos de aprender y, a los programadores actuales, no les gusta lo difícil.
LLevaba tiempo sin ver contenido de esta calidad, me encanta
Wooo. Me encantan estas cápsulas informativas, muchas gracias por la cátedra.
Muy interesante tema .
Ahora estoy aprendiendo HTML, CSS , Javascript ,NodeJS en su curso .
Me parece un tema Interesante!, de hecho una de mi principal barrera mental que tengo en la programación es entender afondo la programación orientada a objetos solo entiendo la punta del Iceberg en este tema, me gustaría saber donde puedo obtener más documentación sobre este paradigma de programación, te felicito Nicolás! tus videos son muy motivantes para seguir en esta carrera. un saludo desde Colombia y muchos éxitos!
1 ahora soy fan de Ivan Sutherland y Alan Kay que carajo tan pro.... 2 alan key es una mente 3 este es el mejor video para explicar como trabaja una funcion (function) cuan importante es y porque debes trabajar con informacion dinamica y no estatica; Los valores no se limitan a si una simple accion el objetivo de trabajar con programación orientada a objectos es simple, reutilizar y limitar el acceso a diferentes acciones sin tener que limitar nuestro trabajo ...
Man 10 de 10 este video, complejo si pero muestra lo que todo coder necesita saber de la programacion orientada a objetos
Excelente video, muy interesante: "POO: El regreso de la promesa", entiendo la idea pienso que al alcanzar ese punto vendría otro nivel en la seguridad.
Ahora entiendo el porque React se ha ido apartando del uso de clases, y el uso del reducer con el dispatch, estupendo video. Gracias por tus aportes.
@@esde3210 sin embargo existe quienes quieren trabajar con Javascript orientado a objetos si o si
que bueno lo de aclarar sobre leyendas comerciales e informáticas
Muy bueno, me gustan tus videos me los estoy viendo todos desde eo primero hasta el mas actualizado, saludos desde colombia
"Bueno, creo que ya entendiste ese punto", lo mejor😂😂😂😂
Excelente. Los enemigos de la OOP (la de Java y C++ digo) son mis amigos.
Hola mundo!!. Muy buena tu explicación. Mas claro échale agua!.
Es la mejor información que he visto acerca de programacion orientada a objetos.
Mi profesor de POO-1 conoció a Alan Kay. Él lo invito a una conferencia en Argentina y se presentó. Un crack.
Quien fue tu profesor de poo?
Cada video que subes vas subiendo la calidad, impresionante! un saludo!
*Increíbles tus videos. Cuando vi el primer video tuyo, me suscribí al minuto de verlo. Tienes mucho talento. Gracias por el contenido.*
La selección de música es bestial!
Me recuerda mucho al patrón MVC (modelo - vista - controlador). Creo que la mayoría de los frameworks han implementado esta visión de orientación a objetos en cierta manera, aunque se olvidaron de los sistemas distribuidos y en red en favor de una caché centralizada. Ojalá se avance en este aspecto con más fuerza.
Gracias por el vídeo, me recordaste simula, smalltalk (para mí el más avanzado de la época en orientación a objetos). List era una caña, para mí ha sido el mayor desperdicio de la programación actual.
Ójala estos conceptos tengan un renacimiento adaptado al siglo xxi.
Has un curso de programación orientada a objetos, con tu conocimiento y explicación podría ser el mejor curso de POO jamás antes visto.
Wow lo había estado esperando mucho desde que mencionaste que ibas a hacer este video, un saludo desde México, eres de mis creadores de contenido favoritos, un abrazo y mucho éxito Nico!
Me agrada mucho su contenido en los videos, hace que uno se inspire, excelente contenido!!
Interesante el video. Despues de años recien ahora estoy aprendiendo OOP mediante el estudio de los patrones de diseño. Eh visto algo de oido de funcional, como lo hacia de objetos. El polimorfismo es una manera muy interesante de abstraer detalles de conceptos de implementacion, creo que la OOP te da una vision estructral/arquitectonica muy solida para organizar el codigo, para mi son interesantes las dos maneras funcional, y OOP.
Ambas son equivalentes, ninguna es mejor que la otra. De hecho, la concepción de objetos como estructuras algebraicas se venía abordando desde muchísimo antes. No obstante, la Orientación a Objetos superó las expectativas cuando introdujo acepciones como la Herencia a la mesa.
Te felicito, he peleado por años esos puntos y compartimos tus conocimientos y opiniones
Se parece mucho esto a microservicios.
Exactamente lo mismo que yo pensé, para ser mas específicos me imagine microservicios integrados con alguna librería de mensajes como por ejemplo kafka
@@JAlbertSG yes, tecnológia grpc
Sisi, pense lo mismo
también se parece a cómo se trabaja con Redux
@@JAlbertSG de hecho me recordó a la teoría de sistemas distribuidos lo expuesto en el vídeo... De hecho recuerdo que había usado Kafka para emular un modelo de sistema distribuido...
Que genial. Estoy aprendiendo código y para empezar solo js. css. y html. Aquí entendí mucho más claro que es un objeto. Ya he visto varios de tus videos y me encantan. Explicas muy bien. ¿Podrías hacer un video hablando sobre algo técnico avancada? Algo para los que saben y para los que no sabemos, tener una idea de cuánto universo nos queda por aprender.
Por favor, más, quiero más, mucho más.
Muy interesante tema, muchas gracias.
Brutal tus vídeos !!! 👏👏👏👏👏👍 Me dedico al mundo del Front desde hace años y nunca dejo de aprender ! ¿ Cómo puedes saber tanto ? Eres un crack 👍👍
Sos un GEnioooo...!!! Schurman...!!!
ya estoy inscripto...!! y te seguimos teacher....!!!
Excelente la manera en la que explicas. 10 de 10.
Excelente tema, una vez trabajé en la actualización de un proyecto custom donde todo estaba orientado a objetos, las vistas, las consultas de la base de datos, todo, era muy interesante pero lo considero poco práctico para un desarrollo rápido, los frameworks actuales se hacen mas orientados a programación funcional porque es mas fácil de leer e interpretar para los seres humanos.
ejemplo de esto reactjs.org/docs/components-and-props.html
Excelente tu contenido bro, como siempre. No sé si te han mencionado esto con anterioridad, las ediciones de tus vídeos son excelentes y tienen mucho nivel. Pero esta en particular se excedió un poco, en el sentido de que las referencias que colocabas no parecían encajar del todo con lo que hablabas y por un momento tuve que pausar y retroceder el vídeo para retomar lo que decías. Es solo una pequeña observación que pude notar así que no es mal de morirse.
Recuerdo que cuando empece aprender y escuchar sobre POO, fue con Java y al leer un poco sobre la historia siempre hacían inca-pie sobre los orígenes de Java, pero nunca sobre el paradigma de POO. Gracias por compartir un poco de historia. Saludos.
Me gustó el video pero me hubiera gustado más si en la última explicación hubieses aclarado bien la diferencia entre esa teoría y la implementación con las clases, porque la verdad si no estoy mal todo lo que dijiste creo que se puede hacer normalmente con la POO de Java y C++. También me hubiera gustado ver un ejemplo de la verdadera POO en Javascript o Python y por qué es más parecido a lo que decía Alan Kay. Bueno, de todas formas buen video, sigue así.
De acuerdo, hubiera sido bueno un paralelo como el que propones.
Sin embargo, de lo que entendí es que Alan Kay le da una calificación de penosa a la POO de Java (y al Java mismo, ver el otro video), y esa frase viniendo de alguien que sabe de lo que habla tiene su peso. Esa es la primera pista. La segunda pista en este video la dan cuando Nicolás cuenta que un lenguaje que maneja subclases equivoca la versión original de Alan Kay. Y la última pista la da cuando cita a Eric Elliot criticando al _"fallido experimento de la herencia por clases"_ y _"la necesidad de integrar áreas matemáticas en el desarrollo"._ En ese sentido, la Teoría de Categorías debería ser de obligatorio aprendizaje en la formación o autoformación de los programadores.
Como cuestión crucial, deberíamos entender de que aunque en Java se puedan hacer programas que funcionarán por siempre (con su particular POO), no significa que la manera en que fueron programados sea la mejor implementación, ni logra el mínimo costo de horas por humano, ni es la más simple o la más eficiente
Esto me hace Recordar los Micro-frontends para comunicar Componentes de dientes Frameworks entre si
Los microservicios si lo llamas de forma más general.
Excelente video, solo un dato interesante sobre un language ya no tan popular estos dias:
En Objective-C tu no ejecutas "methods" envías "messages" y el objeto en runtime decide que hacer con el. Muy parecido a la filosofía de SmallTalk.
Saludos
Lo que Alan propone requiere que las limitaciones colocadas por la infraestructura sean reemplazadas o abstraídas (puertos, servicios, peticiones HTTP, sockets). Algo que algunos lenguajes de programación han tratado de hacer desde hace mucho (ASP.NET, J2EE, Python) pero les ha quedado grande.
Excelente información muchas gracias, felicitaciones por el canal, muchos éxitos.
Totalmente de acuerdo, por el lado Steve Jobs fué Paul Allen el genio en Microsoft y por el lado de Steve Jobs fué Steve Wosniak en Apple, mi preferido de todos. Aunque si nos vamos a principios de los 80 lo único que recuerdo es el Commodore 64, El 128 y el Apple 2C, los mejores! Y el nunca bien ponderado mi Sinclair ZX81 con 1KB. 8) ok, ok, y el Atari 800XL, ya está... todos contentos.
Lo que pensaba Alan Kay de la P.O.O me recuerda mucho a la implementación de los microservicios.
Al final casi siempre son las mismas soluciones con nombres distintos y en distintas áreas
Eso mismo iba a comentar!!
De acuerdo 100%
con la diferencia de que el sujeto lo propuso 40 años antes de que se implementara...
Microservicio es algo completamente diferente pero entiendo lo que mencionas, aunque esto tiende más a parecerse a la programación reactiva asíncrona y basado en eventos.
Después de ver el vídeo, la opinión que me deja es que un paradigma mucho más parecido a la idea original de Alan Kay, es la Programación Orientada a Agentes.
Yo hice mi tesis de grado basada en un sistema multiagente y, mientras más hablabas, más recordaba los fundamentos y mecanismos para la construcción de este tipo de sistemas.
La musica y la explicacion es como si revelaran los secretos del area 51. Muy buen video. Lo relacioné con el MVC y la arquitectura de microservicios.
En la teoria suena genial, pero en la práctica aun tengo mis dudas, sobre todo por el consumo de recursos....investigaré mas al respecto. ¡Gracias!
investiga sobre micro servicios y veras que estos conceptos ya son aplicados allí
Investiga también el modelo a de actores de Erlang. Se parece mucho a lo que debía ser la POO descrita por Kay.
Muchas gracias, lo tomaré en cuenta.
Buena onda que hagas conocer al obra de Alan Kay, genio de las cs de la computacion. Pero como programador de Smalltalk desde hace 6 años, pienso que no hay porque ser tan drástico con el punto del "fracaso de la herencia" como mencionas al final del video. Si, es cierto que POO se trata mas de objetos, mensajes y colaboraciones... que de clases y herencia. Pero estos no son conceptos contrapuestos. Como bien dijiste, C++ y Java solo tomaron una porcion de los conceptos de la programacion orientada a objetos... entre esos conceptos tomados, estan las clases, la jerarquizacion del conocimiento y la herencia del mismo. Es decir, estos conceptos ya estaban en Smalltalk (no recuerdo exactamente en que version, pero en la 80 ya estaba seguro). De hecho en Smalltalk, las clases son un objeto como cualquier otro, si hasta los mensajes son objetos! que digo! hasta el propio Smalltalk es un entorno vivo (es decir, un objeto!).
Por lo tanto, esto no va contra la idea original de Alan Kay, es cierto que no es la esencia, pero coexisten... Voy un paso mas alla, usar clases no solo no contradice lo hecho por Alan Kay, sino que Smalltalk es un dialecto de POO que se inclina mas para el lado de la categorizacion del conocimiento en familias jerarquicas (es decir, usar clases), muy por el contrario al lenguaje Self que tambien pertenece al paradigma orientado a objetos y por el contrario, es un lenguaje de objetos prototipados y ahi si, no existen las clases (es decir, ahi si que se puede implementar el patron Singleton correctamente jaja).
Entonces, lo malo de haber pensado POO en la manera que nos enseñó C++ y Java, no es por usar clases (que repito, no está mal, no es grave, ni siquiera contradice el trabajo que se hizo en Smalltalk)... lo malo es que las practicas usadas en dichos lenguajes hicieron que los programadores, durante decadas no respetaran los conceptos de encapsulamiento (todos usan setters y getters impunemente), no trabajen la cohesion de sus objetos, el acoplamiento de sus modulos (es muy comun que un mismo objeto de modelo sepa como renderizarse, como bajarse a disco, como imprimirse en pantalla, como transformarse en un json... mezclando las responsabilidades y desaprovechando el concepto de mensajeria). Creo que el tema va por ahi, y de hecho podrian ser excelentes temas para que hables en videos. Buenas practicas de programacion.
Finalmente, leyendo algunos de los comentarios, creo que muchisimos entendieron que el tema de la mensajeria y los objetos aislados, hace referencia a arquitecturas distribuidas, microservicios o sistemas de brokers o queues... cosas que no necesariamente van de la mano. Nuevamente, lo importante no es el mensaje en sí... lo importante es que el mensaje tambien es un objeto y tiene las mismas caracteristicas que todos los objetos, solo conoce sus colaboradores internos y eventualmente externos. El emisor del mensaje conoce al receptor, pero el receptor no conoce al emisor, asegurando asi, que el comportamiento reactivo del receptor no dependa de quien fue el emisor, sino que depende unicamente del contenido del mensaje (que eventualmente podria incluir la referencia del emisor... pero no es lo usual). En cambio, cuando hablamos de brokers o colas de mensajeria... como rabbitmq o apache kafka, claramente hay una red de por medio, hay protocolos de nivel de transporte, de aplicacion... hay handshake de ambas partes, se conocen mutuamente y se intercambian mensajes mutuamente todo el tiempo (por ejemplo un heartbeat). Por lo tanto, me parece que se fueron por las ramas haciendo ese tipo de comparaciones.... creo que hubiera sido mejor si tu ejemplo se hubiera basado en algo que no involucre un servidor, una vista, un almacenamiento, etc... podias hacer un simple ejemplo con objetos solo de modelo y ya.. y hasta en un entorno como Pharo, para mostrar como es eso de crear, modificar o eliminar objetos en runtime.
Espero que muestres mas videos de POO y Smalltalk! Buen canal, saludos desde argentina
¡Interesante opinión! Una pregunta: ¿Es complicado aprender Smalltalk?
@@cerealguyfrank5509 yo creo que smalltalk es de los lenguajes mas intuitivos y fáciles de aprender. Tiene una sintaxis muy simple y concisa (tiene solo un puñado de palabras reservadas... true, false, nil, self y super).. todo lo demas se puede sobreescribir.
Encima eso de "Todo es un objeto en smalltalk", hasta el ambiente, que está vivo... es espectacular. Te da muchisimas ventajas... Tenes el codigo de todo el lenguaje, del entorno y de la vm ahi a tu alcance, podes cambiarlo a tu antojo. Poder debuggear el codigo con un debugger super amigable, tanto que te permita ver el contenido de variables, resultados intermedios de codigo, modificar el codigo on-the-fly... no tiene precio.
Quizas lo mas complicado es la parte "filosofica" y "paradigmatica" de smalltalk... mas si venis de otros lenguajes bien imperativos como C++ o Java. Si es tu primer lenguaje, creo que es un paseo por el parque.. es mas parecido a experimentar y jugar en un jupyter notebook, con una sintaxis aun mas facil. Por otro lado, si efectivamente venis de C++ o Java, lo mas dificil es empezar a dejar de pensar en imperativo, para pasar a pensar en colaboraciones de objetos que se comunican por mensajes... eso puede ser un salto mental enorme, pero vale la pena.
Despues de eso, no solo aprendes un lenguaje nuevo, sino que para mi, te llevas un monton de re buenas practicas de modelado a otros lenguajes donde eso no es moneda corriente.
Me gustó el video.... Felicitaciones es la misma duda que tuve siembre y con miedo de expresar... Al final es importante pensar en lógica... Mantenerse activo...
Sería interesante si hicieras un vídeo sobre los lenguajes lógicos/relacionales, como Prolog, que nació en la misma época que Lisp, pero nunca ha llegado tener una apreciación igual a otros paradigmas por la industria y la academia
En mi universidad se le dio bastante importancia y dios mío, fue un dolor de cabeza entenderlo. Actualmente se usa para inferir información de un texto mola mucho :P
@@nassreml curioso, yo apenas entraré a la universidad y por lo que he visto es algo opcional y ya en un punto avanzado en la carrera, de todas formas me interesa y estoy aprendiendo por mi cuenta, algún consejo?
@@sergiosanchez3229 Sí, cierto. Es ya en un punto más avanzado donde también se da web semántica, inferencia de información... El consejo que te puedo dar es que practiques mucho y que cuando veas que no puedes resolverlo busca otros puntos de vista evita perder el tiempo estando estancado, no ganas nada ahí, intenta despejarte, hacer otras cosas
Geniaaaaal alnfin otro videooooo ya los vitodoooosss🔥🔥
Actualmente estoy quebrandome la cabeza con POO y JS T-T
Increíble video
Tuve que repetir el video varias veces para entenderlo,jaja, eres todo un PRO al iniciar tu video dando argumentos solidos con algo tan controversial, esos es Nivel Dios . YA ME SUBSCRIBI!!!
excelente video y gracias por la investigación y desarrollo del tema!
Con este video me subscribi, lei todo eso hace tiempo me costo entenderlo, pero to lo explicaste de una manera tan simple me gusto mucho el video.
Excelente video! La verdad todos tus videos han sido muy buenos en mi opinión. Me gustaría que hicieras algún video sobre la IA o los ganadores del premio Turing, pues tienes una manera de explicar excelente. Saludos desde CR!
gracias por los videos cada semanas son temas muy interesantes y que siempre espero para ver, este video lo repeti como 5 veces y aun asi no logro entenderlo del todo jajajaja
Estas definiendo lo que es el modelo MVVM. Esto lo llevo usando desde hace 20 años.
Hola! En videos como este sería genial que coloques las referencias en las que te basas para tus videos, asi, quienes lo desean, pueden profundizar más.
No sabía que el aporte de Alan Kay a la informática había sido tan grande.
¡Buen vídeo! ¡Bendiciones!
En realidad los verdaderos creadores fueron Johan Dhal y Kristen Nygaard con Simula en la década de los 60. Según mi conocimiento histórico, la tecnología de ellos fue creada antes de Smalltalk, así que es imposible que Kay fuera el primero en concebir el concepto de "objeto". Ahora bien. aún cuando Kay hubiese sido primero; siéndole sincero, su modelo es bien ortodoxo y poco práctico. El sistema que Alan Kay dio no es ideal para las corrientes modernas de estandarización de principios de Arquitectura de Software.
Aunque claro, yo siendo Alan Kay me hubiera esforzado un poco más en demostrar que la corriente por la cual yo estuviera yendo es más eficiente. Dejó mucho qué desear en lo que testificó acerca de este supuesto hecho en el cual éste se autoproclama como el creador de la programación orientada a objetos.
Muy interesante, lo curioso es que lo que explicas es la definición de micro servicios jejejeje, son piezas independientes que se comunican por mensajes y cada uno se encarga de sus propios métodos y problemas sin externalizarlos. Muy buen dato histórico
Muy bien video, me gusta mucho el diseño original de POO, se ve mucho más robusto y modular.
Cada vez que veo tus videos mas me apasiona el mundo de la programacion y wl desarrollo
BUEN VIDEO SALUDOS
Me encantó! Me hicieron hacer un VideoClub en la facultad con SmallTalk, hermoso.
Que escuela? Me hubiera encantado asistir!
Max Cervantes Universidad a Tecnológica Nacional, en Argentina.
Q entretenido es escuchar toda la historia y me encantó los videos q subes soy nuevo aquí y llegué aquí buscando cosas de programascion por q nose si inclinarme a eso me encanta mucho pero tengo miedo de q sea muy difícil
Increible aclaracion y aporte 10/10 👏
Deberías hacer videos sobre las ciencias de la computación y como programar con las bases de estas.... Saludos!!!!
Gracias por este contenido, siempre es bueno entender de dónde viene y cuales con las implicaciones científicas de lo que hacemos.
Wow! grande muy buena esta explicacion, siempre me tomo mi tiempo para ver tus videos por que veo experiencia y openmind.
Me acordé mucho de mis clases de estilos y lenguajes de programación, en esa época me toco aprender prolog y todavía es difícil de entender, muy chévere tus vídeos, no sé por qué me gustaría mucho una clase de ola mundo en la U o en platzi.
Esta bien interesante que la antigua forma de análisis a través de eventos se bien reflejada en el manejo de estado de react, como que tomaron muy en cuenta esto para mantener el ciclo de vida de un componente.
Cada vez consigues sorprenderme con algo nuevo, gracias y sigue así
Hola! veo tus vídeos y son geniales, paso por aquí para preguntar ¿Qué hay de PHP en los próximos tiempos?
Es interesante ver cómo la Arquitecta de microservicios, se parece mucho a lo explicado en el vídeo, el desarrollo de componentes distribuidos, los apigetways, la abstracción de objetos como servicio y su antología sobre el guardar el estado, etc.
Como dibujante eres un excelente programador amigo.
😂
Muy bueno es algo profundo pero si ves el vídeo concentrado lo entiendes... X cierto me gusta este formato para explicar con la pantalla genial.
Saludos y éxitos.
Hola mundo..! Encontré tu canal por casualidad, y realmente a sido un regalo haberlo visto cada vídeo es increíble y me motiva a seguir aprendiendo, ya tengo en mente seguir tu ejemplo migrar soy de Ecuador. En que orden me recomiendas seguir tus cursos para optar por una oportunidad de trabajar como tú en Nueva Zelanda. Mil gracias por toda la info qque compartes, chao mundo :D un fuerte abrazo
Interesanteeeeee... Uno de los videos de tu canal que tiene un excelente contenido...
Interesante vídeo, y la verdad tiene mucho sentido el modelo original de Kay... No sé, pero se me asemeja en algunos aspectos a la teoría de sistemas distribuidos...
eso estoy tratando de hacer desde hace mucho 🤣🤣🤣🤣🤣🤣, incluso cree un microprograma en phyton que actuaba solo si recibia la orden de otro programa hecho en visual basic, funciona, pero aun estoy pensando como solucionar el problema de un posible rollback por x motivos, para eso se me ocurrio una programación orientada (privado), despues lo dare a conocer, buen video amigo