人気になること
本文の状態
日本語全文を表示中
詳細モードで約3分の本文を読めます。
同じ出来事の情報源
この情報源を基点に整理
Paul Graham
新しいプログラミング言語のビジネスプランとして書かれた記事。良い言語に必要な強力な抽象化機能が前提とされている点が特徴。
Source Article
元記事を日本語で読む
本文に関係しない購読案内、埋め込み通知、サイト内プロモーションは除いています。
プログラミング言語の人気の力学
2001年5月に書かれたこの記事は、優れたプログラミング言語の設計について考察している。ある友人が著名なOS専門家に「本当に良い言語を設計したい」と伝えたところ、専門家は「それは時間の無駄だ」と答えたという。その主張によれば、言語の良し悪しで人気が決まるわけではなく、たとえ優れた言語でも使われない可能性が高い。専門家自身が設計した言語がその運命をたどったからだ。
このエピソードを起点に、筆者は以下の核心的な問いを立てる:言語の人気を決めるものは何か? 人気言語はその人気に値するのか? 良い言語を定義することに意味はあるのか? どう定義すればよいのか?
筆者は、これらの答えは「ハッカー」を観察し、彼らが何を求めるかを理解することで得られると主張する。プログラミング言語はハッカーのための道具であり、言語の良さは(表示的意味論やコンパイラ設計の演習としてではなく)ハッカーがそれを好むかどうかで決まる。
人気のメカニズム
確かに、大多数のプログラマーは言語の長所だけに基づいて選択するわけではない。多くの場合、使用言語は他者から指示される。しかし、こうした外部要因の影響は過大評価されがちだと筆者は考える。より大きな問題は、「ハッカーが考える良い言語」と「言語設計者が考える良い言語」が往々にして一致しないことにある。
重要なのはハッカーの意見である。プログラミング言語は定理ではなく、人間のために設計される道具だ。靴が人間の足に合わせて設計されるのと同じように、言語も人間の長所と短所に適合するよう設計されなければならない。履いた時にきつい靴は、たとえ彫刻として優雅でも、悪い靴なのである。
大多数のプログラマーが良い言語と悪い言語を見分けられないかもしれないが、これは他の道具と変わらない。だからといって、良い言語を設計する試みが無駄だとはならない。熟練したハッカー(エキスパートハッカー)は良い言語を見分け、それを使う。彼らはごく少数派だが、すべての優れたソフトウェアを書き、その影響力は絶大である。残りのプログラマーは、彼らが使う言語を使う傾向にあり、実際、彼らが上司や教授として他のプログラマーに使用言語を指示することも多い。
エキスパートハッカーの意見だけが人気を決める唯一の力ではない。レガシーソフトウェア(COBOL)や誇大宣伝(Ada、Java)も役割を果たす。しかし筆者は、長期的に見ればエキスパートハッカーの評価が最も強力な力だと考える。十分な初期規模と時間が与えられれば、プログラミング言語はおそらく「それに値する程度」の人気を得る。そして、一度人気が確立されれば、それはさらなる成功を呼び、言語の地位を強化していくのである。
原文を表示
May 2001(This article was written as a kind of business plan for a new language. So it is missing (because it takes for granted) the most important feature of a good programming language: very powerful abstractions.)A friend of mine once told an eminent operating systems expert that he wanted to design a really good programming language. The expert told him that it would be a waste of time, that programming languages don't become popular or unpopular based on their merits, and so no matter how good his language was, no one would use it. At least, that was what had happened to the language he had designed.What does make a language popular? Do popular languages deserve their popularity? Is it worth trying to define a good programming language? How would you do it?I think the answers to these questions can be found by looking at hackers, and learning what they want. Programming languages are for hackers, and a programming language is good as a programming language (rather than, say, an exercise in denotational semantics or compiler design) if and only if hackers like it.1 The Mechanics of PopularityIt's true, certainly, that most people don't choose programming languages simply based on their merits. Most programmers are told what language to use by someone else. And yet I think the effect of such external factors on the popularity of programming languages is not as great as it's sometimes thought to be. I think a bigger problem is that a hacker's idea of a good programming language is not the same as most language designers'.Between the two, the hacker's opinion is the one that matters. Programming languages are not theorems. They're tools, designed for people, and they have to be designed to suit human strengths and weaknesses as much as shoes have to be designed for human feet. If a shoe pinches when you put it on, it's a bad shoe, however elegant it may be as a piece of sculpture.It may be that the majority of programmers can't tell a good language from a bad one. But that's no different with any other tool. It doesn't mean that it's a waste of time to try designing a good language. Expert hackers can tell a good language when they see one, and they'll use it. Expert hackers are a tiny minority, admittedly, but that tiny minority write all the good software, and their influence is such that the rest of the programmers will tend to use whatever language they use. Often, indeed, it is not merely influence but command: often the expert hackers are the very people who, as their bosses or faculty advisors, tell the other programmers what language to use.The opinion of expert hackers is not the only force that determines the relative popularity of programming languages — legacy software (Cobol) and hype (Ada, Java) also play a role — but I think it is the most powerful force over the long term. Given an initial critical mass and enough time, a programming language probably becomes about as popular as it deserves to be. And popularity further separates good languages from bad ones, because feedback from real live users always leads to improvements. Look at how much any popular language has changed during its life. Perl and Fortran are extreme cases, but even Lisp has changed a lot. Lisp 1.5 didn't have macros, for example; these evolved later, after hackers at MIT had spent a couple years using Lisp to write real programs. [1]So whether or not a language has to be good to be popular, I think a language has to be popular to be good. And it has to stay popular to stay good. The state of the art in programming languages doesn't stand still. And yet the Lisps we have today are still pretty much what they had at MIT in the mid-1980s, because that's the last time Lisp had a sufficiently large and demanding user base.Of course, hackers have to know about a language before they can use it. How are they to hear? From other hackers. But there has to be some initial group of hackers using the language for others even to hear about it. I wonder how large this group has to be; how many users make a critical mass? Off the top of my head, I'd say twenty. If a language had twenty separate users, meaning twenty users who decided on their own to use it, I'd consider it to be real.Getting there can't be easy. I would not be surprised if it is harder to get from zero to twenty than from twenty to a thousand. The best way to get those initial twenty users is probably to use a trojan horse: to give people an application they want, which happens to be written in the new language.2 External FactorsLet's start by acknowledging one external factor that does affect the popularity of a programming language. To become popular, a programming language has to be the scripting language of a popular system. Fortran and Cobol were the scripting languages of early IBM mainframes. C was the scripting language of Unix, and so, later, was Perl. Tcl is the scripting language of Tk. Java and Javascript are intended to be the scripting langua
今日のまとめ
AIデイリーブリーフで今日の重要ニュースをまとめ読み