Política e Computadores
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:
- 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.
- 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.
- 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.
- 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'.
- 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.
- 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.
- 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).
- 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.