Calculadora de 4 Bits

Un día que no sabía que hacer con un circuito de una bombilla y su pila de 4,5 V se me ocurrió hacer una calculadora binaria (sabía que decimal sería difícil). Antes de nada necesitaba diseñar los planos del diseño para saber que iba a necesitar y como lo tenía que hacer. No sabía por donde empezar así que busque en Google algo de información. Nada. Busqué entonces tutoriales de Redstone del juego Minecraft con el que se pueden hacer calculadoras. Al final eran diseños muy complejos y largos, pero no debía de ser tan difícil pensaba. Empezé a diseñar en el Crocodile Clips varios prototipos, pero llegaba a liarme mucho con si debía poner 1 o 2 o 3 puertas lógicas, etc. Al final di de casualidad con una página en la que expliacaban como montar una calculadora de 4 bits. Vi los planos y los adapté a un circuito completo. Es una calculadora binaria y con el límite en 15 (16-1) como máximo resultado. No es muy útil, pero es fácilmente extensible en potencias de base 2. Así pues os dejo los diseños de mi calculadora a ver si algún día la construyo:

El funcionamiento es algo retorcido (faltan conversores de decimal a binario y viceversa). Primero ponemos los sumandos activando los interruptores de los sumandos que queremos sumar. Podemos activar 1,1,2,2,4,4,8 y 8. Pero hay que tener cuidado si sumamos más de 15, pues habrá un overflow un el circuito en cuestión será físicamente dañado. Una vez ajustados los interruptores presionamos el botón al lado de la pila de 2V y veremos el resultado en los LEDs. Para obtener el resultado deberemos sumar un valor diferente por cada LED encendido. En el siguiente orden: 1,2,4 y 8. Así podemos obtener hasta 15. Digo que este modelo es fácilmente extensible, pues podemos añadir más módulos como el de los 2 y los 4. Así aumentaremos la capacidad de procesamiento. Por cierto, dentro de poco vereis más novedades sobre mi videojuego.

Planos originales: http://www.instructables.com/id/4-Bit-Binary-Adder-Mini-Calculator/step5/Building-It-On-A-Breadboard/

loading...

La Fuente Q y el problema sinóptico

Hoy vamos a hablar sobre el problema sinóptico. Quizá a muchos no os suene pero es un tema importante en la teología (habéis leído bien, la ciencia de las religiones).

¿Qué es el Problema Sinóptico?

Como muchos sabéis en la religión católica hay 4 evangelios oficiales (correctamente llamados canónicos). Además existen los evangelios apócrifos que son aquellos que por su contenido no están en la Biblia. El problema sinóptico ocurre cuando 3 de los 4 evangelios son muy parecidos en algunas partes (usando los mismos párrafos algunas veces). Estos evangelios son los de Marcos, Mateo y Lucas. Esto tiene una explicación lógica pues el de Marcos fue primero y los de Mateo y Lucas se inspiraron en él. Se le llama la Fuente M. Sin embargo hay partes coincidentes entre Mateo y Lucas que no aparecen en Marcos (y son bastante abundantes). Se sabe que ni Mateo conoció a Lucas ni Lucas a Mateo. Este es el problema sinóptico que ocurre además con algunos evangelios apócrifos.

La Teoría de las dos fuentes

Hay una teoría muy aceptada que dice que tanto Marcos, como Lucas tuvieron acceso a una fuente hoy en día desconocida, esta fuente se la llama la Fuente Q (del alemán “queller”, fuente). La Fuente Q explicaría las similitudes entre los diversos evangelios

La Fuente Q

Mientras la Fuente M se la conoce como la una lista de hechos y milagros de Jesús, la Fuente Q sería una recopilación de dichos de Jesús. Las bienaventuranzas y el Padre Nuestro solo aparecen por ejemplo en los evangelios con Fuente Q. Actualmente no se conoce ninguna referencia a la Fuente Q en la antigüedad por lo que ha sido criticada por expertos que simplemente dicen que no existe. Sin embargo, la teoría de las dos fuentes que explica la existencia de la Fuente Q es la más sencilla y como nos dice la navaja de Ocam (ya explicaré), lo más probable es que esta teoría sea cierta.

Intercambio con Francia

Recientemente he tenido un intercambio con Francia entre alumnos que estudian español en Francia y alumnos que estudian francés en España. He de decir que es una muy buena experiencia en la que se aprende mucho del idioma y de las costumbres de un país. Lo primero decir que es una experiencia cansada pero a la vez divertida y os la recomiendo a todos. Mi intercambio se realizaba con el pueblo de St. Brevin Les Pins, un pueblo cerca de Nantes.

OpenGL y su gran futuro

OpenGL es para quien no lo sabe o no está bien informado del todo una API gráfica de bajo nivel que representa el estándar para gráficos 3D. Esta API fue diseñada originalmente por Silicon Graphics Inc. (SGI en adelante) que se dedicaba a fabricar workstations. La idea surgió para tener un método más sencillo para representar gráficos 3D y a SGI le interesaba que fuera abierto porque así más programas habría y más hardware vendería. Fue presentado para Windows NT y en un principio Microsoft quería participar en OpenGL. OpenGL estaría disponible a partir de Windows 95 permitiendo las aplicaciones con OpenGL si la tarjeta gráfica lo soportaba. Entonces Microsoft presentó DirectX, un conjunto de tecnologías para desarrollar juegos en Windows y entre ellas los gráficos 3D. Microsoft defendió OpenGL para programas tipo CAD y DirectX para videojuegos. En un intento de unificar las APIs se creo Fahrenheit; sin embargo esta API nunca vio la luz. Empezó la separación de las APIs

GPU, Windows XP y Khronos

Por el año 2000 salieron las primeras GPU y por entonces también salió Windows XP. También se formó el Khronos Group. Empecemos por Windows XP donde el soporte claro de Microsoft era DirectX. Con el gran lanzamiento de DirectX 9 una API que ya era superior a OpenGL se desarrollaron muchos juegos. OpenGL no evolucionaba y además solía ser más lento ya que si el fabricante no proporcionaba drivers de OpenGL (algo no obligatorio) este funcionaba por software en vez de por hardware. Entonces SGI y otras empresas fundan el Khronos Group que incorpora entre sus objetivos velar por mejorar OpenGL y otras tecnologías.

Windows Vista, DirectX 10 y el iPhone

La siguiente versión de DirectX 10 avanzaba y solo sería compatible con Windows Vista. Todo el mundo sabe que Windows Vista fracasó y por tanto DirectX 10 perdía fuelle y que hicieron los de OpenGL… Reescribir partes de la API para que fuese igual. Así pues OpenGL no lo aprovechó. Sin embargo las cosas cambian y ese día llegó cuando se lanzó el iPhone. No soy partidario de Apple pero el iPhone y todos sus gráficos funcionaban con OpenGL, concretamente con OpenGL ES(ES significa sistemas empotrados). OpenGL volvía a resurgir. Android también nació y también usó OpenGL ES. OpenGL volvía a ser importante.

OpenGL ES 2, la revolución

Entonces se vió que OpenGL ES 1 era un poco malo y lento y para ello el Khronos Group definió una nueva API completamente diferente, sin retrocompatibilidad y centrada en la potencia y simpleza. Nació OpenGL ES 2, la versión de OpenGL más innovadora del momento. Eliminaba partes típicas de la API y las reemplazaba por otros sistemas. Destacan los shaders tanto de vértices como de fragmento. OpenGL ES 2 además tiene muy pocas funciones por tanto la simpleza manda sin dejar de ser potente y profesional. OpenGL ES 2 se diseña como un subconjunto de OpenGL por tanto OpenGL también necesita una renovación. Será OpenGL 3 y 4 las grandes precursoras del cambio que dejan atrás rotaciones de matrices por vertex shaders. La ventaja de los shaders es que se compilan para la GPU y dejan más rendimiento para la CPU.

WebGL y OpenGL ES 3

Las especificaciones de HTML5 ya comtemplaban la etiqueta canvas que permite dibujar gráficos. Primero se introdujo el 2D, más tarde se pensó en el 3D y así surgió WebGL, una API gráfica para HTML/JavaScript. Se basa en OpenGL ES 2 y por ello hace uso extensivo de matrices de vértices y shaders. También surge OpenGL ES 3 que añade mejoras a OpenGL ES 2, sin embargo actualmente no ha sido muy adoptado debido a que es bastante reciente. Actualmente OpenGL es una gran API gráfica libre y multiplataforma que funciona sobre Linux, Mac, Windows (un poco mal, observad el proyecto ANGLE), Haiku, Android, iOS, Firefox OS, BlackBerry OS, Ubuntu Phone, PlayStation 3 y más. OpenGL tiene un gran futuro sobre todo cuando se implementen las otras especificaciones del Khronos Group como OpenCL, WebCL, OpenMAX, OpenWF, OpenML, OpenVG, COLLADA y más APIs que no son tan comunes pero que se integran muy bien con OpenGL.

Los números aleatorios

La gente a veces te pregunta un número aleatorio para así elegir algo de entre un conjunto. Si piensas un número en ese momento pensarás que es aleatorio y lo dejarás pasar. Sin embargo vamos a entrar en una reflexión acerca de los números aleatorios y si de verdad existen. Primero vamos a hablar sobre el efecto de la aleatoriedad en el cerebro humano.

Aleatoriedad en el cerebro humano

Este punto es interesante y es importante aclarar primero para evitar futuros errores. El cerebro no piensa bien aleatoriamente. Si tuviésemos una máquina de números aleatorios y los oyesemos veríamos que algunos se repetirían o creeríamos ver patrones. Esto es una falsa sensación de no-aleatoriedad. Esto ocurrió con el iPod, cuando la gente seleccionaba Reproducción aleatoria veían que algunas canciones se repetían y la gente se quejó de falta de aleatoriedad. Al final se modificó el algoritmo para que fuese menos aleatorio pero no los repitiese y la gente pensó que era más aleatorio

Generar números aleatorios

Estará pensando como generar números aleatorios con una máquina. Si usted ha pensado poco dirá que un algoritmo, si ha pensado más verá que necesitaremos valores de entrada diferentes para ese algoritmo y no se puede hacer aleatoriedad. Realmente hay 2 métodos pseudo-aleatorios. El primero se basa en mediciones de radiación, es normal que varíe bastante pero es muy lento, el segundo ampliamente usado en la computación es el tiempo. Cada milisegundo es un número que con unas cuentas puede ser muy diferente al del milisegundo anterior. Así se hace aleatoriedad en los ordenadores actualmente. Esto tiene un inconveniente y es que si viésemos todo eso algún día se repetiría y se verían patrones por tanto es imposible generar números realmente aleatorios. Existe investigación en el campo de la física cuántica y los ordenadores cuánticos pero todavía no ha dado sus frutos

¿Es el universo aleatorio?

Podríamos pensar que sí, pero hemos dicho que nos ha resultado imposible hacerlo con ordenadores (ordenadores que son capaces de simular ciertas tareas del universo). Así pues, ¿existen los números aleatorios? Cuando nosotros pensamos un número ¿estamos obedeciendo un patrón?. Es posible pero también hay que pensar en el rango de ese patrón ya que no hay un límite de números en el universo porque los números son infinitos. Si los números son infinitos ¿como serían los números aleatorios reales? ¿Habría algún tope?

Conclusión

Los números aleatorios no existen en los ordenadores y es posible que tampoco en el universo. Pero esto plantea grandes dudas sobre nuestro futuro y si lo podremos predecir usando patrones. El tiempo dirá