Buscar este blog

domingo, 4 de diciembre de 2016

BASIC: Homenaje

Hace algunos días me puse a recordar una de las más grandiosas experiencias que tuve en la vida: Entrevistar a Thomas E. Kurtz a mediados de la década de los años 90. ¡Vaya! Entrevistar a uno de los creadores de mi lenguaje de programación favorito. Todo un asunto... Quiero transcribir íntegramente los dos artículos (sintetizados en uno solo) que aparecieron en PCSemanal en aquellos días con la transcripción a la entrevista por correo electrónico que hice a Thomas E. Kurtz, quien hoy se encuentra retirado a la edad de 88 años. Cabe hacer, nuevamente, un agradecimiento público a la prestancia del Dr. Kurtz, quien tuvo la enorme paciencia de reenviarme la primera parte de esta entrevista en esos entonces pues cuando había recibido su respuesta no pasó mucho tiempo (apenas unas horas) y mi disco duro tronó, así que perdí esa información. Gracias Dres. Kurtz y Kemeny. Ojalá la entrevista sea del agrado del lector. A mí todavía me pone la carne de gallina por la emoción.



Tal vez suene meloso, pero hace unos días impactó en mi cabeza el por qué he escrito columnas y columnas de BASIC, pero nada de sus autores. Esta idea no me dejó dormir, y esa misma noche me di a la tarea de buscar en Internet información acerca de John G. Kemeny y Thomas E. Kurtz. Después de deambular algunos minutos me di cuenta que toda la información podría estar en el site de Dartmouth... Así fue...

Esta columna la quiero dedicar como un sentido homenaje a esas dos personas que nos permitieron el fácil acceso a las máquinas en tiempos en que todo parecía estar inminentemente orientado a los científicos e ingenieros.

Pues bien, ¿Quién fue John George Kemeny? Este personaje nació el 13 de mayo de 1926 en Budapest, Hungría, y será recordado por sus contribuciones a la educación de la computación y las matemáticas así como dar pie a los cambios en Dartmouth durante sus once años como presidente de este prestigiado colegio. Kemeny llegó a los Estados Unidos en 1940 y, después de terminar su educación secundaria en Nueva York, asistió a la Universidad de Princeton. Su trabajo de graduación se interrumpió mientras trabajaba en el proyecto Manhattan en Los Alamos.

Los años de estudiante de Kemeny fueron tiempos de interesantes desarrollos en matemáticas, particularmente en las áreas de lógica y computación. John aprovechó su oportunidad de aprender de los grandes, ya que trabajó con los camaradas Húngaros John von Neumann y Leo Szilard en Los Alamos, escribió su tesis con Alonzo Church, y fue un asistente de investigación de Albert Einstein.
Kemeny llegó a Dartmouth con tan sólo 27 años de edad y se le dio completa libertad para desarrollar un programa de matemáticas. Para entonces ya había escrito su primer libro: "Una mirada filosófica a la ciencia" que tuvo una buena acogida. Aun a esta temprana edad, Kemeny mostró sus habilidades especiales que llegaron a ser su marca personal: Era extremadamente brillante así como un notable solucionador de problemas. Fue uno de los primeros en anticiparse al papel principal que jugaría la computación en nuestro mundo: Kemeny insistió que el conocimiento de la computación era una parte integral de una educación liberal. Para hacer las computadoras accesibles a los estudiantes, algo de lo que no se hablaba en esos tiempos, él y su colega Tom Kurtz desarrollaron uno de los primeros sistemas compartidos del mundo.

John llevó a cabo este proyecto de tiempo compartido en un verdadero estilo personal. A sabiendas que los profesionales creerían que esto era imposible, se apartó de ellos y se hizo de los servicios de aquellos estudiantes brillantes que, como él, pensaban que era posible hacerlo.

Tal como von Neumann se dio cuenta que una computadora que sólo realizara operaciones aritméticas podría tener un poder extraordinario, Kemeny se dio cuenta que para poner este poder al alcance de todos, un lenguaje de programación podría y debería ser sencillo. Esto le llevó a desarrollar con Tom Kurtz el lenguaje BASIC el cual es aún uno de los más usados lenguajes de computación.

Kemeny, además, tuvo grandes logros en materia de matemáticas, los cuales volcaba a sus alumnos en la Universidad. Años después, Kemeny y Kurtz desarrollaron un nuevo y más poderoso lenguaje de programación llamado True Basic, mismo que actualmente se ha desarrollado para casi cualquier plataforma, para garantizar portabilidad.

Sin embargo, John partió lejos del mundo de los vivos el 26 de diciembre de 1992 víctima de un ataque al corazón. Tom Kurtz, sin embargo, aún está con nosotros y tuve la oportunidad de hacerle una entrevista con la magia del correo electrónico. Transcribo, a la letra, una traducción de esta entrevista que, sumido en una profunda emoción, le hice al gurú del BASIC:

David Garza: ¿Podría darme sus datos personales y una breve semblanza?
Tom Kurtz: Soy de los Estados Unidos. Nací en Illinois el 22 de Febrero de 1928. Fui al colegio en Knox, un pequeño colegio en Galesburgo, IL. y me gradué en 1950. Posteriormente fui a Princeton y estudié Estadística. Obtuve mi graduación en 1956. Tuve un acercamiento a la computación en 1951 en la UCLA y posteriormente en Princeton. (Las computadoras fueron la IBM 603, creo, y las SWAC estándar, así como la IBM CPC en Princeton. También usé la IBM 650 en 1957.)

Fui a Dartmouth en 1956 y me uní al departamento de matemáticas que presidía John (Kemeny). Fui profesor de estadística y métodos numéricos los primeros días. También me asocié con el centro de computación MIT, quienes instalaron una computadora IBM 704 en 1957. Aprendí el lenguaje ensamblador SAP y Fortran en esa máquina.

Tuvimos una LGP-30 en Dartmouth en 1959, y fui su director.

DG: ¿Cuales fueron las causas exactas que les dieron la idea de crear BASIC?
TK: Tomamos la decisión en 1962 con el objeto de hacer la computación disponible para todos los estudiantes de Dartmouth. El requerirles el uso de tarjetas perforadas estaba fuera de cualquier cavilación. Así que decidimos desarrollar un sistema de Tiempo Compartido por recomendación de John McCarthy (Que estaba en Dartmouth, luego en MIT y después en Stanford). Esto hicimos.
El lenguaje estaba disponible para TODOS los estudiantes y TODAS las personas en Dartmouth, incluyendo a los conserjes. Con el objeto de hacer las cosas más simples para TODOS los usuarios, decidimos desarrollar un nuevo y más simple lenguaje, después de verificar que Fortran y Algol (Un precursor de Pascal) no eran del todo aceptados. Así llegó BASIC. Se basaba en algunas simplificaciones: una línea = una instrucción; entradas y salidas sin formatos; sólo un tipo numérico (punto flotante de doble precisión); palabras clave en vez de puntuaciones (Como FOR I = 1 to n step 5 en lugar de DO 100, I = 1, 5, n); valores predeterminados razonables (Por ejemplo, si el incremento en FOR es 1, puedes ignorar STEP); mensajes de error que decían cual es el problema (En lugar de números de error). Hay algunas otras cosas por el estilo.

DG: ¿Esperaban que BASIC creciera como hasta hoy?
TK: No. Esto es más bien cosa de suerte, y por el hecho de que más de 100 oficinas de servicios de tiempo compartido modelaron sus ofertas incluyendo el BASIC, desde GE, que copiaron de nuestro sistema.

DG: ¿Qué ha sucedido con su BASIC original (Me refiero a True BASIC)?
TK: Aún lo usamos. Después de todo, está basado en la norma ANSI de 1987, así como la norma ISO de 1991.

DG: ¿Microsoft es propietario de los derechos de BASIC (Como Michael Jackson con los de The Beatles B-) )?
TK: No. BASIC es un lenguaje estándar y, como tal, quien sea puede crear un intérprete o compilador acorde y llamarlo BASIC. (Nuestra versión, True BASIC, está registrada como "True BASIC".)

DG: ¿Qué piensa de su creación? (Me refiero a que mucha gente dice que BASIC es una vacilada. Yo no creo esto y he derramado toneladas de bytes en conversaciones al respecto aquí en México y en otros lugares.)
TK: La gente que dice esto no está muy consciente del todo. True BASIC está completamente estructurado, y además ofrece algunas de las características que se encuentran sólo en lenguajes orientados a objetos (como encapsulamiento de datos.) y es el único lenguaje que no requiere que el usuario conozca de declaraciones de tipos o apuntadores.

DG: Esta pregunta es muy importante para mí dada una situación personal que he discutido largamente. Hay algunas personas que sostienen que BASIC (En cualquiera de sus sabores) no es la herramienta adecuada para aprender el arte de la programación dado que hay "mejores" herramientas para hacerlo, como Pascal. La pregunta es: a) ¿BASIC es anacrónico?
TK: No, BASIC no es anacrónico. True BASIC es un lenguaje completamente estructurado y no usa números de línea o instrucciones GO TO. Visual Basic es en extremo ampliamente utilizado para desarrollar aplicaciones para Windows.

DG: b) ¿Cuantas escuelas en los Estados Unidos usan una versión de BASIC para enseñar el arte de la programación?
TK: Cerca de 4,635 escuelas de enseñanza media, superior, colegios comunitarios y universidades. Por ejemplo, la Universidad de Virginia en su Escuela de Ingeniería requiere que todos sus estudiantes inscritos aprendan True BASIC.

DG: c) ¿Cree que BASIC sin objetos y apuntadores no es más que un juguete?
TK: No. True BASIC (Y Visual Basic) es un lenguaje serio para el desarrollo de aplicaciones, capaz de desarrollar aplicaciones que contienen muchos miles de líneas de código. El caso es que C es un lenguaje para la programación de sistemas, no un lenguaje para la programación de aplicaciones; por esto, C es un lenguaje para expertos y profesionales. El hecho de que C sea más ampliamente usado para esto no convierte a BASIC en un juguete. JAVA desplazará a C++ en aplicaciones para la Web, y no convierte a C++ en un juguete. Nuevamente, esto tampoco convierte a BASIC en un juguete. ¿Fortran es un juguete? True BASIC es mucho más sofisticado que Fortran.

Un comentario acerca de los apuntadores: Dado que son absolutamente necesarios para la programación de sistemas, son usados en Pascal y C principalmente para "apuntar a" datos almacenados distribuidos. Ahora que requerir (o permitir) al programador que trate con apuntadores es algo que no debería permitirse a todos más allá de los profesionistas y especialistas en las ciencias de la computación. El hecho es que Visual Basic es más parecido a C que las versiones anteriores de Microsoft Basic, pero sin apuntadores. En True BASIC, todo el almacenamiento se lleva a cabo dinámicamente, de tal forma que los programadores principiantes e intermedios no tienen que tratar con ellos. Sólo recuerda que los apuntadores son sólo para expertos.

Otro comentario: El requerimiento principal de la Programación Orientada a Objetos es el encapsulamiento de datos. True BASIC provee de ello a través de sus estructuras MODULE. (Otros aspectos de la POO, como la herencia y morfología [polimorfismo] son mucho menos importantes.)

DG: d) ¿Cree que Logo es mejor que BASIC?
TK: Sólo para escolares que usan la Tortuga. ¿Has visto que alguien escriba un programa en LOGO más allá que hacer dibujos bonitos?

DG: e) ¿Cual es la verdadera orientación de BASIC?
TK: La verdadera orientación es la que ya conoces. Es el lenguaje más sencillo para que un principiante aprenda, y que "escale" a grandes aplicaciones poco a poco y bien. Además, True BASIC es transportable a través de varias plataformas, dado que está basado en normas nacionales e internacionales. (No puedo decir lo mismo de C, dado que las variaciones entre las implementaciones causan grandes problemas al portar el código fuente.)

DG: ¿Qué piensa que pasará con BASIC en el futuro?
TK: BASIC continuará siendo usado. Después de todo, Visual Basic es el principal lenguaje de desarrollo de aplicaciones para los productos de Microsoft. Tenemos una gran cantidad de usuarios, además de que es largamente usado en escuelas y colegios. La mayoría de las aplicaciones que creamos se escriben en True BASIC. Escribir aplicaciones grandes (De unas 10,000 a 20,000 líneas) es mucho, mucho más fácil en True BASIC que en CUALQUIER OTRO lenguaje, sin excepción.

DG: ¿Cómo se puede obtener una copia de su lenguaje True BASIC? (Aquí en México no lo he podido encontrar. Sólo encontré el True Basic Calculus de Kemeny.)
TK: Puedes ordenarlo con nosotros llamando al 1-800-436-2111, usando una tarjeta de crédito.

DG: ¿Hay algún sitio de True BASIC en Internet?

DG: Finalmente, siempre me ha azotado la pregunta ¿Por qué BASIC? Es decir ¿Por qué el nombre BASIC? ¿Por qué pensaron en su significado? ¿Cómo es que vino la idea? ¿Fue difícil de encontrar?
TK: Originalmente BASIC se eligió por su clara interpretación de "simple", entonces se divisó un acrónimo: "Beginners All-purpose Simplified Instruction Code" (Código multipropósito de instrucciones simplificadas para principiantes). Nosotros en True BASIC aún usamos BASIC (Todas en mayúsculas). Microsoft lo ha cambiado a Basic para alejarse del acrónimo original.

Recuerda que Fortran es el acrónimo de FORmula TRANslator (Traductor de fórmulas).

Así, y en propias palabras del creador de este lenguaje hemos visto y compartido sus propias impresiones al respecto. Hubiese sido interesante hacer lo propio con John, pero partió antes que iniciara mi participación en PCSemanal. Queda, pues, este artículo como un pequeño pero sincero homenaje a estos dos personajes que han tenido tanto que ver con el crecimiento y penetración de la computación a un nivel mucho más allá de científicos e ingenieros, y el mío propio. 

Hasta aquí el artículo original. Está transcrito tal cual se publicó en aquellos días, y es por ello que se ven cosas interesantes como llamar por teléfono para pedir el True BASIC, cuando hoy se le puede obtener desde la propia página Web y pagarlo allí mismo. Nota: Las imágenes de Kurtz y Kemeny se publican sólo como referencia y tienen registro de propiedad.

¡Nos seguimos leyendo!

[¿Qué dijo?
La versión original de BASIC se diseñó y escribió en el Dartmouth College bajo la dirección de John George Kemeny y Thomas E. Kurtz. En 1962 comenzaron a trabajar en un proyecto para crear un lenguaje de programación escrito desde el punto de vista del usuario. El nacimiento de BASIC se considera el 1 de Mayo de 1964.

Más adelante, en 1983, Kurtz y Kemeny presentaron una nueva versión de BASIC, conocida como True BASIC, que incorpora numerosas estructuras y que se apega a los estándares ANSI e ISO.

¡Ah! Eso dijo]

miércoles, 28 de septiembre de 2016

La velocidad de la memoria RAM. ¿Qué tanto afecta el desempeño de la máquina?

El procesador, el procesador, el procesador... Muchas charlas acerca del procesador, pero muy poco se habla del resto del sistema. Hay que recordar que, con fundamento en la Máquina de Turing, John von Newmann estableció lo que se conoce en la actualidad como la Arquitectura de Computadoras. Esa arquitectura se puede apreciar en la imagen adjunta que permite ver que si bien el procesador es importante, lo segundo más importante del equipo es la memoria RAM y en un tercer punto la entrada y salida.

Arquitectura de von Newmann
Pues bien, la memoria RAM sigue siendo uno de los aspectos menos tomados en cuenta en el ámbito de la computación. Por alguna inexplicable razón, la gente está dispuestísima a invertir en procesadores súper potentes y costosos, pero de la memoria apenas pide 4GB y de la más barata. La cantidad y velocidad de la memoria tiene, definitivamente, un impacto en la calidad de la experiencia que tenemos en el equipo de cómputo.

Hace unos de días me di a la tarea de hacer algunas pruebas con distintas memorias DDR3 para conocer qué tanto se impacta el rendimiento de la máquina en ese respecto. Para ello, utilicé memorias DDR3 de diferentes "velocidades": 1333MT/s CL9, 1600MT/s CL11, 1600MT/s CL9, 1866MT/s CL9 y 2133MT/s CL11. Todas ellas fueron medidas exactamente en la misma computadora con el mismo procesador (AMD A10-7850K) la misma tarjeta madre y la misma unidad de Estado Sólido. A continuación se pueden ver los resultados medidos con StreamTriad:


Como puede verse, de utilizar una memoria de 1333MT/s a una de 2133MT/s hay una mejora del 48%, que se ve reflejado directamente en el rendimiento de la computadora (aún sin cambiar el procesador). Veamos cuál es el resultado en la prueba de 3DMark FireStrike:


Si bien el rendimiento no crece en la misma medida, lo que sí puede verse es que la mejora desde el uso de la memoria de 1333MT/s a una de 2133MT/s es del 32%, y es una mejora que, de acuerdo con la ley Weber-Fechner, se nota definitivamente (todo ello, sin cambiar el procesador).

Lo anterior, así, establece un punto interesante de inflexión: ¿qué tanto mejora el sistema si no sólo le cambio la velocidad de la memoria, sino también le cambio el disco duro estándar a una unidad de Estado Sólido. Para ello pondremos esta misma máquina con un disco duro de 7200RPM y memoria DDR3 de 1333MT/s y compararemos su resultado con una SSD y memoria DDR3 de 2133MT/s:


Como se puede destacar, el rendimiento general de una computadora puede cambiar de manera evidente al instalar una memoria más rápida y una unidad de Estado Sólido. Todo ello sin cambiar el procesador, sino aprovechándolo mejor.

De hecho, también podría obtenerse el resultado de tener tan sólo 4GB de RAM en modo Single Channel y una unidad de Estado Sólido. El resultado podría ser sorprendente, pues una configuración así daña seriamente el rendimiento del sistema:


Ello pone seriamente en perspectiva la enorme importancia que tiene que el equipo esté holísticamente bien configurado, y no sólo por que tenga un procesador "potente", sino porque el resto de sus partes estén, también, a la altura. Ahora bien, ¿qué significan esos números? Definitivamente, poco o nada se puede decir porque, además, son pruebas totalmente distintas las unas de las otras. ¿Cómo podrían interpretarse mejor? La respuesta es simple: Traducirlas (aunque, en este caso, de manera lineal) a tiempo. ¿Cuánto tiempo me ahorraría (linealmente) con cada configuración? Si tomamos en cuenta un proceso que tardara 10 minutos, ¿cuánto tardaría con las otras configuraciones y, por ende, cuánto tiempo me ahorraría? Las siguientes tablas, que reflejan los resultados obtenidos en las anteriores pruebas, podrían dar alguna luz al respecto:



Como puede verse, los ahorros de tiempo van desde 1:55 minutos hasta 3:33 minutos. A eso equivale, linealmente, el resultado de cada una de las pruebas. Un ahorro de casi 2 minutos en un proceso sí se percibe, lo que no se percibiría sería un ahorro de apenas unos segundos. En las primeras dos tablas, de hecho, se pone en perspectiva el ahorro de tiempo total al comparar la tardanza en la primera configuración contra la última. En todos los otros casos, siempre se compara el ahorro de tiempo con respecto a la configuración inmediata anterior. Esto hay que tomarlo mucho en cuenta, pues cualquier prueba de rendimiento debería ser capaz de responder a la pregunta: "¿Cuánto tiempo me voy a ahorrar?". Sin embargo, a decir verdad, ninguna prueba de rendimiento que se conozca responde a esa pregunta porque su finalidad es sólo mostrar números y tratar de impresionar. Si un ahorro de tiempo de 3:33 minutos no le parece suficiente, posiblemente preferirá hacer pruebas con su equipo directamente tomando el tiempo que tarda en realizar determinadas tareas que Usted necesite. Es altamente probable que los resultados sean aún más impresionantes.

Así, pues, ha quedado en evidencia que una adecuada configuración del equipo no incluye exclusivamente al procesador como se ha querido hacer creer. Hay una miríada de factores que intervienen en la capacidad de respuesta de la computadora. Ya, en algún momento, hablaremos de "percepción" para tener una idea más clara del posible rendimiento de una computadora.

Todas las anteriores pruebas fueron hechas en lo particular, con las versiones gratuitas de FutureMark 3DMark FireStrike y PCMark 8 Work 2 Accelerated. Las pruebas de 3DMark FireStrike se concentran en el rendimiento gráfico del equipo, mientras que las pruebas de PCMark 8 Work 2 Accelerated se concentran en el rendimiento general de la computadora en entornos productivos. ¡Nos seguimos leyendo!

La degradación del ingeniero

"¡Hay le mando al ingeniero!" es un término que puede causar cierto pesar para algunos, pues no saben qué esperar. A veces--por desgracia, en gran cantidad--llega un chavo con aspecto curioso y se pone a manipular la o las computadoras para llegar a la misma conclusión que el usuario: No funciona. Otras veces llega una persona, incluso de corbata, cuya mirada perdida pone en perspectiva que quizá no tenga mucha idea de lo que está haciendo en ese lugar. Otras veces llega una persona segura y bien preparada que resuelve. El problema de "¡Hay le mando al ingeniero!" es que la industria se ha dado en poner títulos de "ingeniero" en los nombres de los puestos de trabajo. Así, aunque la persona que ostente el puesto no ostente un título de ingeniería, al final se le acabará diciendo "ingeniero".

Empecemos con una definición clara de lo que es un Ingeniero. De acuerdo con Wikipedia, "Los ingenieros diseñan materiales, estructuras y sistemas al tiempo que toman en consideración las limitaciones impuestas por la practicidad, las regulaciones, la seguridad y los costos. La palabra 'ingeniero' (del latin ingeniator) se deriva de las palabras ingeniare ("idear, diseñar") e ingenium (ingenio, habilidad, destreza, inteligencia). [...] El trabajo de los ingenieros conforma el vínculo entre los descubrimientos científicos y sus ulteriores aplicaciones a las necesidades humanas y a la calidad de vida" (Traducción propia) https://en.wikipedia.org/wiki/Engineer

Otra definición proveniente de WhatIsEngineering establece: "Ingeniería es la aplicación de conocimiento científico para resolver problemas en el mundo real. Mientras que la ciencia (física, química, biología, etcétera) nos permite comprender el mundo y el universo, la ingeniería permite que este conocimiento cobre vida mediante la resolución de problemas, el diseño y la construcción de cosas. [...] Los ingenieros pueden distinguirse de otras profesiones por su capacidad de resolver problemas complejos e implementar soluciones rentables y prácticas. Esta capacidad de enfrentar un problema, funcionar a través de diversos pensamientos e ideas abstractas para, luego, traducirlas a la realidad es lo que hace tan emocionante la ingeniería" (Traducción propia)  http://whatisengineering.com

Finalmente, el departamento de Empleo de los Estados Unidos ofrece la siguiente definición: "Los ingenieros aplican los principios de la ciencia y las matemáticas para desarrollar soluciones económicas a problemas técnicos. Su trabajo es el vínculo entre los descubrimientos científicos y las aplicaciones comerciales que cumplen las necesidades de la sociedad y los consumidores".

Podemos tomar una miríada de definiciones (como la peyorativa definición de Sheldon Cooper de los ingenieros como "Oompa Loompas de la ciencia", o la poética definición que alguna vez escuché que decía: "Los ingenieros son aquellos que tienen la capacidad de hacer realidad sus propios sueños, o ayudar a otros a que vean sus sueños hechos realidad"), pero lo cierto es que la ingeniería podría resumirse de manera simplista en lo siguiente:

  • Se vale del conocimiento matemático y científico
  • Encuentra formas innovadoras de resolver problemas
  • Diseña nuevos productos y tecnologías 

En el ámbito del cómputo, la ingeniería permite trabajar en el hardware (chips, circuitos, etcétera), y en el software que permite que las computadoras sean mucho más útiles y fáciles de usar. Como puede verse, el esquema de una ingeniería como tal no es la de llegar a algún lugar para hacer exactamente lo mismo que el usuario y repetir el mismo diagnóstico del usuario. Un ingeniero como tal debería utilizar la ciencia y diversos recursos que podrían incluir aparatos y software de medición para encontrar y, en su caso, resolver un problema de manera eficiente y eficaz.

Curiosamente, es cada vez más común que las empresas tengan puestos de "Ingeniero de ventas", "Ingeniero de soluciones", "Ingeniero de configuración" y, peor aún, que en esos puestos se encuentren personas que no ostentan títulos de ingeniería (o, al menos, una decidida inclinación a satisfacer semejantes tareas). Quizá podríamos asegurarnos, como receptores de un servicio, que cuando nos digan "¡Hay te mando al ingeniero!" se trate de un ingeniero de verdad, mismo que podría aumentar la seguridad de que el problema que se está viviendo sea en realidad resuelto. Mientras los clientes no se aseguren de esto, culparán a los "ingenieros" una y otra vez merced a empresas sin escrúpulos que al prostituir este tipo de títulos no hacen más que dañarlos. ¡Nos seguimos leyendo!

P.D. El físico Freeman Dyson expuso en su libro "Disturbing the Universe" (1981) la siguiente afirmación: "Un buen científico es una persona con ideas originales. Un buen ingeniero es una persona que hace un diseño que trabaja con tan pocas ideas originales como sea posible. No existe la prima donna en ingeniería."

miércoles, 15 de junio de 2016

Actualización 10586.420 de Windows 10 del 14 de Junio de 2016

Pues hoy iniciamos el día con una nueva actualización de Windows 10. Como es sabido, Windows 10 es la última versión que saldrá de este sistema operativo (y, de acuerdo con Microsoft, en algún momento perderá el número 10, para permanecer como Windows).

Cada cierto tiempo se hacen actualizaciones al kernel y a algunas otras características del sistema (y ésta pretende ser la forma en que funcione el sistema de aquí para el real). Apenas el día de ayer, 14 de Junio de 2016, apareció la nueva actualización de Microsoft Windows 10 Versión 1511 y que es la compilación 10586.420.

De acuerdo con el sitio Web de Microsoft las siguientes son las más importantes actualizaciones en el sistema:

  • Correcciones en el sistema de seguridad. En diversos programas como Internet Explorer 11, Microsoft Edge, SMB, Microsoft Graphics Component, DNS, y varios otros.
  • Corrección a los servicios de localización. 
  • Mejoras al rendimiento de Internet Explorer 11
  • Mejoras en la confiabilidad. Las aplicaciones como Microsoft Edge, Internet Explorer 11, Cortana, la reproducción de sonido, Miracast y el Explorador de Windows, entre otras, ofrecen mayor confiabilidad.
  • Algunas mejoras adicionales a TPM, USB, BlueTooth, Wi-Fi, Gráficos, Windows Explorer y otras aplicaciones.
En esta actualización también se incluyen mejoras a Windows 10 Mobile.

Se espera que para finales de este mes o principios del siguiente aparezca una actualización mayor que sería Microsoft Windows 10 versión 1607 (es fácil leer este código de actualización: el 16 es el año, y el 07 es el mes. La versión actual, la 1511, es de Noviembre del 2015).

¡Nos seguimos leyendo!

martes, 17 de mayo de 2016

Lo nuevo con lo nuevo


Tiempo hace que he estado hablando respecto a la curiosidad que significa comprar hardware nuevo para ponerle software viejo. En la actualidad se está dando (como ocurrió con Windows XP) la permanencia de Windows 7 (un Sistema Operativo liberado en 2009).

Ya explicaba en el artículo "Adapte Windows 8.1 a la productividad de su empresa o institución"  que la fecha de emisión del Kernel de un sistema operativo pone en evidencia el mejor tipo de hardware que podrá administrar (y, cuando mucho hasta tres años después de su aparición). Si hacemos rápidas cuentas, Windows 7 ya palidece ante el nuevo hardware a partir de 2012. Poner Windows 7 en nuevo hardware no aprovechará las nuevas características, sino que sólo cambiará la carcaza. La funcionalidad permanecerá igual.

Pues bien, ello no había sido un problema, pues los usuarios siguen (y seguirán) comprando hardware nuevo para ponerle Windows 7* (y, bueno, Office 2016, cosa que simplemente no comprendo). Sin embargo, a partir de "Bristol Ridge" de AMD (7a Gen), "Kaby Lake" de Intel (7a Gen) y el 8996 de Qualcomm, Microsoft ya no certificará su uso para Windows 7 y sólo hará la certificación para Windows 10. Ello quiere decir que si quiere instalarse Windows 7, sólo podrá hacerse en tecnología de 6a Gen de AMD (Carrizo/Godavari) o de Intel (SkyLake) y anteriores.

Lo anterior significa que la compra de nuevo hardware deberá incluir sólo este tipo de tecnología de procesamiento para poder utilizar Windows 7 en cualquiera de sus sabores. Y tiene razón: Nuevamente, de nada sirve integrar nueva funcionalidad en el hardware si el software no es capaz de aprovecharla (básicamente, se compran quimeras de hardware). Y el propio Microsoft lo explica de la siguiente forma: "Windows 7 fue diseñado hace casi 10 años antes de que existiera cualquier SoC x86/x64. Para que Windows 7 se ejecute en cualquier pieza moderna de silicio, los controladores de dispositivos y el firmware necesitan emular lo que Windows 7 espera respecto a procesamiento de interrupciones, soporte de buses y estados de energía (lo cual es todo un reto para la WiFi, los gráficos, la seguridad y otras cosas). Es probable que los clientes vean retrocesos en el mantenimiento continuo con Windows 7 conforme nuestros asociados hacen ajustes a los viejos controladores, servicios y configuraciones de firmware".

Con lo anterior se pone en evidencia que la constante innovación tecnológica incluye, definitivamente, al software (y, muy particularmente, al Sistema Operativo). Y, sin embargo, acaece una enorme duda: ¿los fabricantes de hardware continuarán generando modelos actualizados que incluyan las tecnologías de 6a Generación para quienes quieran continuar con el uso de Windows 7? Cierto es que el hardware se va desgastando con el uso y que se requerirá de adquirir nuevo hardware. Ante ello, los usuarios deberán especificar explícitamente si en sus requerimientos se encuentra el uso de Windows 7 de manera que los fabricantes puedan ofrecer sus soluciones basadas en 6a generación. Ahora bien, ¿por cuánto tiempo se ofrecerán soluciones basadas en 6a Generación? Ello dependerá mucho del mercado y de los fabricantes en sí. Habrá que estar muy atento si los fabricantes ofrecerán nuevas opciones (o mantendrán las opciones existentes) con 6a Generación y por cuanto tiempo, de forma que quienes quieran seguir usando Windows 7 lo puedan hacer a sus anchas.

Cabe hacer notar que el soporte de Windows 7 para AMD Carrizo/Godavari e Intel Skylake será como sigue:

  • Hasta el 17 de Julio de 2018
  • Y el soporte extendido hasta el 14 de Enero de 2020.
Habrá que revisar no sólo los Roadmap de los fabricantes de equipo de cómputo, sino también de los fabricantes de procesadores para verificar hasta cuándo se seguirá fabricando la sexta generación de sus procesadores para seguir contando con soluciones propias para Windows 7. ¡Nos seguimos leyendo!



* Nota: Éste es un comportamiento que veo muy seguido en usuarios de Windows, porque los usuarios de GNU/Linux normalmente utilizan versiones actualizadas para instalarlas en sus equipos.

miércoles, 23 de diciembre de 2015

El Windows 10 que no se activaba (Patoaventura)

Pues sí, estimado lector. Luego de hacer mil ochomil instalaciones de Windows 10, desde actualizaciones en equipos con Windows 7 y Windows 8.1, hasta instalaciones en limpio una vez que el Windows 10 había sido instalado a partir de una actualización, decidío reinstalar Windows 10 en una máquina que, por alguna extraña razón, estaba teniendo un problema de DLL.

Sin embargo, decidí realizar una combinación bastante curiosa: Tarjeta madre AsRock Fatal1ty FM2A88X+ Killer, AMD A10-7850K, 16GB de RAM Kingston HyperX 1600MT/s CL9, RAID-0 con 2 SSD de 128GB c/u (con lo que obtuve 256GB) y un disco duro de 512GB. La idea detrás del RAID-0 es la de utilizar una especie de "Dual Channel" desde la unidad de disco y validar si hay beneficios en el tiempo de carga de los programas. De inicio, tuve algunos problemas tan solo para intentar generar el RAID en UEFI, dado que no se permite la configuración por hardware del RAID si se tiene UEFI, se tiene que hacer uso de comandos UEFI para lograrlo.

Decidí, para facilitarme la vida, poner el BIOS en modo Legacy y hacer el RAID. Metí los dos SSD en el RAID-0 y dejé fuera el Disco Duro. Una vez hecha la configuración, volví a configurar UEFI y ya. Inicié la instalación de Windows 10 (en esta máquina ya se había instalado Windows 10 anteriormente y no habría problema alguno con hacer la instalación desde 0). Cargué los drivers RAID con TRIM habilitado, instalé Windows 10 en un santiamén (es impresionante la velocidad de instalación, poco más de 15 minutos) y ¡listo! Ya había cargado Windows.

Oh, oh... Normalmente, cuando Windows 10 se instala y establezco los valores de conexión WiFi, no pasan apenas unos segundos cuando ya el Sistema Operativo se activa automáticamente. Pero ahora no fue el caso. Reinicié en, al menos, tres ocasiones, y nada. El error 0xC004F034 me informaba que mi clave no era correcta y que tenía que comprar otra clave. ¿? Pero si Windows 10 ya se había instalado y activado adecuadamente en ocasiones anteriores. Al indagar, se decía que había ocasionalmente problemas con el servidor de activación, así que decidí dejar el problema en paz y esperar.

Dos días después, inicié nuevamente la máquina para ver si el problema ya se resolvía. Pero no.

Decidí echar mano de Soporte Técnico en Microsoft. Todo fue por escrito. Luego de las chorromil preguntas para determinar si mi versión de Windows era legal, la persona del otro lado del ambiente de Soporte Técnico tomó posesión de la máquina. Hizo varios movimientos para activar Windows y no, no pudo.

Resolvió solicitarme que obtuviera la versión nueva de Windows 10 (la compilación 1511, 10586) y que hiciera la instalación, pues la versión anterior acusaba algunos problemas (que yo jamás viví, hasta ese momento). Así, me dispuse a descargar la compilación 1511 del sitio donde me dijo el asesor, generé un USB y reinicié desde cero la instalación. Nuevamente, no se activaba. Sin embargo, al solicitar la clave, le puse la que le correspondía proveniente de Windows 8 y ¡voilá! Se activó y registró sin problemas. Curiosamente, esa misma clave la había puesto (a petición del asesor) anteriormente y la rechazaba. Ahora sí funcionó.

Interesante, pues, que Windows 10 con la nueva compilación 1511 que se empezó a descargar en Noviembre de este año se resolviera este problema que antes no había tenido. Supongo que tiene que ver con el hecho de que ya se están haciendo las actualizaciones en los servidores de Microsoft y que, por ende, está teniendo problemas para activar la versión anterior (la primera que salió) de Windows 10.

En fin, ya está activado, y yo experimentando de manera increíblemente rápida con mi RAID-0 de SSD Trim, 16GB de RAM y una APU AMD A10-7850K. :) ¡Nos seguimos leyendo!

martes, 3 de noviembre de 2015

El doble canal perdido

Solía tener una PC basada en un procesador AMD FX-8350 que me dio muchas satisfacciones, hasta que decidí que no necesitaba semejante monstruo para mis diarias tareas y, entonces, decidí cambiarla por una AMD A10-7800. Así es, una máquina con un procesador de 65W en lugar de una con un procesador de 125W. Aunque la AMD FX-8350 siempre funcionó súper bien en su tarjeta madre Asus CrossHair V, con la memoria Kingston HyperX Genesis configurada a 2133MT/s, decidí que era momento de ser un poco más ecológico (además que me di cuenta que difícilmente usaba los 8 núcleos del AMD FX-8350) e irme por un AMD A10-7800.

Así, me hice de una tarjeta madre que me permitiera tener la capacidad de respuesta que yo esperaba. Para ello, la exigencia era el FCH AMD A88X que es el que ofrece la mejor capacidad de respuesta para una APU. Me topé con la AsRock Fatal1ty FM2A88X+ que se ofrecía a un precio más o menos atractivo (en realidad, no tanto) y decidí confiar por primera vez en esta marca.

Así, hice toda la configuración. Cargué el Windows 8.1 en su momento y me dispuse a disfrutar de la experiencia de AMD A10. Todo funcionó fluidamente; sin embargo, hubo algo que no me convencía del todo: A pesar de que CPU-Z reportaba que la configuración de la memoria estaba en modo Dual Channel, la velocidad de comunicación del procesador con la memoria (según Stream Triad) era de, apenas, 7GB/s. Eso era MUY lento y, definitivamente, afectaba el rendimiento del equipo. A su vez, no podía configurar la memoria a que funcione a 2133MT/s so pena de obtener alguna pantalla azul. Decidí dejar la configuración de la memoria a 1600MT/s y así estar trabajando en mi equipo personal (¿herrero, azadón de palo?). Ya con Windows 10, la situación no cambió.

En fin, las exigencias del trabajo y  la maestría que estoy estudiando no me dejaron tiempo disponible para hacer una investigación más a fondo. Hasta ayer.

Estoy en el proceso de una serie de pruebas de conectividad, rendimiento y todo, con la finalidad de obtener y analizar algunos resultados. Y se presentó frente a mis narices este asunto. Luego de algunas investigaciones en la Web para ver qué tan confiable es la tarjeta madre, me convencí que, en definitiva, el problema no podría provenir de allí: Se trata de una buena tarjeta madre. Decidí, entonces, probar con otro procesador (un AMD A8-7600). Mismo resultado. Otras memorias. Mismo resultado. Muy rara la cosa.

Sin embargo, las memorias que no eran reconocidas en modo Dual Channel en este equipo, sí que lo eran en los otros equipos con otras tarjetas madre. Decidí, entonces, embarcarme en la compra de otra tarjeta madre, y esta vez fue una Gigabyte F2A88X-UP4. ¡Santo remedio! Todo funcionó a la primera (bueno, tuve que actualizar el BIOS y ya). La memoria funcionó a 2133MT/s, y, ahora, ya estoy teniendo una capacidad de respuesta en la tríada de 19GB/s y eso se nota en el rendimiento del equipo. Si hace clic en la figura siguiente, podrá ver los resultados.



19GB/s permite que cada uno de los 4 núcleos pueda contar con, al menos, 4.75GB/s en promedio de caudal (throughput), lo cual ayuda enormemente a las tareas de procesamiento del equipo (particularmente, en los requerimientos de cómputo heterogéneo y en la multitarea). Ello es especialmente importante a sabiendas que cada núcleo del procesador de marras requiere un caudal aproximado de 11GB/s (de acuerdo con el mismo Stream Triad). Ello me pone en perspectiva que tengo un déficit de 25GB/s para tener una capacidad de respuesta óptima en mi equipo y que el procesador pudiera trabajar con todo su esplendor. Con todo, mi situación está bastante mejor que si tuviera una memoria DDR4 de 2133MT/s. Aunque, aparentemente, la memoria DDR4 funciona, de facto, a 2133MT/s la verdad es que su latencia CAS está en 15, mientras que la latencia CAS de la memoria DDR3 que tengo está en 11. Ello significa que mi memoria DDR3@2133MT/s tiene una velocidad de respuesta aproximada de 10.32ns teóricos, mientras que la memoria DDR4@2133MT/s la tendría de unos 14ns (también, teóricos). Con un 40% de mejor velocidad de respuesta, definitivamente esta memoria ofrece una mejor experiencia en la actualidad. :)

Sigo dudando de que la tarjeta AsRock haya salido defectuosa. Sospecho que el problema se concentra mucho más en la compatibilidad con los módulos de memoria. Ya haré algunas otras pruebas y determinaré exactamente si ése es el caso. :) ¡Nos seguimos leyendo!

Actualización 2015/Dic/23: Bueno, ya instalé otro tipo de memoria (de las que están certificadas) y ahora ya la AsRock reconoce la memoria en modo Dual Channel. Así que sí, era una cuestión de compatibilidad.

miércoles, 28 de octubre de 2015

Configuración de VirtualBox en Windows 10

He aquí otro caso para la araña (y otra patoaventura). Yo he sido un usuario del VirtualBox desde tiempos muy remotos (era la versión 1 cuando empecé a utilizarla) y, normalmente, me ha dado resultados muy buenos. El día que más sobrecargué esta utilería fue cuando hice una serie de máquinas virtuales de 3 servidores basados en Windows Server 2008 R2 para hacer una replicación de bases de datos SQL Server en una emulación de sitios remotos. Para esta solución requerí de, al menos, 16 GB de RAM y, la verdad, es que trabajó con toda fluidez. Ninguna queja. Con esa enorme carga de trabajo no hice más que confirmar que VirtualBox es una gran herramienta para este tipo de necesidades.

Normalmente, me actualizo cuando sale una versión nueva de esta herramienta. Y, bueno, cabe hacer notar que antes de la nueva versión aparecida el 20 de Octubre no se aseguraba una total compatibilidad con Windows 10. Resulta que actualicé mi Oracle VM Virtual Box a la actual versión 5.0.8 r 103449 y, automáticamente, cargó todas mis máquinas virtuales (entre las que se incluye a Windows 2000, Windows XP, Windows 7, Ubuntu, LinuxMint y Debian, entre otros). Y, sin embargo, al hacer doble clic en Ubuntu, la máquina se negó a cargar. :( "¡Chale!" Me dije. Segúramente será que alguno de los detalles de la máquina virtual no fueron cargados adecuadamente por el cambio de versión (la versión anterior era la 4.x).

Me di a la tarea de revisar los valores y todo era exacto, bien configurado. Sin embargo, nada. Bueno, decidí borrar la máquina virtual y configurarla nueva. Total, había salido una nueva versión de Ubuntu (la 15.10) y sería bueno instalarla desde cero. Pues no me permitió cargar la máquina virtual.

Al leer el letrero del error, me indicó que el problema era que la virtualización no estaba activada. Curioso caso, pues siempre activo la virtualización en el BIOS. En fin, decidí reiniciar el equipo y comprobé que la virtualización SÍ estaba activada. Volví, entonces, a cargar Windows 10 y VirtualBox para obtener exactamente el mismo resultado: Ninguna de mis máquinas virtuales cargaba (ni Windows ni Linux).

Procedí a utilizar Securable, una utilería de Gibson Research Corporation para ver si las características de virtualización estaban activadas. Mi sorpresa fue importante al descubrir que no estaban activadas. Así empezó mi investigación, con un proceso de indagación medianamente basado en OSI, empecé a verificar las diferentes capas de mi equipo. En hardware todo parecía estar bien, el problema es que la virtualización por hardware parecía estar bloqueada en el software.

Para que la virtualización por hardware funcione, un determinado programa debe tomar posesión de ella. Y si no era VirtualBox, entonces era algo más. Y sospeché de Hyper-V. Si Hyper-V estaba activado de alguna forma en Windows 10, entonces VirtualBox no podría tomar posesión de la virtualización y, por ende, no podría funcionar. Luego de echarme un clavado por el sistema, descubrí en "Características de Windows" que, en efecto, Hyper-V estaba activado de manera predeterminada.


Decidí, entonces, desactivarlo, lo que me llevó a reiniciar el equipo. Una vez reiniciado, cargué VirtualBox y ¡voilá! Todo empezó a funcionar. Ejecuté Linux Mint, y cargó de inmediato, sin chistar:


A su vez, Securable me reportó las características activadas correctamente:


Así, pues, valga esta pequeña patoaventura para sugerir que si van a usar VirtualBox (ignoro si esto ocurre con VMPlayer o algún otro virtualizador), necesitan desactivar Hyper-V de las Características de Windows. ¡Nos seguimos leyendo!