从C ++工具到......?试图接触现代工具

时间:2009-07-11 06:34:30

标签: c# java c++

我是一名在Windows上开发的长期C ++程序员,并且一直使用Visual Studio开发非托管C ++。

在过去的2-3个月里,我第一次接触到了C#和Java的世界。伙计,我对生产力的提高感到震惊!

特别是:

  1. C#和Java有这么多酷 工具(TestDriven.NET,NetBeans IDE)。就个人而言,工具感觉更多 比我现在的C ++工具更现代 一直在使用。
  2. 所有图书馆都是 我可以马上使用, 没有我必须下载额外的东西 (Boost,Qt等)
  3. 超炫快速 编译时间。 C#编译是 超级快。每次我做出改变 我的Netbeans IDE上的Java代码 永远不必等待平时 编译/链接。它做得恰到好处 那里。没等了! (使用Boost的人可能会在编译时间很慢的时候同意我的意见,比如Asio库)
  4. 简单的部署方案。我真的很喜欢这样一个事实:我可以只编写一次代码,它可以在不同的机器(OS)上运行而无需重新编译它。
  5. 说了这么多,这是我真正的问题:C#和Java是学习最现代工具和库的好技术吗?这两种技术是否拥有最好的工具?我想接触新的工具来拓宽我的视野。这样我就可以从中学习,并尝试在C ++中找到相同的工具。

    免责声明:我的目的不是将C ++作为一种语言。在我使用了可用于Java和C#的工具之后,我觉得我可用于C ++的工具非常有限(特别是重构)。

    我将以下内容用于我的C ++开发:

    • VS.NET 08
    • Visual Assist X
    • 英特尔Parallel Studio(探查器)
    • TeamCity的
    • 我计划使用Bullseye和PC-Lint + Visual Lint进行代码检查

    澄清 当我要求工具时,我的意思是IDE中的工具,单元测试工具,重构工具等。 TestDriven.NET可能是最完美的例子。我只是喜欢我可以开始编写单元测试的事实,然后右键单击在IDE中运行这些测试!很难过,我无法在非托管C ++中获得同样的便利!

6 个答案:

答案 0 :(得分:4)

我也同意。无论是C#还是Java。两者都是非常现代的语言,并有一个巨大的社区贡献新的技术实现和框架。取决于您使用C ++移动到的字段,例如C#可以大大提高生产力。语言的选择也取决于你的领域。 Java在企业Web应用程序中是巨大的,对于初学者来说,不同的框架,快捷方式和技术的数量似乎是破碎的(有些确实倾向于过度指定,因此往往使事情过于复杂)。对于Java,Eclipse可能是最好的IDE(我使用Visual Studio已经有一段时间了,可能是我缺乏经验,但我真的很想念Eclipse在代码生成方面特别缺乏的功能)。

另一方面,C#非常适合.NET Framework - 当然 - 面向Microsoft。如果您以前使用C ++编写Windows for C#可能非常简单(因为从C ++切换到C#正是Microsoft希望C ++开发人员做的事情),绝对是桌面应用程序(.NET运行时环境的Linux端口)的更好选择不断变得越来越好。

我不得不从事C ++兼容性项目的工作,并尝试调整我用过的一些技术来处理Java,例如:多功能的Logging Frameworks或Test Driven开发到C ++,但事实证明它比我预期的更复杂和耗时。我个人的结论是,有些技术不适应C ++(或只是不成比例的努力),它们适合上述语言。

答案 1 :(得分:4)

我父亲的车库里装满了工具,其中很多我都没见过他。但他们都是出于某种目的。我认为值得努力使我的编程曲目变得强大。有时候我需要C ++的大枪,但对于很多事情,如果我能逃脱它,我一直在玩C#,Java,Ruby或Python。我们知道的越多,我们就越不受语言的支配。

答案 2 :(得分:2)

这些工具反映了编程语言。

C ++是一种成熟的编程语言,具有出色的工具支持,但由于语言的设计方式,这些工具可能不如同等Java / C#工具那么快或提供多种选项。

  • 单元测试:C ++社区对Java / C#社区的自动化单元测试不感兴趣。但是,UnitTest ++是一个优秀的轻量级测试库。
  • IDE:您已经在使用最好的C ++ IDE,但您也可以尝试使用QtCreator。
  • 图书馆:你可能只会设置一次,所以这不是什么大问题。我认为Qt至少和Java和.NET标准库一样好。
  • 编译时间:更好的物理设计,预编译头和更好的硬件。除此之外,C ++编译可能永远不会像Java / C#那样快。
  • 简单的部署方案:.NET和Java的部署并不简单,即使它看起来如此。有关.NET恐怖故事,请参阅paint.net博客。 我在Linux上部署Java项目,我在安装程序中打包JRE以避免冲突。 跨平台开发很难,WORA是一个神话。 ; - )

答案 3 :(得分:1)

嗯,我觉得你回答了自己的问题。鉴于您在C ++ / Windows中的背景,毫无疑问,接触市场上最富有的两种语言/工具集/社区(.NET和Java)将是一场胜利。管理语言工具与其本地对应工具的清洁度确实允许这些工具专注于解决问题,而不是处理DLL导出和7种原生字符串类型的细节。

答案 4 :(得分:1)

我不同意。我不得不用Java,C ++和C#开发桌面应用程序。最好的语言取决于您必须开发的软件! 如果您需要一个具有实时和3D问题的快速软件来解决,最好的选择是C ++。 如果应用程序更多位于“管理”或“管理”字段中,则可以在Java和C#之间进行选择。 而且,你已经开发了C ++ / Qt ??这个框架现在是LGPL许可证! KDE,TortoiseSVN,Skype,GoogleEarth ..用Qt开发软件的一些例子......使用这个框架,你比Java或C#更高效,你的代码也是多平台的!

答案 5 :(得分:0)

我会说是的。 C#用于许多应用程序,可以提供从一切到控制台应用程序到游戏开发(XNA)的强大平台。 Java可以在Web上使用,也非常强大。