{"id":46,"date":"2009-09-30T12:59:03","date_gmt":"2009-09-30T10:59:03","guid":{"rendered":"https:\/\/blogs.ua.es\/progoo\/?p=46"},"modified":"2009-09-30T17:52:40","modified_gmt":"2009-09-30T15:52:40","slug":"pensando-en-objetos","status":"publish","type":"post","link":"https:\/\/blogs.ua.es\/progoo\/2009\/09\/30\/pensando-en-objetos\/","title":{"rendered":"Pensando en objetos"},"content":{"rendered":"<figure id=\"attachment_50\" aria-describedby=\"caption-attachment-50\" style=\"width: 240px\" class=\"wp-caption alignright\"><a href=\"http:\/\/www.flickr.com\/photos\/pablosanz\/2229169284\/\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-50 \" src=\"https:\/\/blogs.ua.es\/progoo\/files\/2009\/09\/00-8bit-300x225.jpg\" alt=\"00-8bit\" width=\"240\" height=\"180\" srcset=\"https:\/\/blogs.ua.es\/progoo\/files\/2009\/09\/00-8bit-300x225.jpg 300w, https:\/\/blogs.ua.es\/progoo\/files\/2009\/09\/00-8bit.jpg 500w\" sizes=\"auto, (max-width: 240px) 100vw, 240px\" \/><\/a><figcaption id=\"caption-attachment-50\" class=\"wp-caption-text\">(CC) pablosanz @ flickr<\/figcaption><\/figure>\n<p>All\u00e1 por 1977, <a href=\"http:\/\/swiki.agro.uba.ar\/small_land\/63\">Alan Kay<\/a>, creador del lenguaje orientado a objetos <a href=\"http:\/\/swiki.agro.uba.ar\/small_land\/65\"><em>Smalltalk<\/em><\/a> dijo<\/p>\n<blockquote><p>Es m\u00e1s f\u00e1cil ense\u00f1ar Smalltalk a ni\u00f1os que a programadores profesionales.<\/p><\/blockquote>\n<p>Lo cual puede parecer sorprendente a primera vista. Sin embargo, si pensamos que uno razona en el <a href=\"http:\/\/www.desarrolloweb.com\/articulos\/499.php\">paradigma orientado a objetos<\/a> (OO) en t\u00e9rminos de objetos del mundo real y no de datos en memoria, que estos objetos (el coche de mi vecino, el bal\u00f3n de Manu, el sill\u00f3n de pap\u00e1&#8230;) se clasifican en clases de objetos (Coche, Bal\u00f3n, Mueble,&#8230;) y que est\u00e1s clases, a su vez, se organizan en jerarqu\u00edas como la del reino animal o vegetal, quiz\u00e1s entendamos porqu\u00e9 a un programador &#8216;tradicional&#8217; le cuesta m\u00e1s cambiar de paradigma de programaci\u00f3n que a un ni\u00f1o &#8216;sin prejuicios&#8217;. Si a esta forma de &#8216;ver el mundo&#8217; le a\u00f1adimos la visi\u00f3n de un programa no como secuencia de instrucciones, sino como una colecci\u00f3n de objetos con vida propia que se envian mensajes entre s\u00ed para llevar a cabo ciertas tareas, como si de laboriosos enanitos se tratara, los ni\u00f1os ganan por goleada.<\/p>\n<p>Aclaremos que aqu\u00ed entendemos por programador tradicional a aquel que est\u00e1 habituado a trabajar con <a href=\"http:\/\/es.wikipedia.org\/wiki\/Programaci%C3%B3n_imperativa\">lenguajes imperativos<\/a>, como C, Pascal o incluso C++ cuando no usas t\u00e9cnicas OO. El cambio de paradigma cuesta. Cuando la parte m\u00e1s importante de una aplicaci\u00f3n es la comunicaci\u00f3n entre sus diferentes componentes (objetos) y no tanto la algoritmia que resuelve las peque\u00f1as tareas que, combinadas, dar\u00e1n lugar al resultado final deseado, resulta obvio ver que nos movemos en un terreno diferente al &#8216;tradicional&#8217;.<\/p>\n<p>\u00bfY porqu\u00e9 tenemos que cambiar de paradigma de programaci\u00f3n? Se supone que con un lenguaje imperativo podemos resolver cualquier problema que sea computable&#8230; S\u00ed, podemos hacerlo, pero pagando un alto precio: la complejidad de la soluci\u00f3n se volver\u00e1 inmanejable. Es lo que ocurri\u00f3 en el mundo del desarrollo de software hace un par de d\u00e9cadas: la llamada<a href=\"http:\/\/es.wikipedia.org\/wiki\/Crisis_del_software\"> crisis del software<\/a>, la cual, seg\u00fan algunos, es <a href=\"http:\/\/www.tecnova.es\/ti\/firmainvitada02.htm\">cr\u00f3nica<\/a> (he aqu\u00ed algunos <a href=\"http:\/\/www.microsiervos.com\/archivo\/ordenadores\/software-fuera-de-control.html\">ejemplos recientes<\/a>).<\/p>\n<p>\u00bfEs el paradigma orientado a objetos la panacea para evitar los problemas que originaron la crisis del software? No, no lo es, pero ayuda en gran medida a aliviar los problemas relacionados con la estructura y mantenibilidad del software. Adem\u00e1s de una metodolog\u00eda como esta, que no deja de ser una herramienta, hacen falta desarrolladores que sepan utilizarla correctamente.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pensar en objetos supone un cambio de paradigma para los programadores habituados a lenguajes de programaci\u00f3n imperativos. Aunque no es la panacea lamada a resolver por completo la llamda crisis del software software, s\u00ed es cierto que ayuda enormemente a paliar la gran mayor\u00eda de problemas estructurales y de mantenibilidad del software.<\/p>\n","protected":false},"author":1276,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[5900,5901,5898,5899],"class_list":["post-46","post","type-post","status-publish","format-standard","hentry","category-general","tag-alan-kay","tag-crisis-del-software","tag-poo","tag-smalltalk"],"_links":{"self":[{"href":"https:\/\/blogs.ua.es\/progoo\/wp-json\/wp\/v2\/posts\/46","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.ua.es\/progoo\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.ua.es\/progoo\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.ua.es\/progoo\/wp-json\/wp\/v2\/users\/1276"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.ua.es\/progoo\/wp-json\/wp\/v2\/comments?post=46"}],"version-history":[{"count":5,"href":"https:\/\/blogs.ua.es\/progoo\/wp-json\/wp\/v2\/posts\/46\/revisions"}],"predecessor-version":[{"id":48,"href":"https:\/\/blogs.ua.es\/progoo\/wp-json\/wp\/v2\/posts\/46\/revisions\/48"}],"wp:attachment":[{"href":"https:\/\/blogs.ua.es\/progoo\/wp-json\/wp\/v2\/media?parent=46"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.ua.es\/progoo\/wp-json\/wp\/v2\/categories?post=46"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.ua.es\/progoo\/wp-json\/wp\/v2\/tags?post=46"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}