V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
otmb
V2EX  ›  程序员

windows 核心编程还有学习的必要么?

  •  
  •   otmb · 2015-01-08 22:32:48 +08:00 · 19837 次点击
    这是一个创建于 3641 天前的主题,其中的信息可能已经有所发展或是发生改变。

    听说MFC快死了,如果是这样,还学什么核心编程呢:(

    不过,貌似这本书挺经典的样子,要不要学呢,纠结了

    48 条回复    2018-01-16 15:27:27 +08:00
    illuz
        1
    illuz  
       2015-01-08 23:04:58 +08:00
    MFC 和 Windows 核心编程是两码事吧...
    yksoft1
        2
    yksoft1  
       2015-01-08 23:06:50 +08:00
    MFC会死,纯Win32估计还能撑几年
    vaNo
        3
    vaNo  
       2015-01-08 23:45:02 +08:00
    MFC的那套关于宏及类设计的奇技淫巧,还是要学滴....
    latyas
        4
    latyas  
       2015-01-09 00:04:04 +08:00
    windows 核心编程不是指mfc吧
    otmb
        5
    otmb  
    OP
       2015-01-09 00:26:43 +08:00
    @vaNo 学这货干啥?
    azurefang
        6
    azurefang  
       2015-01-09 01:04:18 +08:00
    赚钱还是学移动开发好。
    xdeng
        7
    xdeng  
       2015-01-09 01:11:15 +08:00 via iPhone
    一看新手
    gdgoldlion
        8
    gdgoldlion  
       2015-01-09 01:17:06 +08:00
    不要深入Native这种坑
    就业面窄,压力大,学东西难 ,上班累

    走Web,资源多,人nice,生态更开放
    工作好找,东西也不易过时
    em70
        9
    em70  
       2015-01-09 01:37:57 +08:00 via Android
    win32可以学Delphi,学习和开发成本都低,MFC说实话在win32平台真不如VCL
    Vkme
        10
    Vkme  
       2015-01-09 01:50:24 +08:00 via iPhone   ❤️ 1
    学过,当时还做了个小玩意儿呢,现在都忘得差不多了。
    hjc4869
        11
    hjc4869  
       2015-01-09 01:59:32 +08:00
    楼主如果是自己搞开发,建议.NET
    如果是被迫学的MFC(←可能吗),那就好好学,学完好转……
    不然白白浪费了时间。
    otmb
        12
    otmb  
    OP
       2015-01-09 02:26:41 +08:00
    @em70 你在用Delphi?
    otmb
        13
    otmb  
    OP
       2015-01-09 02:33:21 +08:00
    @em70 mfc开发速度快点?
    em70
        14
    em70  
       2015-01-09 02:35:46 +08:00 via Android
    @otmb Delphi开发快得多,特别开发小软件,Delphi优势巨大
    otmb
        15
    otmb  
    OP
       2015-01-09 02:38:52 +08:00
    @em70 是不是VB更赞呢?
    em70
        16
    em70  
       2015-01-09 02:43:03 +08:00 via Android
    @otmb VB像个玩具,Delphi同时具备VB的效率和VC的严谨,大项目可能不如VC
    otmb
        17
    otmb  
    OP
       2015-01-09 02:44:24 +08:00
    @em70 现在用delphi的人不多了吧?
    otmb
        18
    otmb  
    OP
       2015-01-09 02:44:59 +08:00
    @hjc4869 .NET做界面,好像机制和MFC差不多,只是编程语言不同?
    hjc4869
        19
    hjc4869  
       2015-01-09 02:52:55 +08:00
    @otmb .NET主要是用WinForms或者WPF
    WinForms是基于事件的一组api,用起来跟MFC确实差不多,不过开发效率挺高。
    WPF基于DirectX,是比较先进的UI技术,数据驱动的。

    举个例子,现在MS自己开发软件,比如Visual Studio 2013就是用的WPF。。
    VC6时代的IDE记得是用MFC开发的。。所以哪个是主流这样看的很清楚。
    对于新设备,触摸屏,高dpi等支持,肯定还是.NET更好。
    em70
        20
    em70  
       2015-01-09 02:58:14 +08:00 via Android
    @otmb 资料,控件,社区都不缺,XE3以后还能开发mac os平台的软件,同一个工程可以编译win和mac
    两个平台运行的可执行文件。
    otmb
        21
    otmb  
    OP
       2015-01-09 03:03:43 +08:00
    @em70 Borland好像被收购了,现在Delphi系列产品还有人维护么?
    datou552211
        22
    datou552211  
       2015-01-09 08:02:49 +08:00
    web 和 移动
    meta
        23
    meta  
       2015-01-09 08:55:05 +08:00
    看完上面二十多楼,感觉又回到了十年前,多么怀念啊。
    andy1987
        24
    andy1987  
       2015-01-09 08:59:42 +08:00
    这个书更多是介绍如果通过系统API和系统进行交互的,还是很值得一读的,所以请抛开MFC去阅读这本书
    yangyanggnu
        25
    yangyanggnu  
       2015-01-09 09:16:45 +08:00   ❤️ 5
    我个人觉得 win32 的 SDK 和 DDK 都有研究的必要,对于了解系统运作非常有帮助。这些根基的知识不会有过时之说。MFC 是对 win32 不严谨的封装,所以,你要的是 win32 而不是 MFC。

    win32 相关书籍:

    《Programming Windows (5th Edition) 》: http://www.amazon.com/Programming-Windows-5th-Developer-Reference-ebook/dp/B00JDMP71S/ref=sr_1_2?ie=UTF8&qid=1420765395&sr=8-2&keywords=windows+programming

    《Programming Windows》: http://www.amazon.com/Programming-Windows®-Fifth-Microsoft/dp/157231995X/ref=sr_1_2?s=books&ie=UTF8&qid=1372211708&sr=1-2

    《Windows via C/C++》: http://www.amazon.com/Windows-via-Pro-Jeffrey-Richter/dp/B00B9ZFGRW/ref=sr_1_1?s=books&ie=UTF8&qid=1372211040&sr=1-1

    《Windows Internals》-part1: http://www.amazon.com/Windows-Internals-Part-Covering-Server/dp/0735648735/ref=sr_1_5?s=books&ie=UTF8&qid=1372211273&sr=1-5&keywords=David+A.+Solomon

    《Windows Internals》-part2: http://www.amazon.com/Windows-Internals-Part-Covering-Server/dp/0735665877/ref=pd_bxgy_b_img_y

    另外,windows 的内核源码也有研究必要,从我经验来看,获取 windows 内核源码至少有三个渠道:reactOS、wine、Windows Research Kernel、win2K 泄漏源码。多年前有国外组织对 windows 内核进行逆向工程,诞生了 reactOS 和 wine 两个项目,前者是类 window 操作系统,与 window 在 API 级别兼容,后者是在非 windows 系统上运行 win32 程序的中间层,逻辑上,与 window 在 ABI 级别兼容;Windows Research Kernel,M$ 向高校和政府开放的用于研究的部分内核源码,通过某些特殊渠道你可以拿到;win2K 泄漏源码,大约在 2K4 年发生的事件,你知道那儿有。

    前三者分别对应三本名著:毛德操的《Windows 内核情景分析—采用开源代码ReactOS(上、下册)》、wine官网的《Wine Developers Guide》、潘爱民的《Windows内核原理与实现》。

    如果以上知识你都消化得差不多了,还想提升,可以研究下 rootkits。

    P.S., DDK 我没觉得有几本名著,所以,不推荐了。
    sujin190
        26
    sujin190  
       2015-01-09 09:21:01 +08:00
    mfc现在用得可能不多,但其中很多设计思想对初学者还是有很大帮助的,核心编程不得不说是本好书,可以一看
    yuankui
        27
    yuankui  
       2015-01-09 09:29:15 +08:00
    小朋友,我告诉你
    现在这个年代 学windows编程基本就是作死。。
    要么移动,要么web,你选吧。。
    likebeta
        28
    likebeta  
       2015-01-09 09:31:41 +08:00
    学的主要是思想, 过时的是mfc以及api,其他的不便
    zkd8907
        29
    zkd8907  
       2015-01-09 09:36:49 +08:00
    Windows核心编程和MFC有毛关系啊 = =
    sharebox
        30
    sharebox  
       2015-01-09 09:37:29 +08:00
    不管实际项目有没有用到,如果是在windows平台开发,有学习一下的必要,除了核心编程,还有楼上推荐的几本书,看完之后对windows运作的一些机制会有个大体的了解,核心编程里面的内容估计和MFC没多大关系 ,MFC只是一个开发框架。MFC其实也有了解一下的必要,倒不是说一定要用,可以看看侯捷翻译的深入浅出,一步步自己实现类MFC的框架,可以学到很多东西。大家都比较推荐Delphi, VB, 只能说各有所长吧, 我接触到的工业级别的项目,尤其是国外的,windows平台下很多都是VC的工程...... ,不过VCL开发确实比较方便快捷,我也喜欢,主要看需要。以上内容拿来学习研究就可以了,如果真要在工作中开发windows程序,除非客户还在用winxp,不然桌面程序还是直接上WPF吧。
    LittleMK
        31
    LittleMK  
       2015-01-09 09:42:44 +08:00
    如果你想开个什么东西,还是直接.NET吧。如果你个人对windows 核心编程类似的内容非常兴趣,学习一下肯定对自己有帮助
    em70
        32
    em70  
       2015-01-09 10:13:03 +08:00
    @otmb 卖给embarcadero了,每年一个新版本,目前路线是全平台,采用firemonkey和VCL两种框架,firemonkey支持win,mac,ios,android跨平台开发, linux后面也会支持. 如果只是win32平台开发,巅峰版本D7还是用得很多得. 掌握PC软件开发技能还是很有价值的,毕竟PC永远不会死
    thfurior
        33
    thfurior  
       2015-01-09 10:53:45 +08:00
    同打算学的被楼上几位吓得不敢说话
    Drinking
        34
    Drinking  
       2015-01-09 10:58:48 +08:00
    有一本全新的 《Windows程序设计(第5版·珍藏版) 》,楼上有需要么,半价出了。买来就没看过,真是珍藏了
    akagi
        35
    akagi  
       2015-01-09 11:18:50 +08:00
    前一段翻了下,书写得不错,东西有点老,不过微软恐怖的兼容性,倒也不算落伍。如果是学习Windows的一些机制,这本书值得一看;当成API小全,那还是免了。
    akagi
        36
    akagi  
       2015-01-09 11:22:04 +08:00
    @yangyanggnu 真有人看得完毛德操上下么……
    otmb
        37
    otmb  
    OP
       2015-01-09 13:48:46 +08:00
    @yangyanggnu win2K泄露源码可以编译么?
    otmb
        38
    otmb  
    OP
       2015-01-09 13:49:22 +08:00
    @likebeta 不会mfc,学得懂内核编程思想么:(
    semicircle21
        39
    semicircle21  
       2015-01-09 14:37:53 +08:00
    @em70 你暴露年龄了~
    yangyanggnu
        40
    yangyanggnu  
       2015-01-09 15:12:11 +08:00
    @akagi
    真有人看得完毛德操上下么……
    —— 也就 1.5 倍《c++ primer》的厚度嘛,(✿ ♥‿♥)


    @otmb
    win2K泄露源码可以编译么?
    —— 这不是 win2k 完整系统的源码,只是内核的,分模块可以编译通过。

    不会mfc,学得懂内核编程思想么
    —— MFC 和 windows 内核没关系,MFC 只是对 win32 API 的封装,如果追求开发效率,你可以考虑 wxwidget,更现代的封装实现,并且还带来_原生_跨平台能力。
    liuzhedash
        41
    liuzhedash  
       2015-01-09 16:30:53 +08:00
    MFC和Windows核心编程没有绝对的学习上的因果关系
    但是Windows核心编程中的很多知识有助于你理解MFC
    如果你还在搞MFC。。。尽量使用先进点的技术
    如果你只是想学习Windows相关的东西,那Windows核心编程是肯定要看的
    Narcissu5
        42
    Narcissu5  
       2015-01-09 17:02:03 +08:00
    @yangyanggnu 从程序开发的角度上来说,不用挖这么深,甚至不能挖这么深。

    任何msdn没有描述的接口和行为,在windows中的更新中都会在未通知的情况下更改。这时候套用《windows via c/c++》的话来说,你的代码“在火焰中化为一片灰烬了”
    akagi
        43
    akagi  
       2015-01-09 18:01:28 +08:00
    @yangyanggnu 唔,自愧不如。
    spacewander
        44
    spacewander  
       2015-01-09 18:45:20 +08:00
    可怜的Windows平台……都没人搞Windows系统编程了么?
    ragnaroks
        45
    ragnaroks  
       2015-01-10 09:15:51 +08:00
    Windows建议上.net,WPF真心优秀.而且微软要是完全开源,linux下说不定也能编译.
    huangzhidu
        46
    huangzhidu  
       2015-01-10 16:07:27 +08:00 via iPad
    @gdgoldlion 听起来像是各种培训学校的广告。。。kernel很好找工作
    gdgoldlion
        47
    gdgoldlion  
       2015-01-10 21:46:15 +08:00
    @huangzhidu =。=,哈哈,已入坑的,真不希望再有人跳
    byaiu
        48
    byaiu  
       2018-01-16 15:27:27 +08:00 via Android
    @Drinking 请问这本书还有吗
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2535 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 04:32 · PVG 12:32 · LAX 20:32 · JFK 23:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.