我确信有人会特意问过这个问题,但是从我看不到的人那里(有关于学习win32的问题,但这并不包括它是否值得这样做).
我非常有兴趣深入了解我使用的所有系统(我主要是用C#编程,至少是专业的),所以我很想知道,非常简单 - 学习win32值得,还是有点过分?我在浪费时间吗?我获得的知识值得付出努力吗?
StackOverflow上的类似/相关问题:
And*_*ant 24
如果您计划在将来进行Windows开发,那么掌握Win32如何在最低级别工作的工作知识肯定是非常宝贵的.它为您提供了对Windows,消息传递和GDI等内容的深入了解,这些内容在您达到.NET级别时会被隐藏.
我不建议您尝试使用Win32编写所有应用程序,但我觉得任何Windows开发人员都可以从使用C/C++编写简单的Win32应用程序中受益.
对于像WPF这样对Win32的依赖性较小的事情来说,情况就不那么正确,但只知道Win32如何工作将有助于您理解或欣赏WPF中的一些设计决策.
Gle*_*enn 20
如果满足以下所有条件,我主张学习低级Windows编程背后的概念.
像.NET这样的抽象层可以创建并允许开发人员在不必了解很多东西的情况下完成令人难以置信的事情.然而,当.NET以其作者未曾预料到的方式使用时,它揭示了其中的一个微妙的错误,那么这是一些win32 API知识长期存在的时间.
你会不得不写一个消息泵?我对此表示怀疑.它可以帮助诊断问题吗?完全正确!
Pau*_*han 15
问题很像是"学习集会是否值得"; 答案是一样的:
"是的,因为你会理解基础知识,并且能够比那些只在顶层抽象工作的人更深刻地感知".
但是,出于同样的原因,您可能不会在99.5%的时间直接编写Win32 API.
当他们发明C代替汇编语言时,人们可能会问:"学习汇编语言是否值得?" 知道两者的价值在于能够降低到装配以完成在C中无法完成的事情(例如触发中断).
Win32也是如此.在C#中有些事情是不可能做到的.如果你不知道win32 api,那么你会认为某些事情是不可能的.但是,一旦你知道自己缺少什么,在极少数情况下,你就可以"掉到win32"并做到这一点.
另一种看待它的方式是:编程就是能够同时在多个抽象层次中进行思考.例如,如果您知道您的语言使用不可变字符串,则不会编写将单个字符添加到10000次的算法,因为它会很慢.如果你知道win32 api,你将能够思考你在C#中编写的每一行是如何实际实现的,这将有助于你编写更好的代码.
至少对我来说,学习一个API(我假设"深入"是暗示的),我不使用是浪费时间.我宁愿花费我有限的时间和脑力学习新概念或探索新工具,而不是非常熟悉我现在不需要使用的现有工具.当我需要一个我没有的特定工具或者不得不使用我不熟悉的工具时,那是时候深入学习它了.在此之前,我可能会做足够的调查,以了解它是否会对我有用,但不会更多.
是的,Win32 API的原理对学习很有用 - 这些原则是构建其他所有内容的基础.
用于GUI开发的.NET API,包括Windows.Forms和WPF,都可以在Win32 API之上的限制范围内完成它们的工作.这些框架的关键体系结构决策受到Win32 API的约束和通知.
另一方面,你不太可能从深入API中获得很多价值,因为有很多东西需要学习,而且考虑到你花费大部分时间在C#上工作,你将有更少的机会直接使用知识.
顺便说一句,这同样适用于其他技术 - 如网络,加密和硬件设计.学习基础知识将帮助您成为更好的开发人员.
如果您尝试编写 VB6 应用程序,那么 Win32 API 允许您执行许多 VB6 本身不支持的操作。
如果您正在编写 C# WinForms 应用程序,那么我建议您首先学习 .NET Framework 的广泛内容。
如果您确实想了解 Windows 的底层原理,那么您可能需要查看Charles Petzold 所著的《Programming Windows 3.1》副本。
| 归档时间: |
|
| 查看次数: |
10544 次 |
| 最近记录: |