GoSuda

Política e Computadores

By snowmerak
views ...

O que é Filosofia

O que você pensa que é filosofia? O significado dicionarizado é "a atividade de pensar e buscar respostas para as questões fundamentais da vida e do mundo". Não é a resolução de problemas com respostas predefinidas, mas sim a expansão do pensamento através da continuidade das mesmas perguntas, ou de perguntas que se seguem, e a partilha dessas respostas, o que pode ser considerado uma definição comportamental.

No passado, enquanto concluía minha graduação, fiz uma disciplina relacionada à filosofia política. Lembro-me que, durante a minha apresentação, o professor disse algo semelhante a: "A filosofia política e a ciência da computação são disciplinas no auge de filosofias diferentes". Não eram exatamente essas palavras e frases, mas acredito que o sentido era esse.

Ciência da Computação

Eu considero a ciência da computação como uma "investigação fundamental para resolver problemas lógicos". Portanto, diversas respostas podem surgir dependendo de quem está pensando sobre um determinado problema. O exemplo mais representativo é a ordenação. Mesmo para a investigação de como ordenar dados listados em sequência, existem vários métodos, como Bubble Sort, Insertion Sort, Selection Sort, Merge Sort, Quick Sort, Heap Sort, Tim Sort, entre outros. E ao dividi-los, algoritmos ainda melhores podem surgir.

Além disso, de uma perspectiva regional, poderia ser dito que ela "cria e prova". A ordenação mencionada acima também continua a criar e provar como ordenar. Para os desenvolvedores, um exemplo mais próximo é que, quando um projeto é planejado, é bom vê-lo como a implementação e a prova de que ele funciona corretamente.

Filosofia Política

Eu considero a filosofia política como uma "investigação fundamental para resolver problemas sociais". Ela questiona repetidamente problemas já existentes em cada época, produz respostas e as compartilha no presente e no futuro. Lida principalmente com valores abstratos como justiça, liberdade, igualdade e poder, que são interpretados de forma diferente dependendo da época e da cultura. Não há uma clara definição de bem e mal, certo e errado, e é caracterizada por essa indefinição.

Além disso, se vista regionalmente, como na ciência da computação, pode ser considerada como "questionar e refletir". Questiona-se incessantemente sobre os problemas que surgem, reflete-se sobre o porquê de terem ocorrido e quais são as melhores direções, e então se chega a respostas. Isso também resulta em muitas respostas, proporcionalmente ao número de pessoas que pensam.

Por que devemos conhecer política/computação?

Relação de Invocação Mútua

Embora os dois mundos pareçam explorar domínios diferentes, na realidade, eles compartilham semelhanças significativas e possuem muitos pontos onde são causa e efeito um do outro.

Vejamos um exemplo:

  1. Se os dados de saúde individuais forem armazenados de forma segura na nuvem, cada hospital poderá acessá-los rapidamente quando necessário. ⇒ É implementado usando as funções de cada área, com programação segura e acessível.
  2. Então, de quem são esses dados? Meus? Do responsável pelo registro? Ou da entidade patrocinadora? Da empresa desenvolvedora? Do Estado? E até onde eles podem ver meus dados? Até que ponto e como minha informação pessoal pode ser garantida como protegida? ⇒ Discurso político sobre as posições e diferenças de interesse entre diferentes comunidades e indivíduos será trocado.
  3. Depois disso, ocasionalmente, o discurso político e o design e implementação programáticos se seguirão repetidamente.

Dessa forma, a ciência da computação é usada para resolver problemas sociais existentes, e então a filosofia política é usada para identificar e resolver os problemas que surgem a partir disso, questionando e buscando soluções para os próximos problemas. Isso é um fenômeno natural na sociedade da informação moderna.

Política e Computação são semelhantes?

Pontos que não parecem ser

Além disso, os dois mundos evoluíram de formas semelhantes. No entanto, sua base, assim como a relação entre a filosofia social e a filosofia natural, apresenta uma diferença entre a expressão ambígua e a expressão clara. Enquanto a filosofia política se baseia em definições variáveis e ambíguas, compostas por linguagem natural, a ciência da computação se baseia em proposições imutáveis e claras, compostas por fórmulas matemáticas, em vez de linguagem natural.

Além disso, a direcionalidade também é expressa de forma sutilmente diferente. A ciência da computação considera que uma solução ótima pode existir. E na filosofia política, fala-se de conceitos ambíguos como argumentos mais persuasivos, argumentos mais fundamentados, argumentos mais éticos. Mas, na minha opinião, a direcionalidade dos dois é quase semelhante. Afinal, parece que ambos buscam "o próximo melhor". Embora a ciência da computação tenha vários campos, por exemplo, na compressão de mídia, conhecida como Codec, ela se esforça para mostrar melhores taxas e desempenho de compressão, e custos de licença.

Pontos que parecem ser semelhantes

Notavelmente, as linguagens de programação e as ideologias de governo parecem aplicar-se de forma semelhante aos humanos. Embora não seja possível correlacionar cada linguagem e ideologia, vou listá-las por diversão.

  • Linguagem C (O desenvolvedor sabe o que está fazendo): Gostaria de compará-la ao republicanismo. Porque historicamente é semelhante à república, que foi a base dos sistemas políticos ocidentais, e também se assemelha ao comunitarismo, que valoriza a consciência individual dos cidadãos e os esforços individuais para alcançar um ideal melhor. Além disso, senti semelhança no fato de que os direitos vêm com responsabilidades.
  • Java (Escreva uma vez, execute em qualquer lugar): Não sei. Há uma lei forte, e as pessoas vivem uma vida padronizada seguindo-a, mas é estável e há liberdade dentro dela. E se você entrar no Spring, várias vantagens o aguardam. Deveríamos chamá-lo de liberalismo?
  • C# (Harmonia entre a produtividade do desenvolvedor e os princípios de Engenharia de Software): Sob a proteção de um governo forte, tudo é bem projetado, e dentro do que foi planejado, a produtividade e o desempenho podem ser levados ao extremo. A economia planejada se encaixa. O que não é comunismo é que os meios de produção foram liberados e os produtores não são restringidos.
  • Go (Abandone a complexidade, adote a praticidade e a eficiência): Não há nada semelhante. Como tudo é dado, que seja um estado de bem-estar social.
  • Rust (Segurança sem perda de desempenho): A propriedade e o tempo de vida do Rust são gerenciados por um governante, o compilador rigoroso. Isso é visto como socialismo, pois para evitar a desigualdade e os riscos gerados pela livre atividade econômica individual, a comunidade gerencia e planeja os meios de produção para garantir uma vida estável, e isso busca a segurança e a igualdade de todo o sistema, limitando em parte a liberdade individual.
  • JavaScript (Flexibilidade, tolerância e onipresença): Gostaria de compará-lo ao capitalismo. Nesta linguagem, os indivíduos possuem os meios de produção, e até mesmo as instalações são amplamente possuídas por indivíduos. Graças a isso, uma variedade de produtos manufaturados surgiu, e qualquer um pode buscar lucro através da livre concorrência. No entanto, um mercado sem regulamentação logo caiu no caos.
  • TypeScript (JavaScript estendido): Obviamente, é capitalismo modificado. A crença no capitalismo é quebrada, e o governo intervém até certo ponto para superar a instabilidade do mercado. A liberdade total anterior regrediu comparativamente, mas qualquer um ainda pode entrar livremente no mercado e competir.

E, surpreendentemente, muitos desenvolvedores brigam por linguagens, como se travassem uma guerra ideológica na vida real. A própria linguagem é uma ideologia familiar para os desenvolvedores e um ideal a ser buscado.

Nação e Arquitetura

  • Arquitetura monolítica e estado centralizado: Tudo está contido em uma única e gigantesca base de código e um único binário. Isso tem uma estrutura semelhante a um estado unitário com um governo central forte ou uma monarquia absoluta. Todas as funções do estado são controladas por um único sistema de poder.
    • A vantagem é que é mais fácil formar uma nação e as decisões são tomadas rapidamente. Isso está no mesmo contexto da vantagem de que o software completo é lançado rapidamente. Como todos os recursos e informações estão concentrados em um único lugar, o gerenciamento é claro.
    • No entanto, à medida que o estado cresce, torna-se difícil responder às mudanças, e mesmo para mudar uma pequena lei ou instituição, é preciso revisar e aplicar em todo o sistema. Há também o risco de um problema em uma área paralisar todo o estado. A arquitetura monolítica também torna difícil responder às mudanças devido à grande base de código e ao código interligado, e mesmo para mudar uma linha de código, é preciso estimar o escopo do impacto, e um problema que ocorre em um módulo é propenso a afetar todo o sistema.
  • MSA e estado federal: Cada função do sistema é separada em serviços independentes. Isso tem semelhanças com um estado federal onde cada parte do país é composta por vários estados independentes. Além disso, cada serviço e estado possuem infraestruturas independentes. A interferência do governo central é frouxa, e a possibilidade de independência e adesão a qualquer momento também é semelhante.
    • Basicamente, cada estado e serviço independente pode emendar leis/escrever código de forma independente. Isso elimina a necessidade de sincronizar o ritmo uns dos outros. Além disso, mesmo que ocorra um problema em um local, é difícil que toda a federação seja paralisada. E é possível escolher a instituição (tecnologia) apropriada para cada região ou campo.
    • No entanto, chegar a acordos mútuos ou criar canais de comunicação é difícil. É difícil implementar uma política consistente, o que pode causar confusão.
  • EDA (Event-Driven Architecture) e sociedade civil: Em vez de o governo central ou um agente dar ordens diretamente, os indivíduos resolvem os problemas sociais que surgem de forma proativa e autônoma. Isso é semelhante à característica do EDA, onde quando um evento ocorre, alguém entre os assinantes o pega e o processa de forma autônoma.
    • Qualquer pessoa pode participar facilmente. O EDA também permite que novos serviços se tornem facilmente novos assinantes e participem do processo.
    • No entanto, tem a desvantagem de não poder compreender o fluxo geral. É difícil rastrear quem processou o quê e como, e não se sabe que tipo de reação em cadeia um único evento pode causar.
  • Arquitetura em Camadas (Layered Architecture) e feudalismo: O feudalismo é uma estrutura em que cada camada cumpre seus papéis e responsabilidades designados, desempenhando suas obrigações para com as camadas superiores. Eles são unidos por uma espécie de relação contratual e formam uma estrutura de controle hierárquica rigorosa, o que lhes confere semelhanças com a arquitetura em camadas.

Embora muitas outras analogias sejam possíveis, o cerne deste texto reside no processo de construção da estrutura, e não na estrutura em si.

A resolução de problemas em desenvolvimento e política é a mesma?

Se a arquitetura de software e os sistemas estatais são semelhantes, o processo de construção de ambos também traça paralelos surpreendentes. O processo de desenvolvimento de software é, na verdade, um ato político de construir e desenvolver uma nova ordem no espaço digital.

  1. Publicização de problemas sociais e análise de requisitos: Tudo começa com a pergunta "Qual é o problema?". Assim como o sofrimento e o desconforto da sociedade civil são tornados públicos e se tornam uma agenda política, o desconforto e as necessidades do usuário, após análise, tornam-se o primeiro marco do desenvolvimento, o 'documento de especificação de requisitos'.
  2. Desenho da constituição e design da arquitetura: Que tipo de nação construiremos? Que tipo de sistema construiremos? Assim como os políticos constroem a estrutura da constituição e das leis com base em ideologias e filosofias, os arquitetos desenham o projeto da arquitetura que será a base do sistema, com base em convicções técnicas. As decisões nesta fase determinam o destino do sistema.
  3. Execução de políticas e implementação de software: Uma vez que o projeto é concluído, os desenvolvedores escrevem o código real, e os funcionários administrativos executam as políticas de acordo com as leis. É o processo de um plano abstrato se transformar em uma entidade concreta que funciona no mundo real.
  4. Julgamento através de eleições e teste de software: As políticas são julgadas quanto à sua legitimidade através de eleições e da opinião pública. O software é validado quanto ao seu valor através de testes da equipe de QA e feedback do usuário. Ambos, no final, só podem sobreviver se obtiverem o consentimento dos soberanos (cidadãos, usuários).
  5. Reforma institucional e manutenção de sistemas: As leis e sistemas criados uma vez não duram para sempre. Assim como leis antigas são revisadas e instituições são reformadas para se adequarem às mudanças dos tempos, o software, se parar de se adaptar a um ambiente em constante mudança e de "refatorar" para melhorar a ineficiência interna, torna-se código morto.

Assim, todo o processo, desde a definição do problema até o design, implementação, verificação e melhoria contínua, mostra que os dois mundos compartilham o mesmo ritmo de resolução de problemas.

O Dia dos Novos Legisladores

A sociedade da informação tornou a distância entre os ápices dessas duas filosofias insignificante. O código não é mais apenas um circuito lógico, mas se tornou a "Lei (Code is Law)" que define as relações humanas, distribui o poder e realiza valores sociais. Se a arquitetura que projetamos se assemelha à estrutura de governo de um país, e se o processo de desenvolvimento que seguimos é como o processo de consenso político, quem somos nós, desenvolvedores? E o que os políticos devem fazer? Portanto, os desenvolvedores agora devem refletir não apenas sobre a lógica do código, mas também sobre a sociedade que esse código criará, e os políticos devem entender não apenas a lógica dos votos, mas também a lógica da tecnologia que move o mundo. Isso porque o poder imenso que exercemos em nossos respectivos mundos vem com uma responsabilidade ética proporcional.