Pendant des années, j'ai envisagé de creuser dans ce que je considère comme des langues de «bas niveau». Pour moi, cela signifie C et l'assemblage. Cependant, je n'avais pas encore le temps pour cela, et cela n'a jamais été nécessaire.
Maintenant, parce que je ne vois aucune nécessité, je pense que je devrais simplement planifier un moment précis où j'étudierai le sujet ou abandonner le plan pour toujours.
Ma position
Au cours des 4 dernières années, je me suis concentré sur les "technologies Web", qui peuvent changer, et je suis un développeur d'applications, qui est peu susceptible de changer.
Dans le développement d'applications, je pense que l'utilisabilité est la chose la plus importante. Vous écrivez des applications à "consommer" par les utilisateurs. Plus ces applications sont utilisables, plus vous avez de valeur.
Afin d'atteindre une bonne convivialité, je crois que les choses suivantes sont viables
- Bon design : fonctionnalités bien pensées accessibles via une interface utilisateur bien pensée.
- Exactitude : le meilleur design ne vaut rien, s'il n'est pas mis en œuvre correctement.
- Flexibilité : une application A doit évoluer en permanence, afin que ses utilisateurs n'aient pas besoin de basculer vers une autre application B, dotée de nouvelles fonctionnalités, que A pourrait implémenter. Les applications traitant le même problème ne doivent pas différer par leurs fonctionnalités mais par leur philosophie.
- Performance : La performance contribue à une bonne expérience utilisateur. Une application est idéalement toujours réactive et exécute ses tâches assez rapidement (en fonction de leur fréquence). La valeur de l'optimisation des performances au-delà du point où elle est perceptible par l'utilisateur est discutable.
Je pense que la programmation de bas niveau ne va pas m'aider, sauf pour les performances. Mais l'écriture d'une application entière dans un langage de bas niveau pour des raisons de performances est pour moi une optimisation prématurée.
Ma question
Que pourrait m'apprendre la programmation de bas niveau, quelles autres langues ne m'apprendraient pas? Suis-je en train de manquer quelque chose, ou s'agit-il simplement d'une compétence, qui est très peu utile pour le développement d'applications? Veuillez comprendre que je ne remets pas en question la valeur de C et de l'assemblage. C'est juste que dans ma vie quotidienne, je suis très heureux que toutes les subtilités de ce monde soient abstraites et gérées pour moi (principalement par des couches écrites en C / C ++ et assemblées elles-mêmes). Je ne vois tout simplement pas de concepts, cela pourrait être nouveau pour moi, seulement des détails avec lesquels je devrais me bourrer la tête. Alors qu'est-ce que ça m'apporte?
Ma conclusion
Merci à tous pour leurs réponses. Je dois dire que personne ne m'a vraiment surpris, mais au moins maintenant, je suis sûr de laisser tomber ce domaine d'intérêt jusqu'à ce que le besoin s'en fasse sentir.
À ma connaissance, l'écriture d'assemblages de nos jours pour les processeurs tels qu'ils sont utilisés dans les processeurs d'aujourd'hui est non seulement compliquée inutilement, mais risque d'entraîner des performances d'exécution moins bonnes qu'un homologue C. L'optimisation à la main est presque impossible à cause d'OOE, alors que vous n'obtenez pas toutes sortes d'optimisations qu'un compilateur peut faire automatiquement. En outre, le code est soit portable, car il utilise un petit sous-ensemble de commandes disponibles, soit optimisé, mais il ne fonctionne probablement que sur une seule architecture.
L'écriture en C n'est plus aussi nécessaire que par le passé. Si je devais écrire une application en C, j'utiliserais tout autant des bibliothèques et des frameworks testés et établis, qui m'éviteraient d'implémenter des routines de copie de chaînes, des algorithmes de tri et d'autres types de choses servant d'exercice à l'université. Mon propre code s'exécuterait plus rapidement au détriment de la sécurité des types. Je ne souhaite ni réinventer la roue au cours du développement normal des applications, ni essayer de déboguer en regardant les vidages de mémoire: D
J'expérimente actuellement avec les langues et les interprètes, donc s'il y a quelque chose que je voudrais publier, je suppose que je ferais porter un concept de travail en C, bien que C ++ pourrait tout aussi bien faire l'affaire.
Encore une fois, merci à tous pour vos réponses et vos idées.