如何成为python的优秀开源程序员?

时间:2010-01-08 05:53:47

标签: python c

我是Web应用程序的C#程序员。

几周前,我在stackoverflow上询问了一个关于What should a software engineer (web) start by learning - Erlang, Haskell, Python, C++, F#的问题。感谢所有提出建议并帮助做出决定的人。我发现Python应该是我应该开始期待的那个。我也对Erlang感兴趣。我也会尝试在一个月内为Erlang管理一些时间,但Python是我开始的。我已经开始从Dive to Python中学习到目前为止表现良好。

有一个原因我在许多其他选择中选择了Python。与我的帖子(上面提到的)并行,我也在进行调查。在提出这个问题之前,我已经想到了。为什么大多数伟大的工程师(我不使用开发人员 - 他们应该更加尊重称他们为工程师)是开源项目的贡献者?开源项目有其格式。所有发明的优秀软件都与开源有一些直接或间接的联系。他们创建了一个很棒的开源项目,在创建它之前,他们为开放项目等工作。

我也想要像他们一样。为了像他们一样,我必须做出相应的计划和行动。所以,这是让我选择Python而不是其他人的第一个原因。

当我开始看到关于Python的事情时,它与C有着惊人的化学反应。它的大部分客户都用C而不是Python来分层他们的核心过程。这让我很好奇。我开始关注这个事实并发现了一些使用Python和C的大名。甚至,一些伟大的开源项目(企业)也是以这种方式设计的。

为什么所有好名字都使用C后端进程并使用Python作为脚本? Python不足以用于后端进程吗?如果这是保持设计方式的良好做法那么为什么我们还没有看到任何好书?或者我们有吗?我要保留这个计划,所以如果你有任何好的阅读材料,请在这里提一下。

我将计划更广泛的学习范围。目标是学习一种语言,现在它开始在开源平台上进行综合。我有一个DELL OPTIPLEX桌面,我正在考虑使用UNIX,VIM,PYTHON设置开源环境。有很多开源专家正在开发一些很棒的开源资源。我见过Sir Alex Martelli 这里是stackoverflow。我希望我能从他那里得到一些关于我应该如何设计开源开发环境的东西?但是,还有很多其他英雄,我也喜欢他们的经验。

他们的学习概念现在学习成为一个优秀的开源开发人员(unix,python with c)。为此,我需要如何设置开发环境?开源开发环境有哪些伟大的发展?请将答案与Python保持一致。

感谢。

4 个答案:

答案 0 :(得分:5)

答案 1 :(得分:1)

开始编码!说真的,创建一些示例应用程序。如果你遇到痛点,那就是你要学习的地方。当你完成一个,然后阅读最佳实践书籍,以了解如何做得更好。否则你不会学习,你只是按照食谱。

答案 2 :(得分:0)

阅读大量代码。开发自己的编码风格,但需要处理很多项目,以便:

a)你的风格可以继承他们最好的部分

b)你不会养成总是以你第一次学习的方式做事的坏习惯(因为python不断变化,所以'最好'的习惯有转换的习惯

提出很多问题,祝你好运!

答案 3 :(得分:0)

编写C代码而不是Python有两个主要原因:速度和粘合。

Python比C慢得多。大多数时候,这根本不重要,但有时它确实如此。如果你用纯Python编写傅里叶变换函数,你会对速度不满意;所以SciPy的人提供了傅里叶变换的C实现,你可以从Python调用它。

但除非你知道你正在处理一些非常复杂的事情,例如编码压缩视频或傅里叶变换,否则你应该始终只用Python编写它。大部分时间它运行得足够快。如果是这样,你就完成了!

如果您编写Python原型,并且它似乎有效但速度很慢,那么无论如何都可以将其作为自由软件发布。缓慢的解决方案比没有解决方案更好,人们可能会感谢你。但是如果你有动力,你可以将你的Python重新编码为C来加速它。 (首先测量你的Python,所以你知道哪些部分需要加速。)而且,作为奖励,你已经正确地实现了算法一次(在Python中)所以你有一些好主意如何处理C中的问题。

为Python编写C模块的另一个主要原因是提供一个“粘合”层,以适应Python以便能够使用一些外部资源。例如,在Windows的Python版本中,您可以使用C模块来允许您使用COM对象。整个COM API是为C编写的,因此C模块是适应Python的最佳方法。

因此,总而言之,我的建议只是编写一些代码来解决您遇到的一些问题,看看您认为结果是否足以与全世界分享。

P.S。这是启动Python程序员的一个很好的资源:

http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html