【问题标题】:C# for win32 or c++ [closed]C# for win32 或 c++ [关闭]
【发布时间】:2011-06-21 17:28:22
【问题描述】:

我知道 C++ windows 编程比 C# 难。因为我们应该创建 WNDCLASS 并初始化它并使用 API Funcs 和...

但是我的问题在这里,对于 Windows 编程,C# 比 C++ 好吗?

如果是,为什么用 C++ 创建大型程序。

【问题讨论】:

  • 是什么让你觉得没有大型程序是用C#创建的?你看过多少大型节目?
  • 哪些程序是用 C# 编写的?

标签: c# c++ winapi visual-c++


【解决方案1】:

当 C++ 优于 C# 托管代码时,它不是“大型程序”。

托管代码可以做的事情是有限制的,例如,您不能编写硬件驱动程序或其他与硬件接口的程序。您甚至无法从纯托管代码访问所有 Win32 API。有些程序对性能有很高的要求,因此更适合 C++。有时使用 C++ 仅仅是因为开发软件的公司拥有熟练的 C++ 开发人员。有时使用 C++ 是因为开发人员不希望软件依赖于 .NET 框架(在 XP 和更早的 Windows 版本上未开箱即用地安装该框架)。有时会选择 C++,以便开发跨平台应用程序。

从广义上讲,C# 比 C++/MFC/COM 等更容易学习,是一种更强大、更高效的语言和框架。但是 C++ 是一个非常广泛的工具,可以为许多非常多样化的问题提供解决方案,从编写操作系统、实时系统、嵌入式应用程序、数据库、商业软件、桌面软件、服务器软件、库/框架等。

C# 更适合特定类别的问题。它几乎仅限于在 Windows 上运行(Silverlight 和 Mono 除外)。 C# 适合快速应用程序开发,这意味着它更适合一次性定制软件,例如在大型组织中开发的许多内部应用程序。正如我所指出的,它更适合于开发桌面和服务器应用程序软件而不是驱动程序和其他低级软件。

如果您正在考虑开始学习哪种语言,明智的选择是:C 然后 C++ 然后 C#。这将为您提供成为真正优秀的面向对象程序员所需的基础,并了解我们拥有 C# 是多么幸运!如果你没有 10 年的空闲时间,那就从 C# 开始吧。无论你做什么,都不要从 C++ 开始,否则你很可能会在绝望中放弃你的编程生涯并加入更有意义的马戏团。

【讨论】:

  • 我同意 C# 更容易学习和更高效,但我会说 C++ 是更强大的语言。 C#(主要是)OOP; C++ 是多范式的。特别是,C++ 具有内置的函数式语言,可以将编译器编程为代码生成器(模板元编程)。
  • 我猜“强大”是一个非常主观的词。我认为“强大”意味着“赋予程序员权力”,这正是我对 C# 的感受——我觉得我可以做任何事情(在我的问题领域内),并且该语言可以提供帮助。
【解决方案2】:

如果我可以从头开始我过去完成的所有 c++ 项目,那么 99% 的代码将在 .NET 中。尤其是在 UI 方面。 WPF、Winforms 比 MFC 强大得多。

您将开发什么类型的程序?请详细说明,然后我们可以提出建议。

** 编辑

一个很好的例子是 Visual Studio 本身。 VS 2010 现在基于 WPF。

【讨论】:

  • 例如使用 C++ 创建的记事本++。如果他们
    用C#而不是纯api编写会发生什么。
  • 看看SharpDevelop。这是一个用 C# 编写的开源 IDE
  • 我不是notepad++的专家,但是如果我要开发它,我会使用c#。我想不出我会使用 c++ 的任何理由。请记住,您可以轻松地从 c# (PInvoke) 调用任何非托管 c++ dll。在 .NET 中编写 UI 代码要好得多
  • 在某些复杂平台上实现文本查看器/编辑器(或 Windows 的注册表编辑器)通常是一个坏主意,因为当该平台配置错误时,您需要使用的工具来修复它也坏了。
  • 我很高兴你说的是 .NET,而不是“C#”。因为真正强大的是框架,而不仅仅是语言。
【解决方案3】:

更好?更好怎么做?更轻松?快点?

C++ 是一个难学的怪物,它庞大而复杂。 C# 相当“友好”且更易于使用。 C# 通常让您比 C++ 更快、更轻松地完成任务,因为该语言及其框架为您做了很多工作。这是 C# 优于 C++ 的部分原因,也是 C++ 优于 C# 的部分原因。

如果您让 C# 为您完成工作,这意味着您作为程序员牺牲了一些控制权。这就是将高级语言与低级语言区分开来的原因。对于要求的应用程序,程序员倾向于选择一种语言,它提供必要的抽象量,同时仍提供所需的控制。这就是为什么许多要求的应用程序(例如视频游戏)是用 C++ 编写的。它具有相当多的高级功能,同时仍具有强大的功能,可以在需要绝对控制硬件的情况下提取真正的低级代码。这也是为什么许多业务应用程序和其他要求不高的应用程序是用 C# 等高级语言编写的,因为这些应用程序不需要低级功能,并且可以安全地享受高级功能的收益而不必担心性能处罚。

在 C# 的情况下,使用它创建的所有应用程序都在 .NET 运行时环境中运行。这对于需要快速运行的程序来说是一个缺点,因为您希望尽可能靠近硬件。因此,对于执行速度或内存使用至关重要的要求应用程序,C++ 再次胜出。此外,C++ 可以在非常多的平台上使用,从 PC 到咖啡机(好吧,然后是手机),而 C# 官方仅限于运行 Microsoft Windows 的平台。

至于在 Windows 上的易于开发,C# 无疑是赢家。也有适用于 C++ 的框架,但在快速轻松地完成工作方面,它们甚至与 C# 相差甚远。也就是说,完全有可能用 C++ 为 Windows 编写复杂的 GUI 应用程序,而不用说太多。

无论如何,我希望您能明白比较这样的语言是多么没有意义。这很像将锤子与螺丝刀进行比较。选择一种语言就是为工作选择正确的工具。许多工具重叠 - 您可以在 C++ 和 C# 中完成几乎相同的操作,这使选择变得复杂。如果您真的想阅读此内容(寻求“受过教育的选择”),我建议您阅读各种语言。如果您只是想知道要学习哪种语言,我建议您从 C# 开始,如果需要(或想要)学习 C++。

【讨论】:

    【解决方案4】:

    C++ 和 C# 都是非常好的语言,虽然它们都有自己的专长。

    C++ 非常适合需要高度优化内存和 cpu 使用的应用程序,例如非常低级的设备驱动程序开发

    C# 在创建业务应用程序(如会计和数据库驱动应用程序)方面要优越得多,如果您尝试用 C++ 构建它们可能需要很长时间

    总之

    C++ is for applications which require highly optimized memory and CPU usage.
    C# is far productivity and enterprise applications 
    

    【讨论】:

    • 例如使用 C++ 创建的记事本++。如果他们
      用 C# 而不是纯 api 编写会发生什么。 notepad++ 是编辑器。
    • 他们仍然可以在 C# 中创建像 notepad++ 这样的应用程序,我想它会更加可插入,基于 Web,在线更新会容易得多。另一方面,它可能会消耗更多的内存,这在人们看来是负担得起的
    猜你喜欢
    • 1970-01-01
    • 2012-08-30
    • 2013-06-21
    • 2014-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多