
Why Reddit switched to Python (2005) - ryutlis
http://blog.reddit.com/2005/12/on-lisp.html
======
edwinnathaniel
When it comes to programming languages/framework debate, there are a few
interesting tidbits:

1) Geeks _love_ to debate languages, especially one they _know better_

2) Geeks also love to trash languages that they don't know that well

3) There's always the claim of N-increase of productivity without any
scientific backing (yet we always stress out that we should measure
everything...seems like a paradox eh?)

4) This is how we do politics: debating languages, tools, frameworks.

Use whatever you like. That's the bottom line.

Joel used ASP.NET for FogBugz, ASP.NET MVC w/o ORM for SO.

LinkedIN, TripAdvisor, Jive, some Google properties are using Java.

Facebook, Flickr, WikiPedia use PHP.

You are far more productive using the tools you know.

If someone just picked up Node.JS (and a novice JavaScript developer)
yesterday and claimed he/she got 10x productivity boost, ask him/her to show
how they go about and code the solution a'la Notch (live-stream how you code
or from pre-recorded coding session).

Building products require more than just a syntax. Libraries, Tools: build
tools, packaging tools, deployment tools, documentation tools, etc are all as
important as the programming language itself.

It's about time we ask for proofs, not just a blog post claim.

~~~
ExpiredLink
> some Google properties are using Java.

Google is mostly a Java shop, IIRC. They even write HTML and JavaScript in
Java, a.k.a GWT.

~~~
toyg
They also have plenty of C++ and Python. Small projects will always be allowed
to run whatever language they fancy, but the largest and most critical
codebases at Google are definitely in java, c++ and python.

------
zachbeane
Things are a bit different now. SBCL works great nearly everywhere, Clozure CL
does too, and there are more libraries that are easier to install than ever
before.

~~~
eliben
Yes, but the Python eco-system didn't remain standing in one place either.
Lots more libraries, more stable and feature-full releases, and great support
for bindings for well known libraries/frameworks/APIs all across the board, as
Python has clearly emerged as the favorite hacker language for general purpose
programming.

~~~
toyg
I wish. As mainstream as it got, it's way less deployed than java (which is
used for literally everything, including mobile development), PHP, C/C++, Perl
and even Ruby. It's starting to be fairly ubiquitous, thanks to hacks like
jython and ironpython, but it's nowhere near being considered the "clear
favourite" for anything.

~~~
eliben
Each of PHP, Perl and Ruby has their niche(s), but excluding those Python is
_far_ more popular. And the comparison with Java/C is irrelevant here since
this is a different domain of languages (dynamic) we're talking about here.

~~~
toyg
You didn't say "the favorite hacker _dynamic_ language" though :)

I'm a huge Python fan, but I'm also a realist: the Python ecosystem (in terms
of vendors, products, customers and professionals involved, as well as
libraries and tools) is nowhere near the mainstream Java/C++/whatever-
Microsoft-is-pushing-this-year. Python is not the language of choice on any
mobile platform, for example; it barely registers in the humongous
"enterprise" space; SDKs for most hardware devices (or anything else, really)
will usually list Python as the third or fourth choice, if at all. It's doing
reasonably well in scripting, automation, Linux administration, 3D and web,
but that's a far cry from being a clear favorite for "general-purpose
programming".

------
lordlicorice
> After spending the entire summer working entirely in Lisp, it's nearly
> impossible to work in another language and not say to myself, "If only this
> were Lisp..." Lisp has many goodies that make programming in it a joy: the
> REPL, macros and the lack of syntax are some. I won't go into the details,
> but rest assured, it's cool. People become Lisp zealots for a reason.

I honestly don't understand this sentiment. For me it's nearly impossible to
work in lisp and not think "If only this were some other language..." The
_baseline functionality_ I'm used to from other languages, like even type
checking, is absent. It's like writing in assembly just for the degree of
control you have as compared to managed code. I mean yeah writing something in
assembly can be fun in its own way, but the result will almost certainly be
awful, and you'll solve problems that have built-in solutions in other
languages.

~~~
zachbeane
Common Lisp has type checking.

~~~
SeanLuke
Come on, we all know what he meant.

~~~
zachbeane
I don't really know what he meant, with the references to managed code and
assembly language in relation to Lisp, but what he actually wrote is wrong
when it comes to Common Lisp.

~~~
jbester
Perhaps he's referring to the batteries included feel of other platforms.
Every other platform (i.e. .NET/java/ruby/python) have gobs of built-in
functionality in the standard library - everything from parsing, to different
I/O models (NIO in java), to frameworks (WSGI, WS consumption and production,
etc). Lisps diverge fundamentally (e.g., the threading model) if it isn't
specified in CLtL or ANSI CL. CL seem hamstrung by those documents.

Concrete Example: 7 years ago I couldn't (using available libraries) reliably
parse in lisp a DB dump in XML (~8GB), select some records based on a set of
calculations, and convert it to CSV. Most libraries insisted on needing the
whole document in memory, some libraries leaked like a sieve and caused heap
exhaustion, others couldn't handle UTF8. In the end, I could do it python
(couple hours to develop and took 45-60 minutes to run), I could do it in java
(several hours to develop and ran in ~8min), but I couldn't do it in LISP
without writing a custom XML parser or delving into FFI. Maybe it was an
abnormal case, maybe not.

I miss macros and the expressiveness; I miss the community; I don't miss the
insanity.

~~~
zachbeane
Well, it's not like that any more. There are portable ways to work with
threads, there are multiple XML libraries, some of which do not read the whole
document in memory, and all implementations support UTF-8.

These things happened because some people decided to improve CL (both
implementations and libraries) instead of using something else.

~~~
jbester
It may be worth retrying as an experiment to see how lisp fairs now.

------
nickbauman
This is an example of the Lisp Curse.

<http://www.winestockwebdesign.com/Essays/Lisp_Curse.html>

This is the reason why the Clojure community is taking libraries very, very
seriously.

------
prodigal_erik
"Translated very easily" suggests they didn't create a domain-specific
language for their problem, which to me seems to be missing the point of Lisp.
The exotic features of Lisp and Python don't overlap much at all, so the
intersection of the two isn't a particularly powerful language. They probably
could have ported to any Blub just as readily.

~~~
gbog
Why, maybe there are problems that do not require a domain-specific language!
Doing something like reddit.com probably require a simple and readable
codebase that can be extended and optimized easily. It is not likely that the
domain is so complex that it needs macros and all the "clever" stuff.

------
homosaur
I like how they refer to reddit as a "FreeBSD box." My guess is that it's
something much, much larger now.

~~~
baddox
He also says "the reddit code itself is not incredibly complex," which I
imagine is less true now.

~~~
Splenivore
There’s no need to leave it to imagination: <https://github.com/reddit/reddit>

~~~
baddox
Right, but I don't know how complex it was at that time in the past.

------
elangoc
If there are any Lispers who lament the Lisp Curse, or some idiosyncracies of
your favorite dialect of Lisp, and you have an open mind to give something new
a shot, consider checking out Clojure.

I don't want to become one of those diehard __-advocates, but I'm pretty
impressed with Clojure. Speaking from experience, I think it solves quite a
few of the pitfalls mentioned in the OP. I wrote up an extensive post on how
to learn Clojure, and veteran Lispers can jump to the end and catch the links
of Clojure for Lispers:

[http://www.elangocheran.com/blog/2012/03/the-newbies-
guide-l...](http://www.elangocheran.com/blog/2012/03/the-newbies-guide-
learning-clojure/)

