我想知道为什么C ++,C#,Java开发人员想学习动态语言?
假设公司不会将其主要开发语言从C ++ / C#/ Java转换为动态语言,那么动态语言有什么用?
在学习了几天后,动态语言比使用多年的静态语言可以更快或更更好地完成哪些辅助任务?
看到前几个响应后,很明显有两个问题。我的主要利益是可以作为用人单位支付的费用。也就是说,我正在寻找雇主为学习动态语言提供资金的理由。除了显而易见的是,雇员将拥有更广阔的视野之外,雇主通常还在寻找一些“真正的”福利。
很多时候出现了一些快速任务,这些任务并不是您正在开发的主要软件的一部分。有时任务是一次性完成的,即将该文件与数据库进行比较,然后让我知道它们之间的区别。与在Java或C#中相比,在Perl / Ruby / Python中进行文本解析要容易得多(部分原因是使用正则表达式要容易得多)。使用Perl / Ruby / Python解析文本文件(甚至是vbscript 压缩 ,然后将其加载到数据库中)可能要比创建Java / C#程序来执行或通过以下方式花费更少的时间手。
而且,由于大多数动态语言都易于解析文本,因此它们非常适合代码生成。确保您的最终项目必须使用C#/ Java / Transact SQL,但与其剪切和粘贴100次,发现错误以及剪切和粘贴另外100次相比,使用代码生成器通常(但并非总是)更容易。
最近的一个工作示例是,我们需要将数据从一个会计系统导入我们的会计系统。该系统具有导入格式,但是旧系统具有完全不同的格式(固定宽度,尽管有些东西必须匹配)。任务不是创建一个程序来一次又一次地迁移数据。它将数据推送到我们的系统中,然后继续进行维护。因此,即使我们是C#和SQL Server商店,我仍然使用Python将数据转换为应用程序可以导入的格式。最终,我使用python没关系,数据在系统中也很重要。我的老板印象深刻。
我经常看到用于测试的动态语言。与创建等效的Java程序相比,创建一个Python / Perl / Ruby程序以链接到Web服务并向其投放一些数据要容易得多。您还可以使用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 进行编程时要特别注意(指针,不检查数组边界等),因此问题会更加严重。