Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Emailer: "ITA [Software Inc.], the other alleged Lisp success story.. also says much the same thing.. they don't really use Lisp except for certain key things"

PG: "Using a language for these "certain key things" is exactly what it means to "really use" it."

I thought this was a terrific observation about language wars. You can build a website in Ruby or PHP or Python etc., without really using the language. If your code ports nearly line for line from say, A to B, you're probably not taking advantage of the benefits of the language(s). You are using the language, but not really using it.

A more concrete example:

You can build a website in PHP that also has a chat room written in node.js.

In this case you are really using both languages.

Alternatively, you can build a website in node.js that also has a chat room written in PHP.

In that case you are using both languages, but not really using either.



Do you think that this really using argument is more or less a tautology?

(1) If people who wrote their website in Lisp (Viaweb, ITA, Reddit) continue using Lisp, then they are smart and Lisp is powerful.

(2) If those people (or new people) rewrite the website in a different language (C++, Python), then either (a) the new people are dumb (Lisp is too powerful for them!) or (b) the website was not really using features not in the new language (the powerful Lisp features were not used!).

EDIT: As noted by pnathan below, maybe it is more of a No True Scotsman.

http://en.wikipedia.org/wiki/No_true_Scotsman


I don't think it's a tautology, just getting too hand-wavy on an important point.

What does it mean to really use a programming language? I take it to mean that your task aligns with the strengths of the language. I can use the butt of a screwdriver to drive in a nail, but hammers certainly are better at the task. Programming languages are similar, but defining the strengths of the languages and the needs of your task are monstrously more complex.

One strength, and weakness, of Lisp is its malleability. The language itself can be turned into almost anything you want or need. If your purpose is to demonstrate possibility, few tools are better. At this point you can really use Lisp, because at this point you are free to exercise the strengths that only Lisp has.

Once that possibility is known, though, this strength becomes a form of weakness. The project should now move with purpose, methodically exploring the problem space. You draw attention, hopefully money, and with it more team members. What was a single vision wrought in code now must be the coordinated effort of a large group. You can no longer really use Lisp because the group is too large and sharing the knowledge of a newly built language feature takes more time than the feature saves. So, you stop really using Lisp and just use it, carefully selecting the subset of tools that allow people to work together.

Or, you rewrite, in some language whose strengths are more in line with the needs of your now larger project. Then you are really using that language. I don't see tautology or contradiction here, only shifting requirements that we fail to acknowledge.


No.

Let's say you are sitting at your desk and your boss asks you to code a solution to a problem, let's call it Problem Zebra.

If you flip open your laptop, roll a die labeled with 6 programming languages that you know, and then write code in whatever language you roll, that solves Problem Zebra, that is "using a language".

If you flip open your laptop, and before you start typing you think, "I need to solve Problem Zebra, which is a type of Mammal Problem, and Language Y is often used to solve Mammal Problems because the designers of Y added constructs A and B specifically to help solve Mammal Problems (because that's the genre of problems they focus on at work)," and then you write code in Language Y and use A and B, that is "really using a language".


I think you're going off a tangent here. To leave the programming languages aside for a while:

"The US didn't really use atomic bombs during World War II -- except for those 2 key occasions".

pg is pointing out that using x in key places is really using it. This is a far cry from claiming that whenever x is used it is really being used.


This almost sounds like a No True Scotsman, but I don't think it is, if you perform this text replacement:

s/really using/exploiting the unique advantages offered by/




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: