用于业余爱好者程序员的Python(几个问题)

时间:2010-03-19 00:14:24

标签: python networking programming-languages robust

我是一个业余爱好者程序员(之前只在TI-Basic中),经过多次,与我自己的辩论,我决定学习Python。我没有大量的空闲时间自学一百种语言,我所做的所有编程都是供个人使用或分发给需要它们的人,所以我决定我需要一种优秀,强大的语言来擅长。我的问题:

  1. python是否足够强大,可以处理典型程序员在其关闭时间内可能执行的大多数操作?我想到了基于桌面游戏的用户输入,制作小游戏,自动化安装过程以及构建交互式网站的复杂的统计数据生成器,但可能还有上百种内容

  2. python是否能很好地处理网络任务?

  3. python源是否可以被混淆,或者它本质上是开源的?我问这个的原因是因为如果我做了一些很酷的东西并分发它,我不想让一些白痴脚本小子编辑他自己的名字然后说他写了它

  4. 与其他语言相比,python有多受欢迎。理想情况下,我的语言在没有极端困难的情况下在网上找到的帮助很好而且很有用,但并不常见,因为每个有电脑的白痴都知道python。我喜欢知道一种略显模糊的语言的想法。

  5. 非常感谢您提供的任何帮助。

7 个答案:

答案 0 :(得分:15)

  

python是否足够强大,可以处理   大多数事情?

是。期。研究EveOnline游戏以获取更多信息。看看pygame框架。免费使用Google查找更多信息。

  

python是否处理网络任务   相当不错?

是。查看Python Web框架的数量加上Twisted framework。随意使用Google搜索Python网络。

  

可以对python源进行模糊处理吗?

没用。这不是C.

  

与python相比,它有多受欢迎   其他语言?

查看TIOBE index

答案 1 :(得分:6)

我认为Python做很多事情非常强大,但就像Java和C ++一样,它通常依赖于好的第三方库。我来自Java背景,但是使用Python做很多事情,这是一个有趣的旅程。我做过统计和自动化等事情,不确定用户界面,虽然这通常取决于工具包而不是语言。

Python网络运行良好。我不知道我是否会用它来构建一个快速的算法交易系统或VOIP应用程序,但是对于大多数意图和目的,特别是在更高的抽象级别,它很好并且易于使用。您需要外部库来处理SSH或FTP等事务。

Python非常受欢迎,并且拥有非常好的在线支持,活跃社区以及使用它的大公司(如Google)。我找到了正式的在线教程和参考资料。

我不得不说我不同意“每个有电脑的白痴”系列。知道一种语言并正确使用它之间存在差异,这对每种语言都是正确的,甚至是自然语言:) Python确实有很多功能元素,对于来自程序背景的人来说并不是那么简单,所以总会有增长空间。

与C和Java等语言相比,Python的一个问题是它不是静态类型的。这使得更快来编写代码,但也使得*更容易)犯错误,这可能是非常讨厌的调试。例如,同一个变量可以包含某个点的String引用,以及对某个其他点的字符串列表的引用。

答案 2 :(得分:4)

  1. 绝对
  2. 什么类型的网络?它有socket,http,xml,smtp / pop,telnet等内置功能。<​​/ li>
  3. Python混淆不会像编译语言那样好。通常这不是问题。
  4. 这是9th most popular tag on stackoverflow,所以有很多帮助。

答案 3 :(得分:3)

  

python是否足够强大,可以处理典型程序员在其关闭时间内可能执行的大多数操作?我想到了基于桌面游戏的用户输入,制作小游戏,自动化安装过程以及构建交互式网站的复杂的统计数据生成器,但可能还有上百种内容

当然。 Python是一个很好的工具,除了自动化安装过程之外的所有这些,它可能是正确的工具,但更有可能正确的工具可能由你自动化的具体决定。

  

python是否能很好地处理网络任务?

是。您需要查看Twisted

  

python源是否可以被混淆,或者它本质上是开源的?我问这个的原因是因为如果我做了一些很酷的东西并分发它,我不想让一些白痴脚本小家伙编辑自己的名字然后说他写了它

“开源”是指您的代码的许可,而不是其源代码的可见性。隐藏Python源代码并不是特别可能,反编译Python字节码的结果将导致代码比C语言中的等效工具更易读。不要担心这个!你可以'如果他们愿意违反法律,就防止人们偷走你的汽车或你的电脑,你不能用任何语言为你的代码做同样的事情。

  

与其他语言相比,python有多受欢迎。理想情况下,我的语言在没有极端困难的情况下在网上找到的帮助很好而且很有用,但并不常见,因为每个有电脑的白痴都知道python。我喜欢知道一种略显模糊的语言的想法。

这是一个无法回答的问题。 Google会根据不同的指标为您提供大量相互矛盾的结果,其中大多数都很有用。你也有点傻了;)


就学习材料而言,我推荐How to Think Like a Computer Scientist,这是一个很好的文本,不会假定任何现有的编程知识。它可以在线免费获得,或者如果您愿意,也可以购买打印副本。 (不要费心学习3.x。没有足够的图书馆支持来做你想做的很多有用的东西,而且当它拿起它将是轻而易举的;它与2.5 / 6/7没有太大区别。)

答案 4 :(得分:2)

  1. 可能是的。也许统计数据会有点慢,也许游戏取决于什么类型的游戏,但通常性能足够好,并且你在实际编程上节省了大量时间。如果你真的需要性能,你可以在C中创建一个模块,但通常会有一个库来编写你想做的事情。

  2. 我没有使用它,但是有一个名为Twisted的框架似乎相当不错。

  3. 没有。字节码可以很容易地反编译,并且它只适用于特定版本的Python,所以你的代码不那么便携。

  4. Python很受欢迎,Python Package Index有很多第三方库。它并不像Java那样普及,但很多人都使用它,你可能会得到你想要的答案。

答案 5 :(得分:0)

第1点和第2点:HELL YEAH。

第4点:有点儿。 Python擅长某些网络资源。它不是Java或C ++。只需使用zlib(zip库)和pickle(序列化),如果需要IPC,请查看xmlrpclib。

第3点:不会。但是,您可以编写C模块(用于性能关键且难以复制的)部分代码,这将使逆向工程变得非常重要。

答案 6 :(得分:0)

Python可以完成任务(并且更好),适用于1,2和4。

根据您的描述,3的最佳解决方案可能是使您的程序真正开源,使用GPL或BSD(如许可证)。通过这种方式,人们可以编辑你的超酷资源(但经常是经验丰富的程序员,而不仅仅是脚本小子)并在此基础上进行构建,但请留下你的名字以供后人使用。