我是Web应用程序的C#程序员.
几周前,我问了一个关于stackoverflow的问题,关于软件工程师(web)应该从什么开始学习 - Erlang,Haskell,Python,C++,F#.感谢所有提出建议并帮助做出决定的人.我发现Python应该是我应该开始期待的那个.我也对Erlang感兴趣.我也会尝试在一个月内为Erlang管理一些时间,但Python是我开始的.我已经开始从Dive学习到Python,到目前为止它已经做得很好.
有一个原因我在许多其他选择中选择了Python.与我的帖子(上面提到的)并行,我也在进行调查.在提出这个问题之前,我已经想到了.为什么大多数伟大的工程师(我不使用开发人员 - 他们应该更加尊重称他们为工程师)是开源项目的贡献者?开源项目有其格式.所有发明的优秀软件都与开源有一些直接或间接的联系.他们创建了一个很棒的开源项目,在创建它之前,他们为一个开放项目等工作.
我也想要像他们一样.为了像他们一样,我必须做出相应的计划和行动.所以,这是让我选择Python而不是其他人的第一个原因.
当我开始看到有关Python的事情时,它与C有着惊人的化学反应.而且它的大多数客户都用C语言而不是Python来分层他们的核心进程.这让我很好奇.我开始关注这个事实,并发现了一些使用Python和C的大名.甚至,一些伟大的开源项目(企业)也是以这种方式设计的.
为什么所有的好名字都用C后端进程并使用Python作为脚本?Python不足以用于后端进程吗?如果这是保持设计方式的良好做法那么为什么我们还没有看到任何好书?或者我们有吗?我要把它保留在计划中,所以如果你有任何好的阅读材料,请在这里提一下.
我打算扩大我的学习范围.目标是学习一种语言,现在它开始在开源平台上进行综合.我有一个DELL OPTIPLEX桌面,我正在考虑使用UNIX,VIM,PYTHON设置开源环境.有很多开源专家正在开发一些很棒的开源资源.我在堆栈 上看过Alex Martelli爵士.我希望我能从他那里得到一些关于我应该如何设计开源开发环境的东西?但是,还有很多其他英雄,我也喜欢他们的经验.
他们学习的概念现在学习成为一个优秀的开源开发人员(unix,python with c).为此,我需要如何设置开发环境?开源开发环境有哪些伟大的发展?请在Python的上下文中保留答案.
谢谢.
哇,你问的很多问题.让我试着解决它们......
为什么所有的好名字都用C后端进程并使用Python作为脚本?Python不足以用于后端进程吗?
我不确定你是什么意思.Python在后端工作中经常使用; 如果和某些部分被证明是一个CPU瓶颈,提取一个稳定的核心并使用C代码(或C++,或Fortran等 - 它们都能很好地与Python接口)是一个合理的第一次尝试优化(Cython也是通常是一个可行的替代方案) - 就像在"最后"的手段,人们可以深入研究特定于平台的汇编语言来提取更多的性能(GMP,我用gmpy包装的主库),是否有必要 - 真正好的装配部件实际上特定于特定的CPU型号,甚至不是"平台").为什么你认为(例如)具有CoreDuo特定的程序集以进行全面的CPU优化意味着一般的x86程序集"不够好",或者具有通用程序集意味着C"不够好",等等,以及那么?在(罕见的,但不是闻所未闻的)情况下,挤压每个CPU周期是非常重要的,对于它的代码的那小部分是重要的,去抽象的向下一级是一个很好的战略,绝不意味着更高的层抽象"不够好".
顺便说一句,这就是为什么我把"最后"放在恐慌引用中 - 因为即使最特定的组件仍然需要更多优化,人们可以(对于某些CPU)下降到微码,或FPGA或完全定制的IC.当然,这并不意味着软件解决方案不是(使用正确的动词一次;-)足够好(对于剩余的99.999%的需求):这意味着真正的工程师理解性能权衡......! - )
如果这是保持设计方式的良好做法那么为什么我们还没有看到任何好书?或者我们有吗?我要把它保留在计划中,所以如果你有任何好的阅读材料,请在这里提一下.
你在想什么主题,它们本身值得整本书?我不认为有一本关于(比如说)如何以及何时选择用于在C中重新编码的Python部分,以及用于所选平台的通用程序集中重新编码的部分C,以及通用程序集的部分的书籍的大型潜在市场在CPU模型特定的组件中重新编码,依此类推到微码,FPGA,定制IC - 这是我不愿意花一年时间(比如说)写下这样一本书的动机.我认为Nutshell在概述基础知识方面做得不错 - 如何使用分析来挑选CPU占用的部分(如果有的话),在Python级别优化它们,并在需要时重新编写低级语言(没有提及)当我上次改写Nutshell时,Cython还没有出现.但当然这部分是本书的10%或更少.
我打算扩大我的学习范围.目标是学习一种语言,现在它开始在开源平台上进行综合.我有一个DELL OPTIPLEX桌面,我正在考虑使用UNIX,VIM,PYTHON设置开源环境.有很多开源专家正在开发一些很棒的开源资源.我在堆栈上看过Alex Martelli爵士.我希望我能从他那里得到一些关于我应该如何设计开源开发环境的东西?但是,还有很多其他英雄,我也喜欢他们的经验.
难以击败Ubuntu(虽然我个人主要使用Mac,这是因为Mac OS X仍然提供了卓越的笔记本电脑体验,而我的个人机器现在大多是笔记本电脑 - 我的工作站,在工作中,确实运行Ubuntu) - 尽管我我相当肯定其他现代Linux发行版将与它并肩作战.我的个人怪癖:我认为对我的(开源)工作至关重要的代码,我总是尝试从头开始重建源代码 - Python,许多Python扩展,GMP,svn,hg,Cython ......我承认这些几天我做了操作系统本身,海合会套房异常,X11和朋友,GVIM -一个确实有画线部分在哪里得到任何空闲周期得到一些有益的工作做了;-).
他们学习的概念现在学习成为一个优秀的开源开发人员(unix,python with c).为此,我需要如何设置开发环境?开源开发环境有哪些伟大的发展?请在Python的上下文中保留答案.
我不认为它有多大意义.
有些人发誓IDE(例如,eric,使用PyQt - 或Eclipse加pydev); 我,我坚持使用gvim(虽然我偶尔使用iPython,但普通的python仍然是我最常用的).类似地,对于诸如svn和hg之类的VCS,或诸如PostgreSQL之类的数据库,有很多GUI,但我发现命令行工具更适合我的个人偏好.
大多数情况下,我建议在你熟悉的领域(比如网络应用程序,在你的情况下)选择一个项目,学习和使用它足以形成一个支持的意见,一旦你发现它丢失了(或者它的跟踪器上的漏洞)等),潜入并开始贡献.如果你做得好,你最终会被接受为项目提交者.
关键是选择一些你真正亲自关心的东西- 无论你是用Ubuntu,Gentoo,Gvim,Emacs,Eric等等来处理它,它都是一个非常小的考虑因素IMNSHO.