jueves, 16 de mayo de 2013

Inside Java Bytecode


El código intermedio Bytecode es el último paso de compilación del lenguaje Java. Comprender mejor el funcionamiento y organización de sus instrucciones le permitirá ser un mejor programador en este conocido lenguaje de alto nivel.

En esta sección proponemos la lectura del artículo del blog "Code Impossible" de Anton Archipov para descubrir los entresijos y los fundamentos del Bytecode de Java:


aunque también encontrará más información en el servidor Web la Universidad de Edimburgo: 


y el listado del juego de instrucciones en la Wikipedia:


Con la finalidad de ayudar a entender mejor cómo se genera y se estructuran las tuplas en el código final, proponemos la utilización de este plug-in para Eclipse, que ayuda a visualizar el código Bytecode generado, incluyendo comentarios y un panel de diagrama de flujo de las instrucciones.  

lunes, 13 de mayo de 2013

Writing a Device Driver

Fuente:http://commons.wikimedia.org/wiki/File:Fast_Ethernet_PCI_Network_Interface_Card_SN5100TX_%28VIA_VT86C100A%29.jpg


Aunque es un tema aparentemente transversal en el núcleo de los estudios de Ingeniería Informática, la programación de drivers sigue siendo una actividad importante en el mundo de la informática industrial. La posibilidad de poder acceder a dispositivos como un puerto serie, un USB o un slot PCI, acapara un gran interés por la comunidad de desarrolladores de dispositivos en Linux.

Actualmente, la necesidad de acceder a hardware dedicado para comunicar información a una tarjeta de captura/envío de datos o dispositivo electrónico es un tema crucial en muchas empresas de hardware.

En las siguientes secciones le proponemos, a modo de ejemplo, las técnicas utilizadas en Windows y en Linux para acceder a un dispositivo USB:


 

jueves, 9 de mayo de 2013

"Ars longa vita brevis". Filosofía para la Informática.



  Rafael: “La escuela de Atenas” (detalle),
     fotografía de Zanyshani (Flickr)

La filosofía es importante para aplicarla a nuestra vida cotidiana y a cada uno de nuestros pensamientos y acciones. Con la cita de Hipócrates en el título de esta entrada del blog de la Escuela, resaltamos la importancia de otorgar un orden filosófico a los conceptos e instrumentos teóricos de las ciencias de la computación.

La Informática como tal, con una existencia de menos de medio siglo, acapara una ingente cantidad de conocimientos y un futuro sin explorar de ideas, descubrimientos y hallazgos.

A diferencia de otras disciplinas, la Ingeniería Informática, en contrapartida, se destaca por su necesidad vital de hallar y desarrollar una buena idea como piedra fundacional para triunfar en la industria.

Con la premisa de estudiar cada una de las entidades y modelos que habitualmente se utilizan en el campo de la Informática, el Catedrático de Filosofía de la Ciencia de la Universidad de Valladolid, Alfredo Marcos, expone en un artículo la relación y los campos de investigación de la filosofía en este ámbito:

 http://www.fyl.uva.es/~wfilosof/webMarcos/textos/A%20Marcos%20Filosofia%20de%20la%20Informatica.doc



    Fuente:  http://www.fyl.uva.es/~wfilosof/webMarcos/

Informática y sostenibilidad

Foto: http://www.flickr.com/photos/rahego/7615136612/sizes/m/in/photostream/

La importancia de las TIC en el mantenimiento de la ecología y el desarrollo sostenible es fundamental en el planteamiento de cualquier organización. En una sociedad post-industrial e hiper-tecnológica, el aumento de las emisiones de carbono (CO y CO2) y el consumo energético se han incrementado considerablemente en los últimos años. La responsabilidad de las empresas y organizaciones TIC en la reducción del consumo energético es un asunto de vital importancia de cara a la estabilidad del planeta.

La UNED se encuentra implicada en este asunto gracias a su Cátedra UNESCO para la Educación Ambiental y el Desarrollo Sostenible, desde la cual se fomentan cursos de postgrado y otros recursos para la educación en el sostenimiento del medio ambiente.

Enlaces:

Energía y desarrollo sostenible (foto-presentación):

http://www.uned.es/biblioteca/energiarenovable3/panel_expo.htm

Cátedra UNESCO de Medio Ambiente y Desarrollo Sostenible:

http://www.uned.es/catedraunesco-educam/

 Informática y sostenibilidad:

http://www.informaticaverde.org/wiki/index.php?title=Inform%C3%A1tica_y_sostenibilidad




martes, 7 de mayo de 2013

Trabajar en la física cuántica


En el centro europeo de investigación para la física de partículas (CERN), ubicado en Ginebra (Suiza), se ofertan frecuentemente puestos de staff para estudiantes de ciencias e ingeniería. Actualmente se requieren candidatos en últimos cursos de carrera para realizar labores de diseño electrónico, programación de software científico y administración de redes y equipos.

También es posible trabajar en temporadas estivales y periodos de hasta 5 meses, mediante el programa"Short-term Internship" o el "Summer student".

Este centro se destaca por sus investigaciones que abarcan desde el último hallazgo del Bosón de Higgs hasta la creación del protocolo HTTP y la páginas HTML.

Si está interesado en realizar el doctorado o trabajar durante un tiempo discreto en el CERN, debe ponerse en contacto a través de la siguiente página:


El CERN es un centro multicultural y multidisciplinar, por lo que es importante que los candidatos tengan al menos conocimientos de ingles a nivel B1.

Fuentes: CERN


Diseño de una CPU




Interesante simulador en línea para visualizar el estado de los registros de la CPU. Este simple applet Java permite cargar instrucciones básicas en la memoria (load, store, add...) y visualizar en tiempo real el camino por donde transcurren los datos y las instrucciones en el microprocesador.



Para aquellos que estén estudiando electrónica digital y analógica, proponemos este applet para el diseño on-line de circuitería con elementos básicos de diseño electrónico. Útil para compartir conocimientos con otros compañeros de los cursos virtuales.



Por último, y a modo de ejemplo ilustrativo, mostramos el programa profesional de diseño microelectrónico Cadence. Esta herramienta es un referente en la industria de diseño de circuitería electrónica avanzada: CPUs, microcontroladores, FPGAs,  componentes, dispositivos de E/S, etc.



Fuentes: mta.ca, circuitlab.com , cadence.com

lunes, 6 de mayo de 2013

Implementing haskell


Haskell es un lenguaje puramente funcional de propósito general que fue diseñado por las universidades de Glasgow (Reino Unido) y Yale (Estados Unidos). Su idea inicial fue desarrollar un lenguaje que aunara todas las características de los lenguajes funcionales creados hasta entonces. Una de las características más avanzadas de este lenguaje es la capacidad de expresar algoritmos en pocas líneas de código.


El siguiente artículo, orientado a usuarios avanzados en Haskell,  ilustra las técnicas y los fundamentos para la implementación de un compilador con sus características de lenguaje funcional y de gestión dinámica de memoria:



Fuentes: Wikipedia, Haskell.org.

¿Ha desaparecido LaTeX?

LaTeX está formado por un gran conjunto de macros de TeX, escrito por Leslie Lamport en 1984, con la intención de facilitar el uso del lenguaje de composición tipográfica, TeX, creado por Donald Knuth. Aunque ha sido desplazado por la utilización de Microsoft Word y OpenOffice, todo parece indicar que LaTeX sigue utilizándose en entornos de investigación y científicamente avanzados.

Hoy en día la calidad de un texto generado por un editor LaTeX es comparada a la de una editorial de primera línea.

Lista de editores LaTeX en plataformas conocidas:


Fuente: http://es.wikipedia.org/wiki/LaTeX