Introdução • Capítulo 1

Sobre


Neste livro você aprenderá a linguagem de programação C e ao mesmo tempo também como construir sua própria linguagem de programação, um Lisp mínimo, em menos de 1000 linhas de código! Nós usaremos uma biblioteca para fazer um pouco do trabalho inicial, então estou trapaceando um pouco na questão do número de linhas, mas o resto do código será completamente original, e você terá realmente criado um Lisp poderosinho ao final.

Este livro é inspirado em outros tutoriais que seguem os passos de construir uma linguagem de programação do zero. Escrevi este livro para mostrar que este tipo de projeto divertido e criativo é uma excelente maneira de aprender uma linguagem, e não limitado a linguagens abstratas de alto nível, ou programadores experientes.

Muitas pessoas querem muito aprender C, mas não têm por onde começar. Agora não há desculpa. Se você seguir este livro eu prometo que, na pior das hipóteses, você terá uma nova linguagem de programação para brincar, e talvez você se torne um programador C experiente também!

Para quem é este livro


Este livro é para qualquer pessoa que queira aprender C, ou que alguma vez imaginou como seria construir sua própria linguagem de programação. Este livro não é apropriado como um primeiro livro sobre programação, mas qualquer um com mínima experiência de programação, em qualquer linguagem, deve encontrar algo novo e interessante nele.

ada

Ada Lovelace • Uma típica bro-gramadora.

Tentei fazer este livro o mais amigável possível para iniciantes. Adoro receber os iniciantes, porque eles têm tanto a descobrir! Mas iniciantes podem também achar este livro desafiador. Nós vamos cobrir muitos conceitos novos, e essencialmente aprender duas linguagens ao mesmo tempo.

Se você procurar ajuda de alguém, às vezes pode encontrar pessoas que não são pacientes com você. Pode acabar descobrindo que, em vez de ajudar, elas gastam tempo mostrando o quanto elas sabem sobre o assunto. Programadores experientes podem ficar dizendo que você está errado. A mensagem que eles podem passar é que você devia parar agora, em vez de infligir seu código ruim ao mundo.

Depois de algumas conversas desse tipo, você talvez pense que não é um programador, ou que não gosta de programar, ou que simplesmente não compreende. Pode pensar que em certo momento você curtiu da ideia de construir a própria linguagem, mas agora se deu conta que isso é abstrato demais e que você não se importa mais, que você agora está ocupado com outras coisas, e qualquer ideia de que foi divertido, legal ou interessante agora se tornou um obstáculo.

Sobre isso, eu posso simplesmente pedir desculpa. Programadores podem ser hostis, "machões", arrogantes, inseguros e agressivos. Não existe desculpa para este comportamento. Saiba que estou do seu lado. Ninguém manja no começo. Todo mundo se debate e duvida das próprias habilidades. Por favor não desista ou deixe a alegria ser sugada da sua experiência criativa. Fique orgulhoso do que você crie, não importa o que seja. Pessoas como eu não querem que você pare de programar. Nós queremos ouvir sua voz e o que você tem a dizer.

Por que aprender C


C é uma das linguagens mais populares e influentes no mundo. É a linguagem padrão pra desenvolvimento em Linux, e tem sido usada extensivamente na criação do OS X e em certo âmbito no Microsoft Windows. É usada em microcomputadores também. Sua geladeira e carro provavelmente também rodam ela. Em desenvolvimento de software moderno, o uso de C pode ser escapável, mas seu legado não é. Para qualquer um querendo fazer carreira em desenvolvimento de software, será inteligente aprender C.

fridge

Uma geladeira • Um típico usuário C

Mas C não se trata de desenvolvimento de software e carreiras. C se trata de liberdade. Ficou famosa por trás de tecnologias de colaboração e liberdade - Unix, Linux, e o movimento de software livre. Ela personifica a ideia de liberdade pessoal na computação. Ela te inclina a tomar o controle da tecnologia afetando sua vida.

Nestes dias, em que a tecnologia é mais poderosa que nunca, isso não poderia ser mais importante.

A ideologia de liberdade é refletida na natureza de C propriamente dita. Há pouca coisa que C esconde de você, incluindo suas verrugas e falhas. Há pouca coisa que C impede você de fazer, incluindo quebrar o seu programa de maneiras horríveis. Quando você programa em C, você não anda por um caminho, mas por um plano de decisão, e C desafia você a decidir o que fazer.

C é também a linguagem da diversão e do aprendizado. Antes da mídia mainstream dominar, nós tínhamos uma palavra para isso. Hacking. A filosofia que glorifica o que é divertido e inteligente. Nada a ver com acesso não autorizado ao computador de outras pessoas. Hacking é a filosofia de exploração, expressão pessoal, forçar os limites, e quebrar as regras. Ela se levanta contra hierarquia e burocracia. Ela celebra o indivíduo. Hacking isca você para diversão, aprendizado e glória. Hacking é a promessa que com um computador e acesso à internet, você tem a capacidade de mudar o mundo.

Querer dominar C é se importar com o que é poderoso, inteligente e livre. É tornar-se um programador com todos os vastos poderes da tecnologia na ponta dos seus dedos e a responsabilidade de fazer algo que beneficie o mundo.

Como aprender C


Não tem como esconder que C é uma linguagem difícil. Ela tem muitos conceitos não familiares, e não faz nenhuma tentativa de ajudar um usuário noviço. Neste livro eu não vou cobrir em detalhe coisas como a sintaxe da linguagem, ou como escrever loops e estruturas condicionais.

Por outro lado, eu vou mostrar como construir um programa em C no mundo real. Esta abordagem é sempre mais difícil para o leitor, mas espero que vá ensiná-lo muitas coisas implícitas que uma abordagem tradicional não pode. Não posso garantir que este livro fará de você um usuário confiante de C. O que posso prometer, é que essas 1000 linhas de código vão estar carregadas de conteúdo - e você vai aprender alguma coisa útil.

Este livro consiste de 16 capítulos curtos. Como você vai completá-los, fica a seu critério. É possível passar pelo livro inteiro num fim de semana, ou então ir devagar e fazer um capítulo ou dois a cada noite por uma semana. Não deve tomar muito tempo terminar, e com sorte vai deixá-lo com um gostinho para desenvolver sua linguagem um pouco mais.

Por que construir um Lisp


A linguagem que vamos construir neste livro é um Lisp, que é uma família de linguagens de programação caracterizadas pelo fato que todas as suas computações são representadas por listas. Isso pode soar mais assustador do que realmente é. Lisps são na verdade linguagens muito fáceis, distintivas e poderosas.

mike

Mike Tyson • Um típico usuário Lisp

Construir um Lisp é um excelente projeto por muitos motivos. Ele põe você no lugar de projetistas de linguagens, e lhe dá uma apreciação para o processo inteiro de programar, desde a linguagem até a máquina em si. Ele te ensina sobre programação funcional, e maneiras novas de ver computação. O produto final com que você será recompensado fornece um padrão para futuros pensamentos e desenvolvimentos, dando-lhe um chão inicial para tentar coisas novas. É simplesmente impossível compreender a criatividade e a inteligência que existe em programação e ciência da computação até que você explore as próprias linguagens.

O tipo de Lisp que vamos construir é um que inventei para os objetivos deste livro. Eu o projetei tendo em vista minimalismo, simplicidade e clareza, e fui me afeiçoando a ele ao longo do caminho. Espero que você venha a gostar dele também. Conceitualmente, sintaticamente, e na implementação, este Lisp tem uma série de diferenças para outras grandes marcas de Lisp. Tanto que tenho certeza que acabarei recebendo e-mails de programadores Lisp me dizendo que ele não é um Lisp porque não tem/faz/se-parece-com isto ou aquilo.

Não fiz este Lisp diferente para confundir iniciantes. Fi-lo diferente porque diferente é legal.

Se você está buscando aprender sobre a semântica e comportamento dos Lisps convencionais, e como programá-los, este livro pode não ser pra você. O que este livro oferece no lugar é conceitos novos e únicos, expressão própria, criatividade e diversão. Qualquer que seja sua motivação, atente a este aviso agora. Nem tudo que eu digo será objetivamente correto ou verdade! Você terá que decidi-lo por si mesmo.

Seu próprio Lisp


A melhor maneira de seguir este livro é, como o título diz, escrever seu próprio Lisp. Se você se sente suficientemente confiante, quero que adicione seus próprios recursos, modificações e mudanças. Seu Lisp deve se adequar a você e sua própria filosofia. Ao longo do livro oferecerei descrições e discernimento, mas juntamente fornecerei bastante código. Isto vai tornar fácil de acompanhar junto copiando e colando cada seção do seu programa sem realmente entender. Por favor não faça isso!

Digite cada pedaço de exemplo de código você mesmo. Isto se chama O Jeito Difícil. Não porque seja difícil tecnicamente, mas porque requer disciplina. Fazendo as coisas do Jeito Difícil você vai entender o raciocínio por trás do que está digitando. Idealmente as coisas irão clicando à medida que você segue adiante caractere por caractere. Ao apenas ler você pode ter uma intuição de por que parece certo, ou o que talvez esteja acontecendo, mas isto não vai sempre se traduzir em entendimento real a não ser que você mesmo escreva!

Em um mundo perfeito, você usaria meu código como referência - um folheto de instrução e guia para construir a própria linguagem de programação que sempre sonhou. Na realidade isso não é prático ou viável, mas a filosofia básica permanece. Se quiser mudar alguma coisa, vá em frente e mude.

Navegação

• Conteúdo •

Instalação ›