Android 公共 API 中的笑话与幽默

笑话 幽默

此前,我曾介绍过 Android 中一个相对冷门且已被移除的占位符字符串,它同时充当了一个彩蛋,即名为 El Telco Loco 的虚构运营商。但这次要讨论的是 Android 公共 API 中的一些方法和其他部分,它们可能比实际有用性更具幽默感。无论是彩蛋、笑话,还是其他任何名称,这些内容都是面向 Android 应用开发者而非普通用户的。

ActivityManager.isUserAMonkey()

(参考)

尽管文档中未做进一步说明,仅描述该方法在“当前被猴子搞乱界面”时返回 true,乍看之下似乎是个玩笑,但这可能是列表中实用性最高的一个。

它指的是UI Exerciser Monkey,这是一个用于Android的开发工具,通过模拟随机用户输入序列来对应用进行压力测试。因此,该方法将返回一个布尔值,表示Monkey是否正在运行。元素周期表

引入此方法以检测Monkey的使用情况,其起源似乎与Android开发过程中发生的一件事有关,正如书籍《Androids: The Team that Built the Android Operating System*》中的一段引文所述:

有一天我走进猴子实验室,听到一个声音说:“911——有什么紧急情况?”这一情况促使迪安妮在 API 中添加了一个新函数 isUserAMonkey(),用于阻止猴子在测试中执行不应执行的操作(包括拨打电话和重置设备)。

确实,当向应用程序输入随机且本质上不可预测的输入时,你希望有一种方式来锁定应用程序中可能产生意外现实后果的部分,例如拨打紧急服务电话。因此,isUserAMonkey被实现,并后来在Android 2.2 Froyo(API 8)中被纳入公共API。

UserManager.isUserAGoat()

(参考)

这个功能更多是开玩笑。开发者文档中提到它“用于确定发起此调用的用户是否受到传送影响”,这本身可能是在影射 Chrome 任务管理器中一个隐藏的列,该列显示浏览器进程传送了多少只山羊。

该方法首次出现在 Android 4.2(API 17)中,最初仅返回 false。但在 Android 5.0 Lollipop(API 21)中,它被修改为“使用高级山羊识别技术自动识别山羊”。同年早些时候,游戏《山羊模拟器》已发布,并在 Lollipop 开发期间于 9 月登陆 Android 平台,因此该方法被修改为检测设备上是否安装了《山羊模拟器》的 Android 版本:

public boolean isUserAGoat() {
	return mContext.getPackageManager()
		.isPackageAvailable("com.coffeestainstudios.goatsimulator");
}

在 Android 11(API 30)中,该方法再次被修改,使得针对 API 30 及以上版本的应用在调用该方法时始终返回 false。根据开发者文档,此改动是为了“保护山羊隐私”。

if (mContext.getApplicationInfo().targetSdkVersion >= Build.VERSION_CODES.R) {
	return false;
}

Android 11也是引入QUERY_ALL_PACKAGES权限的版本,这意味着针对Android 11的应用程序无法在没有此权限的情况下通过PackageManager查询其他应用程序的信息。因此,为了避免泄露用户设备上安装的其他应用程序的信息(即使是开玩笑),有必要对该方法进行限制。

UserManager.DISALLOW_FUN

(参考)

此常量指代在 Android 6 Marshmallow(API 23)中新增的设备策略,用于限制用户“享受乐趣”。开发者文档中对该策略的描述颇具讽刺意味,让人联想到 GLaDOS 可能会说的话:

指定用户是否不允许享受乐趣。在某些情况下,设备所有者可能希望阻止用户在使用设备时体验乐趣或喜悦。

这实际上是一个真实的设备策略,设备所有者可以修改它来限制用户对设备的使用。第三方应用程序可以利用此策略禁用其应用程序中被认为“过于有趣”的功能。我不知道是否有第三方应用程序实际使用了此策略,但在 Android 系统中,它被用于禁用在设置中点击版本标签时出现的 Android 版本彩蛋。

考虑到像谷歌浏览器“无网络连接”恐龙小游戏这样的“趣味”彩蛋最终会成为干扰,例如学校希望在已注册设备上禁用此类功能参见Chromium问题#41159706,因此Android版本的彩蛋也可能根据版本不同成为干扰。

Chronometer.isTheFinalCountdown()

(参考)

在 Android 8 Oreo(API 26)中,Chronometer 类新增了一个名为 isTheFinalCountdown 的方法。调用该方法时,它会发送一个 Intent 打开 YouTube 视频,播放欧洲乐队(Europe)的《The Final Countdown》。

真的。这就是它所做的:

try {
	getContext().startActivity(
		new Intent(Intent.ACTION_VIEW, Uri.parse("https://youtu.be/9jK-NcRmVcw"))
			.addCategory(Intent.CATEGORY_BROWSABLE)
			.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT
				| Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT));
	return true;
} catch (Exception e) {
	return false;
}

太棒了。

PackageManager.FEATURE_TOUCHSCREEN_MULTITOUCH_JAZZHAND

(参考)

该常量在 Android 2.3 Gingerbread(API 8)中添加,用于描述支持跟踪 5 个同时触摸输入的设备,其名称是对 Jazz hands 的引用。

Log.wtf()

(参考)

根据开发者文档,WTF代表“What a Terrible Failure”(确实……),用于记录绝不应发生的情况。它以断言级别记录消息。

AdapterViewFlipper.fyiWillBeAdvancedByHostKThx()

(参考)

这是一个名称奇特且带有幽默感的非正式方法,很可能是因为某位开发者在命名时一时想不出合适的名称,最终该方法被纳入了公开的 Android API,并在 Android 3.0 Honeycomb(API 11)中被添加。该方法由 AppWidgetHost 在翻转 AdapterViewFlipper 对象内部的视图时调用。

确实,命名是计算机科学中的两大难题之一,另一个是偏移量错误和缓存失效。

IBinder.TWEET_TRANSACTION

(参考)

Android Binder 系统用于实现进程间通信(IPC),而事务通过不同类型进行区分,其中之一便是… TWEET_TRANSACTION。该类型于 Android 3.2 Honeycomb(API 13)版本中引入,声称用于向目标对象发送推文。

实际上它并不会执行任何操作,更不用说发送推文了。文档中提到消息长度限制为 130 个字符,这是参考了 Twitter 早期的消息字符限制。

IBinder.LIKE_TRANSACTION

(参考)

类似地,在Android 4.0.3 ICS(API 15)中新增了一种名为LIKE_TRANSACTION的交易类型。它用于告知应用程序调用者对其的喜爱,但没有计数器来跟踪喜欢次数,不过声称发送此类交易将提升应用程序的自我价值感。

SensorManager.SENSOR_TRICORDER

(参考)

我必须承认我不知道什么是 Tricorder,但它似乎是《星际迷航》中的虚构设备,该常量在 Android 1.0 中被“添加”(这意味着它很可能在 Android 的首次正式发布之前就已存在)。

自API级别15起,SensorManager中的SENSOR_*常量已被废弃,取而代之的是Sensor类,该类中不包含任何与Tricorder对应的引用。可惜。

SensorManager.GRAVITY_*

(参考)

SensorManager 类包含大量常量,用于存储太阳系中各类天体的引力加速度,范围从 GRAVITY_SUNGRAVITY_PLUTO。尽管除 GRAVITY_EARTH 之外的其他常量在实际应用场景中的实用性值得商榷,但其中部分常量实际上只是玩笑。

GRAVITY_DEATH_STAR_I 存储了第一颗死星的重力值(以国际单位制,即帝国单位表示)。这似乎是《星球大战》的彩蛋。

GRAVITY_THE_ISLAND 存储了“那个岛屿”的重力值。显然这是对2004年电视剧《迷失》)中“岛”的致敬。

<blink>

最后一个,这个尤其离谱。你知道Android视图布局系统中隐藏了一个名为<blink>的标签吗?因为这确实存在:

// [TAG_1995 = "blink"] 
if (name.equals(TAG_1995)) {
	// Let's party like it's 1995!
	return new BlinkLayout(context, attrs);
}

它会让包裹在其内部的任何元素闪烁,就像旧版的<blink> HTML标签一样。这个功能在Android开发者参考文档中似乎完全没有记录,但它是在2011年的一次提交中中添加,标题为“改进 LayoutInflater 的兼容性”(没错……),并且仍然存在于 AOSP 主分支中。

然而,是否应该实际使用它尚有争议。

共有 167 条讨论

  1. 在Facebook工作多年以来,给危险或已严重过时的标记添加`_DO_NOT_USE_OR_YOU_WILL_BE_FIRED`后缀一直是惯例。所有人都心照不宣地参与了这个玩笑。

    在疫情期间,当约50%的员工是2020年后入职时,这一做法及其他类似做法开始引发抱怨,被认为会造成恐惧和不确定性。当时我们在远程员工的入职培训和融入企业文化方面做得不够好。

    [^1]: 由于公司规模庞大,这一说法仅在我所接触的圈子内成立。

    1. 我记得在React的__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED中看到过这个,我一直喜欢这种轻松幽默且冗长的命名方式。

      遗憾的是,它也沦为了“去趣味化”的牺牲品:https://github.com/facebook/react/pull/28789

      1. 可以添加一个《飞出个未来》的参考

        __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED_______OUT_OF_A_CANNON___INTO_THE_SUN

      2. 有趣的名字是可以的,但前提是不会引入歧义。在这种情况下,改动并非针对有趣性,而是针对歧义性。

        1. 这是一个很好的提醒,它(以及改动本身)强调了不要让有趣性妨碍实际工程改进的重要性。去趣味化作为副作用,如果可以这么说的话。

    2. 在谷歌的某个阶段,有一大段难以理解的代码,可能位于网络堆栈的错误位置,且顽固地难以修改。尽管我们努力尝试,它仍在不断增长。我们将其重命名为“[Foo]Sorcery”(大约10年前);人们停止尝试向其中添加内容,并且定期有人会进来删除其中部分内容,这可能都归功于这个古怪(且有些吓人)的名称。

  2. 对于X11,我记得:

    用于切换一堆遗留垃圾的全局变量名为“party_like_its_1989”:https://gitlab.freedesktop.org/xorg/xserver/-/blob/master/di…

    DRI2扩展的更改日志包括“太棒了!”、“真正的卓越”、“开悟了”等:https://www.x.org/releases/X11R7.7/doc/dri2proto/dri2proto.t…

    1. 我知道它试图显得有趣。但这些状态在现代计算机的先进电源管理中相当正常。操作系统应该处理从深度睡眠中唤醒,或主板温度达到200摄氏度的状态。

      1. 休眠/ hibernate 不会改变这里的情况——如果计算机处于这些状态,没有代码在运行,因此查询它没有意义,这就是笑点。该函数不是名为 was_computer_running()。

      2. 不太可能。没有任何规格超过 140 摄氏度,许多部件甚至不超过 80 摄氏度。

        1. 该陈述过于笼统且事实错误,例如HT83C51的操作温度规格为225摄氏度

          1. 这仍然不是一个需要操作系统处理主板温度达到200摄氏度的芯片,就像最初的观点一样。8051将运行在裸机模式下。TI在C2000系列中有些芯片可以在200摄氏度下运行FreeRTOS,但市场上绝大多数芯片的最高额定温度为150摄氏度。

    2. 后者错失了一个成为某种异步事件触发器的绝佳机会。

    3. 对于好奇的读者:https://github.com/haiku/haiku/blob/master/src/system/libroo…

      1. 有道理:

        is_computer_on() int32 is_computer_on(); 如果计算机处于开机状态,则返回 1。如果计算机未开机,则此函数返回的值未定义。

    1. > @hide 该方法容易被滥用,可能不应包含在 API 中。如果我们将来确实将其纳入 API,可能需要将其重命名为更不幽默的名称,如 runUnsafe()。

      😀

    2. 我在 TFA 中寻找这个功能。遗憾的是它未被包含,因为这是我最喜欢的功能之一。

      1. 为什么这会出现在迪士尼的《星球大战》电影中?

  3. > Chrome任务管理器中隐藏的一列,显示浏览器进程传送了多少只山羊

    发现这个功能不再有效,感到非常不满。这里有一个旧帖子附带截图:https://www.100-geek.net/articles/goats_teleported?action=ar…

    从234列到16列,真是大清洗。

  4. 如果你想在自己的设备上测试isUserAGoat和isUserAMonkey,我发布了这个小应用程序,它正好可以做到这一点:https://play.google.com/store/apps/details?id=com.trianguloy…

    也许我可以添加这些其他彩蛋…

    1. 这会很有趣,尤其是如果你能添加一个检查DISALLOW_FUN策略的功能。在阅读博客文章时,我快速搜索了GitHub,看看是否有任何带有可用源代码的Android应用程序使用了它,结果只找到了包含系统设置应用程序代码的仓库,这些代码用于锁定基于该策略的版本彩蛋。你可能会成为第一个使用它的第三方!

    2. 在我的 Android 15 设备上无法安装你的应用。Google 现在强制要求最低编译 SDK 版本。也许你可以升级你的构建版本 :)?

      1. 如果你查看应用描述,有一个 GitHub 链接,该链接又有一个 f-droid 链接,你可以使用它。

        但您不会错过什么,因为 `isUserAGoat()` 在 Android 11 及以上版本中会返回 false,而 `isUserAMonkey()` 仅在您使用猴子测试套件时返回 true。

  5. 我怀念科技产品中彩蛋的时代。随着一切的商业化,这种现象逐渐消失了。

    1. 此外,安全问题也备受关注。安全人员不希望在运行的代码中发现任何意外内容,而彩蛋天生就是意外的,有时甚至隐藏得很好。

      我记得有一次,一家大公司的承包商在交付的代码中添加了一个未记录的彩蛋,它相当无害,比如在输入特殊键盘组合时播放音乐,然而,它被视为安全漏洞,仿佛是一个后门。我不知道是否有人因此被解雇,但这种可能性非常大。

      这是一个公共API,所以至少它是文档化的,但即使如此,我敢肯定,一些非常不友好的安全审计员只会将其视为攻击面增加。

      安全可能是必要的,但天啊,这太糟糕了!(不仅仅是彩蛋)

      1. 天啊。在我职业生涯早期,我做了一份自己不喜欢的工作,做着不得不做的一些非常粗糙且枯燥的工作——这不是一个有趣的挑战,只是一个令人厌倦的任务。它涉及覆盖不应该被覆盖的模板文件,基本上在多个地方编写相同代码的多个版本,因为系统非常粗糙。

        这个项目拖拖拉拉,反复迭代,工作时间长,其他客户又出问题,等等等等,长话短说,我有点疯了,在代码里留了一个彩蛋评论,当时我有点疯狂。

        几年后,我离开那份工作后,前同事发来一条消息,问:“你知道MOOL吗?”

        我说我对MOOL一无所知,他解释说,客户在代码库深处的一个不常用的模板文件中发现了一段关于名为MOOL的牛神的长篇大论,我回答说:“啊,是的,那可能就是我写的。”

        前客户的IT负责人发现了这段代码,并联系了我的同事,说:“我假设这不算安全漏洞,但我也不知道这到底是什么。”他好在对此事保持了幽默感,这反而成了一个不错的借口,让我们有机会聊聊。可以说这是最好的结果。

        如今我绝不会再这么做,毕竟经历过真正的安全漏洞并应对过那场噩梦。但得知两件事让我感到有趣:A. 我那段古老糟糕的代码仍在生产环境中运行,B. 我留下的那条评论——我早已忘记且可能以为没人会读到的内容——竟被发现,就像月球上的旗帜或至少是一枚时间胶囊。

  6. 我希望将回复这个帖子作为我面试候选人的必备条件。同样适用于面试我的人。这真是“世界上两种人”的时刻。

    1. 为什么?谷歌员工在API中添加笑话,就像圣诞晚宴上的爸爸笑话一样好笑。

      1. 这样我就能知道他们属于世界上哪两种人中的哪一种。

  7.   public static final String DISALLOW_FUN
    

    默认值为false。[…] 类型:布尔型[…] 常量值:“no_fun”

    来源:https://developer.android.com/reference/android/os/UserManag…

    这怎么可能通过代码审查?Android上的布尔值是字符串吗?

    1. > 这段代码是怎么通过代码审查的?Android 中的布尔值是字符串吗?

      你误读了文档,这是一个键值 API。

      `DISALLOW_FUN` 是你传递给 `setUserRestriction` 的字符串键,该方法接受布尔值。

        1. 此外,这是一个企业策略常量,因此它通过REST API从MDM后端以字符串/字符串字典的形式发送(并配置)。这是因为常量可以是混合类型(例如:“MAX_PASSWORD_CHARS” : “1”,‘DISALLOW_NETWORK_SWITCHING’ : “true” – 示例,常量并非实际值)。

    2. 有人指出数据类型的原因。更微妙的问题是使用双重否定。布尔 API 如 “disable” 会让 API 用户感到困惑。

  8. isUserAMonkey API 的由来:https://books.google.nl/books?id=68BZEAAAQBAJ&pg=PA96&lpg=PA…

    1. 为了确保猴子测试中的猴子(一个模拟用户进行随机点击)无法执行所有可能的操作。

      https://books.google.nl/books?id=68BZEAAAQBAJ&pg=PA96&lpg=PA…“布鲁斯多年来将实验室从最初的七台设备扩展到超过

      400台设备。他表示,在此过程中遇到了一些意料之外的问题。‘有天我走进猴子实验室,听到一个声音说,‘911,有什么紧急情况?’这种情况促使迪安妮在API中添加了新功能isUserAMonkey(),用于限制猴子在测试中不应执行的操作(包括拨打电话和重置设备)。’

    2. 有趣的是,原始Mac也拥有类似的MonkeyLives标志:https://folklore.org/Monkey_Lives.html

      1. 我推测这就是《Android 开发指南》脚注中提到的原版 Mac 上的“The Monkey”测试工具。该工具源自“无限猴子定理”,将猴子作为随机性的隐喻,且有开发者曾提及 Android 开发者曾为 WebTV 和 Palm OS 采用过类似的猴子测试方法。

  9. `<blink>`标签曾是早期HTML标准的官方组成部分,直到青少年开始上网,理性最终占上风。我怀疑这可能是为了与旧网页保持兼容性而保留的。

    1. 没错,闪烁标签的概念就源自于这个现已废弃的 HTML 标签。但博客文章中提到的内容特指 Android XML 布局视图系统中一个隐藏的(据我所知未文档化的)闪烁标签,该系统与系统 WebView 浏览器是独立的(我推测后者可能仍包含闪烁标签的相关代码,但这并不令人意外)。我不确定Android视图中是否还有其他内置标签与HTML标签直接对应。

    2. 这个blink标签属于特定的UI XML方言,而非HTML。

      1. 确实,它从未被纳入HTML标准,但它确实是早期HTML中被文档记录的一部分。

        blink 元素曾在 1993/94 年的 Netscape Navigator HTML 方言中出现,当时早期 HTML 还只是刚进入 IETF RFC/草稿阶段。你可以在那个时代之后的 Netscape HTML 开发者文档 DevEdge 中找到 blink。它从未出现在 NCSA Mosaic 中,后者是当时另一款主要的图形界面浏览器。

        在后续的标准化过程中,尽管主要参与者仍为同一批人,但此时已更多由W3C主导而非IETF。Netscape同意在微软放弃marquee标签的前提下,从提案中移除blink标签。因此,从这个意义上说,blink确实从未被纳入标准化的HTML版本中。然而,当时许多活跃使用的标签也从未出现在标准文档中。

        参见此处 https://www.w3.org/People/Raggett/book4/ch02.html,了解W3C的相关历史,该组织在IETF时代结束后成为HTML的正式维护者。

        编辑:这是我在archive.org上能找到的最早的网景开发者文档:https://web.archive.org/web/19961115043739/http://developer….

        1. blink标签表明,那些常被宣称具有绝对向后兼容性的网页,往往因一些微不足道的原因而被打破。

          至少如今你可以轻松恢复这种乐趣:

            blink {
              animation: blink 1s steps(5, start) infinite;
            }
            @keyframes blink { to { visibility: hidden } }
    3. 实际上,如果你在谷歌上搜索“blink 标签”,似乎还有另一个彩蛋:https://www.google.com/search?q=blink+tag

      (似乎在 iOS 上无法触发,但在桌面端的 Chrome 和 Firefox 上有效)

      1. 令人失望的是,生成的 HTML 实际上并未使用 <blink> 标签。

  10. 这些会进入日志、指标和API合同。现在你在季度审查中向合作伙伴团队解释isUserAGoat()。那时没人会笑

    有趣的是,代码检查工具会捕获未使用的变量,但不会捕获无趣的变量。也许我们需要一个代码检查工具,在90天后标记笑话名称。如果它仍然有趣,你就保留它。否则重命名并继续

    1. “我们的开发人员很有幽默感。下一个问题。”

  11. 公共 iOS API 中是否有类似的内容?

  12. 在 OpenVMS 上,DCL(作为 shell 和主要脚本语言)将此作为退出代码。

    $ exit 2928 %SYSTEM-W-FISH, my hovercraft is full of eels

  13. 《Android 团队:打造 Android 操作系统的团队》:链接无法访问 🙁

    1. 哎呀,不知道为什么我放的链接没用。刚修正了,结果链接到了 Chet Haase 网站上关于这本书的页面:https://www.chethaase.com/androids

  14. 看来他们在最新安卓版本中终于将DISALLOW_FUN默认设置为true。

  15. 这就是我拒绝使用安卓的原因

  16. 注意这些内容几乎没有在过去10年中新增?

    Android变得“更成熟”——也就是说,变得无聊了,而代码中的幽默感比例正在迅速下降。

    1. 如果你花了10个小时调试某个问题,或者被大量 bug 报告和差评淹没,而深入调查后发现 bug 出现在上游代码中,且代码中夹杂着幽默元素,这会让人觉得上游开发者对软件开发不够认真,或者在轻视责任。许多事物起初都很小,但X11、Android等如今已被数百万用户在各种不同场景中使用,而幽默具有高度的上下文依赖性。

      1. > 幽默具有高度的上下文依赖性。

        这是关键。写笑话很容易,但要确保你的笑话只在适当的上下文中显示则困难得多。当作者认为是机智的笑话出现在一个新且不适当的上下文中时,它们不再显得机智,反而像个傻瓜。在普通周二的开发者文档中可能有趣的内容,在《华尔街日报》头版的一篇负面文章中可能就不再有趣了。

      2. 这听起来像是针对“愤怒文化”抱怨者的问题,而非那些享受编码乐趣的人需要关心的事情。

    2. 好,我讨厌“有趣”的代码。直接切入正题,我可不是来听别人18年前自以为搞笑的内部笑话的。

      1. 啊,我看到你是那些会启用`UserManager.DISALLOW_FUN`的人之一!

        我个人很享受代码中的一点奇思妙想。我们所做的大部分事情并不那么严肃(当然,包括我曾经在生命与死亡相关的软件上工作过的人在内)

        1. 我认为这在软件工程师中是一条明显的分界线:一类人是因为热爱工作、渴望创造而从事软件开发,另一类人则是为了混日子,一有机会就想尽快下班回家。

          第二类人不想处理那些“有趣的垃圾”和“干扰”,这些东西会阻碍他们标记一个 bug 已修复(或者,天啊,实际上被分配了额外的 bug/工作,因为一些“有趣”的代码可能会导致故障或混淆)。

          随着团队和公司的发展,第二类人通常会超越第一类人,而第一类人则会离开,重组为更小的团队,继续从事其他项目。

          1. 我曾在代码/环境中添加过不少有趣的东西。然而当“新成员”加入后,他们会花大量时间争论为何这些幽默元素不应存在。某项目中,主程序中的一行关于“新开始”的注释,引发了长达两小时的“不专业”指责,并导致数月无端的人身攻击。这简直是整个代码库中唯一的幽默元素。太过小题大做。一个原本充满乐趣的团队因此变得令人厌倦,甚至连上班都提不起兴趣,其他团队成员也纷纷重新分配到其他工作。我如今将其作为筛选合作对象的试金石。曾想将其加入面试问题,但尚未找到合适的实现方式。

            1. 最好重新分配“新员工”,而不是让他破坏团队。

              1. 完全正确。然而,这意味着老板也持相同观点,因为他正是被专门聘请加入该团队的。等到事情发生时,老板甚至没有察觉。尽管团队每天用50种委婉方式向他暗示。当时我并未意识到这是控制和操纵行为。但如今我已学会识别,并能迅速察觉,确保此类情况不再发生。

          2. 写下来时看似有趣的事情,几年后往往不再有趣,尤其是在缺乏最初背景的情况下,当试图真正“构建某物”时。

            新鲜的乐趣是好的。化石化的乐趣并不那么有趣。它更像是在家庭聚会上努力显得有趣的叔叔。

            1. 一只狗走进一家酒馆,说:“我什么都看不见。我来开这瓶吧。”

            2. 谷歌一点都不好玩,那些试图在谷歌上搞幽默的人让人尴尬

              1. 回想起苹果、微软、谷歌和贝尔实验室的人们曾经享受乐趣的时光。据说这真的发生过!

              2. 这个年轻人说话时展现出超越年龄的智慧。但愿我们都能如此幸运。

              3. 对吧?我喜欢编程中的幽默。但我讨厌来自那个毁了互联网的邪恶反乌托邦巨头的幽默。

        2. 我同意你的观点。Chrome中的恐龙游戏就是经典案例;因为学校威胁称如果孩子们能在浏览器中玩游戏,就不会购买Chromebook,所以该功能被关闭了。至少现在似乎是一个设置选项,因此你的所在地区可以决定是否允许娱乐功能。

          1. 不过这与我们讨论的内容大不相同。那是将游戏或乐趣添加到产品中,而在这条子线程中,我们讨论的是给代码概念(函数、类、变量、枚举等)起有趣的名字。

            1. 当你构建API时,这就是你的产品。

              1. 更不用说这篇文章中提到的一个仅供娱乐的API最终产生了负面影响并不得不被移除:

                `isUserAGoat`最终允许任何调用者确定系统上是否安装了特定应用,这构成隐私侵犯并允许在用户同意外进行指纹识别。

                我理解想要让工作更有趣而非仅仅实现规范的愿望,但我们所从事的许多工作都非常重要且复杂,伴随着大量现实世界的影响。这不幸意味着我们所做的一切都必须经过深思熟虑,而非随随便便。

                1. 当时这并不是问题,因为任何应用程序都可以查询某些特定的应用程序(是的,有些应用程序曾经查询过一个很大的列表)。

                  在 Android 11 中,随着 QUERY_ALL_PACKAGES 权限的引入,他们禁用了这个“有趣”的功能。

        3. 我个人并不介意,但曾有几次因这类问题与非英语母语的工程师产生沟通障碍。

          大量时间被浪费在试图理解某些双关语代码和变量名称上,另一次则因他们将代码/注释中的讽刺意味当真,导致耗费大半天时间解决问题。

          1. 英语不是我的母语,但我喜欢文档中的双关语和笑话。如果那些假设的开发者在这些上面浪费时间,也许他们应该提高英语水平,因为有些重要的细节会让他们无法理解。

      2. 活得轻松点。等你去世后,那些严肃的事情真的值得吗?

        不过,有趣的代码仍然应该正常工作

        1. 当然有中间地带。我曾在代码中留下过一些机智的注释和日志信息。

          但我也曾调试过一个Delphi单元,它返回的错误代码灵感来自《碟形世界》小说中的魔法超级计算机Hex。

          “除以黄瓜错误”并不是对模块内部状态的恰当描述,无论你觉得自己有多幽默。

          1. 但一个完全不幽默的“不变量被违反”消息也无济于事。问题不在于消息是否幽默,而在于它没有包含你理解问题所需的信息。这种随意性只是分散注意力的因素。

            1. 你觉得这些分散注意力的东西有助于调试糟糕的代码吗?

              1. 它们不会造成伤害,而且遇到它们很有趣。如果搞笑内容只在某处使用,它可以让人印象深刻且更容易搜索。如果它相当于“错误[错误]”之类的内容,我真的不在乎。

              2. 如果“除以黄瓜”是代码库中唯一的字符串,那么是的?

                1. 对。你的大脑能记住多少个这样的东西?

                  1. 无所谓。关键是我能轻松查阅或解决它们。不查阅的话,你能告诉我HTTP 451和510的区别吗?如果不能,它们就和“我是茶壶”一样没用。但我能唯一地识别出这两个,并弄清楚它们来自哪里。

                    1. 这是一个很好的例子,说明幽默可以有所帮助:我喜欢http.cat,因为它的奇思妙想让查找和记住状态码变得更容易。这与代码中的笑话并不完全相同,但这是一个例子,说明在实际的人因因素方面,更多的幽默比更少的幽默更好。

                      https://http.cat/451https://http.cat/510 供参考

                      451 是一个小众笑话(我花了一段时间才意识到这是雷·布拉德伯里的梗),但 510 肯定会帮助我记住“未扩展” 😛

                    2. 你可以记住其中一些。现在大家都知道404是什么意思了。

                      451也有一点古怪——而这实际上有助于记住它代表的含义(因法律原因不可用)。

          2. “除以黄瓜错误”听起来是个很棒的字符串,可以用grep来查找——这对开发人员来说非常有用,可以帮助他们找到代码中抛出该错误的位置。

        2. 不需要理解别人那些古怪的内部笑话,让我有更多时间专注于对我来说最重要的事情。所以:更少的搞笑代码 == 活得更自在。

        3. 谁在乎你死后会发生什么。你已经死了。

          1. 只有你死后留下的东西才真正重要,其他一切到那时都已消失。

            1. 不,即使那些也不重要。你已经死了。

              1. 世界上还有其他人。

                就像活着时完全不在乎社会其他成员一样,死后完全不在乎社会其他成员会让社会变得糟糕。你不是整个世界,存在一个外部现实(其中有人!),你对它有义务。我不是宗教人士,但在我看来,宗教曾帮助或仍在帮助处理此类问题。

              2. 对我来说,现在活着,那些在我死后会延续下去的事情现在对我来说很重要,因为它们在我死后会延续下去。

          2. 谁在乎你死后会发生什么。

            除了你之外的每一个人。

            你知道除了你之外还有其他人,对吧?

            1. 原评论提到这是为了自己而做。

      3. 我完全同意。我在一个代码库中工作,其中有一些“有趣”命名的函数/概念,我讨厌它们。第一次遇到时并不觉得有趣(只是非常困惑),而且向新员工解释为什么某些东西被命名为这样也并不有趣。

        这无端增加了阅读和理解代码的难度。即使你在定义函数/变量时解释了命名规则,读者仍需额外点击或悬停才能查看说明,未来在遇到这些“有趣”的变量名时,还得在脑海中进行额外翻译。

        一个例子是我们有一个名为“dinnerbell”的标志。它有什么作用?它告诉接收该标志的服务器“来取它”,这里的“它”指的是完整的数据对象,而不是仅仅获取增量。它本可以被命名为其他许多更有意义的名字。

      4. 我也持这种观点。更糟糕的是可爱的错误信息。

        如果软件真的能正常工作,我对更多奇思妙想会持开放态度。但它不能,所以我不能。

        1. 可爱的错误信息令人讨厌,因为它们掩盖了实际发生的事情,而不是试图搞笑。它们通常也不是像真正的彩蛋那样由单个开发者的奇思妙想产生的,因此最终变得像一部糟糕的情景喜剧,配上强行添加的笑声。

        2. 我记得Steam的“从新电脑登录”认证流程曾在大屏上弹出一个巨大的“你好!”,同时阻止用户访问所有在线功能,直到他们离开去邮箱获取验证码并返回。后来他们移除了这个提示,现在只是显示“请查看发送到<地址>的确认码”。

          我认为,在努力让计算变得“更友好”的过程中,通过美化错误信息,到了某个程度,它们开始显得居高临下。我希望现代用户体验能专注于为我服务,而不是一直试图成为我的朋友。

      5. 我也是。专业代码不是插入个人风格或幽默感的地方。

      6. 更糟糕的是,当你遇到一个文档本就糟糕的仓库,却发现里面充斥着无聊的笑话,比如“你以为这会很容易,对吧?嗯,X也这么想,但……”请把这些故事留给别人吧。

    3. 我注意到,与10年前相比,现代生活总体上少了一些乐趣。这可能是因为我变老了,但肯定也有更大的社会变化。顺便说一句,我以前经常浏览tcrf.net,那里很有趣,因为视频游戏开发者会在他们的作品中留下自己的痕迹。情书、老梗、愤怒的信件、随机乱七八糟的东西,应有尽有。与此同时,现代编程却完全专注于“专业主义”和“不惜一切代价提升生产力”。

      1. 是的,这就像从初创公司到“成熟”公司的成长仪式。就像谷歌或Reddit的愚人节玩笑。实际上,愚人节玩笑的新鲜感可能是一个衡量公司企业化程度的指标。

      2. > 顺便说一下,我以前经常浏览tcrf.net,发现游戏开发者会在作品中留下自己的痕迹,这真的很有趣。比如情书、老梗、愤怒的信件、随机的乱七八糟的东西,什么都有。

        这很大程度上取决于你玩的游戏类型。现代游戏规模越来越大,这使得整个项目更加严肃,也更难隐藏彩蛋。不过,独立游戏团队规模较小,仍然充满乐趣,甚至一些AAA大作中也可能藏有一些彩蛋。

      3. 我认为这真的取决于我们自己,要让事情变得尽可能有趣……随着年龄增长,可能会有更多雷区(一位资深员工能否在不显得刻薄或威胁的情况下,对新加入的 junior 恶作剧?),但同时,这些小小的玩笑评论、提交信息、恶作剧等,正是让我在之前工作过的每个地方都与人走得更近的原因……

        我的意思是,我们真的还有其他选择吗?让“乐趣警察”得逞?

    1. 让人好奇导弹控制固件中是否也藏有类似的彩蛋。

      1. 虽然没写过那样的代码,但曾在面向公众的客户项目中做过类似的事。我曾有代码在不知情的情况下被发布。那其中肯定还留有此类内容。我也曾有代码在经过大量审查后发布,所有彩蛋、调试菜单等都被移除。

    2. 正是我所想的,这让我意识到,我使用的任何随机代码或API背后,都曾有真实的人类存在。

  17. 写一篇关于Android源代码的文章的人,怎么会对Tricoder这么了解?我不信

      1. 有趣的是,当我20多岁且不是英国人时,我已经知道什么是达莱克,因为它只是当时流行文化的一部分。三维扫描仪经常被提及,作为现代科技试图从科幻小说中借鉴到现实生活中的例子之一。我甚至从未看过《神秘博士》的任何一集,但因为我对其他科幻/极客内容的兴趣,我对它很熟悉。讽刺的是,我从《红矮星》中知道额头上戴着H的人是什么意思,但那是个题外话。这似乎是一个奇怪的维恩图,其中源代码机器人和《星际迷航》的三维扫描仪不重叠,这将是一个非常奇怪的图。

        1. 我觉得你一针见血,你和作者只是来自不同的文化时代。我也记得《星际迷航》和《神秘博士》曾经很火,但我当时太小了,根本不在乎。而且我至今也不在乎,因为我很少看真人秀。比如我从未看过《老友记》或《权力的游戏》的任何一集。这只是截然不同的世代和亚文化。

          1. 确实如此。每个十年都会产生如此庞大的媒体内容,没有人能掌握一切并理解“所有”的参考内容。那些看似“人人皆知”的事物在不同地区和年代之间差异巨大,而近几十年来随着互联网的普及,出现了大量可以被归类为“宅文化”的亚文化,但它们之间缺乏很多重叠。

            我想我太年轻了,没赶上《星际迷航》最火的时候(而且在电视剧和其他媒体方面,即使是同龄人,我也有很多盲区),但我确实听说过这部作品。我知道一些相关的参考,比如斯波克和瓦肯人致敬,但三录仪直到现在才让我有所耳闻。

            此外,对于像GRAVITY_DEATH_STAR_I这样的东西,我很容易就能看出这是对某种虚构作品的引用(在这种情况下是《星球大战》),因为显然没有名为“死亡星球”的天体。但对于三录仪,我确实想确认它不是某种真实存在但已废弃的硬件传感器,可能是安卓系统在2000年代支持的,与《星际迷航》中的三录仪有间接关联。我确实见过更离奇的巧合。

            比如Android的API中仍然保留了对轨迹球的支持功能,而我记得早期的一些Android手机确实配备过这种设备。如果列表中出现“API中存在一个名为‘轨迹球’的玩笑式输入设备,暗示有手机配备了可滚动的物理球体来移动屏幕光标”这样的描述,那确实会显得很荒谬。因为轨迹球在过去确实存在并被使用过,尽管如今它更多是一种遗留功能(不过这可能是个糟糕的例子,因为我假设可以通过USB或蓝牙连接输入设备,而Android可能会将这些设备识别为轨迹球)。

        2. > 我之前感兴趣的其他科幻/宅文化内容

          我想这就是你的答案。人们的兴趣各不相同,因此人们可以感兴趣的文化组合几乎是无限的。而且人们在某些领域可能会有空白,这让其他人感到惊讶,毕竟时间有限。

        3. 是三录仪(tricorder),不是三录器(tricoder)。

              1. 也许我的毛巾挡住了声音,所以我听错了?

      2. 年龄上说得通,但瑞典人肯定喜欢《星际迷航》https://en.wikipedia.org/wiki/S.P.O.C.K

      3. 我觉得你低估了瑞典人美国化的程度。

        1. 有了《 Vintergatan》,谁还需要《星际迷航》?

    1. 我的老朋友,深空九号已经上映32年了。这并不是当今的宅男们需要知道的事情。所有这些伟大的宅男梗都会随着时间的流逝而消失,就像雨中的泪水一样。

      1. 你知道现在有不少《星际迷航》的电影和电视剧(尽管我希望它们不存在),对吧?

        再说,真正的宅男更关注老媒体,而不仅仅是当前流行文化。这就是为什么像《星际迷航》(还有《银翼杀手》)这样的作品会推出续集——因为有观众需求。

    2. 虽然我一开始感到惊讶,但我认为这并不奇怪。《星际迷航》似乎不再像以前那样受欢迎了。

      1. > 《星际迷航》似乎不再像以前那样受欢迎了。

        提示:它在美国以外从未真正流行过。如果说有什么不同,那就是互联网和好莱坞的重启版让美国以外的人知道了它。

        也可以在文章中找到欧洲的相关内容:https://en.wikipedia.org/wiki/Cultural_influence_of_Star_Tre…

        1. 你确定吗?

          我是意大利人,我们有《星际迷航》(所有电影、所有剧集、许多书籍),而且据说意大利《星际迷航》俱乐部[0]成立于1982年。我认为斯波克和柯克对大多数人来说都很熟悉,而且作为2000年代的宅男,每个人都明白在Slashdot上将比尔·盖茨描绘成博格人的笑话。

          [0] https://stic.it/

          1. > ,而且作为21世纪初的极客,大家都明白在Slashdot上把比尔·盖茨描绘成博格人的笑话。

            所有人,盖茨和Slashdot在一个句子中。

            1. 之所以被称为“Slashdot效应”,是因为它曾是许多网站最大的流量来源。

              1. 叹息

                是的,全球数万名极客(1万?2万?)迫使某台用作服务器的电脑崩溃。他们的观点难道不代表一个拥有~~5000万人口的国家吗?

        2. 在我看来,德国的影响力非常大。我放学后总是连续观看《星际迷航:下一代》和《MacGyver》。《星际迷航:下一代》和《深空九号》都很受欢迎,并在全国范围内播出。我的父亲是和柯克与斯波克一起长大的,那个时代的大多数孩子如果有电视的话都看过这部剧,因为当时电视上没什么别的节目。他一点也不宅 🙂

        3. 那根本不是事实。

          《星际迷航:原初系列》和《星际迷航:下一代》都在欧洲多个国家播出过。

        4. 有一支瑞典的《星际迷航》主题乐队自1988年起一直活跃至今,人气足够高,每年仍在瑞典、德国及其他欧洲国家举办音乐节。https://en.wikipedia.org/wiki/S.P.O.C.K

        5. 我从未是《星际迷航》的忠实粉丝,但在瑞典长大时,我偶尔会观看《下一代》《航海家号》和《深空九号》的剧集。似乎总有《星际迷航》系列在黄金时段播出,且人人皆知——即便其人气已被《星球大战》超越。

          从比利时的亲友那里听说,那里的《星际迷航》热度似乎更高。

        6. 补充评论:我不是美国人,但和这里其他人一样,每天放学后都会看《下一代》,之前还看过《原初系列》。和我同龄的很多人也看过,比如我的妻子。

          顺便说一下,过去三年我们和儿子一起看了《星际迷航:下一代》和《星际迷航:深空九号》,我们的大儿子现在对《星际迷航》非常熟悉。不过,他的同龄人中很少有人熟悉这部剧。

        7. 这部剧甚至在孟加拉国(亚洲的一个小国)播出过,我对《星际迷航:下一代》一见钟情,尤其是那句台词:“太空,最后的边疆……”

        8. > 提示:它在美国以外从未流行过。

          真的吗?我一定是在一个平行宇宙中长大的。《星际迷航:原初系列》和《星际迷航:下一代》在80年代和90年代曾在我们当地电视台播出,据我所记得,甚至在下午时段。如果我遇到一个在这里长大的30岁以上的人(欧洲国家)却不知道《星际迷航》,我会非常惊讶。

      2. 可能是因为它沉寂了很长时间。然后当它被重新推出时,是由一群根本不知道《星际迷航》为什么好的的人重新推出的,所以它基本上很糟糕。

        1. 事后看来,我认为这种印象更多是因为每一季都截然不同。TOS和TAS可能与TNG的前两季相似,但TNG随着剧集的推进变得更加深思熟虑;DS9与TOS和TNG截然不同,它拥有长期的连续性变化(超越演员阵容的更替),这些变化得以延续,并且充满了更多灰色地带,其中公然邪恶往往伴随着微笑和富有魅力的演讲,而非一滩心理油;VOY几乎没有连续性, 使其与DS9形成鲜明对比,但大多数角色足够有趣,足以支撑一部太空肥皂剧;ENT在播出时遭到许多人嘲笑,因为所有主要剧情线都毫无逻辑,而且他们不断引入一些在上下文中毫无意义的旧粉丝最爱角色,因为设定在该剧未来时空的系列尚未遇到博格人、费伦吉人等。虽然我从未看过《Prodigy》,但我知道它试图以一种截然不同的方式探索正统设定,并有自己的故事要讲述。

          而众所周知,只有偶数编号的电影才值得一看(这并不意味着所有偶数编号的电影都好,例如《Nemesis》)。

          从这个角度来看:DIS放弃了一个有趣的设定然后胡闹;PIC是三季的“为什么编剧要把博格人放在到处都是的地方,而主要故事是机器人对阵罗慕伦人、Q和针对变形人的战争罪行(*?)导致变形人恐怖主义?”;以及凯尔文**系列中非常注重激光枪战的动作电影……这一切都不算特别令人震惊。

          令人欣慰的是(对像我这样的人来说),《星际迷航:新边疆》和《星际迷航:发现号》都写得很好,很有深度——但它们是截然不同的剧集。

          《星际迷航:新边疆》感觉像是试图融合《星际迷航:原初系列》、《星际迷航:下一代》和《星际迷航:深空九号》的优点,尽管它在柯克(詹姆斯,另一个柯克没问题)的出现上有些粉丝服务,且缺乏充分的理由。

          LD非常非常荒谬,但对我来说它奏效了——不是作为正统的事件集(马林纳作为船员的性格甚至比伯纳姆更不合适,就像我可以脑补所有Q的剧集为“Q其实是巴克利在全息甲板上幻想权力”一样,主要四位演员在我看来就像是在全息甲板上扮演星际迷航的学生), 但我喜欢它是因为它试图以“是的,而且……”的方式扩展剧集的现有正统设定,而且角色之间95%的时间都相处融洽(当不融洽时,也有合理解释)。

          * 或许“反人类罪”更贴切,或者在非人类宇宙中应使用何种术语

          ** 至于第31部门,它的口碑如此之差,以至于我宁愿忘记它的存在也不愿观看,直到在维基百科上查看《 Nemesis》是奇数还是偶数时才想起来它的存在

          1. 我认为尽管每部剧集各不相同,但从《星际迷航:原初系列》到《星际迷航:航海家号》的所有《星际迷航》剧集都有一种独特的气质,使它们显得一致。是的,TOS更具冒险精神,而DS9更注重连续性和灰色地带,但它们都相似在于,它们都是深思熟虑的剧集,一群能力出众的专业人士在对人类抱有积极愿景的背景下解决问题,同时试图为观众提供道德困境。

            但现代《星际迷航》系列与之大相径庭。阿布拉姆斯执导的电影我还能接受,因为坦白说,老版《星际迷航》电影中也有不少“纯粹的动作片”元素。但《发现号》(DIS)和《皮卡德》(PIC)似乎都沉迷于描绘一个充满绝望的未来,其中所有人皆陷入困境。曾经,我们看到的是编剧足够聪明,让观众自行得出结论并将其应用于现实生活的故事(当然,也有说教意味浓厚的剧集),而现代剧集则成了编剧们公然宣扬自己世界观的讲台。曾经,我们看到的是专业团队运用技能解决问题,如今却看到角色们像孩子般行事,只会用“狠狠打击”作为解决方案。

            最令人痛心的是,唯一一部能与《星际迷航》相媲美的现代剧集是《奥维尔号》,而它甚至不是一部《星际迷航》系列剧集!但无论你如何评价他,塞思·麦克法兰确实理解《星际迷航》并热爱它(与亚历克斯·库兹曼不同,愿他永远不要再制作电视剧)。因此,他创作了一部作品(暂且不提喜剧风格),完全可以成为经典《星际迷航》剧集的继承者。

            令人沮丧的趋势中唯一的例外是《星际迷航:新边疆》(SNW),至少是第一季。我还没来得及看更多,但这部剧正是CBS本应一直制作的,而不是像《星际迷航:深空九号》(DIS)和《星际迷航:企业号》(PIC)这样的垃圾。突然间,我们成了积极未来的探险者,我们又成了称职的专业人士……这终于是一部值得一看的《星际迷航》了。我认为,一些选角选择并不总是很好(他们的柯克……并不适合这个角色),我希望他们能进一步摆脱动作剧的套路,写出更深入的剧本(不过请不要说教,我宁愿看傻乎乎的动作戏也不愿听编剧对我指手画脚)。这就是为什么我说《星际迷航》大多很糟糕,因为《星际迷航:新边疆》是个例外。但总体而言,我感觉目前的创作团队完全不理解《星际迷航》,也无法制作出一部好剧来拯救自己。

            1. > 但现代《星际迷航》大多与之截然不同。阿布拉姆斯的电影我还能接受,因为说实话,老版的《星际迷航》电影也有不少“只是部有趣的动作片”的成分。但《发现号》和《企业号》似乎都沉迷于一种悲观的未来愿景,认为所有人都是失败者。过去,我们曾看到过这样的故事:编剧足够聪明,让观众自行得出结论并将其应用于现实生活(当然,也有说教意味浓厚的剧集)。而现代剧集则成了编剧们公然宣扬自己世界观的讲台。过去,我们曾看到过一群专业人士运用自己的技能解决问题,而现在,角色们却像孩子一样行事,只会用“狠狠地打”作为解决方案。

              说实话,我没觉得说教方面有变化,但其他方面确实如此。

              而且PIC还从TNG中借用了许多有趣的配角,并把他们当作炮灰。马多克斯、休、伊切布、雪莉……以及第一季的皮卡德和数据——而且对两人的待遇更糟。数据是因为(a)他被错误地复活了(本应让他以B4的身体复活,而不是模拟),(b)那个版本的他没有得到一个合适的理由去寻求自己的死亡,而他们本可以很容易地通过写一个情节点来做到这一点,比如“我不想让我的朋友们死去,我将再次选择死亡来拯救他们”。皮卡德,因为这是一个错失良机的案例,不仅没有让帕特里克·斯图尔特获得布伦特·斯宾纳多年来使用的相同妆容,而且Q在第二季中提到他仍然拥有合成身体,却让他接受了“神经稳定器”来“稳定他的大脑”。

            2. > 过去,我们曾看到过这样的故事:编剧足够聪明,让观众自行得出结论并将其应用于现实生活(当然,也有说教意味浓厚的剧集),而现代剧集则成了编剧们公然宣扬自己世界观的讲台。

              这几乎是所有现代娱乐作品的主要问题——编剧们不敢让观众自行分析,生怕你们得出“错误”的结论。

    3. 极客们在把守极客的门槛。这真是个老掉牙的互联网时刻。

    4. 《星球大战》和《星际迷航》对“西方”国家以外的人来说意义不大。如果你去中国,大多数人对《星球大战》一无所知,包括电脑极客/科幻迷。而他们照样过得很好。

      不要假设某个时期发生的事情对所有人都具有普遍性。

      1. 我预计中国不会了解西方文化现象。但《星际迷航》的元素曾出现在日本动画中,比如《Daicon IV》的开场(1983年)和《Dirty Pair》(1985年?),以及其他许多作品。它曾是全球热门系列。

    5. 并非所有兴趣都随年龄增长。我对一些比我年龄更古老的古董感兴趣。

    6. 并非每个宅男都喜欢《星际迷航》?

      在我看来,《星球大战》如今比《星际迷航》主流得多(尤其是迪士尼在大力推广),但即便如此,仍有大量二十多岁的科技从业者从未看过该系列且毫无兴趣。

      我之前在安卓团队工作时,估计整个团队里能理解“三录仪”这个梗的人不超过一个,而我当时是团队里最年轻的成员(29岁;我也是通过这个帖子才第一次听说“三录仪”的)。

      如果你随便挑一个在安卓源代码上工作的程序员,让我猜他们是否知道“三录仪”(且不提供任何其他信息),我肯定会断定“不知道”。

      1. 你不需要是《星际迷航》的粉丝就能知道什么是三录仪(至少听说过这个词),就像你不需要是《星球大战》的粉丝就能知道什么是光剑一样。

      2. 大约十年前,我第一次开始观看《星球大战》系列电影,当时只有6部电影需要看完。但那时《星际迷航》已经有了12部以上的电影加上电视剧。我决定选择《星球大战》,这对我来说就足够了。我确信《星际迷航》是一个令人着迷的宇宙,我经常看到它被提及,但我认为我对它不够感兴趣,以至于不想深入那个世界。

        1. 是的,对我来说也差不多。

          此外,作为孩子时,《星球大战》宇宙对我来说比《星际迷航》有趣得多。

          《星球大战》让我联想到骑士、巫师、喷气式战斗机飞行员和太空中的英雄冒险,而《星际迷航》则让我觉得是“成年人在做无聊的成年人事情……只是在太空里”。我不是在贬低《星际迷航》,显然它对很多人有吸引力,但对我来说,它在童年时毫无吸引力。

          此外,星球大战宇宙当时还有一些我最喜欢的游戏,比如《星球大战:破坏》(车辆战斗类游戏,类似《扭曲金属》)、《绝地武士》系列、《旧共和国武士》等。

          1. 我认为这取决于你更倾向于奇幻还是科幻。

            星球大战是太空奇幻。星际迷航是科幻。

            我不是说一个比另一个更好,但它们吸引不同类型的人。

            我个人很难进入奇幻世界,无论是《星球大战》、《龙与地下城》还是奇幻视频游戏。我更喜欢在未来进行一场关于伦理的法庭辩论。

            《星球大战》与《星际迷航》的辩论一直让我困惑,因为你在比较两种完全不同的类型。

    7. 我30岁了,却不知道什么是三维扫描仪

      1. 对不起……请接受这个可爱的特里布尔作为安慰!

    8. 对吧?这可能是试图幽默,但也可能是对2003年前文化一无所知的人。在那一刻,我对作者的尊重减少了……

      1. 这太美国化/年龄中心化了,请重新考虑基于与你一起长大看同样电视节目的人来分配尊重

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

你也许感兴趣的: