Programação de culto à carga

estilo de programação de computadores caracterizada pela inclusão ritual de código ou estruturas de programa que não servem a um propósito real

A programação de culto à carga é um estilo de programação de computadores caracterizado pela inclusão ritual de código ou estruturas de programa que não servem a nenhum propósito real. A programação de culto à carga é sintomática de um programador não entender um problema que estava tentando resolver ou a solução aparente (compare com depuração de escopeta, e magia profunda).[1] O termo programador de culto à carga pode ser aplicado quando qualquer pessoa inexperiente com o problema em questão copia algum código de programa de um lugar para outro, com pouca compreensão de seu funcionamento ou sem saber se é necessário.

A programação de culto à carga também pode se referir à prática de aplicar um padrão de projeto ou estilo de codificação às cegas, sem compreender as razões por trás desse princípio de projeto. Exemplos são a adição de comentários desnecessários a códigos que são autoexplicativos, a aderência excessiva às convenções de um paradigma de programação ou adicionar código de exclusão para objetos que o coletor de lixo coleta automaticamente.

Verificar obsessivamente e de forma redundante se valores são nulos ou testar se uma coleção está vazia antes de iterar sobre seus valores podem ser um sinal de programação de culto à carga. Essas verificações obsessivas tornam o código menos legível.

Origem editar

 
Culto à carga na Ilha Tanna, Vanuatu

O termo culto à carga como uma expressão idiomática originalmente se referia às religiões aborígenes que cresceram no Pacífico Sul após a Segunda Guerra Mundial. As práticas desses grupos centravam-se na construção de elaboradas maquetes de aviões e pistas de pouso militares na esperança de convocar os seres divinos que chegaram em aviões que trouxeram cargas maravilhosas durante a guerra.[2][3] Nas últimas décadas, a antropologia se distanciou do termo "culto à carga", que agora é visto como tendo sido aplicado de forma redutora a muitos movimentos sociais e religiosos complicados e díspares que surgiram do estresse e do trauma do colonialismo e buscavam alcançar objetivos muito mais variados e amorfos - coisas como autodeterminação - do que carga material.[4]

O uso do termo em programação de computadores provavelmente deriva da caracterização por Richard Feynman de certas práticas como ciência do culto à carga.[3][5]

Engenharia de software de culto à carga editar

Um termo relacionado em engenharia de software é a engenharia de software de culto à carga, cunhado por Steve McConnell.[6]

McConnell descreve as organizações de desenvolvimento de software que tentam emular casas de desenvolvimento mais bem-sucedidas, seja seguindo servilmente um processo de desenvolvimento de software sem entender o raciocínio por trás dele, ou tentando emular uma abordagem de desenvolvimento orientada para o compromisso (na qual os desenvolvedores de software dedicam grande quantidade de tempo e energia para ver seus projetos bem-sucedidos), determinando as longas horas e horas extras não pagas, enquanto em empresas de sucesso isso pode ser consequência de alta motivação em vez de causas de sucesso.

Em ambos os casos, McConnell afirma que, em última instância, a competência determina se um projeto é bem-sucedido ou se fracassa, independentemente da abordagem de desenvolvimento adotada; além disso, ele afirma que "organizações impostoras" incompetentes (que meramente imitam a forma de organizações de desenvolvimento de software bem-sucedidas) estão de fato engajadas no que ele chama de engenharia de software de culto à carga.[3]

Ver também editar

Referências editar

  1. Raymond, Eric S. (1996). «The New Hacker's Dictionary». MIT Press. ISBN 0-262-68092-0 
  2. Bezroukov, Nikolai. «Cargo Cult Programming article». Softpanorama (slightly skeptical) Open Source Software Education Society. Consultado em 25 de março de 2008 
  3. a b c «Cargo Cult Software Engineering». IEEE Software. Março–abril de 2000. Consultado em 24 de maio de 2008 
  4. Jarvis, Brooke (2019). «Who Is John Frum?». Topic 
  5. «Definition of cargo cult programming». Jargon File at jargon.net. Consultado em 25 de março de 2008 
  6. McConnell, Steve (2003). Professional Software Development. [S.l.]: Addison-Wesley. p. 23-26. ISBN 978-0-321-19367-4 

Leitura complementar editar

  • Surely You're Joking, Mr. Feynman!, Richard Feynman, WW Norton & Co, Nova York, 1985, ISBN 0-393-01921-7. Um dos capítulos é a transcrição de um discurso de formatura do Caltech de 1974, que continha a cunhagem de "ciência do culto à carga".
  • Cargo Cult Science, de Richard P. Feynman. Artigo baseado em seu discurso de abertura do Caltech em 1974, com fotos, conforme publicado originalmente em Engineering and Science, Volume 37:7, junho de 1974. Versão digitalizada da Caltech Library, recuperada em 20 de junho de 2007.