Arquivo mensais:abril 2010

Boa nova

ATENÇÃO: Este conteúdo foi publicado há 7 anos. Eu talvez nem concorde mais com ele. Se é um post sobre tecnologia, talvez não faça mais sentido. Mantenho neste blog o que escrevo desde os 14 anos por motivos históricos. Leia levando isso em conta.

Resolvi fazer Ciência da Computação há muito tempo. Faz tanto tempo que eu não lembro quando foi, mas acho que eu tinha uns oito anos. Minha única certeza é que eu não fazia ideia do que era o curso (mas isso não importa — hoje acho que escolhi estudar uma das coisas mais legais que existem).

O tempo passou e cogitei fazer outras faculdades, mas nunca seriamente. Começou o 3º ano do Ensino Médio e comparei os currículos de UFSC, UNICAMP, ICMC-USP e IME-USP pra decidir que curso escolher. Ordenei-os (por motivos teóricos) da seguinte forma:

  1. IME-USP
  2. ICMC-USP
  3. IC-UNICAMP (engenharia)
  4. UFSC

Desde lá minha meta foi entrar no lugar onde hoje, felizmente, estou. Mas não foi fácil.

Passei o último ano do Ensino Médio namorando estudando, li os resumos dos livros exigidos e quando chegou novembro… não passei na primeira fase do vestibular da Fuvest.

(Felizmente passei na UFSC e vivi um ano sensacional. Morava do lado da Universidade, fiz grandes amigos, conheci professores do mais alto nível, me classifiquei pra final mundial da Maratona de Programação e aprendi mais Matemática do que em toda a vida. Mas nem todos têm a mesma sorte.)

O vestibular da USP usa um terrível sistema baseado em carreiras.

Def. Carreiras são conjuntos disjuntos não-vazios de cursos universitários que em geral tem algo em comum (e.g., uma carreira pode ter Engenharia de Produção e Ciência da Computação porque ambos são cursos pra seres humanos — não sei se poderia haver alguma outra razão mais específica, sem ser através da Lei dos Cinco, mas creio que não).

No sistema da USP o candidato escolhe uma carreira, cursos que gostaria de fazer nessa carreira e sua ordem de preferência.

Passam pra segunda fase do vestibular três vezes o número de vagas disponíveis na carreira. Depois da segunda fase, os candidatos são ordenados de acordo com a nota da segunda fase e roda-se um algoritmo assim:

1
2
3
4
5
6
7
8
for (int pos = 0; tem_vagas_sobrando() && pos < n; pos++) {
    for (int opcao = 0; opcao < 4; opcao++) {
        if (tem_vagas_no_curso(pessoa[pos].opcao[opcao])) {
            da_vaga(pessoa[pos], pessoa[pos].opcao[opcao]);
            break;
        }  
    }  
}

Estava com sono e dificuldade de pensar quando postei. Outra hora tento passar pra uma língua menos nerd.

São os institutos que decidem em que carreira seus cursos vão entrar e o negócio fica uma bagunça. A maioria das carreiras têm cursos iguais com diferença apenas de período (diurno e noturno), mas há carreiras de institutos inteiros (a FEA, por exemplo, tem apenas uma carreira onde coloca Economia [diurno e noturno], Administração [diurno e noturno], Ciências contábeis [diurno e noturno] e Bacharelado em Ciências Atuariais), de cursos iguais em diferentes campi (na carreira de Direito, por exemplo, o candidato pode escolher entre o Largo São Francisco e Ribeirão Preto) e, por fim, carreiras como a minha: Engenharia na Escola Politécnica e Computação, que oferece (versão Fuvest 2010):

  • Engenharia Civil e Engenharia Ambiental (poli)
  • Engenharia Elétrica (ênfases: Automação e controle, energia e automação elétricas, sistemas eletrônicos, telecomunicações) (poli)
  • Engenharia Mecânica e Engenharia Naval (poli)
  • Engenharia Química, Engenharia Metalúrgica, Engenharia de Materiais, Engenharia de Minas e Engenharia de Petróleo (poli)
  • Engenharia de Computação e Engenharia Elétrica (ênfase Computação) (poli)
  • Engenharia Mecânica – Automação e Sistemas (Mecatrônica) (poli)
  • Engenharia de Produção (poli)
  • Bacharelado em Ciência da Computação (IME!)

Reza a lenda que essa era uma carreira que tinha todos os cursos que classificam como Exatas (uma classificação ridícula, na minha opinião) e todos eles foram saindo, até que no meu ano sobraram só as engenharias da Poli e o BCC.

(E eu prefiro acreditar nisso porque me doeria acreditar o contrário — aceitar que em certo momento da História algum idiota professor decidiu que Ciência da Computação tem mais a ver com Engenharia Ambiental do que com Matemática.)

Agora veja o problema: Em um ano aqui, aprendi que trabalhar em bancos está na moda em São Paulo. Como se formar em engenharia na Escola Politécnica é garantia desse nobre emprego, fazem um monte de cursinhos (e turmas especiais neles) voltados a destruir o cérebro das ensinar crianças (o link é bom; clique!) pra jihad passar na Fuvest. O resultado é que um catarinense que quer entrar no Bacharelado em Ciência da Computação não consegue nem passar da primeira fase do concurso. Se passa pra segunda fase, ainda assim precisa competir com estudantes que colocaram o BCC na quarta opção para não decepcionar os pais e seu ego caso não passem nas três engenharias que desejam.

E não para por aí.

O BCC abre 50 vagas por ano e neste ano matricularam-se 31 calouros. Os alunos da turma (para a qual dou monitoria da disciplina Introdução à Computação) me contaram que tem 26 pessoas indo assistir as aulas. Enquanto há jovens no Brasil inteiro querendo entrar neste curso, que considero um dos melhores (se não o melhor) do país, a sala da turma de 2010 está com metade de sua capacidade porque gente que queria fazer engenharia marcou a opção do BCC e não fez a matrícula.

A solução imediata é óbvia: tirar o Bacharelado em Ciência da Computação da carreira da Escola Politécnica.

Felizmente, não sou o único que penso isso. Então, após todo esse preâmbulo, informo em primeira mão: a Congregação do Instituto de Matemática e Estatística, em sessão ordinária realizada hoje (29/04) da qual tive o enorme prazer de participar, aprovou por unanimidade essa decisão, que já havia sido aprovada (também por unanimidade) dentro do Departamento de Computação.

Será criada nesse ano na Fuvest uma carreira chamada “Bacharelado em Ciência da Computação”, que a princípio terá 50 vagas, mas para a qual será convidado o Bacharelado em Ciência da Computação do ICMC-USP (São Carlos).

A decisão é fantástica e será fundamental pra vida de diversos futuros estudantes desta faculdade. Já estou ansioso pelo ano que vem…

Coordenadas homogêneas

ATENÇÃO: Este conteúdo foi publicado há 7 anos. Eu talvez nem concorde mais com ele. Se é um post sobre tecnologia, talvez não faça mais sentido. Mantenho neste blog o que escrevo desde os 14 anos por motivos históricos. Leia levando isso em conta.

Conheci as coordenadas homogêneas por acaso. Era 2004, ganhei a modalidade iniciação da Olimpíada Brasileira de Informática e passei o inverno estudando C, acho que por dois motivos: interesse pelos problemas da modalidade programação e desejo de aproveitar bem o curso que os medalhistas fazem na UNICAMP; ou talvez fosse apenas falta do que fazer ou curiosidade mesmo. Não importa.

Confundo os cursos de 2004, 2005 e 2006, mas lembro que no primeiro aprendi com um monitor sobre recursão, representação de grafos e busca em profundidade. Lembro também que foi em 2004 que conheci o CLRS (livro que comprei alguns meses depois e tenho na cabeceira até hoje). Esse post, porém, é sobre um acontecimento mais aleatório relacionado a esse curso e, ouso afirmar, digno de figurar n’O Andar do Bêbado do Mlodinow.

O pessoal da modalidade programação ia tirar cópias de um livro do Stolfi e do Rezende, chamado “Fundamentos de Geometria Computacional” (dá pra baixar aqui). Nem sabia do que estavam tirando xerox, mas vi que era barato e que todos os mais velhos estavam querendo, então também pedi.

Folheei o livro, não entendi nada, deixei num canto e voltei a abrir alguns anos depois, não lembro exatamente quando. E foi aí que fez-se a luz. A primeira parte é sobre coordenadas homogêneas.

Coordenadas homogêneas? A ideia parece simples (até demais) pra ser poderosa. Basicamente você representa uma coordenada em (X, Y) \in \mathbb{R}^2 com uma tripla ordenada [w, x, y] tal que x = \frac{X}{w} e y = \frac{Y}{w}. A reta tem a mesma representação.

1
2
3
4
5
struct ponto {
	int w, x, y;
};
 
typedef ponto reta;

E o que isso tem demais? Você deixa de precisar de pontos flutuantes pra maioria das operações geométricas; ganha pontos no infinito (eles são a interseção entre retas paralelas!) que permitem fazer fórmulas sem preocupação com casos especiais, usar a mesma fórmula pra determinar uma reta gerada por dois pontos ou por um ponto e um vetor etc.; tem representações iguais (e dualidade) entre pontos e retas (e.g. interseção entre retas p e q = reta determinada por pontos p e q); e mais um monte de outras coisas.

Uau! Como eu não ouvi falar disso antes? Eu não sei a razão, mas, embora tenham várias vantagens, as coordenadas homogêneas não são muito populares na universidade, nem entre os maratonistas. No entanto, são usadas em projetos grandes que usam muita geometria (e.g. OpenGL).

Quero código! Vou mostrar como resolvi o problema Symmetry (2002 TopCoder Inv Round 4 – Division I, Level Three).

O enunciado é simples: Dados n (2 \leq n \leq 200) pontos inteiros (com coordenadas de -10000 a 10000) determinar quantas linhas de simetria existem entre eles.

Dá pra fazer em O(n^3) com a seguinte ideia:

  1. Crie uma árvore binária balanceada indexada por retas. (em C++, map <reta,int>)
  2. Para cada par de pontos, determine a reta de simetria entre eles e adicione 2 a essa reta na árvore binária. (O(n^2 log n))
  3. Para cada reta na árvore binária, adicione 1 para cada ponto que pertence a essa reta. (O(n^3))
  4. É fácil ver que a reta é uma reta de simetria do conjunto de pontos se e somente se seu valor na árvore binária for n.

O problema geométrico está no segundo passo: determinar a reta de simetria entre dois pontos. Sejam esses pontos p e q. É preciso:

  1. Determinar o ponto médio entre p e q.
  2. Determinar a reta que passa por p e q (o enunciado garante que p != q).
  3. Determinar uma reta (ou um vetor) perpendicular à reta do passo acima.
  4. Determinar a reta que passa pelo ponto médio e tem a direção do vetor perpendicular do passo 3.

Determinar o ponto médio sem usar ponto flutuante seria trivial de qualquer forma (basta multiplicar todas as coordenadas por dois), mas com coordenadas homogêneas isso é desnecessário. É fácil ver que o ponto médio m entre p = [w_0, x_0, y_0] e q = [w_1, x_1, y_1] é:

m = [ 2 w_0 w_1 , w_1 x_0 + w_0 x_1 , w_1 y_0 + w_0 q_1 ]

1
2
3
ponto ponto_medio(ponto p, ponto q) {
	return (ponto) { 2*p.w*q.w, q.w*p.x+q.x*p.w, q.w*p.y+q.y*p.w };
}

Três pontos [w_0, x_0, y_0], [w_1, x_1, y_1], [w_2, x_2, y_2] são colineares se

 \left| \begin{array}{ccc} w_0 & x_0 & y_0 \\ w_1 & x_1 & y_1 \\ w_2 & x_2 & y_2 \end{array} \right| = 0 ,

o que nos permite concluir que a reta r = \langle W, X, Y \rangle que passa por p = [ w_0, x_0, y_0 ] e q = [ w_1, x_1, y_1 ] é:

r = \langle +x_0 y_1 - y_0 x_1, -w_0 y_1 + w_1 y_0, w_0 x_1 - w_1 x_0\rangle.

1
2
3
ponto reta_determinada_por(ponto p, ponto q) {
	return (reta) { +p.x*q.y-q.x*p.y, -p.w*q.y+q.w*p.y, +p.w*q.x-q.w*p.x };
}

(um ponto [w, x, y] pertence a r se Ww + Xx + Yy = 0)

1
2
3
int ponto_na_reta(ponto p, reta r) {
	return p.w*r.w + p.x*r.x + p.y*r.y == 0;
}

Agora a parte mais legal: a fórmula para determinar uma reta que passa por dois pontos funciona com pontos no infinito (pensemos em pontos no infinito como vetores, porque eles tem direção mas tem w = 0): o resultado é a reta determinada por um ponto e uma direção. O vetor perpendicular à reta \langle W, X, Y \rangle é [ 0, X, Y ].

1
2
3
ponto ponto_infinito_na_reta_perpendicular(reta r) {
	return (reta) { 0, r.x, r.y };
}

E isso é tudo. Agora basta criar uma representação única da reta pra guardar na árvore binária.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
reta reformata_reta(reta r) {
	if (r.w < 0) {
		r.w = -r.w;
		r.x = -r.x;
		r.y = -r.y;
	} else if (r.w == 0) {
		if (r.x < 0) {
			r.x = -r.x;
			r.y = -r.y;
		} else if (r.x == 0 && r.y < 0) {
			r.y = -r.y;
		}
	}
	int d = gcd(r.w, gcd(abs(r.x), abs(r.y)));
	return (reta) { r.w/d, r.x/d, r.y/d };
}

Usando essas funções, primeiro e segundo passos da solução são:

map <reta,int> M;
for (int i = 0; i < n; i++) {
	for (int j = i+1; j < n; j++) {
		reta s = reformata_reta(reta_determinada_por(P[i], P[j]));
		ponto pm = ponto_medio(P[i], P[j]);
		ponto dir = ponto_infinito_na_reta_perpendicular(s);
		reta r = reformata_reta(reta_determinada_por(pm, dir));
		if (M.find(s) == M.end())
			M[s] = 0;
		if (M.find(r) == M.end())
			M[r] = 0;
		M[r]+= 2;
	}
}

Terceiro e o quarto são:

1
2
3
4
5
6
7
8
int output = 0;
for (map <reta,int>::iterator i = M.begin(); i != M.end(); i++) {
	for (int j = 0; j < n; j++)
		if (ponto_na_reta(P[j], i->first))
			i->second++;
	if (i->second == n)
		output++;
}

O código completo ficou com umas 90 linhas com comentários e linhas em branco e foi aceito na primeira submissão (ok, na verdade na segunda, mas não foi devido à geometria muito menos à precisão): symmetry.cpp. Não é lindo?

Sobre piratas e consciência de classe

ATENÇÃO: Este conteúdo foi publicado há 7 anos. Eu talvez nem concorde mais com ele. Se é um post sobre tecnologia, talvez não faça mais sentido. Mantenho neste blog o que escrevo desde os 14 anos por motivos históricos. Leia levando isso em conta.

“Certa vez, disseram a Eston que Jaime I da Inglaterra havia lhe oferecido o perdão. ‘Por que eu deveria obedecer às ordens de um rei’, perguntou ele, ‘quando eu mesmo sou uma espécie de rei?’ Este gracejo nos lembra vários discursos registrados na General History of the Pyrates, de Defoe, que insinua a existência de uma ‘ideologia pirata’ (se este não é um termo pretensioso demais), uma atitude meio proto-individualista-anarquista, embora não-filosófica, que parece ter inspirado os bucaneiros e corsários mais inteligentes e com mais consciência de classe. Defoe relata que um pirata conhecido como capitão Bellamy fez este discurso para o capitão de um navio mercante que ele tinha capturado. O capitão do navio mercante havia acabado de recusar um convite para se juntar aos piratas:

Lamento que eles não te deixem ter tua chalupa de volta, porque eu não faço mal a quem quer que seja quando não é para meu próprio proveito. A chalupa que se dane, temos que afundá-la, e ela poderia ser útil a ti. Tu és um banana dissimulado, como o são todos que se submetem a serem governados por leis que os ricos fizeram para a própria segurança deles, e os malcriados covardes não têm a coragem, por outro lado, de defender o que conseguem por meio de logro. Mas que se danem: dane-se o bando de velhacos astutos, e vós, que estais a serviço deles, ó bando de mariquinhas estúpidos. Eles nos difamam, aqueles salafrários, quando só temos esta diferença: a de que eles roubam dos pobres sob a proteção da lei, sem dúvida, e nós espoliamos os ricos sob a proteção de nossa própria valentia. Não seria melhor então tu seres um de nós do que ires bajular aqueles patifes para conseguir emprego?

Quando o capitão respondeu que sua consciência não permitiria que ele infringisse as leis de Deus e dos homens, o pirata Bellamy continuou:

Tu tens uma consciência diabólica, ó velhaco. Eu sou um príncipe livre, e tenho tanta autoridade para travar guerra contra o mundo todo quanto quem tem cem navios no mar e um exército de cem mil homens nos campos. E isto minha consciência me diz: não adianta argumentar com covardes lamurientos que permitem que seus superiores os saiam chutando pelo convés à vontade.

Peter Lamborn Wilson, “Utopias piratas: mouros, hereges e renegados”, página 52 na tradução da Editora Conrad (2001)

Illich sobre a bicicleta

ATENÇÃO: Este conteúdo foi publicado há 7 anos. Eu talvez nem concorde mais com ele. Se é um post sobre tecnologia, talvez não faça mais sentido. Mantenho neste blog o que escrevo desde os 14 anos por motivos históricos. Leia levando isso em conta.

“O homem move-se com eficácia sem ajuda de qualquer aparelho. Faz caminho a caminhar. A locomoção de cada grama do seu próprio corpo ou da sua carga, por cada quilômetro percorrido em cada dez minutos, consome-lhe 0,75 calorias. Comparando-o a uma máquina termodinâmica, o homem é mais rendível que qualquer veículo motorizado, que consome pelo menos quatro vezes mais calorias no mesmo trajecto. Além disso, é mais eficiente que todos os animais de peso comparável. […]

O homem inventou, há um século, uma máquina que o dotou de uma eficiência maior ainda: a bicicleta. Tratava-se de uma invenção cheia de novidade, à base de materiais novos, impensados nos tempos do jovem Marx e combinados numa engenhosa tecnologia. […] Com a bicicleta o homem ultrapassa o rendimento possível de qualquer máquina e de qualquer animal evoluído.

Além disso, a bicicleta não ocupa muito espaço. Para que 40 000 pessoas possam cruzar uma ponte numa hora movendo-se a 25 km por hora, é necessário que aquela tenha 138 m de largura se viajarem de automóvel, 38 m se viajarem de autocarro e 20 m se o fizerem a pé; em contrapartida, se forem de bicicleta, a ponte não necessita mais de 10 m de largura. Só um sistema hipermoderno de comboios rápidos a 100 km por hora e sucedendo-se a intervalos de 30 segundos conseguiria passar aquela quantidade de gente por uma ponte semelhante no mesmo tempo.

Não apenas em movimento, mas também estacionado, existe uma diferença enorme entre o espaço que ocupa o veículo potencialmente rápido e a bicicleta. No espaço em que se encontra 1 automóvel cabem 18 bicicletas. Para saírem dos parques de estacionamento de um estádio, 10 000 pessoas em bicicleta necessitam de uma terça parte do tempo que precisa o mesmo número de pessoas que utilizam autocarros.

Com bicicleta o homem pode cobrir uma distância anual superior, dedicando-lhe no total menos tempo e exigindo menos espaço para o fazer e muito pouca inversão de energia física que não seja parte do seu próprio ciclo vital.

Além disso, as bicicletas são baratas. Com uma fracção das horas de trabalho que a compra do automóvel exige ao gringo, o chinês, ganhando um salário muito mais baixo, compra a sua bicicleta, que lhe dura toda a vida, ao passo que o automóvel, quanto mais barato, mais depressa tem de ser substituído. O mesmo se pode dizer a propósito das estradas. Quanto maior for o número de cidadãos que se desloquem de automóvel para as suas casas, tanto mais se corrói o território nacional. O automóvel está, inevitavelmente, ligado à estrada, o que não acontece com a bicicleta. O ciclista, quando não pode ir montado na bicicleta, empurra-a. O raio diário de trajectos aumenta para todos por igual, sem que por isso diminua para o ciclista a intensidade de acesso. O homem que dispõe de uma bicicleta converte-se em dono dos seus próprios movimentos, sem estorvar o vizinho. Se há quem pertenda que em matéria de circulação é possível conseguir algo de melhor, tem agora oportunidade de o provar.

A bicicleta é um invento da mesma geração que criou o veículo a motor, mas as duas invenções são símbolos de avanços feitos em direcções opostas pelo homem moderno. A bicicleta permite a cada um controlar o emprego da sua própria energia; o veículo a motor, inevitavelmente, torna rivais entre si os utentes, por causa da energia, do espaço e do tempo. No Vietname, um exército hiperindustrializado não conseguiu derrotar um povo que se desloca à velocidade da bicicleta. Isto deveria fazer-nos meditar: talvez a segunda forma do emprego da técnica seja superior à primeira. Naturalmente, fica ainda por ver se os vietnamitas do Norte estão dispostos a permanecer dentro dos limites de velocidade que são os únicos capazes de respeitar os próprios valores que tornaram possível a sua vitória. Até ao momento presente, os bombardeiros americanos privaram-nos de gasolina, de motores, de estradas, e origaram-nos a empregar uma técnica também moderna, muito mais eficaz, equitativa e autónoma do que aquela que Marx poderia ter imaginado. Falta agora ver se, em nome de Marx, não se vão lançar numa industrialização quantititativamente tão superior àquilo que Marx pôde prever que se torne impossível a aplicação dos ideais por ele formulados.”

Ivan Illich, “Energia e Equidade” (dezembro/1973), página 70 na tradução da Editora Sá de Costa (1ª edição, Portugal, 1975)

Limite de velocidade (mais um fragmento illichiano)

ATENÇÃO: Este conteúdo foi publicado há 7 anos. Eu talvez nem concorde mais com ele. Se é um post sobre tecnologia, talvez não faça mais sentido. Mantenho neste blog o que escrevo desde os 14 anos por motivos históricos. Leia levando isso em conta.

“A ordem de grandeza em que se coloca o ponto limite crítico da velocidade é demasiado baixa para ser levada a sério pelo utente e demasiado alta para afectar o camponês. Deste modo situa-se para ambos no ponto cego do seu campo visual. Ao camponês parecer-lhe-ia voar como um pássaro se pudesse trasladar-se de casa para um campo a 25 km de distância numa hora ou em menos, enquanto que o utente esquece que a enorme maioria dos habitantes de Londres, Paris, Nova York e Tóquio empregam mais de uma hora por cada 10 km de deslocação. O facto de a velocidade crítica para a circulação estar situada no ponto cego comum ao campo visual do utente e do camponês é o que torna tão difícil apresentar o assunto à discussão pública. O utente está intoxicado pelo consumo de altas doses de energia industrial e toca-se-lhe num nervo vivo ao tocar o ponto, enquanto que o camponês não vê razão para se defender de algo que desconhece.

A esta dificuladde geral para politizar o assunto das velocidades acresce outro obstáculo ainda mais evidente. O utente dos transportes não é apenas cliente das estradas. É quase sempre um homem moderno, o que quer dizer que também é cliente vinculado a outros sistemas públicos, tais como a escola, o hospital e o sindicato. Está condicionado a acreditar que só os especialistas podem compreender o porquê das ‘características técnicas’ segundo as quais os sistemas funcionam: só o médico lhe pode identificar e curar a febre, e só o professor diplomado lhe sabe ensinar o filho a ler. Está também acostumado a confiar nos especialistas e em que só eles compreendar por que é que o comboio suburbano parte às 8.15 e às 8.41, ou por que é que os automóveis se têm de tornar cada vez mais complexos e caros sem que para ele melhore a circulação. A ideia de que por um processo político se poderia encontrar uma característica técnica tão elementar como a ‘velocidade crítica’, aqui em estudo, parece-lhe fruto da imaginação ingénua de um avô, de um inculto, de um luddita ou de um demagogo irresponsável. O seu respeito pelo especialista que não conhece transformou-se em cega submissão às condições por aquele estabelecidas. A mistificação própria e típica do homem-cliente é o segundo obstáculo para o controle popular da circulação.

Existe um terceiro obstáculo à construção da circulação: tal reconstrução por iniciativa maioritária é potencialmente um exclusivo social. Se num só campo maior as massas chegassem a entender até que ponto foram fantoches de uma ilusão tecnológica, a mesma mutação de consciência poderia facilmente estender-se a outros campos. Se fosse possível identificar publicamente o valor natural máximo para as velocidades veiculares, como condição para o trânsito óptimo, seriam então muito mais fáceis análogas intervenções públicas na tecnostrutura. A estrutura institucional total está tão integrada, tão tensa e frágil, que a partir de qualquer ponto crítico se pode produzir um despenhamento. Se o problema do trânsito se pudesse resolver por meio de intervenção popular e sem referência ao especialista no campo do transporte, poder-se-ia então aplicar o mesmo tratamento aos problemas da educação, da saúde, do urbanismo e até das igrejas e dos partidos. Se, para todos os efeitos e sem ajuda de especialistas, os limites críticos de velocidade fossem determinados por assembleias representativas do povo, atingir-se-iam então as próprias bases do sistema político. Deste modo, a investigação que proponho é fundamentalmente política e subversiva.”

Ivan Illich, “Energia e Equidade” (dezembro/1973), página 67 na tradução da Editora Sá de Costa (1ª edição, Portugal, 1975)