Executando verificação de segurança...
6

O que um livro de linguagem C de 1995 nos ensina sobre IA

"C Completo e Total". Esse livro foi uma verdadeira "bíblia" da linguagem C durante os anos 1990 e 2000. Era o livro referência de cabeceira de qualquer programador da época, em dias que não haviam documentações de linguagens disponíveis na internet.

Mas, se você abrir o capítulo que este livro dedica a inteligência artificial, terá um choque.

Obviamente, o assunto não será os desdobramentos dos prompts tipo ChatGPT. Mas a discussão, também, não será do tipo "qual é a melhor lib, o melhor pacote para trazer a sua solução de IA em 5 linhas de código".

A discussão aqui é mais embaixo.

Se nas linguagens mais populares de hoje, queremos saber qual é o pacote que vai "fazer a mágica", em C, a discussão é "como faremos a mágica?".

Afinal, quando você implementa um código em C, você descobre que mágica não existe. O que existe é computação. E quando o assunto é "computação", as perguntas mundanas começam a surgir: "quanto tempo vai levar?", "quanta memória vai ocupar" e "quanto vai custar?".

O livro em questão propõe um simples problema para discutir o assunto: como encontrar a menor distância entre dois pontos em um grafo, ou traduzindo: "como encontrar a melhor rota entre dois pontos no Waze nosso de cada dia".

A discussão nos mostra que não existem soluções perfeitas. O que existe é o tradeoff entre eficiência e eficácia: vale a pena dobrar o custo computacional para alcançar a solução 100% quando você pode entregar a solução 99% pela "metade do preço"?

Às vezes sim, às vezes, não. Cada caso é um caso, não é mesmo? Você não estaria disposto a esperar cinco minutos olhando para a tela do Waze, esperando o app trazer uma rota 3 minutos mais rápida até sua casa. Mas, se o assunto é a análise de dados para o medicamento que vai curar a AIDS, o assunto muda, nao é verdade?

Não tô sendo saudosista. Bem sabemos que em um ambiente de produtividade, não temos que ficar reinventando a roda. É bem melhor consumir uma solução exaustivamente testada e aprovada. E é isso que os pacotes e libs das linguagens como JS, Python e Java nos trazem.

Mas é interessante revisitar esses conceitos e lembrarmos que em programação, o que chamamos de "milagre", a linguagem C chama de "computação".

Não a toa, a quase sessentona segue firme em todos os índices de popularidade entre devs. E é por essas e outras que C é pop! Criada na mesma época de Andy Wahrol, mas por outro artista da época: Dennis Ritchie!

C é pop!

Carregando publicação patrocinada...
5

Melhorando um outro conceito no texto: O que alguns chamam de saudosismo eu chamo de conhecimento.

Os problemas de antigamente eram os mesmo de hoje e mais alguns. O que existe hoje era o que existia antigamente com alguma coisa a mais e alguma coisa a menos. Não reinventar a roda pode significar fazer a mesma coisa errada até hoje.

Só abrindo um parenteses que não é relevante mas pode servir de exemplo:

Tenho visto o pessoal meio deslumbrado falando de "clean code" como se fosse algum processo recente. Bem, linguagens de alto nível existem a mais de 60 anos. Será que ninguém pensou em legibilidade e manutenção? Claro que sim. COBOL foi criada com o intuito de ser legível até para não programadores (pessoalmente acho que foi a única linguagem com o conceito). Um livro com mais de 40 anos que deveria ser lido, não por saudosismo mas para agregar conhecimento:

Thinking Forth.

Ah, mas eu não programo em Forth (ou nem sabia que existia). Eu também não. Mas os conceitos são válidos até hoje e por muito tempo, acredito eu. E nem precisa pagar nada para ler o livro. Recotei algumas dicas para quem se interessar.

tf00.png

No prefácio está escrito:

Programming computers can be crazy-making. Other professions give you the
luxury of seeing tangible proof of your efforts. A watchmaker can watch the
cogs and wheels; a seamstress can watch the seams come together with each
stitch. But programmers design, build, and repair the stuff of imagination,
ghostly mechanisms that escape the senses. Our work takes place not in RAM,
not in an editor, but within our own minds.

2

É bem por aí.

Os fundamentos da computação não mudam há décadas, ao contrário do framework da moda. Mesmo assim, muita gente parece ignorar o primeiro e só dar atenção ao segundo (o que é um erro, pois se tiver o primeiro, vc aprende o segundo facilmente).

1
1
3
1

Exceto que talvez não, aprenda algo como rust, é muito mais seguro que C e vc vai bater menos a cabeça pra debugar, ou se apenas quiser um C melhor, vá pro zig.

1
1

C foi a linguagem que aprendi a programar, durante um curso, mas não me aprofundei. Comecei a "espiar" Rust recentemente por curiosidade, literalmente em alguns momentos de distração no trabalho. Como não dá pra instalar o compilador no PC da firma, fico brincando no Rust Playground e me guiando pelo Rust by example e pelo Rust cookbook. Tem sido bom pra dar uma olhada, enquanto não dá tempo pra estudá-la mais à sério.

2

Ótimo post! Eu tive a honra de ler esse livro todo, e mesmo tendo varios erros, gsoto muito desse livro. Ele te obriga a aprender e a entender os conceitos na marra. NO mue github, até hoje tem varios dos exercicios descritos dele.
Uma coisa interessante sobre C é que enquanto as pessoas ficam atras de libs ou frameworks, em C focamos no problema, e em desenvolver um algoritmo que resolva isso.
Detesto essa maneira preguiçosa de programarmos hoje, onde tudo tem que ser resolvido com alguma lib, lang, framework ou nova funcionalidade da vez.
Por essas e outras acredito que C e C++ nunca vão morrer e vão ser eternas. Porque quando nada dá resultado ele estará lá pra resolver os problemas mais cabeludos e com performance.

2

Realmente, não era o melhor livro de C da época, mas foi o que me apresentou à linguagem.

Comprei ele em um sebo na Teodoro Sampaio (SP), em 2010, por 20 reais. Tinha uma FNAC na frente do sebo que vendia o mesmo livro por 200...

Sai do sebo com o calhamaço na mão e me sentindo um ganhador da loteria.

Bons tempos: a Teodoro Samapio cheia de sebos,FNACs e Linguagem C. Bons tempos!

2

Bons tempos da saudosa FNAC!
Realemente ele não é um bom livro, mas meio que te obriga a aprender, tem varios codigos nele que não compilam kkkk
Mas ai voce vai na persistencia e conserto erro do livro enquanto aprende!
Amo esse livro também :)