about summary refs log tree commit diff
path: root/org
diff options
context:
space:
mode:
authorWilliam Carroll <wpcarro@gmail.com>2020-02-25T10·42+0000
committerWilliam Carroll <wpcarro@gmail.com>2020-03-01T22·32+0000
commitea5db41722c60f51898f3e59f1f407955b2ae721 (patch)
tree66b34bd0697c614200b092f997cebff43318df04 /org
parent93d654df779c580e1755e66078975838b6845904 (diff)
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!
Diffstat (limited to 'org')
-rw-r--r--org/essays.org2
1 files changed, 1 insertions, 1 deletions
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