<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>胡思乱想 on codedump notes</title>
    <link>https://www.codedump.info/zh/tags/%E8%83%A1%E6%80%9D%E4%B9%B1%E6%83%B3/</link>
    <description>Recent content in 胡思乱想 on codedump notes</description>
    <generator>Hugo</generator>
    <language>zh</language>
    <lastBuildDate>Thu, 27 Feb 2025 11:15:30 +0800</lastBuildDate>
    <atom:link href="https://www.codedump.info/zh/tags/%E8%83%A1%E6%80%9D%E4%B9%B1%E6%83%B3/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>写代码与做菜</title>
      <link>https://www.codedump.info/zh/post/20250227-cook/</link>
      <pubDate>Thu, 27 Feb 2025 11:15:30 +0800</pubDate>
      <guid>https://www.codedump.info/zh/post/20250227-cook/</guid>
      <description>&lt;p&gt;过去的几年里，由于长期在家远程办公，多了很多自己做菜的机会，厨艺也精进了不少。目前一些普通的家常菜，即便我之前没有做过，但是可以根据网上的视频教程就能还原大体的风味出来。究其原因，我想是写代码中模块化的思想，用在了做菜上。&lt;/p&gt;&#xA;&lt;p&gt;不妨把做菜大体分为三个阶段：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;准备阶段：包括一些预处理，如改刀、腌制、去腥等等；&lt;/li&gt;&#xA;&lt;li&gt;烹饪阶段：使用日常说的煎炒烹炸等手段对材料进行烹制，包括煮、红烧、煎、炒、清蒸等等；&lt;/li&gt;&#xA;&lt;li&gt;收尾阶段：烹饪阶段完毕之后，还要对菜进行一些收尾工作，例如收汁、清蒸鱼时的泼油等等。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;figure class=&#34;&#34;&gt;&#xA;&#xA;    &lt;div&gt;&#xA;        &lt;img loading=&#34;lazy&#34; alt=&#34;做菜三阶段&#34; src=&#34;https://www.codedump.info/media/imgs/20250227-cook/%E5%81%9A%E8%8F%9C%E4%B8%89%E9%98%B6%E6%AE%B5.png&#34; &gt;&#xA;    &lt;/div&gt;&#xA;&#xA;    &#xA;    &lt;div class=&#34;caption-container&#34;&gt;&#xA;        &lt;figcaption&gt; 做菜三阶段 &lt;/figcaption&gt;&#xA;    &lt;/div&gt;&#xA;    &#xA;&lt;/figure&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;按照写代码模块化的思想，当把这些阶段划分成具体的模块之后，模块之间进行排列组合之后，就可以做成不同的菜，举例来说，红烧鱼和清蒸鱼是两种不同的料理鱼的方式，但是却有着相同的预处理阶段：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;准备阶段：鱼去腥、鱼背花刀方便入味&lt;/li&gt;&#xA;&lt;li&gt;烹饪阶段：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;清蒸鱼：清蒸&lt;/li&gt;&#xA;&lt;li&gt;红烧鱼：调入酱料红烧&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;收尾阶段：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;清蒸鱼：倒掉蒸鱼容器中的水（太腥），切葱丝放于鱼身上，烧热油淋上；&lt;/li&gt;&#xA;&lt;li&gt;红烧鱼：大火收汁。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;figure class=&#34;&#34;&gt;&#xA;&#xA;    &lt;div&gt;&#xA;        &lt;img loading=&#34;lazy&#34; alt=&#34;两种不同的鱼料理&#34; src=&#34;https://www.codedump.info/media/imgs/20250227-cook/%E4%B8%A4%E7%A7%8D%E4%B8%8D%E5%90%8C%E7%9A%84%E9%B1%BC%E6%96%99%E7%90%86.png&#34; &gt;&#xA;    &lt;/div&gt;&#xA;&#xA;    &#xA;    &lt;div class=&#34;caption-container&#34;&gt;&#xA;        &lt;figcaption&gt; 两种不同的鱼料理 &lt;/figcaption&gt;&#xA;    &lt;/div&gt;&#xA;    &#xA;&lt;/figure&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;从这里可以看出，不论哪种做鱼的方式，预处理阶段是大体一致的。用程序设计的话来说：这个模块是可以复用的。也就是说，一旦学会了如何预处理一条要清蒸的鱼，换做其它方式料理的鱼，也可以使用同样的办法类似处理。&lt;/p&gt;&#xA;&lt;p&gt;类似的，其它阶段也有类似可以复用的模块：例如在我看来，红烧鱼和红烧肉中烹饪的红烧阶段，就大体一致，都是要调入一些酱料对食物进行烹煮，只不过由于食材的不同，选料不同以及烹饪时长不同。所以当学会如何红烧鱼以后，稍微了解也能够学会如何红烧大肉。&lt;/p&gt;&#xA;&lt;p&gt;可见，对菜的烹饪进行阶段划分之后，可复用的模块多了，就能在不同的菜里排列组合不同的模块，这就能组合出不同的菜来。&lt;/p&gt;&#xA;&lt;p&gt;所以，现在看各种教做菜的视频时，可以有意的这样来看：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;这道菜的三阶段分别有哪些？哪些我还没有掌握，哪些又是和之前类似的流程，可以稍加改动就能复用；&lt;/li&gt;&#xA;&lt;li&gt;菜的调料有哪些，比例如何？&lt;/li&gt;&#xA;&lt;li&gt;菜的火候要求到什么程度？&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;可以看到，从阶段划分以及模块复用的思想再来看菜的制作，就会清晰很多。&lt;/p&gt;&#xA;&lt;p&gt;除此以外，在具体的模块实现时，还能参考面向对象的思想。例如，红烧肉中有一道工序是“给食物上色”，做法有：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;加糖用油或者水来炒制糖色；&lt;/li&gt;&#xA;&lt;li&gt;使用老抽上色；&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;用面向对象的思想来说，“给食物上色”是一个接口，有以上两种不同的实现。以我而言，我总是把握不住炒糖色的火候，所以同样的接口我选择了对我而言更容易实现的老抽上色。这并不影响大局，因为程序设计里又有另一句话：完成比完美更重要。&lt;/p&gt;&#xA;&lt;p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;figure class=&#34;&#34;&gt;&#xA;&#xA;    &lt;div&gt;&#xA;        &lt;img loading=&#34;lazy&#34; alt=&#34;食物上色&#34; src=&#34;https://www.codedump.info/media/imgs/20250227-cook/%E9%A3%9F%E7%89%A9%E4%B8%8A%E8%89%B2.png&#34; &gt;&#xA;    &lt;/div&gt;&#xA;&#xA;    &#xA;    &lt;div class=&#34;caption-container&#34;&gt;&#xA;        &lt;figcaption&gt; 食物上色 &lt;/figcaption&gt;&#xA;    &lt;/div&gt;&#xA;    &#xA;&lt;/figure&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;类似的，把做菜分为多道工序以后，如果某些工序并不熟练，可以尝试交给别人，或者使用只需要简单加工的半成品。例如，如果不会宰杀鸡鸭，那么有以下几种选择：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;可以将这道工序外包给摊贩，让他们帮忙；&lt;/li&gt;&#xA;&lt;li&gt;或者买袋装的冰鲜鸡，味道稍差一些。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;以下这幅图里，就以吃披萨为例，来解释各种AAS（As A Service）的区别，本质上把不同的工序外包出去，就是使用了某种服务：&lt;/p&gt;&#xA;&lt;p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;figure class=&#34;&#34;&gt;&#xA;&#xA;    &lt;div&gt;&#xA;        &lt;img loading=&#34;lazy&#34; alt=&#34;pizza as a service&#34; src=&#34;https://www.codedump.info/media/imgs/20250227-cook/pizza.png&#34; &gt;&#xA;    &lt;/div&gt;&#xA;&#xA;    &#xA;    &lt;div class=&#34;caption-container&#34;&gt;&#xA;        &lt;figcaption&gt; pizza as a service &lt;/figcaption&gt;&#xA;    &lt;/div&gt;&#xA;    &#xA;&lt;/figure&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;做一个简单的总结：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;熟练掌握做菜中经常用到的“模块”，红烧、清蒸、腌肉等，因为这些模块会在多个菜品中被复用；&lt;/li&gt;&#xA;&lt;li&gt;将一道菜划分为几个不同的阶段，方便模块复用，这样就能组合起以前掌握的模块，来完成还不会的菜；&lt;/li&gt;&#xA;&lt;li&gt;将自己不熟练的模块，外包出去，寻找合适的服务替代；&lt;/li&gt;&#xA;&lt;li&gt;完成比完美重要，能够独立借助不同的服务来完成一道菜，就可以慢慢累积在这方面的自信心。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;这几年在做菜上的投入，也让我有了另外的领悟。在中文里，“火候”这个词真的很妙，“火”强调了要对食物做功，“候”说明了要耐心等待时间。似乎在英文里找不到关于“火候”一词非常信达雅的翻译，如果直译过去是“Fire Control”，但是这一个翻译丢掉了中文语境里时间的部分。另一个词“功夫”也是，英语里“KongFu”只有武功的含义，而在中文里并不单指“武功”，在现在更多说的是在某件事情上投入时间。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
