【问题标题】:C++ or Python for C# programmer? [closed]C# 程序员的 C++ 或 Python? [关闭]
【发布时间】:2009-10-07 21:52:52
【问题描述】:

我是一名企业 C# 程序员。我找到了一些时间来投资自己,并偶然发现了一个两难境地。从今往何处去? C#/.NET 易于学习、开发等。未来我想申请微软或谷歌,并希望明智地利用业余时间,所以我所学的东西将来会蓬勃发展。

那么:对于 C# 程序员来说是 Python 还是 C++?我有点害怕 C++,因为在其中开发任何东西都需要很长时间。 Python 很简单,但我认为它是一种儿童游戏语言,它仍然需要大量修补才能成为一些成熟的开发工具/语言。

任何 C# 开发人员有同样的困境?

【问题讨论】:

  • 虽然我在某些方面同意你的观点,但我很惊讶你因儿童游戏评论而受到抨击:)
  • 这是相当主观的。因为如果你想为..比方说谷歌浏览器编写代码,你将需要 C++,如果你想为 GAE 编写代码,你将需要 Python。因此,您的问题没有正确答案。
  • @lagerdalek,你的意思是还没有被烧死吗?我没有看到任何火焰。 Neverlander 的声明是如此荒谬,很难知道从哪里开始。 Neverlander 不了解 Python,对一般语言了解不多,但感觉有资格宣称 Python 不成熟。荒谬。

标签: c# c++ python


【解决方案1】:

我有点害怕 C++,因为用它开发任何东西都需要很长时间。

当你说自己没有这门语言的经验时,我不知道你怎么能这么说。 C++ 对某些事情来说是一个很好的工具,Python 对其他事情也有好处。您想要做的事情应该是推动这个决定,而不是技术本身。

不管是不是C#程序员,我认为你可以学习任何语言,但语言只是一种工具,所以你的问题很难回答。

【讨论】:

    【解决方案2】:

    Python 可能更容易上手,但动态类型的脚本语言是与 C# 或 C++ 非常不同的语言。比起跳到你已经知道的语言的近亲,你会学到更多关于编程的知识。确实,对至少一种脚本语言(Python、Perl 和 Ruby 是最喜欢的)非常熟悉应该是所有程序员的要求。

    【讨论】:

    • 我认为,抛开语法不谈,C# 与 C++ 也非常不同。 C# 和 C++ 之间的类型系统更相似,但 C# 和 Python 处于同一抽象级别。
    • 一点也不。后期绑定、作为语法的高级数据结构、符号表的运行时可变性、鸭子类型——这些都是与静态类型语言不同的东西。这不仅仅是关于抽象本身,而是关于语言中的自然“事物”是什么。在 perl 或 python 中思考与在 C/C++/C#/Java 中思考非常不同。
    • 我并不是说 C# 比 C++ 更接近 Python,我只是说两种方式都有很大的不同,而且学习 C++ 需要更长的时间(嗯,真的 了解细节)
    • 缺乏垃圾收集使得 C++ 成为一种与 C# 或 Java 相比非常不同的编程语言(无论是好的还是坏的特征;-)——大致相同就像 Python 的鸭式打字一样 it.
    • 我认为这是夸大了。手动资源分配(文件描述符、磁盘文件、网络套接字等)是所有语言的通用范例。垃圾收集只是消除了对内存分配的需求,它不会像脚本那样改变“事情的完成方式”(除非你编写看起来像 C++ 的 python,在这种情况下,我认为你是没有抓住重点。)
    【解决方案3】:

    如果你想申请谷歌,那么 Python 可能是首选,MS 肯定已经喜欢 C#。如果不出意外的话,竞争不会像拥有多年 C++ 经验的人那样激烈。此外,Python 可以为您提供更广泛的语言技能,并且是通向更多语言和脚本的好途径。

    但如前所述,将再次提及,明智地选择您的工具,看看您要固定的是钉子还是螺丝。

    【讨论】:

    • Python、C++ 和 Java 是 Google 在其通用的“软件开发人员”职位中明确提及的 3 种语言。
    • @joemoe,是的,它们是我们的三种主要语言(尽管 Javascript 的重要性也在迅速增加)。
    【解决方案4】:

    C# 更接近于 Java 和 C++,而不是 Python,所以在两者中先学习 Python。

    不过,我的建议是:

    • 坚持使用您当前的语言并学习更多技术,例如更广泛的算法、函数式编程、合同设计、单元测试、OOAD 等。

    • 学习 C(专注于了解指针、多维数组、链表等数据结构以及内存分配/释放、文件句柄等资源管理)

    • 学习组装(在具有扁平内存架构的现代平台上,但做一些低级的事情,例如与硬件交谈或在画布上绘图)

    • 学习 Python 或 Ruby。很有可能,您会在了解以上所有内容的情况下坚持使用其中一种语言,除非到那时出现了一些热门的新语言。

    【讨论】:

      【解决方案5】:

      为什么不学习其中的一些。学习一门语言一周左右不会让你成为专家,但它会回答你脑海中的很多问题,并为未来播下种子。

      重要的是不要只通读练习。找到一些最多可以在一两页内编写的简单问题,并用每种语言解决它们。这将帮助您了解的思维方式以及如何解决问题的优势和劣势。

      【讨论】:

        【解决方案6】:

        C++ 通常用于速度快且涉及低级操作系统访问的情况。 如果您想扩展,这是一项很好的技能。

        Python 让您可以快速完成任务,而且它非常容易学习,并且提供的功能比您对脚本语言的预期要强大,并且可能是目前最快的语言之一。

        C++ 的开发速度并不慢,如果你有一个 IDE,编写本身并不难,但语法会让你受益。

        【讨论】:

          【解决方案7】:

          如果你想申请谷歌和/或微软,那么我会说两者你都需要!

          如果有更多选择,可能是 C++ 和另一种语言 - 动态、函数或两者兼有(Scala 也可能是一个不错的选择)。

          这不一定是关于你是否会使用这些语言本身,而是更多关于它们需要和鼓励的不同方法。

          如果您继续对 C++ 感到“害怕”,那么您可能很难在其中任何一个组织中申请成为开发人员 - 除非您在其他地方非常专业。

          【讨论】:

            【解决方案8】:

            我想你只是问错了问题。这与工具本身无关。它应该是关于你真正喜欢创建什么样的软件。 C++ 用于创建用 C# 或 Python 编写的不同类型的应用程序。请注意,C# 或 .NET 本身并不容易学习。开发一些以某种方式工作的东西可能很容易,但如果你只是深入研究细节......

            无论如何,我的观点是:如果您对开发 Web 解决方案感兴趣:选择 Python。目前有很多关于 Python 的炒作,甚至 Microsoft 也意识到了这种语言的强大功能(您可以利用自己的 .NET 知识和使用 IronPython 进行 Python 编程)。 C++ 目前用于某些特定领域。商业应用程序主要是用 Java 或 .NET 编写的,C++ 仍然适用于更底层的编程,在性能是关键的领域(我的意思是“性能”作为语言/平台本身的性能)。游戏行业就是一个很好的例子:Java 和 C# 肯定比 C++ 更容易学习,但是……有多少“大游戏”完全是用 C#/Java 创建的?

            我给你的另一个建议是:如果你想为微软或谷歌工作,不要专注于语言本身。这不是最重要的事情。专注于解决问题、算法和其他东西 (Stevie Yegge's post about how to prepare for an interview at Google)。 哦,当然,作为 C++(以及 C#)的粉丝,我必须承认这不是真的,用 C++ 开发任何东西都需要很长时间。您可能将 C++ 视为“C with clasees”——看看 STL、模板、高级模板、Boost ......不知何故,所有在游戏行业工作的人都设法在不那么长的时间内创造出越来越好的游戏其他人用 Java/C# 创建“无聊而简单”的业务应用程序。

            【讨论】:

            • 尽管在游戏行业我们通常不使用 STL 或 Boost!
            • 是的,我听说 STL 和 Boost 不是每个游戏开发者的标准工具集...但是你能告诉我为什么吗? (我想知道,因为我将在几周后开始为一家视频游戏公司工作)。哦……我发现你的博客很有趣:)
            • EA 的 Paul Pedriana 在这里列出了游戏开发与 STL 相关的问题(以及他们推出自己的游戏的动机):open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2271.html。简而言之,避免 STL 的最大原因是:1)性能和代码膨胀(任何说这不是问题的人都不应该在游戏中工作); 2)对内存分配策略的控制不佳—— STL 分配器不足; 3) 所有这些嵌套函数调用实际上都没有正确内联; 4) 不支持显式对齐; 5) 调试很痛苦。
            • 非常感谢您向我解释这些原因 :)
            【解决方案9】:

            您可能有兴趣查看 Windows Powershell。它是 Microsoft 最新的脚本技术,基于 .NET 构建,可以通过 C# 进行扩展。

            当然,它不像 C++ 或 Python 那样可移植,但它可以更轻松地利用您的 C#/.NET 体验。否则,我建议使用 C++(可能还有 C)。与 Python 相比,微软使用 C/C++ 构建的产品要多得多。

            【讨论】:

            • Powershell 脚本无法与 C++ 和 Python 等通用语言相比。
            • Lee,我承认 Powershell 作为一种语言与 C++ 或 Python 的功能不匹配。在 C#/.Net/寻找新事物的上下文中,它非常适合。我会投票赞成您的答案(推荐 C 和 ASM),但还不能这样做。
            【解决方案10】:

            作为熟悉 C# 和 .NET 的人,您应该考虑 IronPython。用于 .NET 的 Python。这将是一种很好的方式,可以利用您所知道的知识并同时学习一门新的动态语言。

            【讨论】:

            • 是的,如果他打算为未来的工作变动做准备,我不太确定。目前对 IronPython 开发人员的需求并不多。
            • 不能同意,因为 IronPython 与 python 太不同了,不能作为学习 python 的方法。是的,它将建立在他所知道的基础上,但他的目的是学习新事物。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2011-12-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-06-30
            相关资源
            最近更新 更多