¿Qué idioma entiende la computadora?

Llamamos al lenguaje que una computadora entiende su “conjunto de instrucciones”, normalmente se trata en términos de “arquitectura del conjunto de instrucciones”, que incluye recursos físicos, como registros.

Los fabricantes de chips publican una extensa documentación de su ISA; estos son documentos extremadamente legibles que se esfuerzan por presentar los detalles con gran claridad y claridad. Esto es necesario para que los compiladores-escritores puedan emitir secuencias de instrucciones correctas y de mejor rendimiento al traducir desde lenguajes de nivel superior.

Es inusual programar directamente en el ISA de la computadora, porque son solo una serie binaria de números, y es difícil recordar qué bits corresponden, por ejemplo, a una operación aritmética (suma, resta, xor), que codifican la selección de registros particulares. , etc. En cambio, es normal usar un “ensamblador” que básicamente proporciona una transcripción textual de instrucciones más fácil de leer. Puede hacer esto muy fácilmente en cualquier máquina Linux, y hay muchos tutoriales sobre cómo comenzar, los ejecutables más simples / más pequeños, etc.

Sin embargo, es inusual molestarse con la programación a nivel de máquina, no porque sea difícil, sino porque es monótona y a veces propensa a errores. En cambio, casi toda la programación se realiza en lenguajes de nivel superior que proporcionan construcciones más potentes, principalmente tipos y verificación de tipos. Uno puede ver toda la superestructura de lenguajes, lenguajes orientados a objetos, marcos, etc., como simples elaboraciones sobre el concepto de tipos que son más expresivos (seguros, compactos, semánticamente empaquetados) que el acceso sin formato a la ISA.

Cualquier lenguaje que una computadora pueda entender es el resultado de ciertas abstracciones hechas por el procesador (el cerebro).

TL; DR

La computadora (un SO) puede entender cualquier lenguaje que el procesador pueda interpretar. Una computadora puede obtener otros idiomas como entrada, pero solo tendrá sentido y llevará a cabo una instrucción que el procesador pueda identificar. Esto también significa que hay algunos idiomas que el procesador no puede entender …

Antes de las computadoras, es decir, las máquinas que usted y yo sabemos que se llaman computadoras, había personas que se llamaban computadoras. Estas personas solo tenían un trabajo y este era realizar cálculos complejos y dar una respuesta precisa. Esto significaba que tenían que seguir ciertas reglas y no podían desviarse de esas reglas, de lo contrario el resultado de los cálculos no se puede verificar. Esto debería comenzar a sonar familiar para cualquiera que tenga alguna experiencia con el funcionamiento de una computadora. Cuando escuchas el término “computación paralela”, bueno, esa no era una idea descabellada que alguien repentinamente tenía para las máquinas. En realidad, fue practicado originalmente por computadoras humanas.

Imagen cortesía de wikipedia [1]

¿Qué tiene eso que ver con qué idiomas puede entender una computadora?

Bueno, como dije, la única forma en que una computadora puede entender algo es a través de las abstracciones hechas por el cerebro (el procesador), pero como acabamos de ver, una computadora (máquina) es solo una abstracción de lo que un humano solía hacer. Esas computadoras humanas primero tienen que leer las instrucciones que se les han dado, leer los pasos para el cálculo, confiar en su cerebro para una interpretación y transmitir la información de la mejor manera que puedan entender de lo que el cerebro les dice.

Su cerebro controla los mecanismos del cuerpo para respirar, controla sus habilidades motoras, controla su habla, interpreta el lenguaje que escucha y, con suerte, forma la comprensión correcta de la cacofonía del ruido que pasa por el orificio de la oreja, etc., etc. esto lo hace el cerebro para que pueda concentrarse en las cosas más importantes. Esto plantea la pregunta, ¿qué eres en esta imagen ? Estoy divagando.

El procesador lleva a cabo el mismo proceso (el cerebro, también conocido como la CPU, unidad central de procesamiento) en una computadora, pero a un nivel mucho, mucho más bajo. El sistema operativo recibe un montón de ruido (binario) y lo envía al procesador que examina el desorden hasta que encuentra un montón de tonterías que de alguna manera tienen sentido. Envía esta información de vuelta al sistema operativo como una instrucción (o parte de ella). El sistema operativo lee esta instrucción y hace lo que dice (o entra en pánico cuando lee una instrucción aterradora jk). Todo este proceso solo es posible gracias a que el sistema operativo simplemente reacciona a la entrada externa, envía las cosas al procesador, el procesador interpreta y el sistema operativo felizmente avanza.

Al igual que el orificio de la oreja en la cabeza escucha cosas , el globo ocular ve cosas, de la misma manera que la computadora (que ahora conocemos como el sistema operativo) recibirá un montón de ruido (entrada del usuario, como el movimiento del mouse, escribir en el teclado, transmisión de video, etc.), pero solo tiene sentido a través del procesador.

La pregunta que debe hacerse ahora es, ¿qué idiomas puede entender el procesador ? Bueno, eso es lo que la gente llama asamblea . ¿Pero podemos tener un procesador que entienda varios idiomas? No tengo idea y se está haciendo tarde escribiendo esta respuesta. Vamos a dormir en ese pensamiento.

Gracias por leer.

Notas al pie

[1] Computadora humana – Wikipedia

Realmente no hay una manera simple de explicar la respuesta a su pregunta. Los encuestados actuales han hecho un trabajo admirable al tratar de explicar una operación tan compleja que se basa en tantos tipos diferentes de máquinas que llamamos computadoras libremente.

Prácticamente todas las computadoras funcionan según la lógica “simple”. On / Off y Yes / No, que se procesan fundamentalmente como 0s y 1s. Pero esa no es una respuesta completa, ya que otros lo han detallado, por lo que no tiene sentido repetir sus respuestas. Sin embargo, a los fines de su pregunta, ese es el lenguaje que una computadora “entiende”.

El software es la herramienta que hace que esa operación compleja sea transparente para el usuario. El software, en su nivel más simple, traduce los comandos del usuario al idioma que el chip puede reconocer para ejecutar el comando.

En realidad, solo el lenguaje que la computadora entiende es binario (0,1) solamente. Todos los demás idiomas utilizados en las computadoras son para que los humanos se comuniquen con la computadora y no para la computadora con nosotros. Toda la conmutación de regreso a los humanos se realiza mediante programas escritos por humanos. Las computadoras aún hoy no son más que un gran interruptor de alta velocidad. Hay una diferencia entre el lenguaje de programación y el lenguaje de hardware. Incluso el ensamblador y los lenguajes en C no son más que un lenguaje humano para decirle a la computadora qué hacer por los humanos. Lo único que ve la computadora en estas instrucciones es 10100100011.

Ninguna. La computadora no “entiende” ningún idioma. Producen nuevas señales eléctricas en nombre de otras señales eléctricas.

Depende de nosotros darle un significado a esas señales y diseñar sus transformaciones para que representen soluciones a problemas reales.

Entonces, usando la aritmética base2 podemos representar números. Usando UNICODE podemos representar el personaje.

Usando ciertos circuitos podemos diseñar algo que SI la entrada dada es la representación de dos números, la salida SERÁ la representación de su suma y así sucesivamente. Luego identifique dicho circuito con un número en sí mismo (1 puede ser suma, 2 resta, 3 multiplicación, etc.) y almacene la secuencia de esos números (códigos de instrucciones) en la memoria.

Dar a esos números nombres propios nos da el lenguaje inteligible humano de más bajo nivel: ensamblador.

Una computadora es una máquina muy compleja construida por capas y capas de tecnología.

Finalmente, las computadoras no entienden nada, son una gran red de circuitos digitales simples que obedecen las leyes de la física. Un chip moderno puede tener miles de millones de transistores.

Sobre la base de eso tienes capas y capas. Algunas capas son muy complejas pero solo ofrecen una interfaz limitada. Por ejemplo, un chip Intel tiene un sistema operativo Minix completo que se ejecuta dentro de él solo para ofrecer una capa de lenguaje de máquina con muchas CPU.

Dicho esto, generalmente el nivel más bajo que un humano puede usar para dar órdenes a las computadoras es el lenguaje de máquina. Este es un conjunto de instrucciones en forma de números (secuencia de dígitos). Estas instrucciones componen el conjunto de instrucciones de la CPU, y ese conjunto de instrucciones limita lo que la computadora puede hacer.

El lenguaje de máquina se representaría, para los humanos, como números. En los años 50 o 60, antes de que el lenguaje ensamblador y los ensambladores se generalicen, los programadores pueden tener que ingresar números, a mano, en un panel.

La siguiente imagen muestra el panel de 22 bits del PDP-11. Debería ingresar una dirección y un número que se cargaría en esa dirección en la memoria.

Por lo tanto, el lenguaje más simple que una computadora y un ser humano pueden entender y “comunicarse” son números que representan instrucciones que controlan cómo se comporta el circuito electrónico (como agregar el registro B al registro A). Lo llamamos lenguaje de máquina.

Debo señalar que hay computadoras que tienen un conjunto de instrucciones modificables, o computadoras que pueden ser microprogramadas, es decir, hay un lenguaje “debajo” del conjunto de instrucciones que uno puede usar para modificar lo que la computadora puede hacer, dentro de los límites de su circuitería

Los humanos, sin embargo, son mucho mejores con las palabras. Desde el principio, asociamos estas instrucciones con mnemónicos que los representan, como AGREGAR A, B para agregar el registro B al registro A. Estas mnemónicas forman el lenguaje ensamblador.

Actualmente, la mayoría de los chips se lanzarían y debatirían utilizando su lenguaje ensamblador como una representación mucho más legible del lenguaje de máquina real (números). Usualmente usamos Assemblers (un tipo de programa de computadora) para traducir el ensamblaje al lenguaje de máquina, pero eventualmente, trabajando en un nuevo chip, es posible que alguien tenga que hacer alguna traducción manual.

No es fácil programar sistemas grandes en ensamblador, por lo que desarrollamos lenguajes de programación. Los lenguajes de programación están diseñados para ser amigables con los programadores y sin ambigüedades para las computadoras. Por lo general, están diseñados con un objetivo, como, al principio, Fortran fue diseñado para cálculos, Cobol para aplicaciones comerciales y C para programación de sistemas.

Los lenguajes de programación se pueden traducir directamente, mediante compiladores, al lenguaje de máquina u otra representación intermedia, como ensamblador o incluso otros lenguajes de programación. Muchos estudiantes crean lenguajes de programación que traducen algo a C y compilan C.

Hay esfuerzos para que la computadora entienda los gráficos (como los diagramas UML) y el lenguaje natural (como el inglés).

Por lo tanto, la respuesta es que las computadoras entienden muchos idiomas diferentes, con respecto a en qué capa de la jerarquía de esta máquina tan compleja está discutiendo.

Puede consultar la Organización de computadoras estructuradas de Andrew Tanenbaum para comprender mejor estas capas y sus idiomas.

Si desea saber más sobre los lenguajes de programación, puede consultar el libro de Lenguajes de programación de Sebesta.

la computadora solo entiende el lenguaje binario, es decir, 1 y 0. 1 es la situación cuando hay algo de voltaje y 0 es que no hay voltaje.

Veamos un ejemplo de cómo la computadora agrega dos números.

Este es un lenguaje básico entendido por computadora. Dentro de la computadora hay millones de dichos circuitos para otros cálculos aritmáticos y lógicos como sumar, multiplicar, restar, dividir y otros procesos gráficos utilizando este lenguaje básico. Pero estos millones de circuitos no pueden conectarse manualmente como en el circuito anterior para realizar operaciones aritmáticas y lógicas. Entonces, alguien desarrolló un lenguaje intermedio para computadora y humanos llamado lenguaje de nivel de ensamblaje.

Aquí está el enlace de información detallada sobre cómo la computadora entiende el lenguaje ¿Cómo funciona la computadora?

La computadora solo entiende el lenguaje binario … y el ensamblaje … Se puede usar en algún momento …

Lenguaje binario que consiste en “0,1”