Código estados completos que você deve código de brindes em uma linguagem em oposição ao código no mesmo. Com isso, eles querem dizer
Não limite seu pensamento de programação apenas aos conceitos que são suportados automaticamente pelo seu idioma. Os melhores programadores pensam no que querem fazer e depois avaliam como atingir seus objetivos com as ferramentas de programação à sua disposição. (capítulo 34.4)
Isso não leva ao uso de um estilo de programação em todas as linguagens existentes, independentemente dos pontos fortes e fracos da linguagem em questão?
Ou, para colocar a pergunta em um formato mais responsável:
Você sugeriria que alguém tentasse codificar o problema da maneira mais clara possível com os detalhes de sua linguagem ou deveria procurar a solução mais elegante em geral, mesmo que isso signifique que você precise implementar construções possivelmente constrangedoras que não existem nativamente na linguagem de alguém?
fonte
Respostas:
Existe uma abordagem ainda melhor: esqueça a sua patética linguagem de programação fixa. Codifique seu problema em uma linguagem que você acabou de inventar, derivada dos próprios termos do domínio do problema relevante, codifique-o da maneira mais natural possível e só então pense em implementar essa nova linguagem de programação ou reduzir seu código às limitações do idioma existente.
Essa abordagem é chamada de programação orientada a linguagem . Existem muitas técnicas de implementação eficiente de linguagens específicas de domínio , e esse é um tópico especialmente importante para a comunidade Ruby.
fonte
Acredito na resposta correta, e a pretendida pelo livro é:
Ao programar em uma linguagem, sempre presumi que fosse usar técnicas fora do estilo normal da linguagem , o que levaria a um benefício . Essa é a principal diferença para escrever em um estilo em todos os idiomas.
Por exemplo, aprender Haskell melhorou bastante minha habilidade no uso de funções de ordem superior. Agora, ao programar em c #, uso vários
IEnumerable
métodos, comoSelect
mais frequentemente, pois o uso desses métodos leva a um código mais limpo do que a criação de loops. Também costumo usar as funções pass e use (ieFunc<int, int>
) com mais frequência devido à minha experiência com haskell. Meu uso da herança caiu devido a isso e, na maioria das vezes, o resultado é um código mais simples.No entanto, não uso conceitos como mônadas ou tipos de dados algébricos em c #. Isso ocorre porque nenhum deles é claramente representável em c # e leva a pouco benefício em troca de muita obscuridade.
Então, eu uso as ferramentas da linguagem para usar as habilidades que tenho para o melhor efeito. Eu acredito que está programando na linguagem.
fonte
O ponto é que bons programadores não têm uma linguagem. A citação do livro fala sobre "ferramentas de programação à sua disposição" - ou seja, se você conhece perl e Java, talvez deva usar perl para a manipulação rápida de strings. Linguagens de programação não são caixas para nos limitar, mas ferramentas que usamos para resolver problemas. Isto é (imo) o que o Code Complete está chegando. Não codifique em uma caixa de linguagem / ambiente de programação, coloque a melhor solução na melhor linguagem / ambiente de programação para você, seu problema e sua solução.
fonte