【发布时间】:2011-02-19 11:18:19
【问题描述】:
我需要编写一些脚本来在我的服务器上执行一些任务(运行 Ubuntu 服务器 8.04 TLS)。这些任务将定期运行,因此我会将脚本作为 cron 作业运行。
我将任务分为“A 组”和“B 组”——因为(至少在我看来)它们有点不同。
任务组 A
从文件中导入数据并可能重新格式化它 - 通过重新格式化,我的意思是对数据进行清理、可能对其进行规范化和/或对数据的“列”运行计算
将经过处理的数据导入数据库。目前,我主要使用 mySQL 进行绝大多数导入 - 尽管有些文件将被导入 sqlLite 数据库。
注意:这些文件将主要是文本文件,尽管其中一些文件是二进制格式(我自己的专有格式,由我开发的 C++ 应用程序编写)。
任务组 B
- 从数据库中提取数据
- 对数据执行计算并在数据库中插入或更新表。
我的编码经验主要是作为 C/C++ 开发人员,尽管在过去 2 年左右的时间里我也一直在使用 PHP(+ 一些与此问题无关的其他语言)。我来自 Windows 背景,所以我仍然在 Linux 环境中找到自己的立足点。
我的问题是——我需要编写脚本来执行我上面描述的任务。虽然我想我可以编写一些 C++ 应用程序以在 shell 脚本中使用,但我认为用脚本语言编写它们可能会更好,但这可能是一个有缺陷的假设。我的想法是在脚本中修改内容会更容易——无需重建等来更改功能。此外,与 Perl、Python 等“自然”脚本语言相比,C++ 中的 C++ 数据处理往往涉及更多的代码行数。
假设这里的大多数人都同意脚本是要走的路,这就是我的困境。我使用哪种脚本语言来执行上述任务(提供我的背景)?
我的直觉告诉我,Perl (shudder) 将是执行上述所有任务的最明显的选择。 但是(这是一个很大的但是)。仅仅提到 Perl 就让我的脚趾弯曲,因为我在前一段时间有过非常非常糟糕的经历(多年前买了 Perl Camel 书 + 'data munging with Perl',但仍然无法“理解”它感觉太陌生了。语法对我来说似乎很不自然-尽管我尝试学习了多少次-所以如果可能的话,我真的很想错过它。PHP(我已经知道),也不确定是在 CLI 上编写脚本的好人选(我没有看到很多关于如何执行此操作的示例等 - 所以我可能错了)。
我必须提到的最后一件事是,如果我必须学习一门新语言才能做到这一点,我不能(时间限制)花费超过一天的时间来学习所需的关键命令/功能,以便这样做(一旦我实际部署了脚本,我总是可以稍后了解语言的细节)。
那么,您会推荐哪种脚本语言(PHP、Python、Perl,[在此处插入您最喜欢的])——最重要的是为什么?或者,我应该坚持编写在 shell 脚本中调用的小型 C++ 应用程序吗?
最后,如果您建议了一种脚本语言,请您用几行代码说明一下(Perl 贩子 - 我正在寻找您的方向 [没什么太神秘的!])我可以如何使用您建议的语言来做什么我正在尝试做ie
- 将 CSV 文件加载到某种数据结构中,您可以在其中轻松访问数据列以进行数据操作
- 将列式数据转储到 mySQL 表中
- 将 mySQL 表中的数据加载到允许使用脚本语言访问列/行的数据结构中
希望 sn-ps 能让我快速发现那些对我来说学习曲线最陡峭的语言 - 以及那些简单、优雅和高效的语言(希望这两个标准 [优雅和浅学习曲线] 是不是正交的——尽管我怀疑它们可能是正交的)。
【问题讨论】:
-
“我不能(时间限制)花费超过一天的时间来学习执行此操作所需的关键命令/功能” == 行动迅速,闲暇时悔改。始终是一个好政策。
-
是的。这就是人生。有时不得不做出艰难的选择。理论上“干净”的解决方案和实用的解决方案之间存在巨大差异(即在现实世界中的绝大多数情况下会发生什么) - 但是请注意,我说过我以后总是可以学习语言的细节,一次我实际上已经部署了脚本。
-
无关但是 - 如果我没记错的话,两条腿走路对我来说似乎非常不自然。当我跌倒时,我有一个非常非常糟糕的经历——平躺在我的脸上。你看,我习惯用四肢爬行。但是,我意识到如果我走路/跑步而不是爬行,我可以走得更远,移动得更快。现在,我的脚趾高兴地蜷缩起来! - Perl 爱好者! :)
-
@morpheous:谁在谈论'理论上“干净”的解决方案'?一天学一门语言会很糟糕。学习一门语言没有“理论上“干净”的解决方案。这需要时间和精力以及合理的工程判断。不是理论。务实勤奋。在你犯了许多错误之后“以后”学习细节是不会发生的。您将被转移到一个不会造成太大损害的项目,并由务实的人取代(即学习解决方案架构和语言)。
-
IME, Programming Perl 如果您只是想学习一些基本的 Perl 并尽快完成一些工作,那么这本书是一本非常重要的读物。 Learning Perl 是一个更好的资源。一个有经验的程序员可以在几天内完成它并提高工作效率。不要误会我的意思,PP 是一本很棒的书,但如果你已经掌握了一些 Perl,它会更好。
标签: php python perl shell data-munging