quinta-feira, outubro 15, 2009

Eletrônica e programação são muito parecidas

A Eletrônica e a programação são dois hobbies que eu tenho. E como não podia deixar de ser, eu vejo muitas semelhanças nas duas. Especialmente no modo de fazer as coisas.

A montagem usando somente componentes discretos (resistores, capacitores, diodos, transistores, etc) faz o teu circuito ficar muito grande, dá muito trabalho para ser projetado adequadamente, custa muito caro e algumas vezes é inviável desenvolver somente com componentes discretos.

O circuito é muito suscetível a erros, a manutenção é mais complicada.

Isso é o equivalente da programação em assembly. Não é prático desenvolver um programa muito grande totalmente em assembly. Já pensaste um software de CRM, como o SAP, totalmente escrito em assembly? O Oracle? O Linux?

Na montagem que além dos componentes discretos use circuitos integrados com baixa escala de integração (ex. amplificadores operacionais e portas lógicas da família 74XX ou 4XXX) são mais fáceis de serem feitas, uma vez que temos uma "biblioteca básica" (um amplificador operacional 741, por exemplo, contém 20 transistores e 11 resistores e ocupa apenas 0.400 x 0.290 x inches).

Esse tipo de montagem, para mim, é equivalente a programar em C. Temos uma casquinha sobre o assembly, que facilita em muito o desenvolvimento e não nos afasta muito das "entranhas do bicho".

Quando partimos para montagens que usam circuitos integrados mais especializados, como os amplificadores de áudio, circuitos de sincronismo horizontal e vertical de televisores, entre outros, o tamanho das placas vai diminuindo, assim como a complexidade e o tempo de desenvolvimento. Faço uma analogia desta situação com o uso do Java.

Quanto mais especializados os circuitos integrados que utilizamos, mais nos aproximamos dos frameworks e linguagens de alto nível (Ruby on Rails, por exemplo).

Essa analogia não é perfeita, mas me faz pensar na coincidência: gosto mais de programar em C e em Assembly do que com linguagens de mais alto nível. Do mesmo modo, gosto mais de fazer montagens com os componentes discretos e com os CIs básicos (amplificadores operacionais e as portas lógicas) do que utilizar circuitos mais especializados.

Não sou xiita. Quando se faz necessário uso linguagens de alto nível na programação e uso CIs especializados (microcontroladores, por exemplo) na Eletrônica.

Diferente da programação, onde assembly normalmente significa código mais eficiente, na Eletrônica isso não é verdade.

O custo inicial para desenvolver profissionalmente programas de computador costuma ser muito menor do que o necessário para o desenvolvimento na eletrônica.

Outro ponto que a programação e a Eletrônica diferem é no reaproveitamento do que foi criado. Uma biblioteca uma vez feita criada está disponível sempre. Custo zero. Na Eletrônica, cada novo projeto vem com um custo mínimo de aquisição dos componentes (que muitas vezes não é tão mínimo assim).

Eu resumi tudo em uma tabela.



EletrônicaSoftware
baixo nível
componentes discretos
Linguagem assembly
nível intermediário
componentes discretos e CIs de baixa escala de integração
Linguagem C
alto nível
CIs especializados, como circuitos de áudio e de sincronismo vertical e horizontal.Java / C#
nível muito alto
CIs muito especializados
Ruby on Rails
custo inicial para desenvolver profissionalmente
Muito alto
Baixo a médio
redução de custos por reaproveitamento de bibliotecas
Não muito
Muito alto

Tu já havias pensado nessas coisas? Ou será que sou só eu?

Vou parar de divagar por enquanto. Quando achar novas semelhanças, escreverei de novo.

Nenhum comentário: