Por que os terráqueos produzem software e hardware de buggy

Acho que ninguém argumentará com o fato de que a qualidade de qualquer sistema complexo criado pelos terráqueos está longe de ser o ideal. É claro que podemos dizer que tudo funciona - aviões voam, naves espaciais abrem os espaços abertos da órbita da Terra etc.

Mas, ao mesmo tempo, todos estão acostumados ao fato de que o software em seus dispositivos funciona de maneira imprevisível, uma vez que até a instalação das atualizações mais recentes não garante que não haja problemas de segurança, que eles geralmente encontram erros que existem lá por muitos anos no código-fonte aberto que até empresas grandes e de "tecnologia", existem falhas e vazamentos de dados que a sonda trava ou perde parte da funcionalidade não se deve a intrigas de alienígenas (os marcianos juram que não derrubaram o ExoMars).

Eu gostaria de considerar as causas e possíveis soluções para este problema planetário.

  1. — , , . , , . , - , , , .

  2. / / — , , . , , 160 , .

  3. / — . - «, », « », « ».

Quando os terráqueos realizam as tarefas mais difíceis que enfrentam, seria lógico usar as melhores ferramentas disponíveis para resolvê-las.
E essa ferramenta, definitivamente não é o cérebro humano , o cérebro do homo sapiens é apenas uma ferramenta da série "parece funcionar" e não deve se surpreender com isso, no entanto, evoluiu para tarefas completamente diferentes, para que até o profissional mais legal possa cometer um erro estúpido na pilha. razões.

Obviamente, reunir muitos cérebros bons pode melhorar o resultado, mas sem uma boa ferramenta, todos os cérebros do planeta não alcançarão o que já foi alcançado.

Para entender que tipo de ferramenta mágica vale a pena tentar responder perguntas como “Por que os arranha-céus não desabam com o próprio peso ou com o vento?”, “Como nossa espaçonave chega ao alvo nas vastas extensões de espaço?”, “Como conseguimos enviar dados de maneira confiável através de canais de comunicação não confiáveis? ”,“ De onde vieram os métodos de criptografia confiáveis? ” e assim por diante.

A resposta para todas essas perguntas é uma, essa ferramenta é a matemática . A matemática é a mágica do mundo moderno, para os artefatos não iniciados, como o Zcash ou o CryptDB , e, como sempre, a criptografia assimétrica parece mágica, embora essa seja apenas uma aplicação dessa poderosa ferramenta.

Para dizer - "Sim, o programa funciona conforme necessário", você deve ter uma prova matemática dessa afirmação, infelizmente não sou especialista neste campo, mas, tanto quanto sei, o processo dessa prova é bastante complicado, mas isso não deve ser um obstáculo pelos seguintes motivos:

  1. Não há outra maneira, nossos sistemas estão se tornando mais complicados, novas camadas dependem das antigas, mas infelizmente essa não é uma base muito confiável.

  2. Você precisa provar pequenos programas ( Unix Way ).

  3. Você só precisa provar programas críticos para a confiabilidade da confiabilidade. Você não pode provar a correção da suíte de escritório, mas o microkernel do sistema operacional ou a biblioteca de criptografia deve ser comprovada.

  4. , , - , , , , .

  5. (Haskell?). , - , .

  6. , .

Obviamente, a prova de programas não nos salva da necessidade de formular requisitos com precisão, mas acho que esse é um problema solucionável, especialmente porque em alguns casos (como bibliotecas de criptografia) os próprios requisitos também são formalizados.

Acho que todos gostariam que um software absolutamente confiável trabalhasse em usinas nucleares, em equipamentos médicos e lugares semelhantes.

Não vou dizer que foi necessário fazer isso por um longo tempo, o setor se desenvolveu rapidamente, muitas coisas mudaram significativamente, mas hoje, do meu ponto de vista, o setor está maduro o suficiente para começar a colocar as coisas em ordem.

Existem novas classes de tarefas, como computadores quânticos e processadores especializados para redes neurais, tudo está apenas começando por aí. Mas o desenvolvimento dessas indústrias não nega a necessidade de uma abordagem clássica - tudo tem suas próprias tarefas.

A civilização terrestre agora é muito dependente da confiabilidade dos sistemas de computadores e, para não recuar à noite devido ao barulho das asas de um pica-pau voador, precisamos procurar soluções que aumentem a confiabilidade.

Pica-pau? E aqui o pica-pau
: « , »

Separadamente, vale a pena mencionar as redes neurais, as redes neurais são uma tentativa de copiar o cérebro com todos os seus prós e contras, a solução nas redes neurais contém os mesmos problemas que o cérebro humano, portanto, elas precisam ser aplicadas apenas onde não sabemos como resolver o problema usando métodos formais. O algoritmo funciona de maneira absolutamente confiável.

Penso que, para que a civilização terrestre se desenvolva de maneira constante, é hora de ela pensar na confiabilidade de sua infraestrutura, em relação à TI, da seguinte forma: você precisa selecionar / criar uma linguagem de programação matemática de alto nível e começar a criar completamente nela (sem os arquivos ocultos) os programas mais críticos com sua prova subsequente. É provável que a arquitetura de hardware dos processadores seja comprovada e aprimorada para a execução de programas nessa linguagem (Máquinas Lisp ?).

Quem deve fazer isso? Eu não sei, mas a mesma pergunta poderia ser feita na proposta de todo o mundo para escrever o kernel do sistema operacional, mas o Linux é escrito, o que significa que existem opções. Por exemplo, existe um kernel seL4 formalmente verificado ( explicações em seu wiki ) desenvolvido no NICTA , se esses projetos não se tornarem a base para a infraestrutura digital do futuro, a humanidade terá uma chance de não passar pelo grande filtro de civilizações (quem tem certeza de que o vírus não iniciará uma guerra nuclear?).
algumas letras
, . , , , , , , , , , , .

— … ! , !

— . , …

— , , … ?..

« »

ATUALIZAÇÃO: Durante a discussão, um pensamento importante amadureceu nos comentários - para implementar o software verificado em áreas críticas, não é necessário interromper o desenvolvimento atual, é necessário criar componentes verificados gratuitos em paralelo e de acordo com a disponibilidade deles para fazer coisas novas com a ajuda deles, por exemplo, o microkernel seL4 mencionado acima já existem necessidades incorporadas, o que significa que você precisa usá-lo onde quiser. E trabalhe em outros componentes.

Source: https://habr.com/ru/post/pt400149/


All Articles