Pressupostos de programação incorretos e antigos [fechados]


281

Estou pesquisando erros comuns e suposições ruins feitas por engenheiros de software júnior (e talvez sênior).

Qual foi sua suposição mais antiga que acabou sendo corrigida?

Por exemplo, eu entendi errado que o tamanho de um número inteiro não é um padrão e, em vez disso, depende do idioma e do destino. Um pouco embaraçoso para afirmar, mas está aí.

Seja franco; que firme crença você tinha e aproximadamente quanto tempo manteve a suposição? Pode ser sobre um algoritmo, uma linguagem, um conceito de programação, teste ou qualquer outra coisa sobre programação, linguagens de programação ou ciência da computação.


Respostas:


545

Por um longo tempo, presumi que todos os demais tinham esse domínio de todos os conceitos de programação (padrões de design, a nova linguagem mais recente, complexidade computacional, expressões lambda, etc.).

Ler blogs, Stack Overflow e livros de programação sempre pareceu me fazer sentir que estava por trás das coisas que todos os programadores precisam saber intuitivamente.

Ao longo do tempo, percebi que estou comparando efetivamente meu conhecimento ao conhecimento coletivo de muitas pessoas, não de um único indivíduo, e isso é um nível bastante alto para qualquer pessoa. A maioria dos programadores no mundo real possui um cache de conhecimento necessário para realizar seu trabalho e possui mais de algumas áreas das quais são fracos ou completamente ignorantes.


68
Tão verdade! Esse é o problema desta era. A informação também é desencorajadora. Tive essa revelação há algumas semanas atrás, quando me senti um completo perdedor em tudo o que fiz (não a primeira vez) em relação à pesquisa. As pessoas que publicam seus trabalhos nas transações IEEE não têm necessariamente as mesmas habilidades que as pessoas que trabalham no Google, se orgulham do StackOverflow, são excelentes professores ou escrevem ótimos blogs de programação. É claro que os melhores são exponencialmente mais legais do que nós, mas não sabem tudo o que você sabe que não sabe. Então fique calmo.
21139 jbasko

40
Também ajuda a entender que esses blogueiros também não estão escrevendo tudo em cima. Bons blogueiros pesquisam seus tópicos e aprendem coisas novas enquanto escrevem postagens.
JohnFx 21/05

47
Eu obcecado diariamente pelas coisas que não tenho tempo para ler e aprender. Isso me deixa com um sentimento horrendo de culpa às vezes.
21909 brad

9
@Zilupe: Amém a isso. Publiquei alguns jornais e revistas de conferências internacionais. Aos olhos de algumas pessoas, isso parecia legal. Até você perceber que não é preciso muito esforço para publicar um artigo. Nós não somos um gênio. Somos como todo mundo. Cometemos erros e publicamos papéis de merda. Bem, exceto por algum grupo minoritário de gênios reais ...
Hao Wooi Lim

4
+1 Ainda bem que li isso. Eu pensei que era o único.
Randell

308

Que as pessoas sabiam o que queriam.

Durante muito tempo, pensei em conversar com as pessoas, elas descreveriam um problema ou fluxo de trabalho e eu as codificaria e automatizaria. Acontece que toda vez que isso acontece, o que eles pensavam que queriam não era realmente o que queriam.

Edit: Eu concordo com a maioria dos comentários. Esta não é uma resposta técnica e pode não ser o que o interlocutor estava procurando. Não se aplica apenas à programação. Tenho certeza de que também não é minha suposição mais antiga, mas foi a coisa mais impressionante que aprendi nos 10 anos em que venho fazendo isso. Tenho certeza de que foi pura ingenuidade de minha parte, mas a maneira como meu cérebro está / foi ligado e os ensinamentos e experiências que tive antes de entrar no mundo dos negócios me levaram a acreditar que estaria fazendo o que respondi; que eu seria capaz de usar código e computadores para corrigir os problemas das pessoas.

Eu acho que essa resposta é semelhante à de Robin, que não programadores entende / se preocupa com o que estou falando. Trata-se de aprender os negócios como um processo ágil, interativo e interativo. É sobre aprender a diferença entre ser um macaco de código de programação e ser desenvolvedor de software. Trata-se de perceber que há uma diferença entre os dois e que, para ser realmente bom em campo, não se trata apenas de sintaxe e velocidade de digitação.

Edit: Esta resposta é agora wiki da comunidade para apaziguar as pessoas chateadas com esta resposta, dando-me representante.


9
Ou mude o que eles querem depois de ver o que eles queriam anteriormente. As pessoas gostam de mudar de idéia. Eu sei, porque sou um povo.
J. Polfer

13
Você estava dando a eles o que eles pediram, não o que eles queriam.
Brent Baisley

47
Por que chatas respostas incontroversas são votadas tão excessivamente ?!
Nes1983 20/05/09

39
Uau. Parece que alguém precisa de um abraço.
Bzlm 20/05/09

24
Meu deus @ pessoas reclamando, o stackoverflow rep não é uma competição. Voto a favor, se você gostou da resposta, não a vote porque está com ciúmes por não publicá-la primeiro.
Dmitri Farkov

292

Que eu sei onde está o problema de desempenho sem criar perfil


10
Eu acho que é por isso que a otimização prematura é um lugar tão comum.
21609 Hao Wooi Lim

10
+1 Uau, alguém incluiu uma resposta que não era trivial ou fora de tópico.
21420 Mark Rogers

3
Tenho alguns comprimidos que devem ajudar com a otimização prematura ...
AndyM

232

Que eu deveria ter apenas um ponto de saída de uma função / método.


91
Excelente realização; saia quantas vezes for necessário. Deve-se sair de uma função assim que não faz sentido continuar mais nela. Isso pode reduzir a complexidade e aumentar a legibilidade, por exemplo, evitando condicionais profundamente aninhados, quando são pré-condições necessárias para que o método seja executado corretamente. Nas linguagens modernas, com gerenciamento de memória e construções de recursos, como usar / finalmente, continuar até o final de um método dogmaticamente não faz sentido.
Triynko 20/05/09

24
Quem surgiu com isso, a propósito? É como uma lenda urbana de programação.
21909 brad

49
As pessoas que precisam depurar o código de outras pessoas são as que criaram isso.
Gatorfax

23
Eu acho que essa idéia comum, mas errada, é baseada em um mal-entendido. Ao sair de uma função, você deve sempre retornar ao mesmo ponto. Essa era uma regra importante em idiomas como o BASIC que não a aplicava: a regra significava, por exemplo, que você deveria usar o GOSUB em vez do GOTO. Em linguagens como C # ou Java que chamam métodos, é automático. Mas, como é automático, acho que se transformou do lógico "apenas um ponto de retorno" para o absurdo "apenas um ponto de saída".
22711 Ryan Lundy

35
De idiomas como C, onde você precisa liberar recursos manualmente. Vários pontos de saída foram uma boa chance de vazamento de recursos. Na IMO, não há sentido em idiomas com exceções, pois muitas vezes você não conhece mais seus pontos de saída ou eles estão no meio de uma declaração. - Nestas linguagens, tudo o que resta é "estrutura para facilitar a leitura".
27409 peterchen

228

Que os não programadores entendem do que estou falando.


243
entender / cuidar ..
nickf

8
Eu ainda tenho um presente às vezes ... Achei que pelo menos minha esposa teria começado a compreender corretamente até agora: P
workmad3

3
Oh, querida, temo que ainda esteja para aprender isso!
Thatismatt 21/05/2009

3
Sim, às vezes eu esqueço o meu público e acabar com um monte de gente econômicos com olhares em branco no mudando o stairing rosto para mim, é bom quando as pessoas mostram interesse embora
Petey B

3
Essa é minha maior frustração com a profissão.
Andres Jaan Tack

219

Esse software livre de erros era possível.


35
+1, embora a NASA quase tenha conseguido
Patrick McDonald

55
Sim, mas o "quase" custar alguns milhões de dólares :)
Jem

15
@Triynko seu "possível" e o "possível" de @ JaredPar não são os mesmos. Teoria e prática podem ser iguais na teoria, mas são muito diferentes na prática.
Wilhelmtell

13
@ Joseph, parte do problema é que as pessoas pensam que os programas Hello World são livres de bugs. Eles não são. A maioria não verifica erros no printf, por exemplo, ou explica outras tentativas de E / S com falha.
JaredPar

9
@RussellH, não. Você não conseguiu especificar um valor de retorno e o processo resultante retornará memória aleatória de lixo.
JaredPar 29/09/09

199

As variáveis ​​de membro privadas eram privadas para a instância e não para a classe.


192
Eu mantive essa suposição até ... agora.
TheMissingLINQ

9
@ebrown Eu normalmente só achar que é útil ao escrever um método equals ()
Dave Webb

12
Eles estão em Ruby.
Mike Kucera

17
Isso é tão normal para mim que essa resposta não fez sentido nas primeiras vezes em que a li. Agora eu quero aprender Ruby para que possa me confundir de outra maneira. :)
jmucchiello

16
@Kiewic Se você possui uma variável de membro privada chamada myVar em sua classe, pode fazer referência a other.myVar diretamente no seu código, se other for uma instância dessa classe. Eu tinha assumido porque era "privado" que você tinha que usar other.getMyVar () mesmo dentro da classe.
21430 Dave Webb

166

Eu pensei que a digitação estática estava muito quieta no seu teclado.


53
Sincero ou não, isso me fez rir muito ao final de um longo dia de trabalho. : P
Olivier Tremblay

5
++ para uma boa risada. Parece algo que meu marido (não técnico) inventa.
Jess

11
+1! Eu pensei que digitar pato envolvia digitar também. Ou patos. Ou ambos.
SqlACID

162

Que você possa entender completamente um problema antes de começar a desenvolver.


32
Este, meu amigo, deve ser: "Que você possa entender completamente um problema". Mas isso é verdade. E aparentemente um conceito difícil de entender ou até de aceitar.
217 KarlP

4
Você não pode entender o problema "completamente", mas certamente DEVE entender o problema (em algum grau) antes de começar a desenvolver. bit.ly/kLXgL
OscarRyz

Às vezes você precisa começar a desenvolver para entender o problema. E / ou, o problema muda quanto mais você desenvolve.
Evan Plaice

158

Pessoas inteligentes são sempre mais inteligentes que eu.

Eu realmente posso me derrotar quando cometo erros e, muitas vezes, sou criticado por me depreciar. Eu costumava olhar com admiração para muitos desenvolvedores e geralmente assumia que, como eles sabiam mais do que eu no X , eles sabiam mais do que eu.

Como continuei a ganhar experiência e conhecer mais pessoas, comecei a perceber que, muitas vezes, embora elas saibam mais do que eu sobre um assunto específico, não são necessariamente mais inteligentes que eu / você.

Moral da história: nunca subestime o que você pode trazer para a mesa.


Um bom! Atualmente, estou trabalhando com um colega que realmente sabe MUITO sobre desenvolvimento .NET. Levei algum tempo para perceber que sou melhor em entender o que os clientes precisam.
Treb 21/05/2009

58
E por outro lado, que eu sei mais do que as outras pessoas. Acontece que eles apenas sabem coisas diferentes. A outra moral: nunca subestime o que outra pessoa pode trazer para a mesa.
Thursdaysgeek

1
Aqui está aquela velha coisa de "faça aos outros" de novo ... Estou cunhando uma nova frase: Tecnologia crescente ~ O estado de se sentir superior porque você sabe algumas coisas e comete o erro de deixar todo mundo saber disso. @seealso: smartass.
Corlettk 23/05/09

1
Excelente observação - minha versão é mais negativa "Todo mundo faz estúpido de vez em quando". Um pouco relacionado a "não vire o bozo".
27409 peterchen

2
Você só precisa se preocupar quando pessoas estúpidas são mais inteligentes que você.
238 Brad Brad

131

Durante muito tempo, pensei que a programação ruim era algo que acontecia à margem ... que fazer as coisas corretamente era a norma. Não sou tão ingênuo hoje em dia.


30
Eu costumava pensar que a programação ruim era feita apenas por outros programadores, até que eu terminava com um dos meus programas ruins. Agora eu faço as coisas corretamente! (Você acredita em mim desta vez, certo?)
Jared Updike

2
Totalmente. Passei de "Isso nunca acontece" para "Isso nunca acontece, exceto neste trabalho", para "Todo lugar tem código incorreto".
22711 Ryan Lundy

1
Hacking é a norma. A engenharia é da competência do verdadeiro competidor. Se algum dia conhecer um engenheiro de software, eu o informarei.
Corlettk 23/05/09

3
@Corlettk: Você quer dizer que a codificação de macacos é a norma, não? Hackear é uma arte, um alto nível de arte, lembre-se, que estou longe de conseguir.
hasen

2
@Hasen: Não, hackear é uma analogia a inutilmente levar um machado a uma árvore, cinzelar pequenos pedaços em pânico louco sem um plano real e criar uma grande bagunça sangrenta até que a árvore finalmente caia em sua cabeça. Um "hack" é "aquele que produz trabalho banal e medíocre na esperança de obter sucesso comercial". Por que o campo do computador mudou "hack" para "qualificado", nunca vou saber.
Lawrence Dol

113

Eu pensei que deveria avançar para abstrair o máximo possível. Fui atingido na cabeça por isso, por causa de muito pouco entrelaçado de funcionalidades.

Agora, tento manter as coisas o mais simples e dissociadas possível. Refatorar para tornar algo abstrato é muito mais fácil do que prever como preciso abstrair algo.

Assim, mudei de desenvolver a estrutura que rege todos eles, para trechos de funcionalidade que fazem o trabalho. Nunca olhei para trás, exceto quando penso na hora em que ingênuo pensei que seria o único a desenvolver a próxima grande novidade.


26
Desacoplada = Abstração verdadeira. Resumo por si só é ... otimização prematura.
Jared Updike

1
Isso acompanha o que eu descobri ao ajustar o desempenho. Pode haver um programa adorável com várias camadas de abstração. Então a carga de trabalho fica pesada e adivinhe o que está custando o tempo todo ... todas as abstrações. Os computadores executam instruções, não abstrações.
Mike Dunlavey

5
Abstração e generalização são ferramentas poderosas, infelizmente usadas para generalizar um caso de uso abstrato com uma única implementação. O engraçado é que sempre que há uma necessidade de alterar a implementação, as abstrações e generalizações tem que mudar também ...
KarlP

Eu concordo totalmente com Jared ... se você conseguiu ser "simples e dissociado", conseguiu uma verdadeira abstração. Como as coisas podem ser dissociadas se você não abstraiu as coisas em interfaces e fábricas etc ...? Como pode ser simples, a menos que você remova todo o código "if type = this, faça isso ou, se o tipo for esse, faça outra coisa"?
Richard Anthony Hein

O mesmo aqui. Acho que aprendi sobre abstração antes de criar um monte de código de espaguete. Eles deveriam ter ensinado como fazer as coisas, mesmo que o código seja espaguete, e depois nos ensinar sobre OO e abstração.
hasen

103

Que as mulheres acham os programadores sexy ...


70
Espere um segundo???
Çağdaş Tekin 21/05/2009

4
ele ele ele ele ... ok, eu estava procurando por algo para manter meu sorriso pelo resto do dia. Eu acho que encontrei !!! :)
OscarRyz

17
"Ooh, baby! Sim, diga 'se' - me

5
O que? Programadores são ricos? Quando isto aconteceu?
Filip Navara

3
Algumas mulheres (do tipo certo) são atraídas por homens inteligentes e perspicazes. Quais, menos a protótipo de barba no pescoço e salsicha, são características bastante comuns dos programadores. Polvilhe um pouco de preocupação com a auto-imagem / higiene e a emoção / excitação ocasional de esportes radicais e você estará bem no seu caminho.
precisa

100

Que a qualidade do software levará a maiores vendas. Às vezes acontece, mas nem sempre.


37
Vendendo software? Isso é tão 1999.
bzlm 20/05/2009

Muitos sites baseados subscrição agora adays ...
CGP

11
Microsoft com certeza faz uma matança nele.
Bill Martin #

Tenho que amar esse, tão verdadeiro.
dr. mau

18
Desejo que a melhoria da qualidade / desempenho do nosso software contado como um recurso
Tom Leys

82

Que todos os idiomas são (principalmente) criados iguais.

Por um bom tempo, achei que a linguagem de escolha não fazia muita diferença na dificuldade do processo de desenvolvimento e no potencial de sucesso do projeto. Isto definitivamente não é verdade.

A escolha do idioma certo para o trabalho é tão importante / crítica quanto qualquer outra decisão do projeto que seja tomada.


13
Eu sinto que escolher as bibliotecas certas é o que importa. Acontece muitas vezes há uma correspondência 1-to-1 entre os idiomas e bibliotecas ...
Kevin Montrose

7
Mas se duas linguagens de programação são Turing completas, então qual é a diferença? Você pode escrever qualquer programa em qualquer idioma! ;)
Bill the Lizard

8
Eu discordo, a decisão de qual idioma usar é muito menos importante do que quem realmente implementará o projeto. Como apenas um exemplo de muitas outras decisões mais importantes.
Boris Terzic 22/05/2009

13
O BrainFu ** é tão completo quanto o python.
hasen

9
O fato de as línguas completas de Turing serem igualmente aplicáveis ​​é um equívoco comum. Uma linguagem completa de Turing pode calcular tudo o que uma máquina de Turing pode (e geralmente implica o contrário). Não há absolutamente implicações em relação ao desempenho. Uma operação que leva tempo linear em um idioma pode muito bem levar um tempo exponencial em outro e os dois ainda podem estar completos com Turing. Há uma enorme diferença entre o que é teoricamente computável e o que é viável na prática.
TrayMan

81

Que uma grande proporção de comentário / código é uma coisa boa.

Demorei um pouco para perceber que o código deveria ser auto-documentado. Claro, um comentário aqui e ali é útil se o código não puder ser esclarecido ou se houver um motivo importante para que algo esteja sendo feito. Mas, em geral, é melhor gastar esse tempo de comentários renomeando variáveis. É mais limpo, mais claro e os comentários não ficam "fora de sincronia" com o código.


1
Concordo no código real ... excluindo comentários javadoc (ou equivalente).
Corlettk 23/05/09

11
+1, nem sequer me fale sobre os tratados Eu costumava escrever para 10 funções de linha
WDS

Para adicionar isso, uma declaração assert () é melhor do que documentar uma pré-condição / pós-condição. Os contratos de código do .NET 4 também podem ser automaticamente transformados em documentação!
Robert Fraser

66

Essa programação é impossível.

Sem brincadeira, sempre achei que a programação era algo impossível de aprender e sempre me afastei dela. E quando cheguei perto do código, nunca consegui entender.

Então, um dia, sentei-me e li alguns tutoriais básicos para iniciantes, e trabalhei a partir daí. E hoje eu trabalho como programador e adoro cada minuto.

Para adicionar, não acho que a programação seja fácil, é um desafio e adoro aprender mais e não há nada mais divertido do que resolver algum problema de programação.


7
Amém! Mas, ei, não proclame essa visão dos telhados. Não queremos que todos saibam que a programação é divertida, não é? ;); P
Peter Perháč

9
MasterPeter: Nos daria mais forragem para aumentarmos nosso representante quando eles vierem aqui fazendo perguntas.
TheTXI 20/05/09

4
Eu diria que é difícil fazer a programação corretamente . É, no entanto, possível, o que parece ser o seu ponto.
Steve S

4
@Olafur: Por que você quer que a pergunta seja wiki, mas não a sua resposta?
Gnovice 20/05/09

2
Isso reflete exatamente minha experiência. Eu gostaria de ter começado mais cedo agora: P
Skilldrick

65

"On Error Resume Next" era algum tipo de manipulação de erro


6
Eu sinto você ... mas no vbscript (especialmente asp), era a ÚNICA opção de "tratamento de erros" disponível, combinada com uma verificação criteriosa da ocorrência de algum erro e uma quantidade razoável de oração.
flatline

2
Sim ... isso é algum tipo ... apenas um tipo que nós estamos contentes de estar ficando longe
Matthew Whited

6
Bem?! Mas isso é. Você começa o seu bloco de tratamento de erro com On Error Resume Em seguida, tentar algo, e depois Se (err.number <> 0), então
jpinto3912

Não é este o único vbscript equivalente a uma tentativa de captura?
James

-1: é um tipo de tratamento de erros. Simplesmente não é tão elegante.
3140 JohnFx

64

Esse software de programação requer uma base sólida em matemática superior.

Durante anos antes de começar a codificar, sempre me disseram que, para ser um bom programador, você tinha que ser bom em álgebra avançada, geometria, cálculo, trigonometria, etc.

Dez anos depois, e apenas uma vez tive que fazer algo que um aluno da oitava série não conseguiu.


5
Muito verdadeiro. Na maioria dos casos, você não precisa ser um especialista em matemática. A única vez em que realmente precisei conhecer matemática avançada foi quando fazia programação em 3D como hobby. Na verdade, foi na verdade a programação em 3D durante o ensino médio que me inspirou a prestar mais atenção nas aulas de trigonometria e pré-escola. Fora isso, porém, matemática muito básica é geralmente tudo o que você precisa.
21330 Steve Wortham

29
Eu acho que você estava mal informado. Claro, para ser um bom programador , você realmente não precisa usar matemática de nível muito mais alto, mas para realmente entender e aplicar certos conceitos de ciência da computação, você precisará mais do que apenas matemática da oitava série.
hbw 21/05

12
Eu acho que a ênfase na matemática é ensinar habilidades de pensamento crítico e resolução de problemas, não como algo que você usaria na programação de computadores todos os dias.
Zack

14
O tipo de abstração que você precisa para entender matemática avançada é muito semelhante à abstração que você precisa para criar software.
OscarRyz

6
Acho que os conceitos de programação funcional são muito mais fáceis de entender se você tem uma base mais forte em matemática, simplesmente porque não se assusta tanto com a sintaxe. Parece familiar. Cometi o erro de usar funções matemáticas simples para demonstrar os conceitos de programação funcional novos no C #. Algumas pessoas declararam imediatamente que era muito complexo.
Richard Anthony Hein

63

Essa otimização == reescrita na linguagem assembly.

Quando eu realmente entendi assembly (vindo do BASIC), parecia que a única maneira de acelerar o código era reescrevê-lo no assembly. Demorou alguns anos para perceber que os compiladores podem ser muito bons em otimização e, especialmente com CPUs com previsão de ramificação, etc. eles provavelmente podem fazer um trabalho melhor do que um humano pode fazer em um período de tempo razoável. Além disso, é provável que gastar tempo otimizando o algoritmo proporcione uma vitória melhor do que gastar tempo convertendo de um idioma de alto para baixo nível. Também que a otimização prematura é a raiz de todo mal ...


8
Peek e picar são seus amigos :)
Matthew Whited

4
Perverter! Diga isso ao juiz!
Shalom Craimer

1
É aí que entra a teoria da complexidade. A montagem geralmente é micro otimização. Reduzir a complexidade do tempo dos algoritmos é onde a velocidade é obtida.
Petet

@scraimer: Fantasia vê-lo aqui, eu nunca teria esperado que ;-)
Robert S. Barnes

@ Matthew - "Peek e Poke são seus amigos :)": ** EXTREMAMENTE ciumento Eu não escrevi isso primeiro.
FastAl

63
  • Que os executivos da empresa se preocupem com a qualidade do código.
  • Que menos linhas é melhor.

2
eles se importam, mas você precisa combinar as habilidades do artista com as do trabalhador. Cada peça do algoritmo também não pode ser uma obra de arte. Algumas delas serão plumpering, então reutilize as "menos usadas". Lembre-se da antiga regra 80/20. 80% do programa é usado 20% do tempo. Então concentre-se 80% em 20% do código e faça essa PARTE DE ARTE REAL! : OP
BerggreenDK

71
menos linhas são melhores! parte da razão de eu não gostar do java como linguagem é que fazer qualquer coisa ocupa tantas linhas de código. menos linhas de código significa que é mais fácil alterar seu código.
Claudiu

7
Depende do que você está removendo para obter menos linhas. Se o código ainda estiver legível com menos linhas, será bom. No entanto, existem várias maneiras de reduzir o número de linhas de código que pioram o código.
Herms

2
Exceto quando as pessoas levam a mentalidade "menos linhas é melhor" para longe, com chamadas encadeadas de métodos 7 profundas, de modo que, quando uma delas lança um ponteiro nulo, você não tem idéia do que era. Ou eles condensam tantas ações em uma linha que tem 150 caracteres e executa 4 operações. Isso dificulta a leitura e a depuração, mas não é mais rápido nem utiliza menos memória durante a execução.
Trampas Kirk

17
Se sua linha termina em))))) e você não está escrevendo Lisp, você tem poucas linhas.

58

Eu diria que armazenar o elemento year de uma data como 2 dígitos foi uma suposição que afligiu toda uma geração de desenvolvedores. O dinheiro investido no Y2K foi horrível.


1
Esta é a única resposta que eu vou upvote, mas é um CW por isso não importa ...
Dan Rosenstark

4
O IIRC alguns sistemas nos anos 60 e talvez 70 usavam apenas um dígito porque usavam menos memória. Eu já vi formulários em papel onde "196_" e "197_" foram pré-impressos.
algum

3
Ainda vejo formulários com 200_ e, presumivelmente, agora existem alguns com 201_ impressos.
Macha

5
A parte triste é ... O Unix terá sua segunda rodada neste ano em 2038
Evan Plaice

4
@ Billy Só porque a arquitetura da máquina muda, não significa que o formato dos dados será. Armazenar 2 dígitos de resolução no formato int criaria um formato de data de byte (8 bits) e, no entanto, afetaria toneladas de máquinas de arquitetura de hardware de 32 bits em 2k. Este é apenas mais um exemplo de por que você não permite que os profissionais de hardware de baixo nível especifiquem formatos de dados. Eles ganham um centavo com o conhecimento de que haverá um SNAFU programado no futuro distante.
Evan Plaice

57

Que qualquer coisa que não fosse o tipo inserção / bolha era simplesmente magia negra.


Haha, eu gosto deste, pois bate perto de casa. Classificar mais rápido que o tempo n-quadrado? Impossível!
209 Ross

É incrível como a maioria dos algoritmos de classificação é simples e óbvia, uma vez que você tem uma forte sensação de recursão, divisão e conquista. Até então, a maioria deles parecia mágica negra.
2027 Brian

74
Eu sou um pesquisador em algoritmos de classificação! E eles ainda se sentem como magia negra.
SPWorley 20/05/09

14
Uma vez eu tinha uma linha de código no meu programa que era longa e complicada e não tinha vontade de dividi-la ou explicá-la (era uma fórmula complicada de iluminação), então coloquei tudo em uma linha e #define ' d que seja DARK_MAGICK, eo único comentário foi uma advertência contra a tentar desvendar os mistérios da magia escura
Alex

2
Bogosort é o mais misterioso de todos.
Alex Beardsley

50

Esse XML seria um formato de dados legível verdadeiramente interoperável e humano.


7
XML não é uma panacéia, mas eu não gostaria de voltar aos dias em que via regularmente aplicativos tentando espremer dados relacionais em arquivos csv únicos.
Tony Edgecombe

4
é uma sintaxe interoperável, sem dúvida. É que essa sintaxe geralmente é o aspecto menos importante de qualquer solução.
Simon Gibbs

2
+1, você também pode adicionar pequeno e rápido à lista de desejos.
11119 MarkJ

1
Verdadeiro, mas uma melhoria em csv e comprimento fixo, onde sem a documentação você está ferrado.
Petet

7
Adoro o XML pela padronização que ele trouxe para os formatos de dados e por manipular corretamente as codificações de caracteres. Eu odeio o que às vezes é feito usando XML, no entanto.
Joachim Sauer

48

Esse C ++ era intrinsecamente melhor do que todas as outras linguagens.

Recebi isso de um amigo alguns anos antes de mim na faculdade. Fiquei comigo por um tempo embaraçosamente longo (estou corando agora). Foi só depois de trabalhar com ele por 2 anos ou mais antes que eu pudesse ver as rachaduras do que eram.

Ninguém - e nada - é perfeito, sempre há espaço para melhorias.


5
"melhor" trará toneladas de comentários menos que odiosos. Mas eu diria que é um dos mais rápidos, flexíveis e livres de obstáculos. É também aquele que leva sua juventude a aprendê-la adequadamente, apenas para descobrir que você pode fazer mais ou menos o mesmo aplicativo. (embora exija uma tonelada extra ou duas de carvão para geração de eletricidade) com java ou C #.
Jpinto3912 20/05/09

@JP: Estou feliz com a minha escolha de palavras :)
Binary Worrier

A produtividade é mais importante no mundo dos aplicativos de negócios. é claro, existem alguns nichos em que o c ++ é necessário e a única opção.
Shaw

7
Eu sempre presumi que o C ++ é pior que o ANSI C simples, simplesmente porque o tipo de problema em que vi os programadores de C ++ se envolverem é muito mais complicado do que o tipo de problema em que os programadores de C entram.
Nosredna

1
Na verdade, a linguagem que é melhor que todas as outras é Common Lisp. C ++ não é ruim, no entanto.
David Thornley

47

Eu acreditava que a criação de programas seria exatamente como o que foi ensinado em sala de aula ... você senta com um grupo de pessoas, analisa um problema, apresenta uma solução etc. etc. Em vez disso, o mundo real é "Aqui está meu problema, preciso resolvê-lo, vá "e dez minutos depois você recebe outro, sem tempo real para planejar sua solução com eficiência.


24
Eu acho que isso se chama vida.
22699 Robin Day

9
hmmm .. é hora de você socorrer essa empresa. ..
jpinto3912

8
@ jpinto3912: Não. Porque a próxima empresa também fará parte da vida (veja o comentário anterior).
Treb 21/05/2009

42

Eu pensei que os padrões de design convencionais eram impressionantes quando foram introduzidos em uma classe de CS. Eu tinha programado cerca de 8 anos como hobby antes disso, e realmente não tinha uma sólida compreensão de como criar boas abstrações.

Padrões de design pareciam mágicos; você poderia fazer coisas realmente legais. Mais tarde, descobri a programação funcional (via Mozart / Oz, OCaml, mais tarde Scala, Haskell e Clojure) e depois entendi que muitos dos padrões eram apenas clichê, ou complexidade adicional, porque a linguagem não era expressiva o suficiente.

É claro que quase sempre há algum tipo de padrão, mas eles estão em um nível superior nas linguagens expressivas. Agora, eu tenho feito alguma codificação profissional em Java, e sinto muita dor quando preciso usar uma convenção como visitante ou padrão de comando, em vez de correspondência de padrões e funções de ordem superior.


"muitos dos padrões eram apenas clichê, ou complexidade adicional, porque a linguagem não era expressiva o suficiente". Expressividade é simplesmente um código padronizado embutido no idioma.
Desconhecido

4
Não é verdade, como é bom ter coisas de primeira classe em vez de limitar os recursos de um programador, como no caso de funções de ordem superior. Lisps são um belo exemplo disso.
egaga 21/05

38

Nos primeiros anos em que estava programando, não entendi que 1 Kbyte é tecnicamente de 1024 bytes, e não 1000. Sempre fiquei um pouco perplexo com o fato de os tamanhos dos meus arquivos de dados parecerem um pouco diferentes do que eu esperava que eles fizessem. estar.


114
Fabricantes de disco rígido ainda não pegou ...
Michael Myers

10
@mmyers Eu acho que você quer dizer profissionais de marketing de disco rígido, certo? Ou as unidades são realmente construídas assim?
Instantsoup

16
Ei, pare o kibi de odiar. MeBi e KiBi são pelo menos inequívocos.
Bzlm 20/05/09

21
Quilo significa 1000, Mega significa 1000000, Giga significa 1000000000. Foram os fabricantes de RAM e SO que erraram, não os fabricantes de unidades.
Mark Ransom

39
Ninguém vai fazer isso? Seriamente? Ok, eu vou fazer isso ... xkcd.com/394
Erik Forbes

36

Essa condição verifica como:

if (condition1 && condition2 && condition3)

são executados em uma ordem não especificada ...


15
Em que língua? Idiomas como C / C ++, Java e Python garantem que as condições sejam avaliadas da esquerda para a direita e que a avaliação seja interrompida na primeira condição que retornar false. Faz parte da especificação do idioma. Presumo que a maioria dos outros idiomas faça a mesma garantia.
Clint Miller

44
@ Clint: Sim, daí "que acabou por ser incorreto".
bzlm

Sim, este é legal. faz coisas wrint como if (myList = null && myList.Count> = 0!) {fazer coisas ();} muito mais fácil
Zack

4
na verdade, este depende do idioma e & avaliará todas as condições (não atalhos). E eu já vi muitas pessoas usam e (e) em VB, em vez de AndAlso (&&)
Lucas

2
. . . Na verdade ele irá travar em VB.net muito menos que você use AndAlso re comentário Lucas'
Binary Worrier

35

Que minha programação seria mais rápida e melhor se eu a realizasse sozinha.


Mas ele não pode ficar tão feio como Pair- Programação :-) exceto talvez seu código
Egg

33
Tudo isso depende da outra pessoa. =)
JohnFx
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.