Computación

Por Devine

Un mono inmortal sería suficiente

Belleza fría y austera, como una escultura, sin muestra de debilidad, sin ornamentos llamativos de pintura o sonidos, pero sublime o pura, capaz de una perfección severa como solo el arte puede mostrar. ~

Archivo GIF con ilustración donde aparecen dos niños usando lo que parece ser una computadora o un pizarrón

Así fueron diseñadas las primeras computadoras, diseñadas para ser verdaderamente de propósito general. Cuando las encendías aparecía en la pantalla un único mensaje:

> Ready

Y su cursor parpadeante esperando tus órdenes, una invitación a ¡PROGRAMAR!. En ese momento te dabas cuenta que esto no era un electrodoméstico, ¡es una puerta abierta al descubrimiento intelectual!.

La incansable fascinación de la computadora
La incansable fascinación de la computadora
La incansable fascinación de la computadora

Para crear sistemas excelentes y escalabes debes diseñar cómo se comunicarán entre sus módulos en vez de definir cuáles deberían ser sus propiedades y comportamientos internos.~

No te enamores de la tecnología como hacen los defensores de Forth o de Linux. Si te da una ventaja, si te permite hacer las cosas más rápido, entonces, úsala. úsala pra construir lo que siempre haz querido construir, y luego, enamórate de eso. ~

Imagina una computadora que aproveche el comportamiento natural y utilice sus dinámicas para resolver ecuaciones.

Todos sabemos cuán laboriosos son los métodos para que alcancemos conocimientos en artes y ciencias; Sin embargo con algo de ingenio y un costo razonable una persona ignorante puede llegar a escribir libros de filosofía, poesía, política, leyes matemáticas y teología, sin más ayuda que su ingenio y estudio. ~

Computadoras de color

Computadoras no electrónicas que funcionan coloreando, siguiendo un conjunto simple de reglas. El folleto tiene tres series de computadoras: las que comparan, las que cuentan y las que juegan. Desde un punto de vista técnico, todas son circuitos lógicos basados en compuertas NOR, diseñadas utilizando tablas de verdad, mapas de Karnaugh y expansiones de maxterms.

Desde una perspectiva social, política y ambiental, estas computadoras son una exploración de la computación sin electricidad ni semiconductores, un intento de reinventar los sistemas digitales alejados de la eficiencia y productividad, y un prototipo esperanador para exponer y conocer el funcionamiento interno de las computadoras. ~

Nomogramas

Un nomograma es un dispositivo gráfico e cálculo, consiste en un diagrama bidimensional diseñado para permitir el cálculo aproximado de una función de manera gráfica. Cada variable se marca a lo largo de una escala, y una línea trazada a través de los valores conocidos en las escalas (o una regla colocada sobre ellos) cruzará el valor de la variable desconocida. Esto es como las reglas de cálculo. ~

Achivo Gif con Nomograma para conocer el índice de masa corporal

Uniendo la columna de Masa Corporal de una persona que pesa 95kg y cruzando una línea hacía la columna de talla de 1.80 metros, el nomograma indíca en el cruce de índice de masa corporal que esta persona del sexo masculino está obeso

Multiplicación visual

El método consiste en realizar multiplicaciones colocando y cruzando palitos de manera adecuada. Simplemente colocas palitos de acuerdo con los valores posicionales de los dígitos que se están multiplicando. Luego, cuentas la cantidad de puntos donde estos palitos se cruzan. Por ejemplo: 62x21 = 1302.

Archivo Gif ilustracion de multiplicación visual

Multpilicación con método de ceolosía

Este método utiliza una cuadrícula (o celosía) para multiplicar dos números de varios dígitos. Por ejemplo: 64x17 = 1088.

Archivo Gif con el gráfico de celosía

Regletas de Genaille-Lucas

El lado derecho del triángulo cubre los dígitos de las unidades de un producto parcial, sumado a un posible acarreo proveniente de la derecha. La esquina izquierda del triángulo se coloca a una altura que corresponde a la cifra de las decenas del producto parcial. La multiplicación se realiza organizando las regletas para los números necesarios y luego siguiendo las flechas de derecha a izquierda se puede leer el resultado.

Archivo Gif con un ejemplo de las regletas

Bloques deslizantes

Una de los comportamientos intrigantes de este tipo de lógica extraña y no determinista es que las señales pueden fluir tanto hacia adelante como hacia atrás, de hecho ni siquiera necesitan respetar las nociones normales de entrada y salida.

Considera el mini-rompecabezas de la compuerta AND. Supongamos que el objetivo es deslizar el bloque superior que sobresale hacia la caja. La respuesta es primero el bloque izquierdo y el bloque inferior deben deslizarse hacia afuera una unidad. Esto permitirá que los bloque sinternos se deslicen para liberar esppaci y que el bloque superior pueda deslizarse hacia adentro. Por lo tanto, este rompecabezas tiene efectivamente una propiedad similar a una compuerta AND: tanto el bloque izquierdo como el inferior deben deslizarse hacia afuera antes de que el bloque superior pueda deslizarse hacia adentro. Los bloques grises claros son separadores, que nunca necesitan moverse. ~

Archivo Gif mostrando una serie de bloques deslizantes

Microfluídos en papel

La fluídica es la construcción de sistemas de computación utilizando fluídos. La microfluídica en papel no requiere bombas externas ni fuentes de energía, puede ser pequeña, portátil, desechable, fácil de distribuir, operar y de bajo costo. Técnicamente simple de fabricar, solo necesitas pequeñas cantidades de fluido muestra. Una configuración mínima puede ser tan simple como calentar las líneas dibujadas con crayón de cera en papel absorbente, y usar gotas con colorante alimentario.

Archivo Gif con un ejemplo de un artefacto de Fluídica

-0+

Computadora con "palabras-medidas" no en bits sino trits. Utilizaremos un trybble de 3 trits, un tryte de 9 trits y una palabra de 28 trits. La lógica de Kleene amplía los valores convencionales de verdadero y falso de la lógica booleana conun tercer valor: desconocido.

Truth valueUnsignedBalancedBCB
false0-11
unknown1000
truth2+01

Código binario balanceado (BCB)

El binario codificado balanceado (BCB) es una representación que permite a las computadoras binarias manipular datos ternarios. En el sistema ternario, un trit codifica 3 valores. Por lo tanto, si usamos 2 bits por trit ternario codificado en binario.

UnsignedBCBBalanced
Dec.Tern.Tern.Dec.
0001111---4
1011100-0-3
2021101-+-2
31000110--1
4110000000
51200010+1
6200111+-2
7210100+03
8220101++4

La ventaja de BCB sobre el BCT de Douglas W. Jones es que facilita la detección de acarreo, ya que 1+1=2 y 2+0=2 producen el mismo resultado, mientras que si sumas dos valores que son 0, 1 y 3, nunca obtendrás la misma suma de dos maneras diferentes. Para convertir a la forma sin signo, puedes hacer (x+1)>>1, y para revertirlo, (x>>1)|x.

Balanced Trite
tri-0+
bc1110001
int-101
Balanced Trybble
try---000+++
bc3111111000000010101
int-1300013

Computación en el que se realizan muchas operaciones simultáneamente.

Un programa concurrente necesita realizar varias tareas posiblemente no relacionadas al mismo tiempo. En contraste, un programa paralelo resuelve un solo problema.

Por definición, un programa concurrente se ocupa continuamente de protocolos de red, bases de datos y similares. Un programa paralelo típico tiende a estar más enfocado: ingresa datos, los procesa por un tiempo y luego los envía de vuelta.

Hay muchos aspectos en la ejecución paralela de un programa: los hilos se crean, se ejecutan en un procesador, transfieren datos hacia y desde procesadores remotos, y se sincronizan con otros hilos. Gestionar todos estos aspectos además de construir un algoritmo correcto y eficiente es lo que hace que la programación paralela sea tan difícil.

"Los eventos ocurren tanto en el tiempo
como en el espacio. Es posible que dos eventos
ocurran en el mismo lugar uno
después del otro en el tiempo
(es decir, secuencialmente), e igualmente
posible que ocurran en diferentes lugares al
mismo tiempo (es decir, concurrentemente o en paralelo)."

Divide y vencerás

Para resolver una instancia grande de un problema, divídelo en instancias más pequeñas del mismo problema y utiliza las soluciones de estas para resolver el problema original. El factor de ramificación de un algoritmo de divide y vencerás es el número de subproblemas en los que se divide un problema. Un algoritmo de divide y vencerás es equilibrado si divide el problema inicial en subproblemas de igual tamaño.

Procesos secuenciales comunicantes (CSP)

CSP es un álgebra de procesos que se utiliza para describir programas paralelos. En este mundo, un programa es una red de procesos conectados mediante canales. Un canal es un enlace de comunicación punto a punto, unidireccional, síncrono y sin búfer. Los procesos solo necesitan conocer los canales que los conectan a otros procesos y cómo comunicarse a través de esos canales (generalmente utilizando el mismo protocolo que el proceso del otro extremo).

Mutex

En su forma más simple, un "semáforo binario" es una bandera asociada a un recurso. Dos operaciones actúan sobre los semáforos: WAIT y SIGNAL. WAIT verifica si el recurso está disponible. Si lo está, se marca como "no disponible"; si no, la CPU se libera para otras tareas hasta que el recurso esté disponible. SIGNAL simplemente marca el recurso como "disponible". Un verdadero mutex tiene un caso de uso y una definición más específicos, ya que solo la tarea que bloqueó el mutex debe desbloquearlo.

Cada tarea, antes de usar un recurso compartido, realiza un WAIT en su semáforo, y después de usar el recurso, realiza un SIGNAL. Esto es suficiente para garantizar que solo una tarea pueda usar ese recurso en cualquier momento, y aún así, si una tarea está bloqueada, las otras tareas pueden ejecutarse normalmente.

Sin bloqueos (Lock-free)

Las estructuras de datos sin bloqueos son estructuras de datos seguras para hilos e interrupciones sin necesidad de usar mecanismos de exclusión mutua. Las estructuras de datos sin bloqueos son más útiles para la comunicación entre procesos, pero debido a su eficiencia, también pueden usarse de manera segura en aplicaciones de un solo hilo, lo que las hace adecuadas para uso general.

"Sin embargo, vale la pena reflexionar sobre
el contraste entre la naturaleza concurrente
del mundo y la naturaleza secuencial
de la computadora digital.
Dado que el propósito
principal de la computadora es
modelar el mundo, parecería
haber una seria incompatibilidad."

Multitarea

Round-robin significa que cada tarea toma su turno en la CPU, una a la vez, en una secuencia fija como un gran ciclo de tareas. Cooperativo significa que cada tarea tiene la CPU durante el tiempo que desee y la libera solo cuando está lista.

La computación reversible es un modelo de computación en el que el tiempo es reversible.

Hasta donde se sabe, las leyes de la física son reversibles: es decir, puedes ejecutarlas en reversa y recuperar cualquier estado anterior del universo. Esto significa que, desde una perspectiva física, la información nunca puede destruirse, solo reorganizarse. Un proceso se considera físicamente reversible si no resulta en un aumento de la entropía física; es isentrópico.

Lógica reversible

La primera condición para que cualquier dispositivo determinista sea reversible es que su entrada y salida sean únicamente recuperables una de la otra. Esto se llama reversibilidad lógica. Si, además de ser lógicamente reversible, un dispositivo puede realmente funcionar en reversa, entonces se llama físicamente reversible, y la segunda ley de la termodinámica garantiza que no disipa calor.

CNOT
INPUTOUTPUT
0000
0101
1011
1110

Para un bit de entrada, existen dos compuertas reversibles posibles. Una de ellas es la compuerta NOT (NO). La otra es la compuerta de identidad, que mapea su entrada a la salida sin cambios. Para dos bits de entrada, la única compuerta no trivial es la compuerta controlled NOT (NO controlada), que aplica la operación XOR al primer bit y lo deja sin cambios, mientras que el segundo bit se modifica según el valor del primero.

INPUTOUTPUT
CI1I2CO1O2
000000
001001
010010
011011
100100
101110
110101
111111

Consumo de energía en la computación

El principio de Landauer establece que cualquier manipulación lógicamente irreversible de la información, como la eliminación de un bit o la fusión de dos rutas de cálculo, debe ir acompañada de un aumento correspondiente de la entropía en los grados de libertad no portadores de información del aparato de observación.

Self-Reversible
swp ( a b -- b a )
sign ( a -- -a )
not ( a -- ~a )
cnot ( a b -- c d )
Reversible
rot ( a b c -- b c a )-rot ( a b c -- c b a )
csr ( a b -- a~>b )csl ( a -- a<~b )
Reversible Arithmetic
add ( a b -- a b+a )sub ( a b -- a a-b )
mad ( a b c -- a+b*c c )dam ( a b -- a%b a/b b )

Los microprocesadores que son reversibles a nivel de sus compuertas lógicas fundamentales pueden potencialmente emitir radicalmente menos calor que los procesadores irreversibles, y algún día eso podría hacerlos más económicos que los procesadores irreversibles. El microprocesador Pendulum es una arquitectura de computadora lógicamente reversible que se asemeja a una mezcla de PDP-8 y RISC.

La promesa de la computación reversible es que la cantidad de pérdida de calor para arquitecturas reversibles sería mínima incluso para un número significativamente grande de transistores. En lugar de crear entropía (y, por lo tanto, calor) a través de operaciones destructivas, una arquitectura reversible conserva la energía realizando otras operaciones que preservan el estado del sistema.

La eliminación de información en un sistema cerrado siempre está acompañada de un aumento en el consumo de energía.

Lógica lineal

Un sistema lineal excluye combinadores que tienen un efecto duplicativo, así como aquellos que tienen un efecto destructivo. Un lenguaje de computación basado en lógica lineal evita la necesidad de recolección de basura mediante la construcción y destrucción explícita de objetos. En una máquina reversible, la recolección de basura para reciclar almacenamiento siempre puede realizarse mediante un subcálculo invertido. El "problema de la referencia colgante" no puede ocurrir en un lenguaje lineal porque la única ocurrencia de un nombre para un objeto se utiliza para invocar su destructor, y el destructor no devuelve el objeto.

La mayoría de los operadores de Forth toman sus operandos de la parte superior de la pila y devuelven sus valores a la parte superior de la pila. La ausencia de nombres de variables en el lenguaje es característica de los combinadores, por lo que la programación de operadores de Forth puede verse como la construcción de combinadores más grandes a partir de otros más pequeños. Un Forth que incorpora solo operaciones de permutación de pila, como intercambiar, rotar y rodar, debe ser lineal porque no tiene operadores de copia o eliminación.~

Para un ejemplo de autómatas celulares reversibles, consulta Fractran y Qu-Ants.

En 1949, Claude Shannon caracterizaba la pérdida de información y necesitaba un término para describir el grado en que la información se mezcla o desordena. Al visitar al físico matemático John von Neumann, recibió el siguiente consejo:

"Deberías llamarlo entropía... nadie sabe realmente qué es la entropía, así que en un debate siempre tendrás la ventaja."

Los estantes vertiginosos que obstruyen el día y sobre los cuales yace el caos.

Usamos software porque tenemos objetivos que alcanzar y cosas que hacer. El software que utilizamos está codificado por programadores que tienen sus propios objetivos; a veces estos objetivos coinciden con los nuestros, pero con el tiempo divergen. Las herramientas de las que dependemos adquieren funciones que no usamos ni entendemos, introduciendo errores que nos impedirán alcanzar nuestras metas.

Tenemos la opción de intentar comprender el código y corregirlo, la opción de probar otro programa y la opción de programar el software nosotros mismos. Todas los caminos, excepto la última, implican una búsqueda, y evaluación interminables y una mayor desviación de nuestros objetivos.

Llamemos elegante a un programa si no existe un programa más pequeño escrito en el mismo lenguaje de programación que tenga la misma salida.

Jen entró para ver las increíbles creaciones de los ingenieros y artistas. Todos estaban miraban fijamente un televisor conectado a una consola de desarrollo para Sony PlayStation. Allí, en la pantalla sobre un fondo monocromático, había un triángulo negro.~

"Programar es una forma de crear mundos, en la que el programador define cómo funciona ese mundo" ~

Una máquina virtual es un programa que actúa como una computadora.

Simula las instrucciones de un procesador junto con algunos otros componentes de hardware, lo que le permite realizar operaciones aritméticas, leer y escribir en la memoria e interactuar con dispositivos de entrada/salida, al igual que una computadora física. Lo más importante es que puede entender un lenguaje de máquina que puedes usar para programarla.

Las máquinas virtuales proporcionan una etapa de lenguaje intermedio para la compilación. Sirven como puente entre el alto nivel de un lenguaje de programación y el bajo nivel de una máquina real. Las instrucciones de una máquina abstracta están adaptadas a las operaciones específicas necesarias para implementar las operaciones de un lenguaje fuente o una clase de lenguajes fuente.

Archivo Gif con un esquema bedrock

Un nivel de abstracción fundamental se encuentra en todos los sistemas humanos. Ningún fallo recuperable, sin importar cuán catastrófico sea, requerirá intervención inteligente por debajo de este nivel. Cuando una aplicación se bloquea, podría dejar un volcado de memoria (core dump), pero nunca un "volcado de compuertas lógicas" y mucho menos un "volcado de transistores". Las compuertas lógicas y los transistores están muy por debajo del nivel de abstracción fundamental de cualquier computadora ordinaria.~

Para experimentar con la computación desde los primeros principios, echa un vistazo a la computadora de papel.

Traducido del original:

https://wiki.xxiivv.com/site/computation.html


Regresar al índice

Este espacio es posible gracias a la comunidad texto-plano.xyz.