Executando verificação de segurança...
3

Programação é arte.
Você melhora do mesmo jeito que melhora tocando um instrumento, desenhando ou jogando bola: fazendo. Não existe nenhum atalho que substitua horas de "bunda na cadeira".

Mas se programar é tocar um instrumento, a ciência da computação é a teoria musical.

Um é o jogo. O outro são as regras.
E saber as regras é o minímo. Mas regra nenhuma joga a partida por você. Tem gente que acha que estudar teoria basta. Não basta. Tem gente que acha que praticar basta. Também não.

Carregando publicação patrocinada...
1

O ponto de vista bem mais aceito até o momento. Vamos para um questionamento mais específico: A forma que que as regra da arte da programação em sua grande maioria é mais para especialização ou as regras são fundamentais para todos os programadores.

1

as regras são fundamentais para todos os programadores.

Sim.

Detalhando melhor...

De forma bem porcamente resumida, Ciência da Computação (que vou chamar de CC no restante do texto) é a teoria, programação é a prática. A relação entre elas seria como a da Física com a Engenharia: a primeira explica como uma ponte deve ser para não cair, a segunda constrói a ponte (usando os conhecimentos da primeira para garantir que não caia).

Ou ainda, CC é o estudo das coisas que um computador pode fazer, programação é botar o computador pra fazer essas coisas.

CC tem uma relação profunda com a matemática (tanto que poderia muito bem se chamar Matemática Computacional ou algo do tipo). Dentre os tópicos que ela estuda, podemos citar teoria dos grafos, complexidade de algoritmos, os próprios algoritmos em si (e como provar matematicamente que eles funcionam), estruturas de dados, etc. Geralmente são definições bem abstratas, sem se preocupar com a implementação (o foco é "o que" e não "como").

Enfim, eu acho que saber essas regras é fundamental sim. Saber toda essa "teoria chata" te torna um programador melhor, mesmo que vc não a use diretamente. Saber que um repositório do Git é um grafo me ajudou a entender melhor o que cada comando faz (já que todos eles lêem/percorrem ou manipulam o grafo). Saber complexidade (Big-O) e estruturas de dados me ajuda a saber melhor quando usar lista/array ou map/dicionário (e também quando não faz diferença). Saber como as linguagens são criadas e projetadas me ajuda a entender porque elas são feitas de determinadas formas, e como estas escolhas resultam em certas características e limitações (aí vc entende que nenhuma é perfeita e para de ser fanboy/hater de linguagem).


Por fim, tem a famosa frase de Edsger Dijkstra: "A ciência da computação está para o computador assim como a astronomia está para o telescópio".

1

Gosto muito de usar essa analogia com a música também. Tenho dois primos que cursaram música, eles dois tiveram a mesma base teórica sobre a música na universidade, mas precisavam fazer uma escolha de um instrumento para se especializarem, um escolheu o piano e o outro o violão clássico.

Tem como entrar numa orquestra aprendendo piano pela internet? Teoricamente, sim. Mas na prática o caminho mais comum é através de cursos com mais alguns níveis de profundidade.

0