【问题标题】:Python for a hobbyist programmer ( a few questions)业余程序员的 Python(几个问题)
【发布时间】:2011-01-29 06:35:50
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • 它完全符合您的需求,除了#3。
  • 如果你做了什么超级棒的东西,不管它是什么语言,它都保证被反编译......
  • Re #3:你无法阻止它。也没有什么能阻止一个傻瓜声称是混淆二进制文件的作者。只需为你的工作拍一张好的许可证,然后把它放在那里,大众就会欣赏它。不要让障碍阻止你分享!
  • 可能最接近 #3 的是 py2exe,但通过默默无闻的安全性充其量是无用的......
  • 我也从 TI-BASIC 转到了 Python,我从未后悔过。 (如果你正在寻找一本书来学习,我推荐 Python for Dummies。)Python 的一大优点是该语言本身(或者至少是大多数人需要的所有特性)相对容易学习,其余的正在阅读库文档。

标签: python networking programming-languages robust


【解决方案1】:

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

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

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

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

python源码可以混淆吗?

没用。这不是 C。

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

看看TIOBE index

【讨论】:

  • 不能混淆?看看这个聊天服务器paste.pocoo.org/show/94512(作者stackoverflow.com/users/10999)! (当然,关于试图隐藏源代码以防止应用程序被盗的问题表明,对于如何防止代码在任何语言中被不公平地获取的知识缺乏了解。)
【解决方案2】:

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

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

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

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

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

【讨论】:

  • +1 为“非白痴”程序员保护 Python。作为 Haskell 的爱好者(符合 Matt 对一种稍微晦涩的语言的标准),我仍然经常使用 Python 来完成许多任务;它绝不“低于”任何人。
【解决方案3】:
  1. 可能是的。也许统计数据处理会有点慢,也许游戏取决于什么样的游戏,但通常性能足够好,你在实际编程上节省了大量时间。如果你真的需要性能,你可以用 C 语言制作一个模块,但通常会编写一个库来做你想做的事..

  2. 没用过,不过有一个叫Twisted的框架,好像还不错。

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

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

【讨论】:

  • Python 有像 SciPy 和 NumPy 这样的库,用于任何性能关键、数值、统计等方面。缺少图像处理(由 PIL(Python 图像库)处理得相当好)或密集的图形内容,我想不出我在使用 Python 时遇到的任何性能问题。
  • CPython 字节码很容易反编译,通常是相当漂亮、可读的代码(如果代码开始时)。它也有一些限制,包括限制在一个 Python 版本上运行并且不能使用 Python 的替代实现。保护您免受他人不公平使用您的代码的是法律以及大多数人不是混蛋这一事实。
  • 感谢您的输入,我已经修改了答案。在这个阶段这并不重要。
【解决方案4】:
  1. 绝对。
  2. 什么类型的网络?它内置了 socket、http、xml、smtp/pop、telnet 等等。
  3. Python 混淆不如编译语言好。通常这不是问题。
  4. 我是9th most popular tag on stackoverflow,所以有很多可用的帮助。

【讨论】:

    【解决方案5】:

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

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

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

    是的。你会想要查看Twisted

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

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

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

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


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

    【讨论】:

    • 哦,twisted 不是一个好的开始。它是一个很棒的网络工具,但对于业余爱好者来说有点令人费解。见鬼。对于专业人士来说,这有点令人费解。从标准库中更直接的网络模块开始。当 urllib 和 urllib2 开始觉得累赘的时候,下载 httplib2,它真的把 http 弄对了,用于更复杂的用途。
    • @jcd,Twisted 确实需要花点力气才能点击。但是,看到很多人第一次尝试用 Python 开发自己的网络应用程序,我认为这是值得的。
    【解决方案6】:

    第 1 点和第 2 点:没错。

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

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

    【讨论】:

      【解决方案7】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-12-24
        • 1970-01-01
        • 1970-01-01
        • 2011-04-16
        • 1970-01-01
        • 2014-12-30
        • 1970-01-01
        相关资源
        最近更新 更多