Comentarios, discusiones, notas, sobre tendencias en el desarrollo de la tecnología informática, y la importancia de la calidad en la construcción de software.
domingo, julio 30, 2006
Más sobre el peso de China
sábado, julio 29, 2006
Mi primer programa BASIC...
Encontré en la historia gráfica de los dinosaurios, mi primer computador oficial (y también del S/360, donde ingresé mi primer hoja de especificaciones COBOL con mi profesor Oscar Pardo).
IBM 5110: 64 KB de memoria en su modelo mejorado, 2 disketteras de 8", BASIC en ROM, juego de caracteres EBCDIC, modo de depuración incluído (trace, cross reference, vuelco de memoria, etc). El BASIC manejaba ficheros indexados con acceso random (el acceso podía llegar a "oírse"), con la alternativa de manejar claves reorganizadas como matrices a través de un sort. A propósito, con un conjunto de operaciones matriciales que sigo extrañando. Quizá si busco un poco, tenga todavía algún postlist de algún programa...
Otros dinosaurios pueden consultarse (de ellos, trabajé para el Apple II , la primera MAC, y la TI/99):
De los 70's, del 80 al 83, y otros recursos (a y b). (gracias a Techrepublic).
Imagen tomada de Wikipedia, originalmente subida a Flickr por el usuario Marcin Wichary, con licencia Creative Commons Attribution 2.0. (By Marcin Wichary - Flickr: [1], CC BY 2.0, https://commons.wikimedia.org/w/index.php?curid=29455989)
jueves, julio 27, 2006
Un trabajo personal de Grady Booch
The primary goal of the Handbook of Software Architecture is to fill this void in software engineering by codifying the architecture of a large collection of interesting software-intensive systems, presenting them in a manner that exposes their essential patterns and that permits comparisons across domains and architectural styles.El Handbook se convitió en su primer trabajo postoperatorio...
The second goal of this work is to study these architectural patterns in the context of the engineering forces that shaped them and then to expose a set of proven architectural patterns that may be used to construct new systems or to reason about legacy ones.
The third goal of this work is to feed my insatiable curiosity. Whenever I encounter an interesting or useful software-intensive system, I often ask myself, "how did they do that?" By exposing the inner beauty of these systems through a study of their architectural patterns, I hope to offer inspiration to developers who want to build upon the experience of other well-engineered systems.
sábado, julio 22, 2006
Un mundo felíz
En breves años, a mediados del siglo pasado, vivimos como un relámpago una incertidumbre similar: el expansionismo del nazismo y sus socios en oriente. Duró un instante, pero en el filo de su crecimiento, millones de personas perecieron sin ver más allá de una pared... Sin embargo, la ola pasó, y la sociedad se pudo restablecer, con decenas de millones de personas esparcidas por el mundo, generando un cambio económico, político y social imprevisible...Argentina conoce bien esas consecuencias, con decenas de miles de inmigrantes llegados desde todas las historias del desastre europeo.
Los últimos treinta años han visto desenvolverse un fenómeno de muy largo plazo, primero lentamente, y ahora crecientemente más significativo: el surgimiento de China y la India como actores de nivel global. Visiblemente en el primer caso, imperceptiblemente en el segundo, van adquiriendo un peso que cada vez gravita más sobre todos nosotros; sus cifras nos convierten en un municipio o un barrio de un universo en el que todavía contaríamos simplemente porque aún les falta maduración...Algunas de sus ciudades son del tamaño de nuestros países, el tamaño de sus empresas convierte las nuestras en talleres de reparación, su escala de producción nos pone fuera de competencia en términos taylorianos. Sin embargo, todavía mantenemos alguna clase de paridad...por cuánto tiempo?.
Ambos países actúan como un agujero negro astronómico en el orden económico: absorben ya no sólo el outsourcing de multinacionales de cualquier punto del planeta, sino que también tientan a empresas de menor tamaño. El empleo y la calificación técnica se resiente en todas partes, sea por el reemplazo directo de puestos, o sea por el abaratamiento de productos creados bajo condiciones laborales y sociales intolerables en Europa o América. Hoy todos estamos influídos y condicionados por su competencia, encaminándonos suavemente hacia estilos de vida de menor calidad, con la alegre condescendencia de quienes se conforman con un costo de producción más bajo. ¿Cuál será el punto de equilibrio en este declive? En términos absolutos, será el punto en el que las sociedades china e india reclamen condiciones dignas de vida. En términos relativos, será cuando las sociedades occidentales requieran la defensa de su propio interés económico.
Quizá me equivoque, pero quien más me preocupa es China, porque a su proceso de expansión económica, une un proceso de crecimiento social administrado por un gobierno totalitario: justificado por su papel histórico, durante un largo tiempo podría manipular a su sociedad desacreditando a cualquier opositor. La historia de la protesta de Tienanmen es un ejemplo.
Sin embargo, este el punto de vista pesimista...aquí es aplicable su propia frase sobre el imperialismo: también se puede tratar de tigres de papel.
El informe de Mckinsey mencionado en el título puede verse en este contexto: el informe enumera aspectos críticos de la vida económica y social, que impactarán en los próximos veinte años: No sólo crecen las empresas, sino la complejidad social.
En la salud, por ejemplo:
China's favorable health indicators—including low infant mortality levels and high life expectancy—belie a health care system that has largely deteriorated. Privatization has left three-fourths of the people without health insurance (universal if rudimentary coverage was the norm as recently as the late 1970s). Today's patchwork system of clinics and hospitals lacks the quality control mechanisms necessary to ensure proper care. What's more, well-intentioned government efforts to make care affordable have created perverse incentives. By holding down the price of basic care but allowing hospitals to profit from prescriptions and diagnostic tests, for example, the government encourages providers to overprescribe medications and perform unnecessary tests.
Although China's total health spending, at 5.4 percent of GDP, is comparable to that of some countries in the Organisation for Economic Co-operation and Development (OECD), the high share borne by private citizens hurts the poor. As with the funding of education, a decentralized fiscal system and insufficient transfers worsen the problem. The result is considerably less access to care in poorer regions, especially the countryside. By one estimate, rural residents receive only one-third of the health care, per capita, that city dwellers do. But access to care has declined in urban areas as well: in 1993, for example, around one-quarter of the residents of cities were uninsured; today nearly two-thirds are.
Sobre el sistema de pensiones:
Although social-welfare spending has jumped dramatically in recent years, these outlays still equal just 2.2 percent of GDP. Pensions are a particular concern, since the dismantling of SOEs has left only 14 percent of the active population with coverage, which is particularly weak in rural areas. What's more, China's looming demographic imbalance means that the number of workers supporting each person over the age of 65 will drop from around nine today to only four in 2025.
As a result of this rapid aging, the Chinese must make the best use of their considerable savings (more than 20 percent of disposable income) in the decades before they retire. Weak capital markets, however, leave people with few options other than low-yield savings accounts, where nearly 60 percent of all consumer wealth resides.
En la educación:
Statistics, on the whole, paint an optimistic picture of China's education system. The national literacy rate is 91 percent, and workers now entering the labor force had 11 years of schooling, nearly three times more than retirees did. But though China's top universities are world class, it spends only 4.3 percent of its GDP on education—less than other lower-middle-income Asian countries, such as Thailand. Moreover, Chinese households must contribute more money to education than people in many other developing countries, including those with a similar or younger age structure, such as the Philippines and Thailand. The government bears two-thirds of the total expense of education, but the responsibility falls almost entirely to local communities, which differ widely in wealth and often lack a sufficient tax base. China's decentralized fiscal system means that transfers from the central government are often inadequate.
Citizens ultimately pay about one-quarter of the country's total education bill through fees for tuition, textbooks, and administration. This burden creates local inequalities and puts education out of reach for some rural residents (whose average income is one-third that of the urban citizens). Alarmingly, educational researchers who study rural junior high schools have observed dropout rates approaching 40 percent. Such outcomes damage China's long-term development prospects and exacerbate social tensions—in particular, by creating a permanent underclass of urban migrants whose lack of skills limits opportunities to command the higher incomes associated with urbanization.
Sobre la migración del campo a la ciudad:
But even as China's leaders undertake the daunting task of searching for ways to aid the rural population, they must prepare for the urbanized society that China is fast becoming. Indeed, within only 20 to 25 years, some two-thirds of China's 1.3 billion people will live in cities, up from around one-third today. In an increasingly urbanized society, smoldering resentment—over corruption and unequal access to social services, for example—that now seems manageable could turn more volatile and disruptive to public order, particularly if rapid economic growth falters. Greater urbanization will increase crime and poverty and youth underemployment and alienation, and housing pressures. These issues will in turn magnify the potential for social instabilityRafael Poch, corresponsal de La Vanguardia en China, aporta excelentes vistas sobre el estado de la sociedad china. Sobre la importancia de la innovación tecnológica y su participación en el mercado global, Poch afirma que una vez ajustados los números, el beneficio real del cambio es muy limitado para China, transfiriendo un muy alto margen de beneficio al exterior:
“Huawei” [la joya de la corona de las telecomunicaciones chinas] es un modelo y ejemplo de los esfuerzos chinos por conquistar posiciones en la gama alta del comercio internacional. Sus ventas en el extranjero representan el 58% de sus pedidos, que superaron los 8.000 millones de dólares el año pasado. Para este año se esperan más de 10.000 millones. Sus instalaciones y centros de investigación son de primera categoría. Su gestión y marketing son de estilo completamente americano. De sus 34.000 empleados, casi la mitad se dedica a investigación y desarrollo. El 90% del personal en la sede de Shenzhen, en el sur de China, son ingenieros, y solo un 6% trabajadores de cuello azul. Su reinversión en I+D no es inferior al 10% de sus beneficios.(...)
”Huawei” es un vendedor a precios bajos que tiene líneas de producto completas. Antes sólo estaba presente en África, India y Asia sudoriental. Ahora empieza a meterse en Europa, pero conquistar el mercado “central” es muy difícil. A largo plazo, los observadores especulan con alguna fusión de Huawei con empresas extranjeras mayores, pues se considera que sólo los muy grandes podrán prosperar en el mundo de las telecomunicaciones.
“Están en un proceso intermedio entre la copia de productos a extranjeros y la aportación de tecnología propia, pero, ¿tendrán capacidad para ese salto?”, se pregunta un observador español.
El esfuerzo por la innovación, equilibrado por el peso de las empresas extranjeras:
El mercado de la tecnología de punta exige otro tipo de cualidades mucho más complicadas que las requeridas para hacer y vender pianos o contenedores. Es necesaria una estrecha interacción entre servicios, proveedores y clientes, y una capacidad de innovación de la gente que sale de las universidades. Para dar el salto es necesario mucho más que la voluntad del gobierno y la consiguiente dotación presupuestaria para investigación y ciencia. Es necesario mejorar el sistema educativo, poner a las universidades en contacto con empresas y mucho más.
El esfuerzo chino por potenciar la innovación y la alta tecnología es considerable y meritorio, pero debe ser observado también desde su enorme contrapunto; el creciente dominio del mercado chino por parte de las multinacionales extranjeras. A diferencia de Japón, que logró su despegue comercial a partir de grandes empresas nacionales como “Sony”, “Panasonic”, “Toyota” y “Cannon”, el despegue comercial de China está vinculado a empresas multinacionales extranjeras.
Las estadísticas muestran que ese entrismo es extraordinario. “Microsoft” ocupa el 95% del mercado chino de sistemas operativos, “Kodak” por lo menos el 50% del de rollos fotográficos (“Fuji” tiene otro 30%, con la compañía china “Lekai” con solo un 15%), “Motorola” y “Nokia” responden del 70% del de teléfonos móviles, y “Cisco” tiene el 60% del mercado chino de equipos de Internet.
La supuesta autopista de dos direcciones de la globalización, de la que China ha obtenido algunas ventajas, puede ser vista como una vía a la dependencia, un escenario desgraciadamente muy conocido en los “despegues” del mundo en desarrollo.
“A lo que nos enfrentamos es a un sistema global, político y económico, inventado y dirigido por los países desarrollados”, explica el Profesor Zhang Miao, del Centro de Investigación de Ingeniería de la Universidad Qinhua de Pekín. “Aunque formamos parte de ese sistema, no somos beneficiarios de él, como Europa o Estados Unidos, sino que sufriremos pérdidas inevitablemente”, dice Zhang.
(...) en la cultivación del mito de la superpotencia tecnológica china, no sólo intervienen intereses de multinacionales y gobiernos occidentales interesados en la exageración, sino también intereses chinos, sea de grupos sociales privilegiados por un estatuto de creciente dependencia, sea por razones de mera exaltación patriótica. Pasa algo parecido a lo que ocurría en los ochenta con las armas y capacidades militares de la URSS: todos los expertos sabían que eran muy inferiores a sus homólogas occidentales, pero, por diferentes motivos, tanto los halcones de Washington como los de Moscú, estaban unidos en distorsionar la realidad poniendo el acento en su superioridad.
(todas las citas, diario La Vanguardia, del Blog Diario de Pekín, artículo "China en la globalización: más dependencia y menos entusiasmo")
Pero aún más esclarecedoras son las observaciones de Poch sobre la sociedad laboral china. En su artículo "Detrás de la Fábrica global", describe casos de trabajadores y sus familias, ambientes de trabajo, condiciones de vida...todos elementos que muestran una situación que nos remite a los relatos de Charles Dickens como referencia más aproximada.
Una chica de poco más de 16 años de la misma provincia de Guizhou, a la que encuentro con sus amigas sentadas en un trozo de hierba en una esquina del polígono industrial en el que está su fábrica (“es nuestro día libre”, dice), califica de “divertida” la experiencia de trabajar en Shantou, pese a que trabaja de 10 a 14 horas según los meses, no ha ido a casa a ver a su familia en dos años, y se dispone a hacerlo, por primera vez, en febrero, con motivo del año nuevo chino. “No es un trabajo duro”, dicen. “Aquí ganas tu propio dinero”, responden cuando se les pregunta por las ventajas. Las otras chicas asienten, sonrientes. (...)
Para comprenderlo del todo es necesario ir a las aldeas y ciudades de Guizhou, observar el “normal” trabajo infantil que muchos de estos adolescentes han realizado en una vida sin apenas infancia, sus estrictas obligaciones económicas y culturales en una sociedad rural patriarcal.
La huelga, ilegal para el socialismo:
En octubre del 2004 los obreros de la empresa electrónica de capital hongkonés, “Hai Yan Electronic” de Shenzhen fueron a la huelga. Cobraban 240 yuan al mes (24 euros) trabajando 12 horas diarias, que se convertían en 15 en los periodos de máxima presión para servir pedidos. Los trabajadores debían pagar su albergue –en la fábrica- y la comida. Las horas extras se pagaban a 2 yuan, 0,2 euros. El salario mínimo en Shenzhen está establecido en 610 yuan, pero el escándalo de su situación no impidió que las autoridades denunciaran la huelga como un “ilegal atentado al orden público” y enviaran a la policía. El apoyo de un diario local, el “Shenzhen Wanbao”, que se atrevió a explicar que los obreros tenían razón cuando cortaban el tráfico de la autopista que une Shenzhen con Hong Kong, logró legitimar la huelga, que concluyó con aumentos salariales, horarios más benignos y horas extras a 5,4 yuan.
El gran recurso de los trabajadores emigrantes contra la explotación es la movilidad, cambiar de puesto de trabajo hasta encontrar el más aceptable. Xiao Hu dice haber trabajado “seis meses” en la fábrica textil de bordados de Cantón en la que más duró y “medio día” en la que menos. La respuesta de las empresas es el llamado “dinero de depósito”: al ingresar en una fábrica, el obrero paga una cantidad como garantía de que no se va a ir, es decir pagar por trabajar. (...)
en los últimos años, explica[una especialista australiana], “la forma ha cambiado”. Lo que se hace ahora es pagar los salarios con algún retraso. “En caso de abandono de la empresa, el obrero pierde el dinero que le adeudan”
Pueden mencionarse muchos otros casos...Sin embargo, Poch observa que de todas formas se está produciendo un cambio hacia mejores opciones: al equilibrarse las condiciones de vida entre la ciudad y el campo, se produce escasez de mano de obra (lo que será más importante en el futuro, seguramente), y por lo tanto, mejores condiciones de negociación en las reglas de trabajo. La sociedad crecientemente reclamará más retribución por su trabajo, mejor vivienda, salud y educación, una vez que la miseria y abandono del campo sea una historia olvidada. Lo que hoy es una mejoría relativa, será una base insuficiente luego.
Así, acercando la mirada un poco más a cada historia y a cada día, es posible tener otra visión del futuro del Asia y su peso sobre nosotros: puede haber lugar para todos. Podemos competir, debemos hacerlo, pero para eso no se puede ser indolente.
bajando a tierra..
Publicado por Rodolfo Quispe Otazu
lunes, julio 17, 2006
Una propuesta curricular de Bertrand Meyer
Sin embargo, a través de la observación de las preocupaciones de estudiantes al pedir ayuda, en su participación en foros de Ingeniería de Software u otros semejantes, en conversaciones directas, en la participación en el mercado laboral, encuentro muchos rasgos comunes, que desearía que fueran distintos a cómo son.
En mis lecturas rápidas de vacaciones encontré una propuesta curricular de Bertrand Meyer que aparenta ser valiosa. Dado que es de 1993, supongo que ya debe tener un buen número de críticas, y que debe tener respuestas superadoras que los especialistas conocerán. Trataré de averiguar más sobre su desenvolvimiento posterior. Sin embargo, en un ámbito específico, me dá argumentos de peso en algunos puntos que en meses pasados hemos discutido con otros colegas.
La propuesta de Meyer trata sobre la enseñanza del enfoque orientado a objetos en Informática. Extienda sus fundamentos al área de estudios que considere...
El objetivo de Meyer:
As the software community recognizes the value of the object-oriented approach, the question increasingly arises of when, where and how to include object-oriented concepts, languages and tools in a software curriculum -- university, college or even high school.
Uno de los puntos de mayor interés, comparativamente; cuándo empezar:This article proposes a coordinated approach to structuring such a curriculum, based on systematic reliance on the best aspects of the object-oriented method. It suggests a radical departure from the traditional methods of teaching programming, design and analysis: the progressive opening of black boxes, also known as the ``inverted curriculum'' and based on the systematic use of object-oriented libraries of reusable components. It also offers ideas for university departments that are in search of ambitious, multi-year federating projects.
Este punto de vista, de "introducir" un conocimiento pasando por toda su historia, de tal forma que el núcleo de real interés se termina viendo al final, a veces con poco tiempo restante, y luego de ser contaminado con otros métodos o conocimientos que luego sabemos son antecedentes, es un criterio que he visto más veces de las deseables, y uno de los puntos que discutiéramos con otros colegas hace algún tiempo.The earlier the better. The object-oriented method provides an excellent intellectual discipline; if you agree with its goals and techniques, there is no reason to delay bringing it to your students; you should teach it as the first approach to software development. Beginning students react favorably to object-oriented teaching, not just because it is trendy, but because the method is clear and effective.
This strategy is preferable to a more conservative one whereby you would teach an older method first, then unteach it in order to introduce object-oriented thinking. If you think object-oriented development is the right way to go, there is no reason to delay.
There is little justification for such an approach which, transposed to elementary education, would mean that students first learn to count in Roman numerals, only later to be introduced to more advanced ``methodologies'' such as Arabic numerals. If you think you know what the right approach is, teach it first.Meyer defiende la idea de introducir directamente a los estudiantes en el conocimiento más actualizado y adecuado, el que técnicamente sea el corrientemente aceptado, en forma clara, en lugar de sufrir en una travesía complicada:
Otros dos conceptos defendidos son: Progresiva apertura de cajas negras, introduciendo nuevos conceptos y mayor complejidad a medida que se avance en la práctica, partiendo de librerías de contenido bien desarrollado, en lugar de mantenerse en un nivel de ejemplos de trabajo básicos:Just explaining why an array and a pointer have to be treated as the same notion -- a central property of C-based languages, having its roots in obscure optimization techniques for hardware architectures of the nineteen-sixties -- would consume precious time and energy, which will not be available for teaching the concepts of software design. More generally, students would be encouraged, at the very beginning of their training, to reason in terms of low-level mechanisms -- addresses, pointers, memory, signals. They would inevitably spend much of their time, if they eventually produce any compilable program, chasing various damaging bugs. The approach would leave the students perplexed and might well end up in disaster.
In contrast, an introductory course must focus on the essential concepts and techniques, and present the students with a clear, coherent set of principles. The notation must directly support these principles; in fact there must be a one-to-one correspondence between the language and the method. The language must help the students, not confuse them.
A frustrating aspect of many courses is that teachers can only give introductory examples and exercises, so that students do not get to work on really interesting applications. One can only get so much excitement out of computing the first 25 Fibonacci numbers, or replacing all occurrences of a word by another in a text -- two typical exercises in an elementary programming course.El otro punto: Desarrollo de proyectos de más larga duración, si es posible, multianuales:With the object-oriented method, a good object-oriented environment and, most importantly, good libraries, a less traditional strategy is possible if you give students access to the libraries early in the process. In this capacity students are just reuse consumers, and use the library components as black boxes in the sense defined above; this assumes that proper techniques are available for describing component usage without showing the components' internals.
With this technique students can start building meaningful applications early: their task is merely to combine existing components and assemble them into systems. In many respects this is a better introduction to the challenges and rewards of software development than the toy examples that have been the traditional mainstay of introductory courses. (...)Then little by little the students are induced to adapt the components to new purposes -- either by copying them and modifying the copies, or by using the inheritance mechanism, whose very purpose is indeed to support a combination of reuse and adaptation. In the process the need for new software elements will most likely arise, so the students will start writing their own classes; they only do so after having had extensive exposure to the best possible examples of quality object-oriented software -- library classes.
(...) it is interesting to have the students build a system by successive enhancement and generalization, each year's class taking over the collective product of the previous year and trying to build on it. This method has some obvious drawbacks for the first class (which collectively serves as advanceman for future generations, and will not enjoy the same reuse benefits), and I must confess I have not yet seen it applied in a systematic way. But on paper at least it is an attractive idea. There hardly seems to be a better way of letting the students weigh the advantages and difficulties of reuse, the need for building extendible software and the challenge of improving on someone else's work.(Todos los subrayados en negrita son míos).
(...) Even if the context does not permit such a multi-year strategy, instructors in charge of software education should try to avoid a standard pitfall. Many undergraduate curricula include a ``software engineering'' course, which often devotes a key role to a software project to be carried out by the students, often in groups. Such project work is necessary, but often disappointing because of the time limitations stemming from its inclusion in a one-trimester or one-semester course. If the academic administration can at all be convinced, it is much preferable to run such a project over an entire schoolyear (even the total amount of allocated work is the same). Trimester projects, in particular, border on the absurd; they either stop at the analysis or design stage, or result in a rush over the last few weeks to code at any cost and using any technique that will produce a running program -- often defeating the very purpose of software engineering education. It is desirable to have a little more time on your hands, so as to let the students appreciate the depth of the issues involved in building serious software. A year-long project, whether or not it is part of a longer-term policy as suggested above, favors this process. It is a little more difficult to fit into the typical curriculum than the standard trimester or semester course, but well worth the fight.
Como decía, esta es una propuesta de 1993. Este tipo de propuestas son leídas y pesadas a la hora de preparar el material de trabajo en la Universidad?
Si me guío por múltiples impresiones obtenidas, creo que no...
domingo, julio 16, 2006
Lecturas del día..
Quiero destacar una frase de K. Fujino, mencionada por Meyer:
When quality is pursued, productivity follows
Lectura para la semana...