<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Java on Thy.Abstrakt.Objekt.Weblog</title><link>https://blog.kreig.rocks/categories/java/</link><description>Recent content in Java on Thy.Abstrakt.Objekt.Weblog</description><generator>Hugo</generator><language>es</language><lastBuildDate>Wed, 25 Apr 2018 03:26:21 -0600</lastBuildDate><atom:link href="https://blog.kreig.rocks/categories/java/index.xml" rel="self" type="application/rss+xml"/><item><title>Tutorial ANTLR y Python I. Introducción e Instalación</title><link>https://blog.kreig.rocks/2009/03/29/tutorial-antlr-y-python-i-introduccion-e-instalacion/</link><pubDate>Sun, 29 Mar 2009 18:00:37 -0600</pubDate><guid>https://blog.kreig.rocks/2009/03/29/tutorial-antlr-y-python-i-introduccion-e-instalacion/</guid><description>&lt;h3 id="tutorial-antlr-y-python"&gt;Tutorial ANTLR y Python:&lt;/h3&gt;&#10;&lt;h4 id="parte-i-introducción-e-instalación"&gt;Parte I: Introducción e Instalación.&lt;/h4&gt;&#10;&lt;h4 id="parte-ii-creacion-de-una-gramática-sencilla"&gt;&lt;a href="http://objektblog.wordpress.com/2009/03/30/tutorial-antlr-y-python-ii-creando-una-gramatica-sencilla/"&gt;Parte II: Creacion de una gramática sencilla.&lt;/a&gt;&lt;/h4&gt;&#10;&lt;h4 id="parte-iii-creacion-e-implementación-de-un-ast"&gt;&lt;a href="http://objektblog.wordpress.com/2009/04/06/tutorial-antlr-y-python-iii-creando-e-implementando-un-interprete-de-dos-o-mas-pasadas-usando-arboles-de-sintaxis-abstracta/"&gt;Parte III: Creacion e implementación de un AST.&lt;/a&gt;&lt;/h4&gt;&#10;&lt;p&gt;Dada la poca información que hay respecto al tema en Internet en español, me imagino que quizás por la poca apreciación que tiene la Teoría de Compiladores no sólo en mi país (Guatemala) sino en quiza toda latinoamérica. he decidido hacer un tutorial para intentar llenar ese vacio, y demostrar que existen herramientas más amistosas para generar analizadores léxico y sintácticos que la monolítica combinación FLEX/Bison, y que además, se pueden hacer en otros lenguajes que no sea el legendario C/C++.&#10;Pero antes de esto, una introducción (rapida para no aburrir) a las herramientas.&lt;/p&gt;</description></item><item><title>Mis proyectos de sistemas en la USAC parte V: Compiladores 2…</title><link>https://blog.kreig.rocks/2009/03/25/mis-proyectos-de-sistemas-en-la-usac-parte-v-compiladores-2/</link><pubDate>Wed, 25 Mar 2009 12:00:17 -0600</pubDate><guid>https://blog.kreig.rocks/2009/03/25/mis-proyectos-de-sistemas-en-la-usac-parte-v-compiladores-2/</guid><description>&lt;p&gt;Y luego de la trabada que fue Compiladores 1, Estructuras de Datos, y Organización Computacional.  se deja venir el 6to semestre con muchas más trabadas, solo que ésta vez exponenciales&amp;hellip; y no tanto por los cursos de sistemas, sino tambien por Investigación de Operaciones&amp;hellip; un curso en donde el que sepa llevar la subjetividad de Vinicio Monzón, el ingeniero que dá el curso, hasta en su auxiliar se puede convertir (sino vean a Patricio AKA César Rojas), pero bueno, ya mucho hablar de basura, y vamos a lo que me incumbe, publicar los proyectos del que, para muchos, es el curso más difícil de la carrera (aunque a mi me haya costado mas la investigacion de operaciones), no tanto por su contenido teórico, sino por la extensión y dificultad de sus proyectos de programación. Me refiero a Organización de Lenguajes y Compiladores 2.   Se realizaron 2 proyectos en este curso cuando lo lleve ya hace algunos años, los cuales son:&lt;/p&gt;</description></item><item><title>Mis proyectos de sistemas en la USAC parte III: Estructuras de Datos…</title><link>https://blog.kreig.rocks/2009/03/20/mis-proyectos-de-sistemas-en-la-usac-parte-iii-estructuras-de-datos/</link><pubDate>Fri, 20 Mar 2009 12:00:26 -0600</pubDate><guid>https://blog.kreig.rocks/2009/03/20/mis-proyectos-de-sistemas-en-la-usac-parte-iii-estructuras-de-datos/</guid><description>&lt;p&gt;Uno de los cursos más difíciles en la vieja escuela, continuación de &lt;a href="http://objektblog.wordpress.com/2009/03/19/mis-proyectos-de-sistemas-en-la-usac-parte-ii-progra-2%e2%80%a6/"&gt;IPC 2&lt;/a&gt; en un semestre que no tenía nada de trivialidad al llevar cursos de Circuitos Digitales, y Compiladores simultáneamente con éste&amp;hellip; y un curso que tuve que repetir en vacaciones con los proyectos ya ganados, (eso era lo bueno), y que, en la actualidad, esta mas orientado a web services y J2EE que a estructuras de datos puras. como cuando la llevé. pero bueno, hace tres años todavía teníamos que hacer Matrices Ortogonales, Árboles AVL, Hash tables, y todo tipo de estructuras desde cero, pues usar librerías como las collection de Java y las STL de C++ era un pecado para los auxiliares. En fin, de éste curso incluiré solamente 1 proyecto, el de un dizque Excel hecho en Java que utilizaria Matrices Ortogonales para manejar las celdas. y 1 práctica ratosa.&lt;/p&gt;</description></item><item><title>Y Compiladores, para que p****?...</title><link>https://blog.kreig.rocks/2008/10/04/y-compiladores-para-que/</link><pubDate>Sat, 04 Oct 2008 19:24:49 -0600</pubDate><guid>https://blog.kreig.rocks/2008/10/04/y-compiladores-para-que/</guid><description>&lt;p&gt;&amp;hellip; Esto es lo que dice mucha gente en informatica, que estudia o estudió Ingeniería en Sistemas o Informática, o Ciencias de la Computacion, o como quiera llamarle, tiene cierto odio/resentimiento/&lt;em&gt;ahuevamiento&lt;/em&gt; con ciertos cursos como Estructuras de Datos, Administracion de Archivos, y en general aquellos que están directamente relacionados con la ciencia computacional.&#10;Sin embargo, de todos estos cursos, los que están a la cabeza son definitavemente los cursos relacionados Teoría de Compiladores, al cual mucha gente califica como  &amp;ldquo;Inaplicables&amp;rdquo;, &amp;ldquo;Inservibles&amp;rdquo;, &amp;ldquo;basura&amp;rdquo;, &amp;ldquo;m**rda&amp;rdquo; y va en descenso&amp;hellip; Sobre todo en países como los nuestros, con sus problemas económicos, que no  invierten casi nada en Investigación y Desarrollo, haciendo que los cursos de Compiladores queden siempre a la cabeza de los listados de las encuestas de &amp;ldquo;cursos que se deberían eliminar de la carrera&amp;rdquo;.&#10;Desafortunadamente, yo soy uno de esos pocos &lt;em&gt;freaks&lt;/em&gt; a los que si les gusta esos temas, mi pasíon por ésta teoria de compiladores nació desde que conocí el curso de Lenguajes Formales y Autómatas (en realidad no le pongo el nombre actual que le dan en mi universidad por que suena muy estúpido), el cual se puede decir que es un curso introductorio a compiladores (Compiladores 0 como le suelo decir), y desde ahí me gusto la idea de transformar algo tan natural como el lenguaje humano a una serie de instrucciones capaces de ser interpretadas por el ordenador.&#10;Me pareció bastante interesante,  que en el lugar donde laboro actualmente, se me asignó un proyecto ya hace algunos meses, en donde, se requiere el manejo de ciertas fórmulas para calcular el precio de energía de ciertas cosas segun cierta condicion.  Lo interesante es que estas fórmulas, obviamente, estarán persistidas en una base de datos de dudosa estabilidad (no digo la marca pero ya se imaginarán cual és, y lamentablemente sobre esa trabajamos), en formato varchar, o sea puro texto.&#10;Ahí es donde viene lo bueno, toca crear algún tipo &amp;ldquo;intérprete&amp;rdquo; para las mismas, ya que, aunque va a tener un conjunto de sentencias y expresiones bastante sencillas, me niego a hacerlas &amp;ldquo;a pie&amp;rdquo; por tres puntos:&lt;/p&gt;</description></item><item><title>Que seria de este mundo si... Microsoft no existiera?</title><link>https://blog.kreig.rocks/2008/05/23/que-seria-de-este-mundo-si-microsoft-no-existiera/</link><pubDate>Fri, 23 May 2008 13:48:53 -0600</pubDate><guid>https://blog.kreig.rocks/2008/05/23/que-seria-de-este-mundo-si-microsoft-no-existiera/</guid><description>&lt;p&gt;Bueno, con este post doy inicio a una serie de post llamados &amp;ldquo;&lt;em&gt;Que seria de este mundo si&lt;/em&gt;&amp;hellip;&amp;rdquo; en donde trataré de exponer un mundo ficticio en donde cierto tópico, cierto concepto, existente e importante en el mundo actual, no existiese, tanto desde un punto de vista global como personal. Doy inicio con algo que muchos de nosotros desearíamos desde dentro, que Microsoft nunca hubiese existido.&#10;Y por qué me planteo esta pregunta? pues simplemente se me ocurrio en mis horas felices en el baño, al reflexionar sobre unos bugs tan oscuros que me esta dando el contubernio infernal &amp;ldquo;&lt;strong&gt;.NET/SQLServer 2005&lt;/strong&gt;&amp;rdquo; en el trabajo, donde pude constatar la mierda de producto que es, sin embargo, en este post trataré de ser mas objetivo, y trataré de mostrar que aunque el mundo no es el mejor con microsoft a la cabeza, quiza sin este, seria mucho peor&amp;hellip;&#10;Echemos a volar la imaginacion&amp;hellip; Iniciemos con un evento ficticio, La madre de Bill Gates decide abortar&amp;hellip; Bueno, todavia tenemos a Ballmer y Wozniak, aunque estos deciden tomar un rumbo diferente, quiza dedicarse a zapateros. Con esto, nos situamos temporalmente en los años ochenta, Sin Microsoft, IBM nunca compra el DOS para su IBM-PC, con esto tenemos ya el primer cambio. Las IBM-PC compatibles jamás estarían atadas a los sistemas operativos Microsoft&amp;hellip; Como sería el avance de la informática sin ese factor? Analicemos&amp;hellip; por lo tanto puedo decir Adios MS-DOS&#10;Por su parte IBM, decide entonces comprar algun otro sistema operativo, quiza adaptar algun Unix a su plataforma, sin embargo, las IBM-PC, que han sido &amp;ldquo;intel inside&amp;rdquo; desde un principio&amp;hellip; con estos cambios, quiza en ese universo paralelo habría existido alguna posibilidad de que tambien se rompiera ese contubernio &amp;ldquo;x86-ibm-pc-compatible&amp;rdquo; con la sola inexistencia de microsoft? (en Ensambladores hubiera aprendido otro dialecto diferente al x86 que actualmente se da) con esto se rompe el dominio de Intel. el duo WinTel no se hubiera dado Adios Core 2!&#10;Llendo por otro lado en este universo alterno, el competidor directo. Apple, tendría los mayores beneficios, contando de que poseería el sistema operativo más adecuado y amigable para el usuario final, pues aunque los Unix son muy buenos, en esas epocas no habian sido lo bastante amigables para el usuario común, un mercado a las que las IBM-PC estaban enfocadas desde sus inicios. Dominando de esta manera Apple el mercado Desktop desde ese momento, no sólo con su SOFWARE PROPIETARIO como tambien con su HARDWARE PROPIETARIO, y a precios bastante elevados&amp;hellip; lo cual quizá estaría peor a que en la realidad sucede, quizá, como Compaq en las IBM-PC, alguien se hubiera animado a hacer clones MAC, pero seguro, hubieran sido muy costosas&amp;hellip;. Adios Hardware compatible y Clones!&#10;Mencionando Windows, pieza clave para Microsoft, En esa realidad alterna nunca hubiera existido, y como dije antes, la interfaz de las Desktop estarian dominados por las MAC. Y que de las workstation?, pues, mas de alguien se le hubiera ocurrido diseñar algun GUI para (X consortium?). Eso si basándose más directamente en elementos de GUI MAC que en las Windows (Adios elementos como, Menu Inicio, Taskbar, etc), pero bueno, seguro alguien se hubiera inventado alguna alternativa mejor para todos estos elementos.&#10;Además, Quizá MAC nunca hubiera dado el paso a fundar el kernel de MacOSX sobre un BSD, ni mucho menos cambiar de arquitectura PowerPC a x86 simplemente por que no se vería en la necesidad competitiva de hacerlo. Adios MacOSX.&#10;pero&amp;hellip; Y que cambiaria en la Web? Desde un inicio, la web fue desarrollada por un grupo independiente, iniciando por la infraestructura de redes, Microsoft en realidad ni siquiera quería adoptar el modelo TCP/IP, por lo que muchos estándares impulsados por organizaciones independientes como la WWW consortium y la IEEE, seguirían su rumbo, desarrollandose la web de una manera natural. Igual, Mosaic hubiera sido desplazado por Netscape, y pues Netscape&amp;hellip; sin Internet Explorer, dominaría el mercado, FIREFOX NO EXISTIRIA, pues, es bien sabido que la fundación Mozilla nació cuando Netscape vio la batalla perdida ante Internet Explorer, pues sin la existencia de Microsoft, seguro Netscape jamas hubiera liberado el código de su navegador. Adios Firefox.&#10;Y hablando de internet.. conoceríamos los virus sin microsoft? de seguro, la diferencia es los sistemas Unix y Mac serían más propensos a estos ataques.&#10;Continuando con los temas de Internet&amp;hellip; Teniendo Netscape dominando el mercado, y siendo ellos los impulsores del Ecmascript (actualmente Javascript), seguro Javascript existiría, pero que hay de AJAX? quiza no&amp;hellip; al menos en la manera en que lo conocemos&amp;hellip; por que? Hay dos grandes razones para eso&amp;hellip; una es XML, y dos, la funcion clave de AJAX para obtener un request XML asincrono. La primer razon, es porque el XML en sus inicios fue un estándar impulsado por las megacorporaciones de informática, entre ellas, nada mas y nada menos que Microsoft, por allá al finales de los 90s.&#10;Ahora, sobre si la funcion de request asíncrono, ésta, nació a partir de un control ActiveX, para Internet Explorer usando JScript. Sin ésta, seguro javascript hubiera adoptado un modelo diferente. Sin ajax a la vista, quizá el mundo estaría (aún mas) dominado por otros estándares de facto para la interactividad web, como Flash, Adios XML, Webservices, AJAX, Web 2.0, y adios.. todo lo relacionado con XML (al menos en la forma actual).&#10;Y ya que hablamos de desarrollo de software, Seguramente, sin .NET, Java dominaría el mercado aún mas, y, al igual que Microsoft, Sun Microsystem sería también un monopolio, Muchas de las mejoras hechas actualmente a los APIs de Java no existirían (como JFS, o JavaFX, la cual su desarrollo fue claramente impulsado por la sencilles que representaba programar en asp.NET y WPF respectivamente), así como la liberación de fuentes de Java tampoco.&#10;Y bueno un tema que tenia que tocar&amp;hellip; Qué seria de Linux* sin esto? Sabemos que lo que (a todos) impulsó a que el movimiento del software Libre creciera en los años 90s y 20xx, aparte de la curiosidad de ver como funcionan las cosas, fue la necesidad de liberarse de los estúpidos bugs de los sistemas Microsoft, y los riesgos de seguridad que estos conllevan. Hubiera Linux* tenido el mismo impulso, siendo mas específicos&amp;hellip; hubiera existido grandes proyectos como KDE o Gnome como las intefaces más amigables en los sistemas GNU/Unix en general?&#10;Seguramente los cambios no serían hasta ahi, sino también en toda la infraestructura multimedia, quizá SDL + OpenGL tendría el espacio que ocupa actualmente DirectX en APIS para desarrollo de juegos comerciales. haciéndolos más portables que usando las APIs propietarias de Microsoft. Esto si sería una mejora.&#10;Otra cosa, muchos de nosotros, por más FOSSeros que seamos, nuestros inicios se remontan a sistemas Microsoft, tal es mi caso, ya que mi primer plataforma de programación fue Windows ejecutando mis primeros algoritmos Javascript sobre Internet Explorer 3. Quizá mis primeros contactos con la programación de sofware hubiera sido de una manera diferente, o talvez, hasta hubiera elegido otra carrera (historia quizá?), de tal manera que ni este blog fuera lo mismo.ya que seguramente tendria post relacionados con la Conquista, o la civilización Maya, en vez de hablar de Software.&#10;Y pues estos son algunas cuestiones que se me ocurrieron en este mundo alterno sin microsoft. Estamos mejor o estamos peor?&#10;* Cuando digo Linux no incluyo el sistema GNU, pues estoy seguro que GNU hubiera seguido su curso por aparte,&lt;/p&gt;</description></item><item><title>Entonces... qué ha hecho el software libre por nosotros?</title><link>https://blog.kreig.rocks/2008/03/16/entonces-que-ha-hecho-el-software-libre-por-nosotros/</link><pubDate>Sun, 16 Mar 2008 18:34:41 -0600</pubDate><guid>https://blog.kreig.rocks/2008/03/16/entonces-que-ha-hecho-el-software-libre-por-nosotros/</guid><description>&lt;p&gt;ya sea por conveniencia o por ignorancia, ésta es una pregunta que quizá se haya hecho mucha gente que ve atemorizada cómo este modo de desarrollo de software ha crecido exponencialmente en los últimos años gracias a su naturaleza colaborativa, intentando atacar y defender a su software propietario simplemente por que no saben usarlo. Pues para todos aquellos que están renuentes a reconocer los grandes cambios que el software libre ha hecho en el mundo, aquí presento una lista de razones por qué el mundo es diferente desde la existencia de esta ideología.&#10;Basta con ver que la gran parte de software &amp;ldquo;significativo&amp;rdquo; de software, proyectos importantes de tiempo real, sistemas operativos, y la mayoria del software que mantienen vivo el mundo, e incluso juegos de video, está compilado usando &lt;strong&gt;GCC&lt;/strong&gt; y enlazados al conjunto de librerías &lt;strong&gt;GLIBC&lt;/strong&gt;, convirtiéndolo en quiza el &lt;strong&gt;compilador más usado del planeta&lt;/strong&gt;, no solo por su gran eficiencia o su arquitectura, sino también por su flexibilidad entre plataformas, permitiendo la interoperabilidad entre diferentes plataformas con leves cambios de código, usando el mismo lenguaje. Ésto señores si es multiplataforma.&#10;Este compilador es la base para que grandes proyectos como el &lt;strong&gt;Kernel de LINUX&lt;/strong&gt;, se volvieran una realidad, y se materializara uno de los cambios más importantes dentro del movimiento libre&amp;hellip; darle un Kernel al conjunto de utilidades y librerías &lt;strong&gt;GNU&lt;/strong&gt;, convirtiéndose más tarde en lo que conocemos como &lt;strong&gt;GNU/Linux&lt;/strong&gt; y toda la revolución estuviera por iniciar&amp;hellip; hasta la actualidad, donde el superordenador más poderoso del mundo, el &lt;strong&gt;BlueGene&lt;/strong&gt; de IBM, de cientos de teraflops, se ejecuta nada mas y nada menos que en el sistema operativo libre de preferencia, apto para mantener vivo este supercluster. Incluso Motivando a empresas manufacturadoras de Sistemas Operativos Propietarios a cambiar la arquitectura de sus kernels para sus versiones recien cocinadas del 2008 para poder hacerle frente a la estabilidad y escalabilidad que &lt;strong&gt;GNU/Linux&lt;/strong&gt; y los diferentes &lt;strong&gt;BSD&lt;/strong&gt; han dado durante años.&#10;Incluso no hay que ir tan lejos, basta con recordar también el Kernel del sistema operativo más usable y amigable. &lt;strong&gt;MacOS X&lt;/strong&gt;, el cual, con su apariencia reluciente, no es nada más que un shell gráfico sentado sobre una plataforma estable llamada &lt;strong&gt;Darwin&lt;/strong&gt;, y como no es de extrañarse por las descripciones anteriores, es software libre compilado con software libre. Y yendo un poco más abajo&amp;hellip; vemos ademas a &lt;strong&gt;Motorola&lt;/strong&gt; más frecuentemente produciendo teléfonos de calidad, y reduciendo costos de desarrollo, y por ende bajando precios al consumidor, al utilizar un sistema operativo muy famoso que tiene de mascota a un pingüino.&#10;&lt;strong&gt;Google&lt;/strong&gt; no hubiera sido tan exitosa (y quizá no existiera) sin software libre, así como el internet actual no sería lo mismo sin Google, quienes supieron sacarle el jugo a las capacidades de &amp;ldquo;crecimiento horizontal&amp;rdquo; que el software libre permite hacer al crear superclusters y lograr reducir los costos de procesamiento para una exitosa implementación de sus algoritmos de búsqueda distribuida.&#10;Incluso, otro proyecto clave para el crecimiento de Internet ha sido &lt;strong&gt;LAMP&lt;/strong&gt;, en donde un gran porcentaje de software &amp;ldquo;&lt;strong&gt;Web 2.0&lt;/strong&gt;&amp;rdquo; se ejecutan en este tipo de herramientas, el cual, también estoy seguro que el internet no sería el mismo sin LAMP así como este mundo actual no sería el mismo sin internet&amp;hellip; o será en vano que &lt;strong&gt;Sun Microsystems&lt;/strong&gt; recientemente adquiriera &lt;strong&gt;MySQL&lt;/strong&gt; para mejorar su interoperabilidad con &lt;strong&gt;Java&lt;/strong&gt;, tambien recientemente liberado?&#10;Con estos pocos ejemplos vemos que el software libre no son solamente ideales, es mejora continua para producir software de calidad&amp;hellip; y continua en crecimiento.&lt;/p&gt;</description></item><item><title>JAVAizando sistemas de la USAC.</title><link>https://blog.kreig.rocks/2007/07/30/javaizando-sistemas-de-la-usac/</link><pubDate>Mon, 30 Jul 2007 20:19:21 -0600</pubDate><guid>https://blog.kreig.rocks/2007/07/30/javaizando-sistemas-de-la-usac/</guid><description>&lt;p&gt;Una de las cosas por las que la gloriosa y tricentenaria &lt;strong&gt;Universidad de San Carlos de Guatemala&lt;/strong&gt; se ha dado a conocer a nivel nacional, por ser una de las universidades en donde ganar los cursos es un sacrificio sinigual, Decir que alguien se graduó de la USAC muchas veces significa que es una persona que ha superado etapas de burocracia, catedráticos trabadores, y sobre todo, muchos desvelos. Y qué decir del prestigio de salir de Ing. en Ciencias y Sistemas, una de las carreras que por mucho tiempo fue considerada como la más desafiante dentro de la USAC. Ahh un gran sacrificio, mas por los 80s; sin Internet, ni wikipedia, ni Sourceforge, sin Amarok o Winamp y obvio sin mp3 de Kreator que escuchar para una mayor iluminación de algoritmos, etc&amp;hellip;, y con una gran carga algorítmica dada en los cursos científicos computacionales y que había que desarrollar e investigar en bibliotecas convencionales.&#10;Sin embargo todo esto ha ido cambiando, y desde el 2005, desde que entro el dizque decano Paiz, y su equipo de trabajo, específicamenteel Ing. Mazariegos, ex director de la Escuela de Sistemas, quien propuso al inicio de su gestión, &amp;ldquo;cambios&amp;rdquo; que supuestamente beneficiarían al estudiantado. Estos cambios fueron fundamentados en la necesidad de renovación de enseñanza en la carrera, que según él, eran más aplicables, llevaron a convertir esta carrera de alta demanda en Guatemala, en algo asi como una carrera enfocada más en tecnologías cortoplazistas y triviales, removiendo todo rastro de ciencia que tenía la carrera, y convirtiéndolo en J2EE, etc, una tecnología que si bien los conocimientos de ésta tienen alta demanda en el mercado, todos sabemos muy bien que el mundo tecnológico cambia a un ritmo acelerado, y lo que hoy es tecnología de punta, mañana es tecnología inservible, e inútil. y Java no va a ser la excepción.&#10;Hasta donde yo se el nombre de la carrera es &amp;ldquo;Ingeniería en Ciencias y Sistemas&amp;rdquo;, mas no &amp;ldquo;Ingeniería en Java y Paradigmas Tecnológicos Actuales de Sistemas&amp;rdquo;, ya que pareciese que se removió cualquier rastro de ciencia que quedaban en cursos de 3er semestre al 6to, Convirtiendo los contenidos de cursos tan importantes como Estructuras de Datos, de Arboles B a Web Services e i18n en Java, y a la masterización de herramientas como NetBeans y JDeveloper&amp;hellip;&#10;El problema ha llegado a tal extremo que la pobre generación que comenzó Programación 1 en el 2do semestre de 2005 no sabe ni siquiera el concepto de puntero en C/C++, mucho menos van a saber la implementación óptima de un arbol B en C/C++, o de un Arbol de Sintaxis Abstracta, muy útil para los cursos de Compiladores, que afortunadamente siguen sin cambio en sus temas titulares y el contenido se sigue basando en el Libro del Dragon sin embargo&amp;hellip;&#10;A esto viene la siguiente pregunta: Cuando se ha visto que un compilador este hecho en una plataforma tan ineficiente sobre Java??? pues señoras y señores, esto es lo que se está haciendo en los laboratorios de Compiladores 1 y 2, imponer el uso de herramientas tan ineficientes como JLex y Cup y crear un intérprete o compilador en lenguaje Java que se ejecute ineficientemente sobre la JVM&amp;hellip;&#10;Para muestra un boton, el proyecto publicado en este blog esta hecho en Java, con una ineficiencia enorme, y no tanto por culpa del programador(o sea yo ;-)), sino de la plataforma Java y su JVM, Esa ineficiencia se hubiera minimizado si se hubiese hecho en un lenguaje igual de portable, e incluso soportando más plataformas de hardware/software que el mismo Java como C/C++ bajo GCC usando Flex y Bison o ANTLR(y si no me creen lo de la portabilidad, dos preguntas sencillas&amp;hellip; Con que lenguaje está hecho y bajo que esta compilado el kernel de Linux?? en C bajo GCC obviamente, y en cuantas plataformas de Hardware se ejecuta?? Muchísimas, incluyendo teléfonos móviles&amp;hellip;), por lo que la excusa de la portabilidad era el motivo para el uso excesivo de Java en los cursos de programación en la Escuela, con el anterior argumento se acabó.&#10;Y no es que esté en contra de tecnologías y paradigmas como J2EE, .NET, , ni de lenguajes como Java o C# o tendencias como Web Services o i18n, Se que con ellas se pueden realizar muy buenas aplicaciones con el mínimo de esfuerzo, y reconozco que estas tecnologías se tienen que seguir impartiendo, sin embargo como temas de laboratorio, no de la clase titular. De lo que sí estoy en contra es de la sustitución de la base científica fundamental por éstas, que bien se sabe que lo que es ciencia, perdura por los siglos de los siglos.&#10;Afortunadamente yo todavía tuve la oportunidad de ser la última generación en aprender lo que quedaba de Ciencia de la computación&amp;hellip; ya que gracias a este background científico, aprender nuevas tendencias como Ajax, Ruby on Rails, J2EE, se hace mucho mas sencillo, y el cambio de paradigma menos costoso y doloroso&amp;hellip; a que si le ponen a un alumno carnet 2005 a que les desarrolle un sistema de archivos para una base de datos usando Árboles B+ bajo C++. Que las cosas buenas continúen, y la ciencia computacional regrese a donde debe estar, he dicho.&lt;/p&gt;</description></item><item><title>Proyecto, Generador de Analizadores LALR en Java</title><link>https://blog.kreig.rocks/2007/07/10/proyecto-generador-de-analizadores-lalr-en-java/</link><pubDate>Tue, 10 Jul 2007 21:10:14 -0600</pubDate><guid>https://blog.kreig.rocks/2007/07/10/proyecto-generador-de-analizadores-lalr-en-java/</guid><description>&lt;p&gt;Bueno señores, a continuación, un post aburridon y geek como cosa rara, pero estoy seguro que le puede servir a muchos estudiantes de Sistemas que van a llevar algun curso de Compiladores. Aqui publico el código fuente de uno de los más grandes y costosos proyectos que me ha tocado hacer en la carrera, un generador de analizadores sintácticos LALR. Este fue realizado para el laboratorio del curso Organización de lenguajes y Compiladores 2, y fue desarrollado en un mes aproximadamente. El proyecto fue hecho en parejas, complicándome yo mismo al elegir la parte más difícil (perdón pero la mejor manera de simplificarme la vida es complicándomela jaja) lo cual consistía en la de la creación de la tabla LR usando el famoso método LALR del famoso libro del dragón, así como también la interpretación del lenguaje de las acciones semánticas, si no entienden algo de lo que a continuación voy a escribir, por favor, ganen compiladores 1 y/o léanse (y entiendanlo que es lo mas difícil) el libro del dragon &lt;em&gt;(Compilers, Principles, Techniques, and Tools. 1986. Aho, Sethi, Ullman )&lt;/em&gt; del capitulo 1 hasta el capitulo 6 jeje.&#10;El proyecto consiste en un compilador de una gramática en formato similar a los archivos de entrada de CUP, el lo compila hacia un paquete .lalr dado, el cual es un archivo binario que contiene toda la información necesaria (tal como la tablas LR(1) de goto y accion, tokens, y acciones semánticas) para poder interpretar cualquier fuente que está descrito con esa gramática, ejecutando las acciones dadas en cada producción.&#10;Para ponerlo mas sencillo vean el sig. ejemplo:&lt;/p&gt;</description></item><item><title>Modularización, un problema pendiente...</title><link>https://blog.kreig.rocks/2007/07/09/modularizacion-un-problema-pendiente/</link><pubDate>Mon, 09 Jul 2007 20:37:28 -0600</pubDate><guid>https://blog.kreig.rocks/2007/07/09/modularizacion-un-problema-pendiente/</guid><description>&lt;p&gt;Es lamentable que muchos estudiantes de la carrera de Sistemas no apliquen los conceptos más importantes de modularización, sea cual sea el lenguaje&amp;hellip; Es algo inaceptable que un proyecto largo, como los que suelen dejar en los cursos de Sistemas de la USAC, venga si mucho un par de archivos fuente.&#10;Recuerdo en mis tiempos, cuando llevé progra 1/progra 2, y se programaba en C existían proyectos con una modularización que daba pena, ya que ni modularizaban a nivel algoritmico ( o sea, todo lo hacian en el void main() olvidando los principios fundamentales de la programación descendente), mucho menos utilizaban diferentes archivos para la división semántica del proyecto, y en algunos caso llegaban a utilizar hasta sentencias goto!!(incluso todavía hay gente que lo utilizan en java&amp;hellip; que pecado a la abstracción).&#10;Por ello, es importante una buena modularización, tanto para el entendimiento del propio código, como del código ajeno (ojo Willy), además de que ayuda&#10;evitar código redundante.&#10;Cada lenguaje y compilador cuenta con sus propias herramientas y técnicas, además de &amp;ldquo;barreras naturales&amp;rdquo; para una mayor modularización, listaré algunos ejemplos básicos:&lt;/p&gt;</description></item></channel></rss>