Uma retrospectiva de decisões passadas que afetam nosso presente e afetarão o futuro



O tamanho da garupa de um cavalo, há dois milênios, determinava o tamanho dos motores de foguete hoje.



Você já se perguntou como cada uma de nossas decisões determina o futuro? Às vezes, não por um ano, dezenas, centenas, milhares de anos. Por que não podemos tornar os motores de foguetes maiores? Por que um byte tem exatamente 8 bits e não 7 ou 16, ou talvez até 48? Mas era igual a esses números antes! Por que o terminal virtual Linux ainda tem velocidade de porta de conexão? Vamos falar sobre como uma decisão no passado determina nosso presente e como podemos influenciar nosso futuro.



Largura do ônibus espacial e garupa do cavalo





Esta é uma bicicleta bastante conhecida que se espalhou por toda a Internet. Por que você acha que o tamanho do booster, preso às laterais do tanque principal de combustível, é tão pequeno? Estes são impulsionadores de foguetes sólidos (impulsionador lateral do ônibus espacial MTKK (Inglês Solid Rocket Booster, SRB)) , que foram fabricados em uma fábrica em Utah. Do ponto de vista da engenharia, seria muito melhor deixar esse motor um pouco mais grosso, mas eles tiveram que ser transportados de trem da fábrica até o local de lançamento. E a ferrovia passa por um túnel nas montanhas.

Conseqüentemente, esses aceleradores tiveram que passar por esse túnel. O próprio túnel é ligeiramente mais largo que a linha férrea. A bitola padrão dos trilhos dos EUA (espaçamento dos trilhos) é de 1435 mm (4 pés e 8 ½ polegadas).



De onde veio esse número? Os EUA herdaram esse padrão das primeiras ferrovias da Inglaterra. As ferrovias na Inglaterra foram construídas de acordo com os mesmos padrões que os bondes pré-ferroviários, chamados de bondes a cavalo, e também usavam bitola de 4 ft 8 ½ "(1435 mm).



Essa distância entre as rodas do carro foi escolhida de forma que elas caiam no sulco nas estradas inglesas, de modo que as rodas se desgastem menos, e a distância entre as pistas na Inglaterra é de exatamente 4 pés e 8,5 polegadas. Mas por que isso acontece? Por que exatamente esse número?

A Inglaterra já fez parte do Império Romano e, como os primeiros carros de guerra foram feitos pela Roma Imperial, todos tinham a mesma largura entre as rodas.





Pista na passagem para pedestres da estrada romana em Pompéia.





Outro exemplo de sulco em uma antiga estrada romana.



Essa largura foi escolhida porque combinava com o tamanho de uma carruagem de guerra romana de dois cavalos.





Um exemplo do tamanho de uma carruagem romana.



É surpreendente que o ápice do progresso - a astronáutica ainda hoje esteja intimamente relacionado ao tamanho de duas garupas largas, como há dois mil anos!



Deve ser entendido que esta é na verdade uma bicicleta . Aqui está um bom desmascaramento disso, recomendo a leitura. Mas o tamanho da largura do leito da ferrovia determina a bitola da ferrovia. E determina o tamanho máximo da carga que pode ser transportada por ferrovia.



Tamanho do byte e códigos ASCII





Hoje, muitas pessoas na escola ainda sabem qual é o tamanho de um byte, e para nós isso é óbvio: 8 bits. Mas você já se perguntou por que esse tamanho foi escolhido? Com o que está conectado?



Você provavelmente ficará surpreso, mas um byte nem sempre tinha oito bits! Anteriormente, um byte podia ter de 4 a 60 bits! Por exemplo, os computadores BESM usavam caracteres de 6 bits em palavras de máquina de 48 ou 60 bits.



Mas por que exatamente 8 bits? Um dos motivos é o sistema de codificação binária, uma vez que os mais convenientes para o processamento são os números múltiplos de potências de dois. Bem, bem, diga-me você, por que não 4, 16 ou 32? E você estará certo.



Também deve ser lembrado que em 1963 o American Standard Code for Information Interchange, ou ASCII para breve, foi adotado. Esse padrão foi desenvolvido a partir do código telegráfico e seu primeiro uso comercial foi como código telegráfico de sete bits para envio de mensagens telegráficas. Originalmente baseado no alfabeto inglês, o ASCII codifica 128 caracteres em números inteiros de sete bits. Noventa e cinco caracteres codificados podem ser impressos: incluem números de 0 a 9, letras minúsculas de a a z, letras maiúsculas de A a Z e caracteres de pontuação. Além disso, a especificação ASCII original incluía 33 códigos de controle não imprimíveis que foram gerados usando teletipos; a maioria deles já está desatualizada, embora alguns deles ainda sejam amplamente utilizados,por exemplo, retorno de carro, alimentação de linha e código de tabulação.





Tabela ASCII de sete bits do manual da impressora antes de 1972.



Dois ramos se cruzam aqui ao mesmo tempo, a história do telégrafo, que influenciou o desenvolvimento da indústria de computadores. Falaremos sobre isso no próximo capítulo e, na verdade, a própria representação do byte.



Na década de 1960, a IBM, que também participou da padronização ASCII, introduziu um Extended Binary Coded Decimal Interchange Code (EBCDIC) de oito bits para sua linha de computadores System / 360. Deve ser entendido que EBCDIC e ASCII são diferentes. A proeminência do computador IBM System / 360 levou à adoção generalizada do byte de oito bits.



O desenvolvimento de microprocessadores de oito bits na década de 1970 popularizou esse tamanho de memória. Microprocessadores como o Intel 8008, um predecessor direto do 8080 e do 8086 usados ​​nos primeiros computadores pessoais, também podiam realizar uma pequena quantidade de operações com pares de bytes de quatro bits.



Voltemos ao padrão ASCII, que agora usamos em um grau ou outro todos os dias, mesmo este texto de alguma forma inclui esse padrão.



O American Standard Code for Information Interchange (ASCII) foi desenvolvido sob os auspícios do comitê da American Standards Association (ASA) denominado comitê X3, seu subcomitê X3.2 (posteriormente X3L2) e, posteriormente, X3 desse subcomitê. 2.4 grupo de trabalho (agora INCITS). ASA tornou-se o Instituto de Padrões dos Estados Unidos da América (USASI) e, eventualmente, o Instituto Nacional de Padrões Americanos (ANSI).



O Subcomitê X3.2 desenvolveu o ASCII com base em sistemas de codificação de teletipo anteriores. Antes do ASCII ser desenvolvido, as codificações usadas incluíam 26 caracteres de letras, 10 números e 11 a 25 caracteres gráficos especiais. Mais de 64 códigos ASCII foram necessários para codificar todos esses dados, bem como caracteres de controle que são compatíveis com os Padrões do Alfabeto Telegráfico Internacional (ITA2) de 1924. O ITA2, por sua vez, foi baseado no código telegráfico de 5 bits que Emile Baudot inventou em 1870 e patenteou em 1874.



Você sente essa conexão entre gerações, que de uma forma ou de outra, ainda hoje usamos o legado do código do telégrafo, que foi inventado há 150 anos ?!


O comitê discutiu a possibilidade de usar uma função shift (como em ITA2) que representaria mais de 64 códigos em um código de seis bits. Em um código deslocado, alguns códigos de caractere determinam a escolha entre as seguintes variantes de código de caractere. Isso permite a codificação compacta, mas é menos confiável para transmissão de dados, uma vez que um erro na transmissão do código de deslocamento geralmente torna uma grande parte da transmissão ilegível. O comitê de padrões desistiu da transição e, portanto, o ASCII exigia pelo menos um código de sete bits.



O comitê considerou um código de oito bits porque oito bits (octetos) permitiriam que dois padrões de quatro bits codificassem com eficiência dois dígitos usando um número decimal binário. No entanto, ao transmitir todos os dados, oito bits são necessários quando sete são suficientes. O comitê votou para usar um código de 7 bits para minimizar os custos de transferência de dados. Visto que, naquela época, a fita perfurada podia gravar oito bits em uma posição, o bit de paridade poderia ser usado para verificar se há erros, se desejado.





Mesa ASCII de 8 bits moderna.



Assim, vários fatores convergiram ao mesmo tempo a favor de tornar o byte de 8 bits. Mas, na minha opinião, a principal delas é a capacidade de codificar e armazenar informações de texto em no mínimo um byte e a capacidade de armazenar dígitos decimais em cada nibble.



Dispositivo terminal Linux



Em seu sistema doméstico, você abre um terminal virtual Linux, que geralmente é executado em uma janela e tem uma representação totalmente virtual. Mas ainda é compatível com terminais antigos.



Você pode abrir um terminal e digitar stty, então descobrirá que este programa tem uma velocidade de conexão, como a porta COM. E, em geral, tem um monte de configurações de termios para a porta COM.

Já estive detalhadamente em meus artigos sobre o trabalho do porto COM no artigo " UART e com o que se come " e o seguinte foi dito lá:



UART (Universal asynchronous receiver/transmitter) , -, ( ) — . UART RS-232 ( – COM-, ). , , . .



, , ( ). . , ASCII, . 60- 8- ASCII, , .



1971 , , PDP Western Digital UART WD1402A. 80- National Semiconductor 8520. 90- , . , , .


Observe que algum telégrafo antigo está novamente fazendo o console do Linux funcionar! E porque? Tudo é bastante simples que para o I / O costumavam usar o que estava à mão, nomeadamente teletipos, que permitiam inserir texto a partir do teclado e enviá-lo digitando em papel.





Teletipo, que é conectado via UART e pode ser usado para inserir e enviar informações.



Como resultado, a E / S no Linux é o controle real do TTY. Mesmo os padrões de terminais mais modernos são compatíveis com este tipo de teleimpressora. Além disso, posso dizer com segurança que se você conectar este teletipo a um computador moderno e configurar a saída do terminal para uma porta COM física, ele funcionará sem alterações de software (hardware será necessário, uma vez que existem padrões de tensão ligeiramente diferentes, mas insignificantes).

Mais detalhes sobre como trabalhar com a porta COM e configurar o dispositivo de arquivo de terminal podem ser encontrados em meu artigo " Trabalhando com a porta COM em C no Linux " e / ou assista meus vídeos no final do artigo.



conclusões



Queria dar muito mais exemplos, referências ao passado. Por exemplo, sobre layouts de teclado, que remontam aos dias confusos das máquinas de escrever ou referências ao formato dos telefones celulares modernos. Porém, o artigo já virou uma folha maluca e eu ainda consegui expressar a ideia.





O layout QWERTY, inventado em 1888 para máquinas de escrever, ainda é usado hoje.



A ideia do meu artigo é bastante simples: mesmo as menores coisas que você implementa hoje podem ter o maior impacto em nosso futuro.










All Articles