En tant que programmeur, dois-je connaître des langages de programmation bas et haut niveau? [fermé]

18

J'ai été contacté pour faire un travail de contrôle à distance des écrans LED sur TCP / IP, mais mon expérience et ma préparation concernent principalement le langage de programmation de haut niveau. J'ai dit cela à la personne qui m'a contacté au sujet du travail et il m'a dit que:

"si vous vous appelez un programmeur, vous devez savoir toutes ces choses"

Un programmeur devrait-il vraiment connaître les détails de la programmation de bas niveau? Ou puis-je le traiter comme un concept de boîte noire, comme une connaissance théorique mais pas nécessairement le faire ou mettre en œuvre des solutions linguistiques de bas niveau, sachant que la programmation de bas niveau n'est pas mon expertise?

emploi
la source
8
Lors de la programmation à un niveau élevé, vous devez masquer les niveaux d'abstraction inférieurs, sinon vous ne feriez rien. Il est cependant très utile de pouvoir travailler à des niveaux inférieurs, mais n'essayez pas de tout faire à tous les niveaux d'abstraction à la fois. Vous n'avez pas besoin de le faire, mais si vous ne le faites pas, ne postulez pas pour des emplois de bas niveau.
1
@delnan: Lorsque vous travaillez au niveau supérieur, il est bien sûr nécessaire de masquer les détails du niveau inférieur. Cependant, je pense que chaque programmeur devrait également savoir comment les machines qu'il programme fonctionnent au niveau inférieur. Les connaissances n'ont pas besoin d'être trop détaillées - il suffit de savoir comment construire un ordinateur de base à partir de zéro.
Schedler
4
"Si vous vous appelez un programmeur, vous devez savoir toutes ces choses" S'ils vous voulaient tellement mal qu'ils ont maudit votre manque de connaissances, quelque chose ne va pas. J'ignorerais leur commentaire comme n'ayant aucun sens. Soit ils vous veulent avec vos antécédents, soit ils ne veulent pas de vous et ne devraient pas vous maudire pour les antécédents que vous n'avez pas.
S.Lott
3
Un autre cas de, "Ouf, content d'avoir raté cette balle!" Vous ne voulez pas vraiment travailler pour ou avec un tel snob, n'est-ce pas?
Edward Strange
2
@Schedler - et s'ils ne brûlent pas leurs propres tableaux, ce sont des newbs totaux.
Edward Strange

Réponses:

37

Votre contact ne sait pas de quoi il parle. Il existe de nombreux langages, méthodologies, technologies, etc. qu'une seule personne ne peut pas très bien connaître tous les détails nécessaires. Ce que vous devez savoir en tant que programmeur, c'est apprendre ce dont vous avez besoin pour faire le travail et avoir une approche de résolution de problèmes que vous pouvez appliquer pour arriver à une solution, quel que soit le langage de programmation que vous devez utiliser.

Admettre ce que vous ne savez pas, c'est bien, mais vous pouvez également prouver que vous êtes capable d'apprendre suffisamment pour atteindre le résultat souhaité, peu importe ce à quoi vous êtes confronté. Les bons programmeurs sont tout simplement de bons résolveurs de problèmes qui peuvent implémenter leurs solutions dans divers langages de programmation.

Je ne travaillerais pas pour quelqu'un qui a l'attitude de votre contact.

Bernard
la source
4
+1: Le commentaire n'a aucun sens en premier lieu.
S.Lott
Bien que je parie qu'il y a beaucoup de développeurs uniquement assembleurs qui seraient heureux de le facturer à l'heure.
Erik Reppen
22

"si vous vous appelez un programmeur, vous devez savoir toutes ces choses"

Je suis fortement en désaccord avec cette déclaration. Ce serait comme demander à un chef de cuisiner quoi que ce soit, à un conducteur de conduire n'importe quel type de véhicule à moteur ou à un médecin de connaître toutes les maladies, ce qui est une supposition ridicule.

Pour être programmeur, il faut savoir donner un logiciel d'écriture dans une langue afin d'effectuer une tâche de manière automatisée. Les langues et les tâches varient d'un programmeur à l'autre, tout comme les plats qu'un chef sait préparer, un chauffeur sait comment opérer ou un médecin sait diagnostiquer varie en fonction de la spécialisation que l'on souhaite être dans chaque profession.

JB King
la source
2
Oui, jusqu'à ce qu'une abstraction tombe en panne et qu'ils n'aient aucune idée de la raison pour laquelle leur code présente un problème de performances, pourquoi une bibliothèque externe plante ou corrompre des données, etc. D'après mon expérience, les programmeurs qui ne connaissent que les langages de haut niveau ne sont tout simplement pas aussi bons à leur travail que ceux qui peuvent faire les deux.
Ed S.
4
Votre manque le point. Oui, les programmeurs de haut niveau devraient être en mesure de comprendre les aspects de bas niveau, mais devrait-il savoir comment écrire une mise à niveau du micrologiciel pour un routeur Linksys?
maple_shaft
7
Je pense cependant qu'ils devraient savoir comment le faire. Une grande partie de la programmation moderne consiste à savoir ce qu'il faut retenir et ce qu'il faut classer comme référence.
Michael K
8

Parlé comme une personne qui n'a jamais écrit de ligne de code dans sa vie. Ce sera la même personne qui pensera que vous devriez pouvoir le faire dans la moitié du temps que vous citez. Ne discutez pas avec un idiot.

Vous avez montré beaucoup plus de connaissances et de caractère en connaissant vos limites. Cette personne parle de choses dont elle ne sait rien.

Je suppose que chaque charpentier devrait savoir sculpter un meuble orné. Si un pilote peut piloter un avion, il peut tous les piloter.

JeffO
la source
Je suis d'accord, car c'est comme dire que parce que vous êtes médecin, vous devez savoir comment faire une chirurgie à cœur ouvert. Mais dans la vraie vie, vous savez qu'il doit être un spécialiste pour le faire, mais en programmant la différence, il est difficile de dire quand vous le regardez de l'extérieur en tant que «tous les programmeurs puissants».
job
6

La plupart des programmes CS à l'école vous donneront quelques connaissances en programmation de bas niveau. Par exemple, j'avais des classes d'assembleur utilisant le processeur 8088 (OK ... donc ça me date un peu). Je pense, cependant, que de nombreuses écoles de métiers contournent ces connaissances de nos jours - lancez un commentaire si ce n'est pas vrai.

En fin de compte, il est toujours bon de savoir ce qui se passe au niveau de la puce - en outre, vos langues de haut niveau finiront par y arriver lors de son exécution.

Cependant, demander à quelqu'un de vous dire que vous n'êtes pas programmeur parce que vous ne savez pas actuellement que la programmation de bas niveau est ignorante. Si vous devez posséder ces compétences pour le projet en cours, vous devez avoir suffisamment d'intelligence ou de motivation pour acquérir les compétences dont vous avez besoin, puis les appliquer.

Je devrais sérieusement envisager de ne pas prendre ce projet si le client vous parle déjà de cette façon - vous ne savez jamais où cela pourrait aller.

Catchops
la source
6

Je le méprise vraiment quand les gens disent "Vous devez connaître X pour vous appeler programmeur". Vraiment? Eh bien, certaines personnes travaillent sur COBOL toute la journée et l'adorent. Ils sont peut-être devenus si bons dans ce domaine et dans leur domaine de problèmes qu'à côté d'eux, nous sommes tous des prétendants.

Sérieusement, respectez les gens pour résoudre les problèmes auxquels ils sont confrontés de manière cool et intéressante. Comprenez que la grande résolution de problèmes vient d'une diversité d'horizons. Pas s'ils ont maîtrisé une supposée "liste de contrôle" de compétences que tout le monde est censé connaître pour qu'ils puissent tous penser de la même façon. C'est l'exact opposé de ce que nous voulons. La «liste de contrôle» de chacun est et devrait être différente. Plus c'est différent, mieux c'est. La programmation résout les problèmes de nos jours. Respectez ceux qui le font bien et comprenez que tout le monde vient à la table avec des forces différentes. C'est la seule façon dont nous allons nous entraider pour travailler efficacement en équipe. Ce n'est pas parce que connaître "C" ou quelque chose aide vraiment ce gars à être génial, parce que vous ne le faites pas

Doug T.
la source
3

Je vous suggère de lire ceci:

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

Comme expliqué, lorsque vous utilisez une abstraction, ce qui est de niveau inférieur a toujours une influence sur ce que vous faites. Il peut s'agir de performances, de causes d'échec, de raisons de sécurité, etc.

Donc, définitivement, vous devriez maintenant parler de ces trucs. Pas spécialement un spécialiste de l'architecture asm ou CPU. Mais en savoir suffisamment pour vous documenter lorsque vous avez besoin d'en savoir plus est, en effet, un must have.

deadalnix
la source
Peut-être que je dois préciser que je sais comment fonctionne TCP / IP =), mon point implémente quelque chose comme des sockets sur TPC / IP est au-delà de mes connaissances, puis-je l'apprendre à la volée? bien sûr, je veux l'apprendre? pas vraiment, principalement parce que je ne suis pas convaincu que le résultat final sera entièrement prouvé pour un environnement de production ou qu'il satisfera à toutes les exigences dans le temps imparti. Je pense juste dans le temps qu'il m'a fallu pour atteindre le niveau d'expertise en langage de haut niveau, et je ne pense pas que le temps donné sera suffisant pour connaître tous les pièges, qui me donnent une sensation risquée.
job
C'est le point: vous n'avez pas besoin d'être un expert. Mais vous devez connaître les bases. Vous saurez donc quelles sont les limites de l'abstraction que vous utilisez - c'est le minimum, et vous saurez comment vous documenter lorsque la limite sera atteinte.
deadalnix
2

Son argument est un bon exemple de l' erreur logique de No True Scotsman .

Cependant, la différence entre la programmation de bas et de haut niveau n'est pas le langage, c'est le domaine de connaissance des applications. Attribuer une valeur à true peut signifier allumer une LED ou activer des événements de clic de souris sur un widget. La langue s'en fiche.

Par exemple, jetez un œil à cette bibliothèque pour travailler avec une matrice LED sur un Arduino. Ce n'est pas sorcier ici, et vraiment n'importe quel programmeur serait en mesure de le comprendre avec un petit effort s'il ne mettait pas un "bas niveau oh non!" blocage mental.

Karl Bielefeldt
la source
1

Chaque langage de programmation a ses avantages et ses inconvénients. En apprendre quelques-uns, vous donnerait une excellente perception de ce qu'il faut utiliser et de la façon de l'utiliser efficacement lors de l'exécution d'un projet.

En tant que programmeur, vous pouvez vous spécialiser sur un PL spécifique, en l'utilisant comme votre seul outil pour résoudre tout problème, vous pouvez également connaître beaucoup de PL mais vous spécialiser sur rien et beaucoup plus entre ces extrêmes.

Peut-être que la personne qui vous a dit que "Phrase" est frustrée, peut-être que vous n'étiez pas la seule personne de contact à qui il a parlé.

connaître le problème et savoir quel ensemble de compétences est nécessaire pour être en mesure de résoudre le problème efficacement est une bonne caractéristique d'un programmeur. Hélas dans votre cas, puisque vous n'avez pas les compétences requises, vous pouvez peut-être référer votre personne de contact à un autre programmeur avec les compétences nécessaires.

à votre santé,

gardien

Dorward Villaruz
la source
1

Avoir les connaissances théoriques c'est bien. Être capable d' apprendre la langue de bas niveau lorsque cela est nécessaire est très important.

Mais en ce qui concerne "si vous vous appelez programmeur, vous devez savoir toutes ces choses", qui peut tout savoir sur tout? Avant même de les faire?

FrustratedWithFormsDesigner
la source
-2

Je vais reformuler

"si vous vous appelez un programmeur, vous devez savoir toutes ces choses"

À

"Si vous vous appelez programmeur, vous devez en savoir suffisamment pour pouvoir apprendre rapidement toutes ces choses"

Parag
la source