关于从Perl切换到Python的演示

Presentations on switching from Perl to Python

短篇小说:

我正在寻找有关从Perl切换到Python的演示文稿/好文章。

更长的故事:

我是一个硬件设计小组的程序员/嵌入式硬件工程师。几年前,我说服我的同事使用Perl编写脚本(而不是将批处理文件、Excel、Matlab和Tcl奇怪地混合在一起)。从那时起,我自己就从Perl切换到了Python,并且对这一变化非常满意。我想以某种方式说服我的同事追随我的道路,但我需要好的观点来说服他们。这些不能是像巫毒一样重的程序员更好的反射设备(不像我,这里的大多数人是EE毕业生而不是程序员)。

有什么想法吗?关于这个主题的好文章/演讲?也许有人已经做到了,可以分享小费。

注:

这个线程的主题有些相同,但不完全符合我的要求。


当两种语言都具有类似的功能时,将大量代码从一种类似的语言重写为另一种类似的语言没有好处。也许您应该专注于编写更好的Perl代码。也许学习使用PerlTidy,或者购买Perl最佳实践和PerlMedic的副本,然后将它们分发给您的同事。如果您担心Perl没有Python那么纯粹的OO,那么就使用moose(我要反驳的是,与Perl相比,Python在函数编程部门中是缺乏的)。

作为对以下评论的回应,我也会说,没有必要强迫你的同事学习和提高与你已经使用的语言能力相似的语言。

现在,如果有一些库或者公司需要的库在python中是可用的(或者更高级的库),而在perl中是不可用的(或者质量更低的库),那么继续切换或者添加另一种语言。


我认为您需要的第一个答案是"为什么我希望他们切换到Python?",只有您才能提供。

从你文章的总体基调来看,我倾向于怀疑这可能只是"哦!我发现了这个很酷的新语言,想和大家分享它的酷感!"或者,或者,"最后我可以用它来摆脱Perl的控制…"如果是这样的话,那你为什么要关心别人的个人偏好是否和你的一样呢?如果这仅仅是"我们都接触彼此的代码"的问题,那么为什么你的个人偏好要超过其他人的偏好呢?

如果,Otoh,您认为通过切换可以获得实际的技术原因和显著的好处,那么您需要用具体的术语来确定这些好处(实际的python代码演示它们是实现这一点的一种方法,但不是唯一的方法),并将它们呈现给您的同事,以查看您是否能够说服他们这将是一种好的方法切换到制作。

小心点,这样你就不会最终把"批处理文件、excel、matlab和tcl的奇怪混合体"变成Perl、python以及其他任何你感兴趣的语言的奇怪混合体。


您自己喜欢Python而不是Perl的原因是什么?是什么让你如此快乐?你的同事对Perl不满意吗?如果是这样的话,Perl的哪些方面会给它们带来困难,并且可能在Python中更好地工作?

唯一说服他们的方法就是向他们展示可能的好处。这些往往是非常主观和个人的,imho。


alt text


对不起的。我只是对你把Perl看作是基本的感到生气。Python喜欢进化的下一步。现在我已经把它从我的胸口拿开了。

评估两者的特征(和局限性)差异。Perl具有常量、多行匿名函数和自动激活功能,但Python具有更好的默认对象方向。

评估团队/朋友转换的成本/收益。对于您的团队来说,拥有不同语言的专门知识可能是件好事,也可能是浪费资源。

驱散Perl和Python背后的神话。

当然,享受你使用的任何语言。


如果你不能改变一个非技术经理关于如何从一种语言改变到另一种语言的想法,那么你就没有资格建议改变或者领导改变。

你必须有充分的理由解释为什么它比已经存在的更好,"我更喜欢语法"或"谷歌使用它"在经济上甚至技术上都不是有效的理由。

这是一个巨大的转变,你需要在自己的头脑中知道为什么这样做是有意义的。


如何让人们相信python比perl更好?

在Python中比在Perl中更成功。

当他们问你为什么这么成功时,警告他们必须跳出框框思考。在揭示你成功的秘密之前,一定要确保他们真的想要进步。[有些人不想提高,他们想抱怨;尽量不让他们进步。]

在你更成功之前,你没有什么可以展示的。"说服他们的好处"是你个人的成功故事。

开始一个"Python拯救"时刻的私人列表。每一个拯救Python的方法都是毫无疑问的,这是你实际组织中的一个真正胜利。

每天,你都想寻找一个整洁的,可以写博客的成功故事。


EricS.Raymond写了一篇有趣的文章/文章,介绍了他在Python方面的经验,这篇文章非常受欢迎。

关于编写工作代码:

When you're writing working code
nearly as fast as you can type and
your misstep rate is near zero, it
generally means you've achieved
mastery of the language. But that
didn't make sense, because it was
still day one and I was regularly
pausing to look up new language and
library features!

This was my first clue that, in
Python, I was actually dealing with an
exceptionally good design. Most
languages have so much friction and
awkwardness built into their design
that you learn most of their feature
set long before your misstep rate
drops anywhere near zero. Python was
the first general-purpose language I'd
ever used that reversed this process.

关于元类黑客:

To say I was astonished would have
been positively wallowing in
understatement. It's remarkable enough
when implementations of simple
techniques work exactly as expected
the first time; but my first metaclass
hack in a new language, six days from
a cold standing start? Even if we
stipulate that I am a fairly talented
hacker, this is an amazing testament
to Python's clarity and elegance of
design.

There was simply no way I could have
pulled off a coup like this in Perl,
even with my vastly greater experience
level in that language. It was at this
point I realized I was probably
leaving Perl behind.

对于任何一个听说过雷蒙德和写过Python的人来说,绝对值得一读。他有很多Perl经验(通常也有很多编码经验),所以他对Python的精辟评论在后面有一些权重。


询问你的同事他们是否仍然可以阅读几个月前写的Perl脚本,或者他们是否可以阅读和理解彼此的脚本。Python的一个关键点是它的可读性非常好。还向他们展示了如何用Perl在Python中完成所有好的工作。给他们看python医生。向他们展示与Perl相比,PythonOO是如何更好地集成到语言中的。

如果你向你的经理提出建议,那就提一下维护起来要容易得多。他可能会命令大家现在就换。