代码之家  ›  专栏  ›  技术社区  ›  Pauk

了解Windows内部结构?

  •  8
  • Pauk  · 技术社区  · 5 年前

    我想知道你们中是否有人了解windows的内部工作(内核、中断等),以及你们是否发现自己因此成为了一个更好的开发人员?

    你发现作为一个开发者,知识越多越好是一个好的座右铭吗?

    我发现自己学习了很多东西,思考了更多的理解,我会成为一个更好的开发人员。当然,实践和经验也会发挥作用。

    7 回复  |  直到 5 年前
        1
  •  8
  •   Terry Mahaffey    15 年前

    这是一个很简单的-绝对的(当然,假设你是一个主要在windows平台上的开发人员)。了解汽车发动机的工作原理会使许多常见的编程任务(调试、性能工作等)变得容易得多。

    Windows Internals 是标准参考。

        2
  •  6
  •   Pavel Radzivilovsky    15 年前

    我相信了解事物的本质是很有价值的。CLR/.NET到C++,原生ASM,ASM到CPU架构,从逻辑门建立寄存器和OPS,来自MOSFET的逻辑门,来自量子物理的晶体管,后者来自各自的数学设备(群论等)。

    理解低水平不仅会让你的想法不同,而且会让你感觉不同——就像你在掌控一切,站在巨人的肩膀上。

        3
  •  4
  •   tonylo Germán Diago    15 年前

    我不认为一个人需要特别或秘密的内部知识,例如那些可以扩展到windows团队成员或那些具有源代码访问权限的人,但我绝对认为了解内部知识有助于你成为一个更好的开发人员。

    以线程为例,如果您要构建一个以中等方式使用线程的应用程序—了解Windows的工作原理、线程的工作原理、内存进程的工作原理,都是能够很好地处理该代码的关键。

    我同意你的法令,但我不同意经验/实践/知识是相互排斥的。经验网就是你从经验中获得了知识。也有一个智慧的组成部分来体验和实践,但这些通常是无形的情景元素,你在未来应用,以避免错误。底线知识是经验的沉淀。

    这样想吧,你认识多少有30多年经验的人,想想他们,拿前两名。现在进入那个记忆库,想想你在这个行业认识的那些超级聪明的人,他们对很多事情都非常了解,然后选出其中的前两个。你现在有了你的最后4个-如果你不得不选择一个开始一个项目,它会是谁?我们总是选超聪明的人。

        4
  •  4
  •   Kristopher Johnson    14 年前

    更多的知识总是更好的,在多个层次上拥有知识比仅仅知道你正在工作的抽象层更有价值。

    一个好的经验法则是,你应该对你工作的那一层有很好的了解。例如,如果你写了很多.NET代码,你应该知道CLR是如何工作的。如果你写了很多web应用,你应该理解http。如果您编写的代码直接使用http,那么您应该了解tcp/ip。如果要实现TCP/IP堆栈,则需要了解以太网的工作原理。

    如果您正在编写本机win32代码,或者操作系统性能问题对您所做的工作至关重要,那么了解windows内部的知识将非常有帮助。在更高的抽象层次上,它可能没有那么大的帮助,但它永远不会造成伤害。

        5
  •  3
  •   Computer Linguist    15 年前

    是的,了解windows的内部结构帮助我成为一个更好的程序员。它也教会了很多不好的实践,不好的想法和糟糕的设计理念。

    我强烈建议学习os x或linux的内部机制作为一种替代方案。这将花费更少的时间,更有意义,更有成效。

    读取代码。阅读大量代码。阅读大量 好的 代码。jquery,django,air框架源代码,linux内核,编译器。

    尝试学习向您介绍新方法的编程语言,如lisp、ruby、python或javascript。OOP很好,但是.NET和Java似乎对它采取了洗脑的方法,并将其提升到某种宗教级别,而不是在工具箱中成为一个好工具。

    如果你不理解你正在阅读的代码,这可能意味着你走上了正确的道路,并学习了新的技术。

    我建议你买一个mac,因为你会发现你想让你的ui更简单。如果你想成为一名优秀的程序员,拥有一个良好的环境是非常重要的。让自己置身于比自己更好的工程师之中(如果可以的话),使用采用“工程师”方法与“实验者”方法的框架和语言,并且……使用包含比您的代码更好的操作系统。

    我也会把这本书收回来” Coders at Work “。

        6
  •  2
  •   SpliFF    15 年前

    这取决于。许多理解系统内部的程序员开始编写优化的代码来利用这些知识。这有三个非常严重的副作用:

    1)如果没有这些知识,其他人就很难扩展或支持代码。

    2.)系统内部可能会在没有通知的情况下进行更改,而接口通常会进行版本控制并公开讨论更改。

    3.)跨平台修订版和硬件的接口通常是一致的,内部不具有这种一致性。

    简言之,有很多坏的、不可支持的代码被篡改了,因为它依赖于一个内部流程,供应商在没有通知的情况下更改了该流程。

        7
  •  1
  •   Ganesh K    7 年前

    C语言之父说:“你不需要学习语言的所有特征就可以写出好的代码。你越了解这个问题,你就越能写出代码。