如果公司使用C++,C#或Java作为应用程序语言,为什么要学习Perl,Python,Ruby?[已关闭]

2022-08-31 14:53:22

我想知道为什么一个C++,C#,Java开发人员想要学习一种动态语言?

假设该公司不会将其主要开发语言从C++ / C # / Java切换到动态语言,那么动态语言有什么用呢?

动态语言在仅仅几天的学习之后,比你已经使用了几年的静态语言更快或更好地完成哪些辅助任务?

更新

在看到最初的几个回复之后,很明显有两个问题。我的主要兴趣是雇主可以证明是一项费用。也就是说,我正在寻找雇主资助学习动态语言的理由。除了员工显然会有更广阔的视野之外,雇主通常正在寻找一些“真正”的好处。


答案 1

很多时候,会出现一些快速任务,这些任务不是您正在开发的主要软件的一部分。有时任务是一次性的,即将此文件与数据库进行比较,并让我知道差异。在Perl / Ruby / Python中进行文本解析比在Java或C#中容易得多(部分原因是使用正则表达式要容易得多)。使用Perl / Ruby / Python解析文本文件(甚至可能是vbscript畏缩然后将其加载到数据库中)所需的时间可能比创建Java / C#程序来执行此操作或手动执行所需的时间要少得多。

此外,由于大多数动态语言解析文本的便利性,它们非常适合代码生成。当然,你的最终项目必须使用C#/Java/Transact SQL,但不是剪切和粘贴100次,查找错误,再剪切和粘贴100次,通常(但并不总是)更容易使用代码生成器。

最近一个工作的例子是,我们需要将数据从一个会计系统获取到我们的会计系统中。该系统具有导入格式,但旧系统具有完全不同的格式(固定宽度,尽管某些内容必须匹配)。任务不是创建一个程序来一遍又一遍地迁移数据。它是将数据推入我们的系统,然后继续维护它。因此,即使我们是C#和SQL Server商店,我也使用Python将数据转换为我们的应用程序可以导入的格式。最终,我使用python并不重要,重要的是数据在系统中。我的老板非常感动。

我经常看到动态语言用于测试的地方。创建一个Python/Perl/Ruby程序来链接到Web服务并向其抛出一些数据比创建等效的Java程序要容易得多。您还可以使用python来攻击命令行程序,生成大量垃圾(但仍然有效)测试数据等。很容易。

动态语言的另一件事是代码生成。创建 C#/C++/Java 代码。下面是一些示例:

我经常看到的第一个代码生成任务是人们使用动态语言来维护系统中的常量。动态语言可以用来相当容易地解析文本文件,并使用枚举创建Java /C#代码,而不是手动编码一堆枚举。

SQL是一个完全不同的球类游戏,但通常你可以通过剪切和粘贴100次而不是尝试执行一个函数来获得更好的性能(由于执行计划的缓存或将复杂的逻辑放在函数中,导致你逐行而不是在集合中)。实际上,使用表定义自动创建某些存储过程非常有用。

购买代码生成器总是更好。但是,即使您不这样做,花时间剪切/粘贴是更有趣,还是创建一次Perl / Python / Ruby脚本然后让它生成代码更有趣?如果手动编写代码需要花费数小时,但创建代码生成器的时间更少,那么即使您在节省时间并因此节省金钱后使用它。如果创建代码生成器花费的时间比手动编写代码所需的时间长,但您知道必须多次更新代码,则可能仍然有意义。如果你需要2个小时来处理代码,4个小时来做生成器,但你知道你必须手动处理代码等效工作另外5或6次,而不是创建生成器显然更好。

此外,使用动态语言,有些事情比Java / C #/ C / C++更容易。特别是正则表达式浮现在脑海中。如果你开始在Perl中使用正则表达式并意识到它们的价值,你可能会突然开始使用Java正则表达式库,如果你以前没有这样做过的话。如果你有,那么可能还有其他东西。

我将给你留下最后一个任务的例子,这个任务对于动态语言来说会很棒。我的工作伙伴不得不拿起一个装满文件的目录,并将它们刻录到各种CD上,供各种客户使用。有一些客户,但有很多文件,你必须查看它们才能看到它们是什么。他用手做了这个任务。Java/C# 程序本来可以节省时间,但对于一次来说,由于所有的开发开销,这是不值得的。然而,在Perl / Python / Ruby中将某些东西拼凑在一起可能是值得的。他花了几个小时来做这件事。创建Python脚本来检查每个文件,匹配它转到哪个客户,然后将文件移动到适当的位置,这将花费不到一个。同样,不是标准工作的一部分。但这项任务是一次性的。是自己做更好,花更多的时间让Java / C#完成任务,还是花更少的时间在Python / Perl / Ruby中完成它。如果您使用的是C或C++由于C或C++编程的额外问题(指针,无数组边界检查等),这一点更加引人注目。


答案 2

让我把你的问题放在头上,问一个说美国英语的人学习另一种语言有什么用?

我们所说的语言(以及我们编程的语言)决定了我们的思维方式。这可以发生在基本层面上,比如c++、javascript和lisp,或者在实现层面上,Ruby构造为“实际工作”中的解决方案提供了一个尤里卡时刻。

说到你真正的工作,如果市场向南发展,你的雇主决定“调整”你的大小,你认为你会如何与一个灵活的人相提并论,因为他用几十种语言编写软件,而不是你有限的曝光率?在所有条件相同的情况下,我认为答案很清楚。

最后,你以编程为生,因为你喜欢编程......右?


推荐