35 votes

Apprendre l'API win32 en vaut-il la peine?

J'étais certain que quelqu'un aurait demandé expressément de cette question, mais d'après ce que je vois, personne n'a (il y a eu une question à propos de l'apprentissage win32 , mais qui ne couvre pas si ça vaut le coup de le faire).

Je suis très intéressé à acquérir une compréhension plus profonde de tous les systèmes que j'utilise (j'ai surtout programme en C#, au moins professionnellement), donc je me demandais, très simplement, de l'est de l'apprentissage win32 peine, ou est-il exagéré? Suis-je perdre mon temps? Est la connaissance que j'avais de gain en vaut la peine?


Similaire ou connexe questions sur StackOverflow:

Est-il encore un sens, à savoir le faible niveau de la WinAPI de programmation?
Quelle est la pertinence de la programmation Win32 moderne professionnels?

25voto

Andrew Grant Points 35305

Avoir une connaissance pratique de la façon dont Win32 fonctionne au niveau le plus bas sera certainement inestimable si vous projetez de faire du développement de windows à l'avenir. Il vous donne un niveau de connaissance de choses comme Windows, Messagerie et GDI qui sont cachés par le temps que vous atteindre le niveau de .NET.

Je ne vous recommande pas d'essayer et d'utiliser Win32 pour l'écriture de toutes vos applications, mais j'ai l'impression que n'importe quel Windows développeur serait à l'avantage de l'écriture d'une simple application Win32 l'aide de C/C++.

Cela est moins vrai pour les choses comme WPF où il y a moins de dépendance sur Win32, mais rien que de savoir comment Win32 œuvres de vous aider à comprendre ou à comprendre certaines décisions de conception en WPF.

20voto

Glenn Points 3787

Je plaide pour l'apprentissage des concepts de base de faible niveau de programmation de windows si toutes les conditions suivantes sont remplies.

  1. Vous allez faire toute la programmation sous windows.
  2. Vous voulez être le "aller à" gars quand l'inexplicable se produit.
  3. Vous aimez apprendre.

Des couches d'Abstraction comme .FILET de créer et de permettre aux développeurs de faire des choses incroyables sans avoir à connaître beaucoup de choses. Toutefois, lorsque .NET est utilisé d'une manière imprévue par ses auteurs, qui révèle l'un de ses bogues subtils, alors que c'est le moment où certaines API win32 connaissances va un long chemin.

Sera jamais vous avez un écrire un message à pompe? J'en doute. Peut-il nous aider à diagnostiquer des problèmes? Vous betcha!

15voto

Paul Nathan Points 22910

La question ressemble beaucoup à: "Est-ce que l’ assemblage en vaut la peine"; et la réponse est la même:

"Oui, car vous comprendrez les fondamentaux et serez capable de percevoir plus profondément que ceux qui ne travaillent qu'au niveau le plus élevé de l'abstraction".

Cependant, du même coup, vous n'écrirez probablement pas directement l'API Win32 99,5% du temps.

9voto

Steve Hanov Points 3685

Quand ils ont inventé C pour remplacer le langage d'assemblage, les gens posent la question suivante: "est-il utile d'apprendre le langage assembleur?" La valeur en sachant que les deux était d'être en mesure de déposer à l'assemblée pour faire les choses qui étaient impossibles à réaliser en C (par exemple. déclencher une interruption).

La même chose peut être dit pour Win32. Il y a certaines choses qui sont impossible à faire en C#. Si vous ne connaissez pas l'api win32, puis vous rejeter certaines choses comme étant impossible. Cependant, une fois que vous savez ce qui vous manque, dans ces rares cas, vous pourriez être en mesure de "déposer win32" et les faire.

Une autre façon de voir les choses, c'est cela: la programmation est tout au sujet d'être en mesure de penser en plusieurs niveaux d'abstraction dans le même temps. Par exemple, si vous savez que votre langue utilise les cordes immuables, vous n'avez pas d'écrire un algorithme qui ajoute un caractère unique pour un 10000 fois, parce que ce sera lent. Si vous connaissez l'api win32, vous serez en mesure de réfléchir sur la façon dont chaque ligne que vous écrivez en C# est réellement mis en œuvre et qui vont vous aider à mieux écrire de code.

8voto

tvanfosson Points 268301

Au moins pour moi, l'apprentissage d'une API (je suis en supposant que "en profondeur" est implicite) que je n'utilise pas est une perte de temps. Je préfère passer mon temps limité et la puissance du cerveau et l'apprentissage de nouveaux concepts ou à explorer de nouveaux outils de devenir intimement familier avec l'outil existant que je n'ai pas besoin d'utiliser maintenant. Quand j'ai besoin d'un outil particulier que je n'ai pas ou utiliser un outil que je ne suis pas familier avec, c'est le temps de l'apprendre en profondeur. Avant que je puisse faire assez d'une enquête pour savoir si ça va être utile pour moi ou pas, mais pas beaucoup plus.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X