Curiosity e suas 2,5 milhões de linhas de código
Após o sucesso do pouso da Curiosity, fiquei imaginando em que linguagem de programação foi utilizada, principalmente, no módulo de pouso. Meu palpite era na linguagem C, e depois de algumas pesquisas no Google, pude confirmar minhas suspeitas.
Agora, por que os programas rodam tão bem, visto que o computador (um RAD750) é bem modesto e são cerca de 2,5 milhões de linhas de código?
O primeiro ponto a ser observado é o sistema operacional. A nave usa o VxWorks. Talvez você não conheça o VxWorks pelo nome mas com certeza já utilizou algum produto que o utiliza. Veja a lista de produtos que usam este sistema operacional - é auto-explicativa.
O segundo ponto, são as regras de codificação seguidas, das quais destaco (são 31 regras no total):
Fonte: JLOUIS Ramblings
Agora, por que os programas rodam tão bem, visto que o computador (um RAD750) é bem modesto e são cerca de 2,5 milhões de linhas de código?
O primeiro ponto a ser observado é o sistema operacional. A nave usa o VxWorks. Talvez você não conheça o VxWorks pelo nome mas com certeza já utilizou algum produto que o utiliza. Veja a lista de produtos que usam este sistema operacional - é auto-explicativa.
- Veículos Mars Exploration Rover: Spirit e Opportunity
- Mars Reconnaissance Orbiter
- Sonda espacial Deep Impact
- Stardust
- O avião Boeing 787
- O sistema iDrive da BMW
- Roteador wireless Linksys WRT54G (versões 5.0 e posterior)
- Impressoras Xerox Phaser e outras impressoras PostScript
- Experimental Physics and Industrial Control System (EPICS)
- DIGIC II processador de imagens da Canon
- SO-2510 telefone a satélite da Thuraya
- Apache Longbow helicóptero de ataque
- ALR-67(V)3 Radar usado no A/F-18
- HN7000 receptores de internet a satélite da Hughesnet
- Mitel ICP 3000 IP PBX
- Nortel Succession 1000
- Controladores de Robos da KUKA
- Módulos Siemens NCUI e HG1500
- Dvr Honeywell Rapid-Eye
O segundo ponto, são as regras de codificação seguidas, das quais destaco (são 31 regras no total):
- Utilizar funções com poucas linhas de código, para tornar o código simples e compreensível;
- Evitar o uso de recursão;
- Verificar o fim dos loops;
- Não utilizar alocação dinâmica de memória (após a inicialização);
- Checar valor de retorno das funções;
- Checar os parâmetros das funções.
Ou seja, nada demais: simplesmente clareza no código e cuidado na programação.
Comentários
Postar um comentário