少点错误 03月31日
Efficiency as a 2-place word
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文探讨了人们对“效率”等词语的常见误解,指出许多词语实际上是需要两个参数的“二元词”,但人们常常将其简化为“一元词”来使用。文章通过“next Friday”和“效率”的例子,阐述了这种简化可能导致的歧义和误判。作者认为,在评价事物时,我们不仅要关注目标,也要考虑过程。文章还讨论了在软件工程中对“效率”的过度关注,并警示了默认参数可能带来的问题。

🤔 **“二元词”与“一元词”的区别:** 作者强调,许多词语,如“next”和“效率”,实际上需要两个参数才能完整表达含义,但人们常常将其简化为只有一个参数的“一元词”来使用,这容易导致误解。

📅 **“Next Friday”的歧义:** 以“next Friday”为例,不同的人可能会有不同的理解,这取决于他们参照的时间点。这种歧义源于“next”的二元属性,需要一个参照点才能确定“next”所指的具体日期。

🎯 **“效率”的本质:** “效率”并非一个孤立的概念,而是一种衡量“以某种方式实现某个目标”的指标。作者认为,在评估效率时,除了关注目标达成,也要重视实现目标的“过程”,包括体验、舒适度等。

💻 **软件工程中的“效率”:** 在软件工程领域,人们常常将“效率”等同于代码的运行速度或内存使用量。作者认为,过分追求代码的效率,可能会忽略其他重要的因素,如代码的可读性、维护性等。

Published on March 31, 2025 1:17 AM GMT

 

Back in the day, Eliezer spoke of 2-place words:

I have previously spoken of the ancient, pulp-era magazine covers that showed a bug-eyed monster carrying off a girl in a torn dress; and about how people think as if sexiness is an inherent property of a sexy entity, without dependence on the admirer.

"Of course the bug-eyed monster will prefer human females to its own kind," says the artist (who we'll call Fred); "it can see that human females have soft, pleasant skin instead of slimy scales.  It may be an alien, but it's not stupid—why are you expecting it to make such a basic mistake about sexiness?"

What is Fred's error?  It is treating a function of 2 arguments ("2-place function"):

Sexiness: Admirer, Entity—> [0, ∞)

As though it were a function of 1 argument ("1-place function"):

Sexiness: Entity—> [0, ∞)

I think that this is such a great distinction, 1-place words vs 2-place words. And more generally, to think about how many "arguments" a word "accepts".[1]

Next Friday

I ran into this yesterday. I was hanging out with a friend who asked if I'm interested in coming to any of his poker nights on Fridays. I was like, "let me see, next Friday I'll be away for..." and then I caught myself. What exactly does "next Friday" mean?

This happened on Saturday 3/29/25. I was trying to refer to Friday, 4/4/25. But I was using "next" as a 1-place word when really, I think it is a 2-place word. One argument is the entity: in this case "Friday". But I think there is a second argument that answers the question: "next relative to what?".

Personally, I like to avoid all of this and talk about "this upcoming Friday" or "the Friday after this upcoming Friday", or, especially when I'm writing, I'll just say the actual date: "Friday the 4th" or "Friday the 11th".

Efficiency and my startup

I think the word "efficiency" is another good example of something that is a 2-place word but where people frequently use it as a 1-place word. I ran into an example of this recently.

I am currently working on a startup where the product is admin software for small urban design firms. A few months ago I was at something of a crossroads and was unsure of what my path forward should be. After seeking advice from various people, I arrived at the conclusion that, to oversimplify, I should divide my time about evenly between 1) building an MVP and 2) talking to users.

But when I started to execute on this plan, I ran into some difficulties. Basically, I just found myself wanting to spend all of my time coding and none of it talking to users.

If you have any experience with startups, you may be facepalming pretty hard right now. Spending too much time coding and not enough of it talking to users (amongst other things) is a classic failure mode for founders. It's very inefficient. You may be on your way to the comments section right now, ready to explain this to me. Before you do that, hear me out.

Efficiency is a 2-place word, not a 1-place word. It doesn't make sense to say that X is efficient. You have to say that X is an efficient way of achieving Y.

In practice, I think most people understand this and when they use "efficient" as a 1-place word it's because they think the Y is obvious.[2] Like with startups, it's obvious that Y = "chances of being successful", or "chances of being successful multiplied by magnitude of success", or maybe even that last one with utility functions factored in. After all, diminishing marginal utility is a thing.

But I actually think that these values of Y are missing something important. They are all focusing on the destination. They're looking at the chances you reach a "good" destination and also ask the question of how good each destination is.

But what about the journey? I think you gotta factor the journey in. Y needs to incorporate it.

And with that said, I feel pretty good about my decision to spend all of my time coding right now. I think that in doing so I am sacrificing some "destination points", but what I gain in "journey points" outweighs this sacrifice.[3]

Efficiency in route planning

I don't want to imply that you always need to "pass two arguments" when you use the term "efficient". Sometimes the Y is in fact pretty obvious and it is appropriate to just omit Y and use "efficient" as a 1-place word.

For example, if I said that "taking Broadway is a more efficient way to bike downtown than taking Naito", you'd probably understand what I mean. You'd probably understand that I'm saying that Broadway is more direct and will get you there faster.

So then, I wouldn't necessarily object to using it as a 1-place word here. However, even if people can correctly infer what value you're using for Y and the communication is successful — the other person successfully receives the message you are sending[4] and understands what it is pointing to — I'd warn that against using this societal default normatively.

Let me explain. The socially agreed upon default value of Y in this context is something like "get to your destination ASAP". So when I say that taking Natio is inefficient, it's implied that I'm really saying that it's an inefficient way to get downtown ASAP.

But should my goal be to get downtown ASAP? Shouldn't I also think about how dangerous a particular route is? How comfortable it is? How pleasant and scenic it is? I certainly care about all of those things and after factoring them in, prefer Naito.

But I think that it's easy to jump from "taking Broadway is more efficient" to "taking Broadway is better". What I'm warning against is taking that jump. I think that such jumps are not infrequent.

Efficiency in software engineering

In everyday life people often are too loose with 2-place words like "efficiency". Even in the world of academia, especially in softer fields like urban design, people are still too loose. However, in the world of software engineering, this excessive looseness doesn't really happen.

Programmers are generally very, very smart people. They tend to understand when a word "takes multiple arguments", both because they are very, very, very smart, and because they can just viscerally feel it. After all, in their world, when they pass the incorrect number of arguments to a function, they get a compiler error. So then, programmers are never too loose with 2-place words.

Just kidding! One of my biggest pet peeves about this 2-place word stuff actually comes from the field of software engineering. And beyond this pet peeve, I don't really find that programmers are much better than other people are.

Here's my pet peeve: in the world of software engineering, when you talk about how efficient a piece of code is, you almost certainly are talking about how fast it is. Or maybe you're talking about how much memory it uses. But it's usually one of those two things. And it's often assumed that you're talking about situations where input sizes are ginormous.

Furthermore, it isn't uncommon for people to take the jump of assuming that "more efficient" code is better code.

Well, all else equal, it is better code. I think what I'm trying to say is that a lot of people will place a large burden of proof on showing that it is actually worth taking the inefficient approach. I disagree with this burden of proof as a heuristic in most contexts.

I've found that people can be quite attached to this heuristic though. I've had numerous disagreements during code review where it was clear that the actual difference in speed is only a few milliseconds or something, and that given realistic input sizes the difference in speed is unlikely to meaningfully grow, yet people will still feel that it is important to "be efficient". Efficiency, with the default value of Y, has probably become a lost purpose in a lot of these situations.

More generally, even if they're a convenient way to communicate, I think that "default arguments" are often a slippery slope towards more normative judgements, and I think it's worth keeping an eye out for this.

  1. ^

    And even more generally, to think about the argument type.

  2. ^

    For the programmers out there, it's as if they assume that there is a default value for the argument, and so the argument is actually optional. Something like const efficiencyInContextOfStartups = (action, goal = "maximizeExpectedMonetaryValue") => { ... }.

  3. ^

    And for various reasons, I'm more optimistic about my ability to divide my time in the future than I am right now. So moving forward, I think I'll be able to bounce between building, user research, sales, marketing, etc.

  4. ^


Discuss

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

效率 二元词 软件工程 语义学
相关文章