Como programador, devo conhecer linguagens de programação de alto e baixo nível? [fechadas]

18

Fui contactado para realizar alguns trabalhos de controle remoto de displays de LEDs sobre TCP / IP, mas minha experiência e preparação são principalmente sobre linguagem de programação de alto nível. Eu disse isso à pessoa que me contatou sobre o trabalho e ele me disse que:

"se você se considera um programador, deve saber todas essas coisas"

Um programador deve realmente conhecer os detalhes da programação de baixo nível? Ou posso tratá-lo como um conceito de caixa preta, como conhecimento teórico, mas não necessariamente fazendo isso ou implementando soluções de linguagem de baixo nível, tendo em mente que a programação de baixo nível não é minha especialidade?

trabalho
fonte
8
Ao programar em um nível alto, você deve mascarar os níveis mais baixos de abstração ou não conseguirá fazer nada. É bastante útil poder trabalhar em níveis mais baixos, apenas não tente fazer tudo de todos os níveis de abstração ao mesmo tempo. Você não precisa, mas, se não, não se candidate a empregos de baixo nível.
1
@ delnan: Ao trabalhar no nível alto, é claro que é necessário mascarar os detalhes do nível inferior. No entanto, acho que todo programador deve saber como as máquinas que estão programando também funcionam no nível mais baixo. O conhecimento não precisa ser muito detalhado - basta saber como construir um computador básico a partir do zero.
Agendador
4
"se você se considera um programador, deve saber todas essas coisas". Se eles queriam tanto você que amaldiçoavam sua falta de experiência, algo está muito errado. Eu desconsideraria o comentário deles como não fazendo nenhum sentido. Ou eles querem você com seu histórico, ou não, e não devem amaldiçoá-lo pelo histórico que você não possui.
S.Lott
3
Outro caso de: "Uau, que bom que eu perdi a bala!" Você realmente não quer trabalhar para ou com um esnobe, não é?
Edward Strange
2
@ Schchedler - e se eles não estão queimando suas próprias pranchas, são totalmente novos.
Edward Strange

Respostas:

37

Seu contato não sabe do que está falando. Existem muitas linguagens, metodologias, tecnologias etc. que uma única pessoa não pode conhecer muito bem todos os detalhes necessários. O que você precisa saber como programador é como aprender o que precisa para fazer o trabalho e ter uma abordagem de solução de problemas que você pode aplicar para chegar a uma solução, independentemente da linguagem de programação que você precise usar.

Admitir o que você não sabe é bom, mas você também pode provar que é capaz de aprender o suficiente para alcançar o resultado desejado, independentemente do que estiver enfrentando. Bons programadores são simplesmente bons solucionadores de problemas que podem implementar suas soluções em várias linguagens de programação.

Eu não estaria trabalhando para alguém que tenha a atitude de seu contato.

Bernard
fonte
4
+1: o comentário não faz sentido em primeiro lugar.
S.Lott
Embora aposto que há muitos desenvolvedores somente para montagem que ficariam felizes em cobrar a ele por hora.
Erik Reppen
22

"se você se considera um programador, deve saber todas essas coisas"

Discordo totalmente desta afirmação. Seria como pedir a um chef para cozinhar qualquer coisa, um motorista para operar qualquer tipo de veículo a motor ou um médico para conhecer todas as doenças, o que é uma suposição ridícula.

Para ser um programador, é preciso saber como fornecer software de gravação em algum idioma para executar alguma tarefa de maneira automatizada. As linguagens e tarefas variam de programador para programador, exatamente como os pratos que um chef sabe fazer, o motorista sabe como operar ou o médico sabe diagnosticar, dependendo da especialidade que se deseja em cada profissão.

JB King
fonte
2
Sim, até que uma abstração seja interrompida e eles não tenham idéia do motivo pelo qual o código está exibindo um problema de desempenho, por que alguma biblioteca externa está travando / corrompendo dados, etc. Na minha experiência, programadores que conhecem apenas linguagens de alto nível simplesmente não são tão bons em seu trabalho como aqueles que podem fazer as duas coisas.
Ed S.
4
Você está perdendo o ponto. Sim, programadores de alto nível devem ser capazes de entender os aspectos de baixo nível, mas ele deve saber como escrever uma atualização de firmware para um roteador Linksys?
maple_shaft
7
Eu acho que eles deveriam saber como descobrir, no entanto. Uma grande parte da programação moderna é saber o que lembrar e o que arquivar como referência.
Michael K
8

Falou como uma pessoa que nunca escreveu uma linha de código em sua vida. Será a mesma pessoa que achará que você poderá fazê-lo na metade do tempo que citar. Não discuta com um idiota.

Você mostrou muito mais conhecimento e caráter ao conhecer suas limitações. Essa pessoa fala sobre coisas que não sabe de nada.

Acho que todo carpinteiro deve saber esculpir uma peça de mobiliário ornamentada. Se um piloto pode pilotar um avião, ele pode pilotar todos eles.

JeffO
fonte
Concordo, pois é como dizer que, por ser médico, você deve saber como fazer uma cirurgia cardíaca aberta. Mas, na vida real, você sabe que ele deve ser um especialista para fazer isso, mas na programação é difícil saber a diferença quando você olha de fora como o 'todo poderoso programador'.
job
6

A maioria dos programas de CS na escola fornecerá algum conhecimento em programação de baixo nível. Eu, por exemplo, tive classes assembler usando o processador 8088 (OK ... então isso me data um pouco). Penso, no entanto, que muitas escolas de comércio hoje em dia ignoram esse conhecimento - com um comentário, se isso não for verdade.

Resumindo, é sempre bom saber o que acontece no nível do chip - além disso, seus idiomas de alto nível acabarão lá quando forem executados.

No entanto, ter alguém lhe dizendo que você não é um programador, porque atualmente você não sabe que a programação de baixo nível é ignorante. Se você precisa ter essas habilidades para o projeto atual, deve ter inteligência ou motivação suficiente para aprender as habilidades necessárias e aplicá-las.

Eu teria que considerar seriamente não aceitar esse projeto se o cliente já estiver falando com você dessa maneira - você nunca sabe para onde isso poderia ir.

Catchops
fonte
6

Eu realmente desprezo quando as pessoas dizem "Você precisa conhecer o X para se chamar um programador". Verdade? Bem, algumas pessoas trabalham em COBOL o dia todo e adoram. Eles podem ter ficado tão bons nisso e no domínio de seus problemas que, ao lado deles, somos todos fingidores.

Sério, respeite as pessoas por resolverem os problemas que enfrentam de maneiras interessantes e interessantes. Entenda que a grande solução de problemas vem de uma diversidade de origens. Não se eles dominaram uma suposta "lista de verificação" de habilidades que todos deveriam saber para que todos possam pensar da mesma maneira. Esse é o exato oposto do que queremos. A "lista de verificação" de todos é e deve ser diferente. Quanto mais diferente, melhor. Programação é a solução de problemas nos dias de hoje. Respeite aqueles que o fazem bem e entenda que todos vêm à mesa com forças diferentes. Essa é a única maneira de ajudarmos um ao outro a trabalhar efetivamente em equipe. Só porque conhecer "C" ou algo realmente ajuda esse cara a ser incrível, não significa isso porque você não

Doug T.
fonte
3

Eu sugiro que você leia isto:

http://www.joelonsoftware.com/articles/LeakyAbstractions.html

Como explicado, quando você usa uma abstração, o nível mais baixo sempre influencia o que você está fazendo. Isso pode ter desempenho, causa de falha, motivos de segurança e assim por diante.

Então, definitivamente, você deve agora sobre esses animais. Não sendo especialmente um especialista em arquitetura asm ou CPU. Mas saber o suficiente para se documentar quando precisar saber mais é, de fato, um item obrigatório.

deadalnix
fonte
Talvez eu precise esclarecer que sei como o TCP / IP funciona =), meu objetivo é implementar algo como soquetes sobre TPC / IP que está além do meu conhecimento, posso aprender isso rapidamente? claro, eu quero aprender isso? na verdade, principalmente porque não me sinto confiante de que o resultado final será totalmente comprovado para um ambiente de produção ou cumprirá todos os requisitos no tempo determinado. Só acho que no tempo que levei para atingir o nível de conhecimento em linguagem de alto nível, e não acho que o tempo concedido seja suficiente para conhecer todas as dicas, que dão uma sensação arriscada.
job
Este é o ponto: você não precisa ser um especialista. Mas você precisa saber o básico. Assim, você saberá quais são os limites da abstração que está usando - esse é o mínimo e saberá como se documentar quando o limite for atingido.
deadalnix
2

Seu argumento é um bom exemplo da falácia lógica de No True Scotsman .

No entanto, a diferença entre programação de baixo e alto nível não é a linguagem, é o domínio do conhecimento do aplicativo. Atribuir um valor como true pode significar acender um LED ou ativar eventos de clique do mouse em um widget. A linguagem não se importa.

Por exemplo, dê uma olhada nesta biblioteca para trabalhar com uma matriz de LED em um arduino. Não é ciência do foguete aqui, e realmente qualquer programador seria capaz de entendê-lo com um pouco de esforço se não apresentasse um "baixo nível, oh não!" bloqueio mental.

Karl Bielefeldt
fonte
1

Cada linguagem de programação tem seus próprios prós e contras. Aprender alguns daria a você uma ótima percepção sobre o que usar e como usá-lo efetivamente quando receber um projeto.

Como programador, você pode se especializar em um PL específico, usando-o como sua única ferramenta para resolver qualquer problema, também pode conhecer muitos PL, mas se especializa em nada e muito mais entre esses extremos.

Talvez a pessoa que lhe disse que "Frase" esteja frustrada, talvez você não tenha sido a única pessoa de contato com quem ele falou.

conhecer o problema e saber qual conjunto de habilidades é necessário para ser capaz de resolver o problema efetivamente é uma boa característica de um programador. Infelizmente, no seu caso, como você não possui o conjunto de habilidades necessárias, talvez você possa encaminhar sua pessoa de contato para outro programador com o conjunto de habilidades necessário.

Felicidades,

custódia

Dorward Villaruz
fonte
1

Ter o conhecimento teórico é bom. Ser capaz de aprender o idioma de baixo nível quando necessário é muito importante.

Mas quanto a "se você se considera um programador, deve saber todas essas coisas", quem pode saber tudo sobre tudo? Antes que eles façam?

FrustratedWithFormsDesigner
fonte
-2

Vou reformular

"se você se considera um programador, deve saber todas essas coisas"

PARA

"se você se considera um programador, deve saber o suficiente para aprender rapidamente todas essas coisas"

Parag
fonte