From ea5db41722c60f51898f3e59f1f407955b2ae721 Mon Sep 17 00:00:00 2001 From: William Carroll Date: Tue, 25 Feb 2020 10:42:37 +0000 Subject: Read Paul Graham's "Being Popular" essay Maybe this is my recency bias writing, but "Being Popular" may be one of my favorite Paul Graham essays that I've read. "Being Popular" outlines Paul Graham's ideas about what an ideal programming language would look like. This essay took me 1-2 hours to read, but it was worth the time. Here are some quotes that I enjoyed (not sorted in any meaningful order): "A friend of mine rarely does anything the first time someone asks him. He knows that people sometimes ask for things that they turn out not to want. To avoid wasting his time, he waits till the third or fourth time he's asked to do something; by then, whoever's asking him may be fairly annoyed, but at least they probably really do want whatever they're asking for." "In this particular case there is a way to finesse our way out of the problem. If we treat data structures as if they were functions on indexes, we could write (a x y) instead, which is even shorter than the Perl form. Similar tricks may shorten other types of expressions." "The latest hot language, Python, is a watered-down Lisp with infix syntax and no macros." "Hackers would think a lot more highly of Lisp if Common Lisp had powerful string libraries and good OS support." "I think language designers would do better to consider their target user to be a genius who will need to do things they never anticipated, rather than a bumbler who needs to be protected from himself." Some take-aways: - Let's refer to Python as "Diet Lisp" from now until the end of time. - Fight to keep your user-base small for as long as you can. Only fools want large user bases. - Rich Hickey definitely read this article; he took some ideas with him; he left some ideas behind. - Focus language design efforts around defining rich standard libraries, especially for string manipulation. - Worry little about supporting backwards compatibility; design a language that can and is often rewritten. - Shift the burden of optimizing code performance to the user by designing a powerful runtime profiler that is tightly integrated into the language runtime. - Minimize the costs users face when experimenting: ensure that your language is interactive; ensure users can create REPLs quickly. - Support OS-level libraries (think about Go). - Maximize introspection and hackability. What a useful read! --- org/essays.org | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'org') diff --git a/org/essays.org b/org/essays.org index 445e52121f40..480d221e1de8 100644 --- a/org/essays.org +++ b/org/essays.org @@ -180,7 +180,7 @@ * TODO The Other Road Ahead * TODO The Roots of Lisp * TODO Five Questions about Language Design -* TODO Being Popular +* DONE Being Popular * DONE Java's Cover * DONE Beating the Averages * DONE Lisp for Web-Based Applications -- cgit 1.4.1