代码之家  ›  专栏  ›  技术社区  ›  zoli2k

学习除python之外的脚本语言[关闭]

  •  9
  • zoli2k  · 技术社区  · 14 年前

    有人曾经告诉我,程序员倾向于正确地学习一种脚本语言,而忽略或不喜欢其他脚本语言。你有类似的经历吗? 几年来,我一直在选择使用Python编写脚本,但是,我确信有许多现有的和新兴的语言可以给pythonistas留下深刻的印象。除了Python之外,你能推荐一些有趣且有用的脚本语言吗?

    13 回复  |  直到 14 年前
        1
  •  22
  •   Jesse Dhillon    14 年前

    看,在我看来,python几乎拥有了应用程序编程所需的一切。你可以写任何东西 protocol stack YouTube ,从 media players 3D games and graphics 你的表现也很出色。

    它与其他提到的一些语言占据着相同的位置:

    • C 您可以访问几乎所有有用的C/C++库。我之所以选择用C语言在python上写一些东西,是因为我需要性能提升。即使这样,我也可能首先在Python中创建它的原型;当您的应用程序是用Python编写时,更容易修改您的设计。

    • 红宝石 没有充分的理由使用Ruby而不是Python。

    • 珀尔 对于某些特定类型的任务来说,它是很好的,但是如果您喜欢一致、可读和健全的编程风格,那么您将讨厌看到现有Perl代码的95%。我不知道这是因为用Perl编程的人倾向于(在我的经验中)首先是Sys管理员,其次是程序员,还是因为Perl的设计理念允许多种不同的方法实现相同的效果。

    考虑到这一点,我想说,如果你想学习另一种语言,一定要确保它能让你做一些新的事情。我建议您学习两种脚本语言:

    • 猛击 ,使用 for 回路和管道。bash编程并没有给您提供比您已经可以用python做的更多的东西,但是如果您是一个*nix用户,您将在日常工作中体验到巨大的收益。

    • JavaScript 能够编写基于浏览器的应用程序是一项有用的技能,而且几乎可以肯定的是,大多数应用程序在未来的工作方式。javascript/browser环境将在未来几年内获得一系列功能,从音频操作到OpenGL图形,并且一些非常快速的引擎正在工作或已经可用(比如V8,它支持Chrome浏览器并将javascript编译为本机字节代码)。您看到了吗? Quake2 ported to WebGL ?

    我的答案基本上归结为: 首先,学习有用的语言。

        2
  •  6
  •   heckj    14 年前
    • Ruby——它对块的启用和操作非常有趣,并且与基于Python的编程非常不同。

    • Erlang——函数语言有很多有趣的例子,它肯定会让你的大脑在工作之后有所不同(以一种很好的方式)。

    • 是的,我是认真的。尽管这个原型语言有相当多的技巧需要掌握,但是它在这个原型中做了一些非常有趣的事情,并且与Ruby和/或Python略有不同。很多人投入巨资,把javascript打造成一种速度惊人的脚本语言。

        3
  •  6
  •   meder omuraliev    14 年前

    我建议您学习haskell和lisp的方言,例如scheme或common lisp,如果您掌握了其中的任何一种,您将了解如何使用函数范式完成事情,它也将帮助您的python。

    以下是我将学习的一些按范例分类的语言:

    命令/程序语言:

    • C

    功能范式语言:

    • 哈斯克尔
    • 通用LISP/方案

    类似的面向对象语言:

    • 红宝石
    • ECMAScript

    其他:

    • 珀尔

    我建议你远离PHP,除非你真的需要这个工作。您可能想返回到python。

        4
  •  5
  •   Norman Ramsey    14 年前

    脚本语言非常相似 从一种脚本语言转移到另一种脚本语言的边际效益通常很低 . 因此,人们不必费心学习不止一个。然而,在我的职业生涯中,我经历了我的主要脚本语言(大致按时间顺序)是

    • AWK
    • TCL
    • 偶像
    • KSH
    • 卢阿

    我也使用了Perl和Python,但从来没有发现它们足够好,值得切换到。

    如果您想查看其他脚本语言,我建议 Lua ,因为

    • 它功能强大,非常简单,拥有这里命名的所有语言中最好的权值比。

    • 和TCL一样,它从一开始就被设计成无缝地合并C代码。这个设施非常好地工作,并大大扩展了它有用的问题范围(见Adobe Lightroom,魔兽世界,Garry的mod,CHDK)。

    • 该实现具有很高的性能和出色的工程设计。如果你想了解一些语言是如何实现的,它将回报你仔细的学习。

    然而,如果你的目标是学习一种新的语言来扩展你的思想,学习脚本语言之外的其他东西。例如,学习haskell并获得一些令人兴奋的想法(许多是从guido偷来的同一来源偷来的),或者学习c并真正了解硬件上发生的事情。

        5
  •  4
  •   user349594    14 年前

    你真正能找到的唯一相对公正的答案可能是统计上的,而且你仍然需要解释人们一旦找到或雕刻出一个阻力最小的路径的自然倾向。

    有多少人学习了相当好的python,发现这种语言与他们想要的工作方式产生了共鸣,然后转向其他东西,因为语言或生态系统,或两者都不支持他们的需求? 我想说,在受过教育的用户群中,可能只有一个数字的百分比,如果这个百分比小于5%,就不会感到惊讶了。

    除非你有涉及不同语言的与工作相关的潜在客户,或者你出于类似的原因需要横向移动,否则我想说你最好学习一些免费的Python,而不是类似的或同等的东西。 如果你的领域可以利用它(MeD VIZ,CGI等),无论是Shell还是SysAdmin导向的脚本和黑客在你工作的地方(BASH、TCL、AWK或其他什么)浮出水面等等,CUDA都可以用于低级或计算密集型任务。

    就我个人而言,我之所以对Ruby、PHP或其他一些语言不感兴趣,只是因为继续学习我的Python技能比学习那些以不同形式提供基本相同品质的东西更好。

    如果你真的想学习一些其他的东西来打开你的思维一点,并想坚持“脚本”,那么Lua对我来说是一个有趣的玩具一段时间,主要是因为可笑的性能,你可以挤出一个相对容易的集成过程,而且因为它是一个相当不同的轨道集相比于Python。事实上,wow插件必须用lua编写;)

        6
  •  3
  •   Matt Joiner    14 年前

    我将从我的角度给出一个诚实的答案。

    不。

    在开始使用批处理、bash和perl编写脚本之后,发现python正好发现了我希望从脚本语言中得到的东西(还有更多,但这不是主题)。它与熟悉的Unix接口集成,是模块化的,不强制任何特定的范例、跨平台和主动开发。我所知道的其他任何脚本语言都不能这样说。

    我考虑使用的其他脚本语言只有Lua或Scheme,因为它们的占地面积较小,并且适合嵌入,所以python可能有点重。然而,它们很难适用于更通用的shell和其他形式的脚本。

    更新0

    我刚刚注意到在其他答案中提到了Ruby和PHP,这两个都让我忘记了,因为我从来没有考虑过使用它们。Ruby速度较慢,也不那么受欢迎,而且PHP更像C/Perl,界面更平坦,这也带来了自身的性能优势。使用这些替代品来代替巨蟒是一件很有品味的事情。

        7
  •  3
  •   Mattias Nilsson    14 年前

    回答你的第一个问题:人们学习一种语言,然后忽视或不喜欢其他语言吗? 好吧,如果你对一种语言了解得很好,你需要看到迁移到另一种语言的巨大优势。

    我开始使用Perl,最终认为必须有更简单的方法来做一些事情。我拿起python,几乎立刻停止使用perl。 过了一会儿,我想我会试试鲁比,并学到一些关于它的知识。与使用Python相比,它的优势还不足以进行切换,所以我决定继续使用Python。如果我开始使用Ruby,我可能还是会使用它。 如果您使用的是Python,我认为您不会轻易找到另一种脚本语言来赢得您的支持。

    另一方面,如果你学习函数式编程,你可能会学到一些新的东西,其中一些甚至会在你的python编程中有用,因为python中的一些东西似乎是受到函数式编程的启发,并且知道如何使用它们将使你成为一个更好的程序员和一个更好的python程序员。

        8
  •  3
  •   Adam Gent    14 年前

    我将学习一种静态类型语言,它具有非常强大的类型表达式功能和出色的并发性。

    以下其中一个是一个很好的选择(根据我的喜好):

    • 斯卡拉
    • 弗斯
    • 哈斯克尔
    • 奥卡姆
    • 二郎

    像上面这样的打字语言让你 想不同 . 另外,这些语言都有repl,因此它们可以用作脚本语言,尽管事实上,我不确定“脚本”语言的定义是什么。

    python缺少良好的并发性 内置于语言中,因此了解如何处理许多Python程序员的并发性是一个挑战。

    我发现,强类型语言在大型项目中的伸缩性更好,原因有很多:

    • 因为类型是如此重要,它们成为了沟通问题的宝贵方式
    • 用这些语言重构要容易得多。
    • 自动序列化有时也更容易(尽管对于haskell来说这不是真的)。
    • 花在编写类型检查断言上的时间要少得多。
    • 浏览代码更容易,因为大多数IDE都允许您单击并转到不同的类型。
        9
  •  2
  •   Wildcat    14 年前

    我真的在学习 Scala 在Python之后。从 "Programming in Scala" :

    scala这个名字代表了scalable语言,因为它是为满足用户的需求而设计的。您可以将scala应用于各种编程任务,从编写小脚本到构建大系统。

    语言内部面向对象和函数式编程与表现力强的静态类型系统的集成本身就很有趣。是的,您可以使用scala作为脚本语言。我觉得用带有动态类型规则的语言编写代码不舒服,所以scala似乎是一个不错的选择。除了它在初始学习阶段的复杂性之外。

    如果您对动态类型规则感到满意,请看一下根。 Smalltalk 当然。尝试 Squeak 具有 Squeak by Example 配套书或其开源叉子 Pharo 具有 Pharo by Example 先预订。

        10
  •  2
  •   Charles Duffy    14 年前

    学会口齿不清。无论是“脚本”还是“非脚本”,埃里克·雷蒙德在写作时都有权这样做:

    “Lisp值得学习 深刻的启蒙经验 当你最终得到它的时候; 那次经历会让你变得更好 接下来的日子里,程序员, 即使你从未真正使用Lisp 本身很多。”

    在Lisp中高效的编程模式与您日常使用的Python完全不同,它所提供的透视图非常非常值得。

    在口齿不清的情况下,我的选择? Clojure ;与其他Lisp一样,它的宏系统为您提供了与python中优秀的元编程相当(实际上更优越)的能力,但Clojure特别关注电池,包括实用性(以及智能的、固执己见的设计),这对于任何喜欢gvr本能的人来说都是熟悉的。此外,Clojure的优势与Python的截然不同——特别是,它在高度多线程、CPU绑定的并发编程方面尤为突出,而这正是Python的弱点之一——因此,在工具箱中同时使用这两种工具会增加在遇到棘手工作时获得正确工具的机会。

    (这是脚本吗?在我看来,这些天来这是相当学术的;如果你有一个repl,在那里你可以输入代码并得到即时的响应,修改正在运行的程序的状态,或者使用一个api进行实验,我认为一种语言“脚本”就足够了。

        11
  •  1
  •   Bozhidar Batsov    14 年前

    ruby/groovy/perl如果您想坚持传统的脚本编写实践的话。

    否则,我将衷心地向您推荐Clojure和scala——这是过去几年中两种更具创新性的编程语言。

        12
  •  1
  •   Michael Aaron Safyan    14 年前

    如果您已经熟悉了python,那么您不太可能在同一个细分市场中找到令人信服的东西,尽管ruby确实有一个非常强大的、有声的追随者,他们似乎非常喜欢它。也许您应该考虑使用一种可以扮演不同角色的脚本语言,例如用于快速、简单脚本的bash shell脚本,这些脚本不需要在浏览器中运行的python或javascript的复杂性。

        13
  •  1
  •   Tremwar    14 年前

    我不能说我同意擦掉地图上的红宝石…Ruby修复了Perl在语法方面的所有问题…我首先喜欢python,但是让ruby变得更成熟一点,它会越来越受到磨损…为什么我强烈支持Ruby?只需离开python几个月,然后给ruby一个机会…我是一个讨厌红宝石的人,当我是一个巨蟒。但现在我几乎无法忍受使用Python。有一天,有人会清理GC,然后加入一些本地线程,大家最好小心。

    在咆哮声之外,python是一种功能齐全的语言,不仅仅是好的语言…Perl…真是一团糟…我不知道Perl是如何站在任何其他主流脚本语言旁边的镜子中看待自己的…PHP更漂亮…至少Perl速度很快,对吧…(CPAN也从来没有伤害过它)如果速度是真正的问题,那么还有其他的解释器可以让它更强大一点…Jython,Jruby,Ppy…名单上有一个,螺丝钉…