在CL和Python之间进行Web开发


13

我来自Java背景,在阅读了Paul Graham的这篇小文章之后,我开始想知道如何选择一种新的语言,即Common Lisp,以加快工作速度(我是一名Web开发人员)。

我目前正在编写宠物项目,但我有一些未来的业务计划。保罗在论文中谈到LISP是“秘密武器”。我不知道十年后这个说法是否正确,但是我将脚趾插入了一个不错的CL教程中,看起来LISP对于Web开发可能更胜一筹。

Paul还提到Python是我真正熟悉的不错的选择。我的问题是:我将来的Web项目应该选择哪个?

我在想什么:

  • 我不会开发桌面应用程序,因此可以选择我喜欢的任何语言。
  • python似乎有一个很大的社区,因此与lisp相比,它拥有更多的库/框架
  • 我发现Lisp具有某些功能(例如宏),在其他任何地方都找不到
  • 我通常独自工作或与其他1-2位程序员一起工作,但要找到一个精通Lisp知识的人可能很难

所以你怎么看?


与PHP相比,Python社区有多大?我认为,与寻找PHP开发人员相比,寻找Python开发人员也可能很困难,因此,如果项目是实验性的,我倾向于仅在这些选项之间进行选择。
亚历克斯(Alex)

我不太喜欢PHP,因此这不是我的选择。因为我是我唯一的老板,所以没有人强迫我使用我不喜欢的东西。:)
亚当·阿罗德

2
@Vash Python的开发社区可能没有PHP的庞大,但是它仍然非常庞大。此外,我发现Python的在线文档大大优于PHP。
2011年

我认为是真的。
亚当·阿罗德

2
我不相信还没有人提到Clojure!
Chiron

Answers:


7

您来自Java背景,为什么不检查Clojure编程语言呢?
这是生活在JVM上的现代Lisp方言,因此您可以访问大量的JAR。

尽管您不会在Clojure Universe中找到完善的,可投入生产的Web框架(例如Django和Rails)(至少现在是这样),但是程序员正在使用Noir和Compojure Web框架。
您还可以在Heroku平台上部署Clojure Web应用程序。

Clojure很有收获,但是学习曲线确实很陡。您准备好学习函数式编程(假设您不熟悉)吗?在OOP世界之外生活?

Python是安全的一面:它成熟,书籍众多,许多Web框架,庞大的知识库且易于学习。

因此,决定实际上是您的。


1
我最近检查了Clojure,我认为这是最适合我的需求的产品!谢谢你的建议!
亚当·阿罗德

7

Lisp是站立时聆听象牙塔发出的声音时听到的语言。其他语言,例如PHP,可能不那么优雅或功能强大,但它们就像普通的语言,简单而宽容。

尽管Lisp影响了许多语言,但它从未成为主流。为什么?由于许多开发人员不了解该语言的概念,因此对他们来说似乎很晦涩。Lisp对于广大开发人员来说很难理解。您是否见过要求使用Lisp作为编程语言的职位描述?我没有 “你为什么问?因为它很难为许多人维护和阅读。在Lisp中,您经常不能仅仅通过查看表达式就立即知道表达式在做什么。它缺乏某种简单性,这就是为什么它从未成为普通的舌头。

但是,Lisp对许多语言都有影响。我确实建议出于学术目的学习它。它扩大了您的思维范围,因此您经常可以从不同的角度考虑问题。但是,除非您正在为大学进行可行性研究,否则我不建议您将其用于Web应用程序。与其他选项相比,它在工具和库中缺乏支持。如果您希望获得实用的技能,这些技能最终会产生一些收益,并且可以在简历中显示出来,那么请务必选择Python。您也会从Lisp中受益,但是虽然您的整体编程风格可能会从中受益,但它实际上不那么实用,而且更具学术性。

而且,如今功能语言正在复兴。如果您想了解一些功能概念,还可以在JVM上使用.NET或Scala的F#。

因此,请您选择。如果这两种语言都是真实的语言,您希望学习以下哪种语言:拉丁语/古希腊语或法语/德语/意大利语/西班牙语/西班牙语/中文/阿拉伯语?


我在芝加哥地区见过一份招聘广告虚张声势-不仅如此,他们还会雇用没有经验的人来培训您。我原本想参加那场演出,但通勤会杀了我。我承认,但是,我认为这几乎是我多年来看到的唯一广告。
布莱恩·奥克利

好的,我会做什么:我也会学习LISP和Python,但是我会使用Python,因为您和其他人上面提到的原因。感谢您的澄清。
亚当·阿罗德

3

给定普通lisp和python之间的选择,我能提供的最佳实用建议是学习python。虽然我的技术人员认为编程的每个人都应该学习Lisp,但我认为学习它不会帮助您“加快工作速度”。

如果您学习Lisp,从长远来看,我相信它将使您成为更好的程序员。但是,由于您陈述的原因而学习口齿不清,将无法使您更接近IMO的近期目标。如果您需要实用,实用的解决方案,请学习Python。除非您的日常任务涉及自定义emacs,否则根本没有足够的工具或机会使用lisp来帮助您完成日常任务。

在另一方面,如果你有时间去研究和学习,并愿意忍受你的选择所带来的后果(工具的缺乏,难以找到同事谁得到口齿不清等),去口齿不清。这确实是一种了不起的语言。


3

如果您是一个积极进取的人,并且愿意长期构建自己的代码库,乐于突破语言的限制,并且不介意偶尔出现配置问题,那么我建议您使用Lisp。如果您是自雇人士,由于其宏观功能,从长远来看,它很可能会提高生产力。

Python不够灵活,不够快捷或功能强大。与许多其他语言相比,学习几乎是微不足道的。实际上,它非常Blubby。它具有广泛的支持,是一种流行的语言du jour,并且具有大量的库。如果您必须与抱怨学习新语言的人一起工作,可能会更好。

如果我要招聘的是Lisp优秀的人而不是Python优秀的人,那么我会立即假定Lisp的人比Python的人是一位更好的程序员和计算机科学家(在所有其他条件相同的情况下)。

我敢肯定,我有很大的偏见。


1
是否有偏见,我明白你的意思!
亚当·阿罗德

2

如果您想强调保罗·格雷厄姆(Paul Graham)所说的话,我会主张支持Lisp。Lisp语言家族所拥护的方法和思维方式的差异具有很大的潜力,因为它鼓励人们以不同的方式思考,因此对您作为一个整体的程序员有很大的影响。虽然我自己还没有这样做,但是Lisp中的Web开发似乎得到很好的支持:请参阅SO上的这个问题。

Python是一门很棒的语言,我一点也不想敲它。有许多适用于Python的优秀Web框架和工具,在需要时会更容易找到熟悉它的人。

最终,由于当前的环境,选择Lisp似乎总是会引起一个问题:“您要使用所需的东西,还是要使用行业已经使用的东西?” 您对这个问题的回答是什么?


2

如果没有时间压力,请使用Lisp。学习Lisp将改变您查看Python(以及您知道的所有其他语言)的方式,但是学习Python不会改变您查看Lisp的方式(如果您知道的话)。Lisp不仅仅是工具箱中的新工具。这是一种新的思维方式。

在阅读时,请查看Factor或其他连接语言。串联语言对于教你如何在组合器中进行思考来说是了不起的。学习连接语言将改变您查看所有其他语言的方式。

最后,锻炼右脑。编程语言的形式主义迫使我们过度使用左脑来解决问题。激活您的右脑以访问另一个改变游戏规则的范例。


0

与其他语言一样,Lisp只是一种工具。它具有有用的功能吗?同时,几乎所有其他语言都可能具有相同的输出,这可能会花费更多的时间和代码。Lisp的主要问题是,您至少要获得VPS托管,因为(我知道)没有一个共享主机(我知道)在其平台上支持任何种类的Lisp。

我建议的一件事是,由于您是Java程序员,因此请看一下Groovy(甚至Scala)。它们将允许您使用Java库和API,并可以提高生产率。


VPS并不是问题,因为我的想法也无法用于共享主机。
亚当·阿罗德

0

除了起源之外,我对Lisp一无所知。我对Python的了解是:

第一个飞碟降落5分钟后,Python社区将整理一些东西来与其I / O系统进行接口。

另外,主要来自JavaScript,我发现Python非常适合。也许相反是正确的。

此外,Django几乎是当今模仿的框架。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.