9

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

  1. python 是否强大到足以处理典型程序员在业余时间可能会做的大多数事情?我想到了诸如基于桌面游戏用户输入的复杂统计生成器、制作小游戏、自动化安装过程和构建交互式网站之类的东西,但可能有一百种类似的东西

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

  3. python 源代码可以被混淆,还是本质上是开源的?我问这个的原因是因为如果我制作一些很酷的东西并分发它,我不希望某个白痴脚本小子编辑他自己的名字并说他写的

  4. 与其他语言相比,python 有多受欢迎。理想情况下,我的语言会很好而且有用,可以在网上找到帮助,而且不会非常困难,但不会那么普遍,以至于每个有电脑的白痴都知道 python。我喜欢知道一种稍微晦涩的语言的想法。

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

4

7 回答 7

14

python是否强大到足以处理大多数事情?

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

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

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

python源可以混淆吗?

没用。这不是C。

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

看看TIOBE 指数

于 2010-03-19T00:18:36.970 回答
6

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

Python 网络运行良好。我不知道我是否会使用它来构建快速算法交易系统或 VOIP 应用程序,但对于大多数意图和目的,尤其是在更高的抽象级别,它很好且易于使用。您需要外部库来存储 SSH 或 FTP 之类的东西。

Python 非常流行,并且有很好的在线支持、活跃的社区和使用它的大公司(如谷歌)。我发现官方的在线教程和参考非常好。

我不得不说我不同意“每个白痴都有电脑”的说法。了解一门语言和正确使用它是有区别的,这对于每种语言都是如此,甚至是自然语言 :) Python 确实有很多功能元素对于来自程序背景的人来说并不是那么简单,所以总是有成长空间。

与 C 和 Java 等语言相比,Python 的一个问题是它不是静态类型的。这使得编写代码的速度更快,但也更容易)犯错误,这些错误可能很难调试。例如,同一个变量可以在某个点包含一个字符串引用,在另一个点包含一个对字符串列表的引用。

于 2010-03-19T00:19:58.423 回答
4
  1. 绝对地。
  2. 什么类型的网络?它内置了 socket、http、xml、smtp/pop、telnet 等等。
  3. Python 混淆不会像编译语言那么好。通常这不是问题。
  4. 它是stackoverflow 上第 9 个最受欢迎的标签,因此有很多可用的帮助。
于 2010-03-19T00:23:37.520 回答
3

python 是否强大到足以处理典型程序员在业余时间可能会做的大多数事情?我想到了诸如基于桌面游戏用户输入的复杂统计生成器、制作小游戏、自动化安装过程和构建交互式网站之类的东西,但可能有一百种类似的东西

确实。除了自动化安装过程之外,Python 对所有这些都是一个很好的工具,它可能是正确的工具,但更可能的是正确的工具很可能取决于您具体自动化的内容。

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

是的。你会想看看Twisted

python 源代码可以被混淆,还是本质上是开源的?我问这个的原因是因为如果我制作一些很酷的东西并分发它,我不希望某个白痴脚本小子编辑他自己的名字并说他写的

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

与其他语言相比,python 有多受欢迎。理想情况下,我的语言会很好而且有用,可以在网上找到帮助,而且不会非常困难,但不会那么普遍,以至于每个有电脑的白痴都知道 python。我喜欢知道一种稍微晦涩的语言的想法。

这是一个无法回答的问题。谷歌会给你很多具有不同指标的相互矛盾的结果,其中大部分都是有用的。你也有点傻;)


就学习资料而言,我推荐《如何像计算机科学家一样思考》,这是一本很好的教材,不假定任何现有的编程知识。它可以在线免费获得,或者您可以根据需要购买印刷版。(不要费心学习 3.x。没有足够的库支持来做很多有用的事情,就像你想做的那样,当有它时会轻而易举;它与 2.5/6/7 没有太大区别.)

于 2010-03-19T00:41:12.117 回答
2
  1. 大概是。也许统计数据处理会有点慢,也许游戏取决于什么样的游戏,但通常性能足够好,你在实际编程上节省了大量时间。如果你真的需要性能,你可以用 C 语言制作一个模块,但通常会写一个库来做你想做的事。

  2. 我没用过,但是有一个叫做Twisted的框架,看起来还不错。

  3. 不。字节码可以很容易地被反编译,而且它只适用于特定版本的 Python,所以你的代码不那么可移植。

  4. Python 非常流行,Python 包索引有很多第三方库。它不像 Java 那样普及,但很多人都在使用它,您可能会得到想要的答案。

于 2010-03-19T00:22:16.523 回答
0

Python 可以胜任 1、2 和 4 的任务(并且更好)。

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

于 2010-03-19T07:06:00.977 回答
0

第 1 点和第 2 点:是的。

第4点:种类。Python 擅长一些网络方面的东西。它不是 Java 或 C++。只需使用 zlib(zip 库)和 pickle(序列化)即可,如果需要 IPC,请查看 xmlrpclib。

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

于 2010-03-19T05:38:56.137 回答