我需要通过 http 从 Internet 下载一些 csv 文件,对其进行解析并将其转换为更有用的格式。最终,C++ 程序将使用数据。几年前,我会拿出我的 Perl 书籍并开始编写 Perl 脚本来进行下载和解析。但现在有了 Boost 和 Qt,我可以毫不费力地用 C++ 完成下载、解析和添加 GUI 前端。上次我写 Perl/Python 大约是 6 个月前。在 Perl/Python 中完成它可能需要更长的时间,而且我的 Perl/Python 代码将是废话。如果我唯一的工具是锤子,一切看起来都像钉子吗?还是时代变了,C++ 可以在传统上由脚本语言(如 Perl 或 Python)主导的领域发挥作用?
9 回答
其他人通常期望解决方案是什么有什么关系?如果你可以用 C++ 更好更快地完成工作,那就用 C++ 来完成吧。
对于您的示例,您似乎将更有效率,并且能够更轻松地使用 C++ 解决您的问题,因为这就是您所知道的。
但一般来说,我希望更多的人会使用 python/perl 来完成这类任务。
为什么不?
如果您的代码由于缺少库/功能而变得很笨拙,那么 C++ 可能不是最好的。如果需要经常更改,那么 C++ 可能不是最好的。如果其他了解 Perl/Python 的人会维护它,那么 C++ 可能不是最好的。等等
你真的需要图形用户界面吗?你需要速度吗?使 C++ 成为一种脚本语言没有任何改变,但这并不意味着您不应该使用它。
如果它通过了这样的常识测试,那为什么不呢?
好吧,如果你必须盖房子,锤子就可以了。但是使用气动框架钉枪建造房屋要容易得多。
C++ 是一门优秀的语言,您可以在脚本语言主导的领域提高工作效率,但在所有条件相同的情况下,使用 perl/python 进行文本解析会提高工作效率。
C/C++ 与 python/perl 的生产力问题似乎与我无关。如果您想使用 Qt、Boost 和任何其他现成的工具集编写解析器,那就去做吧。您实际上并没有指定解析速度是否是一个问题,但即使是这样,它对您的情况是否也很重要。
即使您认为使用 X 语言可能更容易,如果您想尝试学习该语言的新知识,请用 Y 语言编写它。这听起来是一个非常简单的任务,所以只需按照您想要的方式编写即可。
您还需要考虑未来的使用。如果需要以某种方式增强和扩展该程序,则可能需要选择特定的语言。
如果您在 C++ 中的工作效率更高,那么一定要使用 C++。学习其他语言仍然是一个好主意,但有时你需要使用你所知道的来完成工作。
顺便说一句,您可能已经知道这一点,但是Boost.Tokenizer库通过转义列表分隔符内置了 CSV 解析功能。
根据您的描述,听起来您除了锤子还有其他工具。您拥有的工具越多,您完成工作的效率就越高。使用您可以使用的任何工具来完成工作,偶尔购买(学习)更多工具。
我喜欢 C++。我讨厌编译、运行、测试、关闭循环——特别是当我需要测试数据时。
我的解决方案:我制作了一个小型编程环境 [由 Lua 提供支持],我将其嵌入到我的 C++ 应用程序中,然后在运行时打开它并以交互方式进行操作。为什么要坚持一种或另一种编程环境?使用两全其美。
C++ 并不是专门为处理长字符串而设计的。(只要看看旧的 C-Strings ......对于任何严肃的事情来说,它们都是一场噩梦。)相比之下,Perl 就是为这种用途而设计的。
您可能可以在 C++ 中拼凑一些东西,但是 Perl 解决方案可能会更加健壮和可维护。