<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www.huoschen.idv.tw/blog/xml/base.min.xml" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>解惑小生</title>
    <link>http://www.huoschen.idv.tw/blog/</link>
    <description>Recent content on 解惑小生</description>
    <generator>Hugo</generator>
    <language>en-gb</language>
    <lastBuildDate>Wed, 04 Mar 2026 22:04:36 +0800</lastBuildDate>
    <atom:link href="http://www.huoschen.idv.tw/blog/feed.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>執行緒同步 9：死鎖問題</title>
      <link>http://www.huoschen.idv.tw/blog/programming/%E5%9F%B7%E8%A1%8C%E7%B7%92%E5%90%8C%E6%AD%A5-9%E6%AD%BB%E9%8E%96%E5%95%8F%E9%A1%8C/</link>
      <pubDate>Wed, 04 Mar 2026 22:04:36 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/programming/%E5%9F%B7%E8%A1%8C%E7%B7%92%E5%90%8C%E6%AD%A5-9%E6%AD%BB%E9%8E%96%E5%95%8F%E9%A1%8C/</guid>
      <description>&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這次要介紹的是死鎖。&#xA;聽到這名字，會不會讓人以為又是具有某種特殊性質的執行緒鎖？&#xA;不，死鎖並不是一種執行緒鎖，而是一種我們並不樂見的情況……&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_情境&#34;&gt;情境&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在真正開始之前，先讓我們看一段程式範例。&#xA;這個範例取材自我自己的程式專案，不過經過了非常用力的刪減修改，基本只保留了用來呈現死鎖問題的最核心部份。&#xA;程式碼雖然以 C++ 語法撰寫，但因為這次的範例並不是一個完整可編譯執行的程式，&#xA;因此也可以把它看作是虛擬碼，應將重點放在理解而非測試。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;我建立了一個叫作 Logger 的軟體模組，&#xA;它被設計用來將程式運作時所發生的各種事情記錄在一個文字檔內，&#xA;供後續需要時可以人工追查程式運作中曾經歷過的事情。&#xA;所以在整個程式的程式碼各處都會呼叫 &lt;code&gt;WriteLogger()&lt;/code&gt; 函式，&#xA;目的是將當下所產生的訊息記錄傳送給 Logger 模組，讓它將記錄以某種格式編碼為一段文字之後寫入檔案儲存。&#xA;其中將記錄轉換為文字訊息的部份還提供了幾種不同的格式可供使用者依據喜好需求而做選用，&#xA;在 Logger 內以一個整數旗標用來表示使用者所偏好的格式 ID。&#xA;最後，這個 Logger 還可以讓使用者在任何時候變更有關的設定參數，&#xA;無論是編碼格式或甚可能是想要更改記錄檔的檔名或存放位置等都可以，&#xA;只要呼叫 &lt;code&gt;ReloadLogger()&lt;/code&gt; 就能夠變更 Logger 的設定配置。&#xA;並且修改這些配置和程式正常的訊息記錄動作並不互相衝突，&#xA;使用者完全可以在程式運作的任何階段去呼叫 &lt;code&gt;ReloadLogger()&lt;/code&gt; 修改配置，&#xA;並且同時可能隨時也都有人正在呼叫 &lt;code&gt;WriteLogger()&lt;/code&gt; 函式；&#xA;一邊正在儲存程式記錄而另一邊同時可以修改配置，&#xA;並且變更後的配置可以立刻生效，變更後的下一筆寫入就會立刻套用新的設定來編碼和寫檔。&#xA;最後當然，這些函式可能在程式的任何地方、任何執行緒裡被呼叫，&#xA;因此對執行緒的衝突保護也是必須實現的部份，並且本篇的重點也就在這上面。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;解說完了這個 Logger 模組的功能後，現在讓我們來看看這個模組的程式碼。&#xA;首先先來看看 Logger 的資料結構：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;struct Logger&#xA;{&#xA;    Mutex conf_mutex;   // 用來保護 name 和 mode 的互斥子&#xA;    string name;&#xA;    int mode;&#xA;&#xA;    Mutex file_mutex;   // 用來保護 file 的互斥子&#xA;    File file;&#xA;}&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;Logger 資料結構裡面最核心的就只有 3 個東西，&#xA;一個真正用來寫檔案的檔案物件 &lt;code&gt;file&lt;/code&gt;，&#xA;可能是 C 語言裡面的 &lt;code&gt;FILE*&lt;/code&gt;，或者 C++ 裡面的 &lt;code&gt;std::fstream&lt;/code&gt;，或其它；&#xA;另兩個則是記錄當前寫檔檔案名稱的 &lt;code&gt;name&lt;/code&gt;，以及當下所使用的訊息編碼方式 &lt;code&gt;mode&lt;/code&gt;；&#xA;至於剩下兩個則是用來在多緒使用環境下做衝突保護的互斥子，想必對於本系列讀者來說應該已經很熟悉了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;接下來看看用來給使用這呼叫並將資訊給寫入檔案的 &lt;code&gt;WriteLogger()&lt;/code&gt; 函式：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;void WriteLogger(Logger &amp;amp;data, Record rec)&#xA;{&#xA;    data.file_mutex.Lock();&#xA;&#xA;    // 如果不是已開檔狀態的話就在這裡開檔&#xA;    if(!data.file.IsOpened())&#xA;    {&#xA;        data.conf_mutex.Lock();&#xA;        data.file.Open(data.name);&#xA;        data.conf_mutex.Unlock();&#xA;    }&#xA;&#xA;    // 將傳入的資料以某種方式編碼成文字並寫入檔案&#xA;    string msg = rec.Encode(data.mode);&#xA;    data.file.Write(msg);&#xA;&#xA;    data.file_mutex.Unlock();&#xA;}&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在通常的情況下，這函式一進來就會上鎖 &lt;code&gt;file_mutex&lt;/code&gt; 互斥子以保護接下來要操作的 &lt;code&gt;file&lt;/code&gt; 物件，&#xA;然後將函式傳入的訊息編碼程文字，然後將文字寫入檔案，解鎖互斥子並離開，一氣呵成。&#xA;不過偶有時候函式一進來會發現其實還沒開檔，&#xA;這可能是因為這是程式執行以來第一次呼叫這函式，也有可能是因為剛才被修改了配置而被關了檔。&#xA;然而不論何種原因，這裡如果發現檔案未開的話，那就把它打開，這樣後續才能正常寫檔。&#xA;而為了避免在開檔的過程當中正好碰上其它人正在修改設定，&#xA;讓我們可能剛剛好拿到才被改到一半的檔名，從而造成後續的錯誤，&#xA;因此在開檔的過程中需要上鎖用來保護配置相關變數的 &lt;code&gt;conf_mutex&lt;/code&gt; 互斥子。&#xA;至於我們在編碼文字的時候索取用的那個 &lt;code&gt;mode&lt;/code&gt; 變數則不需要上鎖保護，&#xA;原因如&lt;a href=&#34;http://www.huoschen.idv.tw/blog/programming/%E5%9F%B7%E8%A1%8C%E7%B7%92%E5%90%8C%E6%AD%A5-8%E8%AE%80%E5%AF%AB%E9%8E%96/&#34;&gt;前篇讀寫鎖&lt;/a&gt;所解釋，&#xA;我們並不需要擔心 &lt;code&gt;mode&lt;/code&gt; 被改到一半被我們讀取的問題。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;接下來看最後一個函式，就是用來讓使用者中途變更 Logger 配置的 &lt;code&gt;ReloadLogger()&lt;/code&gt; 函式：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;void ReloadLogger(Logger &amp;amp;data, string name, int mode)&#xA;{&#xA;    data.conf_mutex.Lock();&#xA;&#xA;    // 對於能直接簡單覆寫的數值就直接覆寫&#xA;    data.mode = mode;&#xA;&#xA;    // 檔名的變更就不是只簡單複寫就完事了。&#xA;    // 如果原來的檔案物件已經處於開啟狀態的話，&#xA;    // 就需要關閉再重開，才能讓後續寫入的資料被寫到新檔案去。&#xA;    if( data.name != name )&#xA;    {&#xA;        data.name = name;&#xA;&#xA;        data.file_mutex.Lock();&#xA;&#xA;        if(data.file.IsOpened())&#xA;            data.file.Close();&#xA;&#xA;        data.file_mutex.Unlock();&#xA;    }&#xA;&#xA;    data.conf_mutex.Unlock();&#xA;}&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;作為設計用來修改配置的函式，一進來就上鎖了 &lt;code&gt;conf_mutex&lt;/code&gt; 互斥子，合情合理。&#xA;既然互斥子上鎖了，那接下來自然就是直接修改用來記錄配置的那些變數了。&#xA;編碼代號的部份無需多加擔憂，只要變數直接覆寫就好，但是檔案名稱的變更就不一樣了。&#xA;直接覆蓋檔名變數的話，如果檔案物件已經開啟，&#xA;那後續呼叫 &lt;code&gt;WriteLogger()&lt;/code&gt; 時資料依然會寫到舊檔案去，而不是寫到新檔案。&#xA;因此當檔名需要更動的時候，這裡就順手將檔案物件給關了，&#xA;這樣後面再呼叫 &lt;code&gt;WriteLogger()&lt;/code&gt; 的時候自然就會用新的檔名重新開檔一次；&#xA;而當然，在做這個關檔操作的時候需要上鎖 &lt;code&gt;file_mutex&lt;/code&gt; 互斥子，以免同時剛好就遇到有其他人正在寫檔。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_死鎖問題&#34;&gt;死鎖問題&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;介紹完這個範例程式之後，不知道有沒有眼尖的讀者已經發現問題？&#xA;範例程式裡使用了兩個互斥子來分別保護 Logger 內的各變數，&#xA;因此 Logger 的函式在多緒隨意呼叫的情況下都不會產生資料衝突的問題；&#xA;但是在一個相當湊巧的機會下，程式卡死了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;當有人呼叫 &lt;code&gt;ReloadLogger()&lt;/code&gt; 變更配置參數，並且需要變更存檔的檔名，&#xA;於是就如同我們所預期的那樣，函式會走到要上鎖 &lt;code&gt;file_mutex&lt;/code&gt; 的那一步。&#xA;然而不巧，此時正好有另一條執行緒正好呼叫了 &lt;code&gt;WriteLogger()&lt;/code&gt; 要寫檔，&#xA;所以 &lt;code&gt;file_mutex&lt;/code&gt; 一時被它給佔用了，得等。&#xA;一般來說這並不是個問題，因為等它寫完檔後自然就會釋放 &lt;code&gt;file_mutex&lt;/code&gt; 互斥子；&#xA;然而這次不一樣，這次的檔案物件已經是處在關閉的狀態！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;可能因為這剛好是程式啟動之後第一次呼叫 &lt;code&gt;WriteLogger()&lt;/code&gt;，&#xA;也可能是自從上次呼叫 &lt;code&gt;ReloadLogger()&lt;/code&gt; 而關檔過後到現在正好沒有人呼叫 &lt;code&gt;WriteLogger()&lt;/code&gt; 來寫檔，&#xA;於是檔案物件一直都還是處於關閉的狀態。&#xA;然而無論如何，現在 &lt;code&gt;ReloadLogger()&lt;/code&gt; 正在等待上鎖 &lt;code&gt;file_mutex&lt;/code&gt; 互斥子，&#xA;而 &lt;code&gt;WriteLogger()&lt;/code&gt; 則剛好正在等待上鎖 &lt;code&gt;conf_mutex&lt;/code&gt; 互斥子；&#xA;然而 &lt;code&gt;conf_mutex&lt;/code&gt; 已經被 &lt;code&gt;ReloadLogger()&lt;/code&gt; 給鎖定了，&#xA;所以除非等到 &lt;code&gt;ReloadLogger()&lt;/code&gt; 結束離開，否則 &lt;code&gt;WriteLogger()&lt;/code&gt; 必須得等在那。&#xA;那麼 &lt;code&gt;ReloadLogger()&lt;/code&gt; 是什麼情況呢？&#xA;&lt;code&gt;ReloadLogger()&lt;/code&gt; 也在等待一個已經被 &lt;code&gt;WriteLogger()&lt;/code&gt; 給佔住的 &lt;code&gt;file_mutex&lt;/code&gt; 互斥子。&#xA;這下可好了，兩人都在等待一個被對方押著的互斥子，&#xA;並且雙方都已經卡在那裡等待了，誰也不可能有機會釋放自己持有的互斥鎖。&#xA;於是兩條執行緒就這樣互相等到天荒地老永遠不會回來，&#xA;而這就是我們所謂的「死鎖」(Dead Lock)狀態！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;當死鎖發生，這兩個執行緒就卡死在那裡永遠不可能再前進一步。&#xA;然後這時也許可能又有第三條執行緒呼叫了一個簡單的函式，比如說可能是一個簡單的用來取得當前檔案名稱的函式：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;string GetLoggerName(Logger &amp;amp;data)&#xA;{&#xA;    data.conf_mutex.Lock();&#xA;    string name = data.name;&#xA;    data.conf_mutex.Unlock();&#xA;&#xA;    return name;&#xA;}&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;如此簡單的一個函式，也不需要上鎖兩個互斥子，只需要在取得檔名的時候暫時鎖上 &lt;code&gt;conf_mutex&lt;/code&gt; 就好了，&#xA;然而 &lt;code&gt;conf_mutex&lt;/code&gt; 卻已經被僵持的兩個執行緒給佔住永不釋放。&#xA;得，這呼叫 &lt;code&gt;GetLoggerName()&lt;/code&gt; 的第三個執行緒也跟著卡死了，死鎖問題於是擴大！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_為什麼需要多鎖&#34;&gt;為什麼需要多鎖？&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;導致死鎖問題發生的根本原因來自於使用了多個互斥子。&#xA;因為需要同時鎖定兩個以上的互斥子，&#xA;這才給予「雙方同時佔住一個鎖並要求等待被對方佔住的鎖」這樣的情況的發生機會；&#xA;而如果我們只使用一個互斥子，自然就不會產生這種互相佔鎖的問題。&#xA;然而進一步我們就要問，為什麼會需要使用多個互斥子呢？只使用一個互斥子有什麼問題嗎？&#xA;回顧上面的範例，Logger 內使用了 &lt;code&gt;conf_mutex&lt;/code&gt; 和 &lt;code&gt;file_mutex&lt;/code&gt; 兩個互斥子，&#xA;而如果我們改為只使用一個互斥子，遇到什麼需要的情況就鎖定這個互斥子就好，&#xA;那麼死鎖的問題就迎刃而解！&#xA;然而，採用多個互斥子所為何事呢？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;通常使用多個互斥子的目的是為了提升性能。&#xA;同樣以前面範例為例，若只使用一個互斥子，&#xA;那麼無論是 &lt;code&gt;WriteLogger()&lt;/code&gt; 還是 &lt;code&gt;ReloadLogger()&lt;/code&gt; 的平均等待時間都將會延長。&#xA;當呼叫 &lt;code&gt;ReloadLogger()&lt;/code&gt; 的時候，可能只是單純改個編碼選項而已，&#xA;然而如果正好碰上 &lt;code&gt;WriteLogger()&lt;/code&gt; 正在工作的話，就會需要等待它完成才能成功上鎖互斥子；&#xA;同樣當呼叫 &lt;code&gt;WriteLogger()&lt;/code&gt; 的時候正好碰上 &lt;code&gt;ReloadLogger()&lt;/code&gt; 正在修改設定的話，&#xA;也會需要先等待它完成，即便可能兩個函式需要操作的物件並不重疊卻仍然需要等待。&#xA;那麼至此這個 Logger 之所以要設計使用兩個互斥子的目的就浮現出來了。&#xA;假設在實際的使用情境中，大部份的 &lt;code&gt;WriteLogger()&lt;/code&gt; 呼叫其實可能並不會碰上需要重開檔案的機會，&#xA;而大部份的 &lt;code&gt;ReloadLogger()&lt;/code&gt; 呼叫也多半僅僅只是改變編碼選項而已，&#xA;那麼把兩種資源分開來使用兩個互斥子來分別做保護的話，就可以讓兩個函式僅僅只鎖定其中一個互斥子就好。&#xA;如此這兩個函式的運作就不會受到彼此的影響，無需要去等待和鎖定那些保護著自己其實並不需要的資源的互斥子。&#xA;這樣一來，兩個函式在大部份的情況下都能夠順暢的各自工作而不需不必要的卡來卡去。&#xA;只有在少部份的情況下才會真正需要操作使用更多的受保護資源，&#xA;例如在本例中就是像在呼叫 &lt;code&gt;ReloadLogger()&lt;/code&gt; 修改檔名時正好碰上 &lt;code&gt;WriteLogger()&lt;/code&gt; 也正在寫檔的情況，&#xA;這時才會真的需要同時鎖上兩個互斥子；&#xA;只不過這只是預期中的少數需要消耗比較多等待時間的時機，而對於平均大部份情況來說是不受影響的。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這就是為什麼在實際的程式設計中常常總是免不了需要使用多個互斥子的關係，&#xA;主要就是為了減少不必要的鎖定等待以提升整體性能。&#xA;而當然，隨著互斥子的使用數量增加，也就給予死鎖問題能夠產生的前置條件。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_鎖定順序&#34;&gt;鎖定順序&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在了解採用多互斥子的目的之後，想必已經明白將多個互斥鎖合併為一個雖然確實可以避免問題，但並不實際。&#xA;在現實的程式設計裡，主要的解決方案是採用統一的鎖定順序來避免死鎖的發生。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;死鎖情況能夠發生的條件就是兩個(或以上)執行緒分別佔住了對方需要的互斥子。&#xA;比如兩條執行緒都需要鎖定 A、B 兩個互斥子，&#xA;第一條執行緒先鎖定 A 再鎖定 B，而第二條執行緒則先鎖定 B 再鎖定 A，&#xA;那麼恭喜，這兩條執行緒總會有機會能卡死在一起！&#xA;那如果調整一下鎖定的順序呢？&#xA;兩條執行緒都需要鎖定 A、B 兩個互斥子，並且我們讓它們都先鎖定 A 再鎖定 B，&#xA;你看這樣死鎖是不是就沒有機會發生了？&#xA;這就是通常解決死鎖問題的方法。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;理論上統一了互斥子的鎖定順序就可以解決問題，然而實際落實到程式設計仍有許多需要參酌考量的因素。&#xA;例如以本篇的範例程式來說，如果我們規定必需要遵循的鎖定順序是先 &lt;code&gt;conf_mutex&lt;/code&gt; 再 &lt;code&gt;file_mutex&lt;/code&gt;，&#xA;那麼 &lt;code&gt;WriteLogger()&lt;/code&gt; 函式就需要修改為像下面這樣&#xA;(&lt;em&gt;至於 &lt;code&gt;ReloadLogger()&lt;/code&gt; 則不需要更動&lt;/em&gt;)：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;void WriteLogger(Logger &amp;amp;data, Record rec)&#xA;{&#xA;    // 雖然只有在檔案物件未開啟的情況下才需要鎖定這個互斥子，&#xA;    // 但是因為要求的鎖定順序的關係，&#xA;    // 因此不論後面需要不需要，&#xA;    // 這裡都要先鎖定 conf_mutex 互斥子。&#xA;    data.conf_mutex.Lock();&#xA;&#xA;    // 作為一個設計用來寫檔的函式，&#xA;    // 本來就需要鎖定 file_mutex 互斥子。&#xA;    data.file_mutex.Lock();&#xA;&#xA;    if(!data.file.IsOpened())&#xA;        data.file.Open(data.name);&#xA;&#xA;    // 到這裡確定後面不再需要 conf_mutex 互斥子了，&#xA;    // 於是先解除對它的鎖定，&#xA;    // 這樣至少能在下面寫檔的時候不讓 ReloadLogger() 卡住。&#xA;    data.conf_mutex.Unlock();&#xA;&#xA;    string msg = rec.Encode(data.mode);&#xA;    data.file.Write(msg);&#xA;&#xA;    data.file_mutex.Unlock();&#xA;}&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;你看這些解決方案都是有代價的！&#xA;統一互斥子的鎖定順序雖然避免了死鎖問題，&#xA;但也讓 &lt;code&gt;WriteLogger()&lt;/code&gt; 函式每次呼叫進來都要鎖定 &lt;code&gt;conf_mutex&lt;/code&gt; 互斥子，&#xA;而原先是只有在少數需要的時候才會去鎖定 &lt;code&gt;conf_mutex&lt;/code&gt; 互斥子。&#xA;因此這項修改的代價就是讓每次 &lt;code&gt;WriteLogger()&lt;/code&gt; 的呼叫多出了可能的額外等待。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;那麼如果換個鎖定順序呢？&#xA;這次我們改成規定鎖定順序是先 &lt;code&gt;file_mutex&lt;/code&gt; 再 &lt;code&gt;conf_mutex&lt;/code&gt;。&#xA;在此方案下，原來的 &lt;code&gt;WriteLogger()&lt;/code&gt; 就不需要修改，&#xA;而是 &lt;code&gt;ReloadLogger()&lt;/code&gt; 需要修改成像下面這樣：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;void ReloadLogger(Logger &amp;amp;data, string name, int mode)&#xA;{&#xA;    // 本來後面不一定會需要鎖定 file_mutex 互斥子，&#xA;    // 但是後面有需要再鎖定的話就沒法符合鎖定順序的要求，&#xA;    // 因此只要後面可能有需要，就要在這裡先行鎖定。&#xA;    data.file_mutex.Lock();&#xA;&#xA;    // 作為一個設計用來變更設定配置的函式，&#xA;    // 本來就需要鎖定 conf_mutex 互斥子。&#xA;    data.conf_mutex.Lock();&#xA;&#xA;    data.mode = mode;&#xA;&#xA;    if( data.name != name )&#xA;    {&#xA;        data.name = name;&#xA;&#xA;        if(data.file.IsOpened())&#xA;            data.file.Close();&#xA;    }&#xA;&#xA;    data.conf_mutex.Unlock();&#xA;    data.file_mutex.Unlock();&#xA;}&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;採用這個鎖定順序下，&lt;code&gt;WriteLogger()&lt;/code&gt; 的效能不受影響了，&#xA;但是換成每次的 &lt;code&gt;ReloadLogger()&lt;/code&gt; 呼叫無論實際需要不需要都得去鎖定 &lt;code&gt;file_mutex&lt;/code&gt;，&#xA;使得 &lt;code&gt;ReloadLogger()&lt;/code&gt; 本身因為可能需要的額外等待而導致執行耗時變長。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;於是接下來就會進入衡量利弊的環節。&#xA;規範統一的互斥子鎖定順序可以避免死鎖問題，&#xA;但是要統一使用何種鎖定順序則可能會影響程式最終在不同情況下的表現，&#xA;而其中的得失取捨就是設計者們需要針對各自的實際條件去考量計劃的問題。&#xA;以本篇的 Logger 範例來看，&#xA;我預期 &lt;code&gt;WriteLogger()&lt;/code&gt; 無論是呼叫的數量還是頻率都會遠高於 &lt;code&gt;ReloadLogger()&lt;/code&gt;，&#xA;因此採用先 &lt;code&gt;file_mutex&lt;/code&gt; 再 &lt;code&gt;conf_mutex&lt;/code&gt; 的鎖定順序總體來看會比較有利，&#xA;其核心就是以 &lt;code&gt;ReloadLogger()&lt;/code&gt; 的性能犧牲去保全 &lt;code&gt;WriteLogger()&lt;/code&gt; 的性能。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_結論&#34;&gt;結論&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;本篇介紹了多緒設計裡所不樂見的死鎖問題與它的發生原因，&#xA;並解釋了使用多個互斥子來分別保護不同組別的資源是為了可以減少不必要的鎖定機會以提升效能。&#xA;為了避免死鎖問題，當需要同時鎖定多個互斥子時需要約定並遵守一致的鎖定順序，&#xA;這在解決死鎖問題發生機會的同時也會導致某些情況下的程式效能犧牲，&#xA;而這部份需要程式設計者針對各自的實際設計與使用情況去做考量斟酌。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>執行緒同步 8：讀寫鎖</title>
      <link>http://www.huoschen.idv.tw/blog/programming/%E5%9F%B7%E8%A1%8C%E7%B7%92%E5%90%8C%E6%AD%A5-8%E8%AE%80%E5%AF%AB%E9%8E%96/</link>
      <pubDate>Fri, 27 Feb 2026 16:26:19 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/programming/%E5%9F%B7%E8%A1%8C%E7%B7%92%E5%90%8C%E6%AD%A5-8%E8%AE%80%E5%AF%AB%E9%8E%96/</guid>
      <description>&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;本篇再來介紹另一個互斥鎖的變體，是在特定應用場景下能夠改善鎖定效率的執行緒鎖：&#xA;讀寫鎖(Readers-Writer Lock)。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_情境&#34;&gt;情境&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在介紹這種執行緒鎖之前，先來看一段範例程式，&#xA;看看是什麼樣的情況與問題使得我們需要這麼樣一個解決方案？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;本篇的範例假定的情況是有一個執行緒負責執行某種複雜的服務內容，&#xA;而其它的一些軟體模組(&lt;em&gt;當然也是不同的執行緒&lt;/em&gt;)便需要經常查詢這個服務的當前狀態，&#xA;比如說服務資訊、版本、正在做的事情、完成進度……等等各種狀態內容，&#xA;以便依據這些內容來決定自己接下來該幹什麼？&#xA;於是範例內就有一條執行緒負責每隔一段時間更新一段模擬的訊息資訊內容，&#xA;然後另外 6 條執行緒每隔一段時間要去讀取這個訊息內容，分析並決定接下來要做什麼。&#xA;當然作為一個簡單的範例，把那個「分析並接下來幹什麼」的那部份省略了，只著重了讀取資訊的部份。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;以下就是範例所定義的服務狀態資訊：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;struct DummyInfo&#xA;{&#xA;    char description[128];&#xA;    unsigned version;&#xA;    int id;&#xA;    int level;&#xA;    bool activated;&#xA;};&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;然後是定時更新資訊的執行緒：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;struct ServerData&#xA;{&#xA;    pthread_t thrd;&#xA;    bool go_term;&#xA;&#xA;    pthread_mutex_t lock;&#xA;    struct DummyInfo stat_info;&#xA;&#xA;    unsigned period;&#xA;    unsigned w_count;&#xA;    unsigned w_spend;&#xA;};&#xA;&#xA;void* ServerThread(struct ServerData *data)&#xA;{&#xA;    for(; !data-&amp;gt;go_term; SleepMs(data-&amp;gt;period))&#xA;    {&#xA;        unsigned begin_time = GetMsTime();&#xA;        pthread_mutex_lock(&amp;amp;data-&amp;gt;lock);&#xA;&#xA;        // 更新記載某些狀態資訊的資料&#xA;        data-&amp;gt;stat_info.version = 101;&#xA;        data-&amp;gt;stat_info.id = 25;&#xA;        data-&amp;gt;stat_info.level = ( data-&amp;gt;stat_info.level + 1 ) % 5;&#xA;        data-&amp;gt;stat_info.activated = !data-&amp;gt;stat_info.activated;&#xA;        sprintf(&#xA;            data-&amp;gt;stat_info.description,&#xA;            &amp;#34;A test server, level=%d&amp;#34;,&#xA;            data-&amp;gt;stat_info.level);&#xA;&#xA;        // 為了模擬出更加容易被觀察的現象，&#xA;        // 這裡小休眠一下以放大在更新資訊時可能需要消耗的時間。&#xA;        SleepMs(100);&#xA;&#xA;        pthread_mutex_unlock(&amp;amp;data-&amp;gt;lock);&#xA;        unsigned end_time = GetMsTime();&#xA;&#xA;        // 計算和儲存本次讀寫所消耗的時間&#xA;        data-&amp;gt;w_count ++;&#xA;        data-&amp;gt;w_spend += end_time - begin_time;&#xA;    }&#xA;&#xA;    return NULL;&#xA;}&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;再然後是定時索取狀態資訊的執行緒：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;struct ClientData&#xA;{&#xA;    pthread_t thrd;&#xA;    bool go_term;&#xA;&#xA;    struct ServerData *server;&#xA;    struct DummyInfo stat_info;&#xA;&#xA;    unsigned period;&#xA;    unsigned r_count;&#xA;    unsigned r_spend;&#xA;};&#xA;&#xA;void* ClientThread(struct ClientData *data)&#xA;{&#xA;    for(; !data-&amp;gt;go_term; SleepMs(data-&amp;gt;period))&#xA;    {&#xA;        unsigned begin_time = GetMsTime();&#xA;        pthread_mutex_lock(&amp;amp;data-&amp;gt;server-&amp;gt;lock);&#xA;&#xA;        // 從目標位置讀取狀態資料並存放到自己的記憶體位置，&#xA;        // 以待後續分析處理。&#xA;        // (當然在本範例中並不需要任何的後續處理)&#xA;        data-&amp;gt;stat_info = data-&amp;gt;server-&amp;gt;stat_info;&#xA;&#xA;        // 為了模擬出更加容易被觀察的現象，&#xA;        // 這裡小休眠一下以放大在讀取資訊時可能需要消耗的時間。&#xA;        SleepMs(50);&#xA;&#xA;        pthread_mutex_unlock(&amp;amp;data-&amp;gt;server-&amp;gt;lock);&#xA;        unsigned end_time = GetMsTime();&#xA;&#xA;        // 計算和儲存本次讀寫所消耗的時間&#xA;        data-&amp;gt;r_count ++;&#xA;        data-&amp;gt;r_spend += end_time - begin_time;&#xA;    }&#xA;&#xA;    return NULL;&#xA;}&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;完整的範例程式碼可以&lt;a href=&#34;http://www.huoschen.idv.tw/blog/files/threads/rwtest_mutex.c&#34;&gt;從這裡下載&lt;/a&gt;，&#xA;而以下是在我的電腦上執行的結果輸出：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;Write statistics: count=31, total-spend=5868, ave-spend=189&#xA;Read statistics: count=184, total-spend=17756, ave-spend=96&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;從輸出的統計結果可看到，&#xA;平均每次更新狀態資訊時消耗的時間為 189 毫秒，而平均每次讀取資訊則消耗 96 毫秒，&#xA;二者皆接近原先預期的兩倍。&#xA;確實互斥子的使用本身會帶來些許開銷，&#xA;但是如本篇測試中多達數十上百毫秒的消耗已遠遠超過執行緒排程及上下文切換所致的結果，&#xA;其大量的消耗其實是來自於等待其它執行緒歸還通行牌的過程。&#xA;那麼有沒有什麼方案能夠改善這樣的不利因素呢？有的，就是本篇介紹的讀寫鎖。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;admonitionblock note&#34;&gt;&#xA;&lt;table&gt;&#xA;&lt;tbody&gt;&lt;tr&gt;&#xA;&lt;td class=&#34;icon&#34;&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Note&lt;/div&gt;&#xA;&lt;/td&gt;&#xA;&lt;td class=&#34;content&#34;&gt;&#xA;為了模擬一些真實的情況，又不想讓範例程式變得和真實程式一樣龐大複雜，&#xA;於是我在程式碼中的資料讀寫都額外的加上了一小段休眠，以模擬對資料的讀寫更新可能產生的些許讀寫負擔；&#xA;並且為了讓其效果能夠被輕易的觀察和比較，又稍微誇張化的放大了讀寫延時。&#xA;其中在更新狀態資料時的延時為 100 毫秒，而讀取狀態資料時的延時為 50 毫秒。&#xA;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;/tbody&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_讀寫鎖&#34;&gt;讀寫鎖&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在前面的測試程式執行的結果，我們發現無論是對於資料的讀或寫的整個過程都消耗了非常多的時間。&#xA;即便從前我們知道像互斥子這種鎖本身附帶一些可觀的開銷，&#xA;然而這點開銷在本次的測試結果裡面卻相形之下少到幾乎可以忽略不計！&#xA;其主要多餘出來的等待時間還是來自於等待其它執行緒解鎖的過程。&#xA;那麼究竟是什麼問題導致的呢？原來是參與讀寫的執行緒實在是多了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;如果說每個執行緒鎖定臨界區段都是在執行那些真的會衝突的東西，都是那些非得要排它的東西的話，&#xA;那麼這問題就只能夠這個樣子了，執行緒們總歸還是要老老實實的排隊等待，&#xA;而這時設計優化的目標可能就會變成是否減少不必要的讀寫機會或頻率。&#xA;但是我們這次面對的情況卻有些特殊，&#xA;雖然參與競爭的執行緒數量多了點，但是絕大部分執行的都是資料讀取的動作；&#xA;然而，讀取的動作會導致競爭嗎？讀取的行為真的有必要上鎖排隊嗎？&#xA;回顧執行緒&#xA;&lt;a href=&#34;http://www.huoschen.idv.tw/blog/programming/%E5%9F%B7%E8%A1%8C%E7%B7%92%E5%90%8C%E6%AD%A5-4%E7%82%BA%E4%BB%80%E9%BA%BC%E5%87%BA%E9%8C%AF/&#34;&gt;為什麼發生資料衝突競爭等問題&lt;/a&gt;&#xA;的內容，會發現問題根源來自於資料修改。&#xA;根本原因是因為資料的修改變更，才造成資料版本不一致(&lt;em&gt;快取&lt;/em&gt;)的問題，&#xA;以及工作流程中途被插隊導致的狀態錯亂問題。&#xA;但是純讀取的操作並不修改資料啊！&#xA;誰管你想怎麼樣快取、怎麼樣調整執行順序、又怎麼樣被插隊呢？&#xA;是的，確實是如此。&#xA;那麼如果我們允許讓純粹資料讀取的行為可以同時進行而不需要排隊等待的話，&#xA;是不是就能減少許多不必要的時間等待浪費了呢？&#xA;是的，這就是使用讀寫鎖的目的。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;不過讀取與讀取之間雖然不會產生干擾衝突，但是讀取與寫入之間卻會！&#xA;如果讀取和寫入能夠不被限制的同時進行的話，那麼就會讓我們有機會讀取到被更新到了一半的資料。&#xA;於是讀寫鎖的設計仍然需要將要寫入資料的執行緒與其它要讀取資料的執行緒互斥，&#xA;當然同樣也需要和其它也想要寫入資料的執行緒互斥；&#xA;至於如果都是讀取資料的執行緒，那就讓它們都一起進入臨界區段同時讀取吧！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;面對所描述的這種應用情景，讀寫鎖應運而生。&#xA;讀寫鎖(Readers-Writer Lock)常也被簡寫為 RW Lock，&#xA;它基本的使用方式和邏輯與互斥子是一樣的，&#xA;只不過在上鎖的時候需要區分為以寫入者身份來上鎖，或者以讀取者身份來上鎖。&#xA;接著就讓我們來將上面範例程式的互斥子更換為讀寫鎖，首先是服務執行緒定時更新狀態資訊的執行緒：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;for(; !data-&amp;gt;go_term; SleepMs(data-&amp;gt;period))&#xA;{&#xA;    unsigned begin_time = GetMsTime();&#xA;    pthread_rwlock_wrlock(&amp;amp;data-&amp;gt;lock); // 以寫入者的身份要求上鎖&#xA;&#xA;    data-&amp;gt;stat_info.version = 101;&#xA;    data-&amp;gt;stat_info.id = 25;&#xA;    data-&amp;gt;stat_info.level = ( data-&amp;gt;stat_info.level + 1 ) % 5;&#xA;    data-&amp;gt;stat_info.activated = !data-&amp;gt;stat_info.activated;&#xA;    sprintf(&#xA;        data-&amp;gt;stat_info.description,&#xA;        &amp;#34;A test server, level=%d&amp;#34;,&#xA;        data-&amp;gt;stat_info.level);&#xA;&#xA;    SleepMs(100);&#xA;&#xA;    pthread_rwlock_unlock(&amp;amp;data-&amp;gt;lock); // 解鎖&#xA;    unsigned end_time = GetMsTime();&#xA;&#xA;    data-&amp;gt;w_count ++;&#xA;    data-&amp;gt;w_spend += end_time - begin_time;&#xA;}&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;然後是讀取狀態資訊的執行緒：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;for(; !data-&amp;gt;go_term; SleepMs(data-&amp;gt;period))&#xA;{&#xA;    unsigned begin_time = GetMsTime();&#xA;&#xA;    pthread_rwlock_rdlock(&amp;amp;data-&amp;gt;server-&amp;gt;lock); // 以讀取者的身份要求上鎖&#xA;&#xA;    data-&amp;gt;stat_info = data-&amp;gt;server-&amp;gt;stat_info;&#xA;&#xA;    SleepMs(50);&#xA;&#xA;    pthread_rwlock_unlock(&amp;amp;data-&amp;gt;server-&amp;gt;lock); // 解鎖&#xA;    unsigned end_time = GetMsTime();&#xA;&#xA;    data-&amp;gt;r_count ++;&#xA;    data-&amp;gt;r_spend += end_time - begin_time;&#xA;}&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;完整的程式碼可以&lt;a href=&#34;http://www.huoschen.idv.tw/blog/files/threads/rwtest_rwlock.c&#34;&gt;從這裡下載&lt;/a&gt;，&#xA;而程式的執行結果如下：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;Write statistics: count=35, total-spend=4573, ave-spend=130&#xA;Read statistics: count=197, total-spend=12768, ave-spend=64&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;改用讀寫鎖來取代互斥子之後，明顯的能看出統計出來的結果大大優於使用互斥子的版本。&#xA;就以本篇範例來看，使用讀寫鎖的版本相比於使用互斥子的版本縮短了大約 30% 左右的等待時間。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_適用場合&#34;&gt;適用場合&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;讀寫鎖看起來相當美好，但從這裡我又要開始來拆臺了。&#xA;讀寫鎖之所以能夠帶來相當的性能提升，是建立在適當合適的使用條件之下的，&#xA;尤其本文所設計的範例更是針對貼合此情境而設計；&#xA;然而若將讀寫鎖應用在並不匹配的場合，則可能使它實際的效能與互斥子相比並不優越，&#xA;甚至有可能更加劣化！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;讀寫鎖其實是一種更加複雜的鎖，&#xA;甚至於某些讀寫鎖的底下其實就是靠著兩個互斥子來組合實現的&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_1&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&#xA;，&#xA;也就是說讀寫鎖本身的使用操作之開銷其實是比普通的互斥子還要更高一些的。&#xA;而使用讀寫鎖之所以相比使用互斥子可以節省時間，就如同前面所解釋的一樣，&#xA;是因為它允許許多只讀取資料的執行緒可以重複上鎖、同時操作，&#xA;是因為讀取與讀取之間不需要互相排隊等待。&#xA;因此首先讀寫鎖適合的使用場景就是&#xA;&lt;strong&gt;很多緒共同存取資料，並且其中大多是只讀取，只有少部份需要寫入&lt;/strong&gt;的場合。&#xA;(&lt;em&gt;至於如果有人問大量讀取搭配沒有寫入？這種情況其實也沒必要上鎖了！&lt;/em&gt;)&#xA;而如果不是此種情況，例如在大量的寫入修改並搭配少量只讀或甚至沒有只讀而都是修改，&#xA;例如本系列前篇的訊息工廠和消費者範例那樣，那麼讀寫鎖的優勢將難以發揮，&#xA;而讀寫鎖也將形同於比普通互斥子更加複雜些的互斥子。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;除了滿足上述多緒共同讀取的條件之外，還需要第二個條件，&#xA;就是&lt;strong&gt;對共同資料的讀寫需達到某種程度以上的開銷&lt;/strong&gt;。&#xA;這是什麼意思呢？&#xA;舉個誇張點但其實相當常見的例子，&#xA;比方說我們需要讀取的狀態其實只是一個整數值，而不是像本篇範例那樣比較複雜的內容。&#xA;在臨界區段實際上非常小巧緊湊的情況下，上鎖和解鎖的時間非常非常短暫，&#xA;這時讀寫鎖允許多緒共同進入臨界區段的優勢並無法發揮出來。&#xA;因為讀寫鎖本身其實可算是普通互斥子的一種擴展方案，也就是說一般互斥子該有的特性它都有，&#xA;就導致其上鎖與解鎖的開銷仍在並與普通互斥子不相上下，&#xA;而在臨界區段相當短小的情況下其實這才是主要的延時來源！&#xA;也就是說對於某些很多讀取而少許寫入的場合，看起來好像適合使用讀寫鎖，&#xA;然而因為需要被保護的東西其實相當少量並且實際上飛快就能完成讀寫，&#xA;那麼這時候可能使用普通的互斥子其實也沒有什麼差別，甚至於或許使用自旋鎖反而會更加高效！&#xA;這就是為什麼本篇範例對於共同資料的讀寫那一段加入了人為的延時的原因，&#xA;因為這樣做才能夠在單純的範例程式碼裡面將讀寫鎖的優勢給凸顯出來。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;除此之外還有另外一種可能，&lt;strong&gt;說不定其實並不一定需要上鎖！&lt;/strong&gt;&#xA;競爭的問題其實是跟著多緒寫入而導致的，&#xA;然而在許多實際的應用中往往可能其實只有一條執行緒在更新某些資料，然後其它執行緒只讀取。&#xA;那麼在此情況下使用鎖來做保護仍是必須的嗎？那就不一定了！&#xA;對於單緒寫入、多緒讀取的情況如果仍需要做保護，那就只有兩個原因：&#xA;或者是怕讀到了才被更新到一半的資料，比如本篇的範例如果去掉保護的話就有可能發生這種現象；&#xA;或者是怕取得的資料不能即時反應當下的最新狀態，&#xA;這主要是因為負責寫入的動作可能還來不及將快取資料刷回去所導致，&#xA;而這在某些對於資料同步一致性性高度敏感的用途上可能會造成程式行為不正確對應的問題。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;然而如果我們的程式並不存在上述的兩個問題呢？&#xA;比方可能相當常見的只使用一個整數來表示某種狀態，&#xA;而整數對於可能絕大部份的執行平臺上都是一步就能更新完成的；&#xA;除非像是在 32 位元 CPU 上更新一個 64 位元整數的動作才會被拆成兩個步驟分別更新。&#xA;(&lt;em&gt;也許有讀者可能會問說明明在前篇敘述這些簡單動作其實需要好多 CPU 指令的，怎麼現在變成一步完成了呢？&lt;/em&gt;&#xA;&lt;em&gt;那是因為現在討論的是單緒寫入的情境，管它為了這件事需要幾個指令呢，&lt;/em&gt;&#xA;&lt;em&gt;反正最後將資料更新回去只有一個指令，不存在讓其它人讀到「一半新、一半舊」的問題！&lt;/em&gt;)&#xA;或者即便是像本篇的範例這樣需要更新一組資料結構，那不上鎖的話的確可能會發生取到被更新到一半的資訊的問題，&#xA;但假若我一個讀取者其實並不是需要分析整個資料，而其實只需要裡面的其中一個整數值呢？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;所以在很多乍看可以應用讀寫鎖的地方，比如最常見的讀取一個整數值的情況，&#xA;其實壓根並不需要任何形式的鎖定；&#xA;就算我們的程式需要即時最新的數值資訊，&#xA;而不希望因為快取什麼的因素導致取得的資訊有些落後，而在我們的程式上會造成可能某些嚴重的後果，&#xA;那也只需要使用原子變數就能夠解決了，並不需要用上讀寫鎖。&#xA;從作者我的實務經驗來看，其實真正需要使用讀寫鎖的場合並不多見。&#xA;當然這並不是說讀寫鎖毫無用武之地，這最終還是要看應用場合的，&#xA;像我從前在做檔案系統驅動程式的時候用的就挺多！&#xA;這裡只是在告訴你讀寫鎖還是有它自己的適與不適條件存在，&#xA;並且在平均大多的情況下其實適合應用的地方可能並不多，&#xA;至少可能不比我們剛認識學習讀寫鎖的時候所想像的那麼好用。&#xA;總之只有在我們足夠了解它的特性之後，才能更加準確的判斷在真正適合的地方，讓它發揮應該有的效用。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_總結&#34;&gt;總結&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;本篇介紹了讀寫鎖，加上前幾篇介紹的幾個鎖，正好湊齊了一組執行緒鎖。&#xA;這幾個鎖看來看去其實會發現，它們都是互斥鎖的不同變種！&#xA;無論是互斥鎖、自旋鎖、還是讀寫鎖，其實都可以概括歸類於互斥鎖大類別之下。&#xA;三種鎖的使用邏輯基本都是一樣的，上鎖、解鎖、保護中間的臨界區段，&#xA;只不過不同的所針對不同的應用場景做了優化。&#xA;也就是說自旋鎖和讀寫鎖其實都是互斥鎖針對特定場景下的效能優化變種，&#xA;如果不在乎效能最佳化的話，甚至可以就只學了個互斥鎖就到處使用，也都不影響程式的運作邏輯。&#xA;甚至於更誇張的話其實連原子變數也不用學，只要懂一個互斥鎖那也能到處走天下闖江湖，&#xA;也許做出來的東西不見得比別人高效，但並不影響能把功能給做出來。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;然而如果追求好還要更好，那麼學習這些「多餘的」東西就是必不可少。&#xA;並且除了知道才什麼情況下使用什麼東西可以更進一步增進效能之外，&#xA;我認為更重要的是要知道在什麼情況下使用什麼東西沒有幫助，甚至於弊大於利導致性能倒退與其它問題。&#xA;而這些只有在足夠了解各種工具的底層邏輯的情況下才能夠掌握的游刃有餘，&#xA;真正成為幫助我們設計程式的上手工具。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;footnotes&#34;&gt;&#xA;&lt;hr/&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_1&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_1&#34;&gt;1&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Readers%E2%80%93writer_lock&#34;&gt;Readers–writer lock&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>執行緒同步 7：自旋鎖</title>
      <link>http://www.huoschen.idv.tw/blog/programming/%E5%9F%B7%E8%A1%8C%E7%B7%92%E5%90%8C%E6%AD%A5-7%E8%87%AA%E6%97%8B%E9%8E%96/</link>
      <pubDate>Sat, 21 Feb 2026 23:07:13 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/programming/%E5%9F%B7%E8%A1%8C%E7%B7%92%E5%90%8C%E6%AD%A5-7%E8%87%AA%E6%97%8B%E9%8E%96/</guid>
      <description>&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在前篇介紹了互斥鎖之後，本篇要來介紹一個與其非常雷同但又有點不同的鎖：自旋鎖(Spinlock)。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在前篇的範例情境中，我們的程式碼遭遇了一個比較複雜的情況，&#xA;於是引入了使用彈性強大的互斥子來解決執行緒之間的衝突保護問題。&#xA;然而互斥子方便歸方便，但是使用的代價卻有點兒巨大，&#xA;主要是因為當執行緒之間共同競爭的時候會導致進入休眠，&#xA;而執行緒的休眠與喚醒會產生相當可觀的時間延遲，&#xA;如果正好碰上頻繁且短暫的加鎖與解鎖的使用情況，那就將會帶遠遠超出真正需要的休眠延遲，&#xA;導致性能衰減過多。&#xA;而對與此種情況的最佳解決方案，可能就是本篇將要介紹的「自旋鎖」(Spinlock)。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;如果上面的說明顯得過於抽象，那就讓我們重新回顧前篇的那個&#xA;&lt;a href=&#34;http://www.huoschen.idv.tw/blog/programming/%E5%9F%B7%E8%A1%8C%E7%B7%92%E5%90%8C%E6%AD%A5-6%E4%BA%92%E6%96%A5%E5%AD%90/#price&#34;&gt;數值累加的範例&lt;/a&gt;，&#xA;那就是一個典型的適合自旋鎖的使用場景。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;for(int i = 0; i &amp;lt; n; ++i)&#xA;{&#xA;    mtx_lock(&amp;amp;data-&amp;gt;mutex);&#xA;    data-&amp;gt;value += x;&#xA;    mtx_unlock(&amp;amp;data-&amp;gt;mutex);&#xA;}&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在上面的數值累加核心內容裡，我們使用互斥子來保護可能會導致多緒衝突的累加程式碼敘述，&#xA;然而這卻帶來了一個可能不必要的過多等待的問題。&#xA;比方說如果此時有兩個執行緒正好一起執行了上鎖互斥子的呼叫，&#xA;當然我們知道只會有其中一條執行緒得以立刻通行而另一條執行緒得等待。&#xA;只不過看看臨界區段的內容，就是簡單的加法、賦值，頂多加上結構與指標的索引工作，&#xA;換算成 CPU 指令可能也就只有沒幾條命令，實際上可能只需要幾個 CPU 指令週期的時間就做完了，&#xA;然後執行緒就呼叫解鎖互斥子歸還通行牌，拂袖揚長而去。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;就這樣，前一個執行緒飛快的做完了臨界區段的程式碼，&#xA;於是緊接著馬上輪到第二條執行緒進入臨界區段接著執行是不是？&#xA;然而實際上並不是這麼簡單，因為那第二條執行緒已經進入休眠等待的狀態了！&#xA;即便從當時搶通行牌搶輸了的時間開始計算，到贏家率先做完工作解鎖互斥子可能只花了 1 耐秒的時間，&#xA;即便只花了 1 耐秒互斥子就告知你可以醒過來繼續通行，&#xA;然而從休眠狀態要醒過來的執行緒還得在慢慢等待作業系統排程排到它，&#xA;等執行緒真正回復執行狀態並接著進入臨界區段的時候，可能好幾個毫秒已經過去了。&#xA;區區幾個毫秒也許並不會讓人感受到什麼變慢的感覺，&#xA;但是再加上這個範例剛剛好又是個非常頻繁進出臨界區段的應用場合，於是這個延遲就在不斷反覆當中被累積放大，&#xA;最終成為巨大的性能落差。&#xA;(&lt;em&gt;在我的電腦上，使用原子變數的累加程式總共消耗的執行時間為 5.592 秒，&lt;/em&gt;&#xA;&lt;em&gt;而使用互斥子的版本則為 31.544 秒。&lt;/em&gt;)&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;那麼如果我們改寫一下關於加鎖和解鎖的部份，&#xA;不使用原本的互斥子而改用我們自己實現的互斥子 &lt;code&gt;mylock_t&lt;/code&gt;，&#xA;以及相關操作函式 &lt;code&gt;mylock_lock()&lt;/code&gt; 和 &lt;code&gt;mylock_unlock()&lt;/code&gt; 來取代它：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;for(int i = 0; i &amp;lt; n; ++i)&#xA;{&#xA;    mylock_lock(&amp;amp;data-&amp;gt;mutex);&#xA;    data-&amp;gt;value += x;&#xA;    mylock_unlock(&amp;amp;data-&amp;gt;mutex);&#xA;}&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;其中我們自製版本的互斥子以及幾個關鍵的操作函式之實現內容如下：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;#include &amp;lt;stdatomic.h&amp;gt;&#xA;&#xA;typedef atomic_flag mylock_t;&#xA;&#xA;void mylock_init(mylock_t *mutex)&#xA;{&#xA;    atomic_flag_clear(mutex);&#xA;}&#xA;&#xA;void mylock_lock(mylock_t *mutex)&#xA;{&#xA;    while(atomic_flag_test_and_set(mutex))&#xA;    {&#xA;        // 沒事做，空耗著！&#xA;    }&#xA;}&#xA;&#xA;void mylock_unlock(mylock_t *mutex)&#xA;{&#xA;    atomic_flag_clear(mutex);&#xA;}&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;就這樣實現了一個自製版本的互斥子。&#xA;其中最關鍵的內容其實就在於那個 &lt;code&gt;mylock_lock()&lt;/code&gt; 函式，&#xA;其內容就是透過值交換的操作不斷反覆檢查一個原子變數的值是否為零，&#xA;如果為零則表示我是第一個拿到通行牌的幸運者，不為零則表示通行牌已被取走並且尚未歸還；&#xA;而解鎖，也就是歸還通行牌的操作就只是簡單的將變數重設為零。&#xA;乍看之下那個類似無限迴圈的程式碼會讓 CPU 不斷循環反覆做白工，&#xA;理論上會導致資源管理器上面的 CPU 使用率飆高，風扇狂轉，空耗 CPU 運算力；&#xA;然而因為臨界區段的程式碼相當精簡小巧以至於飛快就做完了，&#xA;因此實際上這個形似無限迴圈的等待其實可能只轉沒有幾圈就得到了通行牌。&#xA;最後的結果就是實際上空耗等待的時間相當短暫，而又避免掉了執行緒進入休眠再喚醒的過程，&#xA;從而使得它的響應速度非常快速即時。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;因為這種鎖的重要實現核心在於那個看似空耗 CPU 性能的迴圈，&#xA;其如同芭蕾舞者在那空轉旋轉的運作特性，&#xA;於是這種鎖就被命名為「自旋鎖」(Spinlock)。&#xA;不過除了在某些老舊或比較不尋常的開發環境下可能會需要我們自己實現這種鎖之外，&#xA;現實中其實各大執行緒相關函式庫通常已經提供了這種自旋鎖可以讓我們直接使用(&lt;em&gt;不過 C11 沒有&lt;/em&gt;)，&#xA;因此本篇的範例並沒有使用上面那樣實現的自旋鎖，&#xA;而是呼叫了 pthread 程式庫所提供的自旋鎖(&lt;code&gt;pthread_spinlock_t&lt;/code&gt;)：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;for(int i = 0; i &amp;lt; n; ++i)&#xA;{&#xA;    pthread_spin_lock(&amp;amp;data-&amp;gt;lock);&#xA;    data-&amp;gt;value += x;&#xA;    pthread_spin_unlock(&amp;amp;data-&amp;gt;lock);&#xA;}&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;範例完整程式碼可從&lt;a href=&#34;http://www.huoschen.idv.tw/blog/files/threads/thread_spinlock.c&#34;&gt;這裡下載&lt;/a&gt;，&#xA;其在我電腦上的執行結果如下：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;Finished, value=800000000/800000000, spend=20546&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;對比不同保護方案所得到的結果，&#xA;採用原子變數的方案消耗時間為 5.592 秒，&#xA;採用互斥子的方案為 31.544 秒，&#xA;而採用自旋鎖的方案則為 20.546 秒。&#xA;從測試結果可見自旋鎖雖然相比原子變數也是相當大的劣勢，&#xA;然而與常用的互斥子相比卻是提升了相當可觀的效能。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;admonitionblock note&#34;&gt;&#xA;&lt;table&gt;&#xA;&lt;tbody&gt;&lt;tr&gt;&#xA;&lt;td class=&#34;icon&#34;&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Note&lt;/div&gt;&#xA;&lt;/td&gt;&#xA;&lt;td class=&#34;content&#34;&gt;&#xA;不過其實單單就這個範例來看，顯然最佳的解決方案是使用原子變數而非自旋鎖。&#xA;也就是說，在能夠使用少數原子變數來解決的問題上，例如單個變數的簡單操作計算來說，&#xA;使用原子變數通常會是最佳的作法；&#xA;而當需要保護的衝突操作較多較複雜而難以使用單純的原子變數來覆蓋的時候，則使用互斥子；&#xA;而當臨界區間程式碼相當簡單簡短且未涉及系統呼叫或等待，&#xA;但是又足夠複雜到無法使用原子變數來覆蓋的情況下，&#xA;則自旋鎖就可能是相當合適的採行方案。&#xA;依此原則，其實同樣在前篇的那個使用了鏈結串列的生產者與消費者程式，&#xA;才是在實務上比本篇範例更加適合應用自旋鎖的場合；&#xA;然而因為效能計算與比較上的方便，本篇還是採用了數值累加的程式碼來做自旋鎖的性能測試。&#xA;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;/tbody&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_適合與不適合&#34;&gt;適合與不適合&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;自旋鎖看起來這麼美好，然而那是因為本篇所示例的應用場景恰好適合自旋鎖的緣故。&#xA;而自旋鎖其實在使用上相當考驗「因地制宜」的程式設計，&#xA;一旦使用在不合適的地方則可能導致性能不升反減，順便夾帶 CPU 功耗與溫度飆升的副作用！&#xA;因此了解自旋鎖的內部邏輯，並且妥善設計在適合的地方使用自旋鎖，就成為相當重要的程式設計功課。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;自旋鎖最核心的運作邏輯就是那個空耗 CPU 效能的迴圈，&#xA;在合適的使用場景之下會因為其即時的響應速度而得到相當優秀的性能提升，&#xA;並且其空耗的劣勢也會因為簡潔精煉的臨界區段導致實際上空耗的時間同樣非常少，劣勢並不顯著，&#xA;而這也就是最適合使用自旋鎖來取代互斥子的最佳使用場景。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;然而一旦臨界區段內的程式複雜冗長起來，甚至於可能呼叫了系統資源配置或進入休眠等待等情況，&#xA;則自旋鎖的使用就變成優勢不顯而劣勢凸出了！&#xA;如果臨界區段需要花費可觀的運算時間，甚至於可能會進入休眠等待狀態，&#xA;那麼人家簡單休眠個幾毫秒或幾十、幾百毫秒也許並不會消耗什麼系統資源；&#xA;然而你的自旋鎖也要在那邊空轉消耗上百毫秒的話，那影響可就太大了！&#xA;也許你會說頂多了不起就是 CPU 使用率飆升，風扇狂轉罷了，電腦扛得住的，至少自旋鎖的反應快啊！&#xA;然現實卻不然，先別說當臨界區段的時間跨度來到上百毫秒甚至更多的時候那曲曲幾個毫秒的時差算得上什麼事了，&#xA;就光因為自旋鎖空轉佔掉了 CPU 的計算力，可能就導致排擠了其它執行緒的執行機會，&#xA;最終反而變成溫度飆高、風扇狂轉，但程式整體卻可能反應更加遲鈍且效率更加低下的結果！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;除此之外還有一個同樣不適合使用自旋鎖的環境，那就是單核 CPU 的運算環境下。&#xA;話說當代新買的電腦大概 CPU 沒有個 4 核心都會被人笑掉大牙了，根本也買不到那種單核 CPU，&#xA;然而其實出了 PC 範圍的話，在某些較為低端的設備上面其實還挺常見單核心 CPU 的。&#xA;回顧自旋鎖的原理，自旋鎖之所以能夠發揮反應迅速的能力，其實根本基礎在於多核心的平行運算。&#xA;就是因為存在真實同步進行的平行執行緒，才產生了可能自旋鎖才自旋幾圈就等到其它執行緒釋放鎖的機會。&#xA;然而當程式運作在單核心 CPU 環境下時，若非等到排程器切換使另一個執行緒得到執行的機會，&#xA;這個自旋鎖無論怎樣自旋空耗 CPU，都不可能等到鎖被釋放的。&#xA;於是自旋鎖只能夠一直空轉一直空轉，直到自己的時間片耗完並被排程器給切換出去為止。&#xA;因此若真的需要將程式放在單核心 CPU 環境下執行的話，還是老老實實使用互斥鎖吧！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_總結&#34;&gt;總結&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;本篇介紹了一種用途極其類似於互斥子的自旋鎖，&#xA;在合適的場合下取代互斥子的使用時，也就是臨界區段簡潔且執行快速時，&#xA;可以得到相當可觀的性能提升效果；&#xA;然而當使用在並不適合的場合下，也就是臨界區段耗時較多或甚至需要進行系統資源配置或等待時，&#xA;那麼自旋鎖的使用將會導致 CPU 效能的無端消耗，並可能使程式效能更加劣化。&#xA;此外在非多核心或多 CPU 的執行平臺，也就是單 CPU 單核心的執行環境下，&#xA;自旋鎖的使用沒有意義，應該改回使用互斥子。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>執行緒同步 6：互斥子</title>
      <link>http://www.huoschen.idv.tw/blog/programming/%E5%9F%B7%E8%A1%8C%E7%B7%92%E5%90%8C%E6%AD%A5-6%E4%BA%92%E6%96%A5%E5%AD%90/</link>
      <pubDate>Thu, 19 Feb 2026 15:01:08 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/programming/%E5%9F%B7%E8%A1%8C%E7%B7%92%E5%90%8C%E6%AD%A5-6%E4%BA%92%E6%96%A5%E5%AD%90/</guid>
      <description>&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;上集介紹了應用在執行緒同步用途當中最簡單快速便利的原子變數(Atomic Variable)。&#xA;然而原子變數的使用彈性相當有限，&#xA;在實際的應用用途中但凡我們程式的資料運算邏輯稍微複雜一點，原子變數很容易就不敷使用了。&#xA;那麼本篇我就來介紹一種在多緒同步用途中使用最廣泛、出鏡率最高的一種同步工具：互斥子(Mutex)。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_使用情境&#34;&gt;使用情境&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在解釋互斥子之前，先讓我們看一段程式碼，以先了解適合引入互斥子的使用情境。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這次的測試範例是一個典型的「生產者/消費者」模式，&#xA;範例程式建立了一個稱為「工廠」的執行緒，在一分鐘的時間內每隔 50 毫秒就會產生一筆消息出來，&#xA;然後另外 4 個訂閱了訊息的「消費者」執行緒就會不斷的嘗試去拿取工廠發送出來的資料，拿到之後就去處理那份資料。&#xA;當然作為一個測試用的範例，所謂的處理資料也就是將訊息內所記錄的字串給輸出出來而已。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;那麼首先，下面這個就是本次範例所圍繞的中心，也就是上面描述的那個「消息」的資料格式：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;struct Message&#xA;{&#xA;    // 用來將多個訊息組成串列而需要的資料結構&#xA;    struct Message *prev;&#xA;    struct Message *next;&#xA;&#xA;    // 記錄訊息內容以及產生訊息的時間&#xA;    unsigned ctime;&#xA;    char str[128];&#xA;};&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這個消息採用雙向鏈結串列的設計，&#xA;這樣萬一消費者來不及取走資料的話，工廠不斷生產出來的資料就會組成一個串列一直暫存在那裡等待被取走，&#xA;而不會被覆蓋或流失掉。&#xA;不過關於鏈結串列的細節部份並不是本篇的重點，本篇只是借用這套演算法而已，所以本篇不會過度注重在相關的內容上。&#xA;如果您不知道什麼是鏈結串列且又有興趣想要了解學習，那麼可以參考其它的說明資源&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_1&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;有了消息本身的資料結構以後，下面就是用來產生消息的執行緒：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;struct Factory&#xA;{&#xA;    // 記錄要產生的消息數量和時間間隔&#xA;    unsigned period;&#xA;    unsigned total_num;&#xA;&#xA;    // 用來堆放消息的鏈表頭尾指標&#xA;    struct Message *first;&#xA;    struct Message *last;&#xA;&#xA;    // 執行緒本身有關的資源&#xA;    thrd_t thrd;&#xA;};&#xA;&#xA;int FactoryThread(struct Factory *data)&#xA;{&#xA;    for(unsigned i = 0; i &amp;lt; data-&amp;gt;total_num; ++i)&#xA;    {&#xA;        struct Message *msg = malloc(sizeof(*msg));&#xA;        msg-&amp;gt;ctime = GetMsTime();&#xA;        snprintf(msg-&amp;gt;str, sizeof(msg-&amp;gt;str), &amp;#34;message-%u&amp;#34;, i);&#xA;        printf(&amp;#34;Factory: Generate \&amp;#34;%s\&amp;#34;\n&amp;#34;, msg-&amp;gt;str);&#xA;&#xA;        msg-&amp;gt;prev = data-&amp;gt;last;&#xA;        msg-&amp;gt;next = NULL;&#xA;&#xA;        if(!data-&amp;gt;first)&#xA;            data-&amp;gt;first = msg;&#xA;        data-&amp;gt;last = msg;&#xA;&#xA;        SleepMs(data-&amp;gt;period);&#xA;    }&#xA;&#xA;    return 0;&#xA;}&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;如上所見，工廠執行緒內容就是一個簡單的迴圈，定時不斷產生訊息並將訊息推送到鏈表緩存，等待消費者稍後取走。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;完了之後再看下面的消費者執行緒都在做什麼？&#xA;反正執行緒的函式外殼都是一樣的，這裡就不再重複展示了，&#xA;下面只展示消費者執行緒函式裡面的重點迴圈部份：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;while(!data-&amp;gt;go_term)&#xA;{&#xA;    struct Factory *src = data-&amp;gt;msg_src;&#xA;&#xA;    struct Message *msg = src-&amp;gt;first;&#xA;    if(msg)&#xA;    {&#xA;        src-&amp;gt;first = msg-&amp;gt;next;&#xA;        if(!src-&amp;gt;first)&#xA;            src-&amp;gt;last = NULL;&#xA;&#xA;        if(msg-&amp;gt;next)&#xA;            msg-&amp;gt;next-&amp;gt;prev = NULL;&#xA;&#xA;        unsigned delay = GetMsTime() - msg-&amp;gt;ctime;&#xA;        printf(&amp;#34;Consumer[%u]: Process \&amp;#34;%s\&amp;#34;, delay=%u\n&amp;#34;,&#xA;            data-&amp;gt;idx, msg-&amp;gt;str, delay);&#xA;        free(msg);&#xA;    }&#xA;}&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;如上所見，消費者執行緒就是不斷探測工廠有沒有存在可用的消息？&#xA;如果有的話就把消息從鏈表裡取走，然後處理消息，也就是顯示消息的內容。&#xA;其中注意在執行緒的迴圈裡就使用到了前篇介紹過的用來&#xA;&lt;a href=&#34;http://www.huoschen.idv.tw/blog/programming/%E5%9F%B7%E8%A1%8C%E7%B7%92%E5%90%8C%E6%AD%A5-1%E7%B0%A1%E4%BB%8B/#terminate-thread&#34;&gt;正常結束執行緒&lt;/a&gt;的方法。&#xA;每次迴圈都會檢查一個旗標值，只要旗標值沒被設定的話就繼續不斷反覆執行迴圈內的工作，執行緒就會永遠處在工作中不會返回；&#xA;而外面的控制者 ，在範例中就是我們的主函式，則可以透過設定這個旗標值來讓執行緒知道該結束工作了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;上面這個範例的完整程式碼可以從&lt;a href=&#34;http://www.huoschen.idv.tw/blog/files/threads/queue_race.c&#34;&gt;這裡下載&lt;/a&gt;。&#xA;然而光看上面的示例說明，眼尖的讀者可能已經發現不對勁的地方了！&#xA;上面兩個執行緒(&lt;em&gt;其實是 5 個執行緒，因為消費者執行緒一共建立了 4 條&lt;/em&gt;)彼此共同存取了好多變數，&#xA;而這些變數的存取完全沒有任何保護，肯定會發生執行緒資料競爭的問題。&#xA;果不其然，這個範例從一執行開始就發生了許多奇異現象，執行沒有幾步更是直接當掉了！&#xA;下面就是這個範例在我電腦上執行的結果：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;Factory: Generate &amp;#34;message-0&amp;#34;&#xA;Consumer[0]: Process &amp;#34;message-0&amp;#34;, delay=0&#xA;Factory: Generate &amp;#34;message-1&amp;#34;&#xA;Consumer[0]: Process &amp;#34;message-1&amp;#34;, delay=0&#xA;Consumer[2]: Process &amp;#34;message-1&amp;#34;, delay=0&#xA;Consumer[3]: Process &amp;#34;message-1&amp;#34;, delay=0&#xA;Consumer[1]: Process &amp;#34;message-1&amp;#34;, delay=0&#xA;Factory: Generate &amp;#34;message-2&amp;#34;&#xA;Consumer[2]: Process &amp;#34;message-2&amp;#34;, delay=0&#xA;Consumer[3]: Process &amp;#34;message-2&amp;#34;, delay=0&#xA;Consumer[1]: Process &amp;#34;message-2&amp;#34;, delay=0&#xA;Consumer[0]: Process &amp;#34;message-2&amp;#34;, delay=0&#xA;Factory: Generate &amp;#34;message-3&amp;#34;&#xA;Consumer[3]: Process &amp;#34;message-3&amp;#34;, delay=0&#xA;Consumer[2]: Process &amp;#34;message-3&amp;#34;, delay=0&#xA;Consumer[1]: Process &amp;#34;message-3&amp;#34;, delay=0&#xA;Consumer[0]: Process &amp;#34;message-3&amp;#34;, delay=0&#xA;Factory: Generate &amp;#34;message-4&amp;#34;&#xA;Consumer[2]: Process &amp;#34;message-4&amp;#34;, delay=0&#xA;Consumer[3]: Process &amp;#34;message-4&amp;#34;, delay=0&#xA;Consumer[1]: Process &amp;#34;message-4&amp;#34;, delay=0&#xA;Consumer[0]: Process &amp;#34;message-4&amp;#34;, delay=0&#xA;Factory: Generate &amp;#34;message-5&amp;#34;&#xA;Consumer[2]: Process &amp;#34;message-5&amp;#34;, delay=0&#xA;Consumer[1]: Process &amp;#34;message-5&amp;#34;, delay=0&#xA;Consumer[3]: Process &amp;#34;message-5&amp;#34;, delay=0&#xA;Consumer[0]: Process &amp;#34;message-5&amp;#34;, delay=0&#xA;Factory: Generate &amp;#34;message-6&amp;#34;&#xA;Consumer[2]: Process &amp;#34;message-6&amp;#34;, delay=0&#xA;Consumer[1]: Process &amp;#34;message-6&amp;#34;, delay=0&#xA;Consumer[3]: Process &amp;#34;message-6&amp;#34;, delay=0&#xA;Consumer[0]: Process &amp;#34;message-6&amp;#34;, delay=0&#xA;Factory: Generate &amp;#34;message-7&amp;#34;&#xA;Consumer[2]: Process &amp;#34;message-7&amp;#34;, delay=0&#xA;Consumer[1]: Process &amp;#34;message-7&amp;#34;, delay=0&#xA;Consumer[3]: Process &amp;#34;message-7&amp;#34;, delay=0&#xA;Consumer[0]: Process &amp;#34;message-7&amp;#34;, delay=0&#xA;Factory: Generate &amp;#34;message-8&amp;#34;&#xA;Consumer[2]: Process &amp;#34;message-8&amp;#34;, delay=0&#xA;Consumer[3]: Process &amp;#34;message-8&amp;#34;, delay=0&#xA;double free or corruption (out)&#xA;Consumer[0]: Process &amp;#34;message-8&amp;#34;, delay=0&#xA;Aborted (core dumped)&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;既然會發生執行緒競爭的問題，那麼就要來想辦法避免競爭。&#xA;那將上範例中的那些共同存取的變數改成使用原子變數可不可以呢？這個方法在本篇的範例裡顯然是解決不了問題的！&#xA;首先這並不是因為本次的問題出在指標上而不能保護，&#xA;因為 C11 定義中也存在 &lt;code&gt;atomic_uintptr&lt;/code&gt; 這樣的原子變數型態，&#xA;而之所以無法解決衝突的問題是因為這次牽涉其中的變數太多了！&#xA;原子變數只能夠保證對那個變數本身的存取與修改是無法被中途插隊的原子操作，&#xA;可是本次範例中暴露在多緒共同編修的變數卻有好多個，&#xA;就算每一個都改使用原子變數，也沒有辦法阻止在一個接一個執行原子變數的操作中間被別的執行緒插隊的問題。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這就是光使用原子變數也對於像本篇範例這樣的使用情境只能雙手一攤的原因所在了。&#xA;那麼為了解決在這樣的使用場景中所面臨的執行緒衝突問題，我們就需要更加強大的保護機制(&lt;em&gt;或稱同步機制&lt;/em&gt;)。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_互斥子mutex&#34;&gt;互斥子(Mutex)&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;先不多做解釋，先來看看給上面的範例加上互斥子的樣子。&#xA;首先是消費者執行緒的部份：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;while(!data-&amp;gt;go_term)&#xA;{&#xA;    struct Factory *src = data-&amp;gt;msg_src;&#xA;&#xA;    mtx_lock(&amp;amp;src-&amp;gt;mutex);      // 加了這一行&#xA;&#xA;    struct Message *msg = src-&amp;gt;first;&#xA;    if(msg)&#xA;    {&#xA;        src-&amp;gt;first = msg-&amp;gt;next;&#xA;        if(!src-&amp;gt;first)&#xA;            src-&amp;gt;last = NULL;&#xA;&#xA;        if(msg-&amp;gt;next)&#xA;            msg-&amp;gt;next-&amp;gt;prev = NULL;&#xA;    }&#xA;&#xA;    mtx_unlock(&amp;amp;src-&amp;gt;mutex);    // 加了這一行&#xA;&#xA;    if(msg)&#xA;    {&#xA;        unsigned delay = GetMsTime() - msg-&amp;gt;ctime;&#xA;        printf(&amp;#34;Consumer[%u]: Process \&amp;#34;%s\&amp;#34;, delay=%u\n&amp;#34;,&#xA;            data-&amp;gt;idx, msg-&amp;gt;str, delay);&#xA;        free(msg);&#xA;    }&#xA;}&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;然後是工廠執行緒的部份：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;for(unsigned i = 0; i &amp;lt; data-&amp;gt;total_num; ++i)&#xA;{&#xA;    struct Message *msg = malloc(sizeof(*msg));&#xA;    msg-&amp;gt;ctime = GetMsTime();&#xA;    snprintf(msg-&amp;gt;str, sizeof(msg-&amp;gt;str), &amp;#34;message-%u&amp;#34;, i);&#xA;    printf(&amp;#34;Factory: Generate \&amp;#34;%s\&amp;#34;\n&amp;#34;, msg-&amp;gt;str);&#xA;&#xA;    mtx_lock(&amp;amp;data-&amp;gt;mutex);     // 加了這一行&#xA;&#xA;    msg-&amp;gt;prev = data-&amp;gt;last;&#xA;    msg-&amp;gt;next = NULL;&#xA;&#xA;    if(!data-&amp;gt;first)&#xA;        data-&amp;gt;first = msg;&#xA;    data-&amp;gt;last = msg;&#xA;&#xA;    mtx_unlock(&amp;amp;data-&amp;gt;mutex);   // 加了這一行&#xA;&#xA;    SleepMs(data-&amp;gt;period);&#xA;}&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;而當然，幾個執行緒必需要操作的是同一個互斥子才能夠發揮效果，&#xA;於是這邊選擇將互斥子的實體放在工廠執行緒的資料裡面，就在鏈結串列相關變數的旁邊：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;struct Factory&#xA;{&#xA;    unsigned period;&#xA;    unsigned total_num;&#xA;&#xA;    mtx_t mutex;            // 加了這一行&#xA;    struct Message *first;&#xA;    struct Message *last;&#xA;&#xA;    thrd_t thrd;&#xA;};&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;上面的程式修改內容其實就是簡單的在所有進行那些會倒置衝突的「關鍵程式碼」&#xA;前後分別加上 &lt;code&gt;mtx_lock()&lt;/code&gt; 和 &lt;code&gt;mtx_unlock()&lt;/code&gt; 呼叫。&#xA;修改完成後，這個範例程式的執行就沒有問題了，從頭到尾一氣呵成也無錯誤歧異。&#xA;範例的完整程式碼可以從&lt;a href=&#34;http://www.huoschen.idv.tw/blog/files/threads/queue_busy_mutex.c&#34;&gt;這裡下載&lt;/a&gt;，&#xA;整個範例程式的輸出有兩千多行，下面只節錄其中一小片段作為代表：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;Factory: Generate &amp;#34;message-71&amp;#34;&#xA;Consumer[0]: Process &amp;#34;message-71&amp;#34;, delay=0&#xA;Factory: Generate &amp;#34;message-72&amp;#34;&#xA;Consumer[1]: Process &amp;#34;message-72&amp;#34;, delay=0&#xA;Factory: Generate &amp;#34;message-73&amp;#34;&#xA;Consumer[3]: Process &amp;#34;message-73&amp;#34;, delay=0&#xA;Factory: Generate &amp;#34;message-74&amp;#34;&#xA;Consumer[0]: Process &amp;#34;message-74&amp;#34;, delay=0&#xA;Factory: Generate &amp;#34;message-75&amp;#34;&#xA;Consumer[2]: Process &amp;#34;message-75&amp;#34;, delay=0&#xA;Factory: Generate &amp;#34;message-76&amp;#34;&#xA;Consumer[2]: Process &amp;#34;message-76&amp;#34;, delay=0&#xA;Factory: Generate &amp;#34;message-77&amp;#34;&#xA;Consumer[0]: Process &amp;#34;message-77&amp;#34;, delay=0&#xA;Factory: Generate &amp;#34;message-78&amp;#34;&#xA;Consumer[2]: Process &amp;#34;message-78&amp;#34;, delay=0&#xA;Factory: Generate &amp;#34;message-79&amp;#34;&#xA;Consumer[3]: Process &amp;#34;message-79&amp;#34;, delay=0&#xA;Factory: Generate &amp;#34;message-80&amp;#34;&#xA;Consumer[0]: Process &amp;#34;message-80&amp;#34;, delay=0&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;從上面結果大致可以窺探，訊息的產生與消化、鏈結串列的各種操作都沒有意外，&#xA;沒有訊息被多拿也沒有被少拿，指標變數的操作看似也沒有任何異常或錯亂，&#xA;4 個等待索取訊息的執行緒也大致都能平均拿到訊息而無明顯的不平衡。&#xA;一切問題都解決了，就只是在關鍵操作的前後加上 &lt;code&gt;mtx_lock()&lt;/code&gt; 和 &lt;code&gt;mtx_unlock()&lt;/code&gt; 呼叫而已。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_互斥子的使用&#34;&gt;互斥子的使用&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;細說互斥子的使用，其使用與呼叫的基本結構如下：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;// 這裡執行那些沒有競爭問題的程式碼&#xA;...&#xA;...&#xA;&#xA;mtx_t *mutex = ...; // 不知從哪裡拿來的互斥子&#xA;&#xA;mtx_lock(mutex);    // 向互斥子要求一個鎖，如果沒有鎖的話那就等待到有為止&#xA;&#xA;// 這裡執行那些原本會產生衝突競爭的程式碼&#xA;...&#xA;...&#xA;&#xA;mtx_unlock(mutex);  // 將鎖歸還給互斥子&#xA;&#xA;// 繼續執行其它沒有競爭問題的程式碼&#xA;...&#xA;...&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;admonitionblock note&#34;&gt;&#xA;&lt;table&gt;&#xA;&lt;tbody&gt;&lt;tr&gt;&#xA;&lt;td class=&#34;icon&#34;&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Note&lt;/div&gt;&#xA;&lt;/td&gt;&#xA;&lt;td class=&#34;content&#34;&gt;&#xA;由於不同的執行緒函式庫都存在互斥子且操作方式基本相同，&#xA;因此下面將以更加概念通用且簡潔的名稱 &lt;code&gt;lock()&lt;/code&gt; 和 &lt;code&gt;unlock()&lt;/code&gt; 來表示互斥子的上鎖與解鎖呼叫，&#xA;而不寫成 C11 標準裡的 &lt;code&gt;mtx_lock()&lt;/code&gt; 和 &lt;code&gt;mtx_unlock()&lt;/code&gt;。&#xA;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;/tbody&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;互斥子就像是一個守門員，而 &lt;code&gt;lock()&lt;/code&gt; 的呼叫其實就是向守門員索取一張通行牌，也就是鎖(lock)。&#xA;互斥子給你一張通行牌，你就可以通行，這時 &lt;code&gt;lock()&lt;/code&gt; 的呼叫就會正常返回，而你也就能繼續執行下面的程式碼。&#xA;不過互斥子只有一張通行牌，如果同時有很多人都呼叫了 &lt;code&gt;lock()&lt;/code&gt; 的話，&#xA;那麼互斥子只能選擇其中一個幸運兒(&lt;em&gt;通常就是最早呼叫的那個人&lt;/em&gt;)並把通行牌給他，而其它人就只能夠等待放行，&#xA;具體就是除了那個幸運者之外的其他人都會被卡在 &lt;code&gt;lock()&lt;/code&gt; 呼叫裡面不會返回。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;於是如果所有需要操作那些原本能導致衝突的程式碼的執行緒都自律的在執行操作前先呼叫 &lt;code&gt;lock()&lt;/code&gt; 的話，&#xA;那麼大部份執行緒都得等待，只有也只會有一個執行緒能夠得到繼續往下執行的機會；&#xA;既然只有一個執行緒在執行，自然就不會有衝突的問題，&#xA;它可以從容的把所有操作處理完而無需擔心被別的執行緒從中插隊而導致錯亂。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;等那個幸運抽中通行牌的執行緒執行完那些關鍵的操作之後，就可以呼叫 &lt;code&gt;unlock()&lt;/code&gt; 作結，&#xA;這個呼叫的意義就是將手上持有的通行牌歸還給互斥子。&#xA;於是拿回了通行牌的互斥子就會再從剛才呼叫了 &lt;code&gt;lock()&lt;/code&gt; 而進入等待的那些人之中挑選一個幸運兒，&#xA;然後將通行牌發給他，於是他的 &lt;code&gt;lock()&lt;/code&gt; 呼叫就會返回，並能像前一個執行緒那樣繼續執行下面的關鍵程式碼，&#xA;並且只會有他這一個執行緒能夠執行那段程式碼，而其它執行緒依然繼續等待。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;如此類推反覆，互斥子透過守門的方式讓所有執行緒排隊等待放行，一次只準一個放行通過，如此就解決了多緒共同競爭的問題。&#xA;並且因為互斥子的保護範圍是從 &lt;code&gt;lock()&lt;/code&gt; 到 &lt;code&gt;unlock()&lt;/code&gt; 之間的所有內容，&#xA;因此在那中間可以寫上任何複雜的操作都無所謂，操作空間和彈性非常大，完全不像原子變數那樣在用途上相當受限。&#xA;這就是為什麼互斥子是在所有解決多緒問題當中最受廣泛使用的手段了，&#xA;事實上在前篇曾描述過的那些 CPU 指令並不支援的原子變數，&#xA;或甚至像 C++ 可以把任何自訂型態都變成原子變數的那些「假原子變數」，其內部都是使用這樣的互斥子來實現的。&#xA;而那一段介於 &lt;code&gt;lock()&lt;/code&gt; 呼叫到 &lt;code&gt;unlock()&lt;/code&gt; 呼叫之間受保護的程式碼區域就有一個特別的名詞用來稱呼，&#xA;那段受到互斥子保呼的程式碼區域就叫作「臨界區段」(Critical Section)。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;price&#34;&gt;互斥子的代價&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;既然互斥子這麼好用，使用彈性大，臨界區段能包容一切程式碼，那麼是不是所有的問題都用互斥子來解決就好了&#xA;(&lt;em&gt;事實上確實大部份的多緒衝突問題都用互斥子來處理&lt;/em&gt;)，什麼原子變數什麼的其它方法手段毫無價值也無學習的必要了呢？&#xA;當然也不是這樣，因為互斥子的使用本身也是附帶相當大的代價的！&#xA;從前面的說明內容來看，互斥子能夠解決多緒衝突的核心方法就是讓執行緒排隊，一次只放行一個執行緒通過，&#xA;其本質就是把多緒條件退化為單緒條件從而解決問題。&#xA;那麼這有什麼問題呢？問題就在於大家得「等」！&#xA;說的誇張一點，我們甚至可以把執行緒函式內的所有內容全都包在臨界區段內，&#xA;但結果就會變成所有的執行緒都得排隊等著一個一個獲得執行的機會，活生生把多緒又回歸到單緒去了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;因此為了儘量減少執行緒之間大量的互相等待時間，我們在使用上就應該要儘量縮減臨界區段的內容，&#xA;基本就是把所有其實不會衝突、不需要受到保護的內容移出到臨界區段外面去執行，讓那些程式碼可以在不同的執行緒中去平行進行，&#xA;只保留最少量的那些真正可能會產生衝突而必須被保護的程式碼在臨界區段內，使執行緒需要排隊等待的範圍縮減到愈小愈好。&#xA;在本篇前面的互斥子範例中就已經展現出這樣的設計原則，&#xA;只將對鏈結串列的操作內容包裹在 &lt;code&gt;lock()&lt;/code&gt; 和 &lt;code&gt;unlock()&lt;/code&gt; 中間的臨界區段內，&#xA;至於配置訊息記憶體空間以及填寫其內容的部份、以及處理和輸出訊息內容的部份，則放在臨界區段之外，&#xA;不讓那些實際上不需要受到保護的程式碼去拖慢大家等待的時間。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;然而即便已經試圖最大程度的壓縮臨界區段，互斥子的使用依然會帶來相當的性能開銷。&#xA;其原因在於前面所說的「等待」通行牌的過程其實就是讓執行緒進入睡眠狀態，而睡眠的喚醒並不是即時的，&#xA;具體得看作業系統的排程安排(&lt;em&gt;可參閱&lt;a href=&#34;http://www.huoschen.idv.tw/blog/programming/%E5%9F%B7%E8%A1%8C%E7%B7%92%E5%90%8C%E6%AD%A5-2%E5%A4%9A%E5%B7%A5%E5%8E%9F%E7%90%86/&#34;&gt;前篇說明&lt;/a&gt;&lt;/em&gt;)。&#xA;總之就是當一個執行緒歸還通行牌後，互斥子將通行牌派發給下一個執行緒，&#xA;到下一個執行緒從休眠狀態回復過來真正開始執行之間存在一定程度的時間延遲。&#xA;而具體到底能差到多少呢？讓我們把前篇那個計算累加的範例&#xA;&lt;a href=&#34;http://www.huoschen.idv.tw/blog/files/threads/thread_mutex.c&#34;&gt;改用互斥子來做&lt;/a&gt;：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;for(int i = 0; i &amp;lt; n; ++i)&#xA;{&#xA;    mtx_lock(&amp;amp;data-&amp;gt;mutex);&#xA;    data-&amp;gt;value += x;&#xA;    mtx_unlock(&amp;amp;data-&amp;gt;mutex);&#xA;}&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;跑出來的結果如下：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;Finished, value=800000000/800000000, spend=31544&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;可看到這個測試在我的電腦上一共花費了 30 多秒完成，&#xA;對比使用原子變數的方案花費了大約 5 秒多，使用互斥子的方案大約使用了 6 倍左右的時間！&#xA;(&lt;em&gt;當然連原子變數都不用而只用普通無保護變數的程式版本只花了 1 秒多的時間，&lt;/em&gt;&#xA;&lt;em&gt;但是因為計算結果完全不正確，所以僅作為參考而已。&lt;/em&gt;)&#xA;總之結算下來，使用原子變數作為多緒之間的確保手段已經付出了 5 倍的效能劣化代價，&#xA;而使用互斥子則對比原子變數又是 6 倍的效能劣化代價，&#xA;足見互斥子(&lt;em&gt;以及其它所有後續介紹的高級鎖&lt;/em&gt;)的副作用不容小覷，也足見原子變數屬實高效快速。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_總結&#34;&gt;總結&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;本篇介紹了在解決執行緒競爭問題上最經常被使用的互斥子，學會了它的使用結構與邏輯，&#xA;也認識到互斥子的使用所可能帶來的性能開銷。&#xA;上鎖與解鎖互斥子由於牽涉到用戶態與核心態的切換、以及作業系統排程的參與，因此可能產生較長的時間延遲。&#xA;這就是為什麼雖然互斥子的使用彈性相當大，開鎖與解鎖中間的程式碼可以包山包海，&#xA;但人們有經常還是會在特定的地方更加青睞於只需要 CPU 指令排他、以及些許快取性能損失的原子變數的原因了。&#xA;然而也同樣因為原子變數的使用限制大的因素，&#xA;使得我們總還是經常不得不使用那些更高級的執行緒鎖(&lt;em&gt;例如本篇介紹的互斥鎖&lt;/em&gt;)。&#xA;因此在必須使用互斥鎖的情況下，&#xA;通常我們會傾向於儘量限縮上鎖與解鎖中間的程式碼規模，只在臨界區域裡面執行真正需要受到保護的衝突內容，&#xA;在得到通行權之後儘快處理玩事情並歸還通行權，減少其它執行緒不必要的等待時間。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;footnotes&#34;&gt;&#xA;&lt;hr/&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_1&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_1&#34;&gt;1&lt;/a&gt;. &lt;a href=&#34;https://zh.wikipedia.org/zh-tw/%E9%93%BE%E8%A1%A8&#34;&gt;鏈結串列&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>執行緒同步 5：原子變數</title>
      <link>http://www.huoschen.idv.tw/blog/programming/%E5%9F%B7%E8%A1%8C%E7%B7%92%E5%90%8C%E6%AD%A5-5%E5%8E%9F%E5%AD%90%E8%AE%8A%E6%95%B8/</link>
      <pubDate>Sat, 07 Feb 2026 20:39:21 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/programming/%E5%9F%B7%E8%A1%8C%E7%B7%92%E5%90%8C%E6%AD%A5-5%E5%8E%9F%E5%AD%90%E8%AE%8A%E6%95%B8/</guid>
      <description>&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;上期我們看到當不同的執行緒彼此共同存取同一個變數的時候會發生什麼樣的異常結果，&#xA;但是在現實中的程式裡又沒辦法完全避免掉共同資料的存取，那麼我們能夠怎麼辦呢？&#xA;本篇就來介紹第一個幫助我們解決執行緒資料競爭問題的方案：原子變數。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_如何解決資料衝突問題&#34;&gt;如何解決資料衝突問題？&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;回顧前篇，我們知道不同的執行緒共同操作同一段記憶體資料會導致錯亂的問題，其原因有三：&#xA;一個動作實際需動用多個指令來完成、由編譯器和 CPU 本身的亂序執行而導致的執行順序問題、&#xA;以及 CPU 核心之間快取不同步，三者同樣都會導致最終不預期的異常現象。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;為了解決問題，首先我們需要 CPU 本身提供能「原子操作」(Atomic Operation)的指令。&#xA;是的，必須要 CPU 本身有提供這樣的能力。&#xA;如果 CPU 沒有這類指令的話，那這個 CPU 就沒法用來做平行運算了，&#xA;因為所有後面作業系統提供的那些更高級的功能都需要使用這些核心操作來實現。&#xA;通常來說每個這種原子式的操作都只對應一個指令來進行，不像前篇演示過的一個加運算由好幾個指令組合那樣。&#xA;原子操作指令只需要一個指令，畢竟只有一個指令的話，就不存在被其它指令從中間插隊的情形了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;再來，指令順序的部份也需要被解決，&#xA;我們需要對那些關鍵性的資料操作行為設下一些關於指令順序調換的限制。&#xA;我們需要要求編譯器不能那麼肆無忌憚的隨意調換程式敘述與編譯指令的位置，&#xA;比方說在我們對那個關鍵的，也就是許多執行緒都會共同操作的變數(或記憶體區域)操作時，&#xA;可能需要要求編譯器再怎麼最佳化調整順序，也不能把在此關鍵位置之前的讀寫操作調到後面去，&#xA;或者將此關鍵位置後面的讀寫操作調換到前面。&#xA;並且這項限制並不只是針對編譯器而已，考量到 CPU 本身可能有「亂序執行」的最佳化行為，&#xA;因此同樣也需要 CPU 在執行原子類型指令的時候排斥、暫停其它指令的動作。&#xA;而同樣的，這不能是另一個 CPU 指令，否則和前面的原子操作指令一前一後之間就存在了被插隊的風險，&#xA;因此通常這個效果會被併入前面介紹的原子化指令中一步到位一起進行。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;最後就是關於 CPU 核心的快取暫存的問題。&#xA;如前篇解釋，CPU 的快取是為了減少與主記憶體的往來以加速資料存取及操作的目的地而存在。&#xA;然而當一個 CPU 核心對資料進行修改時，這被更改後的資料可能會被留存在快取內而非立即寫回主記憶體，&#xA;這就表示其它的 CPU 核心從主記憶體看到的並不是最新的資料；&#xA;且如果它又對同樣的資料進行操作的話，那麼兩個版本的最新資料就這麼產生了！&#xA;因此我們需要在進行原子指令的時候將修改後的資料立刻刷回主記憶體，&#xA;並且同步去通知其它 CPU 核心，讓它們把我們正在操作的記憶體區段的快取(&lt;em&gt;如果它們有的話&lt;/em&gt;)設為失效，&#xA;這樣當其它 CPU 核心下回需要使用到那段記憶體資料的時候，就會被強迫重新從主記憶體讀出最新的數據。&#xA;當然同樣的，相關的這些快取操作行為一般也都已經併入於 CPU 的原子化操作指令內了，&#xA;這樣就能用無法被別人給插隊的僅僅一個 CPU 指令來一起完成上述的這些全部的動作。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_原子操作的代價&#34;&gt;原子操作的代價&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;既然原子式的指令這麼好用，可以直接解決多緒競爭的問題，&#xA;那麼為什麼當今我們還要留著大量的普通指令，而不要全部使用原子化指令就好了呢？&#xA;這是因為原子化的操作在解決競爭的同時，也是付帶著相應的代價的！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;首先是對單一指令這件事。&#xA;之所以平常的常規操作通常都需要搭配多個指令一起合作，那是因為許多複雜的工作其基底大多是一樣的，&#xA;意思就是對 CPU 來說，提供幾個基本的磚塊就能讓我們使用疊積木的方式堆出我們想要的複雜功能。&#xA;然而原子指令可好了，強迫 CPU 必須要一個指令做完一整個工作，於是 CPU 的設計複雜度和成本就無法節省了！&#xA;這裡說的成本泛指一切的成本，包括售價、體積、功耗、與發熱量等。&#xA;這就是為什麼 CPU 能提供的那些原子化的指令，通常都只能夠用來執行一些最簡單的功能的根本原因了，&#xA;比如只能夠進行部份整數的加、減、值交換、及部份簡單的位元運算等。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;此外，原子化的指令還需要對指令的排序做出限制，&#xA;這會相當程度的影響程式的最終效能，無論是對於 CPU 還是對於編譯器來說都是。&#xA;因為任何的順序調換行為其目的都是為了最佳化執行效率的目的，&#xA;而當限制了能夠調整的空間，自然優化的效果就得受限了。&#xA;然後每次的原子化指令操作還都得讓好多 CPU 核心丟棄它們相應的快取資料，&#xA;使得如果原子指令操作的夠頻繁的話，CPU 就得不斷向速度慢了它自己一個等級的主記憶體頻繁讀寫資料，&#xA;而這是導致原子化操作緩慢的主要因素！&#xA;(&lt;em&gt;當然緩慢或快速都是比較出來的，如果是和以後要介紹的那些高級鎖比較起來的話，那麼原子操作還是非常快速的！&lt;/em&gt;)&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_範例&#34;&gt;範例&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這裡讓我們繼續沿用前篇的範例，但是把那共同寫入的變數更改為使用原子變數(Atomic Variable)：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;struct WorkData&#xA;{&#xA;    atomic_int value;&#xA;    int step_value;&#xA;    int proc_times;&#xA;};&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在執行累加變數的執行緒函式內也需要修改，需要使用 C11 規範的原子變數操作函式來操作它：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;int n = data-&amp;gt;proc_times;&#xA;int x = data-&amp;gt;step_value;&#xA;&#xA;for(int i = 0; i &amp;lt; n; ++i)&#xA;    atomic_fetch_add(&amp;amp;data-&amp;gt;value, x);&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;而在主程式內也同樣需要改用規範的函式來操作與初始化原子變數：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;atomic_init(&amp;amp;data.value, 0);&#xA;&#xA;//......&#xA;&#xA;printf(&amp;#34;Finished, value=%d/%d, spend=%u\n&amp;#34;,&#xA;    atomic_load(&amp;amp;data.value), /*......*/);&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;原子變數與一般的普通變數不一樣，&#xA;若直接把它當成普通變數那樣來做存取與運算，則並不能夠保證在所有的執行平臺上都能得到它應該產生的效果，&#xA;因此正規的用法還是需要使用標準規範的操作函式來執行相關的操作。&#xA;C11 的原子變數支援的操作有加法(add)、減法(sub)、值交換(exchange)、&#xA;位元與(and)、位元或(or)、位元異或(xor)、&#xA;及讀值(load)與存值(store)等操作。&#xA;就如同前面所說，原子變數能夠進行的操作運算真就不多！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;完整的範例可以從&lt;a href=&#34;http://www.huoschen.idv.tw/blog/files/threads/thread_atomic.c&#34;&gt;這裡&lt;/a&gt;下載。&#xA;在我的電腦上執行後的結果如下：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;Finished, value=800000000/800000000, spend=5592&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;改用原子變數與操作之後，程式的計算結果終於正確了！&#xA;然而，副作用也同樣明顯，程式的效能變差了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;相比於前篇範例程式的執行只消耗 1 秒多的時間，&#xA;本篇改用原子操作之後的執行時間直接就拉到了 5 秒多，大約是原先的 5 倍。&#xA;至於原子操作為什麼會慢的原因在前面都解釋過了，主要就是為了解決那三道導致資料競爭的問題。&#xA;CPU 原子操作本身就具有排他性，加上限制了 CPU 與編譯器的最佳化調配空間，&#xA;然後快取又幫不上忙而需要去讀寫主記憶體，最種導致的結果就是肉眼可見的效能退化。&#xA;只不過快與慢都是比較出來的，相比於後續介紹的各種執行緒同步機制來說，原子變數那可已經是最快速高效的存在了！&#xA;了解這些事情後，落實在我們日常設計程式的工作中那就是要：&#xA;&lt;strong&gt;儘量避免設計出需要在不同執行緒之間大量讀寫共用資料的情況，並將執行緒之間共同交集的範圍縮到愈小愈好。&lt;/strong&gt;&#xA;這樣我們才只需要針對最少量的關鍵資料進行特別對待處理，從而能夠最大程度的降低對程式效能的劣化影響。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_memory_order&#34;&gt;Memory Order&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在閱讀 Atomic Operation 相關說明文件的時候，通常會看到幾種 Memory Order 可以選用，&#xA;那麼這些是什麼意義呢？我們又該如何選用呢？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;前面提到了，原子操作其實相當影響效能(&lt;em&gt;相較於非原子式的普通操作來說&lt;/em&gt;)，&#xA;而效能劣化的其中重要原因來自於對最佳化能力的限制(&lt;em&gt;無論是對編譯器還是 CPU&lt;/em&gt;)，&#xA;那麼如果我們能夠視程式實際的情況去適度的放寬對最佳化的限制，是不是就能夠一定程度的提升原子操作的效能了呢？&#xA;這就是不同的 Memory Order 所表達的意義了。&#xA;當然如果選錯了 Memory Order，那可能就會導致如同前篇說明的那不讓人樂意的資料競爭結果出現。&#xA;因此自認沒有把 Memory Order 完得很通透的作者我平常都只用條件最嚴格的預設值。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;一般來說能夠選用的 Memory Order 有下列幾種：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;olist arabic&#34;&gt;&#xA;&lt;ol class=&#34;arabic&#34;&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Acquire&lt;/p&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在這個執行緒裡，原本在這個原子操作後面的其它讀寫行為不能被重排序到這個原子操作前面；&#xA;言下之意就是原來在前面的讀寫可以被重排序到後面去執行。&#xA;並且其它執行緒如果對這同一個原子變數進行了 Release Order 的操作，&#xA;那麼在那個執行緒做原子操作之前的所有資料寫入(&lt;em&gt;並不限定於原子變數&lt;/em&gt;)立刻就可以被這個執行緒看見；&#xA;因此 Acquire Order 通常被用來在讀取操作時使用。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Release&lt;/p&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在這個執行緒裡，原本在這個原子操作前面的其它讀寫行為不能被重排序到這個原子操作的後面：&#xA;言下之意就是原來在後面的讀寫可以被重排序到前面去執行。&#xA;並且如果其它執行緒對同一個原子變數進行了 Acquire Order 的操作，&#xA;那麼在這個執行緒的這個原子操作之前的所有寫入更新(&lt;em&gt;並不限定於原子變數&lt;/em&gt;)立刻就能被其它執行緒看見；&#xA;因此 Release Order 通常被用來在寫入操作時使用。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Consume&lt;/p&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這個這定和 Acquire Order 基本是一樣的，用途也一樣，&#xA;只是對於限制排序的讀寫操作僅作用於與當下這個原子變數的值存有關聯關係的其它變數&#xA;(&lt;em&gt;因此通常這只對編譯器的最佳化行為有所影響&lt;/em&gt;)。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Relaxed&lt;/p&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;顧名思義，就是一種相當「放鬆」的操作。&#xA;它只保證原子操作本身是原子的，但對於其它變數的讀寫操作排序什麼的就不做任何限制了！&#xA;如果你的程式設計裡剛好只需要針對原子變數有所要求，而對其它變數的更新狀態無所謂的話，&#xA;那麼就可以選用這個設定來嘗試獲得更好的效能。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;ACQ_REL&lt;/p&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;就是 Acquire Order 加上 Release Order 的操作，&#xA;既不允許在它之後的讀寫行為被排到它前面來，也不允許在它前面的排到它後面去。&#xA;這通常被用在「讀取後更新再寫入」類型的原子操作，其實也就是大部份原子變數的計算操作行為上。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;SEQ_CST&lt;/p&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這是在 ACQ_REL 本身的基礎之上再加上更多限制條件的選項，也是在不指定 Memory Order 時的預設選項。&#xA;我們說 CPU 的快取是因為讀寫主記憶體的緩慢而存在，但是過於頻繁的刷寫快取也被嫌慢，&#xA;於是又整出了「準備等會要更新快取」的 store buffer 和 invalidate queue 出來！&#xA;所以 SEQ_CST 就是在 ACQ_REL 的基礎之上，&#xA;還要求 CPU 立刻馬上處理 store buffer 和 invalidate queue 不要拖。&#xA;因此 SEQ_CST 就是所有 Memory Order 裡面對效能影響最大的一個，不過也是最為保險的一個，&#xA;也是包含 C11 在那的大多數原子操作預設的選項，也是我通常不假思索就直接使用的選項。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_lock_free&#34;&gt;Lock Free?&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;前面說明過，原子變數的實現需要 CPU 本身提供相應的原子操作指令，&#xA;因此造成原子變數能夠進行的操作種類並不多的結果。&#xA;然而另一方面，即便像是 C11 標準所制定的原子操作已經夠少了，&#xA;但是有沒有可能存在某些 CPU 它們能夠提供的原子操作甚至還更少呢？&#xA;甚至於，C++ 的 &lt;code&gt;std::atomic&lt;/code&gt; 模板更加變態，還能讓你把所有任何物件通通變成原子的，&#xA;你想想這怎麼可能呢？這些又是怎麼辦到的呢？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;事實上就是許多 CPU 並不能夠提供 C11 想要的所有原子操作功能，&#xA;因此可能會有部份的操作必須要讓編譯器去想辦法實現，&#xA;而最終的辦法就是使用作業系統提供的高級鎖來實作這些功能。&#xA;也就是說隨著我們的編譯與執行環境不同，&#xA;可能有部份原子操作函式其實它底下並不是 CPU 的原生功能，而是藉由作業系統提供的功能來實現的。&#xA;不論是 CPU 原生功能還是編譯器封裝作業系統功能的實現方式，&#xA;最終都能讓我們的程式解決資料競爭的問題，跑出正確的結果，&lt;strong&gt;只不過效能可能會差很多！&lt;/strong&gt;&#xA;於是才有了判斷某個字面上的原子變數是不是 lock free 的相關函式。&#xA;所謂 lock free 就是指對於這個型態變數的操作是 CPU 原生的，不需要動用到鎖(lock)；&#xA;而那些不是 lock free 的，就是底層使用鎖(lock)等作業系統功能來實現的功能，&#xA;是帶有較大性能開銷的假原子變數。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;說到了 lock free，那就不得不提一個非常特別的原子變數，那就是原子旗標 Atomic Flag。&#xA;這東西與其它型態的原子變數不一樣，它保證不管在哪一個平臺都是 lock free 的，都是使用 CPU 原生指令實現。&#xA;之所以能做這樣的保證，那是因為即便是最陽春的 CPU，&#xA;只要它能支援平行運算，那必定至少得實現最最最基本的這個指令，否則沒得玩了，&#xA;因為所有後續更高級的作業系統相關的鎖的實現，都建基於這個最簡單的操作之上。&#xA;作為所有 CPU 都俱備實現的原子操作的交集，這個 atomic flag 也是極其簡單，&#xA;基本上它只提供兩個操作：&#xA;第一個操作是設立旗標(&lt;em&gt;設為非零&lt;/em&gt;)，並且傳回於本次執行前的舊旗標狀態；&#xA;另一個操作則是無條件清除旗標。&#xA;就只有這麼簡單的兩個操作，沒有別的了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;原子旗標的功能雖然簡陋，但是它保證肯定是 lock free 的。&#xA;在極其陽春的環境下，光只要有這個功能，就能夠以它為基礎實現許多其它的高級功能。&#xA;記得多年前我就曾在一個嵌入式設備的開發中使用過它。&#xA;當時 C++11 才剛發佈，也就是說我們使用的編譯平臺根本還不可能用上這些新功能，&#xA;甚至於我們當時還在使用祖傳的舊版本 GCC，連編譯器的 builtin atomic 都還沒有支援，&#xA;然後就這麼剛好的我需要在這樣的情況下解決一些執行緒競爭的問題。&#xA;於是我在那個時候就去翻找了 ARM CPU 的指令集(&lt;em&gt;那個時候的 ARM 指令集還相當簡單，不像現在的複雜&lt;/em&gt;)，&#xA;找到了一個 atomic value exchange 的指令，&#xA;然後用組合語言寫了上面所描述的兩個 atomic flag 的操作函式，&#xA;再用這兩個函式手搓了一份簡單但能用的執行緒鎖(mutex)，如此解決了當時的問題。&#xA;當然以當前現在的開發環境來說應該是不太有需要再去做一次這種事情，&#xA;但是當時的經歷還是能讓我覺得挺有意思的！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_結語&#34;&gt;結語&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;本篇介紹了能夠解決執行緒資料競爭問題的第一個解決方案：原子變數。&#xA;原子變數是所有執行緒同步機制當中最簡單高效的一種方案，&#xA;然而它也同樣帶來一些副作用，在解決競爭問題的同時給效能帶來劣化的影響，&#xA;因此在使用原子變數的時候也並不能夠過於肆無忌憚。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>執行緒同步 4：為什麼出錯？</title>
      <link>http://www.huoschen.idv.tw/blog/programming/%E5%9F%B7%E8%A1%8C%E7%B7%92%E5%90%8C%E6%AD%A5-4%E7%82%BA%E4%BB%80%E9%BA%BC%E5%87%BA%E9%8C%AF/</link>
      <pubDate>Sun, 01 Feb 2026 20:16:12 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/programming/%E5%9F%B7%E8%A1%8C%E7%B7%92%E5%90%8C%E6%AD%A5-4%E7%82%BA%E4%BB%80%E9%BA%BC%E5%87%BA%E9%8C%AF/</guid>
      <description>&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;經過前面幾篇，&#xA;想必讀者已經對執行緒與其運作原理有了一定的認識，也能夠自己動手開始製做多執行緒的程式了。&#xA;但是當真正開始嘗試以後，應該很快就能發現一些奇怪的現象。&#xA;比如有些執行緒共同存取的變數好像偶爾會冒出怪怪的結果，&#xA;而如果共同存取的是一些比較複雜的物件如標準函式庫的容器等等的話，&#xA;可能還會冒出各種奇奇怪怪的異常或甚至導致程式當掉等等問題。&#xA;那麼這是怎麼回事呢？為什麼會出問題呢？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_race_condition&#34;&gt;Race Condition&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這種在多緒程式所容易產生的資料存取問題被稱為資料競爭(Race Condition)。&#xA;接下來讓我們使用一個範例來呈獻這種問題。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;下面是我們的執行緒函式，它的行為就是使用迴圈不斷將一個變數的值進行累加：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;struct WorkData&#xA;{&#xA;    int value;&#xA;    int step_value;&#xA;    int proc_times;&#xA;};&#xA;&#xA;static&#xA;int ThrdFunc(struct WorkData *data)&#xA;{&#xA;    int n = data-&amp;gt;proc_times;&#xA;    int x = data-&amp;gt;step_value;&#xA;&#xA;    for(int i = 0; i &amp;lt; n; ++i)&#xA;        data-&amp;gt;value += x;&#xA;&#xA;    return 0;&#xA;}&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;然後在主函式內建立 4 條同樣執行上面那個函式的執行緒，&#xA;並且傳遞給它們同一個資料結構，這樣它們就會一起對那同一個變數進行不斷累加的行為：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;struct WorkData data =&#xA;{&#xA;    .value = 0,&#xA;    .step_value = 2,&#xA;    .proc_times = 100000000,&#xA;};&#xA;&#xA;static const int thrd_num = 4;&#xA;thrd_t thrd_list[thrd_num];&#xA;&#xA;for(int i = 0; i &amp;lt; thrd_num; ++i)&#xA;{&#xA;    int err = thrd_create(&amp;amp;thrd_list[i], (int(*)(void*)) ThrdFunc, &amp;amp;data);&#xA;    assert( err == thrd_success );&#xA;}&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;以上只顯示了關鍵重要的程式碼片段，&#xA;而完整的範例可以從&lt;a href=&#34;http://www.huoschen.idv.tw/blog/files/threads/thread_race_cond.c&#34;&gt;這裡&lt;/a&gt;下載，&#xA;而在我的電腦上實際執行過之後的結果如下：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;Finished, value=344688372/800000000, spend=1176&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;從上面的程式碼中可以看到，指定給迴圈的循環次數是 100000000，&#xA;也就是每個執行緒都會跑過 1 億次累加計算。&#xA;那麼那個共同累加的變數初值為 0，&#xA;每個執行緒累加 1 億次，每次累加值為 2，又總共有 4 條執行緒一起工作，&#xA;因此最終計算完成的結果應該是 8 億；&#xA;然而實際執行結果卻只有 3 億多，這是怎麼回事呢？！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_為什麼出錯&#34;&gt;為什麼出錯？&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;當不同的執行緒共同讀寫同一個變數，或者說共同修改同一段記憶體的資料時，&#xA;就會發生資料競爭的情況，從而&lt;strong&gt;有機率&lt;/strong&gt;導致發生不可預期的資料異常情況。&#xA;導致這種結果發生的原因主要有三：多指令工作、核心快取、以及執行順序所導致。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_多指令工作&#34;&gt;多指令工作&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;除非是系統性修習過資工專業，或是從電子電機相關領域念上來的人，&#xA;否則對於一般直接從高階程式語言入門學習的人來說，&#xA;應該一般不容易很快的理解到即便是一個看似簡單又單純的程式敘述，&#xA;其背後往往需要動用好多條 CPU 指令來完成。&#xA;例如上面的範例程式碼，&#xA;在執行緒函式中對那個 &lt;code&gt;value&lt;/code&gt; 變數所進行的 &lt;code&gt;data-&amp;gt;value += x&lt;/code&gt; 這一條看似簡單無比的敘述，&#xA;背後真正完成這項操作的其實是以下數個指令的結果：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-assembly&#34; data-lang=&#34;assembly&#34;&gt;movq&#x9;-24(%rbp), %rax ; 將 data 資料結構的地址讀入 RAX 暫存器&#xA;movl&#x9;(%rax), %edx    ; 將 data-&amp;gt;value 的值讀入 EDX 暫存器&#xA;movl&#x9;-4(%rbp), %eax  ; 將 data-&amp;gt;step_value 的值讀入 EAX 暫存器&#xA;addl&#x9;%eax, %edx      ; 將 EAX 與 EDX 的值相加，並將結果存回 EDX 暫存器&#xA;movl&#x9;%edx, (%rax)    ; 將 EDX 的值存入 data-&amp;gt;value 變數內&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;上面的指令呈現只是作者在我的電腦上編譯出來的的結果，&#xA;而讀者如果自己在家裡嘗試編譯範例程式碼的話，可能產生的結果會有些許不同。&#xA;這是因為不同的 CPU 所使用的指令集並不相同，&#xA;或者使用不同的編譯器與不同的編譯條件可能也會產生不同的指令的緣故，&#xA;然而具體細節雖然可能有些差異，但是指令結構基本大差不差，並不影響本篇敘事的邏輯和原理。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;你看啊，這一個動作有這麼多的步驟要進行；&#xA;可如果命令進行到一半還沒全部做完的時候，執行緒就被排程器給切走了，那會發生什麼事？！&#xA;比如一個執行緒拿到那變數的值是 6，然後加 2 變成 8，再把 8 給存回變數。&#xA;但是在這個過程中可能執行緒自己曾經被切出去又切回來，&#xA;其它正在執行同樣事情的執行緒可能已經做過一次拿到 6 後加 2 再將 8 存回去的步驟，&#xA;但是這個執行緒並不知道這件事，於是就把它自以為已經累加過的，但實際上也同樣是 8 的數字給覆寫回去了。&#xA;導致雖然兩個執行緒都做過一次累加，但實際結果卻相當於只做過一次累加！&#xA;甚至於，執行緒切出去又切回來的時間內，搞不好其它執行緒已經執行過好幾回累加，&#xA;而那個數字可能實際已經變成 22 了；&#xA;然而當這個執行緒重新被切回來的時候，剛才發生過的這些事它當然都不知道，&#xA;於是又把它認為計算後的新值也就是 8 給覆寫回去了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這就是為什麼執行緒共同存取覆寫資料的時候會導致競爭衝突的原因其一。&#xA;也許你會認為這問題是出在於執行緒切換的時間點不太好導致的，&#xA;如果讓排程器可以不在某些事情做到一半的時間點去切換，&#xA;而是能讓同一組相關的指令執行完在切換的話就能解決問題；&#xA;然而這個想法實際可行性並不高。&#xA;且先不論這會導致排程器的排程運算複雜到什麼程度，能不能夠被實現出來等問題，&#xA;即便排除萬難把能辦到這樣條件的排程器給造出來了，別忘了還有多核心、多 CPU 的情況，&#xA;它們可是真實的同時在平行運作的呢！甚至還可能每一條指令剛好都同時在進行的呢！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/threads/race-cond.png&#34; alt=&#34;race cond&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 1. 左邊是單執行緒進行 4 次累加，解果正常且一如預期；右邊則是 4 條執行緒在可能任意的時間進行累加的結果，就發生了新舊狀態互相覆寫的情況！&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_核心快取&#34;&gt;核心快取&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在前篇&lt;a href=&#34;http://www.huoschen.idv.tw/blog/programming/%E5%9F%B7%E8%A1%8C%E7%B7%92%E5%90%8C%E6%AD%A5-3%E4%BB%BB%E5%8B%99%E5%9F%B7%E8%A1%8C%E7%B7%92%E8%A1%8C%E7%A8%8B%E8%88%87%E7%A8%8B%E5%BC%8F/#context-switch&#34;&gt;曾經解釋過&lt;/a&gt;，&#xA;我們人在工作的時候往往會先把一些會用到的資料從櫃子裡拿出來放到書桌上，&#xA;這樣即時要用的時候就可以直接轉頭到旁邊翻找參考，而不用一直來來回回去書櫃那裡，&#xA;而 CPU 其實也是一樣的！&#xA;電腦的主記憶體對 CPU 來說其實相當緩慢，因此 CPU 內部每個核心也有一份自己的小記憶體，&#xA;就像你桌面的空間不如書櫃那麼大，但是操作起來可快了，&#xA;這東西就被稱為「快取」(Cache)。&#xA;每當需要參用資料的時候，CPU 並不會每次都去主記憶體索取，而是如果快取有資料的話就會直接和快取要。&#xA;相對的，每次覆寫資料的時候也會先寫到快取內，後續等到合適的時間才會把快取更新的資料寫回主記憶體。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;但是問題就來了，當系統存在多個 CPU 或多個核心的時候，&#xA;每個核心自己算自己的快取資料算的很開心，但是如果別的 CPU 核心其實也在自己的快取裡面修改這個&#xA;「理論上應該是同一個變數但實際上各核心自己有一份快取副本」的資料呢？&#xA;於是有一部份的資料衝突就有可能來源於這裡了！&#xA;然而這裡說的可能，那是因為源自於快取問題其實 CPU 本身的協作機制(&lt;em&gt;通知快取失效&lt;/em&gt;)&#xA;就已經處理掉了大半，僅剩一部份還需要在後續的操作中加點料，而這一部份我放到下一篇再談。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_執行順序&#34;&gt;執行順序&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;你知道嗎？&#xA;雖然我們一般認知程式都是一行一行的往下執行的，並且在學習的時候也是被這麼教導的，&#xA;然而實際上的程式並非如此！&#xA;比方以下面這一段程式碼為例：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;e_b = e_i + e_u;                    // Line A&#xA;v_i = w * r * sin(e_i) / cos(e_u);  // Line B&#xA;v_i_x = v_i * sin(e_b);             // Line C&#xA;v_b = w * r * cos(e_i) / cos(e_u);  // Line D&#xA;aoa = b - e_b;                      // Line E&#xA;cl = calc_cl(r, aoa);               // Line F&#xA;cir = 0.5 * v_b * c * cl;           // Line G&#xA;tlf = (2/PI) * acos(exp(( -k*( 1 - 2*r/dia ) )/( 2*sin(b_tip) )));  // Line H&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;為了方便講解，上面這段程式碼的每一行註解都加上了 A~H 的標號。&#xA;就看上去的理解，這段程式碼的執行順序應該是 A → B → C → D → E → F → G → H，&#xA;然而實際上的執行順序卻可能是 D → F → B → A → G → E → C → H、&#xA;或者可能是 H → F → B → D → A → C → G → E，或者還有其它更多可能的排列組合。&#xA;那麼為什麼會有這種情況呢？答案是為了編譯最佳化(Compiler Optimisation)！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;舉的例子，比如你媽要你去幫忙買個菜，回來的路上順便幫忙去繳個費，&#xA;回來之後順便洗兩杯米煮個飯，然後再出門幫媽媽把醬油還給對面的王阿姨。&#xA;這時我們就得到了一份指令清單，然而當落實到了實際的行動時，&#xA;我們卻很可能會調動這份清單的執行順序，而並不一定會嚴格的按照所交辦的順序。&#xA;為什麼呢？因為我們懶，想要省點事！&#xA;比方考量到買好了菜以後，回來的路上可能要背著一大堆東西去繳費好像不是很方便，&#xA;於是我們可能會選擇在去程空手的路上就先把費給繳了；&#xA;比方煮米這件事相當消耗時間，我們可能會選擇最先執行這件事，&#xA;這樣在等會出去的時間裡正好讓電鍋同步在煮米，而不是讓電鍋空等到我們回來之後才開始下鍋煮；&#xA;又比方說我們可能不想要出門兩趟，於是就選擇在煮好米之後出門先把醬油還給對面王阿姨，&#xA;然後去繳費，再買菜。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;上面這個例子放到編譯器上面其實也是一樣的。&#xA;編譯器可能會有自己的想法，它可能會把你的程式敘述調換排列的順序，因為它認為這樣可以進行的更快速更順暢；&#xA;反正不論編譯器怎麼調換排序，只要最後執行出來的結果和嚴格按照順序執行出來的結果一樣就可以了！&#xA;於是回顧上面的範例片段，八行程式碼可以被編譯器隨意調動，&#xA;除了行 C 和行 E 不能被調到行 A 前面，因為那兩行的計算都需要依賴行 A 的結果；&#xA;同樣的，行 B 怎麼調都可以，就是不能調到行 C 前面，而行 G 必須在行 D 和行 F 的後面等；&#xA;甚至於計算最複雜的行 H 竟然不依賴前面任何一行的結果，於是可能反而第一個被送去執行等等。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;程式指令這樣順序換來換去可能可以更高效的被執行，反正只要結果和沒換順序時一樣就可以；&#xA;然而當多緒同步運作的情況下，問題就可能產生了！&#xA;那些執行緒各自參照和共同參照的變數的存取覆寫順序可能有所不同，在單緒條件下反正最終的結果是一樣的，&#xA;然而在多緒平行互相參雜的時候，就可能因為執行緒之間原本就存在的互相截獲干涉等因素，&#xA;而導致對結果產生不可預期的結果偏差錯誤！&#xA;也許我們可以透過一些編譯器選項去禁止編譯器重排指令順序，然而這個問題依然可能會發生，&#xA;因為指令即便按照順序送給 CPU，CPU 卻也不一定會按照順序處理！&#xA;這就是 CPU 的「亂序執行」(Out-of-Order Execution)功能，&#xA;其同樣也是因為不同的指令可能需要消耗的資源與等待等不盡相同，&#xA;因而同樣 CPU 為了最佳化指令處理流程而自己做的優化。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這就是為什麼在多緒程式裡只要共同存取變數就可能會導致異常的三個原因。&#xA;在處理資料與數字計算等應用下，它可能會導致計算結果的偏差錯誤；&#xA;而如果共同存取的是一些比較複雜的並且涉及記憶體管理或系統資源管理的物件，&#xA;比如對標準 STL 容器的操作，則可能導致其內部狀態錯亂、違規存取，從而導致行程崩潰的結果！&#xA;對於這些問題當然存在許多解決方案，但是本篇只專注於解釋導致問題發生的原因，&#xA;因此那各種的執行緒同步技巧與方案等，就留待後續的篇章慢慢講解了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_為什麼多緒程式難&#34;&gt;為什麼多緒程式難？&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;不知道現在這個世代還有沒有人曾經被學長、前輩給恐嚇過類似像&#xA;「千萬不要嘗試多緒」、「多緒是非常難的東西」、「能單緒就只用單緒就好」、「沒事別搞死自己」&#xA;這樣的諄諄教誨耳提面命？&#xA;對於特別是對於包括作者本人在內的，那些並未經受過紮實數位工程基礎訓練的半路出家程序員來說，&#xA;多緒程式確實存在許多令人摸不著頭腦的，讓人想不清原因的，又如午夜精靈那樣忽隱忽現的各種奇異又詭異的問題。&#xA;那麼為什麼多緒程式就這麼多問題，這麼容易讓人感受到挫折呢？&#xA;其實一言以蔽之就一句話：&lt;strong&gt;極強的隨機不確定性！&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;對於那些程式邏輯錯誤的查找工作(&lt;em&gt;也就是程式「除錯」，或俗稱「抓蟲」&lt;/em&gt;)，&#xA;其實通常來說害怕的並不是錯誤的嚴重性。&#xA;因為哪怕是天大的錯誤，只要它每次必然發生，或只要經過同樣的操作步驟之後必然觸發，&#xA;那就都不是什麼大事，錯誤被定位然後被解決都只是板上定釘的事情。&#xA;真正讓人感到頑固討厭、如貓捉老鼠那樣摧毀人心態的錯誤，是那種&#xA;忽明忽現、抓不到規律、摸不清底細，&#xA;你要抓它的時候守候整夜都不出現，你放棄的時候客戶又告訴你它出現了的錯誤；&#xA;而與執行緒有關的錯誤經常就是這一種型態！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;經過本篇解釋到這裡，應以明白執行緒之間容易出的狀況主要在於執行流程的互相插斷、干涉。&#xA;然而這種影響卻是隨機的！&#xA;這次因為執行流程剛好斷在某個位置、或剛好在執行到某個位置的時候也恰好某另一條執行緒剛好執行了哪個動作，&#xA;於是導致現在出現的某個問題；&#xA;但是，同樣的問題卻很難重複顯現，因為我們基本無法控制不同流程之間的斷點情況。&#xA;也許下一次執行，剛好程式流錯開了，就沒發生任何問題；&#xA;或也許下一次執行遇到的是另一種執行情況的排列組合，顯現的是完全不一樣的另一個狀況；&#xA;甚至於，作業系統排程也在問題出現與否的行為中扮演關鍵性的角色，&#xA;畢竟所有的執行緒斷切回復全都是它在控制的！&#xA;意思就是說，甚至執行緒有關的問題出現或不出現、或者是呈現樣態的不同，&#xA;已經跳脫你的程式本身了，而是整個系統上所有正在運作的其它行程、以及作業系統本身的狀態通通都會影響進來，&#xA;可能每次執行出來的效果通通不一樣，每次出現異常的程式位置到處跳來跳去等；&#xA;或可能更加讓人惱怒的情況是重複執行一百遍通通剛好沒問題，然後在執行一萬遍之後才剛好抓到它那麼冒頭一次！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;說了那麼多，那落實到實際的程式設計之中要怎麼樣去避免產生這些問題呢？&#xA;其實本來就應該要有的清晰的結構設計和模組責任劃分與內外區隔等設計原則，&#xA;其本就可以很大幅度的降低執行緒之間互相會產生交互作用的涵蓋範圍。&#xA;然後建立在前者之上，我認為最重要的一點原則就是&#xA;&lt;strong&gt;嚴格審視多緒交互影響範圍的邏輯程序，確保邏輯嚴謹&lt;/strong&gt;；並且&#xA;&lt;strong&gt;絕不心存僥倖，只要一個有疑慮的情況有發生的可能性，哪怕你覺得只有怎樣低的發生機率，也必須要處理掉！&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;上面的第二點尤其更加重要，切勿存僥倖之心。&#xA;這怎麼說呢？如果你把範例程式碼的循環次數改成比如說 5 次或 10 次之類的就能感受到了，&#xA;可能絕大多數時候執行出來的結果都是一切正常！&#xA;說實在這些問題的發生是非常吃機率的，因此實際上很可能程式執行過有問題的程式碼非常多次卻都剛好沒有遇過問題；&#xA;然而機率低不表示絕對不會遇上，只要把程式放出去大量使用，那麼問題就總是會發生！&#xA;並且現實上真出問題的機率愈低的那種問題往往才是最討厭的問題！&#xA;所以有些時候特別在當我們寫程式寫累了的時候，&#xA;可能看到一段程式碼思索一下覺得或許哪個地方存在多緒交互運作之下邏輯不夠嚴謹的疑慮，&#xA;這時可能就容易懶下來，可能會產生「不會這麼巧吧？兩個操作也就一前一後的兩個連在一起的敘述，&#xA;得要多麼湊巧才會讓執行緒的切換正好斷在這？」這樣的取巧心理。&#xA;然而這就是危險的地方，因為如同前面說過的，機率即使再低，只要放出去大量執行就一定會遇上；&#xA;並且就是因為遇上這種問題的機率真的特別低，&#xA;於是它很可能就會成為往後不知何時何日將你絆在辦公桌前幾個星期找不著北的罪魁禍首！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_關於範例程式&#34;&gt;關於範例程式&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;本篇所使用的那個累加數字的程式其實已經爛大街了，幾乎是所有論述到執行緒資料競爭話題時都會出現的程式碼。&#xA;我在寫作本篇的時候本來也想說是不是拿個更加實際一點的、更加有用點的程式來作範例，&#xA;然而找了一圈最後還是使用了這個最經典的累加程式。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;主要的原因如同本篇後面所論述的內容，現實當中的執行緒衝突其實通常並不容易發生，&#xA;往往要累積執行次數與量之後才能靠著機率遇上一兩次。&#xA;然而作為一個示範則訴求卻剛好相反，&#xA;如果我說「你就拿去每天早上起來的時候都跑一遍，一個星期應該會遇到一回」，&#xA;或者說「每兩個小時就執行一遍，這樣一天應該有機會遇上一次」的話，&#xA;那麼這顯然不是一個好的示範程式，&#xA;而在這種情況下的一個所謂好的示範程式，就應該要能夠在每次執行的時候都能曝露問題。&#xA;這就是為什麼這個範例程式需要使用迴圈連著執行同樣的動作一億次的原因了。&#xA;而在我寫作本篇時自己的測試中，當迴圈次數少於一百次的時候，就已經幾乎不能夠顯現問題了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;而為什麼思來想去我最終還是沒有使用更加有趣的計算程序，而還是回歸到累加計算呢？&#xA;因為作為示例程式其實還有一個也同樣重要的優求：要能夠明顯看出問題。&#xA;那麼要讓我們能夠明顯察覺異常，顯然就需要有一個很明顯正確的結果來作為對比，&#xA;而累加算法正好就是那種可以讓我們即便不執行程式都能知道它正確的結果應該要是什麼的算法！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;最後還有一個相當重要的東西，如果讀者想要把範例程式拿到自己的電腦上編譯執行做測試的話，&#xA;麻煩一定要調整你自己編譯器的設定，然後&lt;strong&gt;將編譯最佳化給關掉！&lt;/strong&gt;&#xA;編譯最佳化就如同本篇前面解釋過的執行順序最佳化的那部份一樣，&#xA;是編譯器可能覺得你寫的程式碼囉唆，於是它調整了你的程式碼，試圖取得更快的執行速度。&#xA;並且這種編譯最佳化行為並不僅止於如本篇所述的調整你的程式執行順序而已，&#xA;它可能還會濃縮、展開、刪除、變更、改寫你的程式碼，&#xA;反正目的就是盡可能找出某種方式給你的程式改頭換面，&#xA;雖然可能把內容改變了十萬八千里，但最後出來的結果和忠實呈現不動你程式碼的話出來的結果一樣，&#xA;並且還更加快速省事。&#xA;然而對於本篇範例程式碼來說這並不是好事，因為範例其實是一個實際應用中真實情況的簡化演示，&#xA;但是可能因為過於簡化了，導致編譯器覺得&#xA;「你寫這東西怎麼這麼蠢啊？改成這樣這樣，你看不是一下就出來了嗎！」&#xA;最後反而重現不出我們原來所預期的效果。&#xA;比如我在做測試的時候就曾嘗試把最佳化開到最大，結果程式休一下零秒就跑完了！(&lt;em&gt;原來需要一秒多！&lt;/em&gt;)&#xA;一看編出來的結果，原來是編譯器覺得我用迴圈一次一次累加一億次太蠢太費事，&#xA;於是它直接改成了 &lt;code&gt;data-&amp;gt;value += 2 * 100000000&lt;/code&gt;；&#xA;雖然就結果來說它做的相當好，但反而在本篇的訴求上就完全不是想要的效果！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;因此如果你想要自己編譯執行本篇範例，請記得關閉你的編譯器的最佳化編譯功能；&#xA;如果你使用的是 GCC 的話，那麼可以加入編譯選項 “-O0” 來關閉最佳化。&#xA;此外，如果你想要觀看編譯器編譯後真正送去執行的東西的話，&#xA;可以設定將編譯器編譯出組合語言這個步驟就停止並輸出。&#xA;組合語言雖然還不是機器碼，但與機器碼之間基本絕大部份都是 1:1 直接對應的，&#xA;因此對於分析理解的用途來說已經相當於直接閱讀機器碼了！&#xA;然而可能並不是每個編譯器都支援把程式碼編譯成組合語言並輸出的功能，&#xA;但如果你使用的是 GCC 的話，那麼加入 “-S” 編譯選項就可以做到這件事，&#xA;並且本篇所使用的組合語言分析也都是這麼得來的！&#xA;另外，不同 CPU 的指令集可能並不相同，&#xA;因此如果你不是在 x86 電腦上去編譯組合語言的話，可能會看到與本篇示例差異巨大的結果，&#xA;但這都是正常的現象。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>執行緒同步 3：任務、執行緒、行程、與程式</title>
      <link>http://www.huoschen.idv.tw/blog/programming/%E5%9F%B7%E8%A1%8C%E7%B7%92%E5%90%8C%E6%AD%A5-3%E4%BB%BB%E5%8B%99%E5%9F%B7%E8%A1%8C%E7%B7%92%E8%A1%8C%E7%A8%8B%E8%88%87%E7%A8%8B%E5%BC%8F/</link>
      <pubDate>Wed, 28 Jan 2026 23:07:51 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/programming/%E5%9F%B7%E8%A1%8C%E7%B7%92%E5%90%8C%E6%AD%A5-3%E4%BB%BB%E5%8B%99%E5%9F%B7%E8%A1%8C%E7%B7%92%E8%A1%8C%E7%A8%8B%E8%88%87%E7%A8%8B%E5%BC%8F/</guid>
      <description>&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在解釋明白了作業系統實現多工的原理後，本篇要來整理一些與執行緒相關的常用名詞解釋，&#xA;特別是那些一般可能容易混淆的名詞與含義。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_指令與任務&#34;&gt;指令與任務&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;首先來解釋「指令」(Instruction)，或者有些地方叫作「機器碼」(Maching Code)。&#xA;指令是 CPU 真正能夠讀懂並且知道要去做什麼事的命令碼，&#xA;是電腦 CPU 硬體實際上真正一個接一個不斷執行的命令，&#xA;也是我們的程式最晚到了執行之前要變成的東西。&#xA;而「任務」(Task)，就是一群為了共同的目標而生，服務於共同目的的多個指令的集合。&#xA;只不過光有任務是遠遠不夠支持一個程式的執行的，&#xA;因為程式的執行並不只依靠命令口令，還需要許多使它能夠工作的相關資源，因而才有了執行緒；&#xA;不過關於執行緒我們先暫時放著，先來看看行程。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_行程與執行緒&#34;&gt;行程與執行緒&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;「行程」(Process)是電腦作業系統裡一個真正完整的具有執行狀態的程式。&#xA;行程裡面當然內含了上面所說的任務，可能還不只一個(&lt;em&gt;只不過通常不會以裸裝的任務型態存在&lt;/em&gt;)。&#xA;然而行程所擁有的並不只是一大堆的指令。一個行程裡面還包含了程式執行所需要的各種資源，&#xA;例如記憶體空間、程式計數器與各種暫存器空間、堆疊空間、資料空間、系統與檔案資源等等。&#xA;由於行程包含了一個獨立程式執行所需要的完整資源，&#xA;因此行程也被稱呼為一個程式在作業系統內存在的完整實體。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;如同前面說過，任務作為指令的集合其本身並不完備，因為還缺少了真正能夠「執行」起來所必要的一些資源，&#xA;於是通常除非在討論排程器這樣的話題裡，否則通常不容易看到任務這個名詞被提起。&#xA;因此在作業系統內真正能夠被安排與調動的最小單位其實是「執行緒」(Thread)。&#xA;執行緒不像行程那樣包山包海的完整，而僅只有一些能夠支持它正常執行運作所需的最小資源集合，&#xA;因此執行緒並不能夠獨立的作為一個執行實體存在於系統內，而必須依附於行程；&#xA;或者可以說，執行緒其實就是任務加上所必須的執行資源後所成的包裝，&#xA;因此它的完整性介於任務與行程中間。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;於是這裡總結一下，行程就是在系統內完整獨立的單位；&#xA;而一個行程內部會擁有至少一個執行緒，作為能夠執行與被排程的單元。&#xA;單獨的執行緒本身並不足夠完整以致於能夠獨立的存在和運作，&#xA;執行緒需要依附於一個行程以使用其之資源，並且&lt;strong&gt;屬於同一個行程內的所有執行緒皆共享行程內的資源&lt;/strong&gt;，&#xA;而這也是為什麼我們前篇範例內的執行緒可以共同存取記憶體變數等資源的原因。&#xA;然而行程並不只是擁有完整資源的獨立存在而已，它還被作業系統給設法限制與保護住，&#xA;因此&lt;strong&gt;不同行程之間彼此是獨立的，行程之間(正常情況下)沒辦法存取、利用、與窺探另一個行程的內部資源。&lt;/strong&gt;&#xA;這也是為什麼通常來說我們電腦上的一個軟體當掉之後並不會影響其它軟體與系統，&#xA;並且我們還能夠單獨殺掉那個異常的行程的緣故了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;不過在古時候作業系統對行程的保護與隔離還沒那麼完善的時候就不是這樣了。&#xA;那個時候的電腦如果有一個程式寫不好，違規存取它不該取用的資源，或者它自己異常死掉了，&#xA;是可能會造成其它原本正常的程式也發生異常，甚至能把系統也搞到異常當掉的！&#xA;當然好處也是有的，在那個時代不同的程式之間要傳遞消息互相溝通就想當方便。&#xA;反正我對你的內部能看能拿，並且你對我也是，那麼什麼資料我就可以隨意塞給你，你也可以隨意塞給我。&#xA;而到了現代的行程之間被隔離獨立，&#xA;還要再能互相溝通的話就只能依靠「行程間通訊」(Inter-Process Communication (IPC))的手段了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_執行緒的獨立與共用資源&#34;&gt;執行緒的獨立與共用資源&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;回到執行緒身上。&#xA;同一個行程內部的所有執行緒原則上共享所有的資源，然而有些資源還是不能夠共用的，必須執行緒自己擁有一份。&#xA;作為一個能夠獨立被 CPU 排程器調派並執行運作的單位，不同的執行緒之間除了各自擁有各自的指令之外，&#xA;顯然那些與執行有關的上下文狀態就沒有辦法共用，因為不同的執行緒彼此的執行狀態並不相同。&#xA;具體來說，這些執行緒必須自己擁有一份的資源有像是：&#xA;程式計數器(Program Counter)的備份、各 CPU 暫存器(Registers)的備份、以及堆疊空間(Stack)等；&#xA;至於像堆積空間(Heap)、全域空間(Global)、檔案與各種系統資源等，則所有執行緒共用同一個行程裡面的這些資源。&#xA;因此在前篇的範例中數個執行緒才能夠直接取用共同的全域變數。&#xA;不過同一個行程裡面的多個執行緒僅僅只是擁有一份屬於自己的資源而已，並不像不同行程之間會受到作業系統的隔離保護，&#xA;因此執行緒之間是可以存取彼此的資源如堆疊空間上的變數等等，只要你知道那些東西的位址在哪裡就可以了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;上面解釋的方式比較中規中矩，但是怕可能許多並沒有那麼多資訊工程背景的程序員們可能會像在看天書，&#xA;於是這裡用更加白話而貼近程序員日常的語言再解釋一遍。&#xA;濃縮總結最重要的部份其實主要在於記憶體空間的分配上。&#xA;全域空間(Global)，也就是宣告為全域變數、或者是函式、類別內的 static 型態變數，都是整個行程裡面只有一份的，&#xA;任何一個執行緒改寫了變數的值，則所有參用到這個值的其它執行緒都會受到影響。&#xA;堆積空間(Heap)，也就是我們在程式裡面透過 new、malloc 等操作所動態建立的空間，也是所有執行緒都可以直接使用的，&#xA;並且一個執行緒建立的空間由另一個執行緒進行釋放也是可以的(&lt;em&gt;至於合適不合適這麼做，就要看程式的設計結構了&lt;/em&gt;)；&#xA;並且一個執行緒釋放了一個堆積上的空間後，其它執行緒再嘗試存取就屬於違規存取了！&#xA;最後是堆疊空間(Stack)，就是函式內的區域變數，讓函式可以層層呼叫甚至嵌套呼叫的基礎，&#xA;於是這個&lt;strong&gt;堆疊空間便是每一個執行緒獨立擁有一份的&lt;/strong&gt;。&#xA;意思就是同一個函式內的區域變數在不同的執行緒執行之下，彼此是獨立且互不相干的，&#xA;這個執行緒怎樣操作區域變數並不會影響另一個執行緒；&#xA;但是執行緒各自擁一份區域變數空間並不表示彼此被完全相互隔離，&#xA;一個執行緒仍然可以將它堆疊空間內的變數位址傳遞給另一個執行緒去做參用或修改，&#xA;並且雙方都能看到被修改更新後的內容。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;不過這裡再補充一點知識，&#xA;以上的定義與區分是屬於邏輯概念上的東西，但是個別作業系統的實現方式與細節可能仍有所不同。&#xA;比方說 Windows 的實現方式就與前面的解釋內容一樣，行程裡面包含執行緒，因此每一個行程至少都會擁有一條執行緒。&#xA;而 Linux 就沒有獨立的執行緒實現，而是設計無論執行緒還是行程都是一樣的東西。&#xA;在 Linux 裡只有行程，一條邏輯上的執行緒其背後其實是一個行程；&#xA;一個行程裡面也沒有再包含一個執行緒，因為它本身自己就是。&#xA;對於 Linux 來說，一切都是行程，&#xA;只不過是有些行程之間是共用部份資源的，有些行程之間是存在父子關係的，僅此而已。&#xA;然而不論個別作業系統對這些功能的實際實現方式如何，在外顯的運作邏輯與特性上都符合本篇所講述的結構，&#xA;因此我們站在應用程式的視角其實可以把這些細節看作為實作方式的不同就行了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;context-switch&#34;&gt;上下文切換&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;我們知道當代的分時多工作業系統依靠一個排程器在多個執行緒之間不斷來回切換執行，&#xA;營造出好似大家同時執行的效果&#xA;(&lt;em&gt;當然在多核或多 CPU 情況下還真的會有那麼幾個執行緒能真正意義上的「同時」執行&lt;/em&gt;)，&#xA;但是這種執行緒之間的來回切換並不是沒有代價的！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;每一個 CPU 核心一次只能執行一條任務，每一條執行緒都有自己獨立的執行狀態，&#xA;而每一個執行中的任務其實都有許多正在臨時使用中的執行資源。&#xA;比方說當我們在辦公室埋首處理各中文件資料與公文時，或者當我們在書桌前認真研究什麼東西時，&#xA;我們通常不會乖乖的在需要參考使用資料時才站起來去到書櫃或檔案櫃那裡拿取，&#xA;而是會預估並取出某些可能會需要即時參考的資料到書桌上，一邊工作一邊參考，&#xA;工作做完了或告一段落了才會把東西放回去。&#xA;甚至於我們可能會臨時隨筆寫下一些幫助短期記憶，&#xA;比方說現在讀到哪裡，剛剛參考的是哪本書第幾頁，臨時想到什麼怕等會忘了於是寫下來的便簽等等。&#xA;這些東西在電腦、CPU、與作業系統中同樣都存在，比方說像是程式計數器和各種 CPU 暫存器等等，&#xA;甚至於某方面來說 CPU 快取也能算在其中之內，而這些就統稱為執行條件的「上下文」。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;當我們的作業系統要切換執行不同的執行緒時，&#xA;就會需要先把當前執行的這個執行緒的相關資料、狀態數值等先保存在執行緒的相關備份區域內，&#xA;然後再把要切換過去執行的那個執行緒的相關狀態從它的備份區域讀出來並取代當前的執行上下文，&#xA;然後才真正開始執行那個要切換過來的執行緒的任務。&#xA;因此這樣的行為就被稱為「上下文切換」(Context Switch)，&#xA;而閱讀過前面的描述之後，想也知道這樣的上下文切換需要花費一點時間。&#xA;雖然上下文切換的速度相當快，但如果過於頻繁切換的話也會導致效能有所降低。&#xA;因此作業系統排程的時間片(Timeslice)如果設計的過短也會導致過於頻繁的進行上下文切換，從而導致效能受損；&#xA;同樣也是當我們對程式的效能有些刁鑽的時候，有些時候檢討並儘量減少上下文切換的機會，&#xA;在某些時候也是能夠提升程式計算效能的其中一處入手點。&#xA;(&lt;em&gt;不過雖然說是這麼說，但這裡還是建議程式小白先不要想那麼多，看過就算了。&lt;/em&gt;&#xA;&lt;em&gt;因為很多時候當了解掌握還不夠熟悉的情況下，很容易弄巧成拙！&lt;/em&gt;&#xA;&lt;em&gt;只需要先當了解一個冷知識那樣知道有這麼件事存在就可以，等你的火候足夠的時候自然會了解領會過來。&lt;/em&gt;)&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_程式&#34;&gt;程式&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;最後再來題一個東西叫作「程式」(Program)。&#xA;程式這東西有點意義不那麼明確，因為口語上其實許多應該被叫作行程的東西會被我們稱呼為程式，&#xA;比方「電腦後臺管理器看到有個程式在跑」之類，然而這裡我要說的是嚴格意義上的「程式」(Program)。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;一個程式其實就是一堆死的資料，通常以一個執行檔檔案的型態存在，&#xA;也就是我們撰寫的程式碼編譯(&lt;em&gt;或稱建置可能更合適&lt;/em&gt;)後所成為的東西，那個叫作程式。&#xA;那麼當我們要執行一個程式的時候，作業系統就會去讀取這個檔案，&#xA;按照檔案內所記載的內容將指令資料讀入記憶體、規劃記憶體空間、配置需要的系統資源，&#xA;並初始化各項資源後成為一個系統內的行程，然後從第一個指令開始執行。&#xA;也就是說，系統內真正能夠執行運作的實體仍是行程，&#xA;而程式則是告訴系統如何建立產生一個用來執行特定任務的行程的規格書。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這就是為什麼明明只有一個「小畫家」程式，我們卻可以重複啟動好多次，&#xA;讓桌面上同時開啟好幾個小畫家程式(行程)，且每一個程式(行程)所載入編輯的圖檔都不一樣，&#xA;彼此之間完全獨立不互相干擾。&#xA;這時桌面上存在的好幾個小畫家的畫面，其實就是一個一個各自獨立的行程實體，&#xA;而這些行程全部都來自於同一個「程式」。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>執行緒同步 2：多工原理</title>
      <link>http://www.huoschen.idv.tw/blog/programming/%E5%9F%B7%E8%A1%8C%E7%B7%92%E5%90%8C%E6%AD%A5-2%E5%A4%9A%E5%B7%A5%E5%8E%9F%E7%90%86/</link>
      <pubDate>Mon, 26 Jan 2026 00:12:16 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/programming/%E5%9F%B7%E8%A1%8C%E7%B7%92%E5%90%8C%E6%AD%A5-2%E5%A4%9A%E5%B7%A5%E5%8E%9F%E7%90%86/</guid>
      <description>&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;本篇要來解釋電腦能夠同時進行許多程式的多工原理，&#xA;這對於我們進一步認識系統機制，以及了解後面介紹的各種執行緒機制相當有幫助！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;現代的我們可以同時執行好幾個程式，一邊聽音樂、一邊上網追劇、一邊和好友網路聊天等等，&#xA;可以同時執行好多個程式。&#xA;就算是我們自己寫的程式，也可以要求啟動好多個執行緒分頭行事。&#xA;然而這種我們現在覺得司空見慣的電腦「多工」能力其實並不是與生俱來的。&#xA;曾經的早期電腦一次只能執行一個工作，放音樂的時候就是單純放音樂，&#xA;要打字寫文章的時候得先把音樂給停了才能做，反正任何工作都只能夠一次一個的進行，&#xA;直到多工機制被發明以前。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;那麼電腦是如何讓多支程式能夠同時執行的呢？&#xA;有些小伙伴也許可能會喊出：&#xA;「我知道！&#xA;那是因為現在的 CPU 有好多個核心的緣故，&#xA;每一個 CPU 核心都可以執行一個程式，好多個核心就可以執行好多個程式了！」&#xA;這麼說好像也沒什麼問題，而且事實上多核心乃至多 CPU 確實可以增進多工的能力，&#xA;然而電腦(&lt;em&gt;或者更確切的說是作業系統&lt;/em&gt;)卻並不是依靠多核心或多 CPU 來實現多工能力的！&#xA;比方說也就大約 20 年前的電腦 CPU 普遍不是多核的，都是單核的，&#xA;但是那時候的電腦仍然能夠同時執行成百上千的程式。&#xA;即便是多核 CPU 已經相當普及的現代，打開你的任務管理器，&#xA;數數看你有幾個 CPU 核心？一般現在通常大約是在 4 個到 32 個之間吧。&#xA;然後再數數看電腦後臺現在有多少支程式正在運作？以一般家用系統來說，掐指一算可能都有上百個後臺程式。&#xA;於是你會發現到一件事，如果多工的功能是依賴多個 CPU 的核心或者多個 CPU 裝置來實現的話，&#xA;那麼這多工的能力是遠遠無法應付這麼數量龐大的程式同時進行的！&#xA;那麼現代的電腦(作業系統)到底是如何實現多工機制的呢？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_分時多工&#34;&gt;分時多工&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/threads/timesharing-1core.png&#34; alt=&#34;timesharing 1core&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 1. 同步處理 3 個工作任務(Task)的執行示意&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;現代大部份的電腦作業系統採用的都是「分時多工」(Time-Sharing)的工作調度模式。&#xA;如上圖(&lt;em&gt;Figure 1&lt;/em&gt;)以同時處理 3 個任務的情形為例，&#xA;每一個顏色磚塊代表一個工作，也就是一個 CPU 指令。&#xA;這裡的「指令」(Instruction)就是 CPU 能看得懂的指令碼，是真正能讓 CPU 知道該去幹什麼事的實際命令，&#xA;也就是我們的程式碼語言在經過編譯之後會變成的一連串二進位指令碼。&#xA;那麼一個工作任務(Task)就是一串指令碼的集合，而這的例子就有 3 個不同的任務要進行。&#xA;那麼我們的作業系統就會把這些指令拆成一段一段的，&#xA;先分出一小段時間去執行其中一個任務的指令&#xA;(&lt;em&gt;這個一小段時間被稱為「時間片」(Timeslice)，通常來說是大約幾個毫秒左右&lt;/em&gt;)，&#xA;然後就暫停這個任務並切換去執行另一個任務一小段時間，&#xA;然後再切換執行另外一個任務，以此類推……。&#xA;就這樣，即便電腦可能只有一個 CPU 核心，也可以像影分身術那樣不斷在多個任務中切換，&#xA;雖然嚴格意義上來說在同一個時間裡 CPU 還是只能做一件事，&#xA;可是因為每一個任務一次執行的時間相當短暫，一般通常大約在數毫秒左有，&#xA;使得我們在感知上覺得好幾個任務是同時在進行的。&#xA;這就是分時多工的基本原理。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;以上是單 CPU 核心，也就是同一個時間裡只有一個人(CPU)能做事情的情況，&#xA;但是若再進一步擴展到多核心乃至多 CPU，其實原理結構也還是一模一樣的，&#xA;只不過這時候在同一個時間裡，就真的是嚴格意義上的可以同時執行兩個任務了。&#xA;如同下圖(&lt;em&gt;Figure 2&lt;/em&gt;)就是同樣 3 個任務只不過改由雙核心 CPU 來處理的情形示意，&#xA;然而再繼續擴展成更多核心數的話也是一樣的，&#xA;總之就還是同樣的多任務輪流切換執行的結構，只不過這次不是一個人(CPU)，&#xA;而是兩個人可以同時分擔消化要執行的任務群。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/threads/timesharing-2cores.png&#34; alt=&#34;timesharing 2cores&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 2. 使用雙核心處理多工任務時，可以真實的在同一個時間裡執行兩個任務(Task)&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_分時多工為什麼不會拖慢任務的執行&#34;&gt;分時多工為什麼不會拖慢任務的執行？&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;解釋完分時多工的原理之後，不知有沒有讀者產生一個疑問：&#xA;「欸，分時執行多個任務好像也不能節省時間啊！&#xA;如果一個任務要一分鐘才能處理完成，三個任務那就要三分鐘。&#xA;雖然採用多工的方式可以同時雨露均沾，但是因為每一個任務變成一段時間才會被照顧一下，&#xA;所以雖然三個任務同時進行，但最後卻每個任務都要三分鐘才能完成，好像更耗時了是不是？」&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;是的沒錯，這個邏輯確實正確，而對於那些計算量滿載的程式來說也確實就是這樣，&#xA;實際上因為任務調度需要切換工作的關係(&lt;em&gt;就是所謂的「上下文切換」(Context Switch)&lt;/em&gt;)，&#xA;總體需要的執行時間還會比一個工作全部一口氣執行完了再換下一個的做法還要更久。&#xA;然而當下流行的這種多工手段之所以在實際應用上可以同時處理多個程式任務還不多消耗時間，&#xA;根本的奇妙原因其實是因為大部份的程式的絕大部份時間裡都在閒著等待！&#xA;什麼意思呢？&#xA;比方以你的程式裡面要讀取檔案內容來說，讀取檔案這件事對 CPU 來說是屬於相當曠日費時的事情，&#xA;當下達了讀取的命令之後要等到實際將資料送回來都是猴年馬月之後的事了(&lt;em&gt;以 CPU 視角來看&lt;/em&gt;)，&#xA;而這段時間 CPU 就只能空等著。&#xA;類似這樣的程式操作還有很多，比如網路收送資料、等待週邊設備收送訊息等等，&#xA;甚至對於大部份的圖形介面(GUI)程式來說，&#xA;程式的執行週期裡其實花最多的時間是在等待你按下按鈕等操作輸入，而真正幹實事的時間比例實際上相當低。&#xA;因此我們實際每天使用的大部份程式的任務工作裡其實包含了大量的等待，&#xA;而在分時多工的任務調派結構下，作業系統就會在一個任務進入等待的時候立刻切換去執行別的任務。&#xA;這就是為什麼我們可以同時開啟多個程式，甚至如果打開任務管理器的話可能還能見到上百個程式在背景默默的執行著，&#xA;卻讓我們並不覺得程式會卡住變慢的原因了！&#xA;(&lt;em&gt;不過你不要問我 Windows，我也不知道為什麼 Windows 有些時候放著啥事不幹也會卡頓，那是微軟的問題！&lt;/em&gt;)&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;然而以上是對於大部份的日常程式而言，但若對於那些計算集中類型的程式，&#xA;比方跑模擬計算、影片與特效渲染、壓縮與解壓縮等等的這些程式來說，那麼情況就不一樣了！&#xA;對於這種任務裡多是密集的計算工作的，而非日常程式含有大量等待的程式，&#xA;它們確實就會發生向前面所提問的問題一樣的情況。&#xA;當這種計算密集的任務數量小於等於 CPU 核心數量的時候，執行基本不受影響，&#xA;因為多個 CPU 核心真實的可以同時執行這些任務；&#xA;然而當計算密集的任務數量大於 CPU 核心數量的時候，延遲與卡頓情況就出現了。&#xA;這時多工系統雖然也能看起來同時執行這些任務，但是總共需要完成的時間就更久了，&#xA;甚至於會排擠到其它處理視窗、鍵盤等等這類工作的任務，&#xA;從而導致使用者能夠體感到電腦的操作反應變得遲緩。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_多工的背後&#34;&gt;多工的背後&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;感覺上好像多工處理原理就是這麼的簡單，不過就是這邊做一做就放著，然後再到那邊做一做，&#xA;就是把工作切成一小段一小段然後輪流執行。&#xA;原理就是這樣簡單是沒錯的，然而實際上的多工排程其實是相當複雜的。&#xA;怎麼說呢？&#xA;假設我們的電腦同時有 100 條任務要進行好了，那麼每個任務應該要平均分配時間嗎？&#xA;或者換個話說，每個任務是地位相等的嗎？&#xA;有沒有一些任務可能比其它任務更加重要，使得我們希望作業系統儘量在比例上多分配一些時間片給它們？&#xA;又或者有沒有哪一些任務可能相當具有即時性，使我們並不樂見它們在某些事情發生的時候還要排隊排好久才輪到執行？&#xA;我們是否希望某些高時效性的任務能在需要的時候可以插隊搶佔？&#xA;然而這樣又會產生出更多問題來，比方說如果我的電腦執行了不少被設為高重要性、高時效性的任務，&#xA;那麼有沒有可能作業系統和 CPU 光處理那些任務就忙死了，完全沒空處理等級較低的任務？&#xA;有些任務可能重要性真的很低，例如即時通訊軟體接收好友傳來的訊息，&#xA;但是你覺得在你跑一些影片渲染、計算模型等工作的時候，朋友正在瘋狂敲你的訊息完全收不到是可以接受的嗎？&#xA;意思就是在滿是高優先級任務滿載的情況之下，&#xA;是否其它那些即便是最不重要的任務，任務排程也應該偶爾照顧到它？&#xA;或者是也許用戶覺得高優先級的任務最重要，讓低優先級的餓死也沒關係(&lt;em&gt;作者我還真處理過這樣設計的系統&lt;/em&gt;)？&#xA;或甚至於，作業系統分配的時間片(Timeslice)應該是等長的嗎？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;提出以上這些問題並不是真的要我們去做解答，因為實際上這些問題的解答都是好幾本論文的份量了！&#xA;將這些問題提問出來，只是想讓我們知道原來在簡單原理的背後還有這麼多的門道。&#xA;而在作業系統內去完成這些任務分配與調度的工作，就叫作任務「排程」(Scheduling)。&#xA;排程的各種算法和取捨也是一個相當有挑戰性的工作，&#xA;事實上對於那些世界上頂尖的超級電腦，往往開發設計團隊還會針對它們的需求去調整優化自己的任務排程器的設計；&#xA;好在對於我們站在應用程式的視角來說，不需要去實際處理這些問題，&#xA;只需要知道原來我們的執行緒(&lt;em&gt;就是本文裡的任務(Task)&lt;/em&gt;)在作業系統背後經歷了這些事情，&#xA;然後知道我們的執行緒無論如何會在合理的時間裡被作業系統喚醒執行就可以了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;最後再來補充一些關於時間片與任務切換的時機。&#xA;原則上作業系統排程器會在適當的時候給予任務一段執行工作的時間，也就是前面解釋過的時間片，&#xA;正常來說當這個時間終止以後，排程器就會把任務暫停，然後切換去執行其它的任務。&#xA;然而其實在許多實際的情況下這個時間片可能是用不完的，也就是時間片的時間還沒到，任務就會被切走了。&#xA;什麼時候會發生這種事呢？&#xA;除了可能被那些重要性比你更高的任務插隊，或者被硬體或軟體的「中斷」(Interrupt)機制打斷之外，&#xA;其實很多時候是任務自己主動放棄的！&#xA;比方說當我們的程式讀取檔案內容的時候、呼叫網路收送的時候、呼叫系統安排調度資源的時候等等，&#xA;那些操作的後面就是要進入等待，等到該等的東西來了以後才能夠繼續往下執行。&#xA;因此這時候即便時間片的時間還沒有用完，我們的任務也會立刻被作業系統給岔出去&#xA;(&lt;em&gt;然後直到等到了我們的程式需要的東西之前都不會回來了&lt;/em&gt;)。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_總結&#34;&gt;總結&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;本篇解釋了現代分時多工的原理，了解了電腦系統如何讓我們的電腦可以同步執行成千上萬個程式與執行緒的方式，&#xA;其實就是在各個工作之間不斷來回切換，這邊做一小段再去那邊做一小段。&#xA;並且本篇也在解釋敘述的過程中介紹了許多與執行緒和排程相關的專有名詞，&#xA;了解這些名詞與意義將有助於在讀者自行搜索相關資料的時候更容易理解。&#xA;本篇的原理解釋也是本系列文章裡相當重要的一部份，將是系列後續其它文章的背景知識基礎。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>執行緒同步 1：簡介</title>
      <link>http://www.huoschen.idv.tw/blog/programming/%E5%9F%B7%E8%A1%8C%E7%B7%92%E5%90%8C%E6%AD%A5-1%E7%B0%A1%E4%BB%8B/</link>
      <pubDate>Sat, 24 Jan 2026 01:24:08 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/programming/%E5%9F%B7%E8%A1%8C%E7%B7%92%E5%90%8C%E6%AD%A5-1%E7%B0%A1%E4%BB%8B/</guid>
      <description>&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這個系列要來介紹各種執行緒同步的方法工具，包含各種的鎖等等。&#xA;而本篇首先讓我們先來初步認識什麼是執行緒，並簡單的嘗試自己建立執行緒的方法。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;雖然說本篇主打的是一個新手教學，但也並不是針對完完全全的新手。&#xA;這裡期望的讀者可以不知道或沒有接觸過執行緒，可以是執行緒的新手，但是不能夠是程式設計的新手！&#xA;本系列將假定讀者對於一般通俗的 C/C++ 程式設計已經擁有一定程度的熟練掌握，&#xA;並且在此基礎之上針對執行緒的知識進行介紹與講解。&#xA;所以如果甚至還沒學會基本的程式設計的話，那麼閱讀本系列將可能會有些吃力！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_什麼時候需要多執行緒&#34;&gt;什麼時候需要多執行緒？&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;什麼是執行緒？一個執行緒其實就是一個程式的執行流程。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;我們一般入門程式設計時的書籍和課程都不會觸及到執行緒這個東西&#xA;(&lt;em&gt;畢竟先把程式基礎的邏輯和用法學起來就已經份量相當足夠了&lt;/em&gt;)，&#xA;也可以說我們一般入門學的程式都是只有單一執行緒的結構，&#xA;也就是只有程式一執行起來時系統就給了的那一個執行緒而已。&#xA;單一執行緒就是我們的程式只有一個執行流程，依照程式碼的順序從頭執行到尾，&#xA;也許中間有些跳轉情況如分歧、迴圈、函式呼叫等，但終究還是只有一個執行流。&#xA;那麼什麼是多執行緒呢？多執行緒就是程式中存在多個同時、平行、同步在進行的執行流程。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;舉個例子，用我們生活中一般使用電腦的經驗來類比的話，&#xA;那麼當我們開啟網路瀏覽器在上網看網頁的同時，後面又有一個音樂播放器正在播放音樂，&#xA;旁邊還有一個網路聊天程式隨時會顯示好友傳送的訊息。&#xA;那麼這時我們其實就是在進行所謂的多工作業，&#xA;三隻程式個別都有(至少)一個程式執行流正在進行，並且是同時都在進行的，&#xA;才讓我們可以在看網頁的同時一邊和朋友聊天、聽音樂。&#xA;這其實就是一種多緒(執行緒)的應用場景；&#xA;或者也可以這麼說，雖然我們自己也許可能從來沒有認知到這件事，&#xA;但是只要我們有使用電腦同時執行多個程式的經驗的話，那麼我們其實都已經使用過多執行緒技術了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;回到我們自己寫的程式碼這裡，&#xA;只有一個執行流的程式往往使我們不得不停下來等待某些需要耗時的工作完成。&#xA;例如若我做一個在按下按鈕時會從 A 處複製一大堆檔案到 B 處的程式，&#xA;那麼當按鈕按下去的時候程式就會卡住在那裡……，&#xA;好吧其實它很認真的在工作，正在努力的不斷複製檔案，&#xA;但是整個程式的操作介面就這麼卡住了，直到工作完成前顯然沒辦法再響應其它的按鍵、滑鼠等操作。&#xA;然後使用者可能就會因為覺得程式當掉了而直接把程式終止！&#xA;這時我們就可以將程式改為建立一個單獨的執行流，即一個新的執行緒，然後在那個執行緒裡面去處理檔案複製的工作。&#xA;而本來的執行緒就可以繼續進行其它工作，&#xA;例如繼續響應使用者的操作、三不五時檢查另一個執行緒的工作狀態並顯示完成進度等等。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;依此類推，我們還可以建立多條執行緒去分別處理各種比較耗時的工作，&#xA;讓它們可以同時同步進行，而不需要一個等一個，&#xA;而這就是學習並建立執行緒的一種常見用途。&#xA;此外還有更多其它用途，&#xA;例如將一個相當複雜又耗時的運算分割成幾個部份，然後分派給幾個執行緒同步進行計算。&#xA;這就是所謂的「平行處理」，充份利用多個 CPU 核心的性能來分攤計算量，縮短總體的計算時間。&#xA;(&lt;em&gt;其實使用顯示卡 GPU 或近年流行起來的 NPU 來進行運算都是相似的平行運算原理。&lt;/em&gt;)&#xA;總之，學習並善用多緒的能力可以給我們的程式帶來更多的設計彈性和性能提升空間。&#xA;當然，多緒也會給我們帶來更多憶想不到的複雜性增加，以及各種問題和挑戰，&#xA;而這也是為什麼光一個執行緒同步的主題可以變成一個文章系列的原因！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_範例&#34;&gt;範例&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;假設我們有一個函式在執行的時候需要花費許多時間&#xA;(&lt;em&gt;在更真實的應用中有時候除非你叫它停，否則它永遠不會停&lt;/em&gt;)，&#xA;那麼我們可能就會想要把這樣的函式放在一個獨立的執行緒裡面去執行，&#xA;讓我們原本的程式碼可以繼續去做其它的事情，不用等待函式結束。&#xA;那麼這裡作為範例，就假設有一個像下面這樣的函式：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;static int global_variable_0 = 0;&#xA;static int global_variable_1 = 0;&#xA;static int global_variable_2 = 0;&#xA;static int global_variable_3 = 0;&#xA;&#xA;static&#xA;int ThrdFunc3(void *arg)&#xA;{&#xA;    for(int i = 0; i &amp;lt; 7; ++i)&#xA;    {&#xA;        global_variable_3++;&#xA;        printf(&amp;#34;In function 3: variables = %d, %d, %d, %d\n&amp;#34;,&#xA;            global_variable_0, global_variable_1, global_variable_2, global_variable_3);&#xA;        SleepMs(700);&#xA;    }&#xA;&#xA;    return 0;&#xA;}&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這個函式看上去就是一個普通的 C 函式，它可以接收一個 &lt;code&gt;void*&lt;/code&gt; 型態的參數，&#xA;並且會返回 &lt;code&gt;int&lt;/code&gt; 型態的回傳值。&#xA;正常來說所有進出函式的資料都應該透過那個 &lt;code&gt;arg&lt;/code&gt; 參數給傳遞進去，使用全域變數是個壞習慣，&#xA;但在這個範例裡面主要是為了能夠更加直觀的表達不同執行緒可以存取共同記憶體空間的緣故，&#xA;因此還是使用了全域變數的寫法；&#xA;但是這是相當特殊情況的寫法，請小白們不要亂學，平常還是不要隨便寫全域變數的好！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;對於這樣一個函式，一般來說如果我們要去呼叫它的話，會像下面這樣寫：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;int res = ThrdFunc3(NULL);&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_啟動執行緒&#34;&gt;啟動執行緒&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;就像前面說的，上面那函式的執行會花上不少時間，而我們呼叫的地方又不希望卡住停在那裡等它。&#xA;那麼這裡我們就來建立另外一條執行緒，然後把這個函式放在那個獨立的執行緒裡與我們平行執行，&#xA;做法如下：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;thrd_t thr; // Handler of the new created thread&#xA;int err = thrd_create(&amp;amp;thr, ThrdFunc3, NULL);&#xA;assert( err == 0 );&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這裡呼叫了 &lt;code&gt;thrd_create()&lt;/code&gt; 函式，並讓 &lt;code&gt;thrd_create()&lt;/code&gt; 代替我們去呼叫 &lt;code&gt;ThrdFunc3()&lt;/code&gt; 函式。&#xA;為什麼要這樣間接呼叫呢？&#xA;因為 &lt;code&gt;thrd_create()&lt;/code&gt; 會建立一條新的執行緒，然後用那條新的執行緒去執行 &lt;code&gt;ThrdFunc3()&lt;/code&gt;。&#xA;因此這個 &lt;code&gt;thrd_create()&lt;/code&gt; 完成它的任務之後就會直接返回了，&#xA;而它返回的時候那個 &lt;code&gt;ThrdFunc3()&lt;/code&gt; 函式可能還正在努力的執行中呢！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;但是這裡還有一個問題，前面我們的 &lt;code&gt;ThrdFunc3()&lt;/code&gt; 不是需要傳入一個參數嗎？那現在這個參數要怎麼傳給它呢？&#xA;雖然我們現在的這個範例並沒有實際使用到這個參數，&#xA;但是在實際用途中總不能夠沒辦法傳遞參數給我們要間接執行的那個函式吧？&#xA;其實 &lt;code&gt;thrd_create()&lt;/code&gt; 的第三個參數就是為此而設計的。&#xA;我們能將任何能轉型成 &lt;code&gt;void*&lt;/code&gt; 型態的參數填入 &lt;code&gt;thrd_create()&lt;/code&gt; 的第三個參數，&#xA;然後 &lt;code&gt;thrd_create()&lt;/code&gt; 就會幫我們轉交給我們要它代為執行的那個 &lt;code&gt;ThrdFunc3()&lt;/code&gt;。&#xA;完整的 &lt;code&gt;thrd_create()&lt;/code&gt; 函式介面如下：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;typedef int(*thrd_start_t)(void *arg);&#xA;&#xA;int thrd_create(thrd_t *thr, thrd_start_t func, void *arg);&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;其中有兩點事情需要注意：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;olist arabic&#34;&gt;&#xA;&lt;ol class=&#34;arabic&#34;&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;func()&lt;/code&gt; 在執行緒被建立之後可能很快就會被執行，&#xA;甚至可能在 &lt;code&gt;thrd_create()&lt;/code&gt; 返回之前就已經開始執行了。&#xA;因此所有新的執行緒函式需要取用到的相關資源都需要在呼叫 &lt;code&gt;thrd_create()&lt;/code&gt; 就已處於可用狀態。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;func()&lt;/code&gt; 也有可能在 &lt;code&gt;thrd_create()&lt;/code&gt; 返回之前就已經執行結束了。&#xA;比方說傳入的函式內容相當短小精練以至於一下子就執行結束了，&#xA;或者是系統自己卡了一下等等，都是可能造成這個現象的原因。&#xA;無論如何，使用者都需要意識到這個現象的可能存在，&#xA;除非設計有彼此互相確保協同的機制，否則寫作的程式不應假定 &lt;code&gt;func()&lt;/code&gt; 必定還在執行中狀態而還未結束。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;terminate-thread&#34;&gt;關閉執行緒&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;也許你注意到了，呼叫了 &lt;code&gt;thrd_create()&lt;/code&gt; 之後它會給我們一個 &lt;code&gt;thrd_t&lt;/code&gt; 型態的物件，這東西也是有作用的。&#xA;它就是一個指向新建立的執行緒的操作器(handler)，我們可以使用它來對那條執行緒進行許多操作，&#xA;比方比較執行緒、調整執行緒屬性、暫停與恢復執行緒等等(&lt;em&gt;不過 C11 的 API 好像沒有覆蓋這麼多功能&lt;/em&gt;)；&#xA;然而其中有一項功能是我們最常使用且必須使用的，那就是&lt;strong&gt;關閉執行緒操作器&lt;/strong&gt;！&#xA;就如同開了檔案後要記得關檔，或者分配了記憶體後要記得釋放一樣，&#xA;啟動執行緒並得到操作器之後也要記得關閉它，否則也同樣可能會產生資源洩漏的情況。&#xA;不過這裡要注意一個區別，&#xA;&lt;strong&gt;所謂關閉操作器僅僅只是關閉掉那個 &lt;code&gt;thrd_t&lt;/code&gt; 物件而已，它本身並不會結束執行緒&lt;/strong&gt;，&#xA;而執行緒本身的結束與否在於我們丟給執行緒的那個函式什麼時候自己返回退出。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;要關閉執行緒操作器，可以選擇呼叫下面兩個函式的其中一個：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;int thrd_join(thrd_t thr, int *res);&#xA;int thrd_detach(thrd_t thr);&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;上面兩個函式都能關閉執行緒操作器，區別在於 &lt;code&gt;thrd_detach()&lt;/code&gt; 只是單純的關閉而已，&#xA;關了之後就不管了，那個執行緒可能仍在執行中，或者早就已經結束掉，都無所謂，&lt;code&gt;thrd_detach()&lt;/code&gt; 都會直接返回。&#xA;而 &lt;code&gt;thrd_join()&lt;/code&gt; 不一樣，它會等待直到那條執行緒結束之後才會返回；&#xA;當然如果那條執行緒早就已經結束了的話那就會直接返回。&#xA;此外還有一個差別，因為 &lt;code&gt;thrd_join()&lt;/code&gt; 會等待執行緒結束，因此可以順便轉交給你你的執行緒函式的返回值，&#xA;那個 &lt;code&gt;res&lt;/code&gt; 參數就是用來接收返回值的；&#xA;而 &lt;code&gt;thrd_detach()&lt;/code&gt; 因為返回的時候執行緒可能都還沒結束，自然就無法回給你這東西了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;因為這兩個函式只負責關閉執行緒操作器而已，而與該執行緒本身的運作無關，&#xA;因此在你呼叫這兩函式之前，執行緒有可能早就已經自己結束了千八百年了，&#xA;比方你經過很久才呼叫關閉操作器，或者你的執行緒函式本身就短小精幹等。&#xA;這一點在設計的時候也需要注意，以免得發生一不小心去存取了早就在你的執行緒函式裡面銷毀了的資源！&#xA;也因為同樣的關係，如果你的設計上並不需要留著操作器進行一些進階的操作的話，&#xA;甚至也可以在剛呼叫了 &lt;code&gt;thrd_create()&lt;/code&gt; 建立完執行緒之後，立刻就呼叫 &lt;code&gt;thrd_detach()&lt;/code&gt; 關閉操作器，&#xA;然後就繼續做你的事情，就放著新的執行緒在背後該幹什麼就幹什麼。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;admonitionblock note&#34;&gt;&#xA;&lt;table&gt;&#xA;&lt;tbody&gt;&lt;tr&gt;&#xA;&lt;td class=&#34;icon&#34;&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Note&lt;/div&gt;&#xA;&lt;/td&gt;&#xA;&lt;td class=&#34;content&#34;&gt;&#xA;在我寫作執行緒同步系列文章搜尋資料的時候才發現，&#xA;有些妖術會教你用 cancel thread 之類的 API 去停止執行緒，這是不對的，請不要學！&#xA;那些 API 確實可以把執行緒停下來，但那其實是非正常強制終止執行緒的手段。&#xA;若總是使用它來讓你的執行緒停下來，那就好像是每次都使用系統的行程管理器去強制殺停你的程式一樣，&#xA;能用是能用，但是不正規，不是正常關閉，有時候會產生一些後遺症。&#xA;同樣的，當你把強制停止執行緒的方法當作正常停止的方法來使用，&#xA;那麼程式因此發生什麼奇奇怪怪的異常問題也都是很正常的事情了！&#xA;正規的途徑還是要使用旗標狀態檢查等手段，讓執行緒函式自己正常自然的退出並結束。&#xA;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;/tbody&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_範例_2&#34;&gt;範例&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;解釋完如何建立和關閉執行緒之後，這裡提供&lt;a href=&#34;http://www.huoschen.idv.tw/blog/files/threads/thread_creation.c&#34;&gt;一個範例&lt;/a&gt;。&#xA;這個範例內手動建立了 3 個執行緒，加上一個程式本來就有的執行緒，總共執行緒有 4 個。&#xA;每一個執行緒都執行了一段與上面展示的 &lt;code&gt;ThrdFunc3()&lt;/code&gt; 一樣的程式碼，&#xA;只不過各自的顯示訊息、迴圈等待的時長、和覆寫的變數等等稍有差異。&#xA;這個範例執行後的結果輸出如下：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;In function 1: variables = 0, 1, 0, 0&#xA;In function main: variables = 1, 1, 0, 0&#xA;In function 3: variables = 1, 1, 0, 1&#xA;In function 2: variables = 1, 1, 1, 1&#xA;In function 1: variables = 1, 2, 1, 1&#xA;In function 2: variables = 1, 2, 2, 1&#xA;In function 1: variables = 1, 3, 2, 1&#xA;In function 3: variables = 1, 3, 2, 2&#xA;In function 1: variables = 1, 4, 2, 2&#xA;In function main: variables = 2, 4, 2, 2&#xA;In function 2: variables = 2, 4, 3, 2&#xA;In function 1: variables = 2, 5, 3, 2&#xA;In function 3: variables = 2, 5, 3, 3&#xA;In function 2: variables = 2, 5, 4, 3&#xA;In function 1: variables = 2, 6, 4, 3&#xA;In function 1: variables = 2, 7, 4, 3&#xA;In function main: variables = 3, 7, 4, 3&#xA;In function 2: variables = 3, 7, 5, 3&#xA;In function 3: variables = 3, 7, 5, 4&#xA;In function 1: variables = 3, 8, 5, 4&#xA;In function 1: variables = 3, 9, 5, 4&#xA;In function 2: variables = 3, 9, 6, 4&#xA;In function 1: variables = 3, 10, 6, 4&#xA;In function 3: variables = 3, 10, 6, 5&#xA;In function main: variables = 4, 10, 6, 5&#xA;In function 2: variables = 4, 10, 7, 5&#xA;In function 1: variables = 4, 11, 7, 5&#xA;In function 1: variables = 4, 12, 7, 5&#xA;In function 3: variables = 4, 12, 7, 6&#xA;In function 2: variables = 4, 12, 8, 6&#xA;In function 1: variables = 4, 13, 8, 6&#xA;In function 1: variables = 4, 14, 8, 6&#xA;In function main: variables = 5, 14, 8, 6&#xA;In function 2: variables = 5, 14, 9, 6&#xA;In function 3: variables = 5, 14, 9, 7&#xA;In function 1: variables = 5, 15, 9, 7&#xA;In function 2: variables = 5, 15, 10, 7&#xA;In function 1: variables = 5, 16, 10, 7&#xA;In function 1: variables = 5, 17, 10, 7&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;從交叉輸出的訊息，我們能夠確定四個函式(&lt;em&gt;三個建立的執行緒加主程式原有的一個&lt;/em&gt;)確實是同時在進行的。&#xA;而從它們輸出的變數狀態都不斷在變化的情況，也能確認在不同的執行緒之間確實能夠共享程式資源&#xA;(&lt;em&gt;在這個範例裡展現的就是可以共同存取程式內的變數&lt;/em&gt;)。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_關於系列文章的規劃藍圖&#34;&gt;關於系列文章的規劃藍圖&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;文章至此，讀者應該已經俱備了能夠創建多執行緒的基本能力，可以開始實現多緒的程式設計了。&#xA;不過執行緒的各種眉角和陷阱還可多著，否則又怎麼會讓人人都說多緒編程難呢！&#xA;其實有經驗的讀者可能已經發現了，本篇的範例相當雞賊的繞過了多緒競爭的問題，&#xA;畢竟只是一個剛開始的範例，還沒必要搞到那麼複雜；&#xA;至於其中更多的問題與對策，就留待後續的文章慢慢介紹了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;然而與執行緒有關的議題實在太多太大，作者我的個人能力實在沒能夠全盤交代清楚，&#xA;因此本系列文章的絕大部份內容將專注於執行緒同步方面的問題，介紹與解釋各種對策方案及其原理。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;最後則是交代一下關於執行緒 API 的選用部份。&#xA;關於執行緒，各作業系統都有自己的執行緒相關 API。&#xA;例如以建立新執行緒來說，&#xA;就有 POSIX 相容系統(&lt;em&gt;如 BSD、Linux、和 UNIX 等&lt;/em&gt;)的 &lt;code&gt;pthread_create()&lt;/code&gt;、&#xA;和 Windows API 的 &lt;code&gt;CreateThread()&lt;/code&gt; 等，&#xA;以及 2011 年以後的 C++11 的 &lt;code&gt;std::thread&lt;/code&gt;、和 C11 的 &lt;code&gt;thrd_create()&lt;/code&gt;，&#xA;此外可能還有更多比較小眾的 API 與函式庫等等。&#xA;執行緒的 API 與函式庫有好多種不同的介面與實現，&#xA;每一種方案各有些細節和特性上的不同，實在很難每一個都清楚解釋；&#xA;然而它們雖然各自不同，在用法結構上卻大同小異。&#xA;因此本系列文章將避免過於深入各種實現細節，而只針對原理和框架等層面去做說明解釋，&#xA;畢竟大部份情況下我們缺少的更可能是對整體、原理、特性、和適合用途的通盤理解，&#xA;至於操作細節只要去查閱各 API 的相關說明文件就能知道了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;不過文章的說明解釋是一回事，但程式碼範例總是要能夠編譯執行的。&#xA;這程式碼的部份，可能會相當多的採用 C++ 寫作，&#xA;畢竟 C++ 的封裝用起來還是比純 C 更加方便簡潔；&#xA;然而在所需要解說的執行緒相關操作上則會使用 C 語法與呼叫，&#xA;因為 C 語言雖然可能瑣碎點但更加簡單直觀，更適合作為學習範例使用。&#xA;因此在執行緒的 API 選用部份，我會以 C11 標準的執行緒程式庫為主，&#xA;當遇到標準 C11 覆蓋不夠全面的相關功能時則會使用 pthread 程式庫，&#xA;至於當遇到前兩者都不俱備的功能時才會使用更加冷門少見的 API；&#xA;至於那些與主要訴求無關的其它程式碼，則可能會相當的採用 C++ 語法與工具。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>螺旋槳 11：戰鬥機為什麼堅持單發動機？</title>
      <link>http://www.huoschen.idv.tw/blog/aerospace/%E8%9E%BA%E6%97%8B%E6%A7%B3-11---%E6%88%B0%E9%AC%A5%E6%A9%9F%E7%82%BA%E4%BB%80%E9%BA%BC%E5%A0%85%E6%8C%81%E5%96%AE%E7%99%BC%E5%8B%95%E6%A9%9F/</link>
      <pubDate>Mon, 12 Jan 2026 00:22:56 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/aerospace/%E8%9E%BA%E6%97%8B%E6%A7%B3-11---%E6%88%B0%E9%AC%A5%E6%A9%9F%E7%82%BA%E4%BB%80%E9%BA%BC%E5%A0%85%E6%8C%81%E5%96%AE%E7%99%BC%E5%8B%95%E6%A9%9F/</guid>
      <description>&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;不知道有沒有人好奇這麼一個問題：&#xA;在螺旋槳大行其道的時代，那些戰鬥機為什麼(幾乎)都只使用一副螺旋槳？&#xA;不同於現代的噴射戰鬥機，有些採用單發動機，有些採用雙發動機，甚至還有三發動機的；&#xA;然而我們所熟悉的那些舊時代裡的螺旋槳戰鬥機，卻總是堅持單發動機和單螺旋槳的配置，這是為什麼呢？&#xA;本篇就要來解答這樣的問題！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;對於幾乎任何實用的飛機而言，總是能在方方面面找到它對動力渴求的願望。&#xA;推力更大的動力系統往往表示能夠給飛機帶來更大的極速、更高的升限，&#xA;或者能夠載起更多更重的貨物，或者能夠帶來更好的加速性能，&#xA;而這些需求對於戰鬥機來說更是尤為重要，更強勁的推進裝置總是戰鬥機強悍機動性能的中央支柱。&#xA;當然動力裝置本身也同樣在發展推進，可是往往動力的提升速度趕不上飛機的需求，這該怎麼辦呢？&#xA;對於這個問題，一般來說解決的思路那是相當簡單又直接：&#xA;「一個不夠，我就上倆」；倆還不夠，那就繼續加到三、四。&#xA;于是乎那些中、大型的飛機往往就承載了複數的發動機，甚至有些型號裝到了八臺、十臺之譜，&#xA;但是怎麼到了戰鬥機就不能這麼做了呢？&#xA;其實說戰鬥機有一些籠統了，因為現代噴氣戰鬥機採用雙發動機的也已經滿坑滿谷了，甚至現在還有三發動機的型號問世，&#xA;所以真正奇異的現象其實只出現在以螺旋槳為動力的戰鬥機身上！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;回顧在那螺旋槳仍然主宰著航空界的一戰、二戰時期，各式有名的或無名的戰鬥機基本都只有一副螺旋槳，&#xA;人們也總是在一臺發動機上面死磕，嘗試各種努力去壓榨單臺發動機的最大功率，&#xA;但是怎麼就好像沒有人想到可以裝上兩具發動機來簡單的大幅提升動力呢？&#xA;其實採用雙發動機的嘗試也並不是沒有出現過，&#xA;比如赫赫有名的 P-38 閃電戰鬥機就是採用雙發動機、雙螺旋槳的戰鬥機，&#xA;至少在太平洋戰爭初期也是少數能和零式戰鬥機扳手腕的對手。&#xA;雖然確實存在，然而現實上採用雙發動機的螺旋槳戰鬥機是真的罕見，且大多數這樣的嘗試得到的結果是一架纏鬥性能羸弱的飛機。&#xA;也因此在一般相關的介紹裡面通常都簡單的以「雙發戰鬥機之機動性能不佳，無法與單發戰鬥機對抗」簡單帶過，&#xA;但對於雙發戰鬥機為什麼導致性能不佳的原因則大多未做深入解釋。&#xA;於是本篇就來解釋一番為什麼雙發動機導致性能劣化的原因，同時也來看看人們在這個問題上摸索嘗試的努力巧思。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_雙發動機的性能優劣&#34;&gt;雙發動機的性能優劣&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;其實「性能」一詞涵蓋的範圍那是相當廣泛，採用雙發動機的方案在某些方面其實會比單發動機更具優勢，&#xA;這也是為什麼雖然戰鬥機是單發動機的主流市場，但總是會有人想要動腦筋造雙發戰鬥機的主要原因。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;那麼相比於單發動機，採用雙發動機存在哪些優勢呢？&#xA;採用雙發動機能得到雙倍的推力，理論上有機會得到更大的極速&#xA;(&lt;em&gt;然而雙發佈局往往機體更龐大、阻力更大，實際上速度不一定更快，只能說具有這方面的潛力&lt;/em&gt;)；&#xA;或者即便在極速上未必具有優勢，但憑著更大的推力也能得到更強勁的加速性能，這些在戰鬥用途上都是優勢。&#xA;推力更大，也就能夠承載更多的武器和各種設備，攻擊威力更大，長距離導航能力更佳；&#xA;更大的酬載力也使得能夠帶上更大量的燃油，使能得到更遠得多的航程，&#xA;而這也是二戰時期那些試圖研發雙發戰鬥機的國家往往都是需要長程護航轟炸機的進攻方的原因！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;以上是雙發動機的優勢，那麼劣勢在哪裡呢？雙發動機的劣勢在於發動機的重量。&#xA;不過這麼說也不精準，因為兩倍的發動機重量在得到的雙倍推力之下反而是個相當不錯的投資回報。&#xA;因此更準確的來說其實是因為發動機的重量所導致的轉動慣量大幅增加，以致於削弱了轉向方面的性能，&#xA;也就是改變飛機姿態的反應速度。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-11/fig1-1-four-forces.jpg&#34; alt=&#34;fig1 1 four forces&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 1. 作用在飛機上的基礎四個力 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_1&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-11/fig1-2-axes.webp&#34; alt=&#34;fig1 2 axes&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 2. 飛機旋轉三軸：左為俯仰(Pitch)，中為滾轉(Roll)，右為偏航(Yaw) &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_how-aircraft-turns&#34;&gt;[&lt;a id=&#34;_footnoteref_2&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_2&#34; title=&#34;View footnote.&#34;&gt;2&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在三維空間運動的飛機同樣存在三個軸向的移動和旋轉，&#xA;比如航空基礎知識裡面的飛機四大力所描述的就是兩個方向的力消長關係，&#xA;如(巡航平飛狀態下的)推力和阻力描述的就是飛機前進方向上的力平衡關係，&#xA;而升力和重力描述的就是飛機垂直向的力平衡關係(如圖 &lt;em&gt;Figure 1&lt;/em&gt;)。&#xA;(&lt;em&gt;至於最後一個軸向的作用力即飛機側向的受力和平移，因為通常情況下其佔比相當低，&lt;/em&gt;&#xA;&lt;em&gt;一般用偏航姿態調控的手段就把它處理掉了，以致於不會出現在通俗的討論中。&lt;/em&gt;)&#xA;除平移方向之外，飛機在三個軸向的旋轉則對應飛機的三個軸向姿態控制，&#xA;即偏航、俯仰、和滾轉(如圖 &lt;em&gt;Figure 2&lt;/em&gt;)。&#xA;在上述的兩軸平移和三軸旋轉中，有賴大推力的優勢，雙發動機的配置在平移方向上的性能表現總是優於單發動機，&#xA;而因為轉動慣量增加所導致的劣勢主要是存在於軸向旋轉即姿態控制的表現上，&#xA;下面我們會一個一個來做圖解。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_飛機三軸姿態&#34;&gt;飛機三軸姿態&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;發動機的重量對飛機來說佔比相當大，特別是在小飛機上更是具有舉足輕重的地位，&#xA;其中發動機距離轉軸(&lt;em&gt;也就是飛機的重心位置&lt;/em&gt;)距離愈遠會導致繞軸旋轉的慣性愈大，&#xA;發動機愈靠近軸心(&lt;em&gt;重心&lt;/em&gt;)的話則飛機在這個軸向上的旋轉慣係愈小，轉向就會更容易且迅速。&#xA;雖然螺旋槳和發動機的配置有各種變化&#xA;&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_propeller-layouts&#34;&gt;[&lt;a id=&#34;_footnoteref_3&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_3&#34; title=&#34;View footnote.&#34;&gt;3&lt;/a&gt;]&lt;/sup&gt;，&#xA;但我們先不要一次弄的那麼複雜，&#xA;下面我們先就最常見的單槳前拉，和翼掛雙槳佈局來作對比，&#xA;在最常見流行的配置下比較單雙槳的性能表現。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-11/fig2-1-comparison-yaw.png&#34; alt=&#34;fig2 1 comparison yaw&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 3. 單、雙發戰鬥機轉動慣量對比之：偏航 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-bf109&#34;&gt;[&lt;a id=&#34;_footnoteref_4&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_4&#34; title=&#34;View footnote.&#34;&gt;4&lt;/a&gt;]&lt;/sup&gt; &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-bf110&#34;&gt;[&lt;a id=&#34;_footnoteref_5&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_5&#34; title=&#34;View footnote.&#34;&gt;5&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;飛機在如上圖(&lt;em&gt;Figure 3&lt;/em&gt;)所示的姿態旋轉被稱為「偏航」(Yaw)。&#xA;在這個方面，單發動機配置的發動機距離飛機重心的位置明顯比雙發動機配置的情況更短得多，&#xA;因此在偏航操作上，單發動機的操作響應速度更快，而雙發動機的反應速度則佔劣。&#xA;不過因為偏航在飛機的各種機動動作中往往只佔輔助和微調的角色，而非主導性的地位，&#xA;因此雖然雙發動機配置確實在這上面吃點虧，但實際影響並不大。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-11/fig2-2-comparison-pitch.png&#34; alt=&#34;fig2 2 comparison pitch&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 4. 單、雙發戰鬥機轉動慣量對比之：俯仰 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_4&#34; title=&#34;View footnote.&#34;&gt;4&lt;/a&gt;]&lt;/sup&gt; &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_5&#34; title=&#34;View footnote.&#34;&gt;5&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;如上圖(&lt;em&gt;Figure 4&lt;/em&gt;)所示的姿態旋轉則被稱為「俯仰」(Pitch)。&#xA;兩種發動機配置在這方面不分軒輊，也就是說單、雙發動機的配置對俯仰操作的響應速度並沒有明顯的差距。&#xA;因此兩者在爬升和下降等機動動作上並沒有操作反應上的差距，&#xA;甚至於因為推力更大的關係，雙發動機戰鬥機反而在爬升性能更加佔據優勢&#xA;(&lt;em&gt;至於俯衝是否仍具優勢則還要看機體的阻力表現&lt;/em&gt;)。&#xA;而在(同一個方向的)水平迴旋上的性能表現，兩種配置的反應也同樣不分軒輊，&#xA;甚至同樣因為動力更加強勁的原因，雙發戰鬥機更加具有優勢(或潛力)。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-11/fig2-3-comparison-roll.png&#34; alt=&#34;fig2 3 comparison roll&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 5. 單、雙發戰鬥機轉動慣量對比之：滾轉 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_4&#34; title=&#34;View footnote.&#34;&gt;4&lt;/a&gt;]&lt;/sup&gt; &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_5&#34; title=&#34;View footnote.&#34;&gt;5&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;如上圖(&lt;em&gt;Figure 5&lt;/em&gt;)所示的姿態旋轉稱為「滾轉」(Roll)。&#xA;可明顯看出兩種發動機配置在這方面的表現差異相當巨大，其兩者之差距更甚於在偏航上的表現。&#xA;然而雪上加霜的是，與偏航在機動動作之中的輔助地位不同，滾轉對於機動性能具有關鍵的影響力。&#xA;而現實上同樣如此，滾轉性能其實才是雙發戰鬥機的最大劣勢之所在。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;更進一步說明滾轉如何影響戰鬥機的機動性能？&#xA;如果是對於航空沒有基礎知識和經驗的新手經常會直覺的覺得飛機是靠「偏航」來轉彎，&#xA;然而實際上飛機的迴轉卻是滾轉加上俯仰同時協同操作所帶來的結果(如圖 &lt;em&gt;Figure 6&lt;/em&gt; 和 &lt;em&gt;Figure 7&lt;/em&gt; 所示)。&#xA;為什麼是這樣呢？&#xA;可能與一般常聽聞的理由並不相同，「乘員舒適性感受」僅佔了最不重要的因素。&#xA;畢竟在生死戰場上，為了壓榨出飛機的極限性能，往往更傾向於讓飛行員去承受各種「不舒服」的體感。&#xA;其實飛機通常都採用滾轉加俯仰來實現轉彎的原因只有一個：&#xA;極限的轉彎需要強大的向心力作為支持，而飛機上的&lt;strong&gt;大翼就是唯一一組可以提供最大作用力的翼面&lt;/strong&gt;；&#xA;因此&lt;strong&gt;原理在於使用大翼的升力來作為轉向所需之向心力的提供者，&lt;/strong&gt;&#xA;&lt;strong&gt;而滾轉操作的角色也僅僅只是改變大翼升力的方向使其能作用於轉向所需的方向。&lt;/strong&gt;&#xA;當然也不是說不能採用一般人直覺的偏航手段來轉向，只不過實際使用方向舵偏航來轉彎的話會發現一件事，&#xA;感受舒服不舒服倒在其次，主要是轉彎率可能會相當之低！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-11/fig2-5-aircraft-make-turns.jpg&#34; alt=&#34;fig2 5 aircraft make turns&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 6. 飛機的轉向其實是滾轉加俯仰的協同操作 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_6&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_6&#34; title=&#34;View footnote.&#34;&gt;6&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-11/fig2-6-aircraft-normal-turn-forces.webp&#34; alt=&#34;fig2 6 aircraft normal turn forces&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 7. 飛機使用滾轉的方式，將主翼所產生的升力分出一部份來作為轉向所需的向心力使用 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_2&#34; title=&#34;View footnote.&#34;&gt;2&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;上面說明了飛機迴轉的原理，但只是這樣的說明可能還是難以明白的解釋為什麼雙發戰鬥機會在迴轉操作上吃虧的原因；&#xA;甚至於從前面解釋的整個原理來看，雙發戰鬥機憑著俯仰操作的平起平坐再加上動力上的優勢，&#xA;不是理論上應該轉彎更加能轉贏單發戰鬥機嘛？那麼問題出在哪裡呢？&#xA;問題的核心就在「反應速度」這方面上！&#xA;我們現在知道飛機的迴轉是滾轉與俯仰共同操作的結果，&#xA;那麼在像是正在向左急轉狀態的戰鬥機突然要切換成向右急轉的時候，雙發動機滾轉速率低的劣勢即在此展露無遺，&#xA;其滾轉速率慢的特性將導致轉向反應遲緩。&#xA;並且在空中纏鬥的情況下，誰也說不準下一秒另外一架飛機想要做個什麼姿態？&#xA;在這組合無限且千變萬化的空戰戰場上，雙方時刻都處在姿態快速變化的情境，&#xA;除了比拼飛機的硬性能之外也同樣比較讓對方措手不及的反應速度，&#xA;因此才讓雙發戰鬥機滾轉反應慢的這特點拖了個大後腿！&#xA;即便在只朝一個方向轉彎的表現上雙發動機不見得會輸，但敗就敗在了不斷左騰右挪上竄下跳的反應速度上，&#xA;總結一句話就是雙發戰鬥機不如單發戰鬥機「靈巧」。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;整理前面的所有內容，可以得到這麼樣一個結論：&#xA;雙發動機在各方各面對於單發動機都有碾壓性的優勢，部份稍嫌劣勢的地方大多無足輕重，&#xA;惟獨僅僅只在滾轉這個項目上吃虧而已；&#xA;然而卻如此不巧，滾轉對於戰鬥的機動性能影響力佔據了核心的關鍵地位，&#xA;使得雖然雙發動機只輸了這一項，卻就是因為這個項目導致全盤輸掉空中戰鬥的優勢！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_雙發戰鬥機案例分析&#34;&gt;雙發戰鬥機案例分析&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;前面解釋了為什麼雙發戰鬥機在機動性能上不如單發戰鬥機靈巧的原因，&#xA;而那就是為什麼螺旋槳時代的戰鬥機總是堅持使用單一發動機，並且總是想盡辦法圍繞著一臺發動機壓榨動力的原因。&#xA;甚至於到了二戰後期，明明後推式螺旋槳存在這樣又那樣的問題&#xA;&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_propeller-push-or-pull&#34;&gt;[&lt;a id=&#34;_footnoteref_7&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_7&#34; title=&#34;View footnote.&#34;&gt;7&lt;/a&gt;]&lt;/sup&gt;，&#xA;但還是不乏有人在那上面去做嘗試，&#xA;其實那說白了也就是在單一發動機的功率潛力已經逐漸枯竭&#xA;&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_piston-engine-power-maximum&#34;&gt;[&lt;a id=&#34;_footnoteref_8&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_8&#34; title=&#34;View footnote.&#34;&gt;8&lt;/a&gt;]&lt;/sup&gt; 的情況下，&#xA;改從動力佈局的方式來榨出性能提升空間的嘗試。&#xA;甚至於還有人從函道螺旋槳的方向來試圖提升推進的效率&#xA;&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_stipa-caproni&#34;&gt;[&lt;a id=&#34;_footnoteref_9&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_9&#34; title=&#34;View footnote.&#34;&gt;9&lt;/a&gt;]&lt;/sup&gt;，&#xA;雖然最後的結果失敗了，但這些種種的嘗試其實都在訴說著，&#xA;人們圍繞著功率已經逐漸達到天花板的單一發動機上面死磕的現象。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-11/fig3-1-j7w1.jpg&#34; alt=&#34;fig3 1 j7w1&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 8. 採用後推式佈局的震電戰鬥機 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_10&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_10&#34; title=&#34;View footnote.&#34;&gt;10&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-11/fig3-2-xp55.jpg&#34; alt=&#34;fig3 2 xp55&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 9. 採用後推式佈局的 XP-55 戰鬥機 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_11&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_11&#34; title=&#34;View footnote.&#34;&gt;11&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-11/fig3-3-stipa-caproni.jpg&#34; alt=&#34;fig3 3 stipa caproni&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 10. 採用函道螺旋槳的義大利 Stipa-Caproni &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_caproni&#34;&gt;[&lt;a id=&#34;_footnoteref_12&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_12&#34; title=&#34;View footnote.&#34;&gt;12&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在堅持單一發動機而不斷絞盡腦汁的情況下，當然就不乏在任何時候都會有人不死心想給戰鬥機安上兩臺發動機的想法，&#xA;那麼下面就讓我們來回顧這些歷史上曾經出現過的雙發戰鬥機。&#xA;只不過就如同前面所說，大部份雙發戰鬥機都會面臨程度不等的敏捷性降低的結果，&#xA;因此如何儘可能的減少敏捷性的劣化就成了雙發戰鬥機設計上的重中之重。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_bf_110&#34;&gt;Bf 110&lt;/h3&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-11/fig3-4-bf110.jpg&#34; alt=&#34;fig3 4 bf110&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 11. 採用雙發動機翼掛佈局的 Bf 110 戰鬥機 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_5&#34; title=&#34;View footnote.&#34;&gt;5&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-11/fig3-5-bf110-group.jpg&#34; alt=&#34;fig3 5 bf110 group&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 12. 採用雙發動機翼掛佈局的 Bf 110 戰鬥機 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_5&#34; title=&#34;View footnote.&#34;&gt;5&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;想到雙發戰鬥機，最簡單的作法就是比照通常雙發動機飛機的佈置，將兩個發動機和螺旋槳掛機翼上。&#xA;這種設計方案曾經出現在不只一款飛機上，但本文只以 Bf 110 作為代表性案例。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;作為所有雙發戰鬥機裡面最不經「巧思」的配置，Bf 110 的空戰機動性能相當令人捉急，&#xA;在空戰中但凡遭遇任何當年比較正經的單發戰鬥機對手那都相當吃虧。&#xA;在真實的歷史上，Bf 110 雙發動機的設計使它具有足夠的航程能夠跟隨轟炸機一起跨越英吉利海峽，&#xA;然而在面對英國戰鬥機的時候卻沒能發揮多少護航的作用，甚至經常淪為需要被護航的對象！&#xA;不過這裡並無意抓著 Bf 110 的弱點大肆批鬥，其更大的意義是作為一個最典型佈局的比較對照組。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_p_38&#34;&gt;P-38&lt;/h3&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-11/fig3-6-p38.jpg&#34; alt=&#34;fig3 6 p38&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 13. 同樣採用左右雙發動機，但嘗試使用更緊湊堅固框架式結構的 P-38 戰鬥機 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-p38&#34;&gt;[&lt;a id=&#34;_footnoteref_13&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_13&#34; title=&#34;View footnote.&#34;&gt;13&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;有鑑於板板正正的雙發動機佈局帶來的機動性能劣化問題，P-38 閃電式戰鬥機嘗試了另一種解題方案，&#xA;造成了相當具有辨識性的獨特外觀。&#xA;閃電戰鬥機捨棄了常見的單一機身，將左右兩具發動機分別安裝在兩側的兩個相較更纖細的機身上，&#xA;以主機翼和水平尾翼一前一後相互連結，成為一個大的矩型框架，然後將其餘的人員與武器等塞入小得多的中央吊艙；&#xA;或者也可以理解為將機身縮小至只剩中間那一小塊，至於兩側則是延伸的尾桁結構，意思是一樣的！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;作為一個雙發戰鬥機，P-38 的航程和動力肯定是相當具有優勢的，其飛行極速在同時期的戰鬥機裡面也屬於佼佼者。&#xA;甚至其因為武器系統都置於機身中央的緣故，&#xA;還少掉了當時主流戰鬥機機槍安裝於兩側機翼上時會產生的火力匯聚與分散問題，&#xA;不過這與本篇專注的動力系統無關，就不多進行深入探討。&#xA;關注其空戰機動性的部份，整體機體構成的大矩型結構給予它相當大的結構強固性，&#xA;除了更能夠扛傷害之外，也更承受得起更激烈的姿態操控力道，&#xA;因此 P-38 的機動性放在雙發戰鬥機的範圍裡面那可算是相當靈活的。&#xA;但是那畢竟是放在同為雙發的範圍內，而當與主流的單發戰鬥機作對手時，&#xA;P-38 依然顯得敏捷性不足，空戰機動能力對上大部份當時的單發戰鬥機仍是處於弱勢下風。&#xA;在歷史上，雖然 P-38 纏鬥靈敏性不及對手，但是憑藉著雙發動機帶來的大馬力和飛行速度，&#xA;依靠俯衝、爬升等基於垂直面的運動戰鬥，在以中低空作戰為主的太平洋戰場上取得相當不錯的成績。&#xA;然而在另一邊高空作戰為主的歐洲戰場，垂直機動作戰一般較難施展&#xA;(&lt;em&gt;畢竟已經飛很高了，還要再飛更高來俯衝就更不容易&lt;/em&gt;)，&#xA;加上對手的單發戰鬥機馬力和速度本就不俗，因此成績並不理想，很快就退出了空戰第一線。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_do_335&#34;&gt;Do 335&lt;/h3&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-11/fig3-7-do335-side.jpg&#34; alt=&#34;fig3 7 do335 side&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 14. 將兩具發動機佈置在機身前後，採用一前一後兩副螺旋槳共同作為動力的 Do 335 戰鬥機 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-do335&#34;&gt;[&lt;a id=&#34;_footnoteref_14&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_14&#34; title=&#34;View footnote.&#34;&gt;14&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-11/fig3-8-do335-front-top.jpg&#34; alt=&#34;fig3 8 do335 front top&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 15. 從前方角度觀看 Do 335 戰鬥機 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_14&#34; title=&#34;View footnote.&#34;&gt;14&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在雙發戰鬥機的構思上，Do 335 箭式戰鬥機應該算得上是螺旋槳時代的登峰造極之作了！&#xA;將兩具發動機同螺旋槳分別佈置在機頭和機尾，形成前拉加後推的雙螺旋槳佈局，&#xA;兩具發動機一前一後全都位在機體中軸線之上，使得滾轉方面的轉動慣量堪比單發動機的戰鬥機。&#xA;這種佈置在得到雙發動機的大推力、高速、與航程等優勢之外，還保留了對戰鬥機來說極度重要的滾轉速率。&#xA;雖然在俯仰方向的轉動慣量增加而導致俯仰反應速度會有所遲緩，&#xA;然而因為其重要性佔比與滾轉相比低得多的緣故，對空戰機動性能的劣化程度表現確實存在但並不顯著；&#xA;至於偏航方向的轉動慣量造成的偏航速率些微下降，也是確實存在但更加不影響總體性能了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這種螺旋槳佈置方式使得 Do 335 在空戰機動性能上能夠具有與主流單發戰鬥機互搏一番的實力，&#xA;俯仰速率稍有遲緩但還處在能被其它優勢追平的範圍內，而滾轉速率則是與單發戰鬥機不相上下。&#xA;並且在此前提下，Do 335 同時還具有雙發戰鬥機才有的馬力和速度優勢，&#xA;使得綜合空戰能力足以壓倒同時代大部份單發戰鬥機，實為一種相當優秀傑出的重型戰鬥機設計。&#xA;只不過可惜了 Do 335 出現的時候已經是二戰晚期的 1944 年，&#xA;加上產量極為稀少，並沒能留下能讓軍武愛好者傳誦的功勳事蹟；&#xA;再往後就成了噴射戰鬥機馳騁天空的舞臺，也沒有人再有餘裕去搗鼓螺旋槳戰鬥機了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;不過既然方案這麼簡單(&lt;em&gt;至少看似如此&lt;/em&gt;)，僅僅只是把螺旋槳一前一後擺放而已就能夠兩邊好處都佔，&#xA;那為什麼這種設計直到二次大戰晚期才出現呢？&#xA;這主要因為兩個原因所導致。&#xA;其中第一項原因就是沒人想到並著手實現。&#xA;可別太感到意外，歷史上已經有太多這種被推出之後突然技驚四座讓人拍案，&#xA;但公開亮像之後卻同時讓眾人感到扼腕，喊叫著「原來還能這樣搞，我咋沒早點想到」的東西了！&#xA;比方迴紋針、比方拉瓦爾噴管，都是技術上並無太多實現難度，原理說出來了大家也都早已理解，&#xA;但在第一個人用出來之前就是沒人想到的東西。&#xA;因此在 Do 335 之前沒有人想到(&lt;em&gt;或者想到但不敢去實現也歸在內&lt;/em&gt;)能夠這樣建造雙發戰鬥機，&#xA;實在也是很合理會發生的事情。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;第二項原因就是實際的技術困難了，&#xA;可能也是也許有些歷史裡的人物可能天馬行空時想到過但卻沒有實際去付諸實行的阻礙。&#xA;有關於後置螺旋槳的各種缺點與困難在從前的文章已經分析過 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_7&#34; title=&#34;View footnote.&#34;&gt;7&lt;/a&gt;]&lt;/sup&gt;，&#xA;因此要打造前後推拉式動力系統的飛機同樣也會遇上那些困難，&#xA;何況一前一後兩個發動機與螺旋槳的系統，除了本身因為零件數量翻倍而造成的複雜度之外，&#xA;還會因為其之互相干擾影響而把整體效應弄得更加複雜。&#xA;可能也就是因為如此，才讓直到 Do 335 之前的許多戰鬥機設計者，&#xA;最後仍採用保守傳統的左右對稱翼掛發動機佈局的原因吧！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_夜間戰鬥機&#34;&gt;夜間戰鬥機&lt;/h3&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-11/fig3-9-p61.jpg&#34; alt=&#34;fig3 9 p61&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 16. 專為夜戰打造的 P-61 黑寡婦戰鬥機，採用與 P-38 相似的雙發動機佈局，搭載了先進的雷達系統 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-p61&#34;&gt;[&lt;a id=&#34;_footnoteref_15&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_15&#34; title=&#34;View footnote.&#34;&gt;15&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-11/fig3-10-bf110g.jpg&#34; alt=&#34;fig3 10 bf110g&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 17. 將原本機動性能令人捉急的戰鬥機加裝雷達系統後搖身一變成為 Bf 110G 夜間戰鬥機，機頭碩大的雷達天線明顯可見 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_5&#34; title=&#34;View footnote.&#34;&gt;5&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;二戰時期還有一些雙發戰鬥機比較與眾不同，它們就是夜間戰鬥機。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;雖然這些歷史上的夜間戰鬥機全部採用的都是最傳統的兩側翼掛螺旋槳，但是它們一個個卻都戰績亮眼，&#xA;這是為什麼呢？為什麼它們明明應該要機動性能潺弱的動力佈局卻能得此佳績呢？&#xA;原來是到了夜晚的時候，基本上已經幾乎無法依靠目視的方式進行空戰了，&#xA;甚至連戰鬥機對戰鬥機的空中格鬥都基本無法進行，&#xA;而大多數的夜戰型態都是用來攔截追擊敵方的轟炸機等大型飛機。&#xA;因此戰機的機動敏捷性並不重要，甚至於是無所謂。&#xA;因為夜間攔截戰鬥更加依靠的是機載雷達等電子設備，&#xA;而當時的這些雷達設備也只有雙發動機以上的飛機才有能力承載得起。&#xA;於是這些夜間戰鬥機雖然看起來笨拙遲鈍(&lt;em&gt;實際上也真是如此&lt;/em&gt;)，卻能夠在黑暗的夜晚取得成績，&#xA;而敵人那更加敏捷的戰鬥機卻拿它沒好辦法！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;除了像 P-61 黑寡婦這種從設計之初就是夜間戰鬥機的情況之外，&#xA;也有不少夜間戰鬥機是由其他的雙發飛機改裝而來。&#xA;例如前面才被我們嫌棄的 Bf 110，&#xA;後來就被加裝雷達(&lt;em&gt;從 Figure 17 中可以明顯看見在機頭處突出的雷達天線&lt;/em&gt;)而成夜間戰鬥機，&#xA;取得的戰果不知輝煌與否，卻肯定比先前作為普通戰鬥機使用時更好用多了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;不過復盤過來其實也不難發現，&#xA;這種專職的夜間戰鬥機之所以能夠如此綻放風采，也是因為正巧遇上了時代的機遇，&#xA;而在那個時代之後、或之前，都再沒有它獨領風騷的舞臺。&#xA;在時代之前，那是因為雷達科技還不夠發展水準或甚至根本沒有，因此不可能造出這種專司夜戰的戰鬥機。&#xA;而在時代之後，包含雷達在內的各種電子系統其體積重量不斷縮小且愈趨發展成熟，&#xA;連普通的戰鬥機都可以隨機搭載配備；&#xA;當阿貓阿狗大家都有的時候，單獨設置的夜間戰鬥機就失去了它的最大優勢所在，&#xA;甚至於讓戰鬥機的可用工作環境已經不滿足於應付夜晚，而逐漸發展成所謂「全天候戰鬥機」。&#xA;因此就是在那個剛剛好的時代，雷達設備已經具有一定水準，卻還不足以讓普通飛機大量裝配攜帶，&#xA;使得原本笨拙的夜間戰鬥機可以利用其承載力強的優勢搭載裝配雷達設備，&#xA;形成一種你看不見我但我卻看得見你的單方面優勢！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_一些其它的構想&#34;&gt;一些其它的構想&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;最後讓我們來看一看設計師 Kelly Johnson 當初在設計 P-38 之前的一些構思草圖，&#xA;揣測回顧他當時的一些想法和顧慮，藉此再進一步了解各種雙發戰鬥機方案的優劣取捨。&#xA;當然其它的飛機設計者肯定也會有各種想法顧慮與斟酌存在，&#xA;只不過當前還能夠容易找到相關記錄與說明的只有 P-38 而已，&#xA;因此才讓我在這裡只拿 P-38 的設計來說事。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-11/fig3-11-p38-ideas-draw.webp&#34; alt=&#34;fig3 11 p38 ideas draw&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 18. P-38 在設計當時曾經構思考慮過的數種動力佈局方案草稿 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_p38-sketches&#34;&gt;[&lt;a id=&#34;_footnoteref_16&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_16&#34; title=&#34;View footnote.&#34;&gt;16&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-11/fig3-12-p38-ideas-render.jpg&#34; alt=&#34;fig3 12 p38 ideas render&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 19. 使用了更加漂亮的方式繪製的 P-38 動力佈局草案 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_16&#34; title=&#34;View footnote.&#34;&gt;16&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;上圖(&lt;em&gt;Figure 18&lt;/em&gt; 和 &lt;em&gt;Figure 19&lt;/em&gt;)列出了 6 種飛機構型的概念草圖。&#xA;其中的 1 號就是最主流的雙發動機設計方案，以當時來說是技術最成熟，經驗與資料最豐富，&#xA;不過缺點也是相當明顯，在前面都已經深入探討過，&#xA;因此最後的 P-38 並沒有採用 1 號方案。&#xA;4 號方案則是最終 P-38 所決定採用的方案，好壞優劣在前面也都探討過，就不再多做說明。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;2 號與 3 號方案其實是一樣的，只不過一個螺旋槳後推而一個前拉而已。&#xA;但是注意它與 1 號大不相同，可以明顯看到螺旋槳軸的部份相當纖細，根本不可能是放得下發動機的空間。&#xA;事實上這兩個方案的發動機是安裝在中央機體內一前一後的，&#xA;然後透過幾組延長軸與齒輪的連接，將動力傳導至兩側螺旋槳。&#xA;這個方案其實相當聰明，既得到了翼掛螺旋槳的便利，又因為發動機安置在中央機身而沒有滾轉率衰退的缺點，&#xA;只不過因為透過多個延長軸等機械結構傳遞動力的不可靠性與故障可能的問題，而最終並沒有採用這個構想。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;6 號方案則是前拉加後推的動力佈置，與前面介紹過的 Do 335 基本屬於同一種款式。&#xA;除了兩側延伸結構與尾翼等可能會導致(相較於 Do 335 那樣的構型)多餘的阻力之外，&#xA;其對戰鬥機的性能來說應該是最為理想的方案。&#xA;而很可能當時也是考量到和前面探討 Do 335 動力佈局複雜性一樣的問題，&#xA;再加上創新構想缺乏足夠的經驗積累，以及研發時程不夠充裕的壓力的緣故，&#xA;因此讓 P-38 最後沒有採用此種方案。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;5 號方案則相當特別，相當不對稱，&#xA;它看起來就是將兩個正常的單發戰鬥機給一左一右拼起來而成的合體戰鬥機。&#xA;雖然最終並沒有被 P-38 採用，然而這個方案卻曾經被歷史上的其它設計給採用過，&#xA;例如實驗性質的 XP-82 雙野馬(&lt;em&gt;Figure 20&lt;/em&gt;)。&#xA;既然反正 P-38 最後也沒有使用這種方案，咋也不確定人當時怎麼想的，&#xA;那就來看看採用這方案的 XP-82 的想法吧！&#xA;XP-82 雙野馬在設計概念上就是把經典的兩個 P-51 野馬給左右拼起來。&#xA;這種真雙胴(&lt;em&gt;雖然 P-38 一直都被稱為雙胴戰鬥機，但是放在 XP-82 旁邊的話就只能算是假雙胴了！&lt;/em&gt;)&#xA;戰機甚至有兩個對稱的駕駛艙室和兩個飛行員，可以互相分擔雙發戰鬥機超長航程的體力和精神負荷，&#xA;同時也是對於不對稱駕駛位能否正常操作戰機的試驗。&#xA;然而從結論來看，除了試驗飛行之外，XP-82 從未實際正式列裝過部隊，&#xA;似乎也就說明了這個方案經不起實用性的考驗，最終還是被淘汰！&#xA;只不過這種獨特設計的曾經存在也確實帶給航空愛好著驚奇與討論的話題。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-11/fig3-13-xp82.jpg&#34; alt=&#34;fig3 13 xp82&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 20. 看似將兩臺經典的 P-51 野馬式戰鬥機左右拼裝起來而成的 XP-82 雙野馬戰鬥機 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-xp82&#34;&gt;[&lt;a id=&#34;_footnoteref_17&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_17&#34; title=&#34;View footnote.&#34;&gt;17&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_總結&#34;&gt;總結&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;本篇探討了螺旋槳戰鬥機採用雙發動機所帶來的好處與壞處。&#xA;雙發方案可以增加動力的供應，使得在加速性與極速方面俱備優勢，&#xA;也由於更高的酬載力而能得到更遠的航程和更強大的武器威力；&#xA;然而因為轉動慣量大的問題導致姿態操作的反應能力不佳，空戰所需的機動性能大不足，&#xA;使得作為戰鬥機使用時往往趨於弱勢下風。&#xA;而這也解釋了為什麼明明雙發動機可以解決許多問題，&#xA;然而歷史上的眾多戰鬥機卻往往堅持在單發動機方案上面死磕到底的原因！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;此外本篇也介紹了歷史上曾經出現過的數種雙發戰鬥機的方案，回顧當時人們的顧慮與巧思。&#xA;然而說到底，雙發動機之所以會導致這樣那樣的嚴重問題，根本原因還是因為螺旋槳的盤面尺寸太大所導致。&#xA;至於到了現代的噴氣式戰鬥機，因為發動機直徑相比螺旋槳盤面大幅縮小的緣故，&#xA;就不再那麼糾結單發或雙發方案了，甚至最新的戰鬥機款式還能有三發動機的呢！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;footnotes&#34;&gt;&#xA;&lt;hr/&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_1&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_1&#34;&gt;1&lt;/a&gt;. &lt;a href=&#34;https://www1.grc.nasa.gov/beginners-guide-to-aeronautics/four-forces-on-an-airplane/&#34;&gt;Four Forces on an Airplane&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_2&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_2&#34;&gt;2&lt;/a&gt;. &lt;a href=&#34;https://www.aviationhunt.com/how-an-aircraft-turns/&#34;&gt;How an Aircraft Turns in the Air (Learn Aerodynamics)&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_3&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_3&#34;&gt;3&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E8%9E%BA%E6%97%8B%E6%A7%B3-10---%E8%9E%BA%E6%97%8B%E6%A7%B3%E4%BD%88%E5%B1%80/&#34;&gt;螺旋槳 10：螺旋槳佈局&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_4&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_4&#34;&gt;4&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Messerschmitt_Bf_109&#34;&gt;Messerschmitt Bf 109&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_5&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_5&#34;&gt;5&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Messerschmitt_Bf_110&#34;&gt;Messerschmitt Bf 110&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_6&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_6&#34;&gt;6&lt;/a&gt;. &lt;a href=&#34;https://www1.grc.nasa.gov/beginners-guide-to-aeronautics/aircraft-motion-turns/&#34;&gt;Turns&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_7&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_7&#34;&gt;7&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E8%9E%BA%E6%97%8B%E6%A7%B3-5---%E5%89%8D%E6%8B%89%E6%88%96%E5%BE%8C%E6%8E%A8/&#34;&gt;螺旋槳 5：前拉或後推&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_8&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_8&#34;&gt;8&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-10---%E5%8A%9F%E7%8E%87%E5%B7%94%E5%B3%B0/&#34;&gt;活塞引擎 10：功率巔峰&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_9&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_9&#34;&gt;9&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E8%9E%BA%E6%97%8B%E6%A7%B3-4---%E5%A5%87%E5%A6%99%E5%95%8F%E9%A1%8C%E7%9A%84%E5%90%84%E7%A8%AE%E5%B0%8D%E7%AD%96/#stipa-caproni&#34;&gt;涵道螺旋槳案例：Stipa-Caproni&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_10&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_10&#34;&gt;10&lt;/a&gt;. &lt;a href=&#34;https://japan.stripes.com/travel/article12864966.ece&#34;&gt;See Godzilla Fighter J7W1 Shinden at Tachiarai Peace Memorial Museum in Fukuoka&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_11&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_11&#34;&gt;11&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Curtiss-Wright_XP-55_Ascender&#34;&gt;Curtiss-Wright XP-55 Ascender&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_12&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_12&#34;&gt;12&lt;/a&gt;. &lt;a href=&#34;https://it.wikipedia.org/wiki/Stipa-Caproni&#34;&gt;Stipa-Caproni&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_13&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_13&#34;&gt;13&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Lockheed_P-38_Lightning&#34;&gt;Lockheed P-38 Lightning&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_14&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_14&#34;&gt;14&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Dornier_Do_335&#34;&gt;Dornier Do 335&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_15&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_15&#34;&gt;15&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Northrop_P-61_Black_Widow&#34;&gt;Northrop P-61 Black Widow&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_16&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_16&#34;&gt;16&lt;/a&gt;. &lt;a href=&#34;https://www.zhihu.com/question/59050358&#34;&gt;P38闪电属于什么布局，这种布局有什么优缺点？&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_17&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_17&#34;&gt;17&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/North_American_F-82_Twin_Mustang&#34;&gt;North American F-82 Twin Mustang&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>螺旋槳 10：螺旋槳佈局</title>
      <link>http://www.huoschen.idv.tw/blog/aerospace/%E8%9E%BA%E6%97%8B%E6%A7%B3-10---%E8%9E%BA%E6%97%8B%E6%A7%B3%E4%BD%88%E5%B1%80/</link>
      <pubDate>Sat, 06 Dec 2025 16:54:13 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/aerospace/%E8%9E%BA%E6%97%8B%E6%A7%B3-10---%E8%9E%BA%E6%97%8B%E6%A7%B3%E4%BD%88%E5%B1%80/</guid>
      <description>&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在有了螺旋槳之後，該以什麼樣的方式將螺旋槳放在飛機上呢？&#xA;其實在前篇 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_propeller5&#34;&gt;[&lt;a id=&#34;_footnoteref_1&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&#xA;已經探討過其中的一部份了，&#xA;而本篇將要來看看更多關於螺旋槳飛機的動力佈局設計。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_單槳前拉佈局&#34;&gt;單槳前拉佈局&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;使用單一螺旋槳的前拉式佈局大概是我們最常見的螺旋槳佈局之一，其大量被應用在各式小型飛機上面。&#xA;有關前拉式螺旋槳的好壞優劣在前篇都已經仔細的分析過了 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;，&#xA;總結而言前拉式螺旋槳特別適合使用在小型飛機上，&#xA;其與傳統的尾翼式機翼佈局相當天然搭配，穩定性設計上的困難較少也較容易，&#xA;低速下的操控性較佳，並其相較於與它相對的另一種佈局(後推佈局)來說少了許多的問題與難處。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-10/fig1-1-p40m.jpg&#34; alt=&#34;fig1 1 p40m&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 1. 採用單槳前拉螺旋槳佈局的 P-40 戰鬥機 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-p40&#34;&gt;[&lt;a id=&#34;_footnoteref_2&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_2&#34; title=&#34;View footnote.&#34;&gt;2&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-10/fig1-2-fw190.jpg&#34; alt=&#34;fig1 2 fw190&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 2. 採用單槳前拉螺旋槳佈局的 Fw-190 戰鬥機 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-fw190&#34;&gt;[&lt;a id=&#34;_footnoteref_3&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_3&#34; title=&#34;View footnote.&#34;&gt;3&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-10/fig1-3-cessna172.jpg&#34; alt=&#34;fig1 3 cessna172&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 3. 採用單槳前拉螺旋槳佈局的 Cessna 172 民用小飛機 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_4&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_4&#34; title=&#34;View footnote.&#34;&gt;4&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_單槳後推佈局&#34;&gt;單槳後推佈局&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;後推螺旋槳佈局也曾經在前篇分析過 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;，也是部份小型飛機可能會採用的推力佈局。&#xA;總結而言後推螺旋槳的推進效率高，&#xA;連帶使得在最高航速、航程、和經濟性等方面的表現都優於它的對照組(前拉佈局)。&#xA;而其缺點為低速操控性較差，並且在設計與使用上的各種大小問題與難處比較多，&#xA;比如說需要更長的起降跑道，螺旋槳更容易觸地，不能採用後三點式起落架，也往往需要更長些的起落架，&#xA;因為會使飛機重心靠後而一般較難適配傳統尾翼佈局，以及在跳傘的用途上較具危險性等等。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;雖然因為這樣那樣的問題比較多而使得一直以來只有少數飛機會嘗試使用後推佈局，&#xA;然而在近年這種佈局卻被大量應用在無人飛機上，大量曝光於大眾面前。&#xA;究其原因為目前無人飛機大多不需要多強悍的低速操控性能或戰鬥機動性能，反而它的高經濟性能夠帶來更多的好處，&#xA;並且無人飛機一般體型比通常的飛機小，使得與起落架相關的問題較不明顯，&#xA;因此造就了曾經較為冷門的後推式佈局卻在今日大量出現在無人飛機身上的結果。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-10/fig2-1-velocity-xl.jpg&#34; alt=&#34;fig2 1 velocity xl&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 4. 使用單槳後推螺旋槳佈局的 Velocity XL 民用小飛機，比起傳統佈局的小飛機其經濟性和航程稍具優勢 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_5&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_5&#34; title=&#34;View footnote.&#34;&gt;5&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-10/fig2-2-beech-starship.jpg&#34; alt=&#34;fig2 2 beech starship&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 5. 另一款採用雙發後推佈局的 Beechcraft Model 2000 Starship 商務飛機。雖然也能將它歸類為翼掛佈局，但其整體配置和表現更加接近於所謂的純後推佈局 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_6&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_6&#34; title=&#34;View footnote.&#34;&gt;6&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-10/fig2-3-j7w1.jpg&#34; alt=&#34;fig2 3 j7w1&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 6. 二戰末期開發的 J7W1 震電戰鬥機，採用後推螺旋槳搭配鴨翼的佈局，令它的極速能達到 750 km/h，比採用傳統佈局的其它對手高出一截 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_7&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_7&#34; title=&#34;View footnote.&#34;&gt;7&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-10/fig2-4-mq9.jpg&#34; alt=&#34;fig2 4 mq9&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 7. 當代無人飛機最大的需求就是穩穩的飛行，因此讓這方面表現優異的後推式佈局突然成為主流。圖中為 MQ-9 死神無人機 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_8&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_8&#34; title=&#34;View footnote.&#34;&gt;8&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_翼掛佈局&#34;&gt;翼掛佈局&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;把螺旋槳(連同發動機)掛在機翼上也是相當常見的一種配置。&#xA;當飛機的動力需求上升，一臺發動機、一副螺旋槳無力負擔的時候，自然就要增加螺旋槳與發動機的數量，&#xA;此時顯然機頭是堆不下了，於是就自然而然再正常不過的就往機翼上面放了。&#xA;另一方面，螺旋槳與渦輪噴氣發動機不同，螺旋槳具有非常巨大的盤面，&#xA;因此另一原因也是除了主翼之外，在佈置上其實也沒有太多可以選擇的其它地方能安放螺旋槳。&#xA;這就是為什麼幾乎所有使用複數螺旋槳的飛機大多都採用翼掛佈局的原因。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-10/fig3-1-a10.jpg&#34; alt=&#34;fig3 1 a10&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 8. 正在翻滾的 A-10 攻擊機，可見其滿滿的炸彈等武器全被佈置懸掛在主翼下 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_9&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_9&#34; title=&#34;View footnote.&#34;&gt;9&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;除了缺乏其它可供螺旋槳容身的選擇之外，翼掛螺旋槳佈局本身也是具有些好處的。&#xA;機翼的位置一般恰好都在整機的重心所在處(&lt;em&gt;或者其實應該說主機翼都會設計安放在重心位置上&lt;/em&gt;)，&#xA;因此許多重型酬載一般也都喜歡安置在機翼位置處。比如能夠掛載大量武器的著名攻擊機 A-10 (&lt;em&gt;Figure 8&lt;/em&gt;)。&#xA;因為掛架剛好就在重心上，因此裝上炸彈、丟下炸彈、或者更換不同大小重量的炸彈，基本不影響飛機的平衡性；&#xA;同理也是為什麼大部份飛機都喜歡把油箱塞在機翼裡面的主因之一。&#xA;將炸彈或油箱換成發動機其實優點相同，在這種配置下無論想安裝多少發動機都行(&lt;em&gt;當然是在結構撐得住的前提下&lt;/em&gt;)，&#xA;想更換大的或小的發動機都沒什麼困難，對於整機的平衡性影響干涉少，設計佈置的使用彈性很大。&#xA;再加上佈置在機翼上的發動機自身的重量，可以很大程度的抵消整片機翼產生的升力在翼根處所造成的彎矩&#xA;(&lt;em&gt;或者從另一個方向來理解，那就是將整機的重量更加均勻的平攤到機翼上&lt;/em&gt;)，&#xA;能夠相當程度的降低翼根處的結構負擔，節省結構重量。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;當然翼掛佈局也不都是好處的，其中一項明顯的缺點就是翼掛的螺旋槳通常都會距離飛機的中軸線有相當距離。&#xA;在平常正常的時候倒不是什麼大問題，但當有一側發生故障而喪失推力的時候，就會給飛機帶來相當的偏航力矩。&#xA;此外質量相當大的發動機被佈置在遠離中軸線的位置，也會給飛機產生大得多的轉動慣量，&#xA;對於運動性能有所要求的飛機來說這會給飛機帶來相當大的性能劣化；&#xA;不過對於不甚講究運動性能的大型飛機來說倒是無傷大雅就是了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;因此最終，對於那些需要安裝兩臺以上發動機(及依附的螺旋槳)的飛機，特別是對於那些大型的飛機來說，&#xA;在沒有其它特別考量因素的情況下，自然而然的就通通都喜歡採用翼掛佈局。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-10/fig3-2-lancaster.jpg&#34; alt=&#34;fig3 2 lancaster&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 9. Lancaster 轟炸機，四具發動機和螺旋槳都佈置在機翼上 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-lancaster&#34;&gt;[&lt;a id=&#34;_footnoteref_10&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_10&#34; title=&#34;View footnote.&#34;&gt;10&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-10/fig3-3-b29.jpg&#34; alt=&#34;fig3 3 b29&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 10. 將螺旋槳佈置在主機翼上幾乎是所有雙發以上飛機的默認佈局，圖為 B-29 轟炸機 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_11&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_11&#34; title=&#34;View footnote.&#34;&gt;11&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;此外也有部份飛機雖也將發動機置於機翼上但採用螺旋槳後推式設計。&#xA;但是因為動力安置在機翼上，不像前面單槳小飛機採用前拉或後推會給整架飛機帶來翻天覆地的改變，&#xA;因此我們一般仍稱這些飛機採用翼掛佈局，或者翼掛後推佈局，而不將它們歸類為純粹的後推式佈局。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-10/fig3-4-b36.jpg&#34; alt=&#34;fig3 4 b36&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 11. 雖然使用後推螺旋槳，但在佈局分類上仍屬於翼掛佈局的 B-36 轟炸機 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_12&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_12&#34; title=&#34;View footnote.&#34;&gt;12&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-10/fig3-5-piaggio-p180.jpg&#34; alt=&#34;fig3 5 piaggio p180&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 12. 同樣採用後推螺旋槳加鴨翼的設計，但相比前面介紹的 Beechcraft Starship，Piaggio P.180 更加接近於傳統翼掛佈局 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_13&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_13&#34; title=&#34;View footnote.&#34;&gt;13&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_上揹佈局&#34;&gt;上揹佈局&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;有些飛機會選擇將螺旋槳佈置在飛機的背上。&#xA;將動力裝置放在機身上方，會因為推力軸線遠離飛機重心的關係而產生使飛機低頭的下壓力，&#xA;對於飛機平衡和穩定的負擔較大。&#xA;並且不同於噴氣發動機，螺旋槳因為其巨大盤面的關係，往往還得將動力裝置的位置安置的更高，&#xA;更將加劇前述的不平衡力矩。&#xA;因此這種動力佈局在一般能夠有其它選擇方案的情況下，都不會被採用。&#xA;那麼什麼情況下會讓飛機採用這種佈局方式呢？顯然就是有些特殊用途需求的飛機了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;比如水上飛機，為了避免濺起的水花或水浪對動力裝置的運作造成影響或甚至造成損壞，&#xA;因此會傾向於將螺旋槳和發動機往高處安放，於是就跑上機背了。&#xA;此外動力滑翔機也是經常能見到採用上揹式佈局的飛機。&#xA;對於滑翔機而言，動力多半只是短時間幫助自己起飛並獲得初始高度的需求，&#xA;因此可以將就接受一些在正常飛機上會顯得比較尷尬的設計。&#xA;並且相比於常規螺旋槳在機頭的佈置，支撐在背上的螺旋槳還能在不用的時候很方便的被收折在機身裡(如圖 &lt;em&gt;Figure 16&lt;/em&gt;)，&#xA;且對於揹在背上的螺旋槳所造成的低頭力矩，又在滑翔機普遍有著長尾巴的情況下而能夠相當輕易的被平衡下來，&#xA;因此讓此種螺旋槳佈局方式相當常見於動力滑翔機上。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-10/fig4-1-dornier-do-x.jpg&#34; alt=&#34;fig4 1 dornier do x&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 13. 歷史上曾經短暫存在過的大型水上飛機 Dornier Do X，其 12 具螺旋槳全都架在主翼上方的高處 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_14&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_14&#34; title=&#34;View footnote.&#34;&gt;14&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-10/fig4-2-pby-catalina.jpg&#34; alt=&#34;fig4 2 pby catalina&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 14. 二戰時期相當有名的 Catalina 水上飛機也採用上揹式動力佈局，不過因為它的機翼也一同被架高在同一位置，所以也能分類為翼掛式佈局 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_15&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_15&#34; title=&#34;View footnote.&#34;&gt;15&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-10/fig4-3-ash26e-running.jpg&#34; alt=&#34;fig4 3 ash26e running&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 15. ASH 26 滑翔機高舉在機背上的螺旋槳正在運轉 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_16&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_16&#34; title=&#34;View footnote.&#34;&gt;16&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-10/fig4-4-ash26e-closeup.jpg&#34; alt=&#34;fig4 4 ash26e closeup&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 16. ASH 26 滑翔機的近照，可以看見機身在螺旋槳後方的收納空間和蓋板，螺旋槳會在不需要運作的時候被收折進這個空間裡面 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_17&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_17&#34; title=&#34;View footnote.&#34;&gt;17&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_混合式佈局&#34;&gt;混合式佈局&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;基本的螺旋槳佈置方式種類並不多，主因還是因為較大的盤面尺寸，導致能夠發揮創意的空間並不太多。&#xA;但這並不表示螺旋槳佈置就永遠中規中矩，有時候我們還是能夠見到許多看著奇特的螺旋槳配置方式，&#xA;其中大部份為混合將不同的佈局使用在一起。&#xA;所以這裡就讓我們來欣賞一些比較奇特少見的螺旋槳佈置方案。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_機首前拉加翼掛&#34;&gt;機首前拉加翼掛&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;把螺旋槳同發動機放到主翼上的好處在前面已經解釋過了。&#xA;然而如果飛機正好不大不小，雙槳拉不動，四槳又太多，正好三槳最合適的話那該怎麼辦呢？&#xA;當然一個理所當然的做法就是寧可冗餘也不要不足，雖然我只需要 3 個螺旋槳，但裝上 4 個又有何不可呢？&#xA;可是有的時候人們並不這麼想，而是硬要在三槳的方案上死磕，於是就誕生了這樣一種混合佈局方案：&#xA;大翼上掛兩顆螺旋槳，剩下一個則比照傳統前拉佈局裝設在機頭。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這麼做的好處就是動力需求適當，不必因為其實不需要的另一臺發動機而承受多一份重量和油耗等負擔；&#xA;然而缺點也相當明顯，混合式的佈局在設計上帶來了更多的複雜度和計算與平衡，&#xA;在使用與維護上的複雜性也會一定程度上升。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-10/fig5-1-ju52.jpg&#34; alt=&#34;fig5 1 ju52&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 17. 二戰時期經常亮像出場的 Junkers Ju 52 運輸機就是採用翼掛加機首前拉共三具螺旋槳的運輸機 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_18&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_18&#34; title=&#34;View footnote.&#34;&gt;18&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_翼掛加垂尾上吊&#34;&gt;翼掛加垂尾上吊&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;與前面介紹的佈局類似，也是為了在飛機上採用三螺旋槳而生的方案。&#xA;只不過咋也不知道人家當時怎麼想的？竟把第三具螺旋槳(及發動機)安裝在垂直尾舵上！&#xA;除了與其它三槳飛機同樣會面臨到的複雜度上升之外，相比於前一種配置方案，&#xA;將第三具發動機安裝在垂直尾舵上的設計還會遭遇到更加嚴重的結構負擔、平衡性配置、&#xA;以及與上揹式佈局一樣的低頭力矩問題，&#xA;大概唯一的優點就是機頭前方視野比較開闊了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;因此這種兩翼加垂尾上吊的佈局被採用的產品著實真不多，而有幸這少見的型號就曾被臺灣本地的航空公司所採購使用。&#xA;當年的台灣航空(&lt;em&gt;人家公司的名稱就叫作「台灣航空」，常被簡稱「台航」&lt;/em&gt;)就曾引進過一批採用這種動力佈局的&#xA;Britten-Norman BN-2A Mk III Trislander 飛機，可搭載 18 人，專飛離島航班。&#xA;只不過這型號的飛機早已退出臺灣的客運服務，曾經的台灣航空如今也已不復存在，&#xA;不過還有一架退役的 Mk III 型 BN-2 靜態展示在臺東豐年機場的某處草坪上(&lt;em&gt;Figure 20&lt;/em&gt;)，&#xA;讓我們還有機會一睹其風采。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-10/fig5-2-bn2mk3-front.jpg&#34; alt=&#34;fig5 2 bn2mk3 front&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 18. 罕見採用翼掛加尾吊的三槳 BN-2A Mk III 小客機 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_bn2mk3&#34;&gt;[&lt;a id=&#34;_footnoteref_19&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_19&#34; title=&#34;View footnote.&#34;&gt;19&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-10/fig5-3-bn2mk3-side.jpg&#34; alt=&#34;fig5 3 bn2mk3 side&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 19. 從側面觀看 BN-2A Mk III，能更清楚觀察到為了支撐尾螺旋槳而特別加固結構的垂直尾翼 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_19&#34; title=&#34;View footnote.&#34;&gt;19&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-10/fig5-4-bn2mk3-taiwan.jpg&#34; alt=&#34;fig5 4 bn2mk3 taiwan&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 20. 在臺東豐年機場展示的，曾飛翔於離島天空的罕見三槳小客機 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_20&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_20&#34; title=&#34;View footnote.&#34;&gt;20&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_前拉加後推&#34;&gt;前拉加後推&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;從前曾經就有關前拉式或後推式螺旋槳的優劣利弊進行過比較分析 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;，兩種佈局各有優缺點。&#xA;那麼我把兩種佈局一起用上，是不是兩種佈局的優點就通通都有了呢？&#xA;是的，可以這麼做，於是有那麼一小部份的飛機就採行了這個方案，即前拉加上後推的動力佈局；&#xA;只不過在得到兩種佈局的優點之外，兩種佈局的缺點也會一起得到就是了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;前拉螺旋槳的存在可以使飛機在較低速度的狀態下依然提供機翼和操控舵面一定程度的氣流供應，&#xA;也就是低速的操縱性可以一定程度的保留，起飛降落所需要的跑到長度也不會過長。&#xA;在巡航的狀態下可以透過油門和槳距的調節，將更多的動力配置比例依靠在後推的螺旋槳身上，&#xA;也能夠一定程度的提升巡航經濟性。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;至於說到缺點那也是挺不少。&#xA;後推螺旋槳本身具有相當優越的航行效能，然而因為前拉螺旋槳的存在，其效率自然不若純粹的後推佈局來得優越；&#xA;同樣其前拉螺旋槳為飛機保留了些低速狀態下的性能和操作能力，&#xA;然而此時的後推螺旋槳卻對此沒有什麼助益，只能夠作為推力補充的角色存在，&#xA;然相比於其之存在所產生的機體體積重量負擔，效益也不若採用兩具都是前拉螺旋槳的條件來得優越。&#xA;總體而言就是這種混合佈局同時具有前拉與後推的優點，但性能卻不及於純粹的前拉或後推方案。&#xA;此外還有動力系統的複雜化，在設計、維護、與操作使用的複雜度都高於採用兩具發動機翼掛的方案。&#xA;因此這樣的動力佈局也是屬於相當罕見的一種，特別是在商用飛機上；&#xA;至於軍用飛機，這個話題值得好好深入探究一番，就留待後面主題再行探討了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-10/fig5-5-cessna-t337h.jpg&#34; alt=&#34;fig5 5 cessna t337h&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 21. 罕見採用前拉加後推雙槳的 Cessna P337G 小飛機，圖為軍用版的 T337H &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_21&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_21&#34; title=&#34;View footnote.&#34;&gt;21&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;footnotes&#34;&gt;&#xA;&lt;hr/&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_1&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_1&#34;&gt;1&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E8%9E%BA%E6%97%8B%E6%A7%B3-5---%E5%89%8D%E6%8B%89%E6%88%96%E5%BE%8C%E6%8E%A8/&#34;&gt;螺旋槳 5：前拉或後推？&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_2&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_2&#34;&gt;2&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Curtiss_P-40_Warhawk&#34;&gt;Curtiss P-40 Warhawk&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_3&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_3&#34;&gt;3&lt;/a&gt;. &lt;a href=&#34;https://de.wikipedia.org/wiki/Focke-Wulf_Fw_190&#34;&gt;Focke-Wulf Fw 190&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_4&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_4&#34;&gt;4&lt;/a&gt;. &lt;a href=&#34;https://vegasaviation.com/flight-training/7-reasons-why-the-cessna-172-is-the-best-plane-to-start-your-flight-training/&#34;&gt;7 Reasons Why the Cessna 172 is the Best Plane to Start Your Flight Training&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_5&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_5&#34;&gt;5&lt;/a&gt;. &lt;a href=&#34;https://www.justflight.com/product/black-square-velocity-xl&#34;&gt;Black Square - Velocity XL&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_6&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_6&#34;&gt;6&lt;/a&gt;. &lt;a href=&#34;https://www.airdatanews.com/beech-starship-the-visionary-aircraft-that-made-history-as-one-of-aviations-biggest-failures/&#34;&gt;Beech Starship, the visionary aircraft that made history as one of aviation’s biggest failures&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_7&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_7&#34;&gt;7&lt;/a&gt;. &lt;a href=&#34;https://japan.stripes.com/travel/article12864966.ece&#34;&gt;See Godzilla Fighter J7W1 Shinden at Tachiarai Peace Memorial Museum in Fukuoka&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_8&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_8&#34;&gt;8&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/General_Atomics_MQ-9_Reaper&#34;&gt;General Atomics MQ-9 Reaper&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_9&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_9&#34;&gt;9&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Fairchild_Republic_A-10_Thunderbolt_II&#34;&gt;Fairchild Republic A-10 Thunderbolt II&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_10&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_10&#34;&gt;10&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Avro_Lancaster&#34;&gt;Avro Lancaster&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_11&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_11&#34;&gt;11&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Boeing_B-29_Superfortress&#34;&gt;Boeing B-29 Superfortress&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_12&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_12&#34;&gt;12&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Convair_B-36_Peacemaker&#34;&gt;Convair B-36 Peacemaker&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_13&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_13&#34;&gt;13&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Piaggio_P.180_Avanti&#34;&gt;Piaggio P.180 Avanti&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_14&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_14&#34;&gt;14&lt;/a&gt;. &lt;a href=&#34;https://de.wikipedia.org/wiki/Dornier_Do_X&#34;&gt;Dornier Do X&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_15&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_15&#34;&gt;15&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Consolidated_PBY_Catalina&#34;&gt;Consolidated PBY Catalina&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_16&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_16&#34;&gt;16&lt;/a&gt;. &lt;a href=&#34;https://www.alexander-schleicher.de/en/flugzeuge/ash-26-e/&#34;&gt;ASH 26 E&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_17&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_17&#34;&gt;17&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Schleicher_ASH_26&#34;&gt;Schleicher ASH 26&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_18&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_18&#34;&gt;18&lt;/a&gt;. &lt;a href=&#34;https://de.wikipedia.org/wiki/Junkers_Ju_52/3m&#34;&gt;Junkers Ju 52/3m&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_19&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_19&#34;&gt;19&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Britten-Norman_Trislander&#34;&gt;Britten-Norman Trislander&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_20&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_20&#34;&gt;20&lt;/a&gt;. &lt;a href=&#34;https://ciafbi0624.pixnet.net/blog/post/246241157&#34;&gt;曾經隸屬於台灣航空的BN-2型螺旋槳客機&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_21&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_21&#34;&gt;21&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Cessna_Skymaster&#34;&gt;Cessna Skymaster&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>螺旋槳 9：通用噴流推進原理</title>
      <link>http://www.huoschen.idv.tw/blog/aerospace/%E8%9E%BA%E6%97%8B%E6%A7%B3-9---%E9%80%9A%E7%94%A8%E5%99%B4%E6%B5%81%E6%8E%A8%E9%80%B2%E5%8E%9F%E7%90%86/</link>
      <pubDate>Sun, 09 Nov 2025 01:27:43 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/aerospace/%E8%9E%BA%E6%97%8B%E6%A7%B3-9---%E9%80%9A%E7%94%A8%E5%99%B4%E6%B5%81%E6%8E%A8%E9%80%B2%E5%8E%9F%E7%90%86/</guid>
      <description>&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;連著好幾篇螺旋槳的性能計算比較，不知會不會有些人覺得太複雜困難，感覺要把頭給看暈了？&#xA;那麼本篇我就來換個思路，從完全不同的另一個角度來探討噴氣推進的原理。&#xA;更有意思的是，本篇要探究的原理還非常簡單、好懂，並且能夠套用在幾乎所有採用噴流原理的推進裝置，&#xA;不論是螺旋槳、渦輪噴射、渦輪風扇、或是直昇機還是火箭等等，&#xA;只要是利用流體的反作用力來作為推進手段的通通都能夠適用！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-9/fig1-1-jet-propulsion.png&#34; alt=&#34;fig1 1 jet propulsion&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 1. 透過從前方吸入流體(&lt;em&gt;空氣或水等&lt;/em&gt;)並加速向後吐出而獲得反作用力的動力裝置&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;上圖(&lt;em&gt;Figure 1&lt;/em&gt;)就是本篇所探討的動力裝置的原理示意，&#xA;從前面吸入流體然後將流體加速並從後方噴出，藉此獲得反作用力，也就是我們所想要的推力。&#xA;這動力裝置具體是什麼並不重要，就是個黑盒子，&#xA;裡面可能是螺旋槳，可能是渦輪噴射發動機，或其它任何不同運作原理的設備，&#xA;反正只要符合前吸後吐的反作用力原理的通通都能套用。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_遊戲體驗&#34;&gt;遊戲體驗&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;暫時拋開那些數學計算式不談，這裡我們用一個娛樂遊戲來幫助理解基於反作用力的推進原理。&#xA;這個遊戲一般讀者需以自己的生活經驗去做想像，但如果有條件的話，實際玩一下也許效果會更好！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-9/fig2-1-fitball.jpg&#34; alt=&#34;fig2 1 fitball&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 2. 俗稱叫大龍球的大型遊戲球 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_1&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-9/fig2-2-cart.jpg&#34; alt=&#34;fig2 2 cart&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 3. 常見可用來推拉貨物的小型板車 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_2&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_2&#34; title=&#34;View footnote.&#34;&gt;2&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;有沒有玩過或看過像上圖(&lt;em&gt;Figure 2&lt;/em&gt;)那種和人差不多大的遊戲球(瑜珈球/大龍球)呢？&#xA;還有在生活中經常出現用來搬運物品的推板車(&lt;em&gt;Figure 3&lt;/em&gt;)，也許很多人小時候都喜歡站或坐在這種車上玩吧！&#xA;那麼我們就假設現在有一個很大的平面遊戲室，空間非常大，大到可以讓你在裡面隨便划，&#xA;並且裡面均勻隨機的散落著許多上圖那種大龍球。&#xA;然後我們就像下圖(&lt;em&gt;Figure 4&lt;/em&gt;)一樣躺在推車上對著大龍球用力踢，球就會以一個相當快的速度被我們踢走，&#xA;然後我們躺的小車也會因為反作用力的緣故而向後移動。&#xA;如此不斷重複，我們的小車就可以在整個空間裡面到處跑來跑去。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-9/fig2-3-hard-push.png&#34; alt=&#34;fig2 3 hard push&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 4. 躺車上用腳奮力踢球&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-9/fig2-4-soft-push.png&#34; alt=&#34;fig2 4 soft push&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 5. 躺車上愜意用手扒拉球&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;但是這樣做有一個缺點，可能很快就會累！&#xA;那麼要怎麼樣能夠讓我們用更加輕鬆的方式來翱遊在整個地方到處亂跑呢？&#xA;最有效的方法就是不要那麼用力的踢球，而是要保留力氣放輕一點力道，&#xA;最好是像上圖(&lt;em&gt;Figure 5&lt;/em&gt;)那樣愜億的躺在小車上，用手隨便扒拉一下球就可以了。&#xA;這樣如果可以搭配一杯藍山手沖冰紅茶，再加上一隻可以滑的手機，說不定能讓人扒拉一整個下午的球！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;但是這樣有一個缺點，推球的力道小了就讓我們的小車跑的也慢了！&#xA;如果我希望能一樣省力但是速度不要減少的話，有沒有什麼方式可以讓我們達成這種願望呢？&#xA;有的，我們只需要提高小車在空間中遇到球的機會就可以了！&#xA;原來我們的球是均勻散佈在整個空間的，&#xA;也許按照原來的速度，我們可能比方說每隔平均 30 秒才會遇到一顆球，&#xA;那麼如果想辦法讓我們可以每隔 5 秒鐘就遇上一顆球的話，是不是就可以一樣又省力又不會跑的慢了呢？&#xA;於是這裡就有一些可以讓我們碰上大球的頻率提升的方案：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;首先最直接的就是買多一點大球放到我們的遊戲室裡面去(&lt;em&gt;Figure 6&lt;/em&gt;)。&#xA;在假設球的放置均勻的前提下，那麼當球的數量大幅增加時，我們溜車的過程中能遇到球的時間也就跟著縮短了。&#xA;這樣就可以同樣使用輕鬆省力的方式去隨意扒拉推球，然後靠著多推幾顆球來維持想要的速度(推進力)。&#xA;對應到現實，其實就是當流體密度愈高的時候推進效率愈好！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-9/fig2-5-more-balls.png&#34; alt=&#34;fig2 5 more balls&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 6. 當球的數量更加多且密集的時候(圖右)，就可以使用省力的方式多推幾個球&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;增加大球的數量挺簡單直接，但是如果我沒有財力買這麼多的球回來玩的話呢？&#xA;第二個方案就是讓你手臂伸長一點(&lt;em&gt;Figure 7&lt;/em&gt;)，&#xA;不要只滾到小車旁邊的球你才願意推一下，而是手臂伸出去凡能夠碰到的球你都推一下。&#xA;這樣的話雖然球的數量沒有增加，但是我們能夠推到球的頻率依然增加了，&#xA;相比於懶惰的我們只願意推一下那已經滾到車子邊上的球而言，我們就可以用輕推的力道依然維持住車子的速度(推進力)。&#xA;對應到現實，其實就是當推進裝置吸氣吐氣的截面積愈大的時候推進效率愈好！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-9/fig2-6-open-arms.png&#34; alt=&#34;fig2 6 open arms&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 7. 將手伸長出去(圖右)可以觸及更多的球，就能使用省力的方式多推幾個球&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;前面兩個方法都很好，但如果我就是窮又手短，沒辦法買更多大球，&#xA;手伸出去也沒多遠距離，真的就只能拍到已經到小車子旁邊的球而已的話，還有辦法嗎？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;前面兩個方法的作用其實都是一樣的，就是想辦法增加我們在一定時間裡碰到球的機會，&#xA;而上面第二個方法就是在無法增加大球數量的前提下，主動展開手臂增加捕球的範圍，&#xA;等於是往橫向加大捕球的空間。&#xA;但是再想想，好像也沒有規定說只能往橫向增加捕球範圍啊？！&#xA;如果我縱向往前增加捕球範圍可不可以(&lt;em&gt;Figure 8&lt;/em&gt;)？&#xA;得，這就是現實上增加航速可以增進推進效率的原因！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在剛開始速度不快的時候會比較辛苦吃力，&#xA;也或許我們可以使用一些無賴作法，比如說一開始用腳直接蹬地板等。&#xA;但是當速度一提上來，當速度達到平常幾倍快的時候，&#xA;(考量我們的小車在不同速度下可能阻力沒差太多的情況)&#xA;可能就會發現反而又省力了！&#xA;所以在高速行進的情況下推進效率會得到提升的原理其實與前一個伸開雙臂的原理是一樣的，&#xA;只不過前法是往橫向擴展抓球的空間，而本法是往縱向往前方延伸抓球空間。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-9/fig2-7-move-faster.png&#34; alt=&#34;fig2 7 move faster&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 8. 與直覺相反，當移動的速度更快的時候(圖右)，反而因為可以捉到更多的球而能夠使用更省力的方式推球&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_推導證明&#34;&gt;推導證明&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;前面的部份以一種接近一般人能夠身體感知的方式來解釋噴流推進，&#xA;但是可能太過於不嚴謹，並且其實當中有些特性可能是和一般人直覺經驗相反的。&#xA;因此這一部份將站在比較正經的角度，以簡單的數學來解釋和證明噴流推進的特性。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;首先我們假設有一個推進裝置如下圖(&lt;em&gt;Figure 9&lt;/em&gt;)所示。&#xA;它就是一個黑盒子，裡面是什麼原理我們不知道或不想知道，&#xA;反正它從前方吸入流體(空氣、水、或其它)，並將流體加速之後從後方噴出。&#xA;其中特別注意，如果這裝置的前方存在一個聚集收攏氣流的現象，或者後方存在一個聚集噴流的現象，&#xA;那麼我們所假設的這個裝置的體積就可能會大於裝置實際的空間體積，&#xA;比方螺旋槳就是這類比較明顯的例子(&lt;em&gt;Figure 10&lt;/em&gt;)。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-9/fig3-1-jet-propulsion.png&#34; alt=&#34;fig3 1 jet propulsion&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 9. 流體進入一個黑盒子並加速離開，產生反作用力作用在黑盒子上，即推力&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-9/fig3-2-jet-stream.png&#34; alt=&#34;fig3 2 jet stream&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 10. 螺旋槳前、後聚集氣流的空間&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_推力&#34;&gt;推力&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;那麼這個裝置能夠產生多少推力呢？&#xA;因為我們假設了的裝置含括了前、後氣流收縮或擴張的範圍，&#xA;因此可以確定這個虛擬範圍的前入口與後出口之壓力都與環境壓力相同，因此無需考量，&#xA;那麼推力的來源就只剩下流體增速所帶來的反作用力了。&#xA;依據牛頓第二運動定律即「力等於動量變化率」的關係，即可列出裝置所產生的推力(F)如下：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ F = \frac{ M_o V_o - M_i V_i }{dt} \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;quoteblock&#34;&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;&lt;em&gt;其中：&lt;/em&gt;&lt;br/&gt;&#xA;&lt;em&gt;\(dt\) 為假定的一段非常短的時間差；&lt;/em&gt;&lt;br/&gt;&#xA;&lt;em&gt;\(M_o\) 為在 \(dt\) 時間裡面被吹出的流體質量；&lt;/em&gt;&lt;br/&gt;&#xA;&lt;em&gt;\(M_i\) 為在 \(dt\) 時間裡面被吸入的流體質量；&lt;/em&gt;&lt;br/&gt;&#xA;&lt;em&gt;\(V_o\) 為裝置出口的流體速度；&lt;/em&gt;&lt;br/&gt;&#xA;&lt;em&gt;\(V_i\) 為裝置入口的流體速度。&lt;/em&gt;&lt;br/&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;接著繼續解算：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ F = \frac{ M_o V_o - M_i V_i }{dt} \]&#xA;\[ F = \frac{ ( \rho_o A_o V_o dt ) V_o - ( \rho_i A_i V_i dt ) V_i }{dt} \]&#xA;\[ F = ( \rho_o A_o V_o ) V_o - ( \rho_i A_i V_i ) V_i \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;quoteblock&#34;&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;&lt;em&gt;其中：&lt;/em&gt;&lt;br/&gt;&#xA;&lt;em&gt;\(\rho_o\) 為出口流體密度；&lt;/em&gt;&lt;br/&gt;&#xA;&lt;em&gt;\(\rho_i\) 為入口流體密度；&lt;/em&gt;&lt;br/&gt;&#xA;&lt;em&gt;\(A_o\) 為流體出口截面積；&lt;/em&gt;&lt;br/&gt;&#xA;&lt;em&gt;\(A_i\) 為流體入口截面積。&lt;/em&gt;&lt;br/&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這式子看上去簡單，但再稍微細看又發現有點不對勁，因為假設的未知變數太多了！&#xA;特別是有些變數值還是虛擬的，比方螺旋槳前面後的聚氣空間範圍，連想測量都困難！&#xA;然而我們知道質量是不滅的，不管上面那些具體變數多麼不確定，&#xA;只要這個動力裝置可以穩定的持續運作，那麼流體的吸入流量肯定等於吹出流量；&#xA;否則吸入比吹出多，這裝置可不得爆炸？&#xA;吹出比吸入多，難道這裝置還能憑空產生流體？&#xA;因此我們可以將許多變數濃縮轉化成一個變數，也就是流體質量流率(\(\dot{m}\))，&#xA;即每個單位時間裡面通過這個裝置的流體質量，&#xA;並且這個數字肯定不管在吸入端、吹出端、或是裝置裡面都會是一樣的。&#xA;那麼上式就可以寫為：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ F = ( \rho_o A_o V_o ) V_o - ( \rho_i A_i V_i ) V_i \]&#xA;\[ F = \dot{m} V_o - \dot{m} V_i \]&#xA;\[ F = \dot{m} ( V_o - V_i ) \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;如此就得到一個非常簡單的推力計算方式，只需要知道吸氣速度、吹氣速度、和質量流率即可計算出推力，&#xA;並且對於這三個參數的實際測量也不存在太大的困難性。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_功率&#34;&gt;功率&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;除了推力之外我們還得計算前後氣流的能量差，&#xA;畢竟前面進來的流體到了後面能夠得到更多的能量，這能量肯定得由我們的裝置提供，&#xA;很自然的我們會想知道究竟需要提供多少能量給它？&#xA;那麼我們所需要輸入的能量，也就是氣體在進出口之間的能量差(E)是多少呢：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ E = \frac{1}{2} ( \dot{m} \cdot dt ) V_o^2 - \frac{1}{2} ( \dot{m} \cdot dt ) V_i^2 + C ( \dot{m} \cdot dt ) ( T_o - T_i ) \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;quoteblock&#34;&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;&lt;em&gt;其中：&lt;/em&gt;&lt;br/&gt;&#xA;&lt;em&gt;\(T_o\) 為出口流體溫度；&lt;/em&gt;&lt;br/&gt;&#xA;&lt;em&gt;\(T_i\) 為入口流體溫度；&lt;/em&gt;&lt;br/&gt;&#xA;&lt;em&gt;\(C\) 為一個代表性質的流體比熱容。&lt;/em&gt;&lt;br/&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;admonitionblock tip&#34;&gt;&#xA;&lt;table&gt;&#xA;&lt;tbody&gt;&lt;tr&gt;&#xA;&lt;td class=&#34;icon&#34;&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Tip&lt;/div&gt;&#xA;&lt;/td&gt;&#xA;&lt;td class=&#34;content&#34;&gt;&#xA;其中上式流體的比熱容(\(C\))是一個代表性質的比熱容，其具體數值在這裡不重要，&#xA;畢竟我們不知道它在裝置裡面是如何升溫的，也不知道是否有汽化等過程或甚至化學反應等參與。&#xA;因此無需糾結該數值具體應是多少？而其在本篇中更大的作用是作為示意溫度的角色而存在。&#xA;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;/tbody&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;當然如同我從前敘述過的&#xA;&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_piston7&#34;&gt;[&lt;a id=&#34;_footnoteref_3&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_3&#34; title=&#34;View footnote.&#34;&gt;3&lt;/a&gt;]&lt;/sup&gt;&#xA;，&#xA;其實多少能量不是我們關心的事情，我們真正關心的是能量率(W)。&#xA;於是上式可以繼續變化為：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ W = \frac{E}{dt} = \frac{1}{2} \dot{m} V_o^2 - \frac{1}{2} \dot{m} V_i^2 + C \dot{m} ( T_o - T_i ) \]&#xA;\[ W = \dot{m} \left( \frac{1}{2} V_o^2 - \frac{1}{2} V_i^2 + C ( T_o - T_i ) \right) \]&#xA;\[ W = \dot{m} \left( \frac{1}{2} ( V_o^2 - V_i^2 ) + C ( T_o - T_i ) \right) \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;如此我們就得到了上面那樣的裝置進出口流體的能量差，&#xA;也就是為了維持這裝置的推進作用而需要我們投入的功率輸入(&lt;em&gt;可理解對應為燃料的消耗速度&lt;/em&gt;)。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_效率&#34;&gt;效率&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;有了推力、有了輸入功率，接下來自然要計算一下投入回報比也就是效率是多少了！&#xA;但是輸入功率有了，推進的功率是多少呢？&#xA;按照機械功定義，功率為力乘(內積)移動速度，&#xA;因此推力乘上(內積)飛機的飛行速度(&lt;em&gt;或船舶的移動速度，以此類推&lt;/em&gt;)就是了。&#xA;那麼飛機的飛行速度多快呢？欸這可不就是前面氣流進入的速度(\(V_i\))了嗎？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;因此上面這套動力裝置的推進效率(\(\eta\))即為：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ \eta = \frac{ F \cdot V_i }{W} \]&#xA;\[ \eta = \frac{ \dot{m} ( V_o - V_i ) V_i }{ \dot{m} \left( \frac{1}{2} ( V_o^2 - V_i^2 ) + C ( T_o - T_i ) \right) } \]&#xA;\[ \eta = \frac{ ( V_o - V_i ) V_i }{ \frac{1}{2} ( V_o^2 - V_i^2 ) + C ( T_o - T_i ) } \]&#xA;\[ \eta = \frac{ ( V_o - V_i ) V_i }{ \frac{1}{2} ( V_o + V_i ) ( V_o - V_i ) + C ( T_o - T_i ) } \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;我們可以從上式裡發現出現了許多兩數值相減的項目。&#xA;這點很重要，因為這表示我們所希望知道的這個效率，&#xA;可能其中許多成份與流體進出的具體速度多少無關，而與它們之間的差值有關；&#xA;溫度的部份亦同，這可能表示進出氣流的溫度多少其實並不重要，而是它們之間的差值才有意義。&#xA;於是我們就加入兩個新符號分別表示進出口的速度差值(\(\Delta V\))與溫度差值(\(\Delta T\))：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ V_o = V_i + \Delta V \]&#xA;\[ T_o = T_i + \Delta T \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;那麼上面的效率算式就可以繼續整理下去：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ \eta = \frac{ ( V_o - V_i ) V_i }{ \frac{1}{2} ( V_o + V_i ) ( V_o - V_i ) + C ( T_o - T_i ) } \]&#xA;\[ \eta = \frac{ \Delta V \cdot V_i }{ \frac{1}{2} ( \Delta V + V_i + V_i ) \Delta V + C \cdot \Delta T } \]&#xA;\[ \eta = \frac{ \Delta V \cdot V_i }{ ( \frac{1}{2} \Delta V + V_i ) \Delta V + C \cdot \Delta T } \]&#xA;\[ \eta = \frac{ \Delta V \cdot V_i }{ \frac{1}{2} \Delta V^2 + V_i \cdot \Delta V + C \cdot \Delta T } \]&#xA;\[ \eta = \frac{1}{ 1 + \frac{\Delta V}{ 2 V_i } + \frac{ C \cdot \Delta T }{ \Delta V \cdot V_i } } \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;至此算是把效率的計算式整理好了。&#xA;這個算式不只可以算出效率而已，更重要的是我們能夠從這式中清楚的看出各項變數在其中所扮演的角色。&#xA;比如這條式簡單而明確的告訴我們效率必定是一個小於 1 的數值，這很符合我們對於效率的理解 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_3&#34; title=&#34;View footnote.&#34;&gt;3&lt;/a&gt;]&lt;/sup&gt;。&#xA;此外我們的動力裝置對流體加速的幅度愈大則效率愈差，對流體增加的溫度愈多則效率愈差；&#xA;但是如果這裝置在一個環境流速更高的地方工作則有助於提升效率！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_性能改善&#34;&gt;性能改善&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;無論是喜歡遊戲說明的還是喜歡數學證明的，經過前面的說明講解，&#xA;想必已經對任何利用流體反作用力產生動力的裝置有了足夠程度的了解。&#xA;那麼借下來就要以前面的論述為基礎，繼續探討各種動力裝置的性能，以及可能改善性能的方向。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;首先把前面所推導得到的兩項最主要的結果，也就是推力(\(F\))和效率(\(\eta\))的計算式整理如下：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ F = \dot{m} \cdot \Delta V \]&#xA;\[ \eta = \frac{1}{ 1 + \frac{\Delta V}{ 2 V_i } + \frac{ C \cdot \Delta T }{ \Delta V \cdot V_i } } \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;要給飛機增加性能則通常動力裝置需要增加推力，而從推力式可以看出，若要增加推力的話，&#xA;無論是增加質量流率(\(\dot{m}\))或者增加流體加速程度(\(\Delta V\))皆可。&#xA;其實當渦輪噴射引擎剛出現在世界上的時候為什麼立刻就能傲視群雄？&#xA;就是因為在當時它能夠提供傳統動力裝置(螺旋槳)所完全無法匹敵的 \(\Delta V\)，&#xA;因此才給飛機帶來了讓人嘆為觀止的推力與速度。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;但是吧，從效率式也能看出來 \(\Delta V\) 的極大化在給予強大動力的同時，&#xA;也會讓產生動力的效率降低到令人髮指的地步，而這就是早期純渦輪噴射引擎的效率為什麼這麼破爛的原因了！&#xA;(並且純渦噴發動機還不只 \(\Delta V\) 大而已，甚至還給排放的尾氣提高了非常多的溫度 \(\Delta T\)，&#xA;因此效率進一步劣化！)&#xA;那麼我們能不能夠既想要動力大，又想要效率好呢？&#xA;這就需要將目光看向推力式的另一個元素即質量流率(\(\dot{m}\))了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;重新整理質量流率的計算式如下：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ \dot{m} = \rho_i A_i V_i = \rho_o A_o ( V_i + \Delta V ) \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;從上式很明顯就能夠看出來，在打算降低 \(\Delta V\) 的前提下，&#xA;想要提高或維持流體質量流率的話可以從幾個方面著手：&#xA;流體密度(\(\rho_i\) 和 \(\rho_o\))愈大愈好、&#xA;裝置吸入與排出流體的截面積(\(A_i\) 和 \(A_o\)&#xA;&lt;em&gt;，為了減少饒口的敘述，後面將以更形象化的詞語「口徑」來稱呼，就是和炮管的口徑一樣的意思&lt;/em&gt;)&#xA;愈大愈好、&#xA;和吸入流體的速度即我們飛機(&lt;em&gt;或船&lt;/em&gt;)航行的速度(\(V_i\))愈高愈好。&#xA;如果還有什麼別的事項的話，那麼就是離開的流體溫度升高(\(\Delta T\))愈少愈好，最好是不要有升溫；&#xA;降低流體升溫這點雖然從上式看不出對推力有什麼影響，但是對於效率的改善有影響！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;前面所列出改善方向的其中前三項，在之前的遊戲裡面其實都已經很形象的解釋過了，對其之影響原理應該不陌生。&#xA;對應到現實上來說明，流體密度愈大則效率愈好。&#xA;這就是為什麼飛機無論怎麼跑，效率都無法比得上在水上跑的船的原因，&#xA;而我們一般人比較能夠感知的貨運價錢就能夠良好說明這項特性。&#xA;同樣以在空氣中飛行的飛機來說，低空密度高的空氣環境也有利於提高飛機動力裝置的推進力與效率&#xA;(&lt;em&gt;看到此處如果會感覺到疑惑的讀者請稍待，後面會說明&lt;/em&gt;)。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;動力裝置的口徑也是愈大愈好。&#xA;這樣的特性其實在前篇&#xA;&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_propeller8&#34;&gt;[&lt;a id=&#34;_footnoteref_4&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_4&#34; title=&#34;View footnote.&#34;&gt;4&lt;/a&gt;]&lt;/sup&gt;&#xA;的螺旋槳分析中已經表現出來了，&#xA;而在本篇更採用另一個思路從另一個方向進一步證明對於所有(反作用力式)的動力裝置都存在這樣的特性，&#xA;當口徑愈大的時候無論推力或效率都能有效的增進。&#xA;這就是為什麼使用螺旋槳的飛機在一般中低速情況下推進效率最高也最省油的原因了，就是因為螺旋槳可以被造的很巨大；&#xA;同樣的從渦輪噴氣式發動機被發明應用以來，為什麼發動機口徑(特別是在商用飛機上)愈造愈大的原因，就是這樣能更省油！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;航行的速度也是愈快愈好，因為動力裝置在趨勢上總是在流體速度愈高的環境下能夠產生愈好的堆動效率，&#xA;前篇&#xA;&lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_4&#34; title=&#34;View footnote.&#34;&gt;4&lt;/a&gt;]&lt;/sup&gt;&#xA;&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_propeller7&#34;&gt;[&lt;a id=&#34;_footnoteref_5&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_5&#34; title=&#34;View footnote.&#34;&gt;5&lt;/a&gt;]&lt;/sup&gt;&#xA;的螺旋槳分析也是從具體的動力裝置運作細節分析中得出了同樣的趨勢，&#xA;在前面的遊戲中也以容易理解的方式解釋這項特性的作用原理。&#xA;這就是為什麼(通常)飛機飛的快的時候反而省油錢，&#xA;也是那些一般概念上效率比較差的動力裝置如渦噴發動機等，&#xA;它們上了高速之後效率都有所提升，甚至可能反超一般印象中效率比較高的其它動力裝置的原因。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;最後談談升溫這件事在推動裝置上扮演的角色。&#xA;因為本篇所探討的是一種抽象的動力裝置而脫離了具體的實現方式，&#xA;因此有些部份無法很有連結性的表達與整體性能的關聯，而溫度就是其中最模糊的成份！&#xA;這是因為有些東西它與具體的實現方式牽連性太大了。&#xA;比方說在未知發動機具體結構原理的情況下，我們無法知道流體在發動機裡面是怎麼被加熱的？&#xA;是等壓行程還是等容行程？甚至於有沒有汽化過程參與，還是有發生化學反應(如火箭)等都不知道！&#xA;唯確認的是溫度的升高肯定需要分走發動機(或燃料)所給予的能量，&#xA;這就是為什麼前面計算式只假定了一個等效的比熱容，其主要的作用可能在於表示確實升溫愈多會導致效率愈低。&#xA;對於大部份需要給流體升溫的發動機(渦噴、火箭等)來說，升溫的目的是給流體膨脹以增速，&#xA;也就是說這類發動機是以 \(\Delta T\) 為代價去換取更高的 \(\Delta V\)，&#xA;只不過在本篇的計算中並沒有將兩者的關聯給聯繫起來，而是直接取其結果(\(\Delta V\))作為計算使用。&#xA;其實對於所有類型的動力裝置，本篇的計算式也並沒有交代 \(\Delta V\) 是怎麼產生的，&#xA;而是隱藏了黑盒子內的具體的運作過程，只是將其理解為「動力裝置投入能量一番作用之後」所產生的結果來使用。&#xA;因此對於溫度這一部份，我們只需理解它的存在是某些類型發動機之所以能夠產生推力的必要副作用就可以了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;以上關於排氣溫度這一特性就是對於現代渦輪風扇發動機為什麼效率比純渦輪噴射發動機更好的主流解釋方式。&#xA;就是因為渦扇發動機的尾氣(假設兩路尾氣混合均勻的情況下)溫度比渦噴發動機更低，因此能得到更高的運作效率！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ \frac{ C \cdot \Delta T }{ \Delta V \cdot V_i } \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;其實在效率式的分母裡面關於溫度的那一個項(如上所列)也能看出來，&#xA;\(\Delta V\) 的增加是有利於讓這個項的值變小，從使這個部份對整體效率來說是往有利的方向發展。&#xA;其本質上也是在說明，&#xA;如果能夠使用愈小的 \(\Delta T\) 來換得愈大的 \(\Delta V\)，那麼對於推進具有性能更好的貢獻。&#xA;這就是為什麼火箭的燃料都傾向於選擇那些燃燒後膨脹性更好的物質的原因&#xA;(&lt;em&gt;其實也未必盡是如此，因為燃料的選擇往往還得妥協很多其它方面的考量，但就性能面來說是這樣沒錯&lt;/em&gt;)。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;最後，對於上面所提的眾多「改善方案」之外，其實還有最後一種做法，那就是放棄！&#xA;如果要求改變環境流體密度不切實際，如果我的動力裝置它就是口徑小而且難以做大，如果我的航速就是沒法拉很高，&#xA;甚至如果我就是得需要強烈升溫才能夠給流體加速，然後我還希望能夠保有不錯的推力，那我還有什麼辦法呢？&#xA;有的，那就是放棄效率！&#xA;為了得到所需要的推力，就只能使勁噴用力吹，以犧牲效率的方式去得到推力。&#xA;這就是為什麼早期渦噴發動機的效率都相當破爛的關係，&#xA;除了因為一些改善效率的先進技術還沒被發明應用之外，&#xA;也是因為在當時的時空背景下這個推力是更加被迫切需要和追求的東西，&#xA;反而效率這一部份的損失就是帶多點油給他燒就能解決的問題。&#xA;同樣這也是為什麼火箭發動機的效率更加破爛到底(&lt;em&gt;約只有個位數的百分比&lt;/em&gt;)的原因，&#xA;除了狂噴猛吹之外，排氣溫度還恨不得能夠熔化世間萬物；&#xA;至於其強大的推進動力則是由極高的燃料消耗速度所換來，&#xA;因此雖然火箭的絕大部份質量都是燃料，卻能夠在數秒到數十秒，最多數分鐘的時間裡面消耗殆盡！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_常見矛盾疑惑&#34;&gt;常見矛盾疑惑&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;相信可能許多人在讀本篇的時候會感到些疑惑，因為本篇所描述的某些部份可能和一般的經驗印象不甚相同，&#xA;甚至於有些東西看起來可能和我前篇所寫的內容有相矛盾之處。&#xA;那麼這些部份是怎麼一回事呢？這裡就來為這些問題做出解惑。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_口徑過大時效率會下降&#34;&gt;口徑過大時效率會下降？&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;首先是關於動力裝置口徑的問題。&#xA;在前篇 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_4&#34; title=&#34;View footnote.&#34;&gt;4&lt;/a&gt;]&lt;/sup&gt; 的螺旋槳分析中就呈現出來，&#xA;口徑愈大、轉速愈慢一般來說是效率更高沒錯，&#xA;但是當口徑大過某個程度以上，或轉速慢到某個水準以後，效率反而開始下滑了。&#xA;這是怎麼一回事呢？怎麼就和本篇描述的不一樣了呢？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;其實那個問題是螺旋槳的問題，是因為螺旋槳本身的運作特性所導致的性能限制。&#xA;螺旋槳動力裝置使用螺旋槳葉片來達到增加流體流速(\(\Delta V\))的效果，&#xA;而其實際實現方式的運作特性導致產生了這樣的性能限制；&#xA;但是如果換成使用別的原理來給流體加速(&lt;em&gt;比方改用衝壓原理來加速氣流&lt;/em&gt;)，就不一定存在這樣的限制了，&#xA;或者也許依舊存在類似的性能限制但裕值可能不同！&#xA;也就是說所提出的這個疑問是屬於具體實現方案本身的特性與限制所導致，&#xA;而當跳脫了具體實現細節而站在抽象的黑盒子角度來分析的時候，&#xA;或者也可以理解為當站在廣泛各種動力裝置的綜合體來討論共同通性的時候，&#xA;自然能夠忽略個別實做所特有的一些條件限制，因為那只是個別裝置類型自己的問題。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_高航速應該比較耗油&#34;&gt;高航速應該比較耗油？&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;第二個可能的疑問是本文提到當動力裝置運作在愈高速環境的時候推力愈大、效率也愈好，&#xA;可是我們一般的印象可能卻是車開的愈高速(&lt;em&gt;腳踩的那種可能感受更加直接&lt;/em&gt;)阻力愈大，或者可能愈加使不上勁；&#xA;或者我們所知到的那些能夠超高速飛行的飛機(&lt;em&gt;如協合客機、或 SR-71 黑鳥等&lt;/em&gt;)往往也是相當耗油，燃料消耗相當可觀的。&#xA;這些現象都與本文給出的分析不同，這又怎麼解釋呢？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;除了前述「個別實現方式自己的特性與限制」佔一部份比例之外還有另一項因素，&#xA;那就是本文所專注探討的是動力裝置本身的情境，而我們一般所感受認知的通常都是整機整體的結果。&#xA;也就是說以廣泛通用的情況來說動力裝置是在愈高的航速環境下運作更有效率，&#xA;但是整機的阻力和其它部位的干擾因素可能是隨著航速的增加而愈大。&#xA;因此在實際的整體情況，通常各部件的推力、阻力、效率等此消彼長之下，中間通常會存在一個最佳的甜蜜點；&#xA;然而在只考量推進裝置的運作效率，且撇開個別實現邏輯所帶來的各自限制之外，&#xA;那確實是航速愈高的情況下其推進效率是愈高的。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_飛的愈高愈省油&#34;&gt;飛的愈高愈省油？&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;還有一個與通常現象衝突的地方。&#xA;本篇告訴你動力裝置在流體密度愈大的地方(&lt;em&gt;在空氣中通常就是低高度的大氣&lt;/em&gt;)效率好，&#xA;而密度低的低方(&lt;em&gt;也就是高空&lt;/em&gt;)效率差。&#xA;這時可能有許多熟悉航空的人就想要說話了：「欸不對，我們的經驗明明都是說高空效率更好……」&#xA;有些人甚至會拿出真實的燃油報告來證明所言不假，飛機飛高空更省油，&#xA;反而上次因為什麼緣故降低高度飛，結果油耗一下就上來，甚至不得不中轉加油等等。&#xA;那麼為什麼會出現這種矛盾衝突呢？究竟是誰對誰錯了呢？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;其實理論沒有錯，他們的敘述也沒有錯，&#xA;因為同前面所說，實際的情況是綜和了各方各面互相影響之後的最後結果！&#xA;不過就算不計算飛機的阻力因素而只看發動機推動效率，現實上往往也是高空比較節省，為什麼呢？&#xA;密度高對效率有利，密度低不利；航速高對效率有利，航速低不利，這些都是確實的。&#xA;也就是說一般的發動機上了高空的確會受到空氣密度下降的影響導致效率下降，&#xA;但同時也會因為航速增加的影響導致效率上升，兩者互搏之後的結果是航速更勝一籌。&#xA;因此造成現實中的這種經驗其實是因為飛機飛的高了，&#xA;在飛行速度增加之下得到的好處勝過因為空氣密度下降的壞處，而且勝得多；&#xA;然而即便是這樣現實的真實經驗，也並不能反對空氣密度降低這一條件確實是造成效率劣化的元素。&#xA;其實如果能夠的話，讓飛機在接近地面的高度以超高速飛行那肯定是推進效率最好的，絕對比高空高速飛行好得多；&#xA;只不過無奈現實中可能罕有飛機能夠扛得住這種條件下的壓力而不會散架，因此才不得不在低空飛的慢一點！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_其它補充&#34;&gt;其它補充&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;其實本篇所描述的理論是建立在一個相當完美的條件之下所成立的，&#xA;而現實中的動力裝置往往無法達到所假設的完美條件，因此實際的性能往往達不到本篇所計算的結果；&#xA;也就是說，本篇站在抽象完美角度所得出的性能，會是實際裝置永遠達不到的天花板。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-9/fig6-1-propeller-flow.png&#34; alt=&#34;fig6 1 propeller flow&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 11. 螺旋槳尾流示意 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_6&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_6&#34; title=&#34;View footnote.&#34;&gt;6&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這裡以本系列所探討的動力裝置即螺旋槳作為代表性的案例進行探討。&#xA;螺旋槳在運作的過程除了推動流體向後之外，也會順帶推動流體旋轉，在螺旋槳後形成&#xA;&lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E8%9E%BA%E6%97%8B%E6%A7%B3-3---%E5%90%84%E7%A8%AE%E5%A5%87%E5%A6%99%E5%95%8F%E9%A1%8C/#slipstream&#34;&gt;帶旋的尾流&lt;/a&gt;&#xA;&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_propeller3&#34;&gt;[&lt;a id=&#34;_footnoteref_7&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_7&#34; title=&#34;View footnote.&#34;&gt;7&lt;/a&gt;]&lt;/sup&gt;&#xA;，&#xA;如上圖(&lt;em&gt;Figure 11&lt;/em&gt;)所示。&#xA;經過螺旋槳後出來的氣流是 \(V_s\)&#xA;其可被分為兩個分量分別是 \(V_x\) 和 \(V_\theta\)。&#xA;那麼我們就知道對於推進有所作用的只有其中的 \(V_x\)，&#xA;所以在算推力的時候就要使用 \(V_x\) 來算，而另一個分量 \(V_\theta\) 並沒有作用；&#xA;但是在計算需要投入多少功率來驅動空氣的時候卻要使用 \(V_s\)，&#xA;即便那些不在推力線上的速度分量沒有作用，但是卻實打實的吃掉了發動機功率。&#xA;這就是為什麼螺旋槳產生的旋轉尾流會導致推進效率劣化的原因，&#xA;也是為什麼但凡能夠偏導校正螺旋槳旋轉尾流的設計能夠立刻改善推進效率的原因。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_總結&#34;&gt;總結&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;本篇介紹了更加單純簡單的方式去理解推力裝置，&#xA;除了更加容易理解和計算以外，這種分析方式還並不只能被套用在螺旋槳上，&#xA;還能套用在渦噴、渦扇、火箭、……等等等，&#xA;凡任何透過流體反作用力產生推力的系統都能使用本篇所介紹的方法來理解與估算。&#xA;在跳脫細節對認知的束縛之後，我們更能夠從更高的層面去理解流體動力裝置的特性，&#xA;並得到一些與性能息息相關的影響參數，&#xA;當流體密度更大、裝置口徑更大、或航速更快的時候，可以得到更多的推力和效率；&#xA;而增加流體吞吐速度差的話可以提高推力但會損失效率；&#xA;此外也認識到了流體溫度的增溫在宏觀抽象層面上對推動效率的影響。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;footnotes&#34;&gt;&#xA;&lt;hr/&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_1&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_1&#34;&gt;1&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Exercise_ball&#34;&gt;Exercise ball&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_2&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_2&#34;&gt;2&lt;/a&gt;. &lt;a href=&#34;https://www.ikea.com.tw/zh/products/boxes-and-organisers/boxes-and-baskets/invallning-art-90569399&#34;&gt;推車&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_3&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_3&#34;&gt;3&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-7---%E5%8A%9F%E7%8E%87%E8%88%87%E6%95%88%E7%8E%87/&#34;&gt;活塞引擎 7：功率與效率&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_4&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_4&#34;&gt;4&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E8%9E%BA%E6%97%8B%E6%A7%B3-8---%E8%A9%B2%E6%9C%89%E5%B9%BE%E7%89%87%E6%A7%B3%E8%91%89%E8%A9%B2%E9%80%A0%E5%A4%9A%E5%A4%A7/&#34;&gt;螺旋槳 8：該有幾片槳葉？該造多大？&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_5&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_5&#34;&gt;5&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E8%9E%BA%E6%97%8B%E6%A7%B3-7---%E6%80%A7%E8%83%BD%E5%88%86%E6%9E%90%E6%A1%88%E4%BE%8B/&#34;&gt;螺旋槳 7：性能分析案例&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_6&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_6&#34;&gt;6&lt;/a&gt;. &lt;a href=&#34;https://www.aerodynamics4students.com/propulsion/blade-element-propeller-theory.php&#34;&gt;Blade Element Theory for Propellers&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_7&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_7&#34;&gt;7&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E8%9E%BA%E6%97%8B%E6%A7%B3-3---%E5%90%84%E7%A8%AE%E5%A5%87%E5%A6%99%E5%95%8F%E9%A1%8C/&#34;&gt;螺旋槳 3：各種奇妙問題&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>螺旋槳 8：該有幾片槳葉？該造多大？</title>
      <link>http://www.huoschen.idv.tw/blog/aerospace/%E8%9E%BA%E6%97%8B%E6%A7%B3-8---%E8%A9%B2%E6%9C%89%E5%B9%BE%E7%89%87%E6%A7%B3%E8%91%89%E8%A9%B2%E9%80%A0%E5%A4%9A%E5%A4%A7/</link>
      <pubDate>Fri, 24 Oct 2025 10:27:16 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/aerospace/%E8%9E%BA%E6%97%8B%E6%A7%B3-8---%E8%A9%B2%E6%9C%89%E5%B9%BE%E7%89%87%E6%A7%B3%E8%91%89%E8%A9%B2%E9%80%A0%E5%A4%9A%E5%A4%A7/</guid>
      <description>&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在我們見過的那些螺旋槳飛機裡面，有的飛機螺旋槳只有兩葉，有的三葉、有的四葉，&#xA;還有的更多，五花八門。&#xA;那麼槳葉的數量是怎麼決定的呢？難道是靠美感嗎？&#xA;甚至於，有些飛機的螺旋槳相當巨大，有些飛機的螺旋槳看起來小得多，&#xA;那麼又是哪些因素造成這些差別呢？&#xA;本篇就要來探討這些不同槳葉數量和尺寸大小對於螺旋槳性能的影響。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_計算模型&#34;&gt;計算模型&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;本篇仍舊使用前篇&#xA;&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_propeller7&#34;&gt;[&lt;a id=&#34;_footnoteref_1&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&#xA;使用過的計算程式，並稍做修改&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_2&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_2&#34; title=&#34;View footnote.&#34;&gt;2&lt;/a&gt;]&lt;/sup&gt;&#xA;以計算與比較本篇不同構型螺旋槳的性能。&#xA;並且本篇所使用的幾個分析案例也衍伸修改自前篇所使用的橢圓形槳葉案例，&#xA;只不過為了方便在槳葉的參數上做些文章，因此對於槳葉的造型做了點變化，&#xA;成為下圖(&lt;em&gt;Figure 1&lt;/em&gt;)所示的樣子。&#xA;其性能表現結果與前篇原版的橢圓槳葉螺旋槳相近但仍有所差異，&#xA;因此不建議將前後篇的性能表現互相比較。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-8/fig1-1-shape-original.png&#34; alt=&#34;fig1 1 shape original&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 1. 本篇分析所使用的基礎螺旋槳造型&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;另外本篇在性能圖表的表現方式上也有所更動。&#xA;由於前篇算是對螺旋槳分析的介紹和了解，因此對螺旋槳性能的細節描述比較詳細，&#xA;而本篇圖表將不會過份強調在細節上，而是將更加看重整體的表現結果。&#xA;首先要排除的就是螺旋槳的 K 值，也就是無因次化之後的槳距。&#xA;之前我們能在同一張圖表上看到各種不同 K 值螺旋槳的性能變化趨勢，&#xA;但是現在我們要假設這是一個可以自由變距的螺旋槳，並且在測試的過程中存在一個虛擬的駕駛員，&#xA;他會隨時調整螺旋槳的槳距，將螺旋槳盡可能的保持在最高效的位置。&#xA;以下圖(&lt;em&gt;Figure 2&lt;/em&gt;)為例，&#xA;意思等同於我計算出無限多組不同 K 值之下的結果，並取它們各自的效率最高點連線起來，&#xA;就成為一個只有 J 值(&lt;em&gt;無因次的航速與轉速比例關係&lt;/em&gt;)和效率對應關係的圖表，&#xA;而其中每一個位置的 K 值可能都是不同的。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-8/fig1-2-efficiency-profile.png&#34; alt=&#34;fig1 2 efficiency profile&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 2. 排除 K 值(或可理解為自動化 K 值)後的螺旋槳性能圖表示意&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;那麼按照上述的處理方式將本篇所使用的螺旋槳進行計算分析，&#xA;其之速度比例與效率之間的變化關係就會如下圖(&lt;em&gt;Figure 3&lt;/em&gt;)所示，&#xA;而速度比例與推力係數的變化關係就如下圖(&lt;em&gt;Figure 4&lt;/em&gt;)所示。&#xA;可以看出在 J &amp;lt; 1 的時候效率會隨著 J 值的增加而快速增加，&#xA;表現基本與前一張圖(&lt;em&gt;Figure 2&lt;/em&gt;)一致。&#xA;但是在大約 J &amp;gt; 1.5 之後效率的表現基本就持平，在大約 J = 2 的時候達到最大值，之後便緩步稍降。&#xA;至於推力的表現與 J 值之間基本就是線性變化關係，&#xA;因此在分析計算中如果為了簡化算式的話，也可以用直線去作推算近似。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;為什麼 J 值大道某一個程度之後螺旋槳效率反而會(微幅)下降呢？&#xA;因為這時候的螺旋槳已經轉的太慢了！&#xA;J 值就是航速與轉速的比例關係，因此在 J 過高的情況下就表示轉速是相當低的(&lt;em&gt;畢竟航速最大也不會達到音速&lt;/em&gt;)。&#xA;而槳葉本身本來就具有阻力，就算螺旋槳完全不轉動也仍然會有一定的基礎阻力。&#xA;意思就是說，當 J 值高到某個程度以上的時候，因為螺旋槳轉速過低，產生的推力已經非常微小，&#xA;使得在這個情況下槳葉本身的阻力在整體螺旋槳表現之中的佔比會開始被拉高凸顯出來。&#xA;於是就造成了產生的推力微小，雖然所需要的轉動功耗也是相當微小，&#xA;但是因為基礎阻力的影響比重被拉高，因此反而造成最終效率下降的結果。&#xA;不過另外一個現象也值得注意，&#xA;那就是即便在 J 過高時候的效率已經不及全局最佳效率值，但是仍然是處在高檔位的區間！&#xA;從下圖(&lt;em&gt;Figure 3&lt;/em&gt;)來看 J = 4 時的效率雖已不及 J = 2 時的最大效率，但仍是屬於高效率的區段！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-8/fig1-3-mono-efficiency-profile.png&#34; alt=&#34;fig1 3 mono efficiency profile&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 3. 本篇所使用之基礎螺旋槳的效率變化圖&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-8/fig1-4-mono-thrust-profile.png&#34; alt=&#34;fig1 4 mono thrust profile&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 4. 本篇所使用之基礎螺旋槳的推力變化圖&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_槳葉數量與寬度的影響&#34;&gt;槳葉數量與寬度的影響&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;我們前篇所分析的螺旋槳都是兩葉的，那麼採用不同的槳葉數量會有什麼不一樣呢？&#xA;與此類似的延伸問題還有，採用不同寬度的槳葉又會有什麼不同的表現呢？&#xA;為了實驗這些問題，本篇在前面設計的基礎造型之下衍伸出幾個不同造型的螺旋槳用來計算並比對。&#xA;如下圖(&lt;em&gt;Figure 5&lt;/em&gt;)所示，&#xA;兩個螺旋槳造型與本篇所使用之基礎螺旋槳完全一樣，除了槳葉數量分別增加為雙倍和四倍；&#xA;而下圖(&lt;em&gt;Figure 6&lt;/em&gt;)所示則為在槳葉的寬度上做變化。&#xA;這兩種螺旋槳的變化都達到了增加槳葉總面積的結果，其增加的槳葉面積也完全相同，&#xA;只不過前者是採用增多槳葉數量的方式，而後者是採用槳葉加寬的方式達成。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-8/fig2-1-different-blade-number.png&#34; alt=&#34;fig2 1 different blade number&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 5. 在槳葉數量上變化：左為四葉螺旋槳、右為八葉螺旋槳&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-8/fig2-2-different-blade-width.png&#34; alt=&#34;fig2 2 different blade width&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 6. 在槳葉寬度上變化：左為雙倍寬度槳葉、右為四倍寬度槳葉&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-8/fig2-3-thrust-comparison.png&#34; alt=&#34;fig2 3 thrust comparison&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 7. 幾種不同造型螺旋槳的推力表現圖&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-8/fig2-4-efficiency-comparison.png&#34; alt=&#34;fig2 4 efficiency comparison&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 8. 幾種不同造型螺旋槳的效率表現圖&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;按照前章節描述的方式將這幾種不同造型螺旋槳的性能都計算出來後，&#xA;結果就如上圖所示(&lt;em&gt;Figure 7 與 Figure 8&lt;/em&gt;)。&#xA;其中最直觀的就是推力係數直接的倍比增加了！&#xA;這很容易理解，&#xA;因為不論是增加槳葉數量或是增加槳葉寬度，都是實質上的增加了螺旋槳的槳葉面積，&#xA;因此推力成比例上漲就是意料之中的結果，並且它們各自的推力變化趨勢也大致仍是線性的。&#xA;只不過呢，從圖表中也同樣看出來螺旋槳推力的增加並不是完全的兩倍或四倍。&#xA;我們就取在 J = 2 時的數字(&lt;em&gt;如下表 Table 1&lt;/em&gt;)作為比較。&#xA;先看增加槳葉數量的案例(&lt;em&gt;就是標示為 double/quad blade number 的案例&lt;/em&gt;)，&#xA;槳葉的數量加倍後，推力係數與原來加倍前的數字相比也幾乎增加為兩倍，只不過數字略小於兩倍，&#xA;而當槳葉數量再加倍時也同樣如此。&#xA;再看增加槳葉寬度的結果(&lt;em&gt;就是標示為 double/quad blade width 的案例&lt;/em&gt;)也相同，&#xA;推力也是略小於原有基礎造型的加倍並且略小；&#xA;只不過這個「略小」比起前面增加槳葉數量的方式來說又略小的更多了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;那麼明明槳葉面積增加了，為什麼推力沒有等比例加倍呢？為什麼推力會「略小」呢？&#xA;這顯然就是當中存在一些損耗了！&#xA;因此我們再看看這幾個螺旋槳在效率上的數值差異(&lt;em&gt;Figure 8 與 Table 1&lt;/em&gt;)將會更加明顯。&#xA;我們使用作為比對的基礎螺旋槳在 J = 2 時有著 93.22% 的效率，&#xA;而將槳葉加倍之後，效率就下降到了 91.82%，再加倍則繼續下降到 89.79%；&#xA;增加槳葉寬度的方案基本趨勢是一樣的，但是效率損耗的更多！&#xA;當槳葉加寬為雙倍之後，效率下降到 90.92%，再加寬則降到 87.72%。&#xA;如果有讀者覺得這些數字看起來都很高很優秀，覺得下降的也不多啊！&#xA;那麼我們就把前篇那個竹蜻蜓式螺旋槳也拿來比較一下，&#xA;那個效能上一般會被嫌棄到爆炸的竹蜻蜓螺旋槳，它在 J = 2 的時候效率都還有個 76.09% 喔！&#xA;如果這樣一對比的話，你看這不管是增加槳葉數量還是增加槳葉寬度的方案，&#xA;雖然表現仍舊比竹蜻蜓螺旋槳好得多，但已經不再是可以忽視的性能劣化了吧？！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;table class=&#34;tableblock frame-topbot grid-all stretch&#34;&gt;&#xA;&lt;caption class=&#34;title&#34;&gt;Table 1. 取在 J = 2 時，各螺旋槳造型的性能結果列表&lt;/caption&gt;&#xA;&lt;colgroup&gt;&#xA;&lt;col style=&#34;width: 20%;&#34;/&gt;&#xA;&lt;col style=&#34;width: 20%;&#34;/&gt;&#xA;&lt;col style=&#34;width: 20%;&#34;/&gt;&#xA;&lt;col style=&#34;width: 20%;&#34;/&gt;&#xA;&lt;col style=&#34;width: 20%;&#34;/&gt;&#xA;&lt;/colgroup&gt;&#xA;&lt;thead&gt;&#xA;&lt;tr&gt;&#xA;&lt;th class=&#34;tableblock halign-left valign-top&#34;&gt;案例&lt;/th&gt;&#xA;&lt;th class=&#34;tableblock halign-left valign-top&#34;&gt;J&lt;/th&gt;&#xA;&lt;th class=&#34;tableblock halign-left valign-top&#34;&gt;K&lt;/th&gt;&#xA;&lt;th class=&#34;tableblock halign-left valign-top&#34;&gt;\(C_{thrust}\)&lt;/th&gt;&#xA;&lt;th class=&#34;tableblock halign-left valign-top&#34;&gt;\(\eta\)&lt;/th&gt;&#xA;&lt;/tr&gt;&#xA;&lt;/thead&gt;&#xA;&lt;tbody&gt;&#xA;&lt;tr&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;Original&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;1.99&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;2.16&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;0.044033&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;93.22%&lt;/p&gt;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;Double blades&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;1.99&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;2.13&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;0.072354&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;91.82%&lt;/p&gt;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;Quad blades&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;1.99&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;2.11&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;0.114512&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;89.79%&lt;/p&gt;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;Double width&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;1.99&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;2.12&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;0.064664&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;90.92%&lt;/p&gt;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;Quad width&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;1.99&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;2.10&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;0.092042&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;87.72%&lt;/p&gt;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;/tbody&gt;&#xA;&lt;tfoot&gt;&#xA;&lt;tr&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;Bambo-Copter&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;1.99&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;3.35&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;0.136954&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;76.09%&lt;/p&gt;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;/tfoot&gt;&#xA;&lt;/table&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;螺旋槳的槳葉總面積增加了，但是整體效率卻劣化了，這其中的損失主要就來自於槳葉尖端所造成的誘導氣流。&#xA;不論是螺旋槳的槳葉還是飛機的機翼，這個翼尖的誘導渦旋愈強愈大的話，對翼面性能的劣化會愈嚴重，&#xA;因而衍生的許多翼尖設計以及機翼造型都是為了減小翼尖渦流所帶來的影響。&#xA;在螺旋槳上面，每一片槳葉同樣會受到槳葉尖端的誘導渦旋帶來的影響導致性能劣化，&#xA;並且並不僅止於受到槳葉自己的誘導渦旋影響，其它槳葉所造成的誘導渦旋同樣影響著螺旋槳上的每一片槳葉，&#xA;每一片槳葉所受到的都是全部槳葉所帶來的誘導氣流疊加的結果。&#xA;因此就不難理解為什麼槳葉數量愈多之後，螺旋槳的效率就愈低了，&#xA;因為當槳葉的數量愈多的時候，槳葉與槳葉之間的距離靠得更近，彼此互相影響的效果也就愈加顯著！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;若不增加槳葉數量，而改以增加槳葉寬度的方式來增加槳葉總面積，同樣也遭遇了效率下降的結果，&#xA;其原因同樣也來自於誘導氣流！&#xA;雖然槳葉的數量一直維持在兩葉而無增加，但是槳葉寬度增加的結果同樣也會導致翼尖誘導渦旋被加強的結果；&#xA;並且雪上加霜的是，槳葉寬度的增加還導致槳葉的展弦比降低了，這又會進一步導致受到誘導氣流的影響加劇。&#xA;或者其實也可以理解為，將葉寬度增加一倍的方式其實相似於前面增加螺旋槳數量的方案，&#xA;只不過槳葉兩兩一前一後的靠在一起，那麼因為槳葉之間距離更近的關係，彼此的影響效果自然又放大了。&#xA;從實驗結果來看，增加槳葉寬度的做法帶來的性能劣化都大於增加槳葉數量的做法，&#xA;這就說明了為什麼我們眼界所及的飛機較少會在寬度等造型上去變化，而是大部份以增減槳葉數量來處理的原因了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_槳盤尺寸的影響&#34;&gt;槳盤尺寸的影響&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;除了造型的不同之外，螺旋槳常常也是有大有小，那麼不同大小的螺旋槳之間又有什麼樣的差異呢？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;首先來談談螺旋槳的性能瓶頸！&#xA;螺旋槳的轉速並不能夠無限制增加，其性能實際上會受到空氣音速的限制。&#xA;當某個地方的速度達到音速的時候，就會開始出現超音速流場所特有的「震波」問題，&#xA;這會導致螺旋槳的扭矩突然增大，以至於即便投入更高的驅動功率卻難以再增加更多推力的結果。&#xA;那麼螺旋槳的哪裡會遭遇到最大的氣流速度呢？顯然就是在槳葉的尖端了！&#xA;因此我們可以將螺旋槳的尖端速度設定為一個固定的數字，&#xA;而在此條件之下的螺旋槳效能大約就是能夠產生最大推力的狀態。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;admonitionblock tip&#34;&gt;&#xA;&lt;table&gt;&#xA;&lt;tbody&gt;&lt;tr&gt;&#xA;&lt;td class=&#34;icon&#34;&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Tip&lt;/div&gt;&#xA;&lt;/td&gt;&#xA;&lt;td class=&#34;content&#34;&gt;&#xA;其實從這裡就已經可以知道，螺旋槳的轉速受到音速的限制，槳葉尖端速度最大值差不多就在音速附近，&#xA;考量此時還必須保有一定前進氣流的情況，實際轉速還會再更低。&#xA;這就是為什麼採用螺旋槳作為動力的飛機肯定只能在音速以下飛行的原因！&#xA;對照現實，二戰末期的螺旋槳飛機極速約在 750 km/h 上下，而萬米高空的音速約為 1080 km/h，&#xA;因此螺旋槳飛機的極限航速大約為接近 0.7 馬赫的速度。&#xA;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;/tbody&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-8/fig3-1-freeflow-speed-components.png&#34; alt=&#34;fig3 1 freeflow speed components&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 9. 槳葉氣流的組成&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;如同上圖(&lt;em&gt;Figure 9&lt;/em&gt;)所示，&#xA;螺旋槳葉片上某個位置的氣流速度會受到槳葉自身的旋轉運動、以及自由氣流兩者的合成&#xA;(&lt;em&gt;為了簡化分析，誘導流的存在就先不考慮了&lt;/em&gt;)。&#xA;於是這裡假設螺旋槳尖端的氣流速度 \(V_{b_{tip}}\) 為：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ V_{b_{tip}} = \sqrt{ V_\infty^2 + \left( \frac{D_p}{2} \omega \right)^2 } = V_{sound} \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;quoteblock&#34;&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;&lt;em&gt;其中 \(V_{sound}\) 為音速，而其它相關符號定義請參閱前篇&lt;/em&gt;&#xA;&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_propeller6&#34;&gt;[&lt;a id=&#34;_footnoteref_3&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_3&#34; title=&#34;View footnote.&#34;&gt;3&lt;/a&gt;]&lt;/sup&gt;&#xA;&lt;em&gt;。&lt;/em&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;由於我們這次的比較重點放在槳盤大小造成的影響差異，因此就假設其它條件不變，&#xA;也就是說在同樣的音速和同樣的航速下進行比較。&#xA;那麼上式就能整理為：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ D_p \omega = 2 \sqrt{ V_{sound}^2 - V_\infty^2 } = Const. \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;然後我們假設有兩個除了尺寸不一樣以外其它參數完全一模一樣的螺旋槳，&#xA;一個螺旋槳槳盤直徑為 \(D_{p1}\)，其最大轉速為 \(\omega_1\)，&#xA;另一個螺旋槳的直徑和最大轉速則分別為 \(D_{p2}\) 和 \(\omega_2\)。&#xA;再假設其中第二個螺旋槳的槳盤直徑為第一個螺旋槳的 \(\gamma\) 倍，那麼：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ D_{p2} = \gamma D_{p1} \]&#xA;\[ D_{p2} \omega_2 = Const. = D_{p1} \omega_1 \]&#xA;\[ \gamma D_{p1} \omega_2 = D_{p1} \omega_1 \]&#xA;\[ \omega_2 = \frac{\omega_1}{\gamma} \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;接著就能發現一件事，無論槳盤尺寸如何放大縮小，在最大推力的條件下 J 其實是不會改變的！&#xA;如下：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ J_2 = \frac{ 2 \pi }{\omega_2} \frac{V_\infty}{D_{p2}} \]&#xA;\[ = \frac{ 2 \pi \gamma }{\omega_1} \frac{V_\infty}{ \gamma D_{p1} } \]&#xA;\[ = \frac{ 2 \pi }{\omega_1} \frac{V_\infty}{D_{p1}} \]&#xA;\[ = J_1 \]&#xA;\[ J_2 = J_1 = J \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在最大推力條件下無論槳盤尺寸如何，J 直都是一樣的，&#xA;自然的我們的虛擬自動駕駛員給它調整後的 K 值也會是一樣的；&#xA;這就表示連同其它所有相關係數都會是一樣的，因此我們無需再做其它分別處理。&#xA;那麼我們就能夠計算兩副螺旋槳的推力：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ Thrust_2 = \rho \left( \frac{\omega_2}{ 2 \pi } \right)^2 D_{p2}^4 C_{thrust} \]&#xA;\[ = \rho \left( \frac{\omega_1}{ 2 \pi \gamma } \right)^2 ( \gamma D_{p1} )^4 C_{thrust} \]&#xA;\[ = \gamma^2 \rho \left( \frac{\omega_1}{ 2 \pi } \right)^2 D_{p1}^4 C_{thrust} \]&#xA;\[ = \gamma^2 \cdot Thrust_1 \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;至此我們已經得到結果。&#xA;不同尺寸的螺旋槳(&lt;em&gt;在輸出最大推力的前提下&lt;/em&gt;)所有係數都是相同的，也就是說性能特性與效率等都是相同的，&#xA;只不過轉速會與尺寸倍率成反比，而推力會與尺寸倍率的平方成正比(&lt;em&gt;其實也就是與槳盤面積成正比&lt;/em&gt;)。&#xA;也就是說，當槳盤直徑增加為兩倍時，最大推力會增加為原有的四倍；&#xA;反方向也可說，當槳盤直徑縮減為一半時，最大推力會減少至原有的四分之一。&#xA;因此在應用上，螺旋槳的尺寸不能夠小於某個數值，&#xA;否則它可能會在死命賣力的極限運轉下都無法提供你要的最低推力&#xA;(&lt;em&gt;當然這是在不改變其它設計參數而只改變尺寸的情況下&lt;/em&gt;)！&#xA;這也是為什麼直升機的螺旋槳(旋翼)必須造的那麼大的原因！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_不同尺寸在等推力需求下的差異&#34;&gt;不同尺寸在等推力需求下的差異&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;前面探討了不同尺寸螺旋槳的性能差異，但是重點放在了極限性能的表現上；&#xA;而本節一樣要探討螺旋槳尺寸差異造成的影響，只是將條件改變為在提供同樣推力輸出的水準下。&#xA;這樣做的意義是什麼呢？&#xA;比方說我們想要設計或改裝一架飛機，這時候飛機的推力需求以及飛行條件如空速等就是不變的，&#xA;可能再強力的推力裝置也得給我們減小油門才不會讓飛機散架。&#xA;於是這就符合了本節所要討論的場景：在提供相同推力的前提下，比較不同尺寸螺旋槳的影響差異。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;其實從前面的分析結果已經可以得到關於本節關注重點下的一些有用訊息：&#xA;尺寸更大的螺旋槳能夠提供更大的推力，我們可以讓螺旋槳放鬆一點不用轉的那麼賣力，就能得到所需要的推力；&#xA;而尺寸更小的螺旋槳提供的推力比較小，會需要更加賣力的飛速運轉才能夠提供所需要的推力&#xA;(&lt;em&gt;當然是在有餘裕能夠轉的更快的前提下&lt;/em&gt;)。&#xA;由於在這樣的情況下，我們會需要手動為不同的測案調整變更轉速，以得到所設定的推力，&#xA;那麼 J 值和 K 值都會有所變化，連帶的所有性能相關係數也都會不一樣，&#xA;因此不再能夠像前面的分析一樣輕易的從數學式就能推導出結果關係。&#xA;所以這裡就直接挑選了幾個不同的螺旋槳尺寸去調整並計算性能。&#xA;螺旋槳的參數採用前面作為測試比較基礎的橢圓雙葉螺旋槳，只改變其槳盤尺寸。&#xA;不同槳盤尺寸的計算結果數據如下表(&lt;em&gt;Table 2&lt;/em&gt;)，而其所使用的一些共同條件參數則如下所列：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ \rho = 1.225 \]&#xA;\[ V_\infty = 83.33 \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;table class=&#34;tableblock frame-topbot grid-all stretch&#34;&gt;&#xA;&lt;caption class=&#34;title&#34;&gt;Table 2. 在同樣推力的運作條件下，幾種不同尺寸螺旋槳的表現比較&lt;/caption&gt;&#xA;&lt;colgroup&gt;&#xA;&lt;col style=&#34;width: 14.2857%;&#34;/&gt;&#xA;&lt;col style=&#34;width: 14.2857%;&#34;/&gt;&#xA;&lt;col style=&#34;width: 14.2857%;&#34;/&gt;&#xA;&lt;col style=&#34;width: 14.2857%;&#34;/&gt;&#xA;&lt;col style=&#34;width: 14.2857%;&#34;/&gt;&#xA;&lt;col style=&#34;width: 14.2857%;&#34;/&gt;&#xA;&lt;col style=&#34;width: 14.2858%;&#34;/&gt;&#xA;&lt;/colgroup&gt;&#xA;&lt;thead&gt;&#xA;&lt;tr&gt;&#xA;&lt;th class=&#34;tableblock halign-left valign-top&#34;&gt;\(D_p\)&lt;/th&gt;&#xA;&lt;th class=&#34;tableblock halign-left valign-top&#34;&gt;\(\omega\)&lt;/th&gt;&#xA;&lt;th class=&#34;tableblock halign-left valign-top&#34;&gt;J&lt;/th&gt;&#xA;&lt;th class=&#34;tableblock halign-left valign-top&#34;&gt;K&lt;/th&gt;&#xA;&lt;th class=&#34;tableblock halign-left valign-top&#34;&gt;\(C_{thrust}\)&lt;/th&gt;&#xA;&lt;th class=&#34;tableblock halign-left valign-top&#34;&gt;Thrust&lt;/th&gt;&#xA;&lt;th class=&#34;tableblock halign-left valign-top&#34;&gt;Efficiency&lt;/th&gt;&#xA;&lt;/tr&gt;&#xA;&lt;/thead&gt;&#xA;&lt;tbody&gt;&#xA;&lt;tr&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;1.0&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;1179.0&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;0.444&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;0.500&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;0.024532&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;1058.125&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;82.10%&lt;/p&gt;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;1.5&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;489.6&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;0.713&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;0.780&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;0.028100&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;1058.109&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;88.52%&lt;/p&gt;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;2.0&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;261.0&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;1.003&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;1.080&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;0.031286&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;1058.102&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;91.28%&lt;/p&gt;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;3.0&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;102.8&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;1.698&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;1.820&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;0.039841&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;1058.225&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;93.14%&lt;/p&gt;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;/tbody&gt;&#xA;&lt;tfoot&gt;&#xA;&lt;tr&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;4.0&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;50.3&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;2.602&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;2.830&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;0.052652&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;1058.199&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;92.91%&lt;/p&gt;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;/tfoot&gt;&#xA;&lt;/table&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;計算的結果與前面的預期相同，當螺旋槳愈大的時候，轉速就可以放的愈慢，這會讓 J 值增加，&#xA;而較大的 J 值造成的最主要差異在於效率上。&#xA;也就是說至此已經可以整理出一個結論：&#xA;在給定推力需求的條件下，選用尺寸愈大的螺旋槳則效率愈佳；&#xA;在不考慮其它比方說結構負荷與平衡性等等條件的情況下，理論上盡可能選用更大的螺旋槳是更加有利的！&#xA;即便在上面的測試案例裡，那個尺寸最大的螺旋槳效能其實已經過了最高峰在往下走了，&#xA;但是效能也依然是處在最高段位的區間！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;admonitionblock note&#34;&gt;&#xA;&lt;table&gt;&#xA;&lt;tbody&gt;&lt;tr&gt;&#xA;&lt;td class=&#34;icon&#34;&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Note&lt;/div&gt;&#xA;&lt;/td&gt;&#xA;&lt;td class=&#34;content&#34;&gt;&#xA;上面表格(&lt;em&gt;Table 2&lt;/em&gt;)裡各案例是我手動調試參數計算的，所以數字不會那麼完美相同，&#xA;不過它們之間的推力相差都在千分之一以下，基本可以算做是推力相同了！&#xA;另外，這些案例都忽略了音速造成的限制，也就是轉速無上限，&#xA;否則若不做這樣放寬的話，有些小螺旋槳可能怎樣也無法產生額定的推力！&#xA;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;/tbody&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_選擇裝配螺旋槳&#34;&gt;選擇裝配螺旋槳&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;介紹完螺旋槳的幾個主要參數和性能特性之後，&#xA;現在讓我們站在設計飛機的角度要給自己的飛機挑選安裝螺旋槳，要怎麼決定這些參數呢？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_尺寸大小&#34;&gt;尺寸大小&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;首先就是尺寸要儘量大，在能夠負擔的程度裡面愈大愈好！&#xA;在前面的分析結論裡已經知道，當推力的需求下限定出來之後，螺旋槳的最小尺寸就已經決定了，&#xA;因為更小的螺旋槳是怎樣也達不到所需要的推力的！&#xA;(&lt;em&gt;當然也可以多配幾個螺旋槳等等，這裡暫不探討這些變因&lt;/em&gt;)&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;尺寸的下限決定了，那麼上限呢？&#xA;在前面的分析圖表裡都能看得出來，站在推力與效率等性能角度來看，&#xA;更大的螺旋槳能夠帶來更大的推力上限，並且效率還更好。&#xA;當然也許有些讀著會說「且慢！」前面不是才從圖表中看到，&#xA;當螺旋槳尺寸過大到超過額定需求太多時，效率反而不是最好而是微幅下降嗎？&#xA;事是這樣沒錯，但是通常來說並不需要去擔心這個問題！&#xA;因為後面我們馬上就會知道有許多其它的因素會限制你的螺旋槳大小，也並不是想要大就能夠無限制的大；&#xA;即便真的讓你大到些許超過實際的需求了，從圖表也能看出螺旋槳的效率降低程度也僅只是稍微下降而已。&#xA;因此總結下來，絕大部份的情況下就是在條件許可的範圍內選用盡可能大的螺旋槳就行了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;那麼有哪些現實的因素會導致螺旋槳的尺寸受限呢？首先就是飛機的體量了！&#xA;用白話來說就是螺旋槳太大的時候會超出你飛機的掌握能力之外。&#xA;舉個誇張的例子，&#xA;假設你有一架機身長度和機翼寬度大約在 5 公尺左右的飛機，然後這飛機配了個直徑 20 公尺的螺旋槳，&#xA;那麼請問到時候是飛機控著螺旋槳在轉呢？還是螺旋槳在控著飛機轉呢？！&#xA;螺旋槳的尺寸愈大時，其所產生的一些奇妙的問題&#xA;&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_propeller3&#34;&gt;[&lt;a id=&#34;_footnoteref_4&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_4&#34; title=&#34;View footnote.&#34;&gt;4&lt;/a&gt;]&lt;/sup&gt;&#xA;也會變得更加明顯突出並且更難以掌控應對。&#xA;因此雖然理論上螺旋槳是更大點更好，但是飛機本身的體型其實會很自然的限制住你的螺旋槳尺寸；&#xA;如果硬要裝配個超出正常體量範圍的超大螺旋槳，&#xA;那麼你的飛機很可能會先被螺旋槳產生的那些如反扭矩等問題給鬧個半死！&#xA;這時候有些人也許會舉出手指來指著直昇機欲言又止。&#xA;是的，直昇機的大螺旋槳(旋翼)確實超出它機體的體型所正常能夠負擔的尺度，&#xA;所以直昇機的控制更加複雜且困難，&#xA;光是為了應付巨大旋翼所產生的反扭矩，就造成了那成為了直昇機標誌性特色的尾旋翼。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;第二個限制螺旋槳尺寸的因素則是起落架的長度。&#xA;除非你的螺旋槳是像直昇機那樣躺著的，&#xA;否則在常規的設計下往往必須要考慮在正常起降和地面停放的時候能讓螺旋槳懸空不觸地，&#xA;使得在中小型的飛機上面，這點要求可能會成為限制住螺旋槳尺寸的主要困難之處！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-8/fig5-1-hc3a.jpg&#34; alt=&#34;fig5 1 hc3a&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 10. 比機身的尺寸更加巨大的主旋翼搭配一個用來平衡扭矩的小尾旋翼，幾乎已經成了所有直昇機的共同特徵 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-helicopter&#34;&gt;[&lt;a id=&#34;_footnoteref_5&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_5&#34; title=&#34;View footnote.&#34;&gt;5&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-8/fig5-2-j7w1-gears.jpg&#34; alt=&#34;fig5 2 j7w1 gears&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 11. 為了將直徑達 3.4 公尺的螺旋槳架離地面，J7W1 震電戰鬥機的起落架造的特別長！ &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-j7w1&#34;&gt;[&lt;a id=&#34;_footnoteref_6&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_6&#34; title=&#34;View footnote.&#34;&gt;6&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-8/fig5-3-f4u.jpg&#34; alt=&#34;fig5 3 f4u&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 12. F4U 海盜戰鬥機標誌性的逆海鷗翼設計，就是為了在不特別加長起落架的情況下將那直徑達 4 公尺的巨大螺旋槳架離地面而存在 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-f4u&#34;&gt;[&lt;a id=&#34;_footnoteref_7&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_7&#34; title=&#34;View footnote.&#34;&gt;7&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_槳葉數量&#34;&gt;槳葉數量&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;選擇槳葉的數量大概是在搞定尺寸問題之後的第二項任務了吧！&#xA;經過前面的分析比對，我們知道槳葉的數量那是愈少愈好，&#xA;所以在沒有其它特別考量的情況下一般就是直接選用二葉螺旋槳即可。&#xA;事實上要不是因為力平衡和振動的問題無解，否則單葉螺旋槳一定會變成效率最高的選擇！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;既然雙葉就是能夠取得最佳效率的葉片數量，那為什麼還有那麼多飛機會使用更多葉的螺旋槳呢？&#xA;這就要提到驅動螺旋槳的發動機的動力上面了！&#xA;當發動機的動力超過螺旋槳所能夠消耗應付程度的時候，多出的發動機功率就會面臨無用武之地的尷尬！&#xA;怎麼說呢？和發動機的功率上限是相似的道理。&#xA;螺旋槳就是將旋轉的驅動力轉化為向後推動空氣的作用力的裝置，&#xA;所以它若能夠吃下更多的驅動力，就能夠轉換出更多的後吹驅動力；&#xA;但是這個驅動力是不是存在一個上限呢？&#xA;是不是即便驅動的動力來源其實動力充沛但螺旋槳沒法吃下更多的軸功呢？&#xA;這個問題是肯定的，並且本篇以及前篇 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt; 所分析的計算結果都已經再再顯示出這項限制。&#xA;當驅動的動力來源不斷加強的時候，我們的螺旋槳並不能夠無限制的提高槳葉攻角，畢竟槳葉也是會失速的；&#xA;而提高轉速最多也就是在葉尖出現震波的時候就達到極限了。&#xA;當然我們可以安裝上更大號的螺旋槳來消耗軸功並產生更大的推進力，&#xA;然而如前面段落所述，只寸往往已經被限制住了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;於是當發動機的功率足夠強勁時，為了在有限的尺寸大小內能夠吃下更多的發動機功率，&#xA;這時就會需要為螺旋槳增加槳葉的數量，即便這麼做是以損失螺旋槳的推進效率作為代價的；&#xA;但如同從前我所說過的，效率與功率本就常是相背的兩項屬性&#xA;&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_piston-engine7&#34;&gt;[&lt;a id=&#34;_footnoteref_8&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_8&#34; title=&#34;View footnote.&#34;&gt;8&lt;/a&gt;]&lt;/sup&gt;&#xA;。&#xA;當然增加槳葉的面積也可以達到同樣的效果，但如同前面的分析結果那樣，&#xA;將槳葉加寬的效果更劣於增加槳葉數量的方法，&#xA;因此實際上都還是以增加槳葉的數量來作為應對裝配更高功率發動機時的手段。&#xA;這就是我們看到的那些飛機為什麼會裝配更多葉螺旋槳的主要原因了！&#xA;於是當看見採用螺旋槳飛機採用的葉片數量時，基本大致就能知道它的發動機功率在什麼樣的等級。&#xA;以使用活塞發動機的情況來說，每一副螺旋槳的葉片數量大多都在雙葉到 4 葉，&#xA;部份使用更大功率發動機的飛機可以用上 5 葉到 6 葉螺旋槳，至於再更多的就罕見了；&#xA;而採用渦輪發動機的螺旋槳飛機，因為功率更加充沛的緣故，槳葉數量甚至可達 8 葉或更多。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;不過槳葉的葉片數量也並不是這麼死板而缺少彈性的，&#xA;並不是說計算下來應該對應 3 葉螺旋槳的情況就不能夠使用 2 葉或 4 葉；&#xA;只要不是跨度太大，比方說計算下來應採用 3 葉，結果你放了個 8 葉螺旋槳(&lt;em&gt;反之亦同&lt;/em&gt;)，&#xA;那麼基本不至於會有什麼太大的問題。&#xA;所以實際上其實也有不少飛機基於其它因素的考量而稍微調整變更螺旋槳的槳葉數量，&#xA;其中最常見的因素就是因為振動的關係了！&#xA;比方說著名的零式戰鬥機在設計之初所採用的便是雙葉螺旋槳，&#xA;結果在後來的試飛過程發現難纏的共振問題，&#xA;最後是換用 3 葉螺旋槳避開這個共振來解決這個問題！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-8/fig5-4-cessna172.jpg&#34; alt=&#34;fig5 4 cessna172&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 13. 採用雙葉螺旋槳的 Cessna-172 小飛機 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-cessna172&#34;&gt;[&lt;a id=&#34;_footnoteref_9&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_9&#34; title=&#34;View footnote.&#34;&gt;9&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-8/fig5-5-p40.jpg&#34; alt=&#34;fig5 5 p40&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 14. 採用 3 葉螺旋槳的 P-40 戰鬥機 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-flying-tiger&#34;&gt;[&lt;a id=&#34;_footnoteref_10&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_10&#34; title=&#34;View footnote.&#34;&gt;10&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-8/fig5-6-p51.jpg&#34; alt=&#34;fig5 6 p51&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 15. 採用 4 葉螺旋槳的 P-51 戰鬥機 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-p51&#34;&gt;[&lt;a id=&#34;_footnoteref_11&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_11&#34; title=&#34;View footnote.&#34;&gt;11&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-8/fig5-7-spitfire-mk16.jpg&#34; alt=&#34;fig5 7 spitfire mk16&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 16. 噴火戰鬥機跟著不斷換裝更強力發動機的型號進程，槳葉數量也從 2 葉開始不斷增加，圖中則為採用 5 葉螺旋槳的 Mk XVI 子型 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-spitfire&#34;&gt;[&lt;a id=&#34;_footnoteref_12&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_12&#34; title=&#34;View footnote.&#34;&gt;12&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-8/fig5-8-j7w1-propeller.jpg&#34; alt=&#34;fig5 8 j7w1 propeller&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 17. 採用 6 葉螺旋槳的 J7W1 戰鬥機 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_6&#34; title=&#34;View footnote.&#34;&gt;6&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-8/fig5-9-a6m2.jpg&#34; alt=&#34;fig5 9 a6m2&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 18. 原採用 2 葉，後因振動問題而改用 3 葉螺旋槳的零式戰鬥機 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_meseum-a6m2&#34;&gt;[&lt;a id=&#34;_footnoteref_13&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_13&#34; title=&#34;View footnote.&#34;&gt;13&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-8/fig5-10-c130h.jpg&#34; alt=&#34;fig5 10 c130h&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 19. 採用多達 8 葉螺旋槳的 C-130H 運輸機 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-c130&#34;&gt;[&lt;a id=&#34;_footnoteref_14&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_14&#34; title=&#34;View footnote.&#34;&gt;14&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_總結&#34;&gt;總結&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;本篇延續前篇的螺旋槳性能分析，&#xA;繼續分析了有關螺旋槳尺寸大小、槳葉數量、以及槳葉寬度等參數對於整體性能的表現差異。&#xA;其中螺旋槳的轉速愈低則大致上整體效率愈高，只不過轉速過份低的時候可能會導致效率微幅下降的反效果；&#xA;而螺旋槳所能產生的推力大小則主要決定於槳盤面積以及槳葉數量。&#xA;若是站在追求效率與動力的角度，則得出應在所能夠負擔的範圍內採用最大尺寸的螺旋槳為佳的結論；&#xA;而在尺寸已定的前提下若發動機功率過剩，則可以增加槳葉數量的方式，&#xA;透過效率的犧牲下降來換取能夠完整發揮發動機功率的性能空間。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;最後，本篇所使用的螺旋槳分析程式以及計算結果等資料，&#xA;都在此提供下載&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_15&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_15&#34; title=&#34;View footnote.&#34;&gt;15&lt;/a&gt;]&lt;/sup&gt;&#xA;。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;footnotes&#34;&gt;&#xA;&lt;hr/&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_1&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_1&#34;&gt;1&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E8%9E%BA%E6%97%8B%E6%A7%B3-7---%E6%80%A7%E8%83%BD%E5%88%86%E6%9E%90%E6%A1%88%E4%BE%8B/&#34;&gt;螺旋槳 7：性能分析案例&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_2&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_2&#34;&gt;2&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/files/propeller-8/propeller-comparison.tar.xz&#34;&gt;本篇文章所使用的分析程式與分析結果&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_3&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_3&#34;&gt;3&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E8%9E%BA%E6%97%8B%E6%A7%B3-6---%E6%80%A7%E8%83%BD%E8%A8%88%E7%AE%97/&#34;&gt;螺旋槳 6：性能計算&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_4&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_4&#34;&gt;4&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E8%9E%BA%E6%97%8B%E6%A7%B3-3---%E5%90%84%E7%A8%AE%E5%A5%87%E5%A6%99%E5%95%8F%E9%A1%8C/&#34;&gt;螺旋槳 3：各種奇妙問題&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_5&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_5&#34;&gt;5&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Helicopter&#34;&gt;Helicopter&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_6&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_6&#34;&gt;6&lt;/a&gt;. &lt;a href=&#34;https://ja.wikipedia.org/wiki/%E9%9C%87%E9%9B%BB&#34;&gt;震電&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_7&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_7&#34;&gt;7&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Vought_F4U_Corsair&#34;&gt;Vought F4U Corsair&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_8&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_8&#34;&gt;8&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-7---%E5%8A%9F%E7%8E%87%E8%88%87%E6%95%88%E7%8E%87/&#34;&gt;活塞引擎 7：功率與效率&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_9&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_9&#34;&gt;9&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Cessna_172&#34;&gt;Cessna 172&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_10&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_10&#34;&gt;10&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Flying_Tigers&#34;&gt;Flying Tigers&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_11&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_11&#34;&gt;11&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/North_American_P-51_Mustang&#34;&gt;North American P-51 Mustang&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_12&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_12&#34;&gt;12&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Supermarine_Spitfire&#34;&gt;Supermarine Spitfire&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_13&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_13&#34;&gt;13&lt;/a&gt;. &lt;a href=&#34;https://www.nationalmuseum.af.mil/Visit/Museum-Exhibits/Fact-Sheets/Display/Article/196313/mitsubishi-a6m2-zero/&#34;&gt;Mitsubishi A6M2 Zero&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_14&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_14&#34;&gt;14&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Lockheed_C-130_Hercules&#34;&gt;Lockheed C-130 Hercules&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_15&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_15&#34;&gt;15&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/files/propeller-8/propeller-comparison.tar.xz&#34;&gt;本篇文章所使用的分析程式與分析結果&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>螺旋槳 7：性能分析案例</title>
      <link>http://www.huoschen.idv.tw/blog/aerospace/%E8%9E%BA%E6%97%8B%E6%A7%B3-7---%E6%80%A7%E8%83%BD%E5%88%86%E6%9E%90%E6%A1%88%E4%BE%8B/</link>
      <pubDate>Mon, 13 Oct 2025 23:41:24 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/aerospace/%E8%9E%BA%E6%97%8B%E6%A7%B3-7---%E6%80%A7%E8%83%BD%E5%88%86%E6%9E%90%E6%A1%88%E4%BE%8B/</guid>
      <description>&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;繼前篇 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_propeller6&#34;&gt;[&lt;a id=&#34;_footnoteref_1&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&#xA;介紹了螺旋槳分析的計算後，本篇要來挑幾個分析案例，&#xA;給我們展示一些螺旋槳的性能表現和特性。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_竹蜻蜓式螺旋槳&#34;&gt;竹蜻蜓式螺旋槳&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-7/fig1-1-bambo-blade-propeller.png&#34; alt=&#34;fig1 1 bambo blade propeller&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 1. 簡單平直且無扭轉槳葉的單純雙葉螺旋槳&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;第一個案例就先選擇一個最單純的，最簡單的外型，長相就像上圖(&lt;em&gt;Figure 1&lt;/em&gt;)那樣。&#xA;這副螺旋槳有兩片槳葉，葉寬(也就是翼弦長)從頭到尾是一樣的，葉片就是一個簡單的矩型，&#xA;並且槳葉從頭到尾的安裝角(扭轉角、裝置角)也是一致的，&#xA;實際上這其實就是常見的玩具竹蜻蜓的槳葉造型。&#xA;其中心的槳轂區直徑為整副螺旋槳直徑的十分之一(後面其它案例也與此相同)，&#xA;並且槳葉使用的剖面翼型就是&#xA;&lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E8%9E%BA%E6%97%8B%E6%A7%B3-6---%E6%80%A7%E8%83%BD%E8%A8%88%E7%AE%97/#airfoil&#34;&gt;前篇所描述的那個翼型&lt;/a&gt;&#xA;&lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&#xA;(後面其它案例也與此相同)。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-7/fig1-2-bambo-angles-j01.png&#34; alt=&#34;fig1 2 bambo angles j01&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 2. 槳葉上的各種相關角度之分佈(J = 0.1)&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;上面這張圖(&lt;em&gt;Figure 2&lt;/em&gt;)是槳葉上有關幾個「角度」的關係圖。&#xA;橫座標是半徑，範圍從 0.1 到 1，就是從槳轂到槳尖。&#xA;藍色那條線段就是槳葉的安裝角(扭轉角、pitch)分佈，&#xA;因為這是一隻竹蜻蜓構型的螺旋槳，所以這個角度從頭到尾是一樣的。&#xA;上面標註了 K = 0.5，此為這副螺旋槳的無因次槳距參數&#xA;(&lt;em&gt;相關符號與意義請參閱前篇 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&lt;/em&gt;)，&#xA;但是這是一隻安置角固定的螺旋槳，&#xA;因為槳葉在不同半徑位置的移動速度不一樣，所以移動距離也不一樣，&#xA;意思就是實際上整片槳葉在每個半徑位置的槳距其實是不同的。&#xA;因此我選擇了在槳葉半徑 R = 0.8 的那個位置的槳距作為整副螺旋槳的代表性槳距；&#xA;至於為什麼選這個參數？看這張圖的分佈情況應該就能明白了！&#xA;另一個參數 J = 0.1 表示這隻螺旋槳所受的前進氣流非常低，&#xA;或者是航速可能並不慢但螺旋槳的轉速非常高，以至於使前進氣流的佔比非常低；&#xA;如同前篇的描述，無因次化的 J 參數並不代表實際的速度大小，而是表示空速與轉速之間的比例關係。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;因為槳角是固定的，所以圖上的藍線(Pitch (\(\beta\)))就是一條平直線。&#xA;由前進氣流與螺旋槳轉速所造成的氣流角度(圖中的橙線 E_uniform (\(\varepsilon_\infty\)))&#xA;也如預期一般往槳葉根部的地方逐漸變大。&#xA;誘導氣流所產生的誘導角(圖中的綠線 E_induced (\(\varepsilon_i\)))&#xA;則在槳葉尖端影響最大(畢竟渦流的中心就在槳葉尖端)，而愈往槳葉根部則影響愈少。&#xA;最後這些因素綜合起來的槳葉攻角(圖中的紅線 AOA (\(\alpha\)))從根部往外圍逐漸變大，&#xA;直到約在 R = 0.8 的位置達到最大值，隨後在槳葉尖端區域直線下跌。&#xA;因此大約可以判斷，整片槳葉產生有效作用的主要區域應再 R = 0.5 ~ 0.9 的位置，&#xA;到了槳葉尖端效率突降，至於在靠近根部的地方則因為旋轉移動速度偏低的緣故，參與的作用佔比較低。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;admonitionblock tip&#34;&gt;&#xA;&lt;table&gt;&#xA;&lt;tbody&gt;&lt;tr&gt;&#xA;&lt;td class=&#34;icon&#34;&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Tip&lt;/div&gt;&#xA;&lt;/td&gt;&#xA;&lt;td class=&#34;content&#34;&gt;&#xA;雖然在做數學式計算的時候通常習慣使用許多希臘字母符號，&#xA;但是因為在電腦圖表、以及程式寫作方面可能存在一些所使用文字的限制，&#xA;因此不得不採用一些簡單的名稱去對應數學式裡的符號。&#xA;這會造成在本篇以計算與圖表為主的情況下所看到的各項名稱，&#xA;可能與前篇以數學分析為主所採用的希臘符號有所不同。&#xA;為此本篇會盡可能在提及部份名稱的時候標註該名稱與前篇所採用符號的對應關係。&#xA;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;/tbody&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-7/fig1-3-bambo-angles-j04.png&#34; alt=&#34;fig1 3 bambo angles j04&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 3. 槳葉上的各種相關角度之分佈(J = 0.4)&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;當 J 值來到 0.4 的時候，也就是在有了相當比例的空速，或者在同樣空速下當轉速下降到某個程度的時候，&#xA;情況變成像上圖(&lt;em&gt;Figure 3&lt;/em&gt;)這樣。&#xA;扭轉角當然還是一樣的一條線不變，由前進氣流與轉速所造成的氣流角度變化趨勢也相同。&#xA;然而因為前進氣流過大、又葉片根部區域轉速過慢，&#xA;可以看到合成的最終氣流攻角在槳葉根部那一半的區域(R &amp;lt; 0.5)都是負的。&#xA;意思就是說，該區域在此情況下非但不能產生推力，還因為前進氣流的推動而產生阻力。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-7/fig1-4-bambo-forces-j01.png&#34; alt=&#34;fig1 4 bambo forces j01&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 4. 槳葉上的受力分佈(J = 0.1)&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;看完氣流角度後來看看槳葉所產生的力分佈(&lt;em&gt;Figure 4&lt;/em&gt;)。&#xA;整個分佈的情況基本單調並且與前面的圖表結果預期相符，&#xA;大約在 R = 0.6 ~ 0.9 的位置承擔了幾乎大半的推力與扭矩的成份。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;上面只挑了一些比較代表性的圖表讓我們細細觀察在槳葉上的分佈，&#xA;接下來讓我們將視角擴大，看一看整副螺旋槳整體，在不同槳距和速度配比之下的性能表現。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-7/fig1-5-bambo-thrust-profile.png&#34; alt=&#34;fig1 5 bambo thrust profile&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 5. 螺旋槳推力趨勢圖&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;上圖(&lt;em&gt;Figure 5&lt;/em&gt;)繪製了幾個不同槳距(不同 K 值)螺旋槳在不同速度配比(不同 J 值)下的變化曲線。&#xA;絕大部份情況下螺旋槳在航速愈高的時候(或者說轉速愈慢時)所產生的推力愈低。&#xA;這很符合預期，也符合我們日常生活的經驗，即便我們平常人開不了螺旋槳的交通工具，&#xA;在地上開車或騎腳踏車的我們也知道速度愈快的時候要升檔，&#xA;否則固定檔位的話會在速度愈快的時候愈沒力！&#xA;比較特別的是看到褐色的那條線，因為槳距高到了某一個程度，&#xA;因此當航速過低或轉速過高的時候推力反而下降；&#xA;這與我們的日常經驗也符合，過高的檔位在過低速時反而沒力；&#xA;回到螺旋槳來看的話那就是因為槳葉扭轉的角度大了，&#xA;在沒有足夠空速的情況下會導致攻角過大，並不能產生更多升力。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-7/fig1-6-bambo-power-profile.png&#34; alt=&#34;fig1 6 bambo power profile&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 6. 螺旋槳功耗趨勢圖&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;上圖(&lt;em&gt;Figure 6&lt;/em&gt;)為螺旋槳功耗曲線圖，注意不是扭力而是功耗，也就是需要消耗的發動機功率。&#xA;我們能發現不只隨著空速比例(J)愈高時推力會愈低，連功耗也會降低。&#xA;這是因為氣流的整體攻角會因為被航速給吹著而越發接近槳葉本身的裝置角，導致功耗反而降低了；&#xA;甚至於當航速繼續拉高的話，攻角還會整片變負的，功耗也會是負的，&#xA;因為這時反而是航速在推著螺旋槳轉，螺旋槳實際變成一個風車了，不只不消耗功率反而還能產生功率。&#xA;另一個現象是褐色(K = 1.4)和紫色(K = 1.2)的左側段還表現出功耗突然拉高的情況，&#xA;這就是因為裝置角大，所以在航速低或轉速高的時候氣流攻角過大，有發生氣流分離的現象，&#xA;所以導致的扭矩突升現象；&#xA;因此高檔位在低航速下不只不能產生多大的推力，還特別吃發動機功率！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-7/fig1-7-bambo-efficiency-profile.png&#34; alt=&#34;fig1 7 bambo efficiency profile&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 7. 螺旋槳效率趨勢圖&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;上圖(&lt;em&gt;Figure 7&lt;/em&gt;)是螺旋槳的效率分佈圖。&#xA;綜和前面所閱讀的分析結果，應該已經大概能夠預期到上圖的結果了，&#xA;每一個槳距配置下都有一個最適合的轉速配比可以達到最佳的效率，&#xA;並且在航速佔比愈高的時候需要愈大的槳距才能產生最佳的效率。&#xA;此外還注意到，雖然不同槳距都有各自最高的效率狀態，但是整體而言 J 值愈高是效率愈高的；&#xA;也就是說在航速愈高而螺旋槳轉速愈低的狀態下，產生的推進效率愈高！&#xA;(&lt;em&gt;這個結論是非常合理的，但可能並不符合航空愛好者或軍武愛好著的直覺印象，&lt;/em&gt;&#xA;&lt;em&gt;那是因為這個結論只單單站在螺旋槳的推動效率來看的結果(並且還並未考慮音速這項要素)，&lt;/em&gt;&#xA;&lt;em&gt;而實際上整架飛機的表現則需要綜合各零件與條件綜合之下的整體結果所致。&lt;/em&gt;)&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_扭轉的橢圓槳葉螺旋槳&#34;&gt;扭轉的橢圓槳葉螺旋槳&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;板板直直如同竹蜻蜓樣的槳葉雖然簡單廉價，但性能上存在兩大問題點。&#xA;首先是槳葉各處的氣流攻角變動範圍太大，這點在前面繪製的圖形裡都能夠看出來。&#xA;因為槳葉的圓周運動中內圈和外圈的移動速度差異過大，導致槳葉根部到尖端的氣流攻角變化量過大，&#xA;一邊可能還攻角太低達不到最佳效果，另一邊卻已經發生失速了！&#xA;要解決這個問題，我們就需要把槳葉給扭一下，&#xA;目的就是為了平衡槳葉的氣流攻角分佈，儘量使氣流攻角在整片槳葉上都接近一致而不要差異過大。&#xA;另一個問題就與一般飛機機翼一樣，是來自於葉尖渦流產生的誘導氣流，&#xA;而解決方法也與一般機翼的處理對策差不多，就是將槳葉形狀改為漸縮的造型。&#xA;那麼基於這兩點的改進就是本篇的第二個案例了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-7/fig2-1-ellipse-blade-propeller.png&#34; alt=&#34;fig2 1 ellipse blade propeller&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 8. 帶扭轉的橢圓造型槳葉螺旋槳&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這個案例將槳葉做成橢圓的形狀，如上圖(&lt;em&gt;Figure 8&lt;/em&gt;)所示。&#xA;並且槳葉本身也做了扭轉的設計，即槳葉上每個剖面位置的安裝角(Pitch (\(\beta\)))是不一樣的，&#xA;只不過這個扭轉的狀態沒法從上圖展示出來。&#xA;槳葉的扭轉方式存在多種方案，而本例則採用恆定槳距(Constant Pitch)的方案。&#xA;恆定槳距的意思就是槳葉每個位置的槳距是相同的，&#xA;並且注意這裡表達的是槳距(Pitch Length (\(\lambda\)))，而不是槳角(Pitch Angle (\(\beta\)))。&#xA;也因為槳距是一致的，這順便解決了上一個案例中的一個小問題，&#xA;就是在槳葉各處槳距不同的情況下究竟要以哪個數值作為整片槳葉的代表性槳距這件事！&#xA;那麼在這樣的扭轉設定之下，槳葉隨意一處剖面位置的翼型裝置角 \(\beta_r\) 即為：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ \beta_r = \tan^{-1}(\frac{\lambda}{ 2 \pi r }) \]&#xA;\[ \beta_r = \tan^{-1}(\frac{ D_p K }{ 2 \pi r }) \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-7/fig2-2-ellipse-angles-j02.png&#34; alt=&#34;fig2 2 ellipse angles j02&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 9. 槳葉上的各種相關角度之分佈(J = 0.2)&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-7/fig2-3-ellipse-forces-j02.png&#34; alt=&#34;fig2 3 ellipse forces j02&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 10. 槳葉上的受力分佈(J = 0.2)&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;從上面的角度分佈圖(&lt;em&gt;Figure 9&lt;/em&gt;)可以看出各種氣流角、誘導角、和最終合成的攻角等，&#xA;在整片槳葉上分佈的比較平均而沒有像上一個案例那樣落差過大，&#xA;又因為橢圓槳葉形狀的應用，在槳葉尖端也沒有出現前例那樣突然下跌的曲線；&#xA;而另一張槳葉力分佈圖(&lt;em&gt;Figure 10&lt;/em&gt;)也反應了同樣的結果，整隻槳葉的受力分佈更加均勻圓滑，&#xA;而非像前例那樣趨向於集中在某個位置上。&#xA;這樣的結果使得槳葉上比較不容易出現「這地方還沒達到最佳功效位置但那地方已經跌出最優範圍」的問題，&#xA;當在最佳氣流狀態工作時，通常是整片槳葉的氣流狀況都處在高效區域內，&#xA;使得槳葉在最佳狀態下的性能會比前例更加優秀；&#xA;但是另一方面，當槳葉氣流處在不佳位置的時候，通常就是整片槳葉大多都在這樣的狀態下，&#xA;所以這也會導致性能曲線比較陡峭，這將在下面的分析圖中可以看得出來。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-7/fig2-4-ellipse-thrust-profile.png&#34; alt=&#34;fig2 4 ellipse thrust profile&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 11. 螺旋槳推力趨勢圖&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-7/fig2-5-ellipse-power-profile.png&#34; alt=&#34;fig2 5 ellipse power profile&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 12. 螺旋槳功耗趨勢圖&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;從推力變化圖(&lt;em&gt;Figure 11&lt;/em&gt;)中能夠發現本例螺旋槳的推力隨 J 變化而升或跌的斜率比前例更大，&#xA;並且更容易出現一個波峰狀的最佳表現區(&lt;em&gt;如 K = 1.2、K = 1.4 這兩條線&lt;/em&gt;)，&#xA;並在離開該位置的左右兩邊性能都立刻下跌，這也是前段所述的原因所造成。&#xA;另外也注意到一個現象，雖然前面一直都說本例的改進比較優秀，&#xA;但是在推力係數的最大值上面本例(&lt;em&gt;最大推力係數約 0.1&lt;/em&gt;)卻沒有前例(&lt;em&gt;最大推力係數約 0.175&lt;/em&gt;)來的好！&#xA;這是因為橢圓槳的造型其實實質的減少了槳葉面積所致，&#xA;因此也許它的效率可能比較好，但是當遇到寧可犧牲效率也要榨出最大動力的情境下，&#xA;其表現卻可能不如前例的簡單平直造型！&#xA;在功耗變化圖(&lt;em&gt;Figure 12&lt;/em&gt;)上也能夠觀察出同樣的趨勢，&#xA;改進後的本例螺旋槳在適合的工作範圍內所需要消耗的功率較低，&#xA;然而在不適合的工作範圍時卻能夠比改進前的前例高出將近一倍！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-7/fig2-6-ellipse-efficiency-profile.png&#34; alt=&#34;fig2 6 ellipse efficiency profile&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 13. 螺旋槳效率趨勢圖&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;最後來看效率圖(&lt;em&gt;Figure 13&lt;/em&gt;)。&#xA;基本上似乎沒有什麼意外，一切反應的狀況都如同在前段所分析的一樣。&#xA;改進後的本例螺旋槳具有更加陡峭的效率曲線，最佳效率的作用區間明顯比改進前的竹蜻蜓更加狹窄，&#xA;然而其在最佳工況之下的最佳效率(&lt;em&gt;隨 K 值的不同，數值範圍約在 79% ~ 93%&lt;/em&gt;)&#xA;卻比前例(&lt;em&gt;數值範圍約在 57% ~ 71%&lt;/em&gt;)表現明顯更加傑出許多。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;此外還有一個現象也值得注意。&#xA;比對效率圖(&lt;em&gt;Figure 13&lt;/em&gt;)與推力圖(&lt;em&gt;Figure 11&lt;/em&gt;)能發現，&#xA;最大效率所在的 J 值與最大推力係數所在的 J 值並不在同一個位置上，&#xA;其中最大推力係數對應的 J 值都小於最大效率對應的 J 值一段距離。&#xA;並且不論是對於哪一個 K 值，或是在前面的竹蜻蜓案例上都能夠看到同樣的現象，&#xA;甚至於在本篇實驗的許多 K 值之下，要得到最大的推力係數的話，幾乎總是 J 值愈小愈好！&#xA;這現象在現實中的意義就是若我需要最佳的效率，用最省油的方式飛最遠的距離，&#xA;那就要調整速度與轉速達到最佳比例；&#xA;但是若我要的是寧犧牲效率多燒點油也要最大的推力輸出的話，那麼螺旋槳轉速就要愈高愈好，&#xA;這點與前篇&#xA;&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_propeller2&#34;&gt;[&lt;a id=&#34;_footnoteref_2&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_2&#34; title=&#34;View footnote.&#34;&gt;2&lt;/a&gt;]&lt;/sup&gt;&#xA;所描述的規律相同；&#xA;或者在轉速不變的情況下，航速愈低愈能得到更大的推力，&#xA;這也與螺旋槳在地面測試時總能得出最大推力的實際經驗相符。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_總結&#34;&gt;總結&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在前篇介紹了經典螺旋槳分析算法後，本篇使用兩個具體的範例演示了螺旋槳性能的計算與結果比較。&#xA;除了展示出螺旋槳上的氣流與性能分佈狀態之外，也展示了螺旋槳不同造形設計所產生的不同性能差異。&#xA;其中扭轉槳葉的效果使氣流在整片槳葉上的分佈更加平均合理，&#xA;但是也同樣造成當氣流狀況不佳的時候通常是整片槳葉都不佳的結果，&#xA;從而使得扭轉式槳葉對氣流的反應更加敏感而非平滑變化；&#xA;然而這點在擁有槳距調整機制乃至於恆速螺旋槳應用的情況下卻使這項問題並不那麼重要，&#xA;反而其性能峰值更佳的這個表現結果更加受人所喜愛，&#xA;這在當前眼界所及的所有螺旋槳幾乎全都採用這種設計構型的存在結果得到應證！&#xA;然而幾乎在所有性能上都表現不佳的無扭轉的、平直矩型的槳葉造型，&#xA;其實也是經常出現在我們生活中的視野範圍內。&#xA;除了因其簡單廉價低成本特性而被大量應用在竹蜻蜓等玩具、廉價風扇等用途之外，&#xA;還有一個可能一般人憶想不到的，並不廉價也不低成本卻也很愛使用這種造型的地方：&#xA;直昇機！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;並且本篇也透過更加貼近實際的空氣動力模擬計算印證了從前所整理的螺旋槳特性，&#xA;即在需求最大推力的條件下螺旋槳轉速是愈高愈好(J 值小)，&#xA;而在需求最佳效率的時候螺旋槳則要轉的愈慢愈好(J 值大)。&#xA;且若再延伸思考又會發現另一條邏輯：&#xA;螺旋槳的推力隨 J 值的增加而不斷下降，終將降至為零。&#xA;這結論也遙遙預示了以螺旋槳作為動力裝置的飛行器，終究存在某種無法跨越的飛行速度上限！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;最後，本篇所使用、及前篇所介紹的螺旋槳分析程式、以及本篇的分析案例結果資料，&#xA;都在此提供下載&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_3&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_3&#34; title=&#34;View footnote.&#34;&gt;3&lt;/a&gt;]&lt;/sup&gt;&#xA;。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;footnotes&#34;&gt;&#xA;&lt;hr/&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_1&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_1&#34;&gt;1&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E8%9E%BA%E6%97%8B%E6%A7%B3-6---%E6%80%A7%E8%83%BD%E8%A8%88%E7%AE%97/&#34;&gt;螺旋槳 6：性能計算&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_2&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_2&#34;&gt;2&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E8%9E%BA%E6%97%8B%E6%A7%B3-2---%E8%AE%8A%E8%B7%9D%E8%9E%BA%E6%97%8B%E6%A7%B3/&#34;&gt;螺旋槳 2：變距螺旋槳&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_3&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_3&#34;&gt;3&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/files/propeller-7/propeller-analysis.tar.xz&#34;&gt;本篇文章所使用的分析程式與分析結果&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>螺旋槳 6：性能計算</title>
      <link>http://www.huoschen.idv.tw/blog/aerospace/%E8%9E%BA%E6%97%8B%E6%A7%B3-6---%E6%80%A7%E8%83%BD%E8%A8%88%E7%AE%97/</link>
      <pubDate>Mon, 06 Oct 2025 17:53:32 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/aerospace/%E8%9E%BA%E6%97%8B%E6%A7%B3-6---%E6%80%A7%E8%83%BD%E8%A8%88%E7%AE%97/</guid>
      <description>&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;本篇我們要來做一件稍微硬核的事情，計算分析螺旋槳的性能！&#xA;本篇使用的是 Blade Element Theory (BET)計算法，&#xA;通常被使用來快速分析一個螺旋槳設計外型的粗略性能表現。&#xA;除了產生的總推力和需要消耗的旋轉功率之外，&#xA;也能透過分析讓我們一窺在槳葉上面的氣流分佈，&#xA;了解螺旋槳的各種參數如轉速、槳距、和飛行航速之間的消長關係，&#xA;以及誘導氣流在其中所佔據的影響力。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在往下分析計算螺旋槳的性能之前，&#xA;讀者請記得先閱讀過關於機翼剖面型的升阻力計算內容&#xA;&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_airfoil6&#34;&gt;[&lt;a id=&#34;_footnoteref_1&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;，&#xA;因為本篇的分析將以該篇之內容作為起點基礎。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;螺旋槳的槳葉與飛機的機翼並沒有本質上的不同，&#xA;都是翼片切割空氣產生相對氣流，然後氣流在翼片上產生作用力，&#xA;只不過在一般機翼上的作用力被我們叫作升力與阻力，而在螺旋槳上面它們則是推力與轉矩。&#xA;雖然螺旋槳看上去好像比常見的機翼更加複雜些，&#xA;然而若再度請出祖傳的「用力分割法」將螺旋槳槳葉切割為許多的小塊&#xA;(&lt;em&gt;如果是從我的航空系列文章一路讀下來的讀者應該已經很熟悉這種手法了&lt;/em&gt;)，&#xA;則每一塊的情況都將變得相當單純了，能夠計算了。&#xA;最後再把各小塊的計算結果加總起來，就得到了整體最後的結果。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-6/fig1-1-propeller-and-forces.jpg&#34; alt=&#34;fig1 1 propeller and forces&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 1. 螺旋槳切塊與作用力示意 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_2&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_2&#34; title=&#34;View footnote.&#34;&gt;2&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;airfoil&#34;&gt;翼剖面型&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在繼續更複雜的內容之前，首先要先來挑選將要使用在螺旋槳槳葉上的翼剖面形狀。&#xA;一個實際螺旋槳上的翼剖面通常會有好多不同的形狀，從槳葉根部到尖端的每個位置都是不同的形狀，&#xA;而在本篇的分析中為了簡單起見，整隻槳從頭到尾將只採用一個翼型。&#xA;但是在本篇及下篇使用的分析程式中是有預留能夠在不同槳葉位置使用不同翼型參數的擴展空間的，&#xA;讀者自己拿去使用的時候可以不用擔心受到本篇只使用單一翼型的限制。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;雖然這裡說的是要決定翼型，但是在分析中其實我們並不關心翼型的實際長相，&#xA;真正需要的只有該翼型的性能參數也就是升力係數(\(C_l\))與阻力係數(\(C_d\))而已。&#xA;因此在本篇與下篇的分析程式中會發現沒有任何關於翼型的外型定義設定，只有翼型的升阻對應函式或表格而已。&#xA;另外也是為了簡單起見，本篇並沒有使用實際的翼型參數表，而是使用簡單的數學式來模似翼型的性能表現。&#xA;當然這點也並不影響程式的可用性，&#xA;讀者自己拿去計算的時候同樣可以將其內容替換為實際使用的翼型參數資料。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;本篇分析所使用的模擬翼型的升阻力係數之數學表達式如下：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ \alpha_0 = -2.1 \frac{\pi}{180} \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[&#xA;C_l =&#xA;    \begin{cases}&#xA;    2 \pi ( \alpha - \alpha_0 )                                     &amp;amp; \quad \text{if } \alpha - \alpha_0 \leq 0.25 \\&#xA;    \frac{1}{2} \pi \frac{\cos( \alpha - \alpha_0 )}{\cos(0.25)}    &amp;amp; \quad \text{if } \alpha - \alpha_a0 &amp;gt; 0.25&#xA;    \end{cases}&#xA;\]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[&#xA;C_d =&#xA;    \begin{cases}&#xA;    0.224 ( \alpha - \alpha_0 )^2 + 0.006       &amp;amp; \quad \text{if } \alpha - \alpha_0 \leq 0.25 \\&#xA;    16.6944 ( \alpha - \alpha_0 )^2 - 1.0234    &amp;amp; \quad \text{if } \alpha - \alpha_0 &amp;gt; 0.25&#xA;    \end{cases}&#xA;\]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;quoteblock&#34;&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;&lt;em&gt;其中：&lt;/em&gt;&lt;br/&gt;&#xA;&lt;em&gt;\(\alpha\) 為攻角，也就是翼弦線與氣流的夾角；&lt;/em&gt;&lt;br/&gt;&#xA;&lt;em&gt;\(\alpha_0\) 為此翼型的零升力攻角。&lt;/em&gt;&lt;br/&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;將以上算式畫成圖表的話，那麼本篇所使用的翼剖面升阻參數就長成下圖(&lt;em&gt;Figure 2&lt;/em&gt; 和 &lt;em&gt;Figure 3&lt;/em&gt;)的樣子。&#xA;可看出我們所使用的模擬翼型大約在攻角 12 度左右的位置會發生流場分離現象，&#xA;大於那個角度之後的升力會開始下滑，並且阻力陡升。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-6/fig2-1-lift-plot.png&#34; alt=&#34;fig2 1 lift plot&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 2. 本篇模擬翼型之升力係數圖表&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-6/fig2-2-drag-plot.png&#34; alt=&#34;fig2 2 drag plot&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 3. 本篇模擬翼型之阻力係數圖表&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_槳盤與槳葉最簡單的分析&#34;&gt;槳盤與槳葉(最簡單的分析)&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-6/fig3-1-blade-measurement.png&#34; alt=&#34;fig3 1 blade measurement&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 4. 槳盤與槳葉的參數定義&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;上圖(&lt;em&gt;Figure 4&lt;/em&gt;)是以槳盤為參考基礎下的一些幾何有關的各參數名稱定義。&#xA;為了文章的單純化，避免過多雜亂的冗餘敘述，本篇全篇使用統一一致的名稱定義，&#xA;因此許多在前面已經交代過的名稱意義，到了後面通常就不會再重複解釋交代了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;整隻螺旋槳的盤面直徑為 \(D_p\)，&#xA;注意螺旋槳中央會有一部份的區域是會被排除在計算之外的，&#xA;那部份通常就是螺旋槳中間的整流罩或是暴露的軸心結構區(槳轂區)，&#xA;該區域的直徑為 \(D_h\)。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;我們將一片槳葉以螺旋槳軸為中心，依據不同的半徑距離將槳葉切割為許多小塊&#xA;(&lt;em&gt;切的愈多計算就愈準，至於上圖只是示意就無需較真切塊的數量&lt;/em&gt;)。&#xA;我們抓取其中被青色斜線標記的那一塊來看，&#xA;可知這一個小塊方形區域的長寬分別為 \(dr\) 和 \(c\)，面積就是 \( dr \cdot c \)。&#xA;其中 \(dr\) 的大小和小區塊分割的數量有關，區塊數量分個的愈多則 \(dr\) 愈小。&#xA;好的，這裡我大概知道你想要問什麼問題。&#xA;沒錯，這其實實際上並不會是一個真正的長方形，因為槳葉的寬度可能是漸變的；&#xA;但是這種分別切割計算的方式之所以能有效降低問題的複雜度，&#xA;就在於無視單一格子內的數字差異變化而統一視之。&#xA;因此在上面的切割圖之下，每一個小區塊內就不存在外型增寬或縮窄的問題，因此它就是個長方形。&#xA;(&lt;em&gt;也因此，這就是為什麼區塊切的愈多就算的愈準，而切的愈少則誤差愈大！&lt;/em&gt;)&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這一個槳葉小塊距離轉軸中心的距離為 \(r\)。&#xA;那麼假設螺旋槳的轉速為 \(\omega\)&#xA;(&lt;em&gt;注意這裡的轉速單位不是一般市井通用的 RPM，&lt;/em&gt;&#xA;&lt;em&gt;而是在數學計算領域中更加通用的轉速單位：每秒徑度，也就是 rad/s&lt;/em&gt;)，&#xA;那麼這個槳葉小塊因為旋轉而產生的前進速度就是 \( r \cdot \omega \)。&#xA;如果暫時先不考慮一些其它細節的話，那麼到這裡我們就什麼都有了！&#xA;這個槳葉小區塊在旋轉的迎風氣流下會產生的升力與阻力，&#xA;都能夠使用在前篇 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt; 已經介紹過的內容來做計算：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ V_b = r \cdot \omega \]&#xA;\[ dLift = \frac{1}{2} \rho {V_b}^2 ( c \cdot dr ) \cdot \mathit{C_l}(\alpha) \]&#xA;\[ dDrag = \frac{1}{2} \rho {V_b}^2 ( c \cdot dr ) \cdot \mathit{C_d}(\alpha) \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;quoteblock&#34;&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;&lt;em&gt;其中：&lt;/em&gt;&lt;br/&gt;&#xA;&lt;em&gt;\(V_b\) 為槳葉小塊所受到的相對氣流；&lt;/em&gt;&lt;br/&gt;&#xA;&lt;em&gt;\(dLift\) 為槳葉小塊產生的升力；&lt;/em&gt;&lt;br/&gt;&#xA;&lt;em&gt;\(dDrag\) 為槳葉小塊產生的阻力；&lt;/em&gt;&lt;br/&gt;&#xA;&lt;em&gt;\(\rho\) 為空氣密度；&lt;/em&gt;&lt;br/&gt;&#xA;&lt;em&gt;\(\alpha\) 為攻角，即槳葉小塊弦線與氣流之間的夾角，目前為止這個攻角就等於槳葉在該位置所造出的扭轉角度，也就是在後面會出現的 \(\beta\) 角；&lt;/em&gt;&lt;br/&gt;&#xA;&lt;em&gt;\(\mathit{C_l}()\) 為槳葉翼型的升力係數函式，代入攻角 \(\alpha\) 後得到升力係數；&lt;/em&gt;&lt;br/&gt;&#xA;&lt;em&gt;\(\mathit{C_d}()\) 為槳葉翼型的阻力係數函式，代入攻角 \(\alpha\) 後得到阻力係數。&lt;/em&gt;&lt;br/&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這樣我們就計算出了一個小區塊所產生的力，其中的升力就是槳葉推力，阻力就是槳葉阻力，&#xA;而對螺旋槳軸產生的轉動力矩則就是槳葉阻力乘上力臂長度(&lt;em&gt;也就是槳葉小塊所在的槳葉半徑位置 r&lt;/em&gt;)就是了。&#xA;那麼這單一一個小塊所產生的推力(Thrust)、轉軸扭矩(Torque)、&#xA;和需要消耗的轉動功率(Power)也就是需要發動機提供動力來對抗的功率，&#xA;以上三個數值分別就是：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ dThrust = dLift \]&#xA;\[ dTorque = dDrag \cdot r \]&#xA;\[ dPower = dTorque \cdot \omega \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;quoteblock&#34;&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;其中為了區別單一小塊和整副螺旋槳所產生的作用力，這裡給單一小塊的作用力都加上一個前綴 d。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;最後再把所有的小區塊結果通通計算出來，然後全部加一起，就是整隻槳葉的結果了。&#xA;最後的最後看這螺旋槳有幾隻槳葉，再將結果乘上槳葉數量 N，就能得到整副螺旋槳的最終結果：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ Thrust = N \sum dThrust \]&#xA;\[ Torque = N \sum dTorque \]&#xA;\[ Power = Torque \cdot \omega \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這樣有沒有覺得很簡單啊？就這麼簡單就把螺旋槳的性能給計算出來了！&#xA;原理就是這樣沒錯，不過在上面的計算中其實忽略了相當多的其它條件，&#xA;所以計算的結果會和實際上相當有落差。&#xA;不過以循序漸進的角度來看，目前這樣的程度算是夠用了，&#xA;已經足夠建立起後面要逐漸深入的前導知識概念。&#xA;那麼接著繼續往下，我們就要繼續把更多的影響因素給加進來，&#xA;複雜度會逐漸升高，但也能讓我們得到更加接近真實的東西。&#xA;那就準備好繼續往下閱讀吧！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_考慮飛行速度&#34;&gt;考慮飛行速度&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-6/fig4-1-cross-measurement-without-induced.png&#34; alt=&#34;fig4 1 cross measurement without induced&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 5. 槳葉切片小塊的剖面幾何與相關氣流參數定義&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;前面的螺旋槳分析算法過於簡單，&#xA;沒有考慮到飛機本身正在以某個速度飛行所帶來的相對氣流對螺旋槳產生的影響。&#xA;因此接下來我們就把飛機飛行的速度加入我們的計算模型內，&#xA;也就是為我們的螺旋槳加入一個垂直於盤面的氣流速度 (\(V_\infty\))，&#xA;其即為前述之飛機飛行速度所帶來的相對氣流。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在考量 \(V_\infty\) 存在的情況下，&#xA;仍然能夠沿用前面介紹過的算法概念，只需要修改調整其中的部份算式內容。&#xA;那麼這次就讓我們繼續將焦點放在其中一塊槳葉小塊，只不過從俯視的角度轉向側視，&#xA;從側面的角度觀看分析槳葉小塊的剖面、以及其上的氣流與受力，如圖(&lt;em&gt;Figure 5&lt;/em&gt;)所示。&#xA;其中槳葉的受到的相對氣流 \(V_b\) 不再完全等同於 \( r \cdot \omega \)，&#xA;而是由 \( r \cdot \omega \) 和 \(V_\infty\) 這兩個互相垂直的氣流所合成的氣流。&#xA;那麼 \(V_b\) 的大小就能夠使用直角三角形邊長的計算法，或由三角函數算法來求得&#xA;(&lt;em&gt;很明顯本篇選擇使用三角函數算法，但讀者想要自己計算驗證的話也可以嘗試使用直角三角形算法&lt;/em&gt;)，&#xA;而 \(V_b\) 與槳葉旋轉運動方向之間就會產生一個 \(\varepsilon_b\) 的夾角。&#xA;這時槳葉的氣流攻角就不再等同於槳葉安裝角(Pitch Angle (\(\beta\)))，&#xA;而是 \(\beta\) 減去 \(\varepsilon_b\) 後的夾角。&#xA;最後還要注意翼片的升阻力定義是垂直與平行氣流的力，&#xA;那麼在當前的情況下這兩個力(也就是示意圖中的 L 和 D 兩力)就和螺旋槳推力方向與轉矩方向產生了一個夾角，&#xA;在計算的時候也需要考量到這一點。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;那麼在大部份沿用前面描述的算法之下，需要調整變更的算式如下：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ \varepsilon_b = \tan^{-1}( \frac{V_\infty}{ r \cdot \omega } ) \]&#xA;\[ \alpha = \beta - \varepsilon_b \]&#xA;\[ V_b = \frac{ r \cdot \omega }{ \cos(\varepsilon_b) } \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ dThrust = dLift \cdot \cos(\varepsilon_b) - dDrag \cdot \sin(\varepsilon_b) \]&#xA;\[ dTorque = r ( dDrag \cdot \cos(\varepsilon_b) + dLift \cdot \sin(\varepsilon_b) ) \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;就這樣經過簡單的計算式調整，至於其它沒調整的部份則全部繼續沿用原有的內容，&#xA;然後我們就能夠處理具有飛行前進速度下的螺旋槳性能分析計算了！&#xA;有沒有很簡單啊？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_考慮誘導氣流&#34;&gt;考慮誘導氣流&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-6/fig5-1-propeller-vortices.jpg&#34; alt=&#34;fig5 1 propeller vortices&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 6. 螺旋槳誘導渦流示意圖 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_3&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_3&#34; title=&#34;View footnote.&#34;&gt;3&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;我們知道在運轉中的螺旋槳上面是存在誘導渦旋氣流的&#xA;&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_propeller3-phenomenon&#34;&gt;[&lt;a id=&#34;_footnoteref_4&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_4&#34; title=&#34;View footnote.&#34;&gt;4&lt;/a&gt;]&lt;/sup&gt;&#xA;。&#xA;如果說這個誘導氣流對螺旋槳造成的影響夠小的話，那麼倒是可以無視它的存在；&#xA;問題是在實際的情況中這個誘導渦旋不只存在，影響還佔相當大的比例，&#xA;如果忽略的話那結果的誤差還挺大的！&#xA;所以接下來我們就要加入考量誘導渦旋存在的情況。&#xA;這會讓整個情況變得更加複雜，且讓我們繼續研究下去……&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-6/fig5-2-cross-measurement.png&#34; alt=&#34;fig5 2 cross measurement&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 7. 加入誘導氣流後的槳葉切片剖面幾何與相關氣流參數定義&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;如同上圖(&lt;em&gt;Figure 6&lt;/em&gt;)所表示的那樣，&#xA;當螺旋槳葉片在旋轉攪動空氣的時候，槳葉產生高氣壓的一側空氣會從葉片尖端翻越過去，&#xA;形成一股從葉尖引發的渦旋，吹襲整片槳葉、以及也會同樣影響其它槳葉。&#xA;所有的一切分析概念和計算方法仍舊繼續延續前面已經得到的結果，&#xA;只不過同樣需要修改當中的一些東西，加入考量誘導氣流存在的狀況。&#xA;讓我們繼續專注於槳葉小塊的剖面視圖(&lt;em&gt;Figure 7&lt;/em&gt;)。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在這張圖片(&lt;em&gt;Figure 7&lt;/em&gt;)中，雖然看上去好似有些複雜，但其實基本都和前一張圖是一模一樣的，&#xA;只不過多了一個由誘導流所產生的氣流(\(V_i\))，&#xA;至於 \(V_{i\infty}\) 和 \(V_{i\theta}\) 則是 \(V_i\) 在推力軸上和葉片旋轉方向上的分量。&#xA;另外要注意到 \(V_i\) 是垂直於最終氣流 \(V_b\) 的，而不是平行於自由氣流 \(V_\infty\)，&#xA;原因與升力阻力的方向定義建基自由流相同。&#xA;另外還有一個神奇的問題，這個誘導流 \(V_i\) 到底多大呢？&#xA;剩下的兩個氣流都很容易取得，一個就是飛機行進的速度而另一個就是螺旋槳旋轉的速度乘上半徑，&#xA;但就惟獨不知道這個誘導流的大小到底是何？&#xA;關於這部份是有些困擾但不大，&#xA;我們先暫時放下誘導流的大小到底多大的這個問題，待到後面再回來想辦法解決。&#xA;因此接下來我們就先暫時忽略 \(V_i\) 到底怎麼算的部份，就先假定我們已經使用魔法知道它多大了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;那麼在解決了 \(V_i\) 怎麼得來的問題後，&#xA;\(V_i\) 就成了個已知數，同樣的誘導角 \(\varepsilon_i\) 也就連帶為已知，&#xA;那麼剩下的事情就好辦了！&#xA;在延續前面考慮了飛行速度所得出的計算概念和算法之下，進一步我們需要修正下面這幾條計算：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ \varepsilon_\infty = \tan^{-1}( \frac{V_\infty}{ r \cdot \omega } ) \]&#xA;\[ \varepsilon_b = \varepsilon_\infty + \varepsilon_i \]&#xA;\[ V_i = r \cdot \omega \frac{\sin(\varepsilon_i)}{\cos(\varepsilon_\infty)} \]&#xA;\[ V_{i\theta} = V_i \sin(\varepsilon_b) \]&#xA;\[ V_{i\infty} = V_i \cos(\varepsilon_b) \]&#xA;\[ V_b = r \cdot \omega \frac{\cos(\varepsilon_i)}{\cos(\varepsilon_\infty)} \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;你看，很簡單吧！&#xA;建立在前面的基礎之下，僅僅修改這麼一點點東西就能夠套用了！&#xA;(&lt;em&gt;當然這時候少不了一點點苦笑&lt;/em&gt;)&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_求解誘導流&#34;&gt;求解誘導流&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;前面我們蒙著眼睛假裝已經知道誘導流的大小，並且整理完了剩下的所有計算。&#xA;然而這個誘導流不能夠一直懸而未解啊！&#xA;如果要真實的完成所有的計算去分析一個螺旋槳，總歸還是得面對這個問題。&#xA;那麼本節就來繼續解決關於求解誘導流的這個問題，補上最後這一塊拼圖。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;關於這個問題我們使用基於環流理論的研究成果來解算&#xA;(&lt;em&gt;就是好久以前我曾簡單介紹過的那個&#xA;&lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E7%BF%BC%E5%9E%8B%E7%B3%BB%E5%88%97-3---%E9%82%A3%E4%BA%9B%E5%8D%87%E5%8A%9B%E5%8E%9F%E7%90%86%E5%93%AA%E8%A3%A1%E9%8C%AF%E4%BA%86/#circulation&#34;&gt;環流理論&lt;/a&gt;&#xA;&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_airfoil3&#34;&gt;[&lt;a id=&#34;_footnoteref_5&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_5&#34; title=&#34;View footnote.&#34;&gt;5&lt;/a&gt;]&lt;/sup&gt;&#xA;，&#xA;這次終於給大家演示一遍實際應用了&lt;/em&gt;)。&#xA;根據 Goldstein’s Vortex Theory&#xA;&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_goldstein&#34;&gt;[&lt;a id=&#34;_footnoteref_6&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_6&#34; title=&#34;View footnote.&#34;&gt;6&lt;/a&gt;]&lt;/sup&gt;&#xA;：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ N \Gamma \cong 4 \pi r f V_{i\theta} \]&#xA;\[ \Gamma = \frac{1}{2} V_b \cdot c \cdot \mathit{C_l}(\alpha) \]&#xA;\[ f = \frac{2}{\pi} \cos^{-1} \left\{ \exp\left( \frac{ -N \left( 1 - \frac{ 2 r }{D_p} \right) }{ 2 \sin(\beta_t) } \right) \right\} \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;quoteblock&#34;&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;&lt;em&gt;其中：&lt;/em&gt;&lt;br/&gt;&#xA;&lt;em&gt;\(\Gamma\) 就是當下這個槳葉小塊所產生的環流強度；&lt;/em&gt;&lt;br/&gt;&#xA;&lt;em&gt;\(f\) 為 Prandtl’s tip loss factor；&lt;/em&gt;&lt;br/&gt;&#xA;&lt;em&gt;\(\beta_t\) 則為槳葉尖端翼型的扭轉角 \(\beta\)。&lt;/em&gt;&lt;br/&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;稍微整理調整一下上面的計算式可得：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ N \Gamma - 4 \pi r f V_{i_\theta} = 0 \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;仔細左看右看思考一下就會發現上面這條式子裡面所有的數都是已知的，除了 \(\varepsilon_i\) 之外。&#xA;那麼一個方程式只有一個未知數，肯定能夠求解了！&#xA;基本上個人覺得上面的方程式對於程式寫作來說算是比較友好的，&#xA;但如果讀者不把它展開會犯強迫症，或者不習慣到處來回參閱相關的其它計算式的話，&#xA;那麼也是可以將這個方程式所需要用到的前面那些計算式全部代入進來並展開，&#xA;那麼就會得到下面這條式：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ \frac{N c}{16 r} \mathit{C_l}( \beta - \varepsilon_\infty - \varepsilon_i ) - \cos^{-1} \left\{ \exp \left( \frac{-N \left( 1 - \frac{2 r}{D_p} \right)}{2 \sin(\beta_t)} \right) \right\} \tan(\varepsilon_i) \sin( \varepsilon_\infty + \varepsilon_i ) = 0 \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;把算式展開以後，&#xA;應能更加看得清楚整條式裡面真的就只有 \(\varepsilon_i\) 這麼一個數是未知的，肯定可以求解了！&#xA;只不過請先別緊張，雖然理論上這條式子能夠求解，&#xA;但是這看上去這麼複雜的方程式，真的要分析解的話應該會先去掉半條命吧！&#xA;於是面對這種方程式，我們通常會請出真正的魔法工具出來解算。&#xA;那麼這種聽起來好像很厲害的解法到底是怎麼解算呢？&#xA;說出來可能能讓你正在喝的水噴出來，核心秘訣就一個字：猜！&#xA;是的，就是這麼樸實無華。&#xA;那個方程式右邊不是零嗎？&#xA;那我們就給 \(\varepsilon_i\) 隨便猜一個數字代入方程式左邊算一算，最後算出來的結果肯定不是零；&#xA;但是我們一直繼續猜，不斷的猜，最後總會找到一個數字能讓計算的結果等於零或者相當接近於零，&#xA;那麼我們就當作最後這個能讓計算結果接近於零的 \(\varepsilon_i\) 就是方程式解了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;admonitionblock tip&#34;&gt;&#xA;&lt;table&gt;&#xA;&lt;tbody&gt;&lt;tr&gt;&#xA;&lt;td class=&#34;icon&#34;&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Tip&lt;/div&gt;&#xA;&lt;/td&gt;&#xA;&lt;td class=&#34;content&#34;&gt;&#xA;上面的解算方法看著描述好像有點無厘頭，&#xA;然而這其實就是所謂的數值計算方法(Numerical Methods)。&#xA;那些使用電腦的計算力來求解複雜函式的方法核心其實也就是猜，&#xA;只不過使用了可能更有效率，猜的更快的猜法策略而已。&#xA;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;/tbody&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;搞定了 \(\varepsilon_i\) 解算的問題之後，剩下來的事情我們都已經知道該如何做了。&#xA;把 \(\varepsilon_i\) 數值代入進去，槳葉小塊的各力就能計算出來，&#xA;再匡匡一頓操作，整副螺旋槳的性能數據也就順手做出來了！&#xA;當然相關的計算量會相當龐大，&#xA;除了因為把槳葉大量切成一塊一塊本身就是相當的計算量之外，每一個小塊為了求解誘導角還得反覆橫猜。&#xA;不過這時候請千萬不要說什麼用手算要算到天荒地老之類的話，&#xA;因為作為我們現代人，這種苦工沒有人在自己用手算的，請妥善利用電腦來做這種苦差事！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_效率&#34;&gt;效率&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;至此我們已經有能力把一副螺旋槳的推力、扭力等性能給計算出來，接下來介紹如何計算螺旋槳的效率。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;螺旋槳的效率是什麼意思呢？就和齒輪傳動的效率是一樣的！&#xA;如果類比套用我從前介紹過發動機效率的原理&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_7&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_7&#34; title=&#34;View footnote.&#34;&gt;7&lt;/a&gt;]&lt;/sup&gt;&#xA;，&#xA;那麼螺旋槳其實也能是一個黑盒子機器，&#xA;它的作用就在於將旋轉形式的機械能量，轉換為向後加速空氣並推動飛機前進的能量。&#xA;那麼在這樣的能量轉換過程裡面可能就會產生一些損失，&#xA;而存在損失的話，自然就會有損失多還少的問題，也就是轉換效率多少的問題。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-6/fig6-1-prop-stream.png&#34; alt=&#34;fig6 1 prop stream&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 8. 管道中的螺旋槳推動氣體向後移動&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;要計算螺旋槳效率，首先要計算的就是轉換前、後的能量是多少，也就是輸入與輸出的能量是多少？&#xA;輸入螺旋槳的功率其實我們已經知道了，就是前面計算式裡面的 Power，也就是螺旋槳的扭力乘上轉速；&#xA;那麼輸出呢？&#xA;螺旋槳的最終作用就是推動氣體向後移動，如同上圖(&lt;em&gt;Figure 8&lt;/em&gt;)所示，&#xA;因此螺旋槳的推力乘上氣體移動的速度就是螺旋槳的輸出功率了。&#xA;推力多少我們已經知道了，那麼氣體移動速度是多少呢？&#xA;欸～這可不就是前面已經設定好的自由氣流的速度了嗎(&lt;em&gt;其實也可以理解為就是飛機前進的速度&lt;/em&gt;)？&#xA;於是螺旋槳的推進效率(\(\eta\))就是：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ \eta = \frac{ Thrust \cdot V_\infty }{ Torque \cdot \omega } \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_係數化&#34;&gt;係數化&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;現在我們終於把一副螺旋槳的性能數據都能計算出來了，包含推力、扭矩、功率和效率等，&#xA;但是還尚缺少最後的一步，那就是將這些數據給係數化；&#xA;至於係數化的意義如同&#xA;&lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E7%BF%BC%E5%9E%8B%E7%B3%BB%E5%88%97-6---%E5%8D%87%E9%98%BB%E4%BF%82%E6%95%B8/#why-coefficient&#34;&gt;前篇的介紹&lt;/a&gt;&#xA;&lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&#xA;一樣，&#xA;是為了儘量降低螺旋槳性能數據與其它變量的牽扯關係，儘量讓數據只和螺旋槳的設計本身有關係。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;首先來對尺寸的部份進行無因次化。&#xA;為了讓螺旋槳的尺寸相關數字與具體的尺寸單位、乃至於與具體的螺旋槳大小無關，&#xA;我們將所有的尺寸相關數字都轉化為某個螺旋槳最具代表性尺寸的比例關係，&#xA;而這個最具代表性的尺寸就是槳盤直徑 \(D_p\)。&#xA;因此我們用數值範圍在 0 ~ 1 的比例 R 來取代具體的半徑 r：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ R = \frac{ 2 r }{D_p} \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;螺旋槳的螺距或槳距(\(\lambda\))就是把螺旋槳當螺絲來看的話，旋轉一圈所推進的距離，&#xA;而這個距離我們也改用與槳盤直徑的比例關係 K 來替代：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ K = \frac{\lambda}{D_p} \]&#xA;\[ \lambda = 2 \pi r \tan(\beta) \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;然後是關於槳葉的旋轉速度與自由氣流速度，從前介紹過槳距以及槳距調整的相關內容&#xA;&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_propeller2&#34;&gt;[&lt;a id=&#34;_footnoteref_8&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_8&#34; title=&#34;View footnote.&#34;&gt;8&lt;/a&gt;]&lt;/sup&gt;&#xA;，&#xA;我們知道這兩者之間的消長關係與螺旋槳的性能表現可影響太大了。&#xA;但是再仔細分析又發現，該二者的具體數值真正是多是少其實影響不大，&#xA;真正重要的其實是兩者的比例關係(也就是反應在前面所有算式裡面的 \(\varepsilon_\infty\))。&#xA;於是我們用一個兩者速度的比例關係值 J 來取代對於前述兩個速度的表達：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ J = \frac{ 2 \pi }{\omega} \frac{V_\infty}{D_p} \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;再來就是整副螺旋槳的推力係數(\(C_{Thrust}\))、扭矩係數(\(C_{Torque}\))、和功耗係數(\(C_{Power}\))了：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ C_{Thrust} = \frac{Thrust}{ \rho \left( \frac{w}{ 2 \pi } \right)^2 D_p^4 } \]&#xA;\[ C_{Torque} = \frac{Torque}{ \rho \left( \frac{w}{ 2 \pi } \right)^2 D_p^5 } \]&#xA;\[ C_{Power} = \frac{ Torque \cdot \omega }{ \rho \left( \frac{w}{ 2 \pi } \right)^3 D_p^5 } = 2 \pi \cdot C_{Torque} \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;最後的效率(\(\eta\))其實本身已經就是無因次量了，無需多做轉換。&#xA;但是除了使用原始的推力功耗等數據來計算之外，在已經擁有上述各項係數值的前提下，&#xA;也可以從這些係數簡單計算出來：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ \eta = \frac{ Thrust \cdot V_\infty }{ Torque \cdot \omega } = \frac{C_{Thrust}}{C_{Power}} J \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_結語&#34;&gt;結語&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;本篇介紹了在螺旋槳分析用途上相當經典的 Blade Element Theory 演算法，&#xA;是學術分析以及早年的設計分析上相當重要的設計分析方法，&#xA;可以在直接上材料做風洞實驗之前就能夠先算出來相當具有指標性的大致結果。&#xA;當然在現代計算流體力學(CFD)的大量應用之下，&#xA;可以更細緻且準確的模擬出實際流場會發生的實際現象，也能讓設計人員更加直觀的看出一些流場細節，&#xA;因此讓這個經典分析算法的重要性下降了(&lt;em&gt;從那些參考文獻的時間都在二次大戰之前大概就能夠看出來&lt;/em&gt;)。&#xA;然而這個經典算法雖然重要性下降但還是相當有用的，&#xA;它在現代可能更大的價值在於快速分析一個陌生螺旋槳外型的性能參數估算，&#xA;或者在螺旋槳設計的前期可以非常快速的得出幾個不同方案之間的性能估計。&#xA;畢竟相比於建模、建網格、輸入條件參數然後正兒八經的跑 CFD，&#xA;本篇介紹的這個經典的算法可太簡單快速方便彈性了！&#xA;在下一篇將要進行的實際按例分析就可以看出來，若將那些分析全都使用 CFD 去跑，那可真是耗時耗力的啊！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;最後再來談談屬於我的心路歷程。&#xA;其實本篇所介紹的演算法，就是我在大學時期某一堂課的學期作業。&#xA;記得在學期結束的時候，整個年級就兩個人交出了這份作業，在那個時候可讓我相當得意的呢！&#xA;時隔多年，為了製做本篇內容，我又將埋藏多年的程式碼給挖了出來。&#xA;當時那份程式碼是用 Fortran 寫的，我就以 Python 重寫了一遍，&#xA;還順手發現了舊程式碼裡面其實存在有一些小錯誤！&#xA;時隔多年重新進行同樣的工作，心中頗有感觸。&#xA;想當年在學校偶然聽聞在低年級的同學老師間流傳說我是「Fortran 大神」，&#xA;但其實在畢業之後真正做上第一份工作就知道只是個菜鳥中的菜鳥。&#xA;多年之後雖然也稱不上什麼真正的大神，倒是肯定自信是個具有相當經驗的老鳥。&#xA;再回過頭來寫程式碼，發覺許多心態都變了，&#xA;對於設計的思想哲學和各種矛盾取捨之間的調和甚至與以往能是完全相反的！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;對於本篇多次提到的這個計算程式，&#xA;由於篇幅的關係，本篇就只介紹演算法，待到下一篇再進行一些實際的分析展示。&#xA;因此相關的計算程式和結果資料也同樣就放到下一篇再開放下載了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;footnotes&#34;&gt;&#xA;&lt;hr/&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_1&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_1&#34;&gt;1&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E7%BF%BC%E5%9E%8B%E7%B3%BB%E5%88%97-6---%E5%8D%87%E9%98%BB%E4%BF%82%E6%95%B8/&#34;&gt;翼型系列 6：升阻係數&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_2&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_2&#34;&gt;2&lt;/a&gt;. &lt;a href=&#34;https://zhuanlan.zhihu.com/p/102102204&#34;&gt;知识科普 | 对螺旋桨你了解多少？&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_3&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_3&#34;&gt;3&lt;/a&gt;. &lt;a href=&#34;https://www.sciencedirect.com/topics/engineering/bladed-propeller&#34;&gt;Bladed Propeller&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_4&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_4&#34;&gt;4&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E8%9E%BA%E6%97%8B%E6%A7%B3-3---%E5%90%84%E7%A8%AE%E5%A5%87%E5%A6%99%E5%95%8F%E9%A1%8C/&#34;&gt;螺旋槳 3：各種奇妙問題&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_5&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_5&#34;&gt;5&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E7%BF%BC%E5%9E%8B%E7%B3%BB%E5%88%97-3---%E9%82%A3%E4%BA%9B%E5%8D%87%E5%8A%9B%E5%8E%9F%E7%90%86%E5%93%AA%E8%A3%A1%E9%8C%AF%E4%BA%86/&#34;&gt;翼型系列 3：那些升力原理哪裡錯了？&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_6&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_6&#34;&gt;6&lt;/a&gt;. &lt;a href=&#34;https://reports.aerade.cranfield.ac.uk/handle/1826.2/1418&#34;&gt;The Application of Goldstein’s Theory to the Practical Design of Airscrews&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_7&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_7&#34;&gt;7&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-7---%E5%8A%9F%E7%8E%87%E8%88%87%E6%95%88%E7%8E%87/&#34;&gt;活塞引擎 7：功率與效率&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_8&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_8&#34;&gt;8&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E8%9E%BA%E6%97%8B%E6%A7%B3-2---%E8%AE%8A%E8%B7%9D%E8%9E%BA%E6%97%8B%E6%A7%B3/&#34;&gt;螺旋槳 2：變距螺旋槳&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>翼型系列 6：升阻係數</title>
      <link>http://www.huoschen.idv.tw/blog/aerospace/%E7%BF%BC%E5%9E%8B%E7%B3%BB%E5%88%97-6---%E5%8D%87%E9%98%BB%E4%BF%82%E6%95%B8/</link>
      <pubDate>Sun, 31 Aug 2025 01:09:28 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/aerospace/%E7%BF%BC%E5%9E%8B%E7%B3%BB%E5%88%97-6---%E5%8D%87%E9%98%BB%E4%BF%82%E6%95%B8/</guid>
      <description>&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;本篇要來說明如何從機翼剖面的幾個係數去計算升力阻力等作用力。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;為什麼會隔了這麼多時間後突然更新翼型系列的文章呢？&#xA;原來我是沒有計劃寫這篇，本來的翼型系列在寫完第五篇就算完結了。&#xA;機翼的各種係數和升阻力等的內容已經偏向計算細節，&#xA;對於科普介紹理解的目的來說已經遠超出所需要的知識範圍。&#xA;但是最近正在進行螺旋槳系列的寫作，即將要進行一些性能計算分析，&#xA;正好就會需要計算葉面的升阻力，就發現還是得先交代一下翼剖面升阻力的計算相關議題。&#xA;當然也可以忽略這些不去解釋而直接套用結果計算式，&#xA;但是這麼做的話很可能會讓那些除了曾經學習過相關知識的人之外的其他人感到困惑不解，&#xA;而如果在螺旋槳篇章裡面去交代這些東西的話又會讓文章過度龐雜，&#xA;因此判斷有必要以獨立的主題去交代這些有關的事情。&#xA;於是就這麼誕生了翼型系列經過多時之後的新篇主題。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_作用力之計算與相關定義&#34;&gt;作用力之計算與相關定義&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil6/fig1-1-airfoil-definition.png&#34; alt=&#34;fig1 1 airfoil definition&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 1. 機翼剖面、氣流與作用力定義&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;如上圖(&lt;em&gt;Figure 1&lt;/em&gt;)所示為一個機翼剖面形狀在氣流中與其所產生作用力之關係圖。&#xA;其中剖面形的前緣端點到後緣端點之間的連線叫作「翼弦」(Chord)，其長度也就是弦長。&#xA;翼弦就是翼剖面形的基線，凡與機翼的尺寸、或與氣流之關係等之描述，皆是以其作為基準。&#xA;前方吹來的氣流我們有時候稱為「自由流」(Free Stream)，其速度通常即為飛機前進的速度；&#xA;而其與翼弦之間的夾角則為「攻角」(Angle of Attack (AOA))，仰頭向上為正，低頭向下為負。&#xA;氣流吹過機翼會產生作用力，其垂直於自由流的分量即稱為「升力」(Lift Force)，&#xA;升力可能為正可能為負，比方機翼負攻角低頭達某個程度的時候，產生的升力就是向下的負升力；&#xA;而作用力平行於自由流的分量稱為「阻力」(Drag Force)，阻力只能是正的，&#xA;至少在目前人類能造出來的實物裡面不可能產生負阻力的狀況。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;最後就是力矩的部份，氣流吹過機翼時不只產生作用力，還產生了作用力矩(Moment)，&#xA;在一般通常的常見情況下產生的是使機翼低頭扭轉的力矩；&#xA;但是上圖力矩的方向怎麼畫反了呢？！那不是畫反了，而是因為定義的關係！&#xA;因為攻角定義仰首方向為正，因此力矩的方向也就同樣定義以仰首為正了，&#xA;否則力矩和攻角的定義會互相衝突。&#xA;這就是為什麼下面我們將要看到的一堆力矩係數基本全都是負值的原因了！&#xA;另外，既然提到力矩那就不能不交代其之基準中心點。&#xA;一般情況下我們定義機翼上各種力與力矩作用的中心點，是在翼弦上的前方四分之一位置處，&#xA;這個地方稱為「氣動中心」(Aerodynamic Centre (AC))；&#xA;至於為什麼氣動中心定義在這裡，而不是定義在力矩為零的整體作用力中心上？&#xA;這個後面再談。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;知道了翼型剖面相關的定義之後，我們要如何計算各種作用力的大小呢？&#xA;這時候我們還需要知道幾個係數，也就是&#xA;「升力係數」(Lift Coefficient (\(C_l\)))、&#xA;「阻力係數」(Drag Coefficient (\(C_d\)))、和&#xA;「力矩係數」(Mement Coefficient (\(C_m\)))。&#xA;其實詳細來說這不是三「個」係數，而是三張圖表，你從哪裡取得的翼型資料通常會有這些數據；&#xA;而如果沒有的話，恐怕就得自己做實驗來得到了！&#xA;有了係數之後，其對應的力和力矩就能通過下列的計算式算得：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ L = \frac{1}{2} \rho V^2 S C_l \]&#xA;\[ D = \frac{1}{2} \rho V^2 S C_d \]&#xA;\[ M = \frac{1}{2} \rho V^2 S c C_m \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;quoteblock&#34;&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;&lt;em&gt;其中：&lt;/em&gt;&lt;br/&gt;&#xA;&lt;em&gt;\(L\) 為總升力；&lt;/em&gt;&lt;br/&gt;&#xA;&lt;em&gt;\(D\) 為總阻力；&lt;/em&gt;&lt;br/&gt;&#xA;&lt;em&gt;\(M\) 為總力矩；&lt;/em&gt;&lt;br/&gt;&#xA;&lt;em&gt;\(\rho\) 為空氣密度；&lt;/em&gt;&lt;br/&gt;&#xA;&lt;em&gt;\(V\) 為自由流速度；&lt;/em&gt;&lt;br/&gt;&#xA;&lt;em&gt;\(S\) 為機翼投影面積；&lt;/em&gt;&lt;br/&gt;&#xA;&lt;em&gt;\(c\) 為翼弦長。&lt;/em&gt;&lt;br/&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;其實其中的那個 \( \frac{1}{2} \rho V^2 \) 在空氣動力學上面就是動壓，&#xA;若以 Q 表示動壓的話，那麼上面的計算式還能寫的更為簡潔：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ L = Q S C_l \]&#xA;\[ D = Q S C_d \]&#xA;\[ M = Q S c C_m \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;不過實際上其實並沒有看上去那麼簡單單純。&#xA;前面有說到，這其實不是三個係數而是三個係數表，&#xA;這些係數實際上會隨著攻角(AOA)的變化而不同。&#xA;此外機翼在不同的雷諾數&#xA;(Reynolds Number &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_1&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;)&#xA;下的係數表也有所不同，&#xA;不過本篇我並不想展開解釋關於雷諾數的部份，那也不是三言兩語能說得清的，&#xA;如果讀者不知道什麼是雷諾數的話，可以姑且理解為就是自由氣流的速度&#xA;(&lt;em&gt;至少在我們所專注的應用裡，雷諾數與其它參數的影響關聯較小些&lt;/em&gt;)。&#xA;所以粗淺來說，我們可以簡化理解為某個機翼剖面形的這些係數只會與攻角產生對應關係！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil6/fig1-2-chord-and-span.jpg&#34; alt=&#34;fig1 2 chord and span&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 2. 矩型機翼的尺寸與面積 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_2&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_2&#34; title=&#34;View footnote.&#34;&gt;2&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;上圖(&lt;em&gt;Figure 2&lt;/em&gt;)就是一架採用矩形翼的小飛機，我們可以清楚的看到它的剖面形狀。&#xA;我們所說的機翼面積一般就是指機翼的平面投影形狀的面積，&#xA;以上圖的矩形翼來說那就是翼剖面弦長(Chord)乘上翼展寬度(Span)的結果，&#xA;計算出來的這個面積就是在前面算式中需要代入的機翼投影面積，簡稱機翼面積。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;當然對矩形翼來說是如此簡單，但如果其它要計算的飛機它的機翼沒有這麼中規中矩呢？&#xA;比方說梯形翼、三角翼、橢圓翼，還有現代很多難以描述的融合形狀？&#xA;對於這些機翼形狀比較奔放的飛機來說，&#xA;我們就需要找到一個可以代表整片機翼綜和結果的「平均翼弦」；&#xA;至於這個平均翼弦該如何計算如何找？&#xA;甚至於如果機翼端部是一個剖面形，根部又是另一個剖面形，&#xA;從頭到尾用的不是同一個翼剖面又該怎麼計算？&#xA;這就已經超出本篇專注的範圍之外了，就不深入探討細節。&#xA;況且實際上的三維機翼計算還不是這麼簡單乘上面積就完事了，&#xA;因為你還得考慮&#xA;&lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E8%9E%BA%E6%97%8B%E6%A7%B3-3---%E5%90%84%E7%A8%AE%E5%A5%87%E5%A6%99%E5%95%8F%E9%A1%8C/#wingtip-vortices&#34;&gt;翼尖誘導渦旋氣流&lt;/a&gt;&#xA;&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_propeller3&#34;&gt;[&lt;a id=&#34;_footnoteref_3&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_3&#34; title=&#34;View footnote.&#34;&gt;3&lt;/a&gt;]&lt;/sup&gt;&#xA;所造成的升阻力消長。&#xA;因此本篇的重點還是放在二維空間上專注對於翼剖面形的計算。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_實際案例與分析&#34;&gt;實際案例與分析&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;前面已經交代了翼剖面三係數與作用力的計算，但是這三係數怎麼來的呢？&#xA;正常來說對於任何一個翼剖面形丟給你，你得去做實驗才能得到這些係數的圖表，&#xA;好在有些機構有公開發佈一些翼型的實驗結果，&#xA;使我們可以不用真的造模型出來去吹風洞就能直接取用現成的資料。&#xA;其中最為著名的大概就是美國 NACA (也就是家喻戶曉的 NASA 機構的前身)&#xA;公佈了許多該機構研究的翼型的資料，包括翼型幾何形狀以及實驗結果等。&#xA;這大概就是為什麼許多自製飛機等用途大多愛用 NACA 幾號幾號翼型的原因吧！&#xA;同樣基於不想自己動手做實驗的原因，本篇也就直接挑選了 NACA 系列翼型來作為分析按例。&#xA;本篇所使用的翼型資料以及實驗圖表等都擷取自 1945 年出版的「Summary of Airfoil Data」&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_4&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_4&#34; title=&#34;View footnote.&#34;&gt;4&lt;/a&gt;]&lt;/sup&gt;&#xA;這份報告，有需要深入研究的讀者可以自行前往下載。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;本篇所挑選的主要翼型型號是 NACA 2412，&#xA;一款中規中矩的翼型，它的長相就像下圖(&lt;em&gt;Figure 3&lt;/em&gt;)那樣，&#xA;此外還有一些其它作為對比的翼型長相如另一張圖(&lt;em&gt;Figure 4&lt;/em&gt;)所示。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil6/fig2-1-naca2412-shape.png&#34; alt=&#34;fig2 1 naca2412 shape&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 3. NACA 2412 翼剖面型&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil6/fig2-2-airfoils-shape.png&#34; alt=&#34;fig2 2 airfoils shape&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 4. 作為對比的數款 NACA 翼剖面型&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_升力係數&#34;&gt;升力係數&lt;/h3&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil6/fig2-3-naca2412-cl.png&#34; alt=&#34;fig2 3 naca2412 cl&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 5. NACA 2412 升力係數圖表&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil6/fig2-4-airfoils-cl.png&#34; alt=&#34;fig2 4 airfoils cl&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 6. 其它幾款翼型升力係數圖表&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;上圖(&lt;em&gt;Figure 5&lt;/em&gt;)就是 NACA 2412 的升力係數圖表，&#xA;另外一張(&lt;em&gt;Figure 6&lt;/em&gt;)則是可作為比較對比的，其它幾種翼型的升力係數圖表。&#xA;(&lt;em&gt;參考文件裡面收錄了大量翼型的實驗資料，&lt;/em&gt;&#xA;&lt;em&gt;所以可能是由於節省版面的原因，原圖將升力係數與力矩係數畫在同一張圖表裡。&lt;/em&gt;&#xA;&lt;em&gt;為了讓沒有接觸過相關領域的人不會被它混亂的內容所迷惑，&lt;/em&gt;&#xA;&lt;em&gt;我做了一些淡出處理，使讀者可以一眼看出應該要聚焦或可以忽略的部份。&lt;/em&gt;)&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;可以看到升力係數與攻角之間基本就是呈線性關係，&#xA;在攻角高到一定程度的地方升力係數會掉下來，那是因為氣流已經分離(失速)了，&#xA;這點以前有解釋過&#xA;&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_airfoil2&#34;&gt;[&lt;a id=&#34;_footnoteref_5&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_5&#34; title=&#34;View footnote.&#34;&gt;5&lt;/a&gt;]&lt;/sup&gt;&#xA;。&#xA;同樣的，低頭(負攻角)到一定程度也會發生失速，&#xA;於是在那裡也同樣產生了一個升力係數線圖的回凹現象&#xA;(&lt;em&gt;對比的那張圖則沒有將實驗數據覆蓋到負攻角失速的區間&lt;/em&gt;)。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;長相不同的翼型們升力係數的表現似乎都是驅同的，&#xA;較大的差別只在失速攻角的不同，以及升力線彼此之間有一段距離的平移關係。&#xA;這是因為機翼主要就是通過折轉自由氣流來產生升力的原理&#xA;&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_airfoil1&#34;&gt;[&lt;a id=&#34;_footnoteref_6&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_6&#34; title=&#34;View footnote.&#34;&gt;6&lt;/a&gt;]&lt;/sup&gt;&#xA;，&#xA;這就是為什麼升力與攻角呈線性關係(&lt;em&gt;在氣流不分離的相對小範圍內&lt;/em&gt;)的主要原因，&#xA;也因此不同形狀的翼型之間在此作用上沒有太多根本性的差別。&#xA;不同翼型之間的差異主要體現在氣流的流暢性上面，&#xA;也就是在阻力的表現上，以及所導致的失速攻角不同，失速緩和程度不同的表現上；&#xA;至於在正常攻角範圍內的升力表現則不會有太大的差別。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;因此當我們說「某些翼型適合低速使用，在低速下能產生更多升力」時，&#xA;這個描述其實並不是嚴格正確，因為各種翼型的升力係數趨勢基本是一樣的！&#xA;嚴格正確的解釋應該是說某些翼型&#xA;可以容許更高的攻角(&lt;em&gt;當然這時得從理論的零升力基準開始算&lt;/em&gt;)使用而不失速，&#xA;所以所謂能產生更大升力的本質其實來自於更大的邏輯攻角。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil6/fig2-5-zero-lift-aoa.png&#34; alt=&#34;fig2 5 zero lift aoa&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 7. 帶弧翼型在某個負攻角時產生零升力，該攻角即為「零升力攻角」&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;不同翼型之間的升力線段還呈現出平移的差異，這主要是因為翼型的彎曲度所造成的。&#xA;機翼產生升力的根本原理是由於折轉了自由流所產生的反力，這個反力與偏折氣流的角度成正比。&#xA;而翼型的彎曲度就相當於給氣流偏折的效果，雖然零攻角的時候翼型看上去是平擺著的，&#xA;然而因為彎曲弧的存在，氣流吹過之後就會因此產生偏折 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_6&#34; title=&#34;View footnote.&#34;&gt;6&lt;/a&gt;]&lt;/sup&gt;。&#xA;也就是說這個彎曲弧相當於已經給了一個基準的氣流偏角，&#xA;要使機翼不產生側向力(升力)，也就是整體不偏折自由流，&#xA;則機翼應當低頭到某一個角度才會產生這樣的結果(如上圖 &lt;em&gt;Figure 7&lt;/em&gt; 所示意)。&#xA;也就是說，其實那個不產生升力的角度才是理論上的基準狀態，&#xA;也就是純理想的零攻角理論上應該是這種狀態；&#xA;但是現實上因為我們定義的攻角是翼弦與自由流的夾角，而非零升力基準線與自由流夾角，&#xA;因此這兩者之間就自然存在一個偏移量。&#xA;這就是導致不同翼型之間升力線段彼此可能存在一個攻角偏移量的原因。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;既然從實驗數據中知道升力與攻角呈線性關係，&#xA;至少在未達或甚至未接近失速時的「正常工作攻角區間」內是如此，&#xA;那麼在許多的計算用途中，我們就可以將升力係數簡化為下列關係式：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ C_l = {C_l}_\alpha ( \alpha - {{\alpha_C}_l}_0 ) \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;quoteblock&#34;&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;&lt;em&gt;其中(前面已經解試過的相同符號就不再重複解釋)：&lt;/em&gt;&lt;br/&gt;&#xA;&lt;em&gt;\(\alpha\) 為攻角；&lt;/em&gt;&lt;br/&gt;&#xA;&lt;em&gt;\({{\alpha_C}_l}_0\) 即是「零升力攻角」(Zero Lift AOA)，就是在此攻角下產生之升力為零；&lt;/em&gt;&lt;br/&gt;&#xA;&lt;em&gt;\({C_l}_α\) 為一個比例常數。&lt;/em&gt;&lt;br/&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;既然都已經有了確實的實驗數據了，&#xA;為什麼我們還要弄出一個既不完全準確，還只能在有限的操作攻角內有效的關係式出來呢？&#xA;這有兩個好處，首先是整理歸納出來的關係式可以讓我們從更加直觀的角度閱讀數值之間的關係；&#xA;再來則是在許多數學方程的解算中，一條關係算式肯定是比一個查表表格更加好用的多！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_阻力係數&#34;&gt;阻力係數&lt;/h3&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil6/fig2-6-naca2412-cd.png&#34; alt=&#34;fig2 6 naca2412 cd&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 8. NACA 2412 阻力係數圖表&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil6/fig2-7-airfoils-cd.png&#34; alt=&#34;fig2 7 airfoils cd&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 9. 其它幾款翼型阻力係數圖表&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;上圖(&lt;em&gt;Figure 8&lt;/em&gt;)是 NACA 2412 的阻力係數圖表，&#xA;以及另外一張圖(&lt;em&gt;Figure 9&lt;/em&gt;)是數種翼型的阻力係數圖表作為比較使用。&#xA;相較於不同翼型在升力表現上驅同，在阻力的表現則有些百花齊放了。&#xA;原因就如同前面在升力係數部份所解釋的內容，&#xA;不同形狀的翼型主要差異在於氣流的流暢度不同，因此就全體現在阻力上了！&#xA;並且不只是形狀的不同能導致阻力表現上的差異，連不同的雷諾數都能導致阻力的表現產生出相當大的差異。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;其實在人類向天空探索的早期，對於飛行器的設計是大量借鑑(&lt;em&gt;抄襲&lt;/em&gt;)了已經飛的很好的資優同學：鳥類，&#xA;其中就包括了機翼剖面的形狀基本也是從抄襲模仿開始。&#xA;這個現象一直延續到大約萊特兄弟的時代，才漸漸被更加科學的研究成果所更新。&#xA;當時的人們在試驗中發現這個機翼的效果怎麼並不怎麼好啊？！&#xA;明明鳥類經過億萬年的演化，這個形狀應該是就最高效最優秀的(&lt;em&gt;事實上也真的是&lt;/em&gt;)，&#xA;可怎麼放到飛機上卻完全不是這麼回事？&#xA;喔，原來是因為雷諾數差距太大了啊！&#xA;人類自己建造的飛機，無論在體型大小上或是在飛行速度上，都和常見的鳥類差距頗大，&#xA;也因此導致原本經過億萬年千錘百鍊的最佳造型突然換個地方就效果差強人意的結果。&#xA;這就是為什麼現代飛機機翼的剖面形狀和鳥類的翼剖面形狀差別相當大的主要原因了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;回到圖表來，&#xA;注意上面的圖表是呈現升力係數對應阻力係數的關係，而非攻角對應阻力係數的關係，&#xA;主要因素應該也是因為那份報告因為版面的因素而將圖表給合併了，&#xA;而我也沒有大費周章去修改這份圖表。&#xA;不過也正好因為這樣的圖表佈局，可以讓我們清楚的觀察到翼型的阻力與升力成高度關聯性。&#xA;與升力係數關係式類同，人們也歸整出了阻力係數的關係式：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ C_d = {C_d}_0 + k C_l^2 \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;quoteblock&#34;&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;&lt;em&gt;其中：&lt;/em&gt;&lt;br/&gt;&#xA;&lt;em&gt;\({C_d}_0\) 就是在零升力狀態下的阻力，也就是該翼型的最小基礎阻力；而&lt;/em&gt;&lt;br/&gt;&#xA;&lt;em&gt;\(k\) 為一個比例常數。&lt;/em&gt;&lt;br/&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_力矩係數&#34;&gt;力矩係數&lt;/h3&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil6/fig2-8-naca2412-cm.png&#34; alt=&#34;fig2 8 naca2412 cm&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 10. NACA 2412 力矩係數圖表&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil6/fig2-9-airfoils-cm.png&#34; alt=&#34;fig2 9 airfoils cm&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 11. 其它幾款翼型力矩係數圖表&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;上面同樣也是 NACA 2412 的力矩係數圖表(&lt;em&gt;Figure 10&lt;/em&gt;)，&#xA;和其它數種翼型的力矩係數圖表(&lt;em&gt;Figure 11&lt;/em&gt;)。&#xA;翼剖面上的力矩主要是因為翼型的彎曲弧度所造成的。&#xA;氣流因為翼弧的緣故被機翼給繞著甩了一下畫了個弧，因此反作用力就形成了在機翼上的這個力矩。&#xA;如果機翼的上下表面是對稱的，那兩邊畫的這個弧造成的力矩就可以彼此對削掉，&#xA;所以對稱翼的力矩係數通常就在零左右。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;另外一種說法是說，&#xA;在機翼上的綜和合力施力中心其實一般不在我們所定義的支點中心(&lt;em&gt;也就是翼弦的前方 25% 位置處&lt;/em&gt;)上，&#xA;因此在存在力臂的情況下自然導致產生一個轉動力矩。&#xA;這個說法也不能說不對，如果這樣能比較容易想像的話倒也是可以這麼理解&#xA;(&lt;em&gt;；只不過實際照這想法分析計算的話，會在帶弧機翼的負升力情況下得到令人匪夷所思的現象，&lt;/em&gt;&#xA;&lt;em&gt;有興趣的讀者可以自己嘗試看看，很好玩的！&lt;/em&gt;)&#xA;但是借用這個思路，也能夠解釋為什麼一般都將升力中心設定在翼弦前段四分之一的位置上。&#xA;因為將參考支點放在這個位置的話，會發現無論攻角怎麼變化(&lt;em&gt;當然還是得在「正常操作區間範圍」內&lt;/em&gt;)，&#xA;那麼這個力矩就幾乎是無變化的，也就是力矩與攻角無關，力矩係數基本會是個常數。&#xA;這個現象可太重要了，否則若我們將支點中心定義在其它位置上的話，&#xA;那麼在後續各種計算上需要參考計算的項目就會更多，會讓計算分析更加複雜！&#xA;而將支點定義在這個巧妙的位置上，在許多計算分析上就可以將力矩假設為常數，&#xA;或甚至在有些情況下可以不用考慮它的存在！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;因此這個翼弦前方四分之一的位置，就被我們定義為「氣動中心」(Aerodynamic Centre (AC))，&#xA;是在進行飛機設計或其它各種計算分析時，我們所假定的作用力中心位置。&#xA;比照升力係數與阻力係數，我們也來歸納個力矩係數的關係式。&#xA;不過既然力矩不會隨攻角變化，因此其實力矩係數就是個常數：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ C_m = const. \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;最後補充一些小內容。&#xA;其實實際製造的各種奇形怪狀翼型畢竟與純理論相較還是存在許多流場上的細節差異，&#xA;因此若讀者有仔細閱讀本篇所參考的那份報告的話(&lt;em&gt;至於本篇內文的圖表就沒有探討這麼細了&lt;/em&gt;)，&#xA;就會發現其實每一個翼型的真實氣動中心位置是不一樣的，&#xA;連同個翼型在不同雷諾數下的氣動中心位置都有差異！&#xA;而那份文件其實都有分別做出兩個不同參考位置的力矩係數圖表，&#xA;一個以四分之一翼弦為中心，一個以實際的氣動中心為中心；&#xA;只不過兩圖表之間數據機本沒什麼起眼的差距。&#xA;這告訴我們其實嚴格意義上的氣動中心和我們一般所簡單定義的四分之一弦位置並不相同，&#xA;並且氣動中心的位置其實在不同條件下是會變化的；&#xA;不過因為這兩者之間的差異實在真不是很大，因此一般通常簡單起見，&#xA;人們大多還是直接假定四分之一翼弦位置處大約就是氣動中心所在位置。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;延伸上面的補充內容，氣動中心其實在不同的情況下是會移動的，&#xA;只不過通常這個變化太小，因此一般會直接忽略這方面的影響。&#xA;但是有的時候這個移動量會相當大，以致人們無法忽略！&#xA;比方在超音速情況下，氣動中心的位置就會在大約 50% 翼弦的位置，也就是翼弦的中央。&#xA;這個巨大且無法忽略的變化，&#xA;導致那些能夠超音速飛行的飛機往往會需要在姿態穩定和姿態控制上面下比較多功夫，&#xA;因為次音速飛行和超音速飛行時的平衡位置存在相當大的差距。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;why-coefficient&#34;&gt;為什麼要係數化？&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;不知有沒有讀者存在這樣的疑問：&#xA;為什麼要使用係數呢？直接告訴我們機翼的升力多少、阻力多少，這樣不簡單純粹嗎？&#xA;看升力係數多少、阻力係數多少，好像不符合一般人的直覺，倒不如直接告訴你升力多少牛、阻力多少牛；&#xA;甚至於可能更多一般人熟悉的力單位也不是牛，而是公斤或噸。&#xA;反正做實驗直接量出來的肯定也是力的大小，還要轉換計算一下才會變成係數，&#xA;然後使用的人也同樣要轉換計算回來才會變成力。&#xA;那麼使用係數的意義何在呢？為什麼科研領域都喜歡告訴你係數呢？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;直接使用最終的力大小(或者最原始的力大小)，感覺好像比較直覺簡單，然而實際上其實比較複雜干擾！&#xA;怎麼說呢？因為具體力的大小和太多因素有關了！&#xA;比方說你要造一架飛機，看上的那個翼型有升力 100 牛，可是你的飛機需要 1000 牛，&#xA;那麼你的機翼得造多大？是不是得先看看那個翼型在測試的時候用的是多大的機翼再轉換計算一下？&#xA;這還是已經選定了翼型的情況下，要是還沒選定翼型呢？&#xA;A 翼型 50 牛、B 翼型 100 牛、C 翼型 10 牛，但是最後可能是 A 翼型用在你的飛機上升力最大！&#xA;啊？因為三個翼型在試驗的時候可能用的面積不一樣、或者風洞吹的風速可能也不一樣。&#xA;或者你朋友說他造了一個翼型比你現在用的升力數字更大，結果你拿來用之後卻發現結果並沒有比原本用的更好，&#xA;才發現原來你朋友是放在水裡面測試的，水的密度大那當然作用力也大了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;所以其實可能和很多非工程學界的人想像的不同，係數化的意義其實就是在進行純粹化，降低複雜度。&#xA;係數化(&lt;em&gt;或者更有學問叫作「無因次化」&lt;/em&gt;)的目的就是排除其它非關鍵參數的具體量值，而只凸顯那最關鍵的特徵。&#xA;你會發現在上面那些計算式和實驗數據圖表之下，&#xA;各係數的差異與具體的空氣流速、空氣密度、和翼面積大小等沒有關係，而只與翼型的「形狀」有關係；&#xA;也就是&lt;strong&gt;係數之間的比較能夠單純顯示出不同形狀設計之間的性能優劣，而最大程度排除其它不相干的因子&lt;/strong&gt;。&#xA;至於具體應用上能產生多少力？把你的實際應用條件套進去一算就知道了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;footnotes&#34;&gt;&#xA;&lt;hr/&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_1&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_1&#34;&gt;1&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Reynolds_number&#34;&gt;Reynolds Number&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_2&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_2&#34;&gt;2&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Airfoil&#34;&gt;Airfoil&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_3&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_3&#34;&gt;3&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E8%9E%BA%E6%97%8B%E6%A7%B3-3---%E5%90%84%E7%A8%AE%E5%A5%87%E5%A6%99%E5%95%8F%E9%A1%8C/&#34;&gt;螺旋槳 3：各種奇妙問題&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_4&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_4&#34;&gt;4&lt;/a&gt;. &lt;a href=&#34;https://ntrs.nasa.gov/citations/19930090976&#34;&gt;Summary of Airfoil Data&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_5&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_5&#34;&gt;5&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E7%BF%BC%E5%9E%8B%E7%B3%BB%E5%88%97-2---%E6%A9%9F%E7%BF%BC%E6%B5%81%E5%A0%B4%E7%8F%BE%E8%B1%A1/&#34;&gt;翼型系列 2：機翼流場現象&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_6&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_6&#34;&gt;6&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E7%BF%BC%E5%9E%8B%E7%B3%BB%E5%88%97-1---%E6%A9%9F%E7%BF%BC%E5%8D%87%E5%8A%9B%E5%8E%9F%E7%90%86/&#34;&gt;翼型系列 1：機翼升力原理&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>螺旋槳 5：前拉或後推</title>
      <link>http://www.huoschen.idv.tw/blog/aerospace/%E8%9E%BA%E6%97%8B%E6%A7%B3-5---%E5%89%8D%E6%8B%89%E6%88%96%E5%BE%8C%E6%8E%A8/</link>
      <pubDate>Sat, 26 Jul 2025 17:58:32 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/aerospace/%E8%9E%BA%E6%97%8B%E6%A7%B3-5---%E5%89%8D%E6%8B%89%E6%88%96%E5%BE%8C%E6%8E%A8/</guid>
      <description>&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;相信在資訊發達的現代，讀者們大多曾見過一些長相比較怪異特別非主流的飛機造型，&#xA;也許會注意到其中有些飛機的螺旋槳是放在飛機後面的，這是為什麼呢？&#xA;螺旋槳放後面有什麼好處？又為什麼大部份飛機螺旋槳都放前面呢？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-5/fig1-1-cessna172.jpg&#34; alt=&#34;fig1 1 cessna172&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 1. 使用前拉佈局的螺旋槳飛機 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_1&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-5/fig1-2-velocity-xl.jpg&#34; alt=&#34;fig1 2 velocity xl&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 2. 使用後推佈局的螺旋槳飛機 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_2&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_2&#34; title=&#34;View footnote.&#34;&gt;2&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;其實螺旋槳放飛機前面或後面都是可以的，最常見的就是把螺旋槳放在飛機前面，&#xA;這樣螺旋槳產生的動力就在機頭將飛機往前方拉動，因此這種配置就被叫作「前拉」式；&#xA;相對的，螺旋槳放在飛機後面，產生的動力就將飛機往前方推動，因此這種配置就被叫作「後推」式。&#xA;為什麼有些飛機採用前拉，而有些飛機採用後推呢？&#xA;前拉與後推螺旋槳的主要差異在於性能的表現上。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-5/fig1-3-propeller-at-front.png&#34; alt=&#34;fig1 3 propeller at front&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 3. 前拉佈局的螺旋槳氣流與飛機質心示意圖 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_3&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_3&#34; title=&#34;View footnote.&#34;&gt;3&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-5/fig1-4-propeller-at-rear.png&#34; alt=&#34;fig1 4 propeller at rear&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 4. 後推佈局的螺旋槳氣流與飛機質心示意圖 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_4&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_4&#34; title=&#34;View footnote.&#34;&gt;4&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;螺旋槳加速空氣因此會產生一股高速氣流，&#xA;在一般常見的前拉式配置下正好直吹後方的機體，產生更多的阻力消耗&#xA;(因為阻力與氣流的速度平方成正比)；&#xA;而若將螺旋槳佈置在機體後面，則正好避免了被氣流消耗而增加阻力的問題。&#xA;雖然螺旋槳前方也會吸引氣流，這個氣流也同樣會吹拂機身而產生阻力，&#xA;但如同在介紹&#xA;&lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E8%9E%BA%E6%97%8B%E6%A7%B3-3---%E5%90%84%E7%A8%AE%E5%A5%87%E5%A6%99%E5%95%8F%E9%A1%8C/#jet-stream&#34;&gt;螺旋槳噴流&lt;/a&gt;&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_5&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_5&#34; title=&#34;View footnote.&#34;&gt;5&lt;/a&gt;]&lt;/sup&gt;&#xA;時所解釋過的，&#xA;前方吸氣的範圍比較大，且流速相對低得多，影響相對小得多。&#xA;因此，採用螺旋槳後推佈局可以減少不必要的氣流阻力消耗，提高推進效率，&#xA;能夠飛的更快，也能夠飛的更遠。&#xA;這就是那些飛機之所以採用後推佈局的主要考量因素，可能也是後推佈局的唯一優點！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;那麼既然如此，後推佈置方式看上去如此優秀，為什麼大部份的飛機都沒有採用後推式佈局呢？&#xA;這就來看看後推佈局有哪些缺點或副作用了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_低速性能&#34;&gt;低速性能&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;不論是機翼的升力或者是舵面的工作效力都是直接和氣流的速度有關的，&#xA;具體原理可以參考我曾經做過的機翼升力原理系列文章&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_6&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_6&#34; title=&#34;View footnote.&#34;&gt;6&lt;/a&gt;]&lt;/sup&gt;&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_7&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_7&#34; title=&#34;View footnote.&#34;&gt;7&lt;/a&gt;]&lt;/sup&gt;&#xA;，&#xA;翼面所產生的力大小與氣流速度的平方成正比，無論是升力或阻力皆同。&#xA;因此當氣流速度愈低時，機翼產生的升力愈低，舵面產生的控制力道也愈低。&#xA;也就是說在低速狀態時，飛機的操控能力會比較差，&#xA;除此之外甚至於可能因為升力不足而無法將飛機舉升離地，&#xA;而前拉式佈局正好(稍微的)改善了這個問題！&#xA;在考量飛機飛行速度較低的情況下，前拉螺旋槳正好製造了一股強烈的高速氣流吹過後面的機翼與尾翼，&#xA;使得即便在空速較低的情況下(當然低或高都是相對的)，&#xA;操控性具有一定程度的保留而不至於完全失去控制，機翼也能在螺旋槳氣流的作用下得到更多的升力。&#xA;而後推式螺旋槳在同樣低速狀態下的飛機控制能力就會比較差，&#xA;甚至因為無法獲得足夠的升力而不能夠維持飛行。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;簡單來說就是前拉式螺旋槳可以在(相對於後推式)更低一些的飛行速度下達到升空條件，&#xA;也就是起飛距離更短些，進場降落的速度也更低些，&#xA;而後推式螺旋槳則相較需要更長的起降距離與更高的進場速度；&#xA;即便是在足以維持飛行的低速狀態下，前拉式螺旋槳可以保有一定程度的姿態控制能力，&#xA;而後推式螺旋槳則相對操控性較差，甚至可能會失去對飛機姿態的操控能力。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_機翼佈局&#34;&gt;機翼佈局&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;對於飛機來說，發動機是挺重的，尤其特別對於輕型小型飛機而言。&#xA;以前拉式佈局來說，發動機往機頭一放(&lt;em&gt;因為機械結構的關係，發動機通常都得和螺旋槳放一起&lt;/em&gt;)，&#xA;整個飛機的重心就被往前拉了(參考上圖 &lt;em&gt;Figure 3&lt;/em&gt;)。&#xA;這樣的重心位置可正好適合最傳統的尾翼式機翼佈局，將尾翼設計在長長機身的尾端。&#xA;正好因為力臂足夠長，因此尾翼並不需要太大的面積就能夠提供足夠的穩定性與操控性。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;那如果是後推佈局呢？&#xA;螺旋槳和發動機往後面一擺，得，整個飛機的重心往後拉了(參考上圖 &lt;em&gt;Figure 4&lt;/em&gt;)！&#xA;因為飛機的重心相當靠後，機體後面力臂過短，所以尾翼的面積必須得要造的相當大，無端增加阻力消耗。&#xA;此外可能比這個更大的問題是，螺旋槳擺在那裡礙事，尾翼要怎麼放呢？&#xA;這就是為什麼我們通常見到的後推螺旋槳飛機通常都會採用鴨翼佈局的緣故。&#xA;因為飛機的重心太過靠後，後面沒有足夠的機身距離來作為穩定控制的力臂，&#xA;相反的重心前方的機身長度夠長，反而非常適合將穩定翼放在機身前方，&#xA;因此特別適合採用鴨翼佈局。&#xA;鴨式佈局本身具有一些缺點，&#xA;比方說設計與使用上的難度與限制比較多，極限條件的操控性不如尾翼佈局好等等。&#xA;嚴格說起來這其實是屬於機翼佈局的缺點而非螺旋槳後置的缺點，&#xA;然而因為前面描述過的原因使得使用螺旋槳後推佈局的飛機往往不得不搭配採用鴨式佈局，&#xA;使得這些缺點也默默連結成了後推佈局的缺點。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;admonitionblock tip&#34;&gt;&#xA;&lt;table&gt;&#xA;&lt;tbody&gt;&lt;tr&gt;&#xA;&lt;td class=&#34;icon&#34;&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Tip&lt;/div&gt;&#xA;&lt;/td&gt;&#xA;&lt;td class=&#34;content&#34;&gt;&#xA;什麼是鴨式佈局？這是飛機的空氣動力穩定性佈局的一種型式。&#xA;關於氣動穩定性的部份實非三言兩語能夠說得清，也超出了以螺旋槳為主題的內容範圍，&#xA;因此這裡只對於名詞作簡單的解釋。&#xA;主機翼只提供飛機所需要的升力，而飛機的穩定性則需要專職穩定作用的小翼來提供。&#xA;一般最常見的穩定翼都是放在飛機的尾端，因此被稱為「尾翼」，這種佈局就稱為「尾翼佈局」；&#xA;相對的，將穩定翼放在飛機前端的情況就被稱為「前翼」，這種佈局就稱為「前翼佈局」。&#xA;由於採用前翼佈局的長相看著和鴨子的神韻有些相像，因此這種佈局又被稱為「鴨式佈局」，&#xA;因而前翼也就同樣得到了「鴨翼」這樣的稱呼。&#xA;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;/tbody&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;那麼如果我就是情有獨鍾傳統尾翼佈局，有沒有辦法在使用後推螺旋槳的情況下仍然使用尾翼佈局呢？&#xA;答案是這樣也不是不行！&#xA;一般通常有兩種狀況或方法可以在後推佈局的情況下使用尾翼佈局。&#xA;首先是當飛機的體型足夠大時，螺旋槳與發動機佈局和機翼佈局兩者的連結性就能脫勾，&#xA;例如下圖(&lt;em&gt;Figure 5&lt;/em&gt;) B-36 轟炸機就屬於這樣的例子。&#xA;而若飛機體型嬌小，還只有單螺旋槳，還要堅持使用尾翼佈局，那就只能用第二種方法了。&#xA;加幾根延長結構去在空間上繞過螺旋槳的阻礙，然後將尾翼放在更後面的位置，&#xA;例如下圖(&lt;em&gt;Figure 6&lt;/em&gt;) XP-54 戰鬥機就是這樣的例子。&#xA;當然這第二種做法會產生額外的副作用，如重量增加、額外的阻力和干擾等，&#xA;至於其副作用帶來的劣性影響是否值得划算？就得看計算的結果以及設計者的權衡了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-5/fig3-1-b36.jpg&#34; alt=&#34;fig3 1 b36&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 5. 後推螺旋槳設計但仍採用常規機翼佈局的 B-36 轟炸機 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_8&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_8&#34; title=&#34;View footnote.&#34;&gt;8&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-5/fig3-2-xp54.jpg&#34; alt=&#34;fig3 2 xp54&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 6. 後推螺旋槳設計但仍採用常規機翼佈局的 XP-54 戰鬥機 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_9&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_9&#34; title=&#34;View footnote.&#34;&gt;9&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;當然鴨式佈局也不是都是缺點，它也是有好處的。&#xA;這裡不詳細展開關於機翼佈局的內容，但總結摘要來說，&#xA;鴨式佈局雖然在極限狀態下的控制能力較差，但其系統內耗較少，整體空氣動力效率佳，&#xA;簡單說就是能讓飛機飛的更快、更省、更遠。&#xA;所以後推式螺旋槳飛機也不盡然都是被逼迫著勉為其難去使用鴨翼佈局的。&#xA;鴨翼佈局和後推螺旋槳兩者的優點不謀而合，對於速度和航程都具有正面的作用，&#xA;因此往往是自然而然的，兩者通常就這麼互相搭配一起並同時出現在一架飛機上，&#xA;形成一種奇妙的合作關係！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_起落架長度&#34;&gt;起落架長度&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;螺旋槳後置的一項缺點是通常會需要更長的起落架。&#xA;由於起落架需要承載飛機在著陸時候的衝擊力，對於緩衝和結構的承受力都有一定程度的要求。&#xA;如果不考慮其他因素而只考慮起落架本身的話，當然粗粗短短的起落架是最容易能扛住的，&#xA;細長的起落架就會給相關機構的設計帶來難度和困擾。&#xA;然而螺旋槳後置的方案卻往往會比前置方案需要更長的起落架！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;因為後置的螺旋槳通常比前置的更容易敲擊到地面，&#xA;因此需要把飛機架離地面更遠才能夠有效防止螺旋槳觸地受損。&#xA;那麼為什麼放後面的螺旋槳更容易敲到地面呢？&#xA;因為不論是在起飛離地還是降落觸地的時候，飛機往往都是拉抬機頭的姿勢，頂多是幾乎持平&#xA;(&lt;em&gt;一般絕大部份正常情況是沒有低頭離地或落地的&lt;/em&gt;)。&#xA;所以前置的螺旋槳可以被舉的更高而離地面更遠，反而後置螺旋槳就有點危險了，會距離地面更近！&#xA;同樣的道理，&#xA;前置螺旋槳可以搭配前三點起落架(例如 &lt;em&gt;Figure 7&lt;/em&gt;)，也可以搭配後三點起落架(例如 &lt;em&gt;Figure 8&lt;/em&gt;)。&#xA;(&lt;em&gt;因此古時候的飛機都喜歡採用後三點起落架，因為簡單又節省；&lt;/em&gt;&#xA;&lt;em&gt;當然這裡說的是指對於設計製造而言，而不是對於在地面上駕駛它的人而言！&lt;/em&gt;)&#xA;但是採用後置螺旋槳的顯然就不能夠搭配後三點起落架了，只能夠使用前三點；&#xA;並且在後面主起落架必須把機體架的離地面夠高的情況下，&#xA;前起落架往往得再架的更高，才不至於讓機頭下墜，&#xA;例如 J7W1 震電戰鬥機就是相當鮮明的例子(&lt;em&gt;Figure 9&lt;/em&gt;)。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;當然除了把起落架弄長之外其實還有另一個解決方法，&#xA;那就是限制螺旋槳的尺寸，不要用那麼大的螺旋槳，&#xA;例如下圖(&lt;em&gt;Figure 10&lt;/em&gt;)的 Velocity XL 就沒有像震電戰鬥機那樣誇張長的起落架。&#xA;只不過採用小尺寸螺旋槳的副作用就是以犧牲螺旋槳的效率來作為代價的(&lt;em&gt;具體原理往後再談&lt;/em&gt;)。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-5/fig4-1-p39.jpg&#34; alt=&#34;fig4 1 p39&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 7. 採用前三點式起落架的 P-39 戰鬥機 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_10&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_10&#34; title=&#34;View footnote.&#34;&gt;10&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-5/fig4-2-fw190.jpg&#34; alt=&#34;fig4 2 fw190&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 8. 採用後三點式起落架的 FW-190 戰鬥機 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_11&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_11&#34; title=&#34;View footnote.&#34;&gt;11&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-5/fig4-3-j7w1.jpg&#34; alt=&#34;fig4 3 j7w1&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 9. 採用後推螺旋槳設計的 J7W1 戰鬥機，注意其起落架特別是前起落架的長度 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_12&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_12&#34; title=&#34;View footnote.&#34;&gt;12&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-5/fig4-4-velocity-xl.jpg&#34; alt=&#34;fig4 4 velocity xl&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 10. 採用後推螺旋槳設計的 Velocity-XL 小飛機，起落架長度在一般通常的範圍內 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_13&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_13&#34; title=&#34;View footnote.&#34;&gt;13&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_跳傘逃生&#34;&gt;跳傘逃生&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;螺旋槳放後面還有最後一項缺點，那就是不利於跳傘逃生！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;當飛機損壞或在戰鬥中被擊傷而駕駛員欲棄機逃生的時候，拉開駕駛艙蓋往外一跳，&#xA;得，等待你的就是在後面可能仍在高速轉動的螺旋槳切刀！&#xA;當然從描述來看就能知道這項缺點主要體現在軍用戰鬥機上面，&#xA;至於如果是民用飛機或雙發動機以上的軍用飛機則無此問題。&#xA;而在歷史上採用後推螺旋槳的戰鬥機都同樣面臨駕駛員難以跳傘逃生的問題，&#xA;往往需要搭配螺旋槳爆破裝置或彈射式逃生座椅來解決這個問題；&#xA;或者讓駕駛員懷抱著與飛機共存亡的使命踏進駕駛艙！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_總結&#34;&gt;總結&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;螺旋槳飛機採用前拉式或後推式動力佈局，在中、小型飛機，&#xA;特別是單發動機的小飛機上面的影響差異相當大，&#xA;也是在此前提下更加具有討論價值；&#xA;至於在中、大型等多發動機的飛機上，採用前拉或後推的影響差異較小。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;採用後推螺旋槳的好處是動力系統效率較好，使得速度較快、航程較遠，&#xA;特別是在搭配鴨式機翼佈局的情況下能夠更進一步放大前述的優點！&#xA;缺點則是起降距離較長，起飛與進場速度較高，以及低速下的飛機控制能力較差，&#xA;不能進行高攻角機動動作(&lt;em&gt;在不考慮現代飛控電腦干預下的靜不穩定設計條件下&lt;/em&gt;)，&#xA;並且起落架的設計佈置和耐用性的困擾較多，以及不利於跳傘逃生等。&#xA;雖然說採用前拉與後推動力佈局各有優缺點，但是以結果論，&#xA;當今絕大部份小型飛機都採用前拉式動力配置的現實已經告訴了我們，&#xA;前拉式螺旋槳在大多情況下是更加廣泛適用的選擇。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;footnotes&#34;&gt;&#xA;&lt;hr/&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_1&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_1&#34;&gt;1&lt;/a&gt;. &lt;a href=&#34;https://vegasaviation.com/flight-training/7-reasons-why-the-cessna-172-is-the-best-plane-to-start-your-flight-training/&#34;&gt;7 Reasons Why the Cessna 172 is the Best Plane to Start Your Flight Training&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_2&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_2&#34;&gt;2&lt;/a&gt;. &lt;a href=&#34;https://www.justflight.com/product/black-square-velocity-xl&#34;&gt;Black Square - Velocity XL&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_3&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_3&#34;&gt;3&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Cessna_172&#34;&gt;Cessna 172&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_4&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_4&#34;&gt;4&lt;/a&gt;. &lt;a href=&#34;https://doc8643.com/aircraft/VELO&#34;&gt;VELOCITY Velocity 173 - VELO L1P L/G&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_5&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_5&#34;&gt;5&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E8%9E%BA%E6%97%8B%E6%A7%B3-3---%E5%90%84%E7%A8%AE%E5%A5%87%E5%A6%99%E5%95%8F%E9%A1%8C/&#34;&gt;螺旋槳 3：各種奇妙問題&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_6&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_6&#34;&gt;6&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E7%BF%BC%E5%9E%8B%E7%B3%BB%E5%88%97-1---%E6%A9%9F%E7%BF%BC%E5%8D%87%E5%8A%9B%E5%8E%9F%E7%90%86/&#34;&gt;翼型系列 1：機翼升力原理&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_7&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_7&#34;&gt;7&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E7%BF%BC%E5%9E%8B%E7%B3%BB%E5%88%97-2---%E6%A9%9F%E7%BF%BC%E6%B5%81%E5%A0%B4%E7%8F%BE%E8%B1%A1/&#34;&gt;翼型系列 2：機翼流場現象&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_8&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_8&#34;&gt;8&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Convair_B-36_Peacemaker&#34;&gt;Convair B-36 Peacemaker&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_9&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_9&#34;&gt;9&lt;/a&gt;. &lt;a href=&#34;https://cs.wikipedia.org/wiki/Vultee_XP-54&#34;&gt;Vultee XP-54&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_10&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_10&#34;&gt;10&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Bell_P-39_Airacobra&#34;&gt;Bell P-39 Airacobra&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_11&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_11&#34;&gt;11&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Focke-Wulf_Fw_190&#34;&gt;Focke-Wulf Fw 190&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_12&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_12&#34;&gt;12&lt;/a&gt;. &lt;a href=&#34;https://ja.wikipedia.org/wiki/%E9%9C%87%E9%9B%BB&#34;&gt;震電&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_13&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_13&#34;&gt;13&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Velocity_XL&#34;&gt;Velocity XL&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>把 C&#43;&#43; 程式碼當直譯腳本執行</title>
      <link>http://www.huoschen.idv.tw/blog/programming/%E6%8A%8A-c&#43;&#43;-%E7%A8%8B%E5%BC%8F%E7%A2%BC%E7%95%B6%E7%9B%B4%E8%AD%AF%E8%85%B3%E6%9C%AC%E5%9F%B7%E8%A1%8C/</link>
      <pubDate>Fri, 25 Jul 2025 22:48:10 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/programming/%E6%8A%8A-c&#43;&#43;-%E7%A8%8B%E5%BC%8F%E7%A2%BC%E7%95%B6%E7%9B%B4%E8%AD%AF%E8%85%B3%E6%9C%AC%E5%9F%B7%E8%A1%8C/</guid>
      <description>&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這次分享一個程式小技巧，能把 C++ 程式碼檔案當成腳本來執行，&#xA;或許在合適的情況下會挺好用的喔！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;有時候我們就是會有一些瑣碎的事情需要即時做個小工具來處理。&#xA;我們通常不會太苛求這種工具的功能完整嚴謹與全面的覆蓋性，&#xA;因為作為使用者兼設計師的我們可能是隨時監看並能依據當下條件即時調整修改程式的。&#xA;對於計算效能多半也是無所謂的態度，因為對於或許是一次性的工具來說，&#xA;通常使用更少的時間與消耗更少的頭腦精力去把東西製造出來的效益會遠大於仔細推敲打磨它。&#xA;這時候我們通常就會傾向使用腳本語言來進行這些工作，&#xA;比如我自己就經常寫些很簡單的 shell script，稍微複雜困難一點的工作就寫個 Python 來處理。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;但是吧，有些工作使用這些常見的腳本語言來做就是存在一些不容易。&#xA;可能雖然工作是一次性的，但資料量相當龐大，也不是真的這麼不在意直譯程式的效能；&#xA;可能是有一些底層的資料格式需要分析處理，例如位元組、無號定長整數的計算處理等，&#xA;使用 C/C++ 真的反而就是比較簡單方便；&#xA;也可能其實當下流行的腳本語言並非沒有能力去實現出這些功能，只是因為個人學習鑽研道行實在不足。&#xA;無論如何，對於一個數十年與 C/C++ 日夜相伴的程序員來說，&#xA;有時候就是會有想要使用 C++ 去製做這些工具的想法。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;那麼做就做吧，產品程式都能造出來了，製做個人的工具程式有什麼困擾呢？&#xA;通常的糾結也許就在於這種編譯式的語言所產生出來或所需要依賴的檔案數量較多，&#xA;對於不是以軟體專案本身當主角，而是在周邊小工具的用途上當配角去服務其它檔案的話，&#xA;在檔案的儲存、管理、和命名等事情上就會帶來比較大的龐雜感；&#xA;特別是對於慣用 IDE 工具來進行程式開發的人來說，&#xA;身為一個小小龍套配角的工具程式其檔案數量可能會更加驚人！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_使用腳本編譯執行&#34;&gt;使用腳本編譯執行&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;至此對於本篇所探討的 C++ 程式的使用情境已經明瞭了，&#xA;就是以簡單小工具為定位，以最少的檔案管理負擔為訴求，&#xA;為此目的可以容許對於執行效能的一定程度下降為代價。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;從前我的做法是就在 C++ 程式碼旁邊建立一個 shell script 檔案，用來編譯並執行旁邊的程式碼檔。&#xA;不使用 Automake 或 CMake 這些龐大複雜的建置系統，當然更不可能使用 IDE 專案。&#xA;就只有一個簡單的腳本，不檢查檔案時間戳也不產生中間檔，每次執行時就是從頭全部重新編譯。&#xA;當然以配角小工具的用途來說一般程式碼沒有什麼太大的規模，程式碼的檔案數量也就只有一個，&#xA;每次執行時都重編譯過一次也並不會消耗什麼有感的時間；&#xA;而其實這就是把 C++ 拿來當直譯腳本語言使用的概念。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在這樣的使用方式下，檔案的數量減少到只剩下 2 到 3 個，&#xA;分別是主要的 C++ 程式碼，用來編譯並執行程式的腳本，以及使用後可留可刪的執行檔。&#xA;雖然已經只剩下 2、3 個檔案，但是終究還是複數，&#xA;與只需要單一一個檔案就能做事的真正腳本語言相較還是多了些負擔。&#xA;那麼能不能夠將檔案再進一步縮減到只剩下一個呢？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;要進一步精減檔案數量，首先可以排除掉的就是執行檔了。&#xA;既然已經寫了個腳本去做編譯，順便編譯完後立刻執行，&#xA;那麼稍微再多寫一些步驟就能夠在執行完成後將產生的執行檔給刪除，做法並不困難。&#xA;因此真正的挑戰在於如何將 C++ 程式碼檔案與建置腳本檔案給二合一，&#xA;而這就是本文真正要探討的技巧主題了……&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_利用_preprocessor&#34;&gt;利用 Preprocessor&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;將兩個檔案合併為一個檔案的問題在於，兩個檔案內容的格式規格並不相同，&#xA;一個是 C++ 而另一個是 shell script。&#xA;要將它們合併在一起，&#xA;就必然要想個方法讓同一個檔案既能夠被 C++ 編譯器正常處理，也能被 shell 正常解析，&#xA;讓檔案內的兩個部份互相不干預對方。&#xA;關於腳本的部份倒好處理，反正 shell 是一行一行分析執行，&#xA;所以只要把腳本的部份寫在檔案開頭，然後在腳本命令最後放一個 exit 命令結束並離開，&#xA;那麼再往下的內容長成什麼鬼樣子(&lt;em&gt;站在 shell parser 的角度&lt;/em&gt;)就完全不造成影響了！&#xA;所以真正的問題在於如何讓 C++ 編譯器去忽略掉檔案開頭的那些腳本命令？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這裡採用的方法是利用 C++ 前置處理器的識別符號「&lt;code&gt;#&lt;/code&gt;」。&#xA;剛好在 shell script 裡面這個井字號是註解符號，&#xA;所以任何 C++ 前置處理命令在 shell 裡面都會被忽略掉，因此可以放心使用。&#xA;只剩下腳本開頭的 Shebang (也就是通常在腳本開頭出現的那個「&lt;code&gt;#!&lt;/code&gt;」)會在 C++ 編譯的時候導致錯誤，&#xA;好在當代的 Linux 環境大部份在沒有 Shebang 的情況下也是把檔案內容當成 shell 命令在處理，&#xA;因此這裡就放心的直接捨棄掉正規 shell script 在檔案開頭的 Shebang 了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;按上述想法所產生的範例程式如下：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;#ifdef UNDEF    // 從這裡開始的內容會被 C++ 編譯器所忽略&#xA;ap=$(mktemp -u)&#xA;c++ -Wall -o $ap &amp;#34;$0&amp;#34; &amp;amp;&amp;amp; $ap $@&#xA;rc=$?&#xA;test -f $ap &amp;amp;&amp;amp; rm $ap&#xA;exit $rc        #  腳本命令到這裡被強制跳離，因此以下所有檔案內容不受 shell 解析處理&#xA;#endif          // 直到此之前的內容會被 C++ 編譯器所忽略&#xA;#include &amp;lt;stdio.h&amp;gt;&#xA;&#xA;int main(int argc, char *argv[])&#xA;{&#xA;    printf(&amp;#34;Running CPP file as script...\n&amp;#34;);&#xA;&#xA;    printf(&amp;#34;Arguments (argc=%d):\n&amp;#34;, argc);&#xA;    for(int i = 0; i &amp;lt; argc; ++i)&#xA;        printf(&amp;#34;  argv[%d]: \&amp;#34;%s\&amp;#34;\n&amp;#34;, i, argv[i]);&#xA;&#xA;    int rc = 7;&#xA;    printf(&amp;#34;Return the result code: %d\n&amp;#34;, rc);&#xA;    return rc;&#xA;}&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這樣就可以直接把 C++ 程式碼檔案當成腳本來執行(當然檔案屬性需要設定執行權限)：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;./cppscript-use-preprocessor.cpp qui tollis peccata mundi; echo &amp;#34;RC=$?&amp;#34;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;上面的執行命令最終產生了如下的結果，&#xA;可以注意到我把程式的啟動參數傳遞以及返回值的傳遞都處理妥當了：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;Running CPP file as script...&#xA;Arguments (argc=5):&#xA;  argv[0]: &amp;#34;/tmp/tmp.KU6vOCid49&amp;#34;&#xA;  argv[1]: &amp;#34;qui&amp;#34;&#xA;  argv[2]: &amp;#34;tollis&amp;#34;&#xA;  argv[3]: &amp;#34;peccata&amp;#34;&#xA;  argv[4]: &amp;#34;mundi&amp;#34;&#xA;Return the result code: 7&#xA;RC=7&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這樣其實就已經達到了一開始所要的目的，將全部檔案整合為一個檔案，把 C++ 當直譯腳本來用。&#xA;當然上面的範例設想的還是比較多的，如果你自己使用情況下並不需要取得程式回傳值，&#xA;或者不需要傳輸啟動參數，或者甚至可以直接指定一個固定的執行檔名稱而不是像上面隨機產生一個暫時檔，&#xA;那麼有關建置與執行的命令還可以再刪減的更加精簡。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_利用單行註解&#34;&gt;利用單行註解&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;理論上使用上面的方法已經達成了將程式碼與腳本合併只剩一個檔案，&#xA;並且能把 C++ 檔案當直譯程式來執行的目的。&#xA;只不過對於檔案開頭好多行的腳本內容還是覺得有些礙眼，&#xA;特別是雖然那些命令已經被包含在 &lt;code&gt;#ifdef&lt;/code&gt; 裡面，但可能有些文字編輯器還是會嘗試去分析裡面的內容，&#xA;而因為這些內容都不是合法的 C++ 語法，&#xA;因此雖然實際不會產生錯誤，但在編寫 C++ 的時候可能會顯示出許多較為「醒目」的語法著色顯示。&#xA;於是我好奇有沒有能人還有更好的想法？結果一查欸還真有！&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_1&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;其中一種方式就是利用 C++ 的單行註解符號「&lt;code&gt;//&lt;/code&gt;」。&#xA;而斜線「&lt;code&gt;/&lt;/code&gt;」同時也是路徑的分隔符號，單獨的或起頭的斜線則在 POSIX 相容系統上表示根目錄，&#xA;而兩個連著的斜線路徑分隔符其實等同於只有一個。&#xA;因此檔案的起頭必須指定一個絕對路徑，也就是說檔案一開始的第一個命令就是要執行一支程式。&#xA;上面參考網站的內容直接使用絕對路徑執行編譯器，&#xA;然而因為我在編譯前還想先設定變數內容，因此無法像他這樣簡單的直接呼叫命令。&#xA;我的做法是將第一個命令給虛化，它不需要做實事，&#xA;我只不過是利用它的路徑起頭符號將整行文字被 C++ 編譯器判定為註解而已。&#xA;因此我選擇首先執行 true 命令，基本等於沒有任何實際效果，&#xA;然後在分號後面再去執行我真正要執行的工作。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;按照這樣的想法，我將前面的那個範例修改如下&#xA;(&lt;em&gt;至於命令的執行和輸出的結果就不貼了，反正是一樣的&lt;/em&gt;)：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;//bin/true; ap=$(mktemp -u); (c++ -Wall -o $ap &amp;#34;$0&amp;#34; &amp;amp;&amp;amp; $ap $@); rc=$?; (test -f $ap &amp;amp;&amp;amp; rm $ap); exit $rc&#xA;#include &amp;lt;stdio.h&amp;gt;&#xA;&#xA;int main(int argc, char *argv[])&#xA;{&#xA;    ......&#xA;}&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;就這樣把全部的命令塞在一行 C++ 註解裡面，看著更加清爽也少了視覺干擾。&#xA;只不過缺點也很明顯，這一行文字挺長的，&#xA;如果編譯的命令再複雜一點，比如說連結一些程式庫、加入更多編譯巨集等，那長度又會更加延伸；&#xA;不過相對的，如果你的使用並不需要回傳值、程式參數這些東西，甚至也不想刪除編譯出來的執行檔的話，&#xA;那麼這個寫法就會變得相當簡潔，相當合適！&#xA;例如像下面這樣，看是不是好多了：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;//bin/c++ -Wall -o $PWD/example &amp;#34;$0&amp;#34; &amp;amp;&amp;amp; $PWD/example $@&#xA;#include &amp;lt;stdio.h&amp;gt;&#xA;&#xA;int main(int argc, char *argv[])&#xA;{&#xA;    ......&#xA;}&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_利用多行註解&#34;&gt;利用多行註解&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;前一個做法的缺點就是在編譯參數較多的時候，檔案第一行會變得很長，&#xA;有些人可能覺得無所謂，有些人可能覺得受不了。&#xA;那如果無法忍受過長的文字行的話，就還是得把命令寫成多行來表達，&#xA;按照延續的思路，我們可以用 C++ 的多行註解來處理這樣的需求。&#xA;其巧思之處在於 C++ 多行註解的開頭「&lt;code&gt;/*&lt;/code&gt;」，在 shell 下的意義就是根目錄下的任一個檔案或資料匣，&#xA;那麼我就取用其中的隨便哪一個，然後再返回上一層，看兜了一圈不就等於又回來了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;按此思路修改前面範例，則為：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;/*/../bin/true&#xA;ap=$(mktemp -u)&#xA;c++ -Wall -o $ap &amp;#34;$0&amp;#34; &amp;amp;&amp;amp; $ap $@&#xA;rc=$?&#xA;test -f $ap &amp;amp;&amp;amp; rm $ap&#xA;exit $rc&#xA;*/&#xA;#include &amp;lt;stdio.h&amp;gt;&#xA;&#xA;int main(int argc, char *argv[])&#xA;{&#xA;    ......&#xA;}&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這樣就兼顧了可以在合理的版面空間內容納較多較複雜的命令，&#xA;同時又把命令全塞進 C++ 註解內減少在編寫程式時的干擾，幾乎完美解決了所有問題。&#xA;因此最終，在想要把 C++ 程式碼當成直譯腳本來使用的需求下，&#xA;我推薦最後面介紹的這兩種使用註解的寫法，&#xA;在編譯與執行命令較為簡單簡潔時推薦使用單行註解方式，&#xA;而在相關命令比較繁多時則推薦使用多行註解的方式。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;footnotes&#34;&gt;&#xA;&lt;hr/&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_1&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_1&#34;&gt;1&lt;/a&gt;. &lt;a href=&#34;https://stackoverflow.com/questions/2482348/run-c-or-c-file-as-a-script&#34;&gt;Run C or C++ file as a script&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>螺旋槳 4：奇妙問題的各種對策</title>
      <link>http://www.huoschen.idv.tw/blog/aerospace/%E8%9E%BA%E6%97%8B%E6%A7%B3-4---%E5%A5%87%E5%A6%99%E5%95%8F%E9%A1%8C%E7%9A%84%E5%90%84%E7%A8%AE%E5%B0%8D%E7%AD%96/</link>
      <pubDate>Mon, 21 Jul 2025 01:29:12 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/aerospace/%E8%9E%BA%E6%97%8B%E6%A7%B3-4---%E5%A5%87%E5%A6%99%E5%95%8F%E9%A1%8C%E7%9A%84%E5%90%84%E7%A8%AE%E5%B0%8D%E7%AD%96/</guid>
      <description>&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;前篇 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_propeller3&#34;&gt;[&lt;a id=&#34;_footnoteref_1&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&#xA;介紹了那些會發生在螺旋槳上面的各種奇妙現象，它們都對飛機的性能和操控性帶來許多程度不等的壞處。&#xA;那麼本篇就來看看人們為了改善這些問題都做了什麼樣的努力與巧思呢？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_減小螺旋槳的尺寸和質量&#34;&gt;減小螺旋槳的尺寸和質量&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-4/fig1-1-hc3a.jpg&#34; alt=&#34;fig1 1 hc3a&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 1. 直昇機巨大的主旋翼產生了同樣巨大的反扭矩，而尾部尾旋翼便是為了對抗平衡此扭矩而存在 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-helicopter&#34;&gt;[&lt;a id=&#34;_footnoteref_2&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_2&#34; title=&#34;View footnote.&#34;&gt;2&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;縮減螺旋槳的尺寸和質量可以直接減少反力矩，和陀螺效應所帶來的問題。&#xA;這就是為什麼人們在製造螺旋槳的時候總是會儘量在結構強度範圍內去輕量化螺旋槳的原因了，&#xA;同樣也是為什麼&#xA;&lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-2---%E5%A4%9A%E7%BC%B8%E4%BD%88%E5%B1%80/#rotary&#34;&gt;旋轉發動機&lt;/a&gt;&#xA;&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_piston2&#34;&gt;[&lt;a id=&#34;_footnoteref_3&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_3&#34; title=&#34;View footnote.&#34;&gt;3&lt;/a&gt;]&lt;/sup&gt;&#xA;誕生沒多久就被紛紛棄用的主要原因之一！&#xA;不過關於螺旋槳的尺寸部份就有些兩難，螺旋槳是尺寸愈大效能愈好(&lt;em&gt;以後會再分析解釋這部份&lt;/em&gt;)，&#xA;然而過大的螺旋槳卻會對飛機造成更多平衡上的問題挑戰；&#xA;過小的螺旋槳則雖然平衡的問題沒有了，但同樣會受到推進效率不足、推力不足的問題困擾。&#xA;因此實際對於螺旋槳大小的問題，需要通盤考量並折衷取捨。&#xA;那如果在有些應用上這個尺寸、質量降不下來呢，比方說直昇機？&#xA;直昇機的主旋翼省不下來，就必須得造那麼大才夠用怎麼辦？&#xA;這就是為什麼直昇機的姿態控制與運動行為更加複雜，並且需要額外一個小尾旋翼來平衡力矩的原因了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_控制舵配平&#34;&gt;控制舵配平&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-4/fig2-1-trimtab.jpg&#34; alt=&#34;fig2 1 trimtab&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 2. 飛機控制舵面上的配平片 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_4&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_4&#34; title=&#34;View footnote.&#34;&gt;4&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;其實飛機的舵面控制系統中本來就存在一種微調校正機制，也就是配平。&#xA;如果近距離觀察飛機的操作舵面(&lt;em&gt;最好是那種傳統鋼纜控制的飛機，而不是線傳飛控電子控制的飛機&lt;/em&gt;)，&#xA;就能發現機翼上的舵片它自己還有一個更小的舵片(如圖 &lt;em&gt;Figure 2&lt;/em&gt; 所示)，有種套娃的樣子。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這種被稱為「配平片」的東西最初的目的是用來修正誤差用的。&#xA;怎麼說呢？&#xA;實際製造的飛機不可能如同理論圖紙那般的完美無缺，多少帶點誤差，多少帶點不對稱。&#xA;因此當你放手讓操縱杆回中的時候，理論上飛機應該要穩穩的保持歸正姿態飛行，&#xA;然而實際上通常飛機會稍微歪一邊(&lt;em&gt;歪哪邊就不確定了&lt;/em&gt;)，而不能保持直線飛行。&#xA;這時就可以透過人為的調整配平去微調各舵面的置中位置(Natural Position)，&#xA;否則若沒有配平的存在，那麼駕駛員就得一直施力壓著桿子在某個狀態，才能夠維持飛機的姿態平穩。&#xA;當然一般人可能少有飛機的駕駛經驗，那我就用汽車來做類比解釋。&#xA;飛機的配平就像是汽車的四輪定位校正，&#xA;如果讀者有駕駛過那種久未妥善維護保養，車輪校正早已跑偏十萬八千里的那種車輛的經驗，&#xA;那麼應該就能夠明白飛機配平的意義與作用了。&#xA;缺乏車輪校正(妥善配平)的車輛(飛機)仍然能夠正常駕駛，只不過駕駛起來可能會有點辛苦！&#xA;駕駛員必須永遠握緊方向盤(操縱杆)並時刻專心保持車輛(飛機)的行進動態，才能夠平穩前進。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;既然飛機上已經存在控制面配平的機制，&#xA;那麼螺旋槳本身所造成的一些不對稱、不平衡的力能不能也算做是飛機本身的不對稱誤差，&#xA;然後使用配平來把它修正過來呢？當然可以！&#xA;於是舵面的配平就成為校正螺旋槳偏向力的一種常用手段。&#xA;不過這只能夠用來對付那種會持續存在的穩定作用力，&#xA;比方說巡航狀態下的螺旋槳扭矩，巡航攻角下的偏航力矩等等。&#xA;至於其它情況下的飛行狀態，乃至於推拉桿的瞬間才會出現的臨時作用力等等就沒有辦法了，&#xA;應對這些動態的不平衡力還是有賴於依靠熟練飛行員的「手感」&#xA;去做出類似於肌肉記憶的適當補償動作。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;此外舵面配平也不是萬靈丹，其也是存在自身的限制和代價。&#xA;比如說它只能夠在小幅度範圍內去做平衡對抗，對於過大的作用力則可能還是力有未逮。&#xA;此外配平的原理其實就相當於在你不推拉桿的情況下去自動幫你推拉桿到一定的角度，&#xA;也就是說它實際上是透過施力給舵面去偏轉角度來產生平衡對抗的作用力，&#xA;也就是說它會產生額外的阻力。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_對轉螺旋槳&#34;&gt;對轉螺旋槳&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-4/fig3-1-p38.jpg&#34; alt=&#34;fig3 1 p38&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 3. 使用對轉螺旋槳設計的 P-38 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-p38&#34;&gt;[&lt;a id=&#34;_footnoteref_5&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_5&#34; title=&#34;View footnote.&#34;&gt;5&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-4/fig3-2-counter-rotating-propellers.gif&#34; alt=&#34;fig3 2 counter rotating propellers&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 4. 對轉螺旋槳 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-counter-propellers&#34;&gt;[&lt;a id=&#34;_footnoteref_6&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_6&#34; title=&#34;View footnote.&#34;&gt;6&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;如果飛機上有偶數數量的螺旋槳的話，&#xA;那麼其實可以讓飛機對稱兩邊的螺旋槳互相反向旋轉，如上圖(&lt;em&gt;Figure 4&lt;/em&gt;)所示，&#xA;這種方案就稱為「對轉螺旋槳」，其中著名的 P-38 戰鬥機就是採用這樣的設計方案。&#xA;如此簡單的讓兩邊螺旋槳往相反方向旋轉，&#xA;就可以直接對消掉絕大部份不對稱力，包括扭矩、側滑、氣旋、乃至陀螺效應等等，&#xA;幾乎所有的不平衡力都能被這樣簡單的設計給對消掉！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這方案看似挺美好，但也是存在一定程度的副作用。&#xA;首先是單引擎單螺旋槳飛機便無法採用對轉的方案，&#xA;其次是這樣的設計規劃會給製造裝配和維修保養帶來一定程度的成本負擔。&#xA;因為對轉螺旋槳對應的兩臺發動機旋轉方向不一樣，&#xA;從螺旋槳到引擎曲軸的許多零件都會需要區分左邊版本與右邊版本，&#xA;不論是對於製造的成本，或者是拆解維護的工時，或者是零件備料的倉儲負擔，&#xA;都會造成一定程度的加重。&#xA;因此 P-38 外銷給法國和英國的版本就被要求全部改成一律右旋的版本。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_氣流導正葉片&#34;&gt;氣流導正葉片&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-4/fig4-1-genx.jpg&#34; alt=&#34;fig4 1 genx&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 5. 現代渦扇發動機結構剖視圖，注意紅色指標處的柵欄狀結構，兼俱導正風扇氣旋，以及作為外殼支撐結構的作用 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_genx&#34;&gt;[&lt;a id=&#34;_footnoteref_7&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_7&#34; title=&#34;View footnote.&#34;&gt;7&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-4/fig4-2-circulation-fan.png&#34; alt=&#34;fig4 2 circulation fan&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 6. 被稱為循環扇的電風扇類型，注意其正面密集的幅條，在兼任結構支撐與防範異物的功能之外，其相當的深寬正是為了導正風扇氣旋的作用 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_8&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_8&#34; title=&#34;View footnote.&#34;&gt;8&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;螺旋槳旋轉所產生的氣旋，除了會產生偏轉飛機的力之外還會降低推進效率，&#xA;因此如果能夠將螺旋槳後面的氣流導正過來的話，就可以同時解決這兩個問題。&#xA;其中一種方案就是直接安裝氣流導正葉片。&#xA;氣流經過導正之後消除了氣旋，成為更加筆直強勁的氣流，&#xA;提高推進效率之外也解決了氣旋帶來的不平衡力。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這個方案罕見在螺旋槳飛機上看到，但其實在某些其他應用用途上則可能相當常見，&#xA;例如在與螺旋槳一樣原理的渦輪風扇發動機，風扇後面就有排列一整圈的這種導氣葉片，&#xA;如上圖(&lt;em&gt;Figure 5&lt;/em&gt;)所示。&#xA;其實要深究的話，渦輪發動機裡面的每一級定子葉片也擔負了相同的作用。&#xA;另外還有一種同樣的設計更加容易在日常生活中見到，那就是一般被稱為「循環扇」的電風扇(&lt;em&gt;Figure 6&lt;/em&gt;)，&#xA;其風扇前面輻射狀的厚重防護網就是被刻意造成如同導氣葉片的形狀，擔負著導正風扇氣旋的作用，&#xA;從而使得能把空氣吹的更遠。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;然而這個方案在常見的「飛機螺旋槳」這個用途上卻往往窒礙難行，&#xA;其原因與後面會提到的螺旋槳圍殼(涵道)相同，&#xA;因為螺旋一般尺寸較大，採用這些設計所帶來的好處不一定能抵過其多出來的結構重量和阻力。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_同軸反轉螺旋槳&#34;&gt;同軸反轉螺旋槳&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-4/fig5-1-p51-xr.jpg&#34; alt=&#34;fig5 1 p51 xr&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 7. 採用同軸反轉螺旋槳的特別款式野馬式戰鬥機，注意它有兩具一前一後緊靠著的螺旋槳 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-contra-propellers&#34;&gt;[&lt;a id=&#34;_footnoteref_9&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_9&#34; title=&#34;View footnote.&#34;&gt;9&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-4/fig5-2-spitfire-xix-vr.jpg&#34; alt=&#34;fig5 2 spitfire xix vr&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 8. 採用同軸反轉螺旋槳的特別款式噴火式戰鬥機，注意它兩具螺旋槳的旋轉方向是相反的 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_9&#34; title=&#34;View footnote.&#34;&gt;9&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-4/fig5-3-tu95.jpg&#34; alt=&#34;fig5 3 tu95&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 9. 現代經常會出現在電視新聞畫面的 Tu-95 轟炸機同樣設計了同軸反轉螺旋槳 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_9&#34; title=&#34;View footnote.&#34;&gt;9&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-4/fig5-4-ka52.jpg&#34; alt=&#34;fig5 4 ka52&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 10. Ka-50 直昇機使用了同軸反轉的主旋翼，無需面對氣旋與扭矩等問題，因此注意到在它身上並沒有用一般直昇機上會看到的尾旋翼！ &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_10&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_10&#34; title=&#34;View footnote.&#34;&gt;10&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-4/fig5-5-contra-rotating-propellers.gif&#34; alt=&#34;fig5 5 contra rotating propellers&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 11. 同軸反轉螺旋槳 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_9&#34; title=&#34;View footnote.&#34;&gt;9&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;顧名思義，同軸反轉就是用兩隻螺旋槳放在同一根軸上，並且各以相反的方向旋轉，&#xA;如圖(&lt;em&gt;Figure 11&lt;/em&gt;)所示。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;同樣使用一對旋轉方向相反的螺旋槳，但不同於對轉螺旋槳只是簡單的將兩具螺旋槳放在各自位置上，&#xA;同軸反轉螺旋槳顯得更加激進，將兩具螺旋槳安裝於幾乎要疊在一起的空間位置上。&#xA;因為兩槳共軸，因此被稱為同軸反轉螺旋槳。&#xA;與對轉螺旋槳相同，同軸反轉螺旋槳能夠對消所有的不平衡力如扭矩、側滑、與氣旋等，&#xA;因此採用這種設計的直昇機如 Ka-50 (&lt;em&gt;Figure 10&lt;/em&gt;)就不再需要使用尾旋翼來作為平衡。&#xA;除此之外還比對轉螺旋槳多了一個效果：它還能對消螺旋槳的尾部氣旋！&#xA;因此同軸反轉螺旋槳的推進效率更高，即便因此多出了齒輪結構等重量，&#xA;那些採用了同軸反轉螺旋槳設計或改裝的飛機，往往能夠跑出比其傳統螺旋槳版本更快的速度。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;既然這種方案這麼好，那為什麼沒有被廣泛大量採用呢？顯然也是存在缺點的！&#xA;首當其衝就是更加複雜和笨重的驅動結構，使得不管設計製造還是維護保休成本都更加高昂。&#xA;另外這種螺旋槳還有一個特色：非常吵！&#xA;這是因為距離如此接近的兩個螺旋槳，葉片會週期性的非常靠近到幾乎重疊，&#xA;產生相當強烈的空氣擾動與擠壓效應，因此產生一個相當強烈的壓力突波，也就是聲音。&#xA;這就是為什麼所有採用同軸反轉螺旋槳的飛機都相當吵的原因，&#xA;甚至於傳言 Tu-95 轟炸機飛在大西洋上的聲紋還能被水底下的潛水艇聲納給捕捉到呢！&#xA;(&lt;em&gt;至於存在同樣結構特徵的渦輪發動機，那一大堆的動子、定子葉片，難道就不吵嗎？&lt;/em&gt;&#xA;&lt;em&gt;其實渦輪發動機的音量也是真的大，只不過多了外殼的消音隔絕作用，&lt;/em&gt;&#xA;&lt;em&gt;相比之下沒有曝露在外的同軸反轉螺旋槳那樣吵罷了！&lt;/em&gt;)&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_不對稱設計&#34;&gt;不對稱設計&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;其實如果有機會近距離觀察單螺旋槳飛機或者其之精確圖紙，或者是有在玩遙控飛機的人，&#xA;可能會發現許多螺旋槳及發動機的安裝並不是對稱的，而是偏了一個方向，&#xA;這就是為了螺旋槳不平衡作用力所做的補償。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-4/fig6-1-off-axis.png&#34; alt=&#34;fig6 1 off axis&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 12. 單螺旋槳飛機的螺旋槳和引擎往往是微幅右偏轉安裝的，有時可能連尾舵也不是置中對正的 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_11&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_11&#34; title=&#34;View footnote.&#34;&gt;11&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;若不考慮機動動作過程的暫時性不平衡，而只考量大多時候穩定飛行時的不平衡狀態的話，&#xA;那麼會發現螺旋槳可能成份最大的綜合作用是給飛機一個左偏的力矩。&#xA;在只考量受螺旋槳影響最大的單螺旋槳、單發動機，且螺旋槳放在飛機頭的最常見配置下，&#xA;那麼如果把螺旋槳(包含整個發動機)稍微向右轉一個小角度，&#xA;這樣就能用不對稱的推力線產生的右偏力矩去平衡掉螺旋槳造成的左偏力矩，如上圖(&lt;em&gt;Figure 12&lt;/em&gt;)所示。&#xA;此外在這類飛機上通常也會發現發動機不只角度偏右安裝，還會往下偏轉一個角度。&#xA;向下偏轉推力線同樣也是為了平衡的作用，只不過對付的不是螺旋槳所造成的不平衡，&#xA;而是平衡掉尾翼穩定系統在速度愈快的情況下會使機頭飄浮起來的作用力矩而做的補償。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;既然發動機都能夠不對稱安裝了，那其它平衡舵能不能如法炮製？能！&#xA;於是有些飛機的垂直尾舵也不是對稱設計的，而是整個舵面向左一個角度安裝的，如上圖(&lt;em&gt;Figure 12&lt;/em&gt;)所示。&#xA;不過這裡補充一點，上圖為了示意的緣故所以畫了比較大的有點誇張的偏轉角度，&#xA;然而實際上發動機安裝偏角與舵面的安裝偏角通常只有約 0.X 度到 2 度左右的範圍而已，&#xA;若不仔細觀察還不是很容易發現的，不會像示意圖這樣的誇張明顯！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-4/fig6-2-bv141.jpg&#34; alt=&#34;fig6 2 bv141&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 13. 在不對稱設計上堪屬登峰造極的作品：BV-141 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_12&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_12&#34; title=&#34;View footnote.&#34;&gt;12&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;「原來造飛機可以不用完全對稱啊？！」「原來可以不對稱來解決問題啊？！」&#xA;思路一下子打開之後，莫名的對稱強迫症治好了之後，設計也就越發自由奔放。&#xA;其中當屬最為登峰造極的作品大概就是德國的 BV 141 了(&lt;em&gt;Figure 13&lt;/em&gt;)，&#xA;它的外型似乎無聲的在訴說：「飛機本不應該對稱，因為螺旋槳本就不是對稱的東西！」&#xA;(&lt;em&gt;其實 BV 141 這樣不對稱的造型雖然確實包含了，但並不完完全全僅只是因為螺旋槳的因素，&lt;/em&gt;&#xA;&lt;em&gt;其中還有為了方便人員觀察的目的！&lt;/em&gt;)&#xA;BV 141 的造型看似怪異，然而據聞駕駛過它的飛行員描述其駕駛之感受相當良好，流暢自然，&#xA;與其外表帶給人的突兀感受完全相反。&#xA;只不過這種不對稱的設計思路後來並沒有再被進一步發揚光大，&#xA;因為這種根本不對稱的設計主要就是來源於螺旋槳的不對稱特性造成，&#xA;而眾所皆知，噴射引擎佔據時代主角位置之後，&#xA;就沒什麼動機再去刁鑽「單螺旋槳在中大型飛行器的應用」這項主題了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_槳葉造型&#34;&gt;槳葉造型&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;螺旋槳的槳葉尖端會發生氣流翻越所產生的誘導流，導致螺旋槳效率降低。&#xA;這個問題比較不一樣，它不像其它那些問題會導致不平衡、不對稱的作用力去干擾飛機的穩定與操控，&#xA;純純就是降低螺旋槳的氣動效能而已。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-4/fig7-1-winglet.jpg&#34; alt=&#34;fig7 1 winglet&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 14. 飛機機翼尖端的小翼裝置 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_13&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_13&#34; title=&#34;View footnote.&#34;&gt;13&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;對於翼尖渦流，在現代民航客機上常可見到的翼尖裝置(如圖 &lt;em&gt;Figure 14&lt;/em&gt;)就是用來改善這個問題的。&#xA;其作用原理就是阻礙氣流的翻越，或使渦流發生的位置更加遠離機翼。&#xA;然而很不幸的，螺旋槳的槳葉沒有辦法採用這樣的翼尖裝置方案。&#xA;因為螺旋槳的轉速實在太快，在滿功率運轉時往往尖端能達到或超越音速，加上強大的離心力作用，&#xA;大概沒有什麼裝置能夠在這種情況下簡單扛得住；&#xA;或者就算有，大概也免不了振動和平衡的問題。&#xA;因此翼尖裝置的方案沒辦法簡單的直接應用在螺旋槳上面。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;既然這個渦流是從機翼尖產生的，那如果我把機翼的尖端做的小一點，&#xA;是不是就能讓渦流也小一點，改善渦流影響的問題呢？&#xA;欸雖然聽起來有那麼一點「啊～這也能行？！」的驚嘆，然而實際上這麼做還真的能行！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-4/fig7-2-glider-dg800.jpg&#34; alt=&#34;fig7 2 glider dg800&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 15. 追求極高空氣動力效率的滑翔機往往具有相當誇張的機翼展弦比 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_14&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_14&#34; title=&#34;View footnote.&#34;&gt;14&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;所以那些講究機翼效率的飛機往往都喜歡把機翼造的細細長長的，&#xA;比如像上圖(&lt;em&gt;Figure 15&lt;/em&gt;)那樣的滑翔機。&#xA;你可以這麼理解，把機翼造的長一點，可以讓渦流產生的位置遠離機翼核心區域，因此能夠改善渦流問題；&#xA;或者也可以理解為將機翼造得細，那麼尖端的尺寸(&lt;em&gt;相比於整片機翼的比例&lt;/em&gt;)就縮小了，&#xA;也能減小渦流強度從而改善問題；&#xA;總之就是展弦比(&lt;em&gt;也就是機翼的「展」、和「弦」的比值，或者也可以理解為長寬比&lt;/em&gt;)愈大，&#xA;愈能夠削減翼尖渦旋對整個機翼的影響。&#xA;而這也就是為什麼飛機螺旋槳的槳葉都喜歡造的細細長長的同樣原因。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;單純的將機翼(比例上)造的細了確實可以改善尖端渦流的問題，&#xA;問題是機翼的面積也小了，升力(推力)不夠怎麼辦呢？&#xA;於是有些更加講究登峰造極的飛機就會給機翼的形狀玩起花活兒！&#xA;既然愈靠近渦旋的部份受影響愈大，愈遠裡渦旋的部份受影響愈小，&#xA;那我能不能夠將機翼按照受渦流影響的程度來不等比的縮減機翼的弦寬呢？&#xA;可以！&#xA;這就是機翼教科書上面所描述的橢圓形機翼，既擁有超小尺寸翼尖，也不至於讓機翼面積變太小，&#xA;例如經典的噴火式戰鬥機(&lt;em&gt;Figure 16&lt;/em&gt;)就是將機翼造成這種形狀。&#xA;當然將機翼這麼造的話可能會苦了製造它的勞工們，也會增加建造的成本和時間，&#xA;於是也有一些稍微變化的沒有橢圓形那麼完美但設計製造比較經濟方便的變形，&#xA;例如 U-2 (&lt;em&gt;Figure 17&lt;/em&gt;)採用了梯形的設計，&#xA;或例如零式戰鬥機(&lt;em&gt;Figure 18&lt;/em&gt;)在梯形翼的基礎之上加上了半圓形的翼尖。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-4/fig7-3-spitfire-wing.jpg&#34; alt=&#34;fig7 3 spitfire wing&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 16. 採用橢圓形機翼的噴火式戰機 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_15&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_15&#34; title=&#34;View footnote.&#34;&gt;15&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-4/fig7-4-u2-wing.jpg&#34; alt=&#34;fig7 4 u2 wing&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 17. 採用梯形機翼的 U-2 偵察機 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_16&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_16&#34; title=&#34;View footnote.&#34;&gt;16&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-4/fig7-5-zero-wing.jpg&#34; alt=&#34;fig7 5 zero wing&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 18. 零式戰鬥機採用以梯形機翼為基礎加上半圓形翼尖的造型 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_17&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_17&#34; title=&#34;View footnote.&#34;&gt;17&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;螺旋槳槳葉同機翼，那麼在了解了機翼形狀的設計原理之後，&#xA;是不是就突然明白為什麼飛機螺旋槳的槳葉都長成這些形狀(&lt;em&gt;Figure 19&lt;/em&gt;)的原因了呢？&#xA;螺旋槳的槳葉都造的細細長長，並且大部份喜歡在尖端部位做橢圓漸收或者半圓收口。&#xA;至於根部的縮窄主要是為了結構強度考量的因素，&#xA;在愈靠近根部的地方愈是設計成接近圓柱的截面形狀而使得其投影形狀看起來會變窄，&#xA;另一方面也是因為槳葉在靠近根部的位置其移動速度已經很慢了，對於推進的作用已經不大。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-4/fig7-6-propeller-shape.jpg&#34; alt=&#34;fig7 6 propeller shape&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 19. 空氣動力效用最佳化設計之下的螺旋槳葉片造型&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_涵道圍殼&#34;&gt;涵道圍殼&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;依靠槳葉的形狀可以相當程度的消減尖端渦流所產生的影響，但並不能夠完全消滅之，&#xA;如果要得到更好的渦流應對對策的話，還是需要在端面去想辦法破壞或限制渦流的發生。&#xA;前面說過螺旋槳本身因為高速旋轉的關係，實在難以在槳葉上面做什麼額外的裝置；&#xA;但是如果換個思路，如果我的葉尖裝置不放在槳葉上呢？&#xA;如果把阻礙尖端渦流產生的屏障放在螺旋槳的外面，直接環繞一圈固定在那裡，&#xA;得，這就是「涵道螺旋槳」(Ducted Propeller)，或者「涵道風扇」(Ducted Fan)，&#xA;端看應用領域一般習慣稱呼為螺旋槳或風扇而定。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;因為有這麼一圈環形護圈的存在解決了尖端渦流的問題，&#xA;因此採用了涵道設計的螺旋槳槳葉形狀通常就比較不受太多限制，&#xA;可以寬大一點、方正一點都沒什麼太大的影響。&#xA;這種原理的設計其實出現在相當多的地方，例如渦輪扇發動機的那個大風扇就是個涵道風扇(&lt;em&gt;Figure 20&lt;/em&gt;)，&#xA;此外在各位家裡都有的電腦風扇也同樣是涵道風扇的設計(&lt;em&gt;Figure 24&lt;/em&gt;)。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-4/fig8-1-ge90-fan.jpg&#34; alt=&#34;fig8 1 ge90 fan&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 20. 當代渦輪扇發動機的風扇也屬於涵道風扇 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_18&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_18&#34; title=&#34;View footnote.&#34;&gt;18&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-4/fig8-2-x22a-ducted.jpg&#34; alt=&#34;fig8 2 x22a ducted&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 21. 實驗性質的 Bell X-22 正好體現了涵道螺旋槳圍殼的巨大體積 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-ducted-fan&#34;&gt;[&lt;a id=&#34;_footnoteref_19&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_19&#34; title=&#34;View footnote.&#34;&gt;19&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-4/fig8-3-hovercraft-fan.jpg&#34; alt=&#34;fig8 3 hovercraft fan&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 22. 氣墊船也經常使用涵道螺旋槳作為推進動力裝置 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_19&#34; title=&#34;View footnote.&#34;&gt;19&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-4/fig8-4-helicopter-fan.jpg&#34; alt=&#34;fig8 4 helicopter fan&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 23. 有些直昇機的尾旋翼也是包裹在涵道裡的，其中一項好處便是氣流效率高 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_20&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_20&#34; title=&#34;View footnote.&#34;&gt;20&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-4/fig8-5-computer-fan.jpg&#34; alt=&#34;fig8 5 computer fan&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 24. 電腦風扇可能是一般人家裡最常接觸到的涵道風扇裝置了 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_21&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_21&#34; title=&#34;View footnote.&#34;&gt;21&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;stipa-caproni&#34; class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;涵道螺旋槳效果這麼優秀，那為什麼在螺旋槳飛機上卻基本見不到呢？這就要說到缺點了！&#xA;因為涵道設計的大問題就在於飛機的螺旋槳尺寸實在是太大，&#xA;硬是要罩上一圈更大的「渦流阻斷器」的話，螺旋槳的效能是優秀了沒錯，&#xA;但是相關裝置以及結構支撐器等等部件帶來的重量和阻力很可能最後得不償失！&#xA;歷史上最為著名的嘗試可能就是 Stipa-Caproni 這架飛機了，&#xA;整架飛機的設計為了這個涵道的效果可謂是煞費苦心，&#xA;然而最後得到的卻是糟糕的飛行性能，因此後來就沒什麼人再去嘗試這樣的配置了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-4/fig8-6-stipa-caproni.jpg&#34; alt=&#34;fig8 6 stipa caproni&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 25. 經常給人留下短胖呆萌印象的 Stipa-Caproni &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_caproni&#34;&gt;[&lt;a id=&#34;_footnoteref_22&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_22&#34; title=&#34;View footnote.&#34;&gt;22&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-4/fig8-7-stipa-caproni-rear.jpg&#34; alt=&#34;fig8 7 stipa caproni rear&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 26. 將整個機身作為螺旋槳的風道的 Stipa-Caproni &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_22&#34; title=&#34;View footnote.&#34;&gt;22&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;footnotes&#34;&gt;&#xA;&lt;hr/&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_1&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_1&#34;&gt;1&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E8%9E%BA%E6%97%8B%E6%A7%B3-3---%E5%90%84%E7%A8%AE%E5%A5%87%E5%A6%99%E5%95%8F%E9%A1%8C/&#34;&gt;螺旋槳 3：各種奇妙問題&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_2&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_2&#34;&gt;2&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Helicopter&#34;&gt;Helicopter&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_3&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_3&#34;&gt;3&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-2---%E5%A4%9A%E7%BC%B8%E4%BD%88%E5%B1%80/&#34;&gt;活塞引擎 2：多缸佈局&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_4&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_4&#34;&gt;4&lt;/a&gt;. &lt;a href=&#34;https://www.aopa.org/news-and-media/all-news/2017/december/flight-training-magazine/what-am-i-trim-tab&#34;&gt;What Am I? Trim tab — you, too, can be a smooth operator &lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_5&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_5&#34;&gt;5&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Lockheed_P-38_Lightning&#34;&gt;Lockheed P-38 Lightning&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_6&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_6&#34;&gt;6&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Counter-rotating_propellers&#34;&gt;Counter-rotating propellers&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_7&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_7&#34;&gt;7&lt;/a&gt;. &lt;a href=&#34;https://community.foundry.com/discuss/topic/91337/genx&#34;&gt;GEnx&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_8&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_8&#34;&gt;8&lt;/a&gt;. &lt;a href=&#34;https://www.suiden.com/english/product/greenhouse-air-circulation-fan/&#34;&gt;Greenhouse Air Circulation Jet fan&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_9&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_9&#34;&gt;9&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Contra-rotating_propellers&#34;&gt;Contra-rotating propellers&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_10&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_10&#34;&gt;10&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Kamov_Ka-50&#34;&gt;Kamov Ka-50&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_11&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_11&#34;&gt;11&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Grumman_F6F_Hellcat&#34;&gt;Grumman F6F Hellcat&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_12&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_12&#34;&gt;12&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Blohm_%26_Voss_BV_141&#34;&gt;Blohm &amp;amp; Voss BV 141&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_13&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_13&#34;&gt;13&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Wingtip_device&#34;&gt;Wingtip device&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_14&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_14&#34;&gt;14&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Glider_(aircraft)&#34;&gt;Glider (aircraft)&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_15&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_15&#34;&gt;15&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Supermarine_Spitfire&#34;&gt;Supermarine Spitfire&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_16&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_16&#34;&gt;16&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Lockheed_U-2&#34;&gt;Lockheed U-2&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_17&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_17&#34;&gt;17&lt;/a&gt;. &lt;a href=&#34;https://asisbiz.com/il2/Zero/Mitsubishi-A6M-Zero.html&#34;&gt;Asisbiz aircraft profile Mitsubishi A6M2-21 Zero JNAF 332nd Kokutai EII-102 Iwamoto IJN carrier Zuikaku 1941&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_18&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_18&#34;&gt;18&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Turbofan&#34;&gt;Turbofan&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_19&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_19&#34;&gt;19&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Ducted_fan&#34;&gt;Ducted fan&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_20&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_20&#34;&gt;20&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Helicopter&#34;&gt;Helicopter&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_21&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_21&#34;&gt;21&lt;/a&gt;. &lt;a href=&#34;https://zh.wikipedia.org/zh-tw/%E6%95%A3%E7%86%B1%E9%A2%A8%E6%89%87&#34;&gt;散熱風扇&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_22&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_22&#34;&gt;22&lt;/a&gt;. &lt;a href=&#34;https://it.wikipedia.org/wiki/Stipa-Caproni&#34;&gt;Stipa-Caproni&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>凍卵迷思</title>
      <link>http://www.huoschen.idv.tw/blog/gender/%E5%87%8D%E5%8D%B5%E8%BF%B7%E6%80%9D/</link>
      <pubDate>Thu, 10 Jul 2025 22:40:12 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/gender/%E5%87%8D%E5%8D%B5%E8%BF%B7%E6%80%9D/</guid>
      <description>&lt;p&gt;最近這些年來，凍卵這件事似乎越發流行起來，愈來愈多女性付諸行動進行凍卵。&#xA;一時間似乎凍卵成了女性生育焦慮的萬靈丹，吃下這顆大力定心丸之後彷彿就可以高枕無憂。&#xA;然而，現實的結果卻給我們啪啪打臉，&#xA;那些凍卵後成功生育的比例竟然只是少數，而大部份卻是竹藍打水一場空。&#xA;這當中究竟是哪兒出問題了呢？為什麼實際效果和理論預期之間竟有如此巨大差距？&#xA;我認為這是因為我們對凍卵這件事存在一些想像與現實的落差，於是便對它抱有過份的期望，才導致這樣的結果。&lt;/p&gt;&#xA;&lt;p&gt;眾所皆知的原因，女人在生育這件事上的時間相當有限，&#xA;年紀大了以後就會愈來愈難懷孕，即便懷上了也是很容易遇上這樣那樣的疾病缺陷等等問題。&#xA;總之以自然的情況來說，女人的最佳生育時間窗口短暫且一去不回，&#xA;而當代的科學技術 &amp;ndash; 凍卵 &amp;ndash; 則相當幅度的保留並延展女性的生育機會。&#xA;一下子，凍卵彷彿成為女人保命延壽(生育壽期)的靈丹妙藥，吃下一帖方子就好像給自己買了一個生育保險，&#xA;好像就不用再焦慮於年年增長的年齡數字，有更多充裕的時間可以安心的拼搏事業或得遇良人。&lt;/p&gt;&#xA;&lt;p&gt;然而從凍卵技術開始大量在民間應用至今，大約 20 多年的統計結果卻告訴我們，&#xA;凍卵以後有回來使用這些卵的比例只有約 8%，&#xA;考量取來使用的過程還存在的失敗率的話，那麼凍卵後成功生子的比例只有約 3%。&#xA;從一開始的新科技引入使人們鉤勒起未來的美好想像，多年後回過頭來的這個數字表現，&#xA;看見理論與實際的巨大落差，往往使人們虎驅一震。&#xA;原來凍卵的功效並沒有想像中的那麼有用，&#xA;並且凍卵顯然也並不能夠有效延長時限(以結果統計而論)，給予女性們所期望的從容。&#xA;這之中到底發生了什麼事情呢？美好的理想為什麼不能成為現實的結果？&#xA;女性們在面對這些新科技新技術的時候是不是陷入了什麼誤區，以致於對結果產生了錯誤的期待？&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;凍卵動機與失敗原因&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/gender/%E5%87%8D%E5%8D%B5%E8%BF%B7%E6%80%9D/#%e5%87%8d%e5%8d%b5%e5%8b%95%e6%a9%9f%e8%88%87%e5%a4%b1%e6%95%97%e5%8e%9f%e5%9b%a0&#34;&gt;凍卵動機與失敗原因&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;一個女人為什麼會跑去凍卵，當然是因為遇到些事情而導致產生這樣的想法。&#xA;這裡就來列舉一些常見的女性凍卵動機：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;疾病因素&lt;/p&gt;&#xA;&lt;p&gt;因為身體疾病的因素，比如卵巢早衰、癌症治療等，可能會導致女性快速喪失生育能力，&#xA;因此想在此之前盡可能先行備份保留自己的生育能力。&#xA;而這其實也是凍卵科技剛出來的時候所服務的主要目的。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;因事業忙碌無暇顧及生育，而需要拖延生育時間。&lt;/p&gt;&#xA;&lt;p&gt;這是現代許多事業女性間常見的共同困境與抉擇。&#xA;人生的事業拼搏和發展升遷的黃金時期往往就在青年時期，絕佳機會往往一去不再有，&#xA;卻偏偏女性作為一個碳基生物的生育黃金時期也重疊於此，並且可能更加短暫且同樣一去不返。&#xA;有賴於科技的加持惠及之下，凍卵往往就成為現代女性作為拖延推遲生育時間的一個手段。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;一時找不到合適的婚戀對象&lt;/p&gt;&#xA;&lt;p&gt;佔凍卵人數最大宗的凍卵動機大概就是這條了：因為尚且找不到合適的婚戀男性。&#xA;為避免失焦，本篇不探討所謂的合適到底是怎麼樣的，只談論現象既成的狀態。&#xA;確實現代大量女性一時無法覓得足以認可的良人，也知道自己的生育時間不等人，&#xA;在面對自身年齡焦慮和擇偶焦慮又不想要含糊找個人隨便嫁了的情況下，&#xA;凍卵就成為給自己來個遊戲時間展延、緩解心理壓力，賺得額外一段從容擇偶時間的手段。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;沒什麼想法，就當是買個保險。&lt;/p&gt;&#xA;&lt;p&gt;最後有一部份人大概以渾渾噩噩來形容都不為過了。&#xA;她們並沒有什麼積極的想法或規劃，也不是為了打拼事業發展，也不是焦慮於找不到對象，&#xA;甚至於可能對找對象也還沒有什麼想法，抱持著真正隨緣隨意的心理狀態。&#xA;可能她們也還沒想清楚這輩子到底想不想結婚？有沒有要生孩子？&#xA;雖然對什麼都還沒有具體想法，但是確實眼看著自己的年齡逐漸增加，於是也跑去凍卵了。&#xA;目的就是當作給自己買一個保險，以防「以後萬一想生孩子了呢？」&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;以上就是大部份凍卵女性常見的行動原因，&#xA;可能還有一些比較少見的因素並未被提及，然而主要的大宗動機大約就是上面所列舉的這樣。&#xA;雖然許多女性跑去凍卵，然而她們大部份並不能夠得到期望的好結果，&#xA;這是從 20 年來的結果數據所展現的確定事實，凍卵之後成功生子的就只有 3%。&#xA;那麼為什麼這些凍卵的女性最後大多失敗了呢？目前整理起來主要為以下原因：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;事後自然懷孕&lt;/p&gt;&#xA;&lt;p&gt;一個女性不論基於任何原因跑去凍卵，結果之後竟然(預期或非預期的)自然懷孕了，&#xA;那麼通常很自然的就不需要回去使用當初所凍的卵了！&#xA;這其實是一個很好的結果，可能也是所有其他結果裡面最好的。&#xA;只不過因為所凍的卵最後並沒有被使用，因此像這樣的案例就會被歸在「未成功」的數據裡；&#xA;可惜的是我目前並不能夠得知像這樣案例的佔比到底有多少？&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;人工生育本身具有失敗率&lt;/p&gt;&#xA;&lt;p&gt;這項失敗因素使在所有因素裡面最預期自然的失敗因素了，&#xA;那就是凍卵到受孕生產的整個過程並不是百分百保險的，其本來就具有各種風險和失敗率。&#xA;這就是為什麼一般會建議凍卵要凍至少 20 顆的主要原因了！&#xA;因為卵子本來就可能會取卵失敗、冷凍失敗、解凍失敗、受精失敗、培養失敗、植入失敗等等，&#xA;因此需要以數量來填補風險，而一般來說冷凍 20 顆以上的卵子才能夠得到最終大約 90% 的成功率。&#xA;(&lt;em&gt;至於能不能被取出 20 顆以上的卵則是另一個問題！&lt;/em&gt;)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;身體機能老化而難以孕育&lt;/p&gt;&#xA;&lt;p&gt;生育的極限並不只在於卵子而已！&#xA;事實上以當前的技術水準來說，卵子的冷凍保存期甚至能比你的壽命還要長，&#xA;然而在許多案例裡面卻是當女性想要啟用卵子的時候，&#xA;面臨到她的子宮、肌肉、其它器官等已經老化到不能夠再承受懷孕的狀況。&#xA;根本邏輯其實就是女性的懷孕生產極限本來就是由許多不同的身體狀態所決定的，&#xA;並不只來自於卵子的限制；&#xA;雖然卵子可能是首當其衝最早過期的項目，但卻不是唯一的一個！&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;年齡太大時才想到凍卵&lt;/p&gt;&#xA;&lt;p&gt;許多人等到火燒眉毛的時候才知道焦急，才想到要行動，&#xA;於是就造成了有部份的失敗案例其實是源自於太晚才想到要去凍卵的情況。&#xA;年紀太大時才去做凍卵，除了前項所述的身體其它機能情況之外，&#xA;擺在前面更大的問題可能是取不出足夠的卵！&#xA;一來是卵子的品質本來就隨著年齡快速遞減，如果到了 40 歲才來凍卵，那自然本來就很難挑出品質好的；&#xA;二來是在品質之外，體內的「庫藏」本來也就是隨著年齡而愈來愈捉襟見肘，愈難取出足夠數量的卵子。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;找不到婚戀對象&lt;/p&gt;&#xA;&lt;p&gt;許多凍卵最後失敗(&lt;em&gt;再重申複習一次所謂的失敗是指未能最終使用並受孕&lt;/em&gt;)的案例&#xA;是因為女人最終不能找到婚姻配偶而導致。&#xA;雖然手上沒有具體的統計數字，但是依據部份處理人工生育相關工作的醫生的感受口述，&#xA;這項原因是佔據相當份量的主要原因之一！&#xA;因為找不到婚戀對象，自然沒有正確的精子可以和卵子配對受經乃至植入胚胎並受孕&#xA;(&lt;em&gt;至於捐精什麼的則被歸類為下面一個原因的範疇&lt;/em&gt;)。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;受法律限制而不能使用&lt;/p&gt;&#xA;&lt;p&gt;還有些凍的卵不能夠被使用，是因為受限於我國法律規範的因素，&#xA;而有一部份的人認為此項因素是我國與歐美諸國在凍卵使用率上面造成巨大差異的主要原因！&#xA;我國法律在凍卵一事上的原則是以不孕治療為主，也就是說只有在女性具有合法配偶的情況下才能夠動用，&#xA;至於單身無配偶但想要懷孕、想接受捐精、乃至同性戀伴侶想要懷育等等，&#xA;都不在被允許使用自己所凍的卵的範圍，&#xA;即使凍卵的女性死亡了也無法捐出所保存的卵子而必須要銷毀。&#xA;(&lt;em&gt;這就是為什麼許多這類需求的人都要花費十倍以上價錢跑去國外那些沒有相關限制的國家做人工生殖的原因！&lt;/em&gt;)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;迷思與陷阱&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/gender/%E5%87%8D%E5%8D%B5%E8%BF%B7%E6%80%9D/#%e8%bf%b7%e6%80%9d%e8%88%87%e9%99%b7%e9%98%b1&#34;&gt;迷思與陷阱&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;直接導致凍卵未能被成功使用的原因大約都列舉在前面了，&#xA;然而為什麼會發生這些原因，並且集中大量發生導致失敗的結果呢？&#xA;這當中就存在許多值得玩味思考和檢討改進的地方。&#xA;以我的看法，我認為其中很大一部份原因是因為人們看待凍卵這件事的時候存在許多誤區，&#xA;因為認知的偏誤而導致過高的期望或者錯誤的期待，從而使得最後沒能產生預期的結果。&#xA;那麼這裡我就來分享我所察覺的這些陷阱或迷思。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;不要等老了才去凍卵&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/gender/%E5%87%8D%E5%8D%B5%E8%BF%B7%E6%80%9D/#%e4%b8%8d%e8%a6%81%e7%ad%89%e8%80%81%e4%ba%86%e6%89%8d%e5%8e%bb%e5%87%8d%e5%8d%b5&#34;&gt;不要等老了才去凍卵&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;許多人似乎對科技存在種不切實際的過度自信，然而事實上人類的科技是極其有限的，&#xA;愈是在專家領域內的人往往愈加領略技術的極限，反而容易傾向保守。&#xA;(&lt;em&gt;上面這現象在幾乎所有科技技術領域都是存在的，比如近年風行的人工智慧！&lt;/em&gt;)&lt;/p&gt;&#xA;&lt;p&gt;凍卵不是萬靈丹，並不能夠解決所有的不孕問題；&#xA;然而在面臨人工生殖本身的風險之前，許多女性在一開始就被困住了，因為連足夠數量的健康卵都難以收齊！&#xA;如果一次取不出足夠數量且品質過關的卵子怎麼辦呢？那就只好多取幾次嘍！&#xA;這就是為什麼較年輕些的女人可能只需要一次取卵手術就好，年齡偏大的卻往往需要取好幾次的原因了&#xA;(&lt;em&gt;除了養卵取卵本身所造成的折騰外，每次取卵那可都是一次的手術費喔&lt;/em&gt;)。&#xA;有時候女人面對此種情況，或許是荷包經不住多次失血，也會許是不願承受多次的身體折騰，因此取卵數偏低；&#xA;而有的時候可能也不是女人不願意折騰，而是年齡實在已經大了，實在再榨也難榨出多少！&#xA;那如果取卵數量少的話會怎麼樣呢？&#xA;說實在的也是不會怎麼樣，這東西也沒有個標準的門檻限制說一定要取多少，&#xA;只不過數量少的話，自然就是承受隨之提高的培養受孕失敗機率！&lt;/p&gt;&#xA;&lt;p&gt;人類的科技水平遠還沒有達到能夠勝天的程度，而取卵凍卵本身也仍舊偏好依賴在年輕的時候去做這件事。&#xA;然而問題是，如果我在你 25 歲的時候，還正在花樣年華、美麗動人，可能追求的豬哥還一大堆的時候，&#xA;如果那時我叫你去凍卵，說「萬一你以後找不到對象……，萬一以後想生孩子生不出來……」&#xA;那你猜猜我會不會被追著打到巷子尾？&#xA;所以啊，人往往都是要到火燒屁股的時候才會開始著急，因此這問題實在也難解！&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;關於單身受孕和同性戀的議題&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/gender/%E5%87%8D%E5%8D%B5%E8%BF%B7%E6%80%9D/#%e9%97%9c%e6%96%bc%e5%96%ae%e8%ba%ab%e5%8f%97%e5%ad%95%e5%92%8c%e5%90%8c%e6%80%a7%e6%88%80%e7%9a%84%e8%ad%b0%e9%a1%8c&#34;&gt;關於單身受孕和同性戀的議題&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;關於本國法律方面對於人工生殖的限制，&#xA;我發現當下的新聞媒體和許多文章都喜歡把它導向到同性戀與單親的女性生育權議題上，&#xA;然而如果站在實用主義的角度的話，其實探討這方面的意義反而不大！&lt;/p&gt;&#xA;&lt;p&gt;就現形法規以不孕的治療為主要目的，因此女性凍卵後不能捐給別人使用，&#xA;也不能在沒有配偶的情況下拿來使用，當然也就不能接受捐精的培育，&#xA;也無法讓同性戀使用這項技術懷育自己的寶寶。&#xA;關注這項議題的人多半將焦點放在生育權的話題，大意就是「我自己的卵我自己要用，為什麼不可以呢？」&#xA;「雖然我沒有配偶，但我很想要生寶寶，用自己的卵，在自己的身上懷孕，為什麼不可以呢？」&#xA;這些議題的目的就是要推動法規的鬆綁開放，&#xA;讓許多原本需要去國外花上十倍以上價錢才能做的事可以在本國低成本的實行。&#xA;這些議題是對是錯、是好是壞在這裡我不評斷，&#xA;但是站在我一向主張的實用主義來看，其實根本對正常人影響不大，&#xA;甚至於開放或限制都沒有太多基於實際上的意義。&lt;/p&gt;&#xA;&lt;p&gt;對於無配偶想懷孕的情況，老實說其實可以直接去懷孕，根本不需要經過凍卵這個步驟！&#xA;也許你說是因為一直找不到可以信賴托付終身的伴侶；問題是若要使用人工生殖懷孕，用誰的精子？&#xA;捐精，誰捐的精？那個人難道就是值得托付終身的人嗎？&#xA;你說捐精的話就無所謂，反正也不跟他過日子，只要基因好就好了；&#xA;那麼其實這樣的話你也可以直接找個基因好的人(&lt;em&gt;也就是長的帥，頂多再加上聰明&lt;/em&gt;)懷孕就好了！&#xA;反正子宮長在自己身上，女生自己想要懷孕還不容易嗎？&#xA;反正也只需要對方出個精子，至於他人怎麼樣根本也無所謂是吧，就和捐精是一樣的。&#xA;這樣選擇面一下子就打開了，反正也不和男生過日子，根本無需要糾結過多不必要的擇偶條件；&#xA;並且站在男生的立場也同樣如此，可以玩玩享受又不用負責任也不會被糾纏，也太容易願意配合了！&#xA;在這樣的情況下，會發現「因為一直遇不到合適的對象所以拖到大齡」這個顧慮就直接消失了，&#xA;「看得上我的人，我看不上他；我看上的人，他看不上我」帶來的難題也能立刻打消九成&#xA;(&lt;em&gt;因為站在男性的視角，上述的問題通常只有在考慮長期關係的時候才會存在，&lt;/em&gt;&#xA;&lt;em&gt;至於沒有壓力、不用負責的極短期或一夜關係則通常不會困擾阻礙男性&lt;/em&gt;)。&#xA;其實這就是所謂的「去父留子」，或者用更加貼近民間語氣的話來說就叫作「自願當單親媽媽」。&#xA;多少女孩子千百萬個不願意卻做了單親媽媽，哭天哭地的，而你卻主動希望做單親媽媽。&#xA;你不在意通常單親媽媽會遇到的那些問題，並且自己也有能力能夠承擔獨自生育養育的各種支出和付出，&#xA;那還有什麼需要糾結的？&lt;/p&gt;&#xA;&lt;p&gt;因此如果你真的想要生小孩，真的不在意也無所謂有沒有人生的配偶、伴侶，&#xA;那麼其實立刻就可以行動了，根本不需要走凍卵、捐精，然後拖到高齡產婦年紀再去做人工生育這一條路。&#xA;這就是為什麼我說站在現實的實用立場上，法規在凍卵這件事上的限制，&#xA;對於想要單親生育的女性來說無關痛癢的原因了！&lt;/p&gt;&#xA;&lt;p&gt;對於同性戀的部份，確實除非經過人工生育否則不能夠產生自己的孩子，&#xA;然而放寬凍卵相關法規限制其實實際意義並不大！&#xA;兩個女人能產生受精卵嗎？(&lt;em&gt;至於兩個男的就完全不用討論了，根本不可能！&lt;/em&gt;)&#xA;我其實不知道以當前的科技水平而言能不能夠做到把兩個卵子的 DNA 提取後合併成一個受精卵？&#xA;但無論能還是不能，其實這已經遠遠超出「凍卵」這件事所涵蓋的範圍了，&#xA;單純放寬凍卵的限制並沒有辦法解決同性戀所需要的生育問題，&#xA;也許更該先討論的可能是基因轉化、人工製精、合成胚胎等等議題&#xA;(&lt;em&gt;我用的名詞應該不正確，因為我也不是生物科技研究員，搞不好有些正確的名詞也根本還沒誕生，&lt;/em&gt;&#xA;&lt;em&gt;所以請自己望字生義&lt;/em&gt;)。&#xA;所以在此情況下放寬凍卵限制對於同性生殖沒有任何意義與幫助！&lt;/p&gt;&#xA;&lt;p&gt;也許有人會問說「那可以用捐精的精子啊！」&#xA;好的，那麼用誰的精呢？不管用誰的，肯定不會是伴侶的吧？&#xA;如果都打算生的孩子不是伴侶的種了，那麼根誰懷孕不是懷孕呢？甚至兩個人一起都懷孕又何嘗不可呢？&#xA;於是又回到了前面單身女性自願懷孕生育的一樣情況，完全無需要繞一圈走凍卵再人工生殖這條路！&lt;/p&gt;&#xA;&lt;p&gt;因此從現實的層面來說，凍卵的相關法律限制對於不論是無配偶無伴侶的單身女性生育，或是同性戀的生育問題，&#xA;其實都不構成什麼真實的問題。&#xA;而那些對於這方面的討論話題，特別是將焦點導向到生育權與同性戀的行為，&#xA;其更多的可能是以爭取政治上的話題與利益為目的。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;凍卵並不能夠提升女性魅力&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/gender/%E5%87%8D%E5%8D%B5%E8%BF%B7%E6%80%9D/#%e5%87%8d%e5%8d%b5%e4%b8%a6%e4%b8%8d%e8%83%bd%e5%a4%a0%e6%8f%90%e5%8d%87%e5%a5%b3%e6%80%a7%e9%ad%85%e5%8a%9b&#34;&gt;凍卵並不能夠提升女性魅力&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;再回顧一下思考為什麼要去凍卵？&#xA;其中一項可能位列第一名的動機，甚至有可能是佔大頭的主要動機，便是「一時找不到合適的對象」，&#xA;而凍卵的期望作用便是給自己延長找對象的時間。&#xA;然而這裡我卻告訴你用凍卵來解決找對象的問題是大概率要徒勞無功的！&lt;/p&gt;&#xA;&lt;p&gt;這要牽涉到求偶與匹配的邏輯了。&#xA;如果說求偶尋覓就像是在一個房間裡尋找遊戲活動主持人所埋藏的彩蛋的話，&#xA;那麼延長遊戲的時間確實可以幫助許多來不及找到彩蛋的人尋寶過關；&#xA;然而若房間內其實根本沒有彩蛋呢？&#xA;如果彩蛋的數量只有遊戲人數的一半，而已經有一半的玩家拿到蛋出場了呢？&#xA;在這種問題本身無解的情況下，就算尋寶時間再延長多久都是沒有用處的！&#xA;而這其實就是這些因為找不到對象而去凍卵的人所面臨的真正問題，&#xA;也是為什麼凍卵對於解決這問題毫無幫助的真正原因！&lt;/p&gt;&#xA;&lt;p&gt;說到大齡剩女為什麼剩下來的萬年經典狀態，無非就是「看上我的，我看不上他；我看上的，他看不上我！」&#xA;那麼這裡我們就先跳過女生看不上的那一部份不管，&#xA;反正應該沒有哪個女生凍卵的原因是想要看看「多花點時間也許能讓自己接受那些原本看不上的男人」吧？&#xA;別鬧了！女生凍卵的目的當然是想要用時間來獲得那看得上的男人的可能性。&#xA;那麼就要接觸到核心的問題了，&lt;br/&gt;&#xA;問題一：為什麼那些你看上的男人們看不上你呢？&lt;br/&gt;&#xA;問題二：凍卵對於解決問題一有什麼正面意義？&lt;br/&gt;&#xA;其實對於稍有點智慧的人來說，答案到這裡已經呼之欲出了。&lt;/p&gt;&#xA;&lt;p&gt;很多女人認為……，其實正確應該說是去凍卵的裡面大多認為沒找到對象是因為緣份還沒到，&#xA;認為若有多一點時間就可以捕捉到那個想要的人，&#xA;可能壓根沒有意識到面臨的其實是一個結構性的困局而不是單純遇的人不夠多，&#xA;即便可能在她的求愛經驗中早已發生了太多次「我愛的不愛我，愛我的我不愛」這樣的事情，&#xA;即便事實的真像歷歷在眼前都沒有讓她意識到這絕不是單純機率的問題！&#xA;不論是真沒有意識過還是內心不願意承認，既然這裡講現實求務實，那就不能夠不去揭開並直面這個問題。&#xA;那些沒看上你的男人，他們之所以沒看上你的原因可能有多種，&#xA;比如你年齡大、身材不好、長相不在人審美上、個性蠻橫嬌作、腦袋空空、負債累累、……等等等等。&#xA;這些原因可能多種多樣，然而共同不變的一點是：凍卵對解決這些問題一點幫助都沒有！&#xA;凍卵所能做的只是延長你的生育能力，而不能夠增加你的吸引魅力！&#xA;嫌棄你年齡大的男人不會因為你去凍卵後就不嫌了，嫌你身材長相不達標的也不會因為凍卵而降低標準，&#xA;其他如性格、文化、能力等等亦是同樣如此。&#xA;因此為了這些目的的凍卵行為，到頭來除了花費大錢給自己買一個幾乎注定會破滅的希望之外，沒有什麼用處。&#xA;當然你可以反駁也可以否認，不過現實的統計數據已經明白的告訴我們那些走在你前面的人親身淌出來的結果了！&lt;/p&gt;&#xA;&lt;p&gt;其實我聽聞過一些在人工生殖領域執業多年的醫師，在某些環境氣氛到位的情況下，&#xA;語重心長的對前來的女性說：「與其花錢跑來凍卵，倒不如把錢省下來，趕緊去找個對象，比較實際！」&#xA;上面那是醫生的建議，而若是讓我給建議，那我會說：&#xA;如果真的想要孩子，如果真的擔心再過幾年可能會生不出來，那就趕快去生孩子吧！&#xA;現在這個社會早就已經不會把父不詳的媽媽拿去浸豬籠了，對單親生育的接受眼光也相當寬容與理解，&#xA;你完全可以去生一個自己的孩子，不需要非得抓一個男性來綁住不可。&#xA;至於這時候可能有少部份腦袋不知道裝什麼的女性會跳出來說：&#xA;「女人的價值只在生育嗎？」「女人非得要生孩子嗎？」&#xA;那我只能說你說的沒錯也完全正確，&#xA;並且事實上如果沒打算生孩子的話，凍不凍卵其實與你一點關係都沒有，其實你根本不需要去煩惱凍卵的事情；&#xA;那幹嘛還焦急跳腳呢？&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;有關凍卵補助&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/gender/%E5%87%8D%E5%8D%B5%E8%BF%B7%E6%80%9D/#%e6%9c%89%e9%97%9c%e5%87%8d%e5%8d%b5%e8%a3%9c%e5%8a%a9&#34;&gt;有關凍卵補助&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;這幾年政府為了低迷的生育率而不斷推出一系列措施，其中一項就是補助女性進行凍卵。&#xA;同樣的，對與錯、應與不應，由各位自己去做評斷，而我只在務實的層面去批判這件事，&#xA;那就是補助凍卵等於拿錢丟到水裡去，毫無效益！&#xA;為什麼凍卵沒有效益？相信如果是本篇從頭讀下來的讀者肯定不會有這樣的疑問。&#xA;凍卵所費不貲，大量補助凍卵那更是耗資巨大，然而依據已有的統計資料來看，能夠促成的新生兒卻少得可憐！&#xA;因此我相當反對花大錢去做補助凍卵這樣的政策，成本高昂且效益過低。&lt;/p&gt;&#xA;&lt;p&gt;那要如何有效解決生育率過於低落的問題呢？&#xA;因為本次主題不在這，所以不會過多論述，只簡單提一些非常簡單原則的概念。&#xA;站在工程的角度，要解決一個問題首先你得挖掘出造成問題的根本原因，&#xA;或至少是大部份的主要因素，然後才能夠對症下藥。&#xA;那麼生育率低下難道是因為大家喜歡年齡大生孩子嗎？還是因為被迫不得不年齡大了才生孩子？&#xA;或者是根本不願意生孩子？&#xA;對於被迫不得以的，你得找出什麼原因導致女人被迫不得以；&#xA;對於不願意的，你得找出她不願意的原因，然後才是思考解決方案的步驟。&#xA;既然許多生育的困難是來自於晚生，那麼只要能夠讓女人願意早點生孩子，即便平均只提前了幾個年，&#xA;我想這成本效益都遠高於花大錢去補助成效低劣的凍卵！&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;參考資料&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/gender/%E5%87%8D%E5%8D%B5%E8%BF%B7%E6%80%9D/#%e5%8f%83%e8%80%83%e8%b3%87%e6%96%99&#34;&gt;參考資料&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.twreporter.org/a/egg-donation-grahic-explanation&#34;&gt;https://www.twreporter.org/a/egg-donation-grahic-explanation&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.tfcivf.com/zh/problem-oriented-knowledge-of-infertility-factor/content/68&#34;&gt;https://www.tfcivf.com/zh/problem-oriented-knowledge-of-infertility-factor/content/68&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.e-stork.com.tw/article/view/10066&#34;&gt;https://www.e-stork.com.tw/article/view/10066&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://health99.hpa.gov.tw/article/19704&#34;&gt;https://health99.hpa.gov.tw/article/19704&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.commonhealth.com.tw/article/87589&#34;&gt;https://www.commonhealth.com.tw/article/87589&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>螺旋槳 3：各種奇妙問題</title>
      <link>http://www.huoschen.idv.tw/blog/aerospace/%E8%9E%BA%E6%97%8B%E6%A7%B3-3---%E5%90%84%E7%A8%AE%E5%A5%87%E5%A6%99%E5%95%8F%E9%A1%8C/</link>
      <pubDate>Sun, 06 Jul 2025 00:44:32 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/aerospace/%E8%9E%BA%E6%97%8B%E6%A7%B3-3---%E5%90%84%E7%A8%AE%E5%A5%87%E5%A6%99%E5%95%8F%E9%A1%8C/</guid>
      <description>&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這次要來談論關於螺旋槳的運作特性，包含許多可能在直覺之外的奇特現象。&#xA;或許有些人會說&#xA;「什麼？螺旋槳不就是大號電風扇，開強一點風就大一點，開弱點風就小點這樣嗎？&#xA;我以為可以調整槳距已經足夠複雜了，怎麼都這樣了還沒完啊？！」&#xA;是的，螺旋槳推力系統在實際應用中的複雜度並不僅止於直覺所理解的部份，&#xA;本篇就讓我們來看看它還有什麼奇幻的特性吧！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_螺旋槳的通常旋轉方向&#34;&gt;螺旋槳的通常旋轉方向&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;為了避免需要重複解釋同樣的邏輯，&#xA;因此在探討螺旋槳產生的各種奇妙反應之前，得先來解釋關於螺旋槳旋轉方向的問題。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;「螺旋槳是向著哪個方向旋轉的呢？」&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這個問題的標準正確答案是：&#xA;「不知道，看你想讓它怎麼轉都可以！&#xA;不過話雖如此，然而在特定的應用上確實存在一般的慣例。」&#xA;以飛機螺旋槳來說，大部份的螺旋槳是右旋的。&#xA;也就是說以一般常見螺旋槳安在飛機頭的情況來說，當你坐在駕駛座位上向前方看的時候，&#xA;那麼就會看到螺旋槳是順時鐘旋轉的。&#xA;如果螺旋槳是安在飛機後面的話，那麼從座位扭頭向後看，會看到螺旋槳也同樣是順時鐘旋轉；&#xA;不過若站在同樣的飛機外面，從飛機尾巴後面觀看的話，那麼會看到螺旋槳是逆時鐘旋轉的。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;那麼在以下各種情況的探討中，便會預設使用一個同樣右旋的螺旋槳。&#xA;當然實際上也可以安裝個左旋的螺旋槳，那麼所描述的各種現象就會對稱反向過來；&#xA;不過除非有特別描述交代，否則以下探討都將假設在使用了右旋螺旋槳的情況下。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_反力矩&#34;&gt;反力矩&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-3/fig2-1-torque-reaction.png&#34; alt=&#34;fig2 1 torque reaction&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 1. 螺旋槳反力矩示意圖 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_propeller-aerodynamics&#34;&gt;[&lt;a id=&#34;_footnoteref_1&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;牛頓告訴我們力與反力是同時成對存在的。&#xA;那麼當我們用發動機對螺旋槳施加力矩使其旋轉的時候，&#xA;自然就會有一股大小相等、方向相反的力矩施加在我們的飛機身上，&#xA;如同上圖(&lt;em&gt;Figure 1&lt;/em&gt;)所示意的 Reaction，給飛機施加一個向左滾轉的力矩。&#xA;這個力矩有多大呢？力與反力大小相同，也就是說發動機此刻正好輸出多少扭矩，那麼反扭矩就是多少；&#xA;換句話說基本就是油門推推愈大則反力矩同等愈大。&#xA;這就是為什麼單引擎小飛機在低速準備進場降落的時候，如果遇到什麼狀況想要放棄降落重飛的話，&#xA;那麼油門一推，飛機就容易左翻(因為大部份螺旋槳是右旋的)的原因！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;jet-stream&#34;&gt;槳尾噴流&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-3/fig3-1-jet-stream.png&#34; alt=&#34;fig3 1 jet stream&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 2. 螺旋槳加速後的氣流柱會收窄，而前面則會吸入範圍更大的氣流&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;螺旋槳的作用就是用來把空氣加速向後推出去，&#xA;因此空氣在經過螺旋槳盤面之後會被加速，在螺旋槳後面形成一股高速氣流，如上圖(&lt;em&gt;Figure 2&lt;/em&gt;)所示。&#xA;並且注意到，螺旋槳前面受影響而被吸入槳盤的氣流範圍(&lt;em&gt;也就是隱形的虛擬流管管壁直徑&lt;/em&gt;)是比較大的，&#xA;而從後方噴出的高速氣流則其範圍會縮窄，這個現象會對飛機的性能特性產生相當大的影響。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這個現象是由於流體的連續性而造成的。&#xA;氣流被加速往後吹跑了，那總有人(其它周圍的空氣)要進來補充空間吧，否則不就變真空了？&#xA;既然螺旋槳前面的氣流流速比後面慢，自然只能夠擴大吸拉空氣的面積範圍，才能夠維持盤面進出的空氣流量相等啦！&#xA;況且螺旋槳並不改變前後氣流的壓力、密度，至少理論上也不會改變氣流的溫度，&#xA;因此唯一只能讓前方吸入更大範圍的空氣才能夠維持前面進入的空氣量和後面出去的空氣量相等，&#xA;而這就是開頭所謂的「流體(質量)連續性」。&#xA;這就是為什麼螺旋槳前面吸氣的範圍會擴大的原因，&#xA;並且其實相同的原理也同樣是螺旋槳後面氣流寬度會收窄的原因。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;另外，以上所描述的原理與現象並不只出現在螺旋槳上面，&#xA;只要任何前面吸氣後面噴氣的動力裝置其實都會產生同樣的現象。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;那麼離開螺旋槳的這股高速氣流會給飛機帶來什麼影響呢？&#xA;考量到一般常見的配置都是將螺旋槳放在前方的情況，&#xA;那麼這股高速氣流就會吹襲在後面的飛機機身、以及機翼、尾翼等各部位，&#xA;造成一股把飛機給向後推拉的阻力，降低飛行速度，也同樣降低飛行效率。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;slipstream&#34;&gt;槳尾氣旋&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-3/fig4-1-slip-stream.png&#34; alt=&#34;fig4 1 slip stream&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 3. 通過螺旋槳的氣流不只是加速，還會被帶動旋轉起來！ &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;空氣在經過螺旋槳盤面之後不只會被向後加速，也同時會被螺旋槳給攪動旋轉起來，&#xA;因此在螺旋槳後面的噴流並不是簡單的直線向後吹的高速氣流，而其實是被扭轉旋轉的螺旋氣流。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;為什麼空氣經過螺旋槳後會旋轉起來呢？&#xA;這是因為螺旋槳槳葉產生的氣流阻力，在槳葉運動的時候拖拽拉扯空氣，而使空氣被拖動而旋轉起來的。&#xA;回顧我曾解釋過的機翼升力原理&#xA;&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_airfoil1&#34;&gt;[&lt;a id=&#34;_footnoteref_2&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_2&#34; title=&#34;View footnote.&#34;&gt;2&lt;/a&gt;]&lt;/sup&gt;&#xA;，&#xA;即便是考慮一個外星人製造的機翼，不存在任何摩擦阻力，完全不消耗氣流動能，&#xA;而僅僅只是改變氣流方向而已，它也會產生阻力。&#xA;這個阻力的來源是來自於機翼將下圖(&lt;em&gt;Figure 4&lt;/em&gt;)所示的水平方向速度分量給減速了，&#xA;並且這張圖展示的是如前所述的完美無摩擦狀態，而實際上因為摩擦等其它阻力項的存在，水平速度會減少更多！&#xA;那麼將所示的這個同樣原理放回螺旋槳槳葉上，&#xA;可不就是當槳葉在移動(轉動)的時候，會導致拖拉空氣跟著它移動的方向一起動起來、旋轉起來的原理了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-3/fig4-2-reversed-flow.png&#34; alt=&#34;fig4 2 reversed flow&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 4. 水平方向的氣流被翼面折轉方向後，其水平之分量減少了，這就是螺旋槳氣旋產生的根本源頭&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;螺旋槳所產生的這個旋轉氣流會對飛機產生什麼樣的影響呢？&#xA;首先這氣旋吹在機身上肯定會造成一個令飛機右滾轉的力矩，&#xA;不過因為驅動螺旋槳旋轉本身就會產生左滾的反力矩，&#xA;因此氣旋所造成的這個右滾力矩可以被部份對消，影響反而不大。&#xA;第二個影響則是這個氣旋吹打在機尾的垂直尾舵上，會導致產生一個使飛機向左偏航的力矩，&#xA;如同上圖(&lt;em&gt;Figure 3&lt;/em&gt;)所示，而這才是氣旋給飛機操縱帶來的真正較大影響。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;槳尾氣旋除了會吹在舵面上造成偏轉飛機的力之外，還會導致螺旋槳的效率降低，以及使得飛機阻力增加！&#xA;對於螺旋槳效率的部份，&#xA;簡單的理解就是螺旋槳將發動機給予的能量施加在空氣上，使空氣向後加速而得到反作用力，&#xA;然而有空氣實際上卻不是直直被往後加速的，而是有一個分量跑到別的方向去了(使氣流發生旋轉)。&#xA;空氣在其它方向的加速對於推進沒有作用，然而它卻確實需要吃掉螺旋槳提供的能量，&#xA;成為一種無用的消耗，使得效率降低。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;對於造成阻力的方面，考量一般最常見的螺旋槳放機頭的情況。&#xA;氣流吹在飛機身上本就會產生阻力，&#xA;螺旋槳吹出來的氣流速度肯定比飛機本身飛行速度所帶來的相對風速更快得多，因此阻力又更大了。&#xA;等於螺旋槳前面好不容易吹出來用以推進飛機的高速氣流，立馬後面就被飛機的本體給吃下來，&#xA;成為拖後腿的阻力。&#xA;這部份在前面的螺旋槳噴流影響那邊已經解釋過，&#xA;然而雪上加霜的是這個氣流還不是直直吹的，而是帶旋轉的！&#xA;這種帶角度吹向機翼和尾翼所產生的阻力又要比直直吹過去所產生阻力更大了！&#xA;因此槳尾氣旋不只會降低螺旋槳本身的效率，還會因為氣旋的效果而增加飛機的阻力。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;wingtip-vortices&#34;&gt;槳尖渦旋&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-3/fig5-1-wingtip-vortices.gif&#34; alt=&#34;fig5 1 wingtip vortices&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 5. 機翼尖端切過煙霧使得能夠看見尖端所產生的渦旋 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_3&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_3&#34; title=&#34;View footnote.&#34;&gt;3&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;機翼透過在上下兩面製造壓力差而產生升力，這點以前解釋過&#xA;&lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_2&#34; title=&#34;View footnote.&#34;&gt;2&lt;/a&gt;]&lt;/sup&gt;&#xA;&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_airfoil3&#34;&gt;[&lt;a id=&#34;_footnoteref_4&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_4&#34; title=&#34;View footnote.&#34;&gt;4&lt;/a&gt;]&lt;/sup&gt;&#xA;。&#xA;在二維機翼剖面的分析中我們知道上下翼面的氣壓差被機翼給阻隔了。&#xA;然而現實世界的機翼是處在三維空間的，機翼總是有個盡頭結束的地方，也就是兩邊的尖端，&#xA;那麼機翼下面的高壓就會翻越機翼尖端的邊緣而充填入上翼面的空間，&#xA;這就產生了如上圖(&lt;em&gt;Figure 5&lt;/em&gt;)所示的翼尖渦旋。&#xA;既然說螺旋槳槳葉就和機翼是一樣的，那麼機翼翼尖渦旋的這個現象也同樣會出現在螺旋槳上面，&#xA;也就是本節所述的槳尖渦旋。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-3/fig5-2-propeller-vortices.jpg&#34; alt=&#34;fig5 2 propeller vortices&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 6. 螺旋槳誘導渦流示意圖 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_5&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_5&#34; title=&#34;View footnote.&#34;&gt;5&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這個渦旋的存在會導致什麼樣的影響呢？會導致螺旋槳的功效降低！&#xA;用比較白話直覺的方式來說，&#xA;槳葉下翼面的高壓被洩到上翼面去，會導致上下壓力差減小，自然導致產生的推力會縮減。&#xA;從另一個方向來理解，在前兩篇&#xA;&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_propeller1&#34;&gt;[&lt;a id=&#34;_footnoteref_6&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_6&#34; title=&#34;View footnote.&#34;&gt;6&lt;/a&gt;]&lt;/sup&gt;&#xA;&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_propeller2&#34;&gt;[&lt;a id=&#34;_footnoteref_7&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_7&#34; title=&#34;View footnote.&#34;&gt;7&lt;/a&gt;]&lt;/sup&gt;&#xA;中，&#xA;我們已經知道螺旋槳槳葉上的氣流主要受到螺旋槳旋轉轉速、和飛機前進的空速的共同影響。&#xA;而用比較學理的話來說，就是槳尖所形成的這個氣旋會在槳葉上產生一個與飛機空速相同方向的氣流，&#xA;也就是說它把槳葉所感受到的空速氣流給放大了，如上圖(&lt;em&gt;Figure 6&lt;/em&gt;)所示。&#xA;這會導致什麼結果？導致槳葉上的氣流攻角變小！&#xA;比方假設現在槳角擺了 45 度，理論上氣流攻角好像是 45 度，&#xA;但是因為飛機本身在移動的關係，所以還要疊加上氣流速度的影響，使得實際的氣流攻角只有比方說 30 度；&#xA;然而還有一個槳葉葉尖製造的渦流影響還沒被考慮，若將渦流所誘導造成的這個流速給加進來的話，&#xA;那麼實際的槳葉攻角可能就變成比方只有 15 度。&#xA;最後結果就是升力(推力)變更小了，阻力(扭矩)卻變更大了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這個額外的氣流是由於槳尖製造的渦流所誘導產生的，因此就被稱為「誘導氣流」，&#xA;就是我在之前文章&#xA;&lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E8%9E%BA%E6%97%8B%E6%A7%B3-1---%E5%8E%9F%E7%90%86%E7%B0%A1%E4%BB%8B/#induced-flow&#34;&gt;曾經稍微提及&lt;/a&gt; &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_6&#34; title=&#34;View footnote.&#34;&gt;6&lt;/a&gt;]&lt;/sup&gt;&#xA;卻沒有解釋的那個誘導氣流。&#xA;而因為誘導氣流所造成的額外阻力，就被我們稱為「誘導阻力」。&#xA;另外，這個誘導氣流的來源並不只來自於某支槳葉它自己，而是所有的槳葉都會製造槳尖渦流，&#xA;也同樣所有槳葉都會受到全部渦流的綜合影響。&#xA;因此螺旋槳的槳葉數量愈多時，其實效率會愈低！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_側滑效應&#34;&gt;側滑效應&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-3/fig6-1-side-slip.png&#34; alt=&#34;fig6 1 side slip&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 7. 當螺旋槳盤面並不是正對著氣流的時候，吹到螺旋槳上的氣流(藍色)可以分解成兩個部份(青色) &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_8&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_8&#34; title=&#34;View footnote.&#34;&gt;8&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;通常我們在介紹螺旋槳或思考螺旋槳相關效能什麼的時候，往往都有意無意的忽略側滑氣流，&#xA;然而實際上側滑氣流確實經常會存在，也確實會給飛機的操縱性造成一定程度的影響！&#xA;比方在發生如上圖(&lt;em&gt;Figure 7&lt;/em&gt;)的飛行動作的時候，&#xA;飛行速度所產生的氣流就不是垂直吹在螺旋槳盤面上的，而是帶有一個夾角。&#xA;這樣的話，我們可以將氣流分解為兩個分量，&#xA;一部份仍然是垂直於槳盤的氣流，另一部份則是完全平行於槳盤的氣流(&lt;em&gt;如上圖的青色短箭頭&lt;/em&gt;)。&#xA;對於那垂直盤面的氣流會產生什麼作用，我們已經介紹過很多，相信已經非常熟悉了，就不多贅述；&#xA;而那平行於盤面的氣流就是本節重點所在：側滑氣流。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-3/fig6-2-side-flow.png&#34; alt=&#34;fig6 2 side flow&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 8. 螺旋槳槳葉所感受到的氣流，來自於槳葉自己的移動速度(橙色)、以及側滑氣流(藍色)相互加減的結果 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;側滑的氣流會使得槳葉受到不平均的氣流加減速效果。&#xA;以上圖(&lt;em&gt;Figure 8&lt;/em&gt;)來作為說明示例，螺旋槳槳盤上有一股側滑氣流從圖片的上方往下吹來，&#xA;那麼當槳葉轉動到右側位置的時候，槳葉的運動方向面向直吹而來的側向氣流，&#xA;使得槳葉所受到的實際風速更大，因此槳葉在這裡會得到更大的升力；&#xA;相反的，當槳葉轉動到左側位置的時候，槳葉的移動方向與從槳葉背面吹來的側滑氣流同向，&#xA;使得槳葉受到的實際風速降低，因此槳葉在這個位置的時候升力減小。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;如此我們就知道，當側滑氣流作用在螺旋槳盤面上的時候，會造成槳葉在不同位置上產生的升力不平均的結果。&#xA;以上圖(&lt;em&gt;Figure 7&lt;/em&gt;)飛機正在以向右偏航的姿態側滑的情況來說，&#xA;螺旋槳盤面上就會出現一股從左到右的側滑氣流。&#xA;考量到螺旋槳旋轉方向一般為右旋的情況，&#xA;因此飛機的螺旋槳盤面在下方的部份就會產生比較大的推力，而盤面上方的推力則降低，&#xA;綜合的結果就是帶來一股使飛機仰頭的力矩。&#xA;以此類推，當拉桿使飛機抬頭以正攻角的姿態飛行時，&#xA;螺旋槳盤面上的側滑氣流就會產生一股使飛機向左偏航的力矩。&#xA;這就是為什麼在玩一些比較擬真的飛行遊戲時，當我們擺動操縱杆試著讓飛機往我們想要的方向改變姿態的時候，&#xA;飛機卻總是會在直覺預期之外的方向也產生反應的原因，之一。&#xA;不過好在對於螺旋槳飛機來說，一般通常這樣的側滑偏角都不大，&#xA;一般情況可能約就幾度左右的範圍，所以影響確實是存在但份量有限；&#xA;然而在有些應用上，比方說直昇機，那麼側滑現象就是相當稀鬆平常並且佔據份量了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_陀螺效應&#34;&gt;陀螺效應&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-3/fig7-1-precession.png&#34; alt=&#34;fig7 1 precession&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 9. 陀螺效應示意圖 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;螺旋槳作為一個高速旋轉的質量塊，自然會產生陀螺效應。&#xA;陀螺效應實際上為兩種特性：定軸性(inertia)和逆動性(precession)。&#xA;其中的定軸性就是陀螺轉軸會傾向於維持方向而抗拒改變的特性，&#xA;也就是說如果要施力改變轉動軸的指向的話，會感受到比陀螺不旋轉的時候更大的轉動慣量。&#xA;定軸性造成的影響是在我們想要改變螺旋槳轉軸的朝向時，也就是俯仰與偏航操作時，會受到較大的慣性阻力。&#xA;不過因為螺旋槳質量佔比整個飛機很小，並且產生的影響也是各方向均勻一致的，&#xA;因此通常影響微小，一般也會直接忽略掉這一部份。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;飛機螺旋槳真正比較有感的陀螺效應是其中的逆動性部份，&#xA;就是當我們施加一個力矩在陀螺身上的時候，會在順著陀螺旋轉方向偏移 90 度的位置產生反應力矩，&#xA;使得陀螺受力而偏轉(或傾倒)的方向和我們施力的方向不一樣，如上圖(&lt;em&gt;Figure 9&lt;/em&gt;)所示。&#xA;在實際的飛機上，高速旋轉的螺旋槳本身就是個大陀螺，&#xA;因此當我們操作俯仰或偏航時，都會因為陀螺的逆動性而產生額外的動作反應。&#xA;例如在下圖(&lt;em&gt;Figure 10&lt;/em&gt;)的示例中，當操作尾舵使飛機低頭的時候，&#xA;就會因為螺旋槳的陀螺效應而產生一個使飛機向左偏航的力道。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-3/fig7-2-gyro-pitch-by-yaw.png&#34; alt=&#34;fig7 2 gyro pitch by yaw&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 10. 當操作飛機向左偏轉時，因為螺旋槳的陀螺效應而產生一股使飛機低頭的力矩 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;不知有沒有人注意到？&#xA;欸這陀螺效應產生的力矩，和螺旋槳側滑效應產生的力矩好相相反啊，那它倆不就互相能消抵了嗎？&#xA;答案是不能！&#xA;且先不說兩者產生的不平衡力可能並不相等，它們產生的時機也是不一樣的。&#xA;陀螺效應在有加速度的時候產生，也就是說只在正在操作飛機改變姿態的當下產生，&#xA;而側滑效應只和側滑角度有關係。&#xA;意思就是說比方當我拉動操縱桿讓飛機抬頭的時候，&#xA;除了當然會有主要的抬頭的力道之外，也會感受到一股使飛機向右偏航的力道，這是由於陀螺效應所產生；&#xA;然而當飛機往上抬頭的這個動作做完，現在一直維持固定抬頭攻角飛行的時候，&#xA;陀螺效應就沒有了，這時會感受到的主要偏航力量可能來自於側滑效應，會施加給飛機向左偏航的力道。&#xA;因此這兩者雖然給飛機造成的擾動方向相反，但並不能夠彼此對消，而是會在不同的時間點跳出來！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_總結&#34;&gt;總結&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;如此這般，螺旋槳的這些特性給飛機帶來的影響主要分為兩個部份：使推進效率降低、以及使操控反應複雜化。&#xA;其中關於效能和效率的部份，主要是工程師們要去解決的問題，&#xA;並且這些問題的存在並不會產生「不對稱」、「不協調」的不良影響，&#xA;因此對於實際操作的飛行員視角來看反而不是什麼需要在意的重要事情。&#xA;對於第一線操作飛機的飛行員來說，&#xA;更加重要的是螺旋槳的這些這樣那樣的特性給飛行操縱所帶來的複雜性和迷惑性，&#xA;特別是在未經熟練的飛行員操縱下經常會產生許多並不符合直覺的複雜反應，&#xA;若搭配「合適」的飛行條件狀況的話甚至容易發生事故。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;比方說在螺旋槳飛機大行其道的二次世界大戰時期，小機身配上單發大馬力的戰鬥機的這些螺旋槳效應就特別明顯。&#xA;如果再加上低速起降時飛機不易控制，還特別需要油門時大時小推來推去的操作條件，&#xA;再加上起降環境本身又窄小嚴苛的情況下，比方說航空母艦上的起降，就特別容易發生事故！&#xA;也因為大部份螺旋槳都是右旋的關係，當在航空母艦降落時若突然出個什麼事要重飛還什麼的，&#xA;油門一推大，飛機就容易往左偏或往左翻。&#xA;這就是為什麼航空母艦的艦島大多喜歡蓋在右側而非左側的主要原因了，&#xA;因為在左側容易被降落失敗的飛機突襲！&#xA;此外螺旋槳的陀螺效應也是為什麼一戰時期的&#xA;&lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-2---%E5%A4%9A%E7%BC%B8%E4%BD%88%E5%B1%80/#rotary&#34;&gt;旋轉發動機&lt;/a&gt;&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_9&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_9&#34; title=&#34;View footnote.&#34;&gt;9&lt;/a&gt;]&lt;/sup&gt;&#xA;曇花一現後很快就被放棄掉的原因，之一。&#xA;因為發動機本身就是質量相當大的東西，再整個旋轉起來導致飛機的陀螺效應相當嚴重，&#xA;起降時相當容易出事故，特別容易害死菜鳥飛行員！&#xA;(&lt;em&gt;不過其實當時的時代下整個航空都還在萌芽探索時期，導致飛行員意外的因素是遠不只單單這麼一項就是了！&lt;/em&gt;)&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;footnotes&#34;&gt;&#xA;&lt;hr/&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_1&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_1&#34;&gt;1&lt;/a&gt;. &lt;a href=&#34;http://www.free-online-private-pilot-ground-school.com/propeller-aerodynamics.html&#34;&gt;Propeller aerodynamics&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_2&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_2&#34;&gt;2&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E7%BF%BC%E5%9E%8B%E7%B3%BB%E5%88%97-1---%E6%A9%9F%E7%BF%BC%E5%8D%87%E5%8A%9B%E5%8E%9F%E7%90%86/&#34;&gt;翼型系列 1：機翼升力原理&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_3&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_3&#34;&gt;3&lt;/a&gt;. &lt;a href=&#34;https://imgur.com/gallery/wingtip-vortices-caused-by-high-pressure-yg4w53j&#34;&gt;Wingtip vortices caused by high pressure&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_4&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_4&#34;&gt;4&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E7%BF%BC%E5%9E%8B%E7%B3%BB%E5%88%97-3---%E9%82%A3%E4%BA%9B%E5%8D%87%E5%8A%9B%E5%8E%9F%E7%90%86%E5%93%AA%E8%A3%A1%E9%8C%AF%E4%BA%86/&#34;&gt;翼型系列 3：那些升力原理哪裡錯了？&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_5&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_5&#34;&gt;5&lt;/a&gt;. &lt;a href=&#34;https://www.sciencedirect.com/topics/engineering/bladed-propeller&#34;&gt;Bladed Propeller&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_6&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_6&#34;&gt;6&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E8%9E%BA%E6%97%8B%E6%A7%B3-1---%E5%8E%9F%E7%90%86%E7%B0%A1%E4%BB%8B/&#34;&gt;螺旋槳 1：原理簡介&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_7&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_7&#34;&gt;7&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E8%9E%BA%E6%97%8B%E6%A7%B3-2---%E8%AE%8A%E8%B7%9D%E8%9E%BA%E6%97%8B%E6%A7%B3/&#34;&gt;螺旋槳 2：變距螺旋槳&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_8&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_8&#34;&gt;8&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Grumman_F6F_Hellcat&#34;&gt;Grumman F6F Hellcat&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_9&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_9&#34;&gt;9&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-2---%E5%A4%9A%E7%BC%B8%E4%BD%88%E5%B1%80/&#34;&gt;活塞引擎 2：多缸佈局&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>螺旋槳 2：變距螺旋槳</title>
      <link>http://www.huoschen.idv.tw/blog/aerospace/%E8%9E%BA%E6%97%8B%E6%A7%B3-2---%E8%AE%8A%E8%B7%9D%E8%9E%BA%E6%97%8B%E6%A7%B3/</link>
      <pubDate>Sun, 15 Jun 2025 19:55:32 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/aerospace/%E8%9E%BA%E6%97%8B%E6%A7%B3-2---%E8%AE%8A%E8%B7%9D%E8%9E%BA%E6%97%8B%E6%A7%B3/</guid>
      <description>&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這次來探討一個在螺旋槳上面佔據相當重要性的主題：螺旋槳的變距。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-2/fig1-1-variable-pitch-propeller.gif&#34; alt=&#34;fig1 1 variable pitch propeller&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 1. 可變螺距螺旋 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_1&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在前篇 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_2&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_2&#34; title=&#34;View footnote.&#34;&gt;2&lt;/a&gt;]&lt;/sup&gt;&#xA;提到螺旋槳葉片所感受到的氣流角度是變化的。&#xA;一片槳葉的每個位置因為與旋轉軸心的距離不同而導致移動速度不同，&#xA;然而這點其實相當容易解決，只要把槳葉設計成我們看到的那個扭轉造型就可以了。&#xA;真正比較複雜棘手的部份來自於因為螺旋槳的轉速變化、以及飛機飛行速度不同而導致的槳盤迎風氣流速度不同，&#xA;這兩項都在變動的氣流流速導致葉片上所感受到的氣流角度時常變化且不易捉摸。&#xA;當然我們可以不理會這些問題的存在，並且直到現代也有相當龐大的應用領域就是這麼做的，&#xA;如輕航機、遙控模型飛機、和各位家裡的電風扇等等。&#xA;只不過這樣的缺點也很明顯，當飛行速度愈來愈快的時候，&#xA;螺旋槳的效率就會愈差，愈難以再繼續有效提供推動力，導致難以再繼續提高速度。&#xA;為此，人們發明了可以改變槳葉螺距的變距螺旋槳，如上圖(&lt;em&gt;Figure 1&lt;/em&gt;)所示。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_槳葉角變動範圍&#34;&gt;槳葉角變動範圍&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-2/fig2-1-pitch-regions.png&#34; alt=&#34;fig2 1 pitch regions&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 2. 螺旋槳槳角區間&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;可變螺距的螺旋槳可以改變槳葉的角度，一般來說槳葉可設置的角度粗略分為三個區間：正槳、反槳、和順槳，&#xA;即在上面的示意圖(&lt;em&gt;Figure 2&lt;/em&gt;)中分別標示為&lt;em&gt;淺綠&lt;/em&gt;、&lt;em&gt;淺黃&lt;/em&gt;、和&lt;em&gt;淺藍&lt;/em&gt;的範圍。&#xA;當然，實際飛機上的螺旋槳可能因為各種設計需求的緣故，其實際能夠使用的區間也許會比上面所示的更少更窄。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;先看反槳的情況(如圖 &lt;em&gt;Figure 2&lt;/em&gt; 紫色槳葉)，此時的槳角很低甚至是負的，&#xA;使氣流作用在槳葉上產生的推力不再推動飛機向前，而是將飛機反方向向後拉。&#xA;這個作用就像是汽車上的倒退檔，使飛機產生一個向後退的力，在地面機坪上操作飛機向後滑動的時候有用處；&#xA;特別是在那種左右都有螺旋槳的飛機上，還能夠做到能讓飛機原地掉頭轉向的動作，用處很大。&#xA;當然，在正常飛行的狀態下使用這個檔位就會給飛機和整個動力系統帶來相當大的負擔，&#xA;因此許多飛機的操作設計只允許在地面上使用這個檔位。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;順槳(如圖 &lt;em&gt;Figure 2&lt;/em&gt; 藍色槳)則是將槳角直接拉到擺平(約 90 度)，與飛機前進的氣流同向。&#xA;這個槳角基本只有一個用途，就是當飛機飛在空中且發動機故障或燃油耗盡而停止運轉的時候。&#xA;此時螺旋槳已經完全沒有產生推動動力的作用，而只剩下阻力板的作用，&#xA;因此在此情況下將螺旋槳調整至順槳的位置，可以使螺旋槳產生的氣流阻力減少至最低。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-2/fig2-2-feathered.jpg&#34; alt=&#34;fig2 2 feathered&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 3. 畫面右邊的螺旋槳正好處於順槳狀態 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-propeller-aeronautics&#34;&gt;[&lt;a id=&#34;_footnoteref_3&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_3&#34; title=&#34;View footnote.&#34;&gt;3&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;再來看看在一般平常狀態下最常見的正槳範圍。&#xA;槳角可以使用的範圍那麼大，那麼應該在什麼情況下使用怎麼樣的槳角呢？&#xA;在下圖(&lt;em&gt;Figure 4&lt;/em&gt;)中便示例了三種不同的狀態。&#xA;其核心原理就是使槳葉與相對氣流之間維持在最佳攻角上，攻角過大會產生槳葉失速問題，&#xA;攻角過小則螺旋槳不能有效產生推力，還可能因為轉矩過小而導致發動機超速運轉！&#xA;那麼既然槳葉的相對氣流是由飛機的前進速度也就是航速、加上槳葉自身運動速度也就是螺旋槳轉速所共同影響的，&#xA;自然槳角的選擇就會和這兩個速度之間的關係有關。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-2/fig2-3-pitch-angles.png&#34; alt=&#34;fig2 3 pitch angles&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 4. 不同空速和槳葉速度搭配下的槳角&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;上圖(&lt;em&gt;Figure 4&lt;/em&gt;)的&lt;em&gt;橙色槳&lt;/em&gt;和&lt;em&gt;藍色槳&lt;/em&gt;分別對應相同螺旋槳轉速下處於不同航速的狀況，&#xA;當航速高的時候槳角就需要大一點，而航速低的時候槳角則要小一點。&#xA;那麼當我想要加點油門給飛機提速的時候呢？上圖&lt;em&gt;橙色槳&lt;/em&gt;和&lt;em&gt;紫色槳&lt;/em&gt;正好表達了這種情況。&#xA;在航速沒變的情況下，我給發動機加力，自然螺旋槳就轉的比較快了，因此這時的槳角便需要調整至比較小的位置；&#xA;相反的當欲降低發動機出力而使螺旋槳轉速變慢的時候，槳角便需要往大的方向調整。&#xA;總結而言，最佳槳角主要和飛機航速、及螺旋槳轉速二者有關，&#xA;當航速高而轉速低時需要大槳角，而當航速低而轉速高時需要小槳角；&#xA;至於航速與轉速二者皆高、或者皆低時，則最佳槳角無法簡單的判斷，需要更仔細的計算二者之比例後才能夠決定。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這些調整看似凌亂，槳角、空速、轉速等等彼此都有關係，互相影響，&#xA;但其實&lt;strong&gt;更加簡單直白的原理，就是在任何狀態下，使槳葉與氣流維持一個不變的攻角！&lt;/strong&gt;&#xA;回顧上圖示意的幾個不同狀態，雖然空速、轉速、和槳角都變來變去，然而槳葉與氣流的攻角卻都是一樣的，&#xA;而槳葉角度的手動變更行為其實也是為了使攻角保持一致。&#xA;更進一步探討，其實攻角也不一定非要在一個固定的數值上維持不動，而是在一個範圍內都可以使用，&#xA;只要攻角不至過大而發生槳葉失速，也不會過小而讓發動機因為負載過低而超速運轉，&#xA;就都是可以使用的攻角區間。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;上面說到無論狀態如何變化，槳葉的攻角會由人為控制使其大致維持在固定的數值上，&#xA;但在此大條件之下其實攻角還是存在一個可以變化的浮動範圍。&#xA;如果攻角偏高，甚至處在接近槳葉失速的邊緣，&#xA;則此時雖然看似槳葉的升力大，但阻力同樣也大，&#xA;因此轉軸扭矩大，發動機負載高，轉速自然會偏低；&#xA;總和起來推力反而偏低，但發動機輸出功率同樣偏低，&#xA;總體動力系統的運作效率比較高&#xA;(類似原理解釋可參 &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-13---%E5%8C%96%E6%B2%B9%E5%99%A8%E8%88%87%E6%B2%B9%E9%96%80/#make-more-efficiency&#34;&gt;閱往期內容&lt;/a&gt;&#xA;&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_carburetor&#34;&gt;[&lt;a id=&#34;_footnoteref_4&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_4&#34; title=&#34;View footnote.&#34;&gt;4&lt;/a&gt;]&lt;/sup&gt;)，&#xA;更白話來說就是省油。&#xA;相對的如果讓槳葉攻角偏低，此時看似槳葉的升力係數也偏低，&#xA;但是因為扭矩小，發動機負載低，自然轉速會升高，反而能夠產生更多的升力(推力)；&#xA;也就是說雖然效率降低也更耗油了，但是卻更能夠壓榨發動機的馬力輸出&#xA;(亦可參閱 &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-10---%E5%8A%9F%E7%8E%87%E5%B7%94%E5%B3%B0/#make-more-power&#34;&gt;往期內容&lt;/a&gt;&#xA;&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_max-power&#34;&gt;[&lt;a id=&#34;_footnoteref_5&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_5&#34; title=&#34;View footnote.&#34;&gt;5&lt;/a&gt;]&lt;/sup&gt;)！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;總結對於槳角的調整目標，&#xA;首要任務是確保在任何空速和轉速之下，讓葉片氣流攻角都處在可以正常工作的範圍，&#xA;不會讓槳葉發生失速，也不會使發動機超速運轉。&#xA;在確保槳葉處在上述的可工作範圍區間下，次要任務則是依據當下對動力的需求調整使攻角偏高或偏低。&#xA;攻角偏高則動力系統效率高，適合巡航等狀態使用；&#xA;攻角偏低則系統效率差但可爆發更多動力輸出，適合需要短時間加速的場合使用。&#xA;也許至此許多汽車駕駛已經發現了，螺旋槳槳角也就是槳距的調整，其地位即類似於汽車上的排檔變速機構。&#xA;低速時使用低速檔(小槳距)，高速時使用高速檔(大槳距)；&#xA;需要臨時加大動力提速時需要降檔(偏低調整槳距)，要省油巡航時則使用高速檔(偏高調整槳距)。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_恆速螺旋槳&#34;&gt;恆速螺旋槳&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;理論上來說，能夠動手改變螺旋槳的槳角(或稱槳距、螺距)，&#xA;就已經足夠應付各種不同發動機轉速和飛行速度下的各種狀況了，&#xA;只是這樣的操作需求在實際的飛行中卻給飛行員帶來不小的操作負擔。&#xA;因為飛行員必須要隨時關注空速(也就是飛行速度)和發動機轉速，並且立刻做出對槳距的調整行為。&#xA;然而空速和轉速是時刻都在變化的，因此槳距的調整也同樣需要一刻不能停的調整；&#xA;並且調整槳距的行為本身也同樣會導致轉速發生變化，因此調整槳距的整個行為其實頗有複雜度。&#xA;如果說飛行員沒有別的事情幹而只需要做槳距調整這件事的話，那倒也不是什麼大事，&#xA;但是偏偏飛在天上要操作的東西、和要注意的東西還有很多別的，&#xA;那麼調整槳距的這件事情就會導致飛行員相當大的壓力。&#xA;但是在上一節的內容已經說明過了，這些變來變去的調整最終其實就是要讓槳葉攻角維持不變罷了。&#xA;那麼如果能夠發明一個什麼機構能夠依據氣流狀況自動改變槳葉角度，&#xA;是不是就可以在槳距這件事情上減輕飛行員的操作負擔呢？&#xA;是的，事情的確是這樣，並且也確實存在一個作用與這個目的相當接近的設計，&#xA;這就是：恆速螺旋槳。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-2/fig3-1-constant-speed-propeller.jpg&#34; alt=&#34;fig3 1 constant speed propeller&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 5. 恆速螺旋槳結構 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_3&#34; title=&#34;View footnote.&#34;&gt;3&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;恆速螺旋槳顧名思義，就是能自動保持螺旋槳維持在一個固定轉速的裝置。&#xA;螺旋槳在旋轉的時候會驅動圖中(&lt;em&gt;Figure 5&lt;/em&gt;)標示為 Governor Drive 的齒輪，&#xA;驅動著上方標示為 Governor 的離心飛錘。&#xA;飛錘轉速高於需求的時候便會因為離心力而向外張開，反之在轉速不夠的時候就會因彈簧的力道而向內收縮。&#xA;螺旋槳的液壓機構(&lt;em&gt;或可能有些設計比較喜歡使用齒輪而非液壓，但原理是一樣的&lt;/em&gt;)便能依飛錘的狀態去調整螺旋槳槳距。&#xA;當偵測到螺旋槳轉速高於所設定的目標轉速時，便會自動增加槳距以降低轉速；&#xA;相反當偵測到螺旋槳轉速低於目標轉速時，便會自動減少槳距以增加轉速，&#xA;最終使螺旋槳趨向於維持在所設定的轉速上固定不變。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;恆速螺旋槳大約是在兩次世界大戰中間的時期被發明出來，很快就流行在所有的螺旋槳飛機上，&#xA;直到現在所有的飛機螺旋槳但凡能夠變距的，基本用的全都是恆速螺旋槳。&#xA;在螺旋槳恆速的作用下，無論飛機爬升或下降，飛行速度或快或慢，&#xA;螺旋槳都能夠自己自動調整槳距，使槳葉與氣流的攻角隨時處在近似定值的狀態。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;不過雖然螺旋槳恆速的設計使得槳角可以隨空速而自行調整匹配，&#xA;但是另一方面，它卻不能夠自行匹配發動機的功率狀態。&#xA;什麼意思呢？比如說當下整個螺旋槳的狀態都很好，但是我想要加速，於是推了油門，&#xA;這時會發生什麼事？&#xA;發動機的輸出功率變大了，槳軸扭矩輸出變大了，於是螺旋槳轉速自然會變快。&#xA;這時為了使螺旋槳轉速不變，於是恆速機構自動調整，就會把槳角拉高。&#xA;於是槳葉的攻角就會變大，過量的話甚至能導致槳葉失速！&#xA;那麼如果我不是要加速而是要減速，收了油門，這時又會怎麼樣呢？&#xA;這時發動機輸出功率變小，槳軸扭矩輸出變小，螺旋槳轉速會變慢。&#xA;這時為了使螺旋槳轉速不變，於是恆速機構會降低槳角。&#xA;於是槳葉攻角會變小，使螺旋槳工作效率降低！&#xA;也就是說，&lt;strong&gt;恆速螺旋槳雖然可以自動針對空速的變化而自適應調整槳距，&lt;/strong&gt;&#xA;&lt;strong&gt;但卻無法妥善處理因為發動機功率變化而需要的調整。&lt;/strong&gt;&#xA;當飛行員改變發動機功率輸出，也就是變更了油門的位置時，&#xA;也會需要將恆速螺旋槳的轉速設定一併調整變更。&#xA;按照前面對恆速螺旋槳和發動機功率之間所產生問題的推導，&#xA;可以知道當油門增大的時候，會需要同樣調升螺旋槳的轉速設定，以繼續維持槳葉攻角仍處在良好位置；&#xA;相對當油門減小的時候，也同樣需要調降螺旋槳的轉速設定。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;雖然說螺旋槳恆速的這個機制並不能夠完全免除飛行員對螺旋槳的控制，&#xA;但其自動化程度已經能相當大幅度的減輕操控負擔。&#xA;一般飛行時的通常情況下並不需要去做刻意調整介入，只有在變更油門位置的時候才需要一併調整。&#xA;並且絕大多數時候下，螺距調整桿和節流閥(油門)桿是同進同退的，&#xA;意思就是油門往前推的時候，槳距桿也同樣往前推；&#xA;油門往後收的時候，槳距桿也同樣往後收，兩桿子幾乎總是處於同樣的位置&#xA;(&lt;em&gt;當然有的時候可能為了短時間得到更多動力，螺旋槳桿會比油門桿更往前些推&lt;/em&gt;)。&#xA;因此雖然仍然免除不了需要去控制螺旋槳螺距，但是控制的對應關係已經大幅度的單純、簡單化了，&#xA;相比於沒有定轉速的機構而需要飛行員時刻關注空速和轉速，並且持續微調槳距的情況而言，&#xA;自動化程度已是相當高。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-2/fig3-2-engine-controls.gif&#34; alt=&#34;fig3 2 engine controls&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 6. 螺旋槳飛機動力控制的經典三根杆，其中本篇重點在於中間的螺旋槳控制杆 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_6&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_6&#34; title=&#34;View footnote.&#34;&gt;6&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-2/fig3-3-p51-cockpit.jpg&#34; alt=&#34;fig3 3 p51 cockpit&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 7. P-51 戰鬥機座艙內，圖中圈起標註的地方就是動力控制三杆，其中寫著一個白色「P」的黑頭柄就是螺旋槳控制器 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_7&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_7&#34; title=&#34;View footnote.&#34;&gt;7&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-2/fig3-4-propeller-control.jpg&#34; alt=&#34;fig3 4 propeller control&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 8. 一架現代小飛機上面的動力控制三杆，形式或有不同，但操作原理邏輯是一樣的 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_8&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_8&#34; title=&#34;View footnote.&#34;&gt;8&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;上面是幾張飛機上經典的控制發動機的三根杆的圖片&#xA;(&lt;em&gt;如果飛機有多個發動機的話，那麼這些杆的數量也會同樣增加，每具發動機對應一副&lt;/em&gt;)。&#xA;其中左邊黑色的是發動機節流閥也就是油門，右邊紅色的是油氣濃度控制&lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_4&#34; title=&#34;View footnote.&#34;&gt;4&lt;/a&gt;]&lt;/sup&gt;，&#xA;而位居中間的就是本文的主角：螺旋槳控制器(Propeller Level)。&#xA;(&lt;em&gt;油門通常都是黑色的，油氣濃度控制器通常都是紅色的，至於螺旋槳控制杆則不一定什麼顏色。&lt;/em&gt;&#xA;&lt;em&gt;這當中肯定存在某些歷史緣由，只不過我並不清楚其中的典故，而如果有懂行的讀者可以寫信來告訴我。&lt;/em&gt;)&#xA;注意中間控制螺旋槳的杆並不是槳距控制杆(Propeller Pitch Controller)，&#xA;因為現在基本所有的飛機都配置了恆速螺旋槳，所以那東西並不直接控制槳距，&#xA;而是用來調整前面所謂螺旋槳目標轉速的控制器，因此叫作 Propeller Level Controller，&#xA;或有時候直接簡稱為 Propeller Control；&#xA;至於中文它叫什麼？也許就姑且稱它為螺旋槳控制器吧！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_螺旋槳轉速調控原則&#34;&gt;螺旋槳轉速調控原則&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;螺旋槳控制器的調控原則是這樣的：&#xA;「大致跟隨油門，油門要進則它也要進，油門要退則它通常也要退；&#xA;另外它可以比油門推進的更多，但後退時不能比油門更低。」&#xA;這項調控原則的前半段應該很容易理解，就如同前面所解釋的槳距調整原理一樣，就是為了匹配發動機功率而已；&#xA;而此原則的後半段則可能稍微不那麼能直觀理解，它其實是對於螺旋槳控制裕度原理的反應。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;前面講解槳距調適原理時就有提過，槳距其實可以有一個操作的容許範圍，偏高則效率高，偏低則動力強；&#xA;高出太多則可能產生槳葉失速的後果，低出太多則可能產生轉速超速的後果。&#xA;然而在恆速機制涉入的情況下，基本無需考慮超速運轉的情況，&#xA;如果螺旋槳真要超轉的話，恆速機制會自動拉高槳距把轉速降下來，&#xA;因此通常會直接造成比較嚴重後果的是轉速過低的情況！&#xA;當發動機處在較高油門的工作狀態，功率的輸出較強，很自然的會讓螺旋槳轉的更快，&#xA;而此時過低的螺旋槳轉速設定，會使恆速機制因為欲降低轉速而過度拉高槳距，&#xA;便容易發生槳葉失速的問題！&#xA;於是這就最終產生了「螺旋槳控制杆只能在油門前面，不能落在油門後面」這樣的操作原則，&#xA;而同樣也是當欲調整油門位置時，&#xA;「推油門前應先推進螺旋槳杆再進油門，收油門時應先退油門後再退螺旋槳杆」這句操作原則的原理。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;已經說了這麼多調整原理，那麼為什麼我們一定要維持槳角、槳距、或轉速在範圍內呢？&#xA;若槳距或轉速落在容許範圍外面，會發生什麼樣可能的後果呢？&#xA;當螺旋槳設定轉速過低，也就是槳距過大、攻角過高，則可能發生槳葉失速的現象。&#xA;回顧機翼升力原理&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_airfoil2&#34;&gt;[&lt;a id=&#34;_footnoteref_9&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_9&#34; title=&#34;View footnote.&#34;&gt;9&lt;/a&gt;]&lt;/sup&gt;，&#xA;當槳葉失速時，氣流會在槳葉背面產生迴流區，&#xA;這些渦流除了會產生更大的螺旋槳轉動阻力之外，不穩定的渦流也會導致槳葉振動和受力不均，&#xA;可能造成槳葉損壞或壽命降低。&#xA;即便沒有到發生槳葉失速的程度，螺旋槳過高的旋轉阻力會導致發動機負載過大，&#xA;如果這時發動機還處於較低油門的工作狀態的話，就容易造成發動機損壞或壽命降低。&#xA;這種情況就好比是汽車使用高檔位低速駕駛，或使用三檔起步那樣；&#xA;省油、效率高是真的沒錯，但車子容易壞也是真的！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;另一方面，如果轉速過高……，&#xA;或者說恆速螺旋槳可能沒有轉速過高的問題，但仍有發動機溫度過高的問題！&#xA;一般來說除了啟動和暖機的階段之外，通常只有在短時間需要大功率的時候會暫時性的拉高螺旋槳轉速，&#xA;就好像汽車暫時降檔提速那樣，一般這種操作不會維持太久。&#xA;一方面是因為此時工況效率差、耗油，&#xA;另一方面也是因為發動機處在低負載、高轉速的狀態下，容易導致溫度過高的結果。&#xA;這就和把汽車打在三檔開在高速公路上的情況是一樣的。&#xA;如果說此時飛機速度很快，散熱條件好的話那可能倒還好，&#xA;但是若航速不高就可能會有引擎過熱的風險，&#xA;特別是對於氣冷式發動機而言&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_engine-cooling&#34;&gt;[&lt;a id=&#34;_footnoteref_10&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_10&#34; title=&#34;View footnote.&#34;&gt;10&lt;/a&gt;]&lt;/sup&gt;！&#xA;這就是為什麼許多採用氣冷發動機的飛機，在起飛爬升時會被要求不能夠全速運轉，&#xA;並且要求飛行員時刻注意發動機溫度的緣由了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_為什麼要控制螺旋槳轉速而不直接控制槳葉攻角呢&#34;&gt;為什麼要控制螺旋槳轉速，而不直接控制槳葉攻角呢？&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;經過前面對螺旋槳恆速機制的說明介紹後，不知道有沒有人會產生一個問題？&#xA;為什麼我們要設計一個機制去偵測並維持螺旋槳的轉速，而不是去偵測並維持螺旋槳槳葉的攻角呢？&#xA;你看這恆速螺旋槳時時檢測螺旋槳的轉速，然後透過時時調整槳葉角，去維繫轉速保持在設定的數值，&#xA;目的是藉此間接的維持槳葉上氣流的攻角不變。&#xA;那麼為什麼我們不偵測槳葉上的氣流攻角，然後調整槳距直接對標維持氣流攻角呢？&#xA;這樣不就不存在不同發動機工況下之最佳轉速不同的問題了嗎？&#xA;不就連螺旋槳控制杆都可以去掉了嗎？&#xA;那為什麼我們不這麼做呢？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;沒錯，其實我們真正想要的目的並不是轉速，而是攻角，&#xA;並且理想上我們應該直接標定攻角狀態進行控制調整，&#xA;然而讓我們轉向取道去標定轉速的真正原因其實來自於現實的問題。&#xA;理想終究太美好，然而在現實的工程上我們該如何去測量螺旋槳的攻角呢？&#xA;真正導致我們在實務上退而求其次選擇去偵測並控制轉速的原因，其實是因為轉速相對容易測量。&#xA;對於測得螺旋槳的轉速，&#xA;傳統上只需要使用一個離心調速器&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_11&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_11&#34; title=&#34;View footnote.&#34;&gt;11&lt;/a&gt;]&lt;/sup&gt;&#xA;(如圖 &lt;em&gt;Figure 9&lt;/em&gt;)就可以了，&#xA;甚至在現代電子元件科技的加持下，也許更先進的飛機可能使用光學感測器來測量；&#xA;但是槳葉上的氣流攻角要怎麼去測量呢？&#xA;並且這個測量的方法還得要是在高轉速、大離心力的螺旋槳上面，&#xA;可以可靠、穩定、且經濟的測量槳葉攻角的方法！&#xA;這就是為什麼最後流傳下來的控制機制不是標定槳葉攻角，而是標定轉速的原因了。&#xA;雖然這個方式遺留了一些未能妥善解決的問題，也就是在不同發動機工況下的最適轉速不同的問題，&#xA;但對於減輕駕駛員操作負擔的這個目標來說，&#xA;其省心程度已經相比讓駕駛員直接調整槳距的原始方式來說提升了一個層次。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-2/fig5-1-centrifugal-governor.gif&#34; alt=&#34;fig5 1 centrifugal governor&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 9. 離心調速器 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_12&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_12&#34; title=&#34;View footnote.&#34;&gt;12&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;其實類似這樣因為現實困難而妥協的設計經常出現在我們日常所見的事物中。&#xA;比方在活塞發動機主題裡就&#xA;&lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-10---%E5%8A%9F%E7%8E%87%E5%B7%94%E5%B3%B0/#ignition-timing&#34;&gt;曾提及過&lt;/a&gt; &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_5&#34; title=&#34;View footnote.&#34;&gt;5&lt;/a&gt;]&lt;/sup&gt;，&#xA;為了點火正時的問題，我們真正需要的其實是在活塞抵達上死點之前一個固定的時間執行點火。&#xA;我們真正需要與想要的其實是對於點火時間提前量的控制，&#xA;然而現實上卻因為時間的偵測與同步問題，使得我們不得不退而求其次，改為控制點火提前的曲軸角度，&#xA;並且因此留下了在不同曲軸轉速下所需的最佳提前角不相同的問題。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_總結&#34;&gt;總結&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;本篇以螺旋槳槳距調整為核心，講解了調整槳距的目的，&#xA;即讓螺旋槳適配氣流的狀態，使槳葉總是處於最佳效果的角度。&#xA;在可正常工作的槳角範圍內仍存有可微調的空間，可依據效率優先或馬力優先的需求調整使槳角偏高或偏低，&#xA;並且對於槳距的調整機制可以類比為汽車上的排檔變速行為。&#xA;除了正槳之外，反槳能使飛機在地面上的操作更加靈活，而順槳則能在空中停車時減少螺旋槳帶來的阻力。&#xA;在槳角調整適配的理論原則之後，介紹了已被廣泛大量使用的恆速螺旋槳機制，&#xA;它的存在能夠相當大程度的進行自動化控制並解救飛行員於細碎的操作之中。&#xA;並且解釋為什麼採用轉速進行間接控制，而非直接針對槳葉攻角進行自動化控制的原因，&#xA;是源於對工程現實妥協的結果。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;footnotes&#34;&gt;&#xA;&lt;hr/&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_1&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_1&#34;&gt;1&lt;/a&gt;. &lt;a href=&#34;https://grabcad.com/library/variable-pitch-propeller-for-flying-quad-bike-bilamukha-1&#34;&gt;Variable pitch propeller for Flying quad bike &amp;#34;BilaMukha&amp;#34;&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_2&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_2&#34;&gt;2&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E8%9E%BA%E6%97%8B%E6%A7%B3-1---%E5%8E%9F%E7%90%86%E7%B0%A1%E4%BB%8B/&#34;&gt;螺旋槳 1：原理簡介&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_3&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_3&#34;&gt;3&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Propeller_(aeronautics)&#34;&gt;Propeller (aeronautics)&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_4&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_4&#34;&gt;4&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-13---%E5%8C%96%E6%B2%B9%E5%99%A8%E8%88%87%E6%B2%B9%E9%96%80/&#34;&gt;活塞引擎 13：化油器與油門&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_5&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_5&#34;&gt;5&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-10---%E5%8A%9F%E7%8E%87%E5%B7%94%E5%B3%B0/&#34;&gt;活塞引擎 10：功率巔峰&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_6&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_6&#34;&gt;6&lt;/a&gt;. &lt;a href=&#34;https://krepelka.com/fsweb/lessons/commercial/commerciallessons01.htm&#34;&gt;Lesson 1: Complex Aircraft Checkout&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_7&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_7&#34;&gt;7&lt;/a&gt;. &lt;a href=&#34;https://www.combatsim.com/htm/2010/02/p51dmustang/p51d-mustang-flight-1-review.htm&#34;&gt;P-51D Mustang Product Info&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_8&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_8&#34;&gt;8&lt;/a&gt;. &lt;a href=&#34;https://www.boldmethod.com/learn-to-fly/aircraft-systems/how-a-constant-speed-prop-works/&#34;&gt;How A Constant Speed Propeller Works&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_9&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_9&#34;&gt;9&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E7%BF%BC%E5%9E%8B%E7%B3%BB%E5%88%97-2---%E6%A9%9F%E7%BF%BC%E6%B5%81%E5%A0%B4%E7%8F%BE%E8%B1%A1/&#34;&gt;翼型系列 2：機翼流場現象&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_10&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_10&#34;&gt;10&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-3---%E6%95%A3%E7%86%B1%E8%88%87%E6%8E%92%E6%B0%A3/&#34;&gt;活塞引擎 3：散熱與排氣&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_11&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_11&#34;&gt;11&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Centrifugal_governor&#34;&gt;Centrifugal governor&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_12&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_12&#34;&gt;12&lt;/a&gt;. &lt;a href=&#34;https://gifer.com/en/7TB8&#34;&gt;GIFER&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>螺旋槳 1：原理簡介</title>
      <link>http://www.huoschen.idv.tw/blog/aerospace/%E8%9E%BA%E6%97%8B%E6%A7%B3-1---%E5%8E%9F%E7%90%86%E7%B0%A1%E4%BB%8B/</link>
      <pubDate>Sat, 24 May 2025 22:56:27 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/aerospace/%E8%9E%BA%E6%97%8B%E6%A7%B3-1---%E5%8E%9F%E7%90%86%E7%B0%A1%E4%BB%8B/</guid>
      <description>&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在有了一臺能夠提供強勁動力的發動機之後，我們還需要將旋轉的軸功轉化為真正前進的推動力量，&#xA;這東西在汽車上叫作輪胎，而在飛機上便是本系列的主題：螺旋槳。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-1/fig1-1-rotating-propeller.gif&#34; alt=&#34;fig1 1 rotating propeller&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 1. 螺旋槳透過旋轉的力量將空氣向後推出而得反作用力 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-aero-propeller&#34;&gt;[&lt;a id=&#34;_footnoteref_1&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;螺旋槳的作用就是將軸的旋轉力量轉變為推動流體(空氣)向後吹的力量的設備。&#xA;它的原理就和我以前介紹過的機翼升力原理&#xA;&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_airfoil1&#34;&gt;[&lt;a id=&#34;_footnoteref_2&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_2&#34; title=&#34;View footnote.&#34;&gt;2&lt;/a&gt;]&lt;/sup&gt;&#xA;是一模一樣的，&#xA;差別在於一個是平移、一個是旋轉。&#xA;機翼是靠著飛機自己的快速往前跑來讓機翼切過空氣，並將相對氣流折轉向下，&#xA;而螺旋槳是靠著自己旋轉起來快速切過空氣，將空氣向後壓。&#xA;螺旋槳的工作原理和機翼一模一樣，這個意義表示我們可以完全沿用從前對機翼原理的理解，&#xA;連相關的計算圖表與分析工具等都能夠同樣套用在螺旋槳上面。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;此外在我們日常見聞之中，其實存在非常非常多那些我們可能不將它們稱呼為螺旋槳，&#xA;但原理和螺旋槳一模一樣的東西。&#xA;不過雖然螺旋槳的種類和應用用途不少，&#xA;但本系列將聚焦探討的是那被使用在固定翼航空器上面，用來給飛機提供推進力的螺旋槳，&#xA;也就是一般所謂螺旋槳飛機的螺旋槳。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-1/fig1-2-uh1.jpg&#34; alt=&#34;fig1 2 uh1&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 2. UH-1 直昇機頭頂上巨大的旋翼 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_3&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_3&#34; title=&#34;View footnote.&#34;&gt;3&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-1/fig1-3-v22.jpg&#34; alt=&#34;fig1 3 v22&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 3. V-22 魚鷹機頂上可傾斜的，既當直昇機旋翼用、也當飛機螺旋槳用的巨大旋翼 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_4&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_4&#34; title=&#34;View footnote.&#34;&gt;4&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-1/fig1-4-ship-propeller.jpg&#34; alt=&#34;fig1 4 ship propeller&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 4. 在輪船上安裝的巨大船用螺旋槳 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-propeller&#34;&gt;[&lt;a id=&#34;_footnoteref_5&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_5&#34; title=&#34;View footnote.&#34;&gt;5&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-1/fig1-5-fan.jpg&#34; alt=&#34;fig1 5 fan&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 5. 生活中隨處可見的電風扇 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_6&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_6&#34; title=&#34;View footnote.&#34;&gt;6&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_歷史&#34;&gt;歷史&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-1/fig2-1-archimedes-screw.jpg&#34; alt=&#34;fig2 1 archimedes screw&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 6. 阿基米德螺旋泵 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_5&#34; title=&#34;View footnote.&#34;&gt;5&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在有記載的西方技術演進史中，&#xA;現代螺旋槳在古代最早的雛型大概就是在西元前 200 年，阿基米德的螺旋泵了(如圖 &lt;em&gt;Figure 6&lt;/em&gt;)。&#xA;螺旋泵在當時被用來抽水使用，而同樣結構的東西直到現代也仍然被許多應用領域使用，&#xA;如塑膠射出成型設備的加壓器等。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;後來使用機械動力的蒸氣船舶被發明出來以後，螺旋泵很快也被嘗試使用在船舶上作為推進動力裝置使用。&#xA;只不過在船上的使用情況與陸地上抽水不同，通常不會產生大範圍的位能變化，&#xA;很快人們發現其實只要取用螺旋泵的一小截就可以了，&#xA;剩下多餘的部份並不能夠再產生更多的動力，只會變成阻力累贅。&#xA;於是在螺旋槳剛上船的那個時期，基本就是短短一小截螺旋泵的樣子(如圖 &lt;em&gt;Figure 7&lt;/em&gt;)。&#xA;直到近代早期的螺旋槳仍然能見到延續這個概念的影子(如圖 &lt;em&gt;Figure 8&lt;/em&gt;)，&#xA;不過此時螺旋槳形狀的發展也已經相當接近於我們現代人所理解認知的樣子了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-1/fig2-2-archimedische-schraube.png&#34; alt=&#34;fig2 2 archimedische schraube&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 7. 1843 年某條船隻所使用的推進裝置，其實就是短短一小截的螺旋泵 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_5&#34; title=&#34;View footnote.&#34;&gt;5&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-1/fig2-3-great-britain-propeller.jpg&#34; alt=&#34;fig2 3 great britain propeller&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 8. 1845 年的 SS Great Britain 螺旋槳，基本延續最後一截螺旋泵的結構 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_7&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_7&#34; title=&#34;View footnote.&#34;&gt;7&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;從船上來到天空，除了模仿鳥類揮動翅膀的概念設計之外，&#xA;最初見比較正經的升力機構大概就是在 1480 年代，達文西所設計的的直昇機了(如圖 &lt;em&gt;Figure 9&lt;/em&gt;)！&#xA;從達文西的直昇機設計圖中我們依然明顯可以發現，他的「空氣螺釘」(也就是我們現在所理解的螺旋槳)，&#xA;基本就是將螺旋泵轉個角度垂直使用而已。&#xA;不過如果脫離西方視角的話，其實在古老的中國，&#xA;大約西元前 500 年就已經一步到位發明了與現代意義的螺旋槳一樣的設備：竹蜻蜓(如圖 &lt;em&gt;Figure 10&lt;/em&gt;)。&#xA;只不過可惜中國人的發明似乎僅止步於將它作為玩具使用，並沒有再繼續取得更多的進展。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-1/fig2-4-leonardo-helicopter.jpg&#34; alt=&#34;fig2 4 leonardo helicopter&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 9. 達文西直昇機 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-1/fig2-5-taketombo.jpg&#34; alt=&#34;fig2 5 taketombo&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 10. 竹蜻蜓 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_槳截面氣流&#34;&gt;槳截面氣流&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-1/fig3-1-propeller-blade-aoa.png&#34; alt=&#34;fig3 1 propeller blade aoa&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 11. 在螺旋槳一處槳葉截面上，其裝置角、氣流、與攻角之間的關係 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_8&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_8&#34; title=&#34;View footnote.&#34;&gt;8&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;讓我們聚焦在螺旋槳的其中一隻槳葉的其中一處截面來觀察，&#xA;那麼槳葉截面與推力線和氣流之間的關係大約就可以表示如上圖(&lt;em&gt;Figure 11&lt;/em&gt;)所示。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在示意圖的定格畫面中，槳葉正好旋轉到這個位置，正在往下運動，&#xA;而這個運動是由轉軸轉動螺旋槳所造成的，&#xA;也就是圖中(&lt;em&gt;Figure 11&lt;/em&gt;)以粉色標示為 Rotational Velocity 的箭頭。&#xA;也就是說以槳葉的視角來看，有一股與它自己的運動速度一樣快的氣流正在反方向(由下往上)朝它吹來。&#xA;由於槳葉本身帶有一個傾斜角度，也就是圖中以黃色標示為 Pitch Angle 的角度，&#xA;因此槳葉在氣流的作用下會產生升力(推力)和阻力。&#xA;槳葉產生的升力就是我們所謂螺旋槳產生的推力，也就是圖中以藍色標示的 Thrust 箭頭；&#xA;而阻力就會變成螺旋槳轉動阻力的最大來源&#xA;(&lt;em&gt;螺旋槳轉動阻力還包含很多，如轉軸摩擦力等，不過它們與氣流造成的阻力相比之下微不足道&lt;/em&gt;)，&#xA;此阻力則由發動機所提供的轉矩來對抗，以維持螺旋槳持續轉動的能量。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;由此可見，螺旋槳產生推力的原理就和機翼產生升力的原理是一模一樣的，&#xA;只不過在畫示意圖的時候，一般機翼升力朝上，而螺旋槳升力(推力)朝側，方向不同而已。&#xA;另一個不同就是飛機機翼是持續往一個方向移動，而螺旋槳是轉動的，&#xA;但是在關注於一個極短的時間片段的情況下，如上面示意所描述的樣子，則兩者並沒有根本性的差異。&#xA;因此對於螺旋槳產生推力(升力)和阻力的理解，完全可以回去參考我往期寫過的主題 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_2&#34; title=&#34;View footnote.&#34;&gt;2&lt;/a&gt;]&lt;/sup&gt;，&#xA;這裡就不再花篇幅詳細解釋。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;此外對於螺旋槳氣流，還有一項同樣重要的特性需要說明。&#xA;由於螺旋槳在運作的時候，通常我們的飛機也同時在移動，&#xA;也就是上面示意圖(&lt;em&gt;Figure 11&lt;/em&gt;)以藍色標示的 Forward Velocity 箭頭。&#xA;因此螺旋槳所感受到的相對氣流並不只是單純由 rotational velocity (粉色箭頭)產生而已，&#xA;而是 rotational velocity 加上 forward velocity 所合成的氣流，&#xA;也就是圖中以綠色標示的 Relative Wind；&#xA;因此槳葉與氣流的相對夾角(也就是攻角)並不是圖中標示的黃色 Pitch Angle，&#xA;而是綠色的 Angle of Attack。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;admonitionblock note&#34;&gt;&#xA;&lt;table&gt;&#xA;&lt;tbody&gt;&lt;tr&gt;&#xA;&lt;td class=&#34;icon&#34;&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Note&lt;/div&gt;&#xA;&lt;/td&gt;&#xA;&lt;td class=&#34;content&#34;&gt;&#xA;為了避免不必要的複雜度，&#xA;這裡我們假設飛機前進速度的方向和螺旋槳的推力方向是相同的，不存在兩者之間有夾角的情況。&#xA;並且在本系列主題中都將延續這個隱含的假設條件，&#xA;也就是說除非有特別說明交代，否則都默認不存在帶有側滑的情況！&#xA;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;/tbody&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;所以槳葉的實際氣流攻角會比它自己的裝置攻角還要小，&#xA;至於多小則不一定了，得視飛機前進的速度(以下簡稱為飛行速度)和槳葉旋轉運動速度之間的關係而定。&#xA;那麼在適當的情況下，槳葉攻角就有可能是負的，&#xA;也就是雖然螺旋槳還在旋轉，但不只不能產生推力，反而還產生阻力！&#xA;另外，螺旋槳葉片既與機翼相同，自然也同樣存在上表面氣流分離，也就是槳葉失速的情況，&#xA;當攻角夠大的時候就會發生！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;此外，不同於飛行速度所產生的氣流在整個螺旋槳盤面都一致(暫且拋開誘導氣流)，&#xA;槳葉移動的速度是隨著槳盤面半徑位置的不同而變化的！&#xA;白話解釋就是在同樣的轉速之下，愈靠近軸心的地方移動速度愈慢，&#xA;而愈靠近槳葉尖端的地方移動速度愈快，如下圖(&lt;em&gt;Figure 12&lt;/em&gt;)所示。&#xA;那麼槳葉截面最適合(不過大也不過小)的攻角在整根槳葉的不同位置就是不一樣的了！&#xA;而這就是為什麼大多數螺旋槳槳葉會製造成扭曲形狀的原因，如下圖(&lt;em&gt;Figure 13&lt;/em&gt;)所示。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-1/fig3-2-propeller-speed.png&#34; alt=&#34;fig3 2 propeller speed&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 12. 螺旋槳槳葉的移動速度在不同的半徑位置上是不一樣的，愈往中心愈慢，愈往外圍愈快！ &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_9&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_9&#34; title=&#34;View footnote.&#34;&gt;9&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-1/fig3-3-propeller-twist.png&#34; alt=&#34;fig3 3 propeller twist&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 13. 槳葉不同位置截面的安裝角不同 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;induced-flow&#34; class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;其實除了飛行速度本身產生的相對氣流這個因素會使得螺旋槳槳葉有效攻角減小之外，&#xA;螺旋槳自己產生的「誘導氣流」也會進一步減小槳葉有效攻角。&#xA;但是有關誘導氣流的部份不論成因、解釋、還是計算都比較複雜，&#xA;並且其影響在大多情況下可能不若由飛行速度所產生的影響來得更大，&#xA;因此暫且空置這個部份，待到後續合適的主題時再來解釋其成因和影響，並在進階主題時才對其進行計算。&#xA;如果讀者甚至不明白誘導氣流這個詞大概是個什麼意思的話，那麼可以暫且當作這東西不存在！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_槳距&#34;&gt;槳距&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;如果接觸螺旋槳飛機夠多的話，我想一定經常聽到「槳距」這個詞。&#xA;但槳距是什麼呢？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-1/fig4-1-propeller-blade-pitch.jpg&#34; alt=&#34;fig4 1 propeller blade pitch&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 14. 螺旋槳槳距定義示意 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_10&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_10&#34; title=&#34;View footnote.&#34;&gt;10&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;槳距的定義其實就是直接套用螺絲的「螺距」。&#xA;也就是說假設螺旋槳不是在空氣中旋轉，而是在果凍中緩慢旋轉移動，不帶任何打滑的話，&#xA;那麼槳葉的安裝角就會使螺旋槳像螺絲一樣帶著槳盤前進一段距離。&#xA;當螺旋槳旋轉整整一圈的時候，盤面前進的這個距離就是槳距了，與螺絲的螺距一模一樣，&#xA;如上圖(&lt;em&gt;Figure 14&lt;/em&gt;)所示。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;不過其實槳距的定義嚴格來說意義並不大，&#xA;其目的更多的是給操作者(通常也就是飛行員)一個可以參考的大小而已！&#xA;這麼說有兩個原因，其一是螺旋槳運作在空氣中，本身條件就和輪胎、螺絲等應用場景大相逕庭，&#xA;其「打滑」的情況司空見慣，以至於將槳距對應到真實的飛機前近距離並沒有實際的參考意義；&#xA;其二是整片螺旋槳不同位置的安裝角可能是不一樣的，它們的「螺距」可能互相並不一致，&#xA;那麼又應該以誰為準呢？&#xA;因此槳距這個詞其實意義更大的部份是在於幫助對螺旋槳某些特性上的理解，&#xA;在實際操作應用上，其確切之數值亦無任何絕對性的意義，&#xA;而是利用其相對的大小關係來給予操作者對於當前狀態的理解。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;雖然槳距、螺距這兩詞在學理上效用不大外還有模稜兩可的空間，&#xA;並且在工程和理論分析的用途上往往更有用的是直接定義每個截面位置的葉片角度，&#xA;但由於它能夠非常簡單直覺且傳神的表達槳葉當下的配置狀態，&#xA;因此在整個螺旋槳整體的視角之下，我們便仍然經常使用這兩詞來傳達一個相較模糊大約的螺旋槳狀態。&#xA;那麼為了精減文字的緣故，也為了符合常見慣例，本系列文章也會經常使用這兩詞語。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在前一節我們已經知道了螺旋槳自己切過的氣流、加上因為飛機前進的氣流後的合成氣流，&#xA;以及槳葉裝置角之間的關係，那麼許多問題就來了。&#xA;首先是因為圓周旋轉的關係，一片槳葉在不同位置上的實際移動速度是不一樣的，&#xA;這就導致槳葉不同位置的合成氣流角度是不一樣的，&#xA;那麼螺旋槳要如何製造才能夠讓每一個位置的氣流攻角都是最適當的角度呢？&#xA;這就是為什麼我們一般看到的螺旋槳槳葉都是扭轉的形狀的原因了(如圖 &lt;em&gt;Figure 15&lt;/em&gt;)。&#xA;這樣扭轉槳葉就能讓整片槳葉的每個位置都處在最適合的攻角之下。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-1/fig4-2-mercedes-d3.jpg&#34; alt=&#34;fig4 2 mercedes d3&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 15. 一戰時期飛機上的螺旋槳，注意槳葉扭轉的造型 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_11&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_11&#34; title=&#34;View footnote.&#34;&gt;11&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;但是除了上面的問題之外仍然還有其它的問題，&#xA;比如隨著飛行速度的不同，也會導致槳葉氣流的角度改變。&#xA;用白話文來說明就是在不同的飛行速度下，其實槳葉的最適合攻角也是不一樣的。&#xA;那麼如何解決這個因為飛行速度不同而導致螺旋槳槳葉安裝角度需求不同的問題呢？&#xA;解決方案主要有三種：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;olist arabic&#34;&gt;&#xA;&lt;ol class=&#34;arabic&#34;&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;取捨折衷。&#xA;也就是將槳葉扭轉角度設計適配一個最重要的飛行速度，&#xA;至於在其它飛行速度下肯定表現會比較差，不過就算了！&#xA;這是從萊特兄弟開始就一直採用的方案，直到變距螺旋槳發明之前都被大量使用(如圖 &lt;em&gt;Figure 15&lt;/em&gt;)，&#xA;就連到了現代也仍被用在許多低成本的用途上。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;主動調整控制轉速以適配飛行速度。&#xA;也就是說，當飛行的速度不一樣的時候，我們就透過改變螺旋槳的轉速去適配。&#xA;這樣當飛機飛得快的時候就讓螺旋槳轉快一點，飛得慢的時候就讓螺旋槳轉慢一點，&#xA;使槳葉攻角永遠保持在最適當的條件下。&#xA;這方案看似很無厘頭，然而確實存在並且有應用價值，&#xA;比方說當代渦輪發動機內的壓縮機葉片就是以這種方式來適配不同的氣流速度的。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;採用可變距結構。&#xA;如圖(&lt;em&gt;Figure 16&lt;/em&gt;)所示，將每一片槳葉設計為可改變扭轉角度的結構，&#xA;這樣在任何的飛行速度與任何轉速下，都可以透過機構去改變葉片的裝置角度，&#xA;使得氣流總是處在最適當的範圍。&#xA;這種螺旋槳也是從二次大戰前一直到現在，主流螺旋槳飛機所大量採用的設計方案。&#xA;當然這種看似最完美的方案也同樣有其缺點，例如結構較為複雜且成本較高，&#xA;對於承力結構的安全性也有一定程度的要求&#xA;(&lt;em&gt;因此在許多地方的法規裡並不允許輕航機使用這種螺旋槳&lt;/em&gt;)。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-1/fig4-3-c47.jpg&#34; alt=&#34;fig4 3 c47&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 16. C-47 上使用的變距螺旋槳，注意槳葉本身不只有者扭轉的造型，其圓柱形的根部也是可以經由控制機構來改變轉角的&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/propeller-1/fig4-4-variable-pitch-propeller.gif&#34; alt=&#34;fig4 4 variable pitch propeller&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 17. 可變螺距螺旋槳示意 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_12&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_12&#34; title=&#34;View footnote.&#34;&gt;12&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;footnotes&#34;&gt;&#xA;&lt;hr/&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_1&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_1&#34;&gt;1&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Propeller_(aeronautics)&#34;&gt;Propeller (aeronautics)&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_2&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_2&#34;&gt;2&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E7%BF%BC%E5%9E%8B%E7%B3%BB%E5%88%97-1---%E6%A9%9F%E7%BF%BC%E5%8D%87%E5%8A%9B%E5%8E%9F%E7%90%86/&#34;&gt;翼型系列 1：機翼升力原理&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_3&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_3&#34;&gt;3&lt;/a&gt;. &lt;a href=&#34;https://zh.wikipedia.org/zh-tw/UH-1%E7%9B%B4%E5%8D%87%E6%A9%9F&#34;&gt;UH-1直升機&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_4&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_4&#34;&gt;4&lt;/a&gt;. &lt;a href=&#34;https://zh.wikipedia.org/zh-tw/V-22%E9%AD%9A%E9%B7%B9%E5%BC%8F%E5%82%BE%E8%BD%89%E6%97%8B%E7%BF%BC%E6%A9%9F&#34;&gt;V-22魚鷹式傾斜旋翼機&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_5&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_5&#34;&gt;5&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Propeller&#34;&gt;Propeller&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_6&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_6&#34;&gt;6&lt;/a&gt;. &lt;a href=&#34;https://zh.wikipedia.org/zh-tw/%E9%A3%8E%E6%89%87&#34;&gt;風扇&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_7&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_7&#34;&gt;7&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/SS_Great_Britain&#34;&gt;SS Great Britain&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_8&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_8&#34;&gt;8&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/P-factor&#34;&gt;P-factor&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_9&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_9&#34;&gt;9&lt;/a&gt;. &lt;a href=&#34;http://www.free-online-private-pilot-ground-school.com/propeller-aerodynamics.html&#34;&gt;Propeller aerodynamics&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_10&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_10&#34;&gt;10&lt;/a&gt;. &lt;a href=&#34;https://www.sciencedirect.com/topics/engineering/bladed-propeller&#34;&gt;Bladed Propeller&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_11&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_11&#34;&gt;11&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Straight_engine&#34;&gt;Straight engine&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_12&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_12&#34;&gt;12&lt;/a&gt;. &lt;a href=&#34;https://grabcad.com/library/variable-pitch-propeller-for-flying-quad-bike-bilamukha-1&#34;&gt;Variable pitch propeller for Flying quad bike &amp;#34;BilaMukha&amp;#34;&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>利他行為</title>
      <link>http://www.huoschen.idv.tw/blog/thinking/%E5%88%A9%E4%BB%96%E8%A1%8C%E7%82%BA/</link>
      <pubDate>Sat, 17 May 2025 11:22:28 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/thinking/%E5%88%A9%E4%BB%96%E8%A1%8C%E7%82%BA/</guid>
      <description>&lt;p&gt;觀察人類的許多行為或心理活動，往往能夠發覺很多不容易想明白的迷惑傾向，例如其一就是利他行為。&#xA;顧名思義，利他行為就是對他人有利的行為，不一定對自己有利，甚至許多時候是對自己有害的。&#xA;那麼這種行為符合科學與邏輯嗎？&#xA;對於這些不了解的奇幻心理活動，除了以「愛」之名打發過去之外，還有沒有其他的邏輯解釋？&#xA;那麼本篇就來討論有關利他行為與利他心理的箇中奧妙。&lt;/p&gt;&#xA;&lt;p&gt;人類經常會做出很多乍看不利己的行為，比方謙讓、扶助弱小殘疾、節衣縮食省下來捐助給貧困者等等，&#xA;這些行為都是對他人有利而對減損自己利益或生存資源的。&#xA;有些行為比較大，例如捨命救人、捨己救子等等，為了自己以外的別的個體的好處連自己的命都能犧牲。&#xA;當然還有更多的行為其實不會動不動捐獻性命，這些行為對自己的犧牲是更小的，卻也更常見於生活之中，&#xA;例如禮讓別人優先排隊、優先挑選食物或商品，或是在便當不夠的時候讓給其他人而自己餓一餐，&#xA;或甚至像停等紅綠燈讓別人先過馬路等等都算。&#xA;作為高等靈長類的人類可能對於這些良善的行為並不覺得特別意外，&#xA;但大多數可能也並不了解其中的緣由，當然可能大部份也不認為有了解的必要，&#xA;於是自詡星球唯一高等文明的我們便往往簡單的將其歸類於善良的公序良俗，&#xA;或者更簡單的歸於因為人類有「愛」！&#xA;然而若是這麼簡單就把這個問題給結了並不符合我的風格，&#xA;作為講究科學和邏輯的部落格主，我們得試試看能不能從生物演化學的角度來解析，&#xA;看看這些損己利人的事情背後究竟有沒有什麼邏輯脈絡可循？&lt;/p&gt;&#xA;&lt;p&gt;如果我直接打開天窗說亮話，告訴你所有一切都是利己，&#xA;所有看似利他的行為全都是為了利己的目的而行的，你信嗎？&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;一切本於私利&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/thinking/%E5%88%A9%E4%BB%96%E8%A1%8C%E7%82%BA/#%e4%b8%80%e5%88%87%e6%9c%ac%e6%96%bc%e7%a7%81%e5%88%a9&#34;&gt;一切本於私利&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;在我所舉例的這些利他行為裡面，其實有一小部份的行為是相當容易被直觀理解的，&#xA;比方說孩子的母親父親為了保孩子而犧牲自己。&#xA;這是因為從生物生存繁衍的角度來說，孩子是自己基因的延續，&#xA;當發生意外的災禍而必須有人要遭殃的時候，顯然把生存的資源和機會留給後代是更加有利的！&#xA;當然從演化的角度來看，同樣我們可以理解在從前肯定存在許多做法不同的父母，&#xA;有捨己救子的，也有捨子保己的，只不過後者在漫長的演化過程中可能都已經被吃完了，&#xA;以至於不容易在億萬年後被我們遇到！&#xA;然而除了這種對自己的後代直接相關的很容易被分析理解之外，&#xA;在日常社會中我們所能看見的大部份利他行為，卻可能比較難以和自己的利益明顯的連結起來。&#xA;在我們一生回憶中的許多利他不利己行為，可能更多的受益方是朋友、同學、同事，&#xA;還有更多可能是不認識的陌生人。&#xA;那麼為什麼這些行為傾向並沒有在漫長的演化過程中被淘汰掉，反而還發展成為人類天性的一部份呢？&lt;/p&gt;&#xA;&lt;p&gt;這些各種表面看似犧牲了自己的利益，減損了自己的生存資源和機會的行為，&#xA;乍一看好像違反了演化論的邏輯。&#xA;然而我直接先告訴你答案，這些所謂的各種利他行為其實都是利己的，&#xA;是完全符合生存繁衍策略的演化優勢；&#xA;或者有時候我會更喜歡這麼說：&#xA;&lt;strong&gt;包含人類在內的所有動物，總是為了自己的最大利益而生存，一切本就都只有利己而已。&lt;/strong&gt;&#xA;因此人類的各種捨己利他性才會在漫長現實而又殘酷的演化道路上不只被保留下來，還被進一步強化。&lt;/p&gt;&#xA;&lt;p&gt;為了徹底理解這當中的原理奧妙，先讓我們從比較直覺的一般概念來起始。&#xA;對於單一一個個體，也就是你、我、他，或者任何一個人的他自己來說，&#xA;如果從非常直覺直觀的角度來看，我們要如何取得自己的最大利益呢？&#xA;或者說，我們能夠如何最大程度的滿足自身的生存、溫飽、舒適、和繁衍等目的呢？&#xA;那肯定是什麼都不讓，全部我都要；&#xA;管你們東西夠不夠反正我要拿夠，管你們排隊不排隊反正我來就要直接插第一，&#xA;管你們其他人去死去活，反正我要拿夠拿滿吃飽喝足；&#xA;什麼垃圾不落地、環境資源永續、長幼有序、先來後到、還是紅燈停綠燈行，&#xA;我又不認識你們，我方便我滿足就好；&#xA;什麼誠信原則、什麼契約精神、什麼信賴、什麼承諾，我就反悔了你耐我何？&#xA;對於上述形容的這麼樣一個徹頭徹尾極度自私自利的人，理論上應該要很有生存優勢對吧？&#xA;然而實際上會發生什麼事呢？&#xA;&lt;strong&gt;當一個個體極度自私、極度自我中心、極度利己的時候，&lt;/strong&gt;&#xA;&lt;strong&gt;那麼對於這個個體以外的其他所有個體來說，那就是極度的不利己。&lt;/strong&gt;&#xA;於是對於所有其他的任何人來說，和這樣一個人合作顯然就是最不利的選擇，&#xA;是極度減損自己生存繁衍利益的事情！&#xA;於是所有其他人會拒絕、孤立、和排斥這麼樣的一個極度利己者。&#xA;那麼視角回到上面這個極度利己者的身上，&#xA;請問這些行為總體效果終究是給自己帶來了最大的生存繁育演化優勢，還是帶來了極大的劣勢呢？&lt;/p&gt;&#xA;&lt;p&gt;於是本篇的主題到了這裡已經豁然開朗。&#xA;包含人類在內的任何生物，但凡需要兩個以上個體合作乃至多個個體組成社會的，&#xA;都脫離不開彼此的需要，而任何極度私利自我中心的個體會得到的結果是被他人排擠的極不利局面。&#xA;因此&#xA;&lt;strong&gt;利他性的本質，其實就是藉由犧牲讓渡自身的部份利益或優勢，&lt;/strong&gt;&#xA;&lt;strong&gt;去換取其他個體的合作意願，或交換群體的接納包容，最後會反過來從之得到更大的利益回饋！&lt;/strong&gt;&#xA;也就是說其實是透過犧牲部份利益來得到更大的利益，&#xA;看似會減損自己生存繁育利益的事情反而能夠曲線給自己得來更強大的生存繁育優勢，&#xA;於是這些利他性的行為其實就是一種著眼更大收穫的投資付出行為。&lt;/p&gt;&#xA;&lt;p&gt;到這裡其實就已經把利他性的核心原理全部解釋完了。&#xA;這就是為什麼人類即便在沒有接受所謂文明開化的教育之下，&#xA;往往也能夠本能性的發揮出各種利他行為的原因。&#xA;比方說會本能性的對他人友善，對身於苦難狀態的其他人心生憐憫而產生救助之意，&#xA;禮讓幼小、同情弱勢、服從團體規範，以及對各種自認不公義的事情義憤填膺等。&#xA;雖然這當中確實存在許多文明教育之下的影子，然而仔細觀察審視便不難發現，&#xA;許多的行為、傾向、和情緒其實是天生的，&#xA;是任何即便未受過知識教育和文化薰陶的人都能夠天然擁有的性質，&#xA;而這就是這些行為認知已經刻入 DNA 的演化天性的證明。&#xA;當然，並不是每個人都能對這些事情在知識上具有足夠程度的認知和理解，&#xA;於是我們可以觀察到大部份的人們對於人類經常會表現出許多無法理解的迷惑行為，&#xA;而因為無法解釋，於是人們便習慣性的將它們歸於「愛」！&#xA;(&lt;em&gt;當然我並不是說愛就是這些，只是說明所謂的愛裡面至少包含了這些。&lt;/em&gt;)&lt;/p&gt;&#xA;&lt;p&gt;其實類似人類所理解的這樣的透過讓渡利益來獲取合作利益的情形，&#xA;在許多其他的動物裡也同樣能夠看見，特別愈是群居有社會性的動物愈是明顯。&#xA;事實上即便在跨越物種的情況下也並不少見這樣的現象，我們一般會稱之為「互利共生」。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;私利最大化&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/thinking/%E5%88%A9%E4%BB%96%E8%A1%8C%E7%82%BA/#%e7%a7%81%e5%88%a9%e6%9c%80%e5%a4%a7%e5%8c%96&#34;&gt;私利最大化&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;經過前面的解釋說明，有沒有對於許多人類、乃至各種群居動物的一些看不明白的奇幻行為有種豁然開朗的感覺呢？&#xA;不過肯定也會有很多讀者到這裡或是質疑也好，或是產生新疑問也罷，&#xA;總之急切著想要立刻提出另一些並不符合我前面所描述的現實觀察，&#xA;即是那些並不符合他人或群體利益，純粹是損人利己的行為。&#xA;對這部份，請聽我娓娓道來。&lt;/p&gt;&#xA;&lt;p&gt;其實一個個體生存生活在世界上，各種環境、生態等條件是非常複雜的，&#xA;這些複雜的變因產生更加複雜和奇幻的真實世界，使我們在每一個了解的當下常嘖嘖稱奇；&#xA;然而更常令我稱奇的是在這極度複雜炫麗又奇幻的真實生物世界下，背後的核心原理和邏輯卻又是那麼的簡單純粹，&#xA;一切的一切就是圍繞著兩件最重要的核心利益而展開的：生存，然後生殖、繁衍。&lt;/p&gt;&#xA;&lt;p&gt;想像一個畫面，現在我們處在一個理想中完美的合作社會。&#xA;人與人，所有的人與人之間互相扶持，互相幫扶；&#xA;人人都為了人人犧牲自己的利益，然後人人都從人群那裡獲得綜合更大的利益，一切欣欣向榮、歌舞昇平。&#xA;這樣的想像會太抽象嗎？&#xA;那麼具體一些就是人人都尊紀守法，紅綠燈會停、弱小會幫、貧困會扶、病殘會助，&#xA;講究榮譽、不偷不搶、看重信用、承諾必達、公平公正、童叟無欺。&#xA;教條也好、信仰也罷，總之人人都以這樣的信念生活和互動。&#xA;當然這樣的行事模式讓群體內的每一個個體都蒙受一定程度的個人利益減損和犧牲，&#xA;然而我們知道最終每個個體也會從整個群體得到更大的回饋，獲得那相比的犧牲付出更大更豐的綜合利益回報。&#xA;這一切都是那樣的美好，整個社會彷彿身在烏托邦似的夢幻狀態……&lt;/p&gt;&#xA;&lt;p&gt;好的，現在讓我們的思緒仍舊處於這樣一個美好的烏托邦社會，但是將焦點放回其中單一的一個個體身上。&#xA;對於單獨的一個生物個體來說，還有沒有什麼能夠再收穫更大個人利益的可能？是不是又豁然開朗了呢？&#xA;當大家都尊紀守法的時候，我就喜歡闖紅燈，這樣不用傻傻枯等，而且反正被嚇到的其他人也會讓；&#xA;當人人都紅線不停車的時候，我就喜歡把車子停在家門口的紅線上，&#xA;不只方便，而且因為別人都守規矩，所以一定是空的給我停；&#xA;當大家都輪流排隊一個東西並且用完就趕快還的時候，我就喜歡一直佔著不還，&#xA;直接拿回家去就變成我自己的，一個不夠用就再拿幾個，反正缺了會有人補貨，補完我再拿；&#xA;當大家都一言九鼎的時候我可以方便的得到別人承諾的回報，但當你要來叫我兌現以前的承諾的時候，&#xA;那就是時空環境不同了，以前的事情我哪會記得呢？而且你有錄音嗎？有白紙黑字為證嗎？&lt;/p&gt;&#xA;&lt;p&gt;是的，儘管我們認為這樣的人相當無恥，然而站在個體最有利益的角度來看卻是對個體最有利的方案！&#xA;這就是為什麼我們內心總是有所私心，並且在億萬年的演化史之中並沒有消散的原因。&#xA;雖然每個人都犧牲一些拿出來貢獻給別人，最終可以得到物超所值的回報；&#xA;但是&#xA;&lt;strong&gt;在其他每個人都合作付出的前提下，某個單獨的個人卻只以私利為重，這才是真正能夠搜刮最大利益的生存法則！&lt;/strong&gt;&#xA;與他人合作或多人的團體社會就如同經典&#xA;&lt;a href=&#34;https://zh.wikipedia.org/zh-tw/%E5%9B%9A%E5%BE%92%E5%9B%B0%E5%A2%83&#34;&gt;囚徒困境&lt;/a&gt;&#xA;所描繪的那個情況一樣，&#xA;&lt;strong&gt;真正對自己最有利的夢幻方案並不是讓所有人都信守道義保持沈默，&lt;/strong&gt;&#xA;&lt;strong&gt;而是在大家都忠誠不二的情況下我卻背叛並指控他們！&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;至此應已能理解那由億萬年的生存法則演化歷練而來，&#xA;深埋於每個人(及一切動物)身體深處，互相矛盾卻又同時存在的兩項天性特質，即利己性、和利他性。&#xA;其中的利己性本就直接有益於使我們更能在艱難的生存繁衍道路上搶奪資源，&#xA;而合作的社會環境卻使我們犧牲利己並改以利他來獲得單獨一個人不能得到的更豐厚回報，實為曲線利己；&#xA;然而在普遍利他的情況下保有並發揚利己性卻能更加有益於最大化收割生存繁衍的資源。&#xA;因此在漫長的演化道路上，利己、利他這兩者並沒有誰戰勝了誰，而雙雙都被保留並同樣的強化下來，&#xA;共同存在於我們每個人的心裡。&#xA;這些是天性，所謂天性就是即便沒有學習、沒有文化，即便回到蠻慌時代，&#xA;每個人依然生來就會自然擁有的內心「感覺」。&lt;/p&gt;&#xA;&lt;p&gt;這種不用教就自己存在的天性，其中的利他性大概就是古人所謂的「人性本善」的成份吧；&#xA;而利己性就是「人性本惡」的部份了。&#xA;那麼人性到底本善還是本惡呢？&#xA;在古時候這可能是個能讓人爭論多年的問題，但是在現代我們有演化科學的邏輯分析之下，&#xA;幾乎已經可以斷定人性是本善亦本惡，二者皆有之，只要在合適的情況下就能讓其中一部份展露出來。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;社會的調適&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/thinking/%E5%88%A9%E4%BB%96%E8%A1%8C%E7%82%BA/#%e7%a4%be%e6%9c%83%e7%9a%84%e8%aa%bf%e9%81%a9&#34;&gt;社會的調適&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;前面說明的利己性和利他性主要都聚焦於單一一個個體身上，&#xA;即便在說明犧牲和利他的時候，也是以單一個體所獲得的投資回報為著眼點。&#xA;但若把視角放開看向更廣泛的群體，或者白話說就是關注一下那些「其他人」，就不難發現零和遊戲的矛盾衝突！&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;懲戒&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/thinking/%E5%88%A9%E4%BB%96%E8%A1%8C%E7%82%BA/#%e6%87%b2%e6%88%92&#34;&gt;懲戒&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;站在個體利益來看，大家都犧牲奉獻唯我營私苟且那當然是最好的；&#xA;但是站在以外其他人的視角來看，這種情況顯然是對自己非常有害的。&#xA;不過這些情況他就是自然會發生的事情，因為符合生存演化的最佳化策略，因此總是會有人這麼做或想這麼做；&#xA;只不過讓少數個體利用群體來搜刮資源，對於其餘的他人顯然是非常不符合生存演化邏輯！&#xA;那麼一個社會，或者說就是這些利害相關的「其他人們」，對於這樣不利己的情況又會有什麼樣的反應應對呢？&lt;/p&gt;&#xA;&lt;p&gt;面對所描述的這種情況，人們首先會使用的方式便是「制裁」。&#xA;這個是指廣義各種型式的制裁，&#xA;包含大到社會組織所實行的強制行為如拘補監禁等刑罰，小到我們對於那觸犯「道理」之人投以怒目圓瞪的眼光。&#xA;制裁的作用在於給予想要偷雞摸狗之人足夠的威嚇力，使他在想要做出那些傷害群體利益之事前先惦量一下後果，&#xA;小到承受他人的情緒壓力，大到被人群的力量強制行為反制的結果。&#xA;自私自利不管他人的根本原理不就是因為這樣能得到更多生存資源嗎？&#xA;那我就來給你人為減少生存資源，讓你無利可圖還得倒賠！&#xA;於是小從情緒壓力、罰款、監禁、用刑、到死刑，原理無不就拆毀營私舞弊的獲利空間，&#xA;甚至一個死刑如果還不足以形成足夠的威嚇懲戒力的話，還可以連坐將你的後代一起送走，&#xA;為的就是維護團體的共同最佳利益，或者我們可能會稱之為「規矩」。&#xA;(&lt;em&gt;當然也有很多歷史上的懲戒是為了取得屬於一個人的最大利益，但那其實已經屬於領導統馭的話題了！&lt;/em&gt;)&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;避免懲戒&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/thinking/%E5%88%A9%E4%BB%96%E8%A1%8C%E7%82%BA/#%e9%81%bf%e5%85%8d%e6%87%b2%e6%88%92&#34;&gt;避免懲戒&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;我在解釋前面東西的時候，經常會容易遇到質疑。&#xA;他們認為人與其他物種不同，因為人有「愛」、有「道德」，&#xA;並且質疑生物本性的說法只不過是私利行為者為了給自己找開脫的藉口而已。&#xA;且不說這些他們自己也道不明白的愛與道德的內容其實就是曲線利己的部份吧，&#xA;現實上確實真實存在許多不管不顧這些並且極度自我中心的利己行為者，而他們大多現在在監獄裡！&#xA;這就是群體制裁效用的真實展現。&#xA;演化理論往往是相生相剋、環環相扣的，&#xA;人性底下不只同時擁有惡魔(利己)和愛(利他)的部份，還有威脅他人應該要發揮有愛的部份(制裁)，&#xA;以及也同時擁激勵自己自發有愛並對抗內心惡魔的部份(趨利避害)。&#xA;於是你會發現，人的內心不只存在制裁他人的本能，還有畏懼被制裁的本能。&lt;/p&gt;&#xA;&lt;p&gt;先不論那些強制性的制裁行為，為什麼即便是展現生氣的樣子，即便只是眼神用力瞪過去的行為，&#xA;理論上完全無法對他人實質造成損害的行為，卻能夠發揮出制裁的效用呢？&#xA;因為對於個體來說，受到制裁是極為不利的，是對自己的生存和繁衍可能會帶來毀滅性打擊的威脅的；&#xA;即便沒有實質性的被反向掠奪，光是不再受到團體的包容庇護的威脅就足以造成個體利益喪失，&#xA;因此&lt;strong&gt;我們對於被制裁、或者可能會被制裁的徵兆才會產生本能性的恐懼&lt;/strong&gt;。&#xA;就如同我們會懼高、會怕黑一樣的自然，&#xA;那埋在人類心底深處的恐懼也包含了被排斥、被不接納、被不認同的恐懼，&#xA;這一份恐懼讓人在察覺到旁人已經有些怒火中燒的跡象的時候適當的收斂，&#xA;讓人在意識到可能會遭受群體意識的反撲時惦量一下自己有沒有足夠對抗的本事？&#xA;而當然，既然屬與天性的範疇，就表示這些權衡利弊的估量活動不一定有經過大腦的表層意識，&#xA;而可能大多時候是你的身體已經快速計算惦量完成了，&#xA;然後透過情緒、或所謂的道德感，告知你的大腦現在該如何進行下一步。&#xA;因此人與人組成的人群不只會嘗試去制止和懲罰那些過度私利的人，&#xA;每個個別的人內心也同樣存在避免淪落到接受懲罰的天性意識。&#xA;對於群體來說，這樣的生物特性是有利於族群的，&#xA;因為這樣社會能夠不需要使用高成本的方式去強制「教育」改變每一個脫序的行為，&#xA;而是可以使用比較低成本的威嚇，或者更低成本的基於情緒的「提醒」，&#xA;讓個體在剛剛萌生想要搞怪的心思的時候，就能夠早點知道該自發性的自我審視懲戒，並且自發性的展現出「愛」。&lt;/p&gt;&#xA;&lt;p&gt;當然這只是大部份的個體在大部份時候的情況，然而「鋌而走險」的天性同樣也存在於人性裡，&#xA;畢竟有時候若賭對了，確實能給自己帶來相當的收益回報。&#xA;對於這樣的事情，群體組成的社會就會適當的給予反擊，也就是即時的給予對應的懲戒報復。&#xA;對於違反社群利益的脫序行為是需要合適的給予對應的反擊的，&#xA;這不只是為了奪去那投機取巧期望收穫的利益，也同樣有著提示的作用，&#xA;警醒那些其他可能也有相似想法萌生的人，讓大家自發性的知道自己原來是「喜歡愛與被愛」的！&#xA;這一點是非常必須的，若社會不能夠對於脫序行為給予實質性的懲罰反擊，若群體失去了這樣的威嚇力，&#xA;那麼社會就會逐漸演變成另一種情況，這點我們留到下一節再論。&lt;/p&gt;&#xA;&lt;p&gt;這就是為什麼我們天生存在悲天憫人心理意識的原因了。&#xA;比方說當我們看到新聞，無辜女孩被歹徒強暴殺害、孩童或嬰兒被虐待至傷、孤苦弱勢正在承受災禍等，&#xA;我們會從內心產生出悲憫的感覺，促使我們嘗試去以各種手段介入。&#xA;從嚴格來說，這些受害者多半與我們並沒有直接的關聯，也不是我們的直系血親，或至關重要的情感連繫者，&#xA;但我們依然能夠對其產生情緒的起伏並且萌生呼籲介入的渴望。&#xA;這就是演化而來的群體意識的一部份，底層生物邏輯就是因為群體的利益或者「規矩」被損害了，&#xA;而我們的天性驅使我們試圖去維繫這份利益和規矩。&#xA;從消極面來說是懲戒兇手，給予對價剝奪並警示其他可能的恔仿者；&#xA;從積極面來說是希望能夠發揚群體優勢去扭轉在群體內遭逢不幸的個體，&#xA;因為誰都有可能某一天會同樣需要得到群體力量的扶持，因此維繫這樣的生態同樣曲線利己。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;和平與動亂&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/thinking/%E5%88%A9%E4%BB%96%E8%A1%8C%E7%82%BA/#%e5%92%8c%e5%b9%b3%e8%88%87%e5%8b%95%e4%ba%82&#34;&gt;和平與動亂&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;尋求合作與自私偷利是同時存在於人性裡面的底層動機，&#xA;而那個別人物對於獲取更多自己的私利而損害到群體的部份，則有賴於群體的反制措施來予以導正。&#xA;然而群體的力量並不總是這麼靈光的！&#xA;在人類的歷史過程中我們經常能夠看見，因為各種各樣因素導致群體的約束力式微。&#xA;天災或人禍、疾病或飢荒、戰爭與動亂、征服與被征服、或者是源於社會組織本身的僵固或腐敗，&#xA;具體的原因其實不太重要，總之導致了群體維繫道德與正義的約束力失去了它的威信，&#xA;或者有時候經常根本就是一團混亂。&#xA;那麼這時候群體、以及每一個個體，對於利己和利他之間會不會發生什麼消長呢？&lt;/p&gt;&#xA;&lt;p&gt;經過一系列基於演化原理的說明，我們知道人性的根本就是服務於每個個體的生存和繁衍目的，&#xA;一切衍生的天性都是最終為了這兩目的服務的，只是直接、間接、或曲線達成的差別而已。&#xA;當社會不在有能力對違規做歹者施加反制力量的時候，關於人性會如何轉變的這個問題，應該已經答案明顯了！&#xA;當直接利己者不會遭受懲罰剝奪，那當然就沒什麼後顧之憂了；&#xA;當道德利他者不只得不到回饋，反還直接損失利益與優勢，這樣的人自然難以生存和繁衍；&#xA;當其他本不屬於前述兩者的人親眼看見誰受好處而誰受壞處，那麼再愚笨的人也自然都知道好與壞、利與弊。&#xA;於是人們會逐漸走向擁護私利，也就是一般白話所謂的道德淪喪。&#xA;&lt;strong&gt;那麼當你的私利和他的私利相衝突的時候怎麼辦呢？弱肉強食嘍！&lt;/strong&gt;&#xA;「你不講道義、他不講公理，那難道是我活該做白痴嗎？！」&#xA;「大家都只顧自己，不顧大局，何者只有我在思慮大眾的利益？那行啊，都別活了！從今開始就各憑本事，拼拳頭嘍！」&#xA;這時候就會變成實力至上的豺狼虎豹時代，所有利益靠誰拳頭更硬來爭取，生存繁殖就是比誰更陰險狡詐。&#xA;反正人類已經在叢林法則中生存了億萬年，沒什麼不好適應的！&lt;/p&gt;&#xA;&lt;p&gt;這就是為什麼社會必須極力維繫在現在很多人眼裡被視為虛無飄渺的「道德」等公序的原因，&#xA;因為一旦社會不能維繫正義，那麼人心的惡魔就會逐漸佔領上風處，直至使社會瓦解。&#xA;然而其實也無需過多擔憂，因為這樣的事情在人類的歷史上已經有過千萬次了；&#xA;而只要地球不毀滅，應該未來還會再發生千萬次！&lt;/p&gt;&#xA;&lt;p&gt;但是人畢竟不是像老虎那樣能夠單打獨鬥的生物，人類終究視需要依靠其他同類的合作來共同生存的，&#xA;因此當事情發展到互信互助的連繫被完全摧毀，個人全憑自己本事的情況，其實對誰都沒有好處！&#xA;於是你就會發現，&lt;strong&gt;當混亂蠻橫到了一定程度之後，就會有人跳出來鼓吹愛與包容、犧牲與奉獻。&lt;/strong&gt;&#xA;直白的意思就是：&#xA;「大家各自為戰最後誰也活不下去，誰都撈不到好處。&#xA;不如我們各自退讓點，每個人都犧牲一點點自己的好處，這樣我們可以互相合作妥協，這樣對每個人都好。」&lt;/p&gt;&#xA;&lt;p&gt;於是新的秩序會重新被建立起來，人們也會逐漸發現互利共生對大家都好，&#xA;然後緩慢的發展成熟一個新的穩定合作結構，重新找回友愛、包容、自律、信任、與責任，&#xA;一切都逐步邁向美好光明的未來……。&#xA;當然在相對完好的社會結構下，自然而然就會有人想要偷雞摸狗試圖取得屬於自己的更大利益，&#xA;而整個社會也會與他們開展一場場貓捉老鼠的遊戲，以維持社會的規矩和風氣；&#xA;直到那天這個社會又力不從心，壞人享果實、好人享墳墓，&#xA;那麼慢慢的每個人又會再度找回那深埋於自己身體裡卻已被遺忘的，從遠祖輩就流傳下來的生存法則……。&#xA;就這樣&lt;strong&gt;周而復始、不斷輪迴&lt;/strong&gt;，綜觀各地各民族的人類歷史基本都是這麼不斷反覆的！&lt;/p&gt;&#xA;&lt;p&gt;這就是為什麼&lt;strong&gt;利己和利他、惡魔和天使經歷過漫長的演化道路之後卻沒有誰能真正勝過另一個，&lt;/strong&gt;&#xA;&lt;strong&gt;並且未來應該同樣也是誰也無法消滅誰&lt;/strong&gt;的真正原因了。&#xA;因為這東西永遠走不到一個真正的穩定，其所依賴的生活環境不斷在變化和輪迴，&#xA;導致我們永遠需要這兩者的同時存在，來為我們每一個個體的最大利益做出貢獻。&#xA;而這種互相矛盾而又同時存在的天性傾向，落實在我們的生活中就是如何調和拿捏進退消長的課題，&#xA;並且這種行為活動可能大半是在身體的意識裡演算完成的，而不是在有意識的腦子裡；&#xA;這就導致了大部份那些我們觀察到了卻無法理解的各種奇妙又魔幻的一件件具體事例了！&lt;/p&gt;&#xA;&lt;p&gt;最後我想要稍微岔開一下做個補充。&#xA;也許我前面的說明會讓一些讀者感到或害怕或疑惑，&#xA;因為雖然人類歷史上這種大動亂的時代並不少見，但好像也沒有到隨便動不動就要面臨毀滅的地步！&#xA;其實人類的社會是一個渾沌的綜合體，內含了各種面向和各種不同的結構與模式，&#xA;雖然整個大毀滅的事情並不是沒有過，但我們通常更常經驗到的應該是只有某個部份的秩序結構毀壞的情況。&#xA;舉例來說，臺灣的交通就是出了名的各種亂七八糟不合理，&#xA;而在此狀態下我們其實經歷過不少舊秩序失效，&#xA;然後人民與人民、人民與警察之間重新建立起另一套「規矩」、「生態」的這個過程；&#xA;但是整個社會並沒有瓦解而分崩離析，僅僅只是整個大社會下的某這麼一個生態秩序經歷混亂、毀滅、和重建而已。&#xA;又或者可能像是一個社會哪哪看似都很合諧，&#xA;但只要一涉及到婚戀、彩禮、誰出錢、誰煮飯這些事情，就會陷入你爭我奪的畫面。&#xA;總之一個人類的大社會是可以分割成許多不同的面向的，&#xA;而通常我們能在不同的面向上看到不同的合作與自私、合諧與爭鬥的狀態。&#xA;因此我本文的這些論述雖然概念上比較宏觀，好像動不動就「社會崩壞」，&#xA;但實際上這些敘述對應到現實生活觀察裡的話，多半要套用在整個社會結構的其中或大或小的一部份；&#xA;雖然說整個社會的大亂大合也不是沒發生過，但頻率低多了，說不定許多人一輩子可能也沒機會經歷到！&lt;/p&gt;</description>
    </item>
    <item>
      <title>處女情結</title>
      <link>http://www.huoschen.idv.tw/blog/gender/%E8%99%95%E5%A5%B3%E6%83%85%E7%B5%90/</link>
      <pubDate>Sat, 03 May 2025 00:34:13 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/gender/%E8%99%95%E5%A5%B3%E6%83%85%E7%B5%90/</guid>
      <description>&lt;p&gt;在感情相關的討論裡，時不時就會出現與處女情結有關的話題，並經常能看到正反兩派之間的口誅筆伐。&#xA;我覺得可惜的是這些討論中，無論是男方立場還是女方立場，&#xA;大多都聚焦在情緒和感覺上面，以及對於對方的控訴，卻極少見有人能夠從比較公道的角度給出個公評。&#xA;其實我也沒法為這樣的事情給出個什麼能夠讓各方都信服的公評，&#xA;只是對這個既有現象做出邏輯解釋，讓人知道發生了什麼事情？&lt;/p&gt;&#xA;&lt;p&gt;每當談論到處女情結有關話題的時候，討論區大致會分成兩個陣營，&#xA;一方是擁護處女情結的男方陣營、一方是反對處女情結的女方陣營&#xA;(&lt;em&gt;實際上當然存在反對處女情結的男士、以及為處女情結辯護的女士，但是那些都是少數而已，&lt;/em&gt;&#xA;&lt;em&gt;只要不是眼瞎的人應該都能夠輕易看出來這兩個立場群體根本就和兩個性別群體高度重合&lt;/em&gt;)。&#xA;支持的一方可能會表達出對於處女情結見怪不怪、或者認同，&#xA;或者在心智上未必認同或不認同但承認生理上對非處女的厭惡，&#xA;甚至有些人對於自己內心竟然存在這種政治不正確思想卻又無法扭轉而感到自卑焦慮等。&#xA;反對的一方則通常無法理解為什麼男人群中會存在這種奇怪的思想傾向？&#xA;常見她們表現出對於存在這種情結的人的噁心、忿怒、抱怨與責怪，&#xA;並抨擊這些人是「活在清朝時代早該作廢的」、不符合當代兩性「政確」價值觀的大男人主義者等等。&#xA;這些看似割裂且無法調和、無法互相理解包容的兩個群體，&#xA;為當代的性別戰爭又添加了一個能在茶餘飯後再戰一場的話題。&lt;/p&gt;&#xA;&lt;p&gt;如同我開頭所說的，我只是覺得大部份的這種話題爭吵都可惜了，&#xA;基於情緒和感覺的言談除了抒發情感壓力之外並沒有任何建設性的作用，&#xA;因此本篇我想要儘量從理性客觀的角度來為此剖析一番。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;處女情結是什麼感覺&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/gender/%E8%99%95%E5%A5%B3%E6%83%85%E7%B5%90/#%e8%99%95%e5%a5%b3%e6%83%85%e7%b5%90%e6%98%af%e4%bb%80%e9%ba%bc%e6%84%9f%e8%a6%ba&#34;&gt;處女情結是什麼感覺？&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;處女情結是一種什麼樣的感覺？&#xA;總的來說就是男性在擇偶一事上面對於曾有過性經驗的女性感到排斥厭惡的心理狀態，&#xA;或者是可能並沒有特別厭惡非處女的感覺，但在選擇時更加偏好沒有過性經驗的處女的傾向。&lt;/p&gt;&#xA;&lt;p&gt;整理綜合網路上看到的處女情結相關討論、以及男性們對於自身情結的自我描述，&#xA;大約可以整理出男性的處女情結會有的表現型式或心理狀態。&#xA;有些人描述一看到自己的女伴，可能就會想起她之前和其他男人翻雲覆雨的畫面；&#xA;有些人會覺得她已經被別人用過了，而產生覺得她「髒」或「不乾淨」等厭惡心理；&#xA;也有些人沒有這麼多的想像空間，單純就只是知道對方曾與他人有過性關係之後，就不再具有足夠的吸引力。&#xA;在這些自述裡面大多都是在男士在知道自己的女伴曾與他人發生過性關係後，&#xA;心理出現排斥厭惡，並且通常都是難以形容、難以具體描述的一種感覺。&#xA;說不出對方到底哪裡不一樣了，也無法具體描述到底是哪個部份使人感到排拒，&#xA;完全就是在知曉對方發生過性關係這事的前、後，男人內心狀態所產生的難以言語的感覺。&lt;/p&gt;&#xA;&lt;p&gt;除了上述「難以描述的莫名」排斥心理之外，有些男士能以比較具像的方式描述其排斥的現實邏輯。&#xA;例如有些人會說就是心裡難以接受「有些人年輕時喜歡和毛頭小子玩，老了才想找個老實人求穩定；&#xA;毛頭小子花幾百元就得了你的初夜和魚水之歡的享受，到我這裡卻要車、要房、要收入，還要我遺忘她的過去！」&#xA;也有些人能描述出的是心裡的邏輯，比方說「和女伴在做那些事的時候不自覺會和她的前任比較，&#xA;若沒能贏過前任則容易產生自卑感，就算贏過前任也會讓自己處處感到被比較的壓力！」&lt;/p&gt;&#xA;&lt;p&gt;當然，以上說的那些性經驗都是與自己之外的他人進行的才算，&#xA;至於如果對方是和自己有的經驗的話，就算進行過一萬次都不會觸發處女情結反應&#xA;(至於七年之癢問題那是另一個主題了)。&#xA;另外一個關於處女情結的表現可能是很多女性並沒有意識到的：&#xA;男性對於處女情結的心裡狀態不見得在交往的時候就會反應出來。&#xA;的確有些男性在進入交往關係之時就會因為對方非處之身而有厭惡感，&#xA;但許多男性可能在交往期間完全沒有處女情結(這裡排除有些可能是壓抑隱藏欺騙的案例，只看那些真的就是沒有的)，&#xA;然而在將要走入長期穩定關係的關頭時(也就是婚姻)，處女情結卻在這個時候浮現出來，&#xA;並讓男女雙方都感受到挫折。&lt;/p&gt;&#xA;&lt;p&gt;另外處女情結也並不全然是表現在對於非處女的厭惡排斥現象。&#xA;有些男人可能自身完全沒有對於非處女的排斥感覺，&#xA;只不過當兩個其他條件差不多的女性擺在眼前時，這些男性也許更加偏好於選擇處女。&#xA;這種雖然沒有排斥非處但卻更加青睞處女的現象，其實同樣也是處女情結的表現。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;處女情結真的只在意那層膜嗎&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/gender/%E8%99%95%E5%A5%B3%E6%83%85%E7%B5%90/#%e8%99%95%e5%a5%b3%e6%83%85%e7%b5%90%e7%9c%9f%e7%9a%84%e5%8f%aa%e5%9c%a8%e6%84%8f%e9%82%a3%e5%b1%a4%e8%86%9c%e5%97%8e&#34;&gt;處女情結真的只在意那層膜嗎？&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;女人大多難以體會處女情結並感同身受，常可見許多女性對於男性的處女情結表現出不以為然的態度，&#xA;非常疑惑且不理解的說道「男人們難道就這麼在意那層膜嗎？那層膜真的有那麼重要嗎？！」&#xA;(&lt;em&gt;似乎在醫學上這東西正式學名應該叫作「陰道冠」，但語言乃約定俗成，我也比較習慣稱呼為處女膜，&lt;/em&gt;&#xA;&lt;em&gt;因此本文仍舊以大眾比較習慣的名詞「處女膜」稱之。&lt;/em&gt;)&lt;/p&gt;&#xA;&lt;p&gt;其實站在男性的角度，男性從來在意的就不是那一層膜的存在與否；&#xA;男性們真正在意的其實是&lt;strong&gt;心理上的唯一獨占性！&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;對於遠古那種還在獵巫的時代，還在迷信而未有科學發展的時代就算了不談，我們只看現代和近現代的部份。&#xA;一個守身如玉的女孩子，可是因為運動等意外導致處女膜破裂了，請問男人們會在意嗎？&#xA;會因此而低看這位女孩，覺得心裡排斥噁心嗎？我想這題答「是」的男人那可能真的是稀有罕見。&#xA;相反的，如果一個女子已經閱歷無數、經驗老到、甚至有些花名在外，然後去做了陰道冠重建手術修復了處女膜，&#xA;並且執刀醫術精湛，無論是看起來還是用起來根本都和真正的處子之身一模一樣，&#xA;那麼男人們接受嗎？會因為她的身體已經與真正的處女別無二致而看待她一樣嗎？&#xA;那種對非處的排斥心理到底是有所消減、或是煙消雲散、或是更加深刻、還是全無影響呢？&#xA;我想問題思考到這裡，答案應該已經非常明顯了！&lt;/p&gt;&#xA;&lt;p&gt;其實男性對於處女或非處的偏好或厭惡，與那層膜的存在與否還真的沒有關係。&#xA;男性對於女性處或非處的糾結其實是源自於更加深層的心理感受和認知，也就是傳統話語上說的女人「乾淨」與否，&#xA;反而生理上的那個組織的存在與否幾乎起不到任何作用；&#xA;就算其他人可以舉出一些個案表面上看起來是因為女生的這個生理因素導致被嫌棄，&#xA;但其實絕大部份當中那也是因為這個生理因素指向了心理的感受認知而造成的。&#xA;因此最終的根本決定因素仍然是心理認知，而非生理結構的存在與否所導致。&#xA;另外一個情境可以從旁呼應這種說法的可靠性，&#xA;比方一對男女交往的情況很不錯，兩人的感情和互動看起來完全沒有任何問題，&#xA;但是有一天男生發現原來女友以前有和別人發生過性關係(&lt;em&gt;可能是或不是前男友，但其實不重要&lt;/em&gt;)。&#xA;這件事情彷彿啟動了男生腦內的某一個開關，開始對女友產生反感意識，可能還引發自身的糾結思慮，&#xA;最後放到網路上發文被我們看到(&lt;em&gt;至於具體的個案就不說了，反正網路上一查一大堆&lt;/em&gt;)。&#xA;欸這就有趣了，人還是同樣那個人，在男生知曉她曾經有過的過往的一秒前、以及一秒後，&#xA;她的長相、個性、處世為人、體貼、學識等等都是一模一樣的，可是男人卻可能就對女友產生了嫌棄之心。&#xA;相反的，有些故事裡的女生其實曾經有過經驗，甚至可能不乏閱歷豐富的，&#xA;但是非常小心謹慎，將過往一切切斷連結並且隱藏的很好，而丈夫自始至終待她如初戀，一點點嫌惡之心都沒有，&#xA;直到有一天發現妻子的往事之前……&#xA;(&lt;em&gt;至於那些一輩子沒發現的可能就是另一個發展方向了，&lt;/em&gt;&#xA;&lt;em&gt;只不過能留下記錄讓我們一般人讀到的故事多半都是後來出毗漏的&lt;/em&gt;)。&lt;/p&gt;&#xA;&lt;p&gt;這些大量發生的案例其實都在告訴我們一件事：&#xA;男人的處女情結是在心理意識層面裡的東西，反而不一定是在於生理結構的部份，&#xA;甚至於許多處男可能也不一定分辨得出來。&#xA;因此那些過度糾結「那一層膜真的就那麼重要嗎？」的女人們，其實都搞錯了核心的問題所在！&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;為什麼會有處女情結&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/gender/%E8%99%95%E5%A5%B3%E6%83%85%E7%B5%90/#%e7%82%ba%e4%bb%80%e9%ba%bc%e6%9c%83%e6%9c%89%e8%99%95%e5%a5%b3%e6%83%85%e7%b5%90&#34;&gt;為什麼會有處女情結？&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;處女情結乍看真是個奇妙的東西。&#xA;女人們大多無法體會、感受、和同理男人的處女情結，更不乏有些人大放厥詞抨擊認為男性根本不應該有此情結；&#xA;而男人們其實也不是刻意想要擁有處女情結，&#xA;可能一大半也不知道自己為何就會對處女或非處產生莫名其妙的「感覺」，甚至有些人自己為此感到矛盾困擾！&#xA;並且這東西好像是只有男人才有的，我們極少看見在女性身上出現這種莫名而來也揮之不去的處男情結。&lt;/p&gt;&#xA;&lt;p&gt;可能和許多女性朋友所想的相反，處女情結並不是來自於教育或文化&#xA;(&lt;em&gt;雖然它們可能會起到一點強化或抑制的作用&lt;/em&gt;)，&#xA;否則在從出生開始就接受現代性別教育長大的這個世代、以及下個世代，就不可能還會再有處女情結存在。&#xA;處女情結產生的原因更是與什麼傳統大男人沙文主義沒有關係。&#xA;傳統男性文化包含了對處女和貞節的要求，但處女情結本身並不只存在歸屬於這個範疇。&#xA;它是一種自然而然的、莫名而來的，就好像天然就存在於男性身體裡的一種自然感覺。&#xA;而這也就是為什麼即便到了現代，明明在觀念教育上已不再強調、&#xA;在社會思想風氣也早已開放自由、甚至社會開放程度早已對性事見怪不怪的情況下，&#xA;處女情結依舊能夠憑空而來，在男性的身體裡自然出現的原因。&lt;/p&gt;&#xA;&lt;p&gt;說了那麼多，那麼到底處女情結為何會深埋在男性的腦袋和身體裡呢？其實前面已經一路在鋪陳提點許多關鍵字了。&#xA;莫名其妙的感覺、說不清道不明的感覺、不知由何而來就天然發生的厭惡和喜好傾向、不用教就能自己會的本能，&#xA;這一切一切不知是否讓讀者回想起我曾經寫過的一篇&lt;a href=&#34;http://www.huoschen.idv.tw/blog/gender/%E4%BA%BA%E9%AB%94%E7%9A%84%E7%BE%8E%E6%84%9F/&#34;&gt;「人體的美感」&lt;/a&gt;？&#xA;沒錯，處女情結與演化有關，它與人對人體的自然美感喜好源自於同樣的因素，也就表現出了完全一樣的特性。&#xA;就好比人類即便不用教，即便一個孩子打出生就在叢林裡被狼王養大，&#xA;當他或她一天回到人類社群開始大量接觸同類之後，一樣能夠本能的喜歡上帥哥美女而厭惡那醜的；&#xA;又好比人類天生會怕黑、怕高、怕尖銳物體一樣，因為那不怕的人比較容易死去而沒能繁衍下來。&lt;/p&gt;&#xA;&lt;p&gt;那麼男人的處女情結為何而生呢？處女情結給男人帶來什麼樣的生存繁衍優勢呢？&#xA;其實就是男人們千萬年來最恐懼最反感的其中一項事情：帶綠帽子！&#xA;生過孩子的女人們都清楚，帶孩養娃是多麼辛苦、多麼犧牲的，而這對男人同樣也是如此。&#xA;男性們為了供養撫育自己的女人和孩子，往往需要做出巨大的犧牲、冒險犯難，甚至可能丟失性命，&#xA;從古至今皆如此。&#xA;所以，&#xA;&lt;strong&gt;男人們無非就是希望拼盡老命犧牲一切供養長大的孩子，是自己的孩子，是延續自己基因的新生命，僅此而已；&lt;/strong&gt;&#xA;&lt;strong&gt;那麼對於那些可能隱含讓你養別人娃娃的風險，自然就會本能的產生厭惡感！&lt;/strong&gt;&#xA;這就是處女情結的根本源頭，那是來自於天賦本能，腦袋無需意識理解，因為千萬年來的歷練已經被刻在 DNA 裡了。&#xA;也許你會說難道就不存在那些沒有處女情結的男人嗎？&#xA;有的，我相信這種無私大愛的男人確實存在過，&#xA;只不過在億萬年的時間裡面大多都幫別人養孩子去了，不容易留下子嗣，&#xA;基本已經沒法讓我們現代人遇到！&lt;/p&gt;&#xA;&lt;p&gt;而這其實也解釋了另外一個問題：為什麼就幾乎沒聽說過什麼女性有處男情結呢？&#xA;女性經常表現出不能夠理解認同男人處女情結的現象，&#xA;是因為女人身體裡面本身就沒有這樣的機制，自然難以感同身受。&#xA;&lt;strong&gt;那麼女性為什麼沒有處男情結呢？因為女人無需要擔憂生的孩子是不是自己的孩子這個問題啊！&lt;/strong&gt;&#xA;但凡由自己身體生出來的孩子，難道還能不是自己的而是別人的嗎？&#xA;(&lt;em&gt;什麼你說代孕？別開玩笑了！即便是在現代，代孕的情況也都是極其罕見的事情，更何況億萬年來的演化歷程。&lt;/em&gt;)&#xA;這也是老輩們口耳相傳的一句話：孩子不一定是不是女婿的，但肯定是女兒的！&#xA;至於許多女性憤憤不平的說&#xA;「憑什麼女人的貞節就這麼被看重，而卻沒有人在乎男人的貞節呢？&#xA;憑什麼男人經驗豐富反而能讓其他人羨慕傳誦，女人卻被嫌棄掉價呢？」&#xA;那麼這就是原因了，雖然可能讓人覺得不公平，然而演化的現實就是這麼運作的。&lt;/p&gt;&#xA;&lt;p&gt;對於生出來的孩子不是自己的種，對於勞心勞力獻出一輩子的心血卻幫別人供養孩子，&#xA;這是男人們心底深處恐懼和厭惡的源頭。&#xA;其實這個源頭所產生出來的行為現象還有非常多，處女情結只不過是其中的一個項目而已，&#xA;而若再深入探討更多男性在兩性關係中的行為表現，還會發現更多的行為傾向其實都來自於這同一個源頭，&#xA;只不過那些其它的行為現象不是本次的焦點所在。&#xA;無論如何，從身體而來本能性的迴避那可能會讓自己有帶綠帽機率的事情，能夠提高男人延續自己後代的機會，&#xA;因此自然在漫長的演化經歷之中被保留下來，並且得到強化。&#xA;在這樣宏大的敘事背景之中，處女情結反映出來的其實是女性的忠貞程度，&#xA;也就是女性對於單一一個對象押寶並下好離手的堅定之心、以及對於其他誘惑的抵抗能力。&#xA;這並不是一種百分百的保證，非處之女不見得在後半身就不能夠忠於一個丈夫，處女也不見得此生絕不會背叛；&#xA;但是直到婚配之前仍能保守童貞之身的人，顯然就機率來說是更好的選擇，更加值得讓男人押寶抵上人生。&#xA;(&lt;em&gt;當然男人腦子裡可能並沒有這麼複雜的利益比較，因為男人的身體會很自然的告訴腦子該喜歡哪個、討厭哪個&lt;/em&gt;)&lt;/p&gt;&#xA;&lt;p&gt;這裡可能有些女人要聽不住而準備要跳腳了，請你們先別急。&#xA;有些人會說處不處並不能保證肯定忠心啊，結婚時候是處女，後來出軌的案例也不少啊？&#xA;的確，處女身並不是女人忠貞不二的肯定保證，&#xA;但是以機率來說確實是提高了機率，因此在演化中因為有用而得到強化。&#xA;因為處女身並不是女人忠貞不二的唯一保證，因此除了處女情結之外，男人們也同樣演化出了各種其它的喜好天性，&#xA;比如說對於水性楊花個性的人、與他人互動沒有邊界感的人，男人也會本能性的迴避&#xA;(&lt;em&gt;玩玩的情況不算，這裡只單指要走向長期穩定關係的選擇時&lt;/em&gt;)；&#xA;對於長期穩定關係中的伴侶出軌時，男性的容忍度也普遍遠小於女性。&#xA;其它還有更多行為與喜好族繁不及備載，但是它們共同加在一起，綜合起來成為男性們延續基因的觀察依據；&#xA;並不是真的只靠一個處女情結就能夠打定所有事情，但是處女情結確實是這當中一個相當重要的一塊存在。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;時代不同了處女情結該不該繼續存在&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/gender/%E8%99%95%E5%A5%B3%E6%83%85%E7%B5%90/#%e6%99%82%e4%bb%a3%e4%b8%8d%e5%90%8c%e4%ba%86%e8%99%95%e5%a5%b3%e6%83%85%e7%b5%90%e8%a9%b2%e4%b8%8d%e8%a9%b2%e7%b9%bc%e7%ba%8c%e5%ad%98%e5%9c%a8&#34;&gt;時代不同了，處女情結該不該繼續存在？&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;這節的標題是在與處女情結有關話題的時候，女性們經常會說出來的話。&#xA;許多女性認為男性的處女情結是守舊的、迂腐的、男性沙文的、食古不化的、萬惡的等等，&#xA;常能見女性說「清朝都早已經滅亡超過一百年了，怎麼還有男生抱有這種早就過時了的思想？！」&#xA;然後把這一切罪惡歸咎於男人，「都是男人的錯，都是男人的陰謀！」&#xA;但是事實上真的是這樣嗎？&lt;/p&gt;&#xA;&lt;p&gt;既然處女情結並不是男性有意為之，而是本能的天性所致，&#xA;那麼本節的問題其實就不應該是「該不該」繼續存在，而應該是「能不能」被抹消？&#xA;其實答案已經顯而易見了，不能！&#xA;因為這種經過億萬年千錘百鍊演化而來的天性早已深刻的刻入每個正常男性的骨髓裡，難以揮去。&#xA;你沒有辦法用理性的邏輯去消抹那早已成為天性的本能反應，&#xA;就好比以現代科技水準來說，嬰兒奶粉早已可以取代母乳餵哺幼兒長大，&#xA;女性的泌乳能力早已與嬰孩能不能生存成長這件事脫勾；&#xA;但男性會因此不看重女性的乳房嗎？&#xA;在擇偶的傾向與偏好上，能夠完全忽略女性的胸型身材，並與平胸的女性一視同仁的同樣喜歡嗎？&#xA;我想這麼現實的問題，但凡有經歷過任何情場的不論男女都能果斷的說：怎麼可能？！&lt;/p&gt;&#xA;&lt;p&gt;其實現代大部份的兩性問題之間的不解疑問，都是源自於人的天性和社會理論現狀之間的矛盾衝突。&#xA;什麼意思呢？既然女性大多不能夠感同身受體會男性在處女情結上的心境，那我來換個女性能夠體會的例子說明。&#xA;在現代社會，至少在我們所生長的這個地方，女性早已大量在職場上工作，&#xA;大部份普通情況下與男性沒有根本性的差異，表現比普同男性更加傑出優秀的女性更不在少數。&#xA;就理論現實來說，如果一位女性的收入能力在一個月 15 萬左右的水準，&#xA;那麼她完全可以依靠自身能力撐起並供養一個家庭，包括自己、丈夫、和孩子。&#xA;理論上這樣一位女性可以完全不在乎配偶的收入水準，&#xA;就算男生只領 3 萬月薪又何妨？甚至就算男生沒有收入又何妨？&#xA;然而在實際的現實上，我們知道普遍這樣一位女性是很難能夠接受這樣的男性的。&#xA;也許有些女性並沒有意識過這種不對等的現象，她們會覺得這有什麼好奇怪的？&#xA;對比自己還弱、還窮的男性本來就很難喜歡，這不是很正常應該發生的事嗎？&#xA;那麼我說，把性別掉換過來的話，&#xA;在男性群體普遍並不會因為女生窮、弱、社會能力不優秀等原因而對她「沒感覺」。&lt;/p&gt;&#xA;&lt;p&gt;因此即便理論上並不需要男性的收入能力，但是女性卻很難打從心底青睞而不嫌棄一個能力比她差這麼多的男性，&#xA;即便在理論上兩人可以合力經營家庭，即便邏輯上並不會導致他們無法成家生子過生活。&#xA;這就是天性，是億萬年來千錘百煉的演化結果在女性身上展現出來的天然喜好，是無需任何人教就會的傾向，&#xA;是即便在兩性平權文化和教育為主流的思朝之下依然不能夠撼動的女性天性。&#xA;你可以儘管在理性層面上去解釋、去遊說女性說嫌貧愛富是不對的，說 AA 才是公平對等的，&#xA;說現代社會女人可以靠自己而無需依附一個強壯男人的力量等等，&#xA;但依然無法讓女性去喜歡一個窮弱男人而不是富強的，&#xA;也不能讓她不對強健素質的男人起心動念卻反而對瘦弱自卑的男人傾心。&lt;/p&gt;&#xA;&lt;p&gt;這就是天性，演化的天性，基因的主導力。&#xA;本文無意去進一步解釋那超出本篇主題的其它現象，&#xA;提出上面的說明也僅只是試圖使用女性能夠理解體會的現象，&#xA;來幫助理解男性為什麼會天性存在處女情結，以及幫助體會男性對於處女情結的無能為力而已。&lt;/p&gt;&#xA;&lt;p&gt;那麼回答本節開頭的問題，在現代這個時代，處女情結能夠被消滅嗎？顯然是不可能的！&#xA;這些已經深埋於男人與女人之間的天好傾向，至少在幾代人的有生之年內是不可能改變的。&#xA;而任何嘗試與之怒吼對抗的人就如同用螳臂去阻擋人類社會的大車輪一樣，除了徒勞無功之外不會有別的結果！&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;男性如何調適處女情結&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/gender/%E8%99%95%E5%A5%B3%E6%83%85%E7%B5%90/#%e7%94%b7%e6%80%a7%e5%a6%82%e4%bd%95%e8%aa%bf%e9%81%a9%e8%99%95%e5%a5%b3%e6%83%85%e7%b5%90&#34;&gt;男性如何調適處女情結？&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;經過前面解釋可以知道，但凡成熟的正常男性無不存在處女情結的，只不過差別在於發作與自知的程度而已。&#xA;不過處女情結只不過是眾多擇偶天性裡面的其中一項而已，並不是不能夠妥協、交易、和取捨的，&#xA;而這些過程其實就是本節所謂的「調適」過程。&lt;/p&gt;&#xA;&lt;p&gt;這些調適準備可能是自我驅動的，也可能是經過周圍朋友家人等輔導接納的，&#xA;最終的表現就是可以一定程度的放下處女情結，或者降低對處女的要求和期待。&#xA;這些現象甚至可能大部份並不需要被搬到檯面上來處理，很多男性在自我心智的階段就自己內心調適掉了；&#xA;還有一部份是在天性的自然權衡利弊之中就已經處理完畢，&#xA;以致於可能有些男性自始至終從未意識過自己竟然有處女情結！&#xA;其實像這樣的調適行為在很多其它的事情上也是存在的，而且也是符合演化邏輯，&#xA;否則就以現代這個性開放風氣橫行的社會，&#xA;如果還是保有這麼強烈且無可退讓的處女情結的話，那麼還有多少人能夠結婚生子呢？&lt;/p&gt;&#xA;&lt;p&gt;說到底，處女情結是男性生存繁衍策略上一項很重要的風險管理能力，但也終究只是其中一項而已；&#xA;男人們沒有人喜歡被帶綠帽(或者有機會被帶綠帽的感覺)，但是擺在生存繁衍這條路面前的風險困難還有很多，&#xA;比如男生謀生能力、女生基因品質、年齡、社會階層等等。&#xA;在顧全大局的最終指標之下，單一的一項堅持並不是不能夠妥協退讓和交換的。&#xA;用更加白話的方式來說，&#xA;其實就是當男性自身的擇偶選擇範圍比較狹窄的時候(也就是比較少女性能夠願意要他的時候)，&#xA;處女情結可能就會自然的退讓消弭。&lt;/p&gt;&#xA;&lt;p&gt;用一個極端但容易理解的例子來做說明，就拿躺在路邊要飯的那個乞丐來說，&#xA;如果今天有一個女生過去和他相好，做他女朋友，甚至願意嫁給他，&#xA;那你看這乞丐還在不在意這女的是不是處？甚至人家二婚三婚、八大行業又怎麼樣？還會嫌棄這女生嗎？&#xA;當然作為旁觀者我們其實明白這不過就是沒得挑了所以顧不得那麼多其它的，&#xA;可是以那個乞丐本位來說，他搞不好自始至終從未意識過&#xA;「其實我是在意的，但我知道自己幾斤幾兩，所以選擇包容退讓和忍受」這件事，&#xA;因為這些東西很可能在身體天性的運算之中只在 0.1 秒就計算完成並且做出決定，&#xA;甚至於沒有機會進入到腦子的意識之中令他注意到這件事。&#xA;&lt;strong&gt;這就是我說的「在肉體天性的意識之中自然權衡處理掉」的情況，因此甚至連他本人可能都未察覺；&lt;/strong&gt;&#xA;&lt;strong&gt;而在我們一般大眾的認知之中，會將這類人物歸類為「沒有處女情結」。&lt;/strong&gt;&#xA;然而他是真的就沒有處女情結嗎？即便連他本人都沒有意識到處女情結的存在，但他真的就不存在處女情結嗎？&#xA;答案是否定的，因為處女情結是天生產物，只不過是被壓抑住而已。&#xA;假若有一天這乞丐不小心走了狗屎運飛黃騰達了，成了老闆、當了總裁了，&#xA;你就看他那時候再挑女人時在不在意人家是不是處女？&lt;/p&gt;&#xA;&lt;p&gt;經過極端案例的探討之後讓我們回來普通現實，我們就會察覺到一件事情：&#xA;&lt;strong&gt;男人們不可能不存在處女情結，而在一般女性認知中所謂的「沒有處女情結」的男性，&lt;/strong&gt;&#xA;&lt;strong&gt;終其所以只不過是在擇偶選擇為數不多的情況下而自然做出的退讓而已！&lt;/strong&gt;&#xA;而許多男性能夠長期不爆發並且一直保持沒有處女情結的形象，&#xA;更大的因素可能是一般普通男性終究是平凡人，終其一生沒有能夠飛黃騰達的機會罷了！&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;內心糾結的男性&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/gender/%E8%99%95%E5%A5%B3%E6%83%85%E7%B5%90/#%e5%85%a7%e5%bf%83%e7%b3%be%e7%b5%90%e7%9a%84%e7%94%b7%e6%80%a7&#34;&gt;內心糾結的男性&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;大部份的普通男性都會在人生當中自我的調適對於處女情結的心理狀態，&#xA;但也有一部份的人察覺到了，可是卻不能夠良好的自我調適，&#xA;於是我們就會在網路上看到這些男性表達出心裡痛苦的情感抒發或者求助文章。&lt;/p&gt;&#xA;&lt;p&gt;整理這些男性的故事都有幾個共通點。&#xA;他們有些是真的沒有擇偶選擇空間，離了這個現在的女朋友的話還不知道能不能找到下一個；&#xA;也有些人並非完全沒有選擇範圍，但可能一開始時並不知道女性的情史，&#xA;或是過度自信的認為自己沒有處女情結，或是一開始以為這沒什麼大不了的，&#xA;於是有一天發作起來的時候兩人的感情已經進入一定的深入狀態，因而感到痛苦拉扯。&#xA;然而這些案例裡面就沒有一個是擇偶範圍非常寬廣的男性。&#xA;對於這些大情聖似乎從來就不存在處女情結的糾結問題，&#xA;而他們處理這些情況的一致方法通常是不帶眨眼的換人。&lt;/p&gt;&#xA;&lt;p&gt;除了擇偶選擇面的寬窄程度之外，另外一項導致男性心裡糾結的因素應就是現代的兩性價值觀教育造成的了！&#xA;撇除掉分了這個還不知道有沒有機會遇到下一個的這種情況之外，&#xA;不論是一開始不知道而後來才發現女生的過往，或者對自己面對這種問題的心裡素質過高的期待，&#xA;總之有一天內心的處女情結冒頭和發酵，止不住的心裡嫌棄厭惡身邊的女人。&#xA;這時雖然男人內心壓抑不住對女伴的嫌惡感，理智上卻認知自己這樣的想法是不對的，是不正確的；&#xA;相信自己不應該要有這種已經不合時宜的老式大男人沙文想法，卻又止不住內心對女伴的嫌惡感；&#xA;認為自己應對兩人付出的感情承擔負責，卻又無法真正接納女伴。&#xA;這種兩頭的心智拉扯便成為男孩內心中痛苦糾結的主要因素。&lt;/p&gt;&#xA;&lt;p&gt;對於這樣身在痛苦中的男人，是對是錯我不給予意見，&#xA;不過建議讀過我以下的類比舉例之後，讀者們再自己給這些事情做評判。&lt;/p&gt;&#xA;&lt;p&gt;如果說要我用什麼方式來和女人形容這種男人內心的痛苦糾結情緒的話，&#xA;那麼我們需要像「大雄的如果電話亭」那樣想像一個不符合當今社會狀態的環境。&#xA;假如你交了一個男朋友，這男朋友沒錢也沒啥本事，還經常需要你贊助他生活費。&#xA;你心裡其實蠻反感這男友，有個想法想要把他一腳踢開換別人，但是你卻清楚這麼做是不對的。&#xA;因為在這個假想的時空環境之下，女人本來就該當家做主，男人吃軟飯本就是天經地義的事情，&#xA;而且你的朋友、閨密們的男朋友很多也是這樣，姊姊、阿姨們的老公也大多都是要靠女人養的。&#xA;雖然偶爾也會有一些人的老公具有相當的經濟實力，可以和老婆平分家庭開銷、出去吃飯可以 AA。&#xA;這些少數案例雖然也讓姊妹們覺得很幸運，但是如果你因為這樣而嫌棄男友，甚或將他掃地出門的話，&#xA;那你一定會被大家罵爆炸，什麼「滿清都已經亡國多少年了？」&#xA;「你竟然有這麼大女人主義的齷齪想法！」「都什麼年代了，你不養他，難道還要他來養你嗎？」&#xA;等等話語絕對會讓你社會性死亡，成為眾矢之的。&#xA;並且你自己的理智上也同樣認為這麼做是不對的，因為從小生長的社會價值觀就是這麼教導你的。&#xA;那麼如果真的身處這個想像中的情況，你會不會拉扯糾結？&#xA;面對這個你明明已經沒感覺不喜歡或甚至有些厭惡的對象卻不能夠瀟灑走人，&#xA;你會不會如同嘴巴吃了蒼蠅一般的感到噁心？&#xA;好的，那麼，其實在現代社會因為處女情結而感到痛苦糾結的男性們，其實就是這麼回事！&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;無情的男性&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/gender/%E8%99%95%E5%A5%B3%E6%83%85%E7%B5%90/#%e7%84%a1%e6%83%85%e7%9a%84%e7%94%b7%e6%80%a7&#34;&gt;無情的男性&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;對於處女情結的調適，除了會自我退讓的大部份普通男性、和調適不了而產生糾結情緒的男性之外，&#xA;還有另外一群男性，他們的調適方式就是不調適，不合就換掉；&#xA;通常他們會需要女人來調適自己以配合他們。&lt;/p&gt;&#xA;&lt;p&gt;他們這種高高在上的樣子，豪不顧惜女人情感和歲月蹉跎的做法，通常讓女性們又恨在心裡又愛在眼裡。&#xA;這就像是通常那些長相頂漂亮的女性容易養成任性自我性格一樣的原因，&#xA;因為情感追求天平的不對等，使得存在空間容許漂亮美女發展此種性格。&#xA;同樣的原因，能夠做出這種讓女人們罵在嘴裡的行為的男性通常擁有相當不錯的擇偶優勢條件。&#xA;站在高地的他們並不擔心缺乏可擇偶的對象，甚至於可能還有許多女人巴不得要去攀附他們，&#xA;因此才會形成前面所形容的這種又愛又恨的情況。&#xA;此外，擇偶優勢條件加上情感歷練豐富，早已感情脫敏的他們在面對這些事情的時候往往可以更加果絕而無掛慮。&#xA;與他們的薄情寡義相反的是，在他們瀟灑遠去的背後，留下哭的死去活來、或者暴跳如雷的女人！&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;白紙找白紙報紙找報紙&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/gender/%E8%99%95%E5%A5%B3%E6%83%85%E7%B5%90/#%e7%99%bd%e7%b4%99%e6%89%be%e7%99%bd%e7%b4%99%e5%a0%b1%e7%b4%99%e6%89%be%e5%a0%b1%e7%b4%99&#34;&gt;白紙找白紙，報紙找報紙？&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;對於處女情結有關的話題，贊成或批評總是各有立場，但其中有一種說法特別有趣。&#xA;有些女人提出一種想法，也許是意識到了男性不可能根本性消抹處女情結的原因吧，&#xA;他們接受了有些男性擇偶時對潛在伴侶的處女身要求。&#xA;不過這種合理並不是無條件的，&#xA;這些女性提出的想法認為男性提出處女的擇偶要求是合理的，但前提條件是男性自己也得是無經驗的處男。&#xA;就好比要求男性身高 180 的，女人自己應該至少也要有 170 的邏輯一樣；&#xA;或者像是要求男性月收入要 10 萬以上時，女人自己的薪水也應該達到 8、9 萬以上的說法邏輯相同。&#xA;總之就是每個人的要求都可以是合理的，前題是要對等公平。&#xA;於是乎這麼一個說法便出現並廣為流傳：&#xA;「就讓處男去挑處女、非處男就找非處女；白紙配白紙，報紙配報紙。」&lt;/p&gt;&#xA;&lt;p&gt;這麼個說法看似公平、對等、合理、等價，一時之間似乎大家都找到了公約數，&#xA;不論男性或女性、不論在處女情結一事上或讚或反，在這句話面前似乎大家找到了停止爭論的最大共識！&#xA;然而這裡我卻要給大家潑一桶冷水。&#xA;我說的不是理論正確的話語，卻是現實的描述；因為理想是美好的，但現實卻是殘酷的！&lt;/p&gt;&#xA;&lt;p&gt;處找處、非處找非處，這麼一個公平正確的要求多麼美好啊？&#xA;想找處女可以，但你自己也得是個處男，否則自己經驗豐富卻想找個乾淨的處女可不讓人感到噁心不恥嗎？！&#xA;但是現實社會卻不是這麼運作的。&#xA;&lt;strong&gt;實際的情況往往是：處女最後嫁給了非處男，而處男最後娶了非處女，或者娶不到任何一個！&lt;/strong&gt;&#xA;是的，這才是現實。&#xA;這句話可能會讓許多好不容易拾起自信心的女子們再次破防，然而現實就是這麼運作的，&#xA;而我們口中那個合理公平誰也不虧歉的理想情況多半並不會發生！&lt;/p&gt;&#xA;&lt;p&gt;這些事情乍看讓許多女性感到惱羞忿怒，然而稍加思索推敲就會知道這是極其合理且自然會發生的結果&#xA;(這裡我說的不是正不正確，而是合不合邏輯)。&#xA;不妨思索一下，請問在現代我們所處的這個社會，男性為什麼會沒有性經驗？&#xA;但凡是個正常的男性，誰不想要有性經驗呢？&#xA;於是男性的性經驗有無，甚至於性經驗的豐富與否，其實並不只是表達男性的性經驗如此而已，&#xA;它背後反應的其實是這個男性個體在女性間的受歡迎程度，也就是受女性所青睞吸引的程度。&#xA;男性的性經驗往往與男性自身的條件優勢呈正相關。&#xA;前面所述非處男最後往往娶了個處女，其實就是這些條件優渥的男人往往不會是處男，甚至會是經驗豐富的海王，&#xA;而他們並不缺乏可以挑選的女性對象。&#xA;在面對各種問題時，他們往往有得挑、有得選，他們更加有空間能夠遵循本心而無需過多遷就或退讓。&#xA;因此在選擇長期伴侶的時候，他們往往更有底氣去篩選那些本心所青睞之人。&#xA;你可以儘管說他們不合理、不要臉，&#xA;儘管揶揄他們自己經歷豐富但娶太太還是要挑處女，儘管怒罵他們造成了許多非處女後卻還是要找個處女結婚，&#xA;但是他們仍然這麼做，一點不受影響，並且他們有這個本事要挑且還找得到。&#xA;這些男人們也不會因為你的狂怒飆罵而有所改變，更不會轉而來找你結婚。&#xA;無論理論的公平講的多麼有道理，但現實又殘酷的世界就不是照那樣運作的！&lt;/p&gt;&#xA;&lt;p&gt;至於處男呢？與前面所述相同，一個男人之所以會沒有性經驗，其實不過就是因為找不到女人罷了！&#xA;找不到女人，不過就是因為自身條件(&lt;em&gt;包含財富、地位、外貌、能力、性格等等綜合條件&lt;/em&gt;)實在不夠讓女性多看兩眼，&#xA;以致於幾十年的時間連一次性愛的機會都得不到。&#xA;當然我知道這裡一定很多人會跳出來反駁，說很多人是秉持婚後派的，還有因為宗教信仰的關係堅決婚前守貞的等等。&#xA;對，這樣的人確實是存在；&#xA;但請各位捫心自問，就在現在我們所處的這個社會環境，這樣的人(特別是男性)到底有多少？&#xA;我們走入現實不自欺欺人，&#xA;絕大部份的處男到底是因為為了守衛心中的信念而堅持，還是單純因為交不到女友而被迫守貞？&#xA;因此這樣的男性最後往往是能夠有對象就不錯了，哪輪得到挑挑揀揀！&#xA;甚至往往得接手那些「已經玩夠了，想安定下來」的女性，而這類女性基本不可能仍是處女。&lt;/p&gt;&#xA;&lt;p&gt;於是最終形成了本節一開始所描述的現象，&#xA;非處男性最後往往不會傾向選擇非處女，因為嫌棄人家不乾淨；&#xA;處女往往不會嫁給處男，而是嫁給非處男，重點不在於處不處的，主要是非處男更加令人嚮往。&#xA;而大量被非處男給淘汰出來的非處女，則不得不將就嫁給沒那麼霸道的非處男，甚至有些得找處男接盤。&#xA;剩下還有許多處男，也就是「那些」女人們口中最「高貴」的物種，卻沒有人願意選擇嫁給他們，&#xA;並且更加殘酷的是其實也沒有人在乎他們是死了還是活了！&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;女性為何激烈反對&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/gender/%E8%99%95%E5%A5%B3%E6%83%85%E7%B5%90/#%e5%a5%b3%e6%80%a7%e7%82%ba%e4%bd%95%e6%bf%80%e7%83%88%e5%8f%8d%e5%b0%8d&#34;&gt;女性為何激烈反對？&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;在有關處女情結的討論話題上幾乎總是能見到女性的大肆抨擊&#xA;(這類女性佔比多少我不知道，但是她們的網路聲量挺大是真)，&#xA;比方常見會說出「現在還要找處女的話，可能只能去幼稚園裡找了！」&#xA;或者「你們這些可悲的男人，竟然在意人家是不是處女？」&#xA;「女生根本就覺得很噁心，也不會想找那種要挑處女的男人！」等等。&#xA;話語中表現出極度的厭惡與反對，好似男性有處女情結本身就是一件錯誤的事情。&#xA;她們不只不能理解處女情結，還覺得處女情結本身是有毒的、是錯誤的、是過時的古沙文思想，&#xA;是令人反感的，且是任何男人膽敢存有這種想法就應該要被嚴厲批判的。&#xA;她們鄙視並敵視那些表達出處女情結傾向的男性、或者支持這種情結的男性，並且帶有忿怒情緒的回擊這些男性。&lt;/p&gt;&#xA;&lt;p&gt;但是不知道對於一個無利害關係的旁觀者來說，會不會對於這樣的現象感到疑惑？&#xA;道不同不相為謀，你們不是一類人，也不會有交集，表達反對不認同是可以理解，&#xA;但是情緒激動的攻擊這就很耐人尋味了！&#xA;然而在這表面的情緒機動之下其實隱藏的卻是完全相反的事實真像。&lt;/p&gt;&#xA;&lt;p&gt;就人性而論，如果你真的輕視、低看某類人，那麼正常來說你會迴避疏離他，而不是怒罵攻擊他；&#xA;除非他損害到了你的利益！&#xA;這就好比通常一般不會有人去對著路邊要飯乞丐氣急敗壞的叫囂說：&#xA;「你們為什麼廢在這裡？為什麼不好好努力奮發上進？(這樣就可以娶我了！)」&#xA;不，我們不會這樣做！因為你我他就不是一類人，彼此也無關係瓜葛；&#xA;也許你會瞧不起這些人，但不至於氣血攻心的破口大罵。&#xA;那麼為什麼這些女性對於那有處女情結的男性如此暴跳如雷呢？&#xA;如果這些有處女情結的男人真的都是她們口中的老弱病殘低等物種的話，至於如此嗎？&#xA;其實從前面一路讀下來的讀者大概已經可以猜到了，&#xA;真像其實是這些存在處女情結的男性往往就是女性們最為嚮往的那一群男性；&#xA;並且那愈讓女人傾心神慕的男性，往往就是處女情結最嚴重且不能退讓降低的男性！&#xA;這些男性們往往並不排斥和你男女交往風花雪月一段時間，&#xA;但是一旦開始要考慮穩定的長期關係(也就是婚姻)時，這些女人們往往在這個時候吃鱉；&#xA;或者有些不那麼風流的一般共識下的好男人，可能發作的時間會更早，&#xA;會在兩人穩定交往關係的前後時間就能感受到來自於男性伴侶的厭惡嫌棄情緒。&#xA;這些其實才是為什麼讓女人們對此話題如此瘋狂激動的最重要因素！&lt;/p&gt;&#xA;&lt;p&gt;至於有些人主張不合就換，建議女性不要去糾結和理會那些有處女情結的男性，&#xA;只挑選那些沒有處女情結的男性發展關係就好了。&#xA;可是真的照此原則嘗試的話卻可能很有機會發現更加令人感到挫折的真像，&#xA;那些所謂沒有處女情結的男性往往是女性們要屈就自己才會願意去接納的對象。&#xA;好不容易終於尋覓到一個條件還算滿意且沒有(還未發作)處女情結的好男人，&#xA;結果隨著關係深入才發現其實他也是非常在意的，甚至可能一開始就是騙你的！&#xA;這不斷的挫敗、氣餒、和焦慮，可能才是導致這類女性逐漸走向魔征的真正因素！&lt;/p&gt;&#xA;&lt;p&gt;如果到這裡你還為這樣的說法有所疑惑的話，那麼可以試著觀察看看周圍能夠見聞的女性。&#xA;看看那些對處女情結一事反應最為激烈的都是什麼樣的女性？她們的情史經歷如何？&#xA;然後再看看那些無論任何原因而從未有過性經驗的女性，在她們之中反應激烈的又有多少？&#xA;然後就能應證這件人性的根本邏輯：&lt;strong&gt;激烈的敵對現象源自於利益受損！&lt;/strong&gt;&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;女性該如何應對處女情結&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/gender/%E8%99%95%E5%A5%B3%E6%83%85%E7%B5%90/#%e5%a5%b3%e6%80%a7%e8%a9%b2%e5%a6%82%e4%bd%95%e6%87%89%e5%b0%8d%e8%99%95%e5%a5%b3%e6%83%85%e7%b5%90&#34;&gt;女性該如何應對處女情結？&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;解釋完有關處女情結的前因後果和各種面向之後，&#xA;對於那些在處女情結有關的事情上遭遇挫折或焦慮的女性，我可以給出一些建議；&#xA;不見得效果如何，但您可以參考看看！&lt;/p&gt;&#xA;&lt;p&gt;首先女性們得&lt;strong&gt;放棄不切實際幻想，要認知到但凡是個正常男人就不可能沒有處女情結的！&lt;/strong&gt;&#xA;那些鼓吹「道不同不相為謀，挑沒有處女情結的男人就好」的說法，&#xA;很大成份(&lt;em&gt;其實還是有些許正確性，下面段落就會提到&lt;/em&gt;)不過是自我安慰的說辭而已。&#xA;一旦你打定心眼只篩選並挑選那看上去沒有處女情結的男性，&#xA;那就會和有些年幼小女生嚷嚷著想要找個不色不黃的男性一樣可笑。&#xA;因為到頭來會發現你只會找到騙子，要不然就是性取向不正常的，再不然就是矮矬窮了！&#xA;因此放棄幻想，正視現實，可以讓你更加務實的分析彼此的籌碼份量，&#xA;至少在失敗的時候不至於那麼受傷無法忍受了！&lt;/p&gt;&#xA;&lt;p&gt;接受現實之後，就要降低對擇偶的要求和期待。&#xA;如同這整篇文我所解釋的，女人要認知到失去了處女身確實是一項求偶市場的減分項，&#xA;特別對於那些愈容易讓你嚮往傾慕的對象可能減分愈多！&#xA;那麼除了用自己去試試頭破血流的感覺並蹉跎青春之外，&#xA;對自己有個清楚的認知並適當的放低要求、接納那些綜合條件比較沒有那麼亮眼的男性，&#xA;可能會是更加務實的做法。&#xA;所以那些流傳「略過處女情結男，只挑沒有處女情結的男人就好」的說法其實也不是完全沒有邏輯，&#xA;這話背後的本質其實就是拐個彎要女人放低標準、降低對男性條件的期待。&#xA;因為我們知道那些所謂「看上去好似沒有」處女情結的男性，&#xA;其實不過就是權衡利弊之後(可能是潛意識層面就做完的)的退讓取捨而已。&#xA;因此所謂挑沒有情結的對象，其實就約等同於找個沒那麼亮眼的普通男人！&lt;/p&gt;&#xA;&lt;p&gt;失去了處女之身的女人就一定沒法找到好的男人了嗎？這答案也是確切否定的！&#xA;也許面對那些頂規的男人們大概是真的可以不用妄想了，&#xA;但是對於一般範圍的優秀好男人其實也並不是沒有機會！&#xA;就如同我本篇所解釋的，&#xA;&lt;strong&gt;處女情結確實是男人天生相當在意的一件事，但其實也只是眾多在意的條件當中的一項。&lt;/strong&gt;&#xA;觀察現實也是同樣如此，即便有過性經驗的女性確實是一項求偶不利的因素，&#xA;但在現代社會性開放風潮之下，也不乏大把這樣的女人找到不錯的歸宿，組成幸福溫馨家庭者亦是一抓一大把。&#xA;然其本質其實就是用其它更加優秀的條件來置換消弭這些不利因素。&#xA;因此，女性其實可以從其它方面來補償自身包含非處之身在內的許多劣勢，&#xA;比方說溫柔體貼、懂人情世故、排憂解難、互相扶持，或者擁有過人的膽識與智慧，&#xA;或是足夠美艷動人其實也是可以！&lt;/p&gt;&#xA;&lt;p&gt;此外女人們也需要具備足夠的成熟懂事，切忌在本文所論及的主題有關的事情上去提醒和刺激自己的伴侶。&#xA;如同我前面所解釋的，男性對於處女情結的自我消化，在本質上是一種多方競爭條件下的的退讓置換和妥協，&#xA;並且這樣的一個權衡利弊的過程不一定是在有意識的情況下進行的，&#xA;甚可能許多男性大半輩子都沒有在腦子裡意識到這件事。&#xA;那麼如果一個女性不懂得把持，還喜歡作妖去戳人的敏感的話，&#xA;那麼也許有一天她的伴侶突然就覺醒意識，權衡一下(心智或身體)之後發現自己虧大了，&#xA;那豈不是女人自己把自己的幸福給作沒了？&#xA;就算也許不至於拆偶散伙，但兩人之間存在的隔閡和不平衡的情緒，&#xA;要再繼續相親相愛後半輩子，大概困難阻礙少不了了！&lt;/p&gt;&#xA;&lt;p&gt;所以你會發現，這一招之所以能夠有所作用，甚至能幸運找到比自己實際應該能夠匹配的好得多的對象，&#xA;很大一部份其實源自於訊息的不對稱。&#xA;因此這些方式多半也只能夠被用在那些一般範圍內相當優秀的男性而已。&#xA;至於如果想要靠這幾招去挑戰頂規男性？開玩笑！那些各各都是人精，而你竟然想在他們面前耍大刀求拿下？&#xA;對比現實也同樣符合描述，看那些叫得出名字的大人物，&#xA;他本人以及包括他的孩子，有幾個人的配偶不是「乾淨」的女人呢？&lt;/p&gt;&#xA;&lt;p&gt;對於有過性經驗的女性想要找個好人家安定下來的需求，&#xA;還有一個說了會被罵死但卻非常有效、且自古以來經常被使用的方法：&lt;strong&gt;隱瞞、欺騙！&lt;/strong&gt;&#xA;如同我本篇所解釋的，其實你的身體是否曾被別的男人使用過，並不是開啟男人嫌惡的開關，&#xA;而是那腦子裡的認知認定才是！&#xA;那麼你幹嘛老老實實告訴男生你的過往事蹟呢？&#xA;(&lt;em&gt;是的，這說法不符合社會價值觀，你甚至可以說不道德；&lt;/em&gt;&#xA;&lt;em&gt;但是我不喜歡打高空，我講事實與現實，而現實是這真的有效用！&lt;/em&gt;)&#xA;管你是不是曾經身經百戰，只要男人不知道，就可以依然待你如初戀。&#xA;這大概就是那些風塵女子決定上岸之後，為什麼總喜歡抹除過去一切蛛絲馬跡，並斬斷所有舊連繫的原因了吧！&#xA;所以女人你真的可以隱瞞你過往的故事以換得一個對你深深相愛的老實好人家，&#xA;唯切記一定要隱藏的夠徹底，且將過去斬斷的夠狠心，並且這會是你永遠不能說的秘密，直到與你一起進入棺材。&#xA;至於如果你之前玩的太放肆，花名在外洗不掉，或者已經給你的身體造成無法隱藏的變化，&#xA;或者總是能夠遇到可能將你的秘密給曝光的威脅的話，&#xA;那就救不了你了！誰要你之前玩這麼兇呢？&lt;/p&gt;&#xA;&lt;p&gt;另外，隱瞞過往這招式能夠有用處其實還非常依賴於一項重要的條件，&#xA;那就是&lt;strong&gt;請找個沒有情感經歷的老實男，並且他們的綜合條件基本不會是太受一般女性待見的人物，&lt;/strong&gt;&#xA;也就是坊間所說的「接盤俠」。&#xA;(&lt;em&gt;我知道這裡老實男人要跳腳了，「老實人犯了什麼錯要招此對待？」&lt;/em&gt;&#xA;&lt;em&gt;我明白，但現在我是站在女性的立場提出有效果的方案，&lt;/em&gt;&#xA;&lt;em&gt;即便這方案不道德正確，但卻真的有作用；即便受傷的是老實男，但世界就是這麼運行的。&lt;/em&gt;)&#xA;因為這項手段能夠不破功的關鍵因素就是隱藏，&#xA;然而對於那些受歡迎且經驗豐富的、許多女性都同樣喜歡的那種男性來說，這種做法沒有半點用處！&#xA;因為就算你不說、就算你死不承認，可是你身體的許多反應，甚至你的人格特質和面對各種事物的反應，&#xA;隨時都會透露你的底牌來背叛你，而你終究只有成為人家過水玩物的機會而已。&#xA;因此這毒招式其實終究只能夠用來做降維打擊，只能應用在那些情感經歷單純，經驗缺乏的男性身上，&#xA;最好是半輩子都在自己的世界裡耗費大量心力鑽研某種專業領域的男性了，單純好騙！&#xA;我想也許這就是某地工程師之所以經常被大家調侃是回收業者的原因吧？！&lt;/p&gt;&#xA;&lt;p&gt;還有一個問題有時候會被女性提出來問，那就是有必要去做手術修復處女膜(陰道冠修復手術)嗎？&#xA;我的看法是在大部份情況下其實沒有必要！&#xA;處女膜修復的作用在於可以欺騙發生性關係的對象，使他相信自己是第一個與你發生性關係的對象。&#xA;但是對於那些經驗閱歷豐富的男性來說，這一點小套路完全無法掩蓋事實，&#xA;因為他們可以輕易從你各種情況下的各種細節發覺端倪，因此其實完全沒有必要如此自討苦吃白作工，&#xA;還不如一開始就開大門走大路；&#xA;而對於那些缺乏情感經歷的純情小白，搞不好在做那事的時候根本也無法察覺有什麼不一樣？&#xA;至於初夜沒落紅這事要搪塞過去也不是多困難的事情，&#xA;反正現代的教育早就告訴我們不能以處女膜的存在與否去判斷女人的貞節，&#xA;騎馬騎車和其它激烈運動導致破裂也是非常正常合理的情況。&#xA;最終，只有對那些具有較為強烈的處女情結，並且同時符合了缺乏情感經歷且憨厚呆萌條件的男人，&#xA;這個修復手術才能夠發揮點作用。&lt;/p&gt;&#xA;&lt;p&gt;最後一招，其實也是效果最好且最有用處的一招，那就是&lt;strong&gt;守貞！&lt;/strong&gt;&#xA;是的，經過前面的反覆解釋，理應可以了解不論怎麼裝、怎麼演、怎麼補償，假的終究是不比真的更好！&#xA;貨真價實的終究是比掩藏找補的更加可貴，也更加值得得到疼愛！&#xA;所以其實女人守護自己的貞節而不給出(&lt;em&gt;注意不是「不隨意」給出身體，而是不到婚姻關係建立為止絕不給出&lt;/em&gt;)，&#xA;才是真正從源頭解決面對男性處女情結的唯一最優解法！&#xA;是的，我這裡也是鼓勵女孩子守貞；&#xA;但是請別搞錯了，我不是什麼衛道人士或宗教領袖，&#xA;叫你守貞不是因為什麼所謂古板過時的沙文思想什麼的，也不是基於宗教信仰的立場，&#xA;而純粹就是站在現實主義，以女性為主體的利益最大化邏輯下的務實選擇而已。&#xA;一旦失去了這個「未開封使用過」的標籤，犧牲的是你自己的擇偶選擇範圍空間，&#xA;特別是對於那些你可能會更有機會更加傾心愛慕的那些可能對象而言。&#xA;是的，我大概又知道你要說什麼。&#xA;我也同意處子之身只不過是眾多條件裡面的一項，&#xA;也確實一個除了是個處女之外哪哪都不如人的女人同樣無法匹配到一個客觀滿意的那種優秀男性；&#xA;但是這個身份對於那愈往高品質區塊靠近的男性而言愈是一種入門門票，&#xA;一旦失去了，幾乎就等同斷絕了往那個方向攻略的可能性了！&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;檢討反思&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/gender/%E8%99%95%E5%A5%B3%E6%83%85%E7%B5%90/#%e6%aa%a2%e8%a8%8e%e5%8f%8d%e6%80%9d&#34;&gt;檢討反思&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;處女情結有關的話題三不五時就會被搬上檯面互相撕逼一番。&#xA;但琢磨下去不難發現這件事情其實不能夠歸咎於男性，&#xA;因為這種已經化為天性的特性若沒有個幾萬年大概是無法撼動的了！&#xA;而溯本追源也不難發現，現代這麼多在處女情結上爭吵的表像根源，&#xA;其實就是近代性觀念開放且氾濫後所產生的自然結果。&lt;/p&gt;&#xA;&lt;p&gt;那麼問題在哪裡呢？我認為在於文化和價值觀的教育，並且近代許多與性別有關的問題都源自於此！&#xA;近幾十年來我們、以及歐美等先進國家所傳播的女性權益和性自主等思想價值觀的不夠完善，&#xA;是導致這些問題的最大根本來源。&#xA;但是請等等，別搞錯誤會我了！&#xA;我並不反對這些強調自我意識和平等包容的價值觀，事實上我可太讚同了，&#xA;我本人更是性別對等包容尊重思想的擁護者；&#xA;而我所謂的禍源，其實是指向這些帶來改變的思潮不夠完善的那部份。&#xA;怎麼說呢？&#xA;現代先進的價值觀告訴女孩兒們身體是自己的、性也是自己的，自己擁有對自己身體完全的意志主導權。&#xA;這說法太對了！我可太讚同了；&#xA;但是，我們可曾教導過這些女孩子們與自由隨之而來的責任、風險、和代價？&#xA;當小女生們在「我想怎樣就怎樣，誰來管我誰就是古板八股傳統守舊噁心又不尊重女性」而自由享樂的時候，&#xA;可曾想過有一天可能會因此在戀愛道路上吃鱉受挫？&#xA;在她當初做出那件事的時候，可曾準備好承受在今天要承擔的後果？&#xA;這些，其實才是我真正想要點出的重點！&lt;/p&gt;&#xA;&lt;p&gt;這又比如是一個具有獨立人格自由的少年選擇中斷學業而不是繼續升學，&#xA;我想無論旁人怎麼看待，但是我們應該尊重他自己的思慮和選擇；&#xA;無論未來的他會成為如賈伯士那樣的成功創業者，或者成為一事無成的落魄大漢，&#xA;又或者接管祖產成為一個雖沒文化修養但優渥富裕的包租公，這些都是他自己要為自己承擔和冒險的。&#xA;而我們唯一需要在意的其實只有一點，那就是在他做出這些選擇的時候是否清楚了解自己在做什麼？&#xA;是否充份了解不同選擇所可能會給他帶來的不同後果，並準備好承受這些風險？&#xA;如果理解了這個舉例說明，那麼再對照回來，就會發現我們當代的性別思想和教育所存在的巨大陷阱：&#xA;&lt;strong&gt;我們在教導性別相關的自我意識和自由主導權的時候，並沒有揭露其同時會帶來的劣勢和風險；&lt;/strong&gt;&#xA;&lt;strong&gt;在教育孩子們理論上正確公平的價值觀的時候，並沒有告訴他們現實的世界其實是如何運作的。&lt;/strong&gt;&#xA;使得他們在依照所信仰的價值觀而生活行事的時候，&#xA;其實並未充份理解認知對自己的人生可能產生什麼不可逆的影響！&lt;/p&gt;&#xA;&lt;p&gt;這就是我對這整件事的思考結論，也是想要諄諄教誨還尚年幼的年輕女孩們的核心思想&#xA;(&lt;em&gt;至於那些已經失去貞節的反正已經來不及了，請回去參考女性該如何應對的那部份內容&lt;/em&gt;)。&#xA;無論你想要如何使用自己的身體，是圖個即時享樂也好，是一時腦熱覺得當下這個人值得付出也罷，&#xA;我並不反對你們的自由意志，也不代替你們自己去評價你們是對還是錯。&#xA;我不是衛道人士，也不是宗教領袖，更不是你們的父母。&#xA;我不代替你們去判斷做這些事情對不對、好不好、該不該；&#xA;只是希望你們在做這些決定的時候，在事情還不至於無法反悔的時候，希望你能多思考：&#xA;想清楚了沒有？準備好了沒有？決定以後不會後悔了沒有？&lt;/p&gt;</description>
    </item>
    <item>
      <title>這時代的 C 語言還有什麼用處呢？</title>
      <link>http://www.huoschen.idv.tw/blog/programming/%E9%80%99%E6%99%82%E4%BB%A3%E7%9A%84-c-%E8%AA%9E%E8%A8%80%E9%82%84%E6%9C%89%E4%BB%80%E9%BA%BC%E7%94%A8%E8%99%95%E5%91%A2/</link>
      <pubDate>Mon, 07 Apr 2025 00:11:12 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/programming/%E9%80%99%E6%99%82%E4%BB%A3%E7%9A%84-c-%E8%AA%9E%E8%A8%80%E9%82%84%E6%9C%89%E4%BB%80%E9%BA%BC%E7%94%A8%E8%99%95%E5%91%A2/</guid>
      <description>&lt;p&gt;「在現在這個時代，學習 C 語言還有什麼用處呢？」&#xA;這是現在從許多年輕學子身上能夠聽到的疑問，當然這問題也同樣能套用到 C++ 語言上。&#xA;這裡我就以個人從業多年的學習與理解，分享我對此問題的解讀，&#xA;告訴你 C (以及順便一提 C++)到底還有什麼樣的核心價值？&lt;/p&gt;&#xA;&lt;p&gt;其實會比較深刻產生如標題這樣問題的應該大多是正在學習 C 語言的新手，&#xA;可能是大學理工科的學生，可能是國高中第一次接觸程式語言的學生。&#xA;埋首圍繞在程式語法結構的規則，正在學習如何用程式語言列印九九乘法表這樣的基礎練習中，&#xA;翻看課本講義直到整篇結束大概都是這些東西，&#xA;實在很難理解看起來就這樣能耐的東西，如何能夠演變成自己電腦上那個畫面炫麗的遊戲軟體？&#xA;不過這個問題並不是我本次關注的重點。&#xA;除了學生之外大概還有另外一群人，&#xA;他們已經對程式語言具有一定的熟悉度和使用熟練度，至少已經脫離了學習痛苦期的深淵，&#xA;已經能夠使用 C/C++ 獨立完成作業、小品，或基於某項具體功能的軟體程式製做。&#xA;這些人對於程式語言的理解熟悉使他們的問題進入了另一個層次，&#xA;也許不再懷疑這種基礎語法裡面只有看上去好像很簡單的一些功能的語言如何能夠製做出一個具體能用的程式。&#xA;但是轉頭再看看其它更加現代先進的程式語言如 Java、Python 等後起之秀，&#xA;它們使用起來可更加簡單方便且功能更加強大豐富得多，&#xA;相比之下 C 語言(以及 C++)雖然也不是辦不到這些事，但是明顯感覺並沒有優勢。&#xA;而這個問題就是本篇所要探討的主要議題，&#xA;也就是 C 語言在現代被大量後起之秀環伺包圍的環境下，究竟還有什麼價值？&#xA;在什麼用途上它能夠比其它的程式語言更加具有優勢嗎？&lt;/p&gt;&#xA;&lt;p&gt;最後再提醒一點，這裡我探討的重點是 C 語言本身的價值和優勢，&#xA;至於應不應該、適不適合作為新手入門的第一個語言……，&#xA;那是另一個問題了！&#xA;另外我在後面也要順帶探討一點對於 C++ 的評判。&#xA;雖然嚴格意義上來說 C++ 與 C 是兩種獨立的程式語言，&#xA;但是由於一些奇妙的因素使它們之間常常糾纏在一起，通常熟悉其中一個的人往往也很難得不熟悉另一個，&#xA;甚至不乏有些程序員不能夠意識區分這兩者。&#xA;因為它倆的相依相生，並且也正好我對它們都有一定的熟練度，藉此機會就一起分析探討一番了。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;c-語言的價值與優勢&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/%E9%80%99%E6%99%82%E4%BB%A3%E7%9A%84-c-%E8%AA%9E%E8%A8%80%E9%82%84%E6%9C%89%E4%BB%80%E9%BA%BC%E7%94%A8%E8%99%95%E5%91%A2/#c-%e8%aa%9e%e8%a8%80%e7%9a%84%e5%83%b9%e5%80%bc%e8%88%87%e5%84%aa%e5%8b%a2&#34;&gt;C 語言的價值與優勢&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;單純精簡輕便高效&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/%E9%80%99%E6%99%82%E4%BB%A3%E7%9A%84-c-%E8%AA%9E%E8%A8%80%E9%82%84%E6%9C%89%E4%BB%80%E9%BA%BC%E7%94%A8%E8%99%95%E5%91%A2/#%e5%96%ae%e7%b4%94%e7%b2%be%e7%b0%a1%e8%bc%95%e4%be%bf%e9%ab%98%e6%95%88&#34;&gt;單純、精簡、輕便、高效&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;C 語言大概是現存的所有(高階)程式語言裡面最單純、最簡單的了。&#xA;不過注意啊，這裡說的是語言本身語法、結構和邏輯簡單單純，不是說你學起來很簡單啊！&#xA;這就好像是同樣雕刻一個大理石雕像，&#xA;一個雕刻師拿了 CNC 車床外加五軸連動機械手臂、和五十個不同的切刀頭來進行工作，&#xA;另一個老師傅卻只拿了一組六支雕刻刀加一把鎚子就完成了工作。&#xA;這組雕刻刀簡單是真簡單，單純是真單純，能完工是真能完工，但不表示你學起它來也是如此簡單。&#xA;這就是我說 C 語言簡單的真意。&lt;/p&gt;&#xA;&lt;p&gt;C 語言的設計非常精簡精煉(當然這是指對於機器設備，而不是對於使用它的人)，&#xA;並減少所有一切不必要的行為與工作，只以忠實完成程式設計師所明確交辦的工作為主，&#xA;至於多餘的則當作不存在。&#xA;這樣的語言哲學賦與 C 語言擁有與底層設備溝通並進行控制的能力，&#xA;因此那些驅動程式、作業系統核心、以及硬體設備上的機載程式等等，&#xA;往往必須由 C 語言來進行開發。&#xA;加上它工作單純並且不自作聰明執行額外工作的特點，是 C 語言成為高效率語言的基礎要素，&#xA;而這些特性卻是其它類型高階語言所難以俱備並與之比擬的獨特優勢。&#xA;因此那些非常講究效能的用途如大量資料的快速運算處理，&#xA;或者運算資源匱乏的用途如嵌入式設備程式等，&#xA;或者需要在系統底層運作、或與硬體溝通交互的驅動程式、底層模組與程式庫等，&#xA;就都喜歡以 C 語言作為主要的開發語言。&lt;/p&gt;&#xA;&lt;p&gt;這裡可能有些人會不服氣，因為要比底層細部控制的話，&#xA;組合語言(assembly)可比 C 語言更加瑣碎細緻並且接近硬體。&#xA;話是這麼說沒錯，不過組合語言已經脫離了高階語言的範疇，不屬於高階語言了。&#xA;因此這裡還得補充一個註腳：&#xA;C 語言是在高階語言的範圍裡面最接近硬體邏輯與控制能力的語言，&#xA;&lt;strong&gt;C 語言是最低階的高階語言！&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;當然好與壞是相伴的，否則 C 語言的這些特性這麼優良的話，&#xA;又為什麼讓更新穎的當代語言紛紛拋棄許多比它們更古老的前輩所擁有的能力呢？&#xA;C 語言貼近硬體、貼近計算機底層，於是讓光是一個整數就有各種長度不一、區分有號無號的類型，&#xA;可能還得區分堆疊空間、堆棧空間、還是全域空間，&#xA;能夠充份發揮硬體最優配置是真，但是能讓使用者昏頭踩坑也是真。&#xA;讓使用者直接操作記憶體地址賦與了完整的記憶體資料存取控制能力，卻也成為地址違規存取和堆疊洩漏發生的溫床；&#xA;能讓使用者自由的索取與歸還記憶體資源，使程式可以在設計者的規劃之下最妥善高效的操作大量資料，&#xA;卻也成為記憶體洩漏的最直接來源。&#xA;使用者若沒有要求則不會對任何空間進行初始化行為，成為它效率高的其中一項因素，&#xA;卻也導致各種未初始化引用的神奇問題，特別經常容易讓初學者摸不著頭腦。&#xA;如果要細細講解的話其實還有很多可以提，但是這一切其實都在告訴我們一件事，&#xA;C 語言的優點其實往往是背負著相對應的代價而來的。&#xA;這些便是那些比它更加新生的語言之所以沒有想要「擁有」這些優點的原因，&#xA;當然同樣也就是 C 語言在適當的使用情境下之所以比其它語言更加優異的原因。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;教育與學習&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/%E9%80%99%E6%99%82%E4%BB%A3%E7%9A%84-c-%E8%AA%9E%E8%A8%80%E9%82%84%E6%9C%89%E4%BB%80%E9%BA%BC%E7%94%A8%E8%99%95%E5%91%A2/#%e6%95%99%e8%82%b2%e8%88%87%e5%ad%b8%e7%bf%92&#34;&gt;教育與學習&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;C 語言還特別適合作為學習用途的程式語言，&#xA;但請注意我這裡說的教育是有針對性的，而不一定是指廣泛情況下的教育用途。&#xA;C 語言的語法本身非常簡單單純，這點前面已經說過了，&#xA;如果暫且不管熟練精湛程度而只看僅僅能「會」的話，&#xA;雕刻刀顯然是比五軸連動 CNC 車床更加容易入門學會的東西，&#xA;可能也因此成為過往許多學校教授學生入門程式語言的選擇。&lt;/p&gt;&#xA;&lt;p&gt;C 語言的瑣碎、不多事這項特點在有些地方是缺點，&#xA;但在學習階段卻反而具有強迫學生養成相對良好習慣的動力。&#xA;至少要了記憶體得記得還回去，並且變數不設初始值、以及各種違規操作等，&#xA;都很有機會在學習的階段就先爆發出來，想要不重視也不容易。&#xA;需要使用者對各種東西進行細微的操作這點，&#xA;更比其它語言更能夠讓學生在學習的階段一起感受體會到計算機的底層邏輯和運作原理，&#xA;如理解記憶體與位址、堆疊空間、地址對齊、和呼叫與執行流程等等。&lt;/p&gt;&#xA;&lt;p&gt;不過很明顯以上這些所謂優點是對於計算機相關科系學生的情況來說的，&#xA;如果學習程式語言的目的有意要鑽研了解計算機相關知識並累積基礎的話，&#xA;那麼 C 語言更是無法逃避的一個知識領域，必須得學，最好從一開始就學。&#xA;至於非計算機相關科系，也不打算往這個方向發展，&#xA;學習程式語言只是為了執行一些簡單工作的目的，或者作為興趣啟蒙的話，&#xA;那麼這就是另一個話題了；&#xA;C 語言不一定適合作為廣泛情況下給人的第一個學習入門語言，&#xA;甚至它的瑣碎枯燥可能還會起到反效果！&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;作為軟體協作介面&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/%E9%80%99%E6%99%82%E4%BB%A3%E7%9A%84-c-%E8%AA%9E%E8%A8%80%E9%82%84%E6%9C%89%E4%BB%80%E9%BA%BC%E7%94%A8%E8%99%95%E5%91%A2/#%e4%bd%9c%e7%82%ba%e8%bb%9f%e9%ab%94%e5%8d%94%e4%bd%9c%e4%bb%8b%e9%9d%a2&#34;&gt;作為軟體協作介面&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;C 語言在現代其實還有一個可能比較少人注意到但卻非常重要的價值，&#xA;那就是作為軟體模組與模組之間的協作介面。&lt;/p&gt;&#xA;&lt;p&gt;這是什麼意思呢？軟體程式往往都是被設計成許多不同的區塊來共同協同工作的，&#xA;就好像是公司的不同部門、機關的不同處室單位、園區的不同廠房等。&#xA;不同的部門即軟體模組各自專心負責自己的工作與任務，&#xA;然後用某種連繫方式將這些部門給連繫起來，共同構成一個系統的一整體，&#xA;於是乎，顯然就需要一種能夠讓各模塊共同使用的溝通交流介面。&#xA;關於這個問題，其實幾乎所有的程式語言都提供了這種機制，&#xA;然而這些機制大多都僅限於在使用同一種程式語言(甚至還得是同一個版本的編譯器)所寫成的模組之間。&#xA;那麼問題就來了，現代其實存在非常多種不同的程式語言，彼此各有擅長和不擅長的地方，&#xA;理想上最佳的做法是使用最恰當的語言去實現最適合的軟體模組，然後再把它們給連繫起來；&#xA;但是，這些由完全不同的程式語言所製做的模組該怎麼樣統一交換資料並協同工作呢？&#xA;這時候，C 語言就是那個最為適合的語言了！&lt;/p&gt;&#xA;&lt;p&gt;有賴於 C 語言本身的簡潔單純並且缺少隱晦隱藏的各種奇妙機制，&#xA;本來在現代各種先進語言面前應該是某種缺點，&#xA;然而這些缺點卻陰差陽錯的在這個時代成為所有程式語言之間的最小滿足標準，&#xA;成為用來定義軟體介面與界定彼此邊界的規格定義最佳語言，&#xA;成為讓不同程式語言之間可以互相協同工作的中介者。&#xA;對於那些學過不只一種程式語言的程式人，可以試著回想看看，&#xA;是不是幾乎所有的程式語言都可以有辦法呼叫那些由 C 語言所實現的程式庫？&#xA;對於大部份偏向系統面的程式語言(至於偏向使用者應用端的可能就沒有了)，&#xA;甚至還能提供某些方式讓你製做出符合 C 語言規格的程式庫介面，&#xA;讓其它由 C 語言寫成的應用可以呼叫你的程式庫(當然也包含那些能夠呼叫 C 語言程式庫的其它語言)；&#xA;至於脫離了 C 語言之外，好像能夠提供不同語言直接互相溝通呼叫的介面就付之闕如了？！&lt;/p&gt;&#xA;&lt;p&gt;這就是 C 語言在當代，除了用來實現底層驅動、以及極度講求高效能和低消耗的領域之外，&#xA;可能更加關鍵重要的角色地位了，那就是作為千萬種各有所長的程式語言之間的溝通橋樑。&#xA;學習和了解 C 語言的更大用處可能不是在許多人不知道一輩子有沒有機會接觸的系統軟體開發，&#xA;而是在適當的時機可以讓你真正放開單一語言的束縛，可以放手使用最擅長的語言做它最擅長的事，&#xA;並且還能將它們給凝聚協調起來。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;c-的價值與地位&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/%E9%80%99%E6%99%82%E4%BB%A3%E7%9A%84-c-%E8%AA%9E%E8%A8%80%E9%82%84%E6%9C%89%E4%BB%80%E9%BA%BC%E7%94%A8%E8%99%95%E5%91%A2/#c-%e7%9a%84%e5%83%b9%e5%80%bc%e8%88%87%e5%9c%b0%e4%bd%8d&#34;&gt;C++ 的價值與地位&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;說了 C，就免不了也要提一下 C++。&#xA;說實在的，在這個時代，與 C 語言仍然掌握核心價值不同，C++ 的位置算是有些尷尬！&lt;/p&gt;&#xA;&lt;p&gt;嚴格說起來，C 與 C++ 完全就是兩個不同的程式語言，理論上應該是完全獨立的，&#xA;然而實際上這兩個語言之間又存在著千絲萬縷的連繫，往往斷不了彼此的牽掛。&#xA;C++ 在誕生之初就將自己定位為 C 語言的超級擴充，號稱為一個「更好的 C」、「更加功能豐富的 C」。&#xA;除了發明 C++ 自己的語法功能之外還延伸包容支援所有的 C 語法功能，&#xA;並且在往後數十年各自的規格更新之中，二者也往往兼容彼此的新規格，&#xA;因此使得 C 與 C++ 成為形影不離的兄弟。&lt;/p&gt;&#xA;&lt;p&gt;然而理想很美好，現實卻不照著想法走。&#xA;理想中 C++ 包含了 C 的一切功能，並且給的更多，然而這並沒有讓 C++ 完全吃掉 C 語言的領地，&#xA;事實上 C++ 最大的缺點大多源自於它一開始所強調的優勢與豐富。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;複雜難學不一定可靠&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/%E9%80%99%E6%99%82%E4%BB%A3%E7%9A%84-c-%E8%AA%9E%E8%A8%80%E9%82%84%E6%9C%89%E4%BB%80%E9%BA%BC%E7%94%A8%E8%99%95%E5%91%A2/#%e8%a4%87%e9%9b%9c%e9%9b%a3%e5%ad%b8%e4%b8%8d%e4%b8%80%e5%ae%9a%e5%8f%af%e9%9d%a0&#34;&gt;複雜、難學、不一定可靠&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;C++ 太過複雜龐大，是目前為止世界上公認最複雜的程式語言。&#xA;有一句網路笑話是這麼說的：&#xA;「那些說自己精通 C 語言的人有可能真的很精通；但那些說自己精通 C++ 語言的人，肯定不精通！」&#xA;這句網路笑話就非常生動的表現了 C++ 的複雜，&#xA;事實上往往愈是學習熟悉 C++ 的人，往往愈學愈不敢說自己精通(作者我自己也是愈學愈不敢)。&lt;/p&gt;&#xA;&lt;p&gt;C++ 過於龐大複雜，首當其衝的就是對生手的學習和上手難度極大；&#xA;但這其實只是最不重要的一個缺點，畢竟只要有價值，&#xA;世界上學習難度更大更困難更複雜的事情也不乏有人前仆後繼去學習。&#xA;它的過度複雜，使得語言的行為有時候很難弄得清楚；&#xA;或者就算有人能夠弄清楚，還有些部份很難定義清楚；&#xA;或者就算能夠定義，也很難保證編譯器的實現在這麼複雜晦瑟的規格之下能夠完全沒有意料之外的錯誤！&#xA;這一切使得它的可靠性受到些許質疑，特別是在那些極度強調可靠性的應用領域裡更顯得令人不安！&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;環境資源要求&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/%E9%80%99%E6%99%82%E4%BB%A3%E7%9A%84-c-%E8%AA%9E%E8%A8%80%E9%82%84%E6%9C%89%E4%BB%80%E9%BA%BC%E7%94%A8%E8%99%95%E5%91%A2/#%e7%92%b0%e5%a2%83%e8%b3%87%e6%ba%90%e8%a6%81%e6%b1%82&#34;&gt;環境資源要求&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;撇除這些問題之外，C++ 往往也攻佔不了那些原本由 C 語言所佔領的領域，&#xA;雖然 C++ 完全相容 C 並且還給的更多，&#xA;然而 C++ 的龐大直接使得它的運行時庫硬生生比 C 時庫膨脹近四倍(以 GCC 為例)，&#xA;偏偏那些原本 C 語言所生存的領地大多都是運算資源與儲存資源拮据的環境！&#xA;此外 C++ 的許多基礎功能其實脫不開一個完善的系統服務在背後撐腰，比如說例外機制、RTTI 等，&#xA;而在 C 語言所生存的地方卻往往是需要實現並提供這些功能給別人使用的角色，而不是享受已經完善的這些功能。&#xA;此等尷尬的局面使得 C++ 沒能夠吃下那些屬於 C 語言的領土。&lt;/p&gt;&#xA;&lt;p&gt;當然我們可以選擇停用或刪除某些 C++ 的功能特性(當然前題是編譯器要能夠支援這麼玩)，&#xA;以免除前述的一些 C++ 過於肥胖臃腫的問題，而我自己在將 C++ 使用到案子裡的時候往往就是這麼做的。&#xA;但是這就很有趣了，這表示 C++ 的問題有時候並不是給的不夠，而是給的太多！&#xA;並且更加弔詭的問題是，如果將 C++ 的功能過度現縮之後，使用 C++ 的意義也同樣在喪失！&#xA;舉個例子，我看過許多產業介實際的程式碼，&#xA;用的是 C++ 編譯器、副檔名是 &lt;code&gt;.cpp&lt;/code&gt;，但裡面寫的全是 C 碼，&#xA;那麼這還能夠算得上是 C++ 程式嗎？&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;上層領域對手眾多&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/%E9%80%99%E6%99%82%E4%BB%A3%E7%9A%84-c-%E8%AA%9E%E8%A8%80%E9%82%84%E6%9C%89%E4%BB%80%E9%BA%BC%E7%94%A8%E8%99%95%E5%91%A2/#%e4%b8%8a%e5%b1%a4%e9%a0%98%e5%9f%9f%e5%b0%8d%e6%89%8b%e7%9c%be%e5%a4%9a&#34;&gt;上層領域對手眾多&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;前面說的那些都是討論在「C 語言所實際佔領並保有優勢的地盤」下的缺點，&#xA;那如果在不是那麼令人膽顫心驚且斤斤計較的應用領域上，是不是 C++ 的豐富功能就能夠大放異彩了呢？&#xA;這答案既是，也不是。&#xA;確實 C++ 最為活躍擅長並能騰雲駕霧的地方不是和 C 去拼底層，&#xA;而是在偏向應用層的領域裡去高效的處理各種複雜的工作。&#xA;然而這就要說到本篇所強調的重點：「現代」。&#xA;現代各種新興程式語言輩出，如 Java、C#、Python、Swift、Lua 等等等等，&#xA;各式新生語言興盛且包圍環伺，&#xA;它們比 C++ 更加簡單、方便，甚至在不考慮系統資源負載的情況下還能比 C++ 更加強大。&#xA;這樣的局面使得 C++ 比上不足，只能在同時滿足了&#xA;功能邏輯複雜或資料龐大、且講究效能、且系統資源不至於過度拮据的應用需求下，&#xA;得到一些被需要的生存空間。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;綜合平均表現最優異&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/%E9%80%99%E6%99%82%E4%BB%A3%E7%9A%84-c-%E8%AA%9E%E8%A8%80%E9%82%84%E6%9C%89%E4%BB%80%E9%BA%BC%E7%94%A8%E8%99%95%E5%91%A2/#%e7%b6%9c%e5%90%88%e5%b9%b3%e5%9d%87%e8%a1%a8%e7%8f%be%e6%9c%80%e5%84%aa%e7%95%b0&#34;&gt;綜合平均表現最優異&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;說了這麼多 C++ 的缺點，那麼 C++ 就真的是一無是處了嗎？當然這也不對！&#xA;C++ 當然也是有點用處的，不然我自己還用著呢？！&lt;/p&gt;&#xA;&lt;p&gt;雖然 C++ 的任何一項特點都有比它更加優秀的語言存在，&#xA;但是 C++ 其實最特別的優點就是各方特性的平均評分總和最高！&lt;/p&gt;&#xA;&lt;p&gt;論開發速度與難度，比不上 Python 等新秀，但它們在處理複雜演算法和大量資料時候的性能顯然沒有 C++ 優秀；&#xA;論效能比不上 C 語言的高效精減，但 C++ 的開發效率與容易度可贏過太多，並且功能更加豐富強大；&#xA;雖然 C++ 對於 C 等經常與底層打交道的語言來說往往過於臃腫肥大而難以勝任最接近機器的工作條件，&#xA;但是在現代檯面上各種高大上語言唱主角的情況下，&#xA;C++ 卻往往身居它們的底層，作為高效苦力支持者的角色存在，竟然成為了它們的基層功能和服務的供應者。&#xA;此外前面那些「其它語言」的各種優勢往往是在依賴「讓各語言可以發揮自己的優勢在擅長的地方」之下的結果，&#xA;在現實上為了能使之成立，除了需要有一個可以將它們綁定連繫起來的條件之外，&#xA;當然也少不了團隊裡面需要有分別精通這些語言的各別專業開發人員。&#xA;而如果你只有自己一個人、並且在一段時間內只能夠負擔學習並使用一種程式語言的話，&#xA;那麼 C++ 就會是一個最為適合廣泛需求的語言；&#xA;換句話說，如果一個產品因故必須只能使用一種程式語言來實現的話，&#xA;那麼 &lt;strong&gt;C++ 在絕大多數應用場景裡可能就會是一個綜合評效最佳的程式語言！&lt;/strong&gt;&#xA;這也是為什麼當代許多份量大的程式如遊戲引擎等，仍是以 C++ 作為主力開發語言的主要原因之一！&lt;/p&gt;</description>
    </item>
    <item>
      <title>活塞引擎 14：啟動</title>
      <link>http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-14---%E5%95%9F%E5%8B%95/</link>
      <pubDate>Sun, 30 Mar 2025 01:24:35 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-14---%E5%95%9F%E5%8B%95/</guid>
      <description>&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;有關活塞引擎的系列差不多要告一段落了。&#xA;當然活塞引擎主題還能有非常多的內容，不過因為我所知有限的緣故，不能再分享更多。&#xA;那麼作為主題的最後一個內容，我們來看看一個可能有點意思的東西：如何發動一臺汽油活塞發動機。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_怠速&#34;&gt;怠速&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在探討如何啟動之前，先來思考另一個問題：一臺活塞發動運轉的最低限度為何？&#xA;也就是說，以最低的資源消耗 — 也就是燃料 — 維持引擎依然能夠自力持續運轉的最低臨界轉速。&#xA;一旦發動機轉速低於這個臨界值，則將無法再繼續維持持續的運轉，俗稱熄火；&#xA;另一方面這也是我們試圖從靜止狀態啟動一臺發動機的時候，所必須超越的最低轉速。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;先看特性最為鮮明的單缸發動機。&#xA;四行程活塞引擎在轉動兩圈的過程中只有其中的半圈能夠出力，&#xA;而剩下的一圈半則不只不能出力，還得吃力才能夠完成，&#xA;這部份依賴的是飛輪所儲存的角動能&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_1&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;。&#xA;飛輪的角動能大小與轉速的快慢直接相關，因此當轉速慢到某一個程度以下，&#xA;飛輪就將無法再繼續提供足夠的動力讓活塞能夠順利的度過一圈半的行程。&#xA;飛輪必須具有足夠的轉速才能夠供應活塞完整走過四個行程的循環，&#xA;這項原因也成為在單缸引擎上決定最低轉速限度的主要因素。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;當汽缸數量多起來，比方說當有了兩個汽缸的時候，因為兩個汽缸可以在不同的時間點發力，&#xA;因此需要依賴飛輪動能的部份從單缸時的一圈半，變成只需要一圈就好。&#xA;在飛輪的負擔變輕之下，雙缸配置下維持運轉的極限最低轉速自然就比單缸情況更低了。&#xA;以此類推，三缸的最低臨界轉速又會在更低，而當汽缸數量大於四缸以後，轉速便不再受此限制。&#xA;因為在四缸以上的情況下，曲軸不論轉動到什麼位置，都一定有一個一上的汽缸活塞正在出力做功，&#xA;不再需要飛輪提供的角動能來維繫運轉。&#xA;因此在四缸以上的發動機，飛輪的主要功能也從維繫發動機的持續運轉，&#xA;轉移為更加側重於平滑化各汽缸間歇性出力的作用。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;那麼照這麼看，四缸以上的發動機是不是運轉速度就可以無限制的慢了呢？&#xA;答案是不行的！&#xA;四缸以上的發動機仍然存在著最低的臨界轉速，&#xA;原因是因為這不是一臺紙面上的理想發動機，而是一臺實際的發動機。&#xA;發動機仍然需要俱備足夠的功力輸出，來推動那些維持發動機運轉所必須的設備，&#xA;例如機油泵和冷卻水泵，以及機械運動的摩擦消耗等。&#xA;此外燃料泵如果供應不足，這油打不上來的話自然就無法正常供油維持運轉；&#xA;如果不能夠足夠的供應磁電機運作，那麼火星塞將無法點火，自然也是無法持續運轉。&#xA;總結來說，四缸以上的發動機確實臨界轉速能比四缸以下的情況低很多，但仍舊有個限度，&#xA;而相比於後者影響臨界轉速的主要因素來自於飛輪，&#xA;四缸以上發動機的臨界轉速取決於基礎週邊設備的功率供應要求。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這也就是為什麼每當停等紅綠燈的時候，汽車引擎不能夠像電動馬達那樣直接斷供停止，&#xA;而是必須脫開離合器，並且繼續維持一個很低的基礎轉速而持續運轉的緣故了；&#xA;否則當綠燈亮起時，就不是簡簡單單的加油門提高轉速就能夠開車，而是必須的重新啟動一次引擎了！&#xA;而這個在什麼負載都沒有卻為了持續發動機運轉而必須維持的這個狀態，就被稱為「怠速」狀態，&#xA;對應的轉速自然就是怠速轉速了。&#xA;只不過為了保險容錯的緣故，一般設定的怠速轉速都是高出理論臨界轉速許多的。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_啟動條件&#34;&gt;啟動條件&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;探討完活塞引擎在什麼樣的情況下會無法繼續自力維持並停止運轉的臨界條件之後，&#xA;現在把狀況反過來，那就是要將一臺停止狀態的活塞引擎啟動到它能夠自力維持的條件了。&#xA;總的來說就是我們要從外部輸入能量，使用外力驅動發動機的曲軸旋轉，直到它能夠自食其力為止，&#xA;也就是說外力的驅動在至少達到下列這些條件之前都必須持續供應：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;olist arabic&#34;&gt;&#xA;&lt;ol class=&#34;arabic&#34;&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;飛輪獲得了足夠的轉動慣性力，至少能夠獨自供應兩個汽缸點火之間空窗期的曲軸動力。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;曲軸獲得足夠的轉速，至少能夠供應磁電機產生足夠的點火電力，以及供應燃油泵足夠的抽油壓力。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;即便以上條件都達成，&#xA;也必須供應曲軸至少旋轉約兩圈左右的圈數，直到汽缸完成初始的四循環並開始爆燃產生動力。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;總結來說其實最重要的就是，&#xA;要由外部裝置提供足夠的外力來驅動運轉，渡過發動機無法自立更生的時期，&#xA;待發動機自己能夠運轉以後，這個外力就可以脫離而不再需要被使用了。&#xA;至於這個「外力」就被稱為引擎的「啟動裝置」或稱啟動器，當然也是有各式各樣。&#xA;下面就來看看為了發動一顆引擎，人們都想出了什麼樣的花招？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_各種啟動方式&#34;&gt;各種啟動方式&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_手轉hand_propping&#34;&gt;手轉(Hand Propping)&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;啟動一顆引擎，不就是用外力讓它先轉起來嗎？&#xA;那麼直接用手來轉動就成了最簡單且直接的方式，也是自打活塞汽油引擎發明以來就被使用的主要啟動方式。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;其實這種原始的啟動方式直到現代都還能夠被使用，&#xA;當然只限於沒有過多電腦參與的使用化油器的發動機，並且還要能手動打檔的車款。&#xA;也許許多前輩老司機都曾經玩過這樣的操作：&#xA;將變速箱打至高速檔位，然後推著車子從緩斜坡溜下去，就能夠啟動汽車引擎；&#xA;如果是摩托車的話可能還不需要斜坡，只要推著助跑一段距離就可以讓引擎發動起來了。&#xA;這些啟動方式雖然並沒有直觀的用「手」來啟動，但在這裡都歸納為手轉啟動原理的範疇。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-14/fig1-1-wwi-fighter-prop-by-hand.gif&#34; alt=&#34;fig1 1 wwi fighter prop by hand&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 1. 一戰時期的飛機基本全都是用手來啟動的 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_2&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_2&#34; title=&#34;View footnote.&#34;&gt;2&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;&#xA;      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; allowfullscreen=&#34;allowfullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/ArmlH_qS7uI?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;How to do hand prop starting a Cessna C172&#34;&gt;&lt;/iframe&gt;&#xA;    &lt;/div&gt;&#xA;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;至於這種啟動方式的缺點，除了看起來不夠科技感之外，也是相當具有危險性！&#xA;因為活塞引擎的特性，當成功點火發動起來的時候，幾乎是一瞬間就會達到快速暴力運轉的程度，&#xA;從上面的影片中也可以明顯看得出來這現象。&#xA;這會使得操作者一旦沒有拿捏好節奏，未能即時收手，那麼造成斷手殘廢的結果都是有可能的！&#xA;即便是用在沒有螺旋槳的汽車上，因為汽車的重量比較大，所以除非有多名好友一起助力，&#xA;否則很難能在平地上達成足夠啟動的狀態，所以通常會需要一個往下的斜坡。&#xA;然而這也同樣昭示了它的風險之所在，以及如果萬一沒能夠一次就成功啟動的後路不多。&#xA;因此手轉啟動的方式除了在古時候可能是為數不多的方案裡面簡單可靠的方法之外，&#xA;大多只被用來作為啟動器故障時的最後備用方案。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;除了風險的成份之外，手轉啟動還有一個可能更大的問題：&#xA;當引擎汽缸數量愈來愈多，純靠人力啟動的方式愈發費力且困難；&#xA;甚至於當螺旋槳造的愈來愈大甚至比人還大的時候，&#xA;此時就算不在乎危險性，手轉啟動的方案也已經不實際了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_電動馬達啟動器&#34;&gt;電動馬達啟動器&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在現代各式車輛上大家最為熟悉的啟動方式，應該就是使用電動馬達的啟動器了。&#xA;使用兩顆齒輪，一顆在馬達軸上、一顆在曲軸上，&#xA;當要啟動的時候使用機械結構將它們結合在一起，不需要的時候把它們分開，&#xA;這樣就可以使用馬達在啟動階段提供曲軸旋轉動力。&#xA;在曲軸上的那顆齒輪，通常會和飛輪二合一，如同下圖(&lt;em&gt;Figure 2&lt;/em&gt;)所示。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-14/fig2-1-1cylinder-sectional.jpg&#34; alt=&#34;fig2 1 1cylinder sectional&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 2. 單缸引擎的啟動馬達與飛輪兼曲軸齒輪 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_cylinders&#34;&gt;[&lt;a id=&#34;_footnoteref_3&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_3&#34; title=&#34;View footnote.&#34;&gt;3&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;&#xA;      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; allowfullscreen=&#34;allowfullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/MaEY_KvMg98?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;Spitfire Cold Engine Start of the Merlin V12&#34;&gt;&lt;/iframe&gt;&#xA;    &lt;/div&gt;&#xA;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;&#xA;      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; allowfullscreen=&#34;allowfullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/JJUdRNNNGRo?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;Silver Spitfire Startup at Paine Field&#34;&gt;&lt;/iframe&gt;&#xA;    &lt;/div&gt;&#xA;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;使用電動馬達啟動引擎是一個非常好的方案，&#xA;啟動速度算快，電動馬達體積也算小，可靠性和故障率都在可接受的範圍內，&#xA;總體可說是非常方便可靠，也因此才讓現代幾乎所有常用的引擎啟動器用的都是它。&#xA;那麼有什麼缺點呢？最大的缺點其實是在電源的供應上。&#xA;馬達本身是不大也不算重，但是能夠供應啟動的足夠電量的電池可就重多了，&#xA;並且愈大型的發動機所需要的啟動電力也愈多，電池就得更大更重。&#xA;這對於重量斤斤計較的飛機，特別是那些體型又小又非常在乎性能的戰鬥機來說，&#xA;為了只在發動之後就不需要的設備增加一堆呆重是很不划算的！&#xA;也因此才讓我們能看見除了電動馬達以外更多不同的啟動方案被使用在飛機上。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;還有些時候人們會另尋思路，&#xA;既然這個啟動行為只在起飛前需要而已，反正直到降落回來之前發動機都不會再關閉了，&#xA;那麼我這電池乾脆就不放在飛機上了行嗎？&#xA;這方案還真可行，而且使用的還挺廣泛，許多老式飛機就是這樣靠著外部的電池或發電機來啟動發動機的；&#xA;甚至於一直到了現在，很多輕型的噴射戰鬥機仍然需要透過外部輸入的電源(或高壓空氣)來進行啟動。&#xA;這種藉由外部電源啟動的方式，不只得到了馬達啟動的好處，還省掉了電池的重量，&#xA;只不過如果不慎在空中熄火的話，要重新發動起來就不是那麼容易的事了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-14/fig2-2-spitfire-external-starter.jpg&#34; alt=&#34;fig2 2 spitfire external starter&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 3. 一臺連接了外部電源，正準備發動的噴火式戰鬥機 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_4&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_4&#34; title=&#34;View footnote.&#34;&gt;4&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_發條啟動器spring_starter&#34;&gt;發條啟動器(Spring Starter)&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;使用一個被壓緊蓄能的彈簧來提供發動機的啟動動力，這就是發條啟動，或也可叫彈簧啟動。&#xA;這種啟動方式常見於小型和中型的柴油發動機，但在航空器上面基本見不到。&#xA;發條啟動的好處是結構簡單可靠，體積和重量也都不大，&#xA;缺點就是在發動之前得先人力上發條，並且隨著彈簧的不斷壓縮，上發條也會愈吃力，&#xA;這點在下面的影片中可以觀察到。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;&#xA;      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; allowfullscreen=&#34;allowfullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/K0I-EHsmkME?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;How to Use a Kineteco Spring Starter&#34;&gt;&lt;/iframe&gt;&#xA;    &lt;/div&gt;&#xA;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;&#xA;      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; allowfullscreen=&#34;allowfullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/V4ajdnXtkIM?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;Cqstart Spring Starter - Diesel Engine Emergency Start&#34;&gt;&lt;/iframe&gt;&#xA;    &lt;/div&gt;&#xA;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_手搖慣性啟動inertia_starter&#34;&gt;手搖慣性啟動(Inertia Starter)&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;慣性啟動器的核心就是一個高速旋轉中的飛輪&#xA;(&lt;em&gt;這個飛輪不是我們所認知的活塞引擎裡面的那個曲軸飛輪，而是啟動器自己的飛輪&lt;/em&gt;)。&#xA;當啟動器旋轉的足夠快速以後，用一個離合器將啟動器的飛輪和發動機曲軸連結上，&#xA;就可以利用啟動器飛輪所蓄積的轉動慣性來驅動發動機啟動。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這種啟動方式乍看之下與前面的發條啟動有點相像，&#xA;都是在發動之前需要以人力轉動手搖柄來給啟動器蓄能，但是細節有所不同。&#xA;發條啟動器需要壓縮蓄能彈簧，因此在上發條時需要施加的力氣會愈來愈大，&#xA;也因此限制了它所能夠應用的發動機尺寸。&#xA;慣性啟動器的蓄能方式則是質量的旋轉動能，&#xA;因此即便外部輸入的力量較小，也足以給它持續加速直到所需要的轉速為止，&#xA;可能因此使得航空飛機更加傾向使用慣性啟動器作為航空活塞發動機的啟動方案吧。&#xA;如果在現場要分辨兩者的話，那麼發條啟動器在上發條的時候通常可以明顯聽見棘輪發出的卡達聲，&#xA;並且可以看出操作者轉動搖把是愈轉愈吃力；&#xA;而慣性啟動器則在一開始的時候比較顯得吃力，愈轉愈快之後看起來操作者的動作會愈來愈順暢，&#xA;並且啟動器會在高速旋轉狀態下發出嗡嗡聲響。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;使用慣性啟動器的好處有簡單可靠、啟動器小巧、不需要電池、並且可以以純人力完成啟動等，&#xA;缺點則是在每次啟動之前都需要人在飛機外面手搖給啟動器蓄能，&#xA;如果現場沒有其他幫手，而只有飛行員一個人要自己完成這一切工作的話，會顯得有些麻煩不順利。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;&#xA;      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; allowfullscreen=&#34;allowfullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/PtbVxq6WL8Q?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;Hand Cranking a Stearman&#34;&gt;&lt;/iframe&gt;&#xA;    &lt;/div&gt;&#xA;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;&#xA;      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; allowfullscreen=&#34;allowfullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/LgTw-w4k87E?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;Starting a Messerschmitt 109&#34;&gt;&lt;/iframe&gt;&#xA;    &lt;/div&gt;&#xA;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;此外還有另外一種衍生的啟動方式，使用電動馬達取代手搖，例如在下面影片中所使用的就是這種啟動方案。&#xA;這種啟動方案和純粹的電動馬達啟動很像，如果要分辨的話，&#xA;那麼當你聽見明明已經傳出馬達通電轉動的聲音，&#xA;然後又聽見啟動器飛輪旋轉所發出的並且逐漸變大的嗡嗡聲，但是螺旋槳卻紋絲不動，&#xA;直到最後離合器卡上之後嗡嗡聲明顯受到影響而快速消減，伴隨螺旋槳在短時間內快速加速並完成發動，&#xA;那麼這就是使用了電動慣性啟動的情況了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;因為啟動馬達不需要直接帶動曲軸，而使能給啟動器飛輪加速蓄能就好，&#xA;因此對啟動馬達的功率需求較低，也沒有了需要有人在外面手搖的缺點，可以由駕駛員一人獨立完成操作。&#xA;缺點就是疊床架屋，本來可以用一個馬達就完成啟動的，它非要中間再加一個啟動器飛輪插手，&#xA;還多出了增速齒輪和離合器等零件。&#xA;此外雖然對馬達的功率需求放低了，但啟動所需的總能量卻可能更多或至少理論持平，&#xA;因此對於電池的需求那是一樣少不了，所以這種啟動方式其實並不多見。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;&#xA;      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; allowfullscreen=&#34;allowfullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/So1K6z_1eeE?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;Fully restored Messerschmidt BF 109G-4 start up. What an amazing sound!!!&#34;&gt;&lt;/iframe&gt;&#xA;    &lt;/div&gt;&#xA;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_拉繩啟動pull_starter&#34;&gt;拉繩啟動(Pull Starter)&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;操作員用手將一條繩索快速抽出就能啟動一臺小型汽油引擎，&#xA;這種被稱為拉繩啟動的啟動方式也許更為大眾所熟悉，&#xA;因為許多的小型機械用的就是這種啟動方案，如割草機、鏈鋸等。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;拉繩啟動在原理上其實屬於慣性啟動的衍生近親，&#xA;只不過當發動機體型小到某種程度以後，也就不需要相對複雜的飛輪、增速齒輪、離合器等這些設備了，&#xA;因為人的手臂已經具有足夠的力量可以直接驅動曲軸快速旋轉起來。&#xA;因此只需要一條纏繞的繩索輔助，讓人可以像是打陀螺那樣的原理直接去抽動它，就足以完成啟動了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;&#xA;      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; allowfullscreen=&#34;allowfullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/tCsyg12IT_E?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;How To Release Pull Cord On New Lawn Mower - Craftsman M100&#34;&gt;&lt;/iframe&gt;&#xA;    &lt;/div&gt;&#xA;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;&#xA;      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; allowfullscreen=&#34;allowfullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/nZAcwYF6NT8?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;Grass Cutter - Start After Winter&#34;&gt;&lt;/iframe&gt;&#xA;    &lt;/div&gt;&#xA;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_壓縮空氣啟動compressed_air_starter&#34;&gt;壓縮空氣啟動(Compressed-Air Starter)&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;使用壓縮空氣的啟動方式在邏輯上與電動馬達啟動方案非常相像，&#xA;只不過將電動馬達換成氣動馬達，電池換成壓縮空氣罐而已。&#xA;氣動馬達的原理如下面影片所示，就是讓高壓空氣吹過渦輪並驅動軸心旋轉而已。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;使用壓縮空氣啟動方案的好處與電動馬達相似，操作快捷方便，可以單人完成；&#xA;雖然需要攜帶壓縮器瓶，但肯定比相應的電池重量輕多了！&#xA;最大的缺點就是需要額外裝備一臺空氣壓縮機，&#xA;好在發動機正常運作的時候透過分走引擎曲軸的動力來壓縮空氣補充氣瓶，&#xA;並且給壓縮氣瓶充氣所需要消耗的能量並不比充電少，也更加不方便。&#xA;什麼你說採用電動馬達方案也是一樣要給電池充電嗎？&#xA;是這麼說沒錯，但其實發動機本來就都有裝備小型發電機的，&#xA;畢竟飛機上一大堆的機上設備本來也都是靠這臺發電機來供電，&#xA;因此並不需要「額外」增加一個發電機；&#xA;但是給氣瓶充氣卻需要額外裝載空氣壓縮機，並且壓縮機的重量可比發電機重多了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;不過如果在設計上就沒有想要讓飛機可以憑自身能力補充壓縮空氣的話，&#xA;如果在規劃上就認為只要飛回基地後使用基地的壓縮機來補充壓縮氣就好的話，&#xA;那麼倒是也就可以省掉這個壓縮機的裝載需求。&#xA;甚至於壓縮氣瓶也可以不放在飛機上，反正也只是發動的時候需要使用而已，&#xA;只要能夠接受每次啟動的時候都依賴地面的氣源設備的話，&#xA;那麼就連壓縮氣瓶的體積和重量都可以省掉了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;&#xA;      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; allowfullscreen=&#34;allowfullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/M0s5YpmydQM?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;How ELLEM Turbine Air Starter starts a diesel engine&#34;&gt;&lt;/iframe&gt;&#xA;    &lt;/div&gt;&#xA;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_考夫曼啟動器coffman_starter&#34;&gt;考夫曼啟動器(Coffman Starter)&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;最後來看一種挺特別的，又被暱稱叫作霰彈槍啟動器的考夫曼啟動器。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這種啟動方案從原理上來看其實也算是壓縮空氣啟動的衍生。&#xA;使用壓縮空氣來啟動發動機，哪哪都好，就是壓縮空氣的儲存與製備挺讓人頭疼。&#xA;那麼有沒有什麼東西可以在短時間之內快速產生大量的壓縮氣體，&#xA;但是在此之前卻能夠方便保存運送的呢？&#xA;東西當然是有的，於是人們將目光看向了火藥！&#xA;而這其實就是考夫曼啟動器的核心原理：將火藥引燃後，利用產生的大量高壓氣體去推動氣動馬達旋轉。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;考夫曼啟動方案的優點就是設備輕量、小巧、緊緻、操作便捷、啟動速度還賊快！&#xA;不需要電池，不需要壓縮氣瓶，不需要壓縮機，更不用人在外面搖轉手柄，&#xA;只是每次啟動都需要消耗掉一個像子彈的火藥罐，並且飛在天上的時候無法補充。&#xA;雖然說這火藥罐每次啟動就需要消耗一個，但是它又小又容易保存和運送，&#xA;在基地裡面可以一箱一箱的量大管夠，好像也不是什麼太大的問題。&#xA;因此考夫曼啟動器曾被大量應用在各種軍用航空器上面，&#xA;反倒是在民用用途上因為火藥的管制問題而不多見。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;作為這個盛裝火藥的藥罐，雖然乍看挺向霰彈子彈的，&#xA;啟動的時候也是真的像開槍一樣會發出「砰」的聲音，因此被暱稱為霰彈槍啟動器。&#xA;但是這東西和真正的霰彈又是完全不同的東西，更不可能混用！&#xA;啟動器的火藥罐體型上就比一般的霰彈大了一倍以上，並且裡面沒有彈頭，只有純發射藥；&#xA;至於點火的方式，有的採用底火擊發，而有的採用電子擊發。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;&#xA;      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; allowfullscreen=&#34;allowfullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/65qrzgbTTcQ?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;Wildcat First Shotgun Start&#34;&gt;&lt;/iframe&gt;&#xA;    &lt;/div&gt;&#xA;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;&#xA;      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; allowfullscreen=&#34;allowfullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/dTusg6jcgYE?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;Eclipse aviation cartridge starter and Plessey starter motor&#34;&gt;&lt;/iframe&gt;&#xA;    &lt;/div&gt;&#xA;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;footnotes&#34;&gt;&#xA;&lt;hr/&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_1&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_1&#34;&gt;1&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-1---%E8%AA%8D%E8%AD%98%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E/&#34;&gt;活塞引擎 1：認識活塞引擎&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_2&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_2&#34;&gt;2&lt;/a&gt;. &lt;a href=&#34;https://www.youtube.com/watch?v=ZRPyz2Ka8u4&#34;&gt;Old ROTARY vs RADIAL Engines Cold Start Smoke and Sound&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_3&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_3&#34;&gt;3&lt;/a&gt;. &lt;a href=&#34;https://www.motofunshop.com.tw/%E6%B1%BD%E7%BC%B8%E5%A4%A7%E4%B8%8D%E5%90%8C-%E2%85%A0/&#34;&gt;汽缸大不同&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_4&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_4&#34;&gt;4&lt;/a&gt;. &lt;a href=&#34;https://www.recoverycurios.com/supermarine-spitfire-air-ministry-cockpit-generator-switch&#34;&gt;SUPERMARINE SPITFIRE, AIR MINISTRY COCKPIT GENERATOR SWITCH&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>活塞引擎 13：化油器與油門</title>
      <link>http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-13---%E5%8C%96%E6%B2%B9%E5%99%A8%E8%88%87%E6%B2%B9%E9%96%80/</link>
      <pubDate>Sat, 01 Mar 2025 13:03:15 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-13---%E5%8C%96%E6%B2%B9%E5%99%A8%E8%88%87%E6%B2%B9%E9%96%80/</guid>
      <description>&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這次來看一個在傳統活塞引擎上也算是非常有意思的東西：化油器。&#xA;它體積並不大，乍看之下也只是小小一個東西，卻是在整個引擎的運作過程中起到控制作用的重要元件。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-13/fig1-1-carburetor.jpg&#34; alt=&#34;fig1 1 carburetor&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 1. 化油器外觀 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-carburetor&#34;&gt;[&lt;a id=&#34;_footnoteref_1&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;不知讀者中有沒有人有過這樣的疑惑，&#xA;在前面的文章裡，我總是說空氣和燃料混合在一起成為混合氣，簡稱「油氣」，&#xA;卻好像一直沒有交代這油是怎麼和空氣給均勻混合一起的？&#xA;而這就是化油器存在的目的。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;其實在現代車輛中已經幾乎看不見化油器了，當代各種發動機多半總是更喜歡使用高壓泵，&#xA;將燃料推擠從針孔大小的孔洞給噴射出來變成霧氣，直接往吸進來的空氣裡面噴霧，就完成了。&#xA;這就是現代所謂的「燃油噴射」霧化技術。&#xA;燃油直接噴射霧化是挺美好的，但是相關設備比較精密昂貴，&#xA;還需要能夠提供更大壓力的高壓泵、及能夠承受高壓的燃油管路，因此成本較高。&#xA;此外往往還需要各種調較和控制機制才能夠使它正確穩定的工作，&#xA;當然這部份在當代行車電腦發達普遍的情況下並不是什麼大問題，&#xA;不過對於古時候的人來說就很吃力了。&#xA;除了相關的精密零件設備導致成本較高之外，&#xA;在沒有近代電控輔助的情況下，使用純機械的方式控制噴油量也是很難做到恰到好處的精準的&#xA;(因此以前的柴油引擎也比較容易排黑煙)。&#xA;在直到近代這二十年左右的時間之前，&#xA;人們必須採用另外一種更加簡單、廉價、又可靠的方式來進行油氣混合，&#xA;也就是本篇的主題：化油器。&#xA;不過即便是在現代，也不是所有的活塞發動機都能夠用上電腦控制和燃油噴射的，&#xA;比如說那些有體積和成本限制的割草機、卡丁車、小型發電機、航模引擎等等，&#xA;仍舊能見到化油器在它們身上默默工作著。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_化油器原理&#34;&gt;化油器原理&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-13/fig2-1-carburetor-components.png&#34; alt=&#34;fig2 1 carburetor components&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 2. 化油器結構圖 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;其實化油器的主體結構非常非常簡單，如上圖(&lt;em&gt;Figure 2&lt;/em&gt;)所示，&#xA;就是一個管子，從外面進來的空氣可以直接通過，就是管子中間有個縮口設計而已。&#xA;然後不論是白努利、還是文氏管原理都告訴我們，空氣在經過縮口的時候速度會變快、壓力會變低，&#xA;於是就把縮口當中一個小縫管路裡的油給吸出來霧化，和經過的空氣自然混合一起了。&#xA;這就和一些噴漆罐如何將油漆打散成小顆粒並和空氣混合噴務而出的原理是一樣的。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;了解了化油器的核心原理之後，可能會發現在實現上這種裝置的作用必須仰賴油管的油壓穩定且恆定。&#xA;否則油壓太高會導致過多的燃料過多流出，甚至沒等被空氣吸出去就自己先以液體狀態流入氣管，&#xA;另一方面若油壓太低則會導致不容易被吸出，甚至可能吸不到油。&#xA;這就是為什麼化油器旁邊要有一個小輔助油箱的原因了，先將汽油適量的從油箱抽入這個輔助油箱裡，&#xA;藉著控制輔助油箱的液面維持在穩定的位置，從而穩定狹管內的液體壓力。&#xA;不過這樣的設計也從根本上給了它一個嚴重的缺陷：它的正常工作往往仰賴穩定的重力狀態。&#xA;如果車子準備爬個大陡坡，比如 45 度的那種，或者要衝個大下坡，&#xA;或者要上下翻兩圈、或者玩自由落體等等，就容易使化油器供油不穩定，容易過量供油、或者斷油熄火。&#xA;當然車子要這麼玩是有點誇張了，可是放到飛機上，特別是戰鬥機上面……，&#xA;這就是為什麼二戰時期那些採用化油器的戰機在做垂直俯衝等過激動做的時候容易斷油熄火的原因了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_功率控制&#34;&gt;功率控制&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;不論汽車、飛機、還是船舶，都有一個很重要的需求，就是要能夠控制發動機的輸出功率大小，&#xA;而不是一啟動就工作在最大功率狀態直到熄火為止。&#xA;這就是油門的目的了，是用來即時的、大高低跨度的控制發動機輸出功率的主要設備。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;我們都說油門油門，感覺好像就是依靠調整注油量來控制引擎的出力，然而實際上並不是。&#xA;其實我在往期的文章也解釋過了，注油的量確實可以高低調整，但是能夠調整的範圍其實非常有限。&#xA;油噴太多了浪費，畢竟汽缸裡的空氣就那麼多、氧就那麼多，把氧耗完之後多出來的油都是白白噴掉的；&#xA;油噴太少了則會讓點火困難，甚至過於稀薄的油氣無法被點燃。&#xA;因此通常來說，噴油的量其實並不太能夠大範圍調整，&#xA;只要汽缸裡面的活塞抽氣了，那麼該噴多少油進去就要噴多少油進去，&#xA;無論當下油門到底是整個鬆開的還是已經被踩到底的！&#xA;最終每次灌注進入汽缸內的注油量確實是可以調整的，但那都是基於別的目的要調整油氣濃度所產生的行為，&#xA;而如果要依賴此注油量的高低來控制引擎出力大小的話，那麼只能說是非常不實用的！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-13/fig3-1-carburetor.png&#34; alt=&#34;fig3 1 carburetor&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 3. 化油器中的節氣門(throttle valve)與阻風門(choke valve) &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;那麼我們基於大範圍調整功率輸出的目的到底該如何進行控制呢？&#xA;主要還是得透過控制曲軸的轉速這個方式來進行。&#xA;那麼人們都怎麼控制曲軸轉速呢？&#xA;除了使用變速箱來調整曲軸負載以控制轉速之外，&#xA;基本上所有活塞式發動機都是依靠調整進氣管的進氣阻力來達成的，&#xA;也就是在上圖(&lt;em&gt;Figure 3&lt;/em&gt;)化油器的下游處有一個被標示為 throttle 的閥門在控制的。&#xA;這個閥門就是「節氣門」(throttle valve)，它的開關程度會造成不一樣的管路阻力，&#xA;全開的時候油氣可以完全順暢的通過，&#xA;而接近全關的時候(不會完全關閉的程度，否則沒氣就得熄火了)油氣的流動阻力最大。&#xA;藉由控制進氣管不同程度的流動阻力，它影響的其實是汽缸在進氣行程時候的吸氣阻力，&#xA;是用刻意增加的吸氣阻力來調整進氣時油氣充填的速度，使活塞因為阻力變大而慢下來。&#xA;這其實就和往期文章在探討&#xA;&lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-9---%E5%8A%9F%E6%95%88%E5%88%86%E6%9E%90---%E8%B5%B0%E5%85%A5%E7%8F%BE%E5%AF%A6/#intake-exhaust-drag&#34;&gt;進排氣阻力&lt;/a&gt;&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_2&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_2&#34; title=&#34;View footnote.&#34;&gt;2&lt;/a&gt;]&lt;/sup&gt;&#xA;的原理是一模一樣的，&#xA;不同的是從前探討的是發動機在極限轉速之下所遭遇的氣體流動阻力問題，&#xA;而現在這個是為了讓發動機能夠不要那麼賣力工作而人工主動加入的氣體流動阻力。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;但另一方面，節氣門半開時所造成的人工氣流阻力確實會內耗發動機的動力，&#xA;就如同使用電阻來控制燈泡的亮度一樣會導致一部份電能在電阻上被消耗掉。&#xA;所以使用節氣門來調降發動機輸出功率的同時，&#xA;也會消耗掉發動機的功率(節氣門開的愈小則消耗的比例愈多)，導致燃油效率降低。&#xA;但是兩害相權取其輕，當我們需要低功率輸出的時候，比方說在慢速航行、或停車怠速的時候，&#xA;雖然這時引擎的效率低，但是因為轉速也同樣受限而降低，因此燃油的消耗速度更慢了；&#xA;比起讓它高效運作然後嘩嘩燒油，顯然這時候讓它處在低效狀態但是燃油燒慢一點是更好的。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;另外，這也是為什麼發動機的最高效工作轉速位在中間某個位置的原因，&#xA;因為在轉速偏高時會遭遇各種「喘不過氣」&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_3&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_3&#34; title=&#34;View footnote.&#34;&gt;3&lt;/a&gt;]&lt;/sup&gt;&#xA;的阻礙而導致效率降低，&#xA;而某個程度以下的低轉速多半是靠節氣門來控制的，此時節氣門的氣流阻力消耗成為效率降低的主要元兇。&#xA;那麼意思是不是說，如果節氣門全開，但是仍然維持低轉速的話，&#xA;是不是就是真正燃油效率最高的狀態了呢？&#xA;這還真是這樣沒錯！&#xA;這就要說到除了節氣門之外能夠有效控制發動機轉速的另一個設備：變速箱。&#xA;變速箱通過調整曲軸的負荷力道來控制 — 或者更精確的說其實是適配 — 曲軸轉速，&#xA;不過有關變速箱以及其相關的內容已經超出了本系列所設定的主題，因此不會多談。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;make-more-efficiency&#34; class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;如果要最大化發動機的燃油效率，&#xA;那麼曲軸的轉速就要愈低愈好，能夠最大程度減小「喘不過氣」所造成的消耗。&#xA;並且節氣門也要在全開的狀態，以完全消除節氣門本身的消耗，並且同時還要維持低轉速。&#xA;因此最後還需要給發動機掛上一個很大的後端負載，用通俗白話文來說就是變速箱要掛在最高檔位上，&#xA;才能完全符合前面所設定的所有條件，而此時也將是發動機理論上能夠達到最高燃油效率的時候。&#xA;當然這是一個過度理想並且完全忽略了實用性需求的結果，&#xA;它排除了在此運轉狀態下馬力低，導致加速性不佳，可能隨便一個小坡都能讓車爬不上去的實用性問題，&#xA;也同樣不考慮發動機的結構承受能力、以及是否容易造成損壞的耐用性等等問題。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_油氣濃度控制&#34;&gt;油氣濃度控制&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在上面的化油器原理示意圖中(&lt;em&gt;Figure 3&lt;/em&gt;)，我們可以看到長的像節氣門那樣的閥門有兩個。&#xA;其實這兩個閥門是一模一樣的，只不過名字不一樣，一個在上游、一個在下游，&#xA;下游那個就是剛剛介紹過的節氣門，而上游的則叫作「阻風門」(choke valve)。&#xA;阻風門的動作原理與節氣門一模一樣，都是人工增加氣流阻力的裝置，&#xA;不過在噴油管上游的這個閥門有一個很重要的作用：控制油氣混合的濃度。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;當後面的活塞和汽缸在工作狀態的時候，它們是不斷在從進氣管大量抽氣的，&#xA;也就是說化油器這邊管路內的空氣是受到後面一股力量在抽取。&#xA;而當位於上游的阻風門半開的時候，會導致後方噴油管那裡的空氣壓力降低且密度降低。&#xA;也就是說假設同樣份量的汽油被吸出油管並霧化到空氣中，但是這時通過的空氣份量少了，&#xA;於是油的佔比(濃度)就提高了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;油氣濃度控制，對於大部份的汽車駕駛來說可能比較陌生，&#xA;因為一般來說只有在可能比較注重性能的車款，才可能會在比較隱密的某個角落，&#xA;出現有可被駕駛員控制的油氣濃度控制器。&#xA;可是在飛機上，油氣濃度控制可是一個經常會需要被調節的東西，&#xA;以至於和油門擺在一起成為駕駛員伸手最容易控制的位置(&lt;em&gt;雖然比起油門，它的位階還是明顯低一些&lt;/em&gt;)。&#xA;為什麼呢？除了有時候可能因為需要長距離飛行而刻意調低油氣濃度以提高燃油效率之外，&#xA;最主要的原因還是因為飛機的飛行高度變動範圍太大的緣故。&#xA;當飛機的飛行高度愈來愈高，吸入的空氣壓力和密度也會愈來愈低&#xA;(&lt;em&gt;即便可能有增壓器的幫忙，進氣的壓力與密度仍然是隨高度逐漸降低的，只是趨勢比較平緩些&lt;/em&gt;)，&#xA;那麼汽缸內氧氣的含量也是逐漸降低。&#xA;這時候對於地面上正巧足夠的油氣濃度在高空中就會顯得過濃，&#xA;造成很大一部份並不能夠參與燃燒而被浪費掉，&#xA;因此通常來說就會需要隨著飛行高度的變化而不斷調整供油濃度。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;下圖(&lt;em&gt;Figure 4&lt;/em&gt;)就是 P-51 戰鬥機駕駛艙，&#xA;圖中標記的就是操作頻率最高的三個控制器的位置：&#xA;油門(飛機上可能更喜歡叫「節流閥」)、螺距、與油氣濃度控制器。&#xA;通常在正常飛行的姿勢下，駕駛員的右手握著雙腿中間的操縱桿，而左手就放在節流閥上面。&#xA;上面的照片可能對一般並不熟悉飛機駕駛艙的人來說顯得不容易看清楚，&#xA;那麼下圖(&lt;em&gt;Figure 5&lt;/em&gt;)就是三個主要控制器的模型，&#xA;雖不完全是與上圖同一個零件，但是對於初次認識飛機上的控制器的人來說已是足夠理解了。&#xA;這控制器上有三個把手可以往前推或往後拉，&#xA;最左邊那個把手最大的那根桿就是節流閥，也就是通俗所稱的油門，往前推則油門加大；&#xA;最右邊紅色把手的桿就是油氣濃度控制桿，往前推則油氣濃度高；&#xA;中間的桿是用來控制螺旋槳螺距與轉速，可以理解為與汽車上的排檔桿作用相同，&#xA;往前推則螺旋槳轉速高、即檔位低。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-13/fig4-1-p51-cockpit.jpg&#34; alt=&#34;fig4 1 p51 cockpit&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 4. P-51 戰鬥機座艙內的油門控制器位置 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_4&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_4&#34; title=&#34;View footnote.&#34;&gt;4&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-13/fig4-2-throttle.jpg&#34; alt=&#34;fig4 2 throttle&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 5. 戰鬥機油門控制器模型 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_5&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_5&#34; title=&#34;View footnote.&#34;&gt;5&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_總結&#34;&gt;總結&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;解釋完化油器的基本原理與相關的操作邏輯，其實在實務產品上還有一些其它的細節就不深入探討了。&#xA;比如說突然猛加油門的時候，汽油因為慣性的緣故還來不及被增量吸入，而導致瞬間油氣過稀的問題等；&#xA;或者在倒飛的時候如何使附掛小油箱能夠正常工作的問題等等。&#xA;為了這些問題，其實在實用的化油器上面可能還打了許多相關的補丁&#xA;(&lt;em&gt;當然廉價或早期產品可能就沒有了，所以老車突然大油門的操作可能會導致熄火&lt;/em&gt;)，&#xA;但是也仍有許多東西它只能一定程度的改善而無法完全處理好，例如如果要精確控制每次吸入的燃油量的話。&#xA;而這些方方面面的問題與補丁都在昭示著化油器最大的根本性問題：穩定性不足，不容易精細控制。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;化油器本身的簡單和使用門檻低的特性，&#xA;使得在人類技術積累還不足的時代可以立刻承擔使活塞發動機能夠工作的關鍵角色，&#xA;但是當人類不斷在性能、燃油經濟性等方面吹毛求疵的時候，它的瓶頸限制就逐漸顯露出來了。&#xA;這就是為什麼後來噴霧注射會逐漸取代化油器的原因了。&#xA;雖然成本和技術難度都提高，但是它靈活且精準，在電腦和感測器的作用下，&#xA;每次噴多少油或甚至不噴油等就都是精確可控的。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;footnotes&#34;&gt;&#xA;&lt;hr/&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_1&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_1&#34;&gt;1&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Carburetor&#34;&gt;Carburetor&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_2&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_2&#34;&gt;2&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-9---%E5%8A%9F%E6%95%88%E5%88%86%E6%9E%90---%E8%B5%B0%E5%85%A5%E7%8F%BE%E5%AF%A6/&#34;&gt;活塞引擎 9：功效分析 之 走入現實&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_3&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_3&#34;&gt;3&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-10---%E5%8A%9F%E7%8E%87%E5%B7%94%E5%B3%B0/&#34;&gt;活塞引擎 10：功率巔峰&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_4&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_4&#34;&gt;4&lt;/a&gt;. &lt;a href=&#34;https://www.combatsim.com/htm/2010/02/p51dmustang/p51d-mustang-flight-1-review.htm&#34;&gt;P-51D Mustang Product Info&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_5&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_5&#34;&gt;5&lt;/a&gt;. &lt;a href=&#34;https://www.myminifactory.com/object/3d-print-saitek-quadrant-p-47-bracket-levers-93798&#34;&gt;3D Printable Saitek Quadrant - P-47 Bracket &amp;amp; Levers by Wayne Dickinson&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>活塞引擎 12：追求效率，阿金森與米勒</title>
      <link>http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-12---%E8%BF%BD%E6%B1%82%E6%95%88%E7%8E%87%E9%98%BF%E9%87%91%E6%A3%AE%E8%88%87%E7%B1%B3%E5%8B%92/</link>
      <pubDate>Sat, 22 Feb 2025 10:48:50 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-12---%E8%BF%BD%E6%B1%82%E6%95%88%E7%8E%87%E9%98%BF%E9%87%91%E6%A3%AE%E8%88%87%E7%B1%B3%E5%8B%92/</guid>
      <description>&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在用了幾集的篇幅追逐大功率和爆發力之後，這次要轉換個心情，&#xA;從另一個視角來看看在給汽油引擎增加燃油效率的巧思。&#xA;這次要介紹的是在現代才開始逐漸實用化的，大幅提升燃油效率的設計概念：&#xA;Atkinson 和 Miller 動力結構。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這次要介紹的這兩種設計思想，其實目的都是在解決同一個問題：活塞引擎的膨脹率！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;傳統(即 Otto 型式)汽油發動機有一個蠻大的結構性損失，因為活塞行程距離固定的關係，其壓縮和膨脹是對稱的。&#xA;在我往期的分析內容 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_engine-analysis-basics&#34;&gt;[&lt;a id=&#34;_footnoteref_1&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&#xA;就已經可以明顯看出一個現象，&#xA;氣體被加熱之後明顯具有更大的膨脹能力，其能夠膨脹的體積比加熱前被壓縮的程度明顯超出一截。&#xA;然而因為活塞、連桿、和曲軸等機械的結構特性和運作方式的原因，&#xA;造成總是有最後一段的膨脹力沒辦法被捕捉利用的結果，&#xA;再參考我往期的分析內容 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_engine-analysis-real&#34;&gt;[&lt;a id=&#34;_footnoteref_2&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_2&#34; title=&#34;View footnote.&#34;&gt;2&lt;/a&gt;]&lt;/sup&gt;&#xA;就能知道，&#xA;被這麼眼睜睜的看著放走的能量可能佔到 8.5% 的比例；&#xA;意思就是說如果我們能想個辦法把這些能量給捕捉下來的話，那麼最多可以給發動機帶來約 9% 的效率增長，&#xA;對比人們採用的各種增進效率的其它技術以及其所能之改進幅度，這種概念如果能夠實現的話肯定效益菲淺！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;那麼這個想法概念如何成為實際的方案呢？這就得看那些機械天才們的奇思妙想了！&#xA;然而各種天馬行空的想法與設計，其概念與目標是一樣的：&#xA;&lt;strong&gt;讓氣體可以充份膨脹；讓活塞在膨脹行程可以跑的比壓縮行程更遠！&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_阿金森atkinson&#34;&gt;阿金森(Atkinson)&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-12/fig1-1-atkinson-engine-1882.gif&#34; alt=&#34;fig1 1 atkinson engine 1882&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 1. Atkinson engine, 1882 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-atkinson&#34;&gt;[&lt;a id=&#34;_footnoteref_3&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_3&#34; title=&#34;View footnote.&#34;&gt;3&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-12/fig1-2-atkinson-engine-1887.gif&#34; alt=&#34;fig1 2 atkinson engine 1887&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 2. Atkinson engine, 1887 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_3&#34; title=&#34;View footnote.&#34;&gt;3&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這種方案最早是由 James Atkinson 在 1882 年 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_3&#34; title=&#34;View footnote.&#34;&gt;3&lt;/a&gt;]&lt;/sup&gt; 所實現出來的，&#xA;所以被稱為阿金森循環。&#xA;其核心原理是使用巧妙的機械結構設計，直接讓活塞在不同的行程中移動不一樣的距離，&#xA;根本性的提供壓縮和膨脹行程兩個不一樣的行程距離，直接解決所有的問題！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;不過我想稍微熟悉發動機的人可能已經發現這個方案的最大缺點了，&#xA;其複雜的機械結構和龐大的體積(當然都是相對於經典的 Daimler 四行程結構來說)，&#xA;使得在特別是交通工具上的應用存在嚴重的劣勢。&#xA;我想這應該就是為什麼這種結構明明早在 1882 年就已被發明，&#xA;卻直到現代才在車輛領域有所實際應用的原因&lt;strong&gt;之一&lt;/strong&gt;吧；&#xA;更別說在航空領域更是從來就沒見過這種東西！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_米勒miller&#34;&gt;米勒(Miller)&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-12/fig2-1-miller-engine.png&#34; alt=&#34;fig2 1 miller engine&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 3. Miller engine &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_4&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_4&#34; title=&#34;View footnote.&#34;&gt;4&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這種方案最早是由 Ralph Miller 在 1957 年所實現出來 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-miller&#34;&gt;[&lt;a id=&#34;_footnoteref_5&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_5&#34; title=&#34;View footnote.&#34;&gt;5&lt;/a&gt;]&lt;/sup&gt;&#xA;，所以被稱微米勒循環。&#xA;其結構與傳統四行程發動機完全一模一樣，只不過改變了進氣閥門的開關時機，就這麼完成了所有的工作！&#xA;在通常一般的四行程運作中(暫不考慮汽門正時，只以完全理想情況來說)，&#xA;進氣行程活塞走到底的時候，進氣閥就關起來了，而米勒則讓它維持開啟狀態久一點。&#xA;在原本應該要是壓縮的行程中，進氣閥在大約開始的 20% ~ 30% 行程時間裡都是開啟的，&#xA;因此會有好一部份油氣被反向從進氣閥給推出去；&#xA;然後後面的步驟就與傳統四行程完全一樣了，一切照舊。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;就是這麼簡單的一個改動(當然是相對於已經既存的大量四行程設計來說)，達到了壓縮率與膨脹率不同的效果，&#xA;使膨脹行程的膨脹率大於壓縮行程的壓縮率一截。&#xA;於是這個方案的優點就非常明顯了，與阿金森形式相比沒有那麼多複雜的結構，也不用面對結構體積膨脹及如何緊湊化的問題，&#xA;甚至於可以大量沿用許多早已實現多年且非常成熟的既有設計和相關實驗資料，&#xA;而所需要改變的東西僅僅只是進氣門開關的時機而已。&#xA;因此米勒式的發動機結構在現代被大量採用在許多「需要」的應用上。&#xA;至於既然這種設計這麼簡單純粹，為什麼直到 1957 年才被發明出來呢？&#xA;這就是我們後人才能夠問出來的事後諸葛亮式的疑問了！&#xA;這就好比在 Otto 之前，你能想出來在燃燒之前先把空氣壓一壓再燒比較好嗎？&#xA;又好比在迴紋針被發明出來之前，你能想的到原來鐵絲可以這樣繞一繞就能賣錢嗎？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;不過米勒動力結構還有一個缺點。&#xA;因為它並沒有像阿金森那樣設計機械結構，壓縮行程中活塞的實際移動距離是不變的，&#xA;僅以改變汽門開關時間的手段來達到目的，而這導致了有一部份油氣會在進入汽缸後再被反向推回油管。&#xA;首先這導致管道內的油氣不斷來回移動，除了使燃油濃度在控制上更加複雜外(對於非缸內直噴來說)，&#xA;如果前面有增壓器的話，更會導致增壓器的回壓來回動盪，&#xA;如果再剛好增壓器工作強度不足則更可能使氣體在增壓器內反向倒流，形成喘振！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;對於這個問題在理論上有簡單的解決方法，&#xA;比如我正常的米勒設計是延遲進氣門關閉時間，那我如果改成提早關閉進氣門呢？&#xA;在進氣行程才走到 70% ~ 80 % 的時候就先關閉汽門，然後後面照舊，&#xA;這樣有效的壓縮行程同樣縮小了，卻不會造成油氣回流的問題。&#xA;這種想法確實有用，也確實有人這麼做，只不過實現上有些困難挑戰性。&#xA;回過頭來看一下一般常見的汽缸頭氣閥和管道如下圖(&lt;em&gt;Figure 4&lt;/em&gt;)，&#xA;一般的氣閥設計可以很有效的抵抗缸內高壓，&#xA;但如果外面管路壓力比缸內壓力還大的話，就只能全靠那根彈簧來支撐了，&#xA;而這正是採用提前關閉進氣門方案所需要面對的情況，&#xA;可能也是米勒當時為什麼寧願讓油氣回流也要採用延遲關閉進氣門方案的原因吧！&#xA;最終採用提前關閉進氣門的方式來實現米勒循環的方案並非不可行，但可能會需要重新設計進氣門的結構。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-12/fig2-2-valves.jpg&#34; alt=&#34;fig2 2 valves&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 4. 汽缸頭的閥門和進氣與排氣管特寫 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_6&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_6&#34; title=&#34;View footnote.&#34;&gt;6&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_觀念澄清&#34;&gt;觀念澄清&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;網路上有很多相關文章和影片，在介紹米勒或阿金森這些運作方式的時候，&#xA;都喜歡說「它們縮短了壓縮油氣時的活塞行程，降低了壓縮比，因此提高了效率！」&#xA;其實從前面的介紹來看，還真不能夠說這種解釋錯了，但是我並不喜歡這種說法，因為它會使人感到困惑：&#xA;「以前不是說提高壓縮比可以增加效率嗎？&#xA;不是那個什麼廠啊什麼廠的還強調他們把壓縮率提高到多少，所以提升了燃油效率嗎？&#xA;怎麼現在降低壓縮比也增加效率了？&#xA;那麼到底是提高壓縮比能增進燃油效率？還是降低壓縮比可以增進燃油效率啊？搞得好亂啊！」&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;我想如果是從本系列文章一路看過來的讀者，到這裡已經知道箇中奧妙了！&#xA;其實根本&lt;strong&gt;重點不在於降低壓縮比，而是增加膨脹比&lt;/strong&gt;；至於壓縮比則是實際上文絲未動。&#xA;對於增加效率來說，當然壓縮比是愈大愈好。&#xA;不論是阿金森還是米勒的方案，都是取來一個壓縮比更大的汽缸，&#xA;然後在此基礎上去縮減壓縮時的活塞有效行程，減少壓縮比。&#xA;但這樣一來一回之下其實最終&lt;strong&gt;壓縮比並沒變動，而是膨脹比增加了&lt;/strong&gt;；&#xA;是膨脹行程的增加而使得氣體膨脹的能量能被更加完整的捕捉下來，從而提高效率。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;所以不論阿金森或米勒、或可能存在的其它方案，&#xA;核心原理都是靠著增加膨脹週期的活塞行程距離來增加燃油效率。&#xA;那麼為什麼就能這麼篤定壓縮比不會變動呢？壓縮比肯定不會有變化。&#xA;因為壓縮比如果實質的降低了，那麼燃燒效率也會降低，&#xA;而且可能降低的幅度更甚於增加膨脹比所帶來的好處 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;，&#xA;因此沒有腦袋正常的設計者會想要無緣無故去降低實質壓縮比。&#xA;那麼為什麼不增加壓縮比呢？&#xA;增加壓縮比確實可以大幅改善效能，而且其實大家無一不想提高壓縮比，耐何提高不了。&#xA;因為汽油的化學性質擺在那，再提高下去就要爆震了 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_2&#34; title=&#34;View footnote.&#34;&gt;2&lt;/a&gt;]&lt;/sup&gt;！&#xA;最終的重點就是，不論任何複雜的機械結構方案還是各種天花亂墜的動畫演示，&#xA;現在你知道它們其實&lt;strong&gt;根本沒有變動壓縮比，而是延伸了膨脹行程，增加了膨脹比。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_缺點軟肋&#34;&gt;缺點軟肋&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在前面的介紹中不知道有沒有發現一件事？&#xA;Atkinson 動力結構早在 1882 年就被發明出來了，甚至還比 Daimler 的汽油引擎早一年。&#xA;如果要說阿金森的結構比較花俏而質疑其實用性的話，那麼 Miller 的方案也在 1957 年就出來了。&#xA;那為什麼在直到最近十餘年的時間，才開始在大眾視野見到使用了這些動力結構方案的產品出現呢？&#xA;這就要說到這些動力方案的缺點了……&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;最直接肉眼可見的缺點就是此類發動機體積會比別人稍大一些，&#xA;這是因為為了要延伸活塞膨脹行程的長度而導致汽缸會比較長的結果。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;第二個缺點是發動機馬力較低。&#xA;其實在往期文章 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_engine-more-power&#34;&gt;[&lt;a id=&#34;_footnoteref_7&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_7&#34; title=&#34;View footnote.&#34;&gt;7&lt;/a&gt;]&lt;/sup&gt;&#xA;就有提及這類機械結構的缺點。&#xA;為了能夠更加完整的捕捉氣體膨脹的動力，而增加了活塞在膨脹行程的行程長度，&#xA;但是我從前也實際計算過 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;，&#xA;在氣體膨脹過程的尾端其實壓力已經處在低檔，推動活塞的力量已然不多，是真正處在強弩之末。&#xA;因此這類發動機的曲軸轉速會受到限制而降低，其降低的原因主要有二：&#xA;其一是因為受制於活塞移動速度，更長的活塞行程自然導致曲軸轉速下降 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_7&#34; title=&#34;View footnote.&#34;&gt;7&lt;/a&gt;]&lt;/sup&gt;；&#xA;其二就是上面提到的，因為氣體壓力在尾端的推動力已經所剩不多 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;，&#xA;推力不足自然就推不快了。&#xA;無論如何，轉速降低的結果就是讓發動機的馬力同樣下降，因此不論是採用了阿金森還是米勒方案的發動機，&#xA;其相比於同體量同排量的其它發動機一定是馬力比別人低的。&#xA;這些結果又再體現了那句話：&#xA;&lt;strong&gt;功率和效率往往是互相衝突的兩個指標！&lt;/strong&gt; &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_engine-power-efficiency&#34;&gt;[&lt;a id=&#34;_footnoteref_8&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_8&#34; title=&#34;View footnote.&#34;&gt;8&lt;/a&gt;]&lt;/sup&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;此外這種延長了膨脹行程的發動機還使得另一項東西的地位顯得有些尷尬，那就是排氣渦輪！&#xA;回顧前篇才介紹過的排氣渦輪 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_engine-turbocharger&#34;&gt;[&lt;a id=&#34;_footnoteref_9&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_9&#34; title=&#34;View footnote.&#34;&gt;9&lt;/a&gt;]&lt;/sup&gt;&#xA;，&#xA;它最大的優勢就是不需要額外耗費發動機的動力就可以自己運作。&#xA;然而這項優點的背後，其實是來自於使用了那些原本無法被汽缸活塞擷取而被放走的能量作為驅動力的結果。&#xA;反正那些動力不拿來使用的話也只是浪費排掉，因此才造成了排氣渦輪好像可以像永動機一樣自己動起來的樣子。&#xA;但是現在可好了，延長了膨脹行程的發動機可以更大程度的捕捉到這些能量，&#xA;給活塞汽缸自己是得到了更多動力沒錯，但是留給排氣渦輪的排氣動力就只剩老弱殘兵了。&#xA;因此觀察當前車市應也能發現此一現象，&#xA;那些裝備了排氣渦輪設備的發動機基本看不到使用阿金森或米勒的運作結構，&#xA;而採用了阿金森或米勒運作方式的發動機基本不會同時裝上排氣渦輪增壓設備；&#xA;如果非得需要增壓的話，那麼多半採用的也是軸驅增壓。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_發展應用&#34;&gt;發展應用&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;像米勒或阿金森這樣的結構雖然提高了燃油效率，但在功率輸出表現上卻佔劣勢，&#xA;使得這類發動機更加適合的是需要高效穩定輸出功率的應用場合，比如發電機。&#xA;然而在需要運動能力和爆發能力的交通工具應用領域上就顯得很吃虧了。&#xA;你總不會希望在需要加速超車的時候、或者需要加速逃命的時候，一腳油門踩下去結果發動機還沒力吧！？&#xA;再加上曾經的油價相比現在廉價許多，對於這點效能的提升往往並不被人看重，&#xA;反而它的功率和性能表現不佳這點倒是讓人無法忽略。&#xA;因此就讓這些想法概念雖然誕生的早，確總是遭到雪藏冷落的命運了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;既然如此這般，已經可以理解為什麼這類型發動機在過往不受待見，&#xA;但為什麼又在最近十來年突然就出現在大眾視野，開始普及了呢？&#xA;這主要歸功於時代環境的變化。&#xA;在油價高漲的現今，加上越發嚴苛的環保要求，因此燃油效率愈來愈受到重視，&#xA;使研發人不斷想方設法絞盡腦汁要從各方面提升效率。&#xA;最後則是油電複合動力車輛的出現與普及給它掃清了最後一道障礙。&#xA;在油電複合車上，內燃機與電機共同承擔車輛所需的動力，&#xA;在短暫需要大功率的時候可以依賴電馬達更多的輸出，&#xA;因此比較能夠容忍米勒和阿金森型式帶來的馬力減損，並更加看中它們的燃油效率。&#xA;特別是那些在中國大陸稱為「插電混動」式的車輛，推進基本只靠電馬達，&#xA;而內燃機則在絕大多數時候只是一個充當發電機的供電角色，&#xA;那麼自然它的爆發力不足這件事就無傷大雅，反而它能以較高的燃油效率穩定工作這點特性顯得更加吃香。&#xA;所以才造成了這麼一個結果，這些早已被發明出來卻一直不受待見而被雪藏的技術，&#xA;在複合動力車輛盛行的當代卻得以撥雲見日，迎來能夠一展長才的時刻。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;說完了汽車，那飛機呢？&#xA;很不幸的，這種動力結構在航空器的領域上很難得到發展的空間！&#xA;因為飛機對於重量是非常斤斤計較的，阿金森和米勒式的發動機雖然燃油效率是比一般傳統活塞內燃機高了不少，&#xA;但是體積重量都比同排量傳統汽油引擎微幅增加，然而馬力卻更低。&#xA;那麼為了要支撐一架飛機飛上天，就得選用更大的引擎，於是這重量又更大了。&#xA;更大的重量帶來的負擔和更多的油耗，可能比不過它省下來的油之外還得倒賠！&#xA;因此這類發動機目前為止在航空的領域並沒有它的一席之地。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;footnotes&#34;&gt;&#xA;&lt;hr/&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_1&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_1&#34;&gt;1&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-8---%E5%8A%9F%E6%95%88%E5%88%86%E6%9E%90---%E5%9F%BA%E7%A4%8E%E5%8E%9F%E7%90%86/&#34;&gt;活塞引擎 8：功效分析 之 基礎原理&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_2&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_2&#34;&gt;2&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-9---%E5%8A%9F%E6%95%88%E5%88%86%E6%9E%90---%E8%B5%B0%E5%85%A5%E7%8F%BE%E5%AF%A6/&#34;&gt;活塞引擎 9：功效分析 之 走入現實&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_3&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_3&#34;&gt;3&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Atkinson_cycle&#34;&gt;Atkinson cycle&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_4&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_4&#34;&gt;4&lt;/a&gt;. &lt;a href=&#34;https://www.vwvortex.com/threads/volkswagens-1-5l-miller-cycle-engine-how-does-it-work.9453465/&#34;&gt;Volkswagen’s 1.5L Miller Cycle Engine: How Does it Work?&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_5&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_5&#34;&gt;5&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Miller_cycle&#34;&gt;Miller cycle&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_6&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_6&#34;&gt;6&lt;/a&gt;. &lt;a href=&#34;https://forum.jorsindo.com/thread-2571777-1-1.html&#34;&gt;規格表數據解密！教你看懂規格表沒說的事！&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_7&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_7&#34;&gt;7&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-10---%E5%8A%9F%E7%8E%87%E5%B7%94%E5%B3%B0/&#34;&gt;活塞引擎 10：功率巔峰&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_8&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_8&#34;&gt;8&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-7---%E5%8A%9F%E7%8E%87%E8%88%87%E6%95%88%E7%8E%87/&#34;&gt;活塞引擎 7：功率與效率&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_9&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_9&#34;&gt;9&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-11---%E6%B8%A6%E8%BC%AA%E5%A2%9E%E5%A3%93/&#34;&gt;活塞引擎 11：渦輪增壓&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>活塞引擎 11：渦輪增壓</title>
      <link>http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-11---%E6%B8%A6%E8%BC%AA%E5%A2%9E%E5%A3%93/</link>
      <pubDate>Mon, 17 Feb 2025 19:46:00 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-11---%E6%B8%A6%E8%BC%AA%E5%A2%9E%E5%A3%93/</guid>
      <description>&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這次要來說說增壓裝置的話題。&#xA;渦輪增壓如今早已不是什麼稀奇罕見的高科技產品，在許多民用房車上都能見到它的身影，&#xA;其廣泛流通的程度甚至早已成為尋常可見的東西。&#xA;但有沒有想過，就這麼小小的一個附加裝置竟然能夠大幅度提升汽車引擎的動力，&#xA;其提升程度幾乎讓所有其它技術改進方案在它的面前都成了小弟。&#xA;本篇我就要來聊聊在活塞引擎上加入渦輪增壓的話題。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_高空的稀薄空氣&#34;&gt;高空的稀薄空氣&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;若是回到最初在航空領域上面的應用則又是另一番光景，&#xA;它在航空飛機上開始的故事倒不是為了增加馬力什麼的，而是為了一個很卑微又很現實的需求：&#xA;希望上了空氣稀薄的天空時，動力能夠不要衰弱的太慘！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;飛機上了高空發生什麼事情呢？&#xA;我們知道愈往高空走這空氣愈加稀薄，翻譯成我們分析發動機時聽得懂的用語，&#xA;就是高度愈高則氣壓愈低、密度愈低、溫度也愈低&#xA;(以上幾點至少在人類飛機一般正常能夠飛到的高度內是如此)。&#xA;若拿起在前篇 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_basic-analysis&#34;&gt;[&lt;a id=&#34;_footnoteref_1&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&#xA;使用過的分析方法來分析發動機在如此環境下的性能表現，&#xA;就會發現當進氣時氣壓愈低，則發動機的功率輸出也愈低，&#xA;其功率降低的幅度大約與吸氣壓力降低的比例相同。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;然而情況卻並不僅止於此。&#xA;當氣壓降低的時候，空氣的密度也同樣在降低，&#xA;這表示汽缸一次吸入的氣體雖然體積是一樣的，但是氣體總質量降低了。&#xA;這有什麼問題呢？&#xA;氣體的量降低了就表示連帶內含的氧氣份量也降低，&#xA;也就是說真正能夠參與氧化反應的燃料量也會同樣下降，&#xA;如果在高空和在地面一樣噴入同樣份量的汽油的話，那麼其中一大部份顯然並不能得到與氧結合的機會，&#xA;也就是說許多的燃料會被平白浪費掉！&#xA;當然我們通常不會這麼蠢，通常駕駛員會相應的降低油氣混合比例，反正多噴的油也是浪費。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這麼一套下來的結果，在高空氣壓降低本身已經能使發動機的輸出功率降低，&#xA;空氣密度的降低又使得我們必須得少噴點油，便再進一步下調動力輸出。&#xA;最終發動機功率與飛行高度的變化關係整理如下圖(&lt;em&gt;Figure 1&lt;/em&gt;)所示。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;admonitionblock tip&#34;&gt;&#xA;&lt;table&gt;&#xA;&lt;tbody&gt;&lt;tr&gt;&#xA;&lt;td class=&#34;icon&#34;&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Tip&lt;/div&gt;&#xA;&lt;/td&gt;&#xA;&lt;td class=&#34;content&#34;&gt;&#xA;&lt;em&gt;Figure 1&lt;/em&gt; 採用與前篇 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt; 相同的計算方式，&#xA;採用理想條件 9 倍壓縮比的計算案例參數，&#xA;隨動的變數只有吸氣時的空氣狀態變化&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_2&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_2&#34; title=&#34;View footnote.&#34;&gt;2&lt;/a&gt;]&lt;/sup&gt;&#xA;，&#xA;以及隨同吸氣密度的變化等比調整升溫幅度。&#xA;並且為了更好的比較幾個不同參數隨高度而變化的幅度，各參數並不是以原始值的大小來繪製圖表，&#xA;而是表示以與相對於地面高度時的值的比例。&#xA;例如圖表顯示氣壓在約 8000 公尺高度下的壓力約為 0.4，&#xA;意思是指該高度下的壓力只有高度 0 時氣壓的 0.4 倍。&#xA;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;/tbody&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-11/fig1-1-altitude-profile.png&#34; alt=&#34;fig1 1 altitude profile&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 1. 發動機功率與高度變化趨勢&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;從上面的圖表可以觀察出，如果不考慮其它手段的輔助，&#xA;發動機的功率在飛行高度來到 3000 公尺時就只剩下一半了，到了 9000 公尺時只剩下兩成。&#xA;當然這只是單純只看發動機的功率表現變化，至於飛機的具體升限還得由飛機整體的綜合設計來決定，&#xA;例如動力在扣掉飛行基本所需之後究竟還「多餘」了多少、又例如機翼本身在地面和高空的性能表現如何等等；&#xA;不過在本篇將只聚焦在發動機的性能影響上面就是了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;既然飛行高度愈高則發動機功率直落，那麼我們該怎麼辦呢？&#xA;顯然現代的我們知道人類對此問題的解決辦法，就是在高空給發動機製造一個高壓的進氣條件，&#xA;而對於這個方案我們所需要的就是一個小附加裝置：增壓器。&#xA;有了增壓器的存在，在高空稀薄的大氣中飛行，它能夠吸入大量空氣然後加壓空氣，&#xA;壓縮後再把空氣送進汽缸內，再之後就是我們已經知道的事情了。&#xA;空氣壓縮器的作用效果在於，如果說它能將進氣的壓力給增加個 3 倍(當然假設密度也是同等上升)，&#xA;那麼就能讓發動機在 6000 公尺高度上的表現和地面上相差不大；&#xA;換句話說，飛機的升限能夠因此更加提高，而發動機在那樣高空的性能表現依然不俗！&#xA;(&lt;em&gt;當然這是只看發動機的情況，至於整機的性能還和飛機上很多其它東西在高空的表現有關。&lt;/em&gt;)&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_渦輪增壓器簡介&#34;&gt;渦輪增壓器簡介&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;其實壓縮機有許多種不同原理與形式的實現，&#xA;甚至於前面好幾篇在解說的活塞汽缸其實也是壓縮器的一種實現方式，&#xA;不過在本篇我將只專注於離心渦輪壓縮機的內容。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-11/fig2-1-turbo-compressor.jpg&#34; alt=&#34;fig2 1 turbo compressor&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 2. 離心渦輪增壓器 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_3&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_3&#34; title=&#34;View footnote.&#34;&gt;3&lt;/a&gt;]&lt;/sup&gt; &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_not-same-device&#34;&gt;[&lt;a id=&#34;_footnoteref_4&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_4&#34; title=&#34;View footnote.&#34;&gt;4&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-11/fig2-2-radial-turbine-impeller.jpg&#34; alt=&#34;fig2 2 radial turbine impeller&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 3. 離心渦輪的葉輪 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_5&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_5&#34; title=&#34;View footnote.&#34;&gt;5&lt;/a&gt;]&lt;/sup&gt; &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_4&#34; title=&#34;View footnote.&#34;&gt;4&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;上圖(&lt;em&gt;Figure 2&lt;/em&gt;)這東西就是渦輪壓縮器，因為形狀酷似蛙牛的關係，也有人暱稱它較小蛙牛。&#xA;其內部最重要的，也是唯一會活動的主要零件，就是上圖(&lt;em&gt;Figure 3&lt;/em&gt;)被稱為「葉輪」的零件。&#xA;當葉輪高速旋轉起來(以上圖(&lt;em&gt;Figure 3&lt;/em&gt;)的葉輪來說是逆時鐘旋轉)，&#xA;中心會從前方吸入外界的空氣到葉輪內，然後空氣被葉輪推動著一起旋轉起來。&#xA;空氣在旋轉的過程中會一路往外圈被推著跑，&#xA;最後被推送到最外圈的環狀通道內被收集起來，整流過後集中從一處切線方向的出口吹出去。&#xA;至此完成空氣在增壓器內的流動過程。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;稍微仔細點說明其中原理，空氣在從葉輪中心往外圈的路程上會受到兩股力量的作用，&#xA;一個是切線方向的加速力，一個是徑向的離心力。&#xA;徑向離心力(如下圖 &lt;em&gt;Figure 4&lt;/em&gt; 的綠色箭頭所示)作用在空氣上除了推動空氣往外圈跑之外，&#xA;也是這時候空氣被壓縮的主要力量來源。&#xA;另一邊沿著繞圓的切線方向(如下圖 &lt;em&gt;Figure 4&lt;/em&gt; 的藍色箭頭所示)的力作用在空氣身上，&#xA;使得吸入的空氣被加速跟著繞圓旋轉；&#xA;而且因為空氣同時一直在順著徑向方向往外圓移動，所以不斷會有新來的空氣需要被加速旋轉起來。&#xA;這個加速的力道就是物理圓周運動中的「科氏力」，而其之反作用力同時也是葉輪旋轉的最大阻力來源。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-11/fig2-3-impeller-flow-out.png&#34; alt=&#34;fig2 3 impeller flow out&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 4. 氣流在葉輪內的流動方向 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_impeller-flow-ref&#34;&gt;[&lt;a id=&#34;_footnoteref_6&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_6&#34; title=&#34;View footnote.&#34;&gt;6&lt;/a&gt;]&lt;/sup&gt; &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_4&#34; title=&#34;View footnote.&#34;&gt;4&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;當空氣從葉輪最外圍離開的時候，其不只被進行了一定程度的增壓，&#xA;還同時帶有與葉輪尖端速度相同的切線方向速度，速度相當高。&#xA;空氣離開葉輪後就會進入外面的環狀通道，&#xA;這個通道的作用除了收集氣體使其最後從一個固定的方向流出之外，&#xA;還同時具有將剛離開葉輪的高速氣體減速的任務。&#xA;因此這個環形通道又被稱為「擴散器」，空氣在這裡急遽減速的結果又會造成一波升壓，&#xA;主要原理為擴散器將氣體的動能轉換為壓力的結果。&#xA;這一切都走完之後，最後才將流速適中的高壓空氣從環形通道的一個出口&#xA;(或在大型壓縮機上面可能有數個對稱的出口)離開壓縮機。&#xA;因此總體而言，空氣被壓縮主要發生在兩個地方，一個是在葉輪上面受離心力的作用而被壓縮，&#xA;另一個是在進入環形擴散器的時候被大量削減動能而增壓。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;前面提到空氣在流經葉輪時產生的反作用力是葉輪旋轉的阻力主要來源，&#xA;那麼為了克服這個阻力，我們就會需要有額外的動力來提供葉輪旋轉的能量。&#xA;這點很重要，但有關這一部份的動力來源暫且保留，留待後面再做解說。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_渦輪膨脹器&#34;&gt;渦輪膨脹器&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;離心渦輪其實挺有趣的，同樣的一個東西既能被用作壓縮器使用，也能拿來作為膨脹器使用。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;什麼是膨脹器呢？要把空氣膨脹不是直接將高壓空氣釋放出去就好了嗎？&#xA;當然所謂膨脹器的目的並不只是讓氣體膨脹而已，&#xA;而是希望能夠捕捉蒐集氣體在膨脹的時候所對外做的功以為我們所用，這才是膨脹器真正的目的；&#xA;否則若非如此，要讓氣體膨脹只要將高壓氣往低壓處釋放即可！&#xA;其實這樣的東西我們應該是很熟悉的，比方說本系列主題一直在探討的活塞汽缸就同時既是壓縮器也是膨脹器，&#xA;活塞汽缸組在膨脹行程也是擔負著捕捉燃氣膨脹降壓的過程中所釋放的功的作用。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-11/fig2-4-impeller-flow-in.png&#34; alt=&#34;fig2 4 impeller flow in&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 5. 作為膨脹器使用時，氣流在葉輪內的流動方向 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_6&#34; title=&#34;View footnote.&#34;&gt;6&lt;/a&gt;]&lt;/sup&gt; &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_4&#34; title=&#34;View footnote.&#34;&gt;4&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;當離心渦輪作為膨脹器使用時，一切幾乎都是一模一樣，只是方向反著來而已。&#xA;高壓氣首先從原來的出口送入環形通道內，然後高壓氣從環狀通道內側的狹縫高速降壓吹出，&#xA;在導流片的作用下以切線方向高速衝擊葉輪，成為推動葉輪的作用力。&#xA;接著氣體順著葉輪的徑向流道流向葉輪中心，在這整個過程中同樣會產生科氏力，&#xA;這個科氏力繼續提供葉輪旋轉的動力，同時讓空氣在這路程上繼續減速(切線方向)、降壓。&#xA;最後已經得到一定程度膨脹的氣體從葉輪中央的出口，也就是作為壓縮器使用時的那個入口處吹出。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;最終濃縮全部的結果，只要記得離心渦輪既可以作為壓縮器使用、也可以作為膨脹器使用即可，&#xA;其進出口、動能、壓力等等幾乎都是互相對稱的，基本可以互相套用。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_離心渦輪性能特性&#34;&gt;離心渦輪性能特性&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;不像往復式活塞那樣，離心渦輪基本只有一個主要的移動零件，而且還是平滑連續移動的(旋轉)。&#xA;只要零件質量和受力分佈夠平均，幾乎可以放手用力拉高轉速，&#xA;所以常見離心壓縮機能以上萬、甚至十幾二十萬 RPM 的轉速在工作；&#xA;而轉速愈快，當然壓縮空氣的能力也就愈好。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這樣離心壓縮機是不是性能就沒有上限了呢？非也！&#xA;離心機葉輪的轉速最終會受制於空氣音速的限制，當外緣速度達到音速的時候，&#xA;就會開始遭遇超音速流場特有的震波問題，也就是所謂「音障」。&#xA;白話來說就是你得付出更多倍的力氣去推動維持葉輪旋轉，但是提升的效果卻微乎其微，不合算！&#xA;因此&lt;strong&gt;離心壓縮機的最大轉速受限於音速&lt;/strong&gt;。&#xA;觀察現實，那些尺寸(葉輪直徑)愈大的離心機其極限轉速愈低，&#xA;而那些能跑幾十萬轉的離心機則都是小型的機器，符合此概念。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這裡還要補充一個可能常見的誤區。&#xA;音速其實只是擺在所有關卡的最後一個大關，並不是說實際上只存在這麼一個關卡，&#xA;而其實許多平價的離心壓縮機甚至可能在被音障這個關卡困擾之前，就先被前面關卡給卡住了！&#xA;比如說軸承是否能夠承受如此高的轉速？該如何潤滑？特別是有些離心機很可能還是工作在高溫的環境下。&#xA;又比如說在高速旋轉之下，零件的結構強固程度如何？會不會撐不住離心力就先自己爆炸了？！&#xA;葉輪質量分佈是否足夠均勻？氣動外型是否足夠平均？軸心的加工與配置是否足夠精準？&#xA;否則高速轉一轉可能就先把自己給轉歪變形了！&#xA;還有葉輪和外殼之間照理說應該要保持某種氣密性的，可是因為兩者的相對移動速度實在太高了，&#xA;類似活塞環、橡膠墊什麼的方法並不實際，因此只能留個不讓兩者接觸的縫隙在那裡&#xA;(這點可以仔細觀察 &lt;em&gt;Figure 2&lt;/em&gt; 和 &lt;em&gt;Figure 14&lt;/em&gt;)。&#xA;這個縫隙如果能夠造的愈小，肯定漏氣就愈少、性能就愈好，&#xA;但是具體能夠造得多小而不會在高速旋轉中碰在一起呢？&#xA;以上這些小魔王都是基於技術上的困難，並非不能夠解決，&#xA;但也確實考驗精密製造與裝配水準，以及願意投入多少成本有關。&#xA;於是那些改裝過渦輪增壓組件的汽車駕駛們一定有察覺到一件事：&#xA;這小小的一顆渦輪，拆開來看也好像沒什麼東西，但怎麼就賣得這麼貴啊？！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_壓縮能力&#34;&gt;壓縮能力&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;既然是壓縮機，我們當然關心它的壓縮能力如何？&#xA;對於這類空氣壓縮機的壓縮能力，一般看的是壓縮機入口和出口壓力的比值，&#xA;並且注意這裡用的壓縮比是&lt;strong&gt;壓力&lt;/strong&gt;壓縮比，而不是在從前我們可能更加熟悉的&lt;strong&gt;容積&lt;/strong&gt;壓縮比！&#xA;一般來說&lt;strong&gt;離心壓縮機的最大壓縮能力大約為 3.5 倍左右的壓縮比&lt;/strong&gt;。&#xA;當然這個數字是一個非常非常粗略的數字，並且這個數字不只是粗略大約而已，&#xA;實際應用中的壓縮機也會因為不同的設計、和不同的工作狀態，而有不同的性能表現。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;除了細節的設計和製造工藝之外，在根本原理上決定離心壓縮機壓縮能力的主要因素為：&#xA;葉輪的&lt;strong&gt;半徑&lt;/strong&gt;與&lt;strong&gt;轉速&lt;/strong&gt;。&#xA;大的壓縮機雖然尺寸大了好像能產生較強的離心力，但是轉速上限卻變小了；&#xA;或者小的壓縮機雖然看起來好像不能產生多大的離心力，但是它卻可以容許更高的轉速上限。&#xA;因此造成了一個有趣的結果：&lt;strong&gt;離心壓縮機不論尺寸的大小，其極限壓縮能力大約都在 3.5 倍上下！&lt;/strong&gt;&#xA;不論是一般常見大小的車用壓縮機、還是航模使用的超小型壓縮機、或者是像戰鬥機上面用的那種大型壓縮機，&#xA;它們的最大壓縮倍率都是差不多在同一個水平。&#xA;當然這裡說的是理論上限，至於實際上的壓縮比可能會更低，&#xA;比方說設計和製造條件不足以至於無法轉太快、製造工藝不佳導致的漏氣和摩擦問題，&#xA;或者應用時的上下游工況不匹配、或是提供壓縮動力的動力源不足等等，&#xA;都會導致無法達到理論上的壓縮比。&#xA;通常對於一般家用車(當然是指有增壓的款式)，其增壓比約在 1.2 ~ 1.5 左右，&#xA;比較強調性能的車款才有大約 2 ~ 3 倍的壓縮比表現；&#xA;當然這些只是一般常見的通常數字供參考，並非絕對。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;quoteblock&#34;&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;同樣是壓縮比，但是以往我們認知的都是體積壓縮比，可是在渦輪增壓機上面的數字卻計算的是壓力壓縮比。&#xA;為什麼渦輪壓縮機的壓縮比算的是壓力比，而不是像活塞汽缸一樣計算體積壓縮比呢？&#xA;或者為什麼活塞汽缸標示的都是體積壓縮比，而不採用壓力壓縮比呢？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這是源自於測量的方式而導致的結果，在活塞汽缸的設計上，&#xA;我們可以很方便的透過計算汽缸的幾何尺寸和活塞行程，就能得知體積對應關係；&#xA;但是如果想要知道壓力關係的話，就得使用比較複雜的氣體方程式去做計算，&#xA;並且不同油氣混合條件下的相關參數還是不一樣的，計算不容易也不準確。&#xA;相對的對於離心壓縮機來說，流體是連續不斷的從前面進入、從後面離開壓縮機，&#xA;要如何才能得知進出氣體的體積關係呢？也不是不能，但是方案複雜的多，準確性也不容易控制；&#xA;反而如果要得知壓力比，就只要在進出口各放一個壓力計就可以了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這就是為什麼兩種壓縮機會採用不同的壓縮比計算基準的原因了。&#xA;而我們如果需要比較兩者的性能相關數據的話，就不要忘了對兩者的壓縮比進行一些必要的轉換計算。&#xA;如果套用理想氣體和絕熱條件，則兩種壓力比的轉換關係如下：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ 壓力壓縮比 = 體積壓縮比^{1.4} \]&#xA;\[ 體積壓縮比 = 壓力壓縮比^\frac{1}{1.4} \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_離心渦輪的優勢&#34;&gt;離心渦輪的優勢&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;3 倍多的壓縮比看似沒什麼特別之處，&#xA;特別是相比於活塞汽缸結構的壓縮機動不動就能提供幾十倍壓縮的情況之下，&#xA;不過離心壓縮機能在特定用途上成為最佳選擇顯然是因為具有一些特殊優點。&#xA;渦輪機的優勢主要在於：&lt;strong&gt;體積小、幾乎無振動、以及容許的氣體通量大&lt;/strong&gt;。&#xA;這些優點使得在工作轉速範圍常保持在較高區間的航空發動機上，&#xA;離心渦輪機比起像是雙螺桿式等等其它形式的壓縮機更加傑出優秀，&#xA;至少你不會看到活塞形式的增壓機；&#xA;否則我們可以想像一個附掛的助力設備，竟然是一個體型和結構與主要活塞發動機沒差多少的東西，&#xA;那得是個什麼光景？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;振動的部份好理解，只有一個葉輪在動，還是順向穩定旋轉，自然沒有像往復式活塞那樣的振動問題。&#xA;至於小體積的優勢其實是其氣通量大的一體兩面，&#xA;因為容許的通量大，自然不需要用上太大的壓縮機就夠了；&#xA;不過這個大和小都是對比之下的結果，並不是真的拿一個超小的渦輪就可以把超大量氣體無限灌下去！&#xA;當然渦輪壓縮機比起其他壓縮機也同樣存在一些問題，否則哪還有其它形式壓縮機存在的空間呢？&#xA;比方說你家裡的冷氣機就不會選用離心渦輪作為壓縮機，&#xA;否則你可能光在家裡看電視都能隨時聽見飛機起飛的聲音！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_小渦輪與大渦輪&#34;&gt;小渦輪與大渦輪&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;既然這樣，那麼大的離心渦輪和小的離心渦輪差別在哪裡呢？差別在於允許流通的氣體通量不一樣！&#xA;愈大的離心渦輪可以容許更大體積的氣體在短時間內快速通過，白話說就是吞吐量大。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;如果使用了不能妥善匹配氣流條件的離心渦輪，比如說在氣體流通量很大的地方卻只安裝一個很小的壓縮機，&#xA;那麼就會產生兩個主要的問題。&#xA;首先是大量氣體要通過一個窄口(小壓縮機的通道相較狹小)本身就會導致&lt;strong&gt;較大的管道阻力&lt;/strong&gt;，&#xA;情況嚴重的時候甚至能因為無法即時消化氣流，而在壓縮機前面產生迴堵並升壓。&#xA;其次是在壓縮機內氣流流通速度過大時，會使葉輪的極限轉速降底，從而導致&lt;strong&gt;壓縮率下降&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_發動機流程圖&#34;&gt;發動機流程圖&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-11/fig4-1-process-flow.png&#34; alt=&#34;fig4 1 process flow&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 6. 加入增壓器的發動機工作流程圖&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這裡我想要介紹從另一個角度來看發動機的方法，就像是上圖(&lt;em&gt;Figure 6&lt;/em&gt;)所示這樣。&#xA;這張圖使用像是工廠流水線的方式，交代了空氣從進入發動機核心部件直到離開的處理流程，&#xA;就好像工廠流水線從原料經過一道道加工步驟直到變為成品那樣；&#xA;只不過這次被加工的東西是發動機的工作流體，也就是空氣。&#xA;像這樣的圖片在本篇、以及計劃中的其它未來主題內都還會再出現許多次。&#xA;我之所以在解說某些事情的時候喜歡使用這種表現形式的流程圖，&#xA;是因為它隱藏了大量的實際結構和實現細節，讓我們可以保留專注力去注意某些真正重要的上層邏輯；&#xA;人生經驗經常讓我知道，&lt;strong&gt;有的時候事情不要看的那麼請楚，反而可以看的更清楚！&lt;/strong&gt;&#xA;甚至這邏輯即使是在程式設計上面也是一樣的！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-11/fig4-2-process-details.png&#34; alt=&#34;fig4 2 process details&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 7. 比較完整交代細節的發動機工作流程圖&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;當然若只看這樣簡單的流程圖有時候也太簡單，&#xA;如果再把本篇會關心的能量供受邏輯也一起畫上去的話，那麼這張圖應該會變成上圖(&lt;em&gt;Figure 7&lt;/em&gt;)這樣子。&#xA;其中的藍色箭頭表達空氣也就是工作流體的加工步驟和移交順序，&#xA;空氣接連通過兩個壓縮工序並混合燃料。&#xA;為什麼是兩個壓縮機呢？&#xA;第二個壓縮機就是我們過往所熟知的汽缸，而汽缸和活塞的工作其一就是壓縮空氣；&#xA;而前一個被凸顯的壓縮機就是本篇的主題，也就是發動機附掛上去的那個渦輪增壓器了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;空氣(&lt;em&gt;其實可能包含混合了燃料的燃氣，為了簡化敘述以及方便解說，以下會以「空氣」簡代稱之&lt;/em&gt;)&#xA;經過兩道壓縮之後，接下來經過燃燒的過程，空氣在此處理工序完後會升溫升壓。&#xA;高溫高壓的空氣隨後被送至膨脹處理流程，在這個工序裡空氣會減壓膨脹，&#xA;然後膨脹器會捕捉氣體在過程中所做的功。&#xA;至於膨脹完之後就是剩下的垃圾，也就是廢氣的排放了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這裡還可以發現一件事，膨脹器和壓縮器其實是同一個零件，都是汽缸和活塞，&#xA;但是在這被切割成是兩個不同的工作處理模組；&#xA;事實上其實連燃燒器在活塞發動機裡面也都是在同一組機械結構內。&#xA;這是因為這兩個步驟做的應該是兩件不同的工作，只不過剛好能用同一組零件來完成，&#xA;但是事實上若不理會一些副作用的影響的話，&#xA;也並不是不能真的像圖示一樣用獨立的兩個汽缸去分別完成這兩件事。&#xA;這就好比是一般企業組織常見的「財務」和「出納」其實是兩個不同的工作劃分，&#xA;各自負擔不同的責任，在許多大企業裡面也是由不同的職員來擔任工作，&#xA;然而在很多中小型企業或組織單位裡面承擔這兩個職務的往往其實是同一個人，是一樣的道理。&#xA;這個現象也表明了像這樣的流程邏輯圖更加看重的是流程和處理邏輯，而非實際的實現細節！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;空氣處理流程看完之後來看看能量傳遞情況。&#xA;許多的處理工作是需要消耗能量的，於是綠色的箭頭交代了這些能量的來源、和供應的方向。&#xA;可以看到第二道壓縮器所使用的能量源頭就是來自於膨脹器，不過中間經過了一個飛輪來過手轉交，&#xA;同時飛輪也負責將膨脹器產生的多餘動力向外輸出，成為發動機對外的功率輸出出口。&#xA;那麼第一道壓縮器的驅動動力來自於哪裡呢？&#xA;這當中有一些內容值得探討，不屬於本節範圍，因此在這裡就暫時先留個空白；&#xA;如果不告訴你一個具體的答案會導致渾身難受的話，&#xA;你可以先理解為它後面有一個搖柄需要有一個人用手去轉它！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;上面這第二張流程圖(&lt;em&gt;Figure 7&lt;/em&gt;)比較詳細些，但有點太過詳細，&#xA;所以後面再用到基於該圖的衍生圖解的時候，可能會更加精減隱藏一些不需要過度被關注的內容。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_增壓器的角色&#34;&gt;增壓器的角色&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;理解了本篇所介紹的流程圖之後，回過來看看增壓外掛在整個活塞發動機裡面到底擔當了什麼樣的角色？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;從流程圖的呈獻可以發現，增壓器和汽缸的工作就是一模一樣的，目的都是在壓縮空氣；&#xA;那麼用兩個壓縮器來壓縮空氣是不是顯得好像有點疊床架屋的感覺？&#xA;兩個壓縮器可以合併起來變成一個嗎？為什麼要分開成兩個呢？&#xA;這想法的確可行，只是實現上會產生一些問題，這就先留給讀者自己去思考，&#xA;待到下一個動力系列文章時我再來解說。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;因為額外增加了一個壓縮器，發動機原始的核心組件所需要的空氣會先經過它後被壓縮過一遍，&#xA;這樣當汽缸吸氣的時候，吸入的空氣就都是經過增壓後，壓力和密度都已有所提升的空氣。&#xA;這讓航空飛機在空氣稀薄的高空仍然能夠維持還算足夠的發動機功率輸出，&#xA;也讓地上爬的汽車和水裡游的海船可以用較小體量的發動機，爆發出原本大體量發動機才有的動力輸出。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_中冷器&#34;&gt;中冷器&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;可能還有些讀者會發現，在前面我似乎刻意迴避了一個關於壓縮機的問題，那就是壓縮升溫的副作用。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;壓縮會導致升溫，這點我在以前就解釋過 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;，&#xA;這也同樣是為什麼汽油發動機的壓縮上限約為 10 倍壓縮比的原因，&#xA;就是因為再繼續升溫下去可能會導致油氣不預期自燃的結果。&#xA;那麼我們用了兩道壓縮手續串聯，這壓縮程度肯定得超過容許上限吧？難道就沒有油氣自燃的問題嗎？&#xA;加入了額外的增壓工作確實會導致油氣自燃產生爆震的問題，&#xA;而對此問題的解決方法就是在中間加入一個冷卻器來給空氣降溫。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-11/fig6-1-process-intercooler.png&#34; alt=&#34;fig6 1 process intercooler&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 8. 加入中冷器的發動機工作流程圖&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;如上圖(&lt;em&gt;Figure 8&lt;/em&gt;)所示，在兩道壓縮工序之間插入了一個冷卻器，用來給升溫的空氣進行降溫處理。&#xA;多了這道手續之後，氣體的溫度降低下來，就能讓空氣俱備足夠的條件讓後面的汽缸再繼續進一步加壓。&#xA;這個冷卻器的原理和外觀長相基本與過往介紹過的液冷發動機冷卻器是基本一樣的東西&#xA;&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_cooling-and-exhaust&#34;&gt;[&lt;a id=&#34;_footnoteref_7&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_7&#34; title=&#34;View footnote.&#34;&gt;7&lt;/a&gt;]&lt;/sup&gt;&#xA;，在有些設計上兩者甚至還被安放在一起，&#xA;唯一的主要差別就是其中一個是用來冷卻發動機冷卻液，而另一個是用來冷卻從增壓器出來的熱空氣而已。&#xA;為了區別兩個冷卻器，&#xA;因為後者是被安插在流程邏輯的中間位置，可能因此就被大家叫作「中冷器」(Intercooler)。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;其實冷卻器被安插在兩個壓縮工序中間這件事並不是很少見的設計，比如許多火力發電廠都有這種設計。&#xA;&lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-8---%E5%8A%9F%E6%95%88%E5%88%86%E6%9E%90---%E5%9F%BA%E7%A4%8E%E5%8E%9F%E7%90%86/#increase-efficiency-by-cooling&#34;&gt;以前我就曾解釋過&lt;/a&gt;&#xA;&lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&#xA;，給氣體降溫可以減少需要投入給壓縮器消耗的能量，&#xA;自然可以提高總體效率，產出更多淨功餘裕。&#xA;理想上最好的情況是壓縮機本身可以充份散熱，一邊壓縮一邊散熱，&#xA;進行一場溫度從頭到尾都不會變化的等溫過程，然而實際情況是這種東西現實上就很難被實現出來。&#xA;因此人們還是必須得處理壓縮散熱的問題，那麼應該在哪個地方安插散熱最好呢？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;理論上最理想就是在開始壓縮前就先給空氣散熱降溫，但是現實上實在太過窒礙難行！&#xA;畢竟溫度從來都是自然的由高溫往低溫散，&#xA;一百度的東西只要放著就能散熱，一千度的東西散熱的更快；&#xA;但是吸氣入口的溫度大約就是室溫 30 到 -10 度左右，要如何把它降到零下 100 度呢？&#xA;那麼換個位置等壓縮工序都全部做完之後再來散熱就好做了吧？&#xA;是的，此時空氣的溫度都已經升高了幾百度，確實散熱容易了，但是也失去了意義！&#xA;前面壓縮機該消耗多少功都已經先消耗完了，現在才來散熱不只沒有實際意義，&#xA;反而現在降下來的溫度等會到燃燒時要消耗掉更多的燃料才能夠補回來，偷雞不著還蝕把米！&#xA;因此折衷下來，將散熱的工序安插在兩個壓縮器中間就是最為妥當的辦法。&#xA;前面壓縮器給空氣的升溫效應使得散熱工作得以順利且有效的進行，&#xA;散熱降溫的結果又能幫助下一個壓縮工序減少所需要的能量消耗；&#xA;此外在汽油引擎上可能更重要的作用是降低氣體溫度，&#xA;使在後面的壓縮工序裡(汽缸內的壓縮)不至提前自燃，解決因增壓導致的爆震問題，&#xA;於是事情就這麼成了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;另外中冷器作為一個普通的熱交換器，它的散熱能力也是有限的，&#xA;至少不可能讓散熱出來的空氣回到像吸氣的時候那樣的溫度。&#xA;散熱器處理完的空氣肯定還是有點溫度的，只是不那麼熱燙罷了。&#xA;那麼這就導致一個問題，對於後面的活塞汽缸來說，&#xA;其吸氣時的空氣溫度肯定是比沒有前置增壓器的情況下高得多，&#xA;如果還是維持以往設計的汽缸壓縮率的話，就會產生爆震問題！&#xA;因此&#xA;&lt;strong&gt;搭載了增壓器的發動機款式，其汽缸的壓縮比一般會被設計調降，通常壓縮比會被降至 7 左右&lt;/strong&gt;；&#xA;當然這排除了那些事後才改裝上增壓器的情況！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_增壓器動力來源&#34;&gt;增壓器動力來源&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;前面一直空白了一個問題，那就是增壓器的動力從何而來？&#xA;之所以沒有立刻解說這個部份，也是因為這不僅僅只是由誰來提供動力的問題而已，&#xA;而是隨著這個動力提供的來源不同，還會導致發動機整體特性有所變化，&#xA;實在難以在前面「順便」兩三句就能夠交代明白！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;簡單總括來說，增設的壓縮機動力來源有三：馬達驅動、曲軸驅動、與排氣驅動。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_馬達驅動&#34;&gt;馬達驅動&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;首先來看電馬達驅動，這種方式最為簡單明瞭，用一顆電動馬達來驅動壓縮機運轉。&#xA;好處是增壓器與發動機核心部件完全脫勾，彼此的交互影響最低；&#xA;缺點就是需要額外提供電源來供應壓縮機使用。&#xA;壓縮空氣本身需要消耗可觀的能量，&#xA;因此雖然同為附屬裝置，可是增壓器對能量的需求與什麼泵浦什麼的設備相比那都不在一個層級。&#xA;那麼這就要求採用此種方案的車輛必須俱備強有力的供電系統，可能還需要個大電池，&#xA;而這並不是一般汽車或航空器能夠合理負擔的情況，因此一直以來這個方案極少被應用在實用的發動機上。&#xA;不過對於近年興起的油電複合車來說，這個方案確實成了一個可被考慮搭配使用的方案，&#xA;這點晚點再談。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這種方案因為目前相當罕見，也就少聽過什麼廣傳的通俗說法，&#xA;因此我就暫且自己望義生字稱呼其為「電驅增壓」好了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_曲軸驅動&#34;&gt;曲軸驅動&lt;/h3&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-11/fig7-1-compress-by-shaft.png&#34; alt=&#34;fig7 1 compress by shaft&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 9. 由曲軸驅動增壓器的發動機工作流程圖&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;使遇曲軸(或飛輪亦同)動力來驅動增壓器是一個歷史相當悠久的成熟方案，&#xA;因為從曲軸偷動力來驅動週邊裝置這件事情，大概從汽油發動機問世以來就已經存在了。&#xA;各種油泵水泵、磁電機、水箱風扇、車用空調等等一直以來都大量採用曲軸的動力來驅動，&#xA;雖然這會使發動機的功率輸出被偷走一部份，不過除了冷氣之外的性能減損佔比都是很低的，&#xA;也就不是太重要。&#xA;既然如此，那麼就給發動機曲軸多增加一個負載，用它來驅動增壓器的運轉成為一個可行且便捷的方案。&#xA;這個方案是從增壓器出現在汽油發動機上面開始直到現在都被廣泛使用的最流行方案之一，&#xA;也是二戰時期那些所有裝備了增壓器的戰鬥機裡面幾乎唯一的方案。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;此方案的缺點就是會分走發動機輸出的動力，而且分走的可不是一星半點。&#xA;以二戰時期的戰鬥機來說，增壓器在全速運轉的時候掐指一算可能就得消耗掉約 500 馬力，&#xA;而整個發動機的總功率可能也就 1500 之譜，也就是大約三分之一都給小小增壓器消耗掉了！&#xA;當然也如同往期的分析一樣，&#xA;增加壓縮率同樣會提升發動機功率和效率，總體而言一來一回之下還是很划算的，&#xA;也才使得為什麼這個方案那麼廣泛流行在各種增壓發動機上面。&#xA;當然曲軸驅動模式還有一些其它的優點，不過這得與下面最後一種驅動方式進行比較才行。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;對於這種驅動方案，一般流傳的通俗稱呼叫做「機械增壓」，&#xA;雖然我一直對這種稱呼方式有些意見，合著其它方案難道就不是機械驅動的增壓了？&#xA;其實這個通俗的名稱主要是為了區分下面即將介紹的另一種增壓驅動方案而產生的語言鏈變，&#xA;其完整的形容稱呼應該是「機械驅動式渦輪增壓」；&#xA;不過語言乃約定俗成，如果大眾們都習慣這麼叫，並且也都知道在表達什麼東西，那倒也不能說是什麼大錯。&#xA;只不過我個人還是對此有些微詞，但是用完整的表述好像也太長，&#xA;所以在本文還是就精減稱呼其為「軸驅增壓」好了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-11/fig7-2-me109-compressor-inlet.jpg&#34; alt=&#34;fig7 2 me109 compressor inlet&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 10. Bf109 機頭側邊明顯的發動機空氣吸氣口 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_8&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_8&#34; title=&#34;View footnote.&#34;&gt;8&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-11/fig7-3-benz-db605-compressor.jpg&#34; alt=&#34;fig7 3 benz db605 compressor&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 11. Bf109 所使用的 Benz DB 605 發動機，標示的位置就是配備的離心渦輪增壓器，其中央吸氣口正好對應上圖標示的吸氣口 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_9&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_9&#34; title=&#34;View footnote.&#34;&gt;9&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-11/fig7-4-pw-r2800-compressor.jpg&#34; alt=&#34;fig7 4 pw r2800 compressor&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 12. P&amp;amp;W R-2800 星型發動機也配備了曲軸驅動的離心增壓渦輪，圖片上的標示位置能看到葉輪、以及與曲軸連接的變速齒輪 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_10&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_10&#34; title=&#34;View footnote.&#34;&gt;10&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_排氣驅動&#34;&gt;排氣驅動&lt;/h3&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-11/fig7-5-compress-by-exhaust.png&#34; alt=&#34;fig7 5 compress by exhaust&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 13. 由排氣驅動增壓器的發動機工作流程圖&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;最後一種常見的方案是使用發動機的排氣來推動增壓機的作法。&#xA;能利用排放的廢氣來作為推動力的條件，其實主要來自於：&#xA;活塞發動機排放出去的廢氣本身仍含有相當的壓力能量未被有效攔截。&#xA;這也是往期一直提過的，因為曲軸和連桿的運作特性，&#xA;使得活塞不得不在還未讓氣體充份膨脹的情況下，就得將其排放出去；&#xA;而這些廢氣除了直接放掉之外一直也缺乏妥善利用的方式，&#xA;最多就是將排氣管往機體後面的方向彎曲，使其排氣動能能夠稍稍補貼總推力 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_7&#34; title=&#34;View footnote.&#34;&gt;7&lt;/a&gt;]&lt;/sup&gt;。&#xA;現在可好了，前面就說過離心渦輪可以正反對稱使用，把它卡在排氣管上面就成了膨脹器，&#xA;於是現在就可以充份捕捉原來被大量浪費掉的排氣動力了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這個方案需要使用兩個離心渦輪，一個在前端作壓縮器使用、一個在後端作膨脹器使用，&#xA;膨脹器截獲的能量就用來提供壓縮器使用。&#xA;雖然從流程邏輯圖來看這兩者的合作路徑有些遙遠，&#xA;不過在實際的實現上這兩個設備往往就是背貼著背的好鄰居，&#xA;直接共用同一根旋轉軸，還被封裝在同一個結構內成為一個整體，如下圖(&lt;em&gt;Figure 14&lt;/em&gt;)所示。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這種增壓驅動方案一般流傳的通俗說法叫作「渦輪增壓」，&#xA;不過其實我對這種稱呼方式也很有意見就是了，合著其它的增壓都不用渦輪了？&#xA;對於這種增壓方案其實有現成已經流傳的另一種更加貼近詞意的名稱為「排氣渦輪增壓」，&#xA;或者簡稱為「排氣增壓」，而本文也將使用這兩種名稱來稱呼採用這種方案的增壓系統。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-11/fig7-6-turbocharger.jpg&#34; alt=&#34;fig7 6 turbocharger&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 14. 排氣渦輪壓縮機，圖中右邊藍色部份為用來壓縮空氣的部份，而左邊紅色部份為由引擎廢氣吹動的膨脹器 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-turbo-compressor&#34;&gt;[&lt;a id=&#34;_footnoteref_11&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_11&#34; title=&#34;View footnote.&#34;&gt;11&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;由排氣驅動的增壓裝置最大的優點，就是不像曲軸驅動的方案那樣需要吃掉大量的發動機功率。&#xA;排氣渦輪除了會增加些汽缸排氣的背壓阻力之外，幾乎就不影響發動機的運作，還能夠進一步提升發動機性能，&#xA;是一個單從性能數字來看只有優點而沒有缺點的方案，而這也是它的最大優勢之所在。&#xA;因為它使用的是原本被浪費掉用不到的能量來驅動，因此幾乎可以說是白嫖動力，&#xA;對於功率和效率的提升都能提供相當大的幫助。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;但除了帳面上性能的好處之外，排氣渦輪在現實上存在許多缺點(否則哪還有其它增壓形式存在的空間呢)。&#xA;例如使用汽缸排放的廢氣來工作的渦輪膨脹器，會需要面對在高溫環境下運作的問題，&#xA;如此其材料高溫耐受性、軸承耐受度、以及潤滑等相關的問題，&#xA;都會增加在設計上的難度，並提高製造即使用維護的成本。&#xA;除了對機油的性質要求更加嚴苛之外，如果在發動機高功率運轉過後熄火，&#xA;渦輪軸承內部的機油會因為失去油泵的動力而停止流動，在配合上渦輪本身還處於高溫的狀態，&#xA;就容易引發機油焦炭化並造成阻塞的問題。&#xA;所以許多帶排氣渦輪的汽車款式會要求要在熄火之前先原地怠速個幾分鐘就是為此。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;此外在航空飛機上的應用，排氣渦輪以及其相關的設備是比較佔用空間的&#xA;(也許是因為航空發動機的排氣量都是幾十升起跳的原因吧)。&#xA;這項問題在體積本就比較龐大的轟炸機、運輸機等飛機上不是什麼大問題，&#xA;它們經得起發動機尺寸的微幅膨脹，所以這類大飛機都會裝配排氣渦輪增壓設備。&#xA;但是在體積本就比較小巧且機內空間侷促的單引擎戰鬥機上面來說，排氣渦輪就成了沈重的奢侈品，&#xA;因此幾乎所有二戰時期的螺旋槳戰鬥機，使用的幾乎全都是由曲軸驅動的增壓設備，&#xA;只有極其少數體型較大些的戰鬥機才會選用排氣增壓的方案，例如 P-38、P-47 等。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-11/fig7-7-b17-from-below.jpg&#34; alt=&#34;fig7 7 b17 from below&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 15. 著名的 B-17 轟炸機從下方就能明顯見到露在外面的增壓渦輪排氣裝置 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_12&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_12&#34; title=&#34;View footnote.&#34;&gt;12&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-11/fig7-8-b17-turbo-system.jpg&#34; alt=&#34;fig7 8 b17 turbo system&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 16. B-17 排氣渦輪系統結構圖，雖然佔用不少發動機艙空間，但對於這麼大一架飛機來說並沒有什麼太大的影響！ &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_13&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_13&#34; title=&#34;View footnote.&#34;&gt;13&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-11/fig7-9-p38.jpg&#34; alt=&#34;fig7 9 p38&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 17. 也是著名的 P-38 戰鬥機，雖是小型戰鬥機，但雙發雙身的設計也令其俱備足夠的體量和空間，可以容納排氣渦輪系統；其中綠色標註位置為中冷器的空氣進出口 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_14&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_14&#34; title=&#34;View footnote.&#34;&gt;14&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這裡我再補充個小故事。&#xA;以前小時候看到 P-47 戰鬥機的時候就一直有個疑問，&#xA;覺得它的氣動力外型看起來沒啥讓人覺得亮眼之處，還又大又重，&#xA;到底是怎麼就成了二戰經典名機的呢？&#xA;事實上這飛機還真的就和看起來的樣子一樣，又大又重。&#xA;看它的內部結構(&lt;em&gt;Figure 20&lt;/em&gt; 和 &lt;em&gt;Figure 21&lt;/em&gt;)就能發現，&#xA;這主要歸功於為了用上排氣渦輪而加入的增壓器、熱交換器、和相關管道管路所致的結果。&#xA;其操作性能也如同外觀給人的第一印象，有些笨拙，基本不是其它主流單引擎戰機的對手&#xA;(所以後來它更大的用途就成了利用自身載量大，加之皮糙肉厚能夠硬扛傷害的特點，成了極佳的對地支援飛機)。&#xA;然而在上了萬米高空以上的空域，一切就不一樣了！&#xA;當其它有些對手連爬到這個高度都費勁的時候，&#xA;當其它裝了曲軸驅動增壓器尚能一戰的對手先被增壓器給吃了三分之一動力的時候，&#xA;P-47 卻依然保有豐沛的澎湃動力，自然能夠遊刃有餘的對付其他對手，&#xA;於是就這麼成了經典著名的戰鬥機！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-11/fig7-10-p47-and-p51.jpg&#34; alt=&#34;fig7 10 p47 and p51&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 18. 與 P-51 戰機，注意到雖然照片中的 P-47 戰機位在畫面的後方，但仍能明顯展現出其體型比別人大了好幾個尺碼！ &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_15&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_15&#34; title=&#34;View footnote.&#34;&gt;15&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-11/fig7-11-p47-and-others.png&#34; alt=&#34;fig7 11 p47 and others&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 19. 另外一張比較圖比較了 P-47 與其它同樣著名的單引擎戰鬥機的體型大小比較 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_16&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_16&#34; title=&#34;View footnote.&#34;&gt;16&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-11/fig7-12-p47-gas-layout.jpg&#34; alt=&#34;fig7 12 p47 gas layout&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 20. P-47 增壓系統在其內部的排佈圖，可見其佔據了大量空間 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_17&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_17&#34; title=&#34;View footnote.&#34;&gt;17&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-11/fig7-13-p47-turbo-system.jpg&#34; alt=&#34;fig7 13 p47 turbo system&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 21. 另一張 P-47 內部的排佈圖 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_18&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_18&#34; title=&#34;View footnote.&#34;&gt;18&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_增壓引擎特性&#34;&gt;增壓引擎特性&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;如果只看最佳的性能表現數據的話，加上增壓器的作用就是能夠提升一大截的發動機功率，&#xA;用體量小一級的發動機產生出體量大一級才有的動力輸出而已。&#xA;不過實際上遠不只如此單純，增壓器的存在會給發動機的整體產生一些在運作特性上的影響。&#xA;什麼維修保養、耐用度、壓力承受強度之類的東西先撇開不談，&#xA;這裡就只單純探討在性能表現及操作特性上所造成的改變。&#xA;但是其實追根究底，這一切的不同和改變基本全部來自於同一件事：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;&lt;strong&gt;渦輪機的壓縮能力，與渦輪的轉速成正比；轉速愈高，壓縮力愈強，反之亦同。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;也許你會直覺上的覺得「這可不是廢話嗎？」&#xA;但那只是因為現在只是單單只看渦輪本身的這條特性而已，&#xA;才會顯得這件事好像簡單到沒有必要去過度深入；&#xA;然而上面這條原因，以及由其所引發的一系列現象，導致改變了整個帶渦輪增壓的發動機的表現，&#xA;甚至貫穿到在純渦輪的發動機上面所引發的一系列令人頭疼的問題，根本原因都是由這項看似廢話的因素所致。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_非線性動力&#34;&gt;非線性動力&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;掛了渦輪增壓的活塞發動機，其動力控制會較為偏離人的正常直覺反應，導致操作的技術難度提升。&#xA;(&lt;em&gt;不過在當代因為這類發動機都是由電腦來進行實際的底層控制，&lt;/em&gt;&#xA;&lt;em&gt;所以操作的駕駛員可能比較難親身感受到所謂的這種非線性動力反饋特性，&lt;/em&gt;&#xA;&lt;em&gt;因為這些困難基本是體現在控制軟體的設計上面，由相關設計人員先代諸位駕駛者給感受完了。&lt;/em&gt;)&#xA;渦輪增壓發動機的動力反應是非線性的，這點與機車討論區裡面關於碟煞和鼓煞的討論裡能見到。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-11/fig8-1-nonlinear-throttle-power.png&#34; alt=&#34;fig8 1 nonlinear throttle power&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 22. 油門深度與引擎出力之間的關係對應示意圖，其中藍色線段就是線性的對應關係，而紅色為帶增壓器的對應關係&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;先說說線性的反應是什麼呢？&#xA;意思就是採了多少油門，引擎就出多少力；&#xA;全踩下去就是全功率，踩一半就出一半功率踩四分之一就出四分之一功率等等，以此類推。&#xA;而渦輪增壓款發動機卻可能是踩全部出全功率沒錯，但是踩一半的時候可能只有三分之一功率，&#xA;而踩三分之一的時候可能只有或許五分之一的功率，如上面示意圖(&lt;em&gt;Figure 22&lt;/em&gt;)所示。&#xA;這會導致發動機在高功率區間的油門反應異常靈敏，一點點的油門差異可能導致發動機輸出的大幅度變化，&#xA;有點像是你在洗澡的時候想調個合適的水溫那樣；&#xA;而在低功率區間，發動機的動力響應就不太好，可能大踩大放之下發動機卻向個老賴似的反應不靈巧，&#xA;這樣當你突然想要加速逃跑的時候，就會吃點苦頭！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;以上這現象的原因已經先行提點過了，就是肇因於增壓器的壓縮能力浮動所造成的結果。&#xA;不像是活塞汽缸，不論轉速高還是低，壓縮的倍率是一樣的(先撇除汽門正時等而只論理想之分析狀態)，&#xA;而增壓器的壓縮倍率卻會隨著轉速的變化而變動。&#xA;發動機對空氣的整體壓縮率，是由汽缸的壓縮率和增壓機的壓縮率乘積的結果，&#xA;而增壓機的增壓值變動，就使得整體的空氣壓縮程度也是變動的。&#xA;意思就是說在高轉速的時候，空氣壓縮比大，動力輸出可達設計標準；&#xA;但是轉速較低時空氣壓縮比變小，動力輸出會比預期的還弱。&#xA;甚至於當轉速夠低的時候，增壓器沒能夠產生什麼作用，此時壓縮基本全靠汽缸；&#xA;然而我們已知汽缸的壓縮率在設計上就已經被刻意下調了，因此此時動力表現甚至就還不如沒有增壓機的發動機。&#xA;此外在底轉速的區間，增壓器不只沒能幫上什麼忙，其機械結構還增加了吸氣阻力，&#xA;使得整體性能表現還會更加悽慘一些！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;總結而言，帶增壓器的發動機其理想的性能表現區間會體現在較高轉速的時候，&#xA;而低轉速區間是性能較為潺弱的部份，甚至還不及於沒有設計增壓器的發動機。&#xA;此一特性使得增壓款發動機不論是在設計上還是使用上，都會更加側重於高性能部份的表現。&#xA;此外其非線性的動力控制特性會使得操作使用上更加需要技巧和熟練，&#xA;不過在近代電腦控制的發展幫助下，這項特性多半被隱藏在數位控制邏輯的背後就是了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_反應遲滯&#34;&gt;反應遲滯&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;增壓式發動機還有一個討論熱度也挺高的特性，那就是反應遲緩的問題。&#xA;渦輪遲滯的現象特別發生在由排氣所驅動的增壓器上面，主要的表現行為就是當操作加大油門時，&#xA;發動機需要一個反應的時間才能達到所預期的動力狀態，這個反應的延遲就被稱之為遲滯。&#xA;因為這個問題因為被關注的熱度相當高，&#xA;所以直接搜尋相關關鍵詞如「渦輪遲滯」、「Turbo Lag」等，就可以查到很多相關的影片和討論區，&#xA;我這個比較難嵌入影片的地方就不放影片了。&#xA;發動機的具體響應時間在汽車上約為幾秒鐘左右，至於飛機上我就不知道了，我也沒開過這種飛機，&#xA;或許有些剛好有相關經驗的讀者可以提供經驗？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;遲滯產生的根本原因還是同樣的：渦輪的壓縮力隨轉速變動。&#xA;因為由排氣驅動，所以首先發動機得先提高轉速，排氣強度增強後才能提供給排氣渦輪更大的能量輸入，&#xA;這就直接造成渦輪的轉速提升滯後於發動機的曲軸轉速。&#xA;但在排氣強度增加之後，渦輪也會因為葉輪本身的慣性因素，需要一個時間來進行提速，&#xA;於是再進一步加劇其工作狀態反應滯後的程度。&#xA;具體的渦輪反應滯後延遲時間與葉輪的轉動慣量成正相關，通常來說體積愈大的增壓器其滯後情況也愈嚴重。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這個渦輪遲滯的效應和前面所說的非線性輸出是不一樣的，注意別搞混了！&#xA;前者指的是發動機工作狀態與控制輸入(油門)之間的反應速度，後者指的是兩者之間的數值大小對應關係；&#xA;而由排氣所驅動的增壓渦輪則正好二者特性皆有！&#xA;於是渦輪遲滯的因素，成為除了體積與高溫環境耐受性之外，&#xA;讓許多實際應用中寧願接受軸驅增壓渦輪，也不願意選擇排氣增壓渦輪的另一項重要原因。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_各種大小問題與應對方案&#34;&gt;各種大小問題與應對方案&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;至此有關渦輪增壓的原理和主要特性已經介紹完畢，&#xA;最後再來統整一些增壓款發動機由於增壓器的存在而常見的一些問題、現象、以及相關解決方案。&#xA;當然這裡主要著重在設計上的考量，對於使用與保養等相關的部份反而不是我熟悉的領域。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_多級多速&#34;&gt;多級多速&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在汽車上面好像比較沒有這麼複雜，&#xA;但是在看到二戰時期戰鬥機相關數據的時候，常能看到像是「一級一速」、「二級二速」、「一級二速」等等詞語，&#xA;那麼這些是什麼東西呢？又是為了解決什麼樣的問題而存在呢？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;如同最開頭所展示的發動機功率和高度關係圖所展示，以一般離心渦輪能夠提供的增壓幅度來看，&#xA;大概只能夠讓飛機支撐到大約三千至四千公尺左右的高度，那麼那些能爬到一萬公尺以上的飛機是怎麼辦到的呢？&#xA;能爬上萬米高空的飛機通常需要更高的增壓比，一般可以串聯兩個離心渦輪，&#xA;這樣就能提供約 12 倍左右的汽缸前進氣增壓，而這種串聯了兩級增壓渦輪的配置就稱為「二級」增壓。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-11/fig9-1-two-stage-compressor.jpg&#34; alt=&#34;fig9 1 two stage compressor&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 23. 二級增壓器，注意到它有兩個葉輪，能將進入的空氣分兩次接力壓縮 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_two-stage-supercharging&#34;&gt;[&lt;a id=&#34;_footnoteref_19&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_19&#34; title=&#34;View footnote.&#34;&gt;19&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;不過在軸驅渦輪系統上還有個問題。&#xA;如同前面所述，一般設計渦輪增壓都是比較看重高功率時的性能表現，&#xA;但是飛機得要從低速到高速都能用啊！至少飛機得能在低空以低功率條件飛行，至少要能低速起飛降落吧？&#xA;那麼這就會遇到一個問題，增壓器本身需要分走發動機的曲軸動力，&#xA;這在高功率運作時問題不大，但是在低功率運作下就會導致發動機負載沉重，&#xA;要不就是有不容易發動、容易熄火、和油耗偏大的問題，這與汽車掛著空調壓縮機冷車啟動的情況有些相似。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;對此問題，簡單的解決方法就是不要掛那麼強力的壓縮器，或者降低些壓縮器和曲軸的轉速配比，&#xA;簡單來說就是靠著犧牲增壓機的性能來補救發動機在低功率工況下的運作順暢，&#xA;至於缺點副作用我想就無需再多說明了。&#xA;另一種解決方法就是給增壓器也配個變速齒輪，讓渦輪能夠切換與曲軸之間不同的轉速比。&#xA;當然這不需要像汽車排檔那樣複雜的變速箱，一般通常增壓器的變速機構也只需要提供兩種不同的轉速就夠了，&#xA;這就是所謂的「二速」，至於不能提供變速功能而只有一種轉速配比的就叫作「一速」。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-11/fig9-2-two-speed-impellers.jpg&#34; alt=&#34;fig9 2 two speed impellers&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 24. 一個二級增壓器的葉輪傳動結構，其中給第一級葉輪配置了兩組不同齒比的齒輪組可供切換使用 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_19&#34; title=&#34;View footnote.&#34;&gt;19&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;至此就能明白所謂的幾級幾速是怎麼一回事了吧！&#xA;簡單總結而言，一級增壓能使飛機爬高至約三千公尺上下的高度，而二級增壓能使飛機飛至萬米左右的高度；&#xA;二速的調配能使飛機在低功率運轉情況下保有一定的實用性，更使增壓器可以在高空放開手腳賣力工作；&#xA;而通常在汽車上並不會見到這些設計，因為一級一速在大多情況下已經足夠在地面上使用了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_渦輪遲滯&#34;&gt;渦輪遲滯&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;對於排氣驅動的增壓器而言存在油門反應遲滯的現象，這現象在飛機上可能問題不是很大，畢竟天空很寬廣，&#xA;所以比較少見航空發動機對此問題有太多的著墨，至少在活塞發動機上面少被關注。&#xA;但是對於在地面上行走的車輛來說，這問題常常就會讓人困擾了，&#xA;而渦輪遲滯的問題也常常是汽車之所以選用軸驅增壓而捨棄排氣增壓的一項重要因素！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect3&#34;&gt;&#xA;&lt;h4 id=&#34;_降低壓縮機葉輪質量&#34;&gt;降低壓縮機葉輪質量&lt;/h4&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在採用排氣增壓的前提下，從根本上改善遲滯的方法就是要提高渦輪葉輪的提速和降速反應力。&#xA;一項方案是減輕葉輪的質量，質量降低了則其轉動慣量自然也降低，對氣流的反應就能更加靈敏迅速。&#xA;當然降低葉輪質量也會導致葉輪的結構設計受到挑戰，&#xA;所以這方案除會提高對於材料的質量與強度要求，也會提高對於製造加工技術的要求。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect3&#34;&gt;&#xA;&lt;h4 id=&#34;_雙渦輪並聯&#34;&gt;雙渦輪並聯&lt;/h4&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;另一個方案是採用體型較小的渦輪壓縮機，小型葉輪的轉動慣量小，自然能反應更快。&#xA;但是前面也提過，壓縮機太小的話可能會造成無法負荷發動機的氣流流通量需求，並且引發一掛的問題。&#xA;對此問題，一個簡單粗暴的方案就是：一個不夠，就安上兩個一起來唄！&#xA;這就是在汽車上常見雙渦論配置的最主要原因。&#xA;不同於飛機上採用雙渦輪的目的是將它們串聯起來以提供更大的增壓比，&#xA;汽車上的雙渦輪往往是採用並聯的方式以提供足夠的氣通量。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-11/fig9-3-twin-turbo.jpg&#34; alt=&#34;fig9 3 twin turbo&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 25. 使用兩個較小的渦輪增壓機，各自只分擔處理一半的進氣 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_11&#34; title=&#34;View footnote.&#34;&gt;11&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect3&#34;&gt;&#xA;&lt;h4 id=&#34;_大小渦輪串聯&#34;&gt;大小渦輪串聯&lt;/h4&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;另一個方案同樣採用兩個增壓渦輪，不過不是相等尺寸的渦輪，而是採用一大一小的兩個渦輪。&#xA;這樣小的渦輪可以對油門的高低變化提供比較良好的反應速度，而大渦輪可以顧及高功率工況時的壓縮性能。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;當然大小兩個增壓渦輪並不能夠良好的保持同步運作，其效能和增壓比往往是不一致的，甚至差異頗大，&#xA;因此不適合採用並聯共同供氣的組合方式，就如同不同電壓的電池不能並聯起來使用是一樣的。&#xA;對於採用大小雙渦輪的情況一般只能採用串聯起來成為兩級增壓的方案，&#xA;在油門變化比較劇烈的時候主要由小渦輪來承擔快速反應工況變化的作用，&#xA;而在穩定大功率的工況下則主要依靠大渦輪來提供足夠的增壓效果。&#xA;如同前面所述，在氣體通量大的時候，小的渦輪的增壓倍率會降低；&#xA;當然只要這個渦輪不至於體積過度嬌小的話，是還不至於導致氣體堆積回堵，&#xA;就只是增壓比會降低，不能夠提供如預期規格上的增壓比而已。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect3&#34;&gt;&#xA;&lt;h4 id=&#34;_混合曲軸驅動方案&#34;&gt;混合曲軸驅動方案&lt;/h4&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;既然由曲軸驅動的增壓器比較沒有這麼多奇奇怪怪的問題，那麼就產生了一種由混合動力驅動增壓渦輪的方案。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這個想法的其中一項具體方案，是給發動機配備兩個增壓渦輪，&#xA;一個由排氣驅動而另一個由曲軸驅動，然後將兩個增壓器串聯使用。&#xA;好處是兼顧了不同轉速下的引擎反應速度，而且兩個渦輪之間的運作較具有獨立性；&#xA;壞處就是使增壓相關設備結構更大，重量也更大。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;另一個實現方案是由排氣和曲軸兩個動力來源來共同驅動同一個增壓渦輪，&#xA;好處是重量小一些，反正在車輛用途上一般也不需要用到兩級增壓。&#xA;但是兩個動力源的偶合和干擾性比較大，以相關的變速機構和匹配設計的複雜化作為代價，&#xA;並不一定就是個美好的方案。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect3&#34;&gt;&#xA;&lt;h4 id=&#34;_混合電力驅動方案&#34;&gt;混合電力驅動方案&lt;/h4&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這個方案與前一個混合動力方案相似，只不過前一個方案是使用曲軸動力作為第二個混合動力來源，&#xA;而這個方案則是使用電動馬達作為第二動力來源。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;方案的實現方式挺簡單，給排氣渦輪增加一個電動馬達就基本完成了。&#xA;當需要提高發動機輸出功率的時候，就第一時間先用電力驅動馬達立刻提高渦輪轉速，&#xA;在排氣強度慢慢追上來的空檔暫時性的補貼動力供應，以減少渦輪遲滯效應。&#xA;當然在發動機功率暫時性減小的時候，同樣可以使用電力短暫維持渦輪轉速，&#xA;如果油門很快又回到原先狀態的話就不至於產生動力提升過慢的問題；&#xA;當然如果變成長時間保持在較低的運轉水平下就沒有辦法繼續維持了，&#xA;畢竟這只能暫時性提供原先反應不及的動力而已。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;當然這方案的缺點也是非常明顯，&#xA;採用這個方案的汽車或飛機，需要俱備強大的供電能力、以及大量電力的儲存設備。&#xA;這項缺點直接導致了雖然這個方案看似很簡單很容易，卻數十年來都難以實現在實用的產品上，&#xA;大概要直到近年油電複合式混動車的興起，才給這種電驅渦輪提供了得以實現的平臺。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;不過雖然當代已經存在可以讓這個方案實現的運作平臺(油電複合車)，然而這個電驅方案仍然較少得到關注。&#xA;首先是油電複合車輛多半強調的是經濟性，對增壓渦輪的依賴性倒不是那麼強烈，&#xA;特別是如果要講究短時動力反應的操作情況，則多半是將電力資源直接輸出給驅動輪胎的馬達更加簡單實際有效，&#xA;因此讓這項方案的具體實現直到現在仍為罕見。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect3&#34;&gt;&#xA;&lt;h4 id=&#34;_蓄壓氣瓶&#34;&gt;蓄壓氣瓶&lt;/h4&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這方案按的基本思維邏輯與混合電驅方案一樣，只不過前者使用車輛的電力提供增壓器暫時動力，&#xA;而本方案使用壓縮氣瓶來提供暫時的動力補充。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;當發動機需要提升動力輸出的時候，就先將壓縮氣瓶儲存的高壓氣體釋放出來衝擊渦輪，&#xA;使渦輪能夠不用等到排氣強度提升就可以先獲得加速的動力；&#xA;相反的當動力輸出暫時性下降的時候，也可以使用氣瓶的壓力來暫時性維持渦輪的運轉狀態。&#xA;然後在平時正常的工作條件下，再用曲軸的動力去驅動一個小型壓縮機來給氣瓶補充壓縮氣備用，&#xA;整個邏輯概念就和電驅解決方案是一樣的，只不過由壓縮氣瓶來取代電池的功能而已。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這個方案的總和性能與用來解決同一個問題的幾種相關方案裡面算式綜和條件比較理想的，&#xA;使用氣瓶提供暫時性動力的原理邏輯與用電提供暫時動力是一樣的，&#xA;但是比起能夠提供足夠能量的電池和供電系統來說，氣瓶顯得更輕便小巧的多了；&#xA;要說缺點的話就是需要搭載額外的用來給氣瓶充氣的壓縮機，&#xA;並且相關方案技術比較新穎，相關副作用還沒有被發覺的特別明白。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect3&#34;&gt;&#xA;&lt;h4 id=&#34;_延遲燃燒方案&#34;&gt;延遲燃燒方案&lt;/h4&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;對於解決排氣渦輪暫時性低轉速工作導致的遲滯問題，還有一個可能一般大眾更加熟悉的方案；&#xA;不過一般人熟悉的可能並不是這個方案的名稱和具體運作內容，而是它所產生的副作用，&#xA;也就是讓排氣管爆響、冒火，讓許多人可能會想要當下檢舉噪音污然的所謂「炸街」現象。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這個解決方案面對的情況比較特殊，它並不能夠在發動機提升功率的時候給予更快的反應速度，&#xA;而是特別為了在&lt;strong&gt;暫時性降低動力輸出，並且很快會回復原有輸出水平&lt;/strong&gt;的情況下適用的方案，&#xA;比方說在過彎前減油，出彎後補油的情況下。&#xA;具體實現方式，是由行車電腦分析駕駛員的油門操作行為，&#xA;當電腦判斷應該是暫時性降低動力的時候，就會減少火星塞點火的頻率。&#xA;減少火星塞的頻率，意思就是有的時候汽缸該點火的時候並不會讓火星塞點火&#xA;(至於具體哪次會點火、哪次不點火，則由行車電腦運算和決定)。&#xA;這時沒有點火的汽缸就會做虛功，把混合氣壓縮之後又膨脹回來，什麼事都沒發生，&#xA;然後就從排氣閥給排放出去了，這達到了降低輸出功率的目的。&#xA;未燃燒的混合油氣進入高溫的排氣管，就會在排氣管內被高溫的環境引燃並膨脹，&#xA;於是排氣渦輪仍然能夠得到足夠的氣體壓力推動而維持轉速，&#xA;這樣發動機再次提速的時候，渦輪就不需要再經歷從低轉回到高轉的過程，&#xA;這達到了緩解渦輪遲滯效應的目的。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;看完這個方案的運作原理之後，應該就能了解為什麼有些車子會在放鬆油門的時候，&#xA;從排氣管短暫冒出伴隨火光的砰、砰、砰炸響的原因了吧！&#xA;此外這個方案雖然解決了反應性能上遇到的問題，但是副作用也是非常明顯的，&#xA;費油、燃燒不完全、高噪音汙染、以及讓排氣管和渦輪膨脹器處於惡劣工作環境都是它所造成的結果，&#xA;甚至於也發生過許多在炸街的過程中引燃致火燒車的安全性風險，其中亦不乏高價的性能跑車！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_突然性減油門&#34;&gt;突然性減油門&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在裝備了渦輪增壓器的車輛或飛機上，突然性的增加油門頂多就是發動機來不及反應而產生遲滯的現象，&#xA;但是在突然性減油門的時候，就可能會導致損壞性的災害了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;當突然大幅收減油門的時候，後方活塞發動機對空氣進氣的需求突然減少，&#xA;但前方壓縮機卻可能還沒從相當賣力的工作狀態中消減下來。&#xA;這就造成進氣出現某種程度堵塞在汽缸前到壓縮機中間的管路中，給壓縮機帶來氣體流通的不穩定干擾，&#xA;甚至如果累積了過量的壓力還可能會導致氣體反向衝破，逆向衝出壓縮機。&#xA;這一下正向、一下逆向的氣體流動會給高速運轉中的壓縮機帶來相當大的氣流干擾和振動，&#xA;可以明顯聽見壓縮機運轉發出異音，如同人在孝喘似的，所以又被稱為「喘振」(surge)。&#xA;喘振發生時的氣體來回流動會給壓縮機葉片和軸心帶來強烈的干擾，甚至能造成變形與各種損壞情況，&#xA;是個必須想辦法避免的討厭問題！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;對於曲軸驅動的增壓器來說，因為壓縮機的轉速是與曲軸連動的，&#xA;因此不存在曲軸轉速慢下來但壓縮機還在高轉速的情況，&#xA;因此又可以知道這個問題也是排氣增壓專屬的問題！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;相對於設計了多層壓縮機的噴射飛機發動機而言，在活塞引擎增壓器上解決這個問題的方法簡單粗暴許多。&#xA;既然喘振發生的原因就是短時間內氣體在汽缸和壓縮機之間的管路堆積迴堵造成的，&#xA;那我就在這個管路上裝設一個被動的洩壓閥，當管內壓力過大的時候就會衝開這個閥門，&#xA;將過量的氣體排放出去，以避免發生喘振。&#xA;例如下圖(&lt;em&gt;Figure 26&lt;/em&gt;)是一個實際發動機的增壓器相關管路邏輯圖，&#xA;其中的 Blowoff Value 就是這個洩壓閥。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-11/fig9-4-turbocharged-engine-flow-diagram.png&#34; alt=&#34;fig9 4 turbocharged engine flow diagram&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 26. 渦輪增壓發動機的氣流處理流程圖範例 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_20&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_20&#34; title=&#34;View footnote.&#34;&gt;20&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_轉速過高&#34;&gt;轉速過高&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;同樣又是那句話：「渦輪增壓器的壓縮能力與轉速成正比」。&#xA;這不只導致在發動機低轉速工作條件下增壓效果潺弱的問題，&#xA;在高轉速，特別是需要壓榨馬力的全速模式下，壓縮效果太好也同樣會導致問題！&#xA;當曲軸轉速拉高到某一個程度以上，超出了設計容許的範圍，&#xA;增壓器提供的過強壓縮能力會讓後面的管路、中冷氣、汽缸等設備工作在設計範圍外的高壓條件下，&#xA;如果結構承受不住的話就可能會導致損毀；&#xA;或者即便後面裝置都能承受得住，過度增壓導致的氣體升溫幅度也會更容易引發爆震！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;解決的方案也是同樣簡單粗暴，比照前面的方式在排氣管上裝設一個洩壓閥，&#xA;這樣排氣管提供給膨脹器的氣體壓力受到限制，就能夠限制增壓器的運轉能力了。&#xA;在上圖(&lt;em&gt;Figure 26&lt;/em&gt;)的發動機增壓氣管路邏輯圖中的 Waste Gate 就是這個洩壓閥。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_注水加力&#34;&gt;注水加力&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;作為最後的壓軸，再提一個軍武迷常能在二戰時期戰鬥機上面看到的發動機噴水設計。&#xA;這種設計不論是在軸驅增壓還是排氣增壓條件下都存在。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;二戰時期的多款經典戰鬥機往往都存在一種發動機「注水」的設計，&#xA;也有些強調短暫爆發力的跑車型車輛也裝備了注水的機制，&#xA;這種機制可以用來在短時間內提供超過額定標準的動力輸出，&#xA;不論是在緊急爬升攔截、追擊敵人、或是逃命的時候都很好用；&#xA;但是注水系統的工作原理是什麼呢？為什麼注水能給發動機帶來更強勁的動力呢？&#xA;這裡我就來解釋這個原理。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;首先還是那句話：渦輪增壓器的壓氣能力與轉速成正比。&#xA;因為這個原因，當發動機在額定最高轉速之外稍微超過去試探極限的時候，&#xA;就可能讓內部的氣壓超出發動機能夠承受的範圍。&#xA;造成的結果可能是管道和汽缸的結構強度無法承受過大的壓力，&#xA;也可能是過度壓縮的氣體導致溫度過高，會提前引燃油氣導致爆震，&#xA;或者二者皆有。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;對於上述的第二個問題即氣體溫度過高導致爆震的問題，&#xA;如果我們能夠提供一種方法來給汽缸進行足夠強效的降溫，&#xA;那麼就能夠讓轉速拉高更多，可以提供超額的馬力。&#xA;而對汽缸內進行噴水的作用即是如此！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;是的，這就是水注射的作用，用來給汽缸強力降溫以穩定油氣、控制爆震，&#xA;這樣就能讓發動機超過額定功率輸出了。&#xA;至於噴水會不會導致發動機浸水、鏽蝕等問題？通常來說並沒有什麼影響。&#xA;因為在全功率輸出的工況下，汽缸內的溫度非常高，&#xA;一點點的水噴進去就會直接蒸發變成水蒸氣，然後跟著排氣出去了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在汽缸內噴水除了抑制爆震問題之外，還可以提升熱效率。&#xA;如同本篇前面在解釋中冷器時所解釋過的一樣，在汽缸壓縮空氣之前對空氣進行降溫的話，&#xA;可以減少汽缸壓氣所需要消耗的能量，那麼能夠輸出的淨功自然就多了(因效率增加)，&#xA;也就使得能夠輸出更多的「額外動力」。&#xA;換句話說，汽缸注水的作用其實就等同於一個強力的中冷器，&#xA;只不過這個強力中冷器只在所攜帶的水噴完之前有效而已！&#xA;因此這種能夠短暫允許提供更多動力輸出的裝置，一般都只保留在急切需要的時候才短暫啟用，&#xA;比方說逃命的時候、或者追擊的時候、或者飆速超車的時候。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;既然注水加力的作用時間取決於攜帶的水量，那我帶很多水在飛機上不就可以多開點加力了呢？&#xA;這想法理論上正確，但實務上通常並不會裝設太大的注水加力水箱，本質上這是一個取捨平衡的問題。&#xA;不論是飛機還是車輛，承載能力是有限的。&#xA;你要多帶水，就表示燃料得少帶、或者武器得少掛，何況水可比油重多了，核算一下也許並不划算！&#xA;也因為這種注水提供超級動力的設備也不是平常有事沒事就會開著的東西，&#xA;因此在正常的設計配置下並不會攜帶過多的水在飛機上，大概就是供應合理的緊急動力時間而已。&#xA;另外這個注水設備其實在實務上通常噴的也不是純水，&#xA;在考量蒸發能力和吸熱效果的最佳情況下，通常是將水和甲醇以某種比例混合的液體噴入汽缸內。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;footnotes&#34;&gt;&#xA;&lt;hr/&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_1&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_1&#34;&gt;1&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-8---%E5%8A%9F%E6%95%88%E5%88%86%E6%9E%90---%E5%9F%BA%E7%A4%8E%E5%8E%9F%E7%90%86/&#34;&gt;活塞引擎 8：功效分析 之 基礎原理&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_2&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_2&#34;&gt;2&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Pressure_altitude&#34;&gt;Pressure altitude&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_3&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_3&#34;&gt;3&lt;/a&gt;. &lt;a href=&#34;https://zh.wikipedia.org/zh-tw/%E5%A2%9E%E5%8E%8B%E5%99%A8&#34;&gt;增壓器&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_4&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_4&#34;&gt;4&lt;/a&gt;. 由於相關圖片都是網路上找的，因此不同的圖片描述的並不是同一個渦輪壓縮機！&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_5&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_5&#34;&gt;5&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Radial_turbine&#34;&gt;Radial turbine&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_6&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_6&#34;&gt;6&lt;/a&gt;. &lt;a href=&#34;https://www.mdpi.com/2076-3417/8/11/2207&#34;&gt;Detailed Design and Aerodynamic Performance Analysis of a Radial-Inflow Turbine&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_7&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_7&#34;&gt;7&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-3---%E6%95%A3%E7%86%B1%E8%88%87%E6%8E%92%E6%B0%A3/&#34;&gt;活塞引擎 3：散熱與排氣&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_8&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_8&#34;&gt;8&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Messerschmitt_Bf_109&#34;&gt;Messerschmitt Bf 109&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_9&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_9&#34;&gt;9&lt;/a&gt;. &lt;a href=&#34;https://de.wikipedia.org/wiki/Daimler-Benz_DB_605&#34;&gt;Daimler-Benz DB 605&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_10&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_10&#34;&gt;10&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Pratt_%26_Whitney_R-2800_Double_Wasp&#34;&gt;Pratt &amp;amp; Whitney R-2800 Double Wasp&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_11&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_11&#34;&gt;11&lt;/a&gt;. &lt;a href=&#34;https://zh.wikipedia.org/zh-tw/%E6%B8%A6%E8%BC%AA%E5%A2%9E%E5%A3%93%E5%99%A8&#34;&gt;渦輪增壓器&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_12&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_12&#34;&gt;12&lt;/a&gt;. &lt;a href=&#34;https://en.m.wikipedia.org/wiki/File:B-17F.jpg&#34;&gt;Wikipedia&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_13&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_13&#34;&gt;13&lt;/a&gt;. &lt;a href=&#34;https://airpages.ru/eng/mn/b17_18.shtml&#34;&gt;B-17G. Equipment. Turbo-superchargers&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_14&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_14&#34;&gt;14&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Lockheed_P-38_Lightning&#34;&gt;Lockheed P-38 Lightning&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_15&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_15&#34;&gt;15&lt;/a&gt;. &lt;a href=&#34;https://sobchak.wordpress.com/2012/04/24/article-why-the-u-s-air-force-did-not-use-the-f-47-thunderbolt-in-the-korean-war/&#34;&gt;Why the U.S. Air Force did not use the F-47 Thunderbolt in the Korean War&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_16&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_16&#34;&gt;16&lt;/a&gt;. &lt;a href=&#34;https://www.reddit.com/r/WWIIplanes/comments/152lv5b/i_knew_the_p47_was_big_but_these_comparisons/?rdt=33681&#34;&gt;I knew the P-47 was big but these comparisons really make it stand out&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_17&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_17&#34;&gt;17&lt;/a&gt;. &lt;a href=&#34;https://forum.largescaleplanes.com/index.php?/topic/63697-p-47s-dont-really-have-exhaust-stains/page/2/&#34;&gt;P-47s don’t really have exhaust stains…​&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_18&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_18&#34;&gt;18&lt;/a&gt;. &lt;a href=&#34;http://www.aviation-history.com/republic/p47.html&#34;&gt;Republic P-47 Thunderbolt&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_19&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_19&#34;&gt;19&lt;/a&gt;. &lt;a href=&#34;https://www.enginehistory.org/Turbochargers/Superchargers/2StageSC/2StageSC.shtml&#34;&gt;Two-Stage Supercharging&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_20&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_20&#34;&gt;20&lt;/a&gt;. &lt;a href=&#34;https://de.wikipedia.org/wiki/Motoraufladung&#34;&gt;Motoraufladung&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>活塞引擎 10：功率巔峰</title>
      <link>http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-10---%E5%8A%9F%E7%8E%87%E5%B7%94%E5%B3%B0/</link>
      <pubDate>Tue, 07 Jan 2025 00:40:12 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-10---%E5%8A%9F%E7%8E%87%E5%B7%94%E5%B3%B0/</guid>
      <description>&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;大約在第二次世界大戰時期，飛機的性能突飛猛進，然而性能提升的幅度卻逐漸遭遇瓶頸。&#xA;人們漸漸發現活塞發動機的挖掘潛力逐漸探底，難以再進一步提升功率，&#xA;從而使得性能飛機的發展難以再進一步突破下去！&#xA;那些相關的故事和介紹差不多都講到這裡就沒再繼續解釋下去了，只留下這種含糊其詞的敘述。&#xA;然而到底為什麼呢？看起來好端端的活塞引擎怎麼就提升不了了呢？&#xA;那麼本篇，我就要來解答這樣的疑問，&#xA;這不只是解釋為什麼航空活塞發動機的動力提升遭遇了天花板，&#xA;也是同時讓我們看看人們為了榨出活塞發動機的功率，做出了什麼樣的努力。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;開始繼續深入之前，我要先為本篇的標題做出更加完整些的補充。&#xA;本篇的重點放在提升發動機功率，然而這當中其實是存在很多隱含未述明的條件！&#xA;比方說同樣是活塞發動機，船上的和火車上用的發動機的馬力數字相較之下都無比巨大，&#xA;然而我們卻明白這樣的發動機完全無法被應用在飛機上，&#xA;因為它們不管是尺寸還是重量都是嚴重超標！&#xA;因此若要為本篇的主題做出更加完整的目的要求，那麼應該是：&#xA;在合理可接受的成本與代價的增加幅度內，讓我們盡可能的想辦法去提升發動機的功率輸出；&#xA;甚至於為了達成功率提升的目的，當功率與效率互相衝突的時候，可以適當犧牲效率。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_提高功率的理論原理&#34;&gt;提高功率的理論原理&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ 發動機功率(W) = 單缸單次循環淨功(J) \cdot 汽缸數量 \cdot \frac{轉速(RPM)}{ 60 \cdot 2 } \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;回顧&#xA;&lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-8---%E5%8A%9F%E6%95%88%E5%88%86%E6%9E%90---%E5%9F%BA%E7%A4%8E%E5%8E%9F%E7%90%86/#calc-total-power&#34;&gt;前篇&lt;/a&gt;&#xA;&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_engine-analysis-basics&#34;&gt;[&lt;a id=&#34;_footnoteref_1&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&#xA;的總功率計算式，可以發現要提高總功率輸出的話，關鍵的要素就這三個：&#xA;單缸單次做功能力愈大愈好、汽缸數量是愈多愈好、曲軸轉速是愈高愈好！&#xA;而這三項要素其實還可以再濃縮起來，真正的核心原理其實不過就是：&#xA;&lt;strong&gt;找尋各種辦法使發動機能夠更快速的消耗燃料！&lt;/strong&gt;&#xA;對此言論，我想有些讀者可能會稍微扭歪一下脖子並感到疑惑。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;make-more-power&#34; class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;再回顧更前篇&#xA;&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_engine-power-efficiency&#34;&gt;[&lt;a id=&#34;_footnoteref_2&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_2&#34; title=&#34;View footnote.&#34;&gt;2&lt;/a&gt;]&lt;/sup&gt;&#xA;的內容，&#xA;當我們忽略發動機內部的具體實現細節而只看它是一部黑盒子機器的時候，很多事情反而會更加明朗！&#xA;發動機其實就是將燃料的化學熱能轉換成機械動力的機器，&#xA;因此只有加速燃料的消耗才能夠根本性的提高其轉換成品的輸出量。&#xA;當然，理論上提高能量轉換效率也能夠提高動力的輸出，&#xA;因為在轉換效率更高的情況下，同樣份量的原料(燃料)投入便可以產生更多的成品(機械功)，&#xA;只不過前提條件是效率的提升與功率之間不相衝突的情況下；&#xA;然而實務上的經驗卻往往相反，許多提升功率的做法往往是靠著犧牲效率而來的！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_轉速與功率&#34;&gt;轉速與功率&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;影響馬力的因素有那麼幾項，但首先得先來了解曲軸轉速與馬力之間的影響關聯，&#xA;因為幾乎所有其它的項目都會影響到轉速，因此有必要對轉速本身的影響先建立起認知。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;提高引擎曲軸轉速可以提高輸出功率這點，原理已經在前面、或更前篇的敘述裡面都解釋過了。&#xA;從功率計算式的角度可以直接指出功率和轉速成正比；&#xA;從功率就是做功速率的角度來看，更高的轉速意味著一段時間之內重複了更多次活塞出力的行程；&#xA;從能量轉換黑盒子的角度來看，更高的轉速能夠更加快速的消耗燃料，自然能夠產出更多的機械功。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;那麼一般是怎麼操作才能控制曲軸轉速增加呢？&#xA;轉動中的曲軸其實和一般平移運動的物體沒什麼兩樣，只不過是轉動而已，&#xA;所以當曲軸轉速穩定的時候，&#xA;表示引擎承受的負載所成為的曲軸轉動阻力，正好相等於活塞出力所產生的轉動力矩。&#xA;那麼要增加曲軸轉速，就是透過這兩種方式：&#xA;其一為&lt;strong&gt;增加活塞推力&lt;/strong&gt;，比方提高噴油量，&#xA;更多的燃料可以帶來更大的燃燒增溫和增壓，活塞出力大了自然可以推動曲軸轉的更快；&#xA;其二為&lt;strong&gt;降低負載&lt;/strong&gt;，負載阻力低了轉速自然可以更快，&#xA;一般通常的操作是降低齒輪箱的檔位、或降低螺旋槳的螺距。&#xA;這就是為什麼那些開車有一定掌握程度的人都會說：&#xA;降低檔位並補油門，就可以讓車子爆發更多動力，短時間可以快速提速的底層原理。&#xA;(&lt;em&gt;其實降檔的操作是非常常見的，只不過現代人或許可能對此並沒有太多直接的感受，&lt;/em&gt;&#xA;&lt;em&gt;因為在很多人的開車經驗裡只要踩更大油門就會有更多動力。&lt;/em&gt;&#xA;&lt;em&gt;這是因為現代自動排檔車太過氾濫的原因，是因為行車電腦在背後自動幫你適時實行降檔操作了，&lt;/em&gt;&#xA;&lt;em&gt;因此可能才導致很多沒有特別深入了解行車操作的人並不感覺升降檔的發生相當頻繁的原因。&lt;/em&gt;)&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-10/fig2-1-torque-hoursepower.jpg&#34; alt=&#34;fig2 1 torque hoursepower&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 1. Porsche 911 GTS 馬力曲線圖 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_3&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_3&#34; title=&#34;View footnote.&#34;&gt;3&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;提高發動機的轉速可以直接提高輸出功率，但如果事情只有這麼簡單的話又怎麼會有動力天花板呢？&#xA;因為活塞發動機的轉速並不能夠無限制的提高，到了極限轉速之後就很難再往上升了！&#xA;裡如上圖(&lt;em&gt;Figure 1&lt;/em&gt;)是一臺汽車發動機的馬力曲線圖，&#xA;給我們展示了該款發動機在不同轉速之下的馬力與扭力分佈。&#xA;其中馬力大致上隨著曲軸轉速的提高而等比提升，然而到了最後段卻加速下跌，&#xA;即便曲軸轉速更快了，但功率輸出卻不升反降。&#xA;在前篇&#xA;&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_engine-analysis-real&#34;&gt;[&lt;a id=&#34;_footnoteref_4&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_4&#34; title=&#34;View footnote.&#34;&gt;4&lt;/a&gt;]&lt;/sup&gt;&#xA;我提過，&#xA;在轉速過高的時候，燃燒所需要的時間行程佔比增加便會導致效率降低的不利因素。&#xA;不過除了燃燒時間之外其實還有更多其它的影響因素存在，&#xA;我們可以把它們總括解釋為發動機轉速過高的時候會發生「上氣不接下氣的喘不過氣現象」，&#xA;從而使得它無法再轉的更快，或轉速更快卻反而動力輸出是斷崖式下跌的結果。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;再更仔細閱讀那張馬力曲線圖(&lt;em&gt;Figure 1&lt;/em&gt;)，注意到這張圖的扭力曲線，&#xA;扭力其實就是活塞推動曲柄後給曲軸產生的轉動力矩。&#xA;注意到隨著汽缸供應的能量逐漸增加，活塞出力愈來愈大，然後在過了 5000 RPM 之後扭力開始減少，&#xA;這就表示汽缸已經開始出現「喘不過氣」的現象了，因此轉速提高但扭力卻減小。&#xA;可雖然扭力減少了，但是轉速增加了，扭力減少的速度還沒轉速拉的快，因此功率的輸出依然在往上增加。&#xA;而汽缸喘不過氣的現象隨著轉速的不斷提高而愈來愈明顯，終於在大約 6600 RPM 之後，&#xA;扭力降低的速度比轉速提升的速度還快。&#xA;此時即達到這臺發動機的最大功率峰值，之後即便再繼續拉高轉速而功率卻是不升反降了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在了解了發動機轉速、扭力、與功率之間的趨勢關係之後，&#xA;就不難理解我們只要想盡辦法讓發動機的「呼吸」更順暢一些，讓發動機「喘不過氣」的極限轉速更高一些，&#xA;就能夠進一步增加發動機的功率。&#xA;而提高發動機「上氣不接下氣」的門檻，就是許多發動機技術的核心目的。&#xA;下面來看看有哪些方法可以提高發動機轉速上限？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_減少燃燒耗時&#34;&gt;減少燃燒耗時&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在前篇已經有探討過燃料燃燒消耗的時間會影響到每次活塞做功的效率，&#xA;當轉速提高到一定程度之後就會受燃燒消耗時間產生的負面影響，&#xA;導致效率能劣化到甚至只有正常時的一半。&#xA;因此點火容易、燃燒速度快的汽油才被選作為 Otto 引擎的最佳燃料。&#xA;(其實氣體燃料如瓦斯的燃燒速率會更快，&#xA;可是考量到能量密度的因素之後，顯然汽油具有更好的綜合特性。)&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;要解決這個問題，首先可以在燃燒前盡可能提高汽油與空氣的均勻混合性，&#xA;因此許多發動機使用噴霧裝置配合燃料加壓泵，將汽油噴射為霧化的極細液滴與空氣混合。&#xA;在使用上燃油噴射技術以前，化油器同樣是為了使燃料霧化與空氣混合的目的而存在。&#xA;當燃料的燃燒速度更快，那麼發動機會「上氣不接下氣」的轉速極限就能更高，功率自然就提高了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;ignition-timing&#34;&gt;提前點火&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在人類卯足了勁想要挑戰發動機轉速上限的情況下，燃料燃燒耗時產生的性能劣化影響就不能忽略不管。&#xA;在已經設法加速燃料的燃燒速度到極致而再難縮短之後，提前點火就成了延緩燃燒耗時的劣化影響。&#xA;假設汽缸內的燃料燃燒需要 X 秒，那我就在活塞到達最頂點(上死點)的 0.5X 秒前點燃油氣，&#xA;這樣整個燃燒的過程就會更加集中在壓縮率最高的活塞上死點附近。&#xA;這不能夠解決問題，但可以緩和問題。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;「提前 X 秒」是符合理解直覺的方法，然而實際上很難去測量並精確控制活塞運動的時間狀態，&#xA;因此現實上都是靠著調整凸輪軸角度的方法(點火正時)來達成提前點火的目的；&#xA;概念上雖然是「提前多少時間點火」，但是實際的實現是「提前在曲軸多少角度時點火」。&#xA;那麼這就導致一個問題，在不同轉速下的最佳提前角度是不一樣的！&#xA;一套點火正時的調校只有在特定的轉速下才能發揮最佳效果，在其它轉速下則非最佳狀態；&#xA;我們又知道點火時機如果一不小心超前太多則會變成主動產生爆震，&#xA;那麼正時的調校就得採用更加保守的策略，最終導致性能提升幅度有限的結果。&#xA;不過在現代電子控制技術更加先進完善的情況下，這個問題可以得到更好的緩解。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_多汽門&#34;&gt;多汽門&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;雖然說燃料燃燒需要消耗時間這件事確實會在高轉速的時候產生效率劣化的影響，&#xA;但其實導致發動機喘不過氣而無法提升轉速的因素並不只有燃燒時間這麼一項。&#xA;比如進氣的時候讓油氣填滿汽缸的速度，和排氣的時候讓廢氣從汽缸排空的速度，&#xA;也同樣是導致高轉速時喘不過來的因素。&#xA;並且在實際的發動機設計上，&lt;strong&gt;進氣與排氣的瓶頸往往成為限制發動機最高轉速的主因之一！&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;為了使氣流更加順暢，那些曾經會導致氣體大角度彎繞的汽缸進排氣口氣道形狀被淘汰出局了。&#xA;此外，增加汽門的面積大小也同是增加氣體流量的手段。&#xA;不過因為耐壓等等的因素，汽門總是被做成圓形，能夠怎麼增加氣通的閘口面積呢？&#xA;那麼就放兩個圓形的汽門、或者三個嘍！&#xA;這就是採用多汽門方案的原理。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;古時候的發動機多是一個汽缸配置兩個汽門，一個用來進氣、一個用來排氣；&#xA;現代的汽油發動機則大多流行四個汽門的設計，兩個進氣、兩個排氣。&#xA;當然還有一些其它汽門數量的配置，比如說五汽門(三進氣、兩排氣)的氣通效果會更好，&#xA;不過結構複雜化和成本上升的代價使得這種配置比較不那麼常見就是了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-10/fig5-1-multi-valves-merlin.jpg&#34; alt=&#34;fig5 1 multi valves merlin&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 2. 發動機汽缸解剖圖，可看到每個汽缸都設置了四個汽門 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-multi-valves&#34;&gt;[&lt;a id=&#34;_footnoteref_5&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_5&#34; title=&#34;View footnote.&#34;&gt;5&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-10/fig5-2-multi-valves-head.jpg&#34; alt=&#34;fig5 2 multi valves head&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 3. 從汽缸內部拍攝的汽缸頭視角，四個汽門與中間的火星塞 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_5&#34; title=&#34;View footnote.&#34;&gt;5&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_汽門啟閉時間調整&#34;&gt;汽門啟閉時間調整&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;通常來說，四行程發動機會有一整個行程，也就是曲軸半圈的路程來給汽缸進氣、或排氣，&#xA;不過當曲軸轉速不斷挑戰極限的時候，「空氣進入與排出需要時間」來完成的這點就會成為必須面對的特性。&#xA;為此人們會微調修正汽門的開啟和關閉時機，就好像調整點火時機那樣。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在進氣行程，活塞快速往下運動，&#xA;油氣來不及即時補充進來，使汽缸內形成一個壓力比外面還低的所謂「負壓」狀態，&#xA;並且進氣時的缸內壓力差也是隨著轉速的增加而愈大。&#xA;這導致一個問題，如果在活塞到達下死點的時候就關閉進氣門，那麼汽缸其實並沒有吸入足量的油氣；&#xA;當然整個動力行程還是能夠繼續進行，只不過能夠得到的動力就比預期的低了，&#xA;至於動力降低多少得看進氣有多麼不足而定。&#xA;那麼延後進氣門的關閉時機就可以緩解這個問題，讓油氣能有更多的時間填充入汽缸內。&#xA;當然汽門也不能延後關閉太多，當缸內外壓力達到平衡之後如果進氣門還開著，&#xA;那麼就會反向把油氣從進氣門給推出去了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在排氣行程，讀過我往期活塞發動機系列文章的讀者一定知道，&#xA;汽缸在完成膨脹做功行程之後其實還有一定份量的剩餘壓力沒有用完，&#xA;也就是說在排氣行程開始的時候，缸內氣壓還是挺大的。&#xA;如果曲軸轉速並不快的話這倒沒什麼問題，排氣門一開，廢氣就會衝出來了。&#xA;但是我們現在要挑戰的可是轉速極限，必須考慮到排氣門可能無法讓氣體即時通過的問題，&#xA;那麼這樣的話，整個排氣行程可能活塞就是在頂著排氣的壓力前進了！&#xA;這下好了，原來我們只想著壓縮行程會大量消耗曲軸動力，現在連排氣行程也要消耗可觀的動力，&#xA;這影響可大了，該怎麼辦呢？&#xA;於是我排氣閥就早一點打開，在膨脹行程走到尾端就快要結束的時候，我就先打開排氣門，讓廢氣先開始衝出去了。&#xA;這樣就可以降低排氣行程的活塞阻力，使排氣更加順暢，也減少動力消耗。&#xA;當然提前排氣的時機也得恰到好處，否則太早開始排氣的話，&#xA;排氣是順暢了沒錯，但膨脹行程的損失反而讓我們得不償失！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;到了排氣行程的尾端，即將銜接進氣行程的時候，&#xA;我可以讓排氣門再維持開啟狀態稍微久一點，同時也提前打開進氣門。&#xA;這樣可以利用下一輪的進氣來將缸內剩餘空間的最後一點廢氣給推出去，&#xA;甚至如果引擎的其他狀態剛好匹配的話，排氣管的週期性低壓還可以助力把下一輪的進氣給抽入缸內，&#xA;達到進氣排氣互相幫助的作用。&#xA;進氣幫助推出排氣，排氣幫助抽入進氣。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;全部一套整理下來，可以發現無論哪個汽門，調整就是依照著「早開晚關」的方向進行的。&#xA;這樣的調整會產生一些副作用，&#xA;進氣門晚關會導致損失壓縮行程的壓縮率，排氣門早開會導致損失膨脹行程的膨脹率。&#xA;單獨只看壓縮與膨脹這兩個行程的話，其實會造成動力和效率的損失；&#xA;不過如果進排氣導致的損失更大的話，那麼汽門調整的正面幫助就大於負面損失。&#xA;總體而言可以使汽缸的呼吸更加順暢，延後汽缸「喘到上氣不接下氣」的時機，&#xA;極限轉速可以再往上拉高，總功率自然就能更大了。&#xA;不過也與點火時機調整的情況類似，&#xA;汽門該多早開啟、與該多晚關閉的最佳時間，在不同的曲軸轉速下不是一樣的。&#xA;如果為了高轉速的順暢性調整汽門，那麼就會導致中低轉速下的無力並加重油耗；&#xA;如果為了中低轉速做最佳調整，那麼就會導致極限轉速降低，從而降低整體能夠輸出的最大功率。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;汽門不像火星塞那樣通電就能點火，而是需要足夠的力量才能頂開汽門，因此一般還是得靠凸輪軸來進行。&#xA;那麼解決不同轉速區間的最佳調校設定不同的辦法，&#xA;就是使用兩組不同調校設定的凸輪軸(或同一支軸上的兩組凸輪，概念是一樣的)，&#xA;然後使用機械結構在不同的轉速區間切換使用不同的凸輪設定，這樣就可以顧及兩個不同轉速區間的性能表現。&#xA;當然也可以如法炮製，使用更多組凸輪軸去適配更多的轉速區間，&#xA;只不過要面對的就是重量、複雜性、製造與維護成本的上漲問題。&#xA;現代也開始出現一些電子控制凸輪軸調整位移的解決方案，理論上可以做到無段調整最佳汽門角位置，&#xA;只不過如果看的是二戰時期老飛機的話，當然就不用期望這種科技的加持了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-10/fig6-1-variable-value-timing.png&#34; alt=&#34;fig6 1 variable value timing&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 4. 可變氣門正時機構 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_6&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_6&#34; title=&#34;View footnote.&#34;&gt;6&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_排氣管回壓輔助抽氣&#34;&gt;排氣管回壓輔助抽氣&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;活塞引擎的排氣管，先不管裝在排氣管上面的設備如觸媒轉化器、消音器等，&#xA;就單純一根排氣管的主要作用是引導廢氣到適合的位置去排放，而非讓廢氣直接從汽缸頭放出來。&#xA;然而就是這樣簡單的排氣管，竟然還能夠在上面做文章呢！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-10/fig7-1-gunfire-underwater.gif&#34; alt=&#34;fig7 1 gunfire underwater&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 5. 高速攝影機嚇的槍口風暴 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_7&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_7&#34; title=&#34;View footnote.&#34;&gt;7&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;活塞發動機的排氣並不是連續的，而是一段一段的突波式間斷性排放，&#xA;這當然是因為四行程結構的運作特性所致的自然結果，只有在每次排氣門打開的時候才會突然衝出一股高壓廢氣。&#xA;但是當這一波高壓衝出排氣管端口後，卻反而會形成一股低壓，&#xA;這是因為氣體和一般物體同樣具有慣性的現象。&#xA;當高壓氣往低壓區衝，達到理論上應該壓力平衡的時候氣體其實還停不下來而繼續在往前衝。&#xA;於是這種因為氣體慣性而衝過頭的結果，就會導致原來是高壓的位置反而產生了一股低壓，&#xA;而這股低壓自然就產生吸引力。&#xA;這種現象其實在各種會突然產生壓力波的地方都能看到，&#xA;比方在上圖(&lt;em&gt;Figure 5&lt;/em&gt;)高速攝影機下拍攝的槍口風暴產生的氣泡，&#xA;就給我們視覺化的呈現了先膨脹，再膨脹衝過頭產生低壓而收縮，&#xA;然後又收縮過頭產生高壓而膨脹、再收縮、再膨脹的過程。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;回到排氣管，當高壓往排氣管外面宣洩之後同樣會產生一股低壓，&#xA;這股低壓會形成將排氣管內的氣體給往外拉出來的壓力，同時這股低壓波會往回傳遞直到回到汽缸頭。&#xA;那麼當這股低壓沿著排氣管回到汽缸頭的時候，如果正巧遇上排氣閥門剛好打開呢？&#xA;那麼這股低壓就會順勢幫助將汽缸內的廢氣抽出來。&#xA;而且我們知道排氣閥門有一段時間與進氣閥門同時開啟，&#xA;所以這股低壓甚至可以幫手一把將新的油氣給抽入汽缸。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這樣一套下來的結果就是在適當的巧妙設計之下，排氣的壓力回波可以被利用來幫助汽缸抽氣和吸氣，&#xA;加速氣體的抽換時間、減低進排氣阻力。&#xA;一般來說這樣的設計是靠調整排氣管的長度來做到的，&#xA;當壓力波從汽缸頭傳到另一端再返回的時間正好對上動力行程的週期，&#xA;就能因為進排氣阻力的下降而讓發動機能輸出更多的功率。&#xA;不過另一方面，這種設計要能起效的條件就是壓力傳播的速度正好吻合氣閥開關的時機，&#xA;意思就是只有在特定的設計轉速附近才能得到最佳的效果，&#xA;至於在設計轉速之外的其它狀態則不能提供什麼幫助。&#xA;此外為了讓多缸引擎的所有汽缸在設計的最佳轉速下同時處於最佳狀態，&#xA;就需要不同位置的各汽缸的排氣管長度相同，&#xA;於是這就形成了現在活塞發動機都會將排氣管繞成一些奇怪的形狀的原因！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-10/fig8-1-exhaust-technology.jpg&#34; alt=&#34;fig8 1 exhaust technology&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 6. 為了使排氣管連接至每個汽缸的長度是相等的，而進行了適當的彎繞 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_8&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_8&#34; title=&#34;View footnote.&#34;&gt;8&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-10/fig8-2-bonneville.jpg&#34; alt=&#34;fig8 2 bonneville&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 7. 為了使排氣管連接至每個汽缸的長度是相等的，而進行了適當的彎繞 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_9&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_9&#34; title=&#34;View footnote.&#34;&gt;9&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_減少活塞行程長度&#34;&gt;減少活塞行程長度&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;活塞和汽缸之間的滑動條件也同樣成為限制曲軸轉速的瓶頸。&#xA;活塞和汽缸之間(以及其它運動零件也是同樣的)其實並非直接接觸，&#xA;而是有薄薄一層機油形成的油膜在中間作為阻隔和潤滑。&#xA;當曲軸轉速過高的時候，這層油膜就會因為難以維持而出現缺口，使兩邊材料發生真正的摩擦，&#xA;導致阻力突然升高之外，也會加速磨耗，快速減少活塞和汽缸的使用壽命。&#xA;&lt;strong&gt;而活塞移動、摩擦、與潤滑的問題，同樣也是限制發動機最高轉速的主因之一！&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;活塞因為和汽缸之間除了移動之外還有氣密的需求，因此難以使用類似滾珠軸承那樣的解決方案。&#xA;為了減緩摩擦導致的問題，除了換用不同配方的機油之外，減少活塞的移動距離也是個務實的方案。&#xA;當活塞的行程距離縮短，在同樣曲軸轉速下的活塞移動速度就變慢了，&#xA;換句話說就是在同樣的活塞極限運動速度之下，曲軸的極限轉速可以更高。&#xA;不過若只是單純的減少活塞行程的話，會導致汽缸容積下降、以及壓縮比下降的副作用，&#xA;那麼為了維持同樣的容積和壓縮比，汽缸的直徑就得造的大一點，使整個汽缸看起來會更寬、更扁些。&#xA;相比於我們一般印象中的「正常」汽缸形狀比例，&#xA;把汽缸造的更寬更扁除了可以容許更高的曲軸轉速之外，還有一些其它好處。&#xA;例如汽缸頭的面積更大，可以安排更大的氣閥，使進排氣更加順暢快速，有利高轉速運作；&#xA;又比方因為活塞行程縮短，活塞連桿和曲柄的長度都減少了，有利於整體輕量化等。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-10/fig9-1-bore-stroke-ratio.gif&#34; alt=&#34;fig9 1 bore stroke ratio&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 8. 各種不同長徑比汽缸的運作動畫 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_10&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_10&#34; title=&#34;View footnote.&#34;&gt;10&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;既然把汽缸造的更寬更扁有這麼多好處，那麼為什麼一般的發動機不這麼造呢？&#xA;顯然是因為這麼做是存在副作用的！&#xA;短行程活塞的曲柄半徑縮小，也就是給曲軸施加的旋轉力臂變小了，&#xA;雖然活塞面積增加了(為了維持汽缸容積和壓縮率的關係)，因此給曲柄施加的力道也變大了，&#xA;一來一回之下其實扭矩沒什麼改變，但是活塞連桿以及曲柄轉軸承受的應力更大了。&#xA;活塞的行程縮短，也表示對於誤差的容忍度更低，無論是零件間隙還是製造與裝配上的誤差，&#xA;其中一點點的偏移都能導致最終性能表現的惡劣影響。&#xA;相比於一般常見的「正常」長行程活塞汽缸配置來說，短行程的設計對於精密加工和裝配的要求更高，&#xA;對於正時調校等等的難度和精度要求也同樣更加嚴苛。&#xA;此外為了保持同樣的壓縮比，活塞行至上死點時在汽缸頭所形成的「燃燒室」形狀變得更加寬扁而不「方正」，&#xA;給燃燒和火焰傳遞造成了更加不利的局面。&#xA;相對比之下，活塞行程比例較長的設計對於各種誤差條件的容忍度是相對較高的，&#xA;燃燒空間更合理、機件應力分佈更不極端，&#xA;因此當研發生產等成本有所考量顧慮的時候，就會更傾向於不採用短行程設計。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;諸如此類的特性使得寬扁造型的汽缸雖然可以拉高極限轉速使極限馬力增加，&#xA;但是各方上漲的成本使得通常只有追求高性能的應用如跑車、賽車等才會採用此種設計。&#xA;另一方面，經由前面許多影響因素的探討中我們能夠得知一件事：&#xA;許多的調整調校與設計都是和轉速有關的，通常無法兼顧在各種轉速之下都能擁有最佳表現。&#xA;而寬扁汽缸(低長徑比汽缸)的應用場合多半都是為了追求轉速壓榨發動機馬力，&#xA;因此往往破罐子破摔，各種調校往往著重在高轉速時的最佳表現。&#xA;這一套組合下來，造成了採用低長徑比汽缸配置的發動機在中低轉速表現不佳的通常現象。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;不過以上其實都是基於維持汽缸容積、和維持壓縮比的前提之下的結果，&#xA;然而現實上很多這些講究動力性能的發動機其實並沒有堅持這樣的前提！&#xA;它們不只減少活塞衝程，還同時降低了汽缸容積或壓縮率，&#xA;除了改善比較次要的燃燒室形狀問題外(因為燃燒室的形狀也可以透過改變汽缸頭的空間設計來調整改善)，&#xA;可能更大的原因是考量到在高轉速條件下的汽缸溫度所致。&#xA;當然這麼設計在改善避免某些問題之外，壓縮率降低的結果也導致燃油效率降低、和扭力降低的缺點；&#xA;當然對於極需壓榨發動機馬力的需求下也許這是可以承受的缺點，&#xA;只不過這就更加加重了一般人對於高轉速發動機扭力都會偏低的認知了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_加強單缸功率&#34;&gt;加強單缸功率&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在探究完轉速與功率的關係之後，現在讓我們將注意力放到發動機總體功率的另一大項影響因素：&#xA;單一汽缸的單次做功輸出。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_增加燃料量&#34;&gt;增加燃料量&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;一個非常簡單且直覺的做法就是在每次的動力循環中投放更多的燃料。&#xA;增加燃料量的方法，在使用化油器引擎上就是提高進氣的燃料濃度，在燃料噴注式引擎上就是每次注入多一點燃料，&#xA;總之就是提高進入汽缸內混合氣體的燃料濃度，也就是降低空燃比。&#xA;一次燃燒更多的燃料可以使增溫幅度更大，增壓幅度也會更大，動力輸出自然也更大。&#xA;雖然正如前篇 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_4&#34; title=&#34;View footnote.&#34;&gt;4&lt;/a&gt;]&lt;/sup&gt; 所述，&#xA;降低空燃比會導致氣體的比熱和膨脹相關特性不太好，使效率降低，&#xA;但是既然現在我們更想要的是動力，那麼這點效能損失就在所難免了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;然而這種簡單的做法卻也存在一個明顯的限制：汽缸內的氧氣容量決定了能夠參與氧化反應的燃料量上限！&#xA;汽缸裡面一次進氣的空氣就這麼多，氧氣含量也就佔 23%，最多就是把氧氣給完全消耗完。&#xA;因此汽缸一次動力行程能夠燃燒的燃料其實也是很有限的，超過了氧氣能夠氧化的多餘燃料其實並沒有作用，&#xA;再多噴的燃料也只是浪費掉而已！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;從理論化學角度來看，14.7 的空燃比就是燃料與氧能夠完全互相反應的上限了。&#xA;不過實際上因為燃燒總是無法那麼完美，總是會有一些些燃料其實是沒能參與燃燒的，&#xA;因此實務上要完全消耗氧氣的空燃比大約在 13 上下，也就是混合氣燃料佔比 7.14%。&#xA;實務上如果空燃比比這個數字還低的話，發動機廠的主要目的可能是想利用燃料的蒸發來為汽缸散熱，&#xA;而不是讓活塞提供更多的動力。&#xA;如果說空燃比最小值是 13 的話，參考一般汽油引擎空燃比最大值約在 18 左右，&#xA;那麼換算下來，其實油氣燃料佔比的調整浮動範圍也就在 5.56% ~ 7.69% 之間。&#xA;所以雖然提高噴油量的想法很符合直覺，但是站在榨取動力的角度，其能夠提供的動力提升範圍著實並不多；&#xA;而實務上調整空燃比的目的反而主要是為了在提高燃油效率、和降低汽缸溫度之間取得平衡的目的。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_增加壓縮比&#34;&gt;增加壓縮比&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;提高壓縮比可以顯著提高做功效率，自然也就提高了功率輸出。&#xA;關於這原理我在前篇 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt; 已有進行深入探討，&#xA;實務上也確實各家發動機廠，不單是汽油引擎，而是所有燒油的發動機都在卯足了勁提高壓縮率。&#xA;並且現實上每當哪家廠商能夠做出壓縮率更高的發動機，其無論是動力還是效率都會高出競爭對手一截&#xA;(至於這個一截是多大一截還得看壓縮比提高了多少而定)。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;然而提高壓縮比這個方法也確實存在難以跨越的障礙，&#xA;以汽油發動機的角度來說，壓縮比的上限來自於汽油自燃溫度的限制。&#xA;在這方向上若想要有更大幅度的突破，可能主要得依賴化學工業那方面朋友們的研發改進成果，&#xA;反而發動機設計這邊沒什麼能夠插手的空間！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_增加膨脹比&#34;&gt;增加膨脹比&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;我們知道目前所討論的活塞引擎都有一個特性，膨脹行程的氣體在被排放出去的時候仍然具有一定程度的能量，&#xA;這些能量並沒有被很好的捕捉利用就被排放掉了。&#xA;那麼如果能夠在機械結構設計上發揮一點巧思來捕捉這些能量的話，不就能夠提升單缸功率了嗎？&#xA;是的，這個想法沒錯，並且現代確實也存在這樣的機構能夠讓汽缸活塞捕捉更多的氣體膨脹能量；&#xA;但是對於講求大功率的發動機設計來說，往往不會使用這樣的設計！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;就前面解釋過的同樣原因，增加活塞膨脹的行程會導致曲軸極限轉速降低。&#xA;況且在氣體膨脹的尾端其實壓力已經處於低檔了，白話來說就是推動活塞的力量有限，&#xA;反而你得給它更多的時間去充份做功。&#xA;綜合這麼一套弄下來，曲軸轉速快不起來，總功率反而更低了！&#xA;因此現實上增加膨脹比的方案往往是為了提升燃油效率的目的，而非增加功率的目的；&#xA;而在講究功率極大化的應用場合上，絕大多數時候並不會考慮增加膨脹比。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_增加汽缸容量&#34;&gt;增加汽缸容量&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;增加汽缸容量也是個很直觀能提升功率手段。&#xA;增加汽缸尺寸就能增加進氣的量，&#xA;就可以直接增加汽缸每次循環的做功大小(汽缸活塞做功就是壓力乘體積的積分結果)。&#xA;並且進氣的份量增加了，氧的份量也同樣增加了，就能夠噴入更多的燃料來參與燃燒增溫。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;但是增加汽缸容量也有明顯的缺點，直接能導致發動機的體積和重量等比增加。&#xA;體積和重量的增大，在帶來更多功率的同時也會帶來負擔，過度變大的結果不一定會更好，&#xA;因此實際上得看應用場合而決定汽缸能夠造多大。&#xA;比方說用在船上的柴油發動機，其體積和重量的限制都是非常寬鬆的，因此能夠打造出比人還高的汽缸，&#xA;總體尺寸達幾層樓高度的巨型發動機(至於這種巨型引擎轉速大約只有數十個 RPM 的範圍)；&#xA;但是放在車上、和放在飛機上的用途來說，顯然就不能這麼造了！&#xA;另一方面如同前面解釋過的內容，活塞行程的長度會影響曲軸的極限轉速，&#xA;因此過大的汽缸除了導致體積重量直線飆升外，同樣會帶來極限轉速降低的不利影響。&#xA;此外汽缸容量增加超過一個幅度，也會導致油氣不容易均勻混合，以及大容積之下的燃燒不容易控制等問題；&#xA;當然這些問題並非無解，只要給它更多的時間去完成這些事情就行……，&#xA;於是曲軸的轉速就得更慢了！&#xA;這樣多方面影響下來，過度增加汽缸容量除了一次可以吸入比較多空氣之外，剩下全是不利因素，&#xA;對於看重功率重量(或體積)比的用途來說是得不償失的！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;綜合全部因素下來，通常在特定的應用用途上其實會存在所謂的最佳汽缸容積，&#xA;這個數值在各廠家的不同設計之下或有起伏，但大體上大家都大差不差的。&#xA;以汽車來說單缸容積大約在 0.5 L 左右，而在飛機上單缸約在 2.5 L ~ 3 L 上下是最適合的容量大小。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-10/fig13-1-huge-diesel-engine.jpg&#34; alt=&#34;fig13 1 huge diesel engine&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 9. 有數層樓高的船用大型柴油機 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_11&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_11&#34; title=&#34;View footnote.&#34;&gt;11&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-10/fig13-2-huge-diesel-inside.png&#34; alt=&#34;fig13 2 huge diesel inside&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 10. 大型柴油機的內部構造 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_12&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_12&#34; title=&#34;View footnote.&#34;&gt;12&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_增加進氣壓力&#34;&gt;增加進氣壓力&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;增加進氣壓力同樣也能增加單缸的做功輸出，並且對曲軸轉速沒有不利的影響，現實上其實是很常被使用的方案。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;一般來說進氣時的空氣條件就是一般室外的大氣條件，&#xA;這樣如果要提高進氣壓力的話，我們只能找個氣壓比較大的地區來開車；&#xA;當然實務上我們採用的是人工製造高壓進氣的方案，&#xA;也就是在汽缸進氣之前，先使用額外的壓縮機來對吸入的空氣進行壓縮，然後再送進汽缸去做剩下的事情。&#xA;這種方案其實就是現在常說的「渦輪增壓」、「Supercharger」等方案，&#xA;對於功率的提升那可不是一星半點，而是能夠帶來階段性的功率大幅躍升！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;其實在簡化的原理上，增壓器與汽缸同樣是在做壓縮空氣的事情，&#xA;也就是說增加器的作用等效於使用了一個容積更大的汽缸、和更大的壓縮比，&#xA;卻沒有真正使用大汽缸帶來的體積重量飆升缺點；&#xA;但是為了簡單理解核心原理概念，這裡就把增壓器的存在當作是給發動機換上了一個虛擬的大汽缸來解說。&#xA;那麼使用增壓器的方案在效果上就如同前面描述過的採用更大汽缸的方案，&#xA;更高的壓縮率本來就能提升能量轉換效率，這點我從前 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt; 有說明過；&#xA;此外更大的汽缸容積等同於有更多的空氣被吸入汽缸，氧氣含量也就更大了，&#xA;這樣又能夠噴入更多的燃料參與燃燒。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;不過若再繼續探究下去，&#xA;對於增壓器這種活塞發動機上面的「作弊外掛裝置」並不只是簡簡單單的提高進氣壓力這樣而已，&#xA;其對發動機的影響實際上複雜多了，值得以獨立的一篇文章來進行探討，&#xA;因此在本篇不會過度深入解釋。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_增加汽缸數量&#34;&gt;增加汽缸數量&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;探討完在曲軸轉速與單缸做功方面下手的方案之後，現在來看看這個發動機功率公式裡的最後一項：汽缸數量。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;增加汽缸數量其實是個相當實際有用的方案。&#xA;回顧前面提過的各種方案會發現，絕大多數方案都存在調整幅度的限制，&#xA;過度增加單一技術的效果往往會在另一個方面帶來不利局面，例如許多方案的副作用是導致曲軸轉速降低！&#xA;對此，給發動機增加汽缸數量的效果等同於增加了空氣容積，卻沒有給單一汽缸增加容積所帶來的各種缺點，&#xA;如曲軸轉速降低、油氣混合與燃燒控制不易等。&#xA;因此就造成了一個現象，那些追求功率的發動機，不論是在車上還是在飛機上，無不卯足了勁在堆疊汽缸數量！&#xA;航空用的大馬力活塞發動機幾乎都是星型佈局，主因就是汽缸數量夠多；&#xA;地上跑的布加迪威龍之所以採用 W 佈局，也是因為能在合理的幾何尺寸之下塞進更多的汽缸。&#xA;這些我從前也解釋過&#xA;&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_multi-cylinders&#34;&gt;[&lt;a id=&#34;_footnoteref_13&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_13&#34; title=&#34;View footnote.&#34;&gt;13&lt;/a&gt;]&lt;/sup&gt;&#xA;。&#xA;我之前還教過大家去數汽缸數量就能夠粗略猜測發動機的馬力，&#xA;也是因為在差不多同時代的技術水準之下，對於單一汽缸、以及影響曲軸轉速的運氣通暢度等，&#xA;能夠下手改善的幅度是差不多的，因此汽缸數量就成為影響整體功率的最主要因素；&#xA;實際表現結果也許各廠牌各型號稍有好有壞，但功率基本會正比於汽缸數量。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;不過汽缸數量也並不是因此可以無限增加。&#xA;除了沒有增加單缸容積會導致極限轉速降低的不利因素外，增加汽缸數量同樣會導致重量等比增加的結果；&#xA;增加汽缸數量同樣也會導致發動機體積上升，只不過相比於為單缸增加容積而言，&#xA;汽缸數量的增加可以依靠比較合理的空間排佈來避免單一方向幾何尺寸過大的問題。&#xA;此外增加汽缸的數量也會使得各種機械結構零件更加複雜化，&#xA;更多的曲柄和凸輪、更多的火星塞、更複雜的進排氣管路等等，&#xA;設計製造和維護的成本同樣直線上升，也同樣會導致較高的故障率。&#xA;因此在綜合了體積重量、生產製造成本、維護成本、故障率、和可靠性等各項條件之後，&#xA;一款實用的活塞發動機同樣存在一個模糊的汽缸數量限制，並不能夠無限的增加上去。&#xA;歷史上在航空領域曾經出現過在這項屬性上最登峰造極的產品，莫過於就是 P&amp;amp;W 的 R-4360 (&lt;em&gt;Figure 11&lt;/em&gt;)，&#xA;採用星型四列總共 28 缸的發動機，總重 1.7 頓，排氣量 71.5 L，總功率達 4300 hp，&#xA;可謂是在那個活塞發動機主宰天空的時代裡，最令人嘆為觀止的存在了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-10/fig15-1-r4360-cross.jpg&#34; alt=&#34;fig15 1 r4360 cross&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 11. P&amp;amp;W R-4360 發動機，採四列星型佈局，總共有 28 個汽缸 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_14&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_14&#34; title=&#34;View footnote.&#34;&gt;14&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_結論&#34;&gt;結論&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;本篇介紹了那些在汽油發動機上用來追求極致功率的手段；&#xA;當然實際上可能還有更多的可用技術沒有被介紹到，那不是別的原因，單純就是筆者我所學有限而已！&#xA;在這許多被人類應用的技術裡面探討完一圈之後，會發現每一項技術的效果都是很有限的，&#xA;雖確實能有程度高低不等的幫助，卻也同樣具有效用天花板，並且許多的改善方案往往是與轉速發生衝突的！&#xA;當然們竭盡可能最大程度的採用各種補丁措施，發動機轉速仍受到兩項因素根本性的制約：&#xA;進氣排氣順暢度和阻力、以及活塞汽缸摩擦潤滑問題。&#xA;甚至於當轉速過高的時候還會發生一些億想不到的問題，例如進排氣閥門因為慣性的關係來不及關上而敲到活塞等。&#xA;但是繼續探究到底便不難發現，&lt;strong&gt;往復式活塞引擎最根本性的問題其實就出在「往復」這兩個字上&lt;/strong&gt;。&#xA;活塞引擎的基本運作特性，決定了它的各項工作不是連續穩定進行的，而是間斷性、週期性循環的。&#xA;因為這樣基於根本性結構的特性，使得一旦要它賣力運作起來，&#xA;就會導致留給每一個週期裡的每一項工作被壓縮的只有極其短暫的時間，&#xA;此即成為了後續所延伸大量問題的根本源頭。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;於是在做盡大量努力之後，增加汽缸數量竟成了除了增壓機之外最後有效提升功率的方案；&#xA;然而這個方案的成本代價也並不小，在增加馬力的同時必須要等比例的增加發動機尺寸和重量&#xA;(&lt;em&gt;通常人們真正追求的改善方案是能夠大幅增加功率輸出，卻只需要小幅重量體積的代價，&lt;/em&gt;&#xA;&lt;em&gt;因此即便是等比例的負擔增加其實已經不是很划算了，特別是對於體積和重量敏感的航空器而言&lt;/em&gt;)。&#xA;當然這種方案在有效增加功率之餘也同樣有效的增加各種複雜度和故障率，加上同比例增加的尺寸與重量，&#xA;使得飛機設計師們在得到更大的推力之餘，還得惦量一下優劣利弊是否划算？！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;曾經作為開啟航空新世界的魔法水晶而存在的汽油引擎，&#xA;在那個仍是活塞發動機主宰的航空時代裡就這麼走進了挖掘潛力逐漸枯竭的地步，&#xA;在沒有其它替代方案的情況下誕生過一些奇葩方案和工程巨獸。&#xA;當然我們後世人可以偷看歷史進程，知道在後來出現了一種完全不同於以往的全新想法思路，&#xA;使得突然之間在航空領域裡為活塞發動機壓榨馬力的一切努力都失去了價值，&#xA;並且讓喜新厭舊的人們立刻琵琶別抱；不過，這是另一個故事了……。&#xA;在航空的世界裡，以活塞汽油為主的發動機在大約二次大戰的末期來到最高峰，&#xA;實用發動機的最大馬力最終也被定格在大約 4000 匹上下；&#xA;若排除掉像是 R-4360 這種不尋常的例子而只考量最為普遍廣泛的情況的話，&#xA;則甚至最大功率只有 2000 匹馬力左右(這個「甚至只有」當然是以現代的標準來看的)。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;不過，汽油發動機的功率潛能有限這事還是看場合的，在其它許多領域裡汽油發動機顯然仍是游刃有餘。&#xA;比如在陸地上，甚至於有些時候其實是動力過剩了，使人們不得不想辦法減少發動機功率以追求更高的經濟效益！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;那麼下一篇，就讓我們繼續追逐活塞發動機動力高峰的話題，來談一談本篇所留下的那個空白。&#xA;這個外掛的小東西可不僅僅只是大幅提升發動機功效而已，也是航空動力史上作為承先啟後繼往開來的中間重要轉折；&#xA;還讓在民用領域大部份難以成為飛機駕駛員的我們一般人，能夠在地上體驗一把航空渦輪引擎的脾氣！ (&lt;code&gt;&lt;sup&gt;_&lt;/sup&gt;&lt;/code&gt;)&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;footnotes&#34;&gt;&#xA;&lt;hr/&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_1&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_1&#34;&gt;1&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-8---%E5%8A%9F%E6%95%88%E5%88%86%E6%9E%90---%E5%9F%BA%E7%A4%8E%E5%8E%9F%E7%90%86/&#34;&gt;活塞引擎 8：功效分析 之 基礎原理&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_2&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_2&#34;&gt;2&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-7---%E5%8A%9F%E7%8E%87%E8%88%87%E6%95%88%E7%8E%87/&#34;&gt;活塞引擎 7：功率與效率&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_3&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_3&#34;&gt;3&lt;/a&gt;. &lt;a href=&#34;https://www.techart.de/en/models/911/techart-for-992/carreratargagts/performance.html&#34;&gt;Intelligent Power &amp;amp; Sound&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_4&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_4&#34;&gt;4&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-9---%E5%8A%9F%E6%95%88%E5%88%86%E6%9E%90---%E8%B5%B0%E5%85%A5%E7%8F%BE%E5%AF%A6/&#34;&gt;活塞引擎 9：功效分析 之 走入現實&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_5&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_5&#34;&gt;5&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Multi-valve&#34;&gt;Multi-valve&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_6&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_6&#34;&gt;6&lt;/a&gt;. &lt;a href=&#34;https://www.oicar.cc/portal_c2_cnt_page.php?owner_num=c2_39570&amp;amp;button_num=c2&amp;amp;folder_id=5033&amp;amp;cnt_id=8769&#34;&gt;可變汽門原理&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_7&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_7&#34;&gt;7&lt;/a&gt;. &lt;a href=&#34;https://www.youtube.com/watch?v=OubvTOHWTms&#34;&gt;Underwater Bullets at 27,000fps - The Slow Mo Guys&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_8&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_8&#34;&gt;8&lt;/a&gt;. &lt;a href=&#34;http://www.epi-eng.com/piston_engine_technology/exhaust_system_technology.htm&#34;&gt;Exhaust System Technology&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_9&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_9&#34;&gt;9&lt;/a&gt;. &lt;a href=&#34;https://www.performanceracing.com/magazine/columns/03-01-2023/pri-tech-stepped-pipes-vs-straight-pipes&#34;&gt;PRI Tech: Stepped Pipes vs. Straight Pipes&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_10&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_10&#34;&gt;10&lt;/a&gt;. &lt;a href=&#34;https://forum.jorsindo.com/thread-2571777-1-1.html&#34;&gt;規格表數據解密！教你看懂規格表沒說的事！&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_11&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_11&#34;&gt;11&lt;/a&gt;. &lt;a href=&#34;https://www.team-bhp.com/forum/commercial-vehicles/181906-explained-how-marine-diesel-engines-work.html&#34;&gt;Explained: How Marine Diesel Engines Work&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_12&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_12&#34;&gt;12&lt;/a&gt;. &lt;a href=&#34;https://marineinbox.com/marine-exams/the-development-of-the-modern-low-speed-two-stroke-marine-diesel-engine/&#34;&gt;THE DEVELOPMENT OF THE MODERN LOW-SPEED TWO-STROKE MARINE DIESEL ENGINE&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_13&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_13&#34;&gt;13&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-2---%E5%A4%9A%E7%BC%B8%E4%BD%88%E5%B1%80/&#34;&gt;活塞引擎 2：多缸佈局&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_14&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_14&#34;&gt;14&lt;/a&gt;. &lt;a href=&#34;https://de.wikipedia.org/wiki/Pratt_%26_Whitney_R-4360&#34;&gt;Pratt &amp;amp; Whitney R-4360&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>活塞引擎 9：功效分析 之 走入現實</title>
      <link>http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-9---%E5%8A%9F%E6%95%88%E5%88%86%E6%9E%90---%E8%B5%B0%E5%85%A5%E7%8F%BE%E5%AF%A6/</link>
      <pubDate>Sat, 21 Dec 2024 12:17:08 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-9---%E5%8A%9F%E6%95%88%E5%88%86%E6%9E%90---%E8%B5%B0%E5%85%A5%E7%8F%BE%E5%AF%A6/</guid>
      <description>&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;接續&lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-8---%E5%8A%9F%E6%95%88%E5%88%86%E6%9E%90---%E5%9F%BA%E7%A4%8E%E5%8E%9F%E7%90%86/&#34;&gt;前篇&lt;/a&gt;&#xA;&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_engine-analysis-basics&#34;&gt;[&lt;a id=&#34;_footnoteref_1&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&#xA;，&#xA;在了解了活塞發動機的基本動力原理後，本篇要來探討當理論放到現實會發生什麼挑戰？&#xA;以及明明理論是這樣，但為什麼實際見到的發動機卻往往沒能那樣的這些問題。&#xA;這些當然都是因為存在著這樣那樣的因素，導致實際的發動機無法達成理論上美好的狀態，&#xA;而在本篇，我就要來論述解釋這些的為什麼？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;本篇我會一一列出讓發動機的功效之所以程度不等的低於理論條件的各項主要因素。&#xA;這些因素的先後順序並不是依照其實質影響力的大小來排序的，&#xA;而是依據我的解說喜好順序、加上能否被推估驗證的難易度來進行排列的。&#xA;其中有些影響因素很容易從理論數學上去分析理解，有些則不容易，&#xA;而有些根本很難做純理論的分析，說不定修車師傅的經驗可能會更加準確！&#xA;其實對於很多實質複雜的影響因素在實務上通常是靠實驗來得出結果，&#xA;但是對我來說實驗是不可能做的，實在沒有那個資源和力氣。&#xA;所以對於愈排在後面的影響因素，我能夠告訴你的只有它的影響原理了，&#xA;至於實際的影響效果嘛……我們就只求個理解就好了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-9/fig1-1-power-cycle-normal-scale.png&#34; alt=&#34;fig1 1 power cycle normal scale&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 1. 回顧前篇的動力循環圖&lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-9/fig1-2-power-cycle-log-scale.png&#34; alt=&#34;fig1 2 power cycle log scale&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 2. 此圖表與 &lt;em&gt;Figure 1&lt;/em&gt; 的數據是完全一樣的，只是縱軸顯示的比例不一樣而已！&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在開始繼續討論之前，讓我們先回顧一下前篇計算出來的動力循環圖(&lt;em&gt;Figure 1&lt;/em&gt;)，&#xA;但是因為壓力是呈指數級升降的關係，這樣的圖表實在給我們的閱覽帶來困擾，&#xA;於是我們將該圖表改用對數比例重新繪製成為 &lt;em&gt;Figure 2&lt;/em&gt;。&#xA;注意這兩張圖表除了縱軸比例不一樣以外，所有的數據是一樣的！&#xA;也因為對數比例軸對於觀察活塞壓力的使用上比較容易被觀察，&#xA;因此我們後面的所有圖表也都會使用同樣的比例表示法。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_膨脹比限制&#34;&gt;膨脹比限制&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在之前的分析中，我們完全忽視實際上造不造得出這種機械結構的問題，只完全以純理論分析，&#xA;讓氣體充份膨脹到底，得到最完全的做功數字。&#xA;然而實際上就如同我在本篇、以及往前的數篇文章中都有提到的原因：&#xA;活塞隨著曲軸曲柄的圓周運動而進行往復，上行和下行的距離是一樣的。&#xA;因此在實際流通的汽油發動機上(阿金森什麼的以後再說)，壓縮比是多少，膨脹比就是多少，&#xA;沒有辦法讓氣體完全膨脹做功，活塞到底了就得放它走，&#xA;所以「&lt;code&gt;R=1&lt;/code&gt;」標示的那根紅線右邊的部份，剛好就是無法被攔截利用的部份。&#xA;考量此因素之後，發動機的功效就會比能夠完全膨脹的條件下降低了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-9/fig2-1-pressure-distribution.png&#34; alt=&#34;fig2 1 pressure distribution&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 3. 回顧前篇的汽缸壓力分佈圖&lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-9/fig2-2-work-distribution.png&#34; alt=&#34;fig2 2 work distribution&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 4. 回顧前篇的活塞膨脹累積做功圖&lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;好在於有兩個因素導致雖然我們沒法讓氣體完全膨脹，但是造成的功效降低並不至於太過無法接受：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;olist arabic&#34;&gt;&#xA;&lt;ol class=&#34;arabic&#34;&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;如同 &lt;em&gt;Figure 3&lt;/em&gt; 所表現的，氣體壓力最大的部份都集中在體積最小的那個範圍區間，&#xA;至於到了膨脹尾端的時候，壓力已經降到相較很低的位置了，&#xA;因此就算把後面的部份切掉的話影響其實也不會太巨大。&#xA;並且 &lt;em&gt;Figure 4&lt;/em&gt; 所表示的活塞膨脹行程做功圖也同樣印證了這點。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;從 &lt;em&gt;Figure 2&lt;/em&gt; 可以看出，當壓縮比愈大的時候，&#xA;氣體的做功愈傾向於在「界線」的左邊釋放功率。&#xA;因此我們可以儘量提升壓縮比，當壓縮比足夠高的時候，&#xA;因為活塞行程限制所導致的做功浪費也會愈低。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;最後我們用一張壓縮比為 9 的下圖(&lt;em&gt;Figure 5&lt;/em&gt;)作為總結&#xA;(至於為什麼採用壓縮比 9？這個我們後面再說明)：&#xA;在容許活塞無移動限制、及考量實際活塞移動限制的兩種情況下，&#xA;活塞單一行程的淨功輸出分別為 1618.1132 J 和 1481.2613 J，&#xA;熱效率分別為 58.36% 和 53.42%，皆損失了 8.46%。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-9/fig2-3-power-cycle-r9.png&#34; alt=&#34;fig2 3 power cycle r9&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 5. 採用 9 倍壓縮比的動力循環圖(注意淡綠線是因為膨脹比受限緣故而實際無法實現的部份)&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_壓縮比限制&#34;&gt;壓縮比限制&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;我們已經知道提高壓縮比可以非常顯著的提升發動機功率和效率，&#xA;那麼為什麼我們不要死命的提高壓縮率呢？比方將空氣壓縮個數百倍之類的？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;理想很美滿，現實卻很骨感！&#xA;提高壓縮率確實是一個從性能面來看只有好處而沒有壞處的方案，&#xA;並且現實世界中的各家發動機廠事實上也是一直在想盡辦法提高發動機的壓縮率；&#xA;然而壓縮率在實務上存在難以跨越的限制，主要為兩個因素：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;olist arabic&#34;&gt;&#xA;&lt;ol class=&#34;arabic&#34;&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;壓力承受度&lt;/p&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;隨著容積壓縮率的上升，氣體壓力是呈指數幅度在增加的，&#xA;在我們的分析、計算、和圖表裡都再再表現出這點特性，&#xA;那麼這直接帶來的挑戰就是發動機的壓力承受能力了！&#xA;所以你看那壓縮率比較高的柴油發動機，為什麼它的本體總是比較厚實，&#xA;也比汽油發動機更加笨重多呢？這就是原因了。&#xA;一眛增加壓縮率將不得不導致引擎體重的飆升，這放在重量錙銖必較的航空器上，&#xA;當帶來的效益可能抵不過增加體重所帶來的劣勢的時候，就不一定是個對的方向了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;汽油自燃&lt;/p&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;由於壓縮的過程也會導致氣體溫度上升，然而汽油是和空氣一起混合成為混合氣之後，&#xA;進到汽缸裡面被壓縮處理的，那麼這就造成一個更加嚴重的問題：&#xA;如果活塞還沒走到頂，如果還沒等到火星塞點火，油氣就因為高溫而自己燃燒起來了呢？&#xA;這可不就是爆震嗎！在壓縮過程中油氣引燃，哎呀這可別說有多酸爽了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;其實上面的第二點，油氣的自燃溫度才是真正限制汽油發動機壓縮比上限的首要瓶頸。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;汽油的自燃溫度約為 247℃ ~ 280℃&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_2&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_2&#34; title=&#34;View footnote.&#34;&gt;2&lt;/a&gt;]&lt;/sup&gt;&#xA;，也就是 520 K ~ 553 K。&#xA;為什麼會有這麼大的浮動範圍呢？因為汽油不是純質，而是成份非常複雜的混合物。&#xA;如果按照我們前面的理論分析結果來看，壓縮比的上限大約就是 4 倍到 4.5 倍左右了，&#xA;而 4.5 倍的壓縮比正好就是早期汽油發動機的壓縮比上限。&#xA;當代的汽油發動機壓縮比則提高了不少，大約在 10 倍左右，這是怎麼辦到的呢？&#xA;汽油其實是組成非常複雜的混合物，&#xA;不同的精煉程度、添加劑、成份配比等都會影響汽油的穩定性，從而改變它的自燃條件。&#xA;如果我們可以從上述這些因素去做最大程度的改善，&#xA;只要控制住汽油在火星塞主動點火之前不要自己爆燃，那麼壓縮比就可以往上提高；&#xA;這就是為什麼會有 92、95、98 等等不同標號汽油種類背後的根本原因，&#xA;甚至於早年時候還會在汽油裡面加入鉛化合物(現代航空汽油好像也仍是如此)來提高爆燃穩定性。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;然而即便使用了各種能使汽油性質更加穩定的配方，能改善的範圍也是很有限的，&#xA;因為汽油的基本化學性質仍然擺在那裡，不會出現根本性的變化！&#xA;至於其它型式的發動機如柴油引擎、渦輪引擎等為什麼能夠提供更大的壓縮比呢？&#xA;根本原因就在於它們的燃料是在空氣被壓縮完成後才被噴入汽缸或燃燒室內的，因此才能完全迴避這個問題；&#xA;那麼那種發動機的壓縮比限制，可能更主要是來自於上述第一點的限制條件。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_油氣混合氣性質變化&#34;&gt;油氣混合氣性質變化&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在前篇的理論分析都是使用空氣在汽缸裡面進行各種折騰，&#xA;但是實際上的內燃機汽缸裡面裝的可不是純空氣，而是空氣與燃料液滴微粒和蒸氣共同組成的混合氣體。&#xA;因此分析時如果能使用油氣、與燃燒後燃氣的氣體參數，而不是使用純空氣的氣體參數，&#xA;計算的結果就會更加貼近現實。&#xA;當然因為這種參數調整非常複雜瑣碎，尤其燃料大多不是純質而是複雜的混合物，&#xA;所以通常在研究探討大略性能特性粗估的時候，直接使用純空氣的參數作為理論分析使用也是很常見的方式；&#xA;至於與實際結果的落差這件事……別忘了還有實驗可以做！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這裡要先介紹一個名詞叫「空燃比」，就是空氣和汽油混合的油氣，其中的空氣、和汽油的質量比例。&#xA;空燃比一般大約介於 8:1 到 18:1 之間，&#xA;因為比例式的右邊總是 1，因此空燃比的數字常見只標示左邊的數字，&#xA;畢竟比值的定義本就是左邊除以右邊，所以這麼寫也是完全符合標準用法的。&#xA;一般來說如果要完全消耗掉空氣中佔比 23% 的氧氣的話，空燃比約為 14.7，&#xA;換算成對計算可能更加友好的表達型式的話，那就是汽油質量佔油氣總質量的 6.37%，&#xA;而後面所有的計算分析都會採用這個數字。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;空氣的 \(C_p\) = 1056.29 (\(\frac{J}{kg·K}\))、\(C_v\) = 754.49 (\(\frac{J}{kg·K}\))、κ = 1.4。&#xA;汽油的成份雖然複雜，但主要幾乎都是各種不同型態的碳氫化合物，&#xA;所以如果完全燃燒的話，那麼最後就會都變成二氧化碳和水蒸氣；&#xA;於是經過我一通計算之後&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_3&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_3&#34; title=&#34;View footnote.&#34;&gt;3&lt;/a&gt;]&lt;/sup&gt;&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_4&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_4&#34; title=&#34;View footnote.&#34;&gt;4&lt;/a&gt;]&lt;/sup&gt;&#xA;，&#xA;燃燒後的燃氣推估 \(C_p\) = 1087.333 (\(\frac{J}{kg·K}\))、\(C_v\) = 792.065 (\(\frac{J}{kg·K}\))、κ = 1.373。&#xA;至於燃燒之前的油氣就沒有辦法這麼簡單了，因為汽油的成份實在是太不單純，實在難以簡化分析，&#xA;對於這種情況一般來說做個實驗會更容易取得結果。&#xA;但是如同前面講述過的同樣原因，做實驗這個方法為我實在難以實現，&#xA;於是我不得不採用特性相近的純質來類比估算汽油的效果。&#xA;這裡我採用辛烷(C8H18)的數值來代表汽油，&#xA;\(C_p\) = 1711.3 (\(\frac{J}{kg·K}\))、\(C_v\) = 1638.5 (\(\frac{J}{kg·K}\))，&#xA;按空燃比與空氣混合之後，油氣的參數估算為&#xA;\(C_p\) = 1098.014 (\(\frac{J}{kg·K}\))、\(C_v\) = 810.804 (\(\frac{J}{kg·K}\))、κ = 1.354。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;另外除了氣體的 \(C_p\) 和 \(C_v\) 以外，&#xA;因為不再是純的空氣而是混合油氣、與混合燃氣，所以氣體密度會改變，&#xA;這裡簡單將汽缸內的空氣質量除以 0.9363 &lt;em&gt;( 1 - 0.0637 )&lt;/em&gt; 即可。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-9/fig4-1-power-cycle-mixture.png&#34; alt=&#34;fig4 1 power cycle mixture&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 6. 使用油氣、燃氣的氣體參數修正後的動力循環圖(淡色部份為修正前的圖形對比)&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;使用修正後的油氣、燃氣氣體參數套入計算，&#xA;得到的結果就如上圖(&lt;em&gt;Figure 6&lt;/em&gt;)所示(淡色部份是先前以純空氣參數計算的結果)。&#xA;可以發現混合油氣的壓縮成效比起純空氣稍差，因此壓縮行程帶來的壓力增幅有了折損，&#xA;此外燃氣的比熱容也比純空氣稍大，使一樣的熱量投入所產生的升溫和升壓效果同樣打了折扣。&#xA;最終使得整個功效比起使用純空氣的分析結果都有所下降。&#xA;修正後的淨功輸出為 1172.1981 J、效率為 42.3%，相比純空氣版本皆下降了 20.9%。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;至此我們可以得到一個結論：&#xA;當空氣中混合的汽油比例愈高時，混合氣的氣體參數會愈為不利。&#xA;按此原則如果&lt;strong&gt;要提高發動機效率的話，那麼空燃比就要愈高愈好&lt;/strong&gt;，&#xA;雖然空燃比高表示加入燃燒的燃料減少，動力輸出當然也會降低，只不過能量轉換效率會提高；&#xA;而這就是為什麼當代車廠研發的強調省油的一眾最新發動機款式，&#xA;一個一個都在強調&lt;strong&gt;稀薄燃燒&lt;/strong&gt;的原因了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_燃燒耗時&#34;&gt;燃燒耗時&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在此前的理論分析中，我們做了一個非常重要的簡化假設：假設燃燒、放熱與吸熱是在一瞬間完成；&#xA;然而實際上的情況，燃燒即便再快也總是需要時間的！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;可是如果要考量燃燒會花時間這件事的話，就會讓我們的計算變得更加複雜困難難解，&#xA;而這也是理論分析為什麼會喜歡忽略它的原因。&#xA;既然燃燒會花時間，燃燒的同時活塞也在移動，那就不會是等容加熱，不過很可能也不會是等壓加熱，&#xA;那麼這樣到底要用 \(C_p\) 來算呢？還是用 \(C_v\) 來算呢？&#xA;並且在燃燒加熱的這個時間裡活塞也同樣在做功，且這時還不是絕熱行程，那麼活塞做的功要怎麼計算呢？&#xA;可現在為了能夠知道理想與現實的差距，還是必須要將燃燒時間給考慮進來。&#xA;好在現在有電腦幫忙做計算，於是我將採用一個比較簡單的計算概念來進行模擬近似。&#xA;(當然如果你對於計算的原理沒什麼興趣，只想知道計算結果的話，也可以略過下面這一個區塊的說明)&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;quoteblock&#34;&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-9/fig5-1-heating-delay-calculation-demo.png&#34; alt=&#34;fig5 1 heating delay calculation demo&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 7. 處理同時進行升溫與膨脹過程的計算方法示意&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;如上圖(&lt;em&gt;Figure 7&lt;/em&gt;)所示即是本文在計算模擬燃燒過程的計算原理示意圖。&#xA;這裡我不使用秒、豪秒這些時間單位來定義燃燒時間，&#xA;而是使用「燃燒過程佔了整個壓縮行程的多少百分比」來定義燃燒時間&#xA;(&lt;em&gt;之所以參考壓縮行程，主要是考量到以後會討論到膨脹行程會延長的設計，&lt;/em&gt;&#xA;&lt;em&gt;所以採用膨脹行程定義的話會導致比例基準浮動的問題，因此改以更加穩定不動的壓縮行程長度作為參考；&lt;/em&gt;&#xA;&lt;em&gt;但由於意義上應該是與膨脹行程相關，且至本篇為止的膨脹比與壓縮比都還是相等的，&lt;/em&gt;&#xA;&lt;em&gt;因此以下敘述中仍以膨脹行程作為更加符合直覺的參考標的&lt;/em&gt;)，&#xA;以上圖為例，燃燒過程就佔了整個膨脹行程的一半。&#xA;當然這麼誇張的數字只是為了示意圖畫出來比較明顯的緣故，實際上當然不一定會佔比這麼誇張。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;然後我把這個應該要同時加熱和膨脹的過程(也就是上圖的紅色部份)&#xA;按氣體體積切成等份的三個區段(如上圖的土色框線標示)，&#xA;將總共需要加入的熱量也平分成三等份依次加入。&#xA;三區段的每個區段一開頭我就瞬間加入這區段分到的熱量，所以就會看到它的壓力直線上升一段，&#xA;因為這裡還是假定瞬間完成，所以依然套用等容過程計算。&#xA;加熱完後就讓它繼續膨脹做功，這一部份完全比照絕熱膨脹來計算，&#xA;因為這裡沒有熱量進出，因為熱量都被我假設只在區段的開頭瞬間完成。&#xA;然後體積膨脹來到了下一個區段，再次定容瞬間增溫，然後再次絕熱膨脹。&#xA;以此繼續計算完所有的區段，我就能夠得到溫度與壓力在每個站點的數值；&#xA;然後把每個區段活塞所做的功都加起來，就是這整個過程的活塞做功了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;當然，這樣的做法看起來非常粗糙，與實際情況完全偏離，&#xA;但是其實這只是因為我只分割了三個區段所造成的結果。&#xA;其實只要把區段分割的足夠多、區段足夠細碎，那麼計算下來的結果就會很貼近現實了。&#xA;在下面我真正的分析案例裡面，將區段分割了 200 段來計算，可以得到真正有代表性的結果；&#xA;至於為什麼這裡我只分了三個區段呢？當然是因為切少一點才容易看得清楚這個算法的結構長相啊！&#xA;還有另外一個問題是區塊分割的這麼多，這樣算起來不是很累嗎？&#xA;還真的是這樣沒錯，我們必須的一個一個、一段一段的把數字都給算出來；&#xA;不過還好我們不用自己動手動比來算這些東西了，&#xA;有賴電腦的普及，這部份的工作就交給電腦來計算就好了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這裡所使用的模擬近似計算方式，&#xA;誤差在分割的區段數量足夠多的時候就會足夠小，線圖也會趨於平滑好觀察。&#xA;壓力變化的曲線幅度會隨著燃燒行程佔比的變動而變化，&#xA;以本示範案例來說，稍加調整測試就能找到約在 14% 附近的時候，剛好壓力線圖呈一條水平線，&#xA;而此時的模擬結果與直接使用 \(C_p\) 一站計算的結果非常接近(誤差非常小)；&#xA;另一方面當燃燒佔比 0% 的時候，模擬結果與先前直接使用 \(C_v\) 一站計算的結果幾乎相同。&#xA;經過這兩個特殊條件下的計算驗證，應可以確定本文所使用的這個計算模擬方法足夠精確可靠了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-9/fig5-2-power-cycle-delay-cases.png&#34; alt=&#34;fig5 2 power cycle delay cases&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 8. 幾種不同佔比的燃燒加熱過程比較(淡色部份為前面兩個按例的計算結果作為比對參考)&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;採用上述計算近似的方法，我計算了六種不同燃燒時間佔比的結果出來，如上圖 &lt;em&gt;Figure 8&lt;/em&gt; 所示；&#xA;其中標註的百分比表示燃燒過程佔整個膨脹行程的比例，&#xA;而淡色線圖則是先前的純空氣、和混合油氣的兩個案例所計算出來的結果以作為比較。&#xA;計算結果數值如下：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;table class=&#34;tableblock frame-topbot grid-all stretch&#34;&gt;&#xA;&lt;colgroup&gt;&#xA;&lt;col style=&#34;width: 25%;&#34;/&gt;&#xA;&lt;col style=&#34;width: 25%;&#34;/&gt;&#xA;&lt;col style=&#34;width: 25%;&#34;/&gt;&#xA;&lt;col style=&#34;width: 25%;&#34;/&gt;&#xA;&lt;/colgroup&gt;&#xA;&lt;thead&gt;&#xA;&lt;tr&gt;&#xA;&lt;th class=&#34;tableblock halign-left valign-top&#34;&gt;燃燒行程佔比&lt;/th&gt;&#xA;&lt;th class=&#34;tableblock halign-left valign-top&#34;&gt;燃燒熱量(J)&lt;/th&gt;&#xA;&lt;th class=&#34;tableblock halign-left valign-top&#34;&gt;做功(J)&lt;/th&gt;&#xA;&lt;th class=&#34;tableblock halign-left valign-top&#34;&gt;效率&lt;/th&gt;&#xA;&lt;/tr&gt;&#xA;&lt;/thead&gt;&#xA;&lt;tbody&gt;&#xA;&lt;tr&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;0%&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;2772.7618&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;1172.1981&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;42.28%&lt;/p&gt;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;2%&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;2772.7618&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;1141.4815&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;41.17%&lt;/p&gt;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;5%&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;2772.7618&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;1098.6417&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;39.62%&lt;/p&gt;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;10%&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;2772.7618&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;1033.9619&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;37.29%&lt;/p&gt;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;20%&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;2772.7618&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;922.2538&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;33.26%&lt;/p&gt;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;40%&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;2772.7618&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;741.5028&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;26.74%&lt;/p&gt;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;/tbody&gt;&#xA;&lt;tfoot&gt;&#xA;&lt;tr&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;80%&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;2772.7618&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;467.3280&lt;/p&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;tableblock halign-left valign-top&#34;&gt;&lt;p class=&#34;tableblock&#34;&gt;16.85%&lt;/p&gt;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;/tfoot&gt;&#xA;&lt;/table&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;從結果中我們可以看到，當燃燒愈不能夠快速完成的時候，跑出來的數值就愈難看。&#xA;從圖形中可以看到，在燃燒佔比 14% 以前，燃燒時間稍微這麼拖一下，&#xA;壓力增幅相比完美狀態就少了頂上增幅最大的那一部份。&#xA;原理也很簡單，如同前面解釋壓縮的意義那裡所說一樣，燃燒加熱最好在壓力最大的時候發生；&#xA;而只要燃燒會拖時間，當活塞這麼動一下，缸內體積稍微變大一點，&#xA;氣壓就會掉下來很多(別忘了那圖表是對數座標比例)，這個時候你再去加熱的效果肯定就有所折扣了。&#xA;而當燃燒佔比超過 14%，即便燃料仍在燃燒加熱，可是壓力卻是不斷下滑，只不過下滑的速度比較慢點而已，&#xA;因為這時加熱產生的升壓速度已經比不過膨脹造成的減壓速度了，於是效率數字就愈來愈慘不忍睹！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;所以燃料的燃燒時間是愈短愈好、愈快愈好，燃燒放熱的過程愈接近於瞬間完成，則效率就會愈高。&#xA;從上面的模擬計算結果來看，燃燒時間佔比整個膨脹行程為 2% 的時候，效率大約下降一個百分點，&#xA;那麼如果能夠控制燃燒佔比 1% 以下，基本就可以說表現結果和理想上的瞬間完成差異不大了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這就是為什麼汽油發動機的最佳燃料是汽油的主要原因之一，因為汽油燒的快！&#xA;除了燃料本身的燃燒速度之外，我們還可以用很多其它的方法儘量縮短燃燒時間，&#xA;比如說用技術能力所及的最細噴霧裝置去霧化燃料，並且設計更加有效的進氣流道，&#xA;將活塞頂依照空氣動力學效果挖出一些神奇的凹槽，讓進入的氣體可以左轉三圈右轉三圈，儘量與燃料充份混合，&#xA;甚至巴不得讓燃料完全蒸發更好！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;提前點火也是非常廣泛的用於消緩燃燒消耗時間的應對方法。&#xA;在此之前我們之所以一直都說火星塞在活塞達到最頂點的時候點火，那是基於燃燒能夠「瞬間」完成的理想前提。&#xA;但是既然實際上燃燒需要一些時間，那麼實務上我能不能提前，在活塞快到頂但還沒到的時候就點火呢？&#xA;答案是可以的！&#xA;在絕佳的提前點火時機把握之下，當活塞真正達到頂點的時候，&#xA;就會剛好是燃燒最劇烈，放熱反應最大的時候；&#xA;注意這並不能夠解決燃料燃燒需要時間所帶來的上述問題，&#xA;只是儘量減少燃燒耗時產生的負面影響而做的補償手段而已。&#xA;因此這種調校方案有一定程度的效果限制，甚至過於激進的調整調較也會造成風險！&#xA;提前點火時機的掌控和很多因素都有關係，比方曲軸轉速、進氣溫度、空氣溼度、噴油量多寡等等等等，&#xA;太過於「剛好」的調校，很容易會導致稍微一個風吹草動，就變成主動製造爆震的結果！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-9/fig5-3-piston-top-shape.jpg&#34; alt=&#34;fig5 3 piston top shape&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 9. 這是一個正在被使用工具檢測中的活塞，注意到它的頂不不是簡單的平面，而是呈現出一種奇異的形狀 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_5&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_5&#34; title=&#34;View footnote.&#34;&gt;5&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;最後還有一個問題，大家用的都是一樣的汽油，化學性質相同，&#xA;燃燒時間雖然會因為機構設計調較而有所增減，但基礎時間應該都不會差太多。&#xA;那麼是什麼東西真正造成燃燒的時間能夠佔比膨脹行程的大幅度變化，&#xA;從個位數百分比到幾十百分比這種幅度呢？&#xA;其實會讓燃燒佔膨脹行程的比例大幅度波動的最大影響因素，就是曲軸轉速！&#xA;假設曲軸轉速 3000 RPM (這是大多二戰時期航空發動機的最高轉速範圍)，&#xA;那麼曲軸轉一圈就是 20 豪秒，一個活塞行程就是 10 豪秒，&#xA;那麼如果汽油燃燒完全需要 1 豪秒的話，燃燒就是佔了膨脹行程的 10%。&#xA;如果轉速再繼續上升，那麼效率就會一直下降，活塞做功輸出也會愈來愈降低，&#xA;這就是為什麼那些發動機馬力圖表在過了額定最佳轉速之後，馬力曲線都會往下掉下去的根本原因！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;那麼既然如此，我們能不能反其道而行，&#xA;降低發動機轉速是不是就可以讓燃燒過程幾乎等同於理想的瞬間完成，從而提升效率呢？&#xA;答案是當然可以的！&#xA;同樣以上面的情況為例，當轉速下降至 500 RPM，活塞一個行程的時間就是 60 毫秒，&#xA;這樣同樣花 1 毫秒燃燒汽油，燃燒佔比膨脹行程就從 10% 變成 1.67%，情況馬上就好轉了！&#xA;只不過結果也很明顯，這麼做的代價就是得犧牲發動機功率數值，也就是馬力了；&#xA;這就是為什麼那些更加講究效率的發動機轉速都不高、馬力也不高的其中一項重要原因！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_燃燒不完全&#34;&gt;燃燒不完全&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;理想的情況下，投入的燃料當然會完全燃燒，與空氣中的氧發生反應。&#xA;但是如同前面所述的同樣原因，因為在每次循環中留給燃燒的時間實在非常匆促，&#xA;除了已經解釋過的燃燒本身需要時間進行以外，&#xA;實際上依據工況的不同，會發生或多或少的部份燃料其實並沒有來得及發生氧化反應，&#xA;也就是會發生燃料不完全燃燒的情況。&#xA;不完全燃燒除了環保上的問題之外，對於效率來說也是個不利的事情，&#xA;畢竟投入的燃料有一部份並沒有釋放化學熱能來參與做功就被排掉，產生了無效的燃料消耗。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在燃燒前盡可能讓汽油徹底霧化、蒸發，&#xA;以及設計流暢的進氣流場，使油氣能在最短的時間內充份混合，&#xA;這兩種做法基本算是完全正向的解決方案了。&#xA;除此之外，解決或改善燃燒不完全的問題還有幾個方法，但是都帶有些副作用，&#xA;正所謂有一好就沒兩好，實際的採用方案還需要設計者去做斟酌妥協。&#xA;比如提高空燃比，也就是降低燃料量，&#xA;這樣在空氣中氧比燃料多的情況下，自然更容易完全燃燒燃料，&#xA;當然副作用會導致功輸出降低、發動機功率降低。&#xA;降低發動機轉速也是個方法，畢竟當每個行程的時間長度足夠長的時候，&#xA;也就更有時間去讓燃料完成燃燒，而此方法的副作用當然也是會導致功率降低。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_汽缸散熱&#34;&gt;汽缸散熱&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;我們知道汽缸處在不斷反覆燃燒的環境下，&#xA;為了排出不斷累積的熱量以防止活塞汽缸被燒毀，我們給發動機設計了散熱機制，&#xA;這個在我過往的文章&#xA;&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_engine-cooling&#34;&gt;[&lt;a id=&#34;_footnoteref_6&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_6&#34; title=&#34;View footnote.&#34;&gt;6&lt;/a&gt;]&lt;/sup&gt;&#xA;裡面有講述過。&#xA;但是這個散熱的行為其實會影響發動機的工作循環，&#xA;使得它不能完全符合我們在理論分析中所假設的絕熱條件。&#xA;往細了探究的話，&#xA;汽缸散熱這件事情在壓縮行程存在正面幫助，可以降低氣體壓縮所需要的功；&#xA;但是在膨脹行程就會偷掉氣體內能，產生負面影響，同樣在燃燒過程也是；&#xA;至於進氣和排氣行程則基本沒有差別。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;不過實務上因為汽油引擎的工作轉速夠高，單一行程的時間很短暫，能被帶走的熱量非常有限，&#xA;因此散熱現象對於單一循環來說造成的影響只能說是確實存在，但影響差異微小，&#xA;基本還是與絕熱條件非常相近。&#xA;汽缸散熱條件其實真正最大的影響是對於燃燒的部份。&#xA;因為汽缸內壁面的溫度相較於火焰溫度可以算是冰冷低溫了(粗估大約 200℃)，&#xA;那麼燃燒火焰在傳遞到接近汽缸壁時，火焰就更難繼續延續傳遞，&#xA;也就是說愈靠近汽缸壁表面的油氣其實愈不容易參與燃燒發生氧化反應；&#xA;至於導致的影響，請參閱前一項「燃燒不完全」的內容。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;那麼這問題能夠怎麼解決呢？說實在的實務上實在很難！&#xA;理論上我們應該在燃燒和膨脹行程停止汽缸散熱，然後在其它過程繼續散熱；&#xA;理想上這樣能把問題解決的非常徹底，但是，這樣的發動機究竟要怎樣造出來呢？&#xA;也許是近代新式汽油發動機設計的進氣對流設計加上缸內燃油直噴機制，&#xA;可以讓油氣集中在中間區域的作法可以比較好的緩解掉這個問題吧；&#xA;雖然說它們這些機制主要是為了稀薄燃燒的目的，對於汽缸壁溫度的影響只算是副作用而已！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;intake-exhaust-drag&#34;&gt;進氣與排氣阻力&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-9/fig8-1-otto-cycle.png&#34; alt=&#34;fig8 1 otto cycle&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 10. 常見的熱效率 P-V 分析圖，其中狀態 0 和狀態 1 之間即為進氣與排氣的行程 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_7&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_7&#34; title=&#34;View footnote.&#34;&gt;7&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;不知道讀者有沒有發現，在純理論的分析中，一般都完全忽略進氣與排氣這件事？&#xA;其實就算少部份有把進排氣行程給畫出來的分析(例如上圖 &lt;em&gt;Figure 10&lt;/em&gt;)，基本也都是意思意思一下而已，&#xA;因為進氣與排氣時的閥門都是打開的，汽缸內外壓是一樣的，所以不會有任何機械功的產生或吸收。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;然而理想的假設其實忽略了活塞快速移動時，氣體會因為來不及即時通過氣閥進出而產生壓力差的現象。&#xA;如果考量到氣體進出充填與排放的流通性，那麼汽缸在進氣時其實內部的壓力會比外部還來得低(俗稱「負壓」)，&#xA;也就是說其實進氣的時候活塞是需要做功的；&#xA;排氣時亦然，汽缸內壓力會比外部來得高，活塞排氣同樣需要做功。&#xA;具體進氣排氣的內外壓力差大小與氣閥通量、以及活塞移動的速度有關，&#xA;也就是說發動機轉速愈快時在進排氣上產生的損耗愈大，&#xA;並且這現象並不是在挑戰極限轉速時才會發生，而是在一般運作轉速下就會存在的影響。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;氣體進出流通阻力給發動機的功效具體影響到底多大呢？我這裡實在很難去給出個分析結果，&#xA;不過依據經驗人士的透路，進排氣造成的損耗其實挺大的，&#xA;甚至於是給活塞發動機造成極限轉速上限的主要原因。&#xA;對比市場現狀的結果來看也同樣符合描述，怎麼說呢？&#xA;看看市面上那些發動機，一旦有廠家造出了新技術去讓進排氣更加順暢些，往往馬力就能得到飛躍性的提升！&#xA;(&lt;em&gt;其實如果要從理論上嚴格來說的話，這些技術並不能夠提升原來沒有的功率，&lt;/em&gt;&#xA;&lt;em&gt;只不過是把原本在理論分析上應該要存在，卻被損耗掉的功率給找回來而已。&lt;/em&gt;)&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-9/fig8-2-valves.jpg&#34; alt=&#34;fig8 2 valves&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 11. 汽缸頭的閥門和進氣與排氣管特寫 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_8&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_8&#34; title=&#34;View footnote.&#34;&gt;8&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_機件摩擦&#34;&gt;機件摩擦&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;如同小學生都知道的一樣，&#xA;由各種運動零件組成的汽油發動機本身就會產生各種機件摩擦阻力，&#xA;消耗掉發動機的輸出功並轉化成些許廢熱。&#xA;發動機內所有的運動零件都會產生阻力並偷走發動機的動力，&#xA;連桿、曲軸、軸承，還有凸輪軸、分電盤等，&#xA;雖然它們的消耗相比於其它大頭而言真的影響幅度有限，但是影響卻仍然存在。&#xA;其中特別值得注意的是活塞環，&#xA;這個零件是為了使汽缸和活塞之間能夠進行移動的同時保持氣密而存在，&#xA;但是它所產生的摩擦阻力卻也足夠可觀。&#xA;依據經驗人士的透露，活塞環所產生的阻力，大概可以佔到發動機內所有機械零件阻力加總的 40%。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-9/fig9-1-piston-rings.jpg&#34; alt=&#34;fig9 1 piston rings&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 12. 在活塞外圍的兩個活塞環特寫 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_9&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_9&#34; title=&#34;View footnote.&#34;&gt;9&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_附屬設備抽稅&#34;&gt;附屬設備抽稅&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;除了前述那些真正純純是「消耗」的各項要素在拉低發動機的功率和效率之外，&#xA;還有一些動力是被發動機的周邊設備給吃掉的。&#xA;這些設備分走了部份動力是拿去做重要的事情的，並不是純粹的消耗，&#xA;並且每一項設備所提供的服務都是一個實用發動機能夠維繫運轉所必須的服務。&#xA;比方機油泵提供機油循環流動的動力，&#xA;冷卻液循環泵提供冷卻液體穿梭於引擎內部、及往返發動機與散熱器之間的動力，&#xA;磁電機提供火星塞點火所需要的高壓電流等。&#xA;這些小設備消耗的發動機功率著實並不多，算是零頭吧，&#xA;但是確實分走了發動機的功率，使得可以輸出給主要任務的功率小幅降低。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_總結&#34;&gt;總結&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在本篇的分析中，考量了更多實際現實與理論完美之間的差異要素。&#xA;在能夠估量的分析數據中，發動機效率從前篇基於完全理想的 58.4% (9 倍壓縮比)不斷下調，&#xA;因為活塞行程導致膨脹比受限而降為 53.4%，&#xA;又因油氣混合因素而下降為 42.3%，&#xA;再因燃燒時間的因素而合理下調至 41.2% ~ 37.3%，甚至在較為極端的條件下可以降低至 16.9% 之普。&#xA;而以上僅僅只是那些比較能夠進行分析估算的部份而已，&#xA;還有一些其它難以估計的影響因素進一步消耗發動機功率，並使能量轉化效率再度下降到更低的範圍。&#xA;後面這個部份筆者我實在難以計算分析給你看，只能引用一般流傳的數字，&#xA;汽油活塞發動機的總體熱效率約在 30% 上下&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_10&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_10&#34; title=&#34;View footnote.&#34;&gt;10&lt;/a&gt;]&lt;/sup&gt;&#xA;。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;本篇所講述的內容比較多瑣碎細節，相比起前篇的純理論分析，更多的部份是基於現實的妥協與限制。&#xA;講述這些內容的用意並不是刻意要來貶低汽油發動機，&#xA;而是因為在完全純理論的理想條件下，很難讓我們去理解在真實機器上的那些困難和限制。&#xA;在缺乏這些背景知識的前提之下，我很難去講解航空發動機的接續發展，&#xA;也很難讓我們明白不同發動機的實現之間造成性能落差的原因。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;那麼在這些知識基礎的鋪墊之後，從下一篇開始，就讓我們繼續看看，那些人們在汽油活塞發動機上曾經做過的努力，各種奇思妙想背後的原理與困境⋯⋯&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;footnotes&#34;&gt;&#xA;&lt;hr/&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_1&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_1&#34;&gt;1&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-8---%E5%8A%9F%E6%95%88%E5%88%86%E6%9E%90---%E5%9F%BA%E7%A4%8E%E5%8E%9F%E7%90%86/&#34;&gt;活塞引擎 8：功效分析 之 基礎原理&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_2&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_2&#34;&gt;2&lt;/a&gt;. &lt;a href=&#34;https://zh.wikipedia.org/zh-tw/%E8%87%AA%E7%87%83%E6%B8%A9%E5%BA%A6&#34;&gt;自然溫度&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_3&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_3&#34;&gt;3&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Table_of_specific_heat_capacities&#34;&gt;Table of specific heat capacities&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_4&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_4&#34;&gt;4&lt;/a&gt;. &lt;a href=&#34;https://web.eng.fiu.edu/tremante/EML3450/Table%20A-2_Ideal-gas%20specific%20heats%20of%20various%20common%20gases.pdf&#34;&gt;Table A-2_Ideal-gas specific heats of various common gases&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_5&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_5&#34;&gt;5&lt;/a&gt;. &lt;a href=&#34;https://www.tag-parts.com/tips-guides/engine-knowledge/28628.html&#34;&gt;Engine Technology : 引擎工程學 – 活塞環槽背後的祕密 (Piston Ring)&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_6&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_6&#34;&gt;6&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-3---%E6%95%A3%E7%86%B1%E8%88%87%E6%8E%92%E6%B0%A3/&#34;&gt;活塞引擎 3：散熱與排氣&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_7&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_7&#34;&gt;7&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Otto_cycle&#34;&gt;Otto cycle&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_8&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_8&#34;&gt;8&lt;/a&gt;. &lt;a href=&#34;https://forum.jorsindo.com/thread-2571777-1-1.html&#34;&gt;規格表數據解密！教你看懂規格表沒說的事！&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_9&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_9&#34;&gt;9&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Piston_ring&#34;&gt;Piston ring&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_10&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_10&#34;&gt;10&lt;/a&gt;. &lt;a href=&#34;https://zh.wikipedia.org/zh-tw/%E7%83%AD%E6%95%88%E7%8E%87&#34;&gt;熱效率&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>活塞引擎 8：功效分析 之 基礎原理</title>
      <link>http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-8---%E5%8A%9F%E6%95%88%E5%88%86%E6%9E%90---%E5%9F%BA%E7%A4%8E%E5%8E%9F%E7%90%86/</link>
      <pubDate>Sat, 14 Dec 2024 10:26:52 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-8---%E5%8A%9F%E6%95%88%E5%88%86%E6%9E%90---%E5%9F%BA%E7%A4%8E%E5%8E%9F%E7%90%86/</guid>
      <description>&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;本篇要從比較理論的方式，從物理化學的角度去計算活塞發動機的做功和效率，&#xA;目的是為了讓讀者可以從基礎科學的視角去完全明白活塞發動機運作原理的本源。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;雖然整個活塞引擎的結構看上去挺複雜，然而將它們一一拆解分類之後，從原理概念上來看卻沒有那麼複雜。&#xA;那些動來動去、彎來拐去的機械結構，比如鏈條、汽門、凸輪軸、油泵等等等等，&#xA;其實它們的作用只是為了服務引擎使能正常運作，&#xA;甚至是曲軸、連桿這些大零件也只是用來傳遞動力、改變作用力方向等作用。&#xA;這些那些的複雜零件在運作的過程雖然會消耗掉發動機的功率，&#xA;但是首先它們大部份效率都非常高，總共吃掉的功率雖不至於小到能夠被完全忽略，卻也沒有大到值得過度關注。&#xA;並且它們只消耗功率而並不產生功率，將它們仔細推敲設計到極致確實也是各廠商努力在做的事情，&#xA;但是基於前述原因，提升這些零配件的效能最終為引擎整體帶來的性能提升非常非常有限。&#xA;這就好比有一句投資理財的名言：「你沒辦法靠著節儉成為大富翁，要帶來階級式的跨越必須得從開源著手！」&#xA;(這句話本身隱藏了更多投資理財上的限制條件和但書，還好在討論發動機的情況下我們可以完全忽略它！)&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這樣說起來，那麼引擎上的什麼地方才是真正能量與功率的主要產出地，左右整體性能的關鍵之所在呢？&#xA;那就是汽缸、活塞、與氣體了。&#xA;真正決定一款發動機主要性能數據的絕對重量級影響力，都是發生在汽缸裡面的一切。&#xA;掌握了在汽缸裡面發生的事情，才能夠從源頭抓住一顆引擎的核心性能。&#xA;這就是為什麼那些講理論的學者在上課的時候，基本只盯著一個汽缸裡面所發生的事情在研究分析的原因了。&#xA;因此本篇的所有內容也同樣如此，我們聚精會神，目光鎖定在汽缸裡面所發生的一切：進氣、壓縮、燃燒、膨脹。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;另外補充一點，我們只需要考慮一個汽缸就可以了，因為多缸引擎的配置就是把單缸的結論乘以 N 而已，&#xA;剩下的就是機械設計與系統佈置的細節了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_認識氣體特性&#34;&gt;認識氣體特性&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-8/fig1-1-constant-pressure-heating.png&#34; alt=&#34;fig1 1 constant pressure heating&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 1. 將無限彈性氣球內的氣體加熱 → 溫度上升、體積膨脹，但壓力不變&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-8/fig1-2-constant-volume-heating.png&#34; alt=&#34;fig1 2 constant volume heating&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 2. 將無限強化鋼桶內的氣體加熱 → 溫度上升、壓力上升，但體積不變&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;首先我們得先來學習一些氣體的基本物理特性。&#xA;對於氣體，不論是空氣、水氣、還是混合了汽油的油氣、或是其它什麼氣體，&#xA;它們的三個狀態數值是我們所關注的重點，那就是：體積、壓力、與溫度。&#xA;所有使用燃燒的熱量來玩空氣的引擎，都是在將氣體的這三個狀態玩來玩去而已。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;如上圖所表現的情況一樣，很符合我們在日常生活中對於氣體的直覺理解。&#xA;當我們對一團氣體進行加熱，那麼它的溫度就會上升(好像是廢話)，&#xA;此外連帶的它的體積和壓力也都會有同步增加的趨勢。&#xA;以 &lt;em&gt;Figure 1&lt;/em&gt; 為例，我們將氣體裝在一個大氣球裡面加熱。&#xA;不用擔心這個氣球會不會破掉還是融化的問題，因為這氣球是用亞德曼橡膠製成的無限彈性氣球，&#xA;所以氣球內被加熱的氣體可以無限制的膨脹變大。&#xA;那麼在此條件之下，氣體的壓力就維持不變，只有體積和溫度會往上升高，這就是熱力學理論中的「等壓過程」。&#xA;另一種情況則是像 &lt;em&gt;Figure 2&lt;/em&gt; 那樣，將氣體放在一個硬桶子裡面進行加熱。&#xA;不用擔心這個桶子會不會爆炸、變形的問題，因為這桶子是用鋼彈尼姆合金製成的。&#xA;那麼在此條件之下，氣體的體積就維持不變，只有壓力和溫度會往上升高，這就是熱力學理論中的「等容過程」。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;為什麼叫作等壓過程或等容過程，而不是叫作等壓加熱或等容加熱呢？&#xA;因為這些氣體的特性是對稱的，並不是只有在加熱過程中才是如此，在降溫過程中同樣如此。&#xA;比如我們將上圖的東西放進大冰箱裡面降溫，&#xA;則大氣球內的氣體溫度會降低，同時氣球也會愈來愈小，因為氣球裡面的氣體體積在不斷縮小，&#xA;不過從頭到尾氣球內的氣壓都沒有變化就是了。&#xA;同樣的，鋼桶內的氣體溫度也會降低，可是因為鋼桶的形狀不變，所以氣體體積從頭到尾都是一樣的，&#xA;只是氣壓下降了。&#xA;這時如果你將已經足夠冷卻降溫的鋼桶蓋子給打開，外面的空氣就會因為桶內的低壓而颼的一聲被吸進去。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;以上我們是透過人工控制氣體溫度，然後觀察它的體積和壓力邊化，都還算符合一般生活直覺。&#xA;然而溫度、壓力、體積這三者的變化其實是互相都能影響彼此的，&#xA;比方說我可以施力給氣體增加壓力，那麼氣體的溫度會上升、體積會縮小。&#xA;體積縮小還算符合一般人的直覺，畢竟我給它加壓了嘛，&#xA;但是氣體會隨著增壓而升溫的部份可能就不在所有人都有經驗過的直覺裡了，但是它的溫度確實真的會上升。&#xA;其實若有仔細觀察生活經驗也並不是完全不能發現這些氣體行為。&#xA;比方有操作過手動打氣桶給東西打氣的讀者，可能會發現每當打氣完成後，打氣桶的下端都會溫溫熱熱的，&#xA;只不過可能分不清楚到底是因為活塞和汽缸接觸摩擦所生的熱，還是由於壓縮了空氣所生的熱而已。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;但是另外一種生活經驗肯定可以從相反的方向應證氣體溫度隨壓力變化的事實。&#xA;當我們操作任何的手持式噴霧罐操作時，&#xA;不論是用來清潔灰塵的壓縮空氣噴罐、殺蟲劑噴罐、還是玩具瓦斯槍的瓦斯噴罐等等，&#xA;當我們持續一段時間連續操作噴霧後，一定能明顯感受到罐子會變得冰冰涼涼的，&#xA;而這就是氣體因為持續膨脹減壓而連帶造成的溫度下降現象。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_理想氣體方程&#34;&gt;理想氣體方程&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;以上都是對於氣體特性基於定性的講解，&#xA;而如果想要知道這些氣體特徵具體變化的量，就不得不接觸一些數學公式了。&#xA;於是本節要來介紹一些氣體方程式。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;首先介紹的是萬用的理想氣體方程式，&#xA;它的好處是比起後面介紹的幾個方程式，這個理想氣體方程幾乎是在什麼過程下下都能適用：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ P V = n R T \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;quoteblock&#34;&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;&lt;em&gt;其中：&lt;/em&gt;&lt;br/&gt;&#xA;&lt;em&gt;P 為壓力，單位為 Pa，即 \( \frac{N}{M^2} \)；&lt;/em&gt;&lt;br/&gt;&#xA;&lt;em&gt;V 為體積，單位為 \( M^3 \)；&lt;/em&gt;&lt;br/&gt;&#xA;&lt;em&gt;T 為溫度，單位為 K，就是一般攝氏溫度加上 273.15 就是了；&lt;/em&gt;&lt;br/&gt;&#xA;&lt;em&gt;R 為理想氣體常數，是一個固定的數字(8.3144626)；&lt;/em&gt;&lt;br/&gt;&#xA;&lt;em&gt;n 為氣體的分子的數量，單位為莫耳。&lt;/em&gt;&lt;br/&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;上面出現了一些可能比較難以理解的東西，比如分子莫耳數等，&#xA;但是其實這些東西在我們的應用中會被化簡掉，所以其實不理解也不重要，而且我也不想去解釋它，&#xA;所以如果看不懂其實也沒關係。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;上面這個理想氣體方程式在本篇中是被用來計算固定的一團氣體在兩個不同狀態下的變化關係。&#xA;比方說我們把一團空氣從狀態 1，給它加熱、加壓、或壓縮、膨脹、還是散熱降溫等等，不管，&#xA;反正最後這團空氣變成了狀態 2。&#xA;那麼這兩個狀態下的空氣同樣都滿足上面的理想氣體方程式，也就是：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ P_1 V_1 = n R T_1 \]&#xA;\[ P_2 V_2 = n R T_2 \]&#xA;\[ \frac{ P_1 V_1 }{T_1} = n R = \frac{ P_2 V_2 }{T_2} \]&#xA;\[ \frac{ P_1 V_1 }{T_1} = \frac{ P_2 V_2 }{T_2} \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;我們就用前面的氣球和鋼桶的例子來練習一下，假設初始狀態也就是狀態 1，是一般情況下的室內空氣。&#xA;那麼我們取用 1000 公升的空氣來做範例實驗，也就是說：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ P_1 = 101325 Pa \]&#xA;\[ V_1 = 1000 L = 1 M^3 \]&#xA;\[ T_1 = 26.85 ℃ = 300 K \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;然後我們將空氣加熱到比方說 600 K，也就是 \( T_2 = 600 K \)，那麼：&#xA;氣球的那個實驗因為壓力不變，所以 \( P_2 = P_1 \)，&#xA;那 \(V_2\) 就會變成 \( 2 M^3 \)；&#xA;而在鋼桶實驗下因為體積不變，所以 \( V_2 = V_1 \)，&#xA;那 \(P_2\) 就會變成 202650 Pa。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_比熱容&#34;&gt;比熱容&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;我們將氣體加熱會導致氣體升溫，但是給了多少熱量會導致氣體溫度上升幾度呢？&#xA;這個問題在我們的發動機分析中頗為重要，&#xA;畢竟當我們需要計算效率的時候，就會需要知道我們到底丟了多少熱量進去？&#xA;於是本節要介紹一個重要的物體特性參數：比熱容(Specific Heat Capacity)，一般簡寫為 C。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ Q = C M \Delta T \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;quoteblock&#34;&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;&lt;em&gt;其中：&lt;/em&gt;&lt;br/&gt;&#xA;&lt;em&gt;M 為物體質量；&lt;/em&gt;&lt;br/&gt;&#xA;&lt;em&gt;C 為比熱容；&lt;/em&gt;&lt;br/&gt;&#xA;&lt;em&gt;\( \Delta T \) 為物體升溫或降溫的前後溫度差；&lt;/em&gt;&lt;br/&gt;&#xA;&lt;em&gt;Q 為總共吸收或釋放的熱量。&lt;/em&gt;&lt;br/&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;比方說水的比熱容為 4200 (\( \frac{J}{kg·K}\))，&#xA;意義就是如果我要將 1 公斤的水(液態)升溫 1 度的話，會需要將 4200 焦耳的熱量丟進水裡；&#xA;反過來說也是一樣的，我丟入了 4200 焦耳的熱量可以讓 1 公斤的水上升溫度 1 度，&#xA;或者讓 2 公斤的水上升溫度 0.5 度；&#xA;當然再反過來理解同樣通用，如果 2 公斤的水溫度下降了 1 度，表示水放出了 8400 焦耳的熱量到外面。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;此外一點需要注意，以上的條件只有在水為液態的時候才成立；&#xA;如果讀者您自己在家裡做實驗把它加熱太多到汽化了，&#xA;那麼汽化之後的反應就要比照下面描述的氣體計算法去做處理，而且還需要多考慮一個汽化熱的問題。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_氣體比熱容&#34;&gt;氣體比熱容&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;以上這個簡單的比熱容計算只能用在像是液體、固體類的東西上。&#xA;但是氣體不一樣，氣體能膨脹，而偏偏在不同膨脹狀況下的氣體的比熱容是不一樣的！&#xA;因此對於氣體，比熱容的原理和用法是一樣的，但是會分成兩個參數，比較複雜一點。&#xA;不像固體或液體只有一個比熱容 C，氣體的比熱容分為 \(C_p\) 和 \(C_v\) 兩個數字，&#xA;以空氣為例，空氣的 \( C_p = 1056.29 (\frac{J}{kg·K}) \)、\( C_v = 754.49 (\frac{J}{kg·K}) \)，&#xA;要依據加熱或減熱的過程套用其中一個數字。&#xA;比如前面的鋼桶加熱過程就屬於定容的加熱，所以要使用 \(C_v\) (754.49) 來計算；&#xA;而前面的氣球加熱過程就屬於定壓的加熱，要使用 \(C_p\) (1056.29) 來計算。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;我們發現空氣定壓加熱比定容加熱所需要的熱量多了不少，這是由於氣體會膨脹導致的。&#xA;在定壓的條件下，當我們給氣體加熱時，氣體一定會因為受熱而升壓，&#xA;那麼為了要維持氣體的壓力不變，就得讓氣體膨脹&#xA;(氣體增溫以後，要不就升壓，要不就膨脹，或者二者皆有之)。&#xA;而根據前面我們所學過的氣體狀態特性，氣體膨脹時會產生降溫的趨勢，&#xA;和我們加給它熱量導致的升溫趨勢正好互相對抗。&#xA;因此最終的結果就是，在定壓條件下，當我們給氣體投入熱量時，能夠使之產生溫度的增加量較少，&#xA;至少相比於同樣氣體在定容條件下是少了不少；&#xA;或者也可以說，當我們要給氣體增加同樣的溫度時，&#xA;定壓條件下將會需要更多的熱量，而定容條件下所需要的熱量就少得多。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;回到我們的活塞引擎分析，雖然在燃燒過程中活塞仍處在運動狀態，理論上是壓力和容積同時在變化，&#xA;但是在理論分析的時候我們不會考慮的這麼複雜。&#xA;由於汽油油氣的燃燒速度非常快，因此我們會假設油氣在活塞達到頂點的時候瞬間燃燒完成，&#xA;所以採用的是定容加熱條件，使用 \(C_v\) 去做計算。&#xA;另外在此偷偷先告訴你，在渦輪引擎分析中，燃燒是在定壓條件下完成的，&#xA;所以會套用 \(C_p\) 做計算。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_絕熱指數&#34;&gt;絕熱指數&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;前面解釋過為什麼氣體的 \(C_p\) 比 \(C_v\) 還要大的原因，&#xA;其實從物理動力能量的角度來解釋也是同樣說得通的。&#xA;事實上氣體在膨脹的同時也是在對外界做功的，&#xA;即便它做的功沒有被我們攔截下來並加以利用(比方說氣球的膨脹)，然而它確實是對外做了功。&#xA;因此相比於定容加熱的情況，當我們在定壓條件下對氣體加熱時，&#xA;其實我們所投入的熱量當中有一部份是被氣體拿去膨脹做功了，因此氣體增加溫度的幅度自然較低&#xA;(氣體的溫度反應的是氣體自身的內能)。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;每一種氣體都有自己的 \(C_p\) 和 \(C_v\) 值&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_1&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&#xA;，&#xA;而我們前面說過該二值之所以存在差異主要是因為膨脹的因素所導致。&#xA;如果一種氣體特別容易產生膨脹和壓縮現象，那麼可知這種氣體自身的 \(C_p\) 和 \(C_v\) 差距就會愈大。&#xA;因此 \(C_p\)、\(C_v\) 差異愈大的氣體愈會具有明顯的膨脹與壓縮效應，&#xA;相反的該二值差距愈小的氣體則膨脹壓縮效應愈不明顯；&#xA;如果二值相等則表示該物質沒有膨脹壓縮效應，基本上這種東西就不能夠被稱為是氣體了！&#xA;因為同一氣體兩種比熱容的差異正好反應出氣體的膨脹壓縮效果，&#xA;因此我們也可以使用該二值的差異來表達氣體的可壓縮能力。&#xA;該二值的比值(是的是比值，雖然前面的描述可能會讓人以為是差值)有個熱力學上的專有名詞，&#xA;叫「絕熱指數」(Heat Capacity Ratio)，簡寫為 κ。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ κ = \frac{Cp}{Cv} \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;由於 \(C_p\) 總是大於 \(C_v\)，因此絕熱指數總是大於 1。&#xA;這個絕熱指數與氣體的膨脹能力直接關聯，並且在後面的各種分析計算中我們也會不斷看到它的身影。&#xA;回顧前面給出的空氣比熱容數值，我們可以知道空氣的絕熱指數大約就是 1.4。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_膨脹壓縮做功&#34;&gt;膨脹、壓縮、做功&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-8/fig2-1-piston-dimension.png&#34; alt=&#34;fig2 1 piston dimension&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 3. 汽缸、活塞、與計算相關的定義標示&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;了解前面的氣體特性之後，我們將眼光放回汽缸與活塞上面。&#xA;如上圖所示，假設一個形狀中規中矩的圓柱汽缸內有一隻活塞。&#xA;如果我們用手將活塞從位置 1 推到位置 2 的話，我們的手需要出多少能量、做多少功呢？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;假設汽缸內部截面面積為 A，&#xA;活塞在位置 1 的時候與汽缸頭的距離為 \(X_1\)，此時汽缸內的空氣體積為 \(V_1\)；&#xA;活塞到了位置 2 的時候與汽缸頭的距離為 \(X_2\)，彼時汽缸內空氣體積為 \(V_2\)。&#xA;我們先暫時簡單化一下，暫時假設汽缸內的空氣壓力不會變化，也就是 \( P_1 = P_2 = P \)，&#xA;晚一點再把壓力變化的因素加回來。&#xA;那麼從 1 到 2 的過程所需要的能量(E)，按照機械功的定義，即為力(F)乘上移動距離：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ E = F ( X_1 - X_2 ) \]&#xA;\[ E = P A ( X_1 - X_2 ) \]&#xA;\[ E = P ( V_1 - V_2 ) \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;也就是說，活塞做功其實就是壓力和容積乘積的差。&#xA;接下來我們將上面的式子以積分的型式改寫：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ E = \int_{V_1}^{V_2} \mathrm{P}\,\mathrm{d}V \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;剛才我們做了一個不切實際的假設，那就是無論活塞怎麼壓縮空氣，空氣的壓力都維持不變。&#xA;這當然是不可能的事情，只是為了先簡化理解而不得不做的假設，那麼現在我們將這一部份的因素加回來。&#xA;雖然現在還不知道氣體壓力和體積之間的準確關係，但至少我們知道壓力和體積有關係，且隨體積改變，&#xA;那麼我們就假設壓力為體積的函式並改寫積分式：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ E = \int_{V_1}^{V_2} \mathrm{ \mathit{P}(V) }\,\mathrm{d}V \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;當然啦，如果 P 並不隨 V 變化，而是從頭到尾維持一個數值不變，&#xA;那麼從下面即將要說明的積分原理圖來看就會知道，這個積分式可以直接退化變成 \( E = P ( V_2 - V_1 ) \)，&#xA;與前面我們沒用積分的結果相合。&#xA;(正負號的差異後面再說明)&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;quoteblock&#34;&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-8/fig2-2-integral-demo.png&#34; alt=&#34;fig2 2 integral demo&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 4. 積分原理：將一條隨意曲線分割成三個區塊，然後把三個長方形的面積加起來就當作是曲線面積了！&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;對於沒有學習過微積分的讀者請不要感到害怕！&#xA;這裡不會要你去推導解算微積分，這個事情我來做就好了，我們的重點在於理解。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;積分的意義其實就是在算一條曲線下的面積，例如上圖(&lt;em&gt;Figure 4&lt;/em&gt;)所示的汽缸內體積壓力關係圖，&#xA;我們要算的其實就是體積 \(V_1\) 到 \(V_2\) 之間，壓力變化線下面的面積。&#xA;對於這種需求而言，我們有一種很笨很原始的方法，就是把體積的部份切割為幾個區段，&#xA;以上圖示例來說我切了 3 塊區間，每一個區塊的寬度就是 dV。&#xA;管他壓力變化呢，在每個區間內我就假定壓力是固定不變的，這樣面積就好算了吧？&#xA;單一區塊內的面積就是 \( P \cdot dV \)，然後把 3 個區塊的面積都加起來，這就是我們要的 P-V 總面積了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;當然我們看圖就會發現，這樣分 3 塊計算下來的樣子雖然有了，但誤差挺大！&#xA;如果要降低誤差使結果更加精準，我們可以切割為更多區塊來計算，30 塊、300 塊、3000 塊……。&#xA;如果我們將它切割為無限多塊，那麼算出來的結果就是零誤差的實際結果了；&#xA;而這，其實就是積分的原理，而上面的積分式也就是在表達一樣的意思！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;那麼要繼續探究這個問題，我們就要知道當空氣體積變化的時候，壓力與之的對應關係了。&#xA;前面介紹過的理想氣體萬用方程式仍然可用，但顯然不太夠用，&#xA;因為我們知道空氣在壓縮的時候，溫度和壓力同時都會上升(相反在膨脹的時候二者同樣都會下降)，&#xA;然而卻無法知道它們各自上升了多少？&#xA;因此這裡還要再介紹幾個有關的氣體狀態關係式，&#xA;這些式子不像萬用方程那樣萬用，而只有在絕熱可逆的情況下可以使用，&#xA;好在我們所在意的汽缸活塞壓縮和膨脹正好就符合這樣的條件，因此：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ P_1 V_1^κ = P_2 V_2^κ \]&#xA;\[ T_1 V_1^{κ-1} = T_2 V_2^{κ-1} \]&#xA;\[ T_1^κ P_1^{1-κ} = T_2^κ P_2^{1-κ} \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;上面三條算式中出現了很多眼熟的 κ，這就是氣體的絕熱指數，我們前面有解釋過，&#xA;因為我們討論的例子裡面裝的就是空氣，因此可以直接帶入 κ = 1.4。&#xA;這樣我們只需要知道活塞在某一個位置時的氣體狀態(P、V、T)，&#xA;就可以算出活塞在另一個位置時的氣體狀態。&#xA;如果汽缸內初始裝的是一般室溫條件(101325 Pa、300 K)的 3 升空氣，&#xA;假設我們最終的狀態 2 會把空氣體積壓縮為原本的十分之一(也就是 0.3 L)，&#xA;那麼透過上面三個方程(其實只要第一個就可以了)加上前面的理想氣體方程，&#xA;我們就可以算出位置 2 下壓力與溫度的各自數值了。&#xA;事實上不只可以算出位置 2 的氣體狀態，連活塞在中間每一個任意位置的氣體狀態都能夠計算出來，&#xA;結果就會如下圖(&lt;em&gt;Figure 5&lt;/em&gt; 與 &lt;em&gt;Figure 6&lt;/em&gt;)所示。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-8/fig2-3-pressure-volume-distribution.png&#34; alt=&#34;fig2 3 pressure volume distribution&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 5. 汽缸內壓力與體積關係圖&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-8/fig2-4-temperature-volume-distribution.png&#34; alt=&#34;fig2 4 temperature volume distribution&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 6. 汽缸內溫度與體積關係圖&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;從圖表的呈現可以明顯看出，汽缸內空氣的壓力和溫度都隨著我們不斷壓縮缸內的空氣而增加，&#xA;此外&lt;strong&gt;壓力的增加比起溫度的增加是更為劇烈的&lt;/strong&gt;。&#xA;相比於溫度隨著壓縮的升溫，壓力的增加趨勢明顯是更為急遽的指數級變化，&#xA;這個現象很重要，會貫穿整個功效分析過程。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;關於這個現象我們可以這樣理解：&#xA;我們不壓縮，只靠加熱就能讓缸內氣壓增加，這點符合生活常識，很容易理解；&#xA;我們壓縮氣體也會直接導致氣壓增加，也很符合生活常識；&#xA;而壓縮過程同樣會導致氣體溫度上升，壓縮本來就會增加壓力了，這邊它又還升溫，&#xA;於是壓力就爬的更快了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;那麼活塞在任何一個位置(V)時的壓力(P)就可以表示為：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ P = P_{ref} \left( \frac{V_{ref}}{V} \right)^κ \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;上面的 \(P_{ref}\) 和 \(V_{ref}\) 可以選用任何一個已知條件下的氣體狀態，&#xA;可以選用 \(P_1\) 和 \(V_1\)，也可以選用 \(P_2\) 和 \(V_2\)，&#xA;看在做計算的時候哪一邊的數值更容易事先取得而定，&#xA;因此這裡才以 \(P_{ref}\) 和 \(V_{ref}\) 表示之。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;知道了壓力隨體積的變化關係之後，前面的活塞做功算式就可以寫成這樣：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ E = \int_{V_1}^{V_2} \mathrm{ P_{ref}\left( \frac{V_{ref}}{V} \right)^κ }\,\mathrm{d}V \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;積分後的結果就是：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ E = \frac{ P_{ref} V_{ref}^κ }{ 1 - κ } \left( V_2^{1-κ} - V_1^{1-κ} \right) \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;然後你會發現，\(V_1\) 和 \(V_2\) 可以互相調換位置，算出來的數字是一樣的，只不過差了個正負號。&#xA;它的意義在於做功的方向，如果活塞從位置 2 移動到位置 1，那是活塞在對外面做功，所以最後的功是正值；&#xA;如果活塞從位置 1 移動到位置 2，那是外面在對活塞做功，活塞內的氣體吸收了外面的能量，因此這個功是負值。&#xA;這告訴我們一個重要的性質，在兩端條件相同的情況下，氣體壓縮所需要的能量和膨脹所放出的能量是一樣的。&#xA;意思就是說，無論活塞膨脹的時候產生的動力讓我們有多開心，&#xA;但是我們也需要付出同樣的能量才能把活塞推回那個位置！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-8/fig2-5-piston-and-atmosphere.png&#34; alt=&#34;fig2 5 piston and atmosphere&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 7. 活塞除了受汽缸內壓力推動之外，還受環境大氣壓力推動&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;最後別忘了考慮環境壓力在活塞運動中產生的作用。&#xA;如上圖(&lt;em&gt;Figure 7&lt;/em&gt;)所示，汽缸內的活塞其實一直受到兩股氣壓的作用，&#xA;一個是缸內的氣壓，另一個是外面的大氣壓力(\(P_{atm}\))。&#xA;在壓縮的過程，我們的手除了要對抗缸內不斷增強的氣壓之外，外面大氣壓力其實也幫我們推了一把；&#xA;在膨脹過程，活塞除了受到內部高壓空氣推動之外，也同時需要對抗大氣壓力的阻力。&#xA;因此我們的活塞做功計算式其實需要修正一下，要扣除大氣壓力的影響；&#xA;不過還好大氣壓力自始至終維持同一個數值不變，所以大氣壓力對活塞所做的功計算就非常簡單。&#xA;修正後的活塞做功計算式如下：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ E = \frac{ P_{ref} V_{ref}^κ }{ 1 - κ } \left( V_2^{1-κ} - V_1^{1-κ} \right) - P_{atm} ( V_2 - V_1 )\]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_膨脹做功&#34;&gt;膨脹做功&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;現在來快速複習一下四行程發動機的運作：壓縮空氣，加熱空氣，然後膨脹空氣。&#xA;這時會不會好奇一個問題：為什麼要壓縮空氣呢？&#xA;如同我們前面計算出來的結論，壓縮是需要耗能的，&#xA;而且需要的消耗的能量和膨脹時放出的能量一樣多！&#xA;那麼這樣繞了一圈路，非得要先壓縮再燃燒膨脹的意義何在呢？&#xA;存在即真理，壓縮步驟當然是有大用，因此我們真正的目的其實不是去解釋壓縮有沒有作用，&#xA;而是去理解這個壓縮的步驟到底在引擎的原理中扮演什麼角色、起到何種作用？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;剛才我們已經研究過如果用手去推動活塞壓縮空氣所需要的能量，&#xA;那麼現在反過來看看，當氣體從高壓之下膨脹時能做多少功？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;因為壓縮和膨脹的過程是完全一模一樣的，因此上面的圖表和算式都可以拿來直接套用。&#xA;我們知道氣體的壓力隨著汽缸容積的變化，分佈的極不平均，&#xA;壓力幾乎全都聚集在圖表最左邊的區域。&#xA;因此我們知道活塞在膨脹運動的初始階段其實是最能夠做功的時候，&#xA;然後隨著氣體繼續膨脹，活塞也繼續推動繼續出力，但是能釋放出來的能量就愈來愈有限了。&#xA;為此我也做了一張圖表如 &lt;em&gt;Figure 8&lt;/em&gt;，&#xA;圖表的意義為這個汽缸如果在此例的膨脹過程中，到了某一個容積後就讓它停下來的話，&#xA;那麼活塞至此為止能夠釋放多少機械功出來？&#xA;例如當汽缸內空氣從 0.3 L 膨脹到 1.0 L 為止的話，活塞大約做了 600 J 的功；&#xA;如果繼續膨脹到 1.5 L 的話，那麼活塞大約累計做功 800 J。&#xA;而大約在 2.0 L 的位置，活塞的機械能量都差不多已經釋放完了，&#xA;往後繼續膨脹下去雖然還能夠再繼續做功，但是增幅範圍已經非常小了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這個結果很重要，我們從前就提過一般活塞引擎因為曲軸機械結構的原因，&#xA;基本沒辦法讓氣體膨脹到完全沒力為止，而是活塞到底了就停了，接下來活塞得往回走，&#xA;然後這些還有膨脹力的燃氣只好被捨棄並排放掉；&#xA;然而這張圖表卻告訴我們雖然以上的理論是正確的，&#xA;但是被浪費掉的能量其實可能並不會太可觀，還在一個可以接受的小幅損失範圍內。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-8/fig2-6-work-distribution.png&#34; alt=&#34;fig2 6 work distribution&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 8. 活塞在氣體膨脹過程的累積做功分佈&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_壓縮的意義動力循環分析&#34;&gt;壓縮的意義(動力循環分析)&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;剛才前面都還在玩手推壓縮再膨脹回來的遊戲，&#xA;單純就是在了解壓縮和膨脹而已，但是我們手上的這顆引擎還並沒有能夠對外輸出功率的能力，&#xA;那麼現在我們要開始來給空氣加熱了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;我們就拿前面所用的同樣的汽缸活塞配置來做分析，&#xA;同樣使用地面大氣條件的空氣取 3 L 作為缸內初始容積；&#xA;並且為了方便做對比，後續所有分析的配置都採用同樣的初始條件。&#xA;作為第一個分析對象，我們就仿效在 Otto 之前的人們一樣，&#xA;不用壓縮空氣就直接加熱，然後讓空氣膨脹。&#xA;我們就來給空氣加熱增加個 1000 度的溫度，&#xA;經由前面介紹過的比熱容算式，我們可以知道這需要投入 2772.7618 J 的熱量；&#xA;而後面的所有其它配置的分析，我們也完全比照這個實驗，&#xA;給空氣投入 2772.7618 J 熱量，這樣可以更容易的進行互相比較。&#xA;結果如下圖(&lt;em&gt;Figure 9&lt;/em&gt;)：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-8/fig3-1-power-cycle-r1.png&#34; alt=&#34;fig3 1 power cycle r1&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 9. 無壓縮程序(即壓縮比為 1)時，加熱空氣與膨脹做功，氣體的壓力變化過程(動力循環圖)&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;除了多了加熱之外，所有的一切就和前面介紹過的內容一樣。&#xA;給空氣增溫後，溫度來到 1300 K，壓力來到 439075 Pa。&#xA;在膨脹的行程裡，我們就讓活塞可以無限跑，&#xA;暫時先別管這樣的引擎機械結構要怎麼打造？總之我們有足夠的空間讓活塞充份膨脹就是了！&#xA;最後當缸內氣體膨脹為 8.7 L 的時候達到內外壓力平衡，活塞也停止在此。&#xA;總結缸內容積膨脹了 2.9 倍，做功 564.6911 J，效率為 20.37%。&#xA;這個結果好不好？我們暫且不評論，就當作個比較基準，&#xA;看看後面其它的情況結果如何再來做個比對。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;此外還有一個現象值得我們注意。&#xA;缸內壓力隨著氣體容積的增加而持續減小，&#xA;當內部壓力與外部環境壓力相同的時候，活塞完全做完所有的功，再也榨不出更多動力；&#xA;而此最終狀態下的氣體溫度約為 855 K (我們的初始氣體溫度為 300 K)，&#xA;呼應了我在&lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-7---%E5%8A%9F%E7%8E%87%E8%88%87%E6%95%88%E7%8E%87/#efficiency-in-cylinder&#34;&gt;前篇&lt;/a&gt;&#xA;&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_engine-efficiency&#34;&gt;[&lt;a id=&#34;_footnoteref_2&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_2&#34; title=&#34;View footnote.&#34;&gt;2&lt;/a&gt;]&lt;/sup&gt;&#xA;所講述的內容：&#xA;「氣體吸收能量而增加了壓力和溫度，其壓力被我們拿來做功，&#xA;可是其溫度我們卻無法利用，只能讓它成為系統廢熱然後排放出去；&#xA;然而即便溫度的增加需要吸收能量並且沒有用處，我們卻不能不給它加熱來提取其壓力。」&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-8/fig3-2-power-cycle-r3.png&#34; alt=&#34;fig3 2 power cycle r3&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 10. 無壓縮程序、與加入壓縮程序的動力循環比較圖&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;那麼現在我們來試試看先將空氣壓縮後再燃燒的情況。&#xA;先將空氣在汽缸內壓縮 3 倍體積，&#xA;也就是將容積從 3 L 壓縮為 1 L (過程即為 &lt;em&gt;Figure 10&lt;/em&gt; 中的藍色線段)後，&#xA;再將它升溫 1000 度，然後再讓它膨脹，也同樣的膨脹不受限。&#xA;結果是壓縮氣體花費了 216.7181 J 功，膨脹最終來到 6.8 L，膨脹倍率 6.8 倍，&#xA;膨脹做功 1400.2796 J。&#xA;雖然壓縮氣體這程序消耗了可觀的能量，但是這麼一來一回，&#xA;扣掉壓縮氣體所花費的能量之後，機械功靜輸出還有 1183.5615 J，&#xA;比前一個未壓縮的案例還多，熱效率則為 42.69%。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;我們發現不管是機械功的輸出、或是熱效率，&#xA;多了一個壓縮過程的情況都比前一個沒有壓縮的情況表現更佳，&#xA;僅僅加了三倍的壓縮就使效率上升約一倍！這是為什麼呢？&#xA;觀察圖表就能發現，雖然我們投入的熱量是一樣多的，提升的溫度差也是一樣的，&#xA;但是加了壓縮過程的版本在加熱的時候，壓力的增幅明顯高過沒有壓縮過程的增幅。&#xA;於是我們接下來再試試看如果加熱前再壓縮更多一點會怎麼樣呢？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-8/fig3-3-power-cycle-r6.png&#34; alt=&#34;fig3 3 power cycle r6&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 11. 再加倍壓縮的動力循環比較圖&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這次我們在加熱空氣之前先將空氣壓縮 6 倍，也就是把 3 L 空氣壓縮至 0.5 L 容積大小。&#xA;結果壓縮氣體花費了 542.8529 J，最終膨脹容積來到 6 L，膨脹倍率 12 倍，&#xA;膨脹做功 2018.4921 J，靜輸出功 1475.6392 J，熱效率來到 53.22%。&#xA;整體表現又比壓縮 3 倍的版本更好了，並且觀察圖表似乎也印證了一件事：&#xA;&lt;strong&gt;在加熱空氣前，如果空氣的壓力愈高，那麼加熱後的壓力增幅也愈大！&lt;/strong&gt;&#xA;事實上繼續嘗試壓縮 12 倍、壓縮 24 倍的圖表也同樣表現出了這樣的趨勢(&lt;em&gt;Figure 12&lt;/em&gt;)，&#xA;當壓縮倍率來到 24 倍的時候，靜輸出功 1892.2437 J，效率來到 68.24%。&#xA;這就是燃燒前先壓縮的精妙之所在，&#xA;也是為什麼但凡任何燒油的發動機想要在燃油效率上有所突破的話，&#xA;總是想盡辦法想要增加壓縮率的原因！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這就是燃燒前「壓縮」這個動作給發動機性能表現所帶來的決定性影響力，&#xA;也是 Otto 引擎能夠名流青史的根本原因。&#xA;事實上在 Otto 引擎發明之前就已經存在許多空氣引擎了，&#xA;它們就像最前面的那個沒有壓縮的引擎一樣，直接燃燒加熱空氣，然後膨脹推動活塞。&#xA;當然這種引擎整體功效都奇差無比，&#xA;也就不難想像為什麼後來 Otto 先生一推出自己的發明就能夠收穫一堆訂單了！&#xA;進氣、壓縮、燃燒、膨脹、排氣，這幾個活塞引擎動作的基本步驟，&#xA;也許在我們現代的後輩人眼裡並不是那麼讓人耳目一新的嶄新思想，甚至並不覺有多麼了不起。&#xA;但是這就像是世界上第一個繞出迴紋針的人一樣，試想如果把你生在他們的那個年代，&#xA;又有多少人能夠想得出來，在燃燒前要先給空氣加壓會這麼有用呢？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-8/fig3-4-power-cycle-r24.png&#34; alt=&#34;fig3 4 power cycle r24&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 12. 繼續嘗試更多壓縮程度的動力循環比較圖&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_從解析理論來解釋壓縮的作用&#34;&gt;從解析理論來解釋壓縮的作用&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;好的，至此我們確實能從圖表上明顯的看出壓縮這個動作，&#xA;它在整個發動機運作原理中所具有的角色地位。&#xA;但是有沒有能夠從數學原理上給我們展示，&#xA;為什麼壓縮的愈起勁，加熱後的壓力增加幅度愈大的原理呢？&#xA;我們這裡用理想氣體方程來一讀加熱前後的氣體狀態關係：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ \frac{ P_3 V_3 }{T_3} = \frac{ P_2 V_2 }{T_2} \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;admonitionblock tip&#34;&gt;&#xA;&lt;table&gt;&#xA;&lt;tbody&gt;&lt;tr&gt;&#xA;&lt;td class=&#34;icon&#34;&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Tip&lt;/div&gt;&#xA;&lt;/td&gt;&#xA;&lt;td class=&#34;content&#34;&gt;&#xA;雖然在任意兩個狀態之間可以用狀態 1 和狀態 2 表示，&#xA;但是一般在 Otto 循環的理論分析上有著比較廣泛的習慣寫法，&#xA;所以這裡、以及下面的解說中都將採用計算分析中慣例的表示：&#xA;壓縮前的氣體狀態為狀態 1，壓縮後為狀態 2，&#xA;燃燒增溫後為狀態 3，膨脹後為狀態 4。&#xA;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;/tbody&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;由於理想的燃燒是瞬間完成的，燃燒前後汽缸容積並沒有變化，\( V_3 = V_2 \)，因此：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ P_3 = P_2 \frac{T_3}{T_2} \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;投入熱量加熱空氣會使空氣升溫，並且定量的熱量對定量的氣體會升高同樣的溫度差，&#xA;這個差值與氣體當下的溫度、體積、壓力等無關，因此我們假定加熱動作使氣體溫度增加了 \(\Delta T\)：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ P_3 = P_2 \frac{ T_2 + \Delta T }{T_2} \]&#xA;\[ P_3 = P_2 \left( 1 + \frac{\Delta T}{T_2} \right) \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這裡我們可以發現，加熱後的壓力 \(P_3\) 其實就是將加熱前的壓力 \(P_2\) 放大一個倍率。&#xA;當然我們可以增加 \(\Delta T\) 的量來讓 \(P_3\) 更大，&#xA;但是要增加 \(\Delta T\) 量就要投入更多的熱量，對於想要改善效率的情況來說意義不大。&#xA;因此我們這裡假定 \(\Delta T\) 固定為一個值不變，意義是我們想要找到一個規律，&#xA;在投入的熱量不變的情況下能讓 \(P_3\) 盡可能變得更大。&#xA;那麼這個看上去並不複雜的方程式就告訴我們，想要讓 \(P_3\) 變大的話，&#xA;增加 \(P_2\) 或降低 \(T_2\) 都有作用。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;increase-efficiency-by-cooling&#34; class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;對於降低 \(T_2\)，也就是降低壓縮後的溫度這點實現比較困難，而且實際效果幫助比較有限。&#xA;具體影響效果還得考慮 \(\Delta T\) 的大小，假設 \(\Delta T\) 和 \(T_2\) 的值差不多大的話，&#xA;那麼 \(T_2\) 縮減一半，也才能讓 \(P_3\) 增為 1.5 倍，&#xA;何況實際上該二者的值距離「差不多」可能還有點遙遠。&#xA;具體要操作的話，就是要在氣體壓縮的過程中儘量去對氣體散熱，&#xA;而這其實也是那些有增壓器的汽車上面所配備的中冷散熱器所帶來的副作用；&#xA;不過你可千萬別把空氣都壓縮完了才去散熱啊！&#xA;這時空氣壓縮該付出的功都已經付進去了，&#xA;反而你降低了多少溫度最後還要燒更多的油才能把溫度加回來，完全多此一舉！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;如果想要採行降低 \(T_2\) 的方案的話只有兩種方法：&#xA;或者是在壓縮的過程中一邊同時在散熱，或者是想辦法讓吸進來的環境空氣溫度降低(\(T_1\))。&#xA;其實降低進氣溫度也是實務上可行的做法，但是我們要怎麼控制外界環境的溫度呢？&#xA;我們無法改變外界空氣的條件，但是我們自己的工作時段是可以調整的。&#xA;所以在冷天環境空氣溫度低的時候，內燃機車輛的發動機效率會略為增加&#xA;(不過太冷以致於機油溫度都很難上升至工作溫度的情況不在此考量)，&#xA;同樣的原因也是為什麼貨運飛機喜歡在半夜起降的原因其一；&#xA;不過這些方法對於燃油效率的改善幅度，也真的就只是那麼一丟丟！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;至於為什麼成效非常有限？&#xA;我們的進氣溫度 \(T_1\) 是 300 K，也就是大約 27℃；那麼你能夠降低多少呢？&#xA;光是要讓進氣溫度減半，那就是 150 K，那可就是 -123℃ 啊！能辦到嗎？&#xA;對於一般不同天氣和季節的氣溫差值只有十幾二十度，了不起幾十度的氣溫變化量來說，&#xA;幫助還真的就只是那麼一丟丟。&#xA;因此降低溫度的做法效果並不好，只能作為次要的輔助手段。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;increase-efficiency-by-compress&#34; class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;既然降溫這條路的實際作用比較有限，那麼增壓這個方法呢？&#xA;上列方程式告訴我們，增加 \(P_2\) 的大小可以等比例的放大 \(P_3\) 的大小，效益顯著；&#xA;至少比起降低 \(T_2\) 所產生的幫助效果、以及實務上的難度而言，&#xA;增加 \(P_2\) 的方法可簡單好用多了，而實務上也是如此。&#xA;這就是為什麼所有的燃燒式發動機都在一股腦努力用力壓縮空氣的原因！&#xA;聰明的讀者可能會發現一個小問題：&#xA;「不對啊！壓縮同樣也會升溫，會增加 \(T_2\) 的大小，這樣不會不好嗎？」&#xA;的確，壓縮會導致溫度上升，可是有兩項因素導致這麼一來一回之後，&#xA;增壓帶來的效益還是好過增溫帶來的損害：&#xA;其一是如前述 \(T_2\) 的增加對於 \(P_3\) 的影響並不是那麼嚴重；&#xA;其二是如同我們前面提過的，壓縮的時候不管壓力或溫度都會同步上升，&#xA;&lt;strong&gt;但是壓力的增長速度比溫度的增加速度更快的多！&lt;/strong&gt;&#xA;如此一來二往下來，就成了在燃燒前給空氣增壓，可以使燃燒後的壓力增幅倍增現象的結果。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;calc-total-power&#34;&gt;計算總功率&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;我們至此已經完成基本的發動機循環分析了，但是有些朋友也許會有個疑問：&#xA;這個能量輸出的單位怎麼和平常我們聽說的馬力什麼的不一樣啊？什麼是焦耳，為什麼用焦耳？&#xA;為什麼這個動力的數字與平常熟悉的數字完全不一樣啊？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;其實以上的分析計算得出來的結果，都是在單次動力循環裡面所吸收、和釋放的能量。&#xA;如同我在前篇&lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_2&#34; title=&#34;View footnote.&#34;&gt;2&lt;/a&gt;]&lt;/sup&gt; 所述，&#xA;一般實務上我們可能會更加關注的是發動機做功的速率，也就是功率，而非單次的做功能量。&#xA;但是從單次的活塞做功輸出計算出功率其實很容易計算，&#xA;既然功率就是做功的速率，因此我們只要知道發動機在一段時間之內到底重複了多少次單一循環就好了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;就拿上面壓縮比為 24 的那個分析結果作為例子吧，&#xA;該例分析的結果為單次循環可以得到 1892.2437 J 的淨功輸出。&#xA;假設該發動機曲軸轉速為 3000 RPM，也就是在一分鐘時間內轉了 3000 圈，也就是一秒鐘 50 圈，&#xA;又由於四行程發動機是曲軸轉兩圈才完成一次動力循環，因此它一秒鐘實際做了 25 次動力功輸出。&#xA;因此最終它的功率就是 1892.2437 J 乘 25 得 47306.0925 W，單位從焦耳變成瓦特。&#xA;而如果這顆引擎不只有一個汽缸，假設它有 4 個汽缸好了，那麼結果就是單缸功率乘以 4，&#xA;得 189224.37 W；或者把單位換算成千瓦小時就變成 681207.732 kWh。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;不過在發動機實用領域可能更多人熟悉的功率單位是馬力，如上面的瓦數換算成馬力就是 257.27 (hp)。&#xA;馬力其實是因為歷史的原因，古時候因為是以馬作為測量基準，所以叫馬力；&#xA;但是因為馬力其實也同樣是功率單位，所以可以與標準功率單位互相轉換。&#xA;最終我將整個發動機的功率計算方式簡單整理如下，讓讀者們可依自己的需要和習慣自行計算換算這些數字：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ 發動機功率(W) = 單缸單次循環淨功(J) \cdot 汽缸數量 \cdot \frac{轉速(RPM)}{ 60 \cdot 2 } \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ 功率(hp) = \frac{功率(W)}{735.49875} \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;至於效率呢？效率只與單缸單次循環的結果有關，至於轉速快慢、缸數多少等等，並不影響效率的數字；&#xA;當然這是指完美條件下的純理論分析，至於打造成一個真實發動機後的運作相關損耗另當別論；&#xA;功率的輸出其實在考量運作損耗之後也不是單純的與轉速和汽缸數成比例關係，不過同理暫且忽略不管。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_總結&#34;&gt;總結&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在本篇，介紹了氣體對於體積、壓力、與溫度彼此之間的關聯性和消長關係，&#xA;然後通過對氣體加熱升溫，產生活塞做功輸出的過程與特性。&#xA;也介紹了如何在單缸的機械做功輸出、與發動機整體功率或馬力數字之間互相轉換的簡單計算方法。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;更加關鍵的是，本篇解答了發動機之所以在燃燒前要壓縮空氣的原因，&#xA;從氣體的物理原理上解釋了壓縮的作用，並用數學與計算看見了壓縮帶來的效果。&#xA;因為先壓縮空氣能夠使得後續的燃燒增溫取得更大的壓力增幅，&#xA;進而能夠輸出更多動力，並提升燃油能量轉換效率；&#xA;並且從理論計算中得到一個結論：在沒有其它意外因素的干擾之下，壓縮比是愈高愈好！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;至此，我們從純物理的角度，理解了活塞發動機最根源最單純的動力原理。&#xA;不過，理論與實際總有些不完美的落差，&#xA;比如說壓縮比既然越大越好，那為什麼當前的汽油發動機壓縮比卻只停在 10 左右就止步不前了呢？&#xA;要解答這些問題，就得從理論走進現實，了解真實的發動機所面臨的各種不得以；&#xA;這些，我將放在下一個篇章繼續講解……&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;footnotes&#34;&gt;&#xA;&lt;hr/&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_1&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_1&#34;&gt;1&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Table_of_specific_heat_capacities&#34;&gt;Table of specific heat capacities&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_2&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_2&#34;&gt;2&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-7---%E5%8A%9F%E7%8E%87%E8%88%87%E6%95%88%E7%8E%87/&#34;&gt;活塞引擎 7：功率與效率&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>活塞引擎 7：功率與效率</title>
      <link>http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-7---%E5%8A%9F%E7%8E%87%E8%88%87%E6%95%88%E7%8E%87/</link>
      <pubDate>Sat, 26 Oct 2024 16:47:15 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-7---%E5%8A%9F%E7%8E%87%E8%88%87%E6%95%88%E7%8E%87/</guid>
      <description>&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;本篇我想要介紹發動機的兩項重要的性能指標：功率與效率。&#xA;這是給那些對功率與效率是什麼沒有概念的讀者準備的主題，而不會進行實際的分析，&#xA;因此如果您已經知曉功率是什麼、熱效率是什麼，那麼就可以跳過本篇，繼續閱讀下一篇了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;曾有一個小朋友問過我一個問題，&#xA;說那些戰鬥機很耗油啊，每次看到說油這麼幾十萬幾百萬的燒就很心疼&#xA;(確實小朋友很可愛，即便燒的不是自己的油也會心疼)，&#xA;那有沒有可能改進設計，這樣只需要加少少的油就可以了？&#xA;(我想這個意思可能是加油的量減少為十分之一以下，但還是維持原有的一切包括飛機性能、任務頻率等等)&#xA;我回答他說沒有辦法，因為飛機的動力就是從油(其實叫燃料更合適)來的。&#xA;除了縮減訓練飛行的頻率這個方案之外，&#xA;節省了燃料消耗(顯然不是微幅的，而是大量的)的飛機，它的性能肯定不好；&#xA;如果要維持飛機的性能，那麼就少不了動力的供應，&#xA;而想要引擎提供怎樣的動力供應，就得要對等燒掉怎樣多的燃料。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;見小朋友仍然不解，我就開始和他一起整理一番……&lt;br/&gt;&#xA;飛機的推力從哪裡來的？螺旋槳。&#xA;(我們討論的是活塞引擎螺旋槳飛機，正好符合目前主題)&lt;br/&gt;&#xA;那麼螺旋槳轉動的力量從哪裡來呢？意思是是誰提供的呢？是螺旋槳軸，也就是引擎動力軸。&lt;br/&gt;&#xA;那麼引擎軸的力量哪來的呢？是飛輪。(其實要說是曲軸也可以)&lt;br/&gt;&#xA;那麼飛輪的力量哪來的呢？是曲軸。&lt;br/&gt;&#xA;那麼曲軸的力量哪來的呢？是曲柄。&lt;br/&gt;&#xA;那麼曲柄的力量哪來的呢？是活塞連桿。&lt;br/&gt;&#xA;那麼活塞連桿的力量哪來的呢？是活塞。&lt;br/&gt;&#xA;那麼活塞的力量哪來的呢？是膨脹的氣體。&lt;br/&gt;&#xA;那麼氣體為什麼會膨脹呢？因為我們燃燒了燃料，將空氣加熱了，空氣受熱於是膨脹了。&lt;br/&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;於是一起推理了一遍，原來是汽油燃燒了之後加熱空氣使空氣膨脹，膨脹的氣體去推動活塞，&#xA;活塞去推動活塞連桿，然後曲柄、曲軸、飛輪、引擎軸，然後是螺旋槳，&#xA;然後螺旋槳再去推動空氣把空起往後推，於是反作用力提供了飛機前行的動力，驅動飛機前進。&#xA;總結起來就是：我們燃燒燃料得到飛機的推進力，最終是依靠著燃料的燃燒產生推力供給飛機使用；&#xA;至於中間那坨機器(也就是發動機)的作用，&#xA;其實就是使用各種巧思來將燃料燃燒的熱能轉換成為力量的機器。&#xA;中間的這個機器可以是以活塞汽缸機械原理運作的、也可以是渦輪原理打造的、&#xA;或者是某種燃料電池轉換原理設計的、或者是任何你巧思發明出來的某種奇妙運作原理發明的新機器，&#xA;但無論如何，它們其實都在做同樣的一件事情：&#xA;「&lt;strong&gt;將燃料本身蘊藏的化學熱能轉換成我們要的機械動能&lt;/strong&gt;。」&#xA;至於不同的引擎結構原理，其實也就是能量轉換的方法手段不同罷了；&#xA;但是不論使用什麼手段、方法、原理、設計，&#xA;改變的只是能量轉換的方法途徑，並不能夠改變能量轉換的本質，&#xA;&lt;strong&gt;更不可能因為使用某種新發明的轉換設計而憑空產生更多的能量，&lt;/strong&gt;&#xA;&lt;strong&gt;因為終歸最後，所有的能量都還是從燃料來的！&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-7/fig1-1-energy-machine.png&#34; alt=&#34;fig1 1 energy machine&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 1. 引擎就是一個能量轉換器，用來將然燃料的化學熱能轉換成機械動能&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;如上圖所示，我們現在將發動機的內部構造給隱藏起來，&#xA;無論它實際上是幾個汽缸的、怎麼排列的、或是渦輪式的、瓦特式的、還是什麼燃料電池式的，&#xA;總之就是一個大黑盒子。&#xA;我們不知道(或者暫時不想知道)黑盒子裡面的東西，反正就是一個神祕的機器，&#xA;只知道我們把燃料從左邊丟進去，機器一通運作之後就會把燃料變成機械動力，從右邊的轉軸輸出出來，&#xA;順便會產生一些諸如廢棄廢熱等副產品；至於動力產生出來後要接去哪裡就隨使用者的意思了。&#xA;那麼對於這樣一臺用來轉換能量的黑盒子機器，&#xA;作為使用者而言自然就會關注起它的兩項重要的性能指標：功率、與效率。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_功率&#34;&gt;功率&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;什麼叫功率呢？就如同它的字面意義，是做功的率。&#xA;這個功也就是能量的其中一種表現方式，如果沒聽過功或能量的話，可以暫時理解為產生的動力；&#xA;那麼功率也就是機器產出動力的速度了。&#xA;那為什麼我們不直接講力不是更加直白嗎，為什麼要講什麼能量呢？&#xA;的確看力的大小是比較容易理解的，套用在轉軸上也就是力矩，只要小學高年級程度就能夠理解，&#xA;但是如果只看容易理解的力或力矩大小，其實反而會產生更多更加複雜化的問題。&#xA;比方說用在 F1 賽車上的引擎軸所產生的力矩普遍偏小，基本遠小於一輛 3.5 頓卡車引擎軸的力矩，&#xA;然而我想應該沒有人會認為 F1 賽車的引擎動力比小卡車還要低！&#xA;這是因為一顆引擎它可能產生的力矩不大，但是人家活塞動的快；&#xA;也有的引擎活塞動的不快，但人家汽缸大啊。&#xA;於是會發現，車子跑的快不快、引擎有動力沒動力，&#xA;其實不能只靠其所容易被理解的力與力矩來判斷，除了轉軸力矩之外還往往需要一並考量引擎轉速。&#xA;甚至於在變速箱的作用之下，低扭力(就是引擎軸力矩)但高轉速的引擎一樣可以拖動大負載。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;既然不能夠只看發動機產生的轉動力矩也就是扭矩來判斷動力輸出的大小程度，&#xA;也不能夠只看轉速來判斷，&#xA;那麼我們就需要一種指標數值來良好適當的指示某一臺機器所輸出的動力大小；&#xA;又&lt;strong&gt;既然發動機就是一個將化學能量轉換為機械能量的轉換裝置，&lt;/strong&gt;&#xA;&lt;strong&gt;那麼我們就直接以產出的能量大小來評斷所謂的動力輸出大小吧。&lt;/strong&gt;&#xA;這就是為什麼發動機總是喜歡用功率來表示能量輸出的原因了，&#xA;因為這個&lt;strong&gt;「功」其實就是能量的眾多表達形式中的一種，也就是機械能的表現形式&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;那麼功就功吧，我已經知道它是一種能量的單位了，那為什麼又要來個「率」呢？&#xA;如果單單只看能量值也就是功的輸出其實意義有限，就好像在瓦斯爐上面燒一壺水一樣，&#xA;就算用的是小瓦斯爐，只要給它足夠的燒煮時間，一樣可以燒開一大鍋水。&#xA;因此我們通常關心的其實不是瓦斯爐能夠產生出多少熱能，&#xA;而是關心它在一個時間範圍內所能產生的熱，也就是熱的產生率。&#xA;因此發動機也是一樣的，其實我們關心的不是發動機所能夠產出的能量，&#xA;因為只要給它足夠的運作時間，小小發動機一樣能夠產出大大的功。&#xA;所以我們更加關心，也是用來評比一臺發動機的動力大小的指標，&#xA;就成了發動機它&lt;strong&gt;做功的速率，也就是功率&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_效率&#34;&gt;效率&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;從上面的示意圖中，注意到標示的「廢熱」這個部份，&#xA;它是發動機運作時產生的無用副產品，卻昭示著發動機的另一項重要性能指標 — 效率。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;截至目前為止，人類造不出完美的機器，因此各種損耗也充斥在人造的機器中。&#xA;我們的機器作為一種能量轉換器它並不能夠完美的轉換能量，而是會有一定程度的折損。&#xA;比方說我們丟入一公升的燃料，燃料燃燒能產生出 1000 焦耳的熱能，&#xA;理論上完美的神造機器就能轉換出 1000 焦耳的機械功從引擎軸傳出去，&#xA;但是我們人造的機器卻可能只能轉換出 300 焦耳的功，&#xA;因此轉換率就是 300 / 1000 = 30%。&#xA;這就是所謂的能量轉換效率，也就是引擎效率，&#xA;或者因為我們的引擎絕大部份都是以機械和熱膨脹等原理運作的，&#xA;所以經常也能看到其它文章裡會以「熱效率」稱呼之，&#xA;只不過不管用詞如何，其所表達的就是輸入能量與有效輸出能量的轉換比例。&#xA;其計算原理也很簡單，&#xA;&lt;strong&gt;效率的根本定義就是：&lt;/strong&gt;&#xA;&lt;strong&gt;你投入了多少熱能(也就是燃料)，然後產生了多少機械功輸出，兩者的比例關係即為轉換效率&lt;/strong&gt;。&#xA;將投入熱量作為分母、產生的動力作為分子，兩者一除，&#xA;就得到了一個介於 0 到  1 之間的轉換效率數字，此值也能以百分比表示。&#xA;效率數值愈高表示引擎效率愈好，也就愈省油。&#xA;(實際上目前所有現存燒油的發動機，這個效率都不到 50%，通常約在 20% 至 40% 左右)&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;我們現在知道了引擎的能量轉換效率不是 100%，而是會產生一些折損，&#xA;而且以目前的科學技術水準來說通常這個折損還是過半的！&#xA;但是能量應該是守恆的，就如同質量守恆一樣，&lt;strong&gt;能量既不會憑空產生，也不會憑空消失&lt;/strong&gt;，&#xA;那麼這就奇怪了，我們所謂損失的那些能量去了哪裡了呢？&#xA;確實能量不能無故消失，而且也並沒有消失，&#xA;只不過是&lt;strong&gt;有部份的能量被轉換成了我們無法利用的能量&lt;/strong&gt;罷了！&#xA;意思就是說燃料燃燒出來的熱能，只有其中一部份被引擎轉換成為能夠被利用的機械功，&#xA;而另外的其它部份則轉換成了我們無法利用的能量。&#xA;因為無法捕捉並利用這些能量，因此這些能量就逸散出去外面，成為上圖所示的副產品：廢熱。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;關於無法利用的廢熱，我們先從比較容易理解的部份來說明。&#xA;在活塞運動中我們將氣體膨脹的壓力傳遞給活塞，讓活塞去推動後面一系列連桿、曲軸等機械，&#xA;這些機械結構彼此互相的摩擦運動都在消耗著活塞所傳遞出來的能量，&#xA;所以可以說這些機械結構的運動過程消耗掉了一小部份理想上可以往後傳遞輸出的機械能。&#xA;而小學生都知道，摩擦會產生熱，也就是說這些機械結構在將能量從活塞傳遞到輸出軸的過程中，&#xA;對這些能量抽了一點稅，並將它轉換成摩擦熱能，使引擎發熱了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;不過實務上，齒輪與機械結構的能量傳遞效率非常高，掐指一算大約都有 98% 以上，&#xA;所以其實這些機械結構摩擦所偷走消耗的能量只算是皮毛而已，&#xA;而真正摩擦消耗掉更多能量的其實是活塞與汽缸。&#xA;為了保持密封的緣故，活塞與汽缸壁之間其實卡的有點緊(主要是活塞環)，&#xA;因此會產生很大的摩擦阻力，至少相比於連桿、曲軸、齒輪這些零件的阻力來說是大得多的多了。&#xA;雖然為了減少活塞運動的阻力，人們已經發明了接觸面積相對比較小的活塞環，&#xA;還對活塞汽缸之間噴上機油等做潤滑處理，已經最大程度的減小了活塞的摩擦消耗，&#xA;但是活塞摩擦所產生的耗損依然無法被忽視；&#xA;而這也是為什麼現代強調省油的汽車，都會儘量減少汽缸數量的主要原因之一。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;efficiency-in-cylinder&#34; class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;雖然活塞與汽缸壁之間的摩擦已經夠大了，但其實把活塞、和其它所有機械零件的消耗加總起來，&#xA;吃掉的引擎動力在整個引擎產生的廢熱裡其實也不過是零頭而已，&#xA;而&lt;strong&gt;廢熱產生的真正主要大頭其實來自於發生在汽缸裡面的壓縮、膨脹、與燃燒反應&lt;/strong&gt;。&#xA;這一個部份比較難理解，至少不像機械摩擦消耗動力並產生熱這樣這麼能夠直覺的想像，&#xA;其中比較詳細的原理我會在下一篇章進行探討，這裡只說個比較能夠容易理解的大概。&#xA;汽油與空氣混合的氣體被點燃後成為高溫高壓的氣體，請注意這裡的「高溫」與高壓，&#xA;因為只有壓力被我們用來推動活塞，至於氣體的高溫對於推動其實一點用處都沒有，&#xA;然而它的升溫確著實吸收了燃料的能量；&#xA;矛盾的是，如果不對氣體加熱，又如何使氣體產生壓力呢？&#xA;於是為了得到高壓氣，我們必須得加熱，&#xA;這些吸收了大量燃油能量而升高的溫度卻無法被加以利用，&#xA;只能無奈的將這些吃飽了而溫度上升了的氣體給排放出去。&#xA;而這，其實才是引擎廢熱的最主要產生來源，也是吃掉引擎效率的主要罪魁禍首！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-7/fig3-1-heating-inside.png&#34; alt=&#34;fig3 1 heating inside&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 2. 汽缸內的空氣被加熱後，產生壓力推動活塞 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_1&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_效率的重要性&#34;&gt;效率的重要性&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;我們這裡看發動機就是一個能量轉換器，將燃料的化學能轉換成機械動力，順便產生一些廢熱。&#xA;如同上面所說，效率指的就是上面這個能量的轉換率，&#xA;&lt;strong&gt;轉換率愈高的引擎其效率就愈高，運轉起來就愈不會發熱。&lt;/strong&gt;&#xA;假如有一個真正理想的效率 100% 發動機，那麼它在產生動力的同時，引擎本身一定是不會升溫的；&#xA;相反的，如果一個引擎產生動力的同時自身還變得燒燙，可能還大量排放高溫廢氣的話，&#xA;那我們就能知道它的效率一定不高。&#xA;(所以電動馬達的效率是非常高的，轉起來也幾乎不會燙，完全符合假設條件；&#xA;即便有些人可能會說馬達轉起來也是會發熱的，甚至有些馬達還會需要散熱片，&#xA;但是馬達的發熱量對比汽、柴油引擎的發熱量而言，那幾乎就可以算是不會發熱了！)&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;我想對於許多孩童到學生階段的熱血男孩而言，可能更加關心的是引擎的總功率吧！&#xA;畢竟只有足夠大功率的發動機，才能夠帶動汽車在賽道上疾馳，&#xA;帶動戰鬥機在空中高速飛行、進行炫麗的大角度機動動作，&#xA;或者推動萬噸級別的重型武裝船艦在一望無際的大海上進行艦隊搏殺！&#xA;但其實在表面的鬥志昂揚之下，&#xA;發動機的熱效率同樣關乎著從武器裝備載具到尋常家用交通工具的重要屬性！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;一臺發動機的功率往往是需要給油來產生的。&#xA;前面我們探討過了，動力不會憑空出現的，一切強勁的動力其實根本源自於給了多少燃料。&#xA;所以當需求的動力愈加強大時，其實只代表一件事：你必須要供應上足夠的大量燃油去給發動機消耗！&#xA;這時如果一臺發動機的熱效率過低，就表示你需要供應更多的燃油才能夠產生出同樣的動力，&#xA;並且其中的大部份其實是被無用的發熱散發掉了。&#xA;如果我們能夠竭盡可能的善用巧思去改善發動機的效率，那麼對於民用與商用的需求來說，&#xA;行駛同樣的距離將會消耗更少的燃料，也就是省錢，這可能也是大部份市井小民最在意的一件事。&#xA;對於軍事用途來說，雖然在某種程度上，軍事用途往往表現的好像不差錢似的，&#xA;只要能夠產生足夠的性能，這個錢嘩嘩的燒好像都不會心疼。&#xA;然而其實事情也並不完全是這樣的，當軍用發動機的效率過低的時候，&#xA;有時候耗油燒錢真的事小，但是影響戰機的航程這事情可就嚴重了！&#xA;效率過低的發動機即便能靠著土豪般的吃油如喝水一樣產生強大推力，&#xA;但過大的消耗量將會給戰機產生一個嚴重的問題：短腿，跑不遠，也就是續航里程不夠長。&#xA;我想對於通曉各種軍事歷史與軍武的愛好者來說，短腿導致的戰場劣勢應該不需要再多解釋什麼了吧？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;所以效率這件事情不管放在哪裡其實都是非常重要的性能指標，&#xA;&lt;strong&gt;一個效能高的引擎在直接上的意義意義就是，&lt;/strong&gt;&#xA;&lt;strong&gt;能在提供相同動力輸出的前提下，比別人更加節省燃料的消耗；&lt;/strong&gt;&#xA;&lt;strong&gt;或者在同樣的燃料消耗率之下，能提供比別人更多的動力輸出。&lt;/strong&gt;&#xA;在民用用途上，省油的引擎可以節省燃料的消耗量，減少成本的支出，&#xA;可以使運輸服務成本更加低廉，也可以減少廢棄排放，更加保護地球；&#xA;而對於家裡的爸爸媽媽來說更加直觀的感受，&#xA;可能就是能夠減少每個月從錢包裡掏出來給車子加油的鈔票數量；&#xA;對於軍事用途來說，省油的引擎同樣能夠節省軍費的開支，&#xA;即便是在花錢不手軟的戰爭行動中，省油的引擎能夠給予各種武器載具擁有更遠的作戰範圍，&#xA;或者能夠滯留空中更久的時間。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_省油&#34;&gt;省油？&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;還有一個和引擎效率有關，可能比較常見的混淆，就是「省油」與「效率」之間的關聯。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;簡單說就是一個配備高效率引擎的車輛不一定省油，一個省油的車輛也不一定配備有高效率的引擎。&#xA;其實可能會產生的混淆，在於「省油」這個詞往往與語境有關係，&#xA;白話的意思就是不像是「效率」一詞具有比較嚴格的定義，其就是投入與產出的比例，&#xA;而「省油」這個詞的意義則往往依賴於說出它的時候腦袋在想什麼有關。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;比方說我們說一輛大巴士省油的時候，旁邊小朋友可能就會冒出疑惑了，&#xA;明明看著這輛超大巴士嘩嘩的在燒油，我們加油一次一千元，他們加油一次一萬元，怎麼就省了呢？&#xA;我想小朋友說這話的問題在哪裡，大人們應該都很看得名白。&#xA;雖然人家大巴士看起來燒油燒很兇，但是人家的動力需求也大呀，&#xA;一次可以拉 100 人出去，平均下來一趟路一個人才花 100 油費；&#xA;我們加 1000 油錢看似不多，但一趟路只能拉 4 人，分下來一個人花 250 油費呢！&#xA;因此從這個例子來看，如果撇除掉大小車輛呆重的影響因素的話，&#xA;那麼這輛大巴士搭載的發動機很可能就比那量小車的引擎具有更高的能量轉化效率。&#xA;(然而事實上大車小車造成此等差距的主因可能還是來自於車輛呆重的差異，不過本篇的重點不在此，&#xA;所以就姑且當作大巴士的引擎比較高效吧。)&#xA;在這種情況下，我們一般認為大巴士會比較省油，&#xA;因為如果要用小車同樣運送 100 人，油費就會是 25000，肯定是費油的！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;上面的例子很符合效率與省油之間的關聯性直覺，那麼我們再看另一個例子。&#xA;今天我想出去散散心晃兩圈，這時我應該要開大巴士出門呢？還是開小車出門呢？&#xA;延續上面的設定，這時如果你開大巴士出門就肯定費油了！&#xA;因為大巴士引擎的功率大，即便能量轉換效率比另一輛小車高，&#xA;但如果只看燃油耗用量的話，肯定還是比小車消耗的多的。&#xA;所以在這樣的前後文語境下，我們一般會認為小車比大車省油；&#xA;甚至如果有摩托車能夠作為選項的話，還能比小汽車更省，&#xA;即便這臺小摩托引擎的能量轉換效率可能比其他二者都還更低！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;所以，我們平常也許沒有意識到，&#xA;但其實「省油」這個詞作為口與的描述詞，它的意義其實很依賴談話時的上下文、或需求的情況，&#xA;而這也給我們提供了另一個設計產品時的想法。&#xA;為了省油，除了一個勁的開發上各種神奇科技去提升引擎的熱效率之外，&#xA;&lt;strong&gt;直接減少發動機的功率輸出，往往能夠省下也許更加可觀的燃油消耗&lt;/strong&gt;。&#xA;這就是為什麼現代的汽車一個個都在縮減汽缸數量的原因，&#xA;也是那些看起來很厲害的大功率發動機在民用市場不見得更加吃香的原因其一，&#xA;因為如果客戶的需求並不需要那麼大的馬力的供應的話，&#xA;直接縮減發動機功率也能夠非常有效的降低對燃料的消耗。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_功率與效率總結&#34;&gt;功率與效率總結&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;至此，我們應該了解了功率和效率這兩項屬性對於一臺發動機的重要價值。&#xA;那麼理想上，我們肯定是要一個功率超高、效率也同樣超好的一部發動機呀！&#xA;可惜在現實世界裡，也不知道是上帝喜歡和人類開玩笑還是怎麼樣？&#xA;你會發現這兩項指標通常難以兩全！&#xA;在體量差不多規模的發動機上，&#xA;&lt;strong&gt;一部效率高的發動機，往往它能產生的功率就不會大；&lt;/strong&gt;&#xA;&lt;strong&gt;相對的如果一部發動機能輸出大功率，那麼往往它的效率就高不起來。&lt;/strong&gt;&#xA;比方說目前人類世界上輸出功率最大的動力系統大概是火箭了吧，&#xA;它能把幾十上百噸的酬載加速到 280000 km/hr 的速度送入太空，&#xA;然而它的效率一般卻可能只有大約 2% 到 4% 左右；&#xA;而像是燃料電池、離子火箭這種高效率的東西，它們產生的功率卻一個比一個還小。&#xA;當然你也可以把高效率的發動機造的大一點，這樣它就又高效又能大功率；&#xA;只不過它的體積和重量也就一起往上去了……&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;當然前面只是講一個大概的趨勢，就如同我們用汽缸數量去粗略評估一臺發動機的馬力一樣，&#xA;只是一個非常粗略的趨勢關係而已。&#xA;實際上在核心原理相同的發動機類型裡，每一個不同設計之間仍然存在著彼此之間的優劣競爭的。&#xA;而且目前為止我只有大範圍抽象式的表達了功率和效率兩難的一個現象，&#xA;並未深入解釋其中的原因，&#xA;不過在未來我們更加深入探討發動機的效率分析、以及往後的其它發動機主題文章裡，&#xA;慢慢都會一一展現出造成這些兩難情況的詳細原理。&#xA;總之&lt;strong&gt;一般來說發動機的效率和功率往往是個不能夠兼顧的性能屬性&lt;/strong&gt;，&#xA;而更多的思考與設計理念往往是在兩者之間做一個怎麼樣的折衷取捨的策略佈局。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;最後講到功率上限這件事。&#xA;從前面的示意圖來看其實看不出來發動機的輸出功率上限這回事，&#xA;那是因為我們將發動機視作一個黑盒子，左邊投入燃料給它吃，右邊它就會產出動力。&#xA;然而實際上這個黑盒子內部的實現原理決定了很多表面特性，&#xA;比方說以汽缸、活塞為原理基礎的發動機就存在一個比較明顯的發展瓶頸：&#xA;動力有個上限並且難以突破，這個我們在往後的篇章會更深入探討。&#xA;簡單的說就是，有些發動機的原理結構導致了它胃口不大，&#xA;即便理論上依據黑盒子理論，好像只要塞給它更多的燃料就能夠產生更多的功率，&#xA;然而現實上發動機卻會告訴你它這小嘴吃不下了！&#xA;這時你想塞給它更多的燃料，然而它卻消化不了；&#xA;那麼當燃料消耗的速度有個上限的時候，&#xA;依據本篇學到的黑盒子原理，我們也能很容易的得出一個結論：&#xA;&lt;strong&gt;發動機的功率最高只能達到某一個程度為止！&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_結尾&#34;&gt;結尾&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;本篇我們試著使用小學生能夠理解的程度介紹認識了燃油發動機的兩項重要性能指標：功率與效率，&#xA;從黑盒子轉換機器理論的角度去重新理解發動機的角色，認識能量轉換率與廢熱的生成，&#xA;認識功率與效率所代表的意義，以及初探兩者之間的關聯性和限制。&#xA;下一篇我將進一步分析活塞發動機，用更加實際可見的物理和數學原理去計算輸出功率、及轉換效率，&#xA;使讀者在本篇可能過度抽象描述的性能特性之後，可以透過更加實際的計算去理解背後的物理原理。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;footnotes&#34;&gt;&#xA;&lt;hr/&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_1&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_1&#34;&gt;1&lt;/a&gt;. &lt;a href=&#34;https://www.freeimages.com/tw/vector/fire-icon-clip-art-4796221&#34;&gt;FreeImages&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>活塞引擎 6：機件振動實例</title>
      <link>http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-6---%E6%A9%9F%E4%BB%B6%E6%8C%AF%E5%8B%95%E5%AF%A6%E4%BE%8B/</link>
      <pubDate>Mon, 23 Sep 2024 20:35:12 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-6---%E6%A9%9F%E4%BB%B6%E6%8C%AF%E5%8B%95%E5%AF%A6%E4%BE%8B/</guid>
      <description>&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-5---%E6%A9%9F%E4%BB%B6%E6%8C%AF%E5%8B%95%E5%88%86%E6%9E%90/&#34;&gt;上一篇&lt;/a&gt;&#xA;&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_piston5&#34;&gt;[&lt;a id=&#34;_footnoteref_1&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&#xA;介紹了機件運動導致振動的原理，&#xA;也介紹了我做的一個用來分析活塞引擎振動趨勢的小程式，&#xA;而這一篇我就要用它來挑選分析一些實例，一窺各種常見構型引擎的振動特性。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;由於要分析的種類數量有些龐大，為了儘可能減少不必要的版面複雜性，&#xA;我並不會張貼每個測試案例的所有結果。&#xA;不過如果讀者有興趣參考的話，&#xA;本文的&#xA;&lt;a href=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/engine-vibration-analysis.tar.xz&#34;&gt;所有測試結果、分析圖、和所使用的參數、以及所使用的分析程式&lt;/a&gt;&#xA;&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_analysis-data&#34;&gt;[&lt;a id=&#34;_footnoteref_2&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_2&#34; title=&#34;View footnote.&#34;&gt;2&lt;/a&gt;]&lt;/sup&gt;&#xA;都已打包，有需要的讀者可以自行下載分析驗證。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;如果你還沒有閱讀過&#xA;&lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-5---%E6%A9%9F%E4%BB%B6%E6%8C%AF%E5%8B%95%E5%88%86%E6%9E%90/&#34;&gt;前篇&lt;/a&gt;&lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&#xA;的介紹的話，建議先過去讀過之後再來閱讀本篇，&#xA;因為除了程式的用法和原理介紹以外，前篇也做了有關參考座標系和圖表意義的說明，&#xA;在缺乏這些認知前提的情況下，可能會比較難讀懂本篇的內容。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;另外，本篇可能會在某個個別的案例解說時歸納一些通用的特性，&#xA;這些特性往往是在很多具有特定特徵的其他配置會共同顯現的特徵，&#xA;這些歸納的重點會以粗體標示，相當建議在閱讀的時候特別注意。&#xA;因為本篇分析的案例較多，&#xA;因此許多因為共同特徵所產生的特性和對應方法等通常就不會一直重複敘述了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;那麼首先，我們先從複習前篇的單缸引擎振動特性作為開始：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_單缸&#34;&gt;單缸&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_基本單缸&#34;&gt;基本單缸&lt;/h3&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l1-normal-layout.png&#34; alt=&#34;l1 normal layout&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l1-normal-force-x.png&#34; alt=&#34;l1 normal force x&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l1-normal-force-y.png&#34; alt=&#34;l1 normal force y&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l1-normal-torque-z.png&#34; alt=&#34;l1 normal torque z&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;可看到結果顯示在 Y 方向上的振動趨勢挺大，力變化幅度達到 193 牛，&#xA;主要的原因就是因為這是活塞的運動方向。&#xA;相對的 X 方向的力變化幅度明顯小得多，只有約 46 牛，主要是由於連桿的運動所產生；&#xA;另外 Z 軸達 0.46 牛米的轉動力矩變化也同樣是因為連桿的運動所產生。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在這個案例裡，我給曲柄(或曲軸，因為只有單缸，所以配重歸屬於何者都沒問題)加上了一點點的偏心量，&#xA;用意是在不嚴重影響總體結果的情況下，能讓人看出偏心曲軸在整體力變化分佈中所扮演的角色。&#xA;在 Y 方向的力分佈圖中還有一點值得特別注意：活塞所產生的力變化趨勢並不是上下對稱的！&#xA;這點特性在後面其它的案例分析中是個很重要的部份，&#xA;也是導致在有些看似能產生上下力相消的情況中，實際上卻不能完全相消的最主要原因。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;總體而言，單缸型態的振動大這件事其實也沒什麼好意外的，畢竟它就只有一個汽缸而已！&#xA;所以單缸引擎在本篇可能最大的作用是用來給其它型態引擎作為對比吧。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_加入曲柄曲軸配重&#34;&gt;加入曲柄(曲軸)配重&lt;/h3&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l1-eccentric-force-x.png&#34; alt=&#34;l1 eccentric force x&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l1-eccentric-force-y.png&#34; alt=&#34;l1 eccentric force y&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l1-eccentric-torque-z.png&#34; alt=&#34;l1 eccentric torque z&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;從前面的測試結果中，我們能發現偏心曲軸的力趨勢正好和活塞與連桿的趨勢相反，&#xA;這就產生了一個想法：我們能不能增加曲軸的偏心配重，用來抵消活塞與連桿所產生的力？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;有關曲柄配重的部份，我在&#xA;&lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-5---%E6%A9%9F%E4%BB%B6%E6%8C%AF%E5%8B%95%E5%88%86%E6%9E%90/#crankarm-weight&#34;&gt;前篇&lt;/a&gt;&lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&#xA;已經解釋過了，這裡就不再贅述，直接看結果。&#xA;從結果可以看到在 X 方向上，曲柄配重直接完美相消了連桿產生的作用力；&#xA;在 Y 方向上顯然也有正向縮小作用力的效果，只是削減的力道顯然是寥勝於無；&#xA;在 Z 軸的轉動力矩上則矯枉過正，雖是有抵消連桿力矩的效果，&#xA;但消完後剩下的力矩反而比連桿原本產生的更大，差不多是原來的 3 倍！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;總結而言，&lt;strong&gt;適量增加的曲柄配重可以完美消除活塞連桿在橫向上的作用力&lt;/strong&gt;。&#xA;這一點結果很重要，且在後續的案例中都會有所應用，後面就不再重複贅述。&#xA;另外一個比較實際的情況是：其實&lt;strong&gt;在曲軸方向上(也就是 Z 軸)的轉動擾動比較不是那麼受注目&lt;/strong&gt;，&#xA;因為活塞引擎的動力輸出本就是不連貫的，而且汽缸愈少愈不連貫，&#xA;其本身就會在曲軸的轉動上產生不小的擾動。&#xA;因此&lt;strong&gt;對於機件運動在曲軸上造成的轉動擾動來說，只要擾動不要過大，一般就不會太過在意！&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;此外，曲軸配重的配平效果也同樣輔證了一般討論直列發動機振動時，&#xA;多只談論活塞上下運動所造成的振動的合理性。&#xA;如果忽略或不在乎曲軸方向的轉動擾動的話，在活塞連桿橫向影響可以被完全消除的情況下，&#xA;綜合前篇解說過的&#xA;&lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-5---%E6%A9%9F%E4%BB%B6%E6%8C%AF%E5%8B%95%E5%88%86%E6%9E%90/#rod-force&#34;&gt;活塞連桿&lt;/a&gt;&lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&#xA;作用力特性，&#xA;就可以將活塞和連桿視為一個整體，那麼這樣的簡化分析方法便也是非常簡單實用的了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_嘗試使用更多配重&#34;&gt;嘗試使用更多配重&lt;/h3&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l1-more-force-x.png&#34; alt=&#34;l1 more force x&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l1-more-force-y.png&#34; alt=&#34;l1 more force y&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l1-more-torque-z.png&#34; alt=&#34;l1 more torque z&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;有了前面關於曲柄配重的試驗結果，我們不妨再試試看更加激進的策略會產生什麼樣的效果？&#xA;既然原來的曲柄配重對於活塞運動方向的力相消沒什麼太大作用，&#xA;那這裡就嘗試再加入更多的曲柄配重。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;本例試驗將曲柄的配重增加到將近原本的 3 倍，&#xA;可見到在原本振動趨勢最大的 Y 方向上，我們將作用力的變化範圍縮小了 37%，&#xA;效果算是還不錯了。&#xA;當然這麼做的缺點也很明顯，它會在 X 方向上產生振動源。&#xA;本例所挑選的配重特別控制使 X 方向上的振動趨勢與原本相近，&#xA;不過若在應用上可以接受 X 方向更大的振動趨勢的話，&#xA;就可以動用更大的配重，去消減 Y 方向的振動趨勢。&#xA;此外除了 X、Y 兩個方向之外，本方案在 Z 軸產生的轉矩趨勢是基本單缸配置的 6 倍多，&#xA;是加入了基本適當配重方案的約 2 倍。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;總結而言，&#xA;使用增加曲柄或曲軸配重的方式可以一定程度的消減最大的振動源，也就是活塞運動方向的振動，&#xA;不過副作用是會增加在其它方向的振動趨勢。&#xA;造成這現象的根本原因，其實就是因為最大的振動源在活塞的運動方向，是在一條直線上，&#xA;可是偏心軸所產生的作用力卻是成圓周輻射的，&#xA;因此在削減某個方向的作用力之餘，也不可避免的在其它方向產生了更多的作用力。&#xA;在實務應用上如果能夠接受平均力度較小但較多雜亂方向的振動的話，&#xA;那麼使用曲柄或曲軸配重的方案就是挺實用的，&#xA;他可以以雜項振動源的增加作為副作用和代價，來削減振幅最大的那個振動源。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_雙缸&#34;&gt;雙缸&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/fig4-1-inline2-firing-orders.gif&#34; alt=&#34;fig4 1 inline2 firing orders&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 1. 雙缸引擎的數種運作組合 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_3&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_3&#34; title=&#34;View footnote.&#34;&gt;3&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_運動平衡&#34;&gt;運動平衡&lt;/h3&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l2-balanced-layout.png&#34; alt=&#34;l2 balanced layout&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l2-balanced-force-y.png&#34; alt=&#34;l2 balanced force y&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l2-balanced-torque-x.png&#34; alt=&#34;l2 balanced torque x&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l2-balanced-torque-z.png&#34; alt=&#34;l2 balanced torque z&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;一般雙缸併排的情況，當然是兩個汽缸動作相反，一個上就一個下，這樣最合適不過了啊！&#xA;只不過如同前面已經描述過的原因，&#xA;兩個汽缸一上一下相反方向運動的時候，作用力其實並不能夠完全相消，&#xA;如結果圖所示，在 Y 方向這麼一消減之後仍然剩下了 109.6 牛的振動源。&#xA;而因為汽缸一上一下，所以還產生了 X 軸向上的轉動振動源約 6.2 牛米。&#xA;不過畢竟只有兩個汽缸，這點副作用也是比較難避免的！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;雖然 Y 方向(也就是活塞運動方向)的作用力只消減了大約一半的幅度，&#xA;但是請注意到圖表，它的振動頻率增加了！&#xA;這點現象很重要，雖然我們只能看到機件的作用力表現而不是實際的振動表現，&#xA;但是只分析作用力的分佈這件事之所以有價值，就是因為在大半情況下它能直接反應實務的振動特性。&#xA;而若說到振動，一般頻率愈高的振動肯定是幅度愈小的(除非恰巧逮到共振)。&#xA;在生活上其實常能見到這樣的例子，比方說我們在用洗衣機給衣服脫水的時候，&#xA;我們的衣服當然不可能放的平均完美，當然會有多或少的質量偏心，&#xA;於是在脫水剛啟動時轉速還不快的時候，就能感受到這時的振動是最大的，&#xA;有些情況下如果我們不壓住洗衣機的話，洗衣機甚至會移位！&#xA;但是當洗衣機的滾筒轉速快起來以後，振動反而就小了，洗衣機也趨於穩定安定而不再需要我們操心了，&#xA;直到脫水結束要減速下來的時候，才會讓振動再次大起來……&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這麼個故事告訴我們什麼事呢？&#xA;那就是&lt;strong&gt;即便是同樣的作用力，如果它的作用頻率高，那麼通常所造成的實際振動會更小！&lt;/strong&gt;&#xA;至於實際多小？什麼時候是通常，什麼時候是不通常？等等這些要想弄清楚的話，&#xA;還是得去做更深入的振動模擬計算才行了！&#xA;回到這個案例，一般來說汽缸一上一下的行程正好對應曲軸轉一圈，&#xA;所以如果曲軸轉速是 10 RPM 的話，那麼活塞就會在一分鐘之內上下 10 次，&#xA;如果只有一個汽缸的話，那麼抓著這個引擎的你也會感覺到它上下動了 10 次；&#xA;但若是本案的兩活塞引擎的話，同樣一分鐘轉 10 圈，你卻會感覺到它上下動了 20 次；&#xA;假設單缸引擎轉速 10000 RPM 的時候可以讓人幾乎感覺不到振動的話，&#xA;那麼這樣的雙缸引擎卻可能只要 5000 RPM 就能辦到了&#xA;(就算不考慮其實雙缸的作用力也同時變少的話)。&#xA;所以雖然雙缸配置在振幅也就是力的大小上只削減了大約一半，但是因為頻率變成兩倍，&#xA;所以實際的振動情況通常會是非常顯著的變小！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;至此我們再重新整理出一個通用規律：&#xA;&lt;strong&gt;通常來說，高頻率的力變化產生的實際振動表現會比較小，而低頻率的力變化產生的振動表現會比較大；&lt;/strong&gt;&#xA;&lt;strong&gt;因此在觀察後續的力變分佈圖時，除了關注力變的大小變化幅度之外，&lt;/strong&gt;&#xA;&lt;strong&gt;也要知道如果某種佈局能夠使力變的頻率增加的話，也能算是對振動的改善。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;最終從機件運動導致振動的角度來看，&#xA;這種雙缸的配置看起來雖然還是有不小的振動傾向，但是對比單缸的情況肯定是改善了非常多的。&#xA;然而這種配置實際上卻還隱藏著一個很重要的缺點！&#xA;如果從點火間隔的角度來看，因為四行程引擎是曲軸轉兩圈才完成一次循環，&#xA;也就是轉兩圈才會點火一次，那麼本例的配置就會導致點火的間隔不平均。&#xA;在本例中，曲軸轉完一圈就點了兩個汽缸，剩下的一圈則空著。&#xA;所以在雙缸引擎的型態裡面來說，其實兩個活塞行程相差 180 度所產生的機件振動是最小的；&#xA;但副作用就是會因為點火間隔的不平均，反而產生動力卡頓不連貫感！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_點火平衡&#34;&gt;點火平衡&lt;/h3&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l2-worst-layout.png&#34; alt=&#34;l2 worst layout&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l2-worst-force-y.png&#34; alt=&#34;l2 worst force y&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l2-worst-torque-x.png&#34; alt=&#34;l2 worst torque x&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l2-worst-torque-z.png&#34; alt=&#34;l2 worst torque z&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;如果說前例的配置會因為點火間隔的不平均而產生劣勢，那麼調整讓點火順序平均如何？&#xA;然而很不幸的，我們再複習一下，四行程引擎是曲軸兩圈一個循環，&#xA;也就是要在兩圈 720 度的行程內點過一遍全部的汽缸，&#xA;而我們的汽缸只有兩個，所以平均就 360 度點燃一個汽缸。&#xA;疑！這 360 度可不就是整整一圈嗎？&#xA;於是這麼樣的條件一套下來以後，就會發現要讓雙缸引擎平均點火的話，兩個汽缸就得要同上同下！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;因此這樣的配置所帶來的缺點就不用多說了，兩個汽缸同上同下，&#xA;所有特性與單缸一模一樣，不過振幅是原來的兩倍！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_折衷平衡&#34;&gt;折衷平衡&lt;/h3&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l2-compromised-layout.png&#34; alt=&#34;l2 compromised layout&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l2-compromised-force-y.png&#34; alt=&#34;l2 compromised force y&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l2-compromised-torque-x.png&#34; alt=&#34;l2 compromised torque x&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l2-compromised-torque-z.png&#34; alt=&#34;l2 compromised torque z&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;雙缸引擎是個比較難兩全的情況，顧了機件振動就顧不了點火間隔，顧了點火間隔就顧不了機件振動。&#xA;那麼能不能夠折衷處理呢？&#xA;兩活塞的行程差 180 度時對機件運動最友好、行程差 360 度時對點火間隔最友好，&#xA;那麼平均一下就會得到 270 度這個數字，於是雙缸 270 度的曲軸角就是這麼來的；&#xA;當然，270 度和 90 度的說法其實是一樣的！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在折衷平衡方案之下，振動趨勢的各方面結果表現，&#xA;也是居於完全平衡配置和完全不平衡配置二者之間。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_直列_3_缸&#34;&gt;直列 3 缸&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l3-eccentric-layout.png&#34; alt=&#34;l3 eccentric layout&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;雙缸和三缸在直列引擎裡面其實是蠻重要的基礎對照組，&#xA;所以我更完整的把加了曲柄配重、和沒有曲柄配重的方案都做了一遍。&#xA;這麼做的目的，主要是為了在目前配置還沒有那麼複雜的時候預先做個對照。&#xA;至於到後面更複雜的案例我就不會放過多的計算結果了，會直接討論最佳配置的情況。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_無連桿平衡配重&#34;&gt;無連桿平衡配重&lt;/h3&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l3-normal-force-x.png&#34; alt=&#34;l3 normal force x&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l3-normal-force-y.png&#34; alt=&#34;l3 normal force y&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l3-normal-torque-x.png&#34; alt=&#34;l3 normal torque x&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l3-normal-torque-y.png&#34; alt=&#34;l3 normal torque y&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l3-normal-torque-z.png&#34; alt=&#34;l3 normal torque z&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;首先注意到，&#xA;三缸機在橫向位移(X、Y 方向)的振動趨勢上可以達到非常完美的平衡，而這是雙缸機所達不到的！&#xA;究其原因，雙缸機的兩個活塞一上一下反向運動，&#xA;然而活塞的上下運動其實是不對稱的，所以只削減了大約四成，並不能完全對消互相的作用力。&#xA;而三缸機則是另一個路子，&#xA;三個活塞的行程各偏移了 120 度(1/3 圈)，反而因此可以互相完全消除彼此的作用；&#xA;而雙缸機之所以不能，其實從圖形來看，&#xA;就是因為活塞行程偏移了 180 度(1/2 圈)，正好是波峰波谷距離(180 度)的整數倍，剛好不能相消。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;至此我們可以整理出一個重要的結論：&#xA;&lt;strong&gt;活塞運動的相位差不為 1/2 (圈)的整數倍時，可以完美平衡彼此的橫向位移力作用&lt;/strong&gt;(力矩是另一回事)；&#xA;而&lt;strong&gt;活塞運動的相位差可被 1/2 (圈)整除時，會剩餘橫向的力變化導致振動趨勢&lt;/strong&gt;。&#xA;精簡一下其實可以得到一個更加簡單的結論：&#xA;&lt;strong&gt;在曲軸上分割出來的，角度相異的曲柄數量為單數時，橫向作用力可完全互相抵消；&lt;/strong&gt;&#xA;&lt;strong&gt;而這個曲柄數量為雙數時，不能完全相互抵消！&lt;/strong&gt;&#xA;(這裡強調「角度相異的曲柄」，是考慮到後面有些曲柄數量看似很多，&#xA;但其實有部份曲柄是朝向同一個角度的情況，所以提前為此下的限制。)&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;研究完橫向作用力的影響之後，接下來看看彎曲力矩的影響。&#xA;從結果可以看出，雙缸和三缸在 X、Y 軸上的力矩都不平衡，&#xA;簡單理解就是引擎可能不會上下左右振，但是會搖起來！&#xA;雙缸很好理解，兩個活塞在質心的兩邊，運動方向相反，當然就會造成轉矩。&#xA;而三缸的情況(其實所有直列單數汽缸的配置都有此共同現象)，剛好最中間一個活塞在正中央，&#xA;所以它基本產生不了轉動力矩，可以忽略不計，力矩平衡主要要看兩側其它汽缸的作用；&#xA;然而兩側活塞要不就因為相位差整除不了一個圓周、&#xA;要不就是因為活塞上下行程不對稱的緣故而無法互相完全抵消，&#xA;總之一定會剩下多餘的轉動力矩，產生轉動方向的振動源！&#xA;至此我們又得出一個結論：&#xA;&lt;strong&gt;直列引擎的汽缸數量為單數時，一定會產生旋轉方向的振動趨勢&lt;/strong&gt;；&#xA;至於汽缸數量為雙數時則不一定，得再進一步分析。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;最後特別看看 Z 軸，也就是曲軸同向的力矩分佈，&#xA;可以觀察到三缸機會產生微小幅度的轉動振動趨勢。&#xA;三個汽缸組件在 Z 方向上產生的力矩分佈雖然是很漂亮的對稱形狀，但是與活塞的情況不同，&#xA;在相位差不為 1/2 (圈)整除時反而會餘下殘存的力矩；&#xA;對比雙缸(機件平衡的那個配置)的分析結果，&#xA;相位差為 1/2 (圈)整數倍時反能完全相消 Z 軸的轉動力矩！&#xA;這樣又能整理出一個結論：&#xA;&lt;strong&gt;當曲軸異角曲柄數量為單數時，必然會在 Z 軸上產生轉動振動源，雖然振幅可能並不大；&lt;/strong&gt;&#xA;&lt;strong&gt;而這個曲柄數量為雙數時，則可完全消除 Z 軸上的轉動力矩。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;但是如同前面解釋過的，Z 軸向的振動趨勢其實實務上可能影響被排在最末位，&#xA;一來是因為通常它產生的振動幅度本來就小，而且頻率還比較高，在曲軸一圈內進行了上下三個週期，&#xA;套用我們先前的結論，更高頻的振動通常會讓實際表現出來的振動效果更小。&#xA;再來是因為在引擎軸的旋轉方向上可能存在其它更大的振動源影響下&#xA;(比方三缸機的點火膨脹週期就是不連續的)，使得機件所造成的 Z 軸旋轉擾動的存在感比較低。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_加入連桿平衡配重&#34;&gt;加入連桿平衡配重&lt;/h3&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l3-eccentric-force-x.png&#34; alt=&#34;l3 eccentric force x&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l3-eccentric-force-y.png&#34; alt=&#34;l3 eccentric force y&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l3-eccentric-torque-x.png&#34; alt=&#34;l3 eccentric torque x&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l3-eccentric-torque-y.png&#34; alt=&#34;l3 eccentric torque y&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l3-eccentric-torque-z.png&#34; alt=&#34;l3 eccentric torque z&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這個測試與前一個三缸配置基本完全相同，差別只在曲柄配重而已。&#xA;前一個配置為標準曲柄配重，就是配重只平衡了曲柄它自己而已，&#xA;而這一個配置則增加了更多配重，試圖配平活塞連桿所產生的力作用。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;簡單瀏覽結果，會發現所有的振動特性基本維持不便，只差在轉動方向的振動趨勢上。&#xA;其中 X 軸向的轉動振動趨勢(也就是側視引擎時的轉動趨勢)削減了 20%，只剩下 12.6 牛米變化量，&#xA;而 Y 軸向方向的轉動振動(也就是俯視引擎時的轉動趨勢)則被完全消除！&#xA;至此能讓我們意識到曲柄配重在整個引擎的振動平衡性裡面所佔據的重要性，&#xA;&lt;strong&gt;曲柄配重在直列多缸引擎上的主要作用，&lt;/strong&gt;&#xA;&lt;strong&gt;其實在於抵消因為活塞連桿的橫向作用力而產生的 Y 方向力矩&lt;/strong&gt;；&#xA;其次則是能稍微消減 X 方向的力矩，只不過杯水車薪，X 方向主要還是得看活塞能否互相平衡。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_直列_4_缸&#34;&gt;直列 4 缸&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_平面曲軸&#34;&gt;平面曲軸&lt;/h3&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l4-plane-layout.png&#34; alt=&#34;l4 plane layout&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l4-plane-force-x.png&#34; alt=&#34;l4 plane force x&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l4-plane-force-y.png&#34; alt=&#34;l4 plane force y&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l4-plane-torque-x.png&#34; alt=&#34;l4 plane torque x&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l4-plane-torque-y.png&#34; alt=&#34;l4 plane torque y&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l4-plane-torque-z.png&#34; alt=&#34;l4 plane torque z&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;直列四缸的各方面表現大多都很傑出，各方向轉動力矩完全平衡，&#xA;並且雙數汽缸的特性使它並不需要多餘的曲柄配重就能達到轉矩平衡。&#xA;平面位移震動趨勢上，X 方向作用力完全平衡，&#xA;唯一的缺點就是在 Y 方向的振動趨勢削減效果並不好，在測試案例中仍有約 219 牛的力變化！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;仔細觀察四根曲柄的角度會發現，曲柄其實兩兩方向一致，&#xA;因此實際上在橫向力的作用上與雙缸機一致，會在 Y 方向剩餘這麼多的作用力也就不奇怪了。&#xA;究其原因其實就是四個曲柄要去平分四行程整個行程的 720 度，&#xA;這麼分下來的角度差就是 180 度了，正好兩兩同向。&#xA;像這樣的現象在後面其它更多汽缸的配置上還會再看到，&#xA;&lt;strong&gt;因為能整除 720 度的關係，直列雙數汽缸時，曲柄角度總是兩兩同向成對，&lt;/strong&gt;&#xA;&lt;strong&gt;使得在橫向的振動特性上與只有汽缸數量一半的配置相同！&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;再觀察曲軸曲柄的角度分佈，還會發現四缸的曲軸其實就是將雙缸曲軸給對頭接起來而已，&#xA;而這其實就是在點火順序的排佈、以及曲柄平均分割曲軸角度之下所產生的自然結果。&#xA;然而在後面其它更多汽缸的配置其實也都會觀察到這一個共同現象，因此我們預先整理出一個結論：&#xA;&lt;strong&gt;在大多數的直列雙數缸情況下，其實可以從中間對半分割，&lt;/strong&gt;&#xA;&lt;strong&gt;而其左右兩邊正好都會是鏡像對稱的、汽缸數只有一半的兩個發動機的組合。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;當然前面的歸納符合大多數通常情況下的觀察結論，&#xA;而在實務上，如果你就因為我這麼說了這句話，就想要卯起來設計一個不鏡像對稱的配置，&#xA;也不是不能做到的；&#xA;只是稍微試一下你就會發現，如果要顧及點火順序平均亂散的話，&#xA;曲軸很自然就會長成這個鏡像對稱的樣子，&#xA;如果硬要做成鏡像不對稱則多半會發現它的點火分佈也不太平均。&#xA;那麼這個其實並不會被肯定遵循的歸納結論對我們有什麼用處呢？&#xA;我覺得它的最大好處在於可以簡化我們對分析結果的「理解」。&#xA;(當然這並不會去影響實際的物理分析結果，只是影響了在腦袋思考理解的層面上對我們的簡化幫助)&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在符合前述規律的引擎配置上，&#xA;我們可以將一個汽缸很多的直列引擎去直接套用汽缸數量只有一半的分析結果，&#xA;例如本案例的四缸引擎就可以等效為兩個對稱雙缸，可以直接套用雙缸的分析結果來理解它。&#xA;在橫向的平移振動趨勢上，本例四缸發動機完全就等同於對半的雙缸機，只不過幅度被乘為兩倍；&#xA;而在轉動的力矩部份，成對的兩個雙缸機正好對稱的、等幅的對消了彼此的力矩作用，&#xA;因此得到了非常良好平衡的力矩振動表現。&#xA;其實在後面的實例分析中我們也能發現：&#xA;&lt;strong&gt;直列雙數缸配置往往能夠做到幾乎不存在轉矩上的振動趨勢！&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_十字曲軸&#34;&gt;十字曲軸&lt;/h3&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l4-cross-layout.png&#34; alt=&#34;l4 cross layout&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l4-cross-force-x.png&#34; alt=&#34;l4 cross force x&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l4-cross-force-y.png&#34; alt=&#34;l4 cross force y&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l4-cross-torque-x.png&#34; alt=&#34;l4 cross torque x&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l4-cross-torque-y.png&#34; alt=&#34;l4 cross torque y&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l4-cross-torque-z.png&#34; alt=&#34;l4 cross torque z&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;前面分析的四缸曲軸，因為曲柄角度差都是 180 度，&#xA;組合起來正好左右展開，好像可以直接放平在桌面上(如果曲柄配重不要凸起來的話)，&#xA;因此前面這種曲軸常被稱為是「平面曲軸」。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;前面的平面曲軸配置結果告訴我們，雖然它在各方面表現都不錯，就是 Y 方向的振動表現不太好；&#xA;那如果我們把曲軸的角度分割的更細呢？&#xA;於是這就產生了一種將曲軸角度全部平均分割的特別款曲軸，四個曲柄平均角度差為 90 度，&#xA;從軸向看過去正好是個十字形(或者斜一點看就變 X 形)，所以就被稱為「十字曲軸」，&#xA;即為本測試案例所使用的設定配置。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;前面才剛提過一個歸納結論：直列雙數缸配置多半可以從中間對分為兩個鏡像對稱的兩個較小的配置。&#xA;也說明過這只是一個符合一般情況的歸納結論，並不是不能夠設計個就是不鏡像對稱的東西；&#xA;你看本例馬上就給你出了個這樣的例子，這十字曲軸就是不鏡像對稱的案例。&#xA;從結果可以看到，雖然因為四缸相位差仍然可被 1/2 圈整除，&#xA;但是因為活塞行程被分割的更細密，所以位移振動的相消結果非常良好，&#xA;在 Y 方向只剩下 7.6 牛的變化範圍，約只有平面曲軸版的 3.5%。&#xA;只不過它的轉矩振動表現就不太理想了，甚至 X 軸向有 26 牛米的力矩差距，&#xA;這方面表現比三缸機還差！&#xA;究其原因會發現，十字曲軸它並沒有鏡像對稱，&#xA;因此沒能像鏡像對稱的配置那樣良好的消減轉矩振動。&#xA;總結下來可以說，十字曲軸對於降低位移振動很有幫助，但是以產生轉矩振動的副作用作為代價的。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;此外十字曲軸所付出的副作用並不僅止於此。&#xA;由於四缸 90 度的行程差並沒能夠平均分割整個 720 度的行程，&#xA;因此不可避免的帶來點火間隔不平均的現象。&#xA;以平面曲軸來說，曲軸每轉動 180 度就點火一個汽缸，4 次點火正好平均分配 720 度；&#xA;而十字曲軸的配置下，會有兩組汽缸間相距 90 度就點火，只有平均間隔的一半，&#xA;另外兩組汽缸則會間隔 270 度點火，比平均間隔多了一半。&#xA;當然這樣的點火不平均現象雖然在理論上並不完美，&#xA;不過也有人喜歡這樣的配置所產生的引擎聲浪、以及它帶來的動力頓挫感，&#xA;這方面就不予置評了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_直列_5_缸&#34;&gt;直列 5 缸&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l5-eccentric-layout.png&#34; alt=&#34;l5 eccentric layout&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l5-eccentric-force-y.png&#34; alt=&#34;l5 eccentric force y&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l5-eccentric-torque-x.png&#34; alt=&#34;l5 eccentric torque x&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l5-eccentric-torque-z.png&#34; alt=&#34;l5 eccentric torque z&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;五缸機的汽缸數量為單數，首先我們就知道它的曲柄配重省不了，&#xA;然後再看它表現出來的振動趨勢，與同為單數汽缸的三缸機特性基本完全相同。&#xA;細節來看，五缸和三缸的 X 軸向轉矩振動是半斤八兩，&#xA;但是在 Z 軸方向轉矩振動幾乎已被消為零，Y 方向平移振動也是已經幾乎為零，&#xA;這方面比三缸機更加傑出。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;總結而言，五缸機的振動特性基本可以比照三缸機。&#xA;細節方面各有優劣，但整體差異不大，&#xA;更大的差異可能是五缸機因為汽缸數量比較多，所以馬力更大吧！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_直列_6_缸&#34;&gt;直列 6 缸&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l6-normal-layout.png&#34; alt=&#34;l6 normal layout&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l6-normal-force-x.png&#34; alt=&#34;l6 normal force x&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l6-normal-force-y.png&#34; alt=&#34;l6 normal force y&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l6-normal-torque-x.png&#34; alt=&#34;l6 normal torque x&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l6-normal-torque-y.png&#34; alt=&#34;l6 normal torque y&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l6-normal-torque-z.png&#34; alt=&#34;l6 normal torque z&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;看了前面這麼多直列引擎之後，我們應該已經得到兩點簡單結論：&#xA;雙數汽缸除了 Y 方向的平移振動以外，其它方面幾乎沒有振動趨勢；&#xA;單數汽缸除了 X 方向轉矩振動外，其它方面幾乎沒有振動趨勢。&#xA;這麼就產生了一種想法：&#xA;能不能拿兩個小的單數缸機，鏡像對稱合併成一個大的偶數缸機，把單數機的轉矩都對消掉，&#xA;變成一個在各方向幾乎都沒有振動的完美引擎呢？&#xA;這個方法是真實可行的，我們用一個最小型的單數機 — 也就是三缸機，&#xA;把它鏡像拼起來就成了經典的直列六缸機了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;觀看六缸機的各方面振動趨勢，全方面幾乎都被內部相消，合併起來都幾乎為零！&#xA;真的要刁鑽的話，它其實還在 Y 方向、和 Z 軸向殘留了一點點的剩餘，&#xA;不過數值大小都已經到了小數位了。&#xA;因為六缸的穩定性表現幾乎達到完全完美的程度，&#xA;也就不難了解為什麼那些研究汽車引擎的人都會這麼推崇直列六缸了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;不過在一般民用車輛上不常見直列六缸，也倒不是什麼別的原因，單純就是因為&#xA;一：六缸機稍嫌太長了；二：六缸機汽缸數量太多，已經大大超過一般民用對於馬力的需求。&#xA;但是在飛機上就沒有這些限制，所以航空飛機就非常的愛用六缸機(其實正確來說是直六的變體：V12)。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_直列_8_缸&#34;&gt;直列 8 缸&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l8-normal-layout.png&#34; alt=&#34;l8 normal layout&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l8-normal-force-x.png&#34; alt=&#34;l8 normal force x&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l8-normal-force-y.png&#34; alt=&#34;l8 normal force y&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l8-normal-torque-x.png&#34; alt=&#34;l8 normal torque x&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l8-normal-torque-y.png&#34; alt=&#34;l8 normal torque y&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l8-normal-torque-z.png&#34; alt=&#34;l8 normal torque z&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;同前面的論述，直列八缸就是兩個鏡像對稱的四缸機合併起來的結果，&#xA;只不過我們選用的是平移振動表現更加的十字曲軸四缸機；&#xA;至於十字曲軸帶來的轉矩振動？&#xA;這點倒完全無需要擔心，因為鏡像合併後自然能將這些問題給對消掉。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;看看分析出來的八缸機結果，也是完全符合我們的預期，&#xA;大多數的平移和轉動振動都已互相抵銷為零，除了在 Y 方向還剩下 15 牛的力變化範圍以外，&#xA;但幅度相比平面曲軸的四缸機只剩下 7%。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_直列_10_缸&#34;&gt;直列 10 缸&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l10-normal-layout.png&#34; alt=&#34;l10 normal layout&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l10-normal-force-x.png&#34; alt=&#34;l10 normal force x&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l10-normal-force-y.png&#34; alt=&#34;l10 normal force y&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l10-normal-torque-x.png&#34; alt=&#34;l10 normal torque x&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l10-normal-torque-y.png&#34; alt=&#34;l10 normal torque y&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/l10-normal-torque-z.png&#34; alt=&#34;l10 normal torque z&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;前面我們用兩個三缸機併出來一臺六缸機，各方面表現已經近乎完美，&#xA;但還是剩下了一點點殘餘，對於強迫症患者來說或許可能無法接受。&#xA;那麼能不能用同樣的路子來造出一個完美的發動機呢？這就來試試看！&#xA;比三缸機再大一些的單數缸就是五缸機了，兩個五缸機併起來就得到一臺直列發動機的終極版本：&#xA;直列十缸發動機。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;觀看直列十缸機的分析結果，基本同直列六缸一摸一樣，但是更加完美。&#xA;各個方向的振動力都被削減到小數兩三位以下了，基本就是零。&#xA;很多人分析引擎的時候都會說直列六缸是最完美的型態，但是這裡我卻用實際的分析數據告訴你：&#xA;直列六缸並不夠完美，直列十缸才是真正完美的發動機型態！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;但是這就讓我們產生了一個疑問，既然直列十缸這麼完美，&#xA;為什麼實際上卻反而幾乎就沒見過採用了直列十缸發動機被用在車上或飛機上呢？&#xA;我想這個原因也不複雜，因為直列十缸實在是太長了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;一個過長的發動機，實用上最直接的問題就是放不放的下？&#xA;如果連飛機都會嫌棄這樣的發動機，那就更不用說車子為什麼不用它了！&#xA;除了佔用的空間大小之外，過長的發動機還存在結構上的問題。&#xA;當我們看到一個在理論分析上能夠各種力完美對消的發動機時，&#xA;要知道實際上這些內部對消的力是靠著曲軸和主機本體的結構強度來承受的，&#xA;那麼當這些結構件過長的時候，就會給內部的應力承受力帶來更大的設計難度，和實際應用上的風險。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;因此雖然直列十缸在理論上更加完美，但是其所帶來的其他副作用卻給人帶來更多的難題，&#xA;再轉頭對比它相對於六缸機所提供的改善程度，&#xA;也就不難理解為什麼設計師們舉起手來掂量掂量之後，紛紛都拋棄十缸機而撿起六缸機了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_v_型_12_缸&#34;&gt;V 型 12 缸&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/v12-normal-layout.png&#34; alt=&#34;v12 normal layout&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/v12-normal-force-x.png&#34; alt=&#34;v12 normal force x&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/v12-normal-force-y.png&#34; alt=&#34;v12 normal force y&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/v12-normal-torque-x.png&#34; alt=&#34;v12 normal torque x&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/v12-normal-torque-y.png&#34; alt=&#34;v12 normal torque y&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/v12-normal-torque-z.png&#34; alt=&#34;v12 normal torque z&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;有了前面直列發動機的分析基礎後，接下來要看的就是直列的變體：V 型發動機。&#xA;首先先從最簡單單純的 V12 開始。&#xA;V12 其實就是將兩部直六給併起來的結果，&#xA;因為直列六缸機本身就已經擁有非常良好的低振動性能，因此直接把它們合併起來也就沒有什麼難度，&#xA;而從 V12 的分析結果來看也可以印證這點。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;那麼這裡就提一個有點意思的小知識，V 型發動機的兩排汽缸的夾角為什麼總是特定的角度？&#xA;其實這就是考量到點火間隔的平均性、以及曲軸曲柄角度分佈的平均性的結果。&#xA;12 汽缸要平均分割 720 度的行程的話，那就是曲軸每轉動 60 度就要點火一個汽缸，&#xA;因此兩排汽缸的夾角最好就是 60 度，或著是 60 度的整數倍，比方說 30 度或 120 度&#xA;(不過 120 太寬了，基本是沒人會這麼做)。&#xA;汽缸夾角正好是行程分割角度的整數倍時有一個好處，那就是能讓曲柄在曲軸上呈獻平均張開的形狀；&#xA;如果你非要造一個夾角 40 度或 80 度的 V12 發動機也並不是不允許，&#xA;只是這麼一佈置下來就會發現曲柄的角度分割會變得不太平均，自然也就對振動表現不利了。&#xA;在本測試案例中，汽缸的夾角即選用 60 度。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_v_型_6_缸&#34;&gt;V 型 6 缸&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/v6-eccentric-layout.png&#34; alt=&#34;v6 eccentric layout&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/v6-eccentric-force-x.png&#34; alt=&#34;v6 eccentric force x&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/v6-eccentric-force-y.png&#34; alt=&#34;v6 eccentric force y&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/v6-eccentric-torque-x.png&#34; alt=&#34;v6 eccentric torque x&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/v6-eccentric-torque-y.png&#34; alt=&#34;v6 eccentric torque y&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/v6-eccentric-torque-z.png&#34; alt=&#34;v6 eccentric torque z&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;我們已經知道直列六缸、或者 V 型 12 缸發動機什麼都好，就是有兩個缺點：&#xA;發動機用在車輛上有點過長的問題，以及對沒那麼大馬力的應用需求來說汽缸數量過多。&#xA;因此雖然它這麼完美，但人們總是想要尋找汽缸數量更低的替換方案！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;那麼我們將 V12 的長度折一半，就成了兩個三缸機組成的一臺 V6 引擎。&#xA;V6 的總體振動表現與直列三缸較為接近，但比它稍差些，&#xA;可能是因為三缸本身就會產生些轉動力矩，兩臺以不同角度疊加起來之後，&#xA;讓它在多方向的振動特性上更加複雜凌亂了吧！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_v_型_8_缸&#34;&gt;V 型 8 缸&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/v8-normal-layout.png&#34; alt=&#34;v8 normal layout&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/v8-normal-force-x.png&#34; alt=&#34;v8 normal force x&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/v8-normal-force-y.png&#34; alt=&#34;v8 normal force y&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/v8-normal-torque-x.png&#34; alt=&#34;v8 normal torque x&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/v8-normal-torque-y.png&#34; alt=&#34;v8 normal torque y&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/v8-normal-torque-z.png&#34; alt=&#34;v8 normal torque z&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;V8 引擎就是夾在 V6 與 V12 中間的型態，汽缸數量比 V6 更多，但尺寸長度比 V12 更小。&#xA;不過 V8 引擎絕對不是把 V6 和 V12 加起來砍半這麼簡單而已，&#xA;事實上我在製做這個案例模擬的時候遇到最多難題的案例就是在 V8 的配置上！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;V8 就是兩臺直列四缸拼在一起沒錯，&#xA;並且經過前面的計算原理可以得知，兩排汽缸的夾角 90 度應該是個不錯的選擇。&#xA;但是實際排佈一下曲軸曲柄角度後就會發現一個神奇的現象：&#xA;在安排平均、對稱的點燃所有汽缸的情況下，八個曲柄很自然的形成各自夾角 180 度，&#xA;也就是變成一個八曲柄的平面曲軸！&#xA;這種曲軸長相顯然對振動表現會有較差的影響，得改，但怎麼改呢？&#xA;理想的情況應該要至少產生一個像是十字曲軸那樣的東西，才能在各方面比較平衡，&#xA;但是如果要顧到行程順序平均平衡的話，我排了好久竟然排不出來！&#xA;後來我上網偷看一下別人的答案，這才發現原來是真的沒法完美的排出美好的形狀。&#xA;當然現行流通的 V8 引擎顯然用的絕對不會是平面曲軸，那麼他們是怎麼做到這一切的呢？&#xA;原來秘訣在於犧牲一些點火順序上的均勻性。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;一般來說 V 型就是兩個直列汽缸，兩排汽缸各自按照各自的點火順序點火，&#xA;然後兩排汽缸之間再彼此很平均的左、右、左、右這樣交錯點火。&#xA;而到了 V8 引擎上，為了曲軸角度的排佈關係，兩排汽缸之間的順序就變得不是那麼平均交換關係，&#xA;而是變成了左、右、左、左、右、左、右、右這樣的順序。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;總體而言，V8 的振動表現比較接近使用了十字曲軸的直列四缸機，但比其再稍差些！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_水平對臥_4_缸&#34;&gt;水平對臥 4 缸&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/h4-normal-layout.png&#34; alt=&#34;h4 normal layout&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/h4-normal-force-x.png&#34; alt=&#34;h4 normal force x&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/h4-normal-force-y.png&#34; alt=&#34;h4 normal force y&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/h4-normal-torque-x.png&#34; alt=&#34;h4 normal torque x&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/h4-normal-torque-y.png&#34; alt=&#34;h4 normal torque y&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/h4-normal-torque-z.png&#34; alt=&#34;h4 normal torque z&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;水平對臥配置可以算得上是 V 型配置的特例，即 V 型佈局的夾角為 180 度的時候即是，&#xA;然而光是這麼的看待水平對臥佈局還是顯得有些太粗淺。&#xA;水平對臥並不僅僅只是兩排汽缸夾角 180 度而已，我們從上面的配置分佈圖可以視覺化的看到，&#xA;它一個更重要的特點在於兩排汽缸的曲柄是完全鏡像對稱的！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在這麼特別情境下使用的如此曲柄角度分佈，給水平對臥發動機帶來一項極為特殊的特性：&#xA;它左右兩邊的汽缸運動完全對稱！&#xA;在討論雙缸和四缸機的時候能發現一件事情，雖然看似兩個活塞一上一下的成對運動，&#xA;但它們並不能夠完全對消彼此的作用力，因為活塞上下半部的運動並不是對稱的。&#xA;而到了水平對臥這邊，當左邊活塞往外走時，右邊活塞也在往外走；&#xA;當左邊活塞往內走時，右邊活塞亦是。&#xA;並且它們的運動行程位置也是一致的，當左邊活塞在靠近上死點範圍快速移動時，右邊也是；&#xA;而當左邊運作在靠近下死點範圍較慢運動時，右邊亦同。&#xA;唯一的缺點在於 Y 軸向殘餘了微幅的轉矩振動源，&#xA;這主要是因為活塞連桿和曲柄本身存在厚度，所以左右汽缸其實並不能夠完全對準一條線，&#xA;而必須在 Z 軸方向稍微拉開一點點的距離所導致。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;總體來說，就是這樣子近乎左右完全對稱的活塞運動行程，&#xA;使得水平對臥機可以不受「1/2 圈整除」魔咒的影響，總是能夠保持力平衡。&#xA;雖然說關於運動平衡這件事並不是水平對臥機的特權，&#xA;我們也已經知道直列式和 V 型排佈同樣也都能夠達到完美平衡狀態；&#xA;只是相比於後者需要 6 缸、12 缸以上才能達到完全平衡，&#xA;水平對臥機的更大優勢在於可以使用非常少的汽缸數量就能達到非常良好的平衡效果，&#xA;因此水平對臥式佈局就成為了在較低排氣量的應用用途上具有獨特優勢的存在。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_水平對臥_6_缸&#34;&gt;水平對臥 6 缸&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/h6-eccentric-layout.png&#34; alt=&#34;h6 eccentric layout&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/h6-eccentric-force-x.png&#34; alt=&#34;h6 eccentric force x&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/h6-eccentric-torque-y.png&#34; alt=&#34;h6 eccentric torque y&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/h6-eccentric-torque-z.png&#34; alt=&#34;h6 eccentric torque z&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;水平對臥 6 缸機雖然也是擁有水平對臥機獨特的對稱曲軸，但是從結果來看顯然表現就差了不少！&#xA;這主要是因為它的左右兩半是個三缸機，而三缸機本來就存在一些沒能被平衡的力矩，&#xA;從而導致水平對臥 6 缸機表現出多個方向的雜項振動源出來。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_水平對臥_8_缸&#34;&gt;水平對臥 8 缸&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/h8-normal-layout.png&#34; alt=&#34;h8 normal layout&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/h8-normal-force-x.png&#34; alt=&#34;h8 normal force x&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/h8-normal-force-y.png&#34; alt=&#34;h8 normal force y&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/h8-normal-torque-x.png&#34; alt=&#34;h8 normal torque x&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/h8-normal-torque-y.png&#34; alt=&#34;h8 normal torque y&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/h8-normal-torque-z.png&#34; alt=&#34;h8 normal torque z&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;水平對臥 8 缸機又回復了 4 缸型態所擁有的近乎完美的平衡狀態。&#xA;至此我們能給水平對臥式佈局總結一個簡單的結論：&#xA;&lt;strong&gt;水平對臥式佈局，必須要在單邊汽缸數量仍為偶數時，才能達到近乎完美的振動平衡！&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_星型_5_缸&#34;&gt;星型 5 缸&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/r5-layout.png&#34; alt=&#34;r5 layout&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/r5-force-x.png&#34; alt=&#34;r5 force x&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/r5-force-y.png&#34; alt=&#34;r5 force y&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/r5-torque-z.png&#34; alt=&#34;r5 torque z&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;星型發動機表面上看應該要是一個極度偏斜不平衡的構型才對，&#xA;然而計算模擬的結果卻表現出非常良好的振動表現，這是怎麼一回事呢？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;不同於在其他的配置上我們總能夠精心配置每一個曲柄的角度位置，&#xA;單列星型發動機全部汽缸只共用一個曲柄，因此相鄰活塞的運動是極其協調相似的，&#xA;照理來說應該會是振的最厲害的佈局。&#xA;然而星型佈局有一個特點，就是它的活塞和汽缸是輻射狀排佈的，&#xA;這項重要的特性使得曲軸配重在這裡能夠發揮出非常有效的作用！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;回顧最初我們在單缸引擎上試圖利用曲軸配重平衡活塞運動所做的嘗試，&#xA;在那個案例中之所以效用不佳，就是因為活塞產生的作用力是一個方向的，&#xA;可是曲軸的作用力是圓周輻射分佈的，就導致這邊力縮小了、那邊力卻放大了的問題。&#xA;但是在星型佈局上就不一樣了，環繞了一圈的活塞使得它綜合的作用力也同樣是圓周輻射分佈的，&#xA;加上發動機質量中心點正好就在曲軸軸心上，&#xA;因此曲軸配重可以非常完美的平衡掉活塞運動本來應該產生的非常不平衡的作用力。&#xA;以上的論述內容都可以在分析結果圖的趨勢變化中看見這項理論的合理性，&#xA;並且實際的數字也印證了它的最終效果。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;好了，道理是這個道理，但是從計算出來的結果來看感覺好像也沒有那麼的完美。&#xA;機件作用力互相削減之後，橫向位移作用力部份還剩下了 4.8 牛的力變化量，&#xA;雖然確實是有不錯的削減效果，但是對比前面的其他形式發動機好像也沒有特別優秀，&#xA;這是怎麼回事呢？&#xA;其實簡單的來說就是汽缸數量太少了。&#xA;偏心曲軸所產生的力量是隨著曲軸的轉動而非常均勻平滑的沿著圓周方向作用出去，&#xA;但是個別的活塞連桿卻是在同一個軸心角度的位置上產生作用力，&#xA;兩者自然是沒有辦法完全對應匹配，這有點像是在數位圖片相關話題上常說的「解析度不足」。&#xA;如果讀者有興趣自己玩玩三缸星型配置的話，應該會能更明顯的觀察出這個現象&#xA;(但我實在是暫沒有心力去跑更多的測案了)。&#xA;如果前面的這個道理是對的，那麼只要汽缸數量愈多，&#xA;活塞在軸心圓周上的分佈就會愈細密，越發接近連續分佈，&#xA;也就會能夠更好的與偏心曲軸所產生的作用力完美對消；&#xA;而事實上後面汽缸數量更多的星型佈局測案會證實這個現象。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_星型_7_缸&#34;&gt;星型 7 缸&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/r7-layout.png&#34; alt=&#34;r7 layout&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/r7-force-x.png&#34; alt=&#34;r7 force x&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/r7-force-y.png&#34; alt=&#34;r7 force y&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/r7-torque-z.png&#34; alt=&#34;r7 torque z&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;星型 7 缸的結果表現特性與 5 缸基本完全一致，但是幅度更小，&#xA;橫向只剩下 0.3 牛的力變化量，基本已經能將之忽略當作不存在了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;星型發動機與前面我們分析過的其它型式不同。&#xA;在先前的汽缸佈局型式裡，往往多一顆、少一顆汽缸的結果表現可以展現出完全不同的特性，&#xA;但是星型佈局就不是這樣。&#xA;&lt;strong&gt;星型佈局下不管有多少汽缸，它的振動表現特性是一樣的，&lt;/strong&gt;&#xA;&lt;strong&gt;只差在作用力分割組合的細緻度、以及最終產生出來的合力大小幅度上。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_星型_9_缸&#34;&gt;星型 9 缸&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/r9-layout.png&#34; alt=&#34;r9 layout&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/r9-force-x.png&#34; alt=&#34;r9 force x&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/r9-force-y.png&#34; alt=&#34;r9 force y&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/r9-torque-z.png&#34; alt=&#34;r9 torque z&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;既然在星型佈局已經分析出結論，理論上已無需要再多做更多的案例，&#xA;但反正星型的汽缸數量就三個數字而已，於是就順變再跑個 9 缸的結果，&#xA;也是作為一個對比和印證。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;9 缸星型佈局的力組成特性果然與 5 缸、7 缸完全相同，&#xA;而合力的大小已經達到小數三位以下，基本就是完全不存在！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_複列星型_14_缸&#34;&gt;複列星型 14 缸&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/r14-layout.png&#34; alt=&#34;r14 layout&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/r14-force-x.png&#34; alt=&#34;r14 force x&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/r14-force-y.png&#34; alt=&#34;r14 force y&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/r14-torque-x.png&#34; alt=&#34;r14 torque x&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/r14-torque-y.png&#34; alt=&#34;r14 torque y&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/r14-torque-z.png&#34; alt=&#34;r14 torque z&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;既然經過前面的案例分析中我們已經知道並且證實，不同汽缸數的星型佈局振動趨勢是一模一樣的，&#xA;那麼對於複列星型，我就不再分析過多的組合了&#xA;(不過在打包檔裡都有全部的案例分析資料 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_2&#34; title=&#34;View footnote.&#34;&gt;2&lt;/a&gt;]&lt;/sup&gt;)，&#xA;這裡就只以最常見的複列 14 缸作為本篇的壓軸結尾。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;單列 7 缸的振動表現已經非常良好，只餘下了小數位的橫向振動源，&#xA;那麼兩個相位相差 180 度組成的複列 14 缸就能夠完全對消彼此僅存的這一點點擾動源，&#xA;使在各個方向上都不存在任何的振動因子。&#xA;從分析結果來看，複列星型具有這麼良好優秀又穩定的性能表現，&#xA;也就不奇怪為什麼在那個活塞發動機主宰的航空時代理，星型發動機能夠獲得這麼多用戶的愛用讚賞了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_結尾&#34;&gt;結尾&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;其實在實際的產品上還存在很多很多其他的引擎佈置，&#xA;比方說 V 型佈局其實還有一種也算是常見的佈置方式，就是兩排活塞共用曲柄的設計。&#xA;比如一個 V6 引擎左右各三個汽缸，按照以往六個活塞要配上六個曲柄，&#xA;但是在這卻只放了三個，因為成對的左右兩汽缸是共用一個曲柄。&#xA;這麼設計的好處就是可以節省重量、微幅縮短引擎長度(因為曲柄本身也需要厚度)、&#xA;並稍微減少製造維護難度和成本；&#xA;當然副作用就是左右兩排汽缸各自的行程安排不再完全自由，而是會與對方互相遷就制約，&#xA;振動表現自然不會最理想，也因此在這次的就沒有排入本篇的測試案例裡。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;當然有關活塞引擎的配置還有很多很多各種各樣的種類和變化、亞型、或微調等等，&#xA;只是礙於偏服不及、以及個人精力不及，就沒有去一一嘗試了。&#xA;但是使用的工具和方法都留在這兩篇裡了，有興趣、有想法的讀者就可以自己弄下來玩一玩。&#xA;這樣下次在和朋友聊天扯皮的時候就可以為自己多增加一些談資，&#xA;至少下次再有人吹捧直六或 V12 有多麼完美的時候(其實是真的已經夠完美了)，&#xA;你可以告訴他們真正能承擔完美稱呼寶座的其實是複列星型！&#xA;(或者其實你還可以把直十、V20 也拿出來掰扯一番！)&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;footnotes&#34;&gt;&#xA;&lt;hr/&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_1&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_1&#34;&gt;1&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-5---%E6%A9%9F%E4%BB%B6%E6%8C%AF%E5%8B%95%E5%88%86%E6%9E%90/&#34;&gt;活塞引擎 5：機件振動分析&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_2&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_2&#34;&gt;2&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-6/engine-vibration-analysis.tar.xz&#34;&gt;本文所有的案例分析資料、及分析程式&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_3&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_3&#34;&gt;3&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Straight-twin_engine&#34;&gt;Straight-twin engine&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>活塞引擎 5：機件振動分析</title>
      <link>http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-5---%E6%A9%9F%E4%BB%B6%E6%8C%AF%E5%8B%95%E5%88%86%E6%9E%90/</link>
      <pubDate>Mon, 23 Sep 2024 00:16:31 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-5---%E6%A9%9F%E4%BB%B6%E6%8C%AF%E5%8B%95%E5%88%86%E6%9E%90/</guid>
      <description>&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;前集說完了汽缸點火的順序影響引擎振動特性的部份，這集要來解說零件運動所造成的振動。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;關於活塞發動機的振動特性，我並不是第一個提及的，&#xA;只是在瀏覽了網路上的其他中文資料和節目後，覺得看到的解說都有些抽像而不夠具體具現。&#xA;因此我就想，何不自己寫個小程式畫一下圖表，&#xA;自己實際看看活塞、連桿這些東西的運動到底是如何推動引擎的呢？&#xA;於是就有了這個小程式。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_機件振動原理&#34;&gt;機件振動原理&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-5/fig1-1-walking-on-a-boat.png&#34; alt=&#34;fig1 1 walking on a boat&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 1. 人在小船上往一方向走，船便往另一方向飄&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;實際的機器並不是像物理教科書上存在理想的完全剛體、或存在一個完全不會動的基點，&#xA;當我們使一部份的結構動起來時，同樣也會導致連結這個零件的基坐本身發生位移。&#xA;這就是牛頓反作用力的真實體現，&#xA;就如同一個人在小船上起身往一個方向移動時，船本身會被推動往另一個方向飄走一樣。&#xA;那如果船上的這個人他不是往一個方向一直走，而是來回走的話，&#xA;那麼同樣也會導致他腳下的小船來回移動，而這可不就是振動嗎？&#xA;回到活塞引擎裡面，活塞、活塞連桿、曲柄曲軸這麼來來回回的動來動去，這便是引擎振動的來源大宗，&#xA;至於像凸輪軸這一類體量比例微幅的東西我們則一般忽略不計！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;不過如果再進階一步想，其實「人往這移動、船往那裡飄」是說給小朋友容易理解用的，&#xA;而實際產生振動的源頭其實是「力」的作用而不是「位移」，&#xA;這會導致船隻的本體受力方向有時候會和一般讀者的直覺方向相反。&#xA;比方說一個人雖然往船頭方向移動，可是他正在減速，&#xA;這時候腳下的船受到的反作用力其實是向前的，與他的行進方向相同；&#xA;而如果他在等速移動的話，船隻其實不受力。&#xA;因此我們雖然可以透過機件運動的現象去計算振動的趨勢，&#xA;但是注意我們關注的重點其實不是零件運動的位置，而是它移動的「加速度」！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;最終整理一下，活塞引擎的機件運動導致振動是什麼意思呢？&#xA;就是即便引擎不上汽油，不壓縮、不點火，僅僅只是用一個馬達插在引擎軸上旋轉起來，引擎也會產生振動；&#xA;而這個振動的源頭不是來自壓縮、點火、或膨脹，僅僅只是因為零件運動之間的配平不平衡所導致的振動！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_幾何和參數定義&#34;&gt;幾何和參數定義&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;現在要來介紹我所做的小分析程式&#xA;&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_analysis-program&#34;&gt;[&lt;a id=&#34;_footnoteref_1&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&#xA;的用法。&#xA;也許對於很多讀者來說可能並沒有時間精力去使用這隻程式，&#xA;但是至少也絕對需要先了解一下我對它所做的座標定義，&#xA;否則可能會不明白它跑出來的多張分析圖所表示的意義。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_單一汽缸參數定義&#34;&gt;單一汽缸參數定義&lt;/h3&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-5/fig2-1-single-cylinder-parameters.png&#34; alt=&#34;fig2 1 single cylinder parameters&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 2. 單一汽缸的和尺寸參數定義&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;為了化簡理解難度，這裡會將單一汽缸的參數定義、以及多汽缸聯合時的相關參數分開來講述，&#xA;首先先來看看單一一個汽缸的情況(配置示意如 Figure 2)：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;olist arabic&#34;&gt;&#xA;&lt;ol class=&#34;arabic&#34;&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;座標原點即為引擎的整體質量中心&lt;/strong&gt;，&#xA;無論是在單一汽缸的設定、或是在多汽缸的聯合設定中皆為如此，在自行修改使用時請注意這點。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;零件運動的計算以曲軸軸心為中心，曲軸本身平行於 Z 軸，Z 軸以朝向紙面的上方為正向。&#xA;而 Y 軸為紙面上方方向，X 軸為紙面右方方向。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;由於曲軸可能並不在質心上，因此假定曲軸與質心(座標原點)之間存在一個距離為 &lt;code&gt;Y-Offset&lt;/code&gt; 的移位，&#xA;該值為正時表示曲軸在整體質心的上方，負值表示曲軸在質心下方。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;汽缸中心線與 Y 軸具有一個夾角 &lt;code&gt;Cylinder-Rad&lt;/code&gt;，&#xA;不過在只分析單一汽缸的時候設定此值為零即可，此時汽缸中心線與 Y 軸重疊，方向向上。&#xA;活塞只在汽缸中心線上移動，也就是說在汽缸夾角為零的情況下，活塞等於是在 Y 軸上移動。&#xA;在這裡我們並不關心汽缸的其他幾何參數，畢竟汽缸本身並不是移動件，&#xA;而我們只關心活塞在汽缸內的移動行程。&#xA;活塞在汽缸內的下死點位置與曲軸中心的距離為 &lt;code&gt;Cylinder-Base&lt;/code&gt;；&#xA;活塞上死點與下死點之間的距離為 &lt;code&gt;Cylinder-Len&lt;/code&gt;，即活塞行程長度。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;由於在多汽缸聯合的情況下，多個汽缸是共用一根曲軸，而各組汽缸之間各有各自的行程錯落關係，&#xA;因此需要把曲軸的轉角和曲柄的轉角進行區分。&#xA;這裡假設在共同曲軸的轉角為零的狀態下，曲柄方向與汽缸方向之間存在一個 &lt;code&gt;Arm-Rad0&lt;/code&gt; 的角度偏轉；&#xA;也就是說若 &lt;code&gt;Arm-Rad0&lt;/code&gt; 為零，則活塞初始位置即為上死點，而這是在單汽缸分析時的預設狀況。&#xA;這裡注意 &lt;strong&gt;&lt;code&gt;Arm-Rad0&lt;/code&gt; 記錄的是曲柄與汽缸間的初始夾角，而非與 Y 軸的夾角！&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;一般曲軸上的曲柄可能會被刻意製作調整，使得曲柄質心偏離曲軸中心，&#xA;而 &lt;code&gt;Arm-Eccen&lt;/code&gt; 即是用來設定曲柄的偏心距離，其正值表示偏心方向與曲軸方向相反。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;這裡模擬計算的零件其實就是活塞、連桿、和曲柄這三樣，&#xA;因此 &lt;code&gt;Piston-Mass&lt;/code&gt;、&lt;code&gt;Rod-Mass&lt;/code&gt;、和 &lt;code&gt;Arm-Mass&lt;/code&gt; 就是對應個別的質量。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;此外還有 &lt;code&gt;Arm-Len&lt;/code&gt; 表示曲柄長度、&lt;code&gt;Rod-Len&lt;/code&gt; 表示活塞連桿長度、&#xA;和 &lt;code&gt;Rod-Moi&lt;/code&gt; 表示連桿的轉動慣量，&#xA;只不過這些參數不能手動進行設定，而是由程式透過其它參數自行計算。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;crankarm-weight&#34;&gt;關於曲柄配重&lt;/h3&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-5/fig2-2-counterweight-of-crankarm.jpg&#34; alt=&#34;fig2 2 counterweight of crankarm&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 3. 曲柄配重&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_2&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_2&#34; title=&#34;View footnote.&#34;&gt;2&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;一般曲軸上的曲柄都會在對向做配重(如圖 Figure 3)。&#xA;這個配重的基本目的是為了平衡曲柄凸出去的質量，&#xA;使得整個曲柄的質心仍在曲軸質心上，免除曲柄造成的振動問題。&#xA;但是有的時候我們如果野心再大以點，&#xA;除了把曲柄本身配重平衡之外還想要連帶對活塞和連桿的移動進行平衡的話，&#xA;便會給曲柄更多配重，使得曲柄的質心往曲柄的反方向偏離曲軸中心。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_多汽缸參數定義&#34;&gt;多汽缸參數定義&lt;/h3&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-5/fig2-3-multi-cylinders-parameters.png&#34; alt=&#34;fig2 3 multi cylinders parameters&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 4. 多汽缸相關的和尺寸參數定義&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;搞定了個別單一汽缸的參數，現在來看看多汽缸聯合相關的參數(配置示意如 Figure 4)：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;olist arabic&#34;&gt;&#xA;&lt;ol class=&#34;arabic&#34;&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;Z-Offset&lt;/code&gt; 表示這組汽缸在曲軸上的位置(曲軸平行於 Z 軸)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;Cylinder-Rad&lt;/code&gt; 表示汽缸與 Y 軸之間的偏轉角&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;在共同曲軸轉角為零的初始情況下，各組曲柄和汽缸之間存在一個 &lt;code&gt;Arm-Rad0&lt;/code&gt; 夾角。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;最後一個 &lt;code&gt;Label&lt;/code&gt; 就是使用者隨意定義的文字，&#xA;用途是在多汽缸時畫出來的圖表上，可以讓你區分出哪一條線屬於哪一個汽缸產生的影響？&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;再看一些雜項的設定配置：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;olist arabic&#34;&gt;&#xA;&lt;ol class=&#34;arabic&#34;&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;DATA_NUM&lt;/code&gt; 為繪製圖表時所需要計算的點位數量，點數愈多則理論上畫出來的結果分佈線愈細緻，&#xA;不過若沒有特別想法的話建議保留預設值即可。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;LAYOUT_ARM_DEG&lt;/code&gt; 參數與計算完全無關，只對佈局檢視有作用。&#xA;這是因為這隻程式會產生一張引擎佈局圖，而在有些汽缸組態的情況下，&#xA;初始狀態可能是汽缸、活塞、連桿全部連成一條線，不利於檢閱。&#xA;因此設置了這個參數，用來在檢視佈局的時候給曲軸一個指定的旋轉角度。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;SHAFT_RPM&lt;/code&gt; 為曲軸轉速，單位為 RPM。&#xA;其實這個轉速隨便給就好，因為轉速的大小影響的是力量幅度，而非分佈特性。&#xA;除非想要做動態分析(不過本程式並沒有實現這一部份)，否則只要隨意給一個轉速值，&#xA;讓跑出來的結果數值不會太大也不會太小，正好適於觀察即可。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_程式使用方式&#34;&gt;程式使用方式&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這隻程式寫的很單純直接，將程式&lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;下載下來後，&#xA;直接將檔案以文字檔打開，就會看到參數設定都在檔案開頭。&#xA;將程式檔案開頭的參數修改好之後，直接執行這隻程式，正常的話稍過幾秒就會跑出結果了。&#xA;沒有讀取設定檔，也沒有額外的設定方式，就是直接修改檔頭設定的數組即可。&#xA;這邊我用一個設定範例作為說明，這個範例的設定內容如下：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;admonitionblock tip&#34;&gt;&#xA;&lt;table&gt;&#xA;&lt;tbody&gt;&lt;tr&gt;&#xA;&lt;td class=&#34;icon&#34;&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Tip&lt;/div&gt;&#xA;&lt;/td&gt;&#xA;&lt;td class=&#34;content&#34;&gt;&#xA;這個小程式是以 Python 語言寫成的，所以相要拿來把玩的讀者需要先自行安裝 Python 執行環境，&#xA;至於 Python 如何安裝配置的部份就不在本文裡做敘述了，讀者需要自行搜索相關教程。&#xA;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;/tbody&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;DATA_NUM = 360&#xA;LAYOUT_ARM_DEG = 40&#xA;SHAFT_RPM = 400&#xA;&#xA;CYLINDER_LIST = [&#xA;    [ &amp;#34;Piston&amp;#34;,     1000, 0, 0, 1, 50, 56, 0, 0, 0, -40 ],&#xA;    [ &amp;#34;Rod&amp;#34;,        0, 1000, 0, 1, 50, 56, 0, 0, 0, -40 ],&#xA;    [ &amp;#34;Eccentric&amp;#34;,  0, 0, 1000, 1, 50, 56, 0, 0, 0, -40 ],&#xA;]&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;其它的設定多半是具名的，只有汽缸的條件採用陣列的型式進行設定，這樣才能更好的對汽缸的數量進行擴展。&#xA;汽缸組設定項目為 &lt;code&gt;CYLINDER_LIST&lt;/code&gt;，其內每一個元素代表一個汽缸組態；&#xA;而每一個汽缸組態的內容同樣也是陣列，其內每一個項目的值與意義在程式碼內的註解已有描述，這裡就不再贅述。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這個範例我一共設定了三個汽缸，但其實觀看數值就會發現這三個汽缸是重疊在一起的，其實這是個單缸引擎。&#xA;這三組設定在實際意義上其實是同一個汽缸組件的不同零件，&#xA;而分開來設定的用意就是為了能更好的在結果圖表中觀察個別組件對整體的影響。&#xA;在曲柄設定的部份，若曲柄是完全平衡的而沒有偏心的話，它對整體結果的影響就是零。&#xA;於是為了更好的觀察曲柄偏心對整體的作用效果，範例裡給了一個很小的偏心值。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_結果分析&#34;&gt;結果分析&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-5/fig4-1-vibration-directions.png&#34; alt=&#34;fig4 1 vibration directions&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 5. 引擎各方向位移和轉動方向示意&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;執行完程式之後便會產生出 6 張圖表。&#xA;其中的 5 張 Profile 就是引擎在曲軸轉動一圈的時間內，五個不同方向的受力變化分佈圖；&#xA;其衡軸就是曲軸在一圈之內的旋轉角度，單位是徑度，而縱軸則是力或者力矩的大小。&#xA;兩張 Force Profile 分別表達引擎整體在 X 軸向和 Y 軸向的受力變化；&#xA;至於 Z 方向，我們所採用的分析設定結構並不可能會產生 Z 方向的力，因此就沒畫 Z 方向受力圖了。&#xA;三張 Torque Profile 則是引擎整體分別在 X、Y、Z 三個軸向上的轉動力矩變化，&#xA;不過因為本範例為單缸引擎置中，所以在 X 和 Y 方向上的力矩皆為零。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;最後一張 Engine Layout 則與結果無關。&#xA;其作用為將所配置的組態用圖形的方式繪製出來，目的為讓使用者檢閱，&#xA;以確認在你所想像的引擎長相、和程式所理解的引擎長相之間是否存在落差或誤解？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-5/fig4-2-layout.png&#34; alt=&#34;fig4 2 layout&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-5/fig4-3-force-x.png&#34; alt=&#34;fig4 3 force x&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-5/fig4-4-force-y.png&#34; alt=&#34;fig4 4 force y&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-5/fig4-5-torque-x.png&#34; alt=&#34;fig4 5 torque x&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-5/fig4-6-torque-y.png&#34; alt=&#34;fig4 6 torque y&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-5/fig4-7-torque-z.png&#34; alt=&#34;fig4 7 torque z&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;crankarm-force&#34;&gt;曲柄&lt;/h3&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-5/fig4-8-eccentric-force.png&#34; alt=&#34;fig4 8 eccentric force&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 6. 曲柄的運動與作用力&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在曲柄有偏心配重的情況下，曲柄會在轉動中產生一股離心力，&#xA;並且由於假定了曲軸為勻速轉動，因此曲柄也只會產生這一股離心力，其分佈方向就是以曲軸為中心向外輻射。&#xA;如果引擎的整體質心正好在曲軸上(如軸向對稱的汽缸佈局如水平對臥、星型等)，&#xA;那麼偏心的曲柄力便總是通過質心，只會產生 X 和 Y 方向的施力，而不會在 Z 軸上產生轉動力矩。&#xA;但是當引擎質心不在曲軸上時，例如本範例，就能在 Z 軸力矩分佈圖上看到偏心曲柄對著發動機軸產生的力矩變化。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;一般來說曲柄都會有配重，如同前面所述，它的基本用處在於平衡掉曲柄凸出去的那一部份質量，&#xA;使曲柄整體質量中心仍在轉軸上，不會因為旋轉而產生振動。&#xA;但有的時候我們會想給曲柄設計更多的配重，使曲柄質心朝著反方向偏離軸心，&#xA;目的是為了利用曲柄的偏心去平衡掉活塞連桿所產生的力，&#xA;並且從結果圖的分析也給我們預示了這個想法的可行性。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;當然有的時候也可以反過來操作，&#xA;當我們已經知道一根曲軸上的曲柄剛好可以互相抵消平衡彼此的偏心效應時，&#xA;也可以選擇不要設計配重，以節省重量。&#xA;如果要模擬這種情況，可以將前面的 &lt;code&gt;Arm-Eccen&lt;/code&gt; 參數設定為一個負值即可！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_活塞&#34;&gt;活塞&lt;/h3&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-5/fig4-9-piston-force.png&#34; alt=&#34;fig4 9 piston force&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 7. 活塞的運動與作用力&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;因為活塞只沿汽缸方向運動(在本例中即為只在 Y 軸上運動)，因此能看到它對 X 方向的振動影響為零，&#xA;因為汽缸的施力總是通過軸心，所以也不會對轉動方向產生影響，唯一只產生了與汽缸方向相同的力。&#xA;雖然說活塞只產生了一個方向的力，但是觀看數值範圍卻能發現，&#xA;其實它(及連桿)才是才是導致引擎振動的最大宗來源！&#xA;這就是為什麼很多其他的引擎振動分析文章只分析活塞好像就滿足了的原因，&#xA;只不過我的胃口更大，所以我還想分析曲軸和連桿的影響作用！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在給定了曲柄長度和連桿長度之下，在特定曲柄角度位置下的活塞位置可由下列計算式算得：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;\[ P = R \left( cos(Rad) + \sqrt{ cos^2(Rad) + (\frac{L}{R})^2 - 1 } \right) \]&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;quoteblock&#34;&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;&lt;em&gt;其中：&lt;/em&gt;&lt;br/&gt;&#xA;&lt;em&gt;&lt;code&gt;Rad&lt;/code&gt; 為曲柄轉動的角度位置；&lt;/em&gt;&lt;br/&gt;&#xA;&lt;em&gt;&lt;code&gt;R&lt;/code&gt; 為曲柄長度；&lt;/em&gt;&lt;br/&gt;&#xA;&lt;em&gt;&lt;code&gt;L&lt;/code&gt; 為活塞連桿長度；&lt;/em&gt;&lt;br/&gt;&#xA;&lt;em&gt;&lt;code&gt;P&lt;/code&gt; 為活塞與曲軸中心的距離。&lt;/em&gt;&lt;br/&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;對活塞的位置做二次微分可得活塞加速度，乘上活塞質量即是活塞受力；&#xA;不過這是活塞的受力，而引擎本體受到的反作用力方向相反，所以要對受力方向進行反向。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;最後再來看看活塞運動施力的特性。&#xA;注意到力分佈圖，活塞的力分佈並不是上下對稱的，即便活塞的運動看上去很像是跟著圓周的簡諧運動！&#xA;造成這樣不對稱的原因主要是活塞並不是完全跟同曲柄運動，而是透過連桿的帶動，&#xA;是圓周簡諧運動疊加一個三角形變形影響之後的結果，使得在上死點附近移動速度較快、而在下死點附近移動較慢，&#xA;甚至若看加速度的話，還能在下死點附近看到反凹的現象。&#xA;這個不對稱的力分佈造成的影響，會在我們之後加入多汽缸的時候顯現出來。&#xA;主要的效果是即便有兩個活塞一上一下在運動，感覺上它們好像可以互相抵消，然而實際上卻不能；&#xA;振動幅度雖然是降下來了，但是綜合之後還是會有一些無法消除的力被餘下並產生振動。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;rod-force&#34;&gt;連桿&lt;/h3&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-5/fig4-10-rod-force.png&#34; alt=&#34;fig4 10 rod force&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 8. 活塞連桿的運動與作用力&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;相比於曲柄和活塞，連桿的運動是裡面最複雜的了，它不只上下移動，還同時左右移動、還伴同本身的旋轉，&#xA;也因此活塞連桿成為我們唯一需要考慮轉動慣量的零件！&#xA;不過對於解算的本身倒不是太困難，&#xA;因為我們已經能夠算得活塞位置和曲柄位置，而它們二者的連線便就是活塞連桿了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在受力分佈圖上，活塞連桿對平面的兩個方向都會產生力。&#xA;觀察 Y 方向的力分佈，還能發現連桿產生的力幾乎與活塞產生的力趨勢重疊，&#xA;因此若將活塞與連桿直接視為一整個整體來做分析也是非常貼近現實了。&#xA;所以對於網路上的其他人只分析活塞的運動的情況，我一開始也是懷著點質疑的，&#xA;但實際做了更加複雜些的分析之後也發現這麼做也不是不可，且其與實際結果其實也是大差不差的。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在 X 方向的力分佈圖上，活塞連桿與預期相同的產生了力的作用。&#xA;只不過這個分佈狀態看起來非常的對稱，並且在趨勢上與曲柄偏心的趨勢是相反的，&#xA;這給我們用偏心曲柄去平衡連桿運動的做法提供了可行的道路&#xA;(並且實際上也真的可以用偏心曲柄去平衡掉連桿的橫向作用力)。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;最後是 Z 軸力矩分佈，也就是在曲軸方向上的轉動力矩擾動圖。&#xA;活塞連桿除了因為本身的轉動而產生轉動力矩之外，&#xA;其在平面的兩個方向產生的作用力因為不通過曲軸中心，因此在存在力臂的情況下便也會產生力矩，&#xA;這三者疊加之後便是活塞連桿總體對引擎所產生的 Z 軸偏轉力矩。&#xA;觀察分佈圖同樣會發現，連桿產生的力矩趨勢和曲柄偏心所產生的力矩趨勢大致也是程相反狀，&#xA;因此其實也可以很好的透過曲柄偏心來很大程度的抵消掉；&#xA;只可惜在力矩方面的分佈圖上，二者圖形趨勢並不完全一致，&#xA;所以也只能一定程度的消減擾動，但並不能藉此完全消除！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_條件與限制&#34;&gt;條件與限制&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;經過這些解說和範例說明之後，相信讀者已經具備將這隻小程式自行修改參數並跑出各種花樣結果的能力了。&#xA;但是這畢竟也只是一隻很精簡的小程式，它最主要的目的其實是讓我們這些門外漢可以一窺活塞引擎的振動特性；&#xA;但若想要用它來分析一個具體新發動機的振動情況的話，那麼這樣的程度其實是遠遠不夠的。&#xA;因為這隻程式所忽略和簡化掉的東西其實也並不少，因此使用者必須要自己知道它的能耐和限制在哪裡，&#xA;好讓你在玩這隻程式的時候能夠擁有正確的認知。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;首先，這程式並沒有去做過多的參數檢查和驗證等，除非會導致計算錯誤，否則它並不會過度干涉你的天馬行空。&#xA;畢竟它的目的在於讓我們觀察各種可能性所產生的結果，而非幫助你實際建造一臺發動機。&#xA;所以比方說你在這程式裡設定了一個曲柄比活塞連桿還長的引擎，或者四個汽缸的曲軸不在一條線上的引擎，&#xA;在這程式裡面去做分析都是沒有問題的，你也可以看見假定這種東西造出來的話會呈現的受力分佈；&#xA;至於這東西是否真的能夠被造出來？那就是你的問題了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;除了對於天馬行空的部份可能會導致與實際的落差之外，&#xA;這隻程式還有下面這些比較正經的限制，會導致計算的結果可能與現實產生比較大的誤差：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;olist arabic&#34;&gt;&#xA;&lt;ol class=&#34;arabic&#34;&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;作用力趨勢分析並不等於動態振動分析&lt;/p&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;我們從頭到尾其實只分析了零件對引擎所產生的力分佈，&#xA;然而受力分佈卻並不相等於實際的振動表現，即便在大多情況下這力的分佈直接的影響了振動表現。&#xA;畢竟力的作用是為振動的根源發生原因，且通常來說受力的分佈情況能直接對應振動表現，&#xA;對於從結構性大方向了解一種配置情況的振動特性來說是很足夠了，&#xA;但是對於實際造出來的引擎到底實際振動表現為何？卻並不是單純的受力分析可以肯定的！&#xA;舉例來說，如果受力的頻率正好對上了引擎本體的自然振動頻率，就會發生共振，&#xA;這樣即便所產生的源頭推動可能很小，也足以導致引擎表現出很大幅度的振動反應；&#xA;於是：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;本程式只計算分析了機件運動對引擎所產生的作用力分佈情況，&#xA;從大的方向上去窺探了解某種引擎配置的振動特性來說應該是很足夠使用的；&#xA;但若要用來作為造出一顆實際引擎的振動表現依據，則還需要再進行更多的動態響應分析才行！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;假定曲軸恆速轉動&lt;/p&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;本分析程式所假定的一個重要的前提就是曲軸是「恆速轉動」的，&#xA;因此並不適用於正在加速運轉或正在減速運轉中的發動機，只能用來分析穩定運轉中的引擎。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;不過在實際上，即便引擎是在額定的功率下穩定運轉，曲軸的轉速其實也不是定速不變的。&#xA;這原因是因為四行程的行程動作本身是不連貫的，會因為壓縮行程而減速、因為膨脹行程而加速，&#xA;這點在之前的主題裡面已經討論過，即便是在飛輪的作用下也只是讓曲軸的增速與減速範圍較為收斂而已。&#xA;當然，隨著汽缸的數量增多，曲軸的轉速就會愈趨向於穩定恆速，因此：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;本程式在多缸引擎上的計算會與實際結果比較接近，而在汽缸數量愈少的情況下便會與實際結果誤差愈大！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;假定引擎質心位置固定不變&lt;/p&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;本分析程式假定引擎的質量中心位置是固定的，然而實際上卻並不是！&#xA;因為引擎內部的機件不斷在移動，所以整體的質心位置其實也是變化的。&#xA;只不過在多缸引擎上，一方面是單一機件的質量與發動機整體的質量比例縮小了，&#xA;二方面是機件之間存在許多影響力互相抵消的互補移動，&#xA;因此會讓整體的質量中心更加趨向在固定的位置上不動。&#xA;最終：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;本程式在多缸引擎上的計算會與實際結果較為接近，&#xA;而在汽缸數量愈少的情況下便會產生與實際結果愈大的誤差，特別是在單缸引擎的情況下！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;footnotes&#34;&gt;&#xA;&lt;hr/&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_1&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_1&#34;&gt;1&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-5/engine-vibration.py&#34;&gt;本篇文章所使用的分析程式&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_2&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_2&#34;&gt;2&lt;/a&gt;. &lt;a href=&#34;https://de.wikipedia.org/wiki/Kurbelwelle&#34;&gt;Kurbelwelle&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>活塞引擎 4：點火順序與振動</title>
      <link>http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-4---%E9%BB%9E%E7%81%AB%E9%A0%86%E5%BA%8F%E8%88%87%E6%8C%AF%E5%8B%95/</link>
      <pubDate>Sat, 31 Aug 2024 00:32:25 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-4---%E9%BB%9E%E7%81%AB%E9%A0%86%E5%BA%8F%E8%88%87%E6%8C%AF%E5%8B%95/</guid>
      <description>&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;活塞引擎有一個逃不掉的問題就是振動，&#xA;不過雖然振動躲不掉，但是我們可以盡可能的讓它小一點、平緩一點。&#xA;活塞引擎的振動來源，也就是我們需要研究並對付的問題來源有二：&#xA;一是由活塞、連桿、曲軸的運動所造成的引擎位移也就是振動，二是因為汽缸點火順序的不同所帶來的引擎位移。&#xA;而本文要探討的便是後者，即點火順序對引擎的振動影響。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_汽缸振動原理&#34;&gt;汽缸振動原理&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-4/fig1-1-cylinder-movement.png&#34; alt=&#34;fig1 1 cylinder movement&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 1. 汽缸因受到空氣壓力的推擠力而被推動，上為壓縮行程時的情況，下為膨脹行程時的情況&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;首先，「點火造成振動」其實是一句口語表達，雖很符合直觀理解，但真正的原理稍微沒那麼單純。&#xA;回顧四行程引擎原理，活塞在壓縮空氣的過程裡需要頂著壓力愈來愈高的空氣，硬把它給壓扁。&#xA;當然缸內的空氣壓力不會只作用在活塞上，因為氣體的壓力是往四面八方施力的，&#xA;只是往缸體側邊(也就是上圖中的汽缸上下兩邊)施的力剛好達到平衡，&#xA;而往汽缸頭施加的壓力便會推動整個汽缸移動(以上圖來說就是向右移動)。&#xA;跟在壓縮行程後面的動力行程，被加熱的空氣產生更強大的氣壓推動著活塞，&#xA;這是發動機之所以產生動力的根源，我們以前解釋過。&#xA;而同樣的氣體壓力也會施加在汽缸上，推動汽缸移動，&#xA;產生的效果與壓縮行程一模一樣，只是這次的力道更大得多！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;氣體壓力推動活塞的同時也會推動汽缸，&#xA;而因為汽缸是被結實固定在整個引擎本體上的，因此這個氣體壓力其實是在推動著整個發動機。&#xA;因為整個引擎的體量比起一個活塞而言是大得多了，因此引擎本體被推動的位移實際上是非常小的，&#xA;但是作為振動的發生來源而言已是非常足夠的了！&#xA;如果說這個力道是一個持續性的力量那倒還好，這樣只要結構強度足夠支撐就都沒什麼問題；&#xA;然而壞就壞在這個力道並不是持續的，而是間歇性的，只在壓縮和膨脹行程出現，然後在進氣和排氣行程消失。&#xA;這一下有、一下沒有的力量作用在整個引擎本體上，使整個發動機產生週期性的來回移動，&#xA;這可不就是振動產生的根本原因了嗎！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_點火順序與振動&#34;&gt;點火順序與振動&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;了解了汽缸產生振動的原理之後，來看看多缸引擎的汽缸點火順序如何影響引擎的振動？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;多缸引擎就是有多個汽缸活塞組的引擎，&#xA;雖然理論上可以將這些活塞完全同步，齊上齊下，同時進氣、壓縮、膨脹、排氣，&#xA;但我想一個腦子正常的設計師應該都不會這麼設計，真的把多缸活生生做成單缸模式了！&#xA;通常引擎設計會將各個汽缸的行程給平均交錯開來，最好是完全平均的行程交錯，&#xA;這樣能讓引擎運轉更加平順，這點在&#xA;&lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-2---%E5%A4%9A%E7%BC%B8%E4%BD%88%E5%B1%80/#why-need-multi-cylinders&#34;&gt;先前的主題已經解說過了&lt;/a&gt;&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_1&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&#xA;。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;但既然各汽缸的行程錯開了，那又產生一個問題，該如何排列它們的先後順序？&#xA;或者用口語方式來說，該如何決定汽缸們的點火順序？&#xA;最簡單的做法就是讓它們按照排列的順序依序點火，主打一個有條有理、井然有序，&#xA;然而這麼做卻會造成一個嚴重的問題：這可能已經不能用振動來形容了，而是整個引擎會晃！&#xA;並且這樣會讓曲軸承受那從連桿傳遞來的力道過於集中在局部，使曲軸承受過大應力，&#xA;產生的後果要不就是曲軸容易斷，要不就是為了加固曲軸結構會平白增加許多重量。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-4/fig2-1-sequential-firing.gif&#34; alt=&#34;fig2 1 sequential firing&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 2. 完全按著排列順序點火，產生的是長週期、大幅度的晃動&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-4/fig2-2-messy-firing.gif&#34; alt=&#34;fig2 2 messy firing&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 3. 亂跳位置平均點火，產生的是短週期、小幅度的振動&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;解決這些問題的方法也很簡單：不要按照汽缸排列順序來依序點火，而是應該盡可能打亂分散汽缸點火的順序。&#xA;一方面為了讓曲軸能夠分散受力，而不要集中在局部地方連續受力，&#xA;所以前後一個點火的汽缸在空間上的距離是愈遠愈好；&#xA;另一方面則是要避免過於簡單規律的點火順序，好破壞掉因為過於固定規律的週期而可能產生的共振現象。&#xA;以上便是每款發動機設計的點火順序為什麼看上去這麼亂的原因。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;那麼具體而言，發動機的設計是如何讓每個活塞以不同的相位運動的呢？&#xA;以直列發動機為例，每個活塞桿都會與曲軸上獨立的曲柄連結，&#xA;那麼只要將這些曲柄依據精心設計的角度錯開，就能讓各個活塞之間的行程錯開固定的行程位置&#xA;(凸輪軸的處理方式亦同)。&#xA;這就是為什麼我們看到的曲軸總不是程對稱漂亮螺旋狀的彎曲，而是乍看有點的不規則彎曲的原因，&#xA;也是曲軸為什麼會叫作「曲」軸的原因。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-4/fig2-3-crankshaft.jpg&#34; alt=&#34;fig2 3 crankshaft&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 4. 彎彎曲曲的曲軸 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_2&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_2&#34; title=&#34;View footnote.&#34;&gt;2&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_直列發動機&#34;&gt;直列發動機&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-4/fig3-1-inline4-firing-order.gif&#34; alt=&#34;fig3 1 inline4 firing order&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 5. 常見的直列 4 缸發動機，雖然在順序上可供變化的空間不多，但已經具有基本良好的動態平衡 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_3&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_3&#34; title=&#34;View footnote.&#34;&gt;3&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-4/fig3-2-inline6-firing-order.gif&#34; alt=&#34;fig3 2 inline6 firing order&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 6. 直列 6 缸是直列佈局中有名的一個型態，各方面的穩定性都相當傑出；以點火順序來看，汽缸數量是提供足夠點火亂度的保障 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_4&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_4&#34; title=&#34;View footnote.&#34;&gt;4&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-4/fig3-3-inline8-firing-order.gif&#34; alt=&#34;fig3 3 inline8 firing order&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 7. 直列 8 缸，暫且不論汽缸太多會導致引擎長度過長的問題，愈多的汽缸數量當然在亂度上能夠提供更加寬廣的調配設計空間 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_5&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_5&#34; title=&#34;View footnote.&#34;&gt;5&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-4/fig3-4-inline3-firing-order.gif&#34; alt=&#34;fig3 4 inline3 firing order&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 8. 3 缸以下已經沒有任何順序調動上的操作空間，喪失了亂度的可能，這也是 3 缸發動機之所以振動問題比較大的原因之一 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_6&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_6&#34; title=&#34;View footnote.&#34;&gt;6&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-4/fig3-5-inline2-firing-orders.gif&#34; alt=&#34;fig3 5 inline2 firing orders&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 9. 比 3 缸在行程安排上更加捉襟見肘的就是雙缸了，顧了點火平均性則機件振動表現極差，顧了機件運動則點火分佈極不平均，因此產生了多種折衷協調方案，也是雙缸發動機聲浪之所以特別獨特的關鍵原因 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_7&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_7&#34; title=&#34;View footnote.&#34;&gt;7&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;上圖是各種不同缸數的直列發動機點火順序示意，展示了那些最常見的點火順序。&#xA;不過注意這些圖示也只是示意那些最常見的點火順序，&#xA;並不是所有發動機都得按照這個順序點火，也不是不存在其它點火順序的實際產品，&#xA;不過這些細節上的差異並不妨礙我們在大方向上對點火順序和振動關係之間的觀察理解。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;透過觀察，我們可以歸納幾個簡單的結論：&#xA;點火順序的亂度和汽缸數量成正比，汽缸愈多則愈能夠將順序散亂；&#xA;相反的，汽缸數量愈少則愈缺乏可操作空間，3 缸以下則根本沒有亂序可言。&#xA;此外，雙缸是個特別的情況，出現了多種點火間隔不平均一致的設計，&#xA;反應的其實是與機件運動平衡之間的衝突折衷關係。&#xA;但是有關機件運動的平衡問題不是本篇的主題內容，因此暫略過不談。&#xA;簡單而言就是在雙缸情況下，若設計讓點火間隔完全平均的話，&#xA;那麼剛好會讓機件運動產生的振動落在極為不利的位置，&#xA;因此上面的多種設計其實就是在尋求點火間隔與機件振動之間的折衷平衡。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_水平對臥發動機及其它變體&#34;&gt;水平對臥發動機、及其它變體&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-4/fig4-1-flat4-firing-order.gif&#34; alt=&#34;fig4 1 flat4 firing order&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 10. 水平對臥 4 缸發動機點火順序 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_8&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_8&#34; title=&#34;View footnote.&#34;&gt;8&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;直列發動機的規則和特性也同樣可以套用到 V 型和水平對臥發動機上，&#xA;畢竟這些發動機其實就是把兩排直列給左右並列在一起，&#xA;兩排汽缸各自都按照直列的順序在點火，然後兩排氣剛之間再彼此交替穿插。&#xA;因為 V 型點火順序就是這麼簡單，W 型也是同樣的道理，&#xA;&lt;em&gt;&lt;span class=&#34;line-through&#34;&gt;總之絕對不是因為我找不到 V 型發動機的點火順序動畫圖，&lt;/span&gt;&lt;/em&gt;&#xA;所以這邊就不再進一步示例它們的點火順序了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_星型發動機&#34;&gt;星型發動機&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-4/fig5-1-radial-single7.gif&#34; alt=&#34;fig5 1 radial single7&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 11. 星型 7 缸發動機點火順序&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;星型發動機是一個特別的例子，因為星型發動機不像直列發動機是一個活塞配一個曲柄，&#xA;星型發動機的一整圈汽缸就只共用一個曲柄，一整圈的活塞都是跟著同一個曲柄一起走的，&#xA;因此一個圈上面的前後活塞彼此之間具有高度協調相近的行程關係。&#xA;那麼星型發動機就只能夠照著圓周順序一個一個點火一圈了嗎？這倒也不至於！&#xA;剛好四行程的汽缸活塞是每轉兩圈才完成一次完整的行程週期，&#xA;因此我們可以將一個圈上的汽缸分成兩組來點火，&#xA;曲軸繞第一圈時只點火單數缸、第二圈只點火雙數缸，&#xA;如此就能形成一個還能算得上是足夠亂且平均的點火順序。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;上面說的「第一圈點火單數缸、第二圈點火雙數缸」只是一個簡單好理解的說法，&#xA;實際上其實就是每次都跳過一個汽缸來點火，就像青蛙跳一樣。&#xA;因此我們很容易就能發現一些事：&#xA;只有當汽缸的數量是奇數的時候，才能夠用這種跳缸點火的順序在兩圈內自然的點過全部的汽缸，&#xA;而沒有產生斷點或其它不連續的問題，而這就是為什麼星型發動機的單環汽缸數量總會是奇數的原因！&#xA;另外當汽缸的數量(單環)愈來愈多，點火順序會變得愈來愈循序規律，愈不亂、也愈不平均。&#xA;比方如果有一個單列 15 缸的星型發動機(如圖 Figure 12)，那麼即便使用上述的跳缸的方式來點火，&#xA;看起和依序畫一圈其實也沒什麼兩樣。&#xA;不過擺在點火順序前面會先遇到的更大問題，可能是這麼多汽缸堆起來的圈太大了，已經不實用！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-4/fig5-2-radial-single15.gif&#34; alt=&#34;fig5 2 radial single15&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 12. 假想中的星型 15 缸發動機點火順序(圖片因為比例尺的關係而顯得不夠大，但實際上這幾張星型的示意圖都是同樣的汽缸大小，足見此發動機的正面面積龐大！)&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;admonitionblock note&#34;&gt;&#xA;&lt;table&gt;&#xA;&lt;tbody&gt;&lt;tr&gt;&#xA;&lt;td class=&#34;icon&#34;&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Note&lt;/div&gt;&#xA;&lt;/td&gt;&#xA;&lt;td class=&#34;content&#34;&gt;&#xA;因為在網路上找不到合適的星型發動機解說圖，因此決定自己畫，&#xA;結果就是標準的「想法很單純，實操做廢手」，&#xA;這麼兩張動圖(單列和複列星型)整整花了我一個月的時間去完成！&#xA;因此其它的圖就畫的比較陽春了，畢竟重在示意嘛，看得懂就好，相信讀者不會太介意的！&#xA;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;/tbody&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;綜合前面分析的各種星型發動機特性，會發現若從點火順序的角度來看的話，&#xA;5 個汽缸就是最平均的最完美狀態(如圖 Figure 13)。&#xA;然後隨著汽缸數量的增加，點火順序分佈表現愈來愈差的同時，引擎正面面積也在不斷加大，&#xA;直到令這款發動機不再具有實用效益為止。&#xA;總結而言，汽缸數量太多則振動表現不佳且引擎體積過大，&#xA;汽缸數量太少則失去採用星型佈局的效益，還不如採用直列或水平對臥來得簡單經濟，&#xA;又汽缸數量必須為單數，&#xA;因此最終造成了星型發動機的單列汽缸數量總是只有 5 缸、7 缸、和 9 缸這三種選擇的結果。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-4/fig5-3-radial-single5.gif&#34; alt=&#34;fig5 3 radial single5&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 13. 星型 5 缸發動機點火順序&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;不過星型發動機不是只有單列的型態，還有複列星型的型式，也就是一個發動機擺了兩圈汽缸的型態。&#xA;複列星型就是兩個單列星型一前一後疊在一起，在個別單環上的特性、表現、和限制等等與單列星型完全相同，&#xA;然而這兩列活塞汽缸加起來之後，卻表現出了一些更加迷人的特性。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-4/fig5-4-radial-twin14.gif&#34; alt=&#34;fig5 4 radial twin14&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 14. 複列星型 14 缸發動機點火順序&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;複列星型因為多了一個曲柄，因此讓總體點火分散程度表現更加平均(如圖 Figure 14)，&#xA;只多一個曲柄就解決了點火的均勻性問題(此外還同時解決了機件運動平衡性的問題)。&#xA;星型發動機本來就具有一些獨特的優點，例如汽缸多而馬力大、維護簡便、耐受性高等，&#xA;複列星型的型式在使馬力增一倍的同時，還平衡了單列星型在振動表現上的缺陷。&#xA;因此在那個活塞引擎主宰天空的時代裡，複列星型發動機又主宰了星型發動機的份額，&#xA;成為與 V 型 12 缸分庭抗禮各擁一片江山的世界。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;footnotes&#34;&gt;&#xA;&lt;hr/&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_1&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_1&#34;&gt;1&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-2---%E5%A4%9A%E7%BC%B8%E4%BD%88%E5%B1%80/&#34;&gt;活塞引擎 2 - 多缸佈局&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_2&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_2&#34;&gt;2&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Crankshaft&#34;&gt;Crankshaft&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_3&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_3&#34;&gt;3&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Straight-four_engine&#34;&gt;Straight-four engine&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_4&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_4&#34;&gt;4&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Straight-six_engine&#34;&gt;Straight-six engine&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_5&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_5&#34;&gt;5&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Straight-eight_engine&#34;&gt;Straight-eight engine&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_6&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_6&#34;&gt;6&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Straight-three_engine&#34;&gt;Straight-three engine&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_7&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_7&#34;&gt;7&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Straight-twin_engine&#34;&gt;Straight-twin engine&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_8&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_8&#34;&gt;8&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Wright_Vertical_4&#34;&gt;Flat-four engine&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>POSIX Tree Container (tsearch) 避坑指南</title>
      <link>http://www.huoschen.idv.tw/blog/programming/posix-tree-container-tsearch-%E9%81%BF%E5%9D%91%E6%8C%87%E5%8D%97/</link>
      <pubDate>Fri, 30 Aug 2024 20:25:34 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/programming/posix-tree-container-tsearch-%E9%81%BF%E5%9D%91%E6%8C%87%E5%8D%97/</guid>
      <description>&lt;p&gt;最近因故發現原來 POSIX 竟然也有提供鍵值容器的函式集(tsearch)，&#xA;乍看有點意思，於是就打算順手拿來用用。&#xA;結果不用不知道，一用踩坑踩翻天！&#xA;花費不少時間的追蹤除錯和閱讀相關說明文件(是的，我最初想說看著挺簡單就沒看了)之後，&#xA;終於理清相關的用法和避坑指南。&lt;/p&gt;&#xA;&lt;p&gt;其實 POSIX 容器的使用者應該算是小眾，也不知道留著筆記能幫到誰？&#xA;也或許幫是過了 N 年之後的我自己吧！&#xA;另一方面也是意識到這個容器函式庫能夠被設計的坑爹滿滿，&#xA;因此探討這個程式庫的使用方法，可能在作為程式庫介面設計上的反面教材意義更大！&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;為什麼要使用-posix-容器&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/posix-tree-container-tsearch-%E9%81%BF%E5%9D%91%E6%8C%87%E5%8D%97/#%e7%82%ba%e4%bb%80%e9%ba%bc%e8%a6%81%e4%bd%bf%e7%94%a8-posix-%e5%ae%b9%e5%99%a8&#34;&gt;為什麼要使用 POSIX 容器？&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;首先我們得先釐清混淆，本文討論的容器，是指資料結構上的 container，&#xA;就是在程式設計中用來放資料的那個容器，而不是這幾年很流行的那個作業系統虛擬化的那個 Contianer。&#xA;如果你要關注的是後者的話，那麼可以直接離開了，因為本文與之完全無關！&lt;/p&gt;&#xA;&lt;p&gt;擺在為何要使用 POSIX 容器的這個問題之前的問題，可能得先問問為何需要呼叫額外的容器程式庫？&lt;/p&gt;&#xA;&lt;p&gt;這些資料容器就是在資料結構課程上學過的那些：陣列、串列、堆疊、貯列、和鍵值容器。&#xA;這些極其基本的基礎容器，在現代的幾乎所有高階程式語言中都已經原生的提供了，&#xA;所以除非有極為特別的考量，否則完全沒有需要捨簡就繁去另外使用一個容器程式庫。&#xA;因此會產生使用容器程式庫需求的前提，首先就是你所使用的程式語言沒有原生提供容器相關功能，&#xA;其實大概除了純 C 語言的用戶之外也沒有別人了，這就是為什麼我說這種東西是小眾用途的原因！&lt;/p&gt;&#xA;&lt;p&gt;好的，現在我們把用戶群體限縮到了 C 語言的使用者。&#xA;那麼 C 語言用戶為什麼需要一個容器程式庫呢？其實就兩個原因：簡單、方便。&lt;/p&gt;&#xA;&lt;p&gt;作為 C 語言用戶，想必軟體工程底子是足夠堅實的。&#xA;雖然資料容器的需求非常常見，但是對於簡單的資料容器，往往程式設計師能夠自己快速造一個出來。&#xA;舉個最簡單的例子：陣列，訓練有素的設計師不都已經練到閉著眼睛盲打就能完成日常所需的操作了？&#xA;但是對於複雜一點的容器，比方說雙向串列，難道也是每次用到的時候就重新造一個出來嗎？&#xA;雖然每次手搓一個串列容器也不是辦不到的事，並且確實有不少工程師平常就是這麼做的，但是你不累嗎？&#xA;如果再複雜一點，比方說鍵值容器，雖然說以大家的底子也不是造不出來，&#xA;但想必這個時候已經確實萌生了「找一個現成的來用」的想法了吧！&#xA;如果你還需要為不同類型的資料都造一個鍵值容器，或者如果你在許多不同的開發案中都有使用這樣容器的需求，&#xA;那麼我想在你的腦海裡肯定會深深烙下一個想法：&#xA;「有沒有現成的、可以容納通用格式的容器程式庫可以讓我直接調用？最好前置作業愈簡單愈好！」&#xA;這，就是通用容器程式庫存在的需求和目的。&lt;/p&gt;&#xA;&lt;p&gt;那麼除了自己造一個之外，有哪些現成可選的容器函式庫呢？&#xA;我想這類的東西鐵定不少，而且各庫的特性和適用場合都不太一樣，&#xA;比方有的很單純且不涉及記憶體配置、有的使用親切容易上手等等。&#xA;這裡只提及我自己最喜歡也最常使用的幾個現成的程式庫：&#xA;C++ STL Container、BSD Kernel Container、和本文描述的 POSIX Tree Container。&#xA;首先 C++ STL Container 確實是來亂的，因為 C 語言根本無法呼叫使用這個東西！&#xA;不過提出它的用意其實在於：&#xA;當你有了想要找個容器程式庫的想法的時候，也許該先想的問題是能不能換個程式語言？&#xA;是否現在這件事情非得用 C 語言來實現不可？&lt;/p&gt;&#xA;&lt;p&gt;先簡單討論一下一般常用的幾種基本容器類型：陣列、串列、堆疊、貯列、鍵值容器。&#xA;其中陣列太過簡單單純，用程式語言原生的功能就能直接操作，&#xA;另外造一個程式庫的話能著墨的地方並不多，產生的效益也很有限，因此一般都還是自己土法煉鋼。&#xA;串列開始具有一定程度的複雜性，雖然自己也能手搓串列，但能有現成工具可以使用的話也確實能省不少事。&#xA;堆疊和貯列其實都可視為是加上了一些操作限制的串列，所以它的實現其實完全被串列所覆蓋了；&#xA;甚至如果對於效能有所苛刻，並且不介意容納資料有限的話，也能完全使用陣列來替代堆疊和貯列的功能。&#xA;因此堆疊和貯列其實就是串列或陣列的限縮特化版本，其底層實現其實是通用的，可以直接比照。&#xA;最後，鍵值容器才是全部裡面最複雜也最重要的重點。&#xA;鍵值容器的底層實現可能是各種二元樹、跳躍串列、雜湊容器、或其他邏輯容器，&#xA;但上層總歸而言就是提供了「鍵」與「值」(或資料)的對應關係和收納容器，因此在這裡等同視之。&#xA;其實在大部份的容器程式庫裡，也少有明確區別鍵與值的，而是將其二者視為一個整體進行操作，&#xA;用 C++ STL 的概念來說的話，就是其實 &lt;code&gt;std::map&lt;/code&gt; 的功能完全可以由 &lt;code&gt;std::set&lt;/code&gt; 來實現，&#xA;兩者等同視之的意思。&lt;/p&gt;&#xA;&lt;p&gt;BSD Kernel Container 顧名思義，是 BSD 核心空間能夠取用的容器程式庫，&#xA;提供了雙向串列、和紅黑樹的使用介面。&#xA;雖然說這是在核心程式碼裡面的程式，但因為其本身就是個只有兩個標頭檔實現了全部功能的程式庫，&#xA;加上也沒用到什麼必須得在核心空間才能取用的特殊功能，因此單獨抽取出來用在使用者空間上也是挺簡單的，&#xA;這也是我平常所用的 BSD 容器的取得來源。&#xA;其實 Linux Kernel 也提供了同樣功能的程式庫，也是雙向串列和紅黑樹，也是只需要兩個標頭檔。&#xA;但是實際使用過後我覺得 Linux Kernel Container 的介面缺乏人性化使用體驗，&#xA;加上 BSD 的許可證是比較友好有利的，因此成為我當前最愛用也是綜合評價最好用的容器工具。&#xA;不過畢竟本篇的重點不在於此，所以不會更深入討論 BSD 實現的容器工具。&lt;/p&gt;&#xA;&lt;p&gt;POSIX 也定義了使用者空間的容器相關介面，提供了二元樹容器(tsearch)、和雜湊容器(hsearch)；&#xA;不過我嫌棄它的雜湊容器介面設計太垃圾，缺少使用價值，因此這裡只關注二元樹容器。&#xA;(關於 POSIX 的雜湊容器為什麼垃圾？改天有心情的話也許再寫一篇去探討吧！)&#xA;既然我前面已經給了 BSD 容器這麼高的評價，那麼 POSIX 容器顯然得有些特別的優點，&#xA;否則就完全沒有介紹它的必要了。&#xA;POSIX 容器相比於其他容器程式庫(其實主要對標的是 BSD 容器)，有如下幾個優點：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;已內建於支援 POSIX 規格的 C 標準程式庫，包括 Glibc。&#xA;因此無需特別做什麼設定就可以直接呼叫取用，連將相關標頭檔放置到專案程式碼的合適位置這個動作都不需要；&#xA;當然，除非你用的 C 程式庫不支援 POSIX，那就另當別論！ &lt;code&gt;(^_^)&lt;/code&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;使用單純簡便。&#xA;整個容器有關的操作函式就只有&#xA;&lt;code&gt;tsearch()&lt;/code&gt;、&lt;code&gt;tfind()&lt;/code&gt;、&lt;code&gt;tdelete()&lt;/code&gt;、&lt;code&gt;twalk()&lt;/code&gt;/&lt;code&gt;twalk_r()&lt;/code&gt;、和 &lt;code&gt;tdestroy()&lt;/code&gt;，&#xA;相當單純，使用上也無需要另外定義資料結構、&#xA;在結構內包含納入它的節點結構等等在使用之前要先完成的動作，輕量使用的話其實相當簡便。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;總結 POSIX 容器就是在你有輕量使用需求，不太講究效能、記憶體等計算資源，&#xA;需要托管的資料也不需要太複雜處理機制的時候，這個接近於原生的容器程式庫或許能成為你考量使用的名單之一；&#xA;當然它有缺點，簡單而言就是使用邏輯與現代容器介面有差異，不注意之下容易踩坑，&#xA;而這正是整篇文要論述的重點之一。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;前置作業&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/posix-tree-container-tsearch-%E9%81%BF%E5%9D%91%E6%8C%87%E5%8D%97/#%e5%89%8d%e7%bd%ae%e4%bd%9c%e6%a5%ad&#34;&gt;前置作業&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;雖然 POSIX 容器已內建在支援的 C 標準函式庫中，但是在使用前還是有少許事情需要做的：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;引用標頭檔 &lt;code&gt;#include &amp;lt;search.h&amp;gt;&lt;/code&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;定義 &lt;code&gt;_GNU_SOURCE&lt;/code&gt; 巨集。&lt;/p&gt;&#xA;&lt;p&gt;其實 &lt;code&gt;twalk_r()&lt;/code&gt; 和 &lt;code&gt;tdestroy()&lt;/code&gt; 不是 POSIX 定義的功能，而是 GNU 擴展；&#xA;但若缺少了這兩函式的話，個人認為會讓容器的實用性大大降低，基本沒法好好正常使用。&#xA;因此啟用 GNU 擴展在我認為是必須的前置作業。&#xA;啟用 GNU 擴展只需要定義 &lt;code&gt;_GNU_SOURCE&lt;/code&gt; 巨集即可，&#xA;你可以直接寫在程式碼裡，在引用標頭檔前定義：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt; #define _GNU_SOURCE&#xA; #include &amp;lt;search.h&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;當然也可以在整個專案的全局空間裡加入此項定義，&#xA;以 GCC 為例，需要加入編譯選項：&lt;code&gt;-D_GNU_SOURCE&lt;/code&gt;。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;函式說明&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/posix-tree-container-tsearch-%E9%81%BF%E5%9D%91%E6%8C%87%E5%8D%97/#%e5%87%bd%e5%bc%8f%e8%aa%aa%e6%98%8e&#34;&gt;函式說明&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;tsearch&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/posix-tree-container-tsearch-%E9%81%BF%E5%9D%91%E6%8C%87%E5%8D%97/#tsearch&#34;&gt;tsearch()&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;pre&gt;&lt;code&gt;void* tsearch(&#xA;    const void *key, void **rootp, int(*compar)(const void*, const void*));&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;集搜尋、插入、與建立一個二元樹結構於一身的函式。&lt;/p&gt;&#xA;&lt;p&gt;使用者應管理維護一個指標變數，這個變數將指向二元樹的根節點；&#xA;而函式參數 &lt;code&gt;rootp&lt;/code&gt; 便是這個指標變數的指標。&#xA;由於根節點可能在樹的操作過程中產生變更，因此這個指標的值也會處在變化狀態；&#xA;然而使用者除了判斷其是否為 &lt;code&gt;NULL&lt;/code&gt; 之外，基本無需關心該變數的值，&#xA;因其具體數值是由函式庫來進行管理指派，&#xA;使用者只需要確保這個指標變數本身在整個樹的生命週期為可用即可：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;void *root = NULL;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;這個變數的初值應設為 &lt;code&gt;NULL&lt;/code&gt;，表示該容器為空；&#xA;同樣在容器的所有元素都已被移除後，這個指標的值也會變回 &lt;code&gt;NULL&lt;/code&gt; (用 &lt;code&gt;tdestroy()&lt;/code&gt; 清空的例外)。&#xA;由於部份函式可能會變更這個指標的數值，因此在呼叫此類函式時便會要求傳入此指標變數的指標。&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;key&lt;/code&gt; 為一個指向使用者自訂資料的指標，為本次操作所要搜尋或插入的目標。&#xA;注意雖然這個變數使用了 &lt;code&gt;const&lt;/code&gt; 修飾，但實際上函式有可能在操作完成後將此變數插入到容器內，&#xA;因此在記憶體管理等事務上需要注意這件事；&#xA;至於該變數是否被插入到容器內，可藉由函式返回值來進行判斷。&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;compar()&lt;/code&gt; 為使用者定義資料的比較函式，其規格與 &lt;code&gt;qsort()&lt;/code&gt; 相同：&#xA;函式傳入兩個使用者定義物件的指標，&#xA;當左物件應排在右物件前面時傳回負值，當左物件應排在右物件後面時傳回正值，當兩物件相等時傳回零。&lt;/p&gt;&#xA;&lt;p&gt;函式傳回值的型態為 &lt;code&gt;void*&lt;/code&gt;，但其並非為使用者定義資料的指標，而是搜尋結果的資訊，&#xA;這點要注意別被誤導！&#xA;其傳回的值實際上是一個指向使用者定義資料的指標變數的位址，聽起來饒口，但其實就是指標的指標；&#xA;也就是說假設使用者定義的資料型態為 &lt;code&gt;UserData&lt;/code&gt; 的話，那麼傳回型態應等效為 &lt;code&gt;UserData**&lt;/code&gt;。&#xA;函式傳回值其實理解為容器疊代器(iterator)會更加合適貼切！&#xA;因此後面說明都將以疊代器稱呼之。&lt;/p&gt;&#xA;&lt;p&gt;當函式搜尋到與傳入之 &lt;code&gt;key&lt;/code&gt; 匹配的節點時，便傳回該節點的疊代器；&#xA;若容器內無匹配的節點，則函式將會新增節點，並存入 &lt;code&gt;key&lt;/code&gt; 變數；&#xA;若發生其它問題，例如無法配置記憶體，則返回 &lt;code&gt;NULL&lt;/code&gt;。&#xA;因此在函式呼叫後，建議可以比對傳回的疊代器指向之資料指標使否與 &lt;code&gt;key&lt;/code&gt; 相同，&#xA;來判斷其是否已被加入於容器內，並決定是否需要將原輸入的參數 &lt;code&gt;key&lt;/code&gt; 銷毀等管理工作。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;tfind&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/posix-tree-container-tsearch-%E9%81%BF%E5%9D%91%E6%8C%87%E5%8D%97/#tfind&#34;&gt;tfind()&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;pre&gt;&lt;code&gt;void* tfind(&#xA;    const void *key, void *const *rootp, int(*compar)(const void*, const void*));&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;函式作用為在容器內搜尋節點。&#xA;所有規格與 &lt;code&gt;tsearch()&lt;/code&gt; 相同，除了在搜尋不到符合的節點時，本函式不會插入節點，而是傳回 &lt;code&gt;NULL&lt;/code&gt;。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;tdelete&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/posix-tree-container-tsearch-%E9%81%BF%E5%9D%91%E6%8C%87%E5%8D%97/#tdelete&#34;&gt;tdelete()&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;pre&gt;&lt;code&gt;void* tdelete(&#xA;    const void *restrict key,&#xA;    void **restrict rootp,&#xA;    int(*compar)(const void*, const void*));&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;函式作用為移除容器內的一個節點。&#xA;&lt;code&gt;key&lt;/code&gt; 為一個指向使用者定義格式資料的指標，用來作為函式比對並找出符合節點的依據；&#xA;&lt;code&gt;rootp&lt;/code&gt; 為容器根節點指標的指標；&#xA;&lt;code&gt;compar()&lt;/code&gt; 為使用者定義資料的比較函式，其規格與 &lt;code&gt;tsearch()&lt;/code&gt; 相同。&lt;/p&gt;&#xA;&lt;p&gt;當在容器內找到與 &lt;code&gt;key&lt;/code&gt; 符合的節點，該節點即會被移除容器並釋放資源。&#xA;返回值為被移除節點的父節點疊代器(沒錯，這個函式不會傳回被移除節點本身的資訊)、或根節點疊代器；&#xA;若容器內未有與 &lt;code&gt;key&lt;/code&gt; 符合的節點，則會返回 &lt;code&gt;NULL&lt;/code&gt;。&lt;/p&gt;&#xA;&lt;p&gt;此函式會自動處理並釋放被移除節點的資源，但是無法處理其內的使用者資料，&#xA;再加上此函式並不能傳回被移除節點的相關資訊，因此無法像其他的容器那樣先移除節點、再銷毀使用者資料。&#xA;在使用此函式移除一個節點時，正確的做法應是先搜尋容器內欲將移除的節點，&#xA;然後釋放該節點內的使用者資料，然後才是呼叫此函式移除該節點。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;twalk&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/posix-tree-container-tsearch-%E9%81%BF%E5%9D%91%E6%8C%87%E5%8D%97/#twalk&#34;&gt;twalk()&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;pre&gt;&lt;code&gt;void twalk(&#xA;    const void *root,&#xA;    void(*action)(const void *nodep, VISIT which, int depth));&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;函式作用為遍歷容器內所有節點。&#xA;&lt;code&gt;root&lt;/code&gt; 為容器根節點，&lt;code&gt;action()&lt;/code&gt; 為當每走訪一個節點時會呼叫的通知函式。&lt;/p&gt;&#xA;&lt;p&gt;走訪通知函式 &lt;code&gt;action()&lt;/code&gt; 的參數 &lt;code&gt;nodep&lt;/code&gt; 為該節點的疊代器，亦及指向該節點使用者結構的指標的指標；&#xA;&lt;code&gt;which&lt;/code&gt; 為一個列舉參數，列舉值參考下面的 &lt;code&gt;VISIT&lt;/code&gt; 定義，&#xA;其作用為指出目前走訪該節點是採用哪一種走訪方式；&#xA;&lt;code&gt;depth&lt;/code&gt; 則指出該節點之於樹結構上的深度，其中根節點為 0，並往下層遞增。&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;typedef enum&#xA;{&#xA;    preorder,&#xA;    postorder,&#xA;    endorder,&#xA;    leaf&#xA;} VISIT;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;其中要特別注意，&lt;code&gt;VISIT&lt;/code&gt; 所定義的走訪類型和一般在資料結構教科書上學到的類型並不相合，&#xA;初使用者可能會因而被誤導！&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;leaf&lt;/code&gt;: 即指出該節點為樹的葉節點，這部份沒什麼爭議。&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;preorder&lt;/code&gt;: 同教科書上的 preorder (前序)，即先走訪中間，然後左邊，然後右邊。&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;postorder&lt;/code&gt;: 其實為教科書上的 inorder (中序)，即先走訪左邊，然後中間，然後右邊。&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;endorder&lt;/code&gt;: 其實為教科書上的 postorder (後序)，即先走訪左邊，然後右邊，然後中間。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;因為 &lt;code&gt;twalk()&lt;/code&gt; 會採用不同的方式都走訪一遍，所以實際上一個節點可能會被訪問多次，&#xA;這點在使用上也需要注意！&#xA;詳細來說，葉節點只會被走訪一次，但除了葉節點以外的其它節點則會被走訪三次。&#xA;因此在使用此走訪函式時，應先檢查 &lt;code&gt;which&lt;/code&gt; 參數，並略過那些你不關心的型式的重複走訪呼叫。&#xA;例如若我希望使用中序走訪，則應檢查當 &lt;code&gt;which&lt;/code&gt; 為 &lt;code&gt;postorder&lt;/code&gt; 或 &lt;code&gt;leaf&lt;/code&gt; 的時候才進行處理，&#xA;並忽略其他類型的走訪呼叫。&lt;/p&gt;&#xA;&lt;p&gt;最後要提醒的是在 &lt;code&gt;action()&lt;/code&gt; 裡、以及在 &lt;code&gt;twalk()&lt;/code&gt; 的呼叫過程中，&#xA;不要去改變節點的搜索鍵屬性，亦不應對容器進行插入、刪除等操作，以避免容器內部狀態邏輯錯亂。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;twalk_r&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/posix-tree-container-tsearch-%E9%81%BF%E5%9D%91%E6%8C%87%E5%8D%97/#twalk_r&#34;&gt;twalk_r()&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;(此功能為 GNU 擴展)&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;void twalk_r(&#xA;    const void *root,&#xA;    void(*action)(const void *nodep, VISIT which, void *closure),&#xA;    void *closure);&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;此函式功能與 &lt;code&gt;twalk()&lt;/code&gt; 相同，&#xA;函式參數和回呼函式的參數定義基本都相同，請直接參考 &lt;code&gt;twalk()&lt;/code&gt; 相關說明；&#xA;不同的部份是本函式增加了物件導向的相容性。&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;action()&lt;/code&gt; 函式取消了 &lt;code&gt;depth&lt;/code&gt; 參數，並以 &lt;code&gt;closure&lt;/code&gt; 參數取代之，&#xA;其即為呼叫 &lt;code&gt;twalk_r()&lt;/code&gt; 時所傳入的 &lt;code&gt;closure&lt;/code&gt; 參數，其值和意義由使用者定義。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;tdestroy&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/posix-tree-container-tsearch-%E9%81%BF%E5%9D%91%E6%8C%87%E5%8D%97/#tdestroy&#34;&gt;tdestroy()&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;(此功能為 GNU 擴展)&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;void tdestroy(void *root, void(*free_node)(void *nodep));&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;函式作用為一次性銷毀一個容器。&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;root&lt;/code&gt; 為容器根節點，函式即會釋放所有該根節點所指向的容器資源。&#xA;至於使用者定義的資料則需透過使用者定義的 &lt;code&gt;free_node()&lt;/code&gt; 函式進行處理，&#xA;注意其中 &lt;code&gt;nodep&lt;/code&gt; 參數即為指向使用者資料的指標，而不是疊代器(指向資料的指標的指標)！&#xA;呼叫 &lt;code&gt;tdestroy()&lt;/code&gt; 必須指派 &lt;code&gt;free_node()&lt;/code&gt; 函式(不能為 &lt;code&gt;NULL&lt;/code&gt;)，&#xA;如果使用者的資料並不需要進行額外的處理，也應傳入一個實際上沒做任何事的函式供呼叫。&lt;/p&gt;&#xA;&lt;p&gt;此功能為 GNU 擴展函式，若不使用或無法使用此函式，&#xA;則按照 POSIX 的定義只能不斷呼叫 &lt;code&gt;tdelete()&lt;/code&gt; 不斷刪除節點直到容器為空為止！&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;範例&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/posix-tree-container-tsearch-%E9%81%BF%E5%9D%91%E6%8C%87%E5%8D%97/#%e7%af%84%e4%be%8b&#34;&gt;範例&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&#xA;  &#xA;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#define _GNU_SOURCE&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;&amp;lt;search.h&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;typedef&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; UserData;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;static&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;compare_user_data&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;void&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;l, &lt;span style=&#34;color:#66d9ef&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;void&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;r)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;const&lt;/span&gt; UserData&lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;)l &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;const&lt;/span&gt; UserData&lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;)r;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;static&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;char&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;get_visit_label&lt;/span&gt;(VISIT which)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;switch&lt;/span&gt;(which)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;case&lt;/span&gt; preorder:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;preorder&amp;#34;&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;case&lt;/span&gt; postorder:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;postorder&amp;#34;&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;case&lt;/span&gt; endorder:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;endorder&amp;#34;&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;case&lt;/span&gt; leaf:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;leaf&amp;#34;&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;default&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;unknown&amp;#34;&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;static&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;void&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;on_posix_node&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;void&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;nodep, VISIT which, &lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; depth)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;const&lt;/span&gt; UserData&lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;const&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; iter &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; nodep;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;printf&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Walk on node: which=%s,&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\t&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;depth=%d,&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\t&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;value=%d&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;get_visit_label&lt;/span&gt;(which), depth, &lt;span style=&#34;color:#f92672&#34;&gt;**&lt;/span&gt;iter);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;static&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;void&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;on_gnu_node&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;void&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;nodep, VISIT which, &lt;span style=&#34;color:#66d9ef&#34;&gt;void&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;closure)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;const&lt;/span&gt; UserData&lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;const&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; iter &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; nodep;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;printf&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Walk on node: which=%s,&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\t&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;user-arg=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;%s&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\t&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;value=%d&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;get_visit_label&lt;/span&gt;(which), (&lt;span style=&#34;color:#66d9ef&#34;&gt;char&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;) closure, &lt;span style=&#34;color:#f92672&#34;&gt;**&lt;/span&gt;iter);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;static&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;void&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;on_free_node&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;void&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;nodep)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;const&lt;/span&gt; UserData &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;node &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; nodep;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;printf&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Free on node: value=%d&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;node);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;main&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;void&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    UserData elements[] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; { &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;8&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;9&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;4&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;6&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;7&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;11&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;10&lt;/span&gt; };&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; element_num &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;sizeof&lt;/span&gt;(elements)&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;sizeof&lt;/span&gt;(elements[&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;]);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;void&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;root &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; NULL;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;printf&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Build tree&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; i &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;; i &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; element_num; &lt;span style=&#34;color:#f92672&#34;&gt;++&lt;/span&gt;i)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        UserData &lt;span style=&#34;color:#f92672&#34;&gt;**&lt;/span&gt;iter &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;tsearch&lt;/span&gt;(&lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&lt;/span&gt;elements[i], &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&lt;/span&gt;root, compare_user_data);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;printf&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Insert: new-node=%d, value=%d&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;iter &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&lt;/span&gt;elements[i], &lt;span style=&#34;color:#f92672&#34;&gt;**&lt;/span&gt;(UserData&lt;span style=&#34;color:#f92672&#34;&gt;**&lt;/span&gt;)iter);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;printf&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;printf&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Find nodes&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        UserData key &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;7&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        UserData &lt;span style=&#34;color:#f92672&#34;&gt;**&lt;/span&gt;iter &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;tfind&lt;/span&gt;(&lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&lt;/span&gt;key, &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&lt;/span&gt;root, compare_user_data);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;printf&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Find key=%d, ret-iter=%p, value=%d&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            key, iter, iter &lt;span style=&#34;color:#f92672&#34;&gt;?&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;**&lt;/span&gt;iter : &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        UserData key &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;28&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        UserData &lt;span style=&#34;color:#f92672&#34;&gt;**&lt;/span&gt;iter &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;tfind&lt;/span&gt;(&lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&lt;/span&gt;key, &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&lt;/span&gt;root, compare_user_data);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;printf&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Find key=%d, ret-iter=%p, value=%d&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            key, iter, iter &lt;span style=&#34;color:#f92672&#34;&gt;?&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;**&lt;/span&gt;iter : &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;printf&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;printf&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Erase nodes&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        UserData key &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;6&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        UserData &lt;span style=&#34;color:#f92672&#34;&gt;**&lt;/span&gt;iter &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;tdelete&lt;/span&gt;(&lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&lt;/span&gt;key, &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&lt;/span&gt;root, compare_user_data);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;printf&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Erase key=%d, ret-iter=%p, ret-value=%d&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            key, iter, iter &lt;span style=&#34;color:#f92672&#34;&gt;?&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;**&lt;/span&gt;iter : &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        UserData key &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;24&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        UserData &lt;span style=&#34;color:#f92672&#34;&gt;**&lt;/span&gt;iter &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;tdelete&lt;/span&gt;(&lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&lt;/span&gt;key, &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&lt;/span&gt;root, compare_user_data);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;printf&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Erase key=%d, ret-iter=%p, ret-value=%d&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            key, iter, iter &lt;span style=&#34;color:#f92672&#34;&gt;?&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;**&lt;/span&gt;iter : &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;printf&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;printf&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Walk through (POSIX)&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;twalk&lt;/span&gt;(root, on_posix_node);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;printf&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;printf&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Walk through (GNU)&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;twalk_r&lt;/span&gt;(root, on_gnu_node, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Hallo!&amp;#34;&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;printf&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;printf&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Release tree&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;tdestroy&lt;/span&gt;(root, on_free_node);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;printf&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;&lt;p&gt;執行結果：&lt;/p&gt;&#xA;&#xA;  &#xA;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Build tree&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Insert: new-node=1, value=2&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Insert: new-node=1, value=8&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Insert: new-node=1, value=3&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Insert: new-node=1, value=9&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Insert: new-node=1, value=4&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Insert: new-node=1, value=6&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Insert: new-node=1, value=1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Insert: new-node=1, value=7&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Insert: new-node=1, value=11&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Insert: new-node=1, value=5&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Insert: new-node=1, value=0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Insert: new-node=1, value=10&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Find nodes&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Find key=7, ret-iter=0x555c42174790, value=7&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Find key=28, ret-iter=(nil), value=-1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Erase nodes&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Erase key=6, ret-iter=0x555c42174750, ret-value=7&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Erase key=24, ret-iter=(nil), ret-value=-1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Walk through (POSIX)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Walk on node: which=preorder,&#x9;depth=0,&#x9;value=7&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Walk on node: which=preorder,&#x9;depth=1,&#x9;value=3&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Walk on node: which=preorder,&#x9;depth=2,&#x9;value=1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Walk on node: which=leaf,&#x9;depth=3,&#x9;value=0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Walk on node: which=postorder,&#x9;depth=2,&#x9;value=1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Walk on node: which=leaf,&#x9;depth=3,&#x9;value=2&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Walk on node: which=endorder,&#x9;depth=2,&#x9;value=1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Walk on node: which=postorder,&#x9;depth=1,&#x9;value=3&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Walk on node: which=preorder,&#x9;depth=2,&#x9;value=4&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Walk on node: which=postorder,&#x9;depth=2,&#x9;value=4&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Walk on node: which=leaf,&#x9;depth=3,&#x9;value=5&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Walk on node: which=endorder,&#x9;depth=2,&#x9;value=4&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Walk on node: which=endorder,&#x9;depth=1,&#x9;value=3&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Walk on node: which=postorder,&#x9;depth=0,&#x9;value=7&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Walk on node: which=preorder,&#x9;depth=1,&#x9;value=10&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Walk on node: which=preorder,&#x9;depth=2,&#x9;value=8&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Walk on node: which=postorder,&#x9;depth=2,&#x9;value=8&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Walk on node: which=leaf,&#x9;depth=3,&#x9;value=9&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Walk on node: which=endorder,&#x9;depth=2,&#x9;value=8&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Walk on node: which=postorder,&#x9;depth=1,&#x9;value=10&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Walk on node: which=leaf,&#x9;depth=2,&#x9;value=11&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Walk on node: which=endorder,&#x9;depth=1,&#x9;value=10&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Walk on node: which=endorder,&#x9;depth=0,&#x9;value=7&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Walk through (GNU)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Walk on node: which=preorder,&#x9;user-arg=&amp;#34;Hallo!&amp;#34;,&#x9;value=7&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Walk on node: which=preorder,&#x9;user-arg=&amp;#34;Hallo!&amp;#34;,&#x9;value=3&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Walk on node: which=preorder,&#x9;user-arg=&amp;#34;Hallo!&amp;#34;,&#x9;value=1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Walk on node: which=leaf,&#x9;user-arg=&amp;#34;Hallo!&amp;#34;,&#x9;value=0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Walk on node: which=postorder,&#x9;user-arg=&amp;#34;Hallo!&amp;#34;,&#x9;value=1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Walk on node: which=leaf,&#x9;user-arg=&amp;#34;Hallo!&amp;#34;,&#x9;value=2&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Walk on node: which=endorder,&#x9;user-arg=&amp;#34;Hallo!&amp;#34;,&#x9;value=1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Walk on node: which=postorder,&#x9;user-arg=&amp;#34;Hallo!&amp;#34;,&#x9;value=3&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Walk on node: which=preorder,&#x9;user-arg=&amp;#34;Hallo!&amp;#34;,&#x9;value=4&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Walk on node: which=postorder,&#x9;user-arg=&amp;#34;Hallo!&amp;#34;,&#x9;value=4&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Walk on node: which=leaf,&#x9;user-arg=&amp;#34;Hallo!&amp;#34;,&#x9;value=5&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Walk on node: which=endorder,&#x9;user-arg=&amp;#34;Hallo!&amp;#34;,&#x9;value=4&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Walk on node: which=endorder,&#x9;user-arg=&amp;#34;Hallo!&amp;#34;,&#x9;value=3&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Walk on node: which=postorder,&#x9;user-arg=&amp;#34;Hallo!&amp;#34;,&#x9;value=7&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Walk on node: which=preorder,&#x9;user-arg=&amp;#34;Hallo!&amp;#34;,&#x9;value=10&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Walk on node: which=preorder,&#x9;user-arg=&amp;#34;Hallo!&amp;#34;,&#x9;value=8&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Walk on node: which=postorder,&#x9;user-arg=&amp;#34;Hallo!&amp;#34;,&#x9;value=8&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Walk on node: which=leaf,&#x9;user-arg=&amp;#34;Hallo!&amp;#34;,&#x9;value=9&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Walk on node: which=endorder,&#x9;user-arg=&amp;#34;Hallo!&amp;#34;,&#x9;value=8&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Walk on node: which=postorder,&#x9;user-arg=&amp;#34;Hallo!&amp;#34;,&#x9;value=10&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Walk on node: which=leaf,&#x9;user-arg=&amp;#34;Hallo!&amp;#34;,&#x9;value=11&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Walk on node: which=endorder,&#x9;user-arg=&amp;#34;Hallo!&amp;#34;,&#x9;value=10&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Walk on node: which=endorder,&#x9;user-arg=&amp;#34;Hallo!&amp;#34;,&#x9;value=7&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Release tree&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Free on node: value=0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Free on node: value=2&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Free on node: value=1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Free on node: value=5&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Free on node: value=4&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Free on node: value=3&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Free on node: value=9&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Free on node: value=8&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Free on node: value=11&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Free on node: value=10&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Free on node: value=7&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;檢討與改善方案&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/posix-tree-container-tsearch-%E9%81%BF%E5%9D%91%E6%8C%87%E5%8D%97/#%e6%aa%a2%e8%a8%8e%e8%88%87%e6%94%b9%e5%96%84%e6%96%b9%e6%a1%88&#34;&gt;檢討與改善方案&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;依據我的使用經驗，POSIX 容器最大的問題在於介面設計上不符合人性直覺，且處處存在誤導效果。&#xA;首先就是那一堆的 &lt;code&gt;void*&lt;/code&gt; 讓我以為是我的自訂資料的指標，&#xA;在引發了大量的 segmentation fault 和花費大量時間的追蹤除錯後，我才發現了問題之所在。&lt;/p&gt;&#xA;&lt;p&gt;然後它的訪問方式也是一大嘈點，&#xA;不是提供疊代器讓使用者可以用個 for 迴圈逐步訪問，能夠自由操作其它資源，並能自己決定什麼時候終止。&#xA;它需要透過一個全部走訪呼叫一次走訪所有的節點，非葉節點還重複走訪了多次，而這個坑也讓我給踩了！&#xA;因為要一次走訪全部節點，不只使用者不能控制走訪流程，還必須透過回呼函式進行相關處理；&#xA;回呼函式也不是完全不行，在 GNU 擴展的加持下，我仍能夠完成各種需要的操作而不發生衝突，但是不方便！&#xA;為了在回呼函式裡面可以取用其它相關資源，我需要定義、建立、並傳遞一個結構，&#xA;雖然說這是在 C 語言底下常見的物件導向操作方式，&#xA;但如果是採用了疊代器訪問的方案，完全可以避免掉冗餘的複雜度，&#xA;也不用在 C 程式碼的函式外全域空間去定義可能就使用了一次的結構。&lt;/p&gt;&#xA;&lt;p&gt;此外它關於走訪方式的定義與一般的理解認知不同這點絕對是個坑！&#xA;我不清楚 &lt;code&gt;twalk()&lt;/code&gt; 對於走訪定義和資料教科書不同是存在什麼歷史遺留因素，&#xA;但是它產生的影響副作用絕對足夠忽悠第一次嘗試它的現代人。&#xA;在 &lt;code&gt;twalk()&lt;/code&gt; 的回呼函式中還存在無用的參數。&#xA;雖然重複走訪同一個節點的設計很讓人出乎意料，&#xA;但在此行為前提之下，&lt;code&gt;which&lt;/code&gt; 至少還提供了使用者是否要忽略本次回呼的依據；&#xA;那麼另一個參數 &lt;code&gt;depth&lt;/code&gt; 就真的不知道意義何在了！&#xA;站在一個容器使用者的角度，其實通常壓根不在意我的資料現在到底放在第幾層節點？&#xA;這讓容器內部的實現自己去處理就好了！&#xA;甚至我也不在乎你到底是用紅黑樹、AVL 樹、還是什麼樹來實做的？&#xA;程式庫需要提供的就只是為使用者建立鍵與值的對應關係，提供以鍵查詢、以及循序訪問的方式即可！&#xA;還好在 GNU 的擴展中把這個無用的參數給取消了，替換成了更加有用的 &lt;code&gt;closure&lt;/code&gt; 參數。&lt;/p&gt;&#xA;&lt;p&gt;綜合我在使用這些函式時所踩的坑，的確你可以歸咎於我在使用它之前沒有先仔細閱讀它的說明文件，&#xA;並且事實上這些詳細的內容、定義、和規範都已經登載在它的說明文件裡；&#xA;所以這裡總結出來的第一個檢討就是：&lt;strong&gt;在使用一個功能前，要先閱讀過它的相關說明文件！&lt;/strong&gt;&#xA;但是遇到的這些問題確實也指出了它的設計不符合操作直覺，是為介面設計不良的示範教案！&lt;/p&gt;&#xA;&lt;p&gt;那麼如果讓我來定義操作介面的話，我會如何定義呢？&#xA;下面就來給出相同的函式集在我修改之後的介面長相。&#xA;這裡我只簡單的修改了函式介面的宣告方式，不涉及函式行為的變更、或整體程式庫結構的更動；&#xA;因為如果能夠更動的話，我會想要直接設計全新的程式庫介面。&#xA;同時也是順道展現一下文字的威力，看看同樣的東西改個介面表現型式就能夠產生多大的改善效果！&#xA;(相反的，光是亂命名也可以產生很強的破壞力，願所有程式設計行業的設計師都能謹記妥善命名)&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;typedef void* troot_t;&#xA;&#xA;/*&#xA; * 如果考量到相容性的話，其實 VISIT 不能更動！&#xA; * 雖然原先的定義不符合當下的直覺，但若擅自「修正」定義的話，&#xA; * 反會造成許多已存在的程式碼出現異常行為的相容性問題；&#xA; * 但如果我們假設這個問題不存在的話，那麼就能更改成下列的名稱和順序。&#xA; */&#xA;typedef enum&#xA;{&#xA;    preorder,&#xA;    indorder,&#xA;    postorder,&#xA;    leaf&#xA;} VISIT;&#xA;&#xA;void** tsearch(&#xA;    void *key,&#xA;    troot_t *root,&#xA;    int(*compar)(const void*, const void*));&#xA;&#xA;void** tfind(&#xA;    const void *key,&#xA;    troot_t const* root,&#xA;    int(*compar)(const void*, const void*));&#xA;&#xA;void** tdelete(&#xA;    const void *restrict key,&#xA;    troot_t *root,&#xA;    int(*compar)(const void*, const void*));&#xA;&#xA;void twalk(&#xA;    const troot_t root,&#xA;    void(*action)(const void **node, VISIT which, int depth));&#xA;&#xA;void twalk_r(&#xA;    const troot_t root,&#xA;    void(*action)(const void **node, VISIT which, void *closure),&#xA;    void *closure);&#xA;&#xA;void tdestroy(troot_t root, void(*free_node)(void *node));&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;參考資料&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/posix-tree-container-tsearch-%E9%81%BF%E5%9D%91%E6%8C%87%E5%8D%97/#%e5%8f%83%e8%80%83%e8%b3%87%e6%96%99&#34;&gt;參考資料&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://man7.org/linux/man-pages/man3/twalk_r.3.html&#34;&gt;https://man7.org/linux/man-pages/man3/twalk_r.3.html&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>活塞引擎 3：散熱與排氣</title>
      <link>http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-3---%E6%95%A3%E7%86%B1%E8%88%87%E6%8E%92%E6%B0%A3/</link>
      <pubDate>Sat, 03 Aug 2024 19:26:25 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-3---%E6%95%A3%E7%86%B1%E8%88%87%E6%8E%92%E6%B0%A3/</guid>
      <description>&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;作為一個燃燒汽油產生動力的機器，燃燒過的廢氣該何去何從？&#xA;為什麼汽油在裡面一直燃燒，卻不會把引擎給燒壞呢？&#xA;這就要說到發動機系統裡面一個至關重要的組成了：散熱與排氣。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-3/fig1-1-4stroke.gif&#34; alt=&#34;fig1 1 4stroke&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 1. 四行程引擎運作循環 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_1&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;我們再回顧 Otto 引擎的原理，汽油在汽缸裡面燃燒時會加熱空氣，那麼重點就來了：加熱！&#xA;受熱膨脹的空氣推動活塞而產生了我們所需要的動力，但是留下來的廢熱卻產生了問題。&#xA;在四行程引擎的第四個行程中，燃燒後的廢氣會從排氣門被排放出去，&#xA;其實絕大部份的廢熱也會在這個時候跟著廢氣一起出去。&#xA;但是光靠排放廢氣帶走熱量是遠遠不夠的，因為在燃燒的過程中，活塞和汽缸壁也會同樣被加熱。&#xA;雖然這些熱量對比於廢氣本身的熱量只是個零頭，佔比並不高，&#xA;耐何引擎內部是個不間斷而持續重複燃燒循環的環境，&#xA;熱量會不斷累積並提高活塞、汽缸、乃至整個發動機的問度，&#xA;當熱量不斷累積、溫度不斷上升，沒有什麼機械能夠在這種情況下依然健壯而不毀壞。&#xA;因此在設計上，我們必須要想點辦法能夠足夠即時的的將這些有害廢熱給帶走，&#xA;才能夠保持發動機持續健康的工作！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_兩大散熱系統&#34;&gt;兩大散熱系統&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-3/fig2-1-air-cooled.jpg&#34; alt=&#34;fig2 1 air cooled&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 2. 一具採用氣流冷卻的星型發動機，注意它的汽缸壁比較薄，並且外部長了很多散熱鰭片以提升氣流冷卻效率 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-aircool-star&#34;&gt;[&lt;a id=&#34;_footnoteref_2&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_2&#34; title=&#34;View footnote.&#34;&gt;2&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-3/fig2-2-liquid-cooled.jpg&#34; alt=&#34;fig2 2 liquid cooled&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 3. 液體冷卻方案，將冷卻液流過汽缸吸收熱量，再將吸熱後變熱的冷卻液送到獨立的散熱器去降溫 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-liquid-cool&#34;&gt;[&lt;a id=&#34;_footnoteref_3&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_3&#34; title=&#34;View footnote.&#34;&gt;3&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;作為一個在大氣環境下運作的引擎，不論在飛機上還是在汽車摩托車上，&#xA;最簡單的冷卻辦法就是讓外面的空氣直接吹佛引擎本體，特別是大力吹佛那些最會發熱的地方，也就是汽缸。&#xA;若以散熱方式來對引擎分類，則採用這種散熱方式的引擎我們就稱為「氣冷(風冷)式」發動機；&#xA;對比之下，另外一種比較複雜的散熱型態就稱為「液冷式」發動機。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;液冷式發動機的引擎本體會稍厚一些，內部會分佈許多縱橫複雜的管道，&#xA;這些管道重點會流過整個汽缸和汽缸頭的內壁。&#xA;當冷卻液體流經這些管道時就會一路吸收引擎的熱量，在引擎裡面繞過一圈以後變成熱水流出來，&#xA;然後再經過其它的外部管路被導流到(可能)距離引擎有一段距離的熱交換器，並在那裡被外界的空氣吹涼。&#xA;在熱交換器(或稱「散熱器」)冷卻後的水再經另一條管路回到引擎，繼續重複吸熱並冷卻引擎的循環。&#xA;當然，這些冷卻液體不會自己動起來，管路中必定要有一個水泵去推動液體的流動，&#xA;而這些泵通常也是由引擎的曲軸來驅動的。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;氣冷式引擎為了能夠更快速有效的將汽缸內的積熱傳遞到外界被外部氣流帶走，&#xA;汽缸壁一般都較薄，並且汽缸和汽缸頭的外面會造出許多層疊薄片般的散熱片，&#xA;而這往往也是分辨氣冷式發動機的最顯著特徵(參考 Figure 2)。&#xA;液冷式引擎因為不需要造成像鱗片付身一樣的散熱片，所以外觀上看起來會更加平滑(參考 Figure 4)，&#xA;不過液冷式的引擎本體也就是汽缸所在位置會比較厚，這樣才能讓包覆冷卻管路在裡面環繞(參考 Figure 6)。&#xA;此外液冷式發動機需要配套一個以上的散熱器，而這也成為液冷發動機的一個重要特徵(參考 Figure 4)；&#xA;至於液冷發動機的散熱器會放在哪裡？這個就很不固定了，&#xA;因為有冷熱水水管的連結，散熱器的擺放位置很具有彈性。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-3/fig2-3-honda-vtr250.jpg&#34; alt=&#34;fig2 3 honda vtr250&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 4. 採用液冷發動機的摩托車，注意綠色標註的散熱器，而紫色標註的汽缸外表則相較平滑 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_honda-liquid-engine&#34;&gt;[&lt;a id=&#34;_footnoteref_4&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_4&#34; title=&#34;View footnote.&#34;&gt;4&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-3/fig2-4-radiator.jpg&#34; alt=&#34;fig2 4 radiator&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 5. 液冷散熱器，注意左上和右下各有一個水管出入口，中間實際上是彎彎繞繞的管路讓熱液流過，照片上看到的東西實際上是管路外面覆蓋滿的密集散熱鰭片，讓氣流吹過並將熱量帶走 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_3&#34; title=&#34;View footnote.&#34;&gt;3&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-3/fig2-5-liquid-cylinders.jpg&#34; alt=&#34;fig2 5 liquid cylinders&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 6. 一個被拆解開來的直列 4 缸發動機汽缸座，注意汽缸其實是被中空的管道包圍的，有些是冷卻液管道，有些是機油管道，還有幾個孔其實是螺絲孔 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-straight4&#34;&gt;[&lt;a id=&#34;_footnoteref_5&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_5&#34; title=&#34;View footnote.&#34;&gt;5&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_液冷&#34;&gt;液冷&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;液冷式發動機往往也被稱作「水冷式」。&#xA;這種稱呼法並沒有什麼錯誤，只是因為這些用來傳遞熱量的液體並不一定是水，&#xA;所以一般還是稱其為「液冷式」會更加貼合現實。&#xA;即便大部份發動機確實是以水作為冷卻液，但也不是純水，而是會添加許多的其他添加物，&#xA;例如防凍成份、防鏽成份等。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;採用液冷發動機的好處是發動機和散熱這兩部份可以脫開來處理，使得各自的彈性都很大。&#xA;發動機的設計和安置無需過度遷就散熱，同樣的散熱器也自成一套系統，與發動機之間的依賴性不大，&#xA;各自都可以朝著各自的需求和目的進行最佳優化。&#xA;這就是為什麼在二戰時期的歐洲戰場，各型飛機很大比例都偏好使用液冷發動機的原因了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;於是搭配了水冷式散熱系統的 V 型 12 缸發動機在二戰時期就這麼被各家飛機廠寵愛、&#xA;瓜分了航空發動機的半壁江山，放眼二戰歐洲上空的各式名機，&#xA;不管是德國的 Bf109、歐洲的颶風和噴火，美國的 P-39、P-40、P-51，&#xA;還是俄國的米格戰鬥機，用的全是 V 型(或倒 V 型)發動機，&#xA;甚至連在不列顛戰役中轟炸英國的主力 He111 轟炸機也採用了液冷 V 型發動機。&#xA;因為 V 型佈局整體幾何空間尺寸合適，用在地上的汽車可能被嫌過長，但是用在飛機上卻沒什麼大問題。&#xA;機鼻子會稍長一點那就長一點了唄，&#xA;可是它長方的形狀更加適合為了減低空氣阻力而打造的、粗略呈圓柱的細長機體，&#xA;對於講究高速飛行的航空飛機來說簡直就是再合適不過。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-3/fig3-1-spitfire.jpg&#34; alt=&#34;fig3 1 spitfire&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 7. 英國著名的噴火式戰鬥機，搭載 V 型 12 缸 Rolls-Royce Merlin 發動機，馬力 1470 hp，極速 600 km/h &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-spitfire&#34;&gt;[&lt;a id=&#34;_footnoteref_6&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_6&#34; title=&#34;View footnote.&#34;&gt;6&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-3/fig3-2-bf109e.jpg&#34; alt=&#34;fig3 2 bf109e&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 8. 德國著名的 Bf-109 戰鬥機，搭載倒 V 型 12 缸 Daimler-Benz DB 605A 發動機，馬力 1455 hp，極速 642 km/h &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-bf109&#34;&gt;[&lt;a id=&#34;_footnoteref_7&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_7&#34; title=&#34;View footnote.&#34;&gt;7&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-3/fig3-3-p40m.jpg&#34; alt=&#34;fig3 3 p40m&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 9. 與中國飛虎隊同款的 P-40 戰鬥機，搭載 V 型 12 缸 Allison V-1710 發動機，馬力 1240 hp，極速 581 km/h &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-p40&#34;&gt;[&lt;a id=&#34;_footnoteref_8&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_8&#34; title=&#34;View footnote.&#34;&gt;8&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-3/fig3-4-p51d.jpg&#34; alt=&#34;fig3 4 p51d&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 10. 美國著名的 P-51 戰鬥機，搭載與噴火式同款的 Rolls-Royce Merlin 發動機，馬力 1720 hp，極速 710 km/h &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-p51&#34;&gt;[&lt;a id=&#34;_footnoteref_9&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_9&#34; title=&#34;View footnote.&#34;&gt;9&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-3/fig3-5-lancaster.jpg&#34; alt=&#34;fig3 5 lancaster&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 11. 英國的重型 Lancaster 轟炸機，是二戰時期少見非採用星型發動機的大型飛機 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-lancaster&#34;&gt;[&lt;a id=&#34;_footnoteref_10&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_10&#34; title=&#34;View footnote.&#34;&gt;10&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;除了引擎本體之外，採用液冷式的發動機通常不會遭遇到來自於散熱效率不足的問題。&#xA;因為發動機與散熱器為兩個不同的獨立裝置，&#xA;如果在設計階段知道散熱率不足，那麼就換上效果好一點的、或大一點的散熱器；&#xA;如果一個散熱器不夠，那就裝上兩個散熱器，只要能夠源源不絕的提供足夠涼的冷卻水，引擎就不會過熱！&#xA;因為散熱器是個完全獨立的裝置，只需要為了最有效的將水管內熱水的熱量傳遞出去給風吹走，&#xA;而無需遷就引擎，因此散熱器往往可以被設計的非常高效。&#xA;散熱器不只無需遷就發動機的型式，也無需遷就發動機的位置。&#xA;只要能透過管路連結傳遞冷熱水，那麼散熱器的安裝位置便非常自由彈性，&#xA;幾乎可以依據設計者的通盤考量而被安置在各處角落。&#xA;可以被放置在距離發動機或近或遠，對於散熱最有利的位置上。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-3/fig4-1-spitfire-radiator1.jpg&#34; alt=&#34;fig4 1 spitfire radiator1&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 12. 噴火式戰鬥機的散熱器位於主翼下 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_6&#34; title=&#34;View footnote.&#34;&gt;6&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-3/fig4-2-spitfire-radiator2.jpg&#34; alt=&#34;fig4 2 spitfire radiator2&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 13. 同樣是噴火式戰鬥機，有些子型號有兩個散熱器，有些只有一個 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_6&#34; title=&#34;View footnote.&#34;&gt;6&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-3/fig4-3-bf109-radiator.jpg&#34; alt=&#34;fig4 3 bf109 radiator&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 14. Bf-109 戰鬥機的散熱器同樣位於主翼下 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_7&#34; title=&#34;View footnote.&#34;&gt;7&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-3/fig4-4-p40-radiator.jpg&#34; alt=&#34;fig4 4 p40 radiator&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 15. P-40 戰鬥機的散熱器就在發動機下，紅色標註位置則是散熱氣流出口，而位於螺旋槳軸下方的碩大散熱進氣口成為辨認 P-40 的重要特徵 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_8&#34; title=&#34;View footnote.&#34;&gt;8&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-3/fig4-5-p51-iconic-radiator.jpg&#34; alt=&#34;fig4 5 p51 iconic radiator&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 16. 機腹下的散熱器進氣口是 P-51 戰鬥機標誌性的特徵 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_9&#34; title=&#34;View footnote.&#34;&gt;9&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-3/fig4-6-p51-radiator-inout.jpg&#34; alt=&#34;fig4 6 p51 radiator inout&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 17. P-51 戰鬥機的側面角度，這裡可以看到綠色標註位置的散熱器出氣口；P-51 的設計巧思之一就是利用散熱器的熱量來加熱空氣並向後噴出，形成補充推力 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_9&#34; title=&#34;View footnote.&#34;&gt;9&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;液冷式發動機這樣看上去非常棒，讓整個動力系統可以各自放開拳腳施展，當然也不是沒有代價的；&#xA;否則若非如此，哪能還有其它散熱型式存活的空間呢？&#xA;液冷式發動機最大的問題就來自於多出了這一套冷卻裝置、和連結的管路。&#xA;首先它直接增加了整個動力系統的重量，然後設計的複雜度和生產成本也被提高，&#xA;在維護保養上也需要為冷卻系統和管路多出一份負擔，同時更複雜的系統也增加了動力系統的故障失效概率。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;一旦在天空上發生了冷卻系統故障、或冷卻液洩漏，則用不了多久就能讓發動機過熱損毀！&#xA;對於一般民用航空來說，這增加了保修負擔和故障機率；&#xA;但對於軍事用途來說，這讓飛機對於作戰的損傷承受風險更高了；&#xA;特別是那連結發動機與散熱器的長長管路被擊中波及損壞的機率也不是太低，一旦損傷卻將導致發動機罷工報銷！&#xA;對於歐陸戰場來說，墜落之後只要還能跳傘逃生多半都會生還，頂多就是被敵人抓走；&#xA;但是對於在廣袤太平洋上巡邏戰鬥的飛行員來說，跳傘之後若不能即時被找到救起，那就只能餵鯊魚了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_氣冷&#34;&gt;氣冷&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-3/fig5-1-honda-cbx.jpg&#34; alt=&#34;fig5 1 honda cbx&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 18. 為了散熱氣流的考慮而必須橫置的直列 6 缸發動機 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_11&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_11&#34; title=&#34;View footnote.&#34;&gt;11&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;氣冷式發動機的好處就是比較簡單單純，&#xA;沒有額外的散熱器、也沒有亂七八糟的冷卻管路，直接讓外面迎風的冷空氣吹過汽缸帶走熱量。&#xA;少了額外的負擔，重量變輕了、結構簡化了、成本下降了、故障率降低了、維護保養更輕鬆了，&#xA;並且更能夠經得住在戰場下的破壞和生存。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;當然氣冷式發動機的好與壞、優與劣，是互相參雜交織的。&#xA;不像液冷式發動機因為將散熱拉出來在別的地方處理，所以發動機本體可以隨便怎麼做都好，&#xA;氣冷式發動機因為需要依賴迎風氣流來散熱，所以發動機的設計和佈置就不能不考慮迎風氣流這件事。&#xA;像上圖(Figure 18)的例子，既想用直列六缸引擎、同時又想要氣冷，就只好把發動機給橫著放了。&#xA;這就是為了妥協迎風氣流散熱的緣故而只能夠採取這樣的佈置法，因為如果不橫著放而是直的放，&#xA;那麼靠後面的汽缸就只能吃到已經吹過了前面汽缸的熱氣，愈靠後的汽缸愈容易遇到散熱不良的問題。&#xA;所以為了顧及吹風散熱的問題，一排汽缸就只能夠橫著放了；&#xA;如果換成液冷型式，那麼這引擎就不管是橫著放、竪著放、或斜著放都沒問題了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;所以在設計氣冷式發動機時，就必須要妥善考量發動機(其實主要是汽缸)與氣流的關係。&#xA;一般來說，同一個來源的空氣最多只能吹過一、兩個汽缸；&#xA;再多吹幾個汽缸也不是不行，但是積熱問題和散熱的排佈絕對夠引擎設計著傷透腦筋！&#xA;這就是為什麼採用水平對臥氣冷式發動機的小飛機，汽缸數總是 4 缸，而絕少 6 缸以上的原因。&#xA;那麼如果需要大馬力發動機，就得多堆汽缸數量，&#xA;於是看來看去只有星型排佈能夠符合多汽缸之下還能兼顧氣吹冷卻的條件了，&#xA;而這就是為什麼那些採用了氣冷散熱的發動機(低馬力的小引擎除外)總是星型佈局的原因。&#xA;反過來也是一樣的，星型發動機總是採用氣冷散熱型式，兩者成為互相專屬的最佳搭配。&#xA;這時也許有些聰明的讀者會提出反駁：&#xA;「為什麼星型佈局只能使用氣冷散熱？難道就不能讓星型發動機用液冷散熱嗎？」&#xA;關於這個問題，理論上的確可以，但是通常沒有人會這麼做。&#xA;至於為什麼？因為如果都決定要用液冷方案了，汽缸排佈就無需遷就氣流；&#xA;既然排佈的自由度有了，為何不採用其它更有利於減少阻力或其它優點的佈局方式呢？&#xA;至此就形成了一個固定的結論：&#xA;在大馬力發動機上，氣冷必須採用星型佈局，並且星型佈局也只會搭配氣冷散熱。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;如同我在前篇的汽缸佈局解說 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_12&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_12&#34; title=&#34;View footnote.&#34;&gt;12&lt;/a&gt;]&lt;/sup&gt;，&#xA;氣冷發動機的另一個缺點就是正面截面積比較大，令飛機機身不得不變得更粗，機頭也會呈扁平而非尖銳的流線型，&#xA;這導致採用氣冷發動機的飛機在空氣動力的設計上會稍嫌吃虧。&#xA;回顧二戰時期經典戰鬥機的性能數據可以看出此項優劣特性，&#xA;即便同時期星型發動機的馬力普遍大於 V 型發動機(因為汽缸多)，即便星型發動機少了散熱管路的負擔和重量，&#xA;但是在那些飛行速度最快的戰鬥機列表裡，仍然大部份是液冷 V 型發動機的天下！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-3/fig6-1-fw190.jpg&#34; alt=&#34;fig6 1 fw190&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 19. 德國的 Fw-190 戰鬥機，是在一眾偏好液冷發動機的二戰歐洲戰場上為數不多採用星型氣冷發動機的戰鬥機，搭載星型複列 14 缸 BMW 801D 發動機，馬力 1677 hp，極速 652 km/h &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-fw190&#34;&gt;[&lt;a id=&#34;_footnoteref_13&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_13&#34; title=&#34;View footnote.&#34;&gt;13&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-3/fig6-2-p36.jpg&#34; alt=&#34;fig6 2 p36&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 20. P-36 戰鬥機雖然沒有名氣，但是很有比對參考價值，因為它採用 V 型液冷發動機的改款就是 P-40 戰鬥機；P-36 搭載星型複列 14 缸 P&amp;amp;W R-1830 發動機，馬力 1050 hp，極速 504 km/h &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-p36&#34;&gt;[&lt;a id=&#34;_footnoteref_14&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_14&#34; title=&#34;View footnote.&#34;&gt;14&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-3/fig6-3-f6f.jpg&#34; alt=&#34;fig6 3 f6f&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 21. 在二戰太平洋戰場的大海上叱吒風雲的 F6F 地獄貓戰鬥機，身材特別短圓胖；其搭載星型複列 18 缸 P&amp;amp;W R-2800 發動機，馬力 2200 hp，極速 629 km/h &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-f6f&#34;&gt;[&lt;a id=&#34;_footnoteref_15&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_15&#34; title=&#34;View footnote.&#34;&gt;15&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-3/fig6-4-f4u.jpg&#34; alt=&#34;fig6 4 f4u&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 22. 在二戰太平洋同樣出名的 F4U 海盜式戰鬥機，雖然它在兩翼翼根處各有一個散熱器進氣口(就是俯衝時會發出特殊哨聲的聲音來源)，但是那其實是增壓的中冷器進風口，至於發動機本身則是與地獄貓同款的星型氣冷 P&amp;amp;W R-2800 發動機，極速 717 km/h &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-f4u&#34;&gt;[&lt;a id=&#34;_footnoteref_16&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_16&#34; title=&#34;View footnote.&#34;&gt;16&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-3/fig6-5-a6m2.jpg&#34; alt=&#34;fig6 5 a6m2&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 23. 日本著名的零式戰鬥機，搭載星型複列 14 缸中島榮發動機，馬力 950 hp，極速 533 km/h &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-a6m&#34;&gt;[&lt;a id=&#34;_footnoteref_17&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_17&#34; title=&#34;View footnote.&#34;&gt;17&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-3/fig6-6-n1k2.jpg&#34; alt=&#34;fig6 6 n1k2&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 24. 日本著名的紫電改戰鬥機，搭載星型複列 18 缸中島譽二一型發動機，馬力 1990 hp極速 610 km/h &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-n1k2&#34;&gt;[&lt;a id=&#34;_footnoteref_18&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_18&#34; title=&#34;View footnote.&#34;&gt;18&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;發動機採用直接氣冷散熱還有一個缺點：散熱控制較為不易，散熱條件浮動範圍較大。&#xA;比如說在飛機飛在天上的時候，低溫的迎風氣流很是充沛，&#xA;但是當低速起降時、或是在地上滑行、運轉時，缺乏足夠的冷卻氣流，容易導致過熱的現象。&#xA;此外發動機溫度的變化範圍也較難穩定控制，&#xA;比方說液冷發動機能夠隨時增減散熱程度，控制發動機的溫度在較穩定的區間，&#xA;甚至在冷機剛發動的時候可以完全停止散熱工作，使發動機溫度快速升高，&#xA;然而這些卻都是氣冷發動機所難以企及的。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;因此氣冷發動機需要承受更大的溫度變化範圍，在零件的膨脹裕度上都要保留比較多的空間，&#xA;沒法像液冷發動機那樣「精準」。&#xA;此外大馬力的氣冷發動機往往會裝設有引擎專用的風扇，好在飛機沒有空速的時候仍能提供足夠的散熱氣流。&#xA;並且，配備了氣冷發動機的飛機，在發動機艙的後面多半會安裝有可以控制開闔的空氣活門，&#xA;在起降的低速階段、以及停在地上運作的時候，可以讓更多的空氣通過引擎本體所在區域，&#xA;也是為了幫助在低速時的散熱率。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-3/fig7-1-fw190-fan.jpg&#34; alt=&#34;fig7 1 fw190 fan&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 25. Fw-190 發動機罩前方設有隨螺旋槳軸旋轉的風扇，用以增加散熱氣流的流動 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_19&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_19&#34; title=&#34;View footnote.&#34;&gt;19&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-3/fig7-2-n1k2-fin.jpg&#34; alt=&#34;fig7 2 n1k2 fin&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 26. 一架在地面運轉的紫電改戰鬥機，可看見發動機艙後面的排氣風門已經全開，以利散熱氣流大量通過 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_18&#34; title=&#34;View footnote.&#34;&gt;18&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_排氣&#34;&gt;排氣&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;引擎燃燒過後的廢氣該怎麼處理呢？說來也好笑，就是直接排掉就可以了！&#xA;飛機的排氣管沒有連接什麼三元催化器、也沒有什麼消音器，就是一根管子從汽缸頭接出來，就排出去了。&#xA;頂多就是把排氣管給折彎一下讓它朝向機體後方，使排氣的反作用力可以給飛機稍微增加一點點助推力！&#xA;不過也正是因為如此，我們在看那些老二戰飛機的時候，&#xA;才能透過飛機外面明顯的排氣管看出發動機安裝的位置，甚至可以去數排氣管的數量來判斷發動機的汽缸數量。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;說到底，飛機的排氣之所以沒有額外的更多環保處理程序，最主要的原因大約是：&#xA;一、早期還沒有對於環保要求的意識；二、現代航空發動機的排氣量實在是太大了，要談過濾並不現實！&#xA;另外在汽車上很看重的還有一部份是噪音，然而這點噪音對飛在天上的飛機來說其實也不是什麼大事，&#xA;因為活塞引擎實在是太安靜了，只要在一定的距離之外也根本不容易聽見引擎的聲音；&#xA;不過什麼？你說你在地上看飛機在飛的時候明明就有聽見吵雜的轟鳴聲嗎？&#xA;喔不！你聽見的那個噪音其實主要是螺旋槳切過空氣所產生的音爆，真正的引擎聲其實並不大，&#xA;往往要在飛機低空略過的時候去仔細聆聽才能夠從螺旋槳製造的噪音中分辨出來。&#xA;總而言之，活塞引擎飛機其實並不太注重所謂噪音的問題，&#xA;它對於飛機來說是相對安靜的，除了坐在飛機裡面的人之外！&#xA;不過即便是坐在艙內能夠明顯聽見發動機運作的聲音並感受到振動，&#xA;艙內噪音的大宗來源仍然是來自於螺旋槳，而非汽缸引擎本身。&#xA;(因此我們常能看到小飛機的駕駛員喜歡佩帶大大的主動降噪式耳機在頭上)&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;看起來有關飛機發動機的排氣話題就是這樣的簡單單純，目前能夠講述的內容實在不多，&#xA;這也是為什麼我把這個主題與散熱併在一起的原因。&#xA;然而這個看起來簡單的排氣其實隱藏了一個有關於活塞發動機的重要瓶頸，&#xA;也是未來在討論活塞發動機的發展天花板時不能不直視的一個重要問題，那就是：&#xA;傳統活塞引擎對能量的使用其實是挺低效的！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;活塞把空氣壓縮了比方說 10 倍以後，我們一鬆手這壓縮的空氣也就會膨脹回來，&#xA;假設沒有漏氣和摩擦問題的話，那麼空氣就會完整膨脹 10 倍回到原來的體積。&#xA;然而當我們在把空氣給壓縮 10 倍以後還把它給點火加熱了，&#xA;那麼這空氣能膨脹的程度肯定就不只 10 倍了；&#xA;至於實際可以膨脹多少倍？這問題我們往後會再細算。&#xA;即便空氣可以膨脹超過 10 倍有餘，可是很不幸的，在汽缸內它最多也只能夠膨脹 10 倍，&#xA;然後就得被排出去了。&#xA;你說空氣它還有壓力，還能再繼續出力，那為什麼不讓它繼續推動活塞使引擎產生更多動力呢？&#xA;因為我們的活塞已經到底了啊！&#xA;活塞跟著連桿和曲軸走，當曲軸曲柄轉到汽缸對面的時候，這就是最大的程度了，&#xA;接下來活塞得往回走，這些氣體要再不排出去的話就會變成阻力了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這就是為什麼我說傳統活塞發動機其實對空氣能量的利用是挺浪費的，&#xA;明明是仍然富有相當能量的熱空氣，明明應該還能夠用它來做什麼，&#xA;但是我們卻無法利用，只能稱它為廢氣，並且眼睜睜的看著它被排放出去！&#xA;但是畢竟活塞引擎的活塞就是跟著曲軸圓周走的，氣體膨脹和壓縮行程只能對稱連動，&#xA;活塞到底了就得往上，即便知道熱空氣它還有力氣，卻再也利用不了。&#xA;而這也是為什麼近代會有阿金森循環引擎、和米勒循環引擎興起的原因，&#xA;不過這個扯遠了，以後有機會再深入討論。&#xA;對於傳統螺旋槳飛機來說，眼看著仍然富有能量的高溫高壓廢氣就這麼被排放出去，卻也是莫可耐何。&#xA;頂多只能把排氣管給折彎一下朝向後面，讓排放的廢氣向後噴，產生一點點的反作用力來補貼飛機的推力。&#xA;至於這個一點點的推力補貼是多少呢？大約等效於給引擎增加了 50 到 100 馬力的推力吧&#xA;(同時期的發動機功率大多在 1200 至 2000 馬力左右)，聊勝於無嘍！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-3/fig8-1-p51d-exhaust.jpg&#34; alt=&#34;fig8 1 p51d exhaust&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 27. 排氣管就是從發動機汽缸以最短距離接出來的小管子，順便彎一下往後面噴以增加些許推力 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_9&#34; title=&#34;View footnote.&#34;&gt;9&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-3/fig8-2-a6m5-exhaust.jpg&#34; alt=&#34;fig8 2 a6m5 exhaust&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 28. 星型發動機同樣可以將排氣管接出來往後噴 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_17&#34; title=&#34;View footnote.&#34;&gt;17&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;footnotes&#34;&gt;&#xA;&lt;hr/&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_1&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_1&#34;&gt;1&lt;/a&gt;. &lt;a href=&#34;https://zh.wikipedia.org/zh-tw/%E6%B1%BD%E6%B2%B9%E5%BC%95%E6%93%8E&#34;&gt;汽油引擎&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_2&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_2&#34;&gt;2&lt;/a&gt;. &lt;a href=&#34;https://de.wikipedia.org/wiki/Sternmotor&#34;&gt;Sternmotor&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_3&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_3&#34;&gt;3&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Radiator_%28engine_cooling%29&#34;&gt;Radiator (engine cooling)&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_4&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_4&#34;&gt;4&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/V-twin_engine&#34;&gt;V-twin engine&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_5&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_5&#34;&gt;5&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Straight-four_engine&#34;&gt;Straight-four engine&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_6&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_6&#34;&gt;6&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Supermarine_Spitfire&#34;&gt;Supermarine Spitfire&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_7&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_7&#34;&gt;7&lt;/a&gt;. &lt;a href=&#34;https://de.wikipedia.org/wiki/Messerschmitt_Bf_109&#34;&gt;Messerschmitt Bf 109&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_8&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_8&#34;&gt;8&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Curtiss_P-40_Warhawk&#34;&gt;Curtiss P-40 Warhawk&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_9&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_9&#34;&gt;9&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/North_American_P-51_Mustang&#34;&gt;North American P-51 Mustang&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_10&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_10&#34;&gt;10&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Avro_Lancaster&#34;&gt;Avro Lancaster&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_11&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_11&#34;&gt;11&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Straight-six_engine&#34;&gt;Straight-six engine&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_12&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_12&#34;&gt;12&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-2---%E5%A4%9A%E7%BC%B8%E4%BD%88%E5%B1%80/&#34;&gt;活塞引擎 2：多缸佈局&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_13&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_13&#34;&gt;13&lt;/a&gt;. &lt;a href=&#34;https://de.wikipedia.org/wiki/Focke-Wulf_Fw_190&#34;&gt;Focke-Wulf Fw 190&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_14&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_14&#34;&gt;14&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Curtiss_P-36_Hawk&#34;&gt;Curtiss P-36 Hawk&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_15&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_15&#34;&gt;15&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Grumman_F6F_Hellcat&#34;&gt;Grumman F6F Hellcat&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_16&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_16&#34;&gt;16&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Vought_F4U_Corsair&#34;&gt;Vought F4U Corsair&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_17&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_17&#34;&gt;17&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Mitsubishi_A6M_Zero&#34;&gt;Mitsubishi A6M Zero&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_18&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_18&#34;&gt;18&lt;/a&gt;. &lt;a href=&#34;https://ja.wikipedia.org/wiki/%E7%B4%AB%E9%9B%BB%E6%94%B9&#34;&gt;紫電改&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_19&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_19&#34;&gt;19&lt;/a&gt;. &lt;a href=&#34;https://acesflyinghigh.wordpress.com/2016/05/13/under-the-cowl-of-the-flying-heritage-collection-fw-190a-5/&#34;&gt;Under the Cowl of the Flying Heritage Collection FW-190A-5&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>活塞引擎 2：多缸佈局</title>
      <link>http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-2---%E5%A4%9A%E7%BC%B8%E4%BD%88%E5%B1%80/</link>
      <pubDate>Sat, 20 Jul 2024 19:23:57 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-2---%E5%A4%9A%E7%BC%B8%E4%BD%88%E5%B1%80/</guid>
      <description>&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;雖然說活塞引擎只需要一組活塞汽缸就足以運作了，&#xA;可是我們日常眼界所及的各式活塞發動機卻往往都裝配了不只一組汽缸，&#xA;幾乎除了輕型摩托車以外，所有車輛和飛機上的活塞引擎都無一例外使用了多汽缸的形式。&#xA;使用多汽缸當然是存在一些好處的，然而這些汽缸應該怎麼排列？&#xA;汽缸的排列方式不只是影響發動機的尺寸參數而已，往往還極大程度影響發動機的整體性能特性。&#xA;於是本篇就要先來介紹這些由汽缸排列方式而產生的引擎分類。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;why-need-multi-cylinders&#34;&gt;為什麼需要多汽缸？&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-2/fig1-1-1cylinder.jpg&#34; alt=&#34;fig1 1 1cylinder&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 1. 只有一個汽缸的引擎，廣泛被用於摩托車上 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_1&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;上圖是一個常見的單缸引擎的樣子，&#xA;外表佈滿了散熱鰭片的汽缸體很明顯容易辨認，在汽缸下面就是曲軸箱，&#xA;這樣就構成了一個完整引擎的大致結構。&#xA;在有了飛輪的加持之下，一組活塞汽缸組件(下面將以「汽缸」簡稱之)就足以使一顆引擎正常運轉，&#xA;那為什麼需要設計多個汽缸的引擎呢？原因也很單純，就是為了增加引擎的輸出功率。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;當然除了增加汽缸數量之外，把汽缸做大一點也可以放大引擎功率，&#xA;只不過汽缸容量放大到超過一個範圍之後，有些不良副作用會突顯出來，&#xA;例如油氣均勻混合的難度增加、燃燒控制難度增加、以及轉速降低等等；&#xA;然而增加多個汽缸除了也能夠增加引擎功率的主要目的之外，還會帶來一些好的副作用，&#xA;主要體現在能讓引擎產生的動力輸出更加平順、運作更平穩、振動更容易受控的方面上。&#xA;在有多顆汽缸協同工作的情況下，我們可以將各汽缸的行程錯開打散，&#xA;這樣曲軸在旋轉過程的各個位置可能同時都有汽缸分別正在點火、正在膨脹、正在壓縮等等。&#xA;這樣相比於單缸引擎轉兩圈才來一次的動力爆發，多缸引擎的動力會更加平穩綿密，&#xA;更少在單缸引擎上明顯的那種間斷式的動力突波。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;既然多汽缸引擎的表現這麼好，那是不是汽缸愈多愈好呢？&#xA;比如一個原本排氣量(也就所有汽缸的總容量) 2 公升的汽車引擎，一般別人大概都做成 4 汽缸型式，&#xA;那我就把它拆成 100 個汽缸來運作(這樣的話每個汽缸容量只有 20 cc)，&#xA;那麼這樣的引擎是不是就非常非常平順了？是不是運作起來簡直就像電動馬達一樣，完全感覺不到振動了？&#xA;這樣的引擎動力平順是肯定平順的，單就這樣的結論而言並沒有錯，但是現實上並不划算！&#xA;把汽缸造的小的話問題其實並不大，但是汽缸數量太多反而會讓引擎整體性能下降。&#xA;因為各個運動零件之間都存在摩擦消耗，連桿、凸輪軸、汽門等等這些零件本來就會產生運轉阻力，&#xA;特別是汽缸和活塞之間為了氣密的緣故，其滑動阻力佔的比重本來就高，&#xA;而當這些零件的數量過多時，累積起來的引擎內耗會可觀的消耗掉本應該對外輸出的動力，&#xA;最終使得引擎功率降低，效率也降低。&#xA;除此之外，過多的零件還增加製造難度、增加維護保養成本、也增加了故障率。&#xA;歷史上也不是沒有人嘗試過打造那種汽缸很多很多的引擎，&#xA;只是後來無一例外全都敗給了飛漲的各種成本和高故障率。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;因此，雖然增加汽缸數量可以帶來一些明顯的好處，但汽缸數量也並不是愈多愈好。&#xA;對於正常普及的活塞引擎其汽缸數量絕大多數被控制在 20 個以內，&#xA;而針對家用市場的低價小功率產品之汽缸數量更是只有個位數；&#xA;對於一些超輕、超低價的產品如速克達機車、割草機等則連雙缸都少見，大多都只配備了單缸引擎，&#xA;除了成本因素之外，也是因為單缸的功率就已經足以應付了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_常見的汽缸佈局&#34;&gt;常見的汽缸佈局&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_直列&#34;&gt;直列&lt;/h3&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-2/fig2-1-mercedes-d3.jpg&#34; alt=&#34;fig2 1 mercedes d3&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 2. 在一戰時期的老式飛機上使用的直列 6 缸發動機 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_2&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_2&#34; title=&#34;View footnote.&#34;&gt;2&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;直列發動機可說是在所有的多缸發動機裡面最簡單的結構，把汽缸直直排成一排共同轉動一個曲軸就完成了。&#xA;直列佈局的最大優點就是結構簡單且成本低，比方汽缸座可以用一整塊材料挖幾個孔就大致完成雛型了；&#xA;凸輪軸也只需要兩根，做的長一點就是了；&#xA;汽缸蓋、正時鏈條等等很多主要零件也都只需要共用一副即可。&#xA;因此直列的汽缸佈局大量充斥在民用車輛上，幾乎所有除了講究性能的高級車以外的一般車輛全用的都是直列佈局，&#xA;萊特兄弟發明的飛機用的那個 12 馬力發動機也是直列佈局，主要原因就是經濟實惠。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;當然直列佈局也有它的缺點，否則怎麼還有其它佈局方式生存的空間呢？&#xA;直列佈局的主要缺點就是當汽缸數量多起來以後，引擎就會變得很長，&#xA;這種細細長長的引擎形狀不利於放在幾乎任何地方。&#xA;直列五缸、六缸的發動機就已經長到只有特殊考量的車輛才願意使用，&#xA;而直列 12 缸的引擎大概連飛機都會嫌棄它了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;所以在航空領域，只有在大約第一次世界大戰之前的飛機會出現直列汽缸發動機，&#xA;因為那個時候的航空還處在萌芽摸索階段，也還沒有用上更大馬力的發動機；&#xA;但是在約一戰以後，航空對發動機馬力的需求開始快速上升，直列佈局很快就被淘汰消失在航空領域了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_v_型&#34;&gt;V 型&lt;/h3&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-2/fig3-1-honda-ra121e.jpg&#34; alt=&#34;fig3 1 honda ra121e&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 3. 一個 V 型 12 汽缸的發動機 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-v12&#34;&gt;[&lt;a id=&#34;_footnoteref_3&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_3&#34; title=&#34;View footnote.&#34;&gt;3&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;既然把汽缸排成一列太長，那就排成兩列吧，長度直接折一半！&#xA;V 型佈局其實就是直列發動機的變體，把汽缸排成兩個直列；&#xA;又因為兩排汽缸的活塞需要接到同一根曲軸上，因此下部連桿和曲軸的那部份會聚攏起來，&#xA;從軸向看過去就像是英文字母的 V，因此得名 V 型佈局。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;V 型佈局的好處就是相較於直列排佈而言能使長度縮短一半，&#xA;雖然會使發動機橫向寬度增加，但總體幾何形狀更加適合被安置在空間侷促的車輛或飛機上。&#xA;因此 V 型 12 缸發動機大量流行在第二次世界大戰期間的各式大小飛機上，從小型戰鬥機到大型轟炸機都有愛用者&#xA;(至於這個數字為什麼是 12？為什麼不是 10 缸或 14 缸？這就和引擎的振動特性有關了，這個話題暫且不談)。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;V 型佈局的缺點那就是結構複雜度提高、製造和維護成本也提高。&#xA;相比於直列佈局，兩個直列湊在一起的 V 佈局自然是讓整體的設計複雜度增加了，&#xA;而且許多零件必須得老實的做兩份而不能像直列佈局那樣共用，比方說汽缸體就得分成兩塊，&#xA;曲軸曲柄、正時機構、進氣管和排氣管等等通通都得做兩份。&#xA;因此通常來說，V 型佈局在 6 汽缸以上的發動機才能體現出它的優點，&#xA;而 5 汽缸以下的引擎多半採用直列佈局，在整體綜合考量下會更加合適。&#xA;這也就是為什麼在汽車領域上幾乎總是直列佈局，而 V 型佈局較為少見的原因了，&#xA;單純就是因為一般民用車輛的馬力需求並不需要使用這麼多汽缸。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-2/fig3-2-rollsroyce-merlin.jpg&#34; alt=&#34;fig3 2 rollsroyce merlin&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 4. 二戰時期著名的勞斯萊斯 V 型 12 汽缸梅林發動機 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_3&#34; title=&#34;View footnote.&#34;&gt;3&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-2/fig3-3-spitfire.jpg&#34; alt=&#34;fig3 3 spitfire&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 5. 紅圈標註的位置就是這架飛機的發動機所在位置，它的左右兩側有成對的兩排排氣管，據此可判斷它使用的是 v 型佈局發動機 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-spitfire&#34;&gt;[&lt;a id=&#34;_footnoteref_4&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_4&#34; title=&#34;View footnote.&#34;&gt;4&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_水平對臥&#34;&gt;水平對臥&lt;/h3&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-2/fig4-1-flat4.jpg&#34; alt=&#34;fig4 1 flat4&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 6. 一個水平對臥 4 缸發動機 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-flat4&#34;&gt;[&lt;a id=&#34;_footnoteref_5&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_5&#34; title=&#34;View footnote.&#34;&gt;5&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;水平對臥佈局也是直列佈局的變體，與 V 佈局一樣將汽缸排成兩排，&#xA;只是兩排汽缸不是像 V 那樣排在靠近的左右兩邊，而是兩排汽缸分立於曲軸的對面，&#xA;成對的兩排汽缸成平躺的樣子，因而得名水平對臥佈局。&#xA;也有一種觀點說水平對臥其實就是 V 佈局的一個特例，&#xA;當 V 佈局的雙排汽缸夾角為 180 度時即為水平對臥佈局，&#xA;這種說法也是非常正確且貼切的。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;水平對臥佈局的好處在於引擎振動可以減到最小，&#xA;設計為對稱運動的左右兩排活塞可以非常好的抵消掉彼此對引擎施加的力。&#xA;相比於直列汽缸要 6 缸才能具備比較良好的低振動特性，&#xA;只有 4 個汽缸的水平對臥排佈就足以達到，甚至更好！&#xA;因此水平對臥佈局的發動機常見於當代的低功率航空引擎(如圖 Figure 7)。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;水平對臥的次要優點是引擎整體變得比較扁平，相較於其他比較直立高聳的汽缸佈局，&#xA;水平對臥式的扁平引擎可以讓車輛的重心更低，對車輛的橫向穩定性有所幫助，&#xA;因此也獲得了部份強調性能和平穩的汽車製造商採用。&#xA;總而言之，水平對臥佈局的好處在於可以使用最少汽缸數量的情況下，提供絕佳的振動穩定性，&#xA;因此在低排氣量、功率需求較低，且講究振動穩定的領域佔有優勢。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;而水平對臥的最大缺點，就是汽缸的潤滑部份設計難度較高。&#xA;因為地心引力的關係，水平橫躺的汽缸內，潤滑油會自然的流動堆積在下端，導致上端缺乏潤滑，&#xA;進而使得汽缸上端容易缺油而增加運作阻力和磨耗。&#xA;另外水平對臥佈局會讓發動機的寬度變得很寬，在飛機上這通常也不是什麼太大的問題，&#xA;但是在汽車上就會造成引擎室內空間侷促擁擠的問題，也會增加引擎的保養和零件更換的困難度。&#xA;因此在汽車領域，似乎也只有極少數車廠願意採用水平對臥的引擎佈局。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-2/fig4-2-cessna.jpg&#34; alt=&#34;fig4 2 cessna&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 7. 全球暢銷的 Cessna 小飛機，注意紅圈標示的螺旋槳軸左右兩側的散熱進風口，說明它使用的是水平對臥佈局發動機 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_cessna&#34;&gt;[&lt;a id=&#34;_footnoteref_6&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_6&#34; title=&#34;View footnote.&#34;&gt;6&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_星型&#34;&gt;星型&lt;/h3&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-2/fig5-1-singlerow-radial.jpg&#34; alt=&#34;fig5 1 singlerow radial&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 8. 這是一具裝配在飛機上的 9 缸星型發動機 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_sternmotor&#34;&gt;[&lt;a id=&#34;_footnoteref_7&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_7&#34; title=&#34;View footnote.&#34;&gt;7&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-2/fig5-2-dualrow-radial.jpg&#34; alt=&#34;fig5 2 dualrow radial&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 9. 這是一具複列 14 缸星型發動機，上方汽缸被剖開，讓我們可以看到內部的活塞結構 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_7&#34; title=&#34;View footnote.&#34;&gt;7&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;將多個汽缸圍著曲軸環繞一圈，這種排列方式就稱為星型佈局。&#xA;星型佈局曾經在航空飛機上受到大量採用，非常流行。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;相較於其它的汽缸佈局型式，星型佈局的汽缸數量變化彈性比較少，&#xA;環繞一圈的汽缸數量通常就有 5、7、9 這三個數字；&#xA;當然這是針對單圈而言，&#xA;許多星型發動機的汽缸是排兩圈的(稱為複列星型)，那麼就是上面那三個數字乘以二。&#xA;汽缸數量若太少則沒有意義做成更加複雜的星型，直接做直列式會更合適；&#xA;而若汽缸數量太多，因為汽缸本身也有一定寬度，這樣圍起來的圈就太大，會形成過大的迎風面(造成阻力)，&#xA;並且活塞連桿的長度將超過汽缸所實際需要的太多，綜合效益反而不佳；&#xA;至於為什麼只有奇數的汽缸數？這和星型佈局的點火順序有關，往後談到引擎振動和穩定性的時候再深入討論。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;星型佈局的優點是功率大，原因就是汽缸數量多，平均 14 到 18 的汽缸數量(複列)提供了強勁的動力輸出，&#xA;並且幾何尺寸總體合理；想想如果這個汽缸數量換成是 V 型佈局的話，那這發動機的長度得有多長啊？！&#xA;因此在航空器的應用領域上，星型發動機是在所有佈局裡面，&#xA;最能夠在合理的幾何空間內提供最大功率的發動機形式；&#xA;而對應現實，那些功率最強大的發動機往往也是採用星型佈局。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;星型佈局的另一個優點就是比較堅固皮實、耐操扛造。&#xA;原因是因為環形的汽缸排列方式比其它佈局更加適合採用空氣對流冷卻，&#xA;並且對應現實，絕大多數的星型佈局也是採用空氣冷卻方式。&#xA;因為少掉了冷卻液及冷卻相關管路機構，星型發動機更加能夠承受損傷，&#xA;這點在軍事用途上更加具有吸引力。&#xA;曾經也有過在戰鬥中被打爆了一個汽缸後仍然平安返回基地的案例存在。&#xA;此外少掉了冷卻系統的負擔，星型發動機也更加經得住在相較惡劣的前線機場的維護保養條件。&#xA;綜合這些因素，星型佈局大量存在於各式大小飛機上，特別是那些需要大功率的飛機、或講求更加可靠的飛機，&#xA;因此在二戰期間的廣袤太平洋戰場上，美日雙方便都不約而同的愛用星型發動機。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;而星型佈局的最大缺點就在於幾何尺寸有些劣勢，不過這得區分汽車和飛機兩個領域分別討論。&#xA;在汽車用途上，雖然星型發動機長度很短，但是它卻又寬又高。&#xA;如果說水平對臥的佈局就足以讓汽車嫌棄它因為寬度而幾乎佔完引擎室的橫向空間的話，&#xA;那麼星型佈局不只長的寬，而且還高，簡單來說就是非常佔空間到難以讓人忍受的地步(例如 Figure 13)。&#xA;所以星型發動機在汽車領域幾乎沒有任何應用，絕大部份在車輛上的應用都是來自於個別玩家的自行改造試驗。&#xA;在航空飛機上，雖然以飛機的體型來說，相較於地上的車輛更能容受星型佈局的使用，&#xA;然而也確實導致採用星型發動機的飛機縱向截面積大於採用其他形式的引擎，不利於低阻力機身設計。&#xA;比對二戰時期各式飛機的照片不難發現，&#xA;採用 V 型發動機的戰機機身多半纖細修長，而採用了星型發動機的機身多半較粗較寬且機頭又大又平。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;總結而言，星型佈局的優勢在於需求大功率的情況，並且更加皮實耐操；&#xA;而缺點是它的形狀對飛機機身的阻力設計較為不利，在汽車用途上則完全不適合。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-2/fig5-3-fw190.jpg&#34; alt=&#34;fig5 3 fw190&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 10. 機頭扁平且粗，在螺旋槳軸旁環繞了一圈的散熱進風口，說明它採用的是星型發動機 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-fw190&#34;&gt;[&lt;a id=&#34;_footnoteref_8&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_8&#34; title=&#34;View footnote.&#34;&gt;8&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-2/fig5-4-fw190-engine.jpg&#34; alt=&#34;fig5 4 fw190 engine&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 11. 與上圖同型的飛機處於打開外殼的維修狀態，機頭處呈雙環排列的銀色汽缸清晰可見 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_9&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_9&#34; title=&#34;View footnote.&#34;&gt;9&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-2/fig5-5-yb17.jpg&#34; alt=&#34;fig5 5 yb17&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 12. 體型較大的大型轟炸機對發動機的尺寸比較不敏感，但是對馬力的需求更大，因此往往是星型發動機的愛用客戶 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-b17&#34;&gt;[&lt;a id=&#34;_footnoteref_10&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_10&#34; title=&#34;View footnote.&#34;&gt;10&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-2/fig5-6-radial-on-truck.jpg&#34; alt=&#34;fig5 6 radial on truck&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 13. 使用了星型發動機的改裝汽車 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_11&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_11&#34; title=&#34;View footnote.&#34;&gt;11&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_較為罕見奇特的汽缸佈局&#34;&gt;較為罕見奇特的汽缸佈局&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_倒_v_型&#34;&gt;倒 V 型&lt;/h3&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-2/fig6-1-db605-front.jpg&#34; alt=&#34;fig6 1 db605 front&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 14. 採用了倒 V 佈局發動機的戰鬥機 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_db605&#34;&gt;[&lt;a id=&#34;_footnoteref_12&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_12&#34; title=&#34;View footnote.&#34;&gt;12&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-2/fig6-2-db605-cross.jpg&#34; alt=&#34;fig6 2 db605 cross&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 15. 作為罕見的倒 V 形式發動機，注意在兩排汽缸岔開的中間空間，安排了一具機炮，機炮的炮管位置剛好從中空的螺旋槳軸穿出 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_12&#34; title=&#34;View footnote.&#34;&gt;12&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;倒 V 佈局其實就是 V 佈局，&#xA;只不過一般 V 佈局的汽缸在曲軸上面，而倒 V 佈局的汽缸反過來放到了曲軸下面。&#xA;大方向來說，V 和倒 V 因為本質結構是一樣的，所以幾乎所有的特性也都是一樣的，&#xA;一些差異也主要體現在細節上。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;因為倒 V 的曲軸在上、汽缸在下，所以上面較窄、下面較寬，&#xA;所以放在戰鬥機上面能夠給駕駛員多一些些下方視野&#xA;(可以參考 Figure 17 和 Figure 18 比較駕駛員前方的機體寬度)；&#xA;因為汽缸在下側，排氣管排出的夾帶火光的廢氣比較遠離駕駛艙視野，&#xA;在黃昏或夜間的飛行比較不會影響飛行員視覺；&#xA;此外德國人喜歡在自己戰鬥機的螺旋槳軸上安裝機炮，而倒 V 引擎的下方正好是汽缸左右岔開的空間，&#xA;可以從容的安裝機炮組件。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;至此很容易就發現以上優點幾乎全都是在飛行器、且是戰鬥飛行器上面才存在的，&#xA;因此除了戰鬥機之外基本看不到這種汽缸佈局的應用。&#xA;不過即便是戰鬥機，也就只有在二戰時期極少數的德國戰鬥機型號採用，&#xA;這當然也是因為倒 V 佈局存在許多不利因素：&#xA;例如機油容易累積在下面活塞位置，而不是在曲軸箱裡；&#xA;引擎輸出軸在靠下端(雖然曲軸在上端，但是經過一系列減速齒輪之後，輸出的動力軸實際上在汽缸那一端)，&#xA;這讓螺旋槳軸位置靠下(可以比較 Figure 17 和 Figure 5，前者採用倒 V 型佈局，後者採用一般 V 型佈局)，&#xA;那麼為了不讓螺旋槳觸地，起落架就得造得更長。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-2/fig6-3-bf109g2.jpg&#34; alt=&#34;fig6 3 bf109g2&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 16. 一架正在維修狀態而打開了引擎蓋板的 Bf109，注意外部螺旋槳軸上的大口徑機炮口 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-bf109&#34;&gt;[&lt;a id=&#34;_footnoteref_13&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_13&#34; title=&#34;View footnote.&#34;&gt;13&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-2/fig6-4-bf109e.jpg&#34; alt=&#34;fig6 4 bf109e&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 17. 採用倒 V 發動機的戰鬥機，注意駕駛艙前方的機頭比起下面的對照組更加圓弧點，紅圈所示的廢氣排氣管也更加遠離駕駛艙視野 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_13&#34; title=&#34;View footnote.&#34;&gt;13&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-2/fig6-5-spitfire-hot-starting.jpg&#34; alt=&#34;fig6 5 spitfire hot starting&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 18. 這是一架作為對照的噴火式戰鬥機，採用常規的 V 型佈局發動機，注意到駕駛艙前方的機體較為平坦且寬，排氣口的閃燄在夜間和黃昏時更容易影響駕駛員的視覺 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_14&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_14&#34; title=&#34;View footnote.&#34;&gt;14&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_w_型&#34;&gt;W 型&lt;/h3&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-2/fig7-1-3rows-w12.jpg&#34; alt=&#34;fig7 1 3rows w12&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 19. 有三排汽缸的 W 型發動機 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-wtype&#34;&gt;[&lt;a id=&#34;_footnoteref_15&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_15&#34; title=&#34;View footnote.&#34;&gt;15&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-2/fig7-2-bugatti-w16.jpg&#34; alt=&#34;fig7 2 bugatti w16&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 20. 布加迪威龍使用的 W 型 16 缸發動機，排列了 4 排汽缸。乍看形似普通 V 佈局，實際上是因為四排汽缸中是兩兩較為靠近的緣故。 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-w16&#34;&gt;[&lt;a id=&#34;_footnoteref_16&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_16&#34; title=&#34;View footnote.&#34;&gt;16&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;為了在合理的幾何尺寸內容納更多的汽缸，&#xA;一排汽缸的直列佈局太長，於是就發明了排兩排的 V 型佈局；&#xA;但若當汽缸排兩排還是太長的時候，又發明了排三排、甚至四排的佈局形式，&#xA;而這就稱為 W 型佈局。&#xA;與 V 佈局類似，W 佈局就是把汽缸排了三或四排，形似英文字母 W，應而得名 W 佈局。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;W 佈局比 V 佈局更能夠縮短引擎長度，雖然寬度也會因此增加，&#xA;但總體的俯視形狀更加接近矩型，因此對於車輛的空間安排其實更加友好。&#xA;總結而言 W 佈局的優勢在於大功率發動機，在能夠塞進更多汽缸的同時還能維持更加合理的幾何外型；&#xA;而缺點則是增加了引擎的複雜度，無論在設計、製造、還是維護上。&#xA;因此 W 佈局的應用其實並不多，&#xA;比起 W 佈局帶來的優點和附加的缺點，航空飛機更能忍受 V 佈局、或採用星型佈局；&#xA;在汽車上，W 佈局只有在汽缸數量大於 12 缸後才能夠體現出效益，然而一般汽車根本也用不到這麼多汽缸；&#xA;因此 W 佈局只存在於極少數對功率和空間利用都有所要求的地方，例如高級跑車、或者坦克車。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;rotary&#34;&gt;Rotary&lt;/h3&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-2/fig8-1-rotary.gif&#34; alt=&#34;fig8 1 rotary&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 21. 使用了旋轉發動機的老式一戰時期戰鬥機，注意汽缸是和螺旋槳固定在一起旋轉的！ &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_17&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_17&#34; title=&#34;View footnote.&#34;&gt;17&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;最後來看看一個最奇葩的引擎類型，叫作 Rotary Engine。&#xA;(我實在查不到什麼可靠的中文翻譯，姑且就叫它「旋轉發動機」吧，注意不是「轉子發動機」喔！)&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;旋轉發動機出現在大約第一次世界大戰時期。&#xA;其實它看起來就和一般的星型發動機是一樣的，&#xA;只不過一般星型發動機是讓引擎軸轉起來，而旋轉發動機則是讓整個引擎轉起來；&#xA;如果說一般星型發動機是讓飛機本體抓住固定這顆引擎，讓軸轉起來帶動螺旋槳的話，&#xA;那麼旋轉發動機就是抓住固定動力軸，讓整個引擎轉起來，&#xA;然後固定在發動機本體上的螺旋槳也就一起轉起來了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;當初這樣設計的用意是讓汽缸主動動起來，更有利於汽缸周圍的空氣對流以利散熱降溫。&#xA;當然我們用現代的知識基礎來看會覺得這種設計的用處不大，而且缺點可不少！&#xA;讓整個引擎一起轉起來，除了考驗引擎的結構強度之外，也造成引擎轉速受到限制；&#xA;此外一個這麼大的質量在高速旋轉所造成的「陀螺效應」，&#xA;令飛機的操作行為和飛機具體行為之間存在一些令人迷惑的奇妙反應，&#xA;導致操縱更加困難且違反直覺，也曾經因此害死不少新手飛行員。&#xA;而它當初對於增加散熱的設計期望，在飛機飛在天上不斷有氣流吹過的時候，其實效益差異並不大。&#xA;因此這種只有滿滿缺點卻沒什麼有用優點的奇特的發動機類型很快就被淘汰掉了！&#xA;旋轉發動機的出現，其實也是因為當時的整個航空都還處在萌芽探索的階段，&#xA;因而誕生的其中一種摸索嘗試而已。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;footnotes&#34;&gt;&#xA;&lt;hr/&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_1&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_1&#34;&gt;1&lt;/a&gt;. &lt;a href=&#34;https://www.motofunshop.com.tw/%E6%B1%BD%E7%BC%B8%E5%A4%A7%E4%B8%8D%E5%90%8C-%E2%85%A0/&#34;&gt;汽缸大不同&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_2&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_2&#34;&gt;2&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Straight_engine&#34;&gt;Straight engine&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_3&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_3&#34;&gt;3&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/V12_engine&#34;&gt;V12 engine&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_4&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_4&#34;&gt;4&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Supermarine_Spitfire&#34;&gt;Supermarine Spitfire&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_5&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_5&#34;&gt;5&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Wright_Vertical_4&#34;&gt;Flat-four engine&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_6&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_6&#34;&gt;6&lt;/a&gt;. &lt;a href=&#34;https://cessna.txtav.com/en/piston/cessna-skyhawk&#34;&gt;Cessna&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_7&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_7&#34;&gt;7&lt;/a&gt;. &lt;a href=&#34;https://de.wikipedia.org/wiki/Sternmotor&#34;&gt;Sternmotor&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_8&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_8&#34;&gt;8&lt;/a&gt;. &lt;a href=&#34;https://de.wikipedia.org/wiki/Focke-Wulf_Fw_190&#34;&gt;Focke-Wulf Fw 190&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_9&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_9&#34;&gt;9&lt;/a&gt;. &lt;a href=&#34;https://acesflyinghigh.wordpress.com/2016/05/13/under-the-cowl-of-the-flying-heritage-collection-fw-190a-5/&#34;&gt;Under the Cowl of the Flying Heritage Collection FW-190A-5&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_10&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_10&#34;&gt;10&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Boeing_B-17_Flying_Fortress&#34;&gt;Boeing B-17 Flying Fortress&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_11&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_11&#34;&gt;11&lt;/a&gt;. &lt;a href=&#34;https://www.quora.com/What-cars-have-radial-engines&#34;&gt;What cars have radial engines?&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_12&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_12&#34;&gt;12&lt;/a&gt;. &lt;a href=&#34;https://www.quora.com/Why-was-the-V12-Daimler-engine-mounted-upside-down-in-the-ME109&#34;&gt;Why was the V12 Daimler engine mounted upside down in the ME109?&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_13&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_13&#34;&gt;13&lt;/a&gt;. &lt;a href=&#34;https://de.wikipedia.org/wiki/Messerschmitt_Bf_109&#34;&gt;Messerschmitt Bf 109&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_14&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_14&#34;&gt;14&lt;/a&gt;. &lt;a href=&#34;https://fr.m.wikipedia.org/wiki/Fichier:Spitfire_Fighter_Aircraft_%27Hot_Starting%27_Engines_MOD_45156196.jpg&#34;&gt;Spitfire Fighter Aircraft &amp;#39;Hot Starting&amp;#39; Engines&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_15&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_15&#34;&gt;15&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/W_engine&#34;&gt;W engine&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_16&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_16&#34;&gt;16&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/W16_engine&#34;&gt;W16 engine&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_17&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_17&#34;&gt;17&lt;/a&gt;. &lt;a href=&#34;https://www.youtube.com/watch?v=ZRPyz2Ka8u4&#34;&gt;Old ROTARY vs RADIAL Engines Cold Start Smoke and Sound&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>活塞引擎 1：認識活塞引擎</title>
      <link>http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-1---%E8%AA%8D%E8%AD%98%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E/</link>
      <pubDate>Fri, 05 Jul 2024 23:45:35 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/aerospace/%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E-1---%E8%AA%8D%E8%AD%98%E6%B4%BB%E5%A1%9E%E5%BC%95%E6%93%8E/</guid>
      <description>&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這個系列我要來說說航空的活塞發動機，也就是一般所理解的汽油引擎這個主題。&#xA;我主要是以航空的視角來探討活塞發動機，&#xA;但其實活塞引擎用哪裡都是一樣的原理，在大方向上道法相通，&#xA;不過鑑於一班人可能對汽車更為熟悉，所以我不時也會穿插與汽車有關的關聯和差異補充。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;admonitionblock tip&#34;&gt;&#xA;&lt;table&gt;&#xA;&lt;tbody&gt;&lt;tr&gt;&#xA;&lt;td class=&#34;icon&#34;&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Tip&lt;/div&gt;&#xA;&lt;/td&gt;&#xA;&lt;td class=&#34;content&#34;&gt;&#xA;這裡先提點一個小知識：&#xA;在航空相關的文章裡面可能不時會見到「發動機」這個詞，&#xA;但其實它就是和汽車上的「引擎」是一樣的意思，只是航空領域可能有時候更喜歡用發動機來稱呼。&#xA;在我的文章裡面隨時會在這兩個詞之間反覆橫跳，沒有特別的用意，&#xA;可能就只是我已經習慣在某個上下文裡面這麼稱呼它而已。&#xA;所以往後不管看到發動機、還是引擎，讀者都能夠了解這是同一種東西就可以了。&#xA;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;/tbody&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_四行程引擎&#34;&gt;四行程引擎&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-1/fig1-1-4stroke.gif&#34; alt=&#34;fig1 1 4stroke&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 1. 四行程引擎運作循環 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_1&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;上面這張圖就是汽油活塞引擎的最核心結構了，&#xA;一個不斷上下運動的活塞就像在踩腳踏車一樣踩動下面的曲軸旋轉，&#xA;這個被活塞踩出來的旋轉軸就可以接出去，驅動任何東西，如輪胎、螺旋槳、發電機……等等。&#xA;那麼活塞哪來的動力去踩下面的汽缸呢？活塞的動力就來自於空氣被加熱後膨脹的壓力。&#xA;整個活塞、汽缸、和汽缸上的汽門、火星塞等小零件配合運作的過程，大約區分為以下幾個步驟：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;olist arabic&#34;&gt;&#xA;&lt;ol class=&#34;arabic&#34;&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;活塞往下的時候會讓汽缸內的容量增加，產生一個汽缸內的低壓(或稱為負壓)。&#xA;這時右上角叫作「進氣門」的汽門剛好被一個叫作「凸輪軸」的東西頂開，&#xA;因此汽缸就會把外面進氣管內的氣體 — 也就是已經混合好了汽油和空氣的混合氣(油氣) — 給吸入汽缸內。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;活塞到達最低點，開始要往上走。&#xA;這時進氣門已經關閉，汽缸變成密封狀態，因此活塞往上走個過程就會將混合氣給壓縮了。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;活塞到達最高點，開始要往下走。&#xA;在活塞到達最高點的時候，也正好是混合氣被壓縮到最小的時候，&#xA;汽缸頭頂一個叫作「火星塞」的點火裝置會在電流的控制下發出火花，引燃混合氣。&#xA;混合氣在極短的時間內快速燃燒(俗稱爆炸)，燃燒的熱量加熱空氣，空氣因此升溫、升壓，極欲膨脹。&#xA;因此活塞在往下走的這個過程其實是被高壓膨脹的空氣給推著往下走的，&#xA;而這個活塞被推著走的過程也就是引擎動力的源頭。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;活塞走到最低點，開始要往上走。&#xA;這時換左上角叫「排氣門」的汽門剛好被另一個凸輪軸頂開，&#xA;所以在活塞上行的時候便將燃燒完的廢氣給推出去排掉。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;然後活塞走到最高點，排氣門關閉、進氣門打開、活塞往下走，又回到了第一步驟，周而復始，不斷循環。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;因為整個活塞汽缸的動作過程被分割為四個階段，因此這種型式的引擎又被叫作「四行程引擎」。&#xA;當然活塞引擎還有一些其它的型式，比如二行程的、比如沒有火星塞的等等，&#xA;但是那些型式的引擎因為極少用在航空領域上，所以這裡就不會特別提及了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_其它重要的附屬零配件&#34;&gt;其它重要的附屬零配件&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;上面那些只是四行程汽油引擎最核心的原理而已，雖然在學理討論上通常也只最關心這個核心部份的分析內容，&#xA;但是對於科普解說的需求來說，這樣的解釋卻還不足以說明一顆引擎如何能夠正常運作，&#xA;並且一般常見的科普解說也極少見更多的解釋說明。&#xA;因此我這裡將會繼續解釋其它那些從旁輔助，使一顆引擎能夠維持正常運作並輸出動力的附屬裝置的原理解說。&#xA;這些我挑出來解釋的東西可能和引擎的運作原理並沒有太多直接的關係，&#xA;更多的是對於看見了這些零件卻不明白它設計作用的解釋說明；&#xA;其實大多數也就是我自己小的時候因為書籍解釋的不夠全面而看不明白的東西，&#xA;因為曾經經驗過，所以覺得有深入解釋的意義。&#xA;若您還有發現其它的疑問是我沒想到的，也歡迎來信告知。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;當然汽油引擎的整個系統還有更多能夠探討的東西，但礙於篇幅的限制，&#xA;在這篇裡沒有辦法簡單講明白的東西，可能將會在本系列往後的其它文章分別探討。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_飛輪&#34;&gt;飛輪&lt;/h3&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-1/fig2-1-cshaft.gif&#34; alt=&#34;fig2 1 cshaft&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 2. 活塞、連桿、曲軸、和飛輪 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_2&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_2&#34; title=&#34;View footnote.&#34;&gt;2&lt;/a&gt;]&lt;/sup&gt; &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_figure-engines-may-different&#34;&gt;[&lt;a id=&#34;_footnoteref_3&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_3&#34; title=&#34;View footnote.&#34;&gt;3&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;前面我們已經知道，活塞和汽缸的動作總共分成四個行程。&#xA;活塞一上一下剛好讓曲軸轉一圈，所以一個行程佔據曲軸轉半圈的路程，&#xA;因此曲軸轉兩圈才能完整做完一個四行程循環。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在這四個行程之中，只有第三個行程是產生動力的行程，只有這個行程可以產生並對外輸出動力；&#xA;而另外三個行程卻都要消耗動力，反而需要從其他地方施力給活塞才能完成，&#xA;尤其第二個壓縮行程需要施加的能量更加可觀。&#xA;那麼這些需要反向從外面施加的力又是從哪裡來的呢？&#xA;這是很多引擎原理解說會乎略掉的最大的謎團，也是本節要介紹的一項在汽油引擎上最簡單卻非常關鍵的零件：&#xA;飛輪！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;飛輪就是一個夠重的圓盤，與曲軸剛性連接一同旋轉，就是上圖(Figure 2)接在曲軸上的那個深灰色大圓盤。&#xA;因為飛輪具有足夠的質量，與沒有飛輪的情況相比，&#xA;它會讓曲軸的啟動更加吃力，當然也會讓已經轉動起來的曲軸停下來更加費時；&#xA;當你要它轉快一點的時候，你的手(活塞)要更大力的轉動搖把(曲柄)並且持續一會兒，它的轉速才能慢慢跟上來，&#xA;當然當你減少發力的時候，它也會維持轉速一陣子才慢慢的慢下來。&#xA;這種特性其實就是所謂的「慣性」，放在旋轉的東西上就叫作「轉動慣量」，&#xA;而之所以描述這麼多文字細節，其實也只是希望已經遺忘國中物理的人可以回想起來！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在飛輪的轉動慣性作用下，汽缸活塞間歇性的發力又吃力、吃力再發力的過程，&#xA;就不會讓引擎的輸出軸充滿了汽缸活塞最直接的頓挫、振動、與抖動，&#xA;因為這些短暫的力量變化都會被飛輪的大質量給平滑掉；&#xA;不過當然，平滑緩和可以，完全消除是不可能的！&#xA;更重要的是，飛輪的轉動慣量提供轉動能量，給予四個活塞行程中的那三個不只不出力，而且還要吃力的行程。&#xA;這樣雖然四行程裡面只有一個行程可以提供動力，但是藉由飛輪的作用能將這個行程的轉動能量儲存起來，&#xA;然後供給其它三個行程使用，使引擎可以維持順暢的運轉。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這麼說來，那麼如果我給引擎設置一個很大很重的飛輪不是更好嗎？&#xA;理論上是這樣沒錯，飛輪的轉動慣量愈大，則它所帶來的慣性平滑效果就會愈好；&#xA;只不過別忘了，動力平滑化的效果愈明顯，同時也表示增速和減速時的遲滯效果也同樣愈明顯，&#xA;而過大的動力遲滯對於需要經常高低變化動力輸出的交通工具來說，可能不一定是個好特性；&#xA;另外，過大過重的飛輪也會直接導致發動機的重量增加。&#xA;因此飛輪也不是愈大愈重就愈好，還是得依據實際的需求折衷計算最佳的重量和尺寸！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;飛輪的最佳大小和質量也和引擎的汽缸數量有關，如果引擎設計了多個汽缸，則飛輪的重要性就會下降。&#xA;因為在汽缸數量足夠多的情況下，任何一個時間總會有至少一個活塞正在出力，&#xA;那麼那個出力的活塞就可以透過同一根曲軸推動其它的活塞運動，每個活塞輪流出力就可以維繫引擎的持續運作。&#xA;但是即便如此，在多缸引擎上往往仍舊存在飛輪這個零件，因為正如前面所描述，&#xA;飛輪的作用不是只有讓引擎能夠走過四個循環行程而已，&#xA;還同時具有緩和平滑化引擎間斷性暴衝提供動力的這個天性的作用。&#xA;所以飛輪總是活塞引擎省不下來的一項重要零件，只不過在汽缸愈多的引擎上，飛輪重量和尺寸的佔比會比較低；&#xA;而在汽缸愈少的引擎，特別是只有單缸的引擎，飛輪的重量往往就會佔到較高的比例。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_凸輪軸和汽門&#34;&gt;凸輪軸和汽門&lt;/h3&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-1/fig3-1-ic_engine.jpg&#34; alt=&#34;fig3 1 ic engine&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 3. 汽門、凸輪、和正時鏈條 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_cylinders&#34;&gt;[&lt;a id=&#34;_footnoteref_4&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_4&#34; title=&#34;View footnote.&#34;&gt;4&lt;/a&gt;]&lt;/sup&gt; &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_3&#34; title=&#34;View footnote.&#34;&gt;3&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在圍繞著汽缸和活塞的運作中，有幾個零件是需要被非常精準控制的，就是兩個汽門和火星塞。&#xA;若這些零件作動的時間誤差太大，則可能會發生許多不良影響。&#xA;汽門過早打開或過晚關閉，可能會讓氣體互相干擾亂竄，&#xA;讓還未燃燒的油氣洩漏到排氣系統去，或者讓已經燒完的高溫廢氣回衝到進氣歧管；&#xA;或者造成汽缸在應該要密封的壓縮或膨脹行程沒有密封而洩氣，從而使動力降低、效率降低等不良引想。&#xA;最嚴重的情況莫過於火星塞過早點火了，&#xA;這時活塞其實還沒走到汽缸頂，所以超前點火產生的推力反而會推動活塞往反方向運轉，&#xA;對引擎產生強大的頓挫和振動，這也就是一般所謂的「爆震」，極易使引擎造成內傷損壞。&#xA;因此這些零件的動作時機是非常重要而且必須非常精準的，那麼該如何讓它們在最正確的時間動作呢？&#xA;這就是引擎的「正時」相關機構在做的事情了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;正時系統又分成「進氣正時」、「排氣正時」、和「點火正時」，&#xA;一般設計由幾根數量不等的凸輪軸在特定的角度下頂開特定的機件來完成。&#xA;這個凸輪軸由引擎的曲軸帶動旋轉，由於需要精準的控制曲軸轉到某個角度的時候正好讓凸輪軸轉到某個角度，&#xA;所以兩軸的動力齒輪大小都是精心設計的。&#xA;由於不僅僅是需要獲取曲軸的動力來帶動凸輪軸旋轉，還得要非常精準的控制雙方每時每刻的角度位置都相匹配，&#xA;更不可能容許連接的皮帶打滑錯位這種事情，&#xA;因此許多引擎喜歡用本身就帶有齒輪特性的鏈條來進行動力連接，就算要使用皮帶，也會使用帶齒的皮帶。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_油底殼&#34;&gt;油底殼&lt;/h3&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-1/fig4-1-1cylinder-sectional.jpg&#34; alt=&#34;fig4 1 1cylinder sectional&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 4. 一個單缸引擎的結構示意 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_4&#34; title=&#34;View footnote.&#34;&gt;4&lt;/a&gt;]&lt;/sup&gt; &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_3&#34; title=&#34;View footnote.&#34;&gt;3&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;上圖這是一個比較完整的單缸引擎結構圖，注意到引擎的最下面是一個盆的樣子，&#xA;裡面還堆積了一些黃色的油，那麼這些油是幹什麼用的呢？&#xA;其實引擎底下的這個盆就是拿來裝這些油用的，所以才叫作油底殼。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;其實看到在引擎底下積的這些油就是「機油」，也就是引擎潤滑油。&#xA;既然引擎內部充滿了各種運動零件，尤其還有活塞汽缸這種需要緊靠摩擦的機械結構，&#xA;因此潤滑就是相當重要且無法乎略的事情。&#xA;由於引擎機件又快速又暴力又高溫的運動，使得像腳踏車那樣塗一次油可以潤滑好一陣子的方式失效了，&#xA;而是必須隨時都要對著運動零件補充供應潤滑油。&#xA;因此在引擎裡面的各處零件上其實往往都能找到許多管道和噴油口，甚至在曲軸內部、和活塞連桿內部都有管道；&#xA;當然具體的部份會依據引擎的設計而有所不同。&#xA;在引擎運作的時候，這些噴口就會持續對著對應的位置不斷噴出機油，潤滑對應的關節和摩擦面。&#xA;然後這些油在潤滑零件的同時，也會被零件的快速運動和摩擦給推擠出來，落回到最底部的油底殼；&#xA;然後又被機油泵抽出來送進機油管道，再重複一次同樣的事情。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;只不過這些機油管道和噴嘴太過繁複細碎，都畫出來的話可能會讓引擎原理圖看起來過於複雜，&#xA;再加上這東西其實和引擎的原理關聯性已經很遠了，不弄清楚其實也不影響對引擎原理的理解。&#xA;於是絕大部份的引擎解說都會省略掉這個部份，只剩下引擎下面堆積著一盆厚厚的油，&#xA;讓初接觸引擎的人可能會看不明白那到底是幹什麼用的？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_說點歷史&#34;&gt;說點歷史&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-1/fig5-1-otto-engine.jpg&#34; alt=&#34;fig5 1 otto engine&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 5. Otto Engine (1880s) &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_otto-engine&#34;&gt;[&lt;a id=&#34;_footnoteref_5&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_5&#34; title=&#34;View footnote.&#34;&gt;5&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;本篇所解釋的這種四行程引擎最初是由德國工程師 Nicolaus Otto&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_6&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_6&#34; title=&#34;View footnote.&#34;&gt;6&lt;/a&gt;]&lt;/sup&gt;&#xA;在 1876 年所發明的，&#xA;因此引擎的正式學術名稱其實叫作 Otto 引擎。&#xA;只是不知為什麼後來更為人所流傳的稱號反變成了「汽油引擎」，或者「四行程汽油引擎」。&#xA;這些在我們現代人的認知裡彷彿稀鬆平常的知識，&#xA;在那個年代卻是無數人想破頭、工程師們搞炸了無數引擎之後才誕生出來的創新發明。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;Otto 的發明中最大的巧門就在壓縮這個步驟。&#xA;在他之前的其他空氣引擎沒有這個壓縮過程，燃氣送進去就直接燃燒膨脹，&#xA;然後動輒數公尺大小的活塞引擎卻只能產生 2 馬力功率；&#xA;Otto 則成功實現將空氣先壓縮過後再燃燒的引擎，大大提高了引擎的動力輸出&#xA;(至於具體是多少功率、多少效率等我就沒查到了)。&#xA;Otto 先生的引擎雖然成功了，不過各方面仍然很原始，且它主要的銷售目的可能是對標像蒸汽機那樣的大型引擎，&#xA;而我們所熟知的近代汽油引擎的樣子其實是另一位德國工程師 Gottlieb Daimler&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_7&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_7&#34; title=&#34;View footnote.&#34;&gt;7&lt;/a&gt;]&lt;/sup&gt;&#xA;在 1883 年的發明。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-1/fig5-2-daimler-reitwagen.jpg&#34; alt=&#34;fig5 2 daimler reitwagen&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 6. Daimler 的汽油摩托車(1885) &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_5&#34; title=&#34;View footnote.&#34;&gt;5&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;Daimler 改進了 Otto 引擎，實現了小型化高轉速的四行程引擎，並且發現這種引擎使用汽油作燃料更加合適，&#xA;可能也是因為這個緣故使得後來民間更普遍以汽油引擎稱呼吧！？&#xA;總之在 Daimler 的改良之後，汽油引擎才算是真正開啟如汽車、舟艇等小型動力工具的應用，&#xA;因此也是有些人主張近代汽油引擎應該是由 Daimler 發明；&#xA;不過雖然 Daimler 先生在汽油引擎的實用化發展上做出關鍵貢獻，也是汽油引擎的初代元老級重要人物，&#xA;但是畢竟學理最關鍵重要的四行程結構是 Otto 先生所原創發明，因此在學術上仍然稱此種引擎為 Otto 引擎。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;為什麼突然談起這些歷史呢？甚至於既然四行程引擎的發明人是 Otto 先生，又為什麼要提 Daimler 呢？&#xA;因為他們對人類的航空而言實在是太關鍵重要了！&#xA;甚至單從動力的角度來看，人類的飛行是因為汽油引擎的發明才能夠實現；&#xA;若沒有汽油引擎的發明實用和普及，則萊特兄弟&#xA;&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wright-brothers&#34;&gt;[&lt;a id=&#34;_footnoteref_8&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_8&#34; title=&#34;View footnote.&#34;&gt;8&lt;/a&gt;]&lt;/sup&gt;&#xA;根本沒有機會成為動力飛機的發明人！&#xA;當然這裡不是要否定萊特兄弟，事實上除了在動力方面之外，萊特二人還有許多非常重要的關鍵性突破；&#xA;只是既然這個系列主題在談的是動力，因此這裡便以動力的視角作為觀點出發，&#xA;而在此觀點之下，汽油引擎的存在才是導致萊特兄弟能夠成功飛行的最關鍵因素。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;早在萊特兄弟之前，人類早已進行了許多無動力滑翔飛行，&#xA;其中最著名的人物大概就是德國航空先驅 Otto Lilienthal&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_9&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_9&#34; title=&#34;View footnote.&#34;&gt;9&lt;/a&gt;]&lt;/sup&gt;&#xA;。&#xA;不過那些都是無動力的滑翔，至於帶動力的飛行也不是沒有人嘗試過，只是無一例外全部失敗&#xA;(否則我們今天記得的就不是萊特兄弟了)。&#xA;在我小時候閱讀的童書裡面其實就看到許多帶著動力引擎的飛機圖鑑，那時的我就產生了不解的疑惑：&#xA;不是說飛機的發明人是萊特兄弟嗎？可怎麼這些飛機的年代都比萊特兄弟還早呢？&#xA;後來才知道那些圖鑑原來是其他前人的嘗試，且無一成功離地飛行；&#xA;至於為什麼那些飛機不能夠飛起來呢？最關鍵也最大的問題來自於動力 — 他們用的是蒸汽機啊！&#xA;就是你在古董火車上看到的那種蒸汽機啊！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;雖然那些人們已經努力把蒸汽機做小做輕了，但是耐何它本質還是個蒸汽機，&#xA;就算節省到極致的基礎重量也足以狠狠壓著他的飛機待在地上升不了天。&#xA;而萊特兄弟呢？有賴於他們所處的年代正好趕上汽油引擎的發明普及&#xA;(萊特兄弟首飛在 1903 年，而 Daimler 的汽油引擎發表在 1883 年，只相差 20 年)，&#xA;於是萊特二人用鋁材打造了一個&lt;a href=&#34;#wright-vertival4&#34;&gt;直列 4 汽缸的汽油引擎&lt;/a&gt;，總功率 12 馬力。&#xA;而就是這不起眼的、&lt;strong&gt;足夠輕巧又同時能提供充足動力&lt;/strong&gt;的汽油引擎，才讓萊特兄弟能夠飛上藍天；&#xA;&lt;strong&gt;也正是因為四行程汽油引擎的發明實用作為鑰匙，才讓人類能夠解鎖航空的大門，邁入動力飛行的新時代篇章！&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;wright-vertical4&#34; class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/piston-engine-1/fig5-3-wright-vertical4.jpg&#34; alt=&#34;fig5 3 wright vertical4&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 7. 世界上第一架動力飛機所使用的引擎 — 萊特兄弟自製的汽油引擎 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_10&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_10&#34; title=&#34;View footnote.&#34;&gt;10&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;footnotes&#34;&gt;&#xA;&lt;hr/&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_1&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_1&#34;&gt;1&lt;/a&gt;. &lt;a href=&#34;https://zh.wikipedia.org/zh-tw/%E6%B1%BD%E6%B2%B9%E5%BC%95%E6%93%8E&#34;&gt;汽油引擎&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_2&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_2&#34;&gt;2&lt;/a&gt;. &lt;a href=&#34;https://zh.wikipedia.org/wiki/%E6%9B%B2%E8%BD%B4&#34;&gt;曲軸&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_3&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_3&#34;&gt;3&lt;/a&gt;. 由於這些引擎的原理圖都是網路上找的，因此不同的圖片描述的並不是同一個引擎！&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_4&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_4&#34;&gt;4&lt;/a&gt;. &lt;a href=&#34;https://www.motofunshop.com.tw/%E6%B1%BD%E7%BC%B8%E5%A4%A7%E4%B8%8D%E5%90%8C-%E2%85%A0/&#34;&gt;汽缸大不同&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_5&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_5&#34;&gt;5&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Otto_engine&#34;&gt;Otto engine&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_6&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_6&#34;&gt;6&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Nicolaus_Otto&#34;&gt;Nicolaus Otto&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_7&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_7&#34;&gt;7&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Gottlieb_Daimler&#34;&gt;Gottlieb Daimler&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_8&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_8&#34;&gt;8&lt;/a&gt;. &lt;a href=&#34;https://zh.wikipedia.org/zh-tw/%E8%8E%B1%E7%89%B9%E5%85%84%E5%BC%9F&#34;&gt;萊特兄弟&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_9&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_9&#34;&gt;9&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Otto_Lilienthal&#34;&gt;Otto Lilienthal&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_10&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_10&#34;&gt;10&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Wright_Vertical_4&#34;&gt;Wright Vertical 4&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>翼型系列 5：高升力裝置</title>
      <link>http://www.huoschen.idv.tw/blog/aerospace/%E7%BF%BC%E5%9E%8B%E7%B3%BB%E5%88%97-5---%E9%AB%98%E5%8D%87%E5%8A%9B%E8%A3%9D%E7%BD%AE/</link>
      <pubDate>Sat, 22 Jun 2024 21:51:27 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/aerospace/%E7%BF%BC%E5%9E%8B%E7%B3%BB%E5%88%97-5---%E9%AB%98%E5%8D%87%E5%8A%9B%E8%A3%9D%E7%BD%AE/</guid>
      <description>&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;前一篇&#xA;&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_airfoil4&#34;&gt;[&lt;a id=&#34;_footnoteref_1&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&#xA;介紹了幾種不同種類的翼型，其各有特色和優劣勢，各適合不同條件下的用途。&#xA;但是如果我們飛機的使用條件橫跨了兩種不同翼型的適用範圍，&#xA;選了這個翼型的話那個條件就不好，選了那個翼型則這個條件就不好，那又該怎麼辦呢？&#xA;其中最為廣泛常見的，當屬是要讓高速機翼同時也能在低速條件下飛行，因為飛機再怎麼樣也得起飛降落嘛！&#xA;此為了滿足這樣的使用需求而發明出來的補丁裝置，即是本篇的主題：高升力裝置。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_能變形的機翼&#34;&gt;能變形的機翼&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;我們已經知道，&#xA;低速飛機適合使用高翼弧的、甚至帶內凹的那種翼型，而高速飛行適合比較平直、沒什麼弧度的翼型，&#xA;但如果我的飛機又想要能飛快、也能飛慢的話，在選擇翼型上就出現兩難困境了。&#xA;當然慢速飛機可以說：我就選慢速翼型，我就慢慢飛就好了，飛不快就算了！&#xA;可是高速飛機就不行了啊，在怎麼樣也總得需要慢慢飛的時候吧？&#xA;至少需要可以起飛降落，可是那些適合較高速的翼型通通不能飛得慢啊！&#xA;為了解決這個問題，其實主要是為了解決高速機翼在低速時升力不足的問題，我們需要一個能夠變形的機翼，&#xA;在高速時變成高速翼的形狀，到了低速時就變成低速翼的形狀；&#xA;而這其實就是高升力裝置的基礎想法。&#xA;只不過目前的技術水平還沒辦法造出可以像麻糬一樣隨意變形、而且還能維持足夠結構強度的機翼結構，&#xA;於是退而求其次，我只要讓它儘量變得稍微像一點就好了，反正高速飛機也不是經常維持在低速狀態飛行，&#xA;在需要它的少數時間裡可以將就用得上就好了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;於是我們就像下圖(Figure 1 圖上)所示範的那樣，在正常的機翼結構上加上兩個轉軸，&#xA;用這兩個轉軸就能把機翼稍微凹一下，是不是就變成了一個沒那麼漂亮的、帶高翼弧的低速翼了呢？&#xA;不過也並不是所有的飛機都會做出這兩個轉軸出來，有些飛機為了節省製造成本、或者節約結構重量，&#xA;就省略了靠前的那根轉軸，而只實現了靠後的那根轉軸(Figure 1 圖下)。&#xA;這樣我們的機翼就被分成了前中後 3 片(或者前後 2 片)，中間的那片就是機翼本體，&#xA;而前後兩片都被統稱為「襟翼」(flaps)；&#xA;如要再區分的話，前面那片就叫「前緣襟翼」(leading edge flap)、&#xA;後面那片叫作「後緣襟翼」(trailing edge flap)。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil5/fig1-1-intro.png&#34; alt=&#34;fig1 1 intro&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 1. 折彎機翼使增加彎曲弧度&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;有了襟翼的存在，在正常飛行的時候將襟翼放平，就成了設計的正常形狀，&#xA;而在起飛降落或其他需要低速飛行的時候，就把前後襟翼彎下來，可以將就著湊合提供足夠的升力。&#xA;大部份的飛機甚至不是只有襟翼全收合、和全放下這兩種狀態，而是有數檔中間位置可以使用，&#xA;駕駛員就能夠依據當下的飛行狀態選擇合適的機翼彎曲度(襟翼放下程度)。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;當然襟翼並不只這麼單純，實際常用的襟翼還有數種不同型態，各有優劣和適合使用的情境，&#xA;在下面我將一一介紹並解釋這些不同的襟翼設計。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_後緣襟翼&#34;&gt;後緣襟翼&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_簡單襟翼plain_flap&#34;&gt;簡單襟翼(Plain Flap)&lt;/h3&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil5/fig2-1-plain-trailing.png&#34; alt=&#34;fig2 1 plain trailing&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 2. 簡單襟翼(Plain Flap)&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這種襟翼的結構和作動方式就如同前面所示範的一樣，就是單純的使用一個軸折彎機翼後部。&#xA;它的特點就如同它的中文名稱：簡單，用最簡單的方式將平直的機翼凹成一個具有大弧度的機翼。&#xA;當然這麼簡單的襟翼自然也就存在不少缺點，其中最大的問題莫過於就是氣流在彎下去了的襟翼背面容易貼不住，&#xA;也就是氣流容易在那裡發生分離，具體請參照之前那篇探討機翼氣流現象的&#xA;&lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E7%BF%BC%E5%9E%8B%E7%B3%BB%E5%88%97-2---%E6%A9%9F%E7%BF%BC%E6%B5%81%E5%A0%B4%E7%8F%BE%E8%B1%A1/#separation-condition&#34;&gt;文章&lt;/a&gt;&#xA;&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_airfoil2&#34;&gt;[&lt;a id=&#34;_footnoteref_2&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_2&#34; title=&#34;View footnote.&#34;&gt;2&lt;/a&gt;]&lt;/sup&gt;&#xA;。&#xA;不過雖然簡單機翼存在著這樣那樣的缺點，但就憑著它這個簡單，它被大量使用在許多小型飛機上。&#xA;且它簡單帶來的好處還不只製造便利而已，它的結構也是簡單輕巧又堅固，&#xA;所以許多看起來高端上檔次的名貴飛機也採用了這種襟翼，比方大部份的現代戰鬥機。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil5/fig2-2-rv6.jpg&#34; alt=&#34;fig2 2 rv6&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 3. Plain flaps on Van’s RV-6 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_design-flaps&#34;&gt;[&lt;a id=&#34;_footnoteref_3&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_3&#34; title=&#34;View footnote.&#34;&gt;3&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil5/fig2-3-f22.jpg&#34; alt=&#34;fig2 3 f22&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 4. Plain flaps on F-22 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_4&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_4&#34; title=&#34;View footnote.&#34;&gt;4&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_開裂式襟翼split_flap&#34;&gt;開裂式襟翼(Split Flap)&lt;/h3&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil5/fig3-1-split.png&#34; alt=&#34;fig3 1 split&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 5. 開裂式襟翼(Split Flap)&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;單純將機翼尾部折彎的方法雖然增加了機翼的彎曲度，提高了低速下的升力，&#xA;但是更高的彎曲度也使得上表面的氣流更容易發生分離。&#xA;那如果只增加下表面的彎曲度，而保留上表面原來的彎曲度呢？這便是開裂式襟翼。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;開裂式襟翼的流場在&#xA;&lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E7%BF%BC%E5%9E%8B%E7%B3%BB%E5%88%97-2---%E6%A9%9F%E7%BF%BC%E6%B5%81%E5%A0%B4%E7%8F%BE%E8%B1%A1/#upper-lower-separation&#34;&gt;之前的文章&lt;/a&gt;&#xA;&lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_2&#34; title=&#34;View footnote.&#34;&gt;2&lt;/a&gt;]&lt;/sup&gt;其實已經解釋過了。&#xA;開裂式襟翼只彎曲了機翼下表面但不改變上表面，在增加升力的同時，&#xA;還避免了因為上表面氣流分離而導致的失速問題，而且結構一樣簡單輕巧。&#xA;但缺點也如同那篇的內容所說的一樣，&#xA;在機翼後面不可避免的會產生較大的迴流區，導致大阻力；&#xA;它雖然維持了升力，卻產生了強大後拉阻力的副作用。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;至於這個副作用是好是壞就得看情況了，在低速增加升力的同時，&#xA;如果你正好不希望飛機速度太快，如果你正好想要飛機也減點速度下來的話，&#xA;那麼這個副作用就不是個壞事，而這正好符合大部份降落時的情況。&#xA;因此這種結構簡便、性價比高、可以在增加升力的同時順便充當減速板使用的開裂式襟翼，&#xA;便也經常出現在許多小飛機上面。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil5/fig3-2-dc3.jpg&#34; alt=&#34;fig3 2 dc3&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 6. Split flaps on DC-3 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_3&#34; title=&#34;View footnote.&#34;&gt;3&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil5/fig3-3-a6m.jpg&#34; alt=&#34;fig3 3 a6m&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 7. Split flaps on Zero &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_5&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_5&#34; title=&#34;View footnote.&#34;&gt;5&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_延伸式襟翼fowler_flap&#34;&gt;延伸式襟翼(Fowler Flap)&lt;/h3&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil5/fig4-1-fowler.png&#34; alt=&#34;fig4 1 fowler&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 8. 延伸式襟翼(Fowler Flap)&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;延伸式襟翼不像前面所描述的那些襟翼，它們都是將機翼折彎以增加彎曲度；&#xA;延伸式襟翼則是將機翼尾端伸出去、延長，&#xA;除了增加機翼彎曲度之外，更大的目的其實是增加機翼的面積。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;確實，增加升力並不是只能用更大的彎曲度來達成，&#xA;增加機翼的面積同樣也能增加產生的升力。&#xA;缺點就是機翼延伸的制動機構結構較複雜，重量也較大。&#xA;只不過這種單純只延伸機翼的實際應用極其少見，而大部份會整併其他襟翼的功能，&#xA;這種複合式的襟翼類型我們放到後面再討論。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_開縫式襟翼slotted_flap&#34;&gt;開縫式襟翼(Slotted Flap)&lt;/h3&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil5/fig5-1-slotted.png&#34; alt=&#34;fig5 1 slotted&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 9. 開縫式襟翼(Slotted Flap)&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E7%BF%BC%E5%9E%8B%E7%B3%BB%E5%88%97-2---%E6%A9%9F%E7%BF%BC%E6%B5%81%E5%A0%B4%E7%8F%BE%E8%B1%A1/#upper-lower-separation&#34;&gt;從前我提過&lt;/a&gt;&#xA;&lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_2&#34; title=&#34;View footnote.&#34;&gt;2&lt;/a&gt;]&lt;/sup&gt;&#xA;，機翼的上表面才會出現氣流分離的問題，&#xA;而下表面就沒有這種顧慮，因為除非氣流能夠把機翼給吹斷，&#xA;否則下表面無論怎麼彎曲，氣流也只能被壓著轉向。&#xA;那麼這就延伸出了一個想法：&#xA;我能不能用別人的下翼面來幫我壓一壓我的上翼面氣流呢？&#xA;然後你再仔細看看開縫式襟翼的構造，你看這是不是就是這麼樣一個原理呢？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;開縫式襟翼在往下折轉的時候，會在襟翼和主翼中間出現縫隙，&#xA;使機翼下表面的高壓氣流可以從這個縫隙竄出來。&#xA;並且再仔細觀察還會發現，襟翼和主翼之間的縫隙形狀還是精心設計過的，&#xA;這條縫隙的原理其實就是用前面主翼的下翼面來強壓折彎氣流，&#xA;讓氣流去更好的貼附在後面襟翼的上表面，從而避免了襟翼上的氣流分離。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;不過這種看似完美的作法也不是沒有副作用，多開的這條縫使機翼下表面的氣流可以分流往上竄，&#xA;其實就是將原本高壓的下表面空氣洩壓到比較低壓的上表面來，會造成機翼上下面的壓力差縮小，&#xA;白話來說就是會損失升力；&#xA;不過兩害相權取其輕，在低速高攻角的飛行狀態下，與其讓氣流分離使機翼失速，&#xA;損失的這一點升力自然就不是那麼重要了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_延伸開縫式襟翼slotted_fowler_flap&#34;&gt;延伸開縫式襟翼(Slotted Fowler Flap)&lt;/h3&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil5/fig6-1-slotted-fowler.png&#34; alt=&#34;fig6 1 slotted fowler&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 10. 延伸開縫式襟翼(Slotted Fowler Flap)&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;前面介分別紹過了延伸式襟翼和開縫式襟翼，它們雖然在原理上是不同的概念，&#xA;但是在實際上卻比較少見它們單獨出現在飛機上，&#xA;實務上這一對哥倆好幾乎總是會參和著一起出現在飛機上。&#xA;而這種又開縫又延伸的複合襟翼我們就叫作延伸開縫式襟翼。&#xA;甚至於這種襟翼還可以做成多層的，襟翼後面還有襟翼，&#xA;它們兩層的叫 double slotted fowler flap、三層的叫 triple slotted fowler flap，&#xA;至於再多層的就真的很罕見了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這種類型的襟翼被大量應用在現代的民航客機上，是一般人最容易接觸到的襟翼類型，&#xA;也許下次坐飛機的時候選個靠窗的位置，就能在起降時看見它的詳細動作了。&#xA;這種襟翼簡直是集了眾多襟翼的優點，&#xA;又增加了機翼的彎曲度、以開縫吹彿的方式解決氣流分離的問題、還增加了機翼面積，&#xA;那麼這麼完美的襟翼為什麼沒有淘汰掉其它所有的襟翼、進而獨霸所有的飛機呢？&#xA;這就要說到它的最大缺點了：結構複雜、制動機構體積大也重量大。&#xA;你看下圖實機照片，不知您是否曾好奇過在飛機的機翼下面，圖片中被圈起來的這些奇怪形狀是什麼？&#xA;它們就是襟翼的支撐和制動機構的整流外殼！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil5/fig6-2-c17.jpg&#34; alt=&#34;fig6 2 c17&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 11. Double slotted fowler flaps on C-13 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_3&#34; title=&#34;View footnote.&#34;&gt;3&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil5/fig6-3-a310-acturators.jpg&#34; alt=&#34;fig6 3 a310 acturators&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 12. Double slotted fowler flaps on A310-300 &lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-slat&#34;&gt;[&lt;a id=&#34;_footnoteref_6&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_6&#34; title=&#34;View footnote.&#34;&gt;6&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_前緣襟翼&#34;&gt;前緣襟翼&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_簡單襟翼plain_flap_2&#34;&gt;簡單襟翼(Plain Flap)&lt;/h3&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil5/fig7-1-plain-leading.png&#34; alt=&#34;fig7 1 plain leading&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 13. 簡單襟翼(Plain Flap)&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;簡單式前緣襟翼除了位置不一樣之外，就和簡單後緣襟翼是一樣的，&#xA;原理都是透過折彎機翼，使機翼變形產生更大的彎曲度。&#xA;但是因為其它種類的翼前緣的升力裝置實在太好用了，成本和副作用也沒有增加太多，&#xA;所以這種簡單型的襟翼反而不是很容易見到。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_克魯格襟翼krueger_flap&#34;&gt;克魯格襟翼(Krueger Flap)&lt;/h3&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil5/fig8-1-krueger.png&#34; alt=&#34;fig8 1 krueger&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 14. 克魯格襟翼(Krueger Flap)&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;克魯格襟翼的作用和簡單襟翼是一樣的，都是用來增加機翼前段的彎曲弧度，但卻比簡單襟翼更加簡便。&#xA;克魯格襟翼反而和分列式襟翼有那麼點相像，不是讓整塊機翼前部給彎下來，&#xA;而是只有把一段機翼蒙皮給彎折出來就形成了所需要的機翼弧度。&#xA;因此這種襟翼其實經常被應用在飛機上，&#xA;特別是大型飛機機翼的某些難以設置前緣翼縫的畸零地帶。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil5/fig8-2-b747.jpg&#34; alt=&#34;fig8 2 b747&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 15. Krueger flaps on Boeing 747 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_7&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_7&#34; title=&#34;View footnote.&#34;&gt;7&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil5/fig8-3-b777.jpg&#34; alt=&#34;fig8 3 b777&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 16. Krueger flaps on Boeing 777 &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_8&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_8&#34; title=&#34;View footnote.&#34;&gt;8&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_前緣翼縫wing_slat&#34;&gt;前緣翼縫(Wing Slat)&lt;/h3&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil5/fig9-1-wingslat.png&#34; alt=&#34;fig9 1 wingslat&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 17. 前緣翼縫(Wing Slat)&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;前緣翼縫的原理和前面說過的開縫式襟翼是一模一樣的，只是從後緣搬到前緣來了。&#xA;只需要把機翼前緣一小塊往前面伸出去一點就會形成一個縫隙，&#xA;然後下翼面的氣流就會從這個縫隙吹到上翼面來，&#xA;本質上就是把前緣分出去的那一小塊變成另一片小機翼，用它的下翼面來強壓氣流，&#xA;使氣流服貼主翼的上翼面，簡單這樣做就能提高主翼的失速攻角。&#xA;因為前緣翼縫效果實在好，結構也簡單，因此被大量運用在飛機的機翼上。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil5/fig9-2-a310-slats.jpg&#34; alt=&#34;fig9 2 a310 slats&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 18. Wing slats on A310-300 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_6&#34; title=&#34;View footnote.&#34;&gt;6&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil5/fig9-3-a319.jpg&#34; alt=&#34;fig9 3 a319&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 19. Wing slats on A319 &lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_6&#34; title=&#34;View footnote.&#34;&gt;6&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;footnotes&#34;&gt;&#xA;&lt;hr/&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_1&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_1&#34;&gt;1&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E7%BF%BC%E5%9E%8B%E7%B3%BB%E5%88%97-4---%E9%81%B8%E7%94%A8%E7%BF%BC%E5%9E%8B/&#34;&gt;翼型系列 4：選用翼型&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_2&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_2&#34;&gt;2&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E7%BF%BC%E5%9E%8B%E7%B3%BB%E5%88%97-2---%E6%A9%9F%E7%BF%BC%E6%B5%81%E5%A0%B4%E7%8F%BE%E8%B1%A1/&#34;&gt;翼型系列 2：機翼流場現象&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_3&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_3&#34;&gt;3&lt;/a&gt;. &lt;a href=&#34;https://www.kitplanes.com/design-process-flap-types/&#34;&gt;Design Process: Flap Types&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_4&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_4&#34;&gt;4&lt;/a&gt;. &lt;a href=&#34;https://militarymachine.com/f22-facts/&#34;&gt;The F-22 Raptor Facts: 30 Things to Know&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_5&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_5&#34;&gt;5&lt;/a&gt;. &lt;a href=&#34;https://www.military.com/history/how-us-military-ended-japanese-air-dominance-destroying-legend-of-zero.html&#34;&gt;How the US Military Ended Japanese Air Dominance by Destroying the Legend of the Zero&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_6&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_6&#34;&gt;6&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Leading-edge_slat&#34;&gt;Leading-edge slat&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_7&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_7&#34;&gt;7&lt;/a&gt;. &lt;a href=&#34;https://www.quora.com/Why-are-Krueger-flaps-not-used-on-the-Boeing-747s&#34;&gt;Why are Krueger flaps not used on the Boeing 747s?&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_8&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_8&#34;&gt;8&lt;/a&gt;. &lt;a href=&#34;https://community.infiniteflight.com/t/missing-krueger-flap-on-the-777-wing/464850&#34;&gt;Missing Krueger flap on the 777 wing&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>翼型系列 4：選用翼型</title>
      <link>http://www.huoschen.idv.tw/blog/aerospace/%E7%BF%BC%E5%9E%8B%E7%B3%BB%E5%88%97-4---%E9%81%B8%E7%94%A8%E7%BF%BC%E5%9E%8B/</link>
      <pubDate>Sat, 08 Jun 2024 09:47:28 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/aerospace/%E7%BF%BC%E5%9E%8B%E7%B3%BB%E5%88%97-4---%E9%81%B8%E7%94%A8%E7%BF%BC%E5%9E%8B/</guid>
      <description>&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在前面幾篇文章裡&#xA;&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_airfoil1&#34;&gt;[&lt;a id=&#34;_footnoteref_1&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&#xA;&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_airfoil2&#34;&gt;[&lt;a id=&#34;_footnoteref_2&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_2&#34; title=&#34;View footnote.&#34;&gt;2&lt;/a&gt;]&lt;/sup&gt;&#xA;，我講解過機翼升力的原理，並探討了發生在機翼上的各種流場現象，&#xA;了解了為什麼機翼剖面要做成那些形狀的原因。&#xA;本篇就要來探討，哪些翼型適合被使用在什麼情況下的問題；&#xA;或者也可以說，當一個設想的操作環境定下來之後，我們可以怎麼選用翼型的一個方向。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;當然每一個種類的翼型都還細分為好多子型號，甚至你自己還可以特製一個自己專屬的。&#xA;因此我這裡並不會細細比較各種翼型微小差異及影響，僅只會從大的方向上，對差異較為巨大的幾種翼型去做解說。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_普通常見的翼型&#34;&gt;普通常見的翼型&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil4/fig1-1-normal.png&#34; alt=&#34;fig1 1 normal&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 1. 在教科書上最常見的翼型&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-airfoil&#34;&gt;[&lt;a id=&#34;_footnoteref_3&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_3&#34; title=&#34;View footnote.&#34;&gt;3&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這是一個我們經常能夠見到的機翼剖面形狀，&#xA;它的身影出現在各種教科書、航空飛機原理解說圖鑑、大部份螺旋槳飛機、以及各種航模遙控飛機上面。&#xA;它的優點就是各項性能參數中庸，沒有特別突出的部份，也沒有什麼明顯的缺點，&#xA;當你遇到一個需要選用翼型的情況，卻還沒有特別想法的時候，通常選它就對了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_高弧內凹翼&#34;&gt;高弧內凹翼&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil4/fig2-1-lowspeed.png&#34; alt=&#34;fig2 1 lowspeed&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 2. 彎曲弧度特別大的機翼，可以有效率的將氣流折灣一個很大的角度&lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_3&#34; title=&#34;View footnote.&#34;&gt;3&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;高翼弧的機翼一般都用在低速用途上，&#xA;因此當你看到什麼飛機的機翼它比例上很厚的話，就表示它的翼弧很高很彎，基本就能知道它是適合低速飛行的；&#xA;如果你看到的機翼不只厚，下翼面還內凹的話，那就知道它的飛行速度多半是慢中之慢。&#xA;低速翼型的設計重點往往在於高攻角，這是因為升力與氣流的動能(也就是速度)成正比，&#xA;當速度低的時候就必須要抬高攻角才能產生足夠的升力，因此才讓較高攻角範圍的性能成了重點。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;給初接觸機翼的人一個小提示：要看懂高翼弧機翼的原理，請不要把它放平來看，&#xA;而是應該把它擺一個比方說 10 度、20 度的攻角再來觀看。&#xA;高翼弧機翼的除了尾部往下彎曲之外，重點也在於頭部往下彎曲，&#xA;這是為了讓頭部在高攻角的情況下能夠更好的貼合於迎風氣流，減小氣流在頭部的動能消耗。&#xA;將氣流順暢的接進來之後，再用一個圓弧路徑將氣流和緩的改變方向，&#xA;因此就自然形成了這種高彎曲度的機翼剖面形狀。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這種帶有高彎曲度的翼型，可以在低速的時候配合適當的攻角大量偏折氣流而產生升力，&#xA;是低速加上高升力需求時的一個極佳選項，然而這似乎是它唯一的優點了。&#xA;在&lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E7%BF%BC%E5%9E%8B%E7%B3%BB%E5%88%97-2---%E6%A9%9F%E7%BF%BC%E6%B5%81%E5%A0%B4%E7%8F%BE%E8%B1%A1/#camber&#34;&gt;之前的解釋中&lt;/a&gt;&#xA;&lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_2&#34; title=&#34;View footnote.&#34;&gt;2&lt;/a&gt;]&lt;/sup&gt;&#xA;我們可以知道，這種高彎曲的翼型加上高攻角便會容易發生失速，&#xA;當速度夠低的時候因為撐得住，所以無妨；&#xA;但當速度往上提高之後，它的失速攻角就會比其他機翼來得低。&#xA;但缺點不止於此，在速度逐漸提高起來以後，升力也會因此而提高，&#xA;也就是說這時要維持飛行所需要的升力，其實只要相對較小的攻角就能夠提供了。&#xA;然而比起其他翼型同樣處在低攻角的狀態，這種高弧的翼型卻讓氣流彎彎繞繞，平白增加了阻力。&#xA;簡單的說就是這種高弧的翼型可以在低速條件下有效提供升力，&#xA;但在脫離了低速範圍後便處於不利的情況，白話意思就是不適合高速。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;除了空氣動力上的性能以外，這種漂亮的弧形同時也在告訴你它的加工製造較為繁複困難，&#xA;而且相比於前面的普通翼型下翼面是個平版，這種翼型的上下翼面可都是曲面。&#xA;另外，下翼面的向內凹陷也導致機翼內部空間被壓縮，當需要利用機翼內部空間的情況下，&#xA;比如裝載燃油、攜帶設備或武器等，此時它內部空間較窄小小的缺點便會顯現出來。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;總結就是這種翼型極其適合在低速場景下需要高效產生升力時使用，&#xA;特別如果對機翼內空間需求比較低、或無需利用機翼內部空間的話，這就會是個極為適合的方案。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_高弧外凸超厚翼&#34;&gt;高弧外凸超厚翼&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil4/fig3-1-propeller.png&#34; alt=&#34;fig3 1 propeller&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 3. 以增加機翼厚度為主要考量點的機翼&lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_3&#34; title=&#34;View footnote.&#34;&gt;3&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;如圖所示，這種翼型與前面介紹的高弧翼有異曲同工之妙，只不過人家是往內凹，而它是往外凸。&#xA;相同的是，它們倆都更容易發生氣流分離、都適合在較低的流速下運作，&#xA;不同的是前一種內凹翼型能高效產生升力，而這外凸的翼型基本產生不了太多升力。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這種翼型的主要優點是提供了大量的內部空間，可以容納更多東西填充在裡面；&#xA;事實上上圖是一個螺旋槳較靠近根部的翼剖面形狀，因此利用了它結實又方正的形狀提供了整根槳翼的結構支撐。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_渦輪葉片&#34;&gt;渦輪葉片&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil4/fig4-1-turbine.png&#34; alt=&#34;fig4 1 turbine&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 4. 彷彿不怕氣流分離般的超誇張彎曲度機翼&lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_3&#34; title=&#34;View footnote.&#34;&gt;3&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這種翼型是一種彎曲弧度更為誇張的內凹翼，因此我們知道它是為了極高效產生升力(轉矩)的目的而存在；&#xA;看它尖尖的前端，我們知道它是被設計在特定攻角下高效運作的存在。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;事實上這是用在航空引擎渦輪葉片的翼型，&#xA;相較於飛機機翼可能因為不同飛行狀態而希望機翼能夠適應較大範圍的攻角區間，&#xA;渦輪葉片只需在特定攻角下工作，但是要非常高效的產生升力。&#xA;因此可以讓它頭部變得比較尖銳，好最大限度的減少前端氣流的消耗，&#xA;而高弧度的彎曲形狀就是為了盡可能最大限度產生升力的目的，&#xA;白話說就是盡其所能將氣流的動能壓榨出來變成轉動力矩(升力)。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;可是按照前面解釋的邏輯，這腫大彎曲的翼型應該適用在低速的環境下才對，為什麼渦輪能夠用上它呢？&#xA;這樣不會氣流分離導致失速嗎？&#xA;這就要提到它工作的環境了，在航空引擎的渦輪段工作的它，&#xA;其實這個區段的空氣是剛被加熱過的高壓空氣，然後一路在膨脹，&#xA;因此渦輪葉片才能夠使用這麼大的攻角來工作而依然保持氣流不分離。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_壓縮機葉片&#34;&gt;壓縮機葉片&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil4/fig5-1-compressor.png&#34; alt=&#34;fig5 1 compressor&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 5. 只能適應特定攻角的超薄葉片&lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_3&#34; title=&#34;View footnote.&#34;&gt;3&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這也是在航空引擎內的葉片翼型，不過不是在渦輪段，而是在壓縮機段。&#xA;它尖尖的前端告訴我們它也是被設計在特定攻角下高效運作的，事實上也真是如此。&#xA;(壓縮機葉片適用的攻角區間很窄，因而強化了這樣那樣的問題。這是一個伏筆，先挖個坑，以後有機會填上)&#xA;雖然這翼型很薄很平，但還是看得出來它是內凹的弧翼，&#xA;因此它的用途也是為了高效產生升力(高效消耗軸的轉矩)，事實上也是如此。&#xA;不過與渦輪葉片相反，它是工作在一個空氣不斷被壓縮的區間，因此更容易發生氣流分離，&#xA;這使得它的整體翼面被坡度設計的更為平緩，能夠正常工作的攻角範圍又窄又低。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_高速翼&#34;&gt;高速翼&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil4/fig6-1-laminar.png&#34; alt=&#34;fig6 1 laminar&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 6. Laminar Flow Airfoil &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_4&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_4&#34; title=&#34;View footnote.&#34;&gt;4&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這種翼型是為了高速飛行而設計 — 不過這裡的高速指的是次音速範圍內的高速。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在高速的情況下，其實機翼只需要較小的攻角就能夠產生所需要的升力，&#xA;而中低速那些彎彎繞繞的翼型在小攻角狀態下用處不大，還會附帶產生好多阻力。&#xA;因此這些高速翼型就被設計的比較平緩而沒有過於誇張的彎曲度，&#xA;使它在滿足所需要的足夠升力之下儘量減少阻力的產生，最後就成了類似上圖這種長相的翼型。&#xA;除了翼型曲面比較平緩之外，另一個可能更加顯著的特徵就是，&#xA;這種翼型最厚的地方大約在弦長的一半位置，而非如傳統翼型的最厚處靠近前端 1/4 處。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這種翼型的優點就是在高速狀態下阻力較小，在低攻角狀態下阻力更特小，&#xA;這使得選用了這種類型翼型的 P-51 野馬戰鬥機，之所以能夠擁有高飛行速度和超遠航程優勢的其中一向關鍵技術。&#xA;另一方面，這種翼型的優點都體現在高速且低攻角狀態下，&#xA;一旦攻角拉起來(比方戰鬥機在戰鬥中的機動動作)，則它的表現相比其他傳統翼型並沒有特別優勢；&#xA;特別是在低速狀態下，它往往不能提供足夠使用的升力！&#xA;不過倒不用擔心使用了這種機翼的飛機在低速下會不會墜機的問題，因為還有高升力輔助裝置的存在，&#xA;不過那是另一個話題了，暫且不展開。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;簡單總結：&#xA;這種高速翼型的優勢在於低攻角下的高速巡航能力，至於在低攻角範圍以外的性能表現則顯得普通；&#xA;罩門則在低速狀態下產出升力的效能低落，需借助其他輔助設計的幫忙。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_超臨界翼&#34;&gt;超臨界翼&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil4/fig7-1-supercritical.png&#34; alt=&#34;fig7 1 supercritical&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 7. 能在次音速範圍內衝到極限的機翼&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_5&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_5&#34; title=&#34;View footnote.&#34;&gt;5&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這種看起來奇怪的翼型，可能會讓初入門航空空氣動力學的人看得有點摸不著頭腦。&#xA;其實它的設計目的與前面說的高速翼型相似，&#xA;只不過前者的高速翼型只是為了在(次音速的)高速範圍區間內使用；&#xA;而超臨界翼型則是為了在次音速範圍內，頂著能多快就多快的最高速限飛行！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;當物體在氣流中以音速或超音速的速度行進時，就會產生超音速領域特有的「震波」現象。&#xA;對於震波的原理和影響等等需要至少一個以上的主題來探討，&#xA;所以這裡我們暫且先把震波的具體細節放一邊(又挖了一個坑)，&#xA;只需要先理解為：一旦發生震波就會出現各種妖魔鬼怪，總之很不好就對了！&#xA;有了上述的理解後，這種翼型的設計目的便浮現出來，那就是：&#xA;在不許出現震波的前提下，能容許飛的愈快愈好！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;機翼、或任何物體在氣流中行進時，氣流都會在物體表面的不同區域增速或減速。&#xA;意思就是說，即使這個物體在跑的很快的時候，&#xA;雖然本身還沒有達到超音速的速度，但是它身上某些局部氣流可能已經到達、或超過音速了。&#xA;這就導致一個現象：雖然此時該物體的移動速度其實還沒達到音速，但是卻已經出現了超音速才會出現的問題，&#xA;對於這種狀態有一個專有的名詞叫作「穿音速」(transonic)。&#xA;如果有一個物體它的表面氣流加速減速效果比較劇烈，&#xA;那麼也許它本身的行進速度只有 0.7 倍的音速(即 0.7 馬赫)，&#xA;但是它身上的某個部位可能已經被加速達到了音速(即 1.0 馬赫)，就會開始出現震波。&#xA;那麼如果另一個物體它的表面氣流加減速比較緩和的，那麼也許它的本體速度要達到 0.8 馬赫的時候，&#xA;它的某個地方才會開始出現震波，那麼這個物體它就可以跑的比前一個物體更快一些！&#xA;而這其實就是超臨界機翼的設計重點：&#xA;儘量讓機翼的氣流加速程度減少，使它可以壓在不產生震波的邊緣飛行，能飛多快就飛多快。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;回顧&lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E7%BF%BC%E5%9E%8B%E7%B3%BB%E5%88%97-2---%E6%A9%9F%E7%BF%BC%E6%B5%81%E5%A0%B4%E7%8F%BE%E8%B1%A1/#upper-lower-speed-difference&#34;&gt;之前的解釋內容&lt;/a&gt;&#xA;&lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_2&#34; title=&#34;View footnote.&#34;&gt;2&lt;/a&gt;]&lt;/sup&gt;&#xA;，我們知道氣流在機翼上表面會被加速，&#xA;而且機翼上表面彎曲的愈厲害，則氣流加速愈多。&#xA;使用一般翼型的飛機也許在飛行速度達到 0.7 馬赫以上的時候就會面臨與震波有關的問題，&#xA;開始出現油耗大量增加但速度基本不會增加的現象、&#xA;以及飛機難以控制或無法控制等問題(後面這個問題倒不一定會出現，具體要看飛機的操控設計)；&#xA;而使用了超臨界翼型的飛機則可能可以將這個速度的極限推展到 0.85 馬赫，&#xA;意思就是在同樣的油耗下，能飛的比其他人更快！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;為了延後機翼上表面震波的產生，就要降低氣流在上表面的加速效應，&#xA;這就是為什麼超臨界機翼的上表面會如此平坦的原因，比前一個介紹的高速翼型還要再更平坦，&#xA;感覺幾乎可以在上面煎蛋。&#xA;但是與高速翼型一樣，翼型平坦了就會導致產生升力的效果降低，&#xA;為了彌補這缺點，於是就在下表面做了文章，反正下表面原本的氣流效應就是增壓降速，因此經得起折騰。&#xA;這就是為什麼機翼下表面的後段會往裡面這麼內凹一下的原因，就是為了增加將氣流轉折向下吹的效果。&#xA;但是也因為大量的氣流在機翼後部位置被折轉向下，因此尾端會產生一個較大的上翹力矩，使飛機的低頭趨勢變大，&#xA;不過這是飛機平衡和配平最佳化那方面需要去傷腦筋的事情了！&#xA;總而言之，超臨界翼型的特徵就是上翼面極其平緩，然後頭部比較大些，&#xA;機翼最厚處與高速機翼同樣在大約中間位置，並且在下翼面尾段有一個明顯的內凹形狀。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;來到結論，&#xA;這種翼型的優點(可能也是唯一的優點)在於可以在合理的阻力範圍內，容許飛行極速更加接近音速。&#xA;它的設計理念延伸於高速翼型，但更加極端；&#xA;如果只是要飛的快的話其實用不著它，但如果要飛到最快(但又不想超音速)就需要選它。&#xA;而它的缺點也和高速翼型一樣，高攻角性能不突出、低速下升力不足，因此在低速時也需要其他輔助設計的助力，&#xA;此外還多了低頭力矩大，使飛機的平衡負載加重的副作用。&#xA;因此選用這種翼型的飛機幾乎都是高速巡航的大飛機，例如近代的幾乎所有大型客運飛機等，&#xA;但出了這個應用領域就罕見選用此種翼型。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_對稱翼&#34;&gt;對稱翼&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil4/fig8-1-symmetrical.png&#34; alt=&#34;fig8 1 symmetrical&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 8. 上下完全對稱的機翼&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_6&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_6&#34; title=&#34;View footnote.&#34;&gt;6&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;前面我們介紹的所有翼型都有一個共同點，那就是都是為了正飛的目的設計的，因此正著飛的效果各有各的好；&#xA;但是一旦上下倒過來飛，情況就讓人有點不忍直視了！&#xA;如同我在&lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E7%BF%BC%E5%9E%8B%E7%B3%BB%E5%88%97-2---%E6%A9%9F%E7%BF%BC%E6%B5%81%E5%A0%B4%E7%8F%BE%E8%B1%A1/#inverted-flight&#34;&gt;之前的解釋內容&lt;/a&gt;&#xA;&lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_2&#34; title=&#34;View footnote.&#34;&gt;2&lt;/a&gt;]&lt;/sup&gt;&#xA;所說，各種形狀只要能夠導氣就能夠產生升力，差別在於產生升力的效率和成本。&#xA;所以毫無疑問的，所有翼型倒著都能夠產生升力，只是看具體翼型的不同，有些的效率可能過於慘不忍睹！&#xA;不過一般來說這個問題並不大，因為通常倒著飛的機會不多，就算真的倒過來飛多半也是暫時的，&#xA;甚至有些飛機根本也就沒考慮過讓你翻過來飛的情況，所以一般不會特別在意這種情況。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;不過如果在你的應用需求上經常會需要翻過來翻過去的飛，又不希望倒過來飛的時候效果太差的話，&#xA;就得考慮使用這種對稱的翼型了！&#xA;這種翼型的缺點就是在正向狀態下的效率、阻力等等性能都不如前面那些翼型傑出，&#xA;但是優點是翻過來的時候性能也是一樣的，不會像前面那些翼型那樣性能直接往下掉。&#xA;因此選用這種翼型的飛機多半都是特技飛行用途的飛機。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;不過前面說的是只應用在飛機主翼的情況，但其實除了主機翼以外的其它翼面如方向舵、穩定翼等等。&#xA;這種應用場所可能就不是分上下，而是分左右，而氣流從左邊吹來或從右邊吹來的機會都是一樣的，&#xA;因此在這些地方的翼型首選就是對稱翼型了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_超音速翼型&#34;&gt;超音速翼型&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil4/fig9-1-supersonic.jpg&#34; alt=&#34;fig9 1 supersonic&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 9. 超音速適用菱形翼&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_7&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_7&#34; title=&#34;View footnote.&#34;&gt;7&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;相比於前面頂著震波即將出現的邊緣在玩火的超臨界機翼，超音速機翼就有點像是放棄治療了！&#xA;在本體都已經超音速的情況下，震波是不可能不出現的。&#xA;於是乾脆破罐子破摔，既然震波橫竪避免不了，那就玩起來吧！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在震波主導的超音速世界裡，震波是能少一點最好、稍微斜一點不那麼正的震波更好，&#xA;而震波喜歡在有轉折的地方出現，那麼轉折的地方能少點就少點唄，&#xA;於是才會看到超音速翼型就是這麼簡單的一個菱形。&#xA;然後圓滑的頭部會導致阻力較大的正震波產生，所以頭部是愈尖愈好，&#xA;於是最終就長成了上圖我們看到的這種形狀。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這種超音速翼型經常可以在各種飛彈的彈翼上面看到，&#xA;此外還有部份超音速高速飛機也會採用，例如 F-104。&#xA;不過在飛機上的超音速機翼看起來比較不會是那麼標準的超音速翼型，而是較為折衷變化後的翼型，&#xA;因為飛機不像飛彈一股勁往前衝到底就好，飛機還得考慮在沒有超音速的時候性能也不至於太差。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil4/fig9-2-f104-airfoil.jpg&#34; alt=&#34;fig9 2 f104 airfoil&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 10. F-104 機翼剖面&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_8&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_8&#34; title=&#34;View footnote.&#34;&gt;8&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_平板翼&#34;&gt;平板翼&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil4/fig10-1-plate.png&#34; alt=&#34;fig10 1 plate&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 11. 一片平板，沒有比這個更簡單的了！&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;最後我們來看看一個可能更常見，但一般可能更難被想到的翼型 — 平板。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;平板翼在幾乎所有方面的性能數據都是敬陪末座，無論使用在何處幾乎都只有被嫌棄到死的份。&#xA;但就是這麼一個人人見了都說不好的翼型，卻有一項無與倫比的優點：製造簡單！&#xA;所以在那些廉價、需求大量、對性能不太需求的用途裡，反而是這種翼型被大量使用，&#xA;反而成為了我們一般人在日常生活中可能最常見到的翼型。&#xA;比方說，當你在折紙飛機的時候，請問你會把機翼剖面折成上述哪一種精美的形狀呢？&#xA;不，你一定只會折一片平板翼就結束了！&#xA;當你需要製造一大堆用來製造彈幕的廉價火箭彈時，請問火箭彈的彈翼選用哪種翼型最合適？&#xA;我猜你一定會只想要拿一片鐵板焊上去就完事了！&#xA;更別提那些廉價兒童玩具、風向旗標翼片、冷氣出風口葉片、和各種廉價風扇等等，&#xA;平板翼型也許才是真正充斥在你我身邊的東西。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;footnotes&#34;&gt;&#xA;&lt;hr/&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_1&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_1&#34;&gt;1&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E7%BF%BC%E5%9E%8B%E7%B3%BB%E5%88%97-1---%E6%A9%9F%E7%BF%BC%E5%8D%87%E5%8A%9B%E5%8E%9F%E7%90%86/&#34;&gt;翼型系列 1：機翼升力原理&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_2&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_2&#34;&gt;2&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E7%BF%BC%E5%9E%8B%E7%B3%BB%E5%88%97-2---%E6%A9%9F%E7%BF%BC%E6%B5%81%E5%A0%B4%E7%8F%BE%E8%B1%A1/&#34;&gt;翼型系列 2：機翼流場現象&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_3&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_3&#34;&gt;3&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Airfoil&#34;&gt;Wikipedia: Airfoil&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_4&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_4&#34;&gt;4&lt;/a&gt;. &lt;a href=&#34;https://web.eng.fiu.edu/allstar/Wing34.htm&#34;&gt;Wing Design - Level 3 - Wing Boundary Layer&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_5&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_5&#34;&gt;5&lt;/a&gt;. &lt;a href=&#34;https://ntrs.nasa.gov/citations/19890008197&#34;&gt;NASA SC(2)-0714 airfoil data corrected for sidewall boundary-layer effects in the Langley 0.3-meter transonic cryogenic tunnel&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_6&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_6&#34;&gt;6&lt;/a&gt;. &lt;a href=&#34;https://forums.developer.nvidia.com/t/unable-to-sample-naca-0012-symmetrical-airfoil/190259&#34;&gt;Unable to sample NACA 0012 symmetrical airfoil&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_7&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_7&#34;&gt;7&lt;/a&gt;. &lt;a href=&#34;https://www.researchgate.net/figure/Supersonic-airfoil-with-oblique-shock-waves-and-expansion-waves_fig2_334574622&#34;&gt;Supersonic airfoil with oblique shock waves and expansion waves&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_8&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_8&#34;&gt;8&lt;/a&gt;. &lt;a href=&#34;https://wapbaike.baidu.com/tashuo/browse/content?id=0c64d05c8942304118d96e83&#34;&gt;寡妇制造机玩过比眼镜蛇机动还危险的特技动作，且只成功过一次&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>翼型系列 3：那些升力原理哪裡錯了？</title>
      <link>http://www.huoschen.idv.tw/blog/aerospace/%E7%BF%BC%E5%9E%8B%E7%B3%BB%E5%88%97-3---%E9%82%A3%E4%BA%9B%E5%8D%87%E5%8A%9B%E5%8E%9F%E7%90%86%E5%93%AA%E8%A3%A1%E9%8C%AF%E4%BA%86/</link>
      <pubDate>Sun, 02 Jun 2024 00:21:35 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/aerospace/%E7%BF%BC%E5%9E%8B%E7%B3%BB%E5%88%97-3---%E9%82%A3%E4%BA%9B%E5%8D%87%E5%8A%9B%E5%8E%9F%E7%90%86%E5%93%AA%E8%A3%A1%E9%8C%AF%E4%BA%86/</guid>
      <description>&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;前面我寫了兩篇文章&#xA;&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_airfoil1&#34;&gt;[&lt;a id=&#34;_footnoteref_1&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&#xA;&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_airfoil2&#34;&gt;[&lt;a id=&#34;_footnoteref_2&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_2&#34; title=&#34;View footnote.&#34;&gt;2&lt;/a&gt;]&lt;/sup&gt;&#xA;來解釋機翼產生升力的原理，&#xA;介紹了空氣吹過機翼表面所產生的一系列現象，並解釋了解釋機翼被造成那些形狀的真實原因。&#xA;這一篇我要來解釋一些流傳的機翼升力原理說法，並探討他們為什麼不對？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;以下我會逐一介紹我聽說過的一些機翼升力原理說法，並分析它們哪裡不對、又哪裡對了？&#xA;總歸而言，其實各種說法都有一定的正確性，至少我至今為止還沒有聽說過哪種說法是從頭到尾完全在鬼扯的！&#xA;這些說法都有一定程度的學理根據，只是當中的關鍵位置存在一些小小的謬誤，最終導致以此推論出來的解釋大錯。&#xA;這些錯誤最直接的結果就是與飛機上的實際情況不符，或者無法解釋某些實際會發生的情況。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;此外我還會介紹一些升力解釋法，這些說法可能並沒有錯，不過比較偏向學術抽象。&#xA;這是專門寫給那些剛入門的學生們，解釋一些可能暫時難以明白的計算說法，&#xA;如果您讀到那個部份感覺比較吃力的話，可以跳過它無妨；&#xA;畢竟如果你本來也未曾聽聞某一種解釋方法的話，那麼那些解釋是否在哪裡存在什麼問題其實也無關緊要，&#xA;只要先優先閱讀正確的解釋方法就好了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_白努利原理&#34;&gt;白努利原理&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil3/fig1-1-bernoulli-lift.png&#34; alt=&#34;fig1 1 bernoulli lift&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 1. 流傳的白努利升力原理解釋(注意氣流從綠色標註位置分開上下路徑，然後同時抵達紅圈位置)&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;嚴格說起來，白努利才沒有這樣解釋過機翼升力原理。&#xA;不過因為語言是約定俗成的，不知是誰起的頭？但是大家叫久了也就這麼以白努利為名稱呼這種升力解釋。&#xA;此種說法以上圖為基礎，氣流從機翼前緣被一分為二，並且上下兩條路徑的氣流同步抵達機翼後緣，&#xA;因為上表面的路徑比下表面還長，因此上表面的流速必定比較快，按白努利方程式可知上表面壓力較低，&#xA;因此機翼上下的壓力差產生了推動機翼往上的升力。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;然而這種說法其實明顯的破綻實在太多，不知道為什麼能夠這麼廣為流傳？&#xA;把當時年幼的我給唬的一愣一愣的，然而信了它之後卻對一些顯而易見的情況無法解釋。&#xA;並且這種明顯不符合現實的有問題的說法，卻能夠被收錄在國中理化課本裡面誤人子弟！&#xA;(我國中畢業已經很久了，不知道現在是否仍被收錄？)&#xA;比方說它沒有辦法解釋飛機為什麼能夠上下顛倒過來倒著飛？(如圖 Figure 2 左上)&#xA;因為倒飛的時候，路徑較長的那一面在下面，照說這時產生的負升力應該會讓飛機墜機！&#xA;還有，用這種理論去推論會發現，那些下翼面內凹的機翼產生的升力應該要更小(如圖 Figure 2 左下)，&#xA;因為下翼面內凹之後路徑變長了，上下翼面長度差縮短，照理升力應該要變小，&#xA;然而實際上這種機翼卻往往能夠產生更多的升力！&#xA;又比方說，按照這種理論，&#xA;把機翼的上表面做成凹凸波浪狀(如圖 Figure 2 右上)、或是做成像鋼盔那樣(如圖 figure 2 右下)，&#xA;應該要能夠產生更大的升力，因為上表面路徑更長了；&#xA;然而我們知道如果你真的造了一個這樣的機翼，只會得到更大的阻力而已，&#xA;甚至做成鋼盔的樣子則可能根本飛不起來！&#xA;甚至於，即便只考慮它所預設的標準情況 — 一個正常巡航中的狀態，&#xA;如果你認真按照這種理論去計算飛機的升力，你會發現得到的升力甚至遠不足以托起飛機的自身重量！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil3/fig1-2-bernoulli-unable-explain.png&#34; alt=&#34;fig1 2 bernoulli unable explain&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 2. 流傳的白努利升力原理無法解釋的問題&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;然而這裡必須要幫白努利做個平反，白努利其實並沒有錯，&#xA;錯的是後人用他的名字冠名在他根本沒這樣解釋過的事情上。&#xA;白努利的方程式是對的，至少在不可壓縮流底下是對的；那麼這理論到底錯哪兒了呢？&#xA;有看過我前篇文章的讀者應該能夠很快的發現到不對勁的地方，它錯在兩個地方：&#xA;其一是上下氣流並沒有同步抵達尾端，事實上依據實際風洞實驗展現的結果，&#xA;上表面氣流更早抵達尾端，流速比它假設的更快得多；&#xA;其二是它的流線圖畫錯了，最大的錯誤在於前緣停滯點的位置，因此我在前篇文裡有重點強調這個地方。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;如果把以上兩個問題點給修正過來，再套用白努利方程式去計算，就能夠得出正常得多的結果，&#xA;至少能夠解釋倒飛情況，而且算出來的升力與現實較為接近了；&#xA;如果更進一步能夠分別翼表面每個部位可能加速多一點、或減速多一點的細節差異的話，&#xA;那麼更能夠得到與實際實驗相當貼合的結果。&#xA;這告訴我們，白努利沒錯，錯的是後面的人根本用錯了假設條件，然後再冠以他的名。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;雖然修正了流場條件之後就能夠計算出正確的升力&#xA;(這裡強調「計算」，因為如果是為了「解釋」的目的，恐怕並不是一個容易理解的路子)，&#xA;雖然白努利並沒有錯，但是並不好用！&#xA;因為我們不能夠直接正確使用白努利方程式，&#xA;因為在套用白努利之前，&lt;strong&gt;你必須要先知到氣流它是怎麼流的？&lt;/strong&gt;&#xA;然而，你怎麼樣才能知道氣流到底應該怎麼流動呢？怎麼樣才能知道流場究竟該是什麼長相呢？&#xA;因此你必須先回頭重新整理解釋一遍機翼的流場；那何不直接從解釋流場開始解釋升力呢？&#xA;而這就是我前兩篇在做的事情。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_文氏管原理&#34;&gt;文氏管原理&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil3/fig2-1-venturi-lift.png&#34; alt=&#34;fig2 1 venturi lift&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 3. 流傳的文氏管升力原理解釋&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;第二種流傳的升力原理解釋採用了文氏管原理，&#xA;就是流體(空氣、或水、或其它一切流動物質)在流經管徑不一的管子時，&#xA;會在管口縮小的地方流速加快、並且壓力降低，而在管口放大的地方流速減慢、並且壓力升高。&#xA;如果將機翼的上表面看做是管道的下半部(如圖 Figure 3)，&#xA;那麼上翼面的氣流就會因為管口縮減而加速，產生的低壓便會給予機翼向上的吸力。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這種理論說法乍看好像煞有其事，但稍微推敲也會發現許多它同樣無法解釋的問題。&#xA;例如當機翼抬升攻角的時候(如圖 Figure 4 左)，&#xA;機翼上半部的後部截面變大，會給機翼產生向下的壓力，&#xA;機翼下半部的後部截面縮小，會給機翼產生向下的拉力。&#xA;總體而言這時升力會降低，甚至變成負的升力而導致墜機，&#xA;然而我們知道實際上攻角抬升時升力應該會增加，因此這種理論明顯與事實不符。&#xA;而且這種理論還有一個弔詭的地方，若將上翼面看做是管流的下端管壁，那上端管壁在哪裡呢？&#xA;然後一個有趣的事情就發生了，&#xA;當你把管道邊界畫得很接近的話(如圖 Figure 4 中)，可以算出很大的升力，&#xA;而當把管道邊界畫得很遠的話(如圖 Figure 4 右)，升力就會非常小；&#xA;意思就是明明是一樣的機翼、一樣的姿態、一樣的氣流，&#xA;只是因為我們腦海裡的意念不一樣了，升力竟然就不一樣了！&#xA;意思是我們控制機翼的升力只需要用意念就可以了，這樣對嗎？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil3/fig2-2-venturi-unable-explain.png&#34; alt=&#34;fig2 2 venturi unable explain&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 4. 流傳的文氏管升力原理無法解釋的問題&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;錯誤其一是文氏管規則其實只適用於「均勻管道流」，然而如同上圖所繪的虛擬管道內流場基本不是均勻的；&#xA;錯誤其二其實在上面給出來的一個疑問裡已經明顯提示了，就是錯在管道的邊界！&#xA;回顧這個升力理論，它的管道邊界是自己隨便畫的一條直線，問題是，你怎麼確定氣流不會越過所畫的直線呢？&#xA;既然空氣根本就不照你畫的路線流動，又怎麼能期望算出來的結果是對的呢？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這裡同樣也要為文丘里做個平反，其實和白努利理論一樣，&#xA;文氏管原理本身原本都是正確的，只是用這些原理解釋機翼的人錯了；&#xA;如果我們將這個理論稍加修正的話，一樣也能夠用文氏管理論計算出非常接近實際情況的結果！&#xA;其實廣傳的文氏管理論唯一的問題就是管道被亂畫而已，只要把管道畫正確了，這個理論其實還是很能用的。&#xA;那麼管道邊界應該怎麼畫才正確呢？&#xA;隨便畫一條邊界只是自欺欺人，因為空氣並不會乖乖照著你的邊界走，&#xA;那麼我們就換個路子，我們照著空氣流動的路徑來畫管道邊界，&#xA;這樣空氣就一定是照著走的，因為我們就是照著氣流來畫的。&#xA;再來，管道不能畫的太寬，因為處在開放空間的機翼流場本身就不是個均勻流，&#xA;所以管流要畫的儘量窄一點才能夠得到一個相對均勻的管流。&#xA;綜合以上兩點，你會發現直接拿風洞實驗的煙線圖來參考最好了，&#xA;兩條流線中間的區域正好就是一個完美的管流。&#xA;按此原則，我將文氏管理論的管道流修正成下圖(Figure 5)這樣，&#xA;然後你再套用回管流的速度壓力計算，就會發現一切都對了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil3/fig2-3-venturi-streamlines.svg&#34; alt=&#34;fig2 3 venturi streamlines&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 5. 使用流線圖的流線作為文氏管理論的虛擬管壁&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_wiki-lift&#34;&gt;[&lt;a id=&#34;_footnoteref_3&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_3&#34; title=&#34;View footnote.&#34;&gt;3&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;最終，文氏管升力原理雖然在修正之後也能用；&#xA;但是與白努利升力原理一樣，要使用這套理論的前題是：&#xA;&lt;strong&gt;「要先知到實際流場長的什麼樣子！」&lt;/strong&gt;&#xA;最後你還是得去探討並解釋氣流到底怎麼吹？&#xA;所以這也是我為什麼沒有選擇以文氏管理論作為切入點來解釋升力的原因！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_牛頓粒子碰撞原理&#34;&gt;牛頓粒子碰撞原理&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil3/fig3-1-newton-lift.png&#34; alt=&#34;fig3 1 newton lift&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 6. 流傳的牛頓升力原理解釋&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;有一種對升力解釋是基於牛頓力學的碰撞原理，&#xA;空氣就像是乒乓球一樣撞擊了機翼的下表面後彈開，這個碰撞後產生的升力就是機翼的升力，&#xA;而行進的機翼就像在打水飄一樣從空氣中快速掠過，不斷以其下表面來衝擊空氣粒子並得到升力。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這種說法很簡單易懂，能解釋升力和攻角的關係，也能解釋飛機為什麼可以倒飛。&#xA;但是它也存在不少缺陷，比如說按照這種說法，&#xA;那麼機翼上表面是什麼造型應該都沒有任何影響才對(如圖 Figure 7)，&#xA;但是在實務操作中我們知道機翼上表面對升阻力產生的影響可大了；&#xA;再來就是運用這個理論計算出來的升力，和實際實驗測量出來的結果差異頗大！&#xA;會造成這些盲點的原因也很簡單：這種解釋說法把空氣想的太簡單了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil3/fig3-2-newton-unable-explain.png&#34; alt=&#34;fig3 2 newton unable explain&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 7. 按流傳的牛頓升力原理，這兩個下表面相同但上表面不同的機翼，應該具有一樣的升力和阻力！&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;其實我很喜歡牛頓力學解釋方式，因為相較簡單易懂，&#xA;而且我自己的升力原理解釋就是從牛頓粒子碰撞為起始點出發的。&#xA;其實粒子碰撞說和前面提過的白努利說、文氏管說都有一個共通之處，那就是它們其實並不完全錯誤，&#xA;它們的基礎規律都是對的，只是在各自不同的小地方出現了錯誤的理解認知，&#xA;以致於讓整個說法變成難以自圓其說的謬論；&#xA;但是只要修正了這些錯誤的地方之後，這三種說法都能夠很完美的貼合實務結果，&#xA;剩下的就是哪個說法更好用的問題了。&#xA;其實實際上，空氣確實就是一大堆的粒子堆積在一起組成的，這些單個單個的粒子就是單一的氣體分子。&#xA;當然我們可以把空氣不要分割的那麼細，因為這樣實在很難計算，&#xA;我們可以把虛擬的空氣粒子當作是沙子、BB 彈、乒乓球、或排球，&#xA;反正粒子分的愈粗糙愈好計算理解，只是計算的結果偏差也會愈大；&#xA;粒子分的愈細小則計算會愈貼近實際，只不過愈加難以在實務上完成計算。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;所以用粒子碰撞來解釋升力是完全可行，而且可以完美解釋一切氣流現象的，&#xA;只不過流傳的這種升力解釋方式把空氣粒子想的太簡單，也分割的太粗糙了。&#xA;如同我在第一篇升力原理&lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;解釋的一樣，&#xA;空氣粒子並不是撞到機翼之後就真的彈走不回來了，因為那個粒子的下面也有其他粒子，&#xA;它們之間也會互相碰撞，然後再把它給頂回來；&#xA;只要空氣粒子足夠擁擠，這件事情就會大量的發生，而這很符合地表大氣的情況。&#xA;另外在微觀到分子的尺度上，空氣粒子之間互相也存在著萬有引力的互相吸引力，&#xA;所以上表面的空氣粒子要被抽走的時候，它會把周圍鄰居拉幫結夥一起拖下水，&#xA;這就能解釋機翼上表面的氣流行為，也能解釋前緣停滯點的位置為什麼會移動的現象。&#xA;甚至那些困擾著許多流體力學和空氣動力學研究者的紊流、渦流等等亂七八糟的空氣流體現象，&#xA;使用粒子法卻完全不需要對這些東西做特別處理就能模擬出來，&#xA;因為這些不管這樣或那樣的流體現象在微觀的尺度上，都不過是空氣分子之間簡單的交互影響結果罷了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;那麼既然基於粒子運動的空氣動力學這麼簡單、還能夠完美解決所有有關流體行為的疑問，&#xA;那麼為什麼這種理論實際上並不那麼流行呢？&#xA;原因也很簡單：&lt;strong&gt;因為實務上的空氣粒子數量實在是太龐大了！&lt;/strong&gt;&#xA;我們按理想氣體理論來稍微估算一下，一個莫耳(mole)的空氣大約是 22.7 公升吧，&#xA;而 22.7 公升的空氣含有多少個空氣分子呢？答案是大約 6x10&lt;sup&gt;23&lt;/sup&gt; 個喔！&#xA;那你看看一架飛機周圍的空氣應該有幾公升呢？&#xA;這麼龐大的數量，得要多少超級電腦加在一起才有辦法處理啊？&#xA;而且還沒說這資料處理起來得花多少時間的問題喔，只光是面對能不能夠處理這個數量的粒子就已經難以實現了！&#xA;這就是為什麼說基於粒子運動的空氣動力學理論上很美好，而實務上做不到的原因了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;不過這種基於粒子的解算方法雖然並不流行，但也不是完全沒有這種應用喔！&#xA;比方說如果只需要計算模擬一個很小很小區域內的流場的話就可以用，&#xA;或者是要計算那種空氣超級稀薄的場域時，比方說在低軌道衛星受到空氣的影響情況等。&#xA;另外還有一個很棒用途就是用來教育解說了，反正解說所需要的就只是要容易理解，並且是正確的理解，&#xA;然後又完全不需要去計算任何東西，完美迴避掉了這個理論的最大缺陷！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_到底是壓力差正確還是反作用力正確&#34;&gt;到底是壓力差正確？還是反作用力正確？&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil3/fig4-1-pressure-on-airfoil.webp&#34; alt=&#34;fig4 1 pressure on airfoil&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 8. 機翼表面壓力分佈&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_4&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_4&#34; title=&#34;View footnote.&#34;&gt;4&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;也許會有些讀者存在一個疑問，因為可能在你們以前讀過的東西裡面都告訴你：&#xA;機翼的升力是來自於機翼表面的壓力，是機翼上下表面的壓力差推動著機翼往上；&#xA;然而我卻說機翼的升力是來自於機翼改變了氣流的方向，是改變氣流的反作用力給予機翼向上的力！&#xA;那麼究竟哪一種說法才是對的呢？到底是壓力差的解釋不對，還是反作用力的解釋錯了呢？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;其實這兩種說法沒有誰對誰錯，它們都是正確的，而兩種說法其實解釋的是同樣的東西。&#xA;先說說壓力吧，機翼下表面的高壓力往上推擠著機翼，但難道同樣的壓力就不會往下推動下面的空氣更往下嗎？&#xA;難道除了機翼受力被推擠以外，推擠它的空氣就是文絲不動的嗎？&#xA;同樣的，機翼上表面的低壓區難道只會吸引下面的機翼往上，而不會同時間把更上面的空氣也往下吸嗎？&#xA;所以當機翼的上下壓力差形成，這些壓力推拉著機翼的同時同樣也在推拉著旁邊空氣，&#xA;只要下面的壓力大於上面、或者上面壓力小於下面，空氣就會被推拉吸引而改變方向往下走。&#xA;你可以理解為氣流形成了壓力差，這個壓力差去推拉機翼而產生升力，其反作用力使氣流向下折向；&#xA;你也可以理解為機翼去推拉了氣流，機翼施加在氣流上的力以氣壓力的形式存在，&#xA;這些力便推拉了空氣，使氣流折轉向下，而其反作用力施加在機翼上成為升力。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;最後會發現兩種說法其實都是正確的，互相不排斥，甚至實際上兩種說法互為因果、互相伴隨，&#xA;而具體採用哪種理解方式全看解釋者的主觀意識以什麼為主體。&#xA;很顯然的，我的系列文章選擇了以牛頓力學為主觀視角，原因是我認為從這個角度去理解應該更為簡單容易而已。&#xA;因為如果要以壓力差來作為解釋的核心，那麼首先就得建立在已知流場的情況下，&#xA;於是還是避不過「空氣到底怎麼流的？」這個問題，&#xA;而多少關於升力解釋說法的謬誤就是來自於對這個關鍵問題的含糊呢？&#xA;於是我選擇了另一個解釋方法，直接先來探究「空氣怎麼吹的？」然後再用簡單的牛頓力學去解釋升力，&#xA;重點就是放在「容易解釋並理解」。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;當然這並不是在否定以壓力為主體的升力解釋，因為一個東西好用或不好用，最終還是要看具體的用途而定。&#xA;比方說在應用的角度下，壓力的視角可能更加實用，因為只需要在機翼表面佈滿足夠多的壓力測量管，&#xA;就可以量出在機翼表面的壓力分佈，可以計算出非常準確的受力分佈；&#xA;相反的如果要用牛頓力學去解算升阻力的話，要怎麼測量空氣的流動方向和質量呢？&#xA;不是只要測機翼表面上的空氣就好了喔，讀過我&#xA;&lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E7%BF%BC%E5%9E%8B%E7%B3%BB%E5%88%97-1---%E6%A9%9F%E7%BF%BC%E5%8D%87%E5%8A%9B%E5%8E%9F%E7%90%86/#complex-calculation&#34;&gt;第一篇升力原理&lt;/a&gt;&lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&#xA;的讀者就知道，&#xA;這大概是要把整個風洞的空氣都要測量過一遍然後加總才行了！&#xA;所以壓力分佈的觀點在實務上更加簡便好用，但是牛頓力學的觀點在解釋上更加容易說明理解。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;circulation&#34;&gt;環流計算原理&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil3/fig5-1-kutta-joukowski-lift.gif&#34; alt=&#34;fig5 1 kutta joukowski lift&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 9. 環流升力理論&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_5&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_5&#34; title=&#34;View footnote.&#34;&gt;5&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;有一種對升力的解釋是從環流的角度著手的，當均勻的氣流吹過一個在垂直方向旋轉的氣旋時，&#xA;兩股流場疊加在一起就會產生升力出來。&#xA;不過說實在的，這種解釋方式因為有點過於深奧抽象，所以一般人應該並不容易聽聞這種解釋說法，&#xA;可能只有就讀了相關科系的學生才會接觸到這種環流理論吧！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;其實環流理論雖然看似完全不同於我之前所介紹過的各種升力理論，然而它們其實並不衝突。&#xA;觀看環流流場，也會發現原來的均勻氣流被環流給改變行進方向了，&#xA;所以其實追根究底，環流的升力核心來源還是來自於改變了氣流方向。&#xA;再回顧我在介紹機翼剖面氣流的那篇解說，&#xA;機翼上表面的氣流加速了、下表面氣流減速了、尾部氣流向下了、頭部氣流向上了(如圖 Figure 10)，&#xA;你看這機翼其實不也是產生了一個環流嗎？只不過它產生的環流沒有環流理論所展示的環流那麼完美而已。&#xA;如果要說機翼製造了環流於是產生升力那也是可以，&#xA;就如同前面提到的壓力和反作用力的解釋關係那樣，就只是著眼立足點和解釋方式的差異而已。&#xA;所以說用環流理論來解釋升力是可行的，而且環流理論也是廣泛被學術界所認識和使用的理論，&#xA;也具有足夠的正確性和可用性。&#xA;那麼既然環流理論其實本身並沒有什麼危及到認知正確性的問題，又為什麼這種理論沒有被廣泛用來解釋升力呢？&#xA;其實也就只有兩個原因：&lt;strong&gt;較為抽象難理解、並且不容易套用於現實情況！&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil3/fig5-2-vortex-on-airfoil.png&#34; alt=&#34;fig5 2 vortex on airfoil&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 10. 機翼在氣流中實質產生了一個環流&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;如果考慮的是實際的流場，最適合用環流理論來計算的大概只能是棒球、BB 彈這類飛行物，&#xA;而如果要計算實際的翼型，就會需要先找到一個效果與這個翼型相當的等效圓形均勻環流，然後才能計算；&#xA;問題是如何知道一個任意形狀它究竟等效什麼樣大小、轉速的環流呢？&#xA;就算真給你想辦法匹配了一個適合的等效環流，這個環流也往往太過理想化，&#xA;也無法表現出機翼除了升力之外的其他特性，例如機翼的阻力和轉動力矩等，&#xA;好像環流理論就只能拿來計算升力而已，這就是為什麼我說環流理論實用性比較低的原因了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;那麼環流理論為什麼還會存在，甚至能廣泛普及在學術界呢？&#xA;這就要提到環流理論的最大優勢和用途之所在：&lt;strong&gt;它可以用純數學手段來解算！&lt;/strong&gt;&#xA;壓力分佈和白努利方程主要是對實驗比較友好、牛頓力學法容易被解釋和理解，&#xA;而環流理論既不容易理解、也不貼近現實，但是它可以讓研究員們用純理論數學的手段來解析流場！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_結尾&#34;&gt;結尾&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;以上就是我對目前所聽聞過的對於機翼升力原理的各種解釋，它們其實並不是完完全全的謬論。&#xA;我具體分析了它們錯都錯在哪裡，也說明了如何修正其中錯誤的地方之後成為正確理論的方法。&#xA;那麼你還有聽過什麼更奇怪的升力原理解釋呢？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;footnotes&#34;&gt;&#xA;&lt;hr/&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_1&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_1&#34;&gt;1&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E7%BF%BC%E5%9E%8B%E7%B3%BB%E5%88%97-1---%E6%A9%9F%E7%BF%BC%E5%8D%87%E5%8A%9B%E5%8E%9F%E7%90%86/&#34;&gt;翼型系列 1：機翼升力原理&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_2&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_2&#34;&gt;2&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E7%BF%BC%E5%9E%8B%E7%B3%BB%E5%88%97-2---%E6%A9%9F%E7%BF%BC%E6%B5%81%E5%A0%B4%E7%8F%BE%E8%B1%A1/&#34;&gt;翼型系列 2：機翼流場現象&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_3&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_3&#34;&gt;3&lt;/a&gt;. &lt;a href=&#34;https://zh.wikipedia.org/zh-tw/%E5%8D%87%E5%8A%9B&#34;&gt;Wikipedia: 升力&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_4&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_4&#34;&gt;4&lt;/a&gt;. &lt;a href=&#34;https://www.sohu.com/a/741107125_472787&#34;&gt;【物理揭秘】飞机机翼上的升力是怎么产生的？&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_5&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_5&#34;&gt;5&lt;/a&gt;. &lt;a href=&#34;http://hyperphysics.phy-astr.gsu.edu/hbase/Fluids/kutta.html&#34;&gt;Kutta-Joukowski Lift Theorem&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>翼型系列 2：機翼流場現象</title>
      <link>http://www.huoschen.idv.tw/blog/aerospace/%E7%BF%BC%E5%9E%8B%E7%B3%BB%E5%88%97-2---%E6%A9%9F%E7%BF%BC%E6%B5%81%E5%A0%B4%E7%8F%BE%E8%B1%A1/</link>
      <pubDate>Sat, 18 May 2024 22:24:52 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/aerospace/%E7%BF%BC%E5%9E%8B%E7%B3%BB%E5%88%97-2---%E6%A9%9F%E7%BF%BC%E6%B5%81%E5%A0%B4%E7%8F%BE%E8%B1%A1/</guid>
      <description>&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這篇是接續前篇&#xA;&lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E7%BF%BC%E5%9E%8B%E7%B3%BB%E5%88%97-1---%E6%A9%9F%E7%BF%BC%E5%8D%87%E5%8A%9B%E5%8E%9F%E7%90%86/&#34;&gt;「翼型系列 1 - 機翼升力原理」&lt;/a&gt;&#xA;&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_airfoil1&#34;&gt;[&lt;a id=&#34;_footnoteref_1&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&#xA;的續篇，&#xA;繼續來探討氣流到底在機翼上面發生了什麼事？以及這些現象如何影響機翼的性能？&#xA;目的是讓讀者能夠了解為什麼機翼要被設計成那些奇形怪狀的真正原因，&#xA;進而有能力去「看懂」機翼，甚至能夠知道如何去調整機翼性能的方向。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;upper-lower-speed-difference&#34;&gt;上下表面速度差&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil2/fig1-1-flow-steps.png&#34; alt=&#34;fig1 1 flow steps&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 1. 機翼上下面氣流速度差&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_smoke-stream&#34;&gt;[&lt;a id=&#34;_footnoteref_2&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_2&#34; title=&#34;View footnote.&#34;&gt;2&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;當機翼將空氣流向偏折往下的時候，氣流在機翼上下表面的速度是不一樣的，&#xA;流經上翼面的空氣會被加速，而流經下翼面的空氣會被減速。&#xA;從上圖的實驗截圖中可以很明顯觀察出來，原來在一開始排排站一起的空氣，到了後面的時候，&#xA;那吹過上翼面的空氣都已經離開機翼尾巴了，而這時下翼面的空氣才跑到大約機翼中間的位置而已。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;雖然說實際上並不一定是下翼面氣流到了中間的時候，上翼面氣流就一定剛好到尾端，&#xA;因為上下翼面的流速實際差多少都和很多條件有關，&#xA;例如攻角、流場氣流速度、以及使用的翼剖面形狀等等。&#xA;但是上下翼面的流速確實存在差異，並且通常不會同時抵達尾端。&#xA;這個實驗結果直接打臉了滿大街那告訴你上下翼面的空氣同時到達尾端，&#xA;但是上翼面路徑比較長所以跑的比較快的鬼扯說法。&#xA;如果真的按照這種鬼扯的假設，套用伯努力公式實際計算，&#xA;會發現得出來的升力大小可能遠遠抬不起飛機的重量；&#xA;並且這種假設也無法解釋為什麼飛機可以上下倒過來飛？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;但是流經上翼面的空氣為什麼會被加速呢？&#xA;簡單的結論是因為上翼面的壓力比較低，所以把空氣給用力抽過去了；&#xA;相反的下翼面壓力比較大，所以給流經下翼面的空氣一個推阻減速的作用。&#xA;我想可能有不少人並不能夠直觀的理解為什麼上翼面會減壓增速、下翼面會加壓減速的這個部份，&#xA;為此我們不妨先看一個比較誇張的情況來理解。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil2/fig1-2-back-low-presure.png&#34; alt=&#34;fig1 2 back low presure&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 2. 機翼背面低壓拉動前方空氣&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;上圖左上(Figure 2 左上)的情況基本就是一塊平板直挺挺的擋在那裡，氣流直接吹上去堵在左邊，&#xA;所以左邊壓力會增大，氣流也會被減速，這應該很好的直觀理解；&#xA;右邊則是一個大空洞，這裡會形成一個低壓區域，這個低壓區域就會把上下吹過的空氣往裡面吸過來，&#xA;這應該也很可以直觀理解；&#xA;並且剛剛才被板子用力擠壓，才剛艱難越過板子兩端的高壓空氣，這時再碰上這個低壓區的用力吸引，&#xA;突然高壓釋放的加速效果就會非常明顯。&#xA;現在若我們把板子稍微傾斜一點(Figure 2 右上)，使它不那麼垂直，那麼情況會有差別嗎？&#xA;結論是大體現象仍和板子垂直時一樣，只是流場細節開始有些不同。&#xA;上下的氣流開始不那麼對稱了，稍多一點的氣流傾向往下流動，&#xA;並且在流出板子下端之後比較不容易被抽回板子背面，&#xA;而被抽入背面低壓區的氣流中，來自上端氣流的比例增加了。&#xA;再繼續傾斜平板使攻角愈來愈小(Figure 2 左下)，&#xA;這些同樣的現象依然同樣的在發生，只是影響效果愈來愈小。&#xA;直到攻角零度的時候(Figure 2 右下)，上下翼面沒有任何差異，&#xA;沒有被加速也沒有被減速，也沒有增壓或減壓。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這就是我對於為什麼上翼面會形成低壓區，並且氣流會被加速的淺顯白話解釋了，&#xA;同樣的下翼面氣流遭受機翼下翼面的阻力阻擋，所以下面的空氣就被增壓，&#xA;它會在水平方向減速，並被向下推擠加速。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;separation&#34;&gt;上表面氣流分離&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil2/fig2-1-stall.png&#34; alt=&#34;fig2 1 stall&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 3. 上翼面氣流分離(失速)&lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_2&#34; title=&#34;View footnote.&#34;&gt;2&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;空氣氣流流過機翼上下面時，都會沿著上下表面而吹過，&#xA;但是兩邊的機制不太一樣，並且上翼面的氣流比較難維持。&#xA;經過上翼面的氣流之所以能夠貼著機翼上表面走，主要受到兩種現象的影響，&#xA;第一種就是前面說過的上翼面低壓，這個低壓不只把前面的空氣吸過來加速，也會把上面的空氣吸下來&#xA;(當然也會把後面的氣流往回吸，所以上翼面氣流在過了最低壓區域之後又會慢慢減速，&#xA;不過平均還是快於下翼面就是了)；&#xA;第二種就是康達附壁效應(Coandă effect)，會讓氣流擁有貼著物體表面走的趨向。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;但是這兩種效用都有一定的極限，不可能無限的吸附空氣順著它流，&#xA;當攻角增加到大於某一個程度以後，上翼面的氣流要繼續貼著表面走就會過於困難，&#xA;氣流無法再繼續附著在上翼面表面，從而會分離開來。&#xA;這個現象稱為「氣流分離」(flow separation)，&#xA;用在機翼上又有一個專有的稱呼叫作「失速」(stall)，&#xA;這個氣流分離的現象對機翼的設計使用都非常重要。&#xA;我們知道機翼的升力來自於上下翼面導引氣流所得力的加總，&#xA;當發生氣流分離現象時，上翼面將無法再有效的把空氣吸引改變流向向下，&#xA;因此會直接喪失掉上翼面的升力。&#xA;你可以想像本來兩個人抬著一整架飛機的重量在飛，&#xA;突然一個人消失了，肯定得讓飛機重重摔下來。&#xA;因此我們一般會很重視這個即將喪失升力的失速攻角，&#xA;而機翼翼型的失速攻角也成為衡量這個翼型好壞的一項重要指標數值。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;當氣流分離的情況嚴重時，如同上圖(Figure 3 圖右)那樣，&#xA;此時不只上翼面氣流幾乎從頭開始就沒有再附著在機翼表面，&#xA;連下翼面的氣流在流出尾端後都被往上吸附而捲上來。&#xA;我們在機翼升力的原理那裡說過，機翼產生升力的原理就是從改變氣流流向而來的作用力，&#xA;那麼在氣流分離現象嚴重的時候，不只上翼面不再能夠有效吸附氣流往下，&#xA;甚至連下翼面好不容易折轉的氣流都被大量捲上來。&#xA;這時候就會形成一個機翼幾乎無法有效偏轉氣流，反而還背了個低壓的大漩渦；&#xA;幾乎無法有效產生升力，只產生了強大阻力的極不利現象。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;相較於上翼面要小心呵護氣流，下翼面就寬鬆隨意的多了，&#xA;畢竟除非氣流可以吹斷機翼，否則不管攻角怎麼大，&#xA;氣流在下翼面也只能被老老實實的壓著貼著機翼表面走！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;upper-lower-separation&#34; class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;既然如此，上翼面吸附氣流比較吃力，下翼面則隨便怎麼樣氣流都得照著跑，&#xA;那能不能將機翼形狀設計成上面坡度比較小、而下面坡度抖，如同下圖(Figure 4)這樣呢？&#xA;答案是一般來說沒有辦法，因為我們的機翼不是無限長，總是要有個結束，&#xA;而這樣機翼的上下面將無法會合到一起，到了尾巴只能變成一個問題更大的截斷面。&#xA;這一個陡峭的大斷面可能會產生更大的問題，造成更大的渦流低壓區，變成一個強大的阻力！&#xA;(但也不是絕對沒有人做成這樣，這部份等以後有機會談到機翼高升力裝置的話，會再回來探討這種設計)&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil2/fig2-2-fine-slops.png&#34; alt=&#34;fig2 2 fine slops&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 4. 下翼面坡度大、上翼面坡度小的理想機翼(若不考慮機翼總有結束的地方)&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;separation-condition&#34;&gt;氣流分離的條件&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;上翼面氣流分離的基本原因，就是上翼面的氣流無力再繼續跟著上翼面彎曲的角度，因而脫離了上翼面表面。&#xA;通常來說，氣流分離的條件與攻角有關，當機翼不斷抬高，上翼面氣流要繼續貼著陡峭的翼面行走就會愈來愈困難，&#xA;當攻角抬高到某個臨界值之後，上翼面的氣流就會開始大量剝離機翼表面，這個攻角被稱為「失速攻角」。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;但影響失速現象產生的臨界點除了攻角的大小之外，還和一些其它因素有關，例如氣流速度。&#xA;當機翼所處在的氣流流速降低的時候，發生失速的攻角會被延後，機翼能抬到更高的攻角時才會發生失速；&#xA;如果氣流流速足夠低的話，就可以把攻角抬得高高的仍然保持氣流不分離；&#xA;相對的，當流速愈來愈快的時候，失速攻角會降低。&#xA;這就像是很多學校的樓梯都有那種 180 度的大轉彎，&#xA;當小朋友們為了搶什麼東西而飛速下樓的時候，就很難一直貼著樓梯內側的欄杆走，&#xA;即便用手勾住樓梯欄杆依然吃力，但若放慢速度慢慢走，則貼著欄杆走便非常容易；&#xA;而氣流在流過陡峭的上翼面斜面時也是這樣。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;還有其他的因素也會延後或提前機翼的失速攻角，例如機翼的大小。&#xA;當一個機翼的前後距離(弦長)很長的時候，上翼面氣流要一直沿路貼著走的難度就會增大，&#xA;導致容易走一走就撐不下去而分離，相對的當機翼前後長度較短的時候，氣流要貼著走完全程的難度就會降低。&#xA;另外當機翼處在一個氣體不斷膨脹的環境中時，上翼面的空氣就會受到不斷在膨脹的氣體推擠，&#xA;會更容易貼緊上表面，更不容易發生分離。&#xA;這就像是雖然小朋友們單獨下樓梯的時候不容易時刻緊貼在樓梯內側欄杆，&#xA;但若是好多同學們一起推擠著下樓的話，內側的同學通常就能夠很好的緊貼著欄杆走，&#xA;因為就算他想要離開，也會被周圍其他同學給推回來。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;總結一下，上翼面氣流的分離通常會帶來負面的影響，&#xA;而具體導致氣流分離的發生條件和翼剖面形的設計、以及在氣流中的操作狀態有關。&#xA;影響上翼面氣流分離的幾個主要條件約為：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;ulist&#34;&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;機翼的攻角：攻角愈大時，上翼面坡度愈陡峭，愈容易分離。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;氣流速度：機翼所處在的流場流速愈快時愈容易發生氣流分離，反之流速愈慢愈不容易分離。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;機翼弦長：機翼前後距離愈大，氣流愈不容易從頭到尾緊貼不分，因而愈容易發生分離。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;機翼彎曲弧度：機翼上表面愈彎曲，愈容易產生陡峭的坡度，氣流也會愈容易分離。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;翼前緣形狀：不適合的翼前緣形狀會在前期大量消耗氣流動能，導致上翼面氣流容易無力再緊貼機翼表面，&#xA;因而容易分離。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;流場條件：處在一個空氣不斷在膨脹的流場，上翼面空氣會因為膨脹推擠的緣故而更容易貼付表面，因此不容易分離；&#xA;反之當空氣不斷在壓縮而縮減體積時，氣流就會更容易發生分離。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;stagnation-point&#34;&gt;前緣停滯點&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil2/fig3-1-stagnation-photo.png&#34; alt=&#34;fig3 1 stagnation photo&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 5. 翼前緣停滯點&lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_2&#34; title=&#34;View footnote.&#34;&gt;2&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil2/fig3-2-stagnation-draw.png&#34; alt=&#34;fig3 2 stagnation draw&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 6. 翼前緣停滯點：上為常見的想像位置，下為實際的位置&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;從上圖風洞實驗的照片(Figure 5)還可以發現一個現象，&#xA;上下氣流的分離點可能和許多人想像的不太一樣！&#xA;均勻的氣流從前面吹過來，因為機翼的阻隔而被分成上下兩部份，&#xA;這個在機翼面上，分隔了上、下氣流的中間那個位置，稱為「停滯點」(stagnation point)。&#xA;也許在很多人的想像中，停滯點的位置就是在機翼的最前面(Figure 6 圖上)，&#xA;而且很多機翼的解釋、甚至有些教科書都是這麼畫的；&#xA;然而這是一個天大的錯誤，&#xA;真正的停滯點其實是在往後移動了一小段距離的下翼面前端(Figure 6 圖下)；&#xA;當然如果是負攻角的話，停滯點就會跑到上翼面前端去。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;為什麼真實的情況會與想像中有這點差異呢？為什麼空氣不應該是在最前頭的地方被分開呢？&#xA;答案是在一推擠、一拉扯。&#xA;我們前面說到上翼面空氣會被加速，所以會從周圍拉扯更多空氣進來補位，否則空氣被拉走不就得真空了？&#xA;(先假設空氣還沒到會有壓縮效應的程度)&#xA;同一種解釋的另一種說法是上翼面形成的低壓區也會吸引牽引四周的空氣進來(見 Figure 7)，&#xA;所以上翼面再上面的空氣被往下拉、後面的空氣被往回拉而減速，前面的空氣被往後拉而加速，&#xA;當然也把一部份本來看起來該往下翼面走的空氣給拉過來往上走了。&#xA;另外一邊，在下翼面的空氣被機翼推擠(見 Figure 7)，&#xA;氣流在水平方向減速了，空氣壓力增加，往後塞車的情況下使得大部份氣流被往下推擠，&#xA;當然也有一部份的力被往前推擠，就把一部份本來看起來該走下翼面的空氣被擠出去往上走了。&#xA;於是翼前緣這些許多人直覺上以為該往下走的空氣，&#xA;就在一邊被下翼面增壓推擠、一邊被上翼面低壓吸引之下，往上走了，&#xA;從而使得真正的氣流停滯點下移到了真正的那個位置；&#xA;而且如果攻角繼續增加，這個停滯點的位置也會繼續後移。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil2/fig3-3-push-pull.png&#34; alt=&#34;fig3 3 push pull&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 7. 翼面上下的氣流推拉趨勢&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;leading-edge&#34;&gt;翼前緣&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;前面提到的那個發生在翼前緣的，稱為停滯點的奇異小知識，其實對氣流的影響是關鍵性的。&#xA;前面示意圖故意選用了平板形狀翼剖面，&#xA;你會發現從翼前緣到停滯點之間的氣流會需要艱難的急轉彎翻越這個翼前緣，這其實會產生一個討厭的後遺症。&#xA;我前面說到上翼面抓住氣流比較吃力，當攻角大過一個程度之後就會抓不住氣流，&#xA;使得上翼面氣流分離，產生失速。&#xA;然而氣流之所以會分離的根源原因其實在於上翼面的氣流能量不夠了(動壓損耗)，&#xA;才因此沒有足夠的動力繼續去貼附翼表面，&#xA;而氣流之所以會喪失足夠的能量，其實就是氣流在與機翼表面的摩擦中消耗了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在了解上翼面氣流分離的根源原因在於氣流的與機翼表面的摩擦消耗之後，&#xA;我們再回來看看平板翼的前緣，氣流在這裡急遽的急轉彎轉向，&#xA;有騎過車或開過車的讀者應該可以感受，這是一個劇烈的動能消耗。&#xA;這個消耗會導致一個後果，那就是上翼面的氣流將會更難維持貼附，可能幾度的攻角就能導致發生失速，&#xA;而相比於其他那些比較「常見」的翼剖面形狀，有些低速翼型甚至可以撐到 20 度不失速。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;既然知道了翼前緣對氣流的深刻影響，那麼如果能改善翼前緣劇烈消耗氣流動能的現象，&#xA;就可以延緩上翼面氣流分離的門檻，改善翼型的性能。&#xA;其中簡單的做法就是將翼前緣做成圓弧形(或橢圓形)，就能讓氣流轉向更平緩(如 Figure 8 圖中)。&#xA;頭部圓弧的弧度大小也會影響氣流在這地方的行走流暢度，從而影響機翼形狀的性能，&#xA;圓弧做的太小，就會讓機翼表現更加接近平板的尖銳前緣，增加氣流從前緣翻過的消耗(如 Figure 8 圖左)；&#xA;圓弧做的太大(如 Figure 8 圖右)，就會帶來機翼厚度增加的副作用，&#xA;此外在停滯點位置也會更像一個大的牆壁一樣，強迫更大範圍氣流進行 90 度轉向，&#xA;同樣也會增加消耗。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil2/fig4-1-leading-edge.png&#34; alt=&#34;fig4 1 leading edge&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 8. 不同程度圓角處理的翼前緣&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;camber&#34;&gt;機翼弧度&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil2/fig5-1-cambers.png&#34; alt=&#34;fig5 1 cambers&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 9. 弧狀彎曲的機翼&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;經過前面針對空氣氣流與翼前緣形狀的解釋後，也許有些聰明讀者舉一反三說：&#xA;「啊那我懂了，機翼的形狀就是為了讓空氣可以更順暢的轉向嘛！&#xA;那又為什麼前緣要做成圓形呢？&#xA;我直接順著氣流的流動趨勢做成像上圖(Figure 9 左上)的形狀不是效果更好嗎？」&#xA;如果說平板不利結構強度和空間利用，那就給它一個厚度，&#xA;然後做成上圖(Figure 9 右上)的樣子就好了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;其實這個方案還真的有用，再把前後做成尖銳狀的話就更完美了！&#xA;尖銳前緣正好如同都江堰一樣順暢的將氣流一分為二，沒有前面大圓頭產生的氣流 90 度大轉彎；&#xA;機翼前段不是平直正正的擺放，而是參考前面的風洞實拍，順著氣流進來的自然角度擺放，&#xA;完美避免下面氣流要被迫翻越尖銳前緣的問題；&#xA;翼型中段再用一個弧度設計，將氣流順暢的逐漸改變方向，而不是用一個直挺挺平板直接叫氣流轉向。&#xA;這樣子做出來的翼型就是非常完美的翼型，&#xA;不僅對氣流的不必要擾動最少、阻力最小，還能夠最高效的導引氣流改變方向。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;然後我們把這個翼型放平來看(Figure 9 左下、右下)，有沒有一種豁然開朗的感覺？&#xA;這不就是常見機翼剖面的雛型了嗎！&#xA;這就是為什麼我們通常看到的機翼剖面形狀都是帶有弧形的原因了，&#xA;與什麼伯努力什麼的完全沒關係，單純就是一個弧形可以更順暢的引導氣流轉向而已。&#xA;有些翼型看上去比較難看穿這種設計思路，因為它的下翼面是平的，只有上翼面帶有弧度而已(如 Figure 10)。&#xA;這種翼型其實可以看做是一個厚度漸寬再漸窄的對稱翼，再疊加上一個彎曲的弧度之後的結果，&#xA;恰好使下翼面成為平面。&#xA;而其實這個平面是精心計算設計後的結果，目的就是為了讓下翼面剛好是個平面，&#xA;為的是這樣比較方便加工製造而已！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil2/fig5-2-flat-bottom.png&#34; alt=&#34;fig5 2 flat bottom&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 10. 下翼面做成剛好是平面的帶弧翼型&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;rounded-or-sharped-leading-edge&#34;&gt;圓弧前緣或尖銳前緣的選擇&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil2/fig6-1-round-or-sharp.png&#34; alt=&#34;fig6 1 round or sharp&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 11. 銳角前緣和圓角前緣偏離最佳攻角時的氣流反應&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;現在我們再回顧一下前面才提過的翼前緣形狀設計。&#xA;我們在前面將翼前緣做成圓弧形，是為了避免像平板那樣使氣流必須翻越尖銳的前緣，&#xA;然而現在我們學會將整個前段灣個角度下來主動適配氣流方向，&#xA;這樣看起來完全不需要採用圓弧的前緣，完全避免圓弧前端會給停滯點附近氣流帶來 90 度大轉彎的缺點，&#xA;採用尖銳的前緣設計更能夠令氣流的損耗減到最小；&#xA;但是為什麼這樣子看似完美的形狀卻少見被採用在實際的機翼上呢？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這是因為這種彎曲翼面加上尖銳前緣的翼型只有在特定攻角才能達到最完美效果的緣故，&#xA;一旦攻角偏離了設計上的最佳角度，如同平板翼那樣導致氣流必須翻越尖銳前緣的情況同樣會出現&#xA;(如 Figure 11 左上、右上)。&#xA;然而作為飛機的機翼，飛行姿態隨時在變化、氣流角度隨時都在變化的情況下，&#xA;通常我們更希望機翼對氣流的接納度能夠存在比較寬一點的操作區間，&#xA;至少不會稍微抬個頭、低個頭就給你來個失速警告！&#xA;在此前提下，這種只在特定攻角才有最佳效果、離了最佳攻角就容易失速的形狀顯然就不是個好的設計，&#xA;而這也是為什麼我們平常看到的飛機(超音速飛機除外)，它總是採用圓頭翼剖面型的原因了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;但是換個角度，如果發現在你計劃中的使用情境裡，氣流總是只會在一個設定的特定攻角吹進來的話，&#xA;那麼上面這種尖頭的弧形翼就會變成一個效果極佳的形狀。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;trailing-edge&#34;&gt;翼後緣&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;和翼前緣的情況不同，在機翼尾端我們會想阻止下翼面的氣流翻到上翼面去，&#xA;於是所有機翼形狀的尾巴幾乎毫無例外的都做成尖尖的。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;看下圖所示的幾種翼後緣形狀，如果翼後緣和前緣一樣做成大圓弧(Figure 12 左上)，&#xA;那麼下翼面的氣流就會有向上翻越的趨勢，&#xA;而下面氣流往上翻的這個趨勢，顯然對我們設計的機翼想要將氣流導引轉向向下的目的不利。&#xA;如果將翼後緣的圓弧直徑縮小(Figure 12 右上)，那麼下翼面的氣流翻越阻力就會增加，&#xA;翻越的過程會大量消耗下翼面氣流的動能，從而容易使下翼面氣流分離，就和我們前面解釋上翼面的氣流分離一樣；&#xA;不同的是上翼面的氣流分離是我們所不悅樂的，而下翼面氣流的分離卻是我們所希望的。&#xA;如果翼後緣的弧形直徑非常小，那麼下翼面氣流甚至還未完成後緣的翻越就分離了(Figure 12 左下)，&#xA;這就是為什麼機翼的後緣總是做成尖尖形狀的原因(Figure 12 右下)，&#xA;因為尖頭的形狀可不就可以看作是一個直徑無限小的圓弧嗎？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil2/fig7-1-trailing-edge.png&#34; alt=&#34;fig7 1 trailing edge&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 12. 不同程度圓角處理的翼後緣&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;inverted-flight&#34;&gt;倒飛&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil2/fig8-1-inverted-flight.png&#34; alt=&#34;fig8 1 inverted flight&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 13. 倒飛狀態的機翼&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;至此為止我們看的都是正向設計的機翼機翼擺出的攻角都是朝向產生升力的方向，&#xA;甚至那種帶高彎曲度的機翼也是在這樣的條件之下設計出來的形狀。&#xA;但是眾所周知，飛機也能翻過來倒飛，那麼這時機翼的流場會是什麼樣子呢？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;如上圖(Figure 13 圖上)所示，對稱的機翼是正著還是倒著並沒有什麼差別；&#xA;上圖(Figure 13 圖中)則是為了正飛而設計的翼型，因此翻過來飛之後的升力效果就不太好；&#xA;但上圖(Figure 13 圖下)則是另一個極端，它偏轉氣流向下的能力不佳，尾巴還往上勾起來，&#xA;原來為了特定攻角下引導氣流的翼前緣形狀現在反而變成導致氣流分離的好發地帶，&#xA;整體產生的升力成果不佳，又讓氣流在中間彎彎繞繞增加了阻力，因此飛行效果最差！&#xA;但無論如何，只要機翼仍然能夠導引氣流轉向，它就能產生升力，&#xA;至於產生升力的效率如何？副作用阻力如何？&#xA;這是另外要去討論優化的問題，而與產生升力的原理無關且不矛盾。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這一切都符合我提出的解釋，也符合我們在現實世界觀察到的事實，&#xA;飛機確實可以上下倒著飛，只是倒飛時的效率不好，需要抬高更多攻角才能夠產生足夠的升力支撐飛機重量，&#xA;並且飛行阻力也會增大，因此一般飛機都只有在必要的時候才短暫的進行倒飛。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_總結&#34;&gt;總結&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;經過本文的解說，我們能夠理解一些發生在機翼上面的重要氣流現象，&#xA;明白氣流在每一個地方會受到機翼外形產生什麼樣的流動效果，以及機翼剖面形狀各個部位的形狀如何影響著氣流，&#xA;至此我們甚至有能力從無到有手搓一個全新翼型出來了！&#xA;這樣下回當你再從哪裡看到機翼剖面形狀的時候，你就能夠看懂它，&#xA;也有能力向別人詳細解釋它的形成，和每個部份為什麼會長成那個形狀的實際原因；&#xA;至少不會再覺得翼型就是個不解的迷之形狀，透過完全不清楚的魔法來產生升力了！&#xA;而至此也乎應了我在前篇&lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;所說：&#xA;機翼產生升力的核心原理和那個奇妙的形狀完全沒有關係，升力的真實來源在於引導氣流轉向而來，&#xA;而那個奇妙的形狀只是為了使流場更順暢、更加高效的引導氣流產生升力的最佳化調控結果。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;作為一個總結，我們再一次試著回顧並濃縮本篇所講述的各項，然後嘗試自己手搓一個屬於自己的翼型吧！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;olist arabic&#34;&gt;&#xA;&lt;ol class=&#34;arabic&#34;&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;設計一個一個全新的翼型，首先我們需要決定「機翼弧度」和「厚度分佈」：&lt;/p&gt;&#xA;&lt;div class=&#34;ulist&#34;&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;機翼弧度就是機翼導引氣流轉向的路徑，你可以自己嘗試畫一個，&#xA;具體取決於你想要用一個什麼樣的路徑來引導轉向氣流？以及要轉向的角度有多大？&#xA;畫完弧線後，將它轉個角度放平就是你機翼的翼弧形狀了。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;機翼厚度分佈圖做圖原則就是在維持儘量流線的形狀下，依照你對翼內空間大小的需求而控制厚度。&#xA;需要空間大一點來放油箱、放裝備、放骨架結構的，就把厚度畫大一點，&#xA;激進的話可以把頭尾都更加膨脹，形似橄欖球；保守一點就畫的更纖細一點，形似紡錘。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/div&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;將機翼弧線和機翼厚度合併之後，就得到了翼型雛型。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;用一個圓將機翼前緣做成圓頭，&#xA;採用的圓半徑具體依據你的機翼厚度、和你對機翼攻角操作裕度的考量而定；&#xA;或甚至激進一點的話也可以保留尖頭。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;這一步驟不是必須的，但若你願意的話，&#xA;可以回去前面步驟調整機翼厚度分佈和翼弧彎曲度，使下翼面剛好形成一個平面。&#xA;這麼做的好處是當你要實際使用這個翼型打造機翼的時候會比較容易方便，&#xA;但若你所需要的是絕佳的性能表現的話，那麼也無需多此一舉。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;至此我們從無到有自己產生了一個全新的翼型。&#xA;還有餘力的話就送去進行風洞測試，然後繼續微調最佳化。&#xA;最後給你自己的新翼型起一個名字，把它使用在你自己的飛機上吧！&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil2/fig9-1-airfoil-from-sketch.png&#34; alt=&#34;fig9 1 airfoil from sketch&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 14. 翼型的誕生&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;footnotes&#34;&gt;&#xA;&lt;hr/&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_1&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_1&#34;&gt;1&lt;/a&gt;. &lt;a href=&#34;http://www.huoschen.idv.tw/blog/aerospace/%E7%BF%BC%E5%9E%8B%E7%B3%BB%E5%88%97-1---%E6%A9%9F%E7%BF%BC%E5%8D%87%E5%8A%9B%E5%8E%9F%E7%90%86/&#34;&gt;翼型系列 1：機翼升力原理&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_2&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_2&#34;&gt;2&lt;/a&gt;. &lt;a href=&#34;https://www.youtube.com/watch?v=6UlsArvbTeo&#34;&gt;how wings work? Smoke streamlines around an airfoil&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>翼型系列 1：機翼升力原理</title>
      <link>http://www.huoschen.idv.tw/blog/aerospace/%E7%BF%BC%E5%9E%8B%E7%B3%BB%E5%88%97-1---%E6%A9%9F%E7%BF%BC%E5%8D%87%E5%8A%9B%E5%8E%9F%E7%90%86/</link>
      <pubDate>Sun, 12 May 2024 00:35:02 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/aerospace/%E7%BF%BC%E5%9E%8B%E7%B3%BB%E5%88%97-1---%E6%A9%9F%E7%BF%BC%E5%8D%87%E5%8A%9B%E5%8E%9F%E7%90%86/</guid>
      <description>&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;飛機為什麼能飛起來？機翼為什麼能夠產生升力？&#xA;這已經是一個很老的問題了，也早已有無數前人為了這個問題做出解釋，&#xA;對一個從小就喜歡飛機的我來說，從小到大都看了不少各種說法。&#xA;那為什麼我還要再寫一篇解答呢？因為我覺得那些我看過的解答都不夠理想。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;其中大半關於機翼升力的解釋存在謬誤，甚至連當時國中理化課本對此問題的解釋也不正確，&#xA;這些百家說法誆的童年時的我不只看了不懂，反而心存更多疑惑；&#xA;而那少部份學理正確的解答又多半太過艱深，如果要用來對普通人作為升力效應的解釋，反而更容易加深玄幻。&#xA;甚至有些文章博主或節目主持人在一知半解之下乾脆出口了&#xA;「機翼升力的原理過於奇妙複雜，甚至至今沒有科學家能夠完全解釋！」&#xA;這種不知從何而來卻口耳相傳的話語，把一個簡單的物理現象活活蒙上一層紗，&#xA;給普通人對飛機升力的印象從玄幻又加上了魔法！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;因此在這裡，我將要用我的方式重新解釋飛機的機翼之所以產生升力的原理機制，&#xA;而且我要在保有正確性之餘，儘量用淺顯易理解的方式解釋給你。&#xA;如果你也對機翼的升力原理感到好奇，或者像小時候的我一樣看了一堆機翼原理解說卻仍然帶著疑惑與不解，&#xA;那麼請接著看下去……&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_升力核心原理&#34;&gt;升力核心原理&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;機翼產生升力的原理並沒有那麼複雜，相反的實在太過於簡單。&#xA;坊間一堆人會對著飛機機翼那奇妙的剖面形狀來論述一番，&#xA;然而這些神奇的剖面形狀雖然對升力的產生有提高效率的效果，&#xA;卻與升力的產生本身沒有關係，也不是產生升力的必要因素；&#xA;實務上，就算你隨便拆下一扇門版來當成機翼使用，它依然產生升力。&#xA;探究氣流在吹過機翼之後為什麼就產生升力的問題，升力產生的根本原因其實就是：&#xA;「機翼偏轉了氣流，改變了氣流的方向。」&#xA;換句話說，機翼對氣流施加了力量從而使得氣流向下發生偏轉，&#xA;而受力偏轉的氣流反向給機翼施加了一個等量的反作用力，此即為升力的來源，同時也是阻力的大宗成份。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil1/fig1-1-flats.png&#34; alt=&#34;fig1 1 flats&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 1. 氣流導流片，從左圖一整排導流片，中圖較為稀疏，到右圖只剩一個導流片&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;如上圖(Figure 1 圖左)所示，&#xA;想想看，管道裡的氣流平行從左往右吹過去，在經過出口的一排葉片之後，氣流會發生什麼變化？&#xA;是不是氣流在經過這排葉片之後，就幾乎全部被偏轉向下了呢？&#xA;像這樣的流場裝置其實在大家的生活裡經常可以看到，因為這就是冷氣機出風口的導氣葉片，&#xA;大家都見過，也都很容易直覺理解。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;你覺得管道導氣葉片和飛機機翼相差甚遠嗎？&#xA;那如果我們拆走一些導氣葉片的話，你覺得氣流會有什麼不一樣嗎？&#xA;如上圖(Figure 1 圖中)減少了導氣片的數量，也許因此導致導氣轉向的效果降低了，&#xA;但是這排葉片的導氣效果依然存在，而且偏轉氣流的原理機制依然是一樣的。&#xA;繼續減少導氣葉片直到如上圖(Figure 1 圖右)只剩下一片葉片，看這不就是和一片機翼一樣的東西了嗎？&#xA;只有一片葉片，它仍然具有折氣的現象，即便這個現象會弱化到不太容易明顯的觀察出來。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;a class=&#34;image&#34; href=&#34;https://en.wikipedia.org/wiki/File:Denney.kitfox.g-foxc.arp.jpg&#34;&gt;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil1/fig1-2-airfoil-on-airplane.jpg&#34; alt=&#34;fig1 2 airfoil on airplane&#34;/&gt;&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 2. 飛機機翼剖面形狀&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_1&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;現在我們回來看看另一張圖片(Figure 2)，&#xA;從飛機側面看過去可以明顯發覺它的機翼並不是呆板的平板一片，&#xA;而是帶點神奇弧度、型似剖半水滴的形狀，這就是我們通常所說的機翼剖面形狀。&#xA;然後一堆人就會拿著這個形狀，用各種似是而非的說法去試圖解釋升力的原理，&#xA;但是因為理解錯誤，所以怎麼樣都會有一些無法解釋的盲點，最後只好歸因於魔法了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;所以我們首先要跳脫這個框架陷阱，這裡我就直接告訴你，升力產生的原因和這個形狀並沒有關係！&#xA;你可以把這個形狀上下翻倒過來倒著飛，它一樣能產生升力；&#xA;就算再把它前後方向也轉過來顛倒著頭尾來飛，它依然會產生升力。&#xA;你甚至可以把它換成其他各種奇怪的形狀，只要它還具有導流轉向的作用，它就能夠產生升力；&#xA;至於產生升力的效果大或小、帶來的副作用如阻力是多或少等等，&#xA;那就是另外的問題了，是流場效果最佳化的問題，&#xA;而事實上那才是為什麼我們通常看到的機翼剖面會長成那個樣子的真正原因。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_以牛頓力學解釋&#34;&gt;以牛頓力學解釋&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil1/fig2-1-aoa.png&#34; alt=&#34;fig2 1 aoa&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 3. 攻角(AOA)&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;前面說過，機翼產生升力的最主要原因在於改變了氣流的方向，因此機翼這片板子必須要和氣流存在一個夾角，&#xA;有了這個角度的存在，機翼才能折彎氣流的行進方向。&#xA;這個夾角就被稱為「攻角」(Angle of Attack (AOA))，&#xA;正的攻角表示機翼往上抬起，而負攻角表示機翼往下低頭。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil1/fig2-2-weight.png&#34; alt=&#34;fig2 2 weight&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 4. 將空氣簡化為法碼，受機翼影響改變流向&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;一個帶攻角的機翼如何偏折空氣而產生升力呢？&#xA;我們先將機翼上下的兩團空氣簡化為上下兩個質量塊，也就是圖中的法碼 A 和法碼 B。&#xA;假設它們質量各為 1 kg，並以 10 m/s 的速度衝向一片帶有 30 度攻角的機翼。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;A 法碼很容易理解，它撞擊到機翼的下表面後被機翼偏轉了方向，改為往下 30 度的方向繼續前進。&#xA;這裡要注意一點，我們為了簡化的緣故而用法碼代替一坨空氣，&#xA;因此它不是像乒乓球打到球拍那樣反彈，而是在碰撞之後偏折為和機翼同一個方向離去。&#xA;離開了機翼的法碼速度為 10 m/s 並方向為 30 度往下，&#xA;我們可以把它分解為水平速度 0.866 m/s 和垂直的速度 0.5 m/s，&#xA;我們可以藉由牛頓運動公式 &lt;code&gt;F = M*V2 - M*V1&lt;/code&gt;，&#xA;算出機翼受到了向上的升力 5 N 和向後的阻力 1.34 N。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;機翼下表面偏轉了空氣所產生的升力就是機翼全部的升力了嗎？&#xA;並不是，因為我們容易忽略了機翼上表面也能夠吸引氣流往下。&#xA;機翼上表面一樣可以把空氣吸下來，這就是圖示裡法碼 B 的那部份。&#xA;從機翼上表面過去的法碼 B 所代表的一坨空氣也會被吸引偏折往下，它與下表面法碼一樣往下偏折了 30 度，&#xA;那麼它產生的升力和阻力也就和法碼 A 是一樣的。&#xA;因此機翼最終受到的升力和阻力，就是兩個法碼對它產生的力的和，是 10 N 的升力和 2.68 N 的阻力。&#xA;這個數字其實並不重要，它與實際上的數值差異相當大，因為中間我們簡化了太多的東西。&#xA;不過這只是為了用來解釋最核心的原理邏輯而為之，我們後面會再把它愈來愈複雜的部份慢慢加回來。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這裡我們還要注意另外一個重要的現象。&#xA;在前面的示例中我們假設的是一個超完美的情況，沒有摩擦、也沒有任何損耗，僅僅只是讓空氣轉向了而已。&#xA;然而就是這麼樣一個完美的流氣轉向，它在垂直方向的加速度給我們帶來了我們想要的升力，&#xA;而水平方向的加速度卻同時給我們帶來了阻力。&#xA;這告訴我們在機翼產生的阻力裡面，至少有這麼一部份的阻力是伴隨著升力而產生的，不可能完全消除。&#xA;我們可以花費各種巧思去減少其它成份的阻力，例如打磨光亮使空氣摩擦產生的阻力減到最低等，&#xA;但對於這個因為產生了升力而伴隨出來的阻力則沒什麼好方法去阻止它，&#xA;因為它之所以產生的原因正好就是升力產生的原因。&#xA;若要減少這種因為升力而伴隨的阻力，則只能同步降低升力；若要完全消除這種阻力，則它必然無法產生升力！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_更加接近真實空氣&#34;&gt;更加接近真實空氣&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil1/fig3-1-line-of-weights.png&#34; alt=&#34;fig3 1 line of weights&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 5. 上下方向附近的空氣法碼其實互相都會影響著彼此&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;目前為止我只是解釋了最核心的升力原理，但是如果照這麼計算的話，就會發現和現實有很大的落差，&#xA;這是因為原理雖然是這個原理，但是真正的空氣卻也並不是硬梆梆的兩塊硬物。&#xA;那麼為了解釋發生在機翼上面的各種空氣流體現象，我們就得一步一步更加了解真實的空氣。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;真實的空氣肯定不是一坨硬物，空氣其實是一大堆自由活動的粒子，也就是空氣分子。&#xA;但是空氣分子實在是太小了，干擾我們對空氣流動的理解，我們可以把它想成是大一點的沙粒顆粒。&#xA;這些顆粒之間彼此具有一定的吸引力，&#xA;所以如果你把一部份空氣粒子拉走了，旁邊會有一部份粒子也像是被黏著一樣跟著跑，&#xA;然後更遠的其他空氣粒子就會想過來補充這個空出來的空間。&#xA;空氣顆粒之間雖然互相吸引，但如果距離太近的話它們也會互相排斥，&#xA;所以如果你把一部份空氣粒子捏在一起，它們就會很難受的想推開你的手往外衝，&#xA;只要你手一放開了它們就會用力竄出去。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;那麼我們把剛剛的條件，就是機翼上下兩塊大法碼的假設，更換成上圖(Figure 5)那樣上下一整排的小法碼。&#xA;那麼機翼下面的法碼 A1 的行為其實就和我們之前的設想應該是完全一樣的，&#xA;而法碼 A2 也因受到法碼 A1 的推擠而往下轉向，&#xA;只不過這種間接影響力打了個折扣，所以 A2 的轉向效果比 A1 更少一些。&#xA;後面 A3 也同樣受到 A2 推擠而轉向，不過受的影響更少，再後面 A4、A5…​…​ 都可類推，&#xA;到了 An 的時候因為距離已經很遠，所以幾乎沒受到影響。&#xA;機翼上面的一整排法碼也是一樣的，B1 被吸引下來沿著機翼上表面轉向，&#xA;B2 同樣受到影響但打了個折，然後 B3、B4…​…​ 以此類推，&#xA;直到 Bn 才像個沒事人一樣幾乎不受影響。&#xA;最後把 A1 到 An、以及把 B1 到 Bn 的法碼們受到的力加總起來，就是更接近真實情況的機翼升力了，&#xA;雖然離真正的真實情況還是有點距裡，不過只少比其前一個只有 A、B 兩法碼的假設之下是準確多了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;而這裡也解釋了為什麼法碼 A1 沒有在撞擊到機翼之後走反彈路徑，而是貼著機翼下表面走？&#xA;這就是因為它被 A2 的推擠壓力給頂回去了；&#xA;同樣 A2 和 A1 碰撞之後也沒有走反彈路徑，也是因為 A3 的存在而造成的。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;complex-calculation&#34; class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil1/fig3-2-weights-everywhere.png&#34; alt=&#34;fig3 2 weights everywhere&#34;/&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 6. 各個方向的法碼其實都會互相影響著彼此&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;更進一步，除了在上下方向上的空氣會互相影響之外，&#xA;其實前後方向的空氣粒子也同樣會彼此產生影響和干擾，&#xA;比如後面的空氣慢下來了，前面的空氣也會跟著提前慢下來、或者提前轉向；&#xA;當然後面的空氣若加速跑了，前面的空氣其實也會受影響而開始加速，&#xA;或者附近的空氣會開始轉向朝這裡填補進來。&#xA;所以我們進一步把代表空氣粒子的法碼們像上圖(Figure 6)一樣佈滿在整個空間中，&#xA;然後計算彼此互相的影響並加總，就能得出更加接近真實的結果。&#xA;當然這樣的計算已經有點複雜了，不再是簡單手算就能夠應付過來的。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;imageblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;a class=&#34;image&#34; href=&#34;https://www.youtube.com/watch?v=6UlsArvbTeo&#34;&gt;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/airfoil1/fig3-3-airfoil-streamline.png&#34; alt=&#34;fig3 3 airfoil streamline&#34;/&gt;&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;title&#34;&gt;Figure 7. 實際的翼型風洞實驗&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_2&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_2&#34; title=&#34;View footnote.&#34;&gt;2&lt;/a&gt;]&lt;/sup&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;現在來看看這張在實際風洞實驗中拍攝出來的流線圖，&#xA;它在吹氣的源頭加入了煙霧標記，使我們可以用眼睛看見本來難以觀察的空氣流動走向。&#xA;圖片上面標註的 A 和 B 區正好對應了先前把空氣假設為一排法碼所表現的樣子，&#xA;而 C 區也清楚的展示了空氣擾動會往氣流上游方向傳遞的特性，&#xA;即使這部份的空氣還沒有真正接觸到機翼，卻已經提前開始受到影響而轉向了。&#xA;尤其 C 區展現出來的現象特別重要，因為一般直覺上我們只知道上游的擾動會影響改變下游的氣流，&#xA;生活上卻比較少注意和感受氣流下游的擾動使上游發生變化的這個部份。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_結論&#34;&gt;結論&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;至此我們了解了機翼產生升力的原因是來自於轉向了氣流，&#xA;也透過一些簡單的物理原理來示範和計算空氣的作用力。&#xA;請不要太小看這樣簡單的計算，因為事實上這就是基於空氣粒子的空氣動力模擬計算雛型。&#xA;然而在解釋了升力原理之後，我想讀者腦中一定會浮現出更多的問題，&#xA;比如「你說升力和那個形狀沒有關係，那為什麼人家機翼要造成那個形狀？」等等。&#xA;因此，下一篇我將要來繼續探討那些空氣發生在機翼上面的故事……&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;footnotes&#34;&gt;&#xA;&lt;hr/&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_1&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_1&#34;&gt;1&lt;/a&gt;. &lt;a href=&#34;https://en.wikipedia.org/wiki/Airfoil&#34;&gt;Wikipedia: Airfoil&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_2&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_2&#34;&gt;2&lt;/a&gt;. &lt;a href=&#34;https://www.youtube.com/watch?v=6UlsArvbTeo&#34;&gt;how wings work? Smoke streamlines around an airfoil&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>人體的美感</title>
      <link>http://www.huoschen.idv.tw/blog/gender/%E4%BA%BA%E9%AB%94%E7%9A%84%E7%BE%8E%E6%84%9F/</link>
      <pubDate>Tue, 05 Mar 2024 00:02:27 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/gender/%E4%BA%BA%E9%AB%94%E7%9A%84%E7%BE%8E%E6%84%9F/</guid>
      <description>&lt;p&gt;什麼是美？我們對美感又如何評價呢？&#xA;從來，只要談論到審美的話題，我們總是被教育說美感沒有標準，每個人都能有自己獨特的眼光。&#xA;但是世界的現實卻告訴我們這觀念錯了，大大的錯了！&#xA;至少對於同為人的人體來說，美感是有正確性與否的，是有對與錯的分別的。&#xA;只不過這美感的對或錯，不是由任何人來評價，而是由達爾文來對每一個人的審美做評分；&#xA;那些在美感的試卷上填答錯誤的人，將要接受無情又殘酷的懲罰！&lt;/p&gt;&#xA;&lt;p&gt;何謂美？賞心悅目即為美；那麼怎麼樣的人體會讓人賞心悅目呢？&#xA;試著回想一下，人們普遍對什麼樣的身形體態感到賞心悅目？對什麼樣的臉蛋感到愛不釋手呢？&#xA;其實古希臘人的雕像幾乎就已經完整的展現出什麼樣子的人體最讓人嚮往。&#xA;並且希臘雕像也告訴我們男人與女人的美是大異其趣的，&#xA;若有雕成女人樣子的男體、或者雕成男人樣子的女體，都很恰巧的不會讓大部份的人覺得美。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;男人與女人&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/gender/%E4%BA%BA%E9%AB%94%E7%9A%84%E7%BE%8E%E6%84%9F/#%e7%94%b7%e4%ba%ba%e8%88%87%e5%a5%b3%e4%ba%ba&#34;&gt;男人與女人&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;我們先從簡單的來看，由男性的主觀角度出發，什麼樣的女人會使男人們心生嚮往、感覺舒暢呢？&#xA;這部份大概沒什麼爭議而且有共識，乳房大的更受喜愛，如果都乳大的話，那就比較挺立的更受青睞；&#xA;臀部較寬的女性較受喜愛，如果臀都寬的化，那就腰纖瘦且腰臀比恰到好處更受青睞。&#xA;有沒有發現一件事，這些特徵都是和女性的生育與喂哺能力掛勾的？&#xA;乳房的大小直接對應了哺乳的潛在能力，&#xA;而髖骨的大小和寬度對應了承載嬰兒的能力、以及讓嬰兒的大頭能夠順利穿過的能力。&#xA;這就是人體美感的核心價值，其實沒有那麼多虛無縹緲的天花亂墜，&#xA;其實核心就是圖個能生好養，並且對那更能生小孩的身體、或者更能養小孩的身體更加傾心愛慕！&#xA;有些看客到這裡請先別急著反駁，&#xA;我知道很多人主觀意識上可能不存在這樣的想法，但是你的身體有這樣的想法；&#xA;這些偏好可能大半不是直接來自你的大腦意識，而是那刻在基因裡面的深層因素在影響著你的偏好，&#xA;我們稱之為「天性」。&lt;/p&gt;&#xA;&lt;p&gt;除了乳房和臀部明顯和生育直接相關之外，&#xA;對於其他身體特徵的偏好雖然不如此二特徵明顯，但其實也全部都是直指著一件事：生育價值！&#xA;比方說沒有過多贅肉的身形體態告訴你她的健康狀態和身體機能良好；&#xA;細嫩緊實的皮膚、柔滑茂密的頭髮告訴你她正處在年輕的生育巔峰狀態；&#xA;如果男人喜歡那女人身上所散發出來的不知名的淡淡幽香的體香，這更是女人生殖相關荷爾蒙分泌旺盛的指標，&#xA;那個味道的「不知名的奇妙」更是「你大腦不用認識，只要你身體能認得就行」的輔證。&lt;/p&gt;&#xA;&lt;p&gt;其他還有一些男人所青睞的女性身體特徵與生育的直接關聯性更遠，&#xA;比方說身形高挑、四肢修長，乃至於膚色的深淺、體毛的多寡等等。&#xA;那是因為具有這些身體特徵的人的生存能力更高，而這樣的女性的下一代大概率會繼承這些特徵，&#xA;因此與這樣的女性交配將更能夠生出具有優秀生存能力的後代。&#xA;(至少對於這位男人來說是這樣的，因為兩人合併產生的下一代比自己更優良；&#xA;至於如果女性嫌棄這位男性的話，可能單純是因為對該女性來說，與他合併的下一代的品質是被拉低了！)&lt;/p&gt;&#xA;&lt;p&gt;說完了男人之後，我們來看看女人覺得什麼樣身形體態的男人更有吸引力？&#xA;我們知道女性所認為美(或稱為有吸引力)的男性，和男性覺得美的女性是不相同的，&#xA;至少不會覺得有 S 曲線的男人更美，可能也不覺得細皮嫩肉的男人更能令自己小鹿亂撞。&#xA;相反的，粗曠的皮膚和毛髮也許更加俱備吸引力！&lt;/p&gt;&#xA;&lt;p&gt;對於男人的美，特別是女人眼中的男人的美，&#xA;更多的成份來自於肌肉的力量、高大的身材、和更加孔武有力的外表等等，&#xA;最好身形如倒三角，渾身散發睪固酮的味道。&#xA;這些特質其實都反應了這個男人的生存開拓能力，&#xA;是隱含著這個男人是否更有能力保護身邊女人與孩子的潛力，&#xA;又或者是與獵物或敵人搏鬥，取得生存空間和資源的能力。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;關於那臉上的長相&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/gender/%E4%BA%BA%E9%AB%94%E7%9A%84%E7%BE%8E%E6%84%9F/#%e9%97%9c%e6%96%bc%e9%82%a3%e8%87%89%e4%b8%8a%e7%9a%84%e9%95%b7%e7%9b%b8&#34;&gt;關於那臉上的長相&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;人臉的長相輪廓，可能是一個人全身上下的所有表徵之中最難解釋與生存繁衍之間連繫的特徵了。&#xA;不同的長相、不同的輪廓、甚至不同五官比例，或許多少都存在我們覺得美的樣子，&#xA;乍看好像真的是人人皆有所好；&#xA;但若我們暫且不看那讓我們覺得美的部份，而是看看那我們覺得醜的部份的話，仍然能夠看出一些端倪。&lt;/p&gt;&#xA;&lt;p&gt;其實人臉可以非常細微的傳遞出一個人的身體狀態，&#xA;就連這個人全身上下都很好，只是今天病了、或倦了，我們都能透過對方的臉部細節察覺出一些情況。&#xA;當然通常來說，生病或疲倦都只是暫時的情況，並不影響我們對這個人的喜好；&#xA;但試著回想一下，在我們人生經驗當中有沒有那種總是傳遞出病態或倦態的人呢？&#xA;是不是這些人就比其他人更不容易得到別人的喜愛。&#xA;(當然我們要先排除這人的其他條件差異，就只著重臉面的影響)&#xA;這其實就支持了我的說法，人的臉面傳遞出這個人的身體狀態，&#xA;而不同身體狀態所對應的求生或繁衍能力，影響著我們對這樣臉膀的喜愛程度。&lt;/p&gt;&#xA;&lt;p&gt;人臉非常細緻的不同都能讓我們察覺出這個人的身體狀態，&#xA;比方在整個人的外表機能還未出現顯著差異的時候，臉上的細紋就能告訴你這人即將告別生育的最佳時間；&#xA;而男人對女人臉上細紋的嫌惡程度更勝於女人對男人，正好乎應男人比女人更在乎年齡帶來的生育價值。&#xA;這方面幾乎不需要什麼強有力的證據，因為絕大多數人類的自身感知都能支持這個論點，&#xA;比方同樣一張臉、同樣的輪廓和五官，人們一定更喜歡皮膚滑嫩的、而排斥有著大皺紋或小細紋的臉；&#xA;人在臉上所下的掩飾功夫(化妝)比身體其他部位更勤且豐富，而且女人比男人的臉部退化對人的審美知覺更加敏感，&#xA;這一切都在告訴我們臉部皮膚指示著這個人的生育價值。&lt;/p&gt;&#xA;&lt;p&gt;除了皮膚狀態以外，臉上的五官輪廓等其他特徵也幾乎全都指向著人的生育價值或生存價值，&#xA;我們也許不容易對應那美的、帥的部份，但對於那醜的部份總是很容易對應。&#xA;比方人臉的對稱性表達了這個人是否存在傷殘病徵、或先天上的生理缺陷？&#xA;你可以自己做個實驗，拿兩個帥哥、或兩個美女的臉，各取左、右兩半邊合成出一張新的臉，&#xA;然後看看這樣左右不對稱的臉是否仍能讓你感到愉悅？或甚至感到排斥？&#xA;臉上的其他許多特徵也是如此，例如：&#xA;眉毛的密度告訴你這個人的眼睛是否會在大量流汗之下被浸溼得睜不開；&#xA;深邃的眼睛告訴你他的眼睛能被保護的更好，避免被砸向面部的異物擊傷；&#xA;高聳的鼻樑告訴你他在寒冷的地方能夠更加充份的加熱吸入的空氣；&#xA;透徹明亮的雙眼和緊實的臉皮告訴你他正處在體能狀態的巔峰；&#xA;削瘦的面膀反映這個人的營養狀況不佳，可能缺乏生存能力，&#xA;當然過於充滿衡肉的面膀也同樣告訴了你這人的身體狀態可能不適合承擔高強度工作；&#xA;還有頭上的頭髮數量和毛岔狀態等等，在在都是反應眼前這個人的身體狀態的指標。&lt;/p&gt;&#xA;&lt;p&gt;這些臉上的一切特徵都是絕大多數人類直覺當中覺得美或醜的依據，也是我們通常最在乎的自身特徵，&#xA;同樣是人們極力隱藏或變造的身體特徵。&#xA;其實臉上的化妝不過就是在做一種生物特徵的欺騙(或者好聽的說法叫修飾)，&#xA;使我們能夠展現傳遞出來一個訊息：&#xA;我現在身體狀況極佳、沒有疾病且身體機能巔峰，或者正是最適合懷孕的時候。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;美感從何而來&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/gender/%E4%BA%BA%E9%AB%94%E7%9A%84%E7%BE%8E%E6%84%9F/#%e7%be%8e%e6%84%9f%e5%be%9e%e4%bd%95%e8%80%8c%e4%be%86&#34;&gt;美感從何而來？&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;至此我們能發現，所有的人體之美其實都不過是個體生存和繁衍能裡的指標展現罷了。&#xA;所謂的審美、眼光、喜好，都只是現代人掩蓋了那羞於觸及啟齒的事物的華麗包裝。&#xA;即便自詡為高貴文明的人類，在華麗的表面包裝之下也不過都是生物本能展現而已，&#xA;人類與其他動物並沒有什麼太多的不同，從基因而來驅使我們最在乎的事情，就是生存和繁衍這兩件事；&#xA;就算再有其他的事情，其實也都是在為生存繁衍這兩件事情服務而已！&lt;/p&gt;&#xA;&lt;p&gt;那麼美感從何而來呢？為什麼我們認為美的身體總是會和生存繁衍掛勾呢？&#xA;對此的簡單解答就是：&#xA;因為只有那些有利於生存和繁衍的本能感覺，才能在漫長的演化歲月裡留存下來；&#xA;而那些不利於生存或繁衍的本能感覺，會消失在演化的浪潮裡。&lt;/p&gt;&#xA;&lt;p&gt;不過其實若要追溯到生物的底層反饋邏輯的話，&#xA;人的美感乃至一切生物的喜好都是無來由且沒有邏輯的，甚至大多數可能具體機制不明，&#xA;反正就是某些生物特徵能夠開啟對方覺得美的開關，而另外某些生物特徵則會開啟覺得厭惡的開關。&#xA;其實從正確的角度來說的話，我們其實難以解釋、甚至不能解釋為什麼人的審美是這樣？&#xA;我們只是確切肯定只有那最正確的審美感覺才能夠流傳延續下來！&lt;/p&gt;&#xA;&lt;p&gt;如果要更深刻的解釋這件事情，我們需要先來假設一件事：&#xA;假設人類是從 100 萬年前就砰的這麼一聲出現在世界上。&#xA;那麼這個時候肯定是什麼人都有，各種奇怪的美感絕對充斥在每個人類個體身上，反而一點都不奇怪了！&#xA;肯定有人喜歡瘦骨嶙峋的、也有人喜歡肥胖滾圓的；&#xA;你覺得滿臉皺紋的人讓你敢到厭惡，但肯定有人覺得皮上沒有一點皺折的人讓他倒彈，&#xA;更有人覺得那擁有反覆皺折的粗糙皮膚能感到興奮愉悅；&#xA;有人不喜歡站得直挺的，就喜歡痀僂著的樣子；&#xA;有人不喜歡四肢健全的，就是覺得缺胳膊少腿的性感；&#xA;有人不喜歡渾身充滿肌肉的，就覺得那骨瘦如柴的讓他砰然心動。&#xA;如此等等，任何你能夠想像出來的各種奇葩美感，&#xA;我們都假它確實存在，假設就是會有人覺得這樣子的人美。&#xA;然後經過了 100 萬年，猜猜看只有什麼樣的「天生的」美感能夠留存下來？&lt;/p&gt;&#xA;&lt;p&gt;你會發現一件事：&#xA;如果你喜歡缺胳膊少腿的男性，那麼你的伴侶其實不容易在地球上存活下來；&#xA;如果你無法接受那沒有殘缺的對象，那麼你將難以產生後代，而你那獨特的審美天性也將難以繼續延續。&#xA;如果你喜歡年老的女性，那麼你的伴侶將不容易產下後代；&#xA;如果你無法接受年輕的女性，那麼你這獨特的審美天性也將會消散在漫長的演化歲月裡。&#xA;而這些，其實就是人類美感的煉製歷史，都是在艱苦的求生路和繁衍的篩選之下精練的最後結果；&#xA;美感並不是包羅萬象百般接納的，而是有著絕對的對與錯之分，&#xA;只不過為每個個體的美感進行評分的不是任何一個老師、也不是任何雞湯文，而是達爾文；&#xA;上百萬年以來，如果人在審美這道題上交出了錯誤的答案，&#xA;那麼他將會被拋棄在演化的道路上，消失的無影無蹤。&lt;/p&gt;&#xA;&lt;p&gt;因此那人類的審美，其實並不是我們很剛好的覺得那能夠讓我們生存繁衍的東西美，&#xA;而是那但凡不能幫助我們生存繁衍的美感，都被篩選淘汰掉了！&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;審美是否一成不變&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/gender/%E4%BA%BA%E9%AB%94%E7%9A%84%E7%BE%8E%E6%84%9F/#%e5%af%a9%e7%be%8e%e6%98%af%e5%90%a6%e4%b8%80%e6%88%90%e4%b8%8d%e8%ae%8a&#34;&gt;審美是否一成不變？&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;美感與生存繁衍高度連結，存在著對與錯的正確解答，那麼人類的美感是否就是一成不變的呢？&#xA;答案是既然美感與生存繁衍掛勾，那麼就會隨著不同地區的生存條件而有所差異，&#xA;例如我們一般都知道的東方與西方對人的美感就呈獻出令人稱奇的不同。&#xA;此外南方人與北方人、熱帶溫帶與寒帶、潮溼與乾燥等等，&#xA;在不同生存條件之下孕育出來的人體美感也會產生大大小小的差異，&#xA;總歸而言其實都是因為不同地方的生存條件不同，&#xA;最終使得最適合、或最不適合生存繁衍的人體特徵有所差異所致。&lt;/p&gt;&#xA;&lt;p&gt;甚至於不同時代的不同生存條件也會使得人類的美感發生變化。&#xA;例如我們常在一些出土的古老洞穴壁畫中發現，古代祖先眼中的大美女往往都是圓滾胖，&#xA;其實這也是因為在遠古狩獵採集的時代，肥胖的特徵其實表示身上積存了足夠的熱量，比別人更具有忍飢受餓的能力；&#xA;講到這裡也許有些胖胖的現代人要會心一笑了，是不是覺得如果生在古代就好了？&#xA;但且慢，請先憋住你的笑聲，因為如果真的穿越回了古代，你真的以為能吃胖是一件很容易的事情嗎？&#xA;所以某一方面來說，身寬體胖所展現出來的並不只是吃的多而已，還表示你可能是具有權力地位的上層階級，&#xA;才能在減少勞務的情況下不缺乏食物的供養。&#xA;總歸而言竟然是因為肥胖的體徵是人擁有更大生存能力的可見指標！&lt;/p&gt;&#xA;&lt;p&gt;但是隨著人類的生存方式從狩獵採集逐漸步入農業畜牧，糧食的供應漸趨穩定，&#xA;肥胖的好處漸漸的愈來愈難以體現，反而是它的壞處漸漸使擁有此項特徵的人更趨向於不利生存，&#xA;因此人類的審美也因此開始悄悄的發生了變化！&#xA;隨著生存條件的改變，達爾文對於「什麼叫作美」這道題的標準答案一聲不吭的改變了，&#xA;而且沒有任何人去通知生活著的人們這件事情，人們仍舊一如往常的喜歡這個或討厭那個。&#xA;來到審判的時候了，當達爾文按牌底下的謎底掀開，他的判決沒有憐憫或寬恕；&#xA;人們所抱持的從祖父輩傳誦下來的標準正確答案忽然之間就成了極大錯，&#xA;即便喊冤抱屈，等待他們的宿命依然是被無情的拋棄在演化的道路上，&#xA;那隨著他們的基因所承載的美感天性也隨之一起消散無蹤；&#xA;自然之神已經默默開始眷顧那擁有另一種美感傾向的人。&#xA;這些答題正確的人做對了什麼？他們其實什麼都沒做，&#xA;只是他們原本非主流的天生喜好正好命中了正確解答而已！&#xA;這些原本非主流的少數將獲得勝利的果實，他們要發展茁壯，蠶食鯨吞，直到成為人類的主要組成。&lt;/p&gt;&#xA;&lt;p&gt;那麼回到開始的問題，人類的審美是一成不變的嗎？既對也不對。&#xA;美感只不過是最佳生存繁衍策略的一個表面現象而已，&#xA;當生存繁衍的條件發生變化的時候，所謂的審美也就會開始跟著發生變化；&#xA;&lt;strong&gt;只不過基於基因演化所導致的改變，都是以萬年為單位計算的；&lt;/strong&gt;&#xA;&lt;strong&gt;若只考量一兩代人可見的範圍內的話，那麼這就會成為一種無法改變也無法撼動的天性！&lt;/strong&gt;&#xA;這一項重要的特徵，將是我之後整個兩性相關議題的重要概念基礎。&#xA;事實上許多現代社會所遭遇的性別相關議題，八九成是因為當代人類社會已經產生了劇烈變化，&#xA;而那影響我們對事情的任何好惡或所謂「感覺」，卻都是萬年前的基因所給予我們那可能已經不合時宜的天性所致。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;結語&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/gender/%E4%BA%BA%E9%AB%94%E7%9A%84%E7%BE%8E%E6%84%9F/#%e7%b5%90%e8%aa%9e&#34;&gt;結語&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;這裡我從演化的角度來重新審視並解釋了人體之美感、以及我們審美天性的來源，&#xA;而我們的審美實際上也極大的影響了我們對於異性的好惡傾向，兩者互相牽扯糾纏。&#xA;人體的美感可別說是受到生存繁衍的影響了，而根本就是源自於生存繁衍的優勢才影響並篩選了人的審美，&#xA;然而兩性實際上的吸引和互動關係其實更為複雜得多，並不能只用單一的人體表徵因素來全部解釋。&#xA;或者換句話說，在這有限的篇幅範圍內只能暫時排除其他一切因素，&#xA;只單獨討論身體表徵在吸引力上的互相引響關係；&#xA;至於除此以外的其它部份，只能後續再慢慢探討了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>兩性擇偶的殘酷戰場</title>
      <link>http://www.huoschen.idv.tw/blog/gender/%E5%85%A9%E6%80%A7%E6%93%87%E5%81%B6%E7%9A%84%E6%AE%98%E9%85%B7%E6%88%B0%E5%A0%B4/</link>
      <pubDate>Mon, 22 Jan 2024 00:28:27 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/gender/%E5%85%A9%E6%80%A7%E6%93%87%E5%81%B6%E7%9A%84%E6%AE%98%E9%85%B7%E6%88%B0%E5%A0%B4/</guid>
      <description>&lt;p&gt;前陣子看到了一個&lt;a href=&#34;https://youtu.be/x3lypVnJ0HM&#34;&gt;節目&lt;/a&gt;，&#xA;這節目主題是在研討在網路兩性交友媒體平臺上，為什麼男性總是很難配對到女性的現象。&#xA;更加難得可貴的是，這節目使用了很多實際的資料數據來進行分析，以非常可靠的證據和假設來分析這些現象。&lt;/p&gt;&#xA;&lt;p&gt;這裡我將從這部節目開始，繼續討論兩性在擇偶環境上的一些生態、揭露一些求偶生態殘酷事實背後原因，&#xA;並且想特別著墨在女性求偶的陷阱上面(畢竟男人的困難相較來說單純明瞭的多)。&lt;/p&gt;&#xA;&lt;p&gt;那篇節目裡提到了很多的網路交友現象，&#xA;然而但凡在實際生活中進行過求偶擇偶行為的人，基本都知道這不只是網路交友才有的現象，&#xA;在現實生活中基本一樣如此。&#xA;節目裡著重指出了一個普通男性在求偶市場上的各種明顯的困難現象，&#xA;但稍加思考分析就會發現，這些各種困難其實幾乎都來自於同一個問題，&#xA;那就是男女在數量上的極度不平衡。&#xA;&lt;strong&gt;在通常兩性求偶的戰場中，男性追求者的數量一般是數倍於女性被追求者&lt;/strong&gt;，&#xA;其他各種問題大多是從此衍生成型的。&lt;/p&gt;&#xA;&lt;p&gt;但是，有沒有人想過一個奇怪的問題？男性與女性的數量差距真有如此巨大嗎？&#xA;聯合國公佈的正常標準胎兒男女比例是 1.05，&#xA;也就是說若有 100 位女嬰誕生，則表示對應誕生的男嬰是 105 位。&#xA;男女性別比是存在差異沒錯，即便是因為一胎化政策導致全球最高性別比的中國大陸，也不過就是 1.14，&#xA;而這點差異卻完全無法解釋我們一般所認知的，在求偶戰場上那種男多於女數倍的數量差異！&#xA;那麼，這些成倍數的男人是打哪來的呢？或者說，那些應該出現的女性都消失去哪裡了呢？&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;男人的殘酷戰場&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/gender/%E5%85%A9%E6%80%A7%E6%93%87%E5%81%B6%E7%9A%84%E6%AE%98%E9%85%B7%E6%88%B0%E5%A0%B4/#%e7%94%b7%e4%ba%ba%e7%9a%84%e6%ae%98%e9%85%b7%e6%88%b0%e5%a0%b4&#34;&gt;男人的殘酷戰場&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;男人在戀愛擇偶的戰場中處在極為弱勢的地位大概是當前社會共同認知的現狀(當然這裡只看一般水平的普通男性)，&#xA;無數男性拼盡全力只為了能找個女伴，並且無數普通男性可能終其一生無法配得、或難以配得任何一位女性。&#xA;讓男人們必須要在求偶戰場上卯足全力拼殺爭奪的其中一項大的根本原因，就是供需的極端不平衡：&#xA;追求女性的男性太多，但是被追求的女性太少，後續許許多多的殘酷社會現象其實大多源自於此。&#xA;而那&lt;strong&gt;造成求偶市場上兩性數量極端不平衡的主要原因，我認為有二：&lt;/strong&gt;&#xA;&lt;strong&gt;女性的被動傾向、以及男性的超額競爭！&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;眾所皆知，女人在戀愛和追求的活動當中普遍趨於被動。&#xA;相對於男性的「追求」，女性傾向於「擇偶」，處於被動的位置等待男性的追求，然後進行挑選。&#xA;導致這些現象當然有其背後的原因，但為了聚焦討論這次的主題，我不會在此深入探討。&#xA;所以有些人可以先暫時不用了解男女為什麼會這樣做？我們只先認同現實確實存在這樣的趨向即可。&lt;/p&gt;&#xA;&lt;p&gt;女性的被動使得在兩性求偶的生態中傾向於被動等待，而非積極主動打開局面。&#xA;當男人與女人同樣處於單身並且有意交往異性時，男性往往積極主動行動起來，&#xA;而女性往往不做任何事情，就靠一個「等」。&#xA;於是我們就看到了為什麼線上交友的男女比例如此懸殊了。&#xA;即便是在線下的實體聯誼活動，男性的報名人數往往會是女性的數倍，而女性則可能意興闌珊；&#xA;各種聯誼活動可能一開放報名的當下，男性名額就瞬間爆滿，而女性名額可能直到活動開始的當天都還有剩。&#xA;這些都是臺灣各路聯誼活動的通常現象。&#xA;&lt;strong&gt;女性被動的擇偶趨向，&lt;/strong&gt;&#xA;&lt;strong&gt;直接導致我們在人口結構上看到的那些本「應該出現的女性」消失在潛在異性的能見範圍外。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;當然這不表示女性一定就被動到底不曾主動，只是就市場現實現象來看，女性通常都很能「撐」，&#xA;大多要直到自己意識到危機感的時候才會有所行動。&#xA;而這也是為什麼各線下聯誼場合裡，女性普遍年齡偏大的原因；&#xA;當然，這是另一個故事了，暫且先放著。&lt;/p&gt;&#xA;&lt;p&gt;說完了消失的女性，我們來看看那超額的男性。那些多出來的男性是從哪裡來的呢？&lt;/p&gt;&#xA;&lt;p&gt;一個在婚齡階段的普通男人，要面對的是數倍同性競爭者的競爭壓力。&#xA;對於一個單位的適齡 20 到 30 歲的適婚女性，除了同樣 20 到 30 歲的男性彼此互相競爭之外，&#xA;還要面對 30 到 40 歲的男性、甚至 40 歲以上男性的激烈爭奪競賽。&#xA;因為女性被動的關係&lt;strong&gt;前面可以追求的女性數量已經吃緊了，後面卻還有更多虎視眈眈的競爭者們緊吃&lt;/strong&gt;，&#xA;這才是導致為什麼男性數量總是數倍於女的根本原因！&#xA;於是男性追求者激烈競爭互相殺伐，而女性則能以逸待勞，可以坐高姿態提條件要求。&#xA;這就是男人的困難，也是男人天生就要拼個你死我活的宿命！&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;女人的殘酷現實&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/gender/%E5%85%A9%E6%80%A7%E6%93%87%E5%81%B6%E7%9A%84%E6%AE%98%E9%85%B7%E6%88%B0%E5%A0%B4/#%e5%a5%b3%e4%ba%ba%e7%9a%84%e6%ae%98%e9%85%b7%e7%8f%be%e5%af%a6&#34;&gt;女人的殘酷現實&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;既然兩性求偶的天秤是如此不平衡，那麼女人在擇偶這件事情上，不是應該極其愜意自然、好整以遐的嗎？&#xA;又怎麼會有困難和殘酷呢？&#xA;其實粗淺來看，女性在擇偶生態上存在著兩個比較明顯的誤區。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;歲月殺豬刀&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/gender/%E5%85%A9%E6%80%A7%E6%93%87%E5%81%B6%E7%9A%84%E6%AE%98%E9%85%B7%E6%88%B0%E5%A0%B4/#%e6%ad%b2%e6%9c%88%e6%ae%ba%e8%b1%ac%e5%88%80&#34;&gt;歲月殺豬刀&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;&lt;strong&gt;女性的首要最大敵人就是自己的年齡！&lt;/strong&gt;&#xA;其實在前面對於男性艱苦困境的敘述中就已經隱隱表達出了這個殘酷事實，為什麼男性會超額競爭呢？！&#xA;為什麼那 30 多歲的男性放著同樣 30 多歲的女性不追？&#xA;為什麼那 40 多歲的男性放著同樣 40 多歲的女性不管？&#xA;為什麼男人們一股腦爭破頭，全擠去追求那 20 多歲的女性了？&#xA;許多女性沒有意識到受到男性的群起追捧呵護的背後是源自於自身的年齡優勢，&#xA;而以為是她自己的魅力、樣貌、品味、或是能力吸引到眾人的愛戴，或者就是低估了年齡的殺傷力；&#xA;直到一天那大限之日突然到來時，才赫然發現那些追求者不知何時早已遠去，不再受到歡迎，&#xA;甚至再不太有人願意搭理，然而那個時候卻已經後悔莫及了！&lt;/p&gt;&#xA;&lt;p&gt;屬於女性的精華歲月就是從成年後開始直到大約 30 歲之前，&#xA;青春花期就是這麼短短的十年，並且過了就無法回頭。&#xA;這裡我們不扯什麼性別平等，因為兩性的吸引力就是來自那原始的吸引力。&#xA;我知道有些女性很反感男人看年紀這事，&#xA;但是現實就是一兩個人聲嘶力竭的叫喊是不可能攔得住一整群人的審美眼光；&#xA;不管如何鼓吹性別平等意識，也無法讓那些原來不對你感興趣的男人突然就喜歡上你，&#xA;最後你還是得屈服於現實。&lt;/p&gt;&#xA;&lt;p&gt;一旦過了青春的最佳年紀，自身價值就會快速的往下掉，殺個你措手不及！&#xA;在這個問題上，那些基於兩性公平尊重平等價值觀衍生的說法並非不對，事實上還頗有一番道理；&#xA;只是抵抗不了人性天生的審美。&#xA;這就是明幌幌的現實，是男性群體源自於天性上的偏好，再多雞湯文也無法扭轉他人的喜好！&#xA;&lt;strong&gt;一群女人們受到集中寵愛的另一面，就是另一群女人被無情拋棄；&lt;/strong&gt;&#xA;&lt;strong&gt;男人們對年輕女性怎麼樣的愛戀執著，對芳齡已過的女性就是怎麼樣的嫌棄排斥；&lt;/strong&gt;&#xA;&lt;strong&gt;男人們這一邊怎麼樣的瘋狂相爭，另一邊就是怎麼樣的無情忽視。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;雖然年齡的威力看似已夠讓女人苦惱，然而那自身的人性卻可能讓女性更加雪上加霜。&#xA;理想務實理性的情況下，我們對外在的要求應該匹配自身的現實條件，&#xA;例如你知道自己是個學渣，當看見隔壁家的兒子因為上不了臺大而懊惱的時候，&#xA;你知道對於自己來說只要能考上任何一間公立大學就滿足了，&#xA;甚至有些人可能認為只要能夠考上任何一間大學就滿足了。&#xA;然而對於屆齡的女性，正所謂由儉入奢易而由奢返儉難，&#xA;曾經的她可是擁有那樣的高價、受到那樣的追捧，曾經連怎麼樣怎麼樣的人都被她給拒絕了，&#xA;現在叫她要真實面對自己，找個與當下自己匹配的就好了，這談何容易呢？&#xA;&lt;strong&gt;這時候人性那不甘心、不甘願、不願認輸、不願妥協、不願承認失敗的部份不容易壓制，&lt;/strong&gt;&#xA;&lt;strong&gt;而這將驅使女性容易因此錯過一個又一個的最後機會。&lt;/strong&gt;&#xA;有些女人經此之後會開始劍走偏峰搞極端，&#xA;內心反感並且大力抨擊那些會挑剔女人年齡的男人(基本上幾乎就是所有的男人)；&#xA;對於這些女人，我只能送給她一句話：「你知道什麼叫狗吠火車、螳臂擋車嗎？」&lt;/p&gt;&#xA;&lt;p&gt;在我經歷過的每一場成人聯誼的現場(學生聯誼不算)，&#xA;幾乎就是一群大齡女性以及另一群意興闌珊的男性們，互相表演看似給足面子的一場戲，&#xA;但是絕大多數時候可能是誰也看不上誰。&#xA;男人們在現場當然不會把心底真實的想法說出來，只是對更進一步的行為可能沒有太大的興致而已，&#xA;看在女性的眼裡大概會認為這些男人們木訥、內向、不懂互動；&#xA;但是錯了，這只是表面現象而已，如果現場出現了個真正的年輕小姐的時候，&#xA;你可能才會赫然發現原來這些男人是這麼的積極主動、開朗又活潑，甚至風趣加幽默！&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;那少數的優秀&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/gender/%E5%85%A9%E6%80%A7%E6%93%87%E5%81%B6%E7%9A%84%E6%AE%98%E9%85%B7%E6%88%B0%E5%A0%B4/#%e9%82%a3%e5%b0%91%e6%95%b8%e7%9a%84%e5%84%aa%e7%a7%80&#34;&gt;那少數的優秀&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;求偶戰場上除了男女數量不平均所引發的一連串現象之外，&#xA;本文引用的那節目裡還提到了另一個非常重要的現象：&#xA;&lt;strong&gt;兩性的吸引不是平均的，人們會更傾心於更優秀的異性，換句話說那更優秀的人搜刮了大半異性的愛戀。&lt;/strong&gt;&#xA;這部份還算好理解，人嘛誰不是更喜歡那更好的呢？&#xA;但是除此之外卻還有另外一向更關鍵的現象：&#xA;&lt;strong&gt;比起男性，女性普遍更加傾心於那更加少數得多的極少數優秀男性！&lt;/strong&gt;&#xA;我們不討論這特性是怎麼形成的？&#xA;但是這項觀察事實卻是在除了年齡之外，給女性的擇偶戰場真正加上殘酷競爭的糖衣砲彈！&lt;/p&gt;&#xA;&lt;p&gt;女性更加集中愛慕那更加少數的優秀男性精英，用白話文來舉例那就是：&#xA;如果說男性普遍喜歡並追求那只佔了 25% 以下的漂亮女人，&#xA;那麼女性就是普遍愛慕追逐那只佔了 5% 以下的精英男人。&#xA;前面我們知道原本男女數量就已經非常不平衡了，&#xA;再加上這項兩性之間的偏好差異，進一步加劇了我們先前已知的情況，於是：&#xA;女性會更傾向於看不上客觀條件其實與自己同等級的男性，甚至對於稍優於自己的男性都容易「沒感覺」；&#xA;而大量普通男性無法、或難以覓得一個匹配的女性，即便是稍加優於平均水準的男性在擇偶一事上依然能感到吃力。&#xA;然而這些都只是在一般人範圍裡發生的現象，&#xA;但若我們將目光聚焦在排名最前面的那些優秀的人身上，整個情況就會完全大翻轉！&#xA;&lt;strong&gt;在拔高擇偶的戰場之中，女性面臨的競爭壓力非常激烈，能夠成功達陣的僅是少數；&lt;/strong&gt;&#xA;&lt;strong&gt;而那些位在尖端的優秀男性才是真正的大贏家，握有完全的選擇權和話事權！&lt;/strong&gt;&#xA;在尖端頭部的人群中，那前端 2% 的女性也許能夠吸引 40% 男性的青睞，&#xA;但是前端 2% 的男性卻可能擁有 80% 女性的選擇權。&#xA;對於一個前端 1% 的女性來說可能並不存在什麼問題；&#xA;而那真正的問題，也是這個段落的重點，&#xA;其實是發生在比方前端 10% 的女性想要搶奪前端 1% 男性的時候！&lt;/p&gt;&#xA;&lt;p&gt;只要稍加不留意、只要稍加不清醒，上述的現象就容易讓女性掉入一個認知陷阱中，&#xA;&lt;strong&gt;未意識到其實在競爭激烈的競賽中並未具有足夠的價值，反而自我感覺以為擁有擇偶優勢。&lt;/strong&gt;&#xA;而這才是此項生態特性真正具有殺傷力的地方！&#xA;對於普通男性來說，實際的擇偶競爭激烈，並且男性一般也都能認知到這項事實；&#xA;對於特別優異的男性來說，他們認知自己擁有絕對擇偶優勢，可是他們實際上也是真的具有擇偶優勢；&#xA;但是同樣的事情放在女性身上(比如前 15% 的女性)卻很容易產生認知落差，&#xA;客觀事實之下她們的確在 85% 的男性中擁有選擇優勢，但是若論及嚮往仰慕的那 5%，卻其實是處於劣勢中。&lt;/p&gt;&#xA;&lt;p&gt;我們偶爾能從某些網路或媒體管道看到一些誇張的擇偶條件案例，&#xA;例如一個女人相貌平平、也看不出具有什麼真正突出驚豔的特殊優秀素質，卻能開列出一長串嚴苛的擇偶標準？&#xA;這些案例裡面可能只有極其少數是真的精神有問題或故意為之，而絕大部份其實是陷入了比較嚴重的認知誤差陷阱裡。&#xA;她們很可能並不覺得這些篩選條件有什麼不合理之處，並且完全覺得自己配得上。&#xA;這些女性其實並非完全沒有優秀之處，恰恰相反，她們在一般水平的戀愛市場裡多半具有一定的優勢條件，&#xA;例如長相比一般人更漂亮、身材比一般人更加姣好等等，因此在她們身邊通常並不缺少追求者和愛慕者。&#xA;雖然她們可能看不上圍繞在身邊的這群男性，&#xA;可是在眾多男性的吹捧簇擁和上趕著的討好中，她們認知到自己在戀愛市場中位處優勢高地。&#xA;這份對自己身價的自信，使她們信心滿滿的向著自己內心所嚮往的那群傑出精英男性的世界進發，&#xA;一腳踏入那個自以為游刃有餘實則慘烈困難的殘酷戰場。&#xA;於是她們擺出了高姿態，可能是真心覺得自己真的有本事配得這樣的男性，&#xA;也可能是為了設下門檻來篩除那原本就已經過多的追求者，終於洋洋灑灑邏列出了那些讓我們嘆為觀止的嚴苛條件。&#xA;然後，在這個完全匹配不上的戰場，她們被叮的滿頭包，敗的一遢糊塗。&lt;/p&gt;&#xA;&lt;p&gt;條件匹配錯位所導致的荒唐並不是只有嚴苛門檻條件這一種，只是這種型態比較容易擺上討論關注焦點而已。&#xA;其它還有例如有些女性面對比自己高了好幾個等級的優秀男性時，&#xA;會要求對方對自己如舔狗般呵護備至、容忍自己的小作大鬧，&#xA;必須要這樣對自己好、應該要那樣對自己安排周到，要捧在手掌心時時服侍到位等等。&#xA;作為一個屬於少數特優秀的男人，先不論他是否能夠經常抽出這樣的時間和精神來應付這位女性，&#xA;單單就論一個真正具有絕對優勢地位和選擇權力的男人(其實女人也是)，誰能長期忍受得了這樣的伴侶呢？&#xA;於是這些人當然只能落得最後大敗而歸的下場。&#xA;她們的盲點就在於仗著身處在一般環境中所擁有的高姿態資本，卻拿去應對高端範圍的男人；&#xA;在普通環境下受到的高價值待遇給了她對自身定位的錯誤判斷，&#xA;卻未意識到在高端環境下其實並未擁有什麼真正拿得出手的資本。&lt;/p&gt;&#xA;&lt;p&gt;還有一些其他型態的認知誤區其實也屬於這類陷阱的範疇，例如這幾年在中國大陸常能聽見的說辭：&#xA;「全中國適婚單身人口，男人比女人多了三千萬，我作為女人怎麼怕嫁不出去？我大可以好好挑一挑撿一撿！」&#xA;這話說的其實真是事實，問題是你以為那多出來的三千萬男性真的處在你能接受並選擇的範圍內嗎？&#xA;這些大量「多出來的」男性都在各處偏遠鄉下，經濟水準也大多都在全中國最末地帶，&#xA;當然如果你願意接受的話，那也是真的不怕嫁不掉，也真的可以好好挑一挑；問題是，你願意嗎？&#xA;但是若回到了那些你所願意接受的範圍內的男性，可先別說排名前還是後了，&#xA;在許多發達大城市裡，單身男性的數量甚至還不夠女性瓜分的呢！&#xA;於是許多女性就在自以為可以安坐高位等待良緣的錯覺下，輕易的錯過了一切機會，&#xA;等到自身優勢逐漸消耗殆盡時才赫然發現事情的真像，然而一切都已經難以挽回了！&lt;/p&gt;&#xA;&lt;p&gt;如果你要我用一句話來總結描述這一個陷阱困境，那就是：&#xA;&lt;strong&gt;未意識到身處在一處激烈競爭與淘汰的擇偶戰場；&lt;/strong&gt;&#xA;&lt;strong&gt;受到在某另一個擇偶生態的優勢待遇蒙騙，錯誤的以為在嚮往的目標生態裡也具有同等的優勢；&lt;/strong&gt;&#xA;&lt;strong&gt;在內心嚮往的生態裡其實並沒有真正拿得出手的資本，&#xA;但是對於那能讓自己真正具有實際優勢的那群人群，&#xA;卻又並不在自己能夠接受的選擇範圍內。&lt;/strong&gt;&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;總結&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/gender/%E5%85%A9%E6%80%A7%E6%93%87%E5%81%B6%E7%9A%84%E6%AE%98%E9%85%B7%E6%88%B0%E5%A0%B4/#%e7%b8%bd%e7%b5%90&#34;&gt;總結&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;這篇文章粗淺的論及了兩性在擇偶一事上面對的困難和陷阱，&#xA;但是有鑑於人們通常對某部份主題會比較敏感易受傷的心態參染，&#xA;可能會產生一種我在批評抨擊女性的感覺，因此我得先為自己做個簡單的澄清。&#xA;這篇文章的主題就是在論述困難和陷阱，因此才整篇都在論述各種困難和陷阱。&#xA;這裡我從未、也不會述說女性必定會落入什麼樣的圈套、或一定會有什麼樣的悲慘結局，&#xA;甚至在實際生活圈裡，也許那認得清狀況、沒有淪落到我所描述的遭遇境地的才是大多數；&#xA;但是本文所提出的這些憂慮並非沒有根據。&#xA;陷阱擺在那裡恰巧沒有人踩到，並不表示那個地方不危險，不值得提醒路過者注意。&#xA;而且相信本文的讀者若已達或超越婚戀年齡，可能也早已經發現在自己的朋友圈裡面或許就存在不少中招者。&lt;/p&gt;&#xA;&lt;p&gt;總歸而言，男性和女性遭遇的問題樣式不太一樣。&#xA;男性的困難往往很容易理解，簡單又純粹，而這也是為什麼我較少著墨男性困難的主要原因。&#xA;相比於男性，女性在擇偶生態中往往是更加輕鬆容易的(請和差不多同個條件水準的異性比較)；&#xA;不像男性的困難是那樣明晃晃而又絕望於突破，那阻礙女性擇偶的因素往往是以陷阱的困境而存在，&#xA;讓女性在客觀具有擇偶條件甚至具有優勢的情況下，默默被坑害；&#xA;而也是因為同樣的原因，才讓社會上議論剩女的熱度遠高過於討論剩男的熱度。&lt;/p&gt;&#xA;&lt;p&gt;都說男追女隔層山、女追男隔層紗。&#xA;撇除掉部份極端因素，在絕大部份符合正常通常的兩性環境中，女性往往稍微積極主動一點，給男性個橄欖枝，&#xA;幾乎就能立刻收穫一個差不多相稱的男伴；&#xA;而這可是多少男人夢寐以求的簡單版求偶遊戲呢？&#xA;&lt;strong&gt;在現實生活中的絕大多數時候，一個女性就是比同等對標的男性更加容易脫單，而且容易得多。&lt;/strong&gt;&#xA;更何況就算年輕女性什麼都不做，通常也會有一群男性主動圍繞著她！&#xA;&lt;strong&gt;年輕男性的困擾往往在於如何獲得一位女性的芳心，而年輕女性的困擾往往在於如何應付蒼蠅般男性的襲擾！&lt;/strong&gt;&#xA;但是就是這樣一個簡單模式的遊戲，卻偶爾能看到女性將手上一副好排打了個稀巴爛！&#xA;於是我常感慨萬千，如果世界有一個主宰的話，那麼不知道祂到底是不是存心故意戲弄著女性？&#xA;&lt;strong&gt;相對於男性的困難艱苦是如此簡潔明瞭，女性的陷阱和困境卻往往不那麼容易被察覺。&lt;/strong&gt;&#xA;那就像是藏在花叢中的陷阱、是那藏在蜜糖中的毒藥；&#xA;如果說那些陣亡了的男性是在明幌幌的廝殺戰場上身中數刀壯烈犧牲，&#xA;那麼這些中招的女性往往就是在漂亮的花園和華美的氣氛中陷入泥濘，&#xA;甚至即便終於發現原來在美麗花團之下竟然是捕獸夾，也常常不願意主動掙脫反而一腳踏進去，&#xA;甚至幻想捕獸夾會自動變成簇擁的棉花！&lt;/p&gt;</description>
    </item>
    <item>
      <title>以色列巴勒斯坦又戰了，這次打的兇啊！</title>
      <link>http://www.huoschen.idv.tw/blog/miscellaneous/%E4%BB%A5%E8%89%B2%E5%88%97%E5%B7%B4%E5%8B%92%E6%96%AF%E5%9D%A6%E5%8F%88%E6%88%B0%E4%BA%86%E9%80%99%E6%AC%A1%E6%89%93%E7%9A%84%E5%85%87%E5%95%8A/</link>
      <pubDate>Thu, 02 Nov 2023 00:20:28 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/miscellaneous/%E4%BB%A5%E8%89%B2%E5%88%97%E5%B7%B4%E5%8B%92%E6%96%AF%E5%9D%A6%E5%8F%88%E6%88%B0%E4%BA%86%E9%80%99%E6%AC%A1%E6%89%93%E7%9A%84%E5%85%87%E5%95%8A/</guid>
      <description>&lt;p&gt;最近以色列和巴勒斯坦又打在一起了，激烈程度為五十年來所未見，各種慘烈的情況都給世界帶來了廣泛的關注和討論。&#xA;相關的各種論述已經很多，不論是站在以色列派的、還是站在巴勒斯坦派的，實在不需要我再多說什麼。&#xA;戰地打的火熱的同時，世界其他地方也充滿了各種爭吵與抗爭、仇視與報復。&#xA;為此，我只是突然想起了聖經上面的一部份章節，算是作為我個人對這個事件的回應吧。&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;對外僑，不要苛待和壓迫，因為你們在埃及也曾僑居過。&#xA;對任何寡婦和孤兒，不可苛待；&#xA;若是苛待了一個，他若向我呼求，我必聽他的呼求，&#xA;必要發怒，用刀殺死你們：這樣，你們的妻子也要成為寡婦，你們的兒子也要成為孤兒。&lt;/p&gt;&#xA;&lt;p&gt;&amp;ndash; 出谷紀，第 22 章，20-23 節&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;我要為我的愛友謳唱一首論及他葡萄園的愛歌：我的愛友有一座葡萄園，位於肥沃的山崗上；&#xA;他翻掘了土地，除去了石塊，栽上了精選的葡萄樹，園中築了一座守望台，又鑿了一個榨酒池：&#xA;原希望它結好葡萄，它反倒結了野葡萄。&#xA;耶路撒冷的居民和猶大人啊！現在請你們在我與我葡萄園之間，判別是非：&#xA;我為我的葡萄園所能做的，還有什麼沒有做到？我原希望它結好葡萄，為什麼卻結了野葡萄？&#xA;現在我要告訴你們，我將怎樣對待我的葡萄園：我必撤去它的籬笆，讓它被吞噬；拆毀它的圍牆，讓它受踐踏；&#xA;我要使他變成荒地，不再修剪，不再耕鋤，荊棘和蒺藜將叢叢而生；並且我要命令雲彩不再在它上降下時雨。&#xA;萬軍上主的葡萄園就是以色列家，而猶大人即是他鍾愛的幼苗。他原希望正義，看，竟是流血；他原希望公平，看，卻是冤聲！&#xA;禍哉，你們這些使房屋毗連房屋，田地接連田地，而只讓你們自己單獨住在那地域內的人！&#xA;萬軍的上主在我耳邊宣誓說：那許多房屋必將成為廢墟；巍峨華麗的，必無人居住。&lt;/p&gt;&#xA;&lt;p&gt;&amp;ndash; 依撒意亞，第 5 章，1-9 節&lt;/p&gt;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>男女真的不一樣 - 淺聊性別天性</title>
      <link>http://www.huoschen.idv.tw/blog/gender/%E7%94%B7%E5%A5%B3%E7%9C%9F%E7%9A%84%E4%B8%8D%E4%B8%80%E6%A8%A3---%E6%B7%BA%E8%81%8A%E6%80%A7%E5%88%A5%E5%A4%A9%E6%80%A7/</link>
      <pubDate>Thu, 13 Apr 2023 01:35:00 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/gender/%E7%94%B7%E5%A5%B3%E7%9C%9F%E7%9A%84%E4%B8%8D%E4%B8%80%E6%A8%A3---%E6%B7%BA%E8%81%8A%E6%80%A7%E5%88%A5%E5%A4%A9%E6%80%A7/</guid>
      <description>&lt;p&gt;最近上門拜訪親戚，見了一個還沒上學的小女孩在玩辦家家酒、逗弄她的玩偶們。&#xA;她的母親在旁邊說，這小女兒每天早上起來就是要把自己打扮的漂漂亮亮的，把五顏六色的塑膠珠寶掛滿全身，&#xA;我突然有感而發，「這一切全都是天性啊」！&lt;/p&gt;&#xA;&lt;p&gt;在我們小的時候，正是國家社會開始強調性別平等、正在開始試圖打破傳統性別框架的時候，&#xA;我們從小受到的教育自然也是兩性平等，許多話語我至今仍能記得，比方說&#xA;「男人能做的憑什麼女人不能做？」&#xA;「男孩女孩一樣好！」&#xA;「男生為什麼不能哭？」&#xA;「男生也可以玩洋娃娃、女生也可以玩汽車！」&#xA;等等等等。&#xA;到了年紀漸長，性平意識逐漸成為社會主流思想，凡傳統觀念裡面對於男與女(其實主要是對女)&#xA;的各種壓迫限制和各種思想觀念，都會被視為腐朽陳痾，急欲除之而後快，&#xA;這其中包括了職場關係、親屬家庭、和子女教養方面等等。&lt;/p&gt;&#xA;&lt;p&gt;然而當我真正進入社會，實際了解到許許多多的現實與實務邏輯之後，&#xA;才曉得遠來以前被教育了大量錯誤(或者叫作「與現實不符」)的觀念，&#xA;也才明白原來很多傳統的性別觀念有其演變脈絡和存在的價值。&#xA;關於這些部份，那是好多好多的心得感想，以後再慢慢一件一件說明；&#xA;而在這篇文章，我只想要簡單的在性別的天性上，去做些簡單解釋的解釋與反駁而已。&lt;/p&gt;&#xA;&lt;p&gt;在小時候受教的觀念中，男孩與女孩的差異僅僅只有生理構造不同而已，而所有其他的部份都是平等的，&#xA;這包含了所有除了生理差異以外的所有其他部份。&#xA;但是我們知道在現實中，男孩與女孩在性格上、習慣上、情緒上、和思想上都存在大大小小的差異，&#xA;而在性平教育中，這些差異都被歸咎於是後天的教養差異所造成的。&#xA;這怎麼說呢？就是當我們生了一個男孩，&#xA;自然會給他購買在我們作為父母的思想觀念中，覺得應該屬於男孩子的玩具，比方汽車、飛機、積木、槍械等等，&#xA;除了有形的器物之外，我們也會懷著讓他成為我們想像中應該要成為的男人形象來教育他，&#xA;比方男生要勇敢、要大氣、男生不可以哭……等等；&#xA;如果是女孩子的話，那麼父母就會給他屬於女孩子的玩具、以及期待她成為女孩的教養觀念，&#xA;如此一來，男孩女孩長大之後自然而然就會變成傳統所期望的，男人的樣子、以及女人的樣子。&#xA;這種性別無差異觀念認為所有性別的思想、習慣、和性格差異都來自於後天的教育，&#xA;並且相信如果將男孩和女孩放在一個獨立的完美無差別環境下教育成長，就會得到真正自然分佈的人物性格。&lt;/p&gt;&#xA;&lt;p&gt;然而經過幾十年的生活觀察，可以斷定以上理論是錯的。&#xA;孩子的確在不同的教養方式之下會導引出具有差異的人格特質，&#xA;然而在原始性別中，那些刻在骨子裡的特性卻可能佔據男女差異上更具主導性的地位，&#xA;並且有許多明顯能夠觀察的事實結果可以支持這些基於性別差異所導致的，從天性上就存在巨大差異的論點。&#xA;比如說，男生們的理工科目表現通常比女生們更加傑出，而女生們的文史科目表現普遍比男生們傑出；&#xA;如果你要說那是因為抱有傳統過時觀念的大人們本來就認為男孩應該要擅理工、而女孩應該要擅文史，&#xA;那麼你要怎麼解釋男生的數學、特別是在空間結構上的數學理解與計算普遍強過女生？&#xA;我想應該沒有哪個大人覺得女生數學不應該傑出了吧？&#xA;要怎麼解釋為什麼別人實驗出來，幾個月大的男嬰就能對機械結構玩具產生反應？&#xA;怎麼解釋男孩子普遍對槍砲武器感到強烈興趣、而女孩子卻普遍不感興趣？&#xA;我想不管男孩還是女孩，現代的家長應該普遍都不太樂見孩子喜歡打打殺殺玩槍弄刀，更別提還要刻意培養，&#xA;然而男孩子卻通常更有暴力傾向、喜好武器和打殺。&lt;/p&gt;&#xA;&lt;p&gt;我拜訪的那位母親她說，她們也買汽車玩具、也買積木玩具、還買電子與科學等等玩具，&#xA;但不管任何玩具，到她女兒手裡總能把它玩成辦家家酒，為此她們也很是無奈。&#xA;其實仔細觀察便不難發現，孩童時期或甚至嬰兒時期的女孩子，就是會對繽紛的色彩感到興趣、&#xA;就是比男孩子更早會說話、並更早能夠掌握語言。&#xA;這些是天性，天性就是你不刻意引導也會自然發展出來的，甚至連你刻意引導還不見得能夠有效扭轉的；&#xA;而男孩女孩的原始天性才是主宰了男人與女人各種思想性格差異的根本原因。&lt;/p&gt;&#xA;&lt;p&gt;除了上述明顯可以在統計分析裡面看到的事實以外，還有更多不是那麼明顯的性別差異表現&#xA;，&#xA;比如說不管在傳統社會還是現代自由社會，對性和色的教育都是偏向迴避和壓抑，&#xA;可是男孩子卻本能的更會想性騷擾異性。&#xA;另一方面，現代成年女性不管多麼熱衷個人事業的打拼，&#xA;在她們幼年孩童時代時卻通常會更明顯直白的表現出想要繁殖後代並仔細養育的母性，&#xA;傳達出對隱身家庭做為人母的本能需求；&#xA;相比於此，某些比例成年女人表現出來與男人無異的事業心以及對隱身家庭的鄙視，&#xA;反而更像是後天環境培養所導致。&lt;/p&gt;&#xA;&lt;p&gt;關於這些差異的更詳細的故事，我打算以後再慢慢討論，這次並沒有過多的去深入解釋和辯證，&#xA;只是作為一個引子，作為系列文章的起頭，&#xA;也是在提醒所有那些想要探討性別平等的人，或甚至只是抱怨遭受性別壓迫歧視的人：&#xA;&lt;strong&gt;男性與女性的天性差異確實是存在的，並且甚至絕大部份男女之間的思想行為差異都源自於此！&lt;/strong&gt;&#xA;在生活中也不要忘記：&#xA;&lt;strong&gt;思想是可以推翻的、文化是可以改變的，但是那源自骨子裡的天性沒有個五千上萬年大概是動不了了！&lt;/strong&gt;&#xA;那些由於本能天性所導致的行為思想傾向也好、身體極限也好，&#xA;由它們所帶來的各種差異結果是自然且符合科學和邏輯的，&#xA;無法奢望透過人為的價值觀來大規模導正到理想狀態！&lt;/p&gt;</description>
    </item>
    <item>
      <title>社會歧視大齡剩女嗎？</title>
      <link>http://www.huoschen.idv.tw/blog/gender/%E7%A4%BE%E6%9C%83%E6%AD%A7%E8%A6%96%E5%A4%A7%E9%BD%A1%E5%89%A9%E5%A5%B3%E5%97%8E/</link>
      <pubDate>Wed, 29 Mar 2023 00:07:24 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/gender/%E7%A4%BE%E6%9C%83%E6%AD%A7%E8%A6%96%E5%A4%A7%E9%BD%A1%E5%89%A9%E5%A5%B3%E5%97%8E/</guid>
      <description>&lt;p&gt;在網路上看到不少關於大齡剩女的討論，各有內容，&#xA;但不論討論的內容為何，對於社會上的人們會熱衷討論這件事情的這個現象，也引起了不少女性的抨擊。&#xA;許多女性大力批評人們邪惡的嘴臉、以及哀怨這個社會對大齡剩女的不友善，&#xA;就是對於流傳的「大齡剩女」這個詞都充滿了對女性的種種歧視，為什麼女人必須得結婚才是圓滿等等云云，&#xA;處處充滿了對這整個社會現象的反擊情緒。&lt;/p&gt;&#xA;&lt;p&gt;而我對這些女性們的反擊言論，則是輕蔑一笑！&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;為了避免有些人不知曉「大齡剩女」是什麼？這裡簡單說明：&lt;/em&gt;&lt;br/&gt;&#xA;&lt;em&gt;大齡剩女為網路流通用語，意指年紀已過一般婚育年齡、或已逼近一般婚嫁年齡上限，&lt;/em&gt;&#xA;&lt;em&gt;卻仍未進入婚姻狀態、甚至沒有異性伴侶的女性。&lt;/em&gt;&#xA;&lt;em&gt;大齡剩女一般認為帶有貶意，其「剩」一字即指在婚戀市場中被淘汰剩下之意。&lt;/em&gt;&#xA;&lt;em&gt;(當然我並無意刻意歧視或詆毀女性，僅僅只是解譯已經存在的現象及相關用語)&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;我們先來看看一段簡短的對話：&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;一位女士問大師：大師、大師，為什麼愈美麗漂亮的女人總是愈情路坎坷呢？&lt;br/&gt;&#xA;大師：為什麼美女情路坎坷？那是因為沒有人在意醜女她情路坎坷不坎坷！&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;這是一段簡短的網路笑話，卻道盡了為什麼大齡剩女會成為討論話題的核心。&#xA;社會難道真的是對大齡的剩女充滿歧視、偏見、與敵意嗎？&#xA;的確女人大齡未嫁容易引起義論，可是社會上也存在著可能更多的大齡未婚的男性啊！怎麼就沒人討論他們了呢？&#xA;這就是一件令人扎心的事情了，&#xA;事實上女人之所以會被討論、會被關注、會被議論，以某種意義來說，那是因為人們還願意在乎她們，&#xA;至於男人呢？沒有人想去管他們死活！&#xA;與剩女們相對的是數量可能相當的剩男們，默默隱身在社會每個角落，&#xA;沒有人關心、沒有人在乎、也沒有人談論。&lt;/p&gt;&#xA;&lt;p&gt;上面的說法雖然符合現狀，但也過於表面。&#xA;為什麼人們更樂意關注女人為什麼未婚呢？原來是因為女人才能提得起人們的興致啊！&#xA;怎麼說呢？舉個例子，&#xA;「阿里」中學畢業的學生去念了「不達」大學，這件事能夠提起你的進一步了解的興致嗎？&#xA;但是當今天傳出「建國」中學的畢業生去了「不達」大學，是不是興致就來了呢？&#xA;或者是換成「阿里」中學畢業生考上「臺灣」大學，我想都可以成功的吸引人們的眼球關注，&#xA;原因就在於這件事情與我們既有的認知產生衝突，使我們提起興趣，&#xA;而建國上臺大和阿里上不達則是再稀鬆平常不過的事情，所以沒有人在乎。&lt;/p&gt;&#xA;&lt;p&gt;觀察閱聽許多大齡男女之所以未婚無伴的故事就會發現，&#xA;男人單身的原因千篇一律，完全合乎預期，全然沒有想要深入了解的動力；&#xA;而女人單身的原因則有各種花樣，她們的故事能夠不斷的激起人們的興趣，&#xA;因為這些事蹟總是能夠不斷的衝擊你的情緒、刺激你的感官、一再刷新你的認知、突破你的界線，&#xA;使得人們一聽聞大齡剩女的事蹟就精神抖擻，並且樂於奔相走告！&lt;/p&gt;</description>
    </item>
    <item>
      <title>在 Windows 上架設 SSH 服務(使用 Git Bash)</title>
      <link>http://www.huoschen.idv.tw/blog/programming/%E5%9C%A8-windows-%E4%B8%8A%E6%9E%B6%E8%A8%AD-ssh-%E6%9C%8D%E5%8B%99%E4%BD%BF%E7%94%A8-git-bash/</link>
      <pubDate>Thu, 23 Feb 2023 19:58:46 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/programming/%E5%9C%A8-windows-%E4%B8%8A%E6%9E%B6%E8%A8%AD-ssh-%E6%9C%8D%E5%8B%99%E4%BD%BF%E7%94%A8-git-bash/</guid>
      <description>&lt;p&gt;網路上隨便就可以搜尋到「如何從 Windows 使用 SSH 連線 Linux 主機」、&#xA;以及「如何架設 Linux SSH 服務」等主題，&#xA;但反過來討論「如何使用 SSH 連線 Windows 主機」的話題就很少了，&#xA;而這這也是我寫這篇文章的主要原因，&#xA;於是這裡要來教你如何在 Windows 上架設 SSH 服務。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;為什麼要在-windows-上架設-ssh-服務&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/%E5%9C%A8-windows-%E4%B8%8A%E6%9E%B6%E8%A8%AD-ssh-%E6%9C%8D%E5%8B%99%E4%BD%BF%E7%94%A8-git-bash/#%e7%82%ba%e4%bb%80%e9%ba%bc%e8%a6%81%e5%9c%a8-windows-%e4%b8%8a%e6%9e%b6%e8%a8%ad-ssh-%e6%9c%8d%e5%8b%99&#34;&gt;為什麼要在 Windows 上架設 SSH 服務？&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;我自己有研發跨平臺應用的需求，需要隨時測試一些東西在 Windows 上的執行效果，&#xA;或是執行一些必須在 Windows 上面執行的處理工作，&#xA;無論這臺 Windows 到底是實體機器還是虛擬機器，頻繁的切換不同操作環境都讓人有所煩躁，&#xA;才會這麼殷殷期盼一個能夠使用 SSH 連線並直接操作的作業環境。&lt;/p&gt;&#xA;&lt;p&gt;一般來說在 Windows 上面架設 SSH 服務的資料比較少，因為以往有這樣需求的群眾少。&#xA;SSH 原先是流行在 UNIX like 環境下的遠端連線機制，&#xA;由於伺服器領域是 Linux 佔大宗而終端桌面是 Windows 佔大宗，&#xA;因此詢問如何從 Windows 透過 SSH 連線至 Linux 的詢問與解答自然多；&#xA;反之從 Linux 終端連線 Windows 伺服器的需求便非常低，&#xA;況且通常會熟悉並選用 Windows 作為伺服器系統的人，通常更習慣使用 RDP 遠端桌面連線登入操作；&#xA;最終大概只有像我這樣平常使用 Linux，因故需要連線登入 Windows 機器的人，&#xA;才會對這種連線方案感到興趣。&#xA;好在近年因為微軟推出的 Bash on Ubuntu on Windows 軟體方案&#xA;(後來變成 Windows Subsystem for Linux (WSL))，&#xA;拉攏了一票原本的 Windows 使用者有機會去習慣和適應 Bash 的操作體驗，&#xA;這才讓更多的人有了想要在遠端登入的情況下在 Windows 上面繼續延續 Bash 體驗的想法吧！&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;在-windows-上架設-ssh-服務的幾個主流方案&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/%E5%9C%A8-windows-%E4%B8%8A%E6%9E%B6%E8%A8%AD-ssh-%E6%9C%8D%E5%8B%99%E4%BD%BF%E7%94%A8-git-bash/#%e5%9c%a8-windows-%e4%b8%8a%e6%9e%b6%e8%a8%ad-ssh-%e6%9c%8d%e5%8b%99%e7%9a%84%e5%b9%be%e5%80%8b%e4%b8%bb%e6%b5%81%e6%96%b9%e6%a1%88&#34;&gt;在 Windows 上架設 SSH 服務的幾個主流方案&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;在有了使用的動機之後，蒐集網上現有的對於 Windows 架設 SSH 服務的方法的方案，&#xA;整理得到了主要流傳的三種方案如下：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;使用 Windows 10 內捆綁的 SSH 服務&lt;/li&gt;&#xA;&lt;li&gt;安裝使用 OpenSSH&lt;/li&gt;&#xA;&lt;li&gt;安裝使用 Git&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;安裝 &lt;a href=&#34;https://www.openssh.com&#34;&gt;OpenSSH&lt;/a&gt; 是最原汁原味的方案，也是早先時候的唯一選擇；&#xA;缺點就是這方案之下真的就只有單純的 SSH 而已，我想因該沒有人單純只是想要體驗 SSH 連線的感覺！&#xA;所以安裝了 OpenSSH 之後，可能還要移植很多自己需要的一眾相關程式工具。&lt;/p&gt;&#xA;&lt;p&gt;從 Windows 10 的 1809 版開始，內建捆綁了 SSH 功能，成為當前的主流方案，&#xA;可能是因為這個系統內建的服務和 WSL 環境最原生協作順暢的緣故；&#xA;缺點就是這個服務預設並沒有啟用、也沒有安裝，要去啟動這個服務還需要一些神奇又繁瑣的操作，&#xA;並且只能在 Windows 10 以上才能夠實現，&#xA;對於我這種還在使用 Windows 7 或甚至 Windows XP 的人而言更是無緣。&lt;/p&gt;&#xA;&lt;p&gt;最終對我而言最佳的便是第三個方案，使用 Git for Windows。&#xA;當然哪一個方案最好這件事很可能需要審視您自己的應用場景，對我最適用的東西不見得對你也是，&#xA;因此我只是列出了我為什麼選用 Git 方案的考量，好讓你可以快速判斷你的需求與我的想法是否相合？&lt;/p&gt;&#xA;&lt;p&gt;我之所以最終選擇使用 Git 方案，其相對其它方案的一些優點如下：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;我本來就有在使用 Git，所以對其並不陌生，甚至有得時候即便我不需要 SSH，也是需要 Git 的。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Windows 版的 Git 安裝簡便，更重要的是它還夾帶了 Bash 環境，&#xA;讓我不需要另外安裝移植什麼東西就能擁有一個功能豐富的 Bash 使用體驗。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;除了 Bash 本身之外，還包裹了一眾在 Linux 下常用的基本工具程式。&#xA;這使得我不只擁有 Bash 環境，還可以延續許多在 Linux 上的使用習慣、工具、和腳本等等，&#xA;也不用改寫 BAT 腳本，大多情況下可以直接通用一個 Shell Script 腳本。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Git 可以安裝執行在 Windows 7 和 Windows XP 系統上。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;也因為上述這些原因，一直以來在 Windows 上我都把 Git 當成 Bash 來使用，&#xA;即便沒有要在上面做軟體開發工作，也會安裝 Git 來用。&#xA;因此為我來說，使用 Git 方案省事方便，不用再安裝其他東西，還能和原來的使用環境整合在一起，&#xA;是所有方法裡面最優良的方案。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;安裝與配置&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/%E5%9C%A8-windows-%E4%B8%8A%E6%9E%B6%E8%A8%AD-ssh-%E6%9C%8D%E5%8B%99%E4%BD%BF%E7%94%A8-git-bash/#%e5%ae%89%e8%a3%9d%e8%88%87%e9%85%8d%e7%bd%ae&#34;&gt;安裝與配置&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;首先下載安裝 &lt;a href=&#34;https://gitforwindows.org&#34;&gt;Git for Windows&lt;/a&gt;。&lt;/p&gt;&#xA;&lt;p&gt;其中若您的系統是 Windows XP 的話，&#xA;&lt;a href=&#34;https://github.com/git-for-windows/git/releases/tag/v2.10.0.windows.1&#34;&gt;v2.10.0&lt;/a&gt;&#xA;是最後一個支援 Windows XP 的版本。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;安裝完成後，電腦上就會出現 Git Bash 程式(在開始程式集裡)。&#xA;對其點擊右鍵，點選「內容」，在「相容性」頁面下勾選「以系統管理員的身份執行此程式」。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;執行 Git Bash 程式(以系統管理員身份)。&#xA;以下各步驟除有特別說明之外，都是在此環境下執行的。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;產生服務器金鑰：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt; ssh-keygen -A&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;編輯 SSH 設定檔 &lt;code&gt;/etc/ssh/sshd_config&lt;/code&gt;：&lt;/p&gt;&#xA;&lt;p&gt;SSH 設定檔的內容請按自己的需求修改，絕大部份和 Linux 上的 SSH 設置沒有不同，&#xA;但提醒若不打算將公鑰放在 Windows 上面的話，&#xA;就要啟用密碼登錄功能(&lt;code&gt;PasswordAuthentication yes&lt;/code&gt;)。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;若要使用密碼登入的話，就要記得要設定登入密碼，&#xA;特別是在很多人可能並沒有設定 Windows 登入密碼的情況下：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt; passwd [user]&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;&lt;em&gt;不過如果使用公鑰登入的話，就可以跳過這個步驟。&lt;/em&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;執行 SSHD 程式以啟動 SSH 服務：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt; /usr/bin/sshd&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;這個程式可以很放心的依據自己需求重複執行多次而不用擔心，&#xA;因為 SSHD 可以被重複執行而不會產生衝突情況，&#xA;它有自己的內部管理機制，確保只有一個執行中的實體。&lt;/p&gt;&#xA;&lt;p&gt;不過由於缺乏服務管理機制，中途要停用服務程式的話，就只能使用 &lt;code&gt;kill&lt;/code&gt; 家族程式來停止了！&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;設定開機自動執行。&lt;/p&gt;&#xA;&lt;p&gt;在完成第一次的設定後，之後每次啟動 SSH 服務時只要再執行一次 &lt;code&gt;/usr/bin/sshd&lt;/code&gt; 即可，&#xA;但我想為了人的懶惰，我們可能更希望能夠在系統開機的時候自動啟動這個程式。&lt;/p&gt;&#xA;&lt;p&gt;為了開機自動啟動 SSH 服務，請在&#xA;&lt;code&gt;/c/Users/&amp;lt;username&amp;gt;/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup/&lt;/code&gt;&#xA;下新增一個名為 &lt;code&gt;sshd.bat&lt;/code&gt; 的文字檔案，並填寫內容為：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt; &amp;quot;C:\Program Files\Git\bin\bash&amp;quot; -c /usr/bin/sshd&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;常見問題&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/%E5%9C%A8-windows-%E4%B8%8A%E6%9E%B6%E8%A8%AD-ssh-%E6%9C%8D%E5%8B%99%E4%BD%BF%E7%94%A8-git-bash/#%e5%b8%b8%e8%a6%8b%e5%95%8f%e9%a1%8c&#34;&gt;常見問題&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;提示權限不足而無法建立檔案：&lt;/p&gt;&#xA;&lt;p&gt;請使用系統管理員權限執行 Git Bash 程式來進行操作。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;錯誤訊息 &amp;ldquo;sshd re-exec requires execution with an absolute path&amp;rdquo;：&lt;/p&gt;&#xA;&lt;p&gt;請使用絕對路徑執行 &lt;code&gt;sshd&lt;/code&gt; 程式，通常是 &lt;code&gt;/usr/bin/sshd&lt;/code&gt;。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;錯誤訊息 &amp;ldquo;Privilege separation user sshd does not exist&amp;rdquo;：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;建立 &lt;code&gt;/etc/passwd&lt;/code&gt; 文件並填寫內容：&lt;/p&gt;&#xA;&lt;p&gt;sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;建立 &lt;code&gt;/var/empty/sshd&lt;/code&gt; 資料匣。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;reference&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/%E5%9C%A8-windows-%E4%B8%8A%E6%9E%B6%E8%A8%AD-ssh-%E6%9C%8D%E5%8B%99%E4%BD%BF%E7%94%A8-git-bash/#reference&#34;&gt;Reference&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.796t.com/article.php?id=184305&#34;&gt;https://www.796t.com/article.php?id=184305&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.796t.com/content/1547263508.html&#34;&gt;https://www.796t.com/content/1547263508.html&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>自製貪吃蛇遊戲</title>
      <link>http://www.huoschen.idv.tw/blog/programming/%E8%87%AA%E8%A3%BD%E8%B2%AA%E5%90%83%E8%9B%87%E9%81%8A%E6%88%B2/</link>
      <pubDate>Mon, 24 May 2021 21:40:00 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/programming/%E8%87%AA%E8%A3%BD%E8%B2%AA%E5%90%83%E8%9B%87%E9%81%8A%E6%88%B2/</guid>
      <description>&lt;p&gt;最近完工了一個計劃已久的遊戲：貪吃蛇。&#xA;要說這東西有什麼實際用處？其實就是滿足個人愛玩的心態，做個遊戲來玩。&#xA;當然，別人玩的是遊戲的內容，而我玩的則是開發的過程。&lt;/p&gt;&#xA;&lt;p&gt;這個貪吃蛇與經典的貪吃蛇老遊戲基本沒什麼不同，&#xA;不過既然是新開發，只是復刻老遊戲顯然不能滿足我的願望，&#xA;於是我在重製老遊戲的同時，還加入了一些個人的設計。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/snakes/playing-in-blank-map.png&#34; alt=&#34;playing&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;這個遊戲的最大特點就是：它是多人連線版的貪吃蛇，&#xA;也是這遊戲的最大樂趣之所在。&#xA;它最多可以支援八個人一起遊戲，讓八位朋友可以互相競爭、互相廝殺！&lt;/p&gt;&#xA;&lt;p&gt;本來還想說這個東西應該不是什麼困難的程式，&#xA;結果一做下去，就從去年(2020)二月做到現在(2021-05)，&#xA;足足花了一年多，編寫超過一萬兩千行的 C++ 程式碼，&#xA;實在是……常常腦子想的和實際發生的不一樣啊！&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;遊戲使用說明&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/%E8%87%AA%E8%A3%BD%E8%B2%AA%E5%90%83%E8%9B%87%E9%81%8A%E6%88%B2/#%e9%81%8a%e6%88%b2%e4%bd%bf%e7%94%a8%e8%aa%aa%e6%98%8e&#34;&gt;遊戲使用說明&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;把遊戲&lt;a href=&#34;https://gitlab.com/iceignatius/snakes/-/releases/v1.2&#34;&gt;下載下來&lt;/a&gt;解開後會看到，&#xA;整個遊戲程式只有三個檔案：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;snakes: 是主要的用戶端程式，一般執行這個就可以了；&lt;/li&gt;&#xA;&lt;li&gt;snakesd: 另一個帶 &amp;rsquo;d&amp;rsquo; 結尾的 snakesd 是伺服器程式，主持遊戲時用的，一般放著不管就好；&lt;/li&gt;&#xA;&lt;li&gt;example-scene.snksc: 最後一個結尾是 .snksc 的是遊戲場景檔案，&#xA;它本身是個純文字檔，包含了範例和說明，如果想要自製遊戲場景的話可以參考使用。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/snakes/main-entry.png&#34; alt=&#34;main entry&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;當遊戲程式一執行起來，首先會看到的是上面這個主選單畫面。&#xA;這個遊戲是以終端機為操作介面，之後的其他操作畫面風格大約都是長這個樣子，&#xA;值得注意的是畫面最下面有一行反白的部份，它會顯示一些重要的操作提示，&#xA;當你在任何時候不知道應該要怎麼按的時候，就要記得往下面看一下，通常就會有一些解答提示。&lt;/p&gt;&#xA;&lt;p&gt;回到主選單，這裡有兩個重要的功能：Join Game 和 Create Game。&#xA;其中 Join Game 就是搜尋並加入網路上其他人開的同一個遊戲，&#xA;而 Create Game 自然就是讓你自己開一個遊戲給別人加入。&#xA;然而就算找不到朋友一起，還是能玩遊戲的。&#xA;雖然遊戲設計是以多人連線為基礎，但也支援只有一個人連線玩遊戲的情況。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/snakes/scan-servers.png&#34; alt=&#34;scan servers&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;若進入 Join Game 選單，就會顯示上面的頁面，&#xA;程式會自動搜尋並顯示同一個區域網路有沒有人開了遊戲，&#xA;然後就可以使用上下鍵選擇，並按下 Entre 來加入某個遊戲。&#xA;其中要注意的是遊戲列表中的 Status 欄位，只有顯示為 Joinable 的場次才能夠加入，&#xA;正在進行遊戲的場次是不接受新玩家加入的！&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/snakes/manual-add-remote.png&#34; alt=&#34;manual add remote&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;除了區域網路之外，程式也支援網際網路的連線，&#xA;按下 &lt;code&gt;Ctrl&lt;/code&gt;+&lt;code&gt;A&lt;/code&gt; 就可以手動輸入連線 IP 或網址。&#xA;只是網際網路的連線和伺服器架設部份，因為牽涉到一些一般人可能比較不熟悉的網路專業，&#xA;所以這個功能比較不常用就是了。&#xA;這個功能對於懂的只要這樣提點就會用了，而對於不懂的也很難三言兩語解釋明白，&#xA;結論就是一般人通常還是推薦使用區域網路連線就好了！&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/snakes/preparing.png&#34; alt=&#34;preparing&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;當成功的加入了某個遊戲後就會顯示上面這樣的畫面。&#xA;這時候遊戲還尚未正式開始，基本就只能聊天而已，只要按下 &lt;code&gt;Ctrl&lt;/code&gt;+&lt;code&gt;T&lt;/code&gt;，即可輸入文字訊息，&#xA;然後按下 &lt;code&gt;Entre&lt;/code&gt; 送出訊息，送出去的訊息就可以被所有的玩家看到。&#xA;只是這個訊息功能並不支援中文文字，只能夠使用英文！&lt;/p&gt;&#xA;&lt;p&gt;另外注意很重要的一件事：在這個畫面裡，若沒有其他考量的話，&#xA;&lt;strong&gt;請儘快按下 &lt;code&gt;Ctrl&lt;/code&gt;+&lt;code&gt;G&lt;/code&gt; 按鈕&lt;/strong&gt;，&#xA;只有當全部的人都這麼做以後，遊戲才會真正啟動。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/snakes/playing-in-blank-map.png&#34; alt=&#34;playing&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;在整個遊戲進行的過程中，除了聊天功能以外，&#xA;基本上只能使用鍵盤方向鍵來改變自己所控制的那條蛇的行進方向。&#xA;如果花花綠綠的畫面讓你搞不清楚誰是誰的話，只要記清楚一個最重要的事情就好：&#xA;&lt;strong&gt;鮮綠的那條蛇一定就是你！&lt;/strong&gt;&#xA;遊戲程式的設計是這個樣子的，每個玩家都有一個顯示的顏色，&#xA;但不管玩家到底是什麼顏色，自己看自己永遠都是鮮綠色的。&lt;/p&gt;&#xA;&lt;p&gt;如果你問我說你的終端機不支援顏色顯示的話怎麼辦？&#xA;這個……那個……我也不知道，就自己看著辦吧！&#xA;終端機的表現能力就是這樣而已，已非我的能力所能彌補。&lt;/p&gt;&#xA;&lt;p&gt;此外，遊戲畫面右上角會顯示每一位玩家的積分和排名，&#xA;對遊戲本身沒什麼影響，就是作為一個參考資訊的存在，讓玩家們有互相較勁的依據而已。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/snakes/game-over-lose.png&#34; alt=&#34;lose game&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/snakes/game-over-win.png&#34; alt=&#34;win game&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;當場上僅剩最後一條蛇還活著的時候(或者在單人遊戲的情況下把自己玩死了以後)，&#xA;遊戲就會暫停並呈獻上面這樣的結束畫面。&lt;/p&gt;&#xA;&lt;p&gt;除了聊天功能依舊提供以外，可以按下 &lt;code&gt;Ctrl&lt;/code&gt;+&lt;code&gt;G&lt;/code&gt; 來要求再玩一次，&#xA;若所有玩家都這麼做的話，遊戲就會重新開始。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;主持遊戲&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/%E8%87%AA%E8%A3%BD%E8%B2%AA%E5%90%83%E8%9B%87%E9%81%8A%E6%88%B2/#%e4%b8%bb%e6%8c%81%e9%81%8a%e6%88%b2&#34;&gt;主持遊戲&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/snakes/setup-server.png&#34; alt=&#34;setup server&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;在主選單選擇 Create Game 之後就會進入如上圖的畫面，&#xA;除了預設的空白場景之外，還可以使用上下鍵在程式掃描到的場景檔當中選擇一個來使用，&#xA;沒有意外的話，列表中應該會有一個遊戲隨附的範例場景可以使用。&#xA;選擇了場景後按下 Entre 鍵即可進入遊戲，&#xA;實際上就是程式會在背景執行 snakesd 程式，然後自動連線加入這個伺服器。&lt;/p&gt;&#xA;&lt;p&gt;除了直接啟動遊戲之外，還可以按下 &lt;code&gt;Ctrl&lt;/code&gt;+&lt;code&gt;N&lt;/code&gt; 來設定別人會看到的遊戲名稱&#xA;(預設是顯示伺服器 IP)；&#xA;也可按下 &lt;code&gt;Ctrl&lt;/code&gt;+&lt;code&gt;D&lt;/code&gt; 來設定加入遊戲的密碼，&#xA;這樣要加入遊戲的人會被要求輸入密碼，只有密碼正確才能加入，&#xA;這麼做可以防止一些預期之外的閒雜人等加進遊戲。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;http://www.huoschen.idv.tw/blog/files/snakes/play-the-example-map.png&#34; alt=&#34;play the example map&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;關於遊戲場景的部份，這個遊戲非常鼓勵玩家發揮創意自製遊戲場景。&#xA;遊戲場景檔基本就是一個副檔名為 &lt;code&gt;.snksc&lt;/code&gt; 的純文字檔案，&#xA;玩家可以在檔案裡面添加一些特殊物件如牆、滑塊、和隧道等，添增遊戲趣味。&#xA;具體檔案內容要怎麼編寫，可以直接參考範例場景檔案內的說明，基本上非常簡單！&#xA;自行製做的遊戲場景檔案只要放置於程式所指定的搜尋路徑下&#xA;(或是在 Windows 上直接與主程式放一起)，&#xA;下次要開遊戲的時候就會被程式搜尋到了。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;相關網站位置&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/%E8%87%AA%E8%A3%BD%E8%B2%AA%E5%90%83%E8%9B%87%E9%81%8A%E6%88%B2/#%e7%9b%b8%e9%97%9c%e7%b6%b2%e7%ab%99%e4%bd%8d%e7%bd%ae&#34;&gt;相關網站位置&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;遊戲專案與程式碼：&lt;a href=&#34;https://gitlab.com/iceignatius/snakes&#34;&gt;https://gitlab.com/iceignatius/snakes&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;執行檔：&lt;a href=&#34;https://gitlab.com/iceignatius/snakes/-/releases/v1.2&#34;&gt;https://gitlab.com/iceignatius/snakes/-/releases/v1.2&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>口罩趣聞</title>
      <link>http://www.huoschen.idv.tw/blog/miscellaneous/%E5%8F%A3%E7%BD%A9%E8%B6%A3%E8%81%9E/</link>
      <pubDate>Mon, 03 Feb 2020 12:50:00 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/miscellaneous/%E5%8F%A3%E7%BD%A9%E8%B6%A3%E8%81%9E/</guid>
      <description>&lt;p&gt;最近武漢肺炎的疫情鬧得臺灣滿城風雨，而今天中午在公司附近吃午餐的見聞讓我實在頗有感觸。&lt;/p&gt;&#xA;&lt;p&gt;我們公司位在集合式辦公大樓裡，樓下每到中午就是個市集，主要服務晨、午時間出來覓食的上班族。&#xA;先說說一些大家已經知道的情況，我們這的藥妝店從一早就大排長龍，想都知道等著要買什麼。&#xA;中午時間裡，熙來攘往的人群中絕大部份是帶著口罩的，說明著確實每個人都擔憂最近的疫情。&lt;/p&gt;&#xA;&lt;p&gt;但就在經過一個攤位的時候，讓我不經的思索起來。&#xA;這是個賣饅頭的攤位，除了冷凍饅頭之外，攤桌上也放滿了已蒸熟的饅頭，可供上班族即食。&#xA;然後眾多顧客在攤前挑選饅頭，不時與老闆隔著中間的饅頭、攤前攤後七嘴八舌的交談。&#xA;我突然覺得這個畫面好奇怪，稍微深思就讓人啼笑皆非！&lt;/p&gt;&#xA;&lt;p&gt;戴口罩不就是為了阻隔飛沫傳染嗎？那麼這些承接了灰塵與眾人病毒的饅頭，&#xA;難道大家買回辦公室會先消毒在食用嗎？&#xA;這只是一個開始，我再觀察其他攤商也多少存在類似的現象，&#xA;一邊讓我搖頭嘆息、一邊感嘆教育失敗。&#xA;因為如果人們真的在乎疫情傳染的話，絕對沒有人敢買陳列在桌上的未包裝食品，&#xA;一定會吃熟食而避免在市集中採買生菜沙拉與涼麵等餐點。&lt;/p&gt;&#xA;&lt;p&gt;有朋友提醒了我一句話：&#xA;「記得多年前的 SARS 好像也沒有像現在這麼誇張，那時候的口罩也沒有如此缺貨！」&lt;/p&gt;&#xA;&lt;p&gt;對啊！&#xA;我想起來了，SARS 時期好像真沒有像現在這樣。&#xA;追根究底，其實是國民的「恐慌感」在作怪。&#xA;在我看來最近的口罩缺貨情形，其實和稍早之前的衛生紙缺貨本質是一樣的，就是集體恐慌造成的囤貨現象，&#xA;我猜在這波疫情平息以後，應該有機會在垃圾場看到成箱成箱的未開封口罩被丟棄。&lt;/p&gt;&#xA;&lt;p&gt;私以為這波疫情可能並沒有大家想像的那麼嚴重，&#xA;不是告訴大家防疫不重要，而是疫情若真的這麼嚴重的話，很多人早就中鏢了！&#xA;有沒有看到大家一面戴口罩一面採買市場即食食品？戴口罩露鼻子、或口罩戴在下巴？&#xA;最後，這就變成了一個大家流行戴口罩、但是實際效用打折的風潮。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hash Calculation 雜湊計算簡介</title>
      <link>http://www.huoschen.idv.tw/blog/programming/hash-calculation/</link>
      <pubDate>Tue, 24 Dec 2019 12:30:00 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/programming/hash-calculation/</guid>
      <description>&lt;p&gt;雜湊計算是廣泛被應用在數位產業中幾乎是各方各面的一種奇妙的計算工序，&#xA;它的用法用途上天下地、它的算法千奇百怪、它的面貌千變萬化，&#xA;對於初次接觸雜湊的學生可能一會兒更難以理解，&#xA;從而產生它為何出現在此、為何如此計算、為何如此使用等疑問。&#xA;那麼，本篇就要針對初學電子計算機的人、在首次接觸雜湊計算時充滿了疑惑的人&#xA;來簡單的介紹雜湊運算帶領入門。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;定義&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/hash-calculation/#%e5%ae%9a%e7%be%a9&#34;&gt;定義&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;雜湊運算的作用是：&#xA;對任意長度的任意二進位資料進行計算，並得出一個值域範圍固定的結果數值，&#xA;對於整個計算包含從開始到最後的結果只有一條硬性規定：&#xA;&lt;strong&gt;在使用同一種演算法的情況下，對於相同的資料輸入，必須算得一樣的結果數值。&lt;/strong&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;ul&gt;&#xA;&lt;li&gt;該計算的結果數值稱為 Hash Value，中文稱為「雜湊值」；&lt;/li&gt;&#xA;&lt;li&gt;計算該結果的工作稱為 Hash Function，中文稱為「雜湊函式」；&lt;/li&gt;&#xA;&lt;li&gt;計算該結果所使用的演算方法稱為 Hash Algorithm；&lt;/li&gt;&#xA;&lt;li&gt;對於兩筆不相同的資料計算出的結果值相同的情況稱為 Collision，中文稱為「碰撞」；&lt;/li&gt;&#xA;&lt;li&gt;而泛指與之有關的稱為 Hash 或 Hash Calculation，中文稱為「雜湊」或「雜湊運算」。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;範例&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/hash-calculation/#%e7%af%84%e4%be%8b&#34;&gt;範例&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;在對雜湊運算充滿疑惑的狀態下，&#xA;我覺得與其去研究那些算來算去不知在算什麼的知名演算法，不如先試著自己製做一個雜湊函式，&#xA;從這當中理解學習雜湊運算可能會更有意義。&lt;/p&gt;&#xA;&lt;p&gt;要寫作一個雜湊函式其實非常簡單，&#xA;只要把輸入的資料拿進來，然後發揮你的創意隨便亂算，&#xA;算出一個和亂數差不多的、無意義的奇怪數字即可。&#xA;唯一的要求只有一個，那就是使用你的計算方法分別計算兩筆一模一樣的輸入資料，&#xA;最後得出的那個奇怪數字要是一樣的。&#xA;另外可能因為這種計算看起來和亂算沒什麼不同，&#xA;所以當時的人在處理 Hash 的中文翻譯的時候，才給了它「雜湊」這個名字吧！&lt;/p&gt;&#xA;&lt;p&gt;下面以一個我自己隨便寫的雜湊函式做為範例：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;uint16_t MyHashFunction(const void *data, size_t size)&#xA;{&#xA;    const uint8_t *array = data;&#xA;&#xA;    uint16_t value = 1;&#xA;    for(size_t i = 0; i &amp;lt; size; ++i)&#xA;        value *= array[i];&#xA;&#xA;    return value;&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;這樣我就完成了一個我自己發明的雜湊計算方法，&#xA;這個簡單的算法在很多特性方面可能不足以好到讓一般的用途去使用，&#xA;但卻完完全全符合一個雜湊計算所需的要求。&#xA;我要求了一筆長度為 &lt;code&gt;size&lt;/code&gt; 的位元組資料串做為輸入，&#xA;最終會算出一個 16 位元、值域範圍為 0 至 65535 的整數值，&#xA;至於計算方式就是很簡單的把每一個位元組值相乘而已(溢出就讓他溢出，超出的部份就直接捨棄)，&#xA;其中最重要的是：&#xA;如果在不同的計算中若你輸入了一模一樣的資料，那麼我就一定會算出一模一樣的結果值。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;性能指標&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/hash-calculation/#%e6%80%a7%e8%83%bd%e6%8c%87%e6%a8%99&#34;&gt;性能指標&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;由於雜湊運算的定義要求非常簡單，也鼓勵天馬行空發揮創意，&#xA;因此現實中使用的各種雜湊演算法實在是滿坑滿谷，&#xA;而這些不同的演算法之間、甚至是與你自己實現的算法之間有什麼不一樣呢？&#xA;評估一個雜湊演算法的好壞或者適用與否有幾項主要的性能指標，於下分別說明。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;正確性&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/hash-calculation/#%e6%ad%a3%e7%a2%ba%e6%80%a7&#34;&gt;正確性&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;由於雜湊計算的規定只有一個，所以判斷雜湊演算法正確性的依據也只有一個，&#xA;那就是我們前面一再強調的：對於同樣的輸入資料必須計算出相同的雜湊值。&lt;/p&gt;&#xA;&lt;p&gt;既然這條規定是硬性的，不符合這項規定的演算法就不是個合格的雜湊算法，&#xA;那還有什麼好討論的呢？&#xA;事實上在這個世界上具名的雜湊演算法可能有 99.99% 都符合正確性的要求，&#xA;所以這項規範適合的討論範圍其實就是在你們因為各種原因需要自己發明雜湊算法的時候。&#xA;很多時候演算法正確性不足的缺點可能難在開發的過程中發現出來，&#xA;比方說在研發人員自己的電腦上怎麼算都正確，&#xA;但客戶使用產品的時候卻就是會發生運算不正確的情況。&#xA;比方說研發測試的時候都看不出問題，&#xA;要換臺電腦、換個系統、換個處理器等等才會發現自己的演算法有缺陷，&#xA;這種問題特別是在軟體開發人員未具有足夠的資訊概論和程式設計基礎的情況下容易發生&#xA;(很符合臺灣產業界的現況)。&lt;/p&gt;&#xA;&lt;p&gt;記得我畢業後的第一份工作，那時我還是個菜鳥中的菜鳥。&#xA;有一天我們的軟體需要序號驗證功能，防止客戶無限制的把軟體到處複製使用，&#xA;這時我主管要我做一個其中需要的函式，用來把用戶電腦的一些關鍵訊息進行各種隨意的亂算，&#xA;最後算出一筆奇怪的資料。&#xA;那時的我滿臉問號，不知道這幹什麼用的、也不知道要如何開始，&#xA;後來他說算了，他來做給我看，最後他開心的展示給我他實現的程式碼。&#xA;我一邊觀看他一邊解說，反正就是各種隨意的到處亂算，&#xA;其中最讓我印象深刻的是裡面還用到了 sin 和 cos 等函式。&#xA;我主管說他們以前遇到這種需求都是這樣做的，反正就是想到的都拉進來亂算，算的愈亂愈好！&lt;/p&gt;&#xA;&lt;p&gt;經過了多年以後重新回想，我才明白這就是一個需要自行製做雜湊計算的需求，&#xA;也發現當時的這位研發主管根本不知道雜湊這東西，&#xA;也不知道世界上早就存在許多比他亂來的實現還要更好的演算法。&#xA;那麼他的實現哪裡不好呢？&#xA;撇開各種性能方面的問題不談，就光是要達到計算的正確性這個要求就有問題。&#xA;例如裡面呼叫了三角函式，而這類的函式實現本身就不能保證絕對可以算出二進位資料完全相同的東西，&#xA;它的運算結果可能會因為數學函式庫的實做不同而有些差異(這些函式庫通常是由編譯器提供)，&#xA;就算屏除了函式庫實做的差異，浮點運算在不同的 CPU 上面可能也會有不同的行為表現；&#xA;我想這可能就是這家公司的程式產品為什麼只能使用 Borland C++ Builder 6 編譯(還不能更新版本)、&#xA;以及為什麼只能支援 Intel x86 CPU 搭配 Windows 平臺的其中一項重大原因吧！&#xA;另外，對於數位電腦的基礎知識之不足、以及對於程式設計基本功的馬虎，&#xA;可能也是導致於這些學長們口耳相傳&#xA;「即使你不覺得有問題，也絕對不要更換編譯器、絕對不要修改編譯設定、連最佳化編譯也不能打開、&#xA;絕對打死都不要更動流傳下來的開發環境的任何一個環境設定，否則就會發生千奇百怪的問題」&#xA;等等這些話語的原因吧！&lt;/p&gt;&#xA;&lt;p&gt;總結來說，在自己實現雜湊算法的時候需要避免使用某些計算：&#xA;請避免呼叫那些因為實做不同或版本不同而可能會產生結果差異的函式庫，&#xA;以免你的演算法只能搭配特定的程式庫或編譯器；&#xA;請避免呼叫系統 API，以免你的演算法只能在特定的系統下使用；&#xA;請避免使用浮點數運算、以及整數負值計算，&#xA;以免你的演算法只能在特定的 CPU 上得到正確的結果；&#xA;請妥善處理 endian 有關的格式轉換、或採用與 endian 無關的運算，&#xA;以避免你的演算法依賴於特定的 CPU 格式；&#xA;以及請避免任何其他以上沒有提到，但會破壞演算正確性的東西，&#xA;比如有些未知的東西也許會讓你今天計算一筆資料得到結果 27，明天再算卻得到 35 之類的！&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;不可逆性&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/hash-calculation/#%e4%b8%8d%e5%8f%af%e9%80%86%e6%80%a7&#34;&gt;不可逆性&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;如果說雜湊計算是從輸入資料算出雜湊值，那麼逆向的雜湊計算就是從雜湊值計算出原始輸入資料了；&#xA;而可逆性指的就是從雜湊值回推、或估計、或猜測原始資料可能之組合的可行性，&#xA;那麼不可逆性愈高自然就表示愈難以從雜湊值逆向推估窺探原始資料。&lt;/p&gt;&#xA;&lt;p&gt;總體而言，在雜湊計算的定義裡並沒有對可逆或不可逆的特性做出任何要求，&#xA;在某些用途上可能也不會在意可逆性高或不高，&#xA;但若所在應用的場景中不樂意讓人從雜湊的結果來窺探原始資料的話，&#xA;所使用的演算法之不可逆特性就會變得相當重要。&lt;/p&gt;&#xA;&lt;p&gt;以我的範例來說，它的不可逆性就不夠好，&#xA;如果算出來的值為零，那麼絕大的機率可能是因為資料中有零的存在，&#xA;在輸入資料格式已知的情況下，有時就可以猜測某些資料排列組合；&#xA;若輸入的資料只有一個位元組的情況那更慘，因為這時我的計算結果根本就等於原始輸入資料。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;均勻性&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/hash-calculation/#%e5%9d%87%e5%8b%bb%e6%80%a7&#34;&gt;均勻性&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;一個理想的雜湊算法對於各種輸入資料所算出來的雜湊值，應該平均的分佈在其所定義的值域範圍內，&#xA;一個結果值的分佈均勻性不佳的雜湊算法，會在某些應用用途上產生不樂見的問題，&#xA;例如在 Hash Map Container 的應用上會導致性能衰退。&lt;/p&gt;&#xA;&lt;p&gt;以我的範例來說，它的均勻性就不夠好，雜湊值為零的機率比其他數值都來得高，&#xA;只要資料中出現了一個零，不論是因為資料本身的零值、&#xA;還是在計算過程中因為數值截斷的緣故而產生的零值，那麼結果就一定是零了。&#xA;最終，這個雜湊函式的範例可能只有在輸入資料為長度適中的 ASCII 字串時，&#xA;才能有較為理想的均勻性表現。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;隨機性&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/hash-calculation/#%e9%9a%a8%e6%a9%9f%e6%80%a7&#34;&gt;隨機性&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;雜湊的隨機性指的是對於輸入資料所計算出的雜湊值是否具有規律性而容易被預測的指標，&#xA;隨機性能愈高的演算法，其所計算的結果愈沒有明顯的規律、愈難被預測。&#xA;隨機性和均勻性看起來是類似的，然實則有所差異，&#xA;一個隨機性高的算法未必擁有均勻的算值分佈，反之亦同。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;值域範圍&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/hash-calculation/#%e5%80%bc%e5%9f%9f%e7%af%84%e5%9c%8d&#34;&gt;值域範圍&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;演算法所得之雜湊值值域範圍也是一個很重要的指標，它會間接的影響其他方面的性能表現。&#xA;雜湊值值域在 0 至 255 之間的演算法，我可以用一個 8 位元整數就能儲存；&#xA;雜湊值值域再廣一點的，我也許也能用 16 位元、32 位元的數來儲存並應用；&#xA;但若值域範圍再大上去，當沒有計算機內建整數型態可以容納的時候，&#xA;對於雜湊值的儲存、運算、和比對等工作所消耗的計算資源可能就會一下子上漲。&#xA;站在這個考量點上，較小值域範圍、或至少在計算機內建整數型態範圍內的演算法是比較討喜的。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;碰撞率&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/hash-calculation/#%e7%a2%b0%e6%92%9e%e7%8e%87&#34;&gt;碰撞率&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;在雜湊運算中的「碰撞」即是用來稱呼當兩筆不同的輸入資料卻計算出一樣的雜湊值的情況，&#xA;而碰撞率當然指的就是某個演算法是否容易發生碰撞情況的指標。&#xA;通常來說碰撞率會與均勻性或隨機性等等其他特性連動，&#xA;總體來說，演算法的碰撞率不是一個單一的性能指標，比較像是整體綜和表現的結果。&lt;/p&gt;&#xA;&lt;p&gt;基本在所有的應用條件下，人們所喜歡的理想雜湊函式碰撞率是愈低愈好，最好絕對不會發生碰撞；&#xA;然而實際上碰撞率愈低的演算法往往在某些其他的性能屬性上成績愈不好看，&#xA;因此在經過權衡取捨後，還是能接受使用一些碰撞率相對高得多的演算法。&lt;/p&gt;&#xA;&lt;p&gt;以雜湊值值域做為範例，一個值域範圍小的雜湊值可以讓相關的儲存、比對等工作變得容易快速，&#xA;但是另一方面來看，不管演算法再怎麼厲害，當其雜湊值值域範圍愈低，碰撞率將必然的向上增加。&#xA;若我要求一個雜湊值範圍在 0 至 255 的演算法，&#xA;又如何要求它可以在算遍天下資料之後仍不發生碰撞？&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;運算複雜度&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/hash-calculation/#%e9%81%8b%e7%ae%97%e8%a4%87%e9%9b%9c%e5%ba%a6&#34;&gt;運算複雜度&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;雜湊算法的複雜程度也是一項重要的指標，算法繁複的雜湊函式必然要消耗更多的計算時間才能完成，&#xA;因此在部份的應用上，也常常選擇那些其他性能看起來沒那麼好但計算快速的雜湊演算法。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;應用用途&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/hash-calculation/#%e6%87%89%e7%94%a8%e7%94%a8%e9%80%94&#34;&gt;應用用途&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;理想上完美的雜湊演算法各項性能指標都要表現傑出，演算不可逆、算值均勻又隨機、&#xA;既不可能發生碰撞又只需要內建整數型態即可儲存其值、同時還要實做簡單而運算效率高。&#xA;無奈這種完美的演算法似乎不可能實現，&#xA;許多性能指標之間往往互相抵觸，一方面好則另一方面就不可能好。&#xA;對於不同的用途，重視的性能指標也不一樣，&#xA;程式開發人員需要依據面對的情況，權衡不同性能指標間的優劣表現，選擇最適合自己的雜湊演算法。&#xA;因此接下來要介紹在各種常見的雜湊用途中對於演算法選擇的不同觀點，&#xA;順道介紹雜湊算法常見被用在什麼用途上。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;資料校驗&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/hash-calculation/#%e8%b3%87%e6%96%99%e6%a0%a1%e9%a9%97&#34;&gt;資料校驗&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;當資料需要在不同的機器之間傳送接收的時候，比如說經過網路傳輸、經過串列埠傳輸等等，&#xA;偶而會因為一些硬體雜訊還什麼的原因，造成收到的資料有異，這時就要通知對方重送。&#xA;然而一個很大的問題在於你得要先知到資料發生了異常，然後才知道該進行後續的動作，&#xA;所以在資料傳輸的用途上幾乎是一定都需要一個資料校驗的機制。&lt;/p&gt;&#xA;&lt;p&gt;一個簡單的想法是我直接把同樣的資料連續傳個兩三次，&#xA;如果資料收下來都是一樣的，那就是正確的，反之就表示資料有異。&#xA;然而這麼做有兩個缺點，首先傳輸的資料量會立刻膨脹兩三倍，白白浪費資料流量空間。&#xA;第二是萬一遇到問題的發生與通透資料的特性有關的時候，&#xA;例如某些硬體設計瑕疵導致當傳送了 1、3、5、接著傳送 4 時就會發生資料錯誤，&#xA;那麼同樣的資料重複送幾次不就都是吻合但卻全部錯誤的嗎？&lt;/p&gt;&#xA;&lt;p&gt;因此一般我們使用雜湊運算做為資料校驗的手段，&#xA;對要傳送出去的資料進行雜湊計算得到雜湊值，然後把這個值併到資料裡面一起發送，&#xA;資料接收方收到資料以後重新計算資料的雜湊值，然後與傳送方夾帶過來的雜湊值比較看看是否一致，&#xA;若雜湊值相同則可以相信這筆資料絕高的機率是正確的。&lt;/p&gt;&#xA;&lt;p&gt;在資料校驗的用途上，我們面對的假想情況是整筆資料中的少數幾個位元可能會隨機的發生錯誤的情況，&#xA;一筆資料的雜湊值也不會需要去和別的資料的雜湊值做比對。&#xA;因此在演算法的選擇上比較不在意碰撞率和隨機性的表現、對於不可逆性也沒有要求，&#xA;但通常會很在意運算效率，不希望一筆資料的收送在校驗值上面花費太多的時間和其他計算資源，&#xA;同樣的也傾向於使用那些值域範圍較小的演算法，以利減少冗餘資料長度並加速計算與比對速度。&#xA;在資料校驗用途的雜湊演算法一般常見的有 CRC-32、或是更簡單的 checksum 或 LRC 等，&#xA;甚至在古老的時代理，只有一個位元長度的 parity bit 也是被接受的。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;資料索引&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/hash-calculation/#%e8%b3%87%e6%96%99%e7%b4%a2%e5%bc%95&#34;&gt;資料索引&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;在資料結構演算法裡面有一種容器叫作 Hash Map 或 Hash Table，&#xA;這是一種可用來儲存「鍵值對」資料的容器。&#xA;我這裡不想要展開解釋太多關於資料結構和容器的東西，那又是另一個大主題了，&#xA;所以這裡只簡單的帶過一些提示，有興趣的人自己再透過這些關鍵字去查詢更多的細節。&#xA;當我們需要建立一個資料容器，並且希望可以使用一個關鍵值來找尋容器內符合的資料的時候，&#xA;除了使用經典而複雜的各種二元樹結構來做以外，也可以使用 Hash Map 容器。&#xA;使用 Hash Map 的好處是它的實現相對簡單快速，在實際應用上的效能表現通常不俗，&#xA;在許多需要鍵值容器的簡單執行環境裡有一定的立足位置。&lt;/p&gt;&#xA;&lt;p&gt;在這種應用場合上，不用說，這演算法的複雜度和計算效能絕對是首要條件，&#xA;而對於不可逆性和值域範圍等就沒有太多的執著，&#xA;畢竟值域再大的雜湊值也會因為被取餘的關係而降下來。&#xA;另一方面，做為容器使用的雜湊算法更看重其均勻性，至於隨機性則不重要。&#xA;一個算值不均勻分佈的演算法將會容易讓雜湊值集中碰撞在某些區間，導致資料查找效率衰退，&#xA;最嚴重的情況下會讓 Hash Map 退化為 Linked List。&lt;/p&gt;&#xA;&lt;p&gt;至於 Hash Map 實際使用的演算法就令人眼花撩亂了，似乎並沒有共識說哪幾個演算法使用率最高，&#xA;常常是看設計者的想法、以及實際實驗適配以後最終才選擇使用某些演算法，&#xA;基本上符合上面敘述之特性的演算法都可以放在備選方案裡面。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;資料簽章認證&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/hash-calculation/#%e8%b3%87%e6%96%99%e7%b0%bd%e7%ab%a0%e8%aa%8d%e8%ad%89&#34;&gt;資料簽章認證&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;資料簽章認証其實和前面說的資料校驗在概念上是一樣的，都是為了讓資料的正確性受到保障，&#xA;但更強調接收方所收到(比如從某處下載)的檔案資料是正確且未被竄改過的。&#xA;其之不同之處在於，相比於資料校驗面對的是資料自然的隨機出錯，&#xA;資料認証的用途中需要面對並對抗的更多是對於人為刻意而精心竄改的防範。&lt;/p&gt;&#xA;&lt;p&gt;與資料校驗相同，若人們計算所收到資料的雜湊值與發送方所提供的雜湊值相同的話，&#xA;基本可以判定該筆資料是正確可受信任的，&#xA;因為在中間若有資料竄改的情況發生，一般來說這會導致最後計算出的雜湊值不吻合。&#xA;然而對於一個不夠複雜可靠的雜湊算法而言(例如 LRC)，竄改者可以透過精心設計的內容修改、&#xA;或者在資料的前後與中間等處插入一些特別設計的垃圾資料，&#xA;最終讓修改後的內文所計算出的雜湊值與修改前的內文雜湊值相同，&#xA;導致被竄改的文件受到接收方信任。&lt;/p&gt;&#xA;&lt;p&gt;因此對於資料認証用途的雜湊演算法選擇上，&#xA;最看重的是算法要擁有幾乎不可能發生碰撞的極低碰撞率、以及極為隨機的雜湊值分佈，&#xA;最好是只要改了資料的一小點部份就會造成最終雜湊值十萬八千里的不同，&#xA;而能夠達成這種要求的演算法基本都是不可逆的。&#xA;一個符合上述特性的雜湊演算法，&#xA;可以讓竄改者想要微調控制資料使得雜湊值發生碰撞的情況基本不可能發生，&#xA;至於演算法的其他的性能指標如運算效率等等一般完全不會有人在意。&#xA;目前常被使用於資料認証用途的演算法有 MD5、SHA-2 等，&#xA;此外在各種雜湊演算法列表中若您有看到關於「適合加密使用」等的註記或分類的話，&#xA;那麼這種演算法就是可以用來做資料認証用途的雜湊算法。&#xA;如果您曾有在網路上下載檔案時，看到下載處旁邊有一串文字寫著類似「MD5=&amp;hellip;&amp;hellip;」這樣的東西，&#xA;它就是所謂的驗證碼，&#xA;下回您可以試著將下載到的檔案用軟體工具計算一下它的驗證碼，&#xA;再比較看看與網頁上的記載是否相同？&lt;/p&gt;&#xA;&lt;p&gt;再延伸下去，雖然這一長串的驗證碼可以保證資料的正確性，可是驗證碼本身的可信度呢？&#xA;我怎麼能確定記載的這個驗證碼是原始作者留的、還是被駭客改過的？&#xA;如果說驗證碼保障了資料的話，那麼誰來保障驗證碼呢？&#xA;對於這樣的需求發展出來的解決方案，一般是使用了公鑰加密技術，&#xA;用原作者或發佈者的私鑰將驗證碼加密起來，這樣任何人都可以用發佈者的公鑰解密出驗證碼，&#xA;並且只有使用了正確的公鑰才能夠解密出正確的驗證碼，讓竄改者無從下手。&#xA;對於這種經過加密的驗證碼，我們一般稱之為「簽章」，如同現實世界手寫簽名的數位版本，&#xA;任何人都可以透過公鑰系統搭配雜湊算法，驗證某筆檔案或資料是否確為某個人所簽名發佈並且未經竄改。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;資料隱藏&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/hash-calculation/#%e8%b3%87%e6%96%99%e9%9a%b1%e8%97%8f&#34;&gt;資料隱藏&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;當我們想要隱藏一些不想讓別人知道的資料時，直覺想到的方法大概就是加密了吧！&#xA;然而有時候我們可以使用雜湊計算來隱藏資料，&#xA;除了比一般的加密算法更簡單快速以外，還不用費心在管理和保護加密密鑰的工作上。&#xA;當然，使用雜湊計算來隱藏資料有一個明顯的缺點，就是無法回復資料，&#xA;因此只適合用來隱藏那些不需要解密的資料。&#xA;那麼實際上有這種不需要解密的資料隱藏需求嗎？答案是有的，比如密碼的加密。&lt;/p&gt;&#xA;&lt;p&gt;在很多時候我們會需要對使用者進行密碼驗證，比如說網站的密碼登入、電腦的密碼登入等等，&#xA;如果我們把使用者設定的密碼資料直接明碼儲存在網站資料庫、或者電腦系統的檔案系統內的話，&#xA;那麼就會存在很大的風險，一旦資料庫被入侵竊取的話，所有使用者的密碼就一覽無遺。&#xA;一個普遍被使用的保護方法是我們不直接儲存密碼，&#xA;我們將密碼做為輸入資料計算出該密碼的雜湊值之後，只儲存這個雜湊值。&#xA;這樣雖然無法還原出原本的密碼，但卻完全不影響密碼機制的使用，&#xA;因為我們只要對使用者輸入的密碼進行一樣的雜湊計算得到雜湊值，&#xA;然後比對和資料庫中儲存的雜湊值有沒有一樣，就知道密碼是否正確了。&#xA;相對的，就算有人從資料庫中取得了這些雜湊資料，也無法知道密碼是什麼？&#xA;只能使用暴力破解法一個一個去嘗試！&lt;/p&gt;&#xA;&lt;p&gt;對於資料隱藏用途的雜湊演算法挑選，一般完全比照資料簽章認証的標準，&#xA;一樣使用加密類型的雜湊算法。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;產生密鑰&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/hash-calculation/#%e7%94%a2%e7%94%9f%e5%af%86%e9%91%b0&#34;&gt;產生密鑰&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;雜湊計算除了通常用來把一筆很長的資料計算為很短的雜湊值之外，&#xA;也可以用來將很短的資料變成長度比較長的雜湊值。&lt;/p&gt;&#xA;&lt;p&gt;舉例來說，學過加密算法的人大概都知道加密金鑰長度通常都在數百位元的大小，&#xA;可是我們常用的文件加密、壓縮檔加密等等都只需要設定相對短得多的密碼，&#xA;甚至密碼只有一個字母也行，那麼這麼短的密碼怎麼能夠用來當作加密金鑰使用呢？&#xA;這時候雜湊計算就派上用場了。&#xA;比如說我們使用 MD5 將用戶輸入的密碼計算為 128 位元的雜湊值，&#xA;正好符合 AES 加密的最短金鑰長度，&#xA;這樣使用者不管設定了多短、或多長的密碼，我都可以計算得到一個足夠我使用、且看似亂數的金鑰；&#xA;並且最重要的是，只要輸入了同樣的密碼，我一定可以算出同樣的金鑰。&lt;/p&gt;&#xA;&lt;p&gt;對於金鑰產生用途的雜湊演算法挑選，可完全比照資料隱藏的標準，&#xA;一樣使用加密類型的雜湊算法。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;與其他一些看起來類似的計算不一樣的地方&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/hash-calculation/#%e8%88%87%e5%85%b6%e4%bb%96%e4%b8%80%e4%ba%9b%e7%9c%8b%e8%b5%b7%e4%be%86%e9%a1%9e%e4%bc%bc%e7%9a%84%e8%a8%88%e7%ae%97%e4%b8%8d%e4%b8%80%e6%a8%a3%e7%9a%84%e5%9c%b0%e6%96%b9&#34;&gt;與其他一些看起來類似的計算不一樣的地方&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;在完成了雜湊計算的介紹和比較之後，最後我還想順便針對初學者補充一些資料，&#xA;解釋有些看起來與雜湊計算相似(或雜湊計算與之相似)的計算工作之間的差異。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;亂數&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/hash-calculation/#%e4%ba%82%e6%95%b8&#34;&gt;亂數&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;亂數產生就是產生一個隨機的亂數，而雜湊計算也是算出一個看起來隨機的亂數，&#xA;那麼此二者之間的差別在哪裡呢？&lt;/p&gt;&#xA;&lt;p&gt;相比於雜湊計算，亂數的計算強調的是絕對的隨機性和均勻性。&#xA;除此之外，亂數與雜湊之間最大的差別還在於，雜湊計算雖然最終也是算出無法預測的隨機數值，&#xA;但是只要輸入的資料相同，則最終的這個隨機數值也會是一樣的。&#xA;相反的，亂數計算以能夠算得最亂最無法預估的數值為目標，&#xA;即便目前的偽隨機亂數演算法當中只要輸入相同的狀態資訊則亦能算得一樣的亂數值，&#xA;但這比較像是迫於現實無奈之下的結果，而非偽隨機亂數的本意。&lt;/p&gt;&#xA;&lt;p&gt;另外，雜湊演算法要求在各種軟硬體計算環境下都能算得一樣的結果，&#xA;而亂數生演算法則對不同環境下造成的計算差異不太看中，&#xA;甚至有些亂數生成工作還會刻意把一些無法預測的硬體雜訊湊進來計算，&#xA;只為能夠算出更亂更無法預測的結果。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;加密&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/hash-calculation/#%e5%8a%a0%e5%af%86&#34;&gt;加密&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;前面提到，雜湊可以用來隱藏資訊變成好像隨機亂數的資料，&#xA;而加密計算也是能夠把資訊隱藏變成好像隨機亂數的資料。&lt;/p&gt;&#xA;&lt;p&gt;然而它們之間的不同比較容易分辨，雜湊與真正的加密行為之間最大的不同在於，&#xA;加密算法可以把資料從隱藏狀態下還原，而雜湊不行！&#xA;因此雜湊計算只能用來將資料隱藏之後做為比對等用途使用。&#xA;但也因為雜湊計算不要求能夠還原資料的原因，雜湊計算通常會比真正的加密計算來得簡單快速得多，&#xA;也避免了使用加密機制所需要的密鑰管理保護工作。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;參考資料&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/hash-calculation/#%e5%8f%83%e8%80%83%e8%b3%87%e6%96%99&#34;&gt;參考資料&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Hash_function&#34;&gt;https://en.wikipedia.org/wiki/Hash_function&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/List_of_hash_functions&#34;&gt;https://en.wikipedia.org/wiki/List_of_hash_functions&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Hash_table&#34;&gt;https://en.wikipedia.org/wiki/Hash_table&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>使用 gettext 方案製做多國語系程式 - 製做語系檔</title>
      <link>http://www.huoschen.idv.tw/blog/programming/%E4%BD%BF%E7%94%A8-gettext-%E6%96%B9%E6%A1%88%E8%A3%BD%E5%81%9A%E5%A4%9A%E5%9C%8B%E8%AA%9E%E7%B3%BB%E7%A8%8B%E5%BC%8F---%E8%A3%BD%E5%81%9A%E8%AA%9E%E7%B3%BB%E6%AA%94/</link>
      <pubDate>Fri, 08 Nov 2019 14:35:00 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/programming/%E4%BD%BF%E7%94%A8-gettext-%E6%96%B9%E6%A1%88%E8%A3%BD%E5%81%9A%E5%A4%9A%E5%9C%8B%E8%AA%9E%E7%B3%BB%E7%A8%8B%E5%BC%8F---%E8%A3%BD%E5%81%9A%E8%AA%9E%E7%B3%BB%E6%AA%94/</guid>
      <description>&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;當我們依據 gettext 的規範修改我們的程式碼後，&#xA;接下來就可以使用 gettext 的各種工具掃描分析、加入翻譯資料、並最終產生語系資源檔了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;本篇將針對程式開發人員建置專案工作的部份，&#xA;以一個範例來描述如何從分析專案程式碼到最終生成語系檔案的工作。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://upload.wikimedia.org/wikipedia/commons/6/6b/Gettext.svg&#34;&gt;&#xA;    &lt;span class=&#34;image&#34;&gt;&lt;img src=&#34;https://upload.wikimedia.org/wikipedia/commons/6/6b/Gettext.svg&#34; alt=&#34;Gettext&#34; title=&#34;gettext workflow diagram&#34;/&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;上面流程圖簡單扼要的說明了從分析程式碼到最終產出語系資源檔的流程、工具、和產生的各種檔案，&#xA;但對於初次接觸的人可能還是稍嫌複雜，&#xA;因此接下來我要稍稍解釋它們，使其對初學者較容易理解記憶。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_生成的檔案類型&#34;&gt;生成的檔案類型&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;整個處理文字翻譯的過程中大約會產生 .pot、.po、和 .mo 三種檔案，分別解釋如下：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;ulist&#34;&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;PO (Portable Object)&lt;/p&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;該檔案就是在整個翻譯過程中最重要的檔案，&#xA;每一個(要支援的)地方語言就需要(至少)一個對應的 PO 檔，&#xA;這個檔案是語言文字翻譯翻譯人員直接面對的一個文字檔，&#xA;裡面記載著大量原始文字對應到某個特定語文文字的資料條目、以及其他有用的註解訊息。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;MO (Machine Object)&lt;/p&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;應用程式若直接讀取解析 PO 檔案的話，會消耗比較多的系統資源，&#xA;因此實際上由應用程式直接取用的是經過編譯後的二進位文件，也就是 MO 檔，&#xA;而這也就是在本系列文章中所稱呼的語系資源檔。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;POT (Portable Object Template)&lt;/p&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;因為每一種語言都需要一個與之對應的 PO 檔，因此實際上可能會存在數量龐大的 PO 檔群。&#xA;PO 檔最初是由解析工具掃描整份專案程式碼檔案而來，&#xA;那麼多次重複掃描一樣的文件以產生不同語系的 PO 檔就顯得不太有效率。&#xA;因此實務上通常只會進行一次掃描解析工作來產生一個通用的樣板檔案，&#xA;再用這個通用檔案去變化成每個具體語系所使用的檔案，而這個通用的樣板檔案就是 POT 檔。&#xA;實際上 POT 和 PO 的格式一模一樣，其檔案的初始內容也幾乎相同。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_生成檔案的步驟&#34;&gt;生成檔案的步驟&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在了解各種檔案的用途後，接下來以一個範例解釋產生它們的流程步驟：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;olist arabic&#34;&gt;&#xA;&lt;ol class=&#34;arabic&#34;&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;使用 xgettext 程式掃描整個專案的程式碼以產生 POT 檔：&lt;/p&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;xgettext \&#xA;&#x9;--package-name=gettext-demo \&#xA;&#x9;--package-version=v0.1 \&#xA;&#x9;--copyright-holder=Testman \&#xA;&#x9;-c+ \&#xA;&#x9;-k_ \&#xA;&#x9;-o demo.pot \&#xA;&#x9;demo_part1.c demo_part2.c ...&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;常用選項：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;ulist&#34;&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;-o FILE&lt;/code&gt;: 指定輸出檔名。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;-cTAG&lt;/code&gt;: 將程式碼內以 &lt;code&gt;TAG&lt;/code&gt; 做為開頭的註解一併寫到 POT 檔案裡，&#xA;這些註解可能可以幫助翻譯人員進行翻譯時閱讀參照。&#xA;因此需要與程式開發人員協調出一個約定的符號，&#xA;讓開發人員為那些他們覺得可能會對翻譯有所幫助的註解說明加上這個約定的符號。&#xA;在這個範例裡，我們使用「&lt;code&gt;+&lt;/code&gt;」符號。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;kWORD&lt;/code&gt;: 除了 gettext 以外，也一併將 &lt;code&gt;WORD&lt;/code&gt; 視為關鍵字搜尋程式碼檔，&#xA;這個功能在使用了自定義的 gettext 別名的時候有用。&#xA;在這個範例裡，我們一併將底線符號「&lt;code&gt;_&lt;/code&gt;」視為關鍵字搜尋。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;--package-name=PACKAGE&lt;/code&gt;: 設定這個程式專案的名稱，不設也不影響後續流程。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;--package-version=VERSION&lt;/code&gt;: 設定這個程式專案當前的版本號名稱，不設也不影響後續流程。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;--copyright-holder=STRING&lt;/code&gt;: 設定版權所有人或單位的名稱，不設也不影響後續流程。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/div&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;使用 msginit 讀取 POT 檔來產生 PO 檔(適合第一次產生該語系 PO 檔時使用)：&lt;/p&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;msginit -l zh_TW.UTF-8 --no-translator -o demo-zh_TW.po -i demo.pot&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;常用選項：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;ulist&#34;&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;-i FILE&lt;/code&gt;: 輸入的 POT 檔。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;-o FILE&lt;/code&gt;: 輸出的 PO 檔；&#xA;若不指定輸出檔，則預設會以 locale 名稱產生輸出檔；&#xA;若設輸出檔為 &lt;code&gt;-&lt;/code&gt; 則會從 standard output 輸出結果。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;-l LL_CC&lt;/code&gt;: 指定的語系，格式為 &lt;code&gt;&amp;lt;LOCALE&amp;gt;_&amp;lt;COUNTRY&amp;gt;[.&amp;lt;ENCODING&amp;gt;]&lt;/code&gt;。&#xA;雖未要求輸入 encoding，&#xA;但在沒有 encoding 的情況下產生的檔案 encoding 通常是 ASCII，&#xA;此時若在翻譯檔內輸入非 ASCII 的文字 — 比如說 UTF-8 格式的中文 — 則會在後面編譯時產生錯誤；&#xA;雖然這個 encoding 可以在文件產生後再手工修改 charset 欄位，&#xA;但若閒麻煩的話就可以在產生 PO 檔的時候直接指定 encoding。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;--no-translator&lt;/code&gt;: 不設定翻譯者資訊，&#xA;產生的 PO 檔相關欄位會被設為 &amp;#34;automatically generated&amp;#34;；&#xA;若不使用這個選項，則程式會交互式詢問翻譯者名稱和信箱，可能不利自動化腳本，&#xA;因此一般建議翻譯者資訊由翻譯者在 PO 檔內自行修改。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/div&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;使用 msgmerge 更新 PO 檔(適合更新已有的語系 PO 檔時使用)：&lt;/p&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;msgmerge -U --backup=off demo-zh_TW.po demo.pot&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;除了第一次產生某個語系的 PO 檔之外，&#xA;比較常遇到的情況應該是程式有修改更新，而可能會多出一些需要翻譯的文字。&#xA;此時若使用 msginit 每次都重新產生 PO 檔然後全部翻譯重來一遍的話，&#xA;應該會讓翻譯人員吃不消！&#xA;這時改用 msgmerge 來產生合併後的 PO 檔，即保留原有的翻譯、並加入新的條目，&#xA;就會是比較合適的做法。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;常用選項：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;ulist&#34;&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;-U&lt;/code&gt;: 直接將更新後的結果寫回 PO 檔；&#xA;若沒有其他設定要求，則會產生一個原檔案的備份檔。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;-o FILE&lt;/code&gt;: 指定輸出檔名；&#xA;若不指定輸出也沒有設定更新，則會將結果輸出到 standard output。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;--backup=off&lt;/code&gt;: 在更新模式下不要產生備份檔。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/div&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;人工修改 PO 檔資訊、增加翻譯字串：&lt;/p&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這個步驟其實沒有建置人員的事情，&#xA;只要把新產生的 PO 檔交給翻譯人員處理，或者將翻譯人員提交的 PO 檔合併進來，就可以了。&#xA;有關於 PO 檔案的格式內容、以及該如何編輯的部份到後面再做解釋。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;使用 msgfmt 讀取 PO 檔以產生 MO 檔：&lt;/p&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;test -d locale/zh_TW/LC_MESSAGES || mkdir -p locale/zh_TW/LC_MESSAGES&#xA;msgfmt -o locale/zh_TW/LC_MESSAGES/demo.mo demo-zh_TW.po&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;常用選項：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;ulist&#34;&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;-o FILE&lt;/code&gt;: 指定輸出檔名。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;-a NUMBER&lt;/code&gt;: 設定資料對齊 &lt;code&gt;NUMBER&lt;/code&gt; bytes。&#xA;視 gettext 執行時庫的實做而定，將對齊設為適合目標平臺 CPU 的數值，&#xA;對於加速 MO 檔內資料查詢可能有幫助。&#xA;(default: 1)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;--endianness=BYTEORDER&lt;/code&gt;: 設定使用的 endian 格式，&#xA;&lt;code&gt;BYTEORDER&lt;/code&gt; 可為 big 或 little。&#xA;將 endian 設定為與目標平臺相同，&#xA;則可能可以加速一點點在應用程式讀取 MO 檔時的速度。&#xA;(default: same as platform)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/div&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_發佈_mo_檔&#34;&gt;發佈 MO 檔&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;編譯完成的 MO 檔就可以發佈出去了。&#xA;由於 MO 檔本身與平臺無關，因此同一個 MO 檔可以拿到所有的平臺下使用，&#xA;而無需重新編譯為個別平臺下使用的版本。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;也由於 MO 檔本身獨立於應用程式執行檔之外，是由應用程式通常在程式起始時載入，&#xA;就算載入失敗或找不到檔案也不會讓程式當掉或發生其他異常，就只是等於沒有翻譯而已；&#xA;就算 MO 檔內沒有完整記載程式所有需要翻譯的字串資料(也就是還沒翻譯完的意思)，&#xA;那就是在程式中的部份字串會以原始字串呈現而已。&#xA;因此 MO 檔本身的使用彈性很大，可以獨立於執行檔進行更新升級以補充或修正翻譯條目，&#xA;也可以直接加入原來沒有的新語系的 MO 檔，就可以讓應用程式支援這個語系。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;那麼 MO 檔究竟要放到哪裡去呢？答案是個別的 MO 檔最終要放到下面這個位置：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;literalblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre&gt;&amp;lt;RESOURCE-DIR&amp;gt;/&amp;lt;LOCALE&amp;gt;/LC_MESSAGES/&amp;lt;DOMAIN&amp;gt;.mo&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;其中：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;ulist&#34;&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;&amp;lt;DOMAIN&amp;gt;&lt;/code&gt; 通常就是專案名稱或程式名稱，實際要與開發人員協調約定；&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;&amp;lt;LOCALE&amp;gt;&lt;/code&gt; LL_CC 格式的語系名稱，例如 &lt;code&gt;zh_TW&lt;/code&gt;；&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;&amp;lt;RESOURCE-DIR&amp;gt;&lt;/code&gt; 是所有語系的 MO 檔會放置的共同目錄，&#xA;在 Linux 上面通常就是 /usr/share/locale，實際要與開發人員協調約定，&#xA;比如說可能是執行檔所在目錄下的 data 資料匣等等。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;假設我們的範例使用了 Linux 上的一般慣例，&#xA;那麼我們編出來的臺灣中文的 MO 檔就應該要放在下面這個地方：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;literalblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre&gt;/usr/share/locale/zh_TW/LC_MESSAGES/demo.mo&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;然而為了方便測試的緣故，本系列文章的範例實際使用的是工作目錄下的 locale 資料匣，&#xA;我們的 domain name 設定的也是 gettext-demo 而非 demo。&#xA;那麼假設你會在家目錄下的 demospace 目錄下執行範例程式的話，&#xA;那麼我們的臺灣中文 MO 檔就應該要放在：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;literalblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre&gt;~/demospace/locale/zh_TW/LC_MESSAGES/gettext-demo.mo&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_po_檔案內容&#34;&gt;PO 檔案內容&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;PO 檔可說是整個流程所生成的檔案中最重要、富含最多訊息，並且也是翻譯人員直接面對的檔案，&#xA;因此有必要說明一下這個檔案的格式和內容。&#xA;下面我們先來看看本文所範例所使用的 PO 檔案內容：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;# Chinese translations for gettext-demo package&#xA;# traditional Chinese translation for gettext-demo.&#xA;# Copyright (C) 2019 Testman&#xA;# This file is distributed under the same license as the gettext-demo package.&#xA;# Automatically generated, 2019.&#xA;#&#xA;msgid &amp;#34;&amp;#34;&#xA;msgstr &amp;#34;&amp;#34;&#xA;&amp;#34;Project-Id-Version: gettext-demo v0.1\n&amp;#34;&#xA;&amp;#34;Report-Msgid-Bugs-To: \n&amp;#34;&#xA;&amp;#34;POT-Creation-Date: 2019-11-11 09:43+0800\n&amp;#34;&#xA;&amp;#34;PO-Revision-Date: 2019-11-11 09:43+0800\n&amp;#34;&#xA;&amp;#34;Last-Translator: Automatically generated\n&amp;#34;&#xA;&amp;#34;Language-Team: none\n&amp;#34;&#xA;&amp;#34;Language: zh_TW\n&amp;#34;&#xA;&amp;#34;MIME-Version: 1.0\n&amp;#34;&#xA;&amp;#34;Content-Type: text/plain; charset=UTF-8\n&amp;#34;&#xA;&amp;#34;Content-Transfer-Encoding: 8bit\n&amp;#34;&#xA;&#xA;#: gettext-demo.c:66&#xA;msgid &amp;#34;This is a simple message.&amp;#34;&#xA;msgstr &amp;#34;這是一個簡單的訊息。&amp;#34;&#xA;&#xA;#. + This is a special comment that will be output to the PO file.&#xA;#: gettext-demo.c:70&#xA;#, c-format&#xA;msgid &amp;#34;I will go to %s by %s.\n&amp;#34;&#xA;msgstr &amp;#34;我要搭%2$s去%1$s。\n&amp;#34;&#xA;&#xA;#: gettext-demo.c:70&#xA;msgid &amp;#34;Taipei&amp;#34;&#xA;msgstr &amp;#34;臺北&amp;#34;&#xA;&#xA;#: gettext-demo.c:70&#xA;msgid &amp;#34;bus&amp;#34;&#xA;msgstr &amp;#34;公車&amp;#34;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_翻譯條目&#34;&gt;翻譯條目&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;PO 檔主要記載著大量翻譯條目，&#xA;也就是成對的 msgid 和 msgstr 標籤，分別對應原始字串和翻譯後字串，&#xA;原始字串內容由解析程式生成，而翻譯字串內容則是由翻譯人員填寫；&#xA;若翻譯字串(msgstr)的內容為空的話，則該條目就不會被編進 MO 檔，&#xA;應用程式最終就會顯示原始字串。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;msgid &amp;#34;This is a simple message.&amp;#34;&#xA;msgstr &amp;#34;這是一個簡單的訊息。&amp;#34;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;以上面條目為例，這個條目的 ID 就是 msgid 的內容即 &amp;#34;This is a simple message.&amp;#34;，&#xA;而對應的翻譯為 msgstr 內容，原本是空的，&#xA;因此由我寫上 &amp;#34;這是一個簡單的訊息。&amp;#34; 這個翻譯結果。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_檔頭資訊&#34;&gt;檔頭資訊&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;PO 檔案頭部有一個特別的空字串 ID，&#xA;其所對應的內容實為語系檔案相關資訊註記，供後續處理程式所用。&#xA;其中大部份資訊是由程式所產生，一般不需理會，&#xA;只有部份的資料內容可能需要翻譯人員或建置人員修改更新其內容&#xA;(雖然多半不改也不會影響後續檔案產生流程)，&#xA;例如：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;ulist&#34;&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;Project-Id-Version&lt;/code&gt; 標籤後面的 &lt;code&gt;PACKAGE&lt;/code&gt; 和 &lt;code&gt;VERSION&lt;/code&gt; 應更改為&#xA;專案或程式名稱、以及其版本。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;Last-Translator&lt;/code&gt; 標籤後面應填寫翻譯者姓名和信箱。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;charset&lt;/code&gt; 標籤後面要修改為所使用的編碼格式&#xA;(如果在產生 PO 檔的時候沒有指定文字編碼的話)。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_註解與特殊註解&#34;&gt;註解與特殊註解&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;PO 檔內以「&lt;code&gt;#&lt;/code&gt;」開頭的那一行文字就是是註解訊息，一般的註解會被後續處理程式所忽略；&#xA;然而那些在註解符號後面不是空白，而是緊跟其他符號的註解，&#xA;則為提供後續處理程式、或翻譯人員所使用的特殊資訊，例如：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;#. + This is a special comment that will be output to the PO file.&#xA;#: gettext-demo.c:70&#xA;#, c-format&#xA;msgid &amp;#34;I will go to %s by %s.\n&amp;#34;&#xA;msgstr &amp;#34;我要搭%2$s去%1$s。\n&amp;#34;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;ulist&#34;&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;#.&lt;/code&gt; 表示這是從程式碼中掃描出來的特別的註解，可能是程式人員認為對翻譯有幫助的說明。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;#:&lt;/code&gt; 記載該原始字串出現於程式碼的位置，以利在需要的時候直接向開發人員查詢相關疑惑。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;#,&lt;/code&gt; 表示這是供 MO 產生器使用的資訊，其後面文字可能為：&lt;/p&gt;&#xA;&lt;div class=&#34;ulist&#34;&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;fuzzy&lt;/code&gt;：該註記可能由翻譯人員加上，&#xA;表示該翻譯可能不正確或還存在爭議，暫不將該條目編入 MO 檔。&#xA;當翻譯結果確認無誤後，由翻譯人員把該註解刪除即可。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;c-format&lt;/code&gt;：表示翻譯字串內含有 C 語言的 printf 類函式的格式字。&#xA;若程式的執行環境為 UNIX 相容平臺，&#xA;還可以使用特別的 &lt;code&gt;1$&lt;/code&gt;、&lt;code&gt;2$&lt;/code&gt; 等符號標記來變更後面參數出現的次序，&#xA;這樣就可以因應不同語言的語法順序可能不一樣的狀況來調整挪移文句，詳請參閱範例程式。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/div&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_po_檔相關工具&#34;&gt;PO 檔相關工具&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;理論上在此之前的說明已經足以從頭到尾完成整個翻譯檔案產生的流程了；&#xA;然而如同我們在系列文章中一直強調的，&#xA;在實際的專案上，人們經常面對的是內含大量翻譯條目的 PO 檔，&#xA;其中有些已翻譯、有些未翻譯、有些還待確定，&#xA;同時程式本身也在修改，時不時會多出一些新的待翻譯條目(或可能會少一些條目)。&#xA;那麼翻譯人員就要在成千上萬行的 PO 檔裡面到處人工閱覽搜索，再補上需要的翻譯？&#xA;當然不是！&#xA;因此接下來就要介紹一些專門用來分析處理 PO 檔的工具程式。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_potool&#34;&gt;potool&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://marcin.owsiany.pl/potool-page&#34;&gt;potool&lt;/a&gt; 是廣泛被使用的 PO 檔分析處理工具，&#xA;使用套件管理工具的話只要安裝 potool 套件即可。&#xA;potool 主要提供三支程式：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;ulist&#34;&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;potool&lt;/p&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這是最主要的程式，有兩種工作模式(至於使用參數選項則太多，詳請參閱該程式說明文件)：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;ulist&#34;&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Filter Mode: 當只有輸入一個 PO 檔時為 filter mode，&#xA;作用為依指定的條件過濾並輸出檔案內的條目。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Merge Mode: 當輸入兩個 PO 檔時為 merge mode，&#xA;作用為將兩個檔案內容合併，類似於 msgmerge 的工作。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/div&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;postats&lt;/p&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這是 potool 程式的再包裝腳本，&#xA;用以分析並輸出 PO 檔的統計資訊如已翻譯條目、未翻譯條目、完成比例等，&#xA;簡單用法如下：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;literalblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre&gt;postats FILE.po&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;poedit (potooledit)&lt;/p&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這是 potool 程式的再包裝腳本，會讀取並只顯示尚未完成翻譯的條目讓使用者編輯後回存。&#xA;potooledit 是這支程式的另一個別名，為避免與其他也叫作 poedit 的程式發生同名衝突而設！&#xA;簡單用法如下：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;literalblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre&gt;poedit FILE.po&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;potool 雖然小巧便利，&#xA;但因是指令列工具，要讓一般的文字翻譯人員平常使用的話可能還存在一些難以跨越的門檻。&#xA;potool 一般的用途比較多是用來自動分析專案內的語系翻譯進度等資訊，&#xA;或者程式人員小規模修改翻譯條目時所使用。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_gui_程式&#34;&gt;GUI 程式&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;除了指令列程式以外，一般的語言翻譯人員可能更喜歡使用方便直覺的 Desktop GUI 程式。&#xA;這裡推薦使用簡單容易上手的 &lt;a href=&#34;https://poedit.net/&#34;&gt;Poedit&lt;/a&gt; (基於 wxWidgets)、&#xA;或者還有可能有點複雜但功能非常強大的 &lt;a href=&#34;https://omegat.org/&#34;&gt;OmegaT&lt;/a&gt; (基於 Java)，&#xA;他們都是跨平臺的自由軟體。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>使用 gettext 方案製做多國語系程式 - 程式編寫</title>
      <link>http://www.huoschen.idv.tw/blog/programming/%E4%BD%BF%E7%94%A8-gettext-%E6%96%B9%E6%A1%88%E8%A3%BD%E5%81%9A%E5%A4%9A%E5%9C%8B%E8%AA%9E%E7%B3%BB%E7%A8%8B%E5%BC%8F---%E7%A8%8B%E5%BC%8F%E7%B7%A8%E5%AF%AB/</link>
      <pubDate>Fri, 08 Nov 2019 14:30:00 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/programming/%E4%BD%BF%E7%94%A8-gettext-%E6%96%B9%E6%A1%88%E8%A3%BD%E5%81%9A%E5%A4%9A%E5%9C%8B%E8%AA%9E%E7%B3%BB%E7%A8%8B%E5%BC%8F---%E7%A8%8B%E5%BC%8F%E7%B7%A8%E5%AF%AB/</guid>
      <description>&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;首先，若應用程式的程式碼本身不支援任何一種多語系工具的設計的話，那麼後面就什麼都沒得玩了！&#xA;這樣的程式肯定是無法支援不同語言的切換顯示行為。&#xA;因此對於一個想要支援多語系的專案而言，需要進行的第一步就是修改專案程式碼，&#xA;使其可以支援所使用的多語系工具進行後續處理、翻譯、和發佈等工作。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;本篇將針對程式開發人員編寫程式碼的部份，&#xA;以一個範例來描述如何修改程式碼以支援 gettext 多語系方案的工作。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;程式碼中使用 gettext 大概分為兩個部份，分別是：&#xA;在程式碼中使用 gettext 的功能來標記需要翻譯的字串、以及載入所需要的語系檔案資料，&#xA;以下將分別進行描述。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_程式碼中使用_gettext_提供的功能&#34;&gt;程式碼中使用 gettext 提供的功能&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;程式碼裡面所有需要被翻譯的文字都要特別標記起來，這樣後續工具才能知道哪些地方需要翻譯處理。&#xA;標記的方式是將需要翻譯的字串放進「&lt;code&gt;gettext( )&lt;/code&gt;」裡面，例如將：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;const char *message = &amp;#34;This is a simple message.&amp;#34;;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;改成：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;const char *message = gettext(&amp;#34;This is a simple message.&amp;#34;);&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;gettext 有兩個作用，在後面使用翻譯工具解析檔案時，會以該關鍵字抓出所有需要翻譯的字串。&#xA;而在程式執行時期，gettext 其實就是個函式(需要引用 libintl.h)，&#xA;它會以傳入的字串做為 ID 來尋找並傳回對應的翻譯字串；&#xA;若找不到對應的字串、或根本語系資源檔就沒有成功載入，則便會將輸入的字串直接傳回，&#xA;也就是形同沒有翻譯的意思。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;使用原始字串作為 ID 的好處是，&#xA;程式開發人員只管標記需要翻譯的字串，不需再為每一個字串想一個 ID；&#xA;但也由於原始字串會被程式庫當作 ID 使用，&#xA;因此建議原始字串使用比較單純、沒有什麼編碼爭議的語言，通常會建議使用英文。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;有鑑於 gettext 這個關鍵字本身可能單字長度太長，會太影響程式碼版面，&#xA;有時人們會在程式碼裡定義一個更簡單簡短的別名，最常見的大概就是一個底線符號「&lt;code&gt;_&lt;/code&gt;」了，&#xA;例如：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;#define _(str) gettext(str)&#xA;&#xA;......&#xA;&#xA;const char *message = _(&amp;#34;This is a simple message.&amp;#34;);&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;當然若這麼做的話，後面在使用解析程式時就要記得通知它需要一併搜尋我們所定義的符號，&#xA;這個問題到後面相關部份再描述。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;除此之外，有時候程式碼裡面可能會有一些只光看字串難以理解其意義，&#xA;讓翻譯人員不知該如何翻譯的字串，&#xA;這時就需要由開發人員寫上一些合適的解釋註解，讓後面翻譯人員可以參考閱讀。&#xA;問題是一般的註解通常都會被任何工具直接忽略，那該怎麼辦呢？&#xA;這裡就要介紹 gettext 工具有一個特別的設計，他在掃描解析程式碼的時候，&#xA;會把那些以約定的符號做為開頭的註解一併掃描進來使用。&#xA;這樣程式人員在寫出可能會讓翻譯人員糊塗的字串時，就可以以特別的符號做為開頭，&#xA;寫出可供翻譯人員參考的註解說明，例如：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;//+ This is a special comment that will be output to the PO file.&#xA;printf(gettext(&amp;#34;I will go to %s by %s.\n&amp;#34;), _(&amp;#34;Taipei&amp;#34;), _(&amp;#34;bus&amp;#34;));&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在這個範例裡，我們約定以加號「&lt;code&gt;+&lt;/code&gt;」起頭的註解是需要被掃描的註解，&#xA;然而實際上這可以是任何符號、也可以是多個字元，&#xA;重點是與開發人員約定好要使用什麼符號做為註解開頭即可，&#xA;後面在使用 gettext 掃描工具時，&#xA;再透過選項來告知掃描工具我們所使用的特殊註解開頭符號是什麼就可以了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_載入語系資源&#34;&gt;載入語系資源&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;當然，我們必須要先載入正確的語系資源檔案，後面也才有資料能夠讓 gettext 函式來搜尋取用，&#xA;這部份的工作通常會被併入應用程式初始化工作的一部份。&#xA;設定以及載入語系資源檔案主要由先後呼叫幾個函式完成：&#xA;setlocal、putenv、bindtextdomain、和 textdomain。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;#include &amp;lt;locale.h&amp;gt;&#xA;setlocale(LC_ALL, &amp;#34;&amp;#34;);&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;首先使用 setlocale 設定程式要使用的 locale。&#xA;函式需要輸入所要使用的 locale 名稱，理論上這個名稱的格式是由作業系統決定的，&#xA;但因為 gettext 大多使用在 Linux 上，因此我們也習慣使用 &lt;code&gt;LL_CC&lt;/code&gt; 的格式，&#xA;例如要設定使用臺灣中文的話就需要輸入 &lt;code&gt;zh_TW&lt;/code&gt;。&#xA;除了指名使用的 locale 名稱外，一般我們會直接輸入空字串，直接套用系統當前的語系設定；&#xA;而這就是為什麼 Linux 下的軟體大多不用特別設定使用的語言，&#xA;軟體就會自動依據使用者的語系設定顯示該語系文字的原因。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;char langenv[64];&#xA;snprintf(langenv, sizeof(langenv), &amp;#34;LANGUAGE=%s&amp;#34;, setlocale(LC_ALL, &amp;#34;&amp;#34;));&#xA;putenv(langenv);&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;此外，&#xA;在有些版本的 Linux 平臺上，可能會若遭遇無法成功載入正確的語系檔，&#xA;這時也許就需要一併設定 &lt;code&gt;LANGUAGE&lt;/code&gt; 環境變數。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;#include &amp;lt;libintl.h&amp;gt;&#xA;bindtextdomain(&amp;#34;gettext-demo&amp;#34;, &amp;#34;/usr/share/locale&amp;#34;);&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;再來是使用 bintextdomain 設定語系資源檔所在位置、以及 domain name。&#xA;先說 domain，各程式可能都會有各自的翻譯，為了將它們良好的區隔，以致不會互相混淆覆蓋，&#xA;我們需要為應用程式的語系資源檔取一個 domain name，&#xA;對於絕大部分的情況下，建議直接使用應用程式的名稱就可以了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;此外我們還要告訴程式庫我們的語系資源檔案所存放的位置。&#xA;對於設計在 Linux 上面運作的程式來說，在絕大部分的情況下直接把這個目錄設為&#xA;/usr/share/locale 即可；&#xA;對於其他情況，我們就需要計算並設定一個我們實際放置語系資源檔的位置，&#xA;例如後面的完整範例裡，我就設定使用了當前工作目錄下的 locale 資料匣，&#xA;而在發佈於 Windows 平臺上的程式，我習慣把語系檔案放在該程式所在目錄下的 locale 資料匣。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;#include &amp;lt;libintl.h&amp;gt;&#xA;textdomain(&amp;#34;gettext-demo&amp;#34;);&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;最後我們使用 textdomain 完成語系資源檔案的載入。&#xA;textdomain 函式需要傳入所要使用的 domain name，&#xA;也就是之前我們呼叫 bindtextdomain 函式時所傳入的 domain name。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;然後程式庫會依據我們前前後後所設定的各種資料來計算出要載入的語系檔案，&#xA;最終被載入的語系檔案為：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;literalblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre&gt;&amp;lt;RESOURCE-DIR&amp;gt;/&amp;lt;LOCALE&amp;gt;/&amp;lt;CATEGORY&amp;gt;/&amp;lt;DOMAIN&amp;gt;.mo&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;其中：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;ulist&#34;&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;&amp;lt;RESOURCE-DIR&amp;gt;&lt;/code&gt; 是我們呼叫 bindtextdomain 時所設定的路徑；&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;&amp;lt;LOCALE&amp;gt;&lt;/code&gt; 是我們呼叫 setlocale 時所設定，或由系統取得的 locale name；&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;&amp;lt;CATEGORY&amp;gt;&lt;/code&gt; 一般就是 &lt;code&gt;LC_MESSAGES&lt;/code&gt;，作者我孤陋寡聞，還沒看過有其他的情況；&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;&amp;lt;DOMAIN&amp;gt;&lt;/code&gt; 就是我們呼叫 bindtextdomain 時所設定的 domain name。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;以我們前面的範例來說，最終它載入的語系資源檔案可能就是：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;literalblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre&gt;/usr/share/locale/zh_TW/LC_MESSAGES/gettext-demo.mo&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_編譯與執行&#34;&gt;編譯與執行&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;編譯這個範例程式碼很簡單，只需把後面的完整範例程式碼存檔為 gettext-demo.c，&#xA;然後執行下列指令：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;gcc -o gettext-demo gettext-demo.c&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;就如同編譯一般的程式一樣，如同從前所述，gettext 相關程式庫已被併入 Glibc，&#xA;所以不需要再額外做什麼。&#xA;那麼如何執行呢？只要這樣即可：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;./gettext-demo&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;當然，現階段不管怎麼執行它跑出來的都會是英文，&#xA;那是因為我們還沒有進行翻譯的工作、也還沒有把語系檔放在正確的位置，&#xA;這個部份在下篇會做解釋。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;當我們完成了翻譯檔之後，若要測試成果的話，&#xA;除了更改使用者語系然後重新登出登入再執行程式外，&#xA;其實還可以透過程式環境變數簡單的改變程式所使用的語系，&#xA;例如使用下列方法強制程式在 en_GB 語系下運作：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;LANUGAGE=en_GB ./gettext-demo&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_完整範例程式碼&#34;&gt;完整範例程式碼&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;highlight&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;#ifdef NDEBUG&#xA;#   undef NDEBUG        // To force enable assert.&#xA;#endif&#xA;&#xA;#include &amp;lt;assert.h&amp;gt;     // To use assert, For test use.&#xA;#include &amp;lt;locale.h&amp;gt;     // To use setlocale.&#xA;#include &amp;lt;stdio.h&amp;gt;      // To use printf.&#xA;#include &amp;lt;stdlib.h&amp;gt;     // To use putenv.&#xA;#include &amp;lt;unistd.h&amp;gt;     // To use getcwd, for test use.&#xA;#include &amp;lt;libintl.h&amp;gt;    // To use bindtextdomain, textdomain, and gettext.&#xA;&#xA;#define _(str) gettext(str) // Tips: Use this define to short the &amp;#34;gettext&amp;#34; statement.&#xA;&#xA;int main(int argc, char *argv[])&#xA;{&#xA;    printf(&amp;#34;---- setting environments begin ----\n&amp;#34;);&#xA;&#xA;    /*&#xA;     * First, calculate the locale resource path.&#xA;     * This is designed for &amp;#34;testing in any path by any user&amp;#34; purpose&#xA;     * and may not be needed for the real application.&#xA;     * Normal applications usually use the absolute path, for example:&#xA;     * /usr/share/locale&#xA;     */&#xA;&#xA;    char cwd[FILENAME_MAX];&#xA;    assert(getcwd(cwd, sizeof(cwd)));&#xA;    printf(&amp;#34;CWD: %s\n&amp;#34;, cwd);&#xA;&#xA;    char locale_dir[FILENAME_MAX];&#xA;    snprintf(locale_dir, sizeof(locale_dir), &amp;#34;%s/%s&amp;#34;, cwd, &amp;#34;locale&amp;#34;);&#xA;    printf(&amp;#34;Locale DIR: %s\n&amp;#34;, locale_dir);&#xA;&#xA;    // Setting locale.&#xA;    const char *locale_name = setlocale(LC_ALL, &amp;#34;&amp;#34;);    // Using system locale setting.&#xA;    printf(&amp;#34;Set locale: %s\n&amp;#34;, locale_name);&#xA;    assert(locale_name);&#xA;&#xA;    // Setting language environment variable.&#xA;    char langenv[64];&#xA;    snprintf(langenv, sizeof(langenv), &amp;#34;LANGUAGE=%s&amp;#34;, locale_name);&#xA;    putenv(langenv);&#xA;&#xA;    // Define the domain name.&#xA;    // It is recommended to use the application name.&#xA;    static const char *domain = &amp;#34;gettext-demo&amp;#34;;&#xA;&#xA;    // Locate the path of locale resource files.&#xA;    const char *binded_dir = bindtextdomain(domain, locale_dir);&#xA;    printf(&amp;#34;Bind DIR: %s\n&amp;#34;, binded_dir);&#xA;    assert(binded_dir);&#xA;&#xA;    // Load the locale resource file.&#xA;    // Which file will be loaded is:&#xA;    // &amp;lt;LOCALE-DIR&amp;gt;/&amp;lt;LANGUAGE&amp;gt;[_&amp;lt;COUNTRY&amp;gt;]/&amp;lt;CATEGORY&amp;gt;/&amp;lt;DOMAIN&amp;gt;.mo&#xA;    // for example:&#xA;    // /usr/share/locale/zh_TW/LC_MESSAGES/vlc.mo&#xA;    const char *curr_domain = textdomain(domain);&#xA;    printf(&amp;#34;Load text: %s\n&amp;#34;, curr_domain); // The domain can be NULL to&#xA;                                            // use the previous setting.&#xA;    assert(curr_domain);&#xA;&#xA;    printf(&amp;#34;---- setting environments end ----\n&amp;#34;);&#xA;    printf(&amp;#34;\n&amp;#34;);&#xA;&#xA;    /*&#xA;     * Now start using gettext functions.&#xA;     * Every strings which be embraced by &amp;#34;gettext&amp;#34;&#xA;     * will be marked then try to translated.&#xA;     */&#xA;&#xA;    const char *message = gettext(&amp;#34;This is a simple message.&amp;#34;);&#xA;    printf(&amp;#34;%s\n&amp;#34;, message);&#xA;&#xA;    //+ This is a special comment that will be output to the PO file.&#xA;    printf(gettext(&amp;#34;I will go to %s by %s.\n&amp;#34;), _(&amp;#34;Taipei&amp;#34;), _(&amp;#34;bus&amp;#34;));&#xA;&#xA;    return 0;&#xA;}&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>使用 Gettext 方案製做多國語系程式 - 總覽</title>
      <link>http://www.huoschen.idv.tw/blog/programming/%E4%BD%BF%E7%94%A8-gettext-%E6%96%B9%E6%A1%88%E8%A3%BD%E5%81%9A%E5%A4%9A%E5%9C%8B%E8%AA%9E%E7%B3%BB%E7%A8%8B%E5%BC%8F---%E7%B8%BD%E8%A6%BD/</link>
      <pubDate>Fri, 08 Nov 2019 14:25:00 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/programming/%E4%BD%BF%E7%94%A8-gettext-%E6%96%B9%E6%A1%88%E8%A3%BD%E5%81%9A%E5%A4%9A%E5%9C%8B%E8%AA%9E%E7%B3%BB%E7%A8%8B%E5%BC%8F---%E7%B8%BD%E8%A6%BD/</guid>
      <description>&lt;p&gt;有時候程式寫著寫著一不小心生意愈做愈大，常常就會需要面對不同語言文化客戶的問題，&#xA;也就是「國際化與地區化」的議題(Internationalisation and Localisation)，&#xA;而這些問題中的第一個需要解決的問題常常就是：如何讓我的程式可以切換顯示各國語言的文字？&#xA;對於這個問題，我要介紹使用的是 gettext 方案，&#xA;這是在自由軟體以及 UNIX 平臺上廣泛被使用的方案。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;方案比較&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/%E4%BD%BF%E7%94%A8-gettext-%E6%96%B9%E6%A1%88%E8%A3%BD%E5%81%9A%E5%A4%9A%E5%9C%8B%E8%AA%9E%E7%B3%BB%E7%A8%8B%E5%BC%8F---%E7%B8%BD%E8%A6%BD/#%e6%96%b9%e6%a1%88%e6%af%94%e8%bc%83&#34;&gt;方案比較&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;讓應用程式支援多國語系的解決方案可能有很多不同的方式，那麼為什麼我推薦 gettext 方案呢？&#xA;這裡就要來比較 gettext 在一些常見的方案中有哪些突出的優點？&#xA;對於桌面三大平臺：&#xA;在 Linux 和其他 UNIX like 平臺上使用比例最高的就是 gettext 方案，好像也就沒什麼好比較的；&#xA;在 OS X 平臺上，我對 Apple 的東西涉略不多，難下論斷，&#xA;但既然 OS X 繼承自 Free BSD，那麼理論上應該也可以使用 gettext 無縫接軌；&#xA;因此最後會發現，似乎只有在 Windows 平臺上才有不同方案比較的意義，&#xA;所以接下來就來就來看看在 Windows 上面可能常見到的多語系開發方案。&lt;/p&gt;&#xA;&lt;p&gt;不像在 Linux 下被 gettext 統一天下，&#xA;Windows 平臺下的多語系支援方案比較凌亂，各種解決方案百花齊放。&#xA;這可能是因為微軟主推的方案太過繁複，然後其他的方案又都有一些窒礙難行的地方，&#xA;沒有誰能夠大大的優於另外一個，最終導致各種稀奇古怪的方案充斥的結果。&#xA;在這些方案當中，比較常見的一些如下：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;INI 類文字檔&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;做法最簡單也很常見的一個方案是把程式中使用到的各種文字編為 ID，&#xA;然後把這些 ID 和對應的實際文字寫在一個 INI 檔案&#xA;(或其他格式文字檔案、這裡僅以 INI 為代表)，&#xA;實務上有人為每一個支援的語言各建立一個 INI 檔，&#xA;也有人把所有支援語言的文字編在同一個 INI 檔(這時就要注意編碼問題 ^_^)。&#xA;當程式執行時，首先依據自身設定載入對應的 INI 檔案，&#xA;然後在後面程式運作的途中需要輸出文字時，就查詢並取用 INI 檔內的字串即可，&#xA;例如「&lt;a href=&#34;http://delphi.ktop.com.tw/board.php?tid=34209&#34;&gt;INI 多國語言介面&lt;/a&gt;」。&lt;/p&gt;&#xA;&lt;p&gt;這個方案的優點是簡單容易實現，而且似乎不管什麼樣的程式、什麼樣的平臺都可適用；&#xA;然而缺點是缺乏現成的相關處理工具。&lt;/p&gt;&#xA;&lt;p&gt;要知道一個在具有一定規模的實際專案中，所使用的字串數量成千上萬，&#xA;並且隨著程式的開發過程可能還會不斷變化，&#xA;那麼翻譯人員難道要手工搜尋處理這樣龐大且隨時變化的文字檔？&#xA;通常我們會希望透過一些處理工具來輔助翻譯人員，&#xA;至少能夠執行合併新舊翻譯檔、區分已翻譯和未翻譯條目等等工作；&#xA;可是因為整個文字檔的格式內容是自訂的、載入以及使用方式也是自己設計的，&#xA;因此可能沒有現成的工具可以處理這些工作，&#xA;那麼要不就是需要自己開發相關工具，要不就是讓翻譯人員全手動處理翻譯檔！&lt;/p&gt;&#xA;&lt;p&gt;這些因素使得 INI 方案只適用於不那麼複雜的小型程式、或者缺乏開發資源的專案&#xA;(不過就苦了翻譯人員了，雖然在缺乏開發資源的情況下通常程式開發和翻譯會是同一票人)。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Windows 資源檔&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;對於熟悉 Windows 程式開發的人可能多半知道，&#xA;Windows GUI 程式有一個特別的「Windows 資源檔」這種東西，&#xA;還要用資源檔編譯器編譯後再連結到最終的程式。&#xA;微軟對於多國語系開發的部份主打使用資源檔，&#xA;就是將所有程式中使用的字串都編到資源檔裡面去，執行時期再透過 ID 來找對應的字串，&#xA;概念上與使用 INI 檔類似，只不過把 INI 檔換成資源檔。&lt;/p&gt;&#xA;&lt;p&gt;這麼做的好處除了微軟在&#xA;&lt;a href=&#34;https://docs.microsoft.com/zh-tw/windows/uwp/app-resources/localize-strings-ui-manifest&#34;&gt;官方文件上對於多語系程式推薦使用這種方式&lt;/a&gt;、&#xA;以及可以把程式全包成一個執行檔而不用附帶一大堆檔案以外，似乎就沒再有什麼太大的優點。&#xA;使用 Windows 資源檔做為多國語系解決方案倒是存在不少缺點：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;當人們需要增加一些翻譯字串、或想要擴充支援原來沒有被支援的語言時，&#xA;需要修改資源檔並重新編譯程式。&lt;/li&gt;&#xA;&lt;li&gt;除了使用 Visual Studio 以外，有沒有什麼好的資源檔編輯器？&#xA;要知道一般的翻譯人員可能通常不會寫程式，難道要先教會他們使用 Visual Studio？&lt;/li&gt;&#xA;&lt;li&gt;如果開發的程式不是 MFC 或 WTL 專案，能夠簡單順暢的使用資源檔嗎？&lt;/li&gt;&#xA;&lt;li&gt;如果不使用 Visual C++ 編譯器的話，能夠簡單順暢的使用資源檔嗎？&lt;/li&gt;&#xA;&lt;li&gt;既然 Windows 資源檔是 Windows 下特有的產物，那如何面對跨平臺程式開發的需求？&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;此外，若專案沒有建基在 Unicode 環境的話，還會面臨一些嚴重的問題。&#xA;我在剛畢業的時候負責開發維護一個建立在 Borland C++ Builder 6 下的專案，&#xA;就是使用 Windows 資源檔以及一些小腳本處理多國語言的問題，&#xA;我們還做了一些工具用來掃描 DFM 檔案並生成翻譯用的 Excel 檔，&#xA;再把 Excel 檔內容取出並覆蓋回 DFM 檔和 RC 檔。&#xA;那時我們的程式主要需要中文、簡中、和英文版本，為此我們需要編出三套執行檔。&#xA;英文的部份在任何語系下都能被支援，&#xA;但為了編譯 GBK 編碼的資源，我們需要重新開機到簡中環境下編譯這部份的程式碼，&#xA;然後再重開機回來進行程式打包工作，你看那如果我們要支援更多一點語言的話不就忙死了！&#xA;我後來寫了 batch 腳本處理各種工序，使得一個按鍵可以完成絕大部分的編譯打包工作；&#xA;只是碰到需要切換語系並重新開機的部份就沒輒了，整個程序最終仍然無法一鍵完成。&lt;/p&gt;&#xA;&lt;p&gt;有人會說那如果把整個專案改成 Unicode 環境呢？這個我嘗試過了，最終仍以失敗告終。&#xA;為了這件事我還寫了一份關於&#xA;「&lt;a href=&#34;https://ignatius1895.pixnet.net/blog/post/68072357-%e5%ad%97%e5%85%83%e7%b7%a8%e7%a2%bc%e8%88%87%e7%a8%8b%e5%bc%8f%e8%a8%ad%e8%a8%88%28%e4%b8%80%29%ef%bc%9a%e5%89%8d%e8%a8%80&#34;&gt;字元編碼與程式設計&lt;/a&gt;」的心得。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;其他 GUI 框架自己的方案&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;其實除了微軟的 MFC、WTL 等等之外，Windows 平臺上還有一些其他的 GUI 框架，&#xA;這些框架可能也覺得現有多語系程式的開發存在許多困難的問題，&#xA;因此索性也各自提出了自己的多語系方案，比如 Qt 早早就推出了多語系方案，&#xA;較新版本的 Borland VCL framework 也推出了自己的 ITE 多語系方案，&#xA;這樣，Windows 上的多語系方案就更凌亂了！&lt;/p&gt;&#xA;&lt;p&gt;使用這些 GUI 框架多語系方案的好處是這些方案與框架本身最匹配，&#xA;並且可以無需理會平臺的差異，在不同平臺下都使用同一套做法(如果該框架本身有跨平臺的話)。&#xA;而缺點就是該方案只適用於該框架，當轉換框架時就要重新來過；&#xA;或者比如說我今天想要做個 console 工具程式，&#xA;難道為了多語系的緣故我還要大費周張把 GUI 框架給拉進來嗎？&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;&lt;a href=&#34;https://www.gnu.org/software/gettext/&#34;&gt;GNU gettext&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;最後介紹重頭戲，就是廣泛被用在跨平臺程式的 gettext 方案，&#xA;這個方案有一些優點：&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;該方案是一個僅僅用於處理多語系文字相關的程式庫和工具集，無涉任何框架，&#xA;可被使用於任何專案。&lt;/li&gt;&#xA;&lt;li&gt;除了 C/C++ 以外，gettext 還有如 Java、Python、C# 等等多種語言的 bundle，&#xA;適用範圍挺大。&lt;/li&gt;&#xA;&lt;li&gt;該方案本身無平臺上的強相依性，可被移植使用於任何平臺。&lt;/li&gt;&#xA;&lt;li&gt;該方案本身結構單純，即便在執行時庫的移植或授權上遇到問題，自行實做也很容易。&lt;/li&gt;&#xA;&lt;li&gt;該方案下的語系檔案本身獨立於應用程式之外，&#xA;可在不動到應用程式的情況下對翻譯資料進行更新、擴充，或加入原本所沒有的語系。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;由於 gettext 的執行時庫已被納入 Glibc，&#xA;也就是說基本上在 Linux 平臺下是原生支援 gettext 環境，&#xA;連特別連結什麼程式庫的動作都不需要，只要直接使用它就好了，可說是非常方便。&#xA;由於眾多優點，特別是在跨平臺特性上面的優點，&#xA;使得大量跨平臺的自由軟體在 Windows 上都還是依循使用 gettext 方案，&#xA;比如說著名的 &lt;a href=&#34;https://zh-tw.libreoffice.org/&#34;&gt;LibreOffice&lt;/a&gt;。&lt;/p&gt;&#xA;&lt;p&gt;缺點就是 Windows 並沒有原生支援 gettext，至少需要執行時庫的移植工作；&#xA;Windows 的 locale name 和 Linux 也不太一樣，需要轉換一下，&#xA;這些不方便的地方使得 gettext 方案並沒有大量流行在非跨平臺的應用程式上。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;以上就是個人對一些多語系方案的見解和觀察，也許有些偏頗或不週全的地方還請多包涵。&#xA;我本人因為一些緣故需要在 Windows 使用 gettext 方案，目前在移植工作上進行的不太順利，&#xA;後來一看&#xA;&lt;a href=&#34;https://www.gnu.org/software/gettext/manual/html_node/MO-Files.html&#34;&gt;MO 檔案的格式&lt;/a&gt;&#xA;超級簡單，索性就自己做了一個&#xA;&lt;a href=&#34;https://gitlab.com/iceignatius/winintl&#34;&gt;簡單的(而且限制比較多的)程式庫&lt;/a&gt;&#xA;解決了我的問題。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;gettext-使用指引&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/%E4%BD%BF%E7%94%A8-gettext-%E6%96%B9%E6%A1%88%E8%A3%BD%E5%81%9A%E5%A4%9A%E5%9C%8B%E8%AA%9E%E7%B3%BB%E7%A8%8B%E5%BC%8F---%E7%B8%BD%E8%A6%BD/#gettext-%e4%bd%bf%e7%94%a8%e6%8c%87%e5%bc%95&#34;&gt;gettext 使用指引&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;雖然主打著介紹和教學的標題，&#xA;但在本篇裡，我沒有打算描述太多有關於 gettext 的使用細節，&#xA;只打算做一些比較簡單的介紹，對於較多的操作細節則留待後篇描述。&lt;/p&gt;&#xA;&lt;p&gt;對於一個使用 gettext 方案處理多語系文字的程式而言，在開發、建置、和發佈等整個過程中，&#xA;大約會需要面對幾個部份的工作：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;如何編寫支援 gettext 的程式碼？請參閱&#xA;「&lt;a href=&#34;http://www.huoschen.idv.tw/blog/programming/%E4%BD%BF%E7%94%A8-gettext-%E6%96%B9%E6%A1%88%E8%A3%BD%E5%81%9A%E5%A4%9A%E5%9C%8B%E8%AA%9E%E7%B3%BB%E7%A8%8B%E5%BC%8F---%E7%A8%8B%E5%BC%8F%E7%B7%A8%E5%AF%AB/&#34;&gt;使用 gettext 方案製做多國語系程式 - 程式編寫&lt;/a&gt;」&lt;/li&gt;&#xA;&lt;li&gt;如何生成翻譯文件並進行翻譯工作？以及翻譯後產生的語系資源檔案要放在哪裡？請參閱&#xA;「&lt;a href=&#34;http://www.huoschen.idv.tw/blog/programming/%E4%BD%BF%E7%94%A8-gettext-%E6%96%B9%E6%A1%88%E8%A3%BD%E5%81%9A%E5%A4%9A%E5%9C%8B%E8%AA%9E%E7%B3%BB%E7%A8%8B%E5%BC%8F---%E8%A3%BD%E5%81%9A%E8%AA%9E%E7%B3%BB%E6%AA%94/&#34;&gt;使用 gettext 方案製做多國語系程式 - 製做語系檔&lt;/a&gt;」&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>如何阻止 Windows 10 自動更新</title>
      <link>http://www.huoschen.idv.tw/blog/digit/%E5%A6%82%E4%BD%95%E9%98%BB%E6%AD%A2-windows-10-%E8%87%AA%E5%8B%95%E6%9B%B4%E6%96%B0/</link>
      <pubDate>Sun, 06 Oct 2019 21:00:00 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/digit/%E5%A6%82%E4%BD%95%E9%98%BB%E6%AD%A2-windows-10-%E8%87%AA%E5%8B%95%E6%9B%B4%E6%96%B0/</guid>
      <description>&lt;p&gt;在我先前的文章「&lt;a href=&#34;http://www.huoschen.idv.tw/blog/digit/windows-10-%E5%8D%81%E5%A4%A7%E7%BD%AA%E7%8B%80%E4%B8%8A/&#34;&gt;Windows 10 十大罪狀(上)&lt;/a&gt;」、&#xA;和「&lt;a href=&#34;http://www.huoschen.idv.tw/blog/digit/windows-10-%E5%8D%81%E5%A4%A7%E7%BD%AA%E7%8B%80%E4%B8%8B/&#34;&gt;Windows 10 十大罪狀(下)&lt;/a&gt;」裡，&#xA;我細數了許多有關於 Windows 10 的各種惡形惡狀，&#xA;也許有些人心有戚戚焉、也許有些人適應良好而無感。&#xA;對於適應良好的人，我只能說恭喜你，你真強大，我望之莫及；&#xA;而對於那些受到折磨的人，我雖然提供了一些脫離 Windows 10 的方法，但不是每個人都適用。&#xA;對於那些不論是沒有能力被迫使用 Windows 10 的人，或是因為某些軟體而必須使用 Windows 10 的人，&#xA;還有沒有辦法提供更多的幫助呢？&#xA;我想來想去，Windows 10 對於一般人來說最為困擾的大概就是每半年一次的大版本更新了吧！&#xA;那麼我就提供一些我對於如何對付 Windows 10 大版本更新、或者對付所有的更新的方法。&lt;/p&gt;&#xA;&lt;p&gt;關於如何阻止 Windows 10 更新的方法，網路上已經流傳很多了，然而最大的問題是他們大多無效。&#xA;我的看法是，大部份人的做法都是在系統設定上面下手，問題是玩系統你玩得過微軟嗎？&#xA;系統是人家設計的、程式碼也在他手上，他隨便做點什麼、隨便弄個後門就可以讓你前功盡棄；&#xA;相對的你所有能夠使用的招式還都是他開出來給你用的你才能用，&#xA;這樣，你玩得過他嗎？&#xA;而我提出的方法不一樣，我的方法能夠奏效的機會非常高，&#xA;其實不是我技術能力特別高還是什麼，我只是站在對的位置來思考策略而已。&#xA;我不跳進 Windows 和微軟玩 Windows，我是從其他不能受微軟控制的通路上來阻斷系統更新，&#xA;因為只有站在這樣的位置上才有可能玩贏微軟。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;第一招切斷網路&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/%E5%A6%82%E4%BD%95%E9%98%BB%E6%AD%A2-windows-10-%E8%87%AA%E5%8B%95%E6%9B%B4%E6%96%B0/#%e7%ac%ac%e4%b8%80%e6%8b%9b%e5%88%87%e6%96%b7%e7%b6%b2%e8%b7%af&#34;&gt;第一招：切斷網路&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;第一招是切斷網路。電腦若無法連上網，我就不信微軟還能更新！&lt;/p&gt;&#xA;&lt;p&gt;這招如何阻止 Windows 更新的原理相信不需要多說了吧。&#xA;這個招式看似慌誕，但已經是我個人所能夠提出的、最不需要技術能力的方法了，&#xA;雖然這種做法會在現代化的使用過程中帶來許多不便，但執行起來的技術瓶頸低嘛，&#xA;能力不夠的使用者、或者不想花費太多心力的使用者(比如臨時用一下別人電腦)，&#xA;就只好將就一下了。&lt;/p&gt;&#xA;&lt;p&gt;先別說這招可行不可行，我的朋友還真有人就是這麼做的！&#xA;他家裡的 Windows 10 電腦絕不連上網路，&#xA;而需要連網的工作都使用公司的電腦、或其他可以上網的舊電腦進行，&#xA;然後使用隨身碟在不同的電腦之間交換資料。&#xA;別說什麼不方便，人家我朋友可是作家，他會在家裡和公司寫作，&#xA;然後靠著一顆隨身碟到處同步資料的喔！&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;第二招限制系統磁碟容量&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/%E5%A6%82%E4%BD%95%E9%98%BB%E6%AD%A2-windows-10-%E8%87%AA%E5%8B%95%E6%9B%B4%E6%96%B0/#%e7%ac%ac%e4%ba%8c%e6%8b%9b%e9%99%90%e5%88%b6%e7%b3%bb%e7%b5%b1%e7%a3%81%e7%a2%9f%e5%ae%b9%e9%87%8f&#34;&gt;第二招：限制系統磁碟容量&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;這個原理也很簡單，隨時保持系統磁碟的可用容量在非常低的狀態，&#xA;這樣更新都下載不下來，就沒辦法安裝了！&lt;/p&gt;&#xA;&lt;p&gt;首先請先不要緊張，不是所有的磁碟，只要把系統所在的磁碟區可用容量降低就行了，&#xA;如果你有其它磁碟分割區用來放置其他資料的話，可以不用管它。&#xA;至於可用容量要多低才行呢？&#xA;以最新的 Windows 10 version 1903 版來說，&#xA;在磁碟可用空間小於 32 GB 的情況下是不會進行該大版本更新的；&#xA;也就是說，只要時常保持可用空間在 30 GB 或 20 GB 以下，就可以不用再被大版本更新給突襲了。&#xA;雖然一些比較小型的更新可能還是會下載並更新，但至少我們已經把最討厭的大版本更新給擋住了，&#xA;而且這些小型更新多半可能是安全性更新，就讓它更新吧。&#xA;那麼如何讓磁碟可用空間變小呢？實際做法有很多種，&#xA;從最簡單的不斷複製大型垃圾檔案直到塞滿為止，到調整磁碟分割區大小到剛剛好為止等等任君選擇。&lt;/p&gt;&#xA;&lt;p&gt;縮小磁碟容量以阻擋更新的做法相比直接拔網路的方法副作用更低，&#xA;電腦依然可以連上網路進行日常的各種操作。&#xA;由於現在很多人的電腦都會分割出 C、D、E、F、G 等多個磁碟槽來使用，&#xA;所以下載檔案、一般工作、或是甚至安裝程式等等，只要能夠安裝到別的磁碟分割，&#xA;理論上是完全不受影響的。&#xA;若真要說有什麼副作用的話，大概就是在安裝某些大型、且只能安裝於系統磁碟的軟體前，&#xA;需要刪除一些填塞的垃圾檔案或者調整一下分割區大小了。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;第三招架設-dns-server-阻斷微軟網址&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/%E5%A6%82%E4%BD%95%E9%98%BB%E6%AD%A2-windows-10-%E8%87%AA%E5%8B%95%E6%9B%B4%E6%96%B0/#%e7%ac%ac%e4%b8%89%e6%8b%9b%e6%9e%b6%e8%a8%ad-dns-server-%e9%98%bb%e6%96%b7%e5%be%ae%e8%bb%9f%e7%b6%b2%e5%9d%80&#34;&gt;第三招：架設 DNS Server 阻斷微軟網址&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;既然更新程序需要連線微軟的伺服器才能夠執行檢查和下載更新的工作，&#xA;那如果直接過濾掉任何連往微軟相關網址的連線，不就天下太平了？&#xA;是的，這個方法是完全可行的，而且副作用最低，&#xA;使用者可以完全正常的使用電腦、自由的上網、也不需隨時關注調整磁碟容量設定、&#xA;不會因為系統空間不足而無法下載資料安裝程式等等，&#xA;唯一的缺點就是這一招是所有提供的招數裡面技術難度最高、最不易完成的做法。&lt;/p&gt;&#xA;&lt;p&gt;依據網友提供的資料&#xA;(&lt;a href=&#34;https://superuser.com/questions/363120/block-access-to-windows-update&#34;&gt;Block Access to Windows Update&lt;/a&gt;)，&#xA;只要能夠屏蔽下列網址即可阻斷與系統更新有關的連線：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://windowsupdate.microsoft.com&#34;&gt;http://windowsupdate.microsoft.com&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://*.windowsupdate.microsoft.com&#34;&gt;http://*.windowsupdate.microsoft.com&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://*.windowsupdate.microsoft.com&#34;&gt;https://*.windowsupdate.microsoft.com&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://*.update.microsoft.com&#34;&gt;http://*.update.microsoft.com&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://*.update.microsoft.com&#34;&gt;https://*.update.microsoft.com&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://*.windowsupdate.com&#34;&gt;http://*.windowsupdate.com&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://download.windowsupdate.com&#34;&gt;http://download.windowsupdate.com&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://download.microsoft.com&#34;&gt;http://download.microsoft.com&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://*.download.windowsupdate.com&#34;&gt;http://*.download.windowsupdate.com&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://wustat.windows.com&#34;&gt;http://wustat.windows.com&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://ntservicepack.microsoft.com&#34;&gt;http://ntservicepack.microsoft.com&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://stats.microsoft.com&#34;&gt;http://stats.microsoft.com&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://stats.microsoft.com&#34;&gt;https://stats.microsoft.com&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;這項做法的難度在於你不能夠使用 Windows 系統內建的域名表&#xA;(&lt;code&gt;C:\WINDOWS\system32\drivers\etc\hosts&lt;/code&gt;)&#xA;來做，&#xA;已經有網友證實 Windows 10 會自動忽略對於與 microsoft 網址有關的使用者屏蔽。&#xA;還記得我說的話嗎？你不能在 Windows 上面使用 Windows 與微軟玩對抗 Windows 的遊戲！&#xA;因此你需要自行架設 DNS 伺服器，你可以架設一個獨立的伺服器、&#xA;也可以使用網路閘道器提供的功能(如果你家有閘道器，而且有提供 DNS 相關功能的話)，&#xA;然後再到你的 Windows 上面設定所使用的 DNS 伺服器，重新指派到你自己的 DNS 伺服器。&#xA;DNS 的設定不用太複雜，他只要能夠檢查所有的 domain name 請求，然後回絕黑名單的目的，&#xA;在把其他的請求直接轉拋到你原本使用的真正 DNS 伺服器即可&#xA;(比如說中華電信、Google、或你的 ISP 業者的 DNS 伺服器)。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Windows 10 十大罪狀(下)</title>
      <link>http://www.huoschen.idv.tw/blog/digit/windows-10-%E5%8D%81%E5%A4%A7%E7%BD%AA%E7%8B%80%E4%B8%8B/</link>
      <pubDate>Sun, 06 Oct 2019 20:00:30 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/digit/windows-10-%E5%8D%81%E5%A4%A7%E7%BD%AA%E7%8B%80%E4%B8%8B/</guid>
      <description>&lt;p&gt;接續前篇「&lt;a href=&#34;http://www.huoschen.idv.tw/blog/digit/windows-10-%E5%8D%81%E5%A4%A7%E7%BD%AA%E7%8B%80%E4%B8%8A/&#34;&gt;Windows 10 十大罪狀(上)&lt;/a&gt;」&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;罪狀三改個名字呼嚨你--fast-boot&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/windows-10-%E5%8D%81%E5%A4%A7%E7%BD%AA%E7%8B%80%E4%B8%8B/#%e7%bd%aa%e7%8b%80%e4%b8%89%e6%94%b9%e5%80%8b%e5%90%8d%e5%ad%97%e5%91%bc%e5%9a%a8%e4%bd%a0--fast-boot&#34;&gt;罪狀三：改個名字呼嚨你 &amp;ndash; Fast Boot&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;從 Windows 8 上市以來，廣告臺詞多了一項：只要 2 秒鐘的超快開機速度。&#xA;然而這也是讓我非常反感的一點。&#xA;我並不是說它啟動快是假的，事實上從按下電源到系統備便，正常情況下是真的只要短短幾秒鐘；&#xA;我反感的是他達成的手段、以及帶來的其他後續影響。&lt;/p&gt;&#xA;&lt;p&gt;微軟的 Windows 從前一向被人詬病速度慢效率差，&#xA;而新版 Windows 能開機這麼快，主要關鍵原因在於下列三項：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;UEFI 的引入：&#xA;其實以往開機的一大半時間是被 BIOS 給拖掉的，&#xA;改用全新的 UEFI 後一下子可以省掉十秒多開機時間。&#xA;嚴格說起來這部份的加速沒有 Windows 半點功勞，&#xA;你改用支援 UEFI 的 Windows 7 SP1 64-bits 一樣可以辦到。&lt;/li&gt;&#xA;&lt;li&gt;SSD 的使用：&#xA;廣告詞上面的幾秒鐘開機多半都要搭配使用 SSD 才有可能，&#xA;你可以試試改用 HDD 看看開機會多幾秒？&#xA;這是 SSD 本身讀取速度較快造成的影響，與 Windows 也無關。&lt;/li&gt;&#xA;&lt;li&gt;它原來並沒有真的關機：&#xA;因此它也並不是真的在「開機」，其實實際上是從「休眠」中復原。&#xA;這是唯一新版 Windows 的設計所造成的啟動加速，也是後面所衍生那麼多問題的根本來源。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;看看其它作業系統，有人強調自己開機多快嗎？&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Linux 用戶會強調開機多快嗎？&#xA;以前開機十幾分鐘加快到只要一分鐘的時候會啦，但現在基本沒有在強調了。&lt;/li&gt;&#xA;&lt;li&gt;OS X 用戶會強調開機多快嗎？&#xA;好像也沒有，因為 OS X 用戶也許說電腦為什麼要關機？&lt;/li&gt;&#xA;&lt;li&gt;Android 用戶看看你的手機開機要多久？你會在意嗎？&#xA;好像大家會回頭問你 Android 幹嘛關機？&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;那麼為什麼微軟要特別加強開機速度這件事？&#xA;尤其誇張到要追到只有幾個秒的程度，難道是因為 Windows 用戶一天到晚經常需要開機再開機嗎？&#xA;我的看法比較偏向陰謀論，微軟其實是為了其他的目的 &amp;ndash; 正確來說又是為了綁架你的系統選擇權 &amp;ndash;&#xA;而做此設計，讓開機速度加快只是它不重要的副作用，正好拿來做為廣告詞而已。&lt;/p&gt;&#xA;&lt;p&gt;有使用過「休眠」這個功能的人可能會比較了解我接下來的內容。&#xA;不同於正常的關機，&#xA;在執行休眠時，系統會將當前的狀態、以及記憶體內的資料備份到硬碟裡，然後關閉電源。&#xA;這樣下次再啟動系統的時候，作業系統不用重新執行所有的開機初始化工作、不用重新啟動所有的後臺程式，&#xA;只需把存在硬碟裡的映像檔倒回記憶體，就可以讓整個系統回復到上次休眠前的狀態繼續工作。&#xA;休眠的好處是可以在短時間內重新喚醒，並且接續上次的工作狀態。&#xA;而實際使用過休眠功能的人可能還會發現一些有關於它的限制，&#xA;首先是休眠讓啟動回復更快了，但是進入休眠狀態卻需要花費比正常關機多得多的時間，&#xA;因為需要把系統狀態和記憶體資料等全部備份起來；&#xA;再來是雖然大部份的程式都會在喚醒後回到上次工作階段，&#xA;但仍有部份與硬體驅動程式有關的東西在喚醒後無法正常回復，&#xA;有些會被重新初始化而無法保存先前的資料，有些可能直到下次重開機之前都處在異常狀態無法工作；&#xA;而最慘的狀況莫過於「一睡不醒」了，&#xA;不知是硬體支援問題或什麼緣故，有些電腦進入休眠後便無法再度喚醒，只能整臺重新開機。&lt;/p&gt;&#xA;&lt;p&gt;在簡介了休眠後，這裡可以告訴大家，當按下 Windows 8 / 10 關機鍵之&#xA;後其實作業系統並沒有進入關機程序，而是進入了休眠程序。&#xA;然而微軟顯然並沒有誠實告知用戶這些事，而是很無恥的把那個休眠的功能寫上「關機」字樣！&#xA;當然 Windows 8 / 10 的關機休眠與我們以往所知的那個休眠並不完全相同，&#xA;這是微軟重新調整設計過的休眠，&#xA;大致就是只有將系統核心進行休眠，而捨棄用戶層(user space)的狀態等資料。&#xA;推測這麼做是因為保存用戶空間狀態需要花費很多時間，&#xA;並且重新啟動後又回復用戶狀態的話，會讓關機其實沒有真正關機這點太容易被發現。&lt;/p&gt;&#xA;&lt;p&gt;因此從 Windows 8 開始，微軟營造了一個開機快速的假象，然而其實它並沒有真正的關機，&#xA;而是讓系統核心從休眠中復原，那當然就快了！&#xA;有一個流傳小技巧可以佐證這些事，一直到我上一次測試 Windows 10 的時候都還有效：&#xA;在按住 Shift 按鍵的狀態下點擊「關機」，則系統會進入真正的關機程序。&#xA;那麼下次開機的時候就是真正的開機了，該花多少時間就是多少時間，您可以拿碼表測測看！&#xA;(就我上一次剛好遇到一臺 Windows 10 電腦，又很無聊的測試了一下，大約是一分三十秒左右)&lt;/p&gt;&#xA;&lt;p&gt;不管是真的開機還是假的開機，反正能加快啟動速度都是好事，又為什麼要說不好呢？&#xA;原因在於這種做法除了欺騙消費者之外(國外是真的有人在認真討論這算不算詐欺)，&#xA;還帶來了一些不良影響：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;銷售員告訴你啟動只需兩秒，但一定沒告訴你關機要花多少時間！&lt;/p&gt;&#xA;&lt;p&gt;是的，在經過一些無恥手段之後，開機真的飛速快；那麼關機呢？&#xA;這不用我再舉例了吧？現在 Windows 10 用戶這麼多，問問你自己，&#xA;Windows 10 按下關機之後到系統游標開始轉圈圈到主機電源關閉，需要多少時間？&#xA;特別是在之前的工作中如果你長時間工作或對系統做了許多複雜操作的情況下？&#xA;(或是系統需要更新的情況下，不過那是另外一件事)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;關機後進行一些變更時容易出錯！&lt;/p&gt;&#xA;&lt;p&gt;Windows 8 時代曾有網友說過，他在電腦關機之後更換了顯示卡，再次開機後電腦就當掉了！&#xA;在了解前面的故事後便不難理解這原因很明顯，電腦並沒有關機而只是休眠，&#xA;那麼醒來之後硬體設備不一樣了，這系統還能正常嗎？&#xA;到了 Windows 10 時代我好像就沒有再聽說過這樣的情況，&#xA;可能微軟找了其他方法避開問題吧，比如系統喚醒失敗就重新開機之類的，&#xA;反正使用者也不會一天到晚變更硬體，偶爾幾次開機變慢也許不會讓太多人感覺到。&lt;/p&gt;&#xA;&lt;p&gt;除了硬體變更之外還有另一種人也會受到影響，就是在電腦上安裝了雙系統或更多系統的使用者。&#xA;我看過一些裝了多系統的使用者抱怨(好像都是軟體開發居多)，&#xA;當他們開機切換到另一個系統時，磁碟往往是被另一個 Windows 10 系統鎖定而無法使用的。&#xA;當然，能夠進行這樣的抱怨至少還代表他可以重開機進入其他系統，還不算最差的。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;難以進行主機板相關設定！&lt;/p&gt;&#xA;&lt;p&gt;對於硬體設備來說，休眠和關機可能會有所不同。&#xA;一些比較先進的主機板，比如說支援 ACPI 的主機板，&#xA;在作業系統要求睡眠的情況下可能會做出特別的反應措施，&#xA;比如說在下次啟動電源的時候就有可能會略過 BIOS 檢查、或其他某些步驟。&#xA;然而這造成了一些額外的問題，有些東西可能是在主機板開機階段才有機會進入的，&#xA;比如說 BIOS/UEFI 設定畫面、或某些多重作業系統的搜尋工作。&#xA;於是你可以隨便 Google 到一堆人在問 Windows 10 電腦要怎麼修改設定&#xA;才能進入 BIOS/UEFI 設定畫面的詢問、&#xA;於是你有機會遇到開機時不會跳出多重系統選擇畫面(被略過了)的問題，&#xA;而這一切可能並不是主機板的錯，畢竟他們在設計休眠模式的時候，&#xA;可能沒想到會有作業系統無恥的把休眠當成常態關機在使用吧！&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;罪狀二改個名字呼嚨你--大版本更新&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/windows-10-%E5%8D%81%E5%A4%A7%E7%BD%AA%E7%8B%80%E4%B8%8B/#%e7%bd%aa%e7%8b%80%e4%ba%8c%e6%94%b9%e5%80%8b%e5%90%8d%e5%ad%97%e5%91%bc%e5%9a%a8%e4%bd%a0--%e5%a4%a7%e7%89%88%e6%9c%ac%e6%9b%b4%e6%96%b0&#34;&gt;罪狀二：改個名字呼嚨你 &amp;ndash; 大版本更新&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;微軟很喜歡改名字，改名的事蹟多到例舉不完，&#xA;然而從前的改名只是讓你摸不清他的命名原則罷了；&#xA;而現在的改名則會暗暗的誘導欺騙你對其意義的理解，&#xA;例如前面提的「關機」、以及現在提的這個作業系統版本。&lt;/p&gt;&#xA;&lt;p&gt;一直以來，大家不喜歡微軟每隔幾年就要推出新版 Windows、新版 Office、新版……&#xA;然後強迫大家購買升級。&#xA;來自廣大使用者諸如&#xA;「微軟就不能把穩定的 Windows XP 一直維護好就好嗎？」&#xA;「微軟就不能把經典好用的 Windows 7 一直維護一直加新功能就好嗎？」&#xA;的呼聲不絕於耳。&#xA;現在微軟聽見了大家的呼喚，終於說出口：&#xA;「Windows 10 是最後一個版本的 Windows，此後不會再有新的 Windows 11、Windows 12 等等，&#xA;微軟會一直維護更新 Windows 10。」&#xA;然後從此以後皆大歡喜了是嗎？才怪！&lt;/p&gt;&#xA;&lt;p&gt;實際的情況是：Windows 11、Windows 12、Windows 13…… 依然繼續推出，&#xA;只是現在它們的名字通通被改成「Windows 10」而已，而它們之間則用所謂「大版本號」來做區別，&#xA;也就是所謂的 1511 版、1607 版、1703 版、1709 版、1803 版、1809 版、1903 版等等。&lt;/p&gt;&#xA;&lt;p&gt;有一些現象可以支持這樣的說法，除了微軟親口說出的每年兩次大版本更新之外，&#xA;有過電腦 DIY 經驗的、稍微熟悉電腦安裝更新與升級工作的人應該都會發現一些奇異的現象。&#xA;每當 Windows 10 大版本更新過後，就容易出現一些諸如驅動程式異常、系統功能異常、&#xA;系統功能消失、系統功能或介面大量變化、某些應用程式不再能夠執行、某些程式變得不穩定、&#xA;週邊設備失效等等。&#xA;此外，你可能也聽過一些有經驗的人會告訴你：&#xA;不要直接升級 Windows 10 大版本，直接重新安裝新版本的 Windows 比較好，&#xA;這樣會比較穩定，問題也會比較少。&#xA;然後你再思考回想一下，這些現象在以往是不是都是在跨版本更新的時候才會發生的事情？&#xA;比如說從 Windows XP 直接升級到 Windows 7、或是從 Windows 7 直接升級到 Windows 8 / 10 等等。&lt;/p&gt;&#xA;&lt;p&gt;結論就是，Windows X 仍然不斷繼續推出，該有的問題一樣少不了；&#xA;若再搭配自動更新的機制幫你強制更新的話，更是每半年就可以讓你練一下心臟肌肉。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;罪狀一無法關閉的強暴式更新&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/windows-10-%E5%8D%81%E5%A4%A7%E7%BD%AA%E7%8B%80%E4%B8%8B/#%e7%bd%aa%e7%8b%80%e4%b8%80%e7%84%a1%e6%b3%95%e9%97%9c%e9%96%89%e7%9a%84%e5%bc%b7%e6%9a%b4%e5%bc%8f%e6%9b%b4%e6%96%b0&#34;&gt;罪狀一：無法關閉的強暴式更新&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;幾乎不管是什麼人、不論對電腦的了解程度如何、或電腦的用途如何，&#xA;幾乎所有使用者公認對 Windows 10 最深痛惡絕的第一大罪狀就是自動且強制的更新機制了！&lt;/p&gt;&#xA;&lt;p&gt;微軟從 Windows 8 開始，修改了系統更新策略，採用滾動式更新，&#xA;意思就是從此微軟會提供源源不絕的系統更新，讓您的系統隨時保持在最新狀態。&#xA;這聽起來好像很美好，但最大的問題是微軟並不打算給予使用者任何選擇的自由，&#xA;而是採用「自動」且「強迫」的方式進行所有的更新，最終演變成為用戶最頭痛且最不想要的功能之首位。&lt;/p&gt;&#xA;&lt;p&gt;許多 Windows 10 的擁護者會說更新沒什麼不好，&#xA;「難道你要等中了勒索病毒再來怪微軟為什麼沒有給你更新嗎？」&#xA;「你用的 Android、iOS 手機也是一天到晚在更新，你有抱怨過嗎？」&#xA;那麼看來我們就需要分析一下，微軟的更新到底和其他家的更新有什麼不一樣？&#xA;為什麼大家沒有討厭其他平臺的更新，而只罵微軟的更新？&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;軟體為什麼要更新&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/windows-10-%E5%8D%81%E5%A4%A7%E7%BD%AA%E7%8B%80%E4%B8%8B/#%e8%bb%9f%e9%ab%94%e7%82%ba%e4%bb%80%e9%ba%bc%e8%a6%81%e6%9b%b4%e6%96%b0&#34;&gt;軟體為什麼要更新？&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;首先，為什麼軟體需要更新？&#xA;軟體更新不外乎就是兩個最大的原因：修正已發現的問題(包含改善現有功能)、或增加新功能特性。&#xA;人類寫出來的軟體，特別是這麼複雜的軟體，本來就不可能完美無暇，&#xA;有些缺點、有些錯誤、有些漏洞等等都是無法避免的。&#xA;因此更重要的事情往往是在發現問題後，能不能在合理的時間之內修復，並更新給使用者。&#xA;觀察現代軟體，幾乎無關任何用途的軟體、或是任何的開發單位，&#xA;常常都是時不時的在推出新修正版本程式。&#xA;站在這個著眼點上，維持最新的修正更新對使用者就是最好的，&#xA;特別是在現代網路發達，各種資安風險後果愈來愈嚴重的現代數位環境下。&#xA;事實上，我本人平日使用的 Linux 作業系統以及各種開源軟體就三不五時在推送更新，&#xA;並且更新包的數量相比 Windows 也是多了一個數量級，&#xA;然而在絕大部分的時候，這些更新並不會對我造成任何困擾。&lt;/p&gt;&#xA;&lt;p&gt;再說到另一個軟體更新目的：增加新功能。&#xA;世界總是不斷在進步，人的需求也一直在變化，&#xA;老舊的軟體即便非常穩定也從未出現過錯誤，也可能因為其所提供之功能漸漸跟不上需求而被拋棄。&#xA;因此活躍的軟體常常需要發展新的功能以滿足使用者的需求，&#xA;這種功能式的更新可能會透過軟體直接更新、或要求使用者付費購買升級、或以其他方式提供給使用者。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;更新的風險&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/windows-10-%E5%8D%81%E5%A4%A7%E7%BD%AA%E7%8B%80%E4%B8%8B/#%e6%9b%b4%e6%96%b0%e7%9a%84%e9%a2%a8%e9%9a%aa&#34;&gt;更新的風險&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;任何的更新，除了帶來好處以外，當然也會帶來風險。&#xA;如同軟體的開發，人寫的軟體不完美，那麼人寫的更新也不可能無懈可擊；&#xA;有沒有可能解決了一個問題，卻反而引入了意料之外的兩三個問題？&#xA;有沒有可能為了增加一個功能，卻意外的讓原來正常的功能失常？&#xA;以上當然都有可能會發生。&#xA;那麼軟體到底更新好還是不更新好，站在不同立場、不同用途的人就會有不同的反應。&#xA;總是喜歡站在科技最前線、喜歡求新求變的年輕消費者，自然就會主張第一時間裝上所有的更新，&#xA;偶爾的意外可能無法阻擋他對於新功能的嚮往；&#xA;而工業機臺、航空飛機等可能就屬最保守的一群，如果沒有必要、如果原來的軟體運作的好好的、&#xA;如果沒有什麼問題，他們是死都不會更新軟體的；&#xA;至於網際網路上面的眾多網站伺服器可能介於中間，他們也不喜歡有事沒事更新軟體，&#xA;原來的系統運作的很流暢、也沒有缺什麼功能，為什麼要更新？萬一更新了造成服務中斷，你要怎麼賠？&#xA;但對於弱點、漏洞等與安全性有關的更新，他們卻往往要在第一時間裝上，&#xA;否則會讓有心人士人有趁虛而入的機會。&#xA;甚至當官方更新製做不及的時候，網站管理員可能還會自己動手把更新的部份修改上去。&lt;/p&gt;&#xA;&lt;p&gt;你看，一個更新，可以衍生出這麼多的應對。&#xA;所以一直以來，幾乎所有提供更新的軟體，都會依據自身的規劃，對於更新這件事做出多或少的項目。&#xA;首先是對更新進行分類，例如安全性更新、功能性更新、新版本軟體等等，&#xA;其對於前後版本和系統環境相容性、穩定性保證等等都有大小不一的規範，&#xA;由使用者依據自身的需要自行選擇需要的項目。&#xA;而那種新增了很多功能、修改提升了很多軟體特性的大版本更新等，&#xA;則甚至可能會要求使用者付費購買才能夠升級。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;windows-10-不分類更新&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/windows-10-%E5%8D%81%E5%A4%A7%E7%BD%AA%E7%8B%80%E4%B8%8B/#windows-10-%e4%b8%8d%e5%88%86%e9%a1%9e%e6%9b%b4%e6%96%b0&#34;&gt;Windows 10 不分類更新&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;那麼在經過對於「軟體更新」這件事的一番解釋之後，&#xA;看官應該能夠發現 Windows 10 更新的第一個錯就是沒有對更新進行良好的分類。&#xA;其實這不是什麼新功能，在 Windows 7 上面，微軟就對更新分成了「重要更新」和「建議更新」&#xA;兩類，其中的重要更新在預設的情況下為已選取，依據使用者的設定甚至可能會自動進行更新；&#xA;而建議更新的項目則只有在使用者手動選取的情況下才會進行更新。&#xA;然而到了 Windows 8 之後，這些更新全部攪在一起不再分類，事實上也不提供什麼更新項目選擇，&#xA;等於是更新來了後，不管大小、不管後果全部都要你裝上。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;windows-10-沒有選擇更新項目的權利&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/windows-10-%E5%8D%81%E5%A4%A7%E7%BD%AA%E7%8B%80%E4%B8%8B/#windows-10-%e6%b2%92%e6%9c%89%e9%81%b8%e6%93%87%e6%9b%b4%e6%96%b0%e9%a0%85%e7%9b%ae%e7%9a%84%e6%ac%8a%e5%88%a9&#34;&gt;Windows 10 沒有選擇更新項目的權利&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Windows 10 在更新的部份不給使用者選擇。&#xA;你沒辦法選擇要的或不要的更新，事實上在微軟設計的、使用正常配置面板的情況下，&#xA;你不能夠拒絕任何更新，只要更新來了你就得裝。&#xA;這件事情對於喜新厭舊的年輕消費者來說可能不是什麼問題，&#xA;但對於那些擁有任何程度「安定性」要求的用途上，Windows 10 足以讓電腦維護技術人員不會沒有工作。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;windows-10-的強暴式更新&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/windows-10-%E5%8D%81%E5%A4%A7%E7%BD%AA%E7%8B%80%E4%B8%8B/#windows-10-%e7%9a%84%e5%bc%b7%e6%9a%b4%e5%bc%8f%e6%9b%b4%e6%96%b0&#34;&gt;Windows 10 的強暴式更新&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Windows 10 會全自動的在他想要的時候進行更新工作，而不是使用者希望的時候。&#xA;我記得在 Windows 7 和 Windows XP 的時代，就是那個我們對於更新這件事還有比較正常選擇的時代，&#xA;即使把更新全部設定為全自動(比較省事)，他也會問你希望 Windows 在什麼時間進行更新工作？&#xA;記得預設時間是當地時間凌晨三點，當然使用者可以變更為任何不被打擾的時間。&#xA;而 Windows 8 開始完全捨棄了這些，微軟對於自己的 AI 程序擁有最大的信心，&#xA;系統可能會在任何他覺得適合的時刻開始更新工作，而且按照慣例，使用者沒有任何選擇的權利。&#xA;於是你就會在網路論壇上看到各種令當事人咒罵比爾蓋茲祖宗十八代的案例，&#xA;什麼畫家畫了多久的作品一早醒來全不見了；&#xA;什麼直播到一半、遊戲到一半、還是新聞播到一半的時候，系統開始自動更新；&#xA;什麼上班工作到一半，系統開始更新，直接讓你原地放假；&#xA;什麼膝電要關機的時候開始更新，讓你出不了門，&#xA;或者重要展演要開始的時候，膝電一打開就看到他正在更新而且無法停止；&#xA;甚至我曾耳聞有同事把膝電休眠後放在背包裡，你猜怎麼著？它自動被喚醒然後開始更新！&#xA;等這同事要把膝電拿出來用的時候發現電池已經沒電，而且電腦好像已經燒壞了，出現焦味(背包內散熱不良)。&lt;/p&gt;&#xA;&lt;p&gt;不是只有外顯可見的更新工作對使用者產生影響，在真正的更新工作開始之前，&#xA;系統就需要時常的檢查微軟方面的伺服器是否存在新的更新、&#xA;運算檢查當前的電腦是否適配這些更新、&#xA;然後再偷偷的下載這些更新包，最後才是在最適當的時間發動主要的更新工作。&#xA;因此，早在被顯而易見的更新工作打斷之前，使用者就能夠時常感覺到電腦變慢變頓。&#xA;當下載工作開始時，網路頻寬被佔用導致網速突然降低，&#xA;除了那些正在網路即時遊戲上激烈交戰的玩家可能會突然失利以外，&#xA;也會讓使用了比較昂貴上網服務的用戶有機會收到上漲的網路服務費。&#xA;此外下載下來的更新檔案大小從數 MB 到數 GB 都有可能，&#xA;對於使用了低容量 SSD 做為系統磁碟的人更是苦不堪言。&lt;/p&gt;&#xA;&lt;p&gt;看到這裡，不難明白為什麼許多人把 Windows 10 的更新稱為「強暴式更新」了吧！&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;windows-10-更新工程浩大且令人膽顫心驚&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/windows-10-%E5%8D%81%E5%A4%A7%E7%BD%AA%E7%8B%80%E4%B8%8B/#windows-10-%e6%9b%b4%e6%96%b0%e5%b7%a5%e7%a8%8b%e6%b5%a9%e5%a4%a7%e4%b8%94%e4%bb%a4%e4%ba%ba%e8%86%bd%e9%a1%ab%e5%bf%83%e9%a9%9a&#34;&gt;Windows 10 更新工程浩大且令人膽顫心驚&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;嚴格說起來，這不能歸咎於 Windows 10，因為 Windows 各系列的更新從來都是工程浩大。&#xA;眾所週知，Windows 的更新除了更新包龐大之外，更新工作執行起來更是耗時費力，&#xA;動輒動用數十分鐘，有時甚至需要數小時至一天才能完成，其中可能需要重新開機數次。&#xA;像我使用的 Linux 常常也會有更新，我很多時候也會利用關機之前的時間執行更新，&#xA;遇到大軟體的更新或核心更新了不起也只花費兩三分鐘即完成，對我沒有什麼困擾。&#xA;然而 Windows 用戶為什麼關機前看到系統進入更新畫面就會惱火？&#xA;因為這可能代表著接下來需要等待五分鐘、十分鐘，也有可能半小時或一小時，甚至更久。&#xA;你說關機就離開讓它慢慢更新就好，那如果人家是膝電要帶走的呢？&#xA;如果公司週末下班要關電源，就等你的電腦還沒關機完呢？&#xA;何況 Windows 10 不只是關機會更新，他開機時也可能會更新，使用到一半也可能會開始更新！&#xA;說起來吊詭，從 Windows 8 以來主打的兩秒鐘開機特性，&#xA;就被這個三不五時會遇上的開關機更新給破壞了。&lt;/p&gt;&#xA;&lt;p&gt;只是更新花的時減久一點還不至於怨恨那麼重，&#xA;還要再加上它隨時可能在你意想不到的時間開始更新，才加深了用戶的怒氣。&#xA;只是這樣也還好，若再加上偶爾會碰到更新竟然失敗的情況，那就更讓人想砸鍋。&#xA;網路稍微多搜尋一下不難發現，許多更新到一半卡死在多少百分比的案例、突然變黑再也開不起來的案例。&#xA;最慘的莫過於系統發現更新失敗後自動嘗試退回更新，然後又自動且無法拒絕的再次更新，&#xA;然後再回退、然後再更新，如此反覆不止！&lt;/p&gt;&#xA;&lt;p&gt;Android 和 iOS 的更新沒有比較少，但極少會給使用者帶來麻煩。&#xA;仔細探索會發現，使用者們常常期待新的更新會帶來哪些意想不到的功能；&#xA;而對於 Windows，期待更新帶來新體驗的人好像非常少，&#xA;更多的似乎是猜測等待這次更新又會帶來什麼新災害？&#xA;Windows 10 的更新總是驚嚇大於驚喜，也許這點也是其與其他系統平臺更新功能的最大不同之一吧。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;windows-10-的病毒式更新保護&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/windows-10-%E5%8D%81%E5%A4%A7%E7%BD%AA%E7%8B%80%E4%B8%8B/#windows-10-%e7%9a%84%e7%97%85%e6%af%92%e5%bc%8f%e6%9b%b4%e6%96%b0%e4%bf%9d%e8%ad%b7&#34;&gt;Windows 10 的病毒式更新保護&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;大概是微軟覺得 Windows 10 是整個微軟事業裡面至關重要的戰略要地吧，&#xA;所以總是竭盡所能的保護作業系統上的更新機制，不讓任何的駭客們破壞；&#xA;至於使用者的意圖？可能當使用者想要破壞自動更新機制的時候就不再是微軟的使用者了，&#xA;而是微軟眼中的駭客，所以一樣要當駭客來對付！&lt;/p&gt;&#xA;&lt;p&gt;Windows 10 更新所帶來的這樣那樣的問題實在是太多太討厭，&#xA;嚴重到讓使用者覺得關閉任何的更新所帶來的資安風險甚至低於更新系統所帶來的災害風險。&#xA;但微軟並沒有提供在正常設定管道關閉或調整有關更新的項目，&#xA;於是上網隨便搜尋就會發現大家似乎都對於如何關閉 Windows 10 的更新這件事非常感興趣。&#xA;當然，做為微軟最重要商業策略之一的更新，他當然不會坐以待斃的讓使用者破壞它，&#xA;於是雙方展開了一場互相駭客的戰爭。&#xA;然而，微軟做為作業系統的開發商和發行商，你能比微軟更了解 Windows 嗎？&#xA;於是這場戰爭從一開始就不平衡的往微軟方面傾斜。&lt;/p&gt;&#xA;&lt;p&gt;網路上流傳各種關閉 Windows 10 更新的方法，&#xA;包括試圖關閉更新服務，結果發現這個更新服務似乎會被偷偷的自動啟用；&#xA;修改註冊機碼、設定群組原則、設置佔位用的假執行檔和假程式庫檔等等等等，&#xA;當中有一些暫時有效，但一定時日後又發現更新程序竟然復活起來繼續運作！&#xA;甚至有人設定了 DNS 規則，屏蔽掉與 Microsoft 有關的網址，&#xA;結果發現 Windows 竟然會刻意忽略對 Microsoft 相關網址的引導行為。&#xA;這整個過程就如同駭客電影一般，而最後，Windows 10 的更新程序總是會用各種花式方法重新復活，&#xA;然後繼續困擾使用者。&#xA;微軟對於 Windows 10 無微不至的更新保護機制，已經讓 Windows Update 本身形同病毒軟體，&#xA;並且截至目前為止，還未見有什麼有效的方式可以對付這隻史上最強大的病毒。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;windows-10-大版本更新&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/windows-10-%E5%8D%81%E5%A4%A7%E7%BD%AA%E7%8B%80%E4%B8%8B/#windows-10-%e5%a4%a7%e7%89%88%e6%9c%ac%e6%9b%b4%e6%96%b0&#34;&gt;Windows 10 大版本更新&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;我們前面介紹過改名呼嚨你之大版本更新，這裡也介紹了病毒強暴式自動更新，&#xA;那有沒有想過當他們兩個結合在一起之後又會形成怎麼樣一個毀天滅地的災難？&#xA;因為 Windows 10 更新不分類的結果，這種在以往會改個名字叫你掏錢買的大版本更新，&#xA;現在會隨時像普通更新一樣免費裝給你，再加上自動更新以及後臺偷偷更新的機制，&#xA;你不能拒絕、也無法得知什麼時候會開始進行這種翻天覆地的更新行為。&lt;/p&gt;&#xA;&lt;p&gt;大版本更新並不是不好，否則人們就不會從 Windows 3.x 升級到 Windows 95/98、&#xA;再升級到 Windows XP、再升級到 Windows Vista/7、然後再升級到 Windows 8/10。&#xA;大版本更新好或不好、需要或不需要見仁見智，&#xA;然而搭上了全自動更新模式在你最意想不到的時候進行升級，這樣就不好了！&lt;/p&gt;&#xA;&lt;p&gt;感謝微軟現在免費讓我們升級新的 Windows 10 大版本，但是大版本的升級實在太令人膽顫心驚。&#xA;每當大版本升級後，幾乎都可以見到網傳一片哀嚎，有的人喇叭沒聲音了、有的人印表機不能用了、&#xA;有的人網路不能上了、有的人某個特別的軟體就不能用了、而有的人連開機都開不起來了！&#xA;有的時候新版本會把設定項目大搬家，搞得大家一陣子無所適從。&#xA;你說新版本比舊版本好，你說舊版本以後要慢慢被淘汰了，我都同意，&#xA;但是你就不能讓我在自己覺得最適合的時候，什麼備份還是什麼的都準備好的時候，&#xA;我自己來升級不行嗎？就是像我們以往升級作業系統那樣。&#xA;也許我比較喜歡重新安裝新版的作業系統，而不是直接升級上來呢。&#xA;現在搞得大家每半年(微軟的大版本更新大約每半年一次)就得強迫玩一次俄羅斯輪盤，&#xA;各個公司單位裡的資訊人員每半年就要上上下下折騰一次，&#xA;每半年就會有大量小型商家叫修電腦，&#xA;每半年就會有同事一聲哀嚎後立刻賺得在公司原地休假不用工作的福利。&lt;/p&gt;&#xA;&lt;p&gt;然而我覺得最嚴重的是自動大版本更新帶來的相容性問題。&#xA;許多特殊用途的電腦，比如說工業機臺、ERP 等特殊客製系統伺服器、&#xA;或者其他運作著特別開發的軟體程式的電腦等等，&#xA;這些程式往往是針對特定的作業系統版本開發的，要不就是只在特定的作業系統版本測試過，&#xA;那有沒有可能 Windows 10 一更新就造成這些軟體無法正常工作？當然是有可能。&#xA;這些軟體與一般消費終端用戶平常使用的軟體不同，軟體開發公司不見得會一直持續推出新版本&#xA;(甚至有些後來就倒閉了)。&#xA;有些比較有規模有能力的開發商會與時據進不斷維護，但需要用戶掏錢更新。&#xA;問題是你看這些客製化的軟體動輒上百萬，&#xA;你覺得用戶會認為應該隨時保持在時代前線不斷更新 Windows 10，然後不斷花錢重買上百萬的軟體系統嗎？&#xA;他一定會告訴你原來的東西用的好好的，沒有需要為什麼一定要更新不可？&#xA;問題是，在 Windows 10 的時代，只要你的電腦一插上網路，基本是沒辦法阻止它更新的！&lt;/p&gt;&#xA;&lt;p&gt;工廠、企業那些離我們個人也許有些遙遠，那就在來看看無限制大版本更新對個人用戶會有什麼影響？&#xA;軟體總是不斷推陳出新，這我們都知道，但大家硬體設備難道也是常常丟舊的買新的嗎？&#xA;個人電腦使用數年之後，運作當代的軟體就會愈來愈吃力，&#xA;但是你可以選擇不要讓老電腦運作新系統啊！&#xA;比如說有一臺十幾年前的電腦，上面運作著 Windows XP 系統，但是整體運作仍然良好，&#xA;那救繼續用下去沒有任何問題。&#xA;也許慢慢有些現代軟體不再支援 Windows XP，所以又買了新的電腦安裝 Windows 7，&#xA;至於原來那臺依然安穩的繼續用下去，完全沒有問題。&#xA;我可以平常使用新電腦，遇到一些老程式、老遊戲、或者 IE6 限定的政府網頁，我就用那臺舊電腦。&#xA;這臺舊電腦可以就這麼一直用下去，直到有一天它完全壞掉為止、或者我不再使用而把它送人為止。&#xA;但是，在 Windows 10 的時代，上面的情境是不可能在發生了！&#xA;老電腦的系統會不斷的、自動的被更新，也許三五年吧，&#xA;它可能就會卡的不像話、或者好多硬體功能不再作用。&#xA;最後會逼的你必須把這些設備淘汰，因為你沒有辦法在上面運作舊版本的 Windows 10，&#xA;即使你想辦法安裝舊的 Windows 10，只要一插上網路又前功盡棄。&#xA;也就是說，Windows 10 的時代會造成另一個現象：&#xA;硬體設備被強迫在約三五年間被拋棄，即便它還並未真正走到生命的終點；&#xA;而使用者被迫三五年就需要購買新的電腦設備。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;我能夠免去-windows-10-的危害嗎論應對對策&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/windows-10-%E5%8D%81%E5%A4%A7%E7%BD%AA%E7%8B%80%E4%B8%8B/#%e6%88%91%e8%83%bd%e5%a4%a0%e5%85%8d%e5%8e%bb-windows-10-%e7%9a%84%e5%8d%b1%e5%ae%b3%e5%97%8e%e8%ab%96%e6%87%89%e5%b0%8d%e5%b0%8d%e7%ad%96&#34;&gt;我能夠免去 Windows 10 的危害嗎？論應對對策&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;既然 Windows 10 這麼十惡不赦，可是現在整個 3C 商場上全都是 Windows 10，&#xA;如果真的不喜歡 Windows 10 的話，那麼我們能有什麼對策呢？&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;對於一般使用者&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/windows-10-%E5%8D%81%E5%A4%A7%E7%BD%AA%E7%8B%80%E4%B8%8B/#%e5%b0%8d%e6%96%bc%e4%b8%80%e8%88%ac%e4%bd%bf%e7%94%a8%e8%80%85&#34;&gt;對於一般使用者&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;我知道很多普通用戶恨死了 Windows 10，他們本不需要了解電腦原理，只求能夠安穩的使用，&#xA;那麼有沒有什麼好的對策可以讓大家免於 Windows 10 的蹂躪呢？&#xA;很不幸的，對於一般的廣大使用者群來說，你們沒有任何有效的方法可以逃避 Windows 10！&lt;/p&gt;&#xA;&lt;p&gt;如果你耐心的閱讀完了前面的論述，就會明白微軟在自身策略上、聯盟策略上、市場環境上、&#xA;以及技術壁壘上用盡了方法阻止你不用 Windows 10，&#xA;如果你本身又沒有一點點電腦知識和技術能力的話，&#xA;基本上只能微軟叫你做什麼，你就只能做什麼，然後努力適應他給你的一切。&#xA;就像很多 Windows 10 擁護者說的話一樣：&#xA;如果你覺得微軟的科技產品難用，那絕對不是因為微軟不會設計，只是因為你跟不上時代，&#xA;請調整自己的腳步、改變自己的習慣、努力說服自己微軟的一切都是好的。&#xA;(謎之音：你看，被強姦的感覺多爽啊！)&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;對於進階使用者&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/windows-10-%E5%8D%81%E5%A4%A7%E7%BD%AA%E7%8B%80%E4%B8%8B/#%e5%b0%8d%e6%96%bc%e9%80%b2%e9%9a%8e%e4%bd%bf%e7%94%a8%e8%80%85&#34;&gt;對於進階使用者&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;對於擁有一定程度的電腦相關知識，懂得從 BIOS 設定到格式化再安裝作業系統、&#xA;到可以自行安裝驅動程式並自己調校電腦的使用者來說，&#xA;你們還有很多方法可以在新電腦上安裝 Windows 7 作業系統。&#xA;以目前的技術壁壘來說，只要你能搞定 Windows 7 安裝光碟來源、Secure Boot、&#xA;USB3 驅動、以及其他硬體設備驅動、並搭配使用獨立顯示卡的話，&#xA;你還是可以繼續使用 Windows 7 作業系統。&lt;/p&gt;&#xA;&lt;p&gt;平心而論，如果只看 Windows 家族的話，&#xA;那麼 Windows 7 就是個人評價有史以來最好也最經典的作業系統！&#xA;至於其他傳言說什麼 Windows 7 是過時產品、即將不支援、即將被淘汰等等，&#xA;大部份都是個別擁護者帶風向的言論，可以暫時不去理會。&#xA;再怎麼說，Windows 7 至今還沒超過原廠支援的期限(2020-01-14)，現在談過時會不會還太早了？&lt;/p&gt;&#xA;&lt;p&gt;不過那些擁護者說的也沒錯，雖然現在確實還是可以使用一些技術手段繼續留住 Windows 7；&#xA;但預料不會太久的時間，新的技術壁壘會愈來愈難跨過，&#xA;即便跨過了，也會愈來愈難使用新軟體和新週邊設備。&#xA;終究，你還是必須要去面對 Windows 10 的問題。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;對於高階使用者&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/windows-10-%E5%8D%81%E5%A4%A7%E7%BD%AA%E7%8B%80%E4%B8%8B/#%e5%b0%8d%e6%96%bc%e9%ab%98%e9%9a%8e%e4%bd%bf%e7%94%a8%e8%80%85&#34;&gt;對於高階使用者&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;難道我們真的沒有任何方法可以逃避 Windows 10 了嗎？&#xA;Windows 10 這麼爛、Windows 7/XP 等又即將過時，我們還能怎麼辦？&#xA;答案是：為什麼你非要用 Windows 不可？&#xA;如果你把眼光放遠一點就會發現解決問題的方式並沒有那麼複雜，不要用 Windows 就好了！&lt;/p&gt;&#xA;&lt;p&gt;所以你會看到有一些人開始改用 Apple 電腦、有一些更高級的人改用 Linux 系統、&#xA;還有一些更莫測高深的人會改用 BSD 等我們可能都沒聽過的系統。&#xA;我們這些人早就已經脫離 Windows 的泥潭，現在才能夠笑看還陷在 Windows 爛泥裡面的人。&lt;/p&gt;&#xA;&lt;p&gt;當然，我也知道脫離 Windows 談何容易？&#xA;新的系統使用方式、習慣、相容的程式等等等等全部需要重新學習重新適應。&#xA;幾十年的習慣、幾十年的知識，豈是這麼容易說拋棄就拋棄？&#xA;所以真正能夠脫離 Windows 的人要不就是真正的高端份子、&#xA;要不就是身處在高端份子環境裡被逼迫之下才能辦到。&#xA;我也是因為深深的了解這點，所以前面才會說出對於普通使用者基本只能受人宰割的話語。&#xA;但是若任何人願意鼓起勇氣跳出窗戶、保持毅力勇往直前，&#xA;那麼在一段陣痛期過後，你會發現海闊天空，&#xA;也會體悟「科技是用來服務人而使人更方便的，而不是人應該要去遷就爛設計」這句話。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Windows 10 十大罪狀(上)</title>
      <link>http://www.huoschen.idv.tw/blog/digit/windows-10-%E5%8D%81%E5%A4%A7%E7%BD%AA%E7%8B%80%E4%B8%8A/</link>
      <pubDate>Sun, 06 Oct 2019 20:00:00 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/digit/windows-10-%E5%8D%81%E5%A4%A7%E7%BD%AA%E7%8B%80%E4%B8%8A/</guid>
      <description>&lt;p&gt;這一陣子好像又看到不少 Windows 10 更新的災情，讓我感慨萬千！&#xA;畢竟這麼大一個公司，聚集了這麼多頂尖人才，卻總能這麼一直產出軟體炸彈也真是不容易啊。&#xA;本來我一直不了解幾十年來大家一邊痛罵微軟，一邊又死抱著微軟不放是什麼心態？&#xA;本來對於別人用微軟產品頻頻踩坑我多半也是當笑話在看。&#xA;但前一陣子和電腦工作室討論欲購買的新電腦規格時，老闆兼資深工程師竟然推薦我使用 Windows 10，&#xA;說這是(微軟的)趨勢，Windows 7、XP 已經漸漸不支援不能用了。&#xA;我立刻就不服氣，Windows 10 可是有史以來我用過最爛的作業系統，&#xA;除了使用上各種難用、緩慢、卡死、找不到東西外還有很多別的問題，&#xA;於是當場表明我不用垃圾系統。&lt;/p&gt;&#xA;&lt;p&gt;看到這裡，應該也能明白我對 Windows 10 怨念極深，這是確實的。&#xA;為了向那些不明白 Windows 10 到底哪裡不好的人解釋，&#xA;這裡我就要整理邏列對於 Windows 10 的十個大惡狀！&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;提要&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/windows-10-%E5%8D%81%E5%A4%A7%E7%BD%AA%E7%8B%80%E4%B8%8A/#%e6%8f%90%e8%a6%81&#34;&gt;提要&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;網路上對於 Windows 10 的評價大致可分為比較極端的兩派：&#xA;一派大力抨擊 Windows 10 超級難用或超級惡劣，&#xA;這一派的人裡面可能有不少實際踩過坑、吃過鱉；&#xA;另一派則擁護 Windows 10，甚至覺得它是有史以來最好的系統，&#xA;他們可能剛好自己的電腦適配目前的 Windows 10，從沒遇過另一派所描述的問題，&#xA;本身也非常的適應微軟所設計的操作動線與美感。&#xA;而擁護派的人常常攻擊反對派的人，說他們是因為懶惰、老化、不思進取，&#xA;才會無法適應新鮮的尖端設計。&lt;/p&gt;&#xA;&lt;p&gt;那麼為了說服大家我的感受和論點具有價值，除了後面的觀察歸納分析以外，&#xA;我想有必要交代一下個人的經歷背景，好了解我不是因為固守舊物、頭腦僵化才反對 Windows 10；&#xA;相反的，我的反對是在仔細的觀察體驗後才得出的結論。&lt;/p&gt;&#xA;&lt;p&gt;個人從大約 8 歲開始使用電腦，經歷過不同世代的作業系統，在微軟體系下的就用過：&#xA;DOS、Windows 95/98/ME、Windows XP、Windows 7、和 Windows 10，&#xA;因此可以自認對於歷代 Windows 作業系統都有比較完整的體驗。&#xA;除了微軟體系外，我還因為接案需求短暫使用過 Apple OS X，&#xA;以及自學入門 Linux (Desktop、Server、Embedded 都有)，&#xA;因此在廣域的作業系統使用體驗上也自認有一定的比較能力。&#xA;至少，我不使用 Windows 10 不是因為僵化固守；&#xA;事實上正是因為我接納並學習新事務，別說 Windows 10 了，&#xA;我拋棄了整個 Windows 和 MS 系列產品，目前在 GNU Linux 和自由軟體體系工作生活愉快！&lt;/p&gt;&#xA;&lt;p&gt;就算不說太多私人因素，只從客觀資料上來看，&#xA;Windows 10 在 2015 年上市，&#xA;市佔花了一年到了 2016 才超越 Windows XP，到了 2019 年初才超越 Windows 7，&#xA;並且這還是在各種強迫中獎的手段逼迫下才達成的數據。&#xA;在微軟各種手段之下，大量使用者仍找尋各種方法死守在舊的系統上，&#xA;我想這些現象都已經足夠說明 Windows 10 不只沒有那麼美好，甚至可能是爛的可以！&lt;/p&gt;&#xA;&lt;p&gt;對於有些在 Windows 10 上面吃過土的人可能會有點小小的失望，因為你們感覺被坑的原因沒有被列出來。&#xA;這裡我就要先小小說明一下，因為標題的緣故，我需要精選出個人認為最嚴重的十個缺陷；&#xA;同時那些容易被修復、或在可預見的未來內有機會被改善的問題，都不在評論範圍之內，&#xA;也就是說，我儘量只提那些根本上的缺失或其他設計上的重大缺失。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;罪狀十不讓你用舊的-windows&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/windows-10-%E5%8D%81%E5%A4%A7%E7%BD%AA%E7%8B%80%E4%B8%8A/#%e7%bd%aa%e7%8b%80%e5%8d%81%e4%b8%8d%e8%ae%93%e4%bd%a0%e7%94%a8%e8%88%8a%e7%9a%84-windows&#34;&gt;罪狀十：不讓你用舊的 Windows&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;微軟大力的推銷自己的新產品 Windows 10，並且也希望全世界的人都來用它，&#xA;說實在這是無可厚非的事，哪個人做產品不是這樣呢？&#xA;然而因為 Windows 10 (包含之前的 Windows 8 / 8.1)做的太爛沒人想要，&#xA;於是微軟便無所不用其極的強迫全世界的人來使用他們的新產品。&lt;/p&gt;&#xA;&lt;p&gt;雖然嚴格說起來這不能算是 Windows 10 本身的錯誤，&#xA;但因政策實在影響消費者太多，而且所有的策略都與 Windows 10 這個名字有關，&#xA;因此我估且把它排在第十名。&lt;/p&gt;&#xA;&lt;p&gt;首先他停止販售舊產品 &amp;ndash; Windows 7，不管是零售還是 OEM，&#xA;這樣新的用戶就算不想買 Windows 10 也沒辦法。&#xA;不過這倒不是什麼新招式，一直以來微軟靠著停售舊產品來推廣新產品的策略已經實行很久了。&lt;/p&gt;&#xA;&lt;p&gt;但是這麼做只能影響新購戶，對於那些原本就已經擁有並已經使用舊版本 Windows 的人構不成誘因。&#xA;於是微軟推出了臭名招彰的策略 &amp;ndash; 讓舊版本系統自動更新升級成 Windows 10。&#xA;而且為了防止想要升級系統的你一不小心按錯按鈕而沒有升級到，因此好心的移除了拒絕升級的按鈕！&#xA;後來他們大概發現有些人可能一時來不及閱讀訊息文字，就把更新升級的對話框當廣告框給關閉了，&#xA;於是他們把關閉升級視窗的那個叉按鈕等同視為用戶同意進行更新，&#xA;記得這個舉動一時之間讓全世界的 Windows 用戶都興奮活跳了起來！&lt;/p&gt;&#xA;&lt;p&gt;還有不少新購電腦的用戶不會購買作業系統，&#xA;他們可能從前已經買過作業系統，或者使用公司、學校的大量授權版本，或者安裝盜版系統。&#xA;不論哪一種，都讓停售舊產品的招數對他們無效，&#xA;若他們能夠躲過自動升級的話，就會變成難以對付的舊版釘子戶。&#xA;除了利用 UEFI Secure Boot 來圍堵其他作業系統之餘還順便防堵舊版本 Windows 之外，&#xA;現在還聯合 CPU 廠商來撲殺舊系統用戶。&#xA;以 Intel 來說，大約從 2016 的 Skylake 開始便不再支援 Windows 7。&#xA;我明白舊的產品總是慢慢的會與時代脫節，支援成本會愈來愈高，最終導致大家不願意再支援；&#xA;但對於一個未超過十年且仍在大量使用的產品，連微軟自己對 Windows 7 的支援都要到 2020 才終止，&#xA;你 Intel 這麼趕急是為了什麼呢？看來這 WinTel 的名號可不是隨便說說的呢！&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;罪狀九又醜又爛的-metro-ui&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/windows-10-%E5%8D%81%E5%A4%A7%E7%BD%AA%E7%8B%80%E4%B8%8A/#%e7%bd%aa%e7%8b%80%e4%b9%9d%e5%8f%88%e9%86%9c%e5%8f%88%e7%88%9b%e7%9a%84-metro-ui&#34;&gt;罪狀九：又醜又爛的 Metro UI&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;從 Windows 8 開始，微軟引入了全新的 Metro UI，這套系統就一直延續到了 Windows 10。&lt;/p&gt;&#xA;&lt;p&gt;從我第一天看到廣告上的 Windows 8 的時候，當下第一個想法是&#xA;微軟是不是把他們的美術設計全部辭掉然後改用了超便宜工讀生來替補？&#xA;看看那個介面、那個配色、那個長相，竟然還有些人說這樣比較漂亮比較美觀的，&#xA;我都懷疑到底是得了斯德哥爾摩症候群還是天生美感缺乏？&lt;/p&gt;&#xA;&lt;p&gt;我記得以前，新的 Windows 一推出總是會讓我耳目一新心生嚮往。&#xA;曾經好幾年的時間，我的電腦因為一些現實考量而維持使用 Windows 98&#xA;(主要是配備規格不足、加上 SP2 以前的 Windows XP 問題很多)，&#xA;但仍然到處找有沒有讓 Windows 98 貼上 XP 貼圖皮膚的套件。&#xA;曾經一邊用著 Windows XP 一邊想著哪天換新電腦的時候換成漂亮華麗的 Windows 7，&#xA;尤其那個毛玻璃特效讓我好喜歡。&#xA;然而到了 Windows 8 (8 / 8.1 / 10) 卻讓我完完全全沒有這種想法，&#xA;心理立刻冒出的感覺反而是：&#xA;天啊，這什麼醜死人的東西？我上次見到這種畫面風格的東西好像是…… 喔對，Windows 3.1！&lt;/p&gt;&#xA;&lt;p&gt;暫且就先撇開美不美這種比較主觀的觀點，來看看其他比較實用的方面。&#xA;微軟因為他的商業策略考量，需要一個統一桌面和行動裝置的使用者介面，這點我了解，&#xA;但是他們顯然沒有做好不同裝置下的介面統一。&#xA;在桌面系統上，傳統 UI 介面和 Metro UI 介面各放一套，互相擾亂使用者。&#xA;你可以說這是為了兼容那些老舊的程式，他們必須在傳統的 Windows UI 環境下才能正常運作，&#xA;但是所導致的使用干擾卻是無法否認的事實，&#xA;所有的東西都要分兩套 &amp;ndash; 傳統桌面版和 Metro UI 版，連桌面自己也是。&lt;/p&gt;&#xA;&lt;p&gt;隨便 Google 就會看到很多案例，其中經典的大概就是設定面板也分成兩套，&#xA;不只長相不一樣，連內含的設定項目也不一樣，弄的使用者都不知道要改個東西要去哪裡找？&#xA;連微軟自己的 Edge 瀏覽器也有兩種不同版本，弄得大家暈頭轉向。&#xA;以上還是有資源把各種東西搞兩套的廠商，&#xA;而若遇到一些比較不全面設計的軟體、或者是已經改不動的老軟體，&#xA;那就會變成只能在某一個模式下使用它。&#xA;然而我們用電腦當然不是只用一套軟體，&#xA;因此有些軟體只能在傳統桌面下運作、有些軟體只能在 Metro UI 下運作，&#xA;而且彼此不一定能良好的互相支援，例如一些舊的輸入法。&lt;/p&gt;&#xA;&lt;p&gt;如果這樣不夠讓人暈，那就來看看更暈的。&#xA;Metro UI 的那個首頁上面(叫它「首頁」是因為我不知道它的正式名稱叫什麼)，&#xA;各種常用還是釘選的應用程式會顯示某些內容畫面，並且還是動態變化、不斷切換的。&#xA;這東西是好是壞也許不同的人有不同的說法，但隨便 Google 就能找到一堆人在罵這個東西，&#xA;我想就足夠說明它確實擾亂了一般使用者的操作流暢度。&#xA;怎麼說呢？除非是第一次熟悉某個裝置，否則我們操作電腦的過程中仔細想想其實存在不少慣性。&#xA;比如說今天你想要打開 Sykpe，你會很認真的按下開始程式集，然後比對哪裡寫著「Skype」，&#xA;然後再按出延伸選單(若有的話)，再點擊執行檔嗎？&#xA;不是吧？通常我們應該只會一眼飄一下有一個藍色圓圓的、中間有白色字樣的那個圖在哪裡對吧？&#xA;甚至我們並不會整個列表搜尋，&#xA;因為真的常用的程式，選單點開以後它會出現在什麼位置我們都已經知道了，眼光就會直接往那邊飄。&#xA;除非安裝、移除、或變更了一些程式，導致開始功能表的排列有異，這時我們開啟軟體才會稍微遲疑一點。&#xA;好的現在可好，這些圖示畫面變來變去飄來飄去，簡直就是在訓練撲克牌翻牌遊戲一樣！&#xA;如果說微軟去除一些如毛玻璃等 3D 特效而帶入扁平化是為了解決行動裝置運算能力不足的問題的話，&#xA;那麼讓這些畫面動來動去又是為了什麼？&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;罪狀八爛輸入法機制&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/windows-10-%E5%8D%81%E5%A4%A7%E7%BD%AA%E7%8B%80%E4%B8%8A/#%e7%bd%aa%e7%8b%80%e5%85%ab%e7%88%9b%e8%bc%b8%e5%85%a5%e6%b3%95%e6%a9%9f%e5%88%b6&#34;&gt;罪狀八：爛輸入法機制&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;當然也是為了因應行動裝置，微軟從 Windows 8 開始，改用了新的 TSF 輸入法系統，&#xA;這直接導致已經流通的使用 IME 輸入法系統的舊式輸入法如「無蝦米輸入法」等無法再使用，&#xA;雖然之後好像又增加了對 IME 輸入法的相容性，&#xA;但新輸入法系統在其他方面造成的不良影響仍舊無法挽回。&lt;/p&gt;&#xA;&lt;p&gt;其實輸入法系統的革新不見得是壞事，只要仍在發展維護的輸入法系統，&#xA;都可以在一個可期待的時間內得到適用新輸入法系統的更新；&#xA;實際上新輸入法系統最大的殺傷力不在相容性上面，而在於相關切換按鍵的設計。&#xA;不知為什麼，微軟大幅的變更了輸入法的切換按鍵與按鍵組合，直接無視大家十幾年來的習慣。&lt;/p&gt;&#xA;&lt;p&gt;然而這還不是最慘的，新的系統還引入了新的制度，即「語言」與「輸入法」。&#xA;要切換到某個輸入法，首先要先切換語言環境到該輸入法所屬的語言下，然後再切換到你要的輸入法。&#xA;我至今還想不明白，就一個輸入法的切換要搞得這麼複雜幹什麼？&#xA;一個人是能夠同時熟悉幾種語言？是到底同時需要多少不同語系的輸入法？&#xA;我慶幸我不用在微軟的輸入法爛泥裡面打轉，&#xA;雖然我使用的 GCIN 輸入法系統內含了不下二十種不同的輸入法，&#xA;但不同輸入法之間的切換也沒有搞得這麼複雜！&lt;/p&gt;&#xA;&lt;p&gt;如果你覺得輸入法的坑只有這樣，那你就錯了！&#xA;輸入法的切換不是只有層級複雜，也不是只有按鍵與以往不同，&#xA;現在「Shift」按鍵也可以用來切換中英輸入模式。&#xA;問題是，單按 Shift 按鍵早已經被很多軟體設定為各種特殊用途了，&#xA;比如說輸入大寫字母、比如說遊戲裡的奔跑、比如說影像處理軟體的圈選模式。&#xA;那系統如何正確的判斷使用者按下 Shift 時的意圖呢？&#xA;依據網路上的意見來看，顯然是不能。&#xA;所以你應該很容易在一些需要比較複雜的按鍵操作的軟體裡，體驗到輸入法亂跳的感覺。&lt;/p&gt;&#xA;&lt;p&gt;如果你覺得這樣已經夠慘，那你又錯了！&#xA;從 Windows 8 開始，系統開機預設的輸入法是當地語系的輸入法，&#xA;說白話一點，以大部份的臺灣用戶來說，就是微軟的注音或新注音輸入法。&#xA;可能微軟覺得這樣的設定比較本地化吧，&#xA;然而大部份的人應該都早就習慣預設英文輸入，需要輸入中文時才切換輸入法。&#xA;就算習慣可以重新調整適應好了，&#xA;問題是說實在的，除了打字以外，在大部份的電腦操作中其實最需要的是英文字母鍵入的功能，&#xA;比如說各種系統快捷鍵、軟體快捷鍵、在開始功能表搜尋應用程式、打網址、打帳號密碼等，&#xA;於是我們往往需要不時的把注音輸入法切換為英文輸入。&#xA;如果只是一開機一登入的預設輸入法是中文就算了，只是剛登入的時候要切換一下而已；&#xA;然而微軟的做法卻是各個應用程式、各個視窗對於輸入法都是獨立的個體，&#xA;因此實際上你開新的程式、開新的視窗、或者切換視窗以後，都要不厭其煩的切換一下輸入法！&#xA;甚至因為可能某些軟體狀態沒寫好的緣故，你在同一個視窗的不同輸入框之間轉換以後，&#xA;輸入法又會跳來跳去。&#xA;往好處想就是，Windows 10 用順了以後，你的腦袋應該會更敏銳，真可謂用心良苦啊！&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;罪狀七不能良好支援國際通用-unicode-格式與通用的純文字文件格式&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/windows-10-%E5%8D%81%E5%A4%A7%E7%BD%AA%E7%8B%80%E4%B8%8A/#%e7%bd%aa%e7%8b%80%e4%b8%83%e4%b8%8d%e8%83%bd%e8%89%af%e5%a5%bd%e6%94%af%e6%8f%b4%e5%9c%8b%e9%9a%9b%e9%80%9a%e7%94%a8-unicode-%e6%a0%bc%e5%bc%8f%e8%88%87%e9%80%9a%e7%94%a8%e7%9a%84%e7%b4%94%e6%96%87%e5%ad%97%e6%96%87%e4%bb%b6%e6%a0%bc%e5%bc%8f&#34;&gt;罪狀七：不能良好支援國際通用 Unicode 格式與通用的純文字文件格式&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;我承認這個標題下的有些饒口，&#xA;其實就是 Windows 對於 UTF-8 衍生的各種問題仍然一點解決的跡象都沒有。&#xA;有看過我以前文章的人大概知道我是個軟體開發人員，常常與編碼、純文字為伍，&#xA;因此對於微軟在這方面的坑深感痛惡；&#xA;至於一般比較少接觸到 Unicode 與純文字文件的人可能就比較難感受到它的惡了，&#xA;直到你遇到亂碼文件之前！&lt;/p&gt;&#xA;&lt;p&gt;嚴格說起來這其實也不能算是 Windows 10 的錯，因為 Windows 自古以來都有同樣的問題。&#xA;但我記得當時 Windows 10 剛發佈的時候，我就立刻去微軟網站下載了 Windows 10 光碟來試玩，&#xA;第一次開機就立刻去試的第一個東西，就是看看新的作業系統是不是解決了編碼與格式的問題？&#xA;解果顯然是沒有！&lt;/p&gt;&#xA;&lt;p&gt;首先是系統語系裡面仍然沒有 UTF-8 的支援，看來微軟還是不樂意 UTF-8 在 Windows 上流行。&#xA;再來是系統預載的記事本仍然預設存檔為舊式本地格式編碼，而不是任何一種 Unicode 編碼，&#xA;這說明了 Windows 10 仍然會努力不卸的一直製造亂碼文件；&#xA;而就算手動選擇存檔格式，依舊仍然沒有辦法存檔為 No-BOM UTF-8！&lt;/p&gt;&#xA;&lt;p&gt;既然都提到了純文字文件，那就順便再提這個換行格式。&#xA;到了 Windows 10，微軟的記事本依然只支援 CR LF 換行，&#xA;然後讀到其他的換行格式就會整個排版錯亂。&#xA;實在是難以想像，其他的幾乎任何一款文字編輯器或檢視器都已經可以正確辨識與排版各種換行符了，&#xA;OS X 甚至都捨棄了他傳統的 CR 格式改為使用 LF 格式，&#xA;只有偉大的微軟對此仍舊沒辦法，我想就算我用「垃圾」這個形容詞來形容微軟的產品，一點都不為過！&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;罪狀六對傳統機械式硬碟存取效率太差&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/windows-10-%E5%8D%81%E5%A4%A7%E7%BD%AA%E7%8B%80%E4%B8%8A/#%e7%bd%aa%e7%8b%80%e5%85%ad%e5%b0%8d%e5%82%b3%e7%b5%b1%e6%a9%9f%e6%a2%b0%e5%bc%8f%e7%a1%ac%e7%a2%9f%e5%ad%98%e5%8f%96%e6%95%88%e7%8e%87%e5%a4%aa%e5%b7%ae&#34;&gt;罪狀六：對傳統機械式硬碟存取效率太差&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;我想現在在使用 Windows、特別是 Windows 10 的廣大使用者應該都知道一件事：&#xA;電腦一定要裝固態硬碟(SSD)，至少系統碟要使用固態硬碟。&#xA;問為什麼？因為 SSD 讓電腦加速很多，因為傳統硬碟(HDD)速度太慢！&lt;/p&gt;&#xA;&lt;p&gt;如果我告訴你一般電腦其實根本沒有必要使用 SSD 呢？&#xA;如果我告訴你電腦需要 SSD 其實是因為 Windows 10 做太爛呢？&#xA;SSD 價錢那麼貴、容量那麼小、可靠性和耐操性又不如傳統 HDD，&#xA;為什麼我好好的 HDD 不用然後要去買 SSD？&#xA;我這麼告訴你吧，我家裡的和公司的好幾臺電腦都只使用 HDD，速度並沒有比較慢。&#xA;我曾在桌機上使用過 SSD，是真的有加速，&#xA;但並不如一般 Windows 使用者描述的像是從烏龜變老鷹的感覺。&#xA;為什麼？因為我的電腦在使用 HDD 的情況下就已經像飛一樣快了，&#xA;以至和 SSD 之間並沒有太大的落差感，&#xA;這一切必須要感謝全世界的 Linux 開發者在檔案系統設計、快取機制、和磁碟讀寫排程器上的付出！&#xA;然而我並不是說 SSD 完全不好，事實上我的膝電幾乎都只裝配了 SSD，&#xA;但不是為了它的速度，而是 SSD 除了耐振動外還更加省電，可以讓我的電池撐得比較久的緣故。&lt;/p&gt;&#xA;&lt;p&gt;其實一般來說，作業系統的檔案系統模組本來多少都會針對硬碟做一些最佳化設計。&#xA;回到 Windows 上，從前沒有 SSD 的時候你覺得電腦慢了嗎？會卡卡的嗎？&#xA;再進一步問，不同 Windows 版本的用戶裡，誰最推崇 SSD？&#xA;就我的觀察，一般是 Windows 10 的使用者對於 HDD 和 SSD 之間的差異體驗最為明顯，&#xA;告訴你用 HDD 會太慢、會卡的多半也是他們，&#xA;而 Windows 7 以下的使用者就比較沒有那種非換 SSD 不可的念頭。&#xA;所以真像其實是：Windows 10 對機械式 HDD 的支援太差！&#xA;這不是我亂講，有一些現象可以佐證這個觀點，&#xA;網路上可以搜尋到許多從 Windows 7 升級到 Windows 10 的經驗，&#xA;如果他們原本使用 HDD 的話，幾乎會一致的體驗到系統反應變慢、偶而會卡、硬碟時常嘎嘎響等問題。&#xA;你看在這些案例下所有變因都不變，同樣一臺電腦、同樣的配備，唯一的差別就是作業系統不同而已，&#xA;還不夠說明 Windows 10 硬碟讀寫策略的問題嗎？&#xA;我都合理懷疑微軟為了產業聯盟而故意這樣子做，好促進 SSD 的銷售！&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;罪狀五不尊重用戶隱私權&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/windows-10-%E5%8D%81%E5%A4%A7%E7%BD%AA%E7%8B%80%E4%B8%8A/#%e7%bd%aa%e7%8b%80%e4%ba%94%e4%b8%8d%e5%b0%8a%e9%87%8d%e7%94%a8%e6%88%b6%e9%9a%b1%e7%a7%81%e6%ac%8a&#34;&gt;罪狀五：不尊重用戶隱私權&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Windows 10 變更、加入了很多新的隱私策略，讓他的使用者幾乎沒有隱私可言。&#xA;不知道為什麼？歐美人士對於隱私這件事非常在意，反彈也很大，&#xA;反而東亞地區的人好像覺得被人偷看到全部看光光都無感？&lt;/p&gt;&#xA;&lt;p&gt;從以前大家就口耳相傳，微軟會偷偷上傳作業系統的正版驗證資料，&#xA;嚇得好多人裝機完的第一個步驟除了下載其它瀏覽器之外，大概就是關閉作業系統更新。&#xA;到了 Windows 10 的時代更變本加厲，有大量不知名的後臺程序時不時不知道在運算什麼東西，&#xA;如果你沒有配備 SSD 的話，那麼它們也是導致你的電腦變慢變卡的元兇之一。&#xA;此外，這些為數不少的背景程序還經常會默默的上傳不知道什麼東西，&#xA;據信其中包含了各種用戶個人訊息、裝置資訊、以及用戶行為記錄等&#xA;(因為 Windows 不是一個開放的系統，所以基本沒有人可以確定 Windows 確實的行為是什麼，&#xA;一直以來只能透過一些外顯跡象進行推測判斷)，&#xA;而且據說這些行為在您安裝 Windows 時的授權條款裡面都有提到，相信大家都同意了吧？！&#xA;(這裡用據說這詞是因為我也從沒有仔細閱讀過該條款，反正我現在又不用)&lt;/p&gt;&#xA;&lt;p&gt;但令我最為震驚的其實是：Windows 10 裡面充斥著廣告！&#xA;沒錯，你能夠想像嗎？&#xA;一個付費購買的、知名大型廠商發行的、在電腦系統中屬於基礎元件的作業系統，&#xA;原生充滿了廣告！&lt;/p&gt;&#xA;&lt;p&gt;不過也不用太傷心，當中有一部份的隱私相關設定是有被微軟開放出來的，&#xA;也就是使用者可以透過變更系統設定來關閉或禁止部份的隱私相關行為。&#xA;需要注意的是，這些設定預設是全部打開的，&#xA;換句話說就是，如果你是普通的、不太了解電腦細節、也不太會去碰電腦設定的用戶，&#xA;那麼您對於微軟來說就幾乎等於是門戶全開了！&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;罪狀四uefi-secure-boot&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/windows-10-%E5%8D%81%E5%A4%A7%E7%BD%AA%E7%8B%80%E4%B8%8A/#%e7%bd%aa%e7%8b%80%e5%9b%9buefi-secure-boot&#34;&gt;罪狀四：UEFI Secure Boot&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;最近這幾年的主機板已經捨棄了舊的 BIOS 系統，並且讓 UEFI 流行起來。&#xA;UEFI 本身並不是壞事，但其中的 Secure Boot 功能問題卻很大！&#xA;有些人可能會說這是主機板廠的事情，干微軟、干 Windows 10 什麼事？&#xA;我的說法是，若不是 Windows 8 / 10 的緣故、若不是微軟從中作梗，&#xA;又怎麼會讓這些週邊廠商發生這樣的變化？&#xA;事實上若不是微軟經常從中作梗，電腦產業乃至於整個數位產業應該會發展的更為美好。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;從-bios-到-uefi&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/windows-10-%E5%8D%81%E5%A4%A7%E7%BD%AA%E7%8B%80%E4%B8%8A/#%e5%be%9e-bios-%e5%88%b0-uefi&#34;&gt;從 BIOS 到 UEFI&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;故事的開始是這樣的，稍微懂電腦 DIY、會自己裝系統的，應該沒人不知道主機板上面的 BIOS 軔體。&#xA;這個 BIOS 可以看做是主機板自己的啟動系統，&#xA;在系統上電後、直到把工作權移交給我們安裝的作業系統之前，它掌管電腦的一切行為。&#xA;BIOS 的工作至少包含了主機板開機、周圍硬體設備檢查與初始化、搜尋啟動磁碟、搜尋作業系統、&#xA;然後把作業系統叫起來之後將工作流程移交給作業系統等等的工作。&#xA;BIOS 最早是由 IBM 開發在 IBM PC 上使用，&#xA;賴 IBM 開放 PC 硬體規格之賜，各種 IBM PC 相容的硬體零件廠商如雨後春筍般冒出，&#xA;其中亦促成了臺灣早期 PC 產業的發展。&#xA;然而這個 BIOS 的規格和詳細設計並沒有被釋出，可能 IBM 並不覺得它算做硬體吧。&#xA;那麼缺乏 BIOS 的主機板要怎麼開機啟動呢？&#xA;於是早期的主機板廠商對 IBM BIOS 進行了逆向工程，仿製出了 BIOS 軔體。&lt;/p&gt;&#xA;&lt;p&gt;這樣各位有稍稍看懂了嗎？&#xA;BIOS 從一開始就沒有明確的規格和規範，實際的規格只有一個：&#xA;「要擁有和 IBM BIOS 一樣的行為與反應」。&#xA;因此經過了數十年的 PC 產業發展，各項硬體設備規格都已經更換了數不清的世代，&#xA;只有 BIOS 一直是那個樣子，幾乎沒有任何變化。&#xA;幾十年來，當初那個 BIOS 早就已經不符合現代 PC 的需求，&#xA;但沒有人敢去動它的規格，否則就會面臨不相容的問題。&#xA;於是一直以來，主機板廠商的軔體工程師都要在極度有限的編碼空間裡面，&#xA;使用非常老舊的 16 位元指令集編寫 BIOS，並且寫出來的 BIOS 還要能夠與新式的硬體設備溝通協同，&#xA;這些人實在太令人敬佩！&lt;/p&gt;&#xA;&lt;p&gt;老舊的 BIOS 不只讓開發工作變得極其困難，也大大限制了硬體設備的發展，&#xA;於是 Intel 終於看不下去了！&#xA;他們打算開發一套全新的系統，符合現代需求的、規格明確、完全取代老式 BIOS 的系統架構，&#xA;並命名為 EFI，就是後來 UEFI 的前身。&#xA;各位若有過在 BIOS 以及 UEFI 介面上修改主機板設定的經驗，&#xA;是不是光是在操作介面上就可以感覺到 UEFI 的先進奔放呢？&#xA;然而實際上 EFI 的發展並不順利，不是指它的技術不成功，而是 EFI 架構一直無法在市場上推動起來。&#xA;為什麼呢？因為微軟對此興趣缺缺，不願意投注心力做改變。&#xA;你看如果有一個推銷員要賣你一個新的主機板，說上面採用了什麼最新技術多好多好的，&#xA;只不過 Windows 不支援這種架構，這主機板需要使用更先進的其他作業系統，&#xA;請問你會買嗎？請問誰會買單？&#xA;查了資料我才發現，EFI 其實並不是什麼太先進的技術，早在 199x 年左右就開發出來了，&#xA;Linux 在 2000 年左右就已經支援 EFI 啟動，&#xA;然而 UEFI 一直要到 2011 年以後才真正開始流行。&#xA;難怪不少科技領域大老都說過：微軟是阻礙數位科技發展的兇手！&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;利用-uefi-secure-boot-來防堵其他競爭的作業系統&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/windows-10-%E5%8D%81%E5%A4%A7%E7%BD%AA%E7%8B%80%E4%B8%8A/#%e5%88%a9%e7%94%a8-uefi-secure-boot-%e4%be%86%e9%98%b2%e5%a0%b5%e5%85%b6%e4%bb%96%e7%ab%b6%e7%88%ad%e7%9a%84%e4%bd%9c%e6%a5%ad%e7%b3%bb%e7%b5%b1&#34;&gt;利用 UEFI Secure Boot 來防堵其他競爭的作業系統&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;那麼既然微軟對新的 EFI 興趣缺缺，又為什麼在 2011 年突然感興趣了呢？&#xA;那是因為微軟發現了 EFI 裡面有一個好功能(相對於微軟來說是好功能)：Secure Boot。&#xA;前面不是說了嗎，BIOS/UEFI 主管了從電源啟動到移交執行權給作業系統中間的工作，&#xA;而其中的 Secure Boot 功能可以檢查即將啟動的作業系統是否為受信任的系統，&#xA;若為可信任的作業系統，才將之啟動，反之則拒絕啟動該作業系統。&#xA;這個設計一開始的目的是為了避免作業系統核心被病毒、木馬等軟體或其他有心人士竄改過，&#xA;如果各位年紀夠長的話可能就會知道，從前的開機型病毒就屬這類。&#xA;當然，微軟看上 Secure Boot 功能絕對不是為了用戶的安全&#xA;(若微軟真的在乎用戶安全，就不會有那麼多數十年修不好的 Bug 了)，&#xA;產業人士都知道這是為了防睹用戶安裝其他作業系統！&lt;/p&gt;&#xA;&lt;p&gt;怎麼說呢？我這樣問你好了，你這十年來有看過或遇過竄改開機啟動區的病毒嗎？&#xA;所以可以說依據現實層面，沒有多少案例需要用到 Secure Boot 的保護。&#xA;相對的我再問你，Secure Boot 如何檢核作業系統是否受信任？&#xA;由誰來決定什麼系統是受信任的而什麼系統不是？&#xA;這樣你明白了嗎？&lt;/p&gt;&#xA;&lt;p&gt;詳細的認証方式牽涉到一些密碼學知識，有興趣的人可以另外去研究有關&#xA;非對稱加密、簽署驗證、以及雜湊值的相關資料閱讀，我這裡就不說明。&#xA;從 Windows 8 開始終於支援了 UEFI 開機，&#xA;然後微軟在 Windows 8 認証規格裡面加入了與 Secure Boot 有關的規範&#xA;(雖然微軟不是公權力單位，沒認証的硬體也不是不能賣，&#xA;但認証通過了就可以在產品貼上 design for Windows 8 字樣的貼紙，有廠商敢不認証嗎？)&#xA;簡單摘要這規範裡的重要部份為：&#xA;主機板必須具備 Secure Boot 功能(當然也要預先含入微軟的公鑰資訊)，&#xA;並且不能讓使用者對其設定進行修改。&#xA;也就是說，新的 UEFI 主機板只能安裝使用 Windows 8 (以及之後的 8.1 與 10)作業系統，&#xA;你無法安裝使用其他系統如 Linux、BSD 等。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;微軟的防堵策略對使用者造成的影響&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/windows-10-%E5%8D%81%E5%A4%A7%E7%BD%AA%E7%8B%80%E4%B8%8A/#%e5%be%ae%e8%bb%9f%e7%9a%84%e9%98%b2%e5%a0%b5%e7%ad%96%e7%95%a5%e5%b0%8d%e4%bd%bf%e7%94%a8%e8%80%85%e9%80%a0%e6%88%90%e7%9a%84%e5%bd%b1%e9%9f%bf&#34;&gt;微軟的防堵策略對使用者造成的影響&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;大部份的人是不是可能想說反正我這輩子不會去用 Linux 和 BSD 等等其他作業系統，所以與我無干？&#xA;那就錯了，因為從前還沒支援 UEFI Secure Boot 的 Windows 7、Windows XP 等也無法安裝使用。&#xA;如果你覺得只有這樣而已那又錯了，因為還有很多第三方的開機光碟、救援工具光碟、&#xA;自己製做的整合安裝光碟等也都無法使用&#xA;(這些光碟能夠不動到電腦上的系統而直接靠自己啟動，&#xA;其實也是因為光碟內自含了一個小型的開機系統)。&#xA;總的來說，可以說是微軟將獨家掌握 UEFI 主機板的開機所有權，&#xA;而你除了微軟所允許的項目外，沒有任何其他選擇！&lt;/p&gt;&#xA;&lt;p&gt;微軟當時的這個舉動在歐美各地造成產業人士的強烈沸騰與抗爭&#xA;(不知為什麼，臺灣好像就都沒有人覺得這樣有什麼不好的感覺)。&#xA;最終微軟不得不妥協，在 x86 系列上面修改了認証細則；基本與上述一樣，但多加入了：&#xA;主機板廠商可自行決定要不要加入讓使用者修改 Secure Boot 的設定選項，但預設要為啟動。&#xA;此後，有些主機板可以開關 Secure Boot、有些甚至可以讓你匯入、修改其他認証公鑰，&#xA;而也有些主機板完全不提供相關選項(例如曾聽聞 VAIO 部份 laptop 就無法關閉 Secure Boot)。&lt;/p&gt;&#xA;&lt;p&gt;上面提過 Secure Boot 被微軟的濫用，&#xA;也導致了以往電腦維修工程師的各種開機工具光碟可能從此失效，&#xA;然而 Windows 電腦偶而還是會死翹翹需要救援啊，那可怎麼辦？&#xA;這就是為什麼從 Windows 8 開始，系統內含了一堆有關於&#xA;還原、完全還原、主機板設定修改工具等神奇工具的原因了。&#xA;那如果系統完全死掉、或被駭的很徹底，那該怎麼辦呢？&#xA;那就只能拿一片正版 Windows 8 / 10 光碟重新安裝了！&lt;/p&gt;&#xA;&lt;p&gt;最終，UEFI Secure Boot 的這些事情對大眾的影響，是剝奪了使用者自主權，&#xA;從此使用者自己買的機器可能沒有辦法、或難以使用自己所希望使用的作業系統。&#xA;然而對於微軟來說，這是個太好不過的事情，本來從此可以把所有的使用者鎖在 Windows 上不能亂逃，&#xA;甚至連自己的舊版 Windows 也一起封殺，還有比這更好的事情嗎？&#xA;唯一的遺憾就是由於在 Secure Boot 上的一些妥協，成為了使用者不安份使用 Windows 8 / 10&#xA;而改用其他作業系統的漏洞，也因此引導出後來微軟協同 CPU 廠商再次封殺 Windows 7 的事情。&lt;/p&gt;&#xA;&lt;p&gt;接續後篇「&lt;a href=&#34;http://www.huoschen.idv.tw/blog/digit/windows-10-%E5%8D%81%E5%A4%A7%E7%BD%AA%E7%8B%80%E4%B8%8B/&#34;&gt;Windows 10 十大罪狀(下)&lt;/a&gt;」&lt;/p&gt;</description>
    </item>
    <item>
      <title>香港暴動之我思</title>
      <link>http://www.huoschen.idv.tw/blog/thinking/%E9%A6%99%E6%B8%AF%E6%9A%B4%E5%8B%95%E4%B9%8B%E6%88%91%E6%80%9D/</link>
      <pubDate>Tue, 03 Sep 2019 22:47:21 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/thinking/%E9%A6%99%E6%B8%AF%E6%9A%B4%E5%8B%95%E4%B9%8B%E6%88%91%E6%80%9D/</guid>
      <description>&lt;p&gt;香港最近並不平靜，我想到今天應該已經沒有人不知曉這件事。&#xA;這場紛爭從三月開始至今已快半年，不只看似沒有結束的跡象，暴亂程度還在不斷的升級中！&#xA;做為一個置身事外的旁觀者，除了隔岸觀火外，這整件事情也應當讓我們從中學習並做反省。&lt;/p&gt;&#xA;&lt;p&gt;回想最初，當時好像是因為什麼「反送中」之類的問題讓港人不開心，所以出來抗議。&#xA;但事情發展至今，反什麼好像已經沒什麼人知道了，反正就是「反中」；&#xA;或者說，那些在背後鼓動的勢力已經不再掩飾或掩飾不了港獨的真面目，&#xA;鼓動無知的港人 &amp;ndash; 特別是青年們 &amp;ndash; 為其獲取利益的馬前卒。&#xA;有沒有覺得和數年前的太陽花事件如出一轍？&#xA;反對的東西變來變去，到後面反什麼也沒人知道，或者說是沒人在乎，反正就是反馬！&lt;/p&gt;&#xA;&lt;p&gt;我看見的許多臺灣人多嘲笑香港人，覺得他們好像都是白痴一樣，&#xA;在自己家裡打砸，砸毀香港的基礎建設、還有和平繁榮的城市風氣，&#xA;破壞商業和生活的經濟環境、和數十年來苦心經營的亞洲金融地位，&#xA;令周圍虎視眈眈的深圳、上海、臺北有了趁虛而入的機會，&#xA;最後圖得了什麼？&#xA;在這當中我們只看見一個小男孩哭鬧著要鄰居買東西給他，不然他就……&#xA;不然他就打爛他自己的腳踏車、撕破自己的衣服裸身在外叫囂，&#xA;現在還威脅鄰居若不從就要拿著火把作勢要燒毀自己的家。&#xA;相比之下川普在貿易戰中給出的威脅、或數年前中國大陸抵制日貨的行為還有邏輯有意義的多！&lt;/p&gt;&#xA;&lt;p&gt;回顧香港，最近的數字顯示的香港經濟衰弱、十五間酒樓倒閉、&#xA;世界各地對香港的旅遊警示和遊客數的衰減、商店和公司行號的憂心忡忡，&#xA;香港人最終為自己得到了什麼？&#xA;當中尤其我個人最匪夷所思想不透的是，這個罷課究竟是怎麼個原理？&#xA;為什麼學生們會覺得自己不去上課就可以威脅別人怎麼樣？&#xA;雖然我身為臺灣人私心希望香港的學生繼續不上課、不學習，&#xA;這樣以後我們就少了一小票競爭對手；&#xA;罷工繼續、破壞繼續，等香港垮了我們就有機會可以取而代之，&#xA;若這樣想的話，香港的問題對我們來說好像也不是個壞事！&lt;/p&gt;&#xA;&lt;p&gt;然而對於臺灣人，若香港的故事只能讓我們幸災樂禍的話，就太沒有價值了！&#xA;深深覺得我們應該要從這些事當中看看自己、反省自己。&#xA;我們看人家覺得好笑，那是因為我們置身事外；我們看他們覺得蠢，那是因為不是我們的事。&#xA;可是可曾想過，人家也是同樣覺得我們又蠢又好笑呢？&#xA;當我們笑看英國人的脫歐公投、當我們嘲笑希臘的白痴反撙節公投的時候，&#xA;可曾想想，人家是怎麼看我們在鬧台獨？又怎麼笑倒在每一件鬧出的國際笑話之前？&#xA;思考到這裡，我就明白為什麼香港人覺得自己是在為自己的未來努力的戰鬥了，&#xA;因為他們陷入了和我們一樣的意識型態陷阱中！&lt;/p&gt;&#xA;&lt;p&gt;幾個月前，有香港朋友來臺灣玩，吃喝玩樂之餘我們也進行了不少的談話思想交流，&#xA;其中令我印象深刻的是，香港朋友對我透露一個他們曾經恐懼的故事：&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;約莫二三十年前，香港人曾經普遍感受到一股威脅和恐懼。&#xA;那個時候的臺灣正在努力的建設打造亞太營運中心計劃，&#xA;而此計劃若成，則香港地位何在？香港將何去何從？香港從前的優勢和繁華是否將一蹶不振？&#xA;結果日子一天天過去，臺灣的計劃終究沒有了下文，香港人才慢慢的放下心中的恐慌。&#xA;雖然威脅的消失對香港人來說是件好事，但他們如今依舊不解，也依舊好奇臺灣人的想法，&#xA;為什麼大好的未來就這麼白白的不要了？&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;香港人不知道臺灣人在想什麼，但臺灣人，你應該知道當時發生了什麼事情吧？&#xA;就在在搖旗吶喊中、就在臺灣獨立意識中、就在戒急用忍的呼聲中，&#xA;我們的未來就這麼被自己玩掉了。與多年後的反服貿運動簡直是如出一轍啊！&lt;/p&gt;&#xA;&lt;p&gt;當臺灣人熱衷於爭吵什麼中國不中國、臺灣不臺灣的無意義問題時，&#xA;美國人在笑我們、英國人在笑我們、希臘人也在笑我們，現在連大陸人也在笑我們，&#xA;當臺灣因為這些亂七八糟又沒有建設性的議題被搶住社會焦點，&#xA;而忽略了更多更重要也更急切的民生問題、國際局勢、經濟走向時，&#xA;當臺灣數十年來裹足不前，不斷原地空轉內耗時，&#xA;全世界仍然不斷前進，不會停下來等我們。&#xA;當亞洲四小龍之首變成四小蟲之末，&#xA;當民生凋敝、青年們出走他鄉當臺勞時&#xA;(雖然臺灣人愛面子，不承認是臺勞，嘴硬說是打工換宿，但你我都清楚那是什麼！)&#xA;這就是我們正在承受的苦果。&lt;/p&gt;&#xA;&lt;p&gt;香港我看是快完蛋了，&#xA;不論這次的風波最終是如何收場，香港在經過破壞後、加上中共的忌憚、國際商業間的不信任、&#xA;還有周圍虎視眈眈隨時想起而代之的城市環繞下，香港此後大概是很難再爬起來了！&#xA;數十年後的香港人將如何看待今天的事情，我不知道；&#xA;但如果這次香港的事件可以讓臺灣人以旁觀者的角度，看清事實並重新審視自己，&#xA;那麼我想香港人壯烈的犧牲將可以為我們留下一點點價值！&lt;/p&gt;</description>
    </item>
    <item>
      <title>半桶高手愛藏私；真正的大師不私藏</title>
      <link>http://www.huoschen.idv.tw/blog/miscellaneous/%E5%8D%8A%E6%A1%B6%E9%AB%98%E6%89%8B%E6%84%9B%E8%97%8F%E7%A7%81%E7%9C%9F%E6%AD%A3%E7%9A%84%E5%A4%A7%E5%B8%AB%E4%B8%8D%E7%A7%81%E8%97%8F/</link>
      <pubDate>Thu, 13 Jun 2019 00:16:19 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/miscellaneous/%E5%8D%8A%E6%A1%B6%E9%AB%98%E6%89%8B%E6%84%9B%E8%97%8F%E7%A7%81%E7%9C%9F%E6%AD%A3%E7%9A%84%E5%A4%A7%E5%B8%AB%E4%B8%8D%E7%A7%81%E8%97%8F/</guid>
      <description>&lt;p&gt;我在多年的生活經驗中發現一件有趣的事情，&#xA;許多各行各業的高手們不喜歡讓你知道行業的秘密，也不喜歡讓你知道他技術的秘密，&#xA;就是以傳授知識技術做為本業的老師們，不少人也都有藏一手的現象。&lt;/p&gt;&#xA;&lt;p&gt;「藏一手」這件事似乎是中國人自古即延續下來的傳統。&#xA;在知識產權不受重視的年代，加上人在社會必須各憑自力拼殺生存的環境，&#xA;藏手的做法卻實保護了師傅們不被青出於藍的徒弟反過來倒打的悲慘結果，&#xA;也保障了師傅們的地位和控制利益的權利。&#xA;當然缺點就是，在學徒沒有自己開創研發新知識門道的情況下，&#xA;傳承的技術經驗就會愈來愈少直至消逝。&lt;/p&gt;&#xA;&lt;p&gt;還有另外一種更可悲的人，這種人在各行各業裡都可以看到。&#xA;在很多不同的地方都可以看到這樣的人，&#xA;這些人通常是真的在某些地方擁有過人的知識、技術、經驗、或表現，&#xA;但是他們不願意告訴你 &amp;ndash; 事實上他們不願意告訴任何人 &amp;ndash;&#xA;他們的知識、技巧、或任何與之有關的情資。&#xA;他們會極其小心的隱瞞自己所知到的事情，不悅於任何的探詢行為，&#xA;當然他們也不會去參與任何的知識交流分享活動。&#xA;而追根究底會發現，這是基於不足而產生的恐懼造成。&#xA;是因為這些人所擁有的知識內涵其實就只有這麼一點點，&#xA;一旦被人知曉，則他將要喪失其所能與他人競爭的所有優勢，&#xA;因為人們一旦知曉這些內容，就會發現這些秘密其實多麼的簡單廉價。&#xA;因此他們必須要努力的保護這些僅有的可憐知識，生怕別人把他偷走了！&lt;/p&gt;&#xA;&lt;p&gt;好玩的是，我也發現另外有一些人，&#xA;這些人多半是某些領域中真正的高手、大師等級的人物，&#xA;他們普遍存在另一種苦惱。&#xA;他們知道的太多，他們累積的經驗和摸索出的哲理太多，&#xA;他們往往失落於沒有人能與自己切磋學習，害怕這些畢生的所得有一天會隨他們一同進入墳墓。&#xA;每當有人表現出探詢其知識的慾望時，他們通常會欣悅的倒出自己的所知，傾囊相授。&#xA;他們不怕告訴你所有的知識，只害怕沒有人承接這份產業；&#xA;不怕你探尋所有的秘密，只擔心你消受不了！&#xA;追到底會發現，原來是他們知道的太多、掌握的太多。&#xA;知識被人偷去後會影響到自己競爭力的這個威脅是不存在的，其一是因為擁有的太多，&#xA;其二是真正的高手們早已超越這一切而進入了更高深的層次，使用氣運就可以挪移乾坤。&#xA;所以這些普通高手們所擔心的事情為大師來說是沒有意義的；&#xA;反而是高處寒冷又孤單，而這才是那些真正的師傅們所擔心害怕的事情。&lt;/p&gt;&#xA;&lt;p&gt;雖不知誰是因而誰是果，但看那些擁有的多的人往往不吝於分享，&#xA;而那些擁有的少的人，往往汲汲營營於保護小利小惠。&#xA;這讓我想到經書上的一句話：&#xA;「對那些擁有的，我還要再給；而對那些沒有的，我連他僅剩的，也要從他手中奪去！」&lt;/p&gt;</description>
    </item>
    <item>
      <title>電腦愈用愈慢，該換電腦了，真的嗎？</title>
      <link>http://www.huoschen.idv.tw/blog/digit/%E9%9B%BB%E8%85%A6%E6%84%88%E7%94%A8%E6%84%88%E6%85%A2%E8%A9%B2%E6%8F%9B%E9%9B%BB%E8%85%A6%E4%BA%86%E7%9C%9F%E7%9A%84%E5%97%8E/</link>
      <pubDate>Sun, 19 May 2019 17:45:56 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/digit/%E9%9B%BB%E8%85%A6%E6%84%88%E7%94%A8%E6%84%88%E6%85%A2%E8%A9%B2%E6%8F%9B%E9%9B%BB%E8%85%A6%E4%BA%86%E7%9C%9F%E7%9A%84%E5%97%8E/</guid>
      <description>&lt;p&gt;有時候我很容易聽到這樣的一句話：「我的電腦太舊了，跑的很慢，改天應該要買個新的！」&#xA;似乎很多人都覺得，電腦隨著使用的時間增加而愈來愈緩慢遲滯，這是一件非常正常也非常合理的事情，&#xA;畢竟在我們的生活經驗裡，所有的機器、甚至是人，大都遵循著愈老愈無力的規則是吧？&lt;/p&gt;&#xA;&lt;p&gt;說實在的，我平常有在蒐集親朋好友的淘汰電腦的習慣，而我就特愛這種別人因為年歲而淘汰掉的機器。&#xA;因為這種機器通常整臺都是好的，沒有任何硬體故障，只要稍加整理，又是一尾活龍。&#xA;那麼這種好好的機器為什麼會被別人丟出來呢？&#xA;問到底差不多就會得到「老舊了、太慢、不堪使用」這樣的答案。&lt;/p&gt;&#xA;&lt;p&gt;看到這裡應該就可以了解，我認為電腦因為老舊而變慢這事是個假的問題，至少不是硬體本身的問題。&#xA;這時可能有些人要反駁了，說我之前的什麼什麼電腦真的是愈用愈慢啊，後來慢到實在受不了之類的。&#xA;難道說這些人的感受是假的嗎？不，通常這些人的親身體驗都是事實。&lt;/p&gt;&#xA;&lt;p&gt;我的重點在於，絕大部份的電腦愈用愈慢的原因與老舊無關、與硬體設備無關，&#xA;並且通常在經過一些整理處理後就可以回復正常。&#xA;為了減少電腦設備無端被丟棄，也為了拯救地球環境，&#xA;這裡我就要來分析電腦為什麼會變慢的各種原因，並提出對應的解決方法。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;原因硬體老化髒汙&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/%E9%9B%BB%E8%85%A6%E6%84%88%E7%94%A8%E6%84%88%E6%85%A2%E8%A9%B2%E6%8F%9B%E9%9B%BB%E8%85%A6%E4%BA%86%E7%9C%9F%E7%9A%84%E5%97%8E/#%e5%8e%9f%e5%9b%a0%e7%a1%ac%e9%ab%94%e8%80%81%e5%8c%96%e9%ab%92%e6%b1%99&#34;&gt;原因：硬體老化、髒汙&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;首先，數位裝置與類比式裝置不同，絕大多數的情況下並不會因為設備老化而變慢。&#xA;例如，處理器的時脈不會因為用久了而從 1 GHz 掉到 0.8 GHz，&#xA;記憶體也不會因為用久了而容量從 1 GB 變成 0.8 GB，&#xA;7200 rpm 的硬碟只要沒壞，用多久都仍然是 7200 rpm。&#xA;這並不是說電腦零件不會老化，而是數位電子零件的老化所造成的影響是使得裝置運作不穩定，&#xA;用白話文來說就是會導致電腦常死當機、自動重啟、黑畫面藍畫面或花畫面之類的現象，而不是使零件效能降低；&#xA;所以我們平常所感覺到的電腦變慢的問題，十之八九與設備老舊無關。&#xA;另一種說法就是只要設備沒壞，它就可以達到規格上的性能。&lt;/p&gt;&#xA;&lt;p&gt;大概只有一種非常特別的情況會導致舊的電腦硬體變慢：&#xA;散熱裝置的老化或疏於維護清潔，因散熱不良使得處理器溫度異常升高，&#xA;此時有些處理器會啟動保護機制而停止工作，這會導致電腦當機無反應；&#xA;而有些具有自動調節時脈功能的處理器可能會自動降頻降載，這時硬體的辦事速度就是真的變慢了！&lt;/p&gt;&#xA;&lt;p&gt;在我小的時候曾經有親友送給我們一臺舊電腦，就是舊到他們用不下去而不想再用的電腦；&#xA;而我們家則是有得用就不錯了，就開心收了下來。&#xA;這臺電腦有點怪，用著用著就會當機，重開都沒有用，我們發現要強制關機後休息一會再開才會正常。&#xA;但隨者日子過去，這臺電腦當機的時間愈來愈短，&#xA;從一天當機一次變成兩三個鐘頭當機一次，再變成不到半小時當機一次；&#xA;每次需要的休息時間也愈來愈長，從一兩分鐘的休息時間慢慢變成要休息三十分鐘以上才能再次正常開機。&#xA;有一天再也受不了，我把機箱拆開一看就傻眼了，CPU 散熱片已經被灰塵塞滿，滿到了最上面的風扇底部！&#xA;經過清理散熱片和風扇以後，這臺電腦從此就正常了。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;處理對策&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;如果你也遇到硬體老化的問題，而且它竟然沒有導致你的裝置故障，而是讓設備變慢的話：&#xA;請拆開機殼、清潔內部所有灰塵、替換失效的風扇、並重塗散熱膏，&#xA;然後你的電腦很有機會能就此重新活過來。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;原因新軟體新系統導致更大的硬體需求&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/%E9%9B%BB%E8%85%A6%E6%84%88%E7%94%A8%E6%84%88%E6%85%A2%E8%A9%B2%E6%8F%9B%E9%9B%BB%E8%85%A6%E4%BA%86%E7%9C%9F%E7%9A%84%E5%97%8E/#%e5%8e%9f%e5%9b%a0%e6%96%b0%e8%bb%9f%e9%ab%94%e6%96%b0%e7%b3%bb%e7%b5%b1%e5%b0%8e%e8%87%b4%e6%9b%b4%e5%a4%a7%e7%9a%84%e7%a1%ac%e9%ab%94%e9%9c%80%e6%b1%82&#34;&gt;原因：新軟體、新系統，導致更大的硬體需求&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;如果你是一個喜歡追求新鮮事務的人，喜歡安裝新軟體、喜歡升級新程式、喜歡更新新系統的話，&#xA;那麼你一定很快就會覺得電腦不敷使用了！&lt;/p&gt;&#xA;&lt;p&gt;軟體程式的開發基本都是以當時市面上裝置的普遍分佈情況做為參考標準，&#xA;就算考慮低配置的裝置也通常指的是同一個時代下的低配置。&#xA;所以今年發佈的軟體在今年的主流配置下通常不會有什麼計算資源不足的問題，&#xA;但對於數年前的裝置而言可能就會應付的有點吃力。&#xA;例如今年(2019)市面上大部份的桌電膝電都有 8 GB 到 16 GB 左右的記憶體容量，&#xA;因此各種中型應用程式大概都會消耗數個 GB 的記憶體資源，&#xA;甚至作業系統一啟動可能就先瓜分個 4 GB 來用；&#xA;然而十年前的電腦(2009)可能記憶體普遍數字為 2 GB 到 4 GB，&#xA;所以那個年代的作業系統一啟動大概就只瓜分不到 1 GB 的記憶體，&#xA;然後各應用程式的記憶體需求大約也在數百 MB 之譜。&#xA;那麼若拿 2009 年的電腦來安裝執行 2019 年的程式、系統，那自然就會感到吃力。&lt;/p&gt;&#xA;&lt;p&gt;說到底，在這種情況下其實你的電腦並沒有變慢。&#xA;你的電腦還是那臺電腦，它的運算速度仍舊是那樣，沒變慢也沒變快；&#xA;變的是環境，是你的需求變大了，使它不能再負荷你的要求。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;處理對策&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;舊的電腦請安裝執行符合它時代的各式軟體，&#xA;不要在沒有必要之下老想升級新系統、安裝新版軟體。&#xA;例如當時跑 Windows XP 非常順暢的電腦，為什麼一定要升級到 Windows 7 呢？&#xA;跑 Windows 7 的電腦又為什麼非要升級成 Windows 10 呢？&#xA;如果 Office 2000 可以滿足你的需求，為什麼一定要安裝 Office 2019 呢？&#xA;想想你升級新軟體是因為新軟體有什麼你需要的功能？還是只是想要新的而已？&#xA;把握這點原則，不進行不必要的升級，就可以讓你的電腦繼續保持順暢的處理效率。&lt;/p&gt;&#xA;&lt;p&gt;如果因為舊時代的軟體缺少某些所需要的當代軟體功能的話，&#xA;在有選擇的情況下，也可以選擇安裝在當代軟體中特別考量低資源配置裝置的產品，&#xA;例如使用新的 AbiWord 替代舊的 LibreOffice Writer、使用新的 LXDE 替代舊的 KDE、&#xA;使用新的 FireFox 替代舊的 Google Chrome 等等。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;原因電腦病毒木馬程式&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/%E9%9B%BB%E8%85%A6%E6%84%88%E7%94%A8%E6%84%88%E6%85%A2%E8%A9%B2%E6%8F%9B%E9%9B%BB%E8%85%A6%E4%BA%86%E7%9C%9F%E7%9A%84%E5%97%8E/#%e5%8e%9f%e5%9b%a0%e9%9b%bb%e8%85%a6%e7%97%85%e6%af%92%e6%9c%a8%e9%a6%ac%e7%a8%8b%e5%bc%8f&#34;&gt;原因：電腦病毒、木馬程式&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;電腦中毒、被入侵等情況也有可能讓電腦變慢。&#xA;雖然大部份現代的病毒與木馬通常都傾向安安靜靜的做他們的事情好不被你察覺，&#xA;但部份的惡意程式意在偷用你的電腦資源，&#xA;比如說利用你的設備幫他挖礦的惡意網頁廣告、&#xA;利用你的網路做為跳板幫他駭進別人電腦或發起 DDOS 攻擊的木馬程式、&#xA;或者使用你的處理器幫你加密電腦檔案的綁架病毒等等。&#xA;在這些情況下，因為您寶貴的硬體計算資源都被別人分去使用了，&#xA;只剩一部份來處理您真正授予執行的工作，那當然就變慢了。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;處理對策&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;請事先做好各種資安防護工作，電腦不中毒、不被入侵，自然就沒有這些問題；&#xA;若不小心中獎了，請直接格式化硬碟並重新安裝作業系統即可解決！&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;原因系統檔案與資料系統紊亂&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/%E9%9B%BB%E8%85%A6%E6%84%88%E7%94%A8%E6%84%88%E6%85%A2%E8%A9%B2%E6%8F%9B%E9%9B%BB%E8%85%A6%E4%BA%86%E7%9C%9F%E7%9A%84%E5%97%8E/#%e5%8e%9f%e5%9b%a0%e7%b3%bb%e7%b5%b1%e6%aa%94%e6%a1%88%e8%88%87%e8%b3%87%e6%96%99%e7%b3%bb%e7%b5%b1%e7%b4%8a%e4%ba%82&#34;&gt;原因：系統檔案與資料系統紊亂&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;即使電腦沒有中毒、都使用符合它時代規格的軟體、硬體也都排熱順暢，&#xA;電腦仍有可能隨著使用而愈來愈慢，這主要是因為有些作業系統的設計不良導致。&#xA;例如赫赫有名的 Windows 系統在經過反覆的安裝與解除各種軟體後，&#xA;會在系統組態資料庫遺留累積的垃圾資料，或是錯寫某些關鍵資料而沒有還原；&#xA;或是經過多次的系統、驅動程式、與應用軟體更新操作後，&#xA;可能會導致系統關鍵檔案出現缺失、衝突、或版本混亂等問題；&#xA;或者只是持續開機時間久了以後就會讓系統效率莫名的低下。&#xA;這些現象在 Windows 9X 和 XP 時代可是家喻戶曉的產品特色，&#xA;新版本的 Windows 雖對此有些改善而較不明顯，但問題仍然存在。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;處理對策&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;如果您使用的作業系統具有會愈用愈慢的特色，&#xA;請在不用的時候把它關機而不要經常開著不關，建議至少每天關機一次；&#xA;若系統的檔案與資料庫出現永久性問題而無法用重新開機來解決的話，&#xA;簡單的格式化硬碟並重新安裝作業系統就可以解決這個問題！&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;原因檔案系統碎片化&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/%E9%9B%BB%E8%85%A6%E6%84%88%E7%94%A8%E6%84%88%E6%85%A2%E8%A9%B2%E6%8F%9B%E9%9B%BB%E8%85%A6%E4%BA%86%E7%9C%9F%E7%9A%84%E5%97%8E/#%e5%8e%9f%e5%9b%a0%e6%aa%94%e6%a1%88%e7%b3%bb%e7%b5%b1%e7%a2%8e%e7%89%87%e5%8c%96&#34;&gt;原因：檔案系統碎片化&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;磁碟檔案系統在經過一段時間的資料讀寫操作後會產生檔案資料碎片化的問題，&#xA;而有些檔案系統對於資料的碎片化較為敏感，會使讀寫響應速度降低，使得系統反應緩慢，&#xA;例如著名的 FAT 檔案系統家族在這個問題上就很明顯，&#xA;NTFS 檔案系統對於碎片化資料的讀寫有所加強但仍舊受到影響。&lt;/p&gt;&#xA;&lt;p&gt;十多年前我曾經幫鄰居處理過一臺電腦，這臺電腦的帳面規格和我家當時的電腦不相上下，&#xA;但是用起來就是很卡很慢，任何一個操作都要等上好一陣子。&#xA;後來我花了將近一小時，把磁碟進行重組後，它在日常操作的速度立刻就順暢了！&lt;/p&gt;&#xA;&lt;p&gt;簡單來說，就是某些作業系統只能使用某些檔案系統，而某些檔案系統用久了就會變慢，&#xA;而檔案系統反應慢了就會回來導致作業系統在檔案相關操作時變得遲鈍。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;處理對策&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;如果您使用的檔案系統具有愈用愈慢的問題，請記得偶爾執行一下磁碟重組程式即可。&#xA;若不知道該多久重組一次磁碟的話，建議每半年執行一次。&lt;/p&gt;&#xA;&lt;p&gt;另外請注意，&lt;strong&gt;不要對固態硬碟(SSD)執行磁碟重組工作&lt;/strong&gt;！&#xA;固態硬碟的原理和傳統磁盤硬碟完全不同，固態硬碟不會有碎片化導致讀寫變慢的問題，&#xA;反而磁碟重組行為會無端消耗它的使用壽命。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;原因垃圾桶內檔案太多&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/%E9%9B%BB%E8%85%A6%E6%84%88%E7%94%A8%E6%84%88%E6%85%A2%E8%A9%B2%E6%8F%9B%E9%9B%BB%E8%85%A6%E4%BA%86%E7%9C%9F%E7%9A%84%E5%97%8E/#%e5%8e%9f%e5%9b%a0%e5%9e%83%e5%9c%be%e6%a1%b6%e5%85%a7%e6%aa%94%e6%a1%88%e5%a4%aa%e5%a4%9a&#34;&gt;原因：垃圾桶內檔案太多&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;在一般的桌面環境下刪除檔案一般都會進到一個叫「垃圾桶」的地方，而不是直接刪除。&#xA;我平常刪東西都喜歡讓檔案就留在垃圾桶裡面而不去清它，除了還有機會把檔案撿回來這個原因外，&#xA;一次清除這些檔案時會看到資源管理器顯示的磁碟使用量從極高一下子變低，算是個人無聊的樂趣之一。&#xA;結果我發現當垃圾桶的東西太多時，會讓開機後進到桌面環境的時間變很久，&#xA;我的桌面系統好像會在啟動時去掃描分析垃圾桶的狀態，讓我從登入到桌面環境備便的時間可以拖長到幾十秒。&#xA;最後就是把垃圾桶的東西清掉，就回復正常了。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;處理對策&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;如果你的桌面環境會因為垃圾桶內東西太多而變慢的話，請記得常常清理你的垃圾桶。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;原因檔案資料太多把固態硬碟ssd塞太滿&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/%E9%9B%BB%E8%85%A6%E6%84%88%E7%94%A8%E6%84%88%E6%85%A2%E8%A9%B2%E6%8F%9B%E9%9B%BB%E8%85%A6%E4%BA%86%E7%9C%9F%E7%9A%84%E5%97%8E/#%e5%8e%9f%e5%9b%a0%e6%aa%94%e6%a1%88%e8%b3%87%e6%96%99%e5%a4%aa%e5%a4%9a%e6%8a%8a%e5%9b%ba%e6%85%8b%e7%a1%ac%e7%a2%9fssd%e5%a1%9e%e5%a4%aa%e6%bb%bf&#34;&gt;原因：檔案、資料太多，把固態硬碟(SSD)塞太滿&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;這幾年固態硬碟(SSD)似乎蠻流行的，新機不管三七二十一幾乎都要安上固態硬碟才算是趕得上時代。&#xA;大家一窩蜂的裝上 SSD 不外乎就是聽說它的速度超快，&#xA;然而 SSD 的速度其實是有條件的，在某些不利的情況下 SSD 甚至能夠比傳統磁盤硬碟(HDD)慢好多！&#xA;SSD 與 HDD 從基本原理上就完全不同，所以很多特性和禁忌等也是差異極大。&#xA;然而這裡我不想展開太多有關它們的差異細節與調校方式等，因為光這就可以自成一個主題；&#xA;這裡只抓一個一般人最容易誤犯且不容易被其他技術手段所改善的問題，即儲存空閒比。&lt;/p&gt;&#xA;&lt;p&gt;SSD 內的檔案資料塞的愈滿，會導致裝置之寫入速度愈慢，除此之外還會&lt;strong&gt;加速裝置壽命的消耗&lt;/strong&gt;。&#xA;當前的各種固態硬碟和記憶卡等由快閃記憶體做為核心的設備，&#xA;其控制器通常都設有程度不等的最佳化手段，以加速操作響應速度並延長裝置壽命，&#xA;然而究其原理不外乎就是最大程度的利用閒置空間進行任務分擔的各種不同方法。&#xA;所以就算某些 SSD 再怎麼標榜它的控制器有多優秀，當你的空閒空間給的不夠時，&#xA;巧婦也難為無米之炊啊。&#xA;所以你也許會發現，容量接近滿載的 SSD 其資料寫入速度其實可能比 HDD 還慢；&#xA;若經常性的讓 SSD 維持滿載狀態，則手上的 SSD 可能很快就會故障了！&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;處理對策&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;若你的電腦裝備了固態硬碟(SSD)，請不要死命的往裡面塞檔案，&#xA;請多留些閒置空間給你的硬碟控制器去做利用。&#xA;若你沒有概念閒置空間到底要留多少比較理想的話，&#xA;建議平常大約保持可用空間佔整個硬碟空間的四分之一到一半左右即可！&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;原因心理因素&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/%E9%9B%BB%E8%85%A6%E6%84%88%E7%94%A8%E6%84%88%E6%85%A2%E8%A9%B2%E6%8F%9B%E9%9B%BB%E8%85%A6%E4%BA%86%E7%9C%9F%E7%9A%84%E5%97%8E/#%e5%8e%9f%e5%9b%a0%e5%bf%83%e7%90%86%e5%9b%a0%e7%b4%a0&#34;&gt;原因：心理因素&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;有的時候電腦本身可能並沒有什麼狀況，但我們感覺它好像不夠快了，這可能就是心理因素所造成。&#xA;更詳細的說，因為市場日新月異，周圍的朋友、辦公室、咖啡廳等環境見到的電腦愈來愈高檔，&#xA;回頭使用自己的電腦，在對比之下好像就變慢了。&lt;/p&gt;&#xA;&lt;p&gt;舉個例子好了，一兩年前的電腦開始主打兩秒鐘開機之類的特色，&#xA;這時大家的電腦好像突然就變慢了，開始無法忍受超過三十秒的開機時間。&#xA;但是你的舊電腦剛買來的時候就需要三十秒開機，現在依然是三十秒開機，&#xA;為什麼那個時候你不覺得慢？而現在就慢了？&lt;/p&gt;&#xA;&lt;p&gt;另一個例子，當大家爭先恐後的換裝 SSD 的時候，還在用 HDD 的電腦好像又老又慢一樣，&#xA;但是以前沒裝 SSD 的時候它也很快啊。&lt;/p&gt;&#xA;&lt;p&gt;電腦還是那臺電腦，它可能並沒有變慢，而是環境裡的其他電腦都變快了，是你的胃口變大了！&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;處理對策&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;既然是心理問題，那除了調適自己的心態外，就沒有什麼有效的對策了！&#xA;當然你可以不滿足於現狀，也可以汰舊換新，做這些事情本就沒有錯，&#xA;只是要記得是你自己的要求變高了，而不是電腦變弱了。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;原因windows-10-作怪&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/%E9%9B%BB%E8%85%A6%E6%84%88%E7%94%A8%E6%84%88%E6%85%A2%E8%A9%B2%E6%8F%9B%E9%9B%BB%E8%85%A6%E4%BA%86%E7%9C%9F%E7%9A%84%E5%97%8E/#%e5%8e%9f%e5%9b%a0windows-10-%e4%bd%9c%e6%80%aa&#34;&gt;原因：Windows 10 作怪&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;很多時候，電腦慢其實不是中毒、檔案太多、或是灰塵的問題，&#xA;而是在你電腦上運作的 Windows 10 在搞怪！&#xA;這不是我在說而已，Windows 10 的各種惡形惡狀早就被眾多的使用者們罵到臭頭了，&#xA;網路隨便搜尋就可以看到一大堆抱怨的、中鏢的、死掉的各種讓人不知該哭還是該笑的案例。&#xA;不過為了避免變成純粹的情緒話語，我還是稍微分析一點點為什麼 Windows 10 會導致你電腦變慢的原因。&lt;/p&gt;&#xA;&lt;p&gt;首先是大家合理懷疑微軟從 Windows 10 開始(或是從 Windows 8 就已經開始？)&#xA;移除了作業系統對傳統硬碟(HDD)的最佳化演算工作，就算沒有主動移除它們，也是刻意放爛它不管。&#xA;因為我們都看不到 Windows 內部的實做，所以可能沒有辦法確認這件事，&#xA;但是從大眾實際上的使用經驗可以支持這種懷疑&#xA;(&lt;a href=&#34;https://www.google.com/search?&amp;amp;q=windows+10+hdd+100%25&#34;&gt;https://www.google.com/search?&amp;amp;q=windows+10+hdd+100%25&lt;/a&gt;)。&#xA;比如說以往運作 Windows 7 的電腦都很正常順暢，&#xA;而在升級為 Windows 10 後就發生各種緩慢、卡頓，非要把硬碟換成 SSD 才會順，&#xA;我想這就是為什麼這幾年大家一窩蜂的去裝 SSD 的原因之一吧！&lt;/p&gt;&#xA;&lt;p&gt;Windows 10 還會在背景執行許多大量的運算，有時候會佔用過多的運算資源，&#xA;導致使用者的操作變得緩慢卡頓。&#xA;沒有人搞得清楚系統在背景到底實際在算什麼東西？&#xA;目前的推測是這些運算可能包含：&#xA;信任運算、使用者行為記錄分析與回傳、更新升級相關運算與下載、廣告投送…… 等。&#xA;導致時常讓電腦的處理器、記憶體、與網路等資源維持在高負載狀態，&#xA;有些功能(主要應該是更新升級相關)還會大量佔用電腦的儲存空間，&#xA;導致網路上常怨聲載道。&lt;/p&gt;&#xA;&lt;p&gt;另一個大問題是 Windows 10 的更新機制。&#xA;由於微軟的商業策略，Windows 10 設計上採用了無法關閉的強制更新機制，&#xA;時常自動在背景執行的更新工作是導致系統變慢、變得不穩定的最大因素，&#xA;也是網路上大家抱怨最嚴重的一塊。&#xA;此外，Windows 10 的自動更新也會導致我們在前面提到的應對對策無效。&#xA;比如說你想要繼續使用你五前年的電腦，依照我們的要點，你的電腦最好安裝運作五年前等級的軟體配置，&#xA;然而 Windows 的自動更新強迫你必須要隨時更新微軟的最新產品！&#xA;也就是說你的電腦會自動變慢(因為軟體負載愈來愈大)，&#xA;使得一段時日後你必須要對硬體裝置汰舊換新才能繼續負擔當時的軟體應用環境；&#xA;最終，人們被迫拋棄舊的電子設備，即便這些硬體裝置本身狀態良好！&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;處理對策&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;既然是萬惡的 Windows 10 造成的問題，只要不要使用它就好了，&#xA;當然前題是在你擁有其他選擇方案的情況下。&lt;/p&gt;&#xA;&lt;p&gt;如果老電腦以前是運作 Windows 7、XP 的，何必改裝成 Windows 10 呢？&#xA;而對於新的電腦設備，若您的技術能力允許，也許也可以考慮安裝 Windows 7 而非 Windows 10；&#xA;雖然這個方案可能沒辦法長長久久，&#xA;但至少在直到 2020 年微軟正式停止對 Windows 7 的維護之前，這都是一個確實可行且保險的方案是吧？&lt;/p&gt;&#xA;&lt;p&gt;當然，若您能夠直接捨棄整個 Windows 產品，改用其他作業系統方案的話，&#xA;也不失為一個更好的選擇！&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;總結&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/%E9%9B%BB%E8%85%A6%E6%84%88%E7%94%A8%E6%84%88%E6%85%A2%E8%A9%B2%E6%8F%9B%E9%9B%BB%E8%85%A6%E4%BA%86%E7%9C%9F%E7%9A%84%E5%97%8E/#%e7%b8%bd%e7%b5%90&#34;&gt;總結&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;一般使用者雖然沒有太多電腦相關知識，當電腦變慢時往往也不知道到底是什麼原因造成；&#xA;但綜和上面各點說明，我們其實可以得到一些簡短的準則。&#xA;只要依照這些建議的做法，老電腦應可以再用好久：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;電腦不要一直放著不關機，最好每日、或每週關機一次，&#xA;除非您使用的作業系統沒有開機愈久愈慢的問題。&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;li&gt;定期將電腦軟體系統移除乾淨後重新安裝，大約一年一次即可。&lt;/li&gt;&#xA;&lt;li&gt;定期清理灰塵髒汙、改善散熱條件，大約一年一次即可，除非您的工作環境落塵量大。&lt;/li&gt;&#xA;&lt;li&gt;能的話，不要安裝 Windows 10；可能的話，最好連 Windows 都不要用。&lt;/li&gt;&#xA;&lt;/ol&gt;</description>
    </item>
    <item>
      <title>我的電腦終於壽終正寢了</title>
      <link>http://www.huoschen.idv.tw/blog/miscellaneous/%E6%88%91%E7%9A%84%E9%9B%BB%E8%85%A6%E7%B5%82%E6%96%BC%E5%A3%BD%E7%B5%82%E6%AD%A3%E5%AF%A2%E4%BA%86/</link>
      <pubDate>Thu, 09 May 2019 22:00:48 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/miscellaneous/%E6%88%91%E7%9A%84%E9%9B%BB%E8%85%A6%E7%B5%82%E6%96%BC%E5%A3%BD%E7%B5%82%E6%AD%A3%E5%AF%A2%E4%BA%86/</guid>
      <description>&lt;p&gt;前幾天電腦突然就開不了機了，反正我還有其他膝上電腦可用，就沒有急著處理它。&#xA;昨天拿去送修，結果好悽慘，記憶體、顯示卡都有故障，然後主機板也被測出不穩定，時好時壞。&lt;/p&gt;&#xA;&lt;p&gt;這整個看起來就像是多重器官衰竭的病人一樣，已經不是換什麼零件可以再撐多久的事情了(或者說不值得)，&#xA;看起來就是真的走到生命盡頭的樣子。&#xA;其實我對這樣的結果並不感到意外，因為這臺電腦真的已經很老了。&lt;/p&gt;&#xA;&lt;p&gt;我記得大概是 2009 年，那年我還在念碩士，前一臺電腦壞掉後購買了這臺電腦，&#xA;算一算只要再過幾個月就滿十年了。&#xA;這是我第一臺花自己的錢買的電腦，&#xA;因為我當時的論文要計算 3D 流場，只靠實驗室發的電腦怕是來不及畢業，&#xA;所以這臺電腦砸了我大概 3、4 萬，配到以當時標準來看算蠻高檔的配置。&#xA;記得當時我堅持記憶體一定要插滿 4 GB&#xA;(32 bits 的 Windows XP 最多只支援 3.5 GB 的記憶體，所以 4 GB 就是頂了)&#xA;才勉強足以計算數量以百萬計的計算網格。&#xA;最終因為這臺電腦到底加速了多少論文時間可能已經難以計算，&#xA;不過它倒是出乎意料的變成陪伴我最久的單一電腦，久到所有聽聞的人都覺得不可思議！&lt;/p&gt;&#xA;&lt;p&gt;那個時候的我除了熱衷於寫程式寫遊戲以外，其實電腦相關基礎並不強，也不知道什麼遠端控制的東西，&#xA;所以常常是騎著摩托車在淡水後山的宿舍和學校的實驗室之間往返，現在回想起來也是很好笑。&#xA;多虧當時同宿舍的學長熱心幫我選單、組裝，還包辦了後面好幾次的維修，&#xA;讓我免去面對一堆看不懂的規格等各種問題，最終才能順利的組出這臺超強電腦。&#xA;之後的十年間，雖然換過幾次顯示卡、電源供應器，以及換過無數次的硬碟和光碟機等等，&#xA;但整臺主體和主要機件一直都是 2009 年的那些零件，完成了跨越十年的使用歷程。&lt;/p&gt;&#xA;&lt;p&gt;時至今日，面對這臺電腦走到生命的盡頭，我已不再如同從前那樣的徬徨焦慮，反而覺得坦然釋懷。&#xA;我想可能是因為我還有其他膝上電腦可以暫時頂替，加上我自己平常檔案備份都有做足，&#xA;所以才能這麼的保持平常心吧！&#xA;為此我要感謝我的老師，&#xA;因為長久以來所累積的知識學問和技術，才讓我今日能夠倚仗著充足完善的準備而能有恃無恐。&#xA;接下來又要開始尋覓新的電腦了，而這我想又會是一段挑戰的旅程……&lt;/p&gt;</description>
    </item>
    <item>
      <title>C 呼叫 C&#43;&#43; 函式的方法</title>
      <link>http://www.huoschen.idv.tw/blog/programming/c-calling-c&#43;&#43;-functions/</link>
      <pubDate>Mon, 08 Apr 2019 23:25:00 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/programming/c-calling-c&#43;&#43;-functions/</guid>
      <description>&lt;p&gt;由於 C 與 C++ 基於歷史因素、互相相容、以及地位相近的關係，&#xA;他們的程式碼很有機會會在一個專案中並存。&#xA;但畢竟兩者的差異還是有點大，於是在互相使用對方的東西的時候，有時候會遇到一些技術上的小麻煩，&#xA;這裡我就來解釋有關 C 語言程式碼要如何呼叫 C++ 函式的相關技巧。&lt;/p&gt;&#xA;&lt;p&gt;首先，為什麼我不關心 C++ 要如何呼叫 C 函式？這是因為這種案例幾乎不存在問題。&#xA;C++ 號稱是 C 的超集，C 有的東西絕大部分都被 C++ 支援，不用特別改變什麼，&#xA;最多就是把 name mangling 的部份小小宣告修飾一下就完事了，實在沒什麼好說的。&#xA;相反的，C++ 多出很多 C 所沒有的語法等特性，&#xA;所以在 C 一般來說是沒辦法去呼叫沒有經過一些特別處理的 C++ 函式的。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;概念原則&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/c-calling-c&amp;#43;&amp;#43;-functions/#%e6%a6%82%e5%bf%b5%e5%8e%9f%e5%89%87&#34;&gt;概念原則&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;C 與 C++ 基本上很多機制都還是完全相容的，&#xA;而 C 呼叫 C++ 函式所遭遇的困難追根究底其實就是以下兩點：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Name mangling 規則不同，所以無法找到 C++ 函式的符號。&lt;/li&gt;&#xA;&lt;li&gt;函式介面出現一些 C 所沒有支援的語法，&#xA;使得 C 編譯器無法辨認函式簽名、C 程式碼也無法提供所需的函式參數或呼叫方式。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;那麼解決的方法就是讓 C++ 模組提供一些符合純 C 要求的函式介面給 C 程式碼呼叫即可。&#xA;這裡注意我們不是要把 C++ 程式碼整個以純 C 語法改寫，&#xA;如果這樣做的話，又和苦用 C++ 來寫模組呢？&#xA;而且這樣的話，也無需使用 C++ 編譯器，那麼本文所探討的問題也就不存在了。&#xA;我們只需要在「C 編譯器看得到的地方」使用完全符合 C 語法的內容，&#xA;也就是只需&lt;strong&gt;提供符合 C 語法的函式介面，必要的時候增加一些包裝函式來轉換某些內容&lt;/strong&gt;即可！&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;呼叫單純普通的-c-函式&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/c-calling-c&amp;#43;&amp;#43;-functions/#%e5%91%bc%e5%8f%ab%e5%96%ae%e7%b4%94%e6%99%ae%e9%80%9a%e7%9a%84-c-%e5%87%bd%e5%bc%8f&#34;&gt;呼叫單純普通的 C++ 函式&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;假設我有一個 C++ 模組，裡面有一個函式：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;int AddValues(int a, int b)&#xA;{&#xA;    return a + b;&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;若在 C 程式裡呼叫它的話，可能會發生「undefined reference」連結錯誤，&#xA;這是因為 C 和 C++ name mangling 不同的緣故，所以找不到函式符號。&#xA;解決的方法就是加上 &lt;code&gt;extern &amp;quot;C&amp;quot;&lt;/code&gt; 來告訴 C++ 編譯器說這是一個 C 規格的函式，&#xA;讓 C++ 編譯器使用 C 的規則來看待它。&#xA;最後這個函式應該會變成下面這樣：&lt;/p&gt;&#xA;&lt;p&gt;標頭檔裡：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;// 因為 C 並沒有 extern &amp;quot;C&amp;quot; 這個關鍵字，在 C 編譯時反而會發生問題，&#xA;// 所以放了 __cplusplus 保護，好讓 C 編譯器看不到 extern &amp;quot;C&amp;quot; 的存在。&#xA;#ifdef __cplusplus&#xA;extern &amp;quot;C&amp;quot; {&#xA;#endif&#xA;&#xA;// 這裡可能還有很多別的函式宣告、型態宣告等等等等……&#xA;&#xA;int AddValues(int a, int b);&#xA;&#xA;// 這裡可能還有很多別的函式宣告、型態宣告等等等等……&#xA;&#xA;#ifdef __cplusplus&#xA;}   // extern &amp;quot;C&amp;quot;&#xA;#endif&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;程式碼檔裡：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;// 這裡一般就不用再寫上 extern &amp;quot;C&amp;quot;，因為編譯器已經從函式宣告那裡知道了這件事。&#xA;int AddValues(int a, int b)&#xA;{&#xA;    return a + b;&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;這樣，C 程式就可以順利的呼叫這個函式了。&lt;/p&gt;&#xA;&lt;p&gt;此外，使用 C 規則來處理函式就意味著一些 C++ 所支持的特性是無法被使用在這些 C 介面函式的，&#xA;若一不小心使用到這些語法特性，則可能會發生編譯錯誤。&#xA;這些無法被使用的特性有：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;同名函式重載(function overload)&lt;/li&gt;&#xA;&lt;li&gt;模版(template)&lt;/li&gt;&#xA;&lt;li&gt;名稱空間(namespace)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;呼叫包含常見-c-擴展型態參數的-c-函式&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/c-calling-c&amp;#43;&amp;#43;-functions/#%e5%91%bc%e5%8f%ab%e5%8c%85%e5%90%ab%e5%b8%b8%e8%a6%8b-c-%e6%93%b4%e5%b1%95%e5%9e%8b%e6%85%8b%e5%8f%83%e6%95%b8%e7%9a%84-c-%e5%87%bd%e5%bc%8f&#34;&gt;呼叫包含常見 C++ 擴展型態參數的 C++ 函式&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;在解決函式符號問題後，接下來會遇到的困難大概就是那些&#xA;在 C++ 程式裡經常出現的語法或經常傳遞的 C++ 物件了，比如說字串等。&#xA;這些東西都需要改寫為 C 所支援的寫法：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;預設參數&lt;/strong&gt;：&lt;/p&gt;&#xA;&lt;p&gt;C 不支援預設參數，請把它拿掉，然後每次呼叫的時候都老老實實的寫上全部的參數吧！&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;參考傳遞&lt;/strong&gt;：&lt;/p&gt;&#xA;&lt;p&gt;C++ 的參考型態函式參數可以節省許多賦值傳遞的開銷，&#xA;C 雖沒有參考型態，但有作用非常類似的指標，因此請把傳遞參考改成傳遞指標吧。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;字串與陣列&lt;/strong&gt;：&lt;/p&gt;&#xA;&lt;p&gt;嚴格來說，C++ 也沒有語法上的字串或陣列，只有標準程式庫提供的字串類別，&#xA;但是因為有些陣列、特別是字串實在是太常以類別物件的型態出現在函式參數裡了，&#xA;所以還是值得說明。&#xA;C 函式只能傳入指標型態的陣列，&#xA;所以請將參數裡的 &lt;code&gt;std::string&amp;amp;&lt;/code&gt; 或 &lt;code&gt;const std::string&amp;amp;&lt;/code&gt;&#xA;通通改成 &lt;code&gt;char*&lt;/code&gt; 或 &lt;code&gt;const char*&lt;/code&gt; 吧，&#xA;其他型態的陣列也請比照進行類似的變換。&#xA;如果需要傳出字串或陣列資料，則請比照 C 語言裡的常用通用方法！&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;如果你能夠改寫 C++ 函式的介面規格的話就直接改寫吧，這樣可以省去一個轉呼函式的開銷，&#xA;除了當別的 C++ 程式呼叫這個 C++ 函式時可能會稍微煩瑣一點以外。&#xA;而如果因為任何緣故不能夠直接改寫這個函式介面，那就需要再寫個包裝轉呼函式了，&#xA;下面以一個範例來說明使用轉呼函式包裝一個 C++ 函式的方法：&lt;/p&gt;&#xA;&lt;p&gt;標頭檔裡：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;#ifdef __cplusplus&#xA;&#xA;// 這是我們想要給 C 程式呼叫的 C++ 函式，&#xA;// 因為用了 __cplusplus 包裹起來，所以 C 編譯器是看不到它的。&#xA;int ShowName(const std::string &amp;amp;name, const std::string &amp;amp;family = &amp;quot;&amp;quot;);&#xA;&#xA;#endif  // __cplusplus&#xA;&#xA;#ifdef __cplusplus&#xA;extern &amp;quot;C&amp;quot; {&#xA;#endif&#xA;&#xA;// 這是實際提供給 C 程式的函式，用來包裝我們的 ShowName 函式。&#xA;// 注意我變換了名稱，以規避同名函式重載的問題。&#xA;int show_name(const char *name, const char *family);&#xA;&#xA;#ifdef __cplusplus&#xA;}   // extern &amp;quot;C&amp;quot;&#xA;#endif&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;程式碼檔裡：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;int ShowName(const std::string &amp;amp;name, const std::string &amp;amp;family = &amp;quot;&amp;quot;)&#xA;{&#xA;    std::string totalname = name + ( family.empty() ? &amp;quot;&amp;quot; : &amp;quot; &amp;quot; ) + family;&#xA;    std::cout &amp;lt;&amp;lt; &amp;quot;You are: &amp;quot; &amp;lt;&amp;lt; totalname &amp;lt;&amp;lt; std::endl;&#xA;    return totalname.length();&#xA;}&#xA;&#xA;int show_name(const char *name, const char *family)&#xA;{&#xA;    return ShowName(name, family);&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;呼叫包含類別型態參數的-c-函式&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/c-calling-c&amp;#43;&amp;#43;-functions/#%e5%91%bc%e5%8f%ab%e5%8c%85%e5%90%ab%e9%a1%9e%e5%88%a5%e5%9e%8b%e6%85%8b%e5%8f%83%e6%95%b8%e7%9a%84-c-%e5%87%bd%e5%bc%8f&#34;&gt;呼叫包含類別型態參數的 C++ 函式&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;有的時候我們的函式就是需要傳遞一些類別物件，這些物件可能是自訂的也可能是標準程式庫裡的，&#xA;而且這些物件可能不像字串那樣有標準通用的簡單等效形式，那要怎麼辦呢？&#xA;簡單的答覆就是，&lt;strong&gt;傳遞物件的指標就好了！&lt;/strong&gt;&#xA;C 語言支援指標，而指標的另一端可以是任何型態，就算是未知的型態也無妨。&lt;/p&gt;&#xA;&lt;p&gt;我們可以用指標型態簡單的解決參數傳遞問題，&#xA;所以真正的問題不在物件的傳遞上，而是在類別物件的擁有與管理上。&#xA;既然 C 不支援 C++ 的類別，又如何能夠知道類別的尺寸大小、該如何初始化、以及該如何銷毀等細節呢？&#xA;所以我們會需要同步包裝一些類別物件的建立與銷毀相關函式給 C 使用，&#xA;總之重點原則就是： &lt;strong&gt;C 只能透過指標經手並傳遞類別物件&lt;/strong&gt;。&#xA;下面以包裝一個需要接收 &lt;code&gt;std::map&lt;/code&gt; 型態菜單的餐點點單函式做為例子：&lt;/p&gt;&#xA;&lt;p&gt;標頭檔裡：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;#ifdef __cplusplus&#xA;&#xA;// 這是我們主要要包裝的函式。&#xA;void OrderDinner(const std::map&amp;lt;std::string,unsigned&amp;gt; &amp;amp;menu);&#xA;&#xA;#endif  // __cplusplus&#xA;&#xA;#ifdef __cplusplus&#xA;extern &amp;quot;C&amp;quot; {&#xA;#endif&#xA;&#xA;// 這裡為了節省一些其他的型態相關處理敘述，直接使用 void* 做為菜單物件的型態，&#xA;// 但在實際用途上我們應該為它定義一個合適的型態，&#xA;// 除了增加閱讀性以外，也讓編譯器能為我們進行型態檢查。&#xA;void order_dinner(const void *menu);&#xA;&#xA;// 因為 C 程式無法直接創建與使用類別物件，&#xA;// 所以要同時提供讓 C++ 程式代為執行這些工作的包裝函式。&#xA;void* create_my_menu(unsigned appetizer, unsigned main, unsigned dessert);&#xA;void release_my_menu(void *menu);&#xA;&#xA;#ifdef __cplusplus&#xA;}   // extern &amp;quot;C&amp;quot;&#xA;#endif&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;程式碼檔裡：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;void OrderDinner(const std::map&amp;lt;std::string,unsigned&amp;gt; &amp;amp;menu)&#xA;{&#xA;    std::cout &amp;lt;&amp;lt; &amp;quot;Your order list:&amp;quot; &amp;lt;&amp;lt; std::endl;&#xA;    for(auto iter = menu.cbegin(); iter != menu.cend(); ++iter)&#xA;        std::cout&#xA;            &amp;lt;&amp;lt; &amp;quot;* &amp;quot;&#xA;            &amp;lt;&amp;lt; iter-&amp;gt;first&#xA;            &amp;lt;&amp;lt; &amp;quot;: &amp;quot;&#xA;            &amp;lt;&amp;lt; iter-&amp;gt;second&#xA;            &amp;lt;&amp;lt; std::endl;&#xA;}&#xA;&#xA;void order_dinner(const void *menu)&#xA;{&#xA;    // 因為我們沒有額外處理型態，只簡單的用 void* 代表一切，&#xA;    // 所以這裡免不了需要一些比較難看的轉型工作，下面亦同。&#xA;    auto *instance =&#xA;        static_cast&amp;lt;const std::map&amp;lt;std::string,unsigned&amp;gt;*&amp;gt;(menu);&#xA;&#xA;    OrderDinner(*instance);&#xA;}&#xA;&#xA;void* create_my_menu(unsigned appetizer, unsigned main, unsigned dessert)&#xA;{&#xA;    auto menu = new std::map&amp;lt;std::string,unsigned&amp;gt;;&#xA;&#xA;    (*menu)[&amp;quot;appetizer&amp;quot;] = appetizer;&#xA;    (*menu)[&amp;quot;main&amp;quot;] = main;&#xA;    (*menu)[&amp;quot;dessert&amp;quot;] = dessert;&#xA;&#xA;    return menu;&#xA;}&#xA;&#xA;void release_my_menu(void *menu)&#xA;{&#xA;    auto *instance =&#xA;        static_cast&amp;lt;std::map&amp;lt;std::string,unsigned&amp;gt;*&amp;gt;(menu);&#xA;&#xA;    delete instance;&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;而在 C 程式裡，它可能會被這樣使用：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;void *menu = create_my_menu(3, 5, 7);&#xA;&#xA;order_dinner(menu);&#xA;&#xA;release_my_menu(menu);&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;呼叫-c-類別成員函式&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/c-calling-c&amp;#43;&amp;#43;-functions/#%e5%91%bc%e5%8f%ab-c-%e9%a1%9e%e5%88%a5%e6%88%90%e5%93%a1%e5%87%bd%e5%bc%8f&#34;&gt;呼叫 C++ 類別成員函式&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;由於 C 沒有類別，自然的也不知如何呼叫類別成員函式。&#xA;而解決方法也很簡單，按照前面的思路為所有需要的成員函式提供轉呼函式包裝即可，&#xA;這裡直接看範例。&lt;/p&gt;&#xA;&lt;p&gt;標頭檔裡：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;#ifdef __cplusplus&#xA;&#xA;// (提醒您，這個地方只有 C++ 看得到)&#xA;// 這是我們要提供給 C 程式使用的類別，包含幾個簡單的成員函式。&#xA;class Point&#xA;{&#xA;private:&#xA;    float x, y;&#xA;&#xA;public:&#xA;    Point(float x, float y) : x(x), y(y) {}&#xA;&#xA;public:&#xA;    void Set(float x, float y) { this-&amp;gt;x = x; this-&amp;gt;y = y; }&#xA;    float Abs() const { return sqrt(x*x + y*y); }&#xA;};&#xA;&#xA;#else   // __cplusplus&#xA;&#xA;// (提醒您，這個地方只有 C 看得到)&#xA;// 這裡是一個小技巧，在 C 程式下定義一個與我們的類別同名的結構別名。&#xA;// 至於結構的具體內容不重要，因為我們在 C 程式下只需要使用它的指標型態而已，&#xA;// 而與類別同名，可以讓我們的 C++ 程式不需要一堆醜陋的轉型。&#xA;typedef struct Point Point;&#xA;&#xA;#endif  // __cplusplus&#xA;&#xA;#ifdef __cplusplus&#xA;extern &amp;quot;C&amp;quot; {&#xA;#endif&#xA;&#xA;// 與前面的例子相同，我們亦需同步提供取得、和歸還類別物件的方法。&#xA;Point* point_create(float x, float y);&#xA;void point_release(Point *self);&#xA;&#xA;// 注意這裡又是一個小技巧，既然這些函式是成員函式的包裝，&#xA;// 我把類別物件的指標命名為 self 來類比 C++ 的 this 指標&#xA;// (因為 this 是 C++ 關鍵字而不能使用)，&#xA;// 並且我還把類別物件的指標都設為函式的第一個參數，以相似 C++ 成員函式的慣例。&#xA;// 雖然這些小地方的設定並不是必要的，但這麼做確實有助於閱讀理解，&#xA;// 特別是對於那些本來就熟悉 C++ 的人。&#xA;void point_set(Point *self, float x, float y);&#xA;float point_abs(const Point *self);&#xA;&#xA;#ifdef __cplusplus&#xA;}   // extern &amp;quot;C&amp;quot;&#xA;#endif&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;程式碼檔裡：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;Point* point_create(float x, float y)&#xA;{&#xA;    return new Point(x, y);&#xA;}&#xA;&#xA;void point_release(Point *self)&#xA;{&#xA;    delete self;&#xA;}&#xA;&#xA;void point_set(Point *self, float x, float y)&#xA;{&#xA;    self-&amp;gt;Set(x, y);&#xA;}&#xA;&#xA;float point_abs(const Point *self)&#xA;{&#xA;    return self-&amp;gt;Abs();&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;而在 C 程式裡，它可能會被這樣使用：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;Point *point = point_create(3, 7);&#xA;&#xA;point_set(point, 2, 6);&#xA;printf(&amp;quot;Point abstract value: %f\n&amp;quot;, point_abs(point));&#xA;&#xA;point_release(point);&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>在嵌入式裝置上使用 C&#43;&#43; 進行開發：G&#43;&#43; 實做篇</title>
      <link>http://www.huoschen.idv.tw/blog/programming/c&#43;&#43;-in-embedded-system---using-g&#43;&#43;/</link>
      <pubDate>Fri, 05 Apr 2019 09:00:00 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/programming/c&#43;&#43;-in-embedded-system---using-g&#43;&#43;/</guid>
      <description>&lt;p&gt;這篇是承接我之前的文章&#xA;「&lt;a href=&#34;http://www.huoschen.idv.tw/blog/programming/c&amp;#43;&amp;#43;-in-embedded-system---concept/&#34;&gt;在嵌入式裝置上使用 C++ 進行開發：概念篇&lt;/a&gt;」，&#xA;以實做的角度出發，提供使用 GNU G++ 為嵌入式裝置編寫 C++ 程式的方法。&lt;/p&gt;&#xA;&lt;p&gt;把 C++ 編譯器般上嵌入式的建置環境中大約需要以下步驟：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;關閉 C++ 編譯器的部份功能支援。&lt;/li&gt;&#xA;&lt;li&gt;避免使用某些成本較大的 C++ 特性。&lt;/li&gt;&#xA;&lt;li&gt;移除編譯器提供的 C++ 執行時期程式庫。&lt;/li&gt;&#xA;&lt;li&gt;解決因移除基礎程式庫後所缺失的某些必須之元件。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;關閉編譯器部份功能&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/c&amp;#43;&amp;#43;-in-embedded-system---using-g&amp;#43;&amp;#43;/#%e9%97%9c%e9%96%89%e7%b7%a8%e8%ad%af%e5%99%a8%e9%83%a8%e4%bb%bd%e5%8a%9f%e8%83%bd&#34;&gt;關閉編譯器部份功能&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;加入下列編譯選項以關閉 G++ 部份功能支援：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;-fno-exceptions&lt;/code&gt;&lt;/strong&gt;: 停用例外處理機制。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;-fno-rtti&lt;/code&gt;&lt;/strong&gt;:       停用 RTTI 機制。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;-nostdinc++&lt;/code&gt;&lt;/strong&gt;:     不搜尋 C++ 標準標頭檔，等同禁用 C++ 標準程式庫。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;避免使用部份功能&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/c&amp;#43;&amp;#43;-in-embedded-system---using-g&amp;#43;&amp;#43;/#%e9%81%bf%e5%85%8d%e4%bd%bf%e7%94%a8%e9%83%a8%e4%bb%bd%e5%8a%9f%e8%83%bd&#34;&gt;避免使用部份功能&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;除了那些由編譯器支援的執行時期機制必須要關閉，&#xA;否則就算你不去使用它也不能避免它們對程式的影響之外，&#xA;有一些其他高成本的功能是編譯時期完成的，只要不去使用它們就沒事了，&#xA;如模版與多重繼承等等。&lt;/p&gt;&#xA;&lt;p&gt;除了自己小心不要寫上包含這些功能的程式碼之外，&#xA;如果您使用的 G++ 在版本 6 以上的話，G++ 還提供一些編譯警告的選項，&#xA;讓它在發現你一不小心使用這些功能的時候給你一些警告。&#xA;請加入下列編譯選項以開啟這些警告訊息：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;-Wtemplates&lt;/code&gt;&lt;/strong&gt;:            對模版的使用發出警告。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;-Wnamespaces&lt;/code&gt;&lt;/strong&gt;:           對名稱空間的使用發出警告。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;-Wmultiple-inheritance&lt;/code&gt;&lt;/strong&gt;: 對多重繼承的使用發出警告。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;-Wvirtual-inheritance&lt;/code&gt;&lt;/strong&gt;:  對虛擬繼承的使用發出警告。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;移除-c-程式庫&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/c&amp;#43;&amp;#43;-in-embedded-system---using-g&amp;#43;&amp;#43;/#%e7%a7%bb%e9%99%a4-c-%e7%a8%8b%e5%bc%8f%e5%ba%ab&#34;&gt;移除 C++ 程式庫&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;想要程式不連結 C++ 相關程式庫有一個很簡單的做法：把所使用的&lt;strong&gt;連結器從 G++ 改成 GCC 即可！&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;G++ 和 GCC 是一樣的，你甚至可以拿 GCC 來編譯 C++ 程式碼，&#xA;G++ 比起 GCC 的不同就是會主動多連結一些 C++ 基礎程式庫，&#xA;所以你其實也可以顯式的加上 C++ 基礎程式庫的連結選項來使用 GCC 編譯與連結 C++ 程式，&#xA;例如：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;gcc main.cpp -lstdc++&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;這個例子只是在說明，GCC 和 G++ 在經過一些選項配置之後完全可以互換使用。&#xA;因此最終，使用 GCC 來連結程式就可以剔除與 C++ 程式庫的連結。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;解決缺失元件問題&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/c&amp;#43;&amp;#43;-in-embedded-system---using-g&amp;#43;&amp;#43;/#%e8%a7%a3%e6%b1%ba%e7%bc%ba%e5%a4%b1%e5%85%83%e4%bb%b6%e5%95%8f%e9%a1%8c&#34;&gt;解決缺失元件問題&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;當移除了 C++ 程式庫後，可能會讓我們遭遇不少「undefined reference」的問題，&#xA;這些問題大約可區別為兩種類型：&#xA;第一種狀況是可能你的程式碼、或你所使用的第三方程式庫呼叫了一些需要 C++ 程式庫支援的功能，&#xA;比方說 &lt;code&gt;cout&lt;/code&gt;。&#xA;對於這種錯誤的處理方式就是拿掉或改寫這些程式碼，畢竟我們的本意就是要剪裁一些 C++ 的功能是吧？&#xA;如果是第三方程式庫的話，那可能就表示這個程式庫不適合嵌入式執行環境，請換掉它吧。&lt;/p&gt;&#xA;&lt;p&gt;至於第二種狀況則是 C++ 程式庫內真的包含一些需要且必須的、非常基本的功能，&#xA;如果我們真的要去避免使用這些功能的話，可能會失去我們當初想要用上 C++ 的初衷。&#xA;這種情況下就需由我們自行實做相關的功能來補上，&#xA;也許我們把它包裝成一個靜態程式庫，然後給它命名為 &lt;code&gt;libMyTinyStdCpp.a&lt;/code&gt;？&lt;/p&gt;&#xA;&lt;p&gt;以下列舉這些可能會遇到的錯誤，並說明需要由我們自行實現的功能：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;undefined reference to &amp;ldquo;&lt;code&gt;operator new(size_t)&lt;/code&gt;&amp;rdquo;&lt;/strong&gt; or&lt;br/&gt;&#xA;&lt;strong&gt;undefined reference to &amp;ldquo;&lt;code&gt;operator delete(void*)&lt;/code&gt;&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;這個錯誤表示你的程式碼裡使用了 &lt;code&gt;new&lt;/code&gt; 和 &lt;code&gt;delete&lt;/code&gt; 來建立物件，而連結器找不到對應的函式&#xA;(C++ 程式庫被我們取消了，還記得嗎？)。&#xA;捨棄 &lt;code&gt;new&lt;/code&gt;/&lt;code&gt;delete&lt;/code&gt; 不用而改用 &lt;code&gt;malloc&lt;/code&gt;/&lt;code&gt;free&lt;/code&gt; 不能解決我們的問題，&#xA;因為它們不會去執行物件的建構子與解構子；&#xA;然而類別自動建構解構也是我們之所以想要用上 C++ 的一大原因，&#xA;若捨棄 &lt;code&gt;new&lt;/code&gt;/&lt;code&gt;delete&lt;/code&gt; 不用則我們勢必還要為物件的建構解構花費更大的力氣，&#xA;因此迴避這兩個運算子的做法並不實際。&lt;/p&gt;&#xA;&lt;p&gt;為此，我們必須要自己提供 &lt;code&gt;new&lt;/code&gt; 和 &lt;code&gt;delete&lt;/code&gt; 運算子的函式實做，&#xA;最簡單的方法就是製做一個轉呼叫 &lt;code&gt;malloc&lt;/code&gt;/&lt;code&gt;free&lt;/code&gt; 的函式：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;  void* operator new(size_t n)&#xA;  {&#xA;      void *p = malloc(n);&#xA;&#xA;      /*&#xA;       * 這裡記得檢查 p 為 NULL 的情況並做出處理，&#xA;       * 由於通常例外處理機制也被我們停用了，因此不適合拋出例外，&#xA;       * 建議可直接回報錯誤並終止程式。&#xA;       */&#xA;      if( !p ) ABORT_AND_REPORT_ERROR();&#xA;&#xA;      return p;&#xA;  }&#xA;&#xA;  void operator delete(void *p)&#xA;  {&#xA;      free(p);&#xA;  }&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;上面這個範例直接簡單的為所有記憶體的分配釋放需求轉呼叫 C 的對應函式，&#xA;而若你基於任何目的需要自行管理記憶體，比方說想要控制記憶體碎片的發展，&#xA;則可以把這兩個函式替代為你自己的實做版本。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;undefined reference to &amp;ldquo;&lt;code&gt;__cxa_pure_virtual&lt;/code&gt;&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;這個錯誤表示你的程式裡面有使用到純虛函式。&#xA;在執行時期，當遇到呼叫一個未存在實做的虛擬函式時，&#xA;&lt;code&gt;__cxa_pure_virtual&lt;/code&gt; 便會被呼叫。&#xA;由於我們想要導入 C++ 應該也是看上了他的多型特色，&#xA;因此迴避純虛函式的做法顯然也不實際。&lt;/p&gt;&#xA;&lt;p&gt;由於編譯器在編譯時期就會阻擋想要建構未實做完成的類別實體的程式碼通過編譯，&#xA;因此 &lt;code&gt;__cxa_pure_virtual&lt;/code&gt; 這個檢查函式其實只有在非常不尋常的時候才會被執行，&#xA;那麼我們就可以很簡單的提供一個實做版本，直接列印錯誤訊息並終止程式，&#xA;好讓開發人員進行除錯：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;  extern &amp;quot;C&amp;quot; void __cxa_pure_virtual()&#xA;  {&#xA;      ABORE_AND_REPORT_ERROR();&#xA;  }&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;基本就這樣，如果還有其它的缺失的話，等我發現再補上。&lt;/p&gt;</description>
    </item>
    <item>
      <title>在嵌入式裝置上使用 C&#43;&#43; 進行開發：概念篇</title>
      <link>http://www.huoschen.idv.tw/blog/programming/c&#43;&#43;-in-embedded-system---concept/</link>
      <pubDate>Sat, 30 Mar 2019 16:26:29 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/programming/c&#43;&#43;-in-embedded-system---concept/</guid>
      <description>&lt;p&gt;雖然我比較喜好 C 語言，&#xA;但從我轉換跑道進入嵌入式開發以來，卻常常壓抑不住想要把 C++ 程式碼放進產品專案裡面的想法！&#xA;當然我會有這樣的想法是有原因的。&lt;/p&gt;&#xA;&lt;p&gt;我常想在嵌入式環境上使用 C++ 開發程式，哪怕只是其中一部份的程式碼也好！&#xA;這個想法常常涌上我的心頭，特別是當我埋首在複雜到快到天上的程式碼中的時候，&#xA;只是礙於一些行規而遲遲沒有付諸行動，現在想想真是不知道當時在堅持什麼啊！&#xA;總之，接下來就要分享一些我在這方面上面的想法。&#xA;而這篇文章也比較偏重關於想法、概念的東西，至於一些技術細節就留待之後再做詳解。&lt;/p&gt;&#xA;&lt;p&gt;(一些技術細節請參考&#xA;「&lt;a href=&#34;http://www.huoschen.idv.tw/blog/programming/c&amp;#43;&amp;#43;-in-embedded-system---using-g&amp;#43;&amp;#43;/&#34;&gt;在嵌入式裝置上使用 C++ 進行開發：G++ 實做篇&lt;/a&gt;」&#xA;與&#xA;「&lt;a href=&#34;http://www.huoschen.idv.tw/blog/programming/c-calling-c&amp;#43;&amp;#43;-functions/&#34;&gt;C 呼叫 C++ 函式的方法&lt;/a&gt;」&#xA;)&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;嵌入式裝置上的困難&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/c&amp;#43;&amp;#43;-in-embedded-system---concept/#%e5%b5%8c%e5%85%a5%e5%bc%8f%e8%a3%9d%e7%bd%ae%e4%b8%8a%e7%9a%84%e5%9b%b0%e9%9b%a3&#34;&gt;嵌入式裝置上的困難&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;在說 C++ 之前，先來了解一下在嵌入式裝置上開發程式到底都有什麼困難？&#xA;這樣才能清楚的知道我們要面對的是什麼問題。&lt;/p&gt;&#xA;&lt;p&gt;在一般的 PC 環境上，使用 C++ 開發程式並沒有什麼太多的問題，除非你是要和 Linus Torvalds 共事！&#xA;但在嵌入式裝置上，由於硬體尺寸、價格、耗電等各種要求使得裝置的硬體資源可能相當拮据，&#xA;而這成為了幾乎所有開發瓶頸的根本問題來源：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;記憶體容量低&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;以目前來說，業界常見的嵌入式裝置裡能夠使用的記憶體大約在數十 MB 左右，&#xA;有些特別便宜小巧的單晶片甚至只有數百位元組。&#xA;因此記憶體的使用錙銖必較，像 Java 這種採用動態記憶體配置和垃圾蒐集機制的怪獸&#xA;便不太適合使用在這種場合。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;儲存空間容量低&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;不像 PC 一般都把檔案存放在硬碟，嵌入式裝置可以用來儲存資料的裝置通常是像&#xA;SPI flash 或 EEPROM 之類，其容量通常約在十來 MB 到數百 KB 之間。&#xA;這代表你沒有空間亂塞一堆檔案，不能肆無忌憚打上龐大的程式庫，&#xA;也不能寫太多程式碼，否則編譯出來的程式會大到燒不進去！&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;運算效能低&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;目前常見嵌入裝置的 CPU 時脈約在數百 MHz 左右，運算速度不快。&#xA;我曾經玩過一個時脈大約 200 MHz 的設備，使用 OpenSSL 連接一個網站&#xA;直到 SSL 交握完成竟然要花費一分多鐘！&#xA;後來改用其他比較講究效能的程式庫才把連線時間降低到可接受的程度。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;軟體環境功能少&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;比較大型的嵌入式裝置一般使用極度裁剪過的 Linux 核心，&#xA;所以可能會缺少一些平常覺得很普通的功能，&#xA;比如說網路功能、檔案系統支援、時區、以及其他平常可能蠻好用的一些工具程式等等。&#xA;當然這也是為了減少系統體積而做出的刪減需求，但確實在某些時候會讓開發除錯上比較不方便。&#xA;還有一些裝置連作業系統都放不下，所以什麼功能都要自己來，&#xA;光是要做出 TCP/IP 網路就可以先折騰好幾個三天三夜！&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;當然，我上面描述的嵌入式裝置是指大部份可用在商業產品上面的嵌入式裝置，&#xA;而不是像樹莓派這種擁有超高硬體資源的東西。&#xA;有些裝置如樹莓派等，雖名曰嵌入式裝置，&#xA;但其上之作業環境與軟硬體資源已經和一般桌上電腦沒有太多不同，&#xA;有些裝置甚至連 Windows 10 都可以安裝使用。&#xA;對於這樣效能強大的裝置，基本上完全沒有必要去糾結 C 和 C++ 的差異，&#xA;就算想要用 Java 還是 Python 之類的東西來開發應用，我想也都不是什麼問題了！&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;為什麼一般不喜歡在嵌入式裝置上使用-c&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/c&amp;#43;&amp;#43;-in-embedded-system---concept/#%e7%82%ba%e4%bb%80%e9%ba%bc%e4%b8%80%e8%88%ac%e4%b8%8d%e5%96%9c%e6%ad%a1%e5%9c%a8%e5%b5%8c%e5%85%a5%e5%bc%8f%e8%a3%9d%e7%bd%ae%e4%b8%8a%e4%bd%bf%e7%94%a8-c&#34;&gt;為什麼一般不喜歡在嵌入式裝置上使用 C++？&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;在產業界確實一般不常見、或者內規不允許在嵌入式裝置上寫 C++ 程式，大約有幾個原因：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;C++ 性能不佳&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;「C++ 程式通常執行上的效能比 C 差得多、記憶體也用得兇。」&lt;/p&gt;&#xA;&lt;p&gt;這句話其實既對也不對！&#xA;反駁的人常常會說 C++ 幾乎完全相容於 C，C 能使用的寫法沒道理在 C++ 沒辦法寫，&#xA;那麼編譯出來的不管是效能、記憶體使用、或是程式大小等等不應該與 C 有別，&#xA;只有可能是寫程式的人功力的問題！&#xA;這些理由是確實的，也是為什麼我可以在嵌入式裝置寫 C++ 的最大原因。&lt;/p&gt;&#xA;&lt;p&gt;但另一方面，寫 C++ 不就是為了 C++ 一大堆語法上的方便、&#xA;以及豐富好用的標準程式庫元件比如像是種類眾多的容器嗎？&#xA;如果我使用 C++ 編譯器，卻寫的全是純 C 的東西，那又何必呢？&#xA;這樣我直接使用 C 編譯器不是更輕便？&#xA;因此我也讚同 C++ 在一般的應用場景下會比 C 來的肥又慢這種說法。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;業界缺乏熟練 C++ 的專業人員&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;雖然 C++ 也算歷史悠久、也不是太冷門的語言，但觀察臺灣在需要嵌入式開發的製造業裡面，&#xA;確實少見熟悉 C++ 與近代程設概念如物件導向和設計模式等的開發人員。&#xA;這些研發人員多是從電子電機、單晶片程式等一路學過來的人，&#xA;雖在電子軟硬體方面擁有難以取代的專業知識，卻顯少接受過純軟體知識概念上的教育，&#xA;導致普遍缺乏比較花俏現代的高階語言和其他軟體技能。&#xA;在這種環境下，有時並不是 C++ 真的不好，而是如果真的使用了 C++ 的話，&#xA;會讓一票人難以閱讀理解，後續維護上也會存在困難。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;缺乏 C++ 編譯器&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;有時候無法使用 C++ 並不是什麼其他的問題，而是開發環境就沒有 C++ 編譯器可以使用！&#xA;嵌入式開發環境千千萬萬種，並不是所有的方案都有 Linux &amp;amp; G++ 方案，&#xA;或者是 C++ 編譯器是選用工具且價格高，比如說 Keil 的工具等。&#xA;但是遇到這種狀況其實很好解決，因為你根本就沒有 C++ 可以用，&#xA;所以就不用糾結了，趕快回去想辦法用好 C 編譯器吧！&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;為什麼想要在嵌入式裝置上使用-c&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/c&amp;#43;&amp;#43;-in-embedded-system---concept/#%e7%82%ba%e4%bb%80%e9%ba%bc%e6%83%b3%e8%a6%81%e5%9c%a8%e5%b5%8c%e5%85%a5%e5%bc%8f%e8%a3%9d%e7%bd%ae%e4%b8%8a%e4%bd%bf%e7%94%a8-c&#34;&gt;為什麼想要在嵌入式裝置上使用 C++&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;既然 C 語言可用且被廣泛使用，又為何想要在嵌入式裝置上面使用 C++ 程式呢？&#xA;簡單一句話總結就是現在電子裝置產品功能愈來愈複雜多樣的緣故！&lt;/p&gt;&#xA;&lt;p&gt;因為產品需求愈來愈豐富多變，產品程式碼也就愈來愈複雜，&#xA;迫切需要導入物件導向等設計方法才能妥善應付現代商場所需要的變化，&#xA;而物件導向正是 C 語言的硬傷。&#xA;當然，並不是無法使用 C 語言寫作物件導向式程式，&#xA;最經典的案例大概就是 GTK+ 的程式碼，其使用各種技巧，&#xA;使得以 C 語言實做的 GTK+ 能擁有各種物件導向語言的特性。&#xA;然而實用層面上，簡單的類別封裝還好處理，我本人一直以來也都使用了這些技巧，&#xA;可是&lt;strong&gt;一碰到多型就完蛋了！&lt;/strong&gt;&#xA;你看看那些用 C 語言模擬虛函式、模擬繼承、處理父類別轉子類別的轉型方法，&#xA;只能用一句話來形容，就是複雜又難以維持！&lt;/p&gt;&#xA;&lt;p&gt;那麼與其用 C 語言來硬生生的模擬這些 C++ 特性 &amp;ndash; 特別是多型的特性，&#xA;不只製做複雜，編寫完後其他人也難以理解維護，反而容易成為蟲子的溫床，&#xA;這時直接改用 C++ 來寫反而是更好的解決方案，並且效能還更好！&#xA;畢竟在物件導向特性橫豎都需要的情況下，&#xA;從應用程式碼手工模擬的方式要怎麼樣才能比從編譯器層面實做來的更好？&lt;/p&gt;&#xA;&lt;p&gt;雖然討論的是嵌入式領域，但到這裡，我們還是要再進一步的限縮我們所討論的嵌入式裝置範圍。&#xA;我們要把那些計算資源極度匱乏的裝置排除在外，&#xA;比如那些記憶容量只有數百到數千位元組的單晶片裝置等。&#xA;因為在這些裝置上，即便用 C 語言來寫程式也是非常艱困的，&#xA;也許你更因該考慮在部份的程式碼上使用組合語言。&#xA;再者使用這種類型硬體的場合多半也不會拿來做什麼太過於複雜的事情，因此沒有需求。&#xA;而另一個極端，就是那些雖名為嵌入式卻擁有可與 PC 相比之計算能力的裝置，也已被我們早先排除，&#xA;因為在這種裝置上已經不需要去糾結 C 與 C++ 的差異了！也許你更應該考慮使用 Android + Java！&#xA;最終，這次主題所聚焦的嵌入式裝置，&#xA;大約就是那些記憶容量以 MB 計、CPU 時脈約在數百 MHz，&#xA;可能包含一些週邊設備如網路與串列埠的，常被使用在各種終端設備上的嵌入式裝置。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;c-有什麼不同&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/c&amp;#43;&amp;#43;-in-embedded-system---concept/#c-%e6%9c%89%e4%bb%80%e9%ba%bc%e4%b8%8d%e5%90%8c&#34;&gt;C++ 有什麼不同？&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;既然我考慮在通常使用 C 語言的地方使用 C++，&#xA;那麼就需要去分析 C++ 與 C 相比到底有哪些不同，這樣我們才能清楚到底要解決或迴避哪些問題？&#xA;因此下面的差異比較將會集中在那些會對於效能與空間造成影響的觀點層面。&lt;/p&gt;&#xA;&lt;p&gt;首先我們先來看看，那些一般可能感覺上有差，然而實際上無關緊要的部份：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;C++ 類別&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;C++ 的類別(class)其實與 C 的結構(struct)是一模一樣的東西，對於編譯後的結果沒有任何影響。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;C++ 成員權限控管&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;C++ 類別內的權限控管關鍵字如 public、private、和 protected 等，&#xA;全都是編譯時期由編譯器來過濾的東西，所以依然沒有任何影響。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;C++ 成員函式&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;C++ 類別成員函式實際上也與 C 函式完全一樣，&#xA;函式對類別的綁定也是編譯時期的工作，不影響編譯後的成品。&#xA;唯一的不同在於成員函式多了一個參數，用來隱式傳遞物件實體指標，&#xA;然而使用 C 語言寫的函式也同樣需要傳遞結構指標，所以其實沒有太多差別。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;C++ 同名函式重載&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;C++ 的同名函式重載是在編譯時期由編譯器處理的，&#xA;編譯後的每個函式其實都會變成名稱不一樣的普通函式，所以沒有任何影響。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;C++ 函式參數預設值&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;C++ 支援的函式參數預設值一樣是編譯時期處理完畢的東西，所以沒有任何影響。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;C++ 名稱空間&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;C++ 的名稱空間亦為編譯時期由編譯器所控管的機制，所以沒有任何影響。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;接下來再看看那些實際上真的有些不同，只是其效果不一定造成太大影響的部份：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;虛擬函式&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;虛擬函式主要造成的影響是關於執行效能的部份，&#xA;虛擬函式的呼叫比起一般函式還多了一個虛擬函式表查詢工作，確實會讓函式的呼叫慢了點。&#xA;並且因為虛擬函式是執行時期的動態係結函式，&#xA;所以編譯器可能比較難在這上面去做比較有效的最佳化行為，&#xA;沒辦法事先進行函式展開、函式呼叫濃縮精減等處理。&#xA;但如果把必須使用物件導向與多型的程式設計做為前提的話，&#xA;比起手工自製的基於函式指標的虛擬函式表模擬來說，C++ 原生的機制顯然更有效率且更不易出錯！&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;類別建構子與解構子&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;C++ 類別支援建構與解構函式的呼叫，&#xA;好處是讓人在使用類別的時候，可以少費心在關於物件生命週期的維護上；&#xA;而壞處就是編譯器會到處在程式碼安插建構和解構呼叫，使得程式碼尺寸些許膨脹。&#xA;但在絕大部份的應用環境裡，這一點程式碼膨脹通常都應該還是在可接受的範圍內！&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;類別繼承&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;C++ 的類別繼承看起來和 C 的結構嵌套是一樣的，但若再加上建構子與解構子的效應那就不一樣了！&#xA;比如一個擁有十個父類別的類別，那麼它在建構或解構的時候，&#xA;就可能要呼叫十次的建構或解構函式！&#xA;當然，一個嵌套了十層的 C 結構很可能也會需要在它的生命週期維護上一層一層去做處理，&#xA;所以繼承與建構解構所造成的影響通常還是表現在程式碼膨脹上，而非效能表現上。&lt;/p&gt;&#xA;&lt;p&gt;然而多重繼承的情況會讓上述問題更加惡化，此外還附贈讓程式的行為變得更不穩定而難以預測掌握！&#xA;後面這部份嚴格上不能說是 C++ 的錯，&#xA;但是 C++ 那公認超級複雜的繼承相關規則與行為讓編譯器不容易做得妥善。&#xA;即便拋開編譯器的問題，產業界也少有人能夠完整掌握 C++ 的各種規則和例外，&#xA;綜合因素使得應用了多重繼承技術的程式碼容易出現一些意料之外的行為，&#xA;而這又不是嵌入式應用所樂見的！&lt;/p&gt;&#xA;&lt;p&gt;可是解決的方法也很簡單，不要使用多重繼承就好了！&#xA;至少到目前為止會複雜到需要動用多重繼承的應用多為 GUI 框架，&#xA;然而依據不可靠的經驗顯示，能夠大玩特玩 GUI 的裝置基本上硬體資源是相對充足得多的！&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;運算子重載&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;C++ 允許運算子重載，這會使得有一些情況下的運算子其實是函式呼叫，效能會差。&#xA;這嚴格說起來也不能算是運算子重載的錯，因為對於一些本就不單純的操作，&#xA;就算用 C 來寫大概也免不了需要函式呼叫，使用運算子重載只能算是語法糖而已，&#xA;並不能算是拉低效能的元兇。&lt;/p&gt;&#xA;&lt;p&gt;運算子重載真正可怕的地方在於他會隱藏複雜度，&#xA;使得一些像是 &lt;code&gt;a + b&lt;/code&gt; 這種看上去很單純的操作其實可能背後一點也不單純，&#xA;但它的複雜性卻容易在語法糖的表面下被忽略掉，使得你的程式莫名其妙的慢了下來！&lt;/p&gt;&#xA;&lt;p&gt;結論是，運算子重載本身在程式編譯結果上並沒有壞的影響，使用得當的話可以讓你的程式更簡單；&#xA;它的壞處是表現在容易迷惑人心上面，讓你不自覺你的程式其實很複雜，&#xA;因此請小心使用！&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;終於來到重頭戲！&#xA;接下來列舉的就是那些真正成為關鍵因素的重大差異：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;模版&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;模版的使用很容易造成程式碼的膨脹，因為它等於是到處在各個檔案裡進行程式碼展開，&#xA;尤其是如果 C++ 程式碼裡面使用了標準程式庫裡的各種模版的話，絕對會造成程式碼大量膨脹，&#xA;因此有必要禁止使用模版相關功能。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;C++ 執行時庫&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;C++ 執行時期程式庫的作用就和 C 執行時庫一樣，用來提供一些程式語言的基楚功能，&#xA;其實應該沒什麼問題，但差就差在 C++ 執行時庫通常體積龐大！&#xA;以我曾經手過的一臺機器為例，C++ 的程式庫檔案(libstdc++.so) 就有 4.9 MB 大，&#xA;而 C 的程式庫檔案(libgcc_s.so) 只有 1.3 MB，&#xA;因此若能夠移除 C++ 執行時庫的話，會給原來就很拮据的儲存空間帶來大福音！&lt;/p&gt;&#xA;&lt;p&gt;當然，移除了 C++ 執行時庫就代表了很多 C++ 的原生功能無法使用，&#xA;比如說標準程式庫的全部功能、以及一些如例外和 RTTI 等 C++ 執行期機制。&#xA;但是這些功能我們絕大部分可以用 C 標準程式庫的功能、或代用寫法來替代，所以問題不大，&#xA;只要改變寫作習慣即可。&#xA;畢竟在導入 C++ 之前，我們已經一直使用 C 相關的習慣用的很嫻熟了不是？&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;例外機制&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;C++、以及許多曾借鑑 C++ 的現代程式語言都存在例外拋接這種錯誤傳遞機制，&#xA;這種機制好用歸好用，但在嵌入式裝置上就會明顯的拖慢程式的效能，&#xA;並且例外傳遞機制通常需要依賴 C++ 執行時庫的支援。&#xA;因此需要禁用 C++ 的例外傳遞機制，改用 C 風格的傳統錯誤傳遞機制如 error code 等；&#xA;最多就是使用 setjmp/longjmp 來模擬，&#xA;不過要記得在 longjmp 的過程並不會自動解構需要解構的物件！&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;RTTI&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;RTTI 是另一個 C++ 的基本功能，它實做了如父類別轉子類別這種時機所需要的型別檢查，&#xA;但顯然這種執行時期的檢查工作會拖慢程式效能，並且這種機制也會需要依賴 C++ 執行時庫。&#xA;然而停用 RTTI 機制的副作用不大，動態轉型依然還是可以繼續轉，&#xA;只是程式不會再幫我們檢查型別，需要依賴程設人員確保這些型態轉換是沒有問題的！&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;記憶體碎片&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;C++ 寫出來的程式常頻繁使用 heap 空間，衍生記憶體碎片化的問題，&#xA;尤其在記憶體資源缺乏的嵌入式裝置上更顯嚴重！&lt;/p&gt;&#xA;&lt;p&gt;雖然嚴格說起來，這並不是 C++ 的問題，&#xA;因為你完全可以在 C++ 程式裡按傳統的路子把東西建立在 stack 或 global 空間上，&#xA;但是寫 C++ 程式若不使用 heap 空間的話，使用 C++ 的意義就低很多很多了；&#xA;畢竟你會想要在嵌入式裝置上使用 C++，大概九成五就是想要使用 C++ 的多型多態特性是吧？&#xA;而多型物件若不是建立在 heap 上面的話，雖並不是寫不出來，&#xA;但你看看那寫出來的各種物件管理工作會長成什麼妖豔的樣子？&#xA;這就是為什麼我會說 C++ 程式在嵌入式裝置上無法避免記憶體碎片化的問題。&lt;/p&gt;&#xA;&lt;p&gt;當然緩解這問題的方法也不是沒有的！&#xA;除了儘量不進行不必要的 heap allocation、和加大記憶體空間之外，&#xA;也可以透過自行實做 heap 分配邏輯，將不同的記憶體需求配置在不同的記憶體區段上，&#xA;緩解碎片化的問題。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;與 C 程式互相呼叫&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;既然您在思考在產品裡使用 C++ 的可能性，那通常表示您的產品目前都是使用 C 開發的吧？&#xA;那麼除非您打算全部翻掉改使用 C++ 重寫(想都知道不可能)，&#xA;否則一定是想要把一部份的程式碼用 C++ 改寫對吧？&#xA;這樣就會需要面對 C 程式碼和 C++ 程式碼互相呼叫的問題了。&lt;/p&gt;&#xA;&lt;p&gt;C++ 呼叫 C 函式通常沒有什麼問題，畢竟 C++ 號稱是 C 的超集；&#xA;可是反過來，若 C++ 被用來改寫一些底層模組，那上層的 C 程式要怎麼呼叫它們呢？&#xA;這就會需要去製做一些 wrapper 函式、甚至可能需要建立一些 wrapper 物件！&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;解決方案總結&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/c&amp;#43;&amp;#43;-in-embedded-system---concept/#%e8%a7%a3%e6%b1%ba%e6%96%b9%e6%a1%88%e7%b8%bd%e7%b5%90&#34;&gt;解決方案總結&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;最後來簡單整理一下為了在嵌入式裝置上使用 C++ 編寫程式，建議進行哪些修改調整：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;儘量減少、或最好不要使用模版的寫法。&lt;/li&gt;&#xA;&lt;li&gt;不要使用多重繼承與虛擬繼承。&lt;/li&gt;&#xA;&lt;li&gt;移除 C++ 執行時庫，&#xA;不要使用 C++ 標準函式庫的功能，改使用 C 標準函式庫或其他程式庫的功能來替代。&lt;/li&gt;&#xA;&lt;li&gt;關閉編譯器對例外機制的支援，改用 error code 或 setjmp/longjmp 或其他傳統的錯誤傳遞機制。&lt;/li&gt;&#xA;&lt;li&gt;關閉編譯器對 RTTI 的支援。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;概念上就是這樣，然後就可以盡情的使用 C++ 在嵌入式裝置上奔馳了！&lt;/p&gt;&#xA;&lt;p&gt;其實從另一個角度來解釋也是可以的：&#xA;我們的整份程式碼、整個專案依然固守著 C 語言的一切，只僅僅取用了 C++ 的類別和多型的特性，&#xA;好讓一些複雜的部份變得簡單！&lt;/p&gt;</description>
    </item>
    <item>
      <title>我推薦的程式設計命名風格(C&amp;C&#43;&#43;)</title>
      <link>http://www.huoschen.idv.tw/blog/programming/%E6%88%91%E6%8E%A8%E8%96%A6%E7%9A%84%E7%A8%8B%E5%BC%8F%E8%A8%AD%E8%A8%88%E5%91%BD%E5%90%8D%E9%A2%A8%E6%A0%BCcc&#43;&#43;/</link>
      <pubDate>Mon, 25 Mar 2019 21:00:00 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/programming/%E6%88%91%E6%8E%A8%E8%96%A6%E7%9A%84%E7%A8%8B%E5%BC%8F%E8%A8%AD%E8%A8%88%E5%91%BD%E5%90%8D%E9%A2%A8%E6%A0%BCcc&#43;&#43;/</guid>
      <description>&lt;p&gt;之前批評了一番從前曾經流行、現在還有很多人在用的&#xA;&lt;a href=&#34;http://www.huoschen.idv.tw/blog/programming/%E7%82%BA%E4%BB%80%E9%BA%BC%E4%B8%8D%E8%A6%81%E4%BD%BF%E7%94%A8%E5%8C%88%E7%89%99%E5%88%A9%E5%91%BD%E5%90%8D%E6%B3%95/&#34;&gt;匈牙利命名法&lt;/a&gt;，&#xA;後來也介紹了一些&lt;a href=&#34;http://www.huoschen.idv.tw/blog/programming/%E5%B9%BE%E7%A8%AE%E5%9C%A8%E7%A8%8B%E5%BC%8F%E8%A8%AD%E8%A8%88%E4%B8%AD%E5%B8%B8%E8%A6%8B%E7%9A%84%E5%91%BD%E5%90%8D%E9%A2%A8%E6%A0%BC/&#34;&gt;當前常見的命名方式&lt;/a&gt;，&#xA;但也許有些人對如何命名這件事還是感到迷盲，&#xA;這引起了我想要寫下我自己所使用的命名風格的想法，給人參考照路的同時也為我留個筆記。&lt;/p&gt;&#xA;&lt;p&gt;其實命名這件事博大精深，甚至命名已經不是單純的命名學問，&#xA;還與程式設計架構、模式等思路息息相關，互相影響。&#xA;不是我不願意告訴你完整命名的知識，而是全部寫出來的話會是一個蠻大的主題，&#xA;還要拉上其他相關的程式模式框架介紹，我想足夠寫成一本書了！&#xA;因此我這次只很簡單的描述說明，&#xA;在一個&lt;strong&gt;識別名稱已經基本思考確定的情況下&lt;/strong&gt;，我都如何修飾並表現它們的方式。&lt;/p&gt;&#xA;&lt;p&gt;命名風格有關的變化上，很少有絕對的對與錯，更多的因素是人的「感覺」。&#xA;正因為如此，不同的命名規則比較和細部變化往往只能靠著不斷嘗試與累積來磨合，&#xA;所以我也沒辦法說什麼樣的東西是對的，只能告訴你說這是我所喜好的命名方式，您參考看看。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;一般變數local-variable&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/%E6%88%91%E6%8E%A8%E8%96%A6%E7%9A%84%E7%A8%8B%E5%BC%8F%E8%A8%AD%E8%A8%88%E5%91%BD%E5%90%8D%E9%A2%A8%E6%A0%BCcc&amp;#43;&amp;#43;/#%e4%b8%80%e8%88%ac%e8%ae%8a%e6%95%b8local-variable&#34;&gt;一般變數(local variable)&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;這裡說的一般變數，就是程式設計中我們會大量定義並使用的、在函式裡面的區域變數，&#xA;這種變數我絕大部分採用&lt;strong&gt;愈簡短愈好&lt;/strong&gt;的名稱，搭配 &lt;strong&gt;Lower Snake Case&lt;/strong&gt; 風格，&#xA;例如：&lt;code&gt;buf&lt;/code&gt;、&lt;code&gt;data&lt;/code&gt;、&lt;code&gt;size&lt;/code&gt;、&lt;code&gt;filename&lt;/code&gt;、&lt;code&gt;listen_port&lt;/code&gt; 等等。&lt;/p&gt;&#xA;&lt;p&gt;對於一般的區域變數，由於通常擁有良好的上下文關係，加上現在都喜歡寫短函式，&#xA;在內容不長、變數不多的情況下，自然的變數名稱不需要搞得太複雜，簡單清爽就是最好！&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;一般函式c-external-function&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/%E6%88%91%E6%8E%A8%E8%96%A6%E7%9A%84%E7%A8%8B%E5%BC%8F%E8%A8%AD%E8%A8%88%E5%91%BD%E5%90%8D%E9%A2%A8%E6%A0%BCcc&amp;#43;&amp;#43;/#%e4%b8%80%e8%88%ac%e5%87%bd%e5%bc%8fc-external-function&#34;&gt;一般函式(C external function)&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;C 的一般函式名大概是整個命名裡面最長最囉唆的了！&#xA;沒辦法，因為從大來看，整個模組化程式設計框架下都是以函式做為基本介面單元；&#xA;從小來看，各種不管靜態還是動態程式庫之間的符號連結也幾乎都是以函式為主，&#xA;函式的重要性不言而喻，函式同時也成為最容易發生名稱問題的地方！&lt;/p&gt;&#xA;&lt;p&gt;對於 C 的外部函式(也就是一般的函式)，我採用 &lt;strong&gt;Lower Snake Case&lt;/strong&gt;，&#xA;並且函式名稱應具有下列格式結構：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;程式庫名或模組名_[[父類別名_]類別名_]函式主名&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;其中若函式不屬於某個類別(意同 C++ 之 class)，則類別名可以省略，父類別亦同；&#xA;至於程式庫名與模組名在絕大多數的情況下不能省略，&#xA;只有在這個函式本身屬於最頂層應用程式的函式時，才可以省略不寫。&lt;/p&gt;&#xA;&lt;p&gt;範例：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;ccntr_list_get_first&lt;/code&gt;:&lt;br/&gt;&#xA;即 &lt;code&gt;ccntr&lt;/code&gt; 這個程式庫下的 &lt;code&gt;list&lt;/code&gt; 這個類別下的 &lt;code&gt;get_first&lt;/code&gt; 函式。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;ccntr_man_list_iter_get_value&lt;/code&gt;:&lt;br/&gt;&#xA;即 &lt;code&gt;ccntr&lt;/code&gt; 這個程式庫下的 &lt;code&gt;man_list&lt;/code&gt; 這個類別下的 &lt;code&gt;iter&lt;/code&gt; 這個類別下的 &lt;code&gt;get_value&lt;/code&gt; 函式。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;cts2_get_description&lt;/code&gt;:&lt;br/&gt;&#xA;即 &lt;code&gt;cts2&lt;/code&gt; 這個程式庫下的 &lt;code&gt;get_description&lt;/code&gt; 函式。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;我想熟悉 C++ 的人可能就看懂了，這不就是在仿效 C++ 的 class 和 name space 嗎？&#xA;沒錯！這些修飾就是在做與 C++ 的 class 和 namespace 相同的名稱空間分割，&#xA;把 C++ 設計概念的東西搬到 C 語言上來使用。&lt;/p&gt;&#xA;&lt;p&gt;我所推薦的這個命名方式解決了有關名稱衝突、以及從屬關係不清的問題。&#xA;但是因為 C 語言沒有 C++ 完整的 namespace 相關機制，&#xA;只能把這些東西硬塞進函式名稱裡做為函式名稱的一部份，所以函式的名稱很容易變很長，&#xA;而這也是為什麼 C 語言的程式碼裡面超級喜歡縮寫的原因之一！&lt;/p&gt;&#xA;&lt;p&gt;另外要注意的一點是：不是只有程式庫公開的函式才應該要採用這個命名，&#xA;&lt;strong&gt;凡會導出符號名稱到目的檔、靜態程式庫檔、或動態程式庫檔的函式，&lt;/strong&gt;&#xA;&lt;strong&gt;也就是所有非 static 的一般 C 函式，都應該要採用這個命名規則！&lt;/strong&gt;&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;私有函式c-static-function&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/%E6%88%91%E6%8E%A8%E8%96%A6%E7%9A%84%E7%A8%8B%E5%BC%8F%E8%A8%AD%E8%A8%88%E5%91%BD%E5%90%8D%E9%A2%A8%E6%A0%BCcc&amp;#43;&amp;#43;/#%e7%a7%81%e6%9c%89%e5%87%bd%e5%bc%8fc-static-function&#34;&gt;私有函式(C static function)&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;C 的 static function 比照一般函式使用 &lt;strong&gt;Lower Snake Case&lt;/strong&gt; 命名，&#xA;但因為其只能在所屬的程式碼檔案內被使用，也不會匯出符號，&#xA;所以基本上無需採用一般函式那樣囉唆的命名，直接將主名稱做為整個函式的名稱即可！&#xA;除非你的一份 C 程式檔案裡面含有兩個以上的類別或模組的程式碼！&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;函式參數&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/%E6%88%91%E6%8E%A8%E8%96%A6%E7%9A%84%E7%A8%8B%E5%BC%8F%E8%A8%AD%E8%A8%88%E5%91%BD%E5%90%8D%E9%A2%A8%E6%A0%BCcc&amp;#43;&amp;#43;/#%e5%87%bd%e5%bc%8f%e5%8f%83%e6%95%b8&#34;&gt;函式參數&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;我的函式參數命名風格比照一般區域變數，採用 &lt;strong&gt;Lower Snake Case&lt;/strong&gt;。&#xA;並且如果這個函式是所屬一個類別的函式的話，&#xA;&lt;strong&gt;做為物件實體參考的指標參數應該為函式的第一個參數&lt;/strong&gt;，以與 C++ 的慣例相同，&#xA;最好這個參數的名稱要被命名為 &lt;code&gt;self&lt;/code&gt;，以類比 C++ 的 &lt;code&gt;this&lt;/code&gt;。&#xA;範例如：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;void ccntr_list_link(ccntr_list_t *self, ccntr_list_node_t *pos, ccntr_list_node_t *node);&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;結構structureunion&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/%E6%88%91%E6%8E%A8%E8%96%A6%E7%9A%84%E7%A8%8B%E5%BC%8F%E8%A8%AD%E8%A8%88%E5%91%BD%E5%90%8D%E9%A2%A8%E6%A0%BCcc&amp;#43;&amp;#43;/#%e7%b5%90%e6%a7%8bstructureunion&#34;&gt;結構(structure/union)&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;由於聯合(union)和結構(structure)除了程式上的效果不一樣以外，在語法上的表現是相同的，&#xA;因此共用同一套命名規則，以下將以結構為主進行說明。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;結構成員&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/%E6%88%91%E6%8E%A8%E8%96%A6%E7%9A%84%E7%A8%8B%E5%BC%8F%E8%A8%AD%E8%A8%88%E5%91%BD%E5%90%8D%E9%A2%A8%E6%A0%BCcc&amp;#43;&amp;#43;/#%e7%b5%90%e6%a7%8b%e6%88%90%e5%93%a1&#34;&gt;結構成員&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;結構成員與一般區域變數相似，通常結構體定義都擁有良好的群組分類關係，&#xA;所以成員名稱並不需要太複雜，&#xA;命名採&lt;strong&gt;簡潔、易懂用途&lt;/strong&gt;為中心思想，搭配 &lt;strong&gt;Lower Snake Case&lt;/strong&gt; 風格。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;結構本身&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/%E6%88%91%E6%8E%A8%E8%96%A6%E7%9A%84%E7%A8%8B%E5%BC%8F%E8%A8%AD%E8%A8%88%E5%91%BD%E5%90%8D%E9%A2%A8%E6%A0%BCcc&amp;#43;&amp;#43;/#%e7%b5%90%e6%a7%8b%e6%9c%ac%e8%ba%ab&#34;&gt;結構本身&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;結構本身命名採用 &lt;strong&gt;Lower Snake Case&lt;/strong&gt; 風格，並需符合下列敘述的規則。&lt;/p&gt;&#xA;&lt;p&gt;對定義在公開標頭檔的結構話，其名稱需符合下列格式結構：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;程式庫名或模組名_結構主名&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;例如：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;cts2_conf&lt;/code&gt;:&lt;br/&gt;&#xA;表示它是 &lt;code&gt;cts2&lt;/code&gt; 程式庫下的 &lt;code&gt;conf&lt;/code&gt; 資料類型，&#xA;裡面可能放的都是與 cts2 程式庫有關的配置參數。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;程式庫名前綴和模組名前綴可在下列幾種情況下省略：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;這個結構被定義在私有標頭檔、或單一模組的程式碼檔裡。&lt;/li&gt;&#xA;&lt;li&gt;這個結構被定義在函式內、或 C++ 的類別內、或 C++ 的 namespace 內時。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;若這個結構被用作為某個類別型態使用的話，其結構主名即同類別名，&#xA;名稱表示與類別函式相似，但最後需加上 &lt;code&gt;_t&lt;/code&gt; 結尾，整體名稱格式如下：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;程式庫名或模組名_[父類別名_]類別名_t&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;例如：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;ccntr_man_list_iter_t&lt;/code&gt;:&lt;br/&gt;&#xA;該結構實際表達這是&#xA;&lt;code&gt;ccntr&lt;/code&gt; 程式庫下的 &lt;code&gt;man_list&lt;/code&gt; 類別下的 &lt;code&gt;iter&lt;/code&gt; 類別。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;結構別名type-define&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/%E6%88%91%E6%8E%A8%E8%96%A6%E7%9A%84%E7%A8%8B%E5%BC%8F%E8%A8%AD%E8%A8%88%E5%91%BD%E5%90%8D%E9%A2%A8%E6%A0%BCcc&amp;#43;&amp;#43;/#%e7%b5%90%e6%a7%8b%e5%88%a5%e5%90%8dtype-define&#34;&gt;結構別名(type define)&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;有時我們會喜歡用 &lt;code&gt;typedef&lt;/code&gt; 給結構取別名，這通常是源自於 C 那煩瑣的變數宣告要求。&#xA;例如說我有一個結構叫 &lt;code&gt;mytype&lt;/code&gt;，則宣告變數時我需要這樣寫：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;struct mytype value;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;此時，有些人會使用 &lt;code&gt;typedef&lt;/code&gt; 為結構取別名：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;typedef struct mytype mytype;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;這樣，在宣告變數時就可以省略那個 &lt;code&gt;struct&lt;/code&gt;：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;mytype value;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;對於要不要給結構取別名這件事我還沒有確定的判斷。&#xA;目前的建議是：&#xA;&lt;strong&gt;如果你設計這個結構是希望用戶把他當一個黑盒子來用的話，&lt;/strong&gt;&#xA;&lt;strong&gt;那就應該用別名的方式讓使用者省去那個 &lt;code&gt;struct&lt;/code&gt; 字樣&lt;/strong&gt;，&#xA;畢竟這時候，這個東西對於用戶來講就是一個不知是什麼東西的型態而已；&#xA;而另一方面，設計者應該也不希望用戶花太多注意力來關注這個型態到底內部是個什麼東西！&#xA;通常絕大部份的類別定義屬於這種條件，設計者通常不希望用戶直接操作其成員變數，&#xA;因此對於&lt;strong&gt;絕大部份被當類別使用的結構，我們應該為其設定別名&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;p&gt;相反的，&#xA;&lt;strong&gt;如果這個結構的設計就是為了要叫使用者直接操作成員變數的話，&lt;/strong&gt;&#xA;&lt;strong&gt;何不就大方的告訴大家這是個結構！&lt;/strong&gt;&#xA;因此建議就比較傾向不設定別名的做法，&#xA;例如 C 標準函式庫、以及 POSIX API 定義的許多結構就採用這種做法。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;巨集macro&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/%E6%88%91%E6%8E%A8%E8%96%A6%E7%9A%84%E7%A8%8B%E5%BC%8F%E8%A8%AD%E8%A8%88%E5%91%BD%E5%90%8D%E9%A2%A8%E6%A0%BCcc&amp;#43;&amp;#43;/#%e5%b7%a8%e9%9b%86macro&#34;&gt;巨集(macro)&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;所有的巨集定義都&lt;strong&gt;應在名稱前面加上程式庫或模組名稱&lt;/strong&gt;，&#xA;並且&lt;strong&gt;應採用 Upper Snake Case 風格&lt;/strong&gt;，&#xA;例如：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;#define CCNTR_MAN_MAP_ENABLED&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;只有在單一程式碼檔案內被定義並被使用的巨集可以省略程式庫名稱前綴。&lt;/p&gt;&#xA;&lt;p&gt;熟悉 C/C++ 的人都應該了解巨集的威力，不論是好的方面還是壞的方面，&#xA;因此長久以來程式設計圈就有一個不成文的共識，要求使用全大寫來命名所有的巨集。&#xA;對於熟悉西方語言的人會知道，大寫在文字中具有強調的效果，&#xA;而全大寫表示的文字一定是很重要或很特別的部份。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;列舉enumerate&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/%E6%88%91%E6%8E%A8%E8%96%A6%E7%9A%84%E7%A8%8B%E5%BC%8F%E8%A8%AD%E8%A8%88%E5%91%BD%E5%90%8D%E9%A2%A8%E6%A0%BCcc&amp;#43;&amp;#43;/#%e5%88%97%e8%88%89enumerate&#34;&gt;列舉(enumerate)&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;所有的列舉值都&lt;strong&gt;應在名稱前面加上程式庫或模組名稱&lt;/strong&gt;，&#xA;並且&lt;strong&gt;應採用 Upper Snake Case 風格&lt;/strong&gt;。&#xA;在模組名稱後面、最好再加上列舉用途名稱，&#xA;好在程式庫內定義了兩個以上的列舉型態時，可以方便的區分某個列舉值是屬於哪一種用途使用。&#xA;至於&lt;strong&gt;列舉型態本身，則比照結構(structure)的命名規則&lt;/strong&gt;。&#xA;例如：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;enum mylib_result_code&#xA;{&#xA;    MYLIB_RC_SUCCESS,&#xA;    MYLIB_RC_UNKNOWN_FAILURE,&#xA;    MYLIB_RC_CANNOT_ALLOC_MEMORY,&#xA;    MYLIB_RC_FILE_NOT_EXIST,&#xA;};&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;列舉值的程式庫名稱前綴、以及用途前綴只有在以下幾種情況下可以被省略：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;該列舉在私有標頭檔、或單一程式碼檔案內被定義並被使用。&lt;/li&gt;&#xA;&lt;li&gt;該列舉被定義在 C++ 的類別內、或 C++ 的 namespace 內。&lt;/li&gt;&#xA;&lt;li&gt;該列舉是使用 C++11 的 &lt;code&gt;enum class&lt;/code&gt; 來定義的。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;對列舉值的命名要求比較嚴格有幾個原因：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;傳統上的列舉值與結構或聯合等型態的成員不同，其可見域並不受列舉型態的約束。&lt;/li&gt;&#xA;&lt;li&gt;列舉常被用來定義常數，而巨集也常被用來定義常數，&#xA;兩者間的用途有所重疊，其可見範圍不受約束的特性也有所相似，因此命名也就互相比照。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;c-函式&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/%E6%88%91%E6%8E%A8%E8%96%A6%E7%9A%84%E7%A8%8B%E5%BC%8F%E8%A8%AD%E8%A8%88%E5%91%BD%E5%90%8D%E9%A2%A8%E6%A0%BCcc&amp;#43;&amp;#43;/#c-%e5%87%bd%e5%bc%8f&#34;&gt;C++ 函式&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;C++ 函式我一般&lt;strong&gt;使用 Upper Camel Case 命名風格&lt;/strong&gt;。&#xA;當名稱中出現一些&lt;strong&gt;平常會寫成大寫的縮寫字時，請把首字母以外的部份寫成小寫&lt;/strong&gt;，&#xA;例如一個函式應被命名為 &lt;code&gt;AesEncrypt&lt;/code&gt; 而不應被命名為 &lt;code&gt;AESEncrypt&lt;/code&gt;。&lt;/p&gt;&#xA;&lt;p&gt;邏輯上的理由我自己也沒有整理出來，可能這就是一種喜好吧！&#xA;不知怎地，C++ 函式用 camel case 看起來就是比較搭配！&lt;/p&gt;&#xA;&lt;p&gt;C 函式必須把很多從屬關係寫進名稱中，導致名稱較長，&#xA;如果不使用一些區隔性比較強烈的分隔符號來隔離單字的話，可能視覺上容易把他們混淆在一起吧。&#xA;C++ 因為擁有 namespace 和真正的 class 來做這些事情，所以不需要這些囉唆的前綴，&#xA;直接把函式主名當作全名即可。&#xA;至於 C++ 中不是類別成員的一般函式亦比照辦理，&#xA;C++ 中的一般函式多半是私有函式，就算要放到標頭檔裡，也有 namespace 可以使用，&#xA;因此比較沒有名稱衝突和從屬關係不清的問題；&#xA;而且，若在同一個 C++ 程式碼檔案內，使用不同命名風格來命名函式的話，不會很不統一嗎？&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;c-函式參數&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/%E6%88%91%E6%8E%A8%E8%96%A6%E7%9A%84%E7%A8%8B%E5%BC%8F%E8%A8%AD%E8%A8%88%E5%91%BD%E5%90%8D%E9%A2%A8%E6%A0%BCcc&amp;#43;&amp;#43;/#c-%e5%87%bd%e5%bc%8f%e5%8f%83%e6%95%b8&#34;&gt;C++ 函式參數&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;C++ 函式參數比照區域變數以及 C 函式參數，&lt;strong&gt;使用 Lower Snake Case 命名風格&lt;/strong&gt;。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;c-類別class&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/%E6%88%91%E6%8E%A8%E8%96%A6%E7%9A%84%E7%A8%8B%E5%BC%8F%E8%A8%AD%E8%A8%88%E5%91%BD%E5%90%8D%E9%A2%A8%E6%A0%BCcc&amp;#43;&amp;#43;/#c-%e9%a1%9e%e5%88%a5class&#34;&gt;C++ 類別(class)&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;C++ 類別&lt;strong&gt;採用 Upper Camel Case 命名風格&lt;/strong&gt;，例如：&lt;code&gt;String&lt;/code&gt;、&lt;code&gt;FileList&lt;/code&gt; 等等。&#xA;一般情況下不需要額外的前綴後綴，需要的話通常使用 namespace 來處理即可。&#xA;當名稱中出現一些&lt;strong&gt;平常會寫成大寫的縮寫字時，請把首字母以外的部份寫成小寫&lt;/strong&gt;，&#xA;例如一個類別應被命名為 &lt;code&gt;AviReader&lt;/code&gt; 而不應被命名為 &lt;code&gt;AVIReader&lt;/code&gt;。&lt;/p&gt;&#xA;&lt;p&gt;通常我無需考慮 C++ 類在程式庫間的相容性問題，&#xA;因為 C++ 那複雜又不統一的函式名稱變換(mangling)、類別生命週期操作、和例外傳遞機制的差異性，&#xA;已經使得一般情況的 C++ 類別(這裡不是指那些特別被設計來做為程式庫介面使用的純虛類別)&#xA;不可能被用作程式庫的介面。&#xA;我也不擔心類別名和變數名的衝突或混淆，因為所有的變數我都已經使用 lower case 命名了！&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;名稱空間namespace&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/%E6%88%91%E6%8E%A8%E8%96%A6%E7%9A%84%E7%A8%8B%E5%BC%8F%E8%A8%AD%E8%A8%88%E5%91%BD%E5%90%8D%E9%A2%A8%E6%A0%BCcc&amp;#43;&amp;#43;/#%e5%90%8d%e7%a8%b1%e7%a9%ba%e9%96%93namespace&#34;&gt;名稱空間(namespace)&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;老實說，這是我個人目前命名方案裡最後一塊未拼上的拼圖！&#xA;除了我不會使用帶底線的 Snake Case 風格外，&#xA;目前都有嘗試把 Lower Case 和 Upper Camel Case 用在 namespace 上，&#xA;尚未探索出最適合的命名方式。&lt;/p&gt;</description>
    </item>
    <item>
      <title>幾種在程式設計中常見的命名風格</title>
      <link>http://www.huoschen.idv.tw/blog/programming/%E5%B9%BE%E7%A8%AE%E5%9C%A8%E7%A8%8B%E5%BC%8F%E8%A8%AD%E8%A8%88%E4%B8%AD%E5%B8%B8%E8%A6%8B%E7%9A%84%E5%91%BD%E5%90%8D%E9%A2%A8%E6%A0%BC/</link>
      <pubDate>Thu, 21 Mar 2019 21:41:19 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/programming/%E5%B9%BE%E7%A8%AE%E5%9C%A8%E7%A8%8B%E5%BC%8F%E8%A8%AD%E8%A8%88%E4%B8%AD%E5%B8%B8%E8%A6%8B%E7%9A%84%E5%91%BD%E5%90%8D%E9%A2%A8%E6%A0%BC/</guid>
      <description>&lt;p&gt;在程式設計中，存在大量的命名需求。&#xA;我們常常需要為大量的自訂元素命名，小從變數、函式，大至模組、程式庫，&#xA;除了「一個東西究竟要叫什麼名字好？」這個問題常常困擾著具有一定素養的程式設計人員外，&#xA;「一個名稱該如何呈獻」的問題也常讓程式人員，特別是那些經驗資歷尚淺的人迷惑。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;為什麼要有這麼多不同的名稱呈獻方式風格&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/%E5%B9%BE%E7%A8%AE%E5%9C%A8%E7%A8%8B%E5%BC%8F%E8%A8%AD%E8%A8%88%E4%B8%AD%E5%B8%B8%E8%A6%8B%E7%9A%84%E5%91%BD%E5%90%8D%E9%A2%A8%E6%A0%BC/#%e7%82%ba%e4%bb%80%e9%ba%bc%e8%a6%81%e6%9c%89%e9%80%99%e9%ba%bc%e5%a4%9a%e4%b8%8d%e5%90%8c%e7%9a%84%e5%90%8d%e7%a8%b1%e5%91%88%e7%8d%bb%e6%96%b9%e5%bc%8f%e9%a2%a8%e6%a0%bc&#34;&gt;為什麼要有這麼多不同的名稱呈獻方式(風格)？&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;當我們為一個東西命名，比方說想要給一個變數 &amp;ldquo;my crazy magic box&amp;rdquo; 這個名稱，&#xA;在程式語言裡我卻不能就直接這樣子寫。&#xA;一個名稱往往使用了超過一個的單字組成，然後用空白來分隔它們；&#xA;然而空白已經被絕大多數的程式語言用作語法的分隔，再拿來做為識別字的一部份的話，&#xA;一定會造成語法解析上的障礙，&#xA;所以絕大部分的程式語言並不允許一個識別字裡面含有空白、以及其他一些特殊符號。&lt;/p&gt;&#xA;&lt;p&gt;因此我們必須另闢蹊徑，使用其他方法來在視覺上區別一個名稱內的個別元素，&#xA;既然區別名稱元素的方法不只一個，自然的就造成許多源自不同的發想點而產生的不同名稱方案。&#xA;不同名稱方案間的差別通常在於美感、喜好、文化等方面，因此誰也沒能統一誰，&#xA;最後人們通常會在他覺得適合的地方使用不同的命名習慣。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;常見的命名風格&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/%E5%B9%BE%E7%A8%AE%E5%9C%A8%E7%A8%8B%E5%BC%8F%E8%A8%AD%E8%A8%88%E4%B8%AD%E5%B8%B8%E8%A6%8B%E7%9A%84%E5%91%BD%E5%90%8D%E9%A2%A8%E6%A0%BC/#%e5%b8%b8%e8%a6%8b%e7%9a%84%e5%91%bd%e5%90%8d%e9%a2%a8%e6%a0%bc&#34;&gt;常見的命名風格&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;由於世界上的命名方案之多，我不可能全部列舉解釋，&#xA;所以接下來將只介紹一些比較常見而流行的命名風格。&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Upper Case&lt;/strong&gt;/&lt;strong&gt;Lower Case&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;這種命名方案實為兩種相似的方案：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Upper Case&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;規則：整個名稱全部使用大寫，並且單字間不做任何區隔。&lt;br/&gt;&#xA;範例：&lt;code&gt;MYCRAZYMAGICBOX&lt;/code&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Lower Case&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;規則：整個名稱全部使用小寫，並且單字間不做任何區隔。&lt;br/&gt;&#xA;範例：&lt;code&gt;mycrezymagicbox&lt;/code&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;這種方案的好處是簡單不費事、需要打的字少；&#xA;壞處則是單字間少了任何形式的視覺分隔，容易導致一眼看上去不知道在寫什麼？&#xA;如果你覺得我上面的範例不足以體現這點的話，請試試這個：&lt;code&gt;grepwithsedandawk&lt;/code&gt;。&lt;/p&gt;&#xA;&lt;p&gt;然而它的缺點也不是嚴重到無法踰越。&#xA;對於通常由兩個以下常用單字所組成的名稱中，&#xA;熟悉自然語言的人往往可以用極快的速度區別名稱中的單字，&#xA;例如 &lt;code&gt;totalsize&lt;/code&gt; 和 &lt;code&gt;username&lt;/code&gt; 等。&#xA;因此在實際上，這種命名方式仍被大量使用。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Camel Case&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;這種命名方案又被細分為兩種子型：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Upper Camel Case&lt;/strong&gt;/&lt;strong&gt;Pascal Case&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;規則：單字間沒有分隔，每個單字的首字母為大寫、其它為小寫。&lt;br/&gt;&#xA;範例：&lt;code&gt;MyCrazyMagicBox&lt;/code&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Lower Camel Case&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;規則：與 Upper Camel Case 相同，但第一個單字的首字母為小寫。&lt;br/&gt;&#xA;範例：&lt;code&gt;myCrazyMagicBox&lt;/code&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;符合這種規則的名稱在視覺效果上型似駱駝的駝峰，因而得名。&lt;/p&gt;&#xA;&lt;p&gt;這些方案的好處是名稱間的單字可以被明顯的識別，並且不會導致名稱變長；&#xA;缺點之一是當名稱中含有專有名詞縮寫時可能會導致迷惑和分歧，&#xA;例如 &amp;ldquo;set DB name&amp;rdquo; 究竟要變成 &lt;code&gt;SetDBName&lt;/code&gt; 好？還是 &lt;code&gt;SetDbName&lt;/code&gt; 好？&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Snake Case&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;這種命名方案又被細分為兩種子型：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Upper Snake Case&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;規則：整個名稱全部使用大寫，單字間以底線 &amp;ldquo;&lt;code&gt;_&lt;/code&gt;&amp;rdquo; 做為區隔。&lt;br/&gt;&#xA;範例：&lt;code&gt;MY_CRAZY_MAGIC_BOX&lt;/code&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Lower Snake Case&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;規則：整個名稱全部使用小寫，單字間以底線 &amp;ldquo;&lt;code&gt;_&lt;/code&gt;&amp;rdquo; 做為區隔。&lt;br/&gt;&#xA;範例：&lt;code&gt;my_crezy_magic_box&lt;/code&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;符合這種規則的名稱在視覺效果上型似鈕動的蛇，因而得名。&#xA;這些方案的好處是名稱間的單字可以被明顯的識別；&#xA;缺點是會讓名稱變長，這在程式碼橫幅版面空間有限的條件下很難被忽略！&lt;/p&gt;&#xA;&lt;p&gt;實務上，Snake Case 命名方案常常會和 Upper Case 方案或 Lower Case 方案混用，&#xA;例如 &amp;ldquo;set max num&amp;rdquo; 可能會被表示為 &lt;code&gt;set_maxnum&lt;/code&gt; 而不是 &lt;code&gt;set_max_num&lt;/code&gt;，&#xA;這是因為試圖要節省名稱長度的關係導致。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Kebab Case&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;規則：整個名稱全部使用小寫，單字間以連字號 &amp;ldquo;&lt;code&gt;-&lt;/code&gt;&amp;rdquo; 做為區隔。&lt;br/&gt;&#xA;範例：&lt;code&gt;my-crazy-magic-box&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;符合這種規則的名稱在視覺效果上型似插滿肉的烤肉串，因而得名。&lt;/p&gt;&#xA;&lt;p&gt;這種命名方案的大部份特性和 Snake Case 相同，&#xA;除了單字間的連字號比起底線在視覺效果上看起來比較不那麼強烈，所以也受人喜愛。&#xA;然而大部份的程式語言並不允許連字號(與減號相同)出現在識別字中，&#xA;因此 Kebab Case 通常只被使用在各種配置文件、資料字串、&#xA;和支援連字號的少部份程式語言的識別字中。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Hungarian Notation&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;規則：整個名稱比照 Upper Camel Case，然後在名稱前面再加上全部為小寫的型態縮寫。&lt;br/&gt;&#xA;範例：&lt;code&gt;bxstMyCrazyMagicBox&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;這種命名方式即是惡名昭彰的&lt;strong&gt;匈牙利命名法&lt;/strong&gt;！&#xA;看到它在名稱加上型態縮寫，就可以知道這種命名風格是專為程式「變數」而設計，&#xA;所以可能難以拿來為函式、類別等變數以外的東西命名。&lt;/p&gt;&#xA;&lt;p&gt;雖然當今通常不推薦使用匈牙利命名，但對於這麼有名氣而且現在仍常看見的命名風格，&#xA;打著介紹命名風格的文章又怎能不介紹它呢？&#xA;有關於匈牙利命名的更多詳細資訊、特別是那些惡形惡狀，請參考我曾發佈的文章：「&#xA;&lt;a href=&#34;http://www.huoschen.idv.tw/blog/programming/%E7%82%BA%E4%BB%80%E9%BA%BC%E4%B8%8D%E8%A6%81%E4%BD%BF%E7%94%A8%E5%8C%88%E7%89%99%E5%88%A9%E5%91%BD%E5%90%8D%E6%B3%95/&#34;&gt;為什麼不要使用匈牙利命名法？&lt;/a&gt;&#xA;」。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;reference&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/%E5%B9%BE%E7%A8%AE%E5%9C%A8%E7%A8%8B%E5%BC%8F%E8%A8%AD%E8%A8%88%E4%B8%AD%E5%B8%B8%E8%A6%8B%E7%9A%84%E5%91%BD%E5%90%8D%E9%A2%A8%E6%A0%BC/#reference&#34;&gt;Reference&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Naming_convention_(programming)&#34;&gt;https://en.wikipedia.org/wiki/Naming_convention_(programming)&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Snake_case&#34;&gt;https://en.wikipedia.org/wiki/Snake_case&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/whinc/blog/issues/7&#34;&gt;https://github.com/whinc/blog/issues/7&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>為什麼不要使用匈牙利命名法？</title>
      <link>http://www.huoschen.idv.tw/blog/programming/%E7%82%BA%E4%BB%80%E9%BA%BC%E4%B8%8D%E8%A6%81%E4%BD%BF%E7%94%A8%E5%8C%88%E7%89%99%E5%88%A9%E5%91%BD%E5%90%8D%E6%B3%95/</link>
      <pubDate>Sun, 17 Mar 2019 01:11:00 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/programming/%E7%82%BA%E4%BB%80%E9%BA%BC%E4%B8%8D%E8%A6%81%E4%BD%BF%E7%94%A8%E5%8C%88%E7%89%99%E5%88%A9%E5%91%BD%E5%90%8D%E6%B3%95/</guid>
      <description>&lt;p&gt;這篇文章並不完全是我的原創，文章的原始主體來自於&#xA;&lt;a href=&#34;http://www.ptt.cc/man/C_and_CPP/DBF2/DC60/DC2B/M.1134409794.A.26A.html&#34;&gt;PTT 上相關主題討論的對話節錄&lt;/a&gt;&#xA;，&#xA;重新編排修飾後又加入了一些我自己的觀點整理而成。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;什麼是匈牙利命名法&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/%E7%82%BA%E4%BB%80%E9%BA%BC%E4%B8%8D%E8%A6%81%E4%BD%BF%E7%94%A8%E5%8C%88%E7%89%99%E5%88%A9%E5%91%BD%E5%90%8D%E6%B3%95/#%e4%bb%80%e9%ba%bc%e6%98%af%e5%8c%88%e7%89%99%e5%88%a9%e5%91%bd%e5%90%8d%e6%b3%95&#34;&gt;什麼是匈牙利命名法？&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;匈牙利命名法是一種在程式設計中使用在各種變數的命名上的規則，&#xA;因這種命名的名稱形似匈牙利人名而得其名(雖然我怎麼看都看不出來到底哪裡像了)。&#xA;匈牙利命名要求所有的變數名稱需要在前面加上幾個簡短的小寫字母，用以標示該變數的型別。&#xA;列舉幾個範例如：&#xA;&lt;code&gt;iIndex&lt;/code&gt; 表示它是一個整數、&#xA;&lt;code&gt;fSpeed&lt;/code&gt; 表示它是一個浮點數、&#xA;&lt;code&gt;cSex&lt;/code&gt; 表示它是一個字元、&#xA;&lt;code&gt;sName&lt;/code&gt; 表示它是一個字串、&#xA;&lt;code&gt;szName&lt;/code&gt; 表示它是一個以零結尾的字串、&#xA;&lt;code&gt;pszName&lt;/code&gt; 表示它是一個指標，指向一個字串、&#xA;&lt;code&gt;lpszName&lt;/code&gt; 表示它是一個遠指標，指向一個字串、&#xA;&lt;code&gt;g_lpszName&lt;/code&gt; 表示它是一個遠指標，指向一個字串，而且這是個全域變數、&#xA;&lt;code&gt;a_crszkvc30LastNameCol&lt;/code&gt; 啊！我也不知道它的型態是什麼……&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;為什麼匈牙利命名法不受喜愛&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/%E7%82%BA%E4%BB%80%E9%BA%BC%E4%B8%8D%E8%A6%81%E4%BD%BF%E7%94%A8%E5%8C%88%E7%89%99%E5%88%A9%E5%91%BD%E5%90%8D%E6%B3%95/#%e7%82%ba%e4%bb%80%e9%ba%bc%e5%8c%88%e7%89%99%e5%88%a9%e5%91%bd%e5%90%8d%e6%b3%95%e4%b8%8d%e5%8f%97%e5%96%9c%e6%84%9b&#34;&gt;為什麼匈牙利命名法不受喜愛？&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;匈牙利命名法多很多綴字，又不好看又不好記打起來又麻煩，在現代 IDE 輔助下，實用性並不高。&#xA;舉例，有個變數 Var 型態是 Long Pointer to a Zero-terminated String，&#xA;那你就必須在變數名稱前面加上 lpsz，變成 lpszVar，&#xA;凡是遇到 long pointer 變數，命名一律必須前綴 LP，&#xA;於是傳統採用匈牙利命名的 Win32 SDK 程式中到處都充滿 LP。&#xA;Handle of WiNDow 這個型別，就必須命名為 HWND，這類變數有時得前綴 hwnd，&#xA;這樣很難記又沒意義，又降低可讀性，在現代的程式已經沒有實用價值了。&lt;/p&gt;&#xA;&lt;p&gt;匈牙利命名法最大的缺點是，現今它沒有任何基於必要性的優點，&#xA;以至於它所有缺點的負分加起來，就差不多是它的總得分。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;匈牙利命名法的優點&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/%E7%82%BA%E4%BB%80%E9%BA%BC%E4%B8%8D%E8%A6%81%E4%BD%BF%E7%94%A8%E5%8C%88%E7%89%99%E5%88%A9%E5%91%BD%E5%90%8D%E6%B3%95/#%e5%8c%88%e7%89%99%e5%88%a9%e5%91%bd%e5%90%8d%e6%b3%95%e7%9a%84%e5%84%aa%e9%bb%9e&#34;&gt;匈牙利命名法的優點&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;變數的型別是什麼，從變數的定義就看得出來了，何必要把型別縮寫加在變數上呢？&#xA;可能需要它的理由是：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;找不到變數定義&lt;/p&gt;&#xA;&lt;p&gt;如全域變數，不知道它被定義在哪一個檔案，又沒有 IDE 的時候。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;懶得找變數定義&lt;/p&gt;&#xA;&lt;p&gt;對於一個千百行的函式，你不會想中途看到一半，&#xA;時常要 scroll 到前面去看變數定義，尤其是 C 程式。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;猜不到變數型別是什麼&lt;/p&gt;&#xA;&lt;p&gt;以前的變數命名比較短，如 &lt;code&gt;kn&lt;/code&gt;，猜都猜不出來可能的型別是什麼。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;匈牙利命名法的優點為什麼不復存在&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/%E7%82%BA%E4%BB%80%E9%BA%BC%E4%B8%8D%E8%A6%81%E4%BD%BF%E7%94%A8%E5%8C%88%E7%89%99%E5%88%A9%E5%91%BD%E5%90%8D%E6%B3%95/#%e5%8c%88%e7%89%99%e5%88%a9%e5%91%bd%e5%90%8d%e6%b3%95%e7%9a%84%e5%84%aa%e9%bb%9e%e7%82%ba%e4%bb%80%e9%ba%bc%e4%b8%8d%e5%be%a9%e5%ad%98%e5%9c%a8&#34;&gt;匈牙利命名法的優點為什麼不復存在？&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;然而，環境不一樣了。&#xA;現在的程式寫作習慣改變了，尤其是 C++ 或說物件導向的程式寫作。&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;容易知道變數被定義在哪裏&lt;/p&gt;&#xA;&lt;p&gt;物件導向程式寫作有一個重要的認知是：物必有主。一個變數一定會有個主。&#xA;global 變數不被鼓勵使用，而以 class static member 取代之，&#xA;你很容易知道他被定義在哪裏。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;變數定義就在旁邊而已，不必你找&lt;/p&gt;&#xA;&lt;p&gt;小函式的使用被鼓勵，對於一個 20 行內的函式，你絕對看得到變數定義。&#xA;對於大一點的函式， C++ (以及 C99 以後的 C)可以讓你在變數使用的前一刻宣告即可，&#xA;這種寫作方式也被鼓勵。對於一個不認識的變數，它的定義就在前幾行而已。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;猜得到變數型別是什麼&lt;/p&gt;&#xA;&lt;p&gt;完整的變數命名被鼓勵，加上物件導向的特性，很容易猜得出變數型別。&#xA;如視窗 &lt;code&gt;window.height&lt;/code&gt; 會是一個 &lt;code&gt;unsigned int&lt;/code&gt;。&#xA;&lt;code&gt;man.height&lt;/code&gt; 大概就是一個 &lt;code&gt;float&lt;/code&gt; 了。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;再加上近代軟體開發工具的進步，補足了匈牙利命名法被需要的條件，&#xA;所以基本上，匈牙利命名法在現在已經沒有任何基於必要性的優點了。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;匈牙利命名法的缺點&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/%E7%82%BA%E4%BB%80%E9%BA%BC%E4%B8%8D%E8%A6%81%E4%BD%BF%E7%94%A8%E5%8C%88%E7%89%99%E5%88%A9%E5%91%BD%E5%90%8D%E6%B3%95/#%e5%8c%88%e7%89%99%e5%88%a9%e5%91%bd%e5%90%8d%e6%b3%95%e7%9a%84%e7%bc%ba%e9%bb%9e&#34;&gt;匈牙利命名法的缺點&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;好煩！&lt;/p&gt;&#xA;&lt;p&gt;我已經知道這個變數是 &lt;code&gt;int&lt;/code&gt; 了，為什麼程式碼到處都在說它是 &lt;code&gt;int&lt;/code&gt; 。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;不清爽！&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;vector.x&lt;/code&gt; 不是很好嗎，為什麼要寫 &lt;code&gt;vVector.fx&lt;/code&gt;。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;變數改型別的時候怎麼辦？&lt;/p&gt;&#xA;&lt;p&gt;變數改變型別是有可能的，如果一個變數分佈在 20 個檔案，最起碼要改 20 次。&#xA;當然，有好的開發環境可能會方便一點；&#xA;但如果是發佈給人家用的 API 呢，改變型別縮寫，鐵定會被客戶抱怨一下。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;五技而窮！&lt;/p&gt;&#xA;&lt;p&gt;基於物件導向，以及程式規模愈來愈大，大量的自定型別被定義，&#xA;如何去為這些型別找個容易識別的縮寫呢？&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;未能適用於函式名稱！&lt;/p&gt;&#xA;&lt;p&gt;以理類推，函式前面也要加回傳型別的縮寫呀，這樣才統一呀！&#xA;如果變數前面要加型別縮寫才行，那為什麼有回傳值的函式不用，總是要平等對待呀。&#xA;如 &lt;code&gt;fsqrt()&lt;/code&gt;、&lt;code&gt;man.fGetHeight()&lt;/code&gt;、&lt;code&gt;vBeep()&lt;/code&gt;。天阿！應該沒有人會這樣子用。&#xA;一個無法貫徹於各種情況的風格，可能不是一個好的風格。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;難以為多型物件命名！&lt;/p&gt;&#xA;&lt;p&gt;如下，應該是這樣好？&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt; Man* mnRenderer = new Programmer;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;還是這樣好？&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt; Man* pgmRenderer = new Programmer;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;在物件導向程式寫作裏，一個變數的角色與行為，會比它的型別來得重要。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;無法用於泛型程式寫作！&lt;/p&gt;&#xA;&lt;p&gt;如：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt; template&amp;lt;class TYPE&amp;gt; class Vector&#xA; {&#xA; public:&#xA;     TYPE x;&#xA;     TYPE y;&#xA;     TYPE z;&#xA; };&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;這裏的 x,y,z 前面要加什麼縮寫好？&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;另外像是-g_xxxm_xxx-等也是沒有必要的&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/%E7%82%BA%E4%BB%80%E9%BA%BC%E4%B8%8D%E8%A6%81%E4%BD%BF%E7%94%A8%E5%8C%88%E7%89%99%E5%88%A9%E5%91%BD%E5%90%8D%E6%B3%95/#%e5%8f%a6%e5%a4%96%e5%83%8f%e6%98%af-g_xxxm_xxx-%e7%ad%89%e4%b9%9f%e6%98%af%e6%b2%92%e6%9c%89%e5%bf%85%e8%a6%81%e7%9a%84&#34;&gt;另外，像是 g_XXX、m_XXX 等也是沒有必要的&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;g_XXX&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;p&gt;程式裏不太應該要有 global 變數，&#xA;放到 class static member，&lt;code&gt;g_&lt;/code&gt; 就用不上了。&#xA;如 &lt;code&gt;Man::Count&lt;/code&gt;，你一定知道它是一個唯一的變數。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;m_XXX&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;m_XXX&lt;/code&gt; 也是沒有必要的，如：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;  vector.m_x;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;&lt;code&gt;m_&lt;/code&gt; 是個贅字，&amp;quot;&lt;code&gt;.&lt;/code&gt;&amp;quot; (或者 &amp;ldquo;&lt;code&gt;-&amp;gt;&lt;/code&gt;&amp;rdquo;) 本身就說出 x 是它的 member 了。&#xA;另外：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;  Vector&amp;amp; Vector::operator = (const Vector&amp;amp; b)&#xA;  {&#xA;      this-&amp;gt;x = b.x;&#xA;      this-&amp;gt;y = b.y;&#xA;      this-&amp;gt;z = b.z;&#xA;&#xA;      return *this;&#xA;  }&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;是比下面的寫法來得簡明的：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;  Vector&amp;amp; Vector::operator = (const Vector&amp;amp; b)&#xA;  {&#xA;      m_x = b.m_x;&#xA;      m_y = b.m_y;&#xA;      m_z = b.m_z;&#xA;&#xA;      return *this;&#xA;  }&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;&lt;code&gt;m_&lt;/code&gt; 唯一有用的地方是在 member function 裡，然而加 &lt;code&gt;this-&amp;gt;&lt;/code&gt; 就好了。&#xA;&lt;code&gt;this-&amp;gt;&lt;/code&gt; 是語言提供的本尊原生寫法，&#xA;另立主張，有人喜歡，有人不喜歡，這樣就不好了。&lt;/p&gt;&#xA;&lt;p&gt;另外，應該讓 class 的使用者使用乾淨的介面，&#xA;&lt;code&gt;vector.m_x&lt;/code&gt;，其實是多給使用者麻煩。&#xA;考慮使用者的方便，會比讓自己方便來得重要。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;匈牙利命名法並不能幫助理解&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/%E7%82%BA%E4%BB%80%E9%BA%BC%E4%B8%8D%E8%A6%81%E4%BD%BF%E7%94%A8%E5%8C%88%E7%89%99%E5%88%A9%E5%91%BD%E5%90%8D%E6%B3%95/#%e5%8c%88%e7%89%99%e5%88%a9%e5%91%bd%e5%90%8d%e6%b3%95%e4%b8%a6%e4%b8%8d%e8%83%bd%e5%b9%ab%e5%8a%a9%e7%90%86%e8%a7%a3&#34;&gt;匈牙利命名法並不能幫助理解&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;「如果不知道變數的意義，就算知道它的型別也沒用的！」&lt;/p&gt;&#xA;&lt;p&gt;嚴格來說，這並不能算上是匈牙利命名法的缺點，&#xA;只能視為一個對使用匈牙利命名的人可能走入歧途的提醒。&lt;/p&gt;&#xA;&lt;p&gt;匈牙利命名並不是提升閱讀性的解決方案，對於理解程式碼也沒有幫助。&#xA;他雖然讓你知道一個變數的型別，但若主名稱本身意義不明，比如說 &lt;code&gt;fAaa&lt;/code&gt;，&#xA;你一樣無法知道這是一個什麼東西？&lt;/p&gt;&#xA;&lt;p&gt;因此有另一些人認為，程式人員應該良好的命名變數，而不是妄想用匈牙利命名修飾來解決一切。&#xA;妥善的變數名稱(主名)可以讓人一看就明白它的意義與用途，而這通常會比變數是什麼型態還要重要！&#xA;有一些時候，良好命名的變數甚至可以直覺的表達它的型別，&#xA;比方說看到 &lt;code&gt;WindSpeed&lt;/code&gt; 應就知道它會是一個浮點數、&#xA;&lt;code&gt;TryCount&lt;/code&gt; 就是一個整數、而 &lt;code&gt;IsOpened&lt;/code&gt; 應就是布林值。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;匈牙利命名法的時代背景&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/%E7%82%BA%E4%BB%80%E9%BA%BC%E4%B8%8D%E8%A6%81%E4%BD%BF%E7%94%A8%E5%8C%88%E7%89%99%E5%88%A9%E5%91%BD%E5%90%8D%E6%B3%95/#%e5%8c%88%e7%89%99%e5%88%a9%e5%91%bd%e5%90%8d%e6%b3%95%e7%9a%84%e6%99%82%e4%bb%a3%e8%83%8c%e6%99%af&#34;&gt;匈牙利命名法的時代背景&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;既然匈牙利命名法看來只有一卡車的缺點而沒有任何在現代必要的優點，&#xA;那麼為什麼這種命名法可以流行在程式設計領域呢？&#xA;這就需要了解一下匈牙利命名法誕生那個年代的一些背景。&lt;/p&gt;&#xA;&lt;p&gt;在古時候的程式設計領域，還沒有像現代 IDE 等的方便工具，&#xA;也缺少現代已經稀鬆平常的一些如語法變色、自動完成、語法檢查、&#xA;宣告與定義的分析搜尋、和編輯器內的查找與跳轉等等的功能。&#xA;再加上當時硬體和軟體上的技術限制，變數等符號能使用的名稱長度極為有限；&#xA;大家也不喜歡做太多層的函式呼叫，這使得內容很長的函式相當常見(這是手工最佳化的一部份)。&#xA;所以在那個時代流行一些試圖增加程式閱讀性和減少人為出錯的小技巧，&#xA;其中就包括了著名的匈牙利命名法。&lt;/p&gt;&#xA;&lt;p&gt;另一方面，模版、泛型編程還沒被發明，物件導向與多型等程式設計概念還未出現，&#xA;使得匈牙利命名的許多缺點並不明顯。&#xA;這全部的條件造就了讓匈牙利命名被需要的環境，使得其曾經大為流行。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;匈牙利命名法的現況&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/%E7%82%BA%E4%BB%80%E9%BA%BC%E4%B8%8D%E8%A6%81%E4%BD%BF%E7%94%A8%E5%8C%88%E7%89%99%E5%88%A9%E5%91%BD%E5%90%8D%E6%B3%95/#%e5%8c%88%e7%89%99%e5%88%a9%e5%91%bd%e5%90%8d%e6%b3%95%e7%9a%84%e7%8f%be%e6%b3%81&#34;&gt;匈牙利命名法的現況&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;雖然軟硬體環境的推進使得需要匈牙利命名的情景不再，但是工程人員的習慣已經養成，&#xA;對於那些已經用了半輩子匈牙利命名的人，他們總還是習慣繼續使用匈牙利命名。&lt;/p&gt;&#xA;&lt;p&gt;在某些地方，匈牙利命名法可能被推崇為「嚴謹的命名方案」，並繼續這樣的教育新的程設人員，&#xA;使得很多不明所以的新進人員以為使用這種命名法看起來比較專業，&#xA;而不明所以的公司研發單位會將其寫入設計風格規範中。&#xA;這些導致了雖然匈牙利命名法已無必要且缺點不少，但仍大量出現於產業界的程式碼中的狀況。&lt;/p&gt;&#xA;&lt;p&gt;另外，雖然匈牙利命名法常見於 C/C++ 程式，&#xA;然而匈牙利命名法並不是只能用在 C/C++ 上，&#xA;C/C++ 的各種規範中也未曾要求或推薦使用匈牙利命名法。&#xA;只是因為匈牙利命名法被發明並流行的時代剛好就是 C/C++ 流行的時代，&#xA;而在更新的程式語言出現的時候，已經不再推崇匈牙利命名了，所以不常在 C/C++ 以外的地方被看見。&#xA;這可能導致了某些人會把 C/C++ 和匈牙利命名法連結在一起，然而實際上並不是這樣。&lt;/p&gt;</description>
    </item>
    <item>
      <title>為什麼不要使用全域變數？</title>
      <link>http://www.huoschen.idv.tw/blog/programming/%E7%82%BA%E4%BB%80%E9%BA%BC%E4%B8%8D%E8%A6%81%E4%BD%BF%E7%94%A8%E5%85%A8%E5%9F%9F%E8%AE%8A%E6%95%B8/</link>
      <pubDate>Sun, 17 Mar 2019 01:10:00 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/programming/%E7%82%BA%E4%BB%80%E9%BA%BC%E4%B8%8D%E8%A6%81%E4%BD%BF%E7%94%A8%E5%85%A8%E5%9F%9F%E8%AE%8A%E6%95%B8/</guid>
      <description>&lt;p&gt;這篇文章並不完全是我的原創，文章的原始主體來自於&#xA;&lt;a href=&#34;http://www.programmer-club.com.tw/showsametitleN/c/45936.html&#34;&gt;程式設計俱樂部上相關主題討論的對話節錄&lt;/a&gt;&#xA;，&#xA;重新編排修飾後又加入了一些我自己的觀點整理而成。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;什麼是全域變數&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/%E7%82%BA%E4%BB%80%E9%BA%BC%E4%B8%8D%E8%A6%81%E4%BD%BF%E7%94%A8%E5%85%A8%E5%9F%9F%E8%AE%8A%E6%95%B8/#%e4%bb%80%e9%ba%bc%e6%98%af%e5%85%a8%e5%9f%9f%e8%ae%8a%e6%95%b8&#34;&gt;什麼是全域變數？&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;全域變數(Global Variable)是一種在較老的程式語言中廣泛被支援的一種特別的變數類型，&#xA;這種變數可以在任何時候被整個程式的任何一段程式碼引用、修改，&#xA;而它的生命週期也橫跨了整個程式的生命期。&#xA;在記憶體資源極度缺乏的時代，函式參數傳遞機制和自訂資料結構使用受限，&#xA;全域變數可能是整個程式內部傳遞資料所必須且高效的手段。&#xA;因此全域變數常見於那些由比較年長的程式語言，如 Fortran、C、C++ 等，所寫作的程式碼。&lt;/p&gt;&#xA;&lt;p&gt;到了現代，隨著程式開發愈發複雜，全域變數的缺點更顯突出；&#xA;加上硬體資源的擴展，以及新的軟體設計架構如物件導向程式設計等被提出，&#xA;全域變數的使用必要性不再。&#xA;因此許多新一代的程式語言如 Java 等，甚至就直接移除對全域變數的語法支援！&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;全域變數的缺點&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/%E7%82%BA%E4%BB%80%E9%BA%BC%E4%B8%8D%E8%A6%81%E4%BD%BF%E7%94%A8%E5%85%A8%E5%9F%9F%E8%AE%8A%E6%95%B8/#%e5%85%a8%e5%9f%9f%e8%ae%8a%e6%95%b8%e7%9a%84%e7%bc%ba%e9%bb%9e&#34;&gt;全域變數的缺點&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;變數值追蹤困難&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;全域變數的值可以在整個程式的任何地方被更改掉。&#xA;任何一個只要有使用到這個全域變數的程式碼都有可能對其值進行修改，&#xA;並且通常很難整理出全域變數在大程式裡面的工作流程與變動關係，造成開發除錯上的困難！&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;全域變數不易接受開發上的修改變動&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;如果你更改了全域變數的使用方式，你必須去檢查每一個用到全域變數的函式，做出適當的修改；&#xA;況且通常你還得注意這些全域數值被修改的時機和順序！&#xA;這些增加了程式維護上的難度，也阻礙了程式在日後擴充的道路。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;程式碼不易閱讀理解&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;使用函數參數傳遞變數的好處是，&#xA;你可以一眼看出一個函式被呼叫執行時需要參考什麼資料、又可預期什麼資料可能會被改變，&#xA;因為這些資料都展示在函式的傳入、傳出參數或傳回值上。&lt;/p&gt;&#xA;&lt;p&gt;相反的，一眼看向函式的呼叫時，無法知道這函式將會改變哪些全域變數？&#xA;實際上你得實際查閱函式的內容，並且層層深入更下層的函式，&#xA;才有可能明白會受到這個函式影響的全域變數們；&#xA;或者你也可以查閱函式的使用說明文件，如果這個函式有文件而且還沒與現實脫節的話……&#xA;如果函式多呼叫幾層，而每一層可能都會參考或改變一些全域變數的話，&#xA;可想而知整個程式的行為會非常隱晦不明，使得難以閱讀、難以理解！&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;函式或模組將不能被獨立使用&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;如果你的函式用了全域變數，那這的函式就不能獨立使用，&#xA;你無法簡單的把函式(或整個模組)抽出來用在其它的地方。&lt;/p&gt;&#xA;&lt;p&gt;因為這個模組依賴了這個可能實體被藏在其他模組的全域變數，&#xA;導致你必須要連同其他模組一起使用，而不能單獨的將一個模組抽出來另做他用。&#xA;你不一定能夠透過連結一個代位的全域變數來解決模組之間基於全域變數的連結，&#xA;除非能夠搞清楚並模擬出這個全域變數在執行期應該要有的行為。&lt;/p&gt;&#xA;&lt;p&gt;這些條件降低了程式碼的重用性、組合性、移植性、和可測試性，&#xA;同時還提高了模組間的偶合性！&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;全域變數的設計與物件導向概念格格不入&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;一個模組一旦設計了全域變數，則這個模組將不能夠產生兩個以上的實體，&#xA;立刻限制了模組複用的可能性。&lt;/p&gt;&#xA;&lt;p&gt;物件導向的重要精神之一就是每個物件擁有屬於自己的獨立狀態，而全域變數打破了這點！&#xA;撇開比較高深的名詞術語，我用較為通俗的例子來問這個問題：&#xA;「你能夠試著儘量全部使用全域變數來設計製做一個像 &lt;code&gt;std::string&lt;/code&gt; 這樣的功能模組嗎？」&#xA;如果你真的嘗試去做的話，請再試著在你的測試程式中建立 5 個 string 實體，&#xA;然後同時、或交互的使用它們並觀察結果。&lt;/p&gt;&#xA;&lt;p&gt;全域變數具有的獨有性和唯一性，&#xA;使得一個模組一旦使用了全域變數做為狀態儲存，則十之八九可肯定它將與物件無緣。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;合理使用全域變數的時機&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/%E7%82%BA%E4%BB%80%E9%BA%BC%E4%B8%8D%E8%A6%81%E4%BD%BF%E7%94%A8%E5%85%A8%E5%9F%9F%E8%AE%8A%E6%95%B8/#%e5%90%88%e7%90%86%e4%bd%bf%e7%94%a8%e5%85%a8%e5%9f%9f%e8%ae%8a%e6%95%b8%e7%9a%84%e6%99%82%e6%a9%9f&#34;&gt;合理使用全域變數的時機&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;雖然全域變數的缺點一籮筐，甚至導致比 C++ 還新的程式語言紛紛拋棄全域變數這種大怪獸！&#xA;但以 C/C++ 程式設計來說，還是有些時候必須使用全域變數，甚至使用全域變數會更好。&#xA;可是相信我，在絕大部分的情況下你不應該設計全域變數，&#xA;而且絕大部份產業界程式碼裡見到的全域變數其實都有不使用全域變數的、更優雅的寫法！&lt;/p&gt;&#xA;&lt;p&gt;少數可以合理使用全域變數的時機列舉如下：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;「常數」&lt;/strong&gt;，也就是在程式的整個生命週期內不會進行任何更動的資料。&lt;/p&gt;&#xA;&lt;p&gt;這些資料常見如數學上的 PI、或是某種資料常數表格如加密對照表、影像調色盤顏色表等等，&#xA;在需要使用它們的時候才建立物件、然後填寫資料的做法不僅囉唆，而且效率較低。&#xA;既然這些資料是固定不動的，就不存在「是誰什麼時候在哪裡改了資料」這樣的變數追蹤困難，&#xA;這時讓大家在程式各處參照使用同一個物件就是一種聰明的設計！&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;「獨體」&lt;/strong&gt; 設計模式裡的引用計數器。&lt;/p&gt;&#xA;&lt;p&gt;在獨體設計模式裡，至少必須存在一個唯一的物件引用計數器，&#xA;因此無法避免的必須使用生命週期足夠長、而且所有物件都可以參照使用的全域變數。&#xA;事實上在這種狀況下，要討論的可能是獨體設計在該環境下是否合理？&#xA;是否該物件所使用的資源真的為系統中的唯一、並且具有獨占性？&#xA;至於若採用了獨體的設計，則全域變數的使用就成為必然！&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;全域變數的補救措施以-cc-為例&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/programming/%E7%82%BA%E4%BB%80%E9%BA%BC%E4%B8%8D%E8%A6%81%E4%BD%BF%E7%94%A8%E5%85%A8%E5%9F%9F%E8%AE%8A%E6%95%B8/#%e5%85%a8%e5%9f%9f%e8%ae%8a%e6%95%b8%e7%9a%84%e8%a3%9c%e6%95%91%e6%8e%aa%e6%96%bd%e4%bb%a5-cc-%e7%82%ba%e4%be%8b&#34;&gt;全域變數的補救措施(以 C/C++ 為例)&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;有時候程式裡就是會有全域變數，不論是因為前述的合理使用、還是因為老程式碼既成的結果，&#xA;尤其在後者的狀況下如果要試圖消滅程式碼中的全域變數，往往會帶來翻天覆地的程式翻修，&#xA;以及連帶的程式不穩定、和測試工作量的暴增！&#xA;其實不管是要改善既成程式中全域變數、還是在上述合理範圍內即將加入的全域變數，&#xA;在擺脫不了全域變數的前提下，還是有一些小技巧可以稍稍減輕全域變數對整份程式碼造成的破壞力的！&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;縮減全域變數的可視範圍&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;縮小全域變數的可見範圍也就縮小了它的影響範圍、就減小了複雜度。&#xA;所以：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;只有一個函式需要參照的全域變數就應該在函式裡宣告為 &lt;code&gt;static&lt;/code&gt; 變數；&lt;/li&gt;&#xA;&lt;li&gt;只有一個程式碼檔(&lt;code&gt;*.c&lt;/code&gt; 或 &lt;code&gt;*.cpp&lt;/code&gt;)內部需要使用的全域變數&#xA;就不要定義在標頭檔(&lt;code&gt;*.h&lt;/code&gt; 或 &lt;code&gt;*.hpp&lt;/code&gt;)；&lt;/li&gt;&#xA;&lt;li&gt;沒有要給其他模組參照使用的全域變數就加上 &lt;code&gt;static&lt;/code&gt; 修飾；&lt;/li&gt;&#xA;&lt;li&gt;在獨體設計中，若使用的是 C++ 的話，&#xA;請儘量使用 class static member variable 定義引用計數，&#xA;而不要使用定義在 class 外面的全域變數。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;使用嚴謹的命名方案&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;對於暴露在外的全域變數，特別是整份程式碼都可以參照的全域變數，&#xA;我們應使用比較嚴謹複雜的命名方案來解決一些問題，寧可讓全域變數的名稱變得比較長、比較難寫，&#xA;誰叫它是全域變數呢！&lt;/p&gt;&#xA;&lt;p&gt;因缺乏上下文關係，而導致變數意含難明，所以我們應該把名稱定的更能清楚表達其作用與意義，&#xA;像是 &lt;code&gt;student_count&lt;/code&gt; 的名稱就比 &lt;code&gt;stdcnt&lt;/code&gt; 來得好；&#xA;至於名為 &lt;code&gt;aa&lt;/code&gt; 這樣的全域變數根本就是故意搞亂其他工程師，讓程式更容易產生 bug 用的！&lt;/p&gt;&#xA;&lt;p&gt;因為在上層使用環境中可能還存在其它的程式庫、甚至是上層使用者自己寫的程式碼，&#xA;為了避免名稱衝突，暴露在模組外的全域變數應加上模組名稱做為前綴，&#xA;&lt;code&gt;MYMODULE_TANK_MAX_VOLUME&lt;/code&gt; 的名稱就比 &lt;code&gt;TANK_MAX_VOLUME&lt;/code&gt; 來得妥當；&#xA;至於 &lt;code&gt;MAX_VOLUME&lt;/code&gt; 的名稱應被禁止，因為它太可能和其他的程式庫或上層使用者產生名稱衝突，&#xA;比如說一般記錄音量最大值的變數通常也可以叫作 &lt;code&gt;MAX_VOLUME&lt;/code&gt;！而反過來看亦同。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;以上改善全域變數的做法很有限、效果也很有限，沒辦法，全域變數就是這樣討厭！&#xA;所以正途還是要避免全域變數的使用才對！&lt;/p&gt;</description>
    </item>
    <item>
      <title>使用盜版軟體到底是誰得了益？</title>
      <link>http://www.huoschen.idv.tw/blog/digit/%E4%BD%BF%E7%94%A8%E7%9B%9C%E7%89%88%E8%BB%9F%E9%AB%94%E5%88%B0%E5%BA%95%E6%98%AF%E8%AA%B0%E5%BE%97%E4%BA%86%E7%9B%8A/</link>
      <pubDate>Thu, 14 Mar 2019 23:35:21 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/digit/%E4%BD%BF%E7%94%A8%E7%9B%9C%E7%89%88%E8%BB%9F%E9%AB%94%E5%88%B0%E5%BA%95%E6%98%AF%E8%AA%B0%E5%BE%97%E4%BA%86%E7%9B%8A/</guid>
      <description>&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;東亞地區軟體盜版猖獗，使用盜版軟體的心態除了不願意花錢買軟體之外，&#xA;多半還帶有一絲竊喜，覺得好像得到了便宜！&#xA;甚至中國大陸還流傳一句話：「我們的軟體授權費，早在清朝，慈禧太后就付過了！」&#xA;然而，真的是這樣嗎？&#xA;在整個盜版風氣底下，真正受害的是誰？而又是誰真正搜刮了所有的利益呢？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;學生時代我和同齡的同學們用的基本上全都是盜版軟體，這當中當然有許多原因，&#xA;除了軟體很貴沒錢買、不知道有不用錢的正版軟體存在等因素之外，&#xA;心理層面上，使用盜版軟體也是反擊這個社會、&#xA;反擊正版價錢不合理的高(至少消費者是這樣認為的)的手段；&#xA;而且反正大家都這樣，如果政府敢抓盜版的話就是政府的錯&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_1&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&#xA;！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;也因為大家都習以為常了，所以不覺得這樣做有什麼不對？&#xA;甚至在好長的一段時間裡，使用正版軟體的人還會被恥笑！&#xA;當我們使用盜版軟體的時候還會暗自竊喜，覺得得到了好處，可以不用付錢而依然享受軟體的功能。&#xA;到後來甚至有些人覺得軟體公司有義務降低售價、或免費提供給像是學生老師等這樣的族群使用，&#xA;如果政府嘰嘰喳喳的話、如果廠商要強迫我付錢的話，我們就成立「反反盜版」聯盟大聲的罵他們&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_2&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_2&#34; title=&#34;View footnote.&#34;&gt;2&lt;/a&gt;]&lt;/sup&gt;&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_3&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_3&#34; title=&#34;View footnote.&#34;&gt;3&lt;/a&gt;]&lt;/sup&gt;&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_4&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_4&#34; title=&#34;View footnote.&#34;&gt;4&lt;/a&gt;]&lt;/sup&gt;&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_5&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_5&#34; title=&#34;View footnote.&#34;&gt;5&lt;/a&gt;]&lt;/sup&gt;&#xA;！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;結果呢？&#xA;二十多年了，那些軟體大廠有被我們給罵倒嗎？或是因為我們的不滿而降價嗎？&#xA;反而我們卻愈陷愈深，愈來愈離不開他們的產品！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;為什麼會這樣呢？原因很簡單，就是競爭！&#xA;我試著用一個很簡單的例子來說明，假設你是一間公司的老闆，&#xA;而你們公司生產的產品是很多客戶所需要的，&#xA;並且因為沒有別家公司和你競爭，所以你的客戶只會、也只能買你的產品，&#xA;那麼，你會為你的產品訂多少價錢呢？&#xA;當客戶來和你討價還價的時候，你會給他折扣嗎？&#xA;然後把狀況反過來，當有很多老闆都生產和你相同用途的產品，而且價錢還差不多，&#xA;那當你面對上面情境的時候，你又會如何做決定呢？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;了解了上面的原理後，再來看看為什麼這些軟體大廠的產品都沒有競爭者(我是指有能力可以影響市場的)？&#xA;當然商場上造成此消彼長的因素很多，卻也不能忽視盜版的影響佔比夠大！&#xA;任何商品的開發成熟都需要時間，軟體也是。&#xA;就以大家可能常用的 MS Office 為例，很多人折服於它強大的功能；&#xA;但你知道早期的 Office，比如說 Excel，被視為功能虛弱的產品嗎？&#xA;你知道那個時候大多使用 Lotus 1-2-3 而不願意使用 Excel 嗎？&#xA;還好微軟還有其他產品線支持，才讓整個 Office 能夠支撐到足夠完善到大家願意去使用的時候。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;好的，那麼如果現在一間公司，比如說一間本地的小公司，推出了文書軟體，請問您願意使用嗎？&#xA;雖然這個軟體尚不健全，功能還不完整，甚至可能存在一些錯誤；&#xA;可是看看 MS Office 上萬的價格，再對比這個新軟體可能才幾個千的價錢，就先湊合著用吧！&#xA;於是這家小公司可以慢慢發展茁壯，他的產品也許會愈來愈完善，&#xA;終有一天可以在文書處理市場，或至少在本地的市場上佔有一定影響力，&#xA;到時 MS Office 不降價競爭也不容易！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;但是，這個故事完全忽略了盜版的問題！&#xA;現在可好，兩個軟體擺在你面前通通不用錢(盜版因素)，請問您選哪個？&#xA;於是真實的狀況是小公司無法崛起，&#xA;而在沒有競爭者的情況下，市場上僅剩的軟體公司擁有絕對的話語權！&#xA;&lt;strong&gt;最後，盜版真正打擊的不是那些軟體大廠，在盜版風氣下直接趴下的正是本地的軟體產業！&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;再來，既然有了盜版，我們就來看看有關抓盜版的事情。&#xA;很多人可能用了半輩子的盜版，卻從沒有被抓過一回！&#xA;然而廠商們真的不知道你在用盜版嗎？尤其在某些廠商本身還身兼系統軟體發行商的情況下？&#xA;除了少部份的真正小廠是真的無力抓盜版之外，許多都是在軟體大廠默許之下刻意不做為，好放長線釣大魚！&#xA;曾經和待過某些公司的資深同事交談過，他透露說那些軟體公司(比如說那些又小又不硬派的)&#xA;對於個體戶都睜隻眼閉隻眼，他們的目光都放在企業用戶上；&#xA;但即便是這樣，對於那些告下去可能會賠到倒閉的小企業通常也是輕輕放下，&#xA;除非那間公司是他們殺雞儆猴的對象！&#xA;這就是為什麼他們對於政府單位使用盜版一定追究到底的原因，就因為政府有底氣賠。&#xA;你說他這個不管那個放過，那真正能夠正常收錢的不就太少了嗎？&#xA;&lt;strong&gt;我想這大概就是為什麼軟體大廠的軟體都貴到嚇死人的原因了吧！&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;至於那些企業用戶其實也很可憐！&#xA;大企業被迫花天價來買軟體；&#xA;中小企業沒辦法一次買足授權的話，就只好每年上貢一些軟體稅(保護費)給那些軟體商。&#xA;你說為什麼這些公司的老闆一定要買這些軟體呢？其實他們沒有選擇！&#xA;一來是前面解釋過的，有能力抗衡的對手軟體基本不存在。&#xA;再來是&lt;strong&gt;就算你打算將就一下使用比較陽春的替代軟體，你找得到員工嗎？&lt;/strong&gt;&#xA;比如說以美編常用的 Adobe 系列軟體為例，如果老闆想改採用 GIMP 或 Inkscape，&#xA;請問目前就業市場有多少求職者會這些軟體？&#xA;那麼要不就是以更優渥的條件去吸引那些少數會用的高手，要不就是在公司裡訓練，&#xA;但不論哪一種都是很高的成本，因此老闆掂量一下後，可能就還是咬牙和 Adobe 買軟體了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;那為什麼求職的美術人員大都只會使用 Adobe 的軟體呢？&#xA;因為他們在學生時代只學了這套，反正這套又不用錢(盜版)，然後其他軟體又不如這套功能強大對吧？&#xA;再加上各科老師們的默許(沒錯你們都是幫兇)，才造就了最後這樣的市場環境！&#xA;我不是針對 Adobe，我只是拿他來舉例而已，不然您還可以再回想一下：&lt;br/&gt;&#xA;請問您整個學生時代，用什麼軟體寫作業交報告？&lt;br/&gt;&#xA;每當需要上臺報告時，你用什麼做投影片？&lt;br/&gt;&#xA;每當有需要修圖時，你使用哪一套軟體？&lt;br/&gt;&#xA;在需要畫工程圖時，電腦打開的是哪一套軟體？&lt;br/&gt;&#xA;當您在比較軟體時，是否考慮過軟體的售價？&lt;br/&gt;&#xA;還有最重要的，每當你的學生使用了你們班上大多數人都使用的軟體以外的軟體時，您是怎麼罵他們的？&lt;br/&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;而為什麼只有軟體大廠玩得起這樣的市場遊戲呢？&#xA;因為新崛起的小廠也像這樣放任盜版衝市佔的話，很容易一下子就把資金燒完了！&#xA;那麼那些大廠要怎麼回補這些早期的開支呢？只好把軟體訂的再貴一點嘍！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;於是就這樣，我們在暗自開心貪小便宜的時候，親手把本土的產業掐死在搖籃裡，&#xA;然後將我們的一切輕易的交付在那唯一的選擇上；&#xA;直到有一天成為別無選擇的時候，再來抱怨世界的不公和大佬們的貪婪！&#xA;還記得當年微軟開始要正式進軍中國大陸的時候嗎？&#xA;面對大陸地區盜版猖獗的情況，人們疑惑微軟要如何賺錢時，比爾蓋茲淡淡的說道：&#xA;&lt;strong&gt;「中國人喜歡偷，我希望他們偷我們的；等到十年後，我們再來思考如何要他們付錢！」&lt;/strong&gt;&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_6&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_6&#34; title=&#34;View footnote.&#34;&gt;6&lt;/a&gt;]&lt;/sup&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;footnotes&#34;&gt;&#xA;&lt;hr/&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_1&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_1&#34;&gt;1&lt;/a&gt;. 「成功大學 MP3 事件」, 維基百科, &lt;a href=&#34;https://zh.wikipedia.org/wiki/%E6%88%90%E5%8A%9F%E5%A4%A7%E5%AD%B8MP3%E4%BA%8B%E4%BB%B6&#34;&gt;連結&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_2&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_2&#34;&gt;2&lt;/a&gt;. 「避免商業壟斷 學生團體反反盜版」, 公視, &lt;a href=&#34;https://news.pts.org.tw/article/24449?NEENO=24449&#34;&gt;連結&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_3&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_3&#34;&gt;3&lt;/a&gt;. 「反盜版的深層結構」, 陶在樸, &lt;a href=&#34;http://intermargins.net/intermargins/YouthLibFront/YouthSubculture/AgainstIntellectualProperty/p206.htm&#34;&gt;連結&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_4&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_4&#34;&gt;4&lt;/a&gt;. 「反「反盜版」的三大理由」, 葛皇濱, &lt;a href=&#34;http://intermargins.net/intermargins/YouthLibFront/YouthSubculture/AgainstIntellectualProperty/p205.htm&#34;&gt;連結&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_5&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_5&#34;&gt;5&lt;/a&gt;. 「軟體財産權：要不要適可而止？」, 王怡, &lt;a href=&#34;http://intermargins.net/intermargins/YouthLibFront/YouthSubculture/AgainstIntellectualProperty/p203_a.htm&#34;&gt;連結&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_6&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_6&#34;&gt;6&lt;/a&gt;. 10年前的盖茨：既然中国人要偷软件，就偷我们的吧, &lt;a href=&#34;https://www.cnbeta.com/articles/tech/62988.htm&#34;&gt;連結&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>台語是什麼？可以吃嗎？</title>
      <link>http://www.huoschen.idv.tw/blog/miscellaneous/%E5%8F%B0%E8%AA%9E%E6%98%AF%E4%BB%80%E9%BA%BC%E5%8F%AF%E4%BB%A5%E5%90%83%E5%97%8E/</link>
      <pubDate>Thu, 14 Mar 2019 00:10:00 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/miscellaneous/%E5%8F%B0%E8%AA%9E%E6%98%AF%E4%BB%80%E9%BA%BC%E5%8F%AF%E4%BB%A5%E5%90%83%E5%97%8E/</guid>
      <description>&lt;p&gt;相信在臺灣生活的人，一定不會沒聽過「台語」這個詞，&#xA;但不知是否有人曾經思考過，台語是什麼，為什麼這種奇異的方言要把他叫作台語？&lt;/p&gt;&#xA;&lt;p&gt;在臺灣有一種奇異的方言普遍被叫作「台語」，而我一直以來對於這個稱呼非常的不以為然！&#xA;這種語言其實就和中國大陸福建省南方話一模一樣，&#xA;說實在的，我們小時候聽到大家都稱呼這種語言叫作「閩南語」，&#xA;不知何年何月開始，才聽到大眾漸漸的改叫它「台語」。&lt;/p&gt;&#xA;&lt;p&gt;說實在的，本來福建人要怎麼亂叫，與我也沒有太大的關係。&#xA;偏偏後來不曉得從什麼時候開始，臺灣島內流行起一股，可能是基於種族自尊心還是什麼的，&#xA;將閩南話和國家認同強勢連結在一起的活動。&#xA;於是在各種場合就可以聽到閩南話出現，其實這不打緊，畢竟別人愛說什麼方言也是自由；&#xA;但是去買個東西，對話到一半突然就被切成閩南話頻道是怎樣？&#xA;用國語與人交談到一半也可以莫名其妙就被切成閩南話頻道還切不回來又是怎樣？&#xA;以上都是生活交談，本來就不嚴謹，&#xA;那開會開到一半突然變成閩南語大會，也不會再用國語重講一遍又是怎樣？&#xA;只有少數稍微體貼一點的人會說「我說台語大家聽得懂嗎？」&#xA;本來也只是強迫聽閩南語而已，沒想到後來竟變本加厲，還要強迫大家都得說閩南話才行，&#xA;只要碰上不會說、或者不願意說閩南方言的人，動輒扣上「臺灣人怎麼可以不會說台語」的帽子！&lt;/p&gt;&#xA;&lt;p&gt;正好搭上那一陣子政府在推行「正名運動」，&#xA;於是我思考，為什麼閩南話要被稱做台語？&#xA;若閩南語不是臺語，那真正的臺語應該是什麼語言？&lt;/p&gt;&#xA;&lt;p&gt;終於有一天，又一位同事問了我「臺灣人為什麼不會說台語？」&#xA;於是我就趁機問他：「臺語的定義是什麼？」&#xA;「臺灣人說的話就是臺語」，他說。&#xA;我就回了：「臺灣族群多元，生活在這個地方的種族至少有十來種，語言數十種，&#xA;你們是什麼邏輯只把福建人的語言叫作台語？其他省份的人難道是死光了嗎？」&#xA;他接著說：「他們是後來的外省人，我們是台灣人，本來就住在這裡的！」&#xA;我說：「喔，原來是本來就住在這裡的人才叫臺灣人啊！&#xA;可這樣說的話，臺語應該是原住民的語言啊！主流有九大方言，你們怎麼一種都不會啊？」&#xA;然後他一時語塞，不知該說什麼？&#xA;我猜他心理知道原因，只是也知道這話絕不能說出口！我猜這時他心理的 OS 是：&#xA;「原住民不是人，他們是番那！」&#xA;然後他說：「原住民沒有文字，所以不能算！」&#xA;「喔，原來如此……不對啊，閩南話也沒有文字啊！」我說。&#xA;後來怎麼拗的細節我不記得了，反正最後原住民不算就是了！&#xA;我覺得原住民就算了，反正在臺灣好像也沒有人在乎原住民的樣子。&#xA;那麼各種位階與閩南人都相似的客家人呢？為什麼客語不是臺語？只有閩南語是台語？&#xA;「因為客家人太少了，說閩南語的數量最多！」&#xA;原來如此，使用最數量最大最廣泛的才有資格被叫作臺語，可是這樣也不對啊！&#xA;「如果在臺灣最多人說的話叫臺語的話，那也應該是我現在說的國語可以叫作臺語啊！&#xA;怎麼會變成福建話叫台語呢？」&#xA;最後他真的無話可答，只撂下了一句「反正我說的這個就是台語！」&#xA;當這種無恥的話都可以說出口的時候，我們沒有辦法再進行任何有意義的對話了，&#xA;因為再下去就只能剩下全然基於種族立場的攻擊，於是這次的對話就此結束！&lt;/p&gt;&#xA;&lt;p&gt;我想我這位同事絕對不是特例，類似的對話一定可以重現在很多喜歡講閩南話的人身上，&#xA;(當然前題是如果他和你願意就這個主題展開對話的話)。&#xA;於是我大概可以確立一個結論，&#xA;那就是「台語」和「閩南語」之間全然沒有任何符合邏及而經得起推敲的關聯性，&#xA;其唯一的連結來自於閩南沙文主義者強攀硬套的結果。&lt;/p&gt;&#xA;&lt;p&gt;如果您覺得我這番推論過於武斷的話，還有另外一個真實的故事可以支持我的說法：&#xA;有一個小時候和我住很近的學姊，她是原住民(那個時候叫「山地人」)。&#xA;在她上小學的時候，有一天，老師發現她竟然不會說「台語」！&#xA;還對著她說：「你怎麼可以連你的『母語』都不會講！」&#xA;當她回家和母親提起這件事，她母親非常氣憤的說：&#xA;「和你的老師說，你是山地人，你的母語怎麼排也排不到閩南話！」&#xA;後來這位學姊有沒有勇氣和她的老師這樣說我就不清楚了，&#xA;但這則真實的故事已經明白的說明了閩南主義者的蠻橫無理。&lt;/p&gt;&#xA;&lt;p&gt;如果你說這只是個個案也沒關係。&#xA;後來陳水扁當總統的時候推動了這個「鄉土語言課程」，那什麼是鄉土語言呢？&#xA;在我們這裡，鄉土語言只是寫在文件上的好聽用語，實際上就是閩南語。&#xA;至於學生來自什麼家庭什麼文化通通不重要，反正通通都來說閩南語就對了！&#xA;當時我一位學弟，也是原住民，他就拒絕上這門課，「老師要當我就當我，反正我就是不學！」&#xA;記得當時弄到連家長、校長都跑來處理這件事，&#xA;最後在家長的同意之下，才「破例」讓這位學生可以不用上閩南語課！&lt;/p&gt;&#xA;&lt;p&gt;後來我上臺北唸書，開始大量接觸到北部人，剛好認識了一位中學教師。&#xA;她說：「在我們新竹(還是桃園？太久了，我不太記得)，&#xA;學生在鄉土語言課是可以依自由的意志選擇不同的語言課程的；&#xA;若學校太小而沒有足夠的師資，幾間學校會聯合起來開課，然後上鄉土課的時候，&#xA;學生們就可能會坐校車到別的學校去上課。」&#xA;看哪！這就是城鄉差距、這就是思想差距！&lt;/p&gt;&#xA;&lt;p&gt;我對閩南方言沒有什麼感情，對於把閩南話硬稱為台語更是嗤之以鼻！&#xA;可是社會還要強迫我聽、甚至強迫我應該要會說這種方言、&#xA;更甚者還能無視我的母語而要強迫我們認同這種方言為「臺灣的語言」！&#xA;做為一種抗議，我常常喜歡讚美他們：「哎呀，你中國福建話說的好溜啊！」「你們中國人都講方言嗎？」&#xA;而且「中國」兩個字絕對不能省，就是故意要氣死那些閩南臺獨主義者。&#xA;也許你覺得我幼稚，但這可能是我在這個大環境下僅剩的表達抗議的手段了！&lt;/p&gt;</description>
    </item>
    <item>
      <title>搬離痞客邦</title>
      <link>http://www.huoschen.idv.tw/blog/miscellaneous/%E6%90%AC%E9%9B%A2%E7%97%9E%E5%AE%A2%E9%82%A6/</link>
      <pubDate>Tue, 12 Mar 2019 00:20:27 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/miscellaneous/%E6%90%AC%E9%9B%A2%E7%97%9E%E5%AE%A2%E9%82%A6/</guid>
      <description>&lt;p&gt;我打算把個人的部落格搬離痞客邦了！&#xA;至於個人在痞客邦的部落格應該還會繼續留著，只是不會再花力氣更新維護。&#xA;我的新部落格在這裡：&lt;a href=&#34;http://www.huoschen.idv.tw/blog/&#34;&gt;http://www.huoschen.idv.tw/blog/&lt;/a&gt;，&#xA;而舊的部落格是這個：&lt;a href=&#34;http://ignatius1895.pixnet.net/blog&#34;&gt;http://ignatius1895.pixnet.net/blog&lt;/a&gt;，&#xA;歡迎老朋友們舊雨新知，以後可以去新的部落格繼續閱讀支持。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;起因&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/miscellaneous/%E6%90%AC%E9%9B%A2%E7%97%9E%E5%AE%A2%E9%82%A6/#%e8%b5%b7%e5%9b%a0&#34;&gt;起因&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;為什麼要搬家呢？&#xA;那當然就是我長久以來在使用痞客邦的部落格系統上面遇到很多問題，最終導致決定出走！&#xA;但是在邏列我「個人」在痞客邦遇到的各種困難之前，我還是要感謝痞客邦！&#xA;感謝痞客邦這個免費的、中文的、在臺灣最多人聚集的部落格，&#xA;讓我可以從一個門外漢的狀態開啟寫作分享的旅程。&#xA;我想當時若沒有痞客邦的話，我應該還是會走上寫作分享的路，只是可能要再晚個幾年！&lt;/p&gt;&#xA;&lt;p&gt;首先是很多人詬病的廣告。&#xA;這部份我覺得個人還可以接受，畢竟人家給我免費的部落格系統使用，&#xA;安插一些廣告來賺取收入也是合情合理。&#xA;但是後來的廣告有點愈來愈誇張的地步，尤其是那個惱人的全版廣告，&#xA;讓我開始一點點小小的不太滿意！&lt;/p&gt;&#xA;&lt;p&gt;再來就是對我影響佔比最大的部份，寫作超不方便！&#xA;老朋友應該都發現我的部落格好幾個月才會推出一篇文章。&#xA;當然我本身細火慢燉的寫作方式是一個很大的原因，然而還有一個很大的因素嚴重加劇了這個問題。&#xA;有些朋友可能有發現，我每個時期的文章版型風格都有些變化，&#xA;那不是我趕時髦為變而變，而是不斷在嘗試在寫作和調整版型之間最佳化的過程。&#xA;我不習慣在線上平臺直接編寫文章，既不方便也沒有安全感；&#xA;我也不習慣使用類 Word 那樣的文件編輯器，就是不再習慣了！&lt;/p&gt;&#xA;&lt;p&gt;我的文章通常都是在自己的電腦上先寫作完成，&#xA;這些文章通常是用純文本編輯器、按著 Markdown 或 AsciiDoc 格式寫作的。&#xA;然後要再手工把文件編輯成 HTML 格式，還要搭配使用一些特殊的 CSS 標籤，&#xA;這樣才不會和痞客邦本身的排版發生奇異的干擾，而這整個過程是冗長又無趣的。&#xA;我試過一些自動化工具，但轉出來的效果慘不忍睹，最後還是得手工編修。&#xA;透過自動工具轉出來的文章就只有一篇，無聊到有興趣的人可以自己試著去找找看是哪一篇？&#xA;總之，這個極不方便、也不人性化、並且最後呈獻的效果也沒有多漂亮的過程，&#xA;就是最耗時間力氣、也是最容易提升懶惰心的殺手！&lt;/p&gt;&#xA;&lt;p&gt;痞客邦另一個不完美的地方是版型不佳又不易調整，包含整個網頁的版型以及單篇文章的版面。&#xA;當然，痞客邦上確實也有一些高手可以把部落格弄的還算美觀，&#xA;只是對於我這種只略略會寫點 HTML+CSS 的人來說是難以調整的，&#xA;我不知道要去哪裡寫些什麼 hack code，也花不起錢去買誰的設計來解決我的問題！&lt;/p&gt;&#xA;&lt;p&gt;而壓垮駱駝的最後一根稻草是，痞客邦不知道在什麼時候更新了系統後，&#xA;我的部落格首頁的最近文章摘要就只剩下每篇文章一部份的內文，而標題完全消失了！&#xA;我直到現在還是不清楚這到底是痞客邦的 bug、還是我自己的 CSS 修改和 HTML 文章造成的問題，&#xA;我試著自己改改設定修正，結果愈修愈亂還改不回來。&#xA;在這過程當中，累積了數年的不滿開始發酵，&#xA;我慢慢放棄把它修好的念頭，轉而興起搬家出走重新來過，一次解決所有問題的想法，&#xA;最後終於促成了實際的行動！&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;新世界新天地&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/miscellaneous/%E6%90%AC%E9%9B%A2%E7%97%9E%E5%AE%A2%E9%82%A6/#%e6%96%b0%e4%b8%96%e7%95%8c%e6%96%b0%e5%a4%a9%e5%9c%b0&#34;&gt;新世界、新天地&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;痞客邦畢竟是臺灣唯一流行的本地部落格平臺，其他可用的解決方案選擇並不多。&#xA;曾考慮過 Google 的 Blogger，但 Google 這幾年商業策略上的轉變讓我不是很放心；&#xA;也曾考慮過 WordPress 的方案，但它的複雜讓我對於資訊安全這一塊沒有把握能夠掌握得當。&#xA;最後我選擇了自架靜態部落格的方案。&lt;/p&gt;&#xA;&lt;p&gt;靜態部落格符合我的喜好：簡單、美觀、易於掌握、不容易出亂子！&#xA;但說實在的，我為了是不是要採用靜態網頁方案糾結了好一陣子，&#xA;因為靜態網頁難以做到某些功能，其中我最看重的就是留言功能。&#xA;部落格無法留言，就少了與讀者互動的部份，容易變成報章雜誌那樣單方向的訊息出刊。&#xA;最後我想通了，反正我的痞客邦部落格本來就沒什麼人在留言，我又何必這麼糾結呢？&#xA;況且我的有些讀者都會直接打電話、或用「線」程式傳訊息給我，&#xA;這是讓我能夠放心捨棄留言功能的一個大原因。&#xA;除非哪天我真的不小心出名了，迫切需要各種互動功能的話，到那時候再來考慮把它加回來吧！&lt;/p&gt;&#xA;&lt;p&gt;至於目前，若讀者真的有意見要告訴我的話，也不是沒有折衷的管道。&#xA;知道我是誰的親朋好友們可以直接發訊息給我，其他人也可以在痞客邦的這篇搬家文下面留言給我，&#xA;雖然痞客邦我不再維護了，但有訊息還是會看的！&lt;/p&gt;&#xA;&lt;p&gt;回到靜態部落格系統，我採用的網頁產生器是 &lt;a href=&#34;https://gohugo.io/&#34;&gt;Hugo&lt;/a&gt;，&#xA;這是一款 2017 年初才開始發展的新生軟體，使用簡單方便又快速，&#xA;並且版型漂亮，至少可以與痞客邦上面要花錢的版型相比。&#xA;而 Hugo 上面成千上萬的版型都是自由的！&#xA;此外，Hugo 方案的自訂功能亦相當豐富，&#xA;像我的新部落格自己東改西改、增刪導覽列等客製化修改全都非常簡易，&#xA;幾乎自己翻一翻 README 檔就可以知道如何去完成了！&lt;/p&gt;&#xA;&lt;p&gt;最重要的是，Hugo 支援許多的輕量標記語言。&#xA;所以我可以不用再把自己的文章在不同的格式間轉來轉去，還轉不漂亮！&#xA;我現在甚至可以把一些我平常就有在整理的個人手札筆記等，&#xA;經過簡單的文句修飾後就能直接丟到自己的網站伺服器去。&#xA;這裡要套用我自己以前說過的相似話語：&#xA;「當寫作變得更容易、更沒有阻礙，就可以更經常的發佈新文章，更容易將一時的想法寫下來！」&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;新舊交接&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/miscellaneous/%E6%90%AC%E9%9B%A2%E7%97%9E%E5%AE%A2%E9%82%A6/#%e6%96%b0%e8%88%8a%e4%ba%a4%e6%8e%a5&#34;&gt;新舊交接&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;至於我原來張貼在痞客邦的舊文章未來將如何處理？&#xA;我的想法是，舊的文章就讓他留在那裡吧！&#xA;我有空的時候會慢慢把一些比較容易轉移的舊文章轉貼在新的部落格，&#xA;但有些比較難轉換的可能就算了，或是至少等我更有空的時候再去做。&lt;/p&gt;&#xA;&lt;p&gt;我搬家離開痞客邦，也就是不再花力氣去維護那個地方，&#xA;但沒有特別的事情發生的話就不會去對他們做什麼多餘的處理。&#xA;我發現有部份的技術文章點閱率較高，大概網友喜歡去查特定的資料吧。&#xA;這些朋友們可以放心，那些資料還會在那個地方，直到痞客邦把他們變不見為止！&lt;/p&gt;&#xA;&lt;p&gt;就這樣，希望我和讀者們都可以適應新天地！&lt;/p&gt;</description>
    </item>
    <item>
      <title>關於資料備份這件事</title>
      <link>http://www.huoschen.idv.tw/blog/digit/%E9%97%9C%E6%96%BC%E8%B3%87%E6%96%99%E5%82%99%E4%BB%BD%E9%80%99%E4%BB%B6%E4%BA%8B/</link>
      <pubDate>Mon, 03 Dec 2018 00:00:00 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/digit/%E9%97%9C%E6%96%BC%E8%B3%87%E6%96%99%E5%82%99%E4%BB%BD%E9%80%99%E4%BB%B6%E4%BA%8B/</guid>
      <description>&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;關於數位資料的永續議題，我在之前的文章有寫過&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_1&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&#xA;，結果文章寫太長，沒什麼人看得下去……&#xA;但即便是這樣，那篇文章對很多問題也只有點到為止，並未深談(沒錯，數位時代的困難和應對太多了)！&#xA;所以這篇文章，我想要以更淺顯一點的方式，鎖定在資料備份的議題上，給一些實務層面的概念和實行方式。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;另外，對於覺得資料備份很重要，但不習慣看長篇文章、也沒有興趣知道細節論述來龍去脈的人，&#xA;可以直接看最後面的結論，閱讀我建議大眾對備份這件事所建議的&lt;a href=&#34;#conclusion&#34;&gt;簡短總結&lt;/a&gt;即可！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_1_數位資料備份的重要性&#34;&gt;1 數位資料備份的重要性&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;對於在數位時代長大的小孩，我想數位資料的重要性無需多提，&#xA;畢竟沒有人希望自己畢生的資料有一天就這麼的消失殆盡。&#xA;一個簡短的故事可以說明一切，想想您是否有遇過或看過別人遭遇類似的事情：&#xA;一位父親抱著整臺電腦三更半夜到處去求爺爺拜奶奶，&#xA;「拜託一定要幫我把電腦修好，我女兒從小到大的照片都在裡面啊！」&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;數位資料其實非常的脆弱，使用傳統紙本保存的資料可以存放數十年到上百年不等；&#xA;而卻少有保存在同一個數位裝置的資料能夠保存超過十年！&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_2&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_2&#34; title=&#34;View footnote.&#34;&gt;2&lt;/a&gt;]&lt;/sup&gt;&#xA;還好，數位資料的完整複製非常容易，因此我們通常會將資料複製數份放在不同地方，&#xA;並且不斷的複製資料到新的數位裝置上，以此來延續數位資料的保存壽命，&#xA;這就稱之為資料備份。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;然而即便對於擁有資料備份概念的人，往往對於備份的方法不對、或策略不佳，&#xA;以致仍持續遭受資料損毀消失的風險。&#xA;因此接下來，我要分享一些我個人對資料備份的相關見解和建議策略。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_2_給資料備份新手的一些初級概念&#34;&gt;2 給資料備份新手的一些初級概念&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_2_1_重複的資料才叫作備份換個地方存檔不叫備份&#34;&gt;2.1 重複的資料才叫作備份，換個地方存檔不叫備份&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;多於正常所需要的數量才能叫作「備份」，所以把資料多複製一份放在別的地方才叫備份，&#xA;只是把原來存在 A 處的檔案改存到 B 處去不叫作備份，這樣資料損失的風險還是沒有降低。&#xA;原來我覺得這個蠢問題是不需要提醒的，直到我看到「高登工作室」所貼的案例分享&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_3&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_3&#34; title=&#34;View footnote.&#34;&gt;3&lt;/a&gt;]&lt;/sup&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;quoteblock&#34;&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;有人拿著一台筆電要來救資料，因為裡面有許多珍貴的照片，&#xA;但是電腦一開就聽到咔咔咔的聲音，我的判斷是硬碟已經壞掉，&#xA;除非送硬碟救援，不然資料是不可能救出來的！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;而對方卻說：「怎麼會這樣？我這台筆電就是拿來備份資料的說」&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;看出他的說法有什麼問題了嗎？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;沒錯！把資料儲存在一個地方不叫備份，那叫儲存或複製。&#xA;備份是你在原有的一份資料之外，另外儲存&#xA;「額外的一份」資料才可以叫備份，&#xA;所以備份是你的第二份、第三份…​第 N 份資料，&#xA;但一定不會是「僅有的一份」。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;div class=&#34;attribution&#34;&gt;&#xA;— 高登工作室&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_2_2_不要用外接硬碟備份資料&#34;&gt;2.2 不要用外接硬碟備份資料&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;雖然只要是儲存媒體都可以用來備份資料，但一般來說我極不推薦使用外接硬碟來備份資料。&#xA;為什麼？一般的想法，備份的東西不就是希望在主要的東西失去以後能夠頂替上來的嗎？&#xA;那你怎麼能夠拿一個期望壽命比你主要的儲存裝置還低的東西來做為備份裝置使用呢？&#xA;用白話文來說就是，外接硬碟故障的機會一般比裝在電腦裡面的硬碟來的高，&#xA;你又怎麼能夠希望在你的主要硬碟故障的時候，一個比主要硬碟更容易損壞的東西可以派上用場？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;外接硬碟因為一些設計條件和使用環境的影響，通常較容易損壞，至少比被裝在電腦裡的硬碟還容易損壞，&#xA;原因如：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;ulist&#34;&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;外接硬碟通常使用 2.5 吋硬碟，其本來就比常見的 3.5 吋硬碟來得嬌嫩。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;外接硬碟因為空間限制，其所能夠設計的防震散熱等條件較嚴苛。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;外接硬碟遭受振動、摔落的機會比機箱內的硬碟多得多。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;外接硬碟所使用的電源(通常為 USB 埠供電)較不穩定，並且使用中突然斷電的機會(如線鬆脫)也較高。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;我曾遇過一個朋友的案例，有一天他把外接硬碟插上筆電時，&#xA;可能因為接觸不良之類的原因吧，總之系統沒能成功識別檔案系統，於是跳出是否要格式化硬碟的選項，&#xA;然後這位朋友就直接按下了「確定」，&#xA;於是他那個用來儲存所有重要檔案的「唯一備份」硬碟就這麼被格式化了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;另外一個親身經歷，我以前有用外接硬碟備份資料的習慣，&#xA;插上電腦複製完資料並稍事檢查後，就直接把它放進盒子放到櫃子裡靜躺。&#xA;過了許久後(我想應該有一兩年吧)，當我再次把它拿出來用時，它竟然已經壞掉了！&#xA;雖然那個硬碟在保固內可以換新，但我從此沒再敢拿外接硬碟來備份資料！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_2_3_不要用舊硬碟備份資料&#34;&gt;2.3 不要用舊硬碟備份資料&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;不建議任何狀況下使用舊硬碟來備份資料，理由與前述相同，&#xA;因為它的期望壽命比需要被它頂替的裝置更低。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;有些人每過一陣子就會買新的硬碟，然後把舊硬碟退下來。&#xA;可是舊的硬碟還能使用啊，那退下來直接丟掉不是可惜了嗎？那就轉去做資料備份使用吧！&#xA;但在我看來，這個想法是有問題的，&#xA;應該要把新買的硬碟用做資料備份使用，然後把原來做為資料備份使用的硬碟改做為主要資料硬碟使用才對！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_2_4_不要用隨身碟備份資料&#34;&gt;2.4 不要用隨身碟備份資料&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;雖然隨身碟很方便也很便宜，但不建議使用隨身碟來備份資料，理由與前述相同。&#xA;畢竟隨身碟是設計來方便使用的，而不是來保存重要資料使用的。&#xA;撇除製造上的品質問題，就以儲存資料的原理層面來看，&#xA;隨身碟所使用的快閃記憶體比硬碟磁盤還要不耐使用，甚至放著不用也會讓資料流失！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_2_5_不要用固態硬碟備份資料&#34;&gt;2.5 不要用固態硬碟備份資料&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;固態硬碟在近幾年流行起來，價格也在降低。&#xA;但要注意，固態硬碟最吸引人的地方是「速度」，而不是「耐用性」，在設計上就是如此。&#xA;固態硬碟使用的是與隨身碟一樣的快閃記憶體技術，即使在一些區塊管理演算法的加持下，&#xA;其期望壽命依然比傳統硬碟少得多。&#xA;並且當發生硬碟損壞的情況時，傳統磁盤式的硬碟還可以送資料救援公司花錢救資料；&#xA;而基於快閃記憶體的儲存媒體則是連救都沒得救，壞了就是壞了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;另外，固態硬碟的容量大小通常比傳統硬碟小得多，拿來備份大量資料不覺得很不划算嗎？&#xA;而且既然是用在備份的用途上，肯定不會平常需要頻繁存取，傳統硬碟的速度不快這缺點也變得無關緊要了！&#xA;在這條件下，我是想不出來有什麼理由會想拿固態硬碟來做為資料備份使用？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_3_資料備份進階&#34;&gt;3 資料備份進階&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;備份，不就是把儲存媒體插上電腦，然後把電腦上的檔案複製進去，&#xA;然後退出媒體，收好，就這樣而已嗎？有什麼好進階的呢？&#xA;事實上關於資料備份的議題還真不少，有些事情若沒注意到，&#xA;可能會讓你自以為資料很安全而實際上並沒有降低資料損毀遺失的風險，&#xA;或浪費過多的時間、金錢、精力在沒有實際效用的消耗上。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;對於已經擁有備份意識、已經有在實行資料備份行為的人，&#xA;建議繼續往下看看我對於資料備份的見解，看看是否能夠更進一步改善您資料備份的效用。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_3_1_使用不同的儲存媒體&#34;&gt;3.1 使用不同的儲存媒體&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;資料備份就是把原有的資料複製一份放到別處去，然而要放去哪？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;除非是因為應用軟體的缺陷，不小心把你的檔案給存壞了這種狀況，&#xA;比如說從前的 MS Office 把檔案開著開著就有可能弄壞檔案&#xA;(至於現在這問題是否還存在我就不知道了，我已經好多年沒用 MS Office)&#xA;，否則在原地複製一份的作用並不大，&#xA;因為一旦硬體裝置發生故障，就是上面的所有檔案一次全沒了！&#xA;十幾年前，還有人會把檔案備份到同一個硬碟的不同磁碟分割下(也就是 C 槽 D 槽等)，&#xA;畢竟那時候的作業系統比較脆弱，有機會會把檔案系統給弄壞。&#xA;可是現在作業系統普遍比較強健，很少再發生無故把檔案系統損毀的案例了；&#xA;反而是不同的磁碟分區都還是在同一顆硬碟上，當發生硬體損毀時，上面資料一樣全毀！&#xA;因此請謹記，&lt;strong&gt;備份的資料一定要放到另一個實體儲存裝置上&lt;/strong&gt;，這樣才能夠第一步的真正分攤風險。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;然而，同一臺電腦上的不同儲存媒體也仍然承受著相當大的資料損壞風險！&#xA;例如因雷擊而導致的硬碟損壞就會同時摧毀你電腦裡的所有硬碟，&#xA;例如駭客入侵、或者前一陣子很流行的勒索病毒也會一次對電腦上所有的儲存媒體下毒手，&#xA;就算都沒有這些意外，備份硬碟與主要硬碟在開機時一起過電、一起運作，&#xA;它們理論上的故障時間其實也沒有相差太多！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;因此，備份所使用的硬碟或其它儲存裝置應該要另外存放，&#xA;除了備份或還原時以外，平常不與系統接在一起。&#xA;像我從前就會去裝硬碟抽取盒，然後要備份資料的時候才把備份硬碟插入電腦主機，&#xA;然後開機進行資料備份工作。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;理論上，做到這裡所描述的使用不同儲存媒體來備份資料，就已經足夠安全了；&#xA;接下來要面對的主要反而是人心、習慣、與惰性所帶來的問題！&#xA;也就是說，接下來要講述的方案幾乎都是在花錢解決人的各種習性所造成的問題，&#xA;若您自認非常勤勞並且一絲不苟的話，就可以不用再理會下面所論述的內容。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_3_2_備份工作的阻礙及備份週期增加的原因&#34;&gt;3.2 備份工作的阻礙及備份週期增加的原因&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;我就先用簡單的問句來破題吧！&#xA;那些平常有在做備份、或是自認有在備份的人，&#xA;請問你上一次備份你的檔案是在多久以前的事？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;截至目前為止所說明的備份方案在實務操作上存在巨大的問題，&#xA;就是執行資料備份的週期會不自覺的被拉的很長，導致當資料損毀遺失情況發生時，&#xA;從今日至上一次執行備份工作之間的所有資料都無法回復。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;我們來分析看看造成資料備份週期被拉長的原因有何？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;olist arabic&#34;&gt;&#xA;&lt;ol class=&#34;arabic&#34;&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;硬體設備裝卸費時費力&lt;/strong&gt;：&lt;br/&gt;&#xA;執行備份工作之前必須要把備份硬碟從某處挖出來裝上電腦，你絕對不會想要常常去做這件事。&#xA;何況不是每個人都像我有裝硬碟抽取盒，所以拆裝硬碟通常還需要拆卸電腦主機外殼等工作，&#xA;這直接造成只有在時間過了很久以致你內心不安的時候才會想做這件事！&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;工作中斷&lt;/strong&gt;：&lt;br/&gt;&#xA;我想大部份人的電腦並不支援硬碟熱插拔，所以當你動念想要備份資料時，需要將電腦關機再開機。&#xA;除了開關機的時間消耗外，這還導致你無法在正在處理某些工作時、&#xA;或玩電動、或看電影的時候進行資料備份工作。&#xA;這提高了你打消執行資料備份工作念頭的機會，也就拉長了資料備份的週期。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;資料整理&lt;/strong&gt;：&lt;br/&gt;&#xA;我想現代人需要備份的資料可能不再是幾張磁碟片的大小，而是動輒上百 GB、數量上萬的資料，&#xA;這麼大量的資料光進行複製工作通常就足以消耗數小時甚至一整天，&#xA;所以你一定不願意常常執行備份的工作，至少不願意在週末突然想到的時候來做這件事！&#xA;另外對於這麼龐大的資料，通常人不會甘願無腦式的直接複製，而還會想要整理一下，&#xA;比如說把之前亂放在電腦各處的檔案集中到 D 槽去、刪除一些不需要的檔案和過時的檔案等等，&#xA;這些額外的工作提高了執行備份時的體力和時間消耗，使你不會願意輕易執行備份工作，&#xA;也就又拉高了備份週期。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;那要如何解決這些問題呢？就是要盡可能的降低每次執行備份工作的成本，&#xA;做到讓你動念時就可以隨時執行備份工作的程度，這樣你就可以三天兩頭備份資料，&#xA;甚至讓電腦隨時都在進行資料備份，達到縮減備份資料與現行資料的版本落差。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;從前我就是採用硬碟抽取盒機制來備份資料，導致備份週期長達數個月，&#xA;去年硬碟壽終正寢時，我的備份資料竟然是半年前的！&#xA;在痛失半年間的資料後，我狠下心來花了一萬多塊錢買了 NAS。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_3_3_減少備份工作的阻礙&#34;&gt;3.3 減少備份工作的阻礙&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這裡提出一些建議，來解決執行備份工作前所會遭遇的阻礙：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect3&#34;&gt;&#xA;&lt;h4 id=&#34;_3_3_1_設置伺服器&#34;&gt;3.3.1 設置伺服器&lt;/h4&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在家裡放一臺備份資料專用的檔案伺服器，這臺機器就長時間處在開機待機狀態，隨時準備接收備份資料，&#xA;所以當需要備份時便無需再拆裝什麼東西或甚至不需要走過去把機器開機。&#xA;機器雖然一直開著，但應該長時處在休眠待機狀態，只有在備份工作開始時才被喚醒，工作完成後很快又去睡了，&#xA;所以平時的電力消耗微乎其微，沒工作的時候甚至也不會對硬碟通電，硬碟壽命得以保障。&#xA;雖然安置一臺伺服器對一般人來說並不輕鬆，但這樣的工作做一次即可，&#xA;之後每次執行備份工作時，便可在工作不中斷的情況下直接將檔案上傳給備份伺服器。&#xA;而由於所走的通常是家裡的區域網路，網路傳輸速度是比網際網路快得多幾個數量級的。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect3&#34;&gt;&#xA;&lt;h4 id=&#34;_3_3_2_使用增量備份機制&#34;&gt;3.3.2 使用增量備份機制&lt;/h4&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;增量備份就是每次備份時只複製自上次備份以來被新增、移除、過更動過的檔案，&#xA;這樣可以略過大量不動的檔案，減少每次備份所需要的時間；&#xA;不過這種增量備份請一定要使用軟體來做，比方說 tar 或 rsync，&#xA;千萬不要手工做這些事，否則不只沒有減輕負擔，還增加了遺漏的風險！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect3&#34;&gt;&#xA;&lt;h4 id=&#34;_3_3_3_使用檔案同步機制&#34;&gt;3.3.3 使用檔案同步機制&lt;/h4&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;除了增量備份外還有一種比較炫的同步備份機制，就是讓兩邊保持一樣的檔案結構，&#xA;在執行備份工作時只需比對兩邊的檔案樹有什麼不同，然後複製缺少的或修改過的、刪除多餘的即可。&#xA;同樣的，請使用軟體如 rsync 等來做這個工作，而不要手工來做！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;同步備份比起增量備份的好處是兩邊的資料結構是一樣的，&#xA;當你隨時需要檔案時可以隨時進入伺服器抓取特定檔案；&#xA;而在提取增量備份內的檔案時，通常需先將檔案從壓縮中解開。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;而比起增量備份的缺點就是同步備份比較難保留版本變更記錄，&#xA;比方說在增量備份機制中進行還原時，可以指定要還原到某一次執行備份時的狀態；&#xA;而同步備份下通常只能拿到最新的檔案，使得在面對如資料誤刪或遭受資料入侵綁架等狀況時&#xA;較難以招架！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect3&#34;&gt;&#xA;&lt;h4 id=&#34;_3_3_4_自動執行備份工作&#34;&gt;3.3.4 自動執行備份工作&lt;/h4&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;經過伺服器架設與增量或同步備份的選定後，&#xA;除了第一次進行備份工作時以外，每一次進行備份工作的時間縮短了。&#xA;備份所需要的時間依兩次備份間的資料差異而不同，&#xA;而因為備份頻率的縮短，兩次備份間的資料差異通常不會很大，&#xA;此又會更進一步的縮短每次備份所需要的時間。&#xA;以我個人的情況而言，每次備份所消耗的時間約在數十秒至幾個分鐘之間，&#xA;這個成本已經低到我可以在電腦用到一半的時候，隨時想要就可以執行一下備份的地步。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;因為備份的成本降低，執行檔案整理後再進行備份的心理壓力會降低，使得這個阻礙不再存在！&#xA;你可以隨時整理檔案，然後執行備份，可以整理一點點就備份一點點，沒弄到的下次再整理再備份，&#xA;而無需給自己心理壓力必須在本次的備份前完成什麼程度的資料工作。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;更進一步，你還可以設置自動執行備份工作，使得連先想到備份然後再點一下執行備份的步驟都免了！&#xA;你可以設定自動在每週的什麼時候，或每日的什麼時候讓電腦自動執行備份的工作，&#xA;甚至有一些比較酷的軟體還可以在背景工作，&#xA;當偵測到某些被監視的資料夾發生檔案異動的時候就自動執行備份工作！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;另外，不要問我 Windows 要怎麼設定，我也不會，我都直接改 crontab。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_3_4_從_raid_談起相同的備份條件以三為限&#34;&gt;3.4 從 RAID 談起，相同的備份條件以三為限&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;說到備份，有一個古老的(但仍然好用)技術就會被提起，叫作鏡像磁碟陣列(RAID 1)。&#xA;磁碟鏡像的原理很簡單，就是透過硬體或軟體把兩顆以上的硬碟組成一個群組，&#xA;把它們當作只有一顆硬碟來使用，所有對硬碟的讀、寫操作都會同時對群組中的所有硬碟執行同樣的操作。&#xA;這樣，所有的硬碟裡都會擁有相同的資料，當發生硬碟損壞時，只要不是全部的硬碟一起損壞，&#xA;我們都可以簡單的把壞的硬碟拔掉，把其它硬碟的資料直接對拷到新硬碟後裝上即可。&#xA;這樣只要群組中的硬碟有一個是好的，就可以忍受在其他硬碟損壞的狀況下繼續正常工作，&#xA;而理論上群組中的硬碟同時損壞的機率非常低，尤其當硬碟數量愈多的時候機率愈低！&#xA;那這樣，我們用 100 個硬碟來組一個群組不就萬無一失了？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這裡就要提醒一個迷思，任何的備份方案都是有失效條件針對性的。&#xA;以磁碟鏡像為例，它所針對的失效條件即為硬碟自然老化所造成的故障，&#xA;在這個情況下，使用 100 顆硬碟而他們全部同時老化死亡的機率當然是非常低，&#xA;但若發生了不是它所針對的失效條件呢？比如說被雷擊？我看哪怕是 10000 顆硬碟都會 100% 全部報銷！&#xA;前幾年日本海嘯所引發的核電廠事故不就是個活生生的例子！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;若您有足夠的資金多加一顆硬碟來組成磁碟陣列的話，甚好，可以減少機件故障帶來的資料喪失風險；&#xA;若您能夠投資三個硬碟來組成鏡像陣列的話，更好，基本上已經可以忽略自然老化所帶來的資料喪失風險；&#xA;但若您要投資四個以上的硬碟來組成鏡像陣列，事實上是不會有什麼壞事情，只不過有點浪費了！&#xA;如果您能夠有多餘的閒錢一次購買這麼多多餘的硬碟，何不把錢拿去再買一臺伺服器電腦呢？&#xA;至少這樣可以減少單一一臺電腦的電源異常或系統異常導致同臺電腦硬碟全部損壞的機會！&#xA;以此類推，若你有錢在自己家裡放下超過三臺的伺服器，何不把一些伺服器改放到別的地方呢？&#xA;這樣至少有一天你家失火的時候，這些伺服器不會一次全燒光！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;結論就是，每一個資料備份相關的手段都有特殊失效條件的針對性，&#xA;對於針對同一個失效條件的同一種手段的冗餘數量，&lt;strong&gt;建議以三為限&lt;/strong&gt;。&#xA;不要問我三這個數字怎麼來的，這只是一個經驗值，你喜歡的話改成四或五也可以。&#xA;而且這個數字不是絕對必須遵守的，冗餘太多了真的不會有壞事，&#xA;只是包含資金在內的各種資源開銷比較大而沒有效率而已！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_3_5_購買_nas_代替自行組裝架設伺服器&#34;&gt;3.5 購買 NAS 代替自行組裝架設伺服器&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;使用獨立運作的伺服器來代替每次拆裝儲存媒體的工作確實是減輕不少平常的負擔，&#xA;然而一般人對於「伺服器」這三個字是多麼的陌生，甚至連聽說過伺服器這個詞的都少之又少，&#xA;遑論要求大家要有能力能夠自行在家裡架設備份用的檔案伺服器？&#xA;如果能夠像買電腦一樣直接購買現成的伺服器回家插電使用的話不是最好不過了嗎？&#xA;在從前伺服器是很貴的，但近年許多平價的伺服器被推出，拉起了家用伺服器的市場，&#xA;讓在家裡安裝伺服器這件事變得不再那麼不容易，&#xA;其中專門被用來用做檔案備份和分享用途的小型伺服器就叫作 NAS。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;購買現成的 NAS 回家可以省去大部份非數位領域專業的一般使用者研究、安裝、配置、和管理&#xA;一臺伺服器所需要消耗的大量心力，雖然目前還做不到隨插即用的地步，&#xA;但一般人按照產品說明書的步驟完成伺服器的設置和用戶電腦端的設定已不再是太困難的事情。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;即便對於像作者我這樣的半專業用戶而言，購買 NAS 代替自行組裝的伺服器也是極具吸引力的！&#xA;相比於自己拿零件來組伺服器，專門的 NAS 機器小巧易安放於家中角落。&#xA;而且 NAS 的最大耗電功率通常約在 20 瓦上下，&#xA;相比一般 x86/64 架構的電腦動輒上百瓦的電力消耗是節省不少，&#xA;若再加上 NAS 大部份的硬體設計讓其可以在閒置時自動關閉硬碟並休眠這點，&#xA;則其平常的電力消耗更是低到可以忽略。&#xA;當然，上面所提及的優點也可以使用一些準系統等微型系統來做到，我個人當時也有思考過這個方案，&#xA;然而這些微型系統通常都使用 2.5 吋的硬碟，&#xA;然而 2.5 吋硬碟和 3.5 吋硬碟在耐用性和選擇性上相差是很大的！&#xA;除了專用 NAS 機器外，我在市面上找不到使用筆電規格機板又可以內接 3.5 吋硬碟的設備，&#xA;於是最後我還是購買了一臺 NAS 做為我家的檔案伺服器使用。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_3_6_nas_的選購方針&#34;&gt;3.6 NAS 的選購方針&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;市面上的 NAS 琳琅滿目，該如何選呢？&#xA;簡單來說我的建議是：&lt;strong&gt;買能夠塞進兩顆硬碟的最精簡最便宜產品即可！&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;要買兩槽以上的機器是因為這樣才能裝兩顆以上的硬碟來做鏡像磁碟陣列，而五槽六槽以上的就太多了，&#xA;如果你有閒錢買這種的，還不如去購買更多臺的 NAS 機器！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;然後面對市面上眼花撩亂的各種 NAS 功能，我們又需要怎麼樣的呢？&#xA;既然買 NAS 是為了做檔案備份用途使用，那我們就只需要可以設定自動備份檔案的機器即可；&#xA;至於多出來的各種什麼家庭檔案共享、家庭多媒體中心、媒體串流輸出……等等通通不需要，&#xA;也最好把這些功能在設定中直接關閉！&#xA;為什麼？還是基於風險管理原則。&#xA;機器上運作的功能愈多，就愈增加硬碟的讀寫消耗、也增加更多因程式軟體弱點而造成的風險，&#xA;尤其即時串流的解碼很吃硬體效能，這種硬體又會提高耗電。&#xA;特別是若你把 NAS 設定成可以經由網際網路存取(也就是你人在外面仍然可以連線到家裡的 NAS 來存取檔案)，&#xA;則又會增加被入侵的風險，尤其服務開愈多風險愈大！&#xA;那我們再回過頭來審視買 NAS 是為了什麼？不就是為了分散保存檔案、減少檔案損失風險嗎？&#xA;那搞這麼多提高風險的東西又是為了什麼？&#xA;如果你的家裡真的需要多媒體分享中心，當然可以，&#xA;不過推薦另外買一臺機器來使用，而不是把這個需求和資料備份的機器弄在一起！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;對於單純的檔案備份工作而言，市面上最低階的產品大概都足以勝任，&#xA;所以我建議 NAS 只要購買最低階(但要兩槽以上)最便宜的即可！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_3_7_購買_nas_或其它專用機器值得嗎&#34;&gt;3.7 購買 NAS 或其它專用機器值得嗎？&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;很多人即使知道一臺專用的檔案備份伺服器是很方便的，但面對它的價錢卻又買不下手！&#xA;確實，以我後來買的 NAS 為例，機器就花了我五千多塊錢，再加上兩顆硬碟後，總共花費一萬二上下。&#xA;要說這個錢值不值得花？讓我們思考一下這個狀況：&#xA;有一天你的硬碟終於壽終正寢，而這顆壞掉的硬碟裡面存放了你所累積的保貴資料，&#xA;幾經掙扎後，你把硬碟送去給專門的硬碟資料救援公司去搶救，&#xA;資料救援的費用應該在數萬塊上下，實際會依據救出來的資料大小增減費用。&#xA;那麼若你這時願意花費數萬元來救回你心愛的資料的話，何不在一開始花費只有好幾分之一的錢來做長久的資料備份方案呢？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;當然不設置相關的機器設備也可以做到備份與保存資料，&#xA;如同我前面所述，&lt;strong&gt;若您擁有紀律和毅力來強迫控制自己手動備份檔案的週期的話，使用硬碟抽取盒的方案即足矣！&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_3_8_購買線上空間代替家用_nas&#34;&gt;3.8 購買線上空間代替家用 NAS&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;購買 NAS 的方案即便已經省下了大量自己架設伺服器所需要的知識和技術開銷，仍然無法做到開箱即用。&#xA;例如網路相關設定，NAS 即便把整臺機器都整合好了，也沒辦法預先知道你家的網路環境長什麼樣子、&#xA;沒辦法預先知道要對它連線的電腦該如何設置？所以這些最終還是需要由用戶來進行設定。&#xA;因此對於大量的非專業電腦用戶來說，NAS 或其他專用伺服器仍然是個具有門檻的方案，&#xA;好在也是最近十年興起的線上資料儲存和資料同步服務補足了這方面的需要！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;所謂的線上儲存，其實就是讓別人去處理伺服器的建立與管理相關工作，然後你直接使用他建立好的伺服器就可以了！&#xA;當然對方可能會向你收取一些管理費用，並且依據收費的多寡來開放你所能使用的空間容量等資源，&#xA;也就是說我們可以無需花費心力在伺服器相關的工作上，直接購買別人所提供的服務、租用已經建置完成的伺服器空間即可！&#xA;提供這樣服務的公司也不是少數，比較有名氣的如 Dropbox 和 Google Drive 等皆是。&#xA;線上資料儲存服務的最大優點就是使用和配置非常容易！&#xA;通常只要能夠連線到相關服務的網頁、下載安裝同步軟體、輸入身份認証資料後，&#xA;背景程式就會開始默默的同步特定資料匣下的所有檔案。&#xA;這種方案不需要使用者了解 TCP/IP 連線和網路位址、不需在家裡拉線和設置網路分享器、&#xA;也不需要處理到底需要幾個磁碟鏡像和資料備援回復功能，還可以在外地隨時同步檔案而無需擔憂入侵風險等，&#xA;其方案的使用難易度與一般聊天通訊軟體相似，足以讓廣泛的一般使用者輕鬆使用。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;另一方面，線上服務的缺點其實也不少，首先它的費用不算低。&#xA;雖然線上服務通常都有免費方案，但免費方案的容量通常不敷現代人的使用！&#xA;以 Dropbox 為例，截至 2018 年 11 月為止，&#xA;其購買方案中的 1 TB 儲存空間需要花費一年 99 元美金來租用，大約就是一年 3000 元新臺幣左右；&#xA;但同個時間的 4 TB 硬碟大約 3800 元新臺幣，若使用兩顆硬碟設為鏡像陣列的話，平均 1 TB 約需花費 1900 元購買，&#xA;若假設一顆硬碟可以使用三年的話，平均 1 TB 使用一年的成本約為 650 元，&#xA;就算再算上 NAS 機器的成本攤提(假設 5500 元攤兩年)和一些電費支出，&#xA;1TB 空間使用一年的成本也才 1400 元左右，整整是線上方案的一半！&#xA;上面的算式比較保守一些，都是拿保固期當設備壽命來計算，若實際的設備壽命更長的話，則成本將更低，甚至可以再砍半！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;線上服務提供的容量有限，一樣以 Dropbox 為例，一個帳戶最多也只能購買到 2 TB 的儲存空間，&#xA;對於有些檔案比較龐大的用戶來說可能會不夠使用；&#xA;其他的線上服務供應商也許提供的容量更大，但總有人不敷使用，比如說常拍照片的攝影師或常拍影片的 youtuber！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;線上服務的資料傳輸速度會慢很多。&#xA;因為資料都是透過網際網路與服務供應商的伺服器連線，其速度先天就不如自己家裡的區域網路，&#xA;即便是你家中的兩臺電腦要同步資料，這資料也需要在網際網路上繞一圈，&#xA;若再加上您家裡所申裝的網路速度不夠快、或者對方網速壅塞等因素又會更進一步降低實際的網路傳輸速度。&#xA;因此若您經常需要同步大型檔案的話，請記得最好去購買大型網路公司所提供的相關服務，&#xA;或乾脆直接在自己家裡放個伺服器吧！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;線上服務還有資料的保安問題，畢竟你的資料全都放在別人公司的機房裡，那麼您信不信賴他？&#xA;他會不會什麼時候倒閉不玩？或者是偷看偷利用或流出你的檔案？這些就足以影響您使用其服務的意願。&#xA;就像不少公司因為一些疑慮而不考慮購買 Google Mail 服務，仍然選擇自己架設 mail server 一樣，&#xA;有些要求資料保密性的公司、國家和政府單位、或者一些疑神疑鬼如史諾登的個人，&#xA;依然會選擇自己架設檔案備份相關系統。&#xA;而對於一般的個人用戶而言我想這不是個問題，畢竟各種線上免費信箱和免費網路空間都用的這麼開心了！&#xA;你要和我說你很在意資料保安所以不願意使用線上儲存同步服務？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;因此，雖然我很重視數位資料的保存問題、逢人就推廣資料備份的重要、我自己也購買設置了 NAS 機器，&#xA;但我推薦給絕大多數朋友的第一優先備份方案卻是購買線上儲存服務，然後設定與自己的各電腦同步，即完工！&#xA;雖然線上服務的金額比較高，但若把架設維護家用伺服器所需要的金錢、知識、技術、以及各種折騰給算上的話，&#xA;那麼線上服務其實還是相當廉價的！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_4_結論&#34;&gt;4 結論&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div id=&#34;conclusion&#34; class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;不論您是看完了前面的論述看來這裡，還是直接從開頭跳來這裡，&#xA;總之我要最後簡單的重點提要式整理我建議你實行的資料備份方案，&#xA;依照推薦順序描述如下：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;olist arabic&#34;&gt;&#xA;&lt;ol class=&#34;arabic&#34;&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;建議直接購買線上儲存空間和資料同步服務來備份您的資料，&#xA;比較知名的有如 Dropbox 或 Google Drive 等。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;若線上服務不能符合您的需求，比如說因為成本、空間大小、傳輸速率、或資料保安等問題，&#xA;那麼請購買 NAS 或其他類似的專用伺服器來做為資料備份使用。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;若您的需求非常特殊以致一般 NAS 不能滿足，或純粹就是想要體驗自己架站的感覺，&#xA;那麼請自己從硬體到軟體到網路環境組裝配置屬於您自己的伺服器(群組？)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;若您從來沒有意識過檔案備份的重要，或者從來沒有實際實行過任何的備份方案，&#xA;那麼請立刻開始備份您的數位資料，不論使用外接硬碟還是隨身碟什麼的都好！&#xA;我知道我一開始就叫大家不要使用這些東西來備份資料，但對於沒有備份習慣的人，&#xA;真正且立刻開始執行備份的工作才是最重要的，畢竟有總比沒有好！&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;footnotes&#34;&gt;&#xA;&lt;hr/&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_1&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_1&#34;&gt;1&lt;/a&gt;. 「數位時代需要面對的困難：資訊保存與接駁」, 解·惑生, &lt;a href=&#34;http://www.huoschen.idv.tw/blog/digit/%E6%95%B8%E4%BD%8D%E6%99%82%E4%BB%A3%E9%9C%80%E8%A6%81%E9%9D%A2%E5%B0%8D%E7%9A%84%E5%9B%B0%E9%9B%A3%E8%B3%87%E8%A8%8A%E4%BF%9D%E5%AD%98%E8%88%87%E6%8E%A5%E9%A7%81/&#34;&gt;連結&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_2&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_2&#34;&gt;2&lt;/a&gt;. 「網際網路之父：我都用紙張保存資料」, 鏡週刊, &lt;a href=&#34;https://www.mirrormedia.mg/story/20171223int_vint_cerf_net_neutrality/&#34;&gt;連結&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_3&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_3&#34;&gt;3&lt;/a&gt;. 「請不要再用行動硬碟「備份」檔案了」, 高登工作室, &lt;a href=&#34;https://gordon168.tw/do-you-really-backup-your-file-to-external-disks/&#34;&gt;連結&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>比較幾個網路檔案系統：SMB、NFS、和 SSHFS</title>
      <link>http://www.huoschen.idv.tw/blog/programming/%E6%AF%94%E8%BC%83%E5%B9%BE%E5%80%8B%E7%B6%B2%E8%B7%AF%E6%AA%94%E6%A1%88%E7%B3%BB%E7%B5%B1smbnfs%E5%92%8C-sshfs/</link>
      <pubDate>Fri, 15 Jun 2018 00:00:00 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/programming/%E6%AF%94%E8%BC%83%E5%B9%BE%E5%80%8B%E7%B6%B2%E8%B7%AF%E6%AA%94%E6%A1%88%E7%B3%BB%E7%B5%B1smbnfs%E5%92%8C-sshfs/</guid>
      <description>&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;因為最近的需要，在折騰網路檔案分享相關的東西，於是上網搜尋了不少資料。&#xA;要讓多位使用者可以互相分享、交換檔案，就需要佈置網路檔案系統，&#xA;而網路檔案系統種類繁多，因此很自然的會產生一個問題：「我應該選擇哪一個檔案系統？」&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;看到網路上對這個問題的討論，絕大部分都集中在檔案傳輸效能上，讓我覺得頗為奇妙！&#xA;因為不同的檔案系統存在不同的結構差異，在什麼場景下應該最適合什麼檔案系統這個問題&#xA;並不是一個效能屬性就能夠覆蓋的，在不適合的環境下選擇不適合的檔案系統，&#xA;甚至會讓你付出數倍的心力來處理這個檔案系統所引發的各種缺陷！&#xA;因此接下來我就要分享一些這陣子折騰網路檔案系統的心得，&#xA;希望能夠幫助有需要的人在選擇網路檔案系統時能夠更全面的思考。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;網路檔案系統就是能夠讓網路上某臺電腦的某個設為分享的資料匣，&#xA;把它模擬成使用者自己的電腦上的磁碟的機制。&#xA;這樣，使用者就可以用一般的方法讀寫這個看起來像自己電腦裡面的磁碟，&#xA;但實際上確是在存取遠端電腦上的檔案。&#xA;網路檔案系統種類非常多，這裡只會簡單介紹並分析三個比較知名、也是我這回嘗試過的網路檔案系統：&#xA;SMB、NFS、以及 SSHFS。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_smbcifs&#34;&gt;SMB/CIFS&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;SMB 是 Server Message Block 的縮寫，其又被稱為 Common Internet File System (CIFS)，&#xA;其實就是「網路上的芳鄰」一樣的東西，讓數臺區域網路內的電腦能夠彼此分享交換檔案。&#xA;SMB 最初由 IBM 發展，後來微軟在 SMB 的基礎之上發展了 CIFS，&#xA;然後不久 IBM 就放生了 SMB，於是後來(2006 年)&#xA;微軟發展的新版 CIFS 乾脆就把 SMB 這個名字拿過來用，叫作 SMB 2.0。&#xA;這中間亂七八糟沒人搞得清楚的故事太多&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_1&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_2&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_2&#34; title=&#34;View footnote.&#34;&gt;2&lt;/a&gt;]&lt;/sup&gt;&#xA;，&#xA;總之現在普遍都以 SMB 稱呼。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;SMB 其實沒什麼優點，它最大的優點就是 Windows 內建 SMB 功能&#xA;(網路上的芳鄰或 Windows 分享資料匣)，&#xA;所以在一般的個人電腦上配置 SMB 通常還蠻容易的。&#xA;其它的作業系統對於 SMB 的支援也算容易，UNIX 家族一般安裝配置 Samba 軟體&#xA;即可存取 Windows 的共享資料匣，甚至建立 SMB 伺服器供其它電腦存取。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;SMB 的缺點其實不少，&#xA;SMB 是建基於 NetBIOS 的通訊協定，因此只能在區域網路內同網段的環境下使用，&#xA;即使後來推出了 NetBIOS over TCP/IP 的技術，也少見有人使用 SMB 建置網際網路上的檔案分享。&#xA;不同於一般配置 SMB 的容易，如果你要配置一個可以與外界交流的 SMB 檔案系統，那可就夠你折騰了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;SMB 的另外一個缺點是安全性低，這主要歸咎於兩個因素：&#xA;其一是因為美國出口法規的關係，使得 Windows 使用了安全性不足的加密機制；&#xA;其二為 SMB 協議本身的缺陷加上 Windows 上面相關實做中存在不少數十年修不好的臭蟲，&#xA;從而導致 SMB 機制變成病毒和駭客入侵的管道，&#xA;例如前一陣子惡名昭彰的 wannacry 勒索病毒便是利用 SMB 的漏洞入侵用戶電腦。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在效能的表現上，SMB 屬於中庸，沒有什麼特殊之處。&#xA;綜合以上因素，使得 SMB 常被使用於以 Windows PC 為主的區域網路內，&#xA;例如公司內部的檔案分享伺服器。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_nfs&#34;&gt;NFS&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;NFS 是 Network File System 的縮寫，是另一種網路檔案分享交換機制，&#xA;最初由 Sun 所開發，現今廣泛流行於 UNIX 家族。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;NFS 有兩大優點，第一是在 UNIX 家族中設置與掛載都非常方便容易，第二是速度快、效能佳。&#xA;如果做個類比，那麼 Windows 之於 SMB 就如同 UNIX 之於 NFS，&#xA;只要在 export 檔案填寫要分享的資料匣和允許連線的電腦(可能需要安裝相關套件)，&#xA;然後別臺電腦就可以直接 mount 連上了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;說到效率，NFS 可是幾個主流的網路檔案系統裡面最快速的，這得利於幾個因素。&#xA;第一是它在設計結構上就非常講究效能，&#xA;例如它不進行複雜的登入認証機制，僅使用客戶端的連線位址做為識別用戶的手段；&#xA;它捨棄了較慢的使用者名稱比對與轉換工作，直接使用兩端的 UID 與 GID 做為檔案權限依據；&#xA;它基本上沒有對傳輸資料進行加密(NFSv4 以後加入了可選的加密機制)而省去了加密的開銷等等。&#xA;第二是它在大部份系統上的實做也做了非常多的最佳化，&#xA;甚至被編為系統核心模組，將主要的工作放到核心層去執行。&#xA;綜合以上因素，使得 NFS 成為最快速高效的網路檔案系統。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;然而 NFS 也存在不少缺點，最明顯的就是安全性低。&#xA;未使用加密連線使得傳輸資料被窺探的可能性提高，&#xA;另外 NFS 僅依賴網路位置來辨認用戶的方法，使得任何人都有機會假冒特定使用者進行連線，&#xA;只要該使用者能夠變更自己的連線 IP 以取代之即可。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;另一項可能會令人惱火的問題是在於檔案的所有權上面，&#xA;NFS 直接取用檔案的 UID 與 GID，並且在兩端不做任何轉換，真的把兩臺電腦當成一臺了！&#xA;這造成了一個問題，一個 UID 或 GID 在兩端不一定是同一個 user、甚至不一定存在該 user。&#xA;以用戶端來說，它有機會讓你看到奇怪的檔案擁有者；&#xA;以伺服端來說，它讓用戶可以冒充任何伺服器使用者的權限存取檔案&#xA;(對於伺服端的問題，可以透過一些分享設定來緩解)。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;還有一個問題可能會造成網路配置與管理上的不便。&#xA;NFS 本身雖然架構在 TCP/IP 上，但卻依賴 RPC (Remote Procedure Call)服務，&#xA;於是 NFS 伺服器需要監聽多個網路埠口，並且其中多數還不是固定埠口而是變動埠口。&#xA;這個現象會讓對外網路的防火牆等相關設定維護工作較為棘手，也容易因為開放過多埠口而增加入侵風險，&#xA;這個問題與傳統的 FTP 服務一樣。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;最後一個問題是在客戶端配置的難易性上。&#xA;NFS 在 UNIX 家族環境下極易配置使用，但桌面市場上佔有率極高的 Windows 並不屬於 UNIX 家族。&#xA;雖然 Windows 本身有支援 NFS 的功能，但相關服務預設為關閉，&#xA;且要啟動並使用該功能所需要的工作需要執行一些麻煩瑣碎的設定，&#xA;導致要讓 Windows 終端連上 NFS 主機變成一件麻煩事。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_sshfs&#34;&gt;SSHFS&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;SSH 是被廣泛使用在伺服器用途的超好用工具，&#xA;它除了提供遠端登入並操作遠端電腦這個最初被賦與的任務外，還衍生出了許多功能，&#xA;例如檔案上下載、加密連線穿隧、以及由 SSH 實現的 FTP 功能(SFTP)，&#xA;此外還有一缸子的軟體透過 SSH 來運作，比如說執行遠端檔案同步的 rsync 程式等。&#xA;簡單來說，SSH 在 UNIX 體系所涉入的工作可謂包羅萬象，若說什麼事情都需要 SSH 也不為過。&#xA;而 SSH File System (SSHFS)便是其中一個利用 SSH 功能的軟體，&#xA;它可以透過 SSH 存取遠端電腦的資料匣，再透過 fuse 系統在用戶端模擬為一個本地磁碟，&#xA;即成為一個實現檔案分享交換的網路檔案系統。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;SSHFS 有非常多的優點，大多體現在安全、管理、與配置上面。&#xA;安全就不用說了，SSH 本身就是非常優秀的加密通訊系統，&#xA;透過 SSH 執行網路資料傳輸基本上就保障了通訊的資料保密性。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在網路連線的管理上，SSHFS 依賴於 SSH 服務，因此比照 SSH 辦理即可。&#xA;SSH 只使用單一一個 TCP 埠口，&#xA;沒有變動埠口的麻煩和風險、也沒有非 TCP 通訊模式在網際網路不易溝通連線的問題，&#xA;對防火牆以及網管人員來說應是非常方便的一個方案。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在配置上，因為 SSHFS 的連線與檔案交換其實是依循 SSH 下的 SFTP 協議，&#xA;因此伺服器管理的部份完全比照 SFTP 辦理即可，&#xA;對伺服器來說，SSHFS 用戶和 SFTP 用戶並無任何不同。&#xA;如果你已經會架設與管理 SFTP 的話，那麼你並不需要額外學習什麼東西。&#xA;在用戶端，UNIX 家族只要安裝 SSHFS 套件後就可以掛載伺服器上的資料匣了，難易度一般；&#xA;Windows 用戶也可以在安裝 WinSshFS 和 Dokan 軟體後，簡單的設定就能連線掛載 SFTP 上的目錄，&#xA;甚至比連線網路上的芳鄰還要簡單。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;說到它的缺點，大概是認証設定稍嫌複雜、以及還不夠廣泛流行。&#xA;因為連線時需要認証身份的關係，所以需要額外配置一些與認証有關的設定，&#xA;在 Windows 上其實很簡單，WinSshFS 會處理完一切，&#xA;只要在設定的時候填入連線帳號密碼或金鑰檔即可；&#xA;但在 UNIX 家族上就比較複雜，&#xA;要不就是客戶端需要產生並設定金鑰，然後還要交給伺服器管理員來匯入，&#xA;要不就是使用 sshpass 套件來使用密碼登入，並且還要另外配置密碼認証腳本。&#xA;這使得在 UNIX 家族上設定 SSHFS 不若其它網路檔案系統便利，這是安全的代價。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;SSHFS 知名度較低，比較不容易在目前的網路分享交換環境上看到它，&#xA;然而這其實不是 SSHFS 本身的缺陷造成！SSHFS 不夠流行的主要原因是因為發展的比較晚，&#xA;我不清楚 SSHFS 的應用在什麼時候開始的，&#xA;但 Windows 上的 WinSshFS 大約是從 2012 年以後才開始發展，&#xA;因此在多數的公司行號等內部所需要的網路分享機制上，就直接選擇了 SMB 系統至今，&#xA;有些是因為歷史因素、有些是因為 IT 人員不知道 SSHFS 的存在和能耐，&#xA;最終造成目前 SSHFS 不廣泛被使用的狀態。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;最後還有一項劣勢在於效能的表現上。&#xA;其實 SSH 的各方面表現都算優秀，單以效能來說應算得上水準不錯，&#xA;畢竟在其他眾多使用 SSH 的資料傳輸場合上(比如說 rsync 或其他資料穿隧)都是快速順暢的；&#xA;只是因為前有 NFS，使得在與效能有關的評比分析上往往落於下風。&#xA;不管再怎麼努力，多了加密解密的工作是不可能比沒有加密的流程還要快的！&#xA;若再加上連線認証、使用者名稱轉換等機制、核心層與使用者層的優勢、以及其他細項的話，&#xA;那麼 SSHFS 在效能上拼不過 NFS 是非常自然的，而這也是安全和便利的代價！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_綜合比較分析&#34;&gt;綜合比較分析&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;綜和所有的分析後，我基本推薦在幾乎所有的場合下，網路檔案系統的首選應是 SSHFS。&#xA;SSHFS 的不論安全性、網路管理難易度、都是非常有利的，在效能表現上也算傑出，&#xA;對於終端電腦的配置算是簡便，尤其是在以 Windows 為主的用戶環境上。&#xA;特別是在用戶需要跨越網際網路與檔案系統連線時，它的各種優勢表現將最為明顯！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;對於 SMB 則是不建議使用，會需要使用到這個檔案系統的時機除了伺服器不想花多一點心思在配置分享上以外，&#xA;大概只有在應用環境絕大部分為 Windows 系統、並且&lt;strong&gt;嚴格要求不能在用戶端電腦安裝任何軟體&lt;/strong&gt;的情況下吧！&#xA;另外強烈建議 SMB 應該只規劃在阻隔良好的內部網路中使用，&#xA;並不是說 SMB 沒辦法在經過一些調整後能夠由網際網路連線進來，&#xA;而是這麼做除了增加許多管理上的困擾外，還會讓內部的安全風險飆升。&#xA;以前一陣子的 wannacry 來說，資安專家建議關閉 TCP 埠口 445、甚至是停用整個 SMB 機制，&#xA;此時如果你的公司是靠著 SMB 來分享檔案的話，那做為 IT 人員應該會不知所措吧！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;另外在某些狀況下選用 NFS 會是個不錯的選擇，例如當你需要非常快速的檔案傳輸，比方說經常讀寫大檔案的時候。&#xA;不過注意 NFS 只適合在可信任的區域網路，以及各上網終端固定且已知、沒有動態 IP 跳來跳去的環境下&#xA;才能放心使用；若網路環境複雜而堅持使用 NFS 的話，可能會未蒙其利先受其害！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;還有一個狀況就是嵌入式裝置的開發用途中，嵌入式裝置的各種運算資源稀缺，&#xA;在 PC 上面沒什麼感覺的加密等工作到了嵌入式裝置上可能會顯得吃力、&#xA;各種加密程式庫在以 MB 計算的儲存裝置中顯得體態擁種。&#xA;而若你只是因為一時新奇而想在小裝置上使用 SSH 進行腦海中的一些酷炫工作的話，&#xA;那麼首先你必須要把 OpenSSH 重編譯並移植到裝置上、當然還包括了它所依賴的一眾工具，&#xA;我想這絕對夠你先折騰個三天三夜的！&#xA;這時候 NFS 小巧且通常內建在許多核心程式碼內的優勢就凸顯出來，幾乎是只要讓裝置能連上網路後的下一步&#xA;就可以透過 NFS 和你的開發 PC 連線交換資料。&#xA;在開發嵌入式裝置的場合，通常都是在辦公室內可受信任的小型區域網路內進行，安全性什麼的不是很重要；&#xA;而嵌入式裝置上通常也只有一個使用者帳號就是 root，比較不會有什麼不同 UID 搞得眼花撩亂的問題，&#xA;而簡單純粹的 NFS 在這情況下將能替你省去不少麻煩！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;以上就是我對幾個主流網路檔案系統的評價和測試心得。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;footnotes&#34;&gt;&#xA;&lt;hr/&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_1&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_1&#34;&gt;1&lt;/a&gt;. Why You Should Never Again Utter The Word CIFS, &lt;a href=&#34;https://blog.fosketts.net/2012/02/16/cifs-smb/&#34;&gt;連結&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_2&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_2&#34;&gt;2&lt;/a&gt;. CIFS vs SMB: What’s the Difference?, &lt;a href=&#34;https://www.varonis.com/blog/cifs-vs-smb/&#34;&gt;連結&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>談自由軟體</title>
      <link>http://www.huoschen.idv.tw/blog/digit/%E8%AB%87%E8%87%AA%E7%94%B1%E8%BB%9F%E9%AB%94/</link>
      <pubDate>Mon, 23 Apr 2018 00:00:00 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/digit/%E8%AB%87%E8%87%AA%E7%94%B1%E8%BB%9F%E9%AB%94/</guid>
      <description>&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;「自由軟體真是好東西！」&#xA;我就直接開門見山不賣關子了，這篇文章就是來說服大家使用自由軟體的！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;你常使用盜版軟體嗎？沒有盜版軟體就不知如何使用電腦嗎？&#xA;望著許多軟體高貴的價格讓你買不下手，不知學什麼好嗎？&#xA;自己的數位檔案必須依賴特定軟體、甚至特定版本才能正常開啟使用，&#xA;害怕有一天這軟體不再能用時，一輩子的檔案就付諸東流嗎？&#xA;想研究、學習、了解軟體到底是如何工作的，甚至喜歡寫軟體嗎？&#xA;或者只是不知道什麼是自由軟體而想要了解嗎？&#xA;如果你符合以上任一情況，你就是這篇文章的寫作對象，&#xA;我也誠摯的邀請你來了解，最好實際使用自由軟體，也許它會給你一些解答。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;從我第一次認識什麼是自由軟體，就漸漸愛用這種東西。&#xA;它有些優點、有些缺點、有些與以往的認識不同的特性，對我來說可是瑕不掩瑜、物超所值。&#xA;這幾年來常常向人介紹推薦自由軟體，發現大多數的人甚至沒聽說過自由軟體，知道的人裡也對它有著不少錯誤認知，&#xA;甚至有些人因為一些誤會而不敢去使用自由軟體，平白失去了與這麼好的東西的機緣，甚為可惜！&#xA;於是就想寫一篇文章來向大眾介紹我所認識的自由軟體。&#xA;以下文章將分幾大部份進行，文章結構將儘量以要點模式，如同問答項目般的編排，&#xA;以利讀者快速跳至感興趣的主題閱讀、或是未來回頭檢索。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_1_什麼是自由軟體&#34;&gt;1 什麼是自由軟體？&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在解釋什麼是自由軟體的時候，我通常喜歡拿部落格做為例子。&#xA;我們應該都看過書、也買過書，一本書的生成需要作者的智慧、出版的資源、以及銷售通路的支援，&#xA;因此讓想要閱讀書本內容的人花上一些錢來購買是非常合理的。&#xA;但不知道各位對網路上一大堆的部落格有什麼看法？&#xA;部落格的文章數量不只多，還涵蓋各種不同領域，有些甚至是非常專業的內容，&#xA;就這麼放在網路上無償的給我們觀看，不知各位有沒有想過這些作者勞心勞力圖的是什麼？&#xA;我想有些人沒想那麼多，就是喜歡分享自己的知識、經驗；&#xA;有些人可能受到利益單位的業配贊助而寫作；&#xA;有些人可能根本就是公司僱員，因此寫部落格文章是它的工作；&#xA;還有些人可能圖個名聲和知名度；&#xA;當然也有更多我沒想出來的原因……&#xA;那麼，把文章換成程式碼，把部落格換做是網站平臺，又何嘗不是如此呢？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;由部落格文章的模式可裡理解，有一些人寫了軟體，把程式碼分享給全世界，讓有需要的人可以自由使用。&#xA;自由軟體最重要的精神就是「自由」、「開放」、和「分享」原則，&#xA;所有的人不只可以自由使用軟體，還可以藉由閱讀程式碼來研究軟體的運作，甚至修改軟體來符合自己的需要，&#xA;最後再回饋自己的修改，分享給其他的人，&#xA;這就是自由軟體的概念。&#xA;軟體界的著名人物 Richard Stallman 在 1980 年代左右發起了「自由軟體運動」後，&#xA;自由軟體有了比較明確的定義。&#xA;不管實際的授權條款在細節上有什麼不同，所有的自由軟體一定提供了以下 4 個保障，否則就不能自稱為自由軟體&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_1&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&#xA;：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;olist arabic&#34;&gt;&#xA;&lt;ol class=&#34;arabic&#34;&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;The freedom to use the software for any prupose.&lt;/strong&gt;&lt;br/&gt;&#xA;你可以基於任何用途使用自由軟體，軟體發行人不能限制你使用軟體的目的。&#xA;因此很明顯的，任何自由軟體不會有什麼個人版、家庭版、專業版、還是企業版什麼的，&#xA;自由軟體只會有一個版本，而所有的使用者都可以使用全部的功能。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;The freedom to change the software to suit your needs.&lt;/strong&gt;&lt;br/&gt;&#xA;你可以自由的修改軟體來符合自己的需要。&#xA;為了能夠自由修改軟體，自由研究軟體的權利當然是必要的；&#xA;為了能夠自由的研究軟體，軟體發行商提供原始程式碼(包含所有相關文件)也成為責任。&#xA;自由軟體要求，所有的「軟體客戶」都要能夠容易的取得軟體程式碼，&#xA;並且不需要加價購買或設下其它障礙，因為提供程式碼是軟體發行商的義務！&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;The freedom to share the software with your friends and neighbors.&lt;/strong&gt;&lt;br/&gt;&#xA;你可以自由的分享自由軟體給任何人，自由軟體不能夠為這件事情設下任何阻攔。&#xA;所以下載自由軟體後把它分享給眾親朋好友是合法的，即使你並不是軟體原作者。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;The freedom to share the changes you make.&lt;/strong&gt;&lt;br/&gt;&#xA;這點與上一點是一樣的，如果你對軟體做了修改，你也可以把這些修改分享給別人。&#xA;唯要注意的是，依據實際授權條款的不同，在某些條款下你對軟體做出的修改是必須要分享給你的客戶！&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;使用某一套自由軟體在更多的權利義務細節上還要看實際的授權條款規範如何而定，&#xA;然而這些授權條款差異所影響的都是開發人員或軟體開發商這些需要「修改或衍生程式碼」的人，&#xA;而對於通常僅「使用」軟體的一般大眾其實沒有什麼影響，所以就不再細究。&#xA;對於有興趣想要了解的人可以自行參閱相關文章&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_2&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_2&#34; title=&#34;View footnote.&#34;&gt;2&lt;/a&gt;]&lt;/sup&gt;&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_3&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_3&#34; title=&#34;View footnote.&#34;&gt;3&lt;/a&gt;]&lt;/sup&gt;&#xA;。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;做為對比，人們通常會用「商業軟體」或「專有軟體」這些名詞來指稱那些自由軟體或開源軟體以外的其它類型軟體。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;簡單來說，自由軟體給了使用者極大的自由，這也是自由軟體號稱「自由」的根本原因。&#xA;不可否認自由軟體中絕大部分的所謂自由是為了軟體開發人員而設，&#xA;然而對於通常不參與軟體開發的一般大眾，自由軟體也連帶的賦與了很多在一般商業軟體上不尋常的，&#xA;在使用和分享上的自由。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_1_1_都是什麼人在開發自由軟體&#34;&gt;1.1 都是什麼人在開發自由軟體？&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;其實問這個問題就和問「都是什麼人會去寫部落格」是差不多的！&#xA;不同於部落格文章通常都是一位作者寫成，自由軟體的作者通常是一大群，我們稱之為「社群」。&#xA;也許一些自由軟體的開發是由某位人士發起的、或者由某位人士原作、或者開發中由某位人士所主導，&#xA;但基於開源共享的精神，往往會有一大群人分享出自己的修改，&#xA;可能是某些問題的修正、可能是某種新功能的加入、可能是讓程式可以在某個平臺上執行的修改、&#xA;也有可能是某個既有功能的更有效率寫法等等，&#xA;大家你來我往，最後就是每個人都貢獻了軟體或大或小的一部份。&#xA;因此，我們便常用「社群開發」或「社群維護」這樣的詞來說明自由軟體的開發團隊。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這個開發團隊不同於我們所認識的公司或機關行號的嚴明組織，&#xA;自由軟體社群由散居在世界各定的軟體開發者組成，靠著電子郵件互相來往，大多數人素未謀面。&#xA;人員來去自由，個人比較有空的時候可能多負擔一些開發工作，而忙碌的時候可能就從當中抽身。&#xA;這種組織其實看起來比較像是朋友圈，我們稱這種組織叫鬆散組織。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;至於開發人員也是千百種，有些人是基於喜歡分享知識、有些人喜歡與各路好漢一起工作的感覺、&#xA;有些人圖個名利或磨練的機會，還有些人是受雇於公司行號組織機關的僱員，參與某自由軟體的開發是他的工作。&#xA;雖然英雄好漢來自四面八方，但通常那種自願參與自由軟體開發的人都是佼佼者，&#xA;畢竟擁有這等能力和興趣的人才會想要在工作生活之暇來做開發軟體以利眾生的事情！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_1_2_自由軟體都有哪些&#34;&gt;1.2 自由軟體都有哪些？&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;問自由軟體都有什麼軟體，就和問網路上可以免費閱覽的部落格文章都有些什麼是一樣的！&#xA;任何使用自由授權條款發行的軟體都是自由軟體，&#xA;改天你自己寫了一個軟體並以開源共享原則發行，則世界上的自由軟體就又多了一套。&#xA;因此我不可能列舉出世界上所有的自由軟體們！&#xA;不過當中有一些比較流行或知名的自由軟體，比如說 Firefox、FileZilla、PCMan、LibreOffice 等等，&#xA;可能你或你的朋友之間已經有人在使用了也說不定喔！&#xA;另外，這裡還有教育部為各種用途，特別是教育用途所推薦的自由軟體列表&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_4&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_4&#34; title=&#34;View footnote.&#34;&gt;4&lt;/a&gt;]&lt;/sup&gt;&#xA;可做為參考。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_2_常見的誤解和疑問&#34;&gt;2 常見的誤解和疑問&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_2_1_我又不會寫程式自由軟體的所謂好處對我有意義嗎&#34;&gt;2.1 我又不會寫程式，自由軟體的所謂「好處」對我有意義嗎？&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;自由軟體有很多好處，比如說可以研究程式碼、可以修改程式碼等等，&#xA;可是我又不是程式設計師，這些好處為我是不是和沒有是一樣的？&#xA;我又不會寫程式，怎麼可能去「修改程式以符合自己的需要」？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;我想這是很多的軟體一般使用者會有的疑問。&#xA;的確，一般的使用者因為不會寫程式也不會改程式，所以好像沒有辦法直接受惠於自由軟體的開放自由；&#xA;而自由軟體對一般人的直接好處好像也只剩下使用和分享上的自由了！&#xA;這裡我提出的見解是，改程式這件事其實不需要大家都會，&#xA;只要有人去做這件事，基於共享原則，大家就能受惠！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;想想，你對於一套軟體的期望，難道沒有別人和你懷有同樣的期望嗎？&#xA;對於一套軟體上的問題或錯誤，難道沒有別人遇到嗎？&#xA;對於軟體上尚不足的地方，難道沒有人也覺得不足嗎？&#xA;對於一個流行的自由軟體，其中的開發者自然也多，其實很多的問題可能一段時間後就會得到解決；&#xA;而很多期望的新功能，也許已經有一票人正在開發中也說不定！&#xA;就算你用的這套軟體比較冷門，拿著程式碼在手也不至完全無法做事，因為你不會寫程式的話，可以請會的人幫忙啊！&#xA;只要付出足夠的誘因，總是可以找到人解決你的問題；&#xA;但對於拿不到程式碼的專有軟體，除了期望並等待廠商可以優先想到你的需求以外，還能有什麼做為？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_2_2_自由軟體和免費軟體是一樣的嗎&#34;&gt;2.2 自由軟體和免費軟體是一樣的嗎？&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這是一個很普遍的問題了，即便是使用英文做為母語的人也常會問出這個問題！&#xA;自由軟體「通常」可以讓你無償取得使用，而免費軟體也是如此，那麼它們之間的不同是什麼？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;免費軟體其實仍是商業軟體，一切遵守商業軟體的規則和策略，&#xA;只是基於某些商業考量，「目前」軟體的發行商讓你免費使用他的軟體而已！&#xA;有幾個地方可以體現出這個不同，&#xA;首先你只擁有軟體的「使用權」，拿不到軟體程式碼，沒有研究、修改、發佈的權利。&#xA;第二是保障性，就如前所述，免費軟體就是商業軟體，目前基於商業策略考量給你免費使用，&#xA;但未來的任何時候，原來的發行公司都可以片面改變發行策略。&#xA;也就是，即使只是無償的使用權，也沒有人能夠保證你能永遠擁有！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;而自由軟體給你完善的保障，即便原開發商打算改用商業授權重新發行軟體，&#xA;對於原來在自由授權下已發行的軟體仍是沿用原來的授權(由授權條款的條文內容所保障)。&#xA;在真實的案例中，一群忿忿不平的自由軟體開發者甚至會拿開源條款的程式碼直接分支出另一個自由的專案繼續開發維護下去，&#xA;比如說 DivX 和 Xvid 之間就是這樣的關係&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_5&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_5&#34; title=&#34;View footnote.&#34;&gt;5&lt;/a&gt;]&lt;/sup&gt;&#xA;！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;免費軟體其實只是商業軟體當前願意讓大眾無償使用的狀態，&#xA;類似的狀況還可以在所謂「試用軟體」上找到，不過它又做出了更多在使用上的限制；&#xA;而自由軟體是完全不同的概念，它強調了使用者的自由，也就是無拘無束的自由，比較類似於人身和思想上的自由。&#xA;誤解的來源大概是來自於自由軟體(Free Software)字義上的多意問題吧！&#xA;在英文裡，人身自由、思想自由可用 free 形容，比如說「I am a free man」；&#xA;然而用來形容免費、無償的形容詞也是 free，比如說「The beer is free for you」。&#xA;因此現代開始有些人喜歡使用更加精準的 Libre 一詞來描述這個身體思想上的自由概念。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_2_3_聽說自由軟體安全性差&#34;&gt;2.3 聽說自由軟體安全性差？&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;認為自由軟體(或開源軟體)安全性差的觀念通常是以訛傳訛造成&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_6&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_6&#34; title=&#34;View footnote.&#34;&gt;6&lt;/a&gt;]&lt;/sup&gt;&#xA;！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;認為自由軟體有安全性問題的立論點通常是「因為程式碼大家都看得到，所以哪裡有弱點也容易找到！」&#xA;這個說法事實上說的很合理，對於看不到程式碼的軟體需要使用很多瞎猜的方式來找尋可能可以利用的弱點；&#xA;而開源軟體因為有程式碼可以看，程式在哪裡做了什麼事清清楚楚，從程式碼找弱點是相對方便快速得多！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;但是實際上的使用經驗卻剛好相反！自由軟體的安全性表現通常遠好於封閉原始碼的商業軟體，這又是為什麼呢？&#xA;人熟能無過？只要是人寫出來具有一定複雜度的軟體就會有蟲。&#xA;然而自由軟體大家都看得到程式碼，在無數隻眼睛觀看之下，程式的問題往往很容易被挑出並處理掉；&#xA;有心人士要想在程式碼裡面偷加一些奇怪的後門，而能夠躲過大家的眼睛，也非常不容易！&#xA;反而是封閉原始碼的私有軟體，軟體的品質和安全性全仰賴開發商的努力，&#xA;問題是一間公司能夠有多少開發人員？在產品策略和用人調度之下，又有多少人能夠付出心力在持續的關注和維護安全性問題？&#xA;自由軟體的開發維護人力來自於社會大眾，想想身邊親朋好友，&#xA;就算 100 人裡面才有一個軟體工程師，&#xA;就算 100 個軟體工程師裡面才有一個高手，&#xA;就算 100 個高手裡才有一個可以在閒暇之餘參與自由軟體開發維護，&#xA;這樣算來全世界會有多少個自由軟體開發人員？又有哪間公司可以請得起這麼多人來開發維護一個產品？&#xA;並且這些人還都是高手中的高手！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;最終在實際上，對於流行流通的自由軟體，軟體問題通常很快的被發現，也很快的被修補完畢，&#xA;使得實際表現上，自由軟體相比於同類的商業軟體品質更好也更安全。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_2_4_聽說使用自由軟體沒有支援也沒有保障&#34;&gt;2.4 聽說使用自由軟體沒有支援也沒有保障？&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;有些人認為使用自由軟體沒有保障，因而裹足不前，一直不願意嘗試自由軟體，&#xA;這當中又以中小企業用戶為最。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;使用自由軟體沒有保障的說法來自於，自由軟體通常是由一大群鬆散的人員開發而成，&#xA;當真的遇到什麼事情的時候，找不到人可以負責！&#xA;企業軟體選用系統常要求一定的長期穩定性，而也因為沒有一個可以「負責」的人或機構，&#xA;許多中小企業便為此感到不安，怕自由軟體的開發有一天說不玩就不玩，或者想變就變、想新就新！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;我的回應是，先說說個人用戶，對於大家可能常使用的商業軟體比如說 Windows 或 Office 等，&#xA;微軟有給你什麼保障了嗎？你在遇到問題的時候有打電話給微軟讓他負責過嗎？&#xA;最後還不是自己 Google 或問親朋好友來解決！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;不管是個人用戶還是企業用戶，對自由軟體的任何問題其實都可以在網路上發問，&#xA;熱心的網友通常會解答你的問題，甚至多數的問題可能早有解答。&#xA;當然，沒有任何人有義務對你的問題提出解答，或是在你期望的時間內提出解答。&#xA;若你希望可以有個人真正為你負責，讓你放心的把心中的不安交給他處理的話，其實可以花錢購買商業支援。&#xA;只要你願意付錢，很多相關公司會樂於提供你對於特定自由軟體的保障，&#xA;比如說維護服務讓你可以安心的使用這套軟體，而不需去管現在 OpenOffice.org 的所有權到底是 Oracle 還是 Apache；&#xA;客製化服務可以讓你對軟體的許願成真，而不需去期望社群的人一定要在多少時間內做出這個全世界可能只有你在用的功能；&#xA;諮詢服務可以讓你在對軟體有各種疑問或操作問題時，一通電話打過去就能有人為你解答。&#xA;提供這類服務的公司很多，比較有名的就有&#xA;Red Hat 提供 RHEL 服務、Canonical 提供 Ubuntu Linux 服務、&#xA;以及臺灣的晟鑫科技提供 OxOffice 服務和企業導入服務等。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;最終，要改變的只有我們腦袋裡的觀念而已。&#xA;傳統上，軟體的各種服務都是由開發商提供，&#xA;畢竟對於原始碼不開放的軟體，除了原廠大概也沒有別人可以提供什麼有效的服務；&#xA;而自由軟體的服務單位往往不是原開發單位，甚至有時候對於同樣一套軟體可以找到兩家以上的服務提供商。&#xA;對於閉源軟體，軟體的服務往往是附加性質，實際的內容取決於開發商的資源配置考量，甚至保障性不足。&#xA;比方說你若有一些舊軟體必須在 Windows 98 上執行，那麼你現在還能夠買到 Windows 98 的服務支援嗎？&#xA;相對的，即便對於一套已經過時許久的自由軟體，只要你能夠支付足夠的資金，就可以找到能夠接手的人！&#xA;而專門的服務商通常在軟體服務上會更全面週到，畢竟提供軟體服務就是這些公司的主要工作和收入來源！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;最後補充強調一點，經過以上說明後，可能有些人會誤解以為：若不購買服務支援，那所使用的軟體就沒有保障了！&#xA;事實上購買服務支援不是必要的，不管是為個人用戶還是企業用戶而言。&#xA;想想你使用別的軟體、甚至是下載破解的軟體，你會因為覺得用起來沒有保障而不用嗎？&#xA;當你遇到問題時，可以找親朋好友、或上網搜尋解決辦法，&#xA;再不濟，程式碼就在那裡，也可以自己跳下去處理！&#xA;購買商業服務其實多半是企業用戶花錢省事、或者是想要把工作和責任分出去給別人的手段之一，&#xA;你總不能要求經營一家小餐廳的商家還要養一票工程師，就為了處理餐廳裡面使用到的某些軟體日常可能發生的問題吧？&#xA;但反過來說，也是有不少具有一定軟體維護能力的大公司，&#xA;他們會選擇依靠自己的 IT 部門人員來處理公司內的各種軟體相關問題，而不會向外購買軟體服務支援。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_2_5_聽說只要用了自由軟體就一定要把所有程式碼全公開在網路上&#34;&gt;2.5 聽說只要用了自由軟體就一定要把所有程式碼全公開在網路上！&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;有些人因為認為只要使用了自由軟體，就必須要把所有的程式碼放網路上公開，甚至因而不敢去使用自由軟體！&#xA;這也是一個非常神奇而令人感到訝異的問題！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;自由軟體的很多原則和規範通常只有在進行軟體開發有關工作時才會有所影響，&#xA;也就是說，對於甚至可能不會寫程式的一般使用者，去擔心這個問題就是完全多餘的！&#xA;你難道有遇過因為下載了 Firefox 後幫同學安裝，可是沒有隨附程式碼給他，然後竟然因此吃官司的事情嗎？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;可是若你是想要對軟體從程式碼上做一些修改或研發的話，&#xA;你就會需要去了解你所使用的軟體授權具體賦與你的權利義務是什麼？&#xA;即便如此，你也未必一定就要公開程式碼給大眾。&#xA;首先是有些授權准許你不公開修改或衍生的作品，這就是很多商業公司喜愛的軟體授權方案，&#xA;讓他們可以使用現成程式的功能，卻不需要公開自己的程式碼。&#xA;再者是任何的自由軟體其實並沒有要求你必須將程式碼公開給「大眾」，而只要求你要將程式碼附給你的「客戶」。&#xA;也就是說，如果這個人不是你軟體的用戶，你就沒有義務送他程式碼；&#xA;若你只是改改程式碼自己用而沒有散佈給別人，因為這時軟體的客戶就只有你一人而已，&#xA;也就沒有需要將程式碼公開出去。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;我曾在一家公司裡目睹一個真實的案例，有一位軟體部門主管遲遲不肯導入版本控制系統。&#xA;一問原因才知道，該主管認為使用開源的版本控制如 SVN、Git 等會讓自己的專案程式碼必須公開在網路上，&#xA;而商用的版本控制系統又需要不少錢，以致遲遲無法決定！&#xA;顯然這位軟體研發主管完全沒有搞清楚自由軟體授權、要不然就是把 Git 系統和 GitHub 服務給搞混了！&#xA;事實上以這個案例來看，完全無需擔心自由軟體的授權問題。&#xA;因為在這個條件下其實是他們只是「使用」Git 來管理自己的檔案(我故意不講程式碼，免得有些人搞混)，&#xA;他們又沒有要去「修改」Git 程式，即便修改了，也只需要公開修改後的 Git 而不是其管理的所有專案程式碼！&#xA;就算如此，也只要他們那個部門的人可以拿到修改後的 Git 程式碼就好，完全無需公開在網路上！&#xA;遇到這種因為神奇的理解錯誤而錯失使用自由軟體機會的案例，我通常感到既可惜又無言……&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_7&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_7&#34; title=&#34;View footnote.&#34;&gt;7&lt;/a&gt;]&lt;/sup&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_2_6_自由軟體沒有版權&#34;&gt;2.6 自由軟體沒有版權？&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;有些人以為自由軟體是沒有版權的軟體，這是個誤解。&#xA;雖然這個誤解似乎對於純粹使用軟體的人沒有什麼影響，但會使可能有志參與自由軟體開發的人產生猶豫！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;雖然自由軟體本者共享的基礎鼓勵分享，甚至有時會用 Copyleft 一詞做為形容(與 Copyright 相對)，&#xA;但是自由軟體並不是沒有著作權的公眾領域軟體！&#xA;你可以分享、可以修改、可以衍生創作程式碼，但不能拿了別人的程式碼後說你才是原作者！&#xA;自由軟體可以讓人隨意散佈，但原創作者仍享有完整的著作權，包含商標權，&#xA;而這也是為什麼很多自由軟體改作品都會改名字的原因，&#xA;比如說 OpenOffice.org 和 LibreOffice、以及 DivX 和 Xvid 的關係就是這樣。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;甚至，在作者群單純明確可控的狀況下，產品所有權人還可以改變軟體發行的授權，&#xA;比如說取消自由授權而改以商業授權發行(如 DivX)、或使用多重授權來發行(如 wolfSSL)。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;簡而言之，自由軟體提供了使用者分享、研究、修改、與改作的自由，&#xA;但並沒有要求作者必須要拋棄著作權！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_2_7_自由軟體如何產生商業收益&#34;&gt;2.7 自由軟體如何產生商業收益？&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;有些人會好奇，自由軟體要如何融入商業活動、產生收入？&#xA;有這樣的好奇或疑慮是非常合理的，因為若一種軟體模式與商業環境互相矛盾衝突的話，&#xA;會使得公司行號不願意投入此種類型軟體的開發，使得這種軟體終究只能活躍於一群完全做公德的小圈子。&#xA;而脫離商業社會的資源和付出，也將使得軟體的發展動能受到極大限制！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;自由軟體主張自由但其實並不反商，事實上完全允許商業行為；&#xA;只不過因為自由軟體獨特的特性與一般商業軟體不同，使得無法以一般常見的商業行為來套用在自由軟體身上牟利！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect3&#34;&gt;&#xA;&lt;h4 id=&#34;_2_7_1_販賣&#34;&gt;2.7.1 販賣&lt;/h4&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;首先，自由軟體完全是可以被販賣的，&#xA;自由軟體運動&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_8&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_8&#34; title=&#34;View footnote.&#34;&gt;8&lt;/a&gt;]&lt;/sup&gt;&#xA;的發起人 Richard Stallman 年輕時就賣了不少自己寫的軟體！&#xA;雖然目前大部份的自由軟體都可以在網路上無償下載，但自由軟體的規範並未要求軟體一定要無償提供給大眾。&#xA;自由軟體規範軟體發行人有義務在分發軟體時，將程式碼一同送交予被發送的對象，也就是所謂的「客戶」。&#xA;因此不是任何人都能夠向您索要程式碼，他必須要先成為你的產品客戶，而這個過程沒有任何商業限制；&#xA;換句話說，你完全可以像一般商業軟體一樣販賣自由軟體，然後再把程式碼附送給買軟體的人&#xA;(比如說 Red Hat Enterprise Linux 就是這樣的例子)；&#xA;當然，若你選擇把軟體放在網路上供自由下載(比如說大部份常見的自由軟體)，&#xA;則任何人都可以輕易成為你產品的用戶，那程式碼就必須要能夠隨意下載了！&#xA;這個時候，軟體執行檔反而不是必須提供的，因為有了原始程式碼，任何人都可以自己把軟體二進位檔給編出來！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;當然，再更深入了解就會發現，這種使用一般商業軟體的思維來販賣自由軟體的路是走不下去的！&#xA;任何客戶都可以在拿到你的程式碼之後轉兜售或直接公開在網路上，因為自由軟體完全不阻止散佈軟體的權利！&#xA;不過通常因為商標權的關係，這種被拿去轉發行的軟體通常都會改個名字和商標，&#xA;比如說 OpenOffice.org 與 LibreOffice 之間的關係，或 Red Hat Exterprise Linux 與 CentOS 的關係就是這樣。&#xA;也因為這樣，大部份的軟體一旦以自由軟體授權散佈，就乾脆直接放給大眾下載，省得麻煩，&#xA;結果就只剩下少部份的自由軟體需要花錢購買。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這也是為什麼當很多問起自由軟體與免費軟體有什麼不一樣時，自由軟體擁護者往往都會說：&#xA;「自由軟體不是免費軟體，免費只是它的副作用」。&#xA;的確，自由軟體真正在乎的事情是使用的自由和分享的精神，只是湊巧大部分的自由軟體因為某些因素而決定免費發送而已！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect3&#34;&gt;&#xA;&lt;h4 id=&#34;_2_7_2_服務&#34;&gt;2.7.2 服務&lt;/h4&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;那麼一般如何從自由軟體的販售中得利呢？經過前面的解釋會明白，自由軟體本身很難賣錢，&#xA;而一般靠著自由軟體營利的公司主要販售的是其提供的軟體服務！&#xA;需要比較實際的解釋嗎？&#xA;自由軟體通常很容易取得，然而很多的問題在後面才慢慢浮現：&lt;br/&gt;&#xA;打算改用自由軟體，但與你之前使用的軟體差異很大，不知如何學習入門嗎？&#xA;沒關係，我來教你，人數很多的話還可以安排教育訓練課程(比如說公司導入 XX 軟體系統時)。&lt;br/&gt;&#xA;一時找不到需要的功能應該如何操作嗎？軟體使用上遇到不明白的問題嗎？一通電話打來，我為您解答！&lt;br/&gt;&#xA;使用軟體覺得不安心，因沒有人可以為你負責嗎？&#xA;社群那票人求新求變，程式一直在更新，怕有一天與現在的環境不相容又無法處理嗎？&#xA;沒關係，交給我來維護你的系統，我們比社群穩定、也願意為您負責！&lt;br/&gt;&#xA;您有特殊的需求需要特別的客製化，卻無能力進行修改，或不想倘這混水嗎？沒關係，我們為你處理，還有保固喔！&lt;br/&gt;&#xA;您還有更多不同的個人需求嗎？沒關係，通通都可以提出來，&#xA;只要您願意繳錢，我們儘量配合您的需要！&lt;br/&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;雖然一般個體用戶很少願意去使用這樣的服務項目並付出金錢，&#xA;然而對於大部分的企業用戶來說，這樣的服務確實有他的價值和需求，而提供服務的公司就能從中賺取收入。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect3&#34;&gt;&#xA;&lt;h4 id=&#34;_2_7_3_市場策略&#34;&gt;2.7.3 市場策略&lt;/h4&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;另外還有一種商業模式，促使商業公司投入自由軟體發展，甚至投入大量僱員進行開發！&#xA;這種方式通常不會產生直接的收入，它所產生的利益主要以產業發展利於該企業的面向出現在商業戰場上。&#xA;比如說 Red Hat 顧忌於 KDE 的獨大，使得其本身無法抵抗 Troll Tech 公司的任何開價，&#xA;這促使 Red Hat 大力支持另一套新興而尚不健全的類似工具 GNOME 的開發&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_9&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_9&#34; title=&#34;View footnote.&#34;&gt;9&lt;/a&gt;]&lt;/sup&gt;&#xA;。&#xA;GNOME 的發展成熟使 Red Hat 在購買 Troll Tech 的 Qt 產品授權時得到談判的有利條件，&#xA;隨著 GNOME 的發展健壯並吸引眾多商業大頭倒戈支持，最後甚至迫使 Troll Tech 將 Qt 以自由軟體授權開放！&#xA;還有更多其它的例子都可以看到，在某些適當的狀況下，商業公司會投入資源開發完善特定的自由軟體，&#xA;以獲取商場上的可觀利益。&#xA;比如說眾多硬體廠商會加入 Linux kernel 的開發，好使 Linux 在自己的平臺上得以正常運作，&#xA;甚至連 Linux 的死對頭 Microsoft 都不得不貢獻 Linux kernel 程式碼&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_10&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_10&#34; title=&#34;View footnote.&#34;&gt;10&lt;/a&gt;]&lt;/sup&gt;&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_11&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_11&#34; title=&#34;View footnote.&#34;&gt;11&lt;/a&gt;]&lt;/sup&gt;&#xA;。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect3&#34;&gt;&#xA;&lt;h4 id=&#34;_2_7_4_捐款&#34;&gt;2.7.4 捐款&lt;/h4&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;除了直接或間接的商業收入來源促使商業團體投入開發外，也有更多自由軟體的開發維護純屬公益性質，&#xA;這些軟體大部份靠著願意付出額外時間和熱情投入自由軟體的志士來開發與維護，或透過一些公益基金會來維持運作。&#xA;其中有些單位會接受外界的捐款以作為支持，例如 Mozilla 和 LibreOffice。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_3_自由軟體的缺點和侷限&#34;&gt;3 自由軟體的缺點和侷限&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;不能否認的，每種不同的東西都會擁有不同的特性，其中有些是優點而有些會成為缺點，自由軟體當然不例外！&#xA;在澄清了一些關於自由軟體的誤解、和介紹自由軟體的好處後，&#xA;接下來就要說明一些我觀察到的自由軟體的侷限、或不足的地方，&#xA;這是為了讓人能從更全面的觀點來了解自由軟體。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在自由軟體以外的軟體種類中，佔比最大、特性差異最大、也是最常被拿來與自由軟體對比的軟體種類&#xA;大概就是一般常見的商業軟體了！&#xA;因此我在下面的部份也不免俗的使用商業軟體來與自由軟體做一些比較和評論。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_3_1_品質&#34;&gt;3.1 品質&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;前面提過，自由軟體雖然大部份由熱情的自願者貢獻勞力，&#xA;使得自由軟體「通常」的情況下比其它軟體更為高品質、強壯、安全、高效。&#xA;因為能夠有閒為公眾提供熱情的通常都是高手中的高手，&#xA;再來是全世界的自由軟體開發人員數量之多，不是任何一間商業公司可以比較的，&#xA;又加上自由開發者沒有商業公司的關於資源和策略所產生的強制性的開發重點移轉聚焦，&#xA;讓每個開發者可以針對他所在意的問題做出最完美的解答。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;然而事情並不總是如此，除了商業公司當然也能夠聘到高素質的開發人員並產生出高品質的產品這個原因以外，&#xA;自由軟體的品質往往與開發人員的數量形成密切關係！&#xA;但是前面不是才說過自由軟體的開發人員多到沒有一間公司能請得起嗎？&#xA;全世界的開發人員是很多，但實際上每一套軟體得到的關注程度不同。&#xA;某套軟體的志願開發者通常都是該軟體的使用戶，因為功能不滿足、或發現問題等機會後因緣際會跳出來貢獻才能，&#xA;這導致使用者數量龐大的流行軟體如 Linux kernel、Firefox 等通常擁有海量開發人員；&#xA;但無名、冷門、或特別專業領域的軟體開發者往往就寥寥可數，軟體的品質自然不易提升，&#xA;在這種情況下，商業公司的同類型產品更容易擁有完整強大而高品質的表現。&#xA;當然這不是絕對的！也是有極度流行流通而使用者眾的軟體比如說 OpenSSL，但裡面卻是亂成一團；&#xA;或是像 Git 這種幾乎是一個人開發成型的軟體，卻沒有人能夠挑剔它的品質或功能。&#xA;少部份的例外總是存在，但以大體來看，自由軟體的品質幾乎與使用者數量和流行流通狀態呈現絕對的關係！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_3_2_高手思維&#34;&gt;3.2 高手思維&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;自由軟體的志願參與者通常擁有很高的素質，然而在某些面向上這反而成了缺點！&#xA;怎麼說呢？高素質的開發人員能夠提供軟體無可挑剔的品質，&#xA;但在使用體驗這個方面，高手與一般非專業使用者的想法往往大相逕庭。&#xA;比方說，對於一般電腦使用者，你會願意使用 Office 軟體製作文件還是使用 LaTeX？&#xA;你會願意嘗試有圖有按鈕有動畫的 FileZilla Client 還是純文字命令介面的 ftpget？&#xA;壓縮解壓縮檔案的時候你會想用 WinRAR 還是 tar + xz + gpg？&#xA;諸如此類，會讓你覺得為什麼這些狂人使用的東西都讓你覺得這麼難用這麼反人類；&#xA;然而反過來其實他們也覺得你愛用的軟體難用又彆扭！&#xA;說到底其實就是使用軟體的思考立足點不同所造成。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;由於大部份的讀者應該都不是電腦專業用戶，我就用別的東西來做為解說。&#xA;大部份的人應該都有照相的經驗，看過專業攝像師拿著超專業的相機可以拍出極美的照片，&#xA;但若讓一般普通人拿上這個相機，那拍出的畫面應該普遍醜過使用傻瓜相機拍攝的照片，&#xA;搞不好連如何操作才能夠成功拍下一張照片都是一件不容易的事情！&#xA;如果說看在普通人眼裡，專業照像機是難學難用難掌握的話，那對於軟體又何嘗不是如此？&#xA;若讓一位專業攝像師拿著傻瓜相機來工作，可以想像他抓狂的模樣！&#xA;因為相機自動決定的攝像參數如此笨拙，卻又沒有可以人為介入的方法，&#xA;就連想要搭配一些如閃光燈、快門延長線等等自己的週邊器材都無從做起！&#xA;而這不也是那些電腦高手不喜歡使用所謂方便好用的大眾軟體的主要原因之所在嗎？&#xA;在大部份沒有商業公司介入的自由軟體裡，絕大部分的開發者既軟體使用者會把軟體設計的非常完美；&#xA;不過這個完美是站在高手立場來看的，於是對於普通人來說，很容易就會產生難用、難學的深刻印象。&#xA;看看早期的 Linux 和各種 shells 的發展、再看看早期 Git 的操作方式，就不難發現這個脈絡。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;依實際的使用觀察可發現，雖不是絕對，但自由軟體中一般使用者使用體驗良好的軟體背後通常都有商業公司的影響力存在。&#xA;這很容易理解，就如同前面說的一樣，試想若汽車的市場和開發一直都只由一群技術高竿的車手和技師來主導的話，&#xA;那麼像自動排檔、娛樂媒體等發明大概不可能會出現在現代汽車上面了！&#xA;由一群軟體開發高手研發的軟體，往往只能在專業用戶這個小圈裡面流行，而難進入大眾市場。&#xA;一個能夠被一般大眾所接受的軟體，除程式內容外，美術、人因、地區化、與行銷推廣等資源缺一不可，&#xA;最終造成通常只有商業勢力介入的產品才能夠普及於大眾的結果！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_3_3_過度強制開源&#34;&gt;3.3 過度強制開源&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;其實這個點有一點一竿子打翻一船人的味道，並不是所有的自由軟體都具有這個「缺點」，&#xA;不過偏偏常見的一些基本軟體經常會以類 GPL 的授權發行，以致這項特點所產生的影響力往往足夠強大。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;自由軟體提供了使用者特別在程式碼上的極大自由，但有時候這點會讓商業發行有所顧忌。&#xA;依據每個軟體的使用授權不同，有些授權如 GPL 會要求對於軟體的修改、改作、延伸創作等之後的作品也要以相同授權釋出，&#xA;甚至僅僅只是自己的軟體使用到這些軟體的功能，也會受此條件束縛！&#xA;舉個例子，這樣的條件下在 Linux 底下就算寫個 hello world 程式也會需要以 GPL 授權釋出，&#xA;因為你的程式會需要呼叫 printf 函式，這功能在 Linux 上通常是由 glibc 程式庫提供，而該程式庫的授權(在從前)即為 GPL！&#xA;這會讓很多程式碼內含商業機密的產品公司不願意為某些環境開發產品，例如說顯示卡驅動程式或其它敏感儀器的驅動程式，&#xA;這也是為什麼從前 Linux 一直缺乏驅動程式的重要原因之一。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;過度強調自由到「強制」自由開放的情況，反而使得很多開發商對這個生態卻步，最終反而不利這個生態的活性。&#xA;也因此種局面，才催生出後來對開發者較為寬鬆的 LGPL 等授權，至此才緩解了這種蕭條的情況！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_3_4_專門應用或冷門應用的缺乏&#34;&gt;3.4 專門應用或冷門應用的缺乏&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;雖然我們推崇使用自由軟體，然而並不是在任何的用途上，都有自由軟體可以使用！&#xA;大部份的自由軟體由一群懷抱熱情的志願人士發起並參與，&#xA;那麼這些人大多散佈在什麼領域，大概就決定了自由軟體注定只活躍在這些應用上。&#xA;對於任何一個應用需求之下的軟體，首先必須要存在有具有該需求的足夠數量使用者，才能撐起這個市場；&#xA;這些使用者裡面，也許有一些具有程式開發專長；&#xA;而具有程式開發專長的使用者裡面，也許有一些會想要貢獻才能來開發自由的軟體；&#xA;又需要具備一定的數量的具有程式開發專長且願意做出貢獻的使用者，才能撐起這種自由軟體的品質和完整性。&#xA;因此我們可以得到一個簡單的結果：&#xA;在擁有數量足夠龐大的使用者或潛在使用者的應用用途上，才比較有可能出現可堪使用的自由軟體！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;看看實際的狀況，在一些實際需求強勁的應用，比如說文書處理、網頁瀏覽器、作業系統、或編譯器等，&#xA;我們可以找到各種不同的自由軟體，其中大部份的效能、功能強度、和安全性等表現甚至超過同類型的商業軟體；&#xA;再看到一些比較專門的應用領域，比如說影像處理、音訊處理、CAD/CAM 等，&#xA;雖然也存在一些自由軟體，但各種的功能表現比起同類型商業軟體可能就比較遜色；&#xA;若再往下看看一些更專業或更冷們的應用，比如說 CFD 等，則連要找到一套存在的自由軟體都非常困難！&#xA;這個道理非常明白，在使用者群足夠小的領域裡，&#xA;基本上能夠具有專業知識到可以涉入這個領域而成為軟體使用者，人數就夠少了，&#xA;更遑論還要期望其中有軟體開發能力並且具有熱情的人來開發自由軟體！&#xA;當然，反過來說，在需求普遍的應用用途裡，你一定可以找到傑出的自由軟體；&#xA;特別是在電腦科學和軟體工程相關領域，這是自由軟體數量最多、種類最豐、綜合表現最為強悍的勢力範圍，&#xA;因為在這個應用領域的使用者群中，具備軟體開發能力的比例相較其它領域是非常的高！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;那麼除了志願開發者外，商業力量是否會介入冷門領域來開發自由軟體呢？我想答案是否定的，不然這個問題就不存在了！&#xA;商業公司不會無端涉入自由軟體的開發，因為這不符合獲取最大商業利益的原則，&#xA;商業上的力量往往是在一些特別的市場競爭態勢下，才導致投入自由軟體的開發相較之下能夠得利，&#xA;甚至迫於情勢才會進入自由軟體的開發工作。&#xA;在專業又冷門的用途上，加入競爭所需要的知識、技術、和經驗等門檻很高，使得通常是少數公司寡佔市場，&#xA;而在這種狀況下，販售閉源的私有軟體顯然更能夠賺得利潤並掌握使用者們！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;綜和全部的因素，最終造成在需求群體過小的應用領域裡，通常只有少數的商業產品可以選擇！&#xA;而在普遍流行的需求、特別是與電腦科學或軟體工程有關的用途中，&#xA;若你沒有選擇使用自由軟體將會非常可惜，因為錯失了使用地球上最強大軟體來解決你的問題的機會！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_4_為什麼你應該要使用自由軟體&#34;&gt;4 為什麼你應該要使用自由軟體？&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;如同我最開始說的，我極力推薦大家使用自由軟體。&#xA;在知道了自由軟體是什麼、以及了解了一些有關它的各種特性和長短以後，&#xA;接下來說明我鼓勵大家使用自由軟體、或者說為什麼你應該要使用自由軟體的理由。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_4_1_免費&#34;&gt;4.1 免費&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;除了極少見的自由軟體需要花錢買之外，絕大部分網路上能找到的自由軟體都可以被任何人免費下載使用的！&#xA;這大概是所有自由軟體擁護者都會向你吹捧的好處，但很不幸的這一項特點也是一直以來最有爭議的一項！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;絕大部份的自由軟體不用錢，可以讓人無償取得並無限制的使用，這點沒有爭議；&#xA;但是不需要授權費不代表使用該軟體的成本就一定比較低！&#xA;我想絕大多數的一般使用者並不是從一開始接觸電腦以來就在使用自由軟體，&#xA;不然可能也就不需要來看有關什麼是自由軟體的文章了！&#xA;在這樣的前提之下，從你已經上手習慣的軟體轉而使用自由軟體，會不會一下子不習慣、不順手？&#xA;會不會有一些常用的功能找不到在哪裡？會不會甚至有些使用上的思維也需要轉換？&#xA;更別說還有從前使用舊軟體所累積下來的成果要轉換到新的使用環境可以接軌的程度，又會耗費不少力氣！&#xA;這就是數位時代所謂的「轉換與遷移成本」，我在我的前一篇文章有探討過這一部份&#xA;&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_digital-age&#34;&gt;[&lt;a id=&#34;_footnoteref_12&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_12&#34; title=&#34;View footnote.&#34;&gt;12&lt;/a&gt;]&lt;/sup&gt;&#xA;。&#xA;若把這部份的成本也算上去的話，那麼「轉而使用」自由軟體所需要付出的代價&#xA;不見得會小於繼續使用已經使用了數年的既有軟體。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;對於個人用戶而言，轉換的成本並非高到無法跨越，通常只要下定決心，遇到的困難其實都不難解決；&#xA;然而對於企業用戶而言，轉而使用自由軟體所需付出的成本就更為高昂了！&#xA;企業用戶面對的是一群的員工要脫離已經上手的軟體轉而使用另一套軟體，&#xA;其中每一個人的資質、接受度、固有經驗和習慣等都不一致，轉換所需的相關教育課程和訓練少不了；&#xA;若再加上企業在先前已經基於舊軟體所進行的有關於工作流程、相關工具、或相關延伸產品都要從新開發修改的話，&#xA;這個成本將更為可觀！&#xA;何況還有在換用新軟體間的轉換適應期，因尚未熟練或遭遇不熟悉問題而造成的工作效率下降的問題！&#xA;綜合全部的考量，使得換用其它軟體的成本高昂，就算新軟體不用授權費也很難形成足夠的誘因。&#xA;說到這部份，其實反而不是自由軟體的問題，&#xA;因為對於這樣的公司行號而言，換用任何一種其它軟體的成本都是非常高的！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;但再反過來說，如果你遇到一個從未涉入過的應用，想要找尋一套合適的軟體來處理你的問題時，就應該優先考慮使用自由軟體！&#xA;對於一個從未接觸過的應用來說，不管選用什麼軟體都需要摸索、學習，自然也不存在既有資料的問題，&#xA;那麼既然沒有轉換遷移的成本，在有自由軟體可選的狀況下，我實在想不出有什麼合理的理由可以不優先考慮自由軟體？&#xA;唯一合理的解釋大概就是這個潛在的使用者並不知道自由軟體的存在！&#xA;畢竟在臺灣，教育場所一直以來對自由軟體相關的部份付之闕如，身邊的朋友絕大部分從來沒聽過什麼自由軟體，&#xA;而這也是我為什麼決定寫下這篇文章的主要原因。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;此外還有一個殺手級的因素可以讓自由軟體免授權費的優勢蕩然無存，那就是盜版問題！&#xA;對於一個盜版猖獗的地方，自由軟體要不要授權費其實是無關緊要的，&#xA;因為在他們的觀念裡任何一套軟體都是不需要花錢買的！&#xA;你又怎麼能夠在小偷強盜充斥的地方推銷正版軟體呢？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_4_2_安全性&#34;&gt;4.2 安全性&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;軟體的安全性其實有很多面向，除了前面提過的與軟體本身的缺陷和修補方面外，這裡我強調的是來自「惡意程式碼所造成的安全性威脅」。&#xA;對於不提供程式碼而只發佈二進位檔案的軟體，你很難得知這軟體在背後偷偷做了多少事情！&#xA;你覺得正常的公司不會做出這種不道德的事情嗎？那來看看下面一些「已被發現的」實際案例吧：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;ulist&#34;&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;DOC 檔案內藏隱私資訊。&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_13&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_13&#34; title=&#34;View footnote.&#34;&gt;13&lt;/a&gt;]&lt;/sup&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;蘋果裝置上的後門軟體。&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_14&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_14&#34; title=&#34;View footnote.&#34;&gt;14&lt;/a&gt;]&lt;/sup&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;小米手機偷傳資料到北京。&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_15&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_15&#34; title=&#34;View footnote.&#34;&gt;15&lt;/a&gt;]&lt;/sup&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;SONY 音樂光碟暗藏後門程式。&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_16&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_16&#34; title=&#34;View footnote.&#34;&gt;16&lt;/a&gt;]&lt;/sup&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;美政府買通資安大廠 RSA，於加解密機制中暗藏後門。&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_17&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_17&#34; title=&#34;View footnote.&#34;&gt;17&lt;/a&gt;]&lt;/sup&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;NSA 要求微軟安置在 Windows 裡的後門。&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_18&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_18&#34; title=&#34;View footnote.&#34;&gt;18&lt;/a&gt;]&lt;/sup&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;除了正常經營的公司外，更別提那些提供「破解版軟體」的人會在裡面加什麼料了，&#xA;基本上是什麼都有、什麼都不奇怪！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;自由軟體的特點在這裡體現出來，因為程式碼是公開的，懷有惡意的人很難能夠在裡面偷加料而不被發現，&#xA;例如數年前發生在 OpenBSD 的疑雲就是個不錯的例子&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_19&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_19&#34; title=&#34;View footnote.&#34;&gt;19&lt;/a&gt;]&lt;/sup&gt;&#xA;！&#xA;這個特點有時候也成為一些國家政府討厭自由軟體的一項重要因素，&#xA;其中最有名的案例大概就是幾年前發生的 TrueCrypt 事件了&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_20&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_20&#34; title=&#34;View footnote.&#34;&gt;20&lt;/a&gt;]&lt;/sup&gt;&#xA;！&#xA;道理很簡單，各種訊息加密軟體、系統都可以在開發公司的私心、或者國家力量的介入下，暗藏各種後門功能，&#xA;讓使用者以為可以很安心，但事實上當某些國家真的有需要時，便可以「非常快速的」破解這些加密訊息！&#xA;特別是在史諾登揭露了美國的稜鏡計劃後，這些事情更成為舉世皆知的公開秘密。&#xA;而自由軟體開放不受控的特性使得其他勢力難以插手干涉，自然就成為一些惡霸國家欲除之而後快的對象！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;而必須澄清的是，這並不是自由軟體才具有的優點，只要能夠拿到程式碼，就可以自己檢查、編譯程式。&#xA;事實上有不少商業產品允許在使用者付出一定的代價之下提供客戶程式碼，&#xA;這也是為什麼很多政府敏感單位願意使用商用私有軟體的主要原因，&#xA;例如美國國防部竟然會去採購使用 Windows，&#xA;但他沒告訴你的是，他絕不敢在買不到程式碼的狀況下使用 Windows！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;那麼既然只要能拿到程式碼，是不是自由軟體有什麼差別呢？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;olist arabic&#34;&gt;&#xA;&lt;ol class=&#34;arabic&#34;&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;在需要取得程式碼的前提下，自由軟體其實是更為廉價的方案。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;除了你以外，自由軟體還有全世界數不清的專家在監視、維護；&#xA;而對於購買程式碼的商業軟體，你只能憑一己之力去做所有的這些事。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_4_3_調整和適應的自由度&#34;&gt;4.3 調整和適應的自由度&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;自由軟體通常會給用戶極大的自由，當然，主要的原因是來自於開放程式碼的關係。&#xA;因為有程式碼在手，用戶可以做出各種深度的修改和客製，關於這點前面已經提了不少次，相信再說下去耳朵都要長繭！&#xA;但除了程式碼的因素外，還有另一個原因來自於設計思想。&#xA;自由軟體主要思想是開放、自由，自然它的開發參與者大部份都有海納百川的胸襟，&#xA;在開發的過程中，他們通常會本能的包容、並尊重每一個使用者的個人意識；&#xA;反而商業軟體通常會比較限縮使用者的各種選擇性，一來是省得麻煩，再來是若能藉此鎖定使用者的話，何樂不為？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;這就是為什麼自由軟體通常可以執行在各種環境、搭配最多的前後工作流程的原因之一。&#xA;另一個表徵體現在設定調整方面，自由軟體的設定配置項目通常都很細碎，&#xA;細到可能大部份的人都不知道大部份的設定項目是做什麼用的、或者大部份的設定項目對於一般人都沒有修改的需要，&#xA;但選項仍然在那，就為了可能有那麼一天你會需要而存在！&#xA;舉例來說，開源的作業系統在安裝時通常會檢查電腦上是否存在別的作業系統，並試著兼容它，&#xA;而微軟的作業系統則認為你的電腦應該只使用他的系統，而忽視其它已安裝的系統；&#xA;另比如說在 Windows 10 的某些版本上面，微軟想盡辦法的阻饒你使用 Edge 以外的其他網頁瀏覽器&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_21&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_21&#34; title=&#34;View footnote.&#34;&gt;21&lt;/a&gt;]&lt;/sup&gt;&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_22&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_22&#34; title=&#34;View footnote.&#34;&gt;22&lt;/a&gt;]&lt;/sup&gt;&#xA;；&#xA;又比如說 GNOME 或 KDE 的使用者即使在不修改程式碼的情況下，能夠配置出截然不同而令人炫目的桌面環境&#xA;(&lt;a href=&#34;https://www.google.com/search?q=compiz&amp;amp;client=ubuntu&amp;amp;hs=pql&amp;amp;channel=fs&amp;amp;source=lnms&amp;amp;tbm=isch&#34;&gt;Search for Compiz by Google&lt;/a&gt;)，&#xA;但在 Windows 或 Mac 上你能夠調整的幅度極為有限！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_4_4_長期的資料保存與銜接優勢&#34;&gt;4.4 長期的資料保存與銜接優勢&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在資歷保存和數位永續的切入點來看，使用自由軟體能夠給予使用者長久的保障，&#xA;而這才是我覺得的使用自由軟體的最重要好處！&#xA;有關於數位永續的議題我已在我的前一篇文章裡詳細論述過&#xA;&lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_12&#34; title=&#34;View footnote.&#34;&gt;12&lt;/a&gt;]&lt;/sup&gt;&#xA;，&#xA;簡單來說，選擇了私有不公開的數位資料格式做為資料儲存和交換的依據的話，會演變成對特定廠商甚至特定軟體的依賴，&#xA;而長遠來看這將令使用者陷入極為不利的處境。&#xA;因為對特定產品的依賴，使得即便市場上出現了更適合的產品，你也沒辦法跳槽；&#xA;此時就算其他品牌的產品更便宜更強大，你對於所依賴廠商的任何不合理的索求，基本上也沒有任何反抗能力；&#xA;若不幸的這個廠商有一天不復存在了，將極有可能令你的資料進入萬劫不復的境地，&#xA;依資料複雜度而言，甚至有可能連花大錢解決問題的機會都沒有！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;因此用戶若能向廠商購得資料儲存格式或交換協定的文件資料、甚至是得到程式碼的話，將能夠為自己留下極大的自主性和後路。&#xA;而從這個角度來看，使用自由軟體不正是一種極為廉價的解決方案嗎？&#xA;同樣因為自由軟體參與者通常都主張開放自由的關係，自由軟體對於公開的標準通常擁有一種接近偏執的愛好，&#xA;這又讓自由軟體的使用者更有保障，&#xA;因為大多時候用戶並不需要去研究修改程式碼，就能夠在好幾套符合標準的軟體解決方案中自由切換。&#xA;以網頁瀏覽器為例，Firefox、Chrome、Safari、和 Opera 等瀏覽器的使用者大多自由的互相跳槽來去，&#xA;但一些當初依賴 IE 和 .Net 與 ActiveX 所建置的網站卻讓使用者沒有使用 IE 以外瀏覽器的選擇！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_5_使用自由軟體應有的心態&#34;&gt;5 使用自由軟體應有的心態&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在了解了自由軟體是什麼、並明白自由軟體的各種優缺特性後，基本上你已經具備足夠的知識去使用或評估自由軟體。&#xA;接下來我要寫一些關於心態上的認知，好讓大家在使用自由軟體時能夠先有良好的心理建設，&#xA;至少在遇到一些令人氣餒的問題時能知道不該罵誰而應該怪誰。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_5_1_當本地語言翻譯不足時&#34;&gt;5.1 當本地語言翻譯不足時&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;對於各種軟體，我想最常成為使用者跨入障礙的應該就是語言翻譯的部份了！&#xA;不管多麼強大、或者多麼簡單的軟體，只要它沒有中文語言版本，是不是就很容易讓人望之怯步？&#xA;而對於自由軟體，可能還有一些更讓使用者心情起伏的狀況，&#xA;比如說中文翻譯不完全，介面中仍含有大量英文；或者是有簡體中文版本，卻沒有正中文版本！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;一般面對這樣的狀況，人們可能容易埋怨開發商不推出自己語言的版本，&#xA;甚至責怪說為什麼在語言上被大小眼對待，比方說同樣是中文卻只提供簡中版本。&#xA;對於商業軟體，這樣的抱怨是合理的；但對於自由軟體，我們不能抱怨任何人！&#xA;如同我們從前說的，自由軟體主要依賴一群志願者的貢獻，&#xA;因此，自由軟體的本地翻譯不足時只代表了一件事，那就是&#xA;與你同語言同文化的人裡面，很少人在使用這套軟體、要不就是沒有人願意做出貢獻。&#xA;那麼，你覺得應該要歸咎於誰呢？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在使用自由軟體而遇到和語言有關的問題時，不妨想想其他與你相同語言文化的使用者是不是也會感到困擾？&#xA;若是你有空閒有餘力，是不是願意提供比較正確完整的語言翻譯好造福自己的同胞呢？&#xA;如果你下次看到軟體只有簡中版本，這代表了大陸人熱衷於此，而臺灣、香港等地沒有人願意付出，&#xA;那麼與其抱怨，何不化悲憤為力量，互相較勁，把它變成良性競爭的動力？&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_5_2_當軟體不符自己期望時&#34;&gt;5.2 當軟體不符自己期望時&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;與翻譯不足的情況類似，當你使用自由軟體而感受到任何功能或其它部份的不足時，其實你可以有更積極的做法。&#xA;請常記得，自由軟體是大家一起付出的產物，因此若您有什麼不滿足的地方，也可常常思考自己是不是能夠貢獻什麼？&#xA;若你有能力，不妨多付出一些，使它更完整，也造福群眾；&#xA;若你沒有能力，也可以提出你的意見、願望、遭遇的問題等意見回饋，好讓有能力的人能夠得到更多實際的資訊來完善開發；&#xA;若你仍然不能滿足，那麼也許這套軟體還未成熟完美到可以符合你的需要，也許它還需要一些時間機會來慢慢茁壯。&#xA;時間寶貴的你當然可以有選擇其它軟體的權利，當然可以自由的來去，&#xA;只是注意應當收起漫罵，畢竟你並未支付報酬給任何人不是嗎！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_5_3_當程式可以正常運作時&#34;&gt;5.3 當程式可以正常運作時&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;若很幸運的，某套自由軟體在你的裝置上能夠正常運作，甚至能夠流暢執行而沒有遭遇任何問題的話，&#xA;請不要把它視為理所當然！&#xA;我想對於大部份的個人用途上，你應該沒有為這套軟體付出一分錢，&#xA;而這套軟體卻是多少人無償的共獻出自己的心血，才能讓你順利的運用它來處理你的問題。&#xA;下次當你意識到所使用的軟體可以正常的工作而沒有給你加添額外麻煩的時候，&#xA;不妨在心底深深的感謝所有為了眼前軟體而付出的人，就是那些與你素未謀面、勞心費力，卻讓你可以輕鬆享受一切的人們。&#xA;常懷感恩的心，並期許自己有一天也可以為大眾、特別是自己的同胞做些什麼事情。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_6_我可以為自由軟體做什麼&#34;&gt;6 我可以為自由軟體做什麼？&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;正所謂人人為我、我為人人。&#xA;若你有幸使用自由軟體，並且覺得受益良多的話，除了感激以外，你還可以有更具體的回饋行動。&#xA;但是因為大部份的人不了解自由軟體生態，當心裡出現想要造福眾人的一把火時，卻不知道自己能夠做什麼？&#xA;這情況可能讓有些人心裡鬱卒，因此，我下面要來列舉一些可能的實際回饋方案供讀者做為參考。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_6_1_加入開發行列&#34;&gt;6.1 加入開發行列&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;如果你對這軟體有很多想法、並且也擁有改變的實力，那麼何不介入程式的開發，直接提供你的強力貢獻來造福同胞？&#xA;自由軟體界如果能有更多像你這樣的人共同付出的話，一定會進步神速的！&#xA;與其嘴上抱怨程式如何的不令你滿意，那就來改吧！做出你滿意的樣子，再回饋給社群。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;另外這裡要特別提醒一點，大部份的人可能會把開發和寫程式畫上等號，但這是不對的！&#xA;自由軟體的開發固然需要人去寫出不少程式，但是對於美術、操作介面、語言翻譯、流程設計、和測試等等的人員的需求一樣急切！&#xA;除了寫程式以外，&#xA;如果你善於繪製程式所需的各種圖示、背景等、或是願意提供本地語言翻譯、或是願意測試並回報程式的各種問題、&#xA;或是還有其它你認為能夠貢獻的地方，都可以嘗試著去做付出。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;在你下載到程式軟體的網站，應該也能找到連繫開發團隊的方法(通常是透過電子郵件)，&#xA;可以大膽的主動聯絡並加入有關的討論。&#xA;而對於測試回報等狀況來說，情況會更簡單一些！&#xA;有些平臺有架設缺陷回報系統，你只要填寫並送出即可，&#xA;而有些平臺可能會需要在討論區內提出所遭遇的問題來做為回覆報告。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_6_2_提供意見與回答問題&#34;&gt;6.2 提供意見與回答問題&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;如果你已經使用某套軟體好一陣子，自認對這套軟體足夠熟悉了，&#xA;那麼你也可以在社群網站上、或是各個討論區內解答回覆其他使用者對這套軟體的各種疑難雜症，&#xA;這會節省許多人大量的時間精力，也會讓不少人直接感激你所做的付出！&#xA;如果你當初在入這套軟體的時候，也從不少前輩那裡得到幫助指引的話，那麼請時常想著這些畫面，&#xA;思考初學者的處境，這會讓你在面對一些可能令你發狂的白痴問題時可能會派上用場！&#xA;如果你從前沒有任何的前人可以取得幫助的話，要不就是軟體太簡單、要不就是你極度聰穎以致不需要其他人的幫助，&#xA;要不就是這表示你是走在這軟體生命週期前端的時代開創者，&#xA;不管是哪一種，你其實可以從你開始站出來，做為第一代的資深前輩來庇蔭後進。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;除了面向使用者以外，你還可以轉而面對開發者。&#xA;做為一個資深用戶，向開發社群提供你站在使用者端所看到聽到和體察到的各種有用意見，&#xA;或者提供你的各種看法或期望。&#xA;做為開發團隊的眼睛與耳朵，以不同的角度提供開發團隊不同視角的訊息，使開發成果能適合更多的使用環境。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_6_3_贊助&#34;&gt;6.3 贊助&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;除了直接介入程式的開發維護工作或者服務支援外，還有一種方法比較不需要讓人勞心費力，那就是直接提供金錢上的援助！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;雖然大部份的自由軟體讓人無償下載使用，但不代表他們不願意收受金錢。&#xA;社會大眾的捐助款項可以用來補貼開發人員、或是支付一些正職開發人員的薪水、&#xA;以及支應其他行政推廣人員費用、或用於分攤辦公室場地相關成本，&#xA;特別是對於由 XX 基金會所維持的維護組織而言，這些捐款會很有幫助！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;因此若你想要回饋自由軟體，卻沒有太多能力或時間的話，也可以透過贊助的方式做為幫助。&#xA;有些軟體可以在下載頁面附近找到捐款贊助的選項，請大膽點下去，並依據個人的意願撥款給開發維護團隊吧！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_6_4_使用它&#34;&gt;6.4 使用它&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;幫助自由軟體其實還有一種很簡單又不費力的方式，就是去使用它！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;即使沒有能力或沒有心力參與任何與自由軟體有關的工作，我們也能夠透過使用自由軟體來給出幫助。&#xA;僅僅只是使用自由軟體就能夠幫助自由軟體，這怎麼說呢？&#xA;再回到我一開始舉的部落格文章的例子，世界上那麼多人耗費心力寫作豐富內容的文章放上網路供人無償閱讀，&#xA;圖的是什麼？又什麼樣的狀況可以激勵這些志工作者更賣力的寫出更多東西呢？&#xA;不就是每一個作者都希望有更多的人來看他的文章嗎？那麼在自由軟體上面又何嘗不是如此？&#xA;對於一套自由軟體，愈多的人去使用它，就能讓開發者擁有愈多繼續做出好成品的動力；&#xA;愈龐大的使用者群體，也能給予開發社群更大的使命感，督促大家兢兢業業的開發出高品質的程式、和眼光更為長遠的設計。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;同樣的概念再延伸下去，推薦其他人使用自由軟體、並推廣自由軟體的概念，讓更多的人接觸並了解自由軟體，&#xA;一樣是每個人可以為自由軟體所付出的極大貢獻，其功勞並不亞於參與開發和捐款贊助以及以其他方式提供幫助的人！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;所以請不要認為自己沒有為自由軟體做出什麼付出卻無償使用而心懷愧疚。&#xA;請大膽的使用它、把它介紹給親朋好友中可能有需要的人，這個付出就足夠大了！&#xA;當使用人數愈來愈多的時候，假以時日，你會發現手上的自由軟體變得更強大也更好用！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;footnotes&#34;&gt;&#xA;&lt;hr/&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_1&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_1&#34;&gt;1&lt;/a&gt;. 「The Free Software Definition」, GNU, &lt;a href=&#34;https://www.gnu.org/philosophy/free-sw.html&#34;&gt;連結&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_2&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_2&#34;&gt;2&lt;/a&gt;. 「自由開源軟體授權條款的三分法」, 自由軟體鑄造場, &lt;a href=&#34;https://www.openfoundry.org/tw/legal-column-list/105-2010-07-15-10-42-58&#34;&gt;連結&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_3&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_3&#34;&gt;3&lt;/a&gt;. 「五種開源授權規範的比較」, InspireGate, &lt;a href=&#34;http://inspiregate.com/internet/trends/74-comparison-of-five-kinds-of-standard-open-source-license-bsd-apache-gpl-lgpl-mit.html&#34;&gt;連結&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_4&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_4&#34;&gt;4&lt;/a&gt;. 「常用自由軟體」, 教育部自由軟體數位資源推廣服務中心, &lt;a href=&#34;http://ossacc.moe.edu.tw/modules/ck2_software/index.php?cate_sn=1&#34;&gt;連結&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_5&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_5&#34;&gt;5&lt;/a&gt;. 「Xvid」, 維基百科, &lt;a href=&#34;https://zh.wikipedia.org/wiki/Xvid&#34;&gt;連結&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_6&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_6&#34;&gt;6&lt;/a&gt;. 「李家同他是怎麼拿到電機及計算機學位的啊-_-」, 沒見過壞人嗎？, &lt;a href=&#34;http://blog.lester850.info/archives/2009/09/28/871/&#34;&gt;連結&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_7&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_7&#34;&gt;7&lt;/a&gt;. 「那些台灣軟體產業所缺少的 – 開放源始碼」, 程式設計 遇上 小提琴, &lt;a href=&#34;http://blog.ez2learn.com/2011/11/25/taiwan-software-lacking-of-open-source/&#34;&gt;連結&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_8&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_8&#34;&gt;8&lt;/a&gt;. 「自由軟體運動」, 維基百科, &lt;a href=&#34;https://zh.wikipedia.org/wiki/%E8%87%AA%E7%94%B1%E8%BD%AF%E4%BB%B6%E8%BF%90%E5%8A%A8&#34;&gt;連結&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_9&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_9&#34;&gt;9&lt;/a&gt;. 「Linux 桌面两大阵营 GNOME 与 KDE 的战争」, 阮一峰的IT笔记, &lt;a href=&#34;http://www.ruanyifeng.com/notes/2007/01/the_war_between_gnome_and_kde.html&#34;&gt;連結&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_10&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_10&#34;&gt;10&lt;/a&gt;. 「Why is Microsoft contributing to the Linux kernel?」, Quora, &lt;a href=&#34;https://www.quora.com/Why-is-Microsoft-contributing-to-the-Linux-kernel&#34;&gt;連結&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_11&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_11&#34;&gt;11&lt;/a&gt;. 「Why does microsoft contribute to the Linux kernel?」, Jonas Stein, &lt;a href=&#34;https://unix.stackexchange.com/questions/178615/why-does-microsoft-contribute-to-the-linux-kernel&#34;&gt;連結&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_12&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_12&#34;&gt;12&lt;/a&gt;. 「數位時代需要面對的困難：資訊保存與接駁」, 伊蜜澤瑞, &lt;a href=&#34;http://ignatius1895.pixnet.net/blog/post/347176709-%e6%95%b8%e4%bd%8d%e6%99%82%e4%bb%a3%e9%9c%80%e8%a6%81%e9%9d%a2%e5%b0%8d%e7%9a%84%e5%9b%b0%e9%9b%a3%ef%bc%9a%e8%b3%87%e8%a8%8a%e4%bf%9d%e5%ad%98%e8%88%87%e6%8e%a5%e9%a7%81&#34;&gt;連結&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_13&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_13&#34;&gt;13&lt;/a&gt;. 「.doc檔洩露機密」, 毛慶禎, &lt;a href=&#34;http://blue.lins.fju.edu.tw/mao/nodoc.htm&#34;&gt;連結&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_14&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_14&#34;&gt;14&lt;/a&gt;. 「蘋果電腦的 iOS 7 MDM 及其他監聽陰謀」, 資訊人權貴ㄓ疑, &lt;a href=&#34;https://ckhung0.blogspot.tw/2013/12/apple-backdoors.html&#34;&gt;連結&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_15&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_15&#34;&gt;15&lt;/a&gt;. 「小米手機偷傳資料到北京？iThome找資安專家實測：有」, iThome, &lt;a href=&#34;https://www.ithome.com.tw/news/89991&#34;&gt;連結&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_16&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_16&#34;&gt;16&lt;/a&gt;. 「電腦支援 Windows 10, 小心廠商沒收你的開機鑰匙」, 資訊人權貴ㄓ疑, &lt;a href=&#34;https://ckhung0.blogspot.tw/2011/10/windows-8-secure-boot.html&#34;&gt;連結&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_17&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_17&#34;&gt;17&lt;/a&gt;. 「美政府買通資安大廠 RSA，於加解密機制中暗藏後門」, Wayne 韋恩筆記, &lt;a href=&#34;http://dr.waynehuang.cc/2013/12/nsa-rsa-backdoor.html&#34;&gt;連結&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_18&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_18&#34;&gt;18&lt;/a&gt;. 「NSA 要求微軟安置在 Windows 裡的後門…​ 保護智財， 無可奉告」, 資訊人權貴ㄓ疑, &lt;a href=&#34;https://ckhung0.blogspot.tw/2013/07/nsakey.html&#34;&gt;連結&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_19&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_19&#34;&gt;19&lt;/a&gt;. 「OpenBSD 並沒有內藏 FBI 後門; 值得關切的是神秘版的 RSA 加解密演算法及 SecurID」, 資訊人權貴ㄓ疑, &lt;a href=&#34;https://ckhung0.blogspot.tw/2013/08/openbsd-fbi-rsa-securid.html&#34;&gt;連結&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_20&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_20&#34;&gt;20&lt;/a&gt;. 分析一下 TrueCrypt 之死(自杀 or 他杀？)，介绍一下应对措施, 编程随想的博客, &lt;a href=&#34;https://program-think.blogspot.com/2014/06/truecrypt-dead.html&#34;&gt;連結&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_21&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_21&#34;&gt;21&lt;/a&gt;. 「就是不給你選！微軟限制 Windows 10 S用戶更改瀏覽器及搜尋引擎」, 高敬原, &lt;a href=&#34;https://www.bnext.com.tw/article/44333/microsoft-windows-10s-default-browser-microsoft-edge&#34;&gt;連結&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_22&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_22&#34;&gt;22&lt;/a&gt;. 「微軟仍不願你在 Windows 10 輕易更換預設瀏覽器為 Chrome、Firefox」, 陳冠榮, &lt;a href=&#34;http://technews.tw/2015/10/19/microsoft-windows-10-default-apps-browser-prompt/&#34;&gt;連結&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>數位時代需要面對的困難：資訊保存與接駁</title>
      <link>http://www.huoschen.idv.tw/blog/digit/%E6%95%B8%E4%BD%8D%E6%99%82%E4%BB%A3%E9%9C%80%E8%A6%81%E9%9D%A2%E5%B0%8D%E7%9A%84%E5%9B%B0%E9%9B%A3%E8%B3%87%E8%A8%8A%E4%BF%9D%E5%AD%98%E8%88%87%E6%8E%A5%E9%A7%81/</link>
      <pubDate>Thu, 29 Mar 2018 00:00:00 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/digit/%E6%95%B8%E4%BD%8D%E6%99%82%E4%BB%A3%E9%9C%80%E8%A6%81%E9%9D%A2%E5%B0%8D%E7%9A%84%E5%9B%B0%E9%9B%A3%E8%B3%87%E8%A8%8A%E4%BF%9D%E5%AD%98%E8%88%87%E6%8E%A5%E9%A7%81/</guid>
      <description>&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;數位產業有不少方便或迷人之處，我想這不需要我多說，生活在數位時代的大家應都有體會；&#xA;但談到數位資訊的特性，特別是一些限制與困難，好像又沒多少人清楚！&#xA;這裡為大家分享我對這個議題的一些觀察與心得，&#xA;當中我覺得與社會大眾最相關、也是這次想要深入討論的兩個內容分別是：&#xA;數位資訊的資料保存、及數位資料和工具的轉換遷移，且聽我娓娓道來。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;從我大學時代對程式設計產生興趣到現在成為程式設計工作者大概也十多年了，&#xA;慢慢的有一些自己的經驗和感想，也喜歡和朋友們討論分享&#xA;(雖然大部份時候是我單方面分享比較多，畢竟身邊朋友中了解數位內容的比例也不高)。&#xA;我體認到數位資訊產業存在一些重大的且與大眾切身相關的問題，然而大部份的人似乎完全無感！&#xA;於是興起了寫作勸世的念頭。&#xA;之後我將會用幾偏文章來分別闡述數位資訊有關的一些比較重大的問題，可能也會提出一些解決方案，&#xA;給有緣看到的人做為了解與參考。&#xA;也希望有其他感想或指正的人不吝給予意見回饋。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_數位資料的保存&#34;&gt;數位資料的保存&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;數位時代帶給我們這一代的人很多驚奇的感受，&#xA;在上個時代理難以想像的大量資料竟可以被儲存在體積如此嬌小的磁帶、硬碟、光碟、&#xA;甚至是僅如手指大小的快閃記憶體等儲存媒體上！&#xA;然而，你知道數位時代的資料與從前相比卻是脆弱無比嗎？&#xA;數位資料都以極其微小電子、化學、或物理變化刻錄在某種物理材質上，&#xA;為了大量儲存資料的緣故，這個尺度非常的小，並且未來還要更小；儲存元素的排列非常緊密，並且未來還要再更緊密。&#xA;這樣的特性使得資料的長時間保存變成一種艱難的任務，至少和傳統儲存媒介比較起來困難不少！&#xA;雖然說傳統紙本的資料保存方法也會有例如遺失、受潮、火災等損毀，&#xA;但這些損失通常是局部性的，有些遭受損壞後的資料重建工作也不致於完全無法進行；&#xA;然而數位資料往往能夠因為局部的小小缺陷而造成全面性的資料損毀，&#xA;並且在大部分的情況下，受損的資料無法復原、無法識別！&#xA;試著回顧一下自己、以及身邊親朋好友的數位資料使用經驗，就不難發現此一特點！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;還好數位資料還有另一個與往常不同的特性，那就是資料複製幾近無成本，&#xA;於是備份資料便成為解決這個問題最常被提出來的解決辦法了！&#xA;然而在跌跌撞撞中，人類也發現並不是有備份就能萬無一失！&#xA;面對不同類型的威脅，所需要的備份對策也有些許不同。&#xA;例如鏡像磁碟解決了因為機件老化而造成的資料遺失損毀問題；&#xA;但對於經由病毒或外部入侵破壞、甚至是由於使用者錯誤操作而造成的資料誤刪問題卻無法防禦！&#xA;因為所有的磁碟針對一個磁碟操作指令都會在同一時間內同步進行。&#xA;於是保險的數位資訊的保存系統還必須要加上有關時間版本的備份、控制、查詢、和回復等功能；&#xA;然後一個雷擊下來，機房全毀，所有資料保存機制全無作用！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;大概就像這個樣子，&#xA;現今發展出來比較完善的備份機制除了資料冗餘外，還要加上異地、異質、以及時間版本存檔等。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;但是還有一個數位資料的大殺器直到現今依舊沒有良好且能夠普及的對抗方式，就是電磁脈衝！&#xA;短暫而強烈的電磁脈衝足以燒毀由極細緻電子電路所構成的電腦晶片等設備，當然也就能夠造成數位資料的全面性毀損。&#xA;大的電磁脈衝可以在核彈爆炸、以及專為產生電磁脈衝風暴而製做的電磁脈衝炸彈爆炸時產生。&#xA;講到這裡也許很多人鬆了一口氣，畢竟很多人認為戰爭發生在自己生活的地方這件事是很難想像的，&#xA;但是，大自然其實也會發出足夠強大的電磁脈衝，例如太陽風暴！&#xA;太陽有時會發出非常烈度不一的電磁風暴，當它打到地球時，輕則造成無線電干擾，重則損壞電力設備。&#xA;1859年9月就發生過一次，造成歐美的電報系統和電力系統異常，這次事件稱為卡靈頓事件；&#xA;1967年5月也發生過一次強烈的風暴，使冷戰時代的美國飛彈預警系統全面失靈；&#xA;2012年7月，強烈的太陽風暴幾乎就從地球旁穿過(宇宙尺度)，&#xA;果真如此，別說電腦了，當今的一切電子設備將全部歸零！&#xA;說實在的，就從有人類開始算起，強烈太陽風暴打到地球上早就無數次了，&#xA;但因該重來沒有哪個時代的人像現在這樣的害怕太陽風暴吧！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;雖然現在已經開始有軍用電子設備要求能夠防範電磁脈衝的破壞，但畢竟這樣的設計還未普及於大眾，&#xA;因此可說在甚至十年內，人類社會對於太陽風暴所造成的資料設備損毀是完全沒有任何招架力的！&#xA;你知道嗎？網際網路的發明者直到現在仍使用紙本方式在保存自己的照片呢！&#xA;&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_save-by-paper&#34;&gt;[&lt;a id=&#34;_footnoteref_1&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;總之，面對數位資料的保存問題，首要要有的認知是沒有儲存媒體是真正保險的。&#xA;最重要的重點就是備份、備份、再備份，&#xA;這不是什麼新的方法概念，但問問自己，有多少人好好做到「備份」這件事？&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_2&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_2&#34; title=&#34;View footnote.&#34;&gt;2&lt;/a&gt;]&lt;/sup&gt;&#xA;其實只要多做備份、勤做備份，就能避免絕大多數讓資料全損的機會；&#xA;至於不可抗拒的天災？目前還沒有任何現實的方法對策，只能聽天由命了！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_數位資料和工具的轉換遷移&#34;&gt;數位資料和工具的轉換遷移&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;數位資料、和數位產品還有一個在以往的時代難以想像的巨大成本：「轉換遷移成本」。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;我們應該都知道「購入成本」，就是買一個東西進來的成本，這是大家最熟悉的成本；&#xA;隨著工業時代的到來，人們開始關注到包含維護保養等在內的「壽期成本」，&#xA;體認到有些購入成本比較低的東西不見得真的比較便宜；&#xA;到了數位時代，大家漸漸發現「轉換遷移成本」才是最恐怖最昂貴的成本！&#xA;什麼是轉移成本？我們原本使用一個東西，後來改用另一個東西，&#xA;為了使用這另外一個東西所需要付出的成本就是轉換遷移成本。&#xA;比方說一張椅子，今天基於任何緣故我買了另一張椅子來替換這張椅子，&#xA;除了要花錢買之外，兩張椅子坐起來的感覺不一樣、佔用的空間不一樣、顏色不一樣等等，&#xA;都需要花時間心思去適應，這就是買別張椅子的轉換成本。&#xA;同樣的，換車、換房、換工作、換學校等等都需要轉換遷移成本，&#xA;只是這個成本一直以來可能低到不被人所關注，&#xA;通常只在像國家軍隊要換用不同口境槍彈、要購買不同系統的戰機時，轉移成本才會大到讓人注目。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;然而對於數位資料與相關產品，有些人可能已經經驗過，「換用別的東西」這是多麼困難的事情！&#xA;我們通常不能、或難以像更換不同品牌型號的汽車駕駛，或是像更換不同品牌型號的辦公桌和文件櫃那樣&#xA;來更換使用不同的數位產品，特別是軟體產品。造成這種現象的主要原因有二：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_軟體操作設計的差異&#34;&gt;軟體操作設計的差異&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;不像汽車雖然每個廠牌型號都不一樣，但主要的操作結構卻大同小異，一通百通。&#xA;至少你沒看過排檔桿在頭頂上的車子、或是排檔桿不是前後推拉而是左右推拉操作的車子吧？&#xA;或是A車油門用腳踩、B車油門用左手推、C車油門用右手操作，並且往外拉是加油而往內推是減油的車子？&#xA;但是不同廠牌型號的軟體，其操作介面往往大相逕庭！&#xA;這是設計思想或應用環境的考量，通常不能說誰對誰錯，&#xA;但卻往往造成熟悉其中一套軟體的人在轉而使用另外一套軟體時(甚至很多時候其實是同一家廠商的不同版本)&#xA;的巨大學習阻力！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;對於操作方式不同的這個問題，站在使用者的角度能夠選擇的方法不多，&#xA;除了死巴著某個型號版本不換以外，就是改變自己去適應不同。&#xA;保持一個開放的心態接納不同軟體的不同操作方式，&#xA;對於當中遇到的挫折，大部份其實並不是另一套軟體不好，只是設計的不同罷了！&#xA;提醒自己時時充滿學習新事務的心態，比別人更快的掌握新的知識技巧，誰叫我們剛好生在數位科技日新月異的年代！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;對於軟體開發商，看似他們才是是能夠解決操作問題的主要角色。&#xA;但就像我說的，大部份的設計差異是設計概念或應用環境的不同而造成，硬要強迫大家做成一樣的長相也未必是好事。&#xA;我舉個例子，若是把智慧型手機與桌上型電腦的文書處理軟體做成一樣的介面和操作方式，我想不會有人認為這是好的吧！&#xA;又比如說如果我們要讓 Mac 和 Windows 電腦上的軟體介面一致，那我們都可以想像到兩家公司跳出來吵架的畫面，&#xA;Microsoft 一定說 Mac 要改成和 Windows 一樣，畢竟 Windows 使用者最多；&#xA;而 Apple 一定跳出來說我們的 UI UX 設計是最好的，為什麼要和垃圾般的 Windows 一樣？&#xA;應該是 Windows 要改成和 Mac 一樣才對！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;不過撇除這些因為應用環境或設計理念而必須的不同，在其它地方上不同廠商的確有漸漸做得一致的趨勢，&#xA;而且小廠商對於這件事更加賣力，畢竟減低客人轉換使用自己軟體的成本對於自己是有利的！&#xA;反而對於大廠商，特別是那些市佔率超高的大廠商，往往挾著擁有龐大死忠客戶的支持，恣意變更軟體操作介面，&#xA;每次改版弄得客戶哀聲四起也豪不在乎！畢竟增加客戶轉而使用其他對手產品的成本，這對於自己是更有利的！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_檔案資料格式的問題&#34;&gt;檔案資料格式的問題&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;討論完前面提到對於軟體「操作使用」的問題後，另一個更大的問題就在於「資料格式」(包含通訊協定，下同)。&#xA;通常很少有軟體不需要計算處理、存取、或收送任何「資料」的，而這些資料如何被保存交換？&#xA;不像傳統紙本書面資料，不論筆不同、墨水不同、筆跡不同、還是紙張不同、甚至是書寫格式不同，&#xA;這些通常都不會在資料的交換、閱讀、或保存上有什麼困難；&#xA;數位的資料就是一大堆「0」與「1」的排列(我們一般稱為「二進位格式資料」)，基本上沒有人能夠直接閱讀然後讀懂！&#xA;數位資料的閱讀以及編寫，人類永遠需要透過「軟體」來進行，&#xA;而軟體如何將人看得懂的資料轉換成二進位資料，以及如何將一堆二進位資料轉換回人可利用的資料，&#xA;這就牽涉到所謂數位「資料格式」的問題。&#xA;事實上資料格式的問題並不只存在於人與資料之間，若不同的軟體之間需要交換資料也會面臨到此問題，&#xA;比如說使用繪圖軟體製做一個圖片檔，然後使用文書軟體利用這個圖片檔，&#xA;那麼這個文書軟體就需要知道如何解析圖片檔案並加以利用。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;一直以來，軟體的資料格式都是做軟體的人自己決定、自己設計的，&#xA;於是若不使用同一套軟體，人沒有辦法解讀二進位檔案的資料！&#xA;除非你能拿到這套軟體儲存資料的格式規格文件，然後照著它重做讀寫解析；&#xA;或者走向更慘烈的道路：使用逆向工程方法研究破解該資料格式，然後重製資料讀寫功能！&#xA;這導致了兩個嚴重的問題：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;olist arabic&#34;&gt;&#xA;&lt;ol class=&#34;arabic&#34;&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;不同軟體之間的資料共享變得困難重重&lt;/strong&gt;。&lt;br/&gt;&#xA;比如說讓文書軟體利用繪圖軟體產製的成品、&#xA;或讓影片播放器播放影片製做軟體產製的影片、&#xA;或讓網路瀏覽器能夠閱讀網站伺服器的網頁等等，都變得難以實現，&#xA;除非你所使用的一系列軟體全都出自於同一個開發商。&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_3&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_3&#34; title=&#34;View footnote.&#34;&gt;3&lt;/a&gt;]&lt;/sup&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;對特定軟體的依賴&lt;/strong&gt;。&lt;br/&gt;&#xA;若某個軟體所產生的資料只有該軟體能夠正確的加以讀取利用，&#xA;則代表使用者沒有辦法換用其他的軟體來執行同樣的工作，&#xA;除非使用者願意捨棄其重前所擁有的數位資料，然後使用新軟體重新開始！&#xA;這導致隨著使用者所累積的數位資料愈來愈多，使用者對某特定軟體的依賴將愈來愈深，而成為死忠支持者；&#xA;不同於政治上狂熱的死忠支持者，這種的軟體死忠者往往是迫於無奈卻又離不開！&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_4&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_4&#34; title=&#34;View footnote.&#34;&gt;4&lt;/a&gt;]&lt;/sup&gt;&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_5&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_5&#34; title=&#34;View footnote.&#34;&gt;5&lt;/a&gt;]&lt;/sup&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;數位產業剛開始發展的時候，說實在的沒有人想到這個問題，因此引發了一些悲慘的事件！&#xA;要解決資料格式所導致的問題，就要讓軟體公開自己的資料格式規格定義、或者讓軟體改使用某種共同的資料格式，&#xA;在透明格式或共同格式的基礎下，其他軟體就能夠依循共同的規格來交換文件或利用其資料。&#xA;不管共同資料格式來自於國際公正機構的制定或是大頭廠商間的妥協抑或其它，&#xA;標準、透明、通用的資料格式對使用者是福音，對產業的競爭也是良性的。&#xA;以文書處理軟體為例，在基於共同格式標準的前提下，&#xA;A 品牌的軟體所編寫的檔案便能被 B 品牌的軟體正確開啟並加以編寫，反之亦同。&#xA;這樣，消費者可以依據自身的需要選用最合適的產品，&#xA;有些軟體受擁戴是因為超級複雜強大；&#xA;有些軟體受青睞是因為功能雖陽春但以體積小巧玲瓏，可以在任何運算資源稀缺的裝置上正常運作；&#xA;有些軟體受惠顧是因為功能雖不豐富但操作介面簡單易懂又符合直覺，適合非專業人事入門使用；&#xA;有些軟體受喜愛是因為沒什麼強處但 UI 設計粉紅又可愛；&#xA;有些軟體受特定領域人士愛用是因為它某個特定領域的工具特別充實完善；&#xA;還有些軟體……&#xA;不管怎麼樣，這不就是一個產業的競爭應該要有的樣子嗎？比如說汽車市場。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;但是，通用格式卻會傷害到老牌又擁有市場規模的既得利益軟體廠商的利益！&#xA;這些廠商的軟體產品在早年也許真有兩把刷子，又因各種緣故佔到市場先機而奪得廣大使用者的愛用。&#xA;但時過境遷，現在它們的軟體已經沒有以往那麼叱吒風雲，&#xA;又或者現在的使用者只是很單純的不想要被綁死在該廠商的軟體上。&#xA;不管是哪一種理由，讓消費者對別人投懷送抱一定會損害到自己的收益，&#xA;於是不管道德不道德，在資料格式上搞鬼變成綁架使用者的有效方法，&#xA;使其成為公共標準格式推行的最大阻礙！&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_6&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_6&#34; title=&#34;View footnote.&#34;&gt;6&lt;/a&gt;]&lt;/sup&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;透過在資料格式上搞鬼來鞏固消費版圖？這是如何做的呢？這裡不說太多細節，我只說原理：&#xA;假設有 A、B、C、D、E 五家廠商共同遵守標準，&#xA;他們所產製的資料都完全可以交換利用，使用者也可以依其喜好或需求選用任何品牌。&#xA;這時某家 Z 廠商決定不合作，你們遵守標準是你們的事，我就是要使用我自己制定的私有格式，&#xA;任何人來用我的東西就是要遵守我的規則；&#xA;甚至更壞，Z 廠商表面上與大家合作使用共同格式，但實際上他對這種格式的細節認知與大家不同。&#xA;這會導致 A、B、C、D、E 所產生的資料互相交換都沒有問題，就只有在與 Z 交換資料時會有問題！&#xA;理論上 Z 應該會被大家唾棄，然後從市場上消失；&#xA;但這裡不要忘了一個前提，Z 在此之前已經擁有了大部份的市場份額，於是結果完全相反！&#xA;在大家都用 Z 的狀況下，若有一個人因為個人喜好或其它因素使用了 A 軟體，那麼這個人必然被群起圍攻，&#xA;因為大家一直以來不曾出過問提的互動模式(Z-Z 資料交換理論上不會有問題)竟然在 A 身上出了錯，&#xA;誰要為此負責？我想結果是很明顯的，&#xA;對於一群不懂數位也不明白大廠壟斷問題的一般使用者而言，是不可能會把問題怪到 Z 身上的！&#xA;於是 Z 廠商就這麼坐收一大群支持者在第一線幫他鞏固了市場利益，而最後被邊緣化的反而是那些其他品牌的軟體！&#xA;你說這些理論太難懂，想要問實際的案例嗎？&#xA;回頭想想當年無人不知無人不曉的 IE6、還有每次一改版就搞得大家格式不相容的歷代 Office 也許就能理解了。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_為什麼我們需要在意數位轉換問題&#34;&gt;為什麼我們需要在意數位轉換問題？&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;有些人會說：&#xA;我又不懂數位什麼的、我也不寫程式、也不會去經營軟體公司，&#xA;那些壟斷什麼的、公開格式什麼的和我有什麼關係？&#xA;至於被特定軟體綁住？我從前就一直使用這套軟體，也沒有對我造成什麼問題啊！&#xA;未來我還是會繼續使用這軟體，難道又會怎麼樣嗎？&#xA;於是接下來我就要解釋高昂的數位轉換成本為一般市井小民而言有什麼嚴重的後果，以及目前有什麼解決方案。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;放任使用除開發商外無法解析的資料格式來做為資料保存的依據，&#xA;將使自己所累積的資料必須依賴特定品牌軟體(甚至是特定版本)才能夠正確的存取使用，&#xA;使得對軟體產品的的選擇性受到極大限制，&#xA;即使市面上產品種類多樣，但你心理知道你其實只有一種選擇，除非你願意放棄數年下來使用這套軟體所累積的資料！&#xA;這些是我們已經知道的部份。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;當消費者在事實上沒有軟體使用選擇的時候，你將任軟體廠商宰割，他對你予取予求而你只能全盤接受！&#xA;如同 Scott McNealy 在演說中以企業所使用的資料庫系統做為例子的形容：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;quoteblock&#34;&gt;&#xA;&lt;blockquote&gt;&#xA;因為一旦你開始採用 DB2 的語言，&#xA;拿它來開發你所有的應用軟體，訓練你的員工、 開發相關的輔助工具、 …​&#xA;你開始把你所有的資料鎖進一個私有專屬的語言，&#xA;而這種語言的字典/文法/教科書/…​的鑰匙完全掌握在 IBM 的手上，&#xA;然後你就玩完了！&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_7&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_7&#34; title=&#34;View footnote.&#34;&gt;7&lt;/a&gt;]&lt;/sup&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;div class=&#34;attribution&#34;&gt;&#xA;— Scott McNealy&lt;br/&gt;&#xA;&lt;cite&gt;PG West 2010: The Barrier to Exit&lt;/cite&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;你可以想像當你第二次想要購買新版本系統的時候，人家開多高的價錢你都得付，&#xA;因為你事實上並沒有選擇其他軟體的可能性，除非你願意把過去所累積的所有資料、&#xA;包含建立於其上所建立的週邊軟體、以及一切的教育訓練、已經熟練技能的員工等等，&#xA;都當作從未有過一樣讓它煙消雲散！&#xA;當然，有些人會說我有選擇的權利，我可以不買啊！&#xA;雖然我沒辦法換用別的系統或軟體，但原來買的這一份運作的很好，我為什麼一定要換呢？&#xA;這說的太好了，事實上這的確是一個很常見的因應對策，&#xA;這就是你為什麼可以在很多的公司行號機關單位裡看到老舊到不能再更老舊的軟體系統的原因！&#xA;但其實這麼做只是延後付出代價的時間而已，首先你無法享受到隨者時代的進步而改進或新增的各種或方便或酷炫的功能，&#xA;而只能把自己定死在某個固定的軟體版本上；&#xA;在者，你的硬體設備總有一天會壽終正寢而需要更換，&#xA;但隨著時代的推移，這些老舊軟體所建基的執行環境(比如說舊式作業系統或舊式規格硬體設備等)會愈來愈難以取得。&#xA;於是你需要出高價來購買市面上稀缺的、僅存甚至可當古董的老舊設備來延續軟體系統的使用，&#xA;或者終究還是得回頭找原來的軟體開發商求救，當然這時候的價錢依然是人家說了算！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;不過上面的情況其實不是最壞的，到頭來你還會發現能夠用錢解決的問題終究不是最嚴重的問題！&#xA;還有另外一種狀況是當你需要原軟體開發商的奧援，即便需要支出大筆金錢也在所不惜時，原來的開發商卻早已不復存在！&#xA;現在有一個詞用來形容這樣的現象，叫作「軟體孤兒」。&#xA;這種狀況下你只能抱著現有的軟體系統，過一日算一日，期待整個系統完全死掉無法復生的日子永遠不會到來！&#xA;下面有一些真實的例子給大家做為警惕：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;quoteblock&#34;&gt;&#xA;&lt;blockquote&gt;&#xA;2001 年，&#xA;美國南加州大學神經生物學和細胞學專家 JosephMiller 博士向美國 NASA&#xA;尋找 70 年代中期探測火星的維京(Viking)計劃中獲得的資料時，&#xA;發現這些有 25 年歷史的資料是以專用格式保存在磁帶上，&#xA;而當時撰寫記錄這些資料程式的工程師已經去世，&#xA;因此這些資料實際上已經無法讀取。&#xA;&lt;sup class=&#34;footnote&#34; id=&#34;_footnote_tragedy&#34;&gt;[&lt;a id=&#34;_footnoteref_8&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_8&#34; title=&#34;View footnote.&#34;&gt;8&lt;/a&gt;]&lt;/sup&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;div class=&#34;attribution&#34;&gt;&#xA;— 洪宗勝&lt;br/&gt;&#xA;&lt;cite&gt;國家衛生研究院電子報&lt;/cite&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;quoteblock&#34;&gt;&#xA;&lt;blockquote&gt;&#xA;2006 年本人已經無法使用 1986 年自己所撰寫的科技論文，&#xA;因為那篇論文是用一套叫做 WordStar 的軟體完成的，&#xA;而 WordStar 的軟體已不復存在。&#xA;&lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_8&#34; title=&#34;View footnote.&#34;&gt;8&lt;/a&gt;]&lt;/sup&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;div class=&#34;attribution&#34;&gt;&#xA;— 洪宗勝&lt;br/&gt;&#xA;&lt;cite&gt;國家衛生研究院電子報&lt;/cite&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;簡單來說，過度依賴特定數位產品會造成兩個嚴重後果：&#xA;第一是對於單一廠商的索求威脅沒有抵抗的能力，全然無法守護自身利益。&#xA;舉個例子，看最近這兩年 Windows 10 的強勢推出讓所有人罵得要死，但是除了罵之外還能怎麼辦？&#xA;事實上下回要再強勢推出 Windows 11 的話，這些人罵歸罵，還是會買的！&#xA;第二是對於資料的長久保存不利，對於過了二十年後能不能再回頭檢閱、甚至重新利用舊的檔案成了嚴重的問題；&#xA;更慘的狀況可能是這個廠商已不復存在，讓你連花大錢解決問題的機會都沒有！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;我見過有些個人面對這樣的威脅依舊無感，就我的經驗，&#xA;這些人要不極度沒有危機感，要不就是本身沒有什麼重要的數位資料，以致失去也無妨；&#xA;然而對於很多企業、特別是國家單位或組織而言，這個問題是極其嚴重而且不能被忽視的，&#xA;因此這些單位對於數位資料的永續性議題一直非常關切！&#xA;至於臺灣的公司為什麼普遍沒有數位永續的概念？據統計，臺灣中小企業平均壽命約 13 年上下，也難怪不在乎！&#xA;而對於讀者你，除非你是比較習慣使用紙本資料的老派作風&lt;sup class=&#34;footnoteref&#34;&gt;[&lt;a class=&#34;footnote&#34; href=&#34;#_footnotedef_1&#34; title=&#34;View footnote.&#34;&gt;1&lt;/a&gt;]&lt;/sup&gt;、&#xA;或是覺得自己的餘命大約只有十年上下，&#xA;否則數位資料和工具的永續性議題一定是你會需要擔心的事情。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_該如何面對數位資料與工具的永續性問題&#34;&gt;該如何面對數位資料與工具的永續性問題？&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;讓數位資料能夠永續保存利用的最根本方法，就是制定資料格式標準，並依循標準。&#xA;關於這點的解釋前面有說明過，不再贅述。&#xA;不妨從現在開始要求自己，對於任何數位資料的傳遞交換或保存都儘量使用標準格式或開放格式&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_9&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_9&#34; title=&#34;View footnote.&#34;&gt;9&lt;/a&gt;]&lt;/sup&gt;&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_10&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_10&#34; title=&#34;View footnote.&#34;&gt;10&lt;/a&gt;]&lt;/sup&gt;&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_11&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_11&#34; title=&#34;View footnote.&#34;&gt;11&lt;/a&gt;]&lt;/sup&gt;&#xA;，&#xA;例如，&#xA;能夠存成 DOT 或 PDF 檔的東西就不要存成 DOC 或 DOCX 檔；&#xA;能夠存成 SVG 檔的東西就不要存成 AI 檔；&#xA;能夠存成 IGES 或 STEP 檔的東西就不要存成 DWG 檔；&#xA;能夠使用 HTML5 實現的功能就不要使用 Flash 或 ActiveX 來做；&#xA;能夠使用其它電子郵件軟體的話就不要使用 Outlook 來收發信等等。&#xA;在這點上，使用自由軟體會是一個不錯的選擇！&#xA;雖然自由軟體是另外一個概念，但基於某些原因，自由軟體通常都極力於遵循標準或公開格式。&#xA;使用標準格式或開放格式來交換資料，資料收送兩端可依各自的考量選用處理的工具；&#xA;使用該格式來保存資料，則即使數年後原先使用的軟體已不存在或已無法使用，&#xA;你依然可以改用其它同樣支援標準的工具來處理；&#xA;若該資料格式過於冷門或已不再被使用以致找不到可用工具，由於規格書是開放自由的，你還可以透過規格書自寫解析器；&#xA;若你不會、或不想做這件事，還可以花錢交給別人來做；&#xA;但是對於不公開的專有格式，除了拜託原廠(如果原廠還存在而且消費者負擔得起)或透過逆向工程來破解外，別無它法！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;然而在在實際執行層面上，使用標準格式或公開格式的解決方案往往會遇到極大困難，&#xA;其中最大的阻力來自於既得利益廠商的刻意掣肘，舉例來說：&#xA;對數位時代的人來說，最有機會使用、也最有機會碰到問題的數位資料大概就是網頁和電子文了。&#xA;1995 年推出的 HTML &lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_12&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_12&#34; title=&#34;View footnote.&#34;&gt;12&lt;/a&gt;]&lt;/sup&gt;&#xA;標準格式理論上可以作為各家網路瀏覽器和網站伺服器共同遵行的依歸，&#xA;然而在微軟利用其既有龐大市佔率的刻意不合作下，使網頁標準分裂為 W3C 的公開標準、以及 Microsoft IE6 的事實標準。&#xA;這個舉動維護了旗下 IE 產品的市場，卻讓廣大網頁讀者和網頁設計師陷入混亂的愁雲慘霧中&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_13&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_13&#34; title=&#34;View footnote.&#34;&gt;13&lt;/a&gt;]&lt;/sup&gt;&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_14&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_14&#34; title=&#34;View footnote.&#34;&gt;14&lt;/a&gt;]&lt;/sup&gt;&#xA;！&#xA;對於數位文件長期以來一直是 Microsoft Office 的天下，但這等同於所有的文件必須依賴單一廠商產品才能夠正常使用，&#xA;即便如此，新舊版 Office 之間層出的不相容問題更讓許多企業組織和國家單位深感不安！&#xA;2005 年，OASIS 制定並發佈了 Open Document Format (ODF) 開放文件格式&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_15&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_15&#34; title=&#34;View footnote.&#34;&gt;15&lt;/a&gt;]&lt;/sup&gt;&#xA;，&#xA;此舉立刻引起科技領域、企業界、以及各國政府部門的高度重視，&#xA;在四年內即有 16 個國家、以及無數大小企業組織宣佈將使用 ODF 做為檔案交換與保存的標準格式，&#xA;中華民國政府亦於 2009 年將該文書格式收納為國家標準(ODF-CNS15251)&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_16&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_16&#34; title=&#34;View footnote.&#34;&gt;16&lt;/a&gt;]&lt;/sup&gt;&#xA;。&#xA;至此各位看官大概已經猜到這件事情對誰最為不利？&#xA;因此微軟又陸續打出一系列手段，包含刻意不相容 ODF 標準與強推自己的新文件標準(OOXML)來鞏固 Office 軟體的市場，&#xA;增加 Office 使用者轉用其他文書軟體的障礙，也就是一般常見的所謂檔案不相容問題&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_17&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_17&#34; title=&#34;View footnote.&#34;&gt;17&lt;/a&gt;]&lt;/sup&gt;&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_18&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_18&#34; title=&#34;View footnote.&#34;&gt;18&lt;/a&gt;]&lt;/sup&gt;&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_19&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_19&#34; title=&#34;View footnote.&#34;&gt;19&lt;/a&gt;]&lt;/sup&gt;&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_20&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_20&#34; title=&#34;View footnote.&#34;&gt;20&lt;/a&gt;]&lt;/sup&gt;&#xA;。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;除了既得利益廠商的箝制使得換用標準格式或開放格式不易外，另一個困難則是目前不是在所有的應用上都存在有標準格式！&#xA;這不難理解，因為總是先有應用需求產生，然後才開始制定標準；&#xA;就好像總是先有相關社會風氣或問題出現，然後才開始制定相關法規一樣。&#xA;因為整個數位產業還非常年輕，很多方面還沒有標準可依循，&#xA;就連普邏大眾都需要的數位文件標準的出現也才是 2005 年的事情而已！&#xA;因此目前在不少比較專業、冷門、或客製的應用上，不得不使用專有的軟體系統以及黑盒子般的數位資料！&#xA;在這種情況下，事實上仍然有對策可用：&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;olist arabic&#34;&gt;&#xA;&lt;ol class=&#34;arabic&#34;&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;要求在存在有標準規格的地方必須依循標準規格&lt;/strong&gt;。&lt;br/&gt;&#xA;比方說一套專用的資料庫系統，雖然目前還沒有真正可用的資料庫系統標準，&#xA;但這系統總有一些地方可以銜接既有的功能，&#xA;比如說列印報表時產生的是純文字檔案還是專屬的資料格式？&#xA;比如說輸出圖形的時候產生的是公開的 PNG、BMP 等格式還是專有的資料格式而只能夠過專用軟體來顯示等等？&#xA;這樣的做法雖不能改變主要功能的依賴性，但對於週邊工具的選用與組合卻能更有彈性，&#xA;省得為了每一個可能小小簡單的功能都要仰賴廠商來實現。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;要求提供規格文件&lt;/strong&gt;。&lt;br/&gt;&#xA;雖然整套系統的資料是專有的，但若能夠向開發商要求、或是購買相關的所有資料格式和通訊協定等規格文件，&#xA;這可以減少在未來在需要轉移軟體系統或解析資料時的龐大成本！&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;要求原始程式碼(當然也包含各種文件)&lt;/strong&gt;。&lt;br/&gt;&#xA;要求軟體開發商一並提供、或是向其購買軟體系統的原始程式碼，&#xA;這點可以給消費者帶來極大的使用彈性、自主性、和後路，&#xA;在使用者需要微調、修改、或增刪功能、甚至是轉移系統的時候可以自己來做，或是付錢交給其他人來做，&#xA;而不必凡事仰賴原廠。&#xA;尤其當原廠獅子大開口或已查無此人的時候，有程式碼在手可以讓你自己處理需要的工作，&#xA;或至少讓你擁有向第三方求助，花錢解決問題的機會；&#xA;否則在沒有程式碼的情況下，依現代軟體的複雜度，要直接解析二進位檔案並搞清楚它做的事情的話，&#xA;這個成本會比天還要高！&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;要求廠商負擔出走責任&lt;/strong&gt;。&lt;br/&gt;&#xA;這是一個蠻新的概念，其實這個概念與購買產品時一併購買維護諮詢合約是一樣的，&#xA;就是要求廠商必須負擔可能數年後消費者要遷移使用其它(不同廠牌)產品所衍生的工作和責任。&#xA;這有兩個好處，第一是可能可以一定程度增加開發商肆無忌憚使用私有或隱晦設計的成本；&#xA;第二是可以讓隱藏的轉換遷移成本提早反應在產品售價上，讓決策者在思考的時候看見這個成本。&#xA;但我私心以為只有第二個好處才是真正的好處，因為對於第一點，&#xA;當消費者需要轉移軟體系統的時候，該軟體供應商必須仍然存在才有可能負起應該的責任！&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;以上幾種做法都會程度不一的提高軟體的購買金額，往往使當代的決策者產生遲疑！&#xA;這是因為轉換遷移成本還沒有被普遍認識並接受的關係，&#xA;這和工業革命以後，社會大眾也花了數十年甚至百年來理解並接受產品除了購買成本外還有養護成本是一樣的！&#xA;事實上不管是維護成本還是轉換遷移成本，消費者總是無法逃避。&#xA;如果說購買產品時一併購買保固與維護服務是為了讓隱藏的養護成本能夠反應在售價上而被看見，進而被比較的話，&#xA;那麼要求廠商負擔轉換遷移責任(當然軟體開發商會把它反應在售價上)&#xA;其實就是將原本隱藏的轉換遷移成本能夠在售價上顯現出來，進而被比較；&#xA;唯要再次提醒的是，如同機器的維護保養費用一樣，不管你有沒有把這個成本列在採購金額裡，這筆支出總是需要繳納，&#xA;差別只在有沒有提早讓你在帳目上看見而已！&#xA;從這個角度來看，使用開放原始碼軟體其實不失為一個廉價的方案，當然這又是另外一個話題了……&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_為什麼數位產業會有這麼多問題&#34;&gt;為什麼數位產業會有這麼多問題？&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;任何新的東西都有我們所不知道的特性等待被發現、被理解，&#xA;一個產業興起當然也就包含了各種未知的產業特性，其中有一些特性會成為問題與阻礙。&#xA;人們會在其中摸索、試驗、改變、成長，&#xA;這就是為什麼產業初期往往會出現各種型態迥異的產品、為什麼前後問世的產品往往結構大相逕庭的原因。&#xA;人們也會不斷發現以往所未曾知曉的各種新問題、然後設法解決問題、並在學習中成長，&#xA;直到一段很長的時間以後，產業才回慢慢穩定下來，找出一個可以穩健行走的道路，&#xA;這個時間我推估大概需要兩百年至數百年不等！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;讓我們回想一些我們所熟悉的產業：&#xA;例如航空，從萊特兄弟帶領人類進入動力飛行的時代開始，&#xA;兩百年來航空飛行遭遇了種種奇怪的、而且人類從未想過的問題，&#xA;人類從次次摔飛機的人命折損中慢慢學習到了副翼和尾翼搭配的飛行控制方法、航空氣動力學、結構與疲勞、&#xA;乃至飛行員特質與航空心理學等等。&#xA;直到今日航空飛行算得上是穩定安全時，距離人類首飛也過了兩百個年頭；&#xA;再看看建築，從跟隨師傅學習後可以自己蓋房子，到結構、管線、防火、逃生等被重視，&#xA;到法規和證照被提出，又過了幾個百年？&#xA;從瓦特發明蒸氣機開啟工業革命以來，工廠、流水線、乃至輸送銷售與環境污染等議題又過了多少年？&#xA;直到現在仍在解決問題！&#xA;再回頭看看數位資訊產業，從 1941 年第一臺電子電腦問世至今還不到百年&#xA;&lt;sup class=&#34;footnote&#34;&gt;[&lt;a id=&#34;_footnoteref_21&#34; class=&#34;footnote&#34; href=&#34;#_footnotedef_21&#34; title=&#34;View footnote.&#34;&gt;21&lt;/a&gt;]&lt;/sup&gt;&#xA;！&#xA;雖然我們已經脫離 1950、1960 年代那時每臺電腦架構都大不同的時代，&#xA;但仍還有不少大小問題不斷被發現、被了解、然後被處理。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;對於一個新產業的興起，人們常會延續使用看起來與它相似或相關的規則和方法等，&#xA;比如說航空產業就大量套用了航海業的規則慣例。&#xA;將這些方法套用在不同的領域上或許會有些水土不服，然而對於一個全新的未知領域這又未嘗不是個發展的好起點！&#xA;然後就在大家覺得上手愉快時突然發現一些從前的領域裡未曾出現或未曾被注意到的問題，&#xA;當中甚至有些困難是源自於人所套用的「相似領域」規則慣例所造成，&#xA;比方說軟體開發模式的發展就是從最早直接套用工業產品研發生產模式，然後不斷吃鱉的過程！&#xA;然後人們才會從這些事情中恍然大悟說：「啊！原來是這樣子啊！」&#xA;至於對一個問題的修正改進，這又是一個漫長的道路了……&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;提起這些是為了讓大家明白，數位資訊的大小問題通常不是誰的錯，而是一個時代的必經過程！&#xA;有些問題以現在的眼光來看可能有些令人覺得不解，但在當時就是沒有人預料得到，&#xA;怪就怪我們剛好生在這個數位產業還未完全成熟穩定的時代吧！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_我們該如何看待數位產業的問題&#34;&gt;我們該如何看待數位產業的問題？&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;數位產業的問題只有我寫的這些嗎？答案是否定的！&#xA;我自認不是時代的領跑者，沒法事先預告一些專家們還未體認到的問題；&#xA;甚至就當前已知的問題裡，我也只是挑了兩個我想討論的主題而已。&#xA;數位產業一定還有更多未知的問題等待有一天被發現，當中也許有一些問題甚至可能比本文所提及的更為重大！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;既然數位資訊存在這麼多嚴重的問題，那我們應該停止使用一切數位產品並回復沒有電腦前的做法嗎？&#xA;當然這是一個解決問題的方法，但不推薦，通常也不實際！&#xA;一個新領域的興起一定是因為這個領域存在一些強大的好處、甚至還會顛覆一些傳統的領域，&#xA;裹足不前不只無法享受新時代的好處，有時還會讓自己本有的優勢漸趨下風，甚被取代淘汰！&#xA;比如說工業、工廠帶來一大堆從前沒有的問題，那麼我們應該要廢棄工業化，回到從前農耕時代嗎？&#xA;提出這些問題的本意並不是要嚇唬人；&#xA;相對的，知悉問題、正視問題、面對問題，&#xA;讓你在享受數位時代的時候能夠同時了解它的各種眉角，能夠及早做好準備應對、或將影響損害減到最低，&#xA;這才是應當有的態度，也是本文的目的。&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;footnotes&#34;&gt;&#xA;&lt;hr/&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_1&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_1&#34;&gt;1&lt;/a&gt;. 「網際網路之父：我都用紙張保存資料」, 鏡週刊, &lt;a href=&#34;https://www.mirrormedia.mg/story/20171223int_vint_cerf_net_neutrality/&#34;&gt;連結&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_2&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_2&#34;&gt;2&lt;/a&gt;. 「請不要再用行動硬碟『備份』檔案了」, 高登工作室, &lt;a href=&#34;https://gordon168.tw/do-you-really-backup-your-file-to-external-disks/&#34;&gt;連結&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_3&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_3&#34;&gt;3&lt;/a&gt;. 「維護接駁資訊的權利, 消費者自求多福」, 洪朝貴, &lt;a href=&#34;https://www.cyut.edu.tw/~ckhung/a/c010.php&#34;&gt;連結&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_4&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_4&#34;&gt;4&lt;/a&gt;. 「鴉片軟體」, 維基百科, &lt;a href=&#34;https://zh.wikipedia.org/wiki/%E9%B4%89%E7%89%87%E8%BB%9F%E9%AB%94&#34;&gt;連結&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_5&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_5&#34;&gt;5&lt;/a&gt;. 「自願被微軟綁架的台灣政府」, 報導者, &lt;a href=&#34;https://www.twreporter.org/a/software-microsoft-tw-government&#34;&gt;連結&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_6&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_6&#34;&gt;6&lt;/a&gt;. 「3E戰略」, 維基百科, &lt;a href=&#34;https://zh.wikipedia.org/wiki/3E%E6%88%98%E7%95%A5&#34;&gt;連結&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_7&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_7&#34;&gt;7&lt;/a&gt;. 「Scott McNealy 談資訊科技轉換跑道的成本(下賊船的代價)」, 洪朝貴, &lt;a href=&#34;https://ckhung0.blogspot.tw/2014/10/barrier-of-exit.html&#34;&gt;連結&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_8&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_8&#34;&gt;8&lt;/a&gt;. 「演講紀要：企業及政府機關如何導入OpenOffice.org辦公室應用軟體」, 國家衛生研究院電子報, &lt;a href=&#34;http://enews.nhri.org.tw/enews_list_new2_more.php?volume_indx=274&amp;amp;showx=showarticle&amp;amp;article_indx=6757&#34;&gt;連結&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_9&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_9&#34;&gt;9&lt;/a&gt;. 「挑軟體，你押對寶了嗎?」, 洪朝貴, &lt;a href=&#34;https://ckhung0.blogspot.tw/2017/03/betting-on-software.html&#34;&gt;連結&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_10&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_10&#34;&gt;10&lt;/a&gt;. 「沒有微軟的日子」, David Becker (陳奭璁譯), &lt;a href=&#34;https://forum.moztw.org/viewtopic.php?t=1344&#34;&gt;連結&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_11&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_11&#34;&gt;11&lt;/a&gt;. 「邁向自由穩健走」, 洪朝貴, &lt;a href=&#34;https://www.cyut.edu.tw/~ckhung/g/ofset/post.php?id=08ag&#34;&gt;連結&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_12&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_12&#34;&gt;12&lt;/a&gt;. 「HTML」, 維基百科, &lt;a href=&#34;https://zh.wikipedia.org/wiki/HTML&#34;&gt;連結&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_13&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_13&#34;&gt;13&lt;/a&gt;. 「IE6人人喊打，你還在用嗎？拜託升級吧！」, tenz, &lt;a href=&#34;https://www.techbang.com/posts/1251-ie6-people-cry-do-you-still-use-it-please-upgrade-it&#34;&gt;連結&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_14&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_14&#34;&gt;14&lt;/a&gt;. 「救救設計師！請拋棄Internet Explorer 6」, 阿玻, &lt;a href=&#34;http://marukoariel.pixnet.net/blog/post/23593323-%E6%95%91%E6%95%91%E8%A8%AD%E8%A8%88%E5%B8%AB%EF%BC%81%E8%AB%8B%E6%8B%8B%E6%A3%84internet-explorer-6-&#34;&gt;連結&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_15&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_15&#34;&gt;15&lt;/a&gt;. 「ODF」, 維基百科, &lt;a href=&#34;https://zh.wikipedia.org/wiki/%E5%BC%80%E6%94%BE%E6%96%87%E6%A1%A3%E6%A0%BC%E5%BC%8F&#34;&gt;連結&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_16&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_16&#34;&gt;16&lt;/a&gt;. 「推動ODF-CNS15251為政府文件標準格式」, 國家發展委員會, &lt;a href=&#34;https://www.ndc.gov.tw/cp.aspx?n=d6d0a9e658098ca2&#34;&gt;連結&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_17&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_17&#34;&gt;17&lt;/a&gt;. 「為什麼微軟 Office 的檔案格式如此複雜？（以及一些解決方案）」, 約耳談軟體(Joel on Software), &lt;a href=&#34;http://local.joelonsoftware.com/wiki/%E7%82%BA%E4%BB%80%E9%BA%BC%E5%BE%AE%E8%BB%9F_Office_%E7%9A%84%E6%AA%94%E6%A1%88%E6%A0%BC%E5%BC%8F%E5%A6%82%E6%AD%A4%E8%A4%87%E9%9B%9C%EF%BC%9F%EF%BC%88%E4%BB%A5%E5%8F%8A%E4%B8%80%E4%BA%9B%E8%A7%A3%E6%B1%BA%E6%96%B9%E6%A1%88%EF%BC%89&#34;&gt;連結&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_18&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_18&#34;&gt;18&lt;/a&gt;. 「Office 軟體到底該用哪個？各家格式標準為何？」, 科技新報, &lt;a href=&#34;http://technews.tw/2017/06/24/why-you-should-never-use-microsofts-ooxml-pseudo-standard-format/&#34;&gt;連結&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_19&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_19&#34;&gt;19&lt;/a&gt;. 「微軟文書格式為何常跑掉？揭開 OOXML 格式大祕辛」, 科技新報, &lt;a href=&#34;http://technews.tw/2017/08/16/the-big-secret-of-ooxml/&#34;&gt;連結&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_20&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_20&#34;&gt;20&lt;/a&gt;. 「OOXML / 微軟舊封閉格式轉成 ODF — 為何不要用微軟的 Office 來做這件事？」, 好馬的部落格, &lt;a href=&#34;http://good-horse.blogspot.tw/2016/10/why-not-use-ms-office-to-convert-ooxml-to-odf.html&#34;&gt;連結&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;footnote&#34; id=&#34;_footnotedef_21&#34;&gt;&#xA;&lt;a href=&#34;#_footnoteref_21&#34;&gt;21&lt;/a&gt;. 「阿塔那索夫貝理電腦」, 維基百科, &lt;a href=&#34;https://zh.wikipedia.org/wiki/%E9%98%BF%E5%A1%94%E7%BA%B3%E7%B4%A2%E5%A4%AB-%E8%B4%9D%E7%91%9E%E8%AE%A1%E7%AE%97%E6%9C%BA&#34;&gt;連結&lt;/a&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>敦克爾克(Dunkirk) 觀影引導</title>
      <link>http://www.huoschen.idv.tw/blog/miscellaneous/%E6%95%A6%E5%85%8B%E7%88%BE%E5%85%8Bdunkirk-%E8%A7%80%E5%BD%B1%E5%BC%95%E5%B0%8E/</link>
      <pubDate>Tue, 05 Sep 2017 00:00:00 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/miscellaneous/%E6%95%A6%E5%85%8B%E7%88%BE%E5%85%8Bdunkirk-%E8%A7%80%E5%BD%B1%E5%BC%95%E5%B0%8E/</guid>
      <description>&lt;p&gt;最近推薦這部由大導演「克里斯多福·諾蘭」執導的大片給人，但有些篇幅而不適合用 Line 傳送，於是就寫在這裡，&#xA;順便也讓給其他需要的有緣人閱讀。&lt;/p&gt;&#xA;&lt;p&gt;首先，這並不是影評，我儘量不在這裡評論這部影片，我比較喜歡讓人自己評論影片。&#xA;這是一篇觀影引導，如果你尚未觀看過本片，或是看過本片但因不了解故事背景的關係以至於看不懂或難以體會電影內容，&#xA;那麼你就是我寫作設定的觀看對象。&#xA;另外，雖然我儘量控制，但本文因解說需要仍會有部份劇透，請讀者斟酌閱讀；&#xA;雖然我覺得劇透並不影響這部片的觀賞！&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;為什麼無法體會電影內容&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/miscellaneous/%E6%95%A6%E5%85%8B%E7%88%BE%E5%85%8Bdunkirk-%E8%A7%80%E5%BD%B1%E5%BC%95%E5%B0%8E/#%e7%82%ba%e4%bb%80%e9%ba%bc%e7%84%a1%e6%b3%95%e9%ab%94%e6%9c%83%e9%9b%bb%e5%bd%b1%e5%85%a7%e5%ae%b9&#34;&gt;為什麼無法體會電影內容？&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;首先說在前面，看不懂和無法體會是兩個不同層面的事情。&#xA;我覺得這部片的劇情非常淺顯易懂，通常不會有看不懂在演什麼的問題；&#xA;這裡我討論的是可能一些人會無法體會電影內容的現象。&lt;/p&gt;&#xA;&lt;p&gt;這部電影演的是真實發生過的歷史事件，讀過歷史的人都知道故事的結局，甚至知道故事的進行過程，&#xA;編劇導演沒辦法在劇情上吊觀眾胃口。&#xA;因此很自然的，導演可以直接預設觀眾已經了解劇情發展，然後最大程度去挖掘、探討故事過程中所引發的各種其它主題；&#xA;這造成一個與通常不同的現象，就是愈熟讀故事的人愈能了解體會電影，&#xA;反而愈不知道歷史的人愈可能無法體會，甚至看不懂電影！&#xA;這個現象與幾年前的「賽德克·巴萊」是一樣的。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;敦克爾克大撤退&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/miscellaneous/%E6%95%A6%E5%85%8B%E7%88%BE%E5%85%8Bdunkirk-%E8%A7%80%E5%BD%B1%E5%BC%95%E5%B0%8E/#%e6%95%a6%e5%85%8b%e7%88%be%e5%85%8b%e5%a4%a7%e6%92%a4%e9%80%80&#34;&gt;敦克爾克大撤退&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;要知道故事在演什麼，就要先知道當時發生什麼事？以及這些事情產生了哪些影響？&lt;/p&gt;&#xA;&lt;p&gt;1939年9月1日德國入侵波蘭，西方認為的第二次世界大戰由此開始。&#xA;兩天後英國和法國對德宣戰，但也只是耍耍嘴皮子，實際上英法對德並沒有任何的軍事接觸，只固守在馬其諾防線後面，&#xA;這和當時英國的姑息政策有關，簡單的說就是只要德國沒侵害到我，就和我無關，讓別人去死就好了！&#xA;擋在德法中間有強大的馬其諾防線，德國不可能正面衝過來，至少法國人是這麼想的！&#xA;結果波蘭在德國的打擊下在一個月內滅亡，然後隔年的1940年5月10日德國再度用拿手的閃電戰向西猛打英法聯軍。&lt;/p&gt;&#xA;&lt;p&gt;以英法為主的聯軍雖然陣容強大，但面對突如其來的攻勢顯得極度的措手不及!&#xA;德國繞過馬其諾防線，往荷蘭、比利時那邊突進，&#xA;特別是3000輛坦克的裝甲部隊僅用十幾天就穿過了傳統認為是坦克天然屏障的，多山多林的阿登山區。&#xA;聯軍粹不及防，一路被德軍碾壓逼退，僅兩週的時間，40萬聯軍便退守至英吉利海峽邊的敦克爾克城市；&#xA;而事實上聯軍並不擁有整座城市，在長達一週的時間裡，40萬人中的大多數，包含各種裝備物資是擠在敦克爾克的沙灘上。&#xA;此時的英法聯軍只剩三種選擇：被殲滅、投降、或跳海！&lt;/p&gt;&#xA;&lt;p&gt;若英國失去這數量龐大的遠征軍，未來的局勢發展可能會大不同，&#xA;英國將缺乏足夠的軍隊保衛本土，而英國的淪陷將令同盟國的反攻力量無法施展！&#xA;為了保住這批力量，英國想盡辦法派船送回部隊，但面對空中的轟炸和水底下潛艇的威脅，起初進展並不順利。&#xA;港口早就被轟爛無法使用、海灘水淺不利大船停靠，能夠直接登船的地方只有唯一一條延伸至海中的長長防波堤，&#xA;減慢了登船撤離的速度。&lt;/p&gt;&#xA;&lt;p&gt;面對困境，邱吉爾發動了「發電機計劃」，動員所有能用的船隻，包含大量徵用民間船艇前往敦克爾克運回部隊，&#xA;其中甚至有很多內河航行的小船都冒險參加救援行動，並起了很大的作用。&#xA;這些小船的運載量很低，但作為大船與海灘間的接駁運送，緩解了只有一條上船通道的登船速度瓶頸。&#xA;最終，在九天時間內，有33萬人成功徹出至英國，剩下的人投降，敦克爾克戰役結束；&#xA;一個月後，法國戰敗，歐洲大陸淪陷。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;敦克爾克撤退的後續影響&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/miscellaneous/%E6%95%A6%E5%85%8B%E7%88%BE%E5%85%8Bdunkirk-%E8%A7%80%E5%BD%B1%E5%BC%95%E5%B0%8E/#%e6%95%a6%e5%85%8b%e7%88%be%e5%85%8b%e6%92%a4%e9%80%80%e7%9a%84%e5%be%8c%e7%ba%8c%e5%bd%b1%e9%9f%bf&#34;&gt;敦克爾克撤退的後續影響&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;敦克爾克撤退的最大成功就是保住了大量的有生軍事力量，除了英軍外，其中還包含法軍約10萬人、比利時軍約3萬人。&#xA;這些回國的英軍成為四年後大反攻的中堅力量，而法國人、比利時人、以及少數的其他國家軍人&#xA;也在戰爭期間參與多場軍事行動或敵後游擊活動。&#xA;然而在這之前，他們是吃了大敗仗苟延殘喘落難，還被人家救回來的落難軍人，&#xA;在影片的後段，士兵們害怕即將面對的是挫敗的恥辱、和人們對於軍人的失望與不屑；&#xA;然而港邊老人卻回答「夠好了！」，能夠活著回來就是最大的勝利！&#xA;最終迎接這群逃難軍人的竟然是歡呼與啤酒！&lt;/p&gt;&#xA;&lt;p&gt;在撤退行動成功結束後，邱吉爾發表了振奮人心的演說，鼓舞全國軍民士氣，&#xA;同時提醒全國軍民不要沉溺於撤退的成功，要準備接下來即將面對的戰役——英倫保衛戰。&#xA;不同於以往見到的電影常由領導人以鏗鏘有力、慷慨激昂的聲音來演說；諾蘭用一個青澀小兵的口，平淡的讀過這些文字。&#xA;能夠這麼做的原因就是因為大多數的英國人都念過這段歷史、讀過這些演說內容，&#xA;而小人物讀出報紙內容的表現正好最貼近當時平凡百姓的實際經驗，充份表達了奮起與卑微兩種心境，&#xA;畢竟他們才灰頭土臉的從海峽對岸逃回來！&lt;/p&gt;&#xA;&lt;p&gt;這裡提醒一個小地方，影片中三不五時會有官說到「接下來的戰爭」、「下一場戰爭」等，指的並不是四年後的盟軍大反攻，&#xA;事實上以當時的時間點來看，盟軍從未想過未來能有機會反攻並獲得勝利！&#xA;這裡說的下一場戰爭是相格僅一個月、德國打下整個歐陸後的下一個軍事行動——入侵英國。&lt;/p&gt;&#xA;&lt;p&gt;雖然這次的撤退是極為成功的，但也不是沒有遺憾！&#xA;三萬左右的人沒有退回英國本土，大量軍事物資、以及全部的車輛火炮等重裝備都被遺棄在沙灘上，&#xA;這些損失讓後來的英國花上好大的力氣來補回失去的軍備，甚至不惜使用低成本高生產量的方式來大量製造簡陋粗糙的武器！&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;電影本身&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/miscellaneous/%E6%95%A6%E5%85%8B%E7%88%BE%E5%85%8Bdunkirk-%E8%A7%80%E5%BD%B1%E5%BC%95%E5%B0%8E/#%e9%9b%bb%e5%bd%b1%e6%9c%ac%e8%ba%ab&#34;&gt;電影本身&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;在說了這麼多前因後果後，接下來介紹電影的本身。&#xA;這部電影講述了三個發生在不同人群的故事，彼此之間一開始並沒有太多的交集，直到劇情的推演才慢慢交織在一起。&lt;/p&gt;&#xA;&lt;p&gt;「&lt;strong&gt;The Mole: One Week&lt;/strong&gt;」，這是第一個故事的標題，&#xA;第一個故事的時間長度為一週，以一位青澀的陸軍士兵為視角，講述這一週間在敦克爾克沙灘上所發生的一連串事件，&#xA;講述生存的恐懼，人與人之間互相影響、互相幫助、乃至互相爭奪生存的故事。&#xA;這個故事的主人公湯米(由菲昂·懷海德飾演)為一個再普通不過的小兵，實際上菲昂·懷海德也是沒有什麼電影演出經驗的年輕演員，&#xA;導演解釋這是為了最大程度還原當時的狀況，因為當時在沙灘上的士兵大多都是沒有什麼戰鬥經驗的十七八歲年輕人。&#xA;導演甚至還刻意不讓演員過度熟悉因執行演出而需要的軍事訓練，好拍出因經驗不足而手忙腳亂的畫面！&lt;/p&gt;&#xA;&lt;p&gt;「&lt;strong&gt;The Sea: One Day&lt;/strong&gt;」，&#xA;第二個故事是一對父子與夥伴三人因不願意讓海軍徵用船隻，選擇了自行駕船前往敦克爾克載運士兵，而在一天內發生的故事。&#xA;他們沿路上順便救起數名落海同胞，包括另一個故事中的墜機飛行員與第一個故事中的小兵，&#xA;彼此之間又因各自遭遇與立場的不同再摩擦出許多有意思的交手。&#xA;不同於第一個故事的新兵，這部海上故事的父親(由馬克·勞倫斯飾演)、以及落難的士兵(由席尼·墨菲飾演)&#xA;都是相當厲害的資深演員，相當深刻的演譯出自己角色的身心狀態，看這兩人的演技將是非常舒服的過程。&lt;/p&gt;&#xA;&lt;p&gt;「&lt;strong&gt;The Air: One Hour&lt;/strong&gt;」&#xA;第三個故事是三位被派往敦克爾克執行護航任務的飛行員，在一個鐘頭內所發生的事情。&#xA;沒辦法，噴火的航程就只有這樣子！要是換成開零戰的話，空中這段應該可以演上大半天！&#xA;其中的飛行員法雷爾(由湯姆·哈迪飾演)讓我印象深刻，不是因為他的各種英勇行為，&#xA;而是在整個空中故事的絕大部分時間裡，全身包的緊緊的縮在機倉裡，只有一雙眼睛能讓觀眾看見，並且還罩上了防風鏡！&#xA;在這部電影裡，你將看到湯姆·哈迪如何用他最拿手的一雙眼睛詮釋自己！&lt;/p&gt;&#xA;&lt;p&gt;除了具有各種獨到技巧的演員，諾蘭導演本身在這部影片裡再度讓人驚豔的展現了他說故事的功力，&#xA;從一開始的開場就先讓觀眾耳目一新！&#xA;一般來說，一部電影都會有一小段的「前情提要」，好讓觀眾了解接下來故事的前因，以及讓觀眾準備好情緒來融入故事；&#xA;在這部片裡，這個「前情提要」只佔了約不到一分鐘的時間！&#xA;你甚至可以說，導演不等你準備好，就直接把你拽到故事裡面，不囉唆、不廢話，幾個秒讓觀眾立刻進入狀況！&lt;/p&gt;&#xA;&lt;p&gt;另一個已經被很多人說過的特色就是，在這部片裡基本上絕大部分時間裡，你不會看到任何的敵人，&#xA;好不讓這部片變成敵我善惡過於鮮明的戰爭片。&#xA;導演把這部戲當成懸疑驚悚片在拍(導演自己說的)，希望觀眾能夠以最小的人的視角，成為這個事件中的其中一員，&#xA;來感受當時的人可能感受過的各種情緒，包括害怕、驚恐、未知等。&#xA;這裡沒有俯觀大局的大義視角、沒有英雄衝鋒的慷慨激昂、或是什麼戰鬥的意義，&#xA;只有一群被圍困到意志蕭條，渴望求生、渴望回家的人。&#xA;為了做到這些效果，影片的真實感以及情境融入感就成為成敗的關鍵；對於這個議題，導演自有一套他的哲學，&#xA;我只能和你說，2D的敦克爾克絕對比3D的阿凡達更有真實感、更有身歷其境的體驗。&#xA;為了飽響視聽效果，這裡極力建議應觀看 iMax 的播放版本。&lt;/p&gt;&#xA;&lt;p&gt;還有一個有意思小細節也許有些人不會注意到，雖然解釋這個細節可能會劇透更多一些！&#xA;因為噴火戰機的續航力可憐的低，在護航任務中必須要準時脫離戰場返航；&#xA;然而就在將返航時，法雷爾看到又有一架轟炸機打算炸一艘船，&#xA;沒有意外的，法雷爾幾經掙扎後決定回去拯救他的同胞！&#xA;在此之前，每當因故需要加油時，可以注意到法雷爾都只願意推一點點油門，好節省些汽油；&#xA;而在他決定回頭，也就是做下確定自己無法返回英國的決定後，在之後的戰鬥中他毫無懸念的把油門推到最大！&lt;/p&gt;&#xA;&lt;p&gt;另外，有一部份的歷史在電影裡並沒有演到，但我覺得知道這段故事可能會讓你在觀影的時候更有感覺。&#xA;不管看電影還是看歷史都能知道，雙方的空軍力量在整個敦克爾克的撤退行動中都扮演至關重要的角色，&#xA;然而英國皇家空軍的護航並不是時時都有的，主要是因為敦克爾克與英國本土的距離和噴火戰機數量與航程的關係。&#xA;甚至到了撤退行動後期，皇家空軍不願意再派出飛機前往敦克爾克，&#xA;因為「下一場戰爭」的到來是顯而易見而且急迫的，絕對必須要停止繼續損失飛機，並為接下來的戰鬥保存以及重整空軍力量！&#xA;這個轉變也使得之後的撤退行動不能在白日德國空軍肆無忌憚的炮火下進行，而只能利用夜晚行動。&#xA;以大局來說，這是正確且必須的決定；而以站在沙灘上的一個人來說，這絕對是可被咒罵的狗屁決定！&#xA;我想這也是促成法雷爾放棄返航而決定回頭的一個重要因素，因為身為皇家空軍飛行員的他清楚明白知道整個處境，&#xA;下一批前來換班的飛機因為距離和調派因素不可能無縫銜接；甚至，他可能就是最後一批被派往敦克爾克的護航機&#xA;(僅猜測，電影裡並沒有明確的特徵可確認)！&#xA;整個敦克爾克撤退行動中，皇家空軍總共派遣 2739 架次的護航任務，損失了 106 架戰鬥機和 60 位飛行員。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;片名&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/miscellaneous/%E6%95%A6%E5%85%8B%E7%88%BE%E5%85%8Bdunkirk-%E8%A7%80%E5%BD%B1%E5%BC%95%E5%B0%8E/#%e7%89%87%e5%90%8d&#34;&gt;片名&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;說到這部電影的名字，從我第一次看到它，我就很有意見！&#xA;這部影片取名叫 Dunkirk，就是那個法國的港口城市的名字。&#xA;能這麼取是因為大部分的人都知道這段歷史，只要聽到地名就能勾起各種記憶；&#xA;就好像對臺灣人說，有一部電影叫「金門」時，你會感覺到的一樣的感受。&#xA;很多電影的名字其實在文字語法上並沒有確實明確的表達它在演的是什麼，&#xA;但因為人的文化背景，我們仍能猜到它要演的是什麼，甚至覺得這樣的簡單比複雜更好、更有「味道」！&#xA;比方說「賽德克·巴萊」、「艋舺」、「大稻埕」、「鐵達尼號」等等。&lt;/p&gt;&#xA;&lt;p&gt;但臺灣的片商大概是覺得臺灣人對敦克爾克沒有感情，怕看了片名不知其內容，所以翻譯就改成了「敦克爾克大行動」！&#xA;變成我第一回看到片名的時候就矇了，想說從小只聽過敦克爾克大撤退，怎麼沒印象有什麼大行動啊！&#xA;我想大概是覺得直接翻譯成敦克爾克大撤退不符合社會的概念，因為戰爭片從來給人的印象都是在演抗暴後勝利，而不是要人鬱卒；&#xA;問題是這部片確實就是在演大撤退啊！&#xA;後來我想通了，我想把他取名叫作「大行動」，大概就和「長征」、「轉進」是一樣的概念吧！&#xA;於是這麼好的一部電影，就在片名上被臺灣人加上了汙點，成為聽起來和&#xA;「賽德克巴萊之阿里山抗日三百壯士」、「艋舺黑白道」、「大稻程風情錄」、還有「鐵達尼號潛水大行動」一樣等級的片子了！&#xA;這一部份，我還是比較喜歡大陸的翻譯，就叫作「敦克爾克」，這樣不是很好嗎？&lt;/p&gt;</description>
    </item>
    <item>
      <title>文字命令式的操作環境為什麼一直沒有被淘汰？</title>
      <link>http://www.huoschen.idv.tw/blog/digit/%E6%96%87%E5%AD%97%E5%91%BD%E4%BB%A4%E5%BC%8F%E7%9A%84%E6%93%8D%E4%BD%9C%E7%92%B0%E5%A2%83%E7%82%BA%E4%BB%80%E9%BA%BC%E4%B8%80%E7%9B%B4%E6%B2%92%E6%9C%89%E8%A2%AB%E6%B7%98%E6%B1%B0/</link>
      <pubDate>Tue, 10 Jan 2017 00:00:00 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/digit/%E6%96%87%E5%AD%97%E5%91%BD%E4%BB%A4%E5%BC%8F%E7%9A%84%E6%93%8D%E4%BD%9C%E7%92%B0%E5%A2%83%E7%82%BA%E4%BB%80%E9%BA%BC%E4%B8%80%E7%9B%B4%E6%B2%92%E6%9C%89%E8%A2%AB%E6%B7%98%E6%B1%B0/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/%E6%96%87%E5%AD%97%E5%91%BD%E4%BB%A4%E5%BC%8F%E7%9A%84%E6%93%8D%E4%BD%9C%E7%92%B0%E5%A2%83%E7%82%BA%E4%BB%80%E9%BA%BC%E4%B8%80%E7%9B%B4%E6%B2%92%E6%9C%89%E8%A2%AB%E6%B7%98%E6%B1%B0/#%e5%89%8d%e8%a8%80&#34;&gt;前言&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;這本是為了回答一位朋友的問題，寫著寫著就變成一篇文了！貼在這裡也能給有相同疑惑的人做個參考。&lt;/p&gt;&#xA;&lt;p&gt;對使用電腦稍微熟悉的人應該都知道，多數的作業系統都有一個純文字的操作環境，&#xA;以主流的 Windows 為例，開啟「命令提示字元」這支程式就可以使用這樣的環境。&#xA;在這文字的環境下，使用者依然可以執行許多的系統操作，&#xA;使用者輸入文字命令給電腦，然後電腦可能也會以文字訊息回報給使用者；&#xA;在這裡一切都是文字，沒有圖片、也沒有按鈕。&#xA;許多人可能都會覺得這個介面不容易學習使用，也可能會覺得這個介面既不美觀也沒有現代感，&#xA;同時也產生了可能很多人都共同存在的一個疑問：為什麼這種落伍的操作環境仍然存在而沒有被淘汰？&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;用文字操作電腦的時代&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/%E6%96%87%E5%AD%97%E5%91%BD%E4%BB%A4%E5%BC%8F%E7%9A%84%E6%93%8D%E4%BD%9C%E7%92%B0%E5%A2%83%E7%82%BA%E4%BB%80%E9%BA%BC%E4%B8%80%E7%9B%B4%E6%B2%92%E6%9C%89%E8%A2%AB%E6%B7%98%E6%B1%B0/#%e7%94%a8%e6%96%87%e5%ad%97%e6%93%8d%e4%bd%9c%e9%9b%bb%e8%85%a6%e7%9a%84%e6%99%82%e4%bb%a3&#34;&gt;用文字操作電腦的時代&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;這種文字的操作介面有很多不同的稱呼，一般常聽見的有&#xA;「終端機」、「指令列模式」、「文字模式」、「命令提示字元」、或是「DOS 模式」。&#xA;指令列模式的起源甚早，幾乎是在螢幕顯示器和鍵盤出現在電腦上的同時就誕生了！&#xA;這種親和力甚高的電腦操作方式很快的流行起來，因為在此之前的電腦可能是靠著&#xA;燈號、打孔卡、電路開關、甚至是插線在操作的。&#xA;指令操作模式的產生，讓使用者得以與之互動，使用像在與電腦進行對話的方式來使用電腦，&#xA;而這也就是一直流傳到現在仍在大量使用的一種操作電腦的方式。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;圖形操作介面橫空出世&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/%E6%96%87%E5%AD%97%E5%91%BD%E4%BB%A4%E5%BC%8F%E7%9A%84%E6%93%8D%E4%BD%9C%E7%92%B0%E5%A2%83%E7%82%BA%E4%BB%80%E9%BA%BC%E4%B8%80%E7%9B%B4%E6%B2%92%E6%9C%89%E8%A2%AB%E6%B7%98%E6%B1%B0/#%e5%9c%96%e5%bd%a2%e6%93%8d%e4%bd%9c%e4%bb%8b%e9%9d%a2%e6%a9%ab%e7%a9%ba%e5%87%ba%e4%b8%96&#34;&gt;圖形操作介面橫空出世&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;指令操作模式一直主宰著數位電腦，&#xA;直到 1984 年，Apple 推出的 Macintosh 電腦顛覆世人的觀感，掀起了另一場數位電腦的革命風潮。&#xA;Macintosh 引入了讓人耳目一新的圖像式操作方式，也是首次把滑鼠帶到世人眼前&#xA;(雖然說在此之前 Apple 的 Lisa 電腦首次使用了圖像式操作介面，但因為開發和銷售上的嚴重失敗&#xA;，以致其幾乎不存在於大部份人的記憶中)。&#xA;Macintosh 的螢幕被各種易懂的圖形佔滿，使用者可以透過滑鼠的點選、拖拉來進行多數的基本操作，&#xA;一切都是那麼的直覺、容易、方便、漂亮，令人為之瘋狂。&#xA;Macintosh 的推出引起市場上的大震憾，改變了電腦產業的版圖，&#xA;也令 Microsoft 急於在隔年推出與之相仿的 Windows 1.0。&#xA;Macintosh 對世界的影響如此巨大，直到今日，Apple 所推出的電腦仍被稱作「Mac」。&lt;/p&gt;&#xA;&lt;p&gt;當圖像式操作模式以征服者之姿快速佔領了大部份的近代電腦版圖，&#xA;人們開始思考文字命令模式該何去何從的問題。&#xA;有一派的人認為文字式工作環境的時代已成過去，未來是圖像式工作環境的天下；&#xA;並且這一派的人很可能會鄙視文字式工作介面，視他們為一種過時的產物。&#xA;Microsoft 便是這一個派系的著名例子，他們在策略上想要完全的揚棄文字工作介面，&#xA;並幾乎將所有的開發資源轉移至圖形化軟體的開發。&#xA;有在 Windows 上使用命令提示字元的人應該不難發現到，&#xA;這個工作環境從 DOS 以來幾乎沒有任何的更動，&#xA;與其他系統上的文字工作環境如 Bash 相比顯得嚴重落後。&#xA;從二十年來 Windows 幾乎佔領所有 PC 電腦的結果來看，Microsoft 當時的決定應是蠻正確的。&#xA;然而二十年後的 Microsoft 卻無法忽略文字式的工作模式在某些應用上仍有令圖形模式所忘之莫及的優勢，&#xA;這可以從兩個地方看得出來，其一是 Windows 始終割捨不掉命令提示字元，&#xA;雖然他們從前曾誇口將要移除這個介面，使文字模式在 Windows 中成為歷史；&#xA;其二是後來在其它強大的文字式作業環境的威脅下被逼的發展了像 PowerShell 這樣的文字工作介面，&#xA;甚至在近年還打算推出 Bash on Windows 的產品！&lt;/p&gt;&#xA;&lt;p&gt;另外一派人則走向另一個極端，這一派以 UNIX 家族為代表。&#xA;他們有些人可能曾經不甘示弱的發展了一下圖形工作介面，&#xA;卻也很快的發現到圖形介面在某些重要方面的表現遠不如文字介面的事實，&#xA;於是二十多年來幾乎放了全力在既有的文字式工作介面上，&#xA;至於圖形介面的部份則蜻蜓點水，堪用就好；&#xA;有趣的是，這一派的人很可能將文字工作介面奉為圭臬，並且藐視圖形工作介面，視其為無效率的雞肋。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;文字操作模式的優點&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/%E6%96%87%E5%AD%97%E5%91%BD%E4%BB%A4%E5%BC%8F%E7%9A%84%E6%93%8D%E4%BD%9C%E7%92%B0%E5%A2%83%E7%82%BA%E4%BB%80%E9%BA%BC%E4%B8%80%E7%9B%B4%E6%B2%92%E6%9C%89%E8%A2%AB%E6%B7%98%E6%B1%B0/#%e6%96%87%e5%ad%97%e6%93%8d%e4%bd%9c%e6%a8%a1%e5%bc%8f%e7%9a%84%e5%84%aa%e9%bb%9e&#34;&gt;文字操作模式的優點&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;說了這麼多的故事，確仍沒有解答我們最初的問題：&#xA;文字式的工作環境究竟擁有什麼迷人的優點，使這種古老的介面仍然大行其道？&#xA;以簡單的一句話來解答這個問題的話，那應該就是：&#xA;強大的工作效率、方便的自動化能力、和無盡的組合可能。&lt;/p&gt;&#xA;&lt;p&gt;說到文字模式的工作效率，可能很多人會難以認同，&#xA;因為在大部份人的經驗中，要靠著用鍵盤下達指令叫電腦工作的話，&#xA;通常會先需要記憶很多的命令、以及每個命令的參數，最終還要一鍵一鍵的敲下正確的拼字後，&#xA;才能讓電腦做一件事。&#xA;要解釋這件事，我們得先從另一個例子來看。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;以快速鍵操作為例&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/%E6%96%87%E5%AD%97%E5%91%BD%E4%BB%A4%E5%BC%8F%E7%9A%84%E6%93%8D%E4%BD%9C%E7%92%B0%E5%A2%83%E7%82%BA%E4%BB%80%E9%BA%BC%E4%B8%80%E7%9B%B4%E6%B2%92%E6%9C%89%E8%A2%AB%E6%B7%98%E6%B1%B0/#%e4%bb%a5%e5%bf%ab%e9%80%9f%e9%8d%b5%e6%93%8d%e4%bd%9c%e7%82%ba%e4%be%8b&#34;&gt;以快速鍵操作為例&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;大多數的人應該都知道一些電腦系統、或應用軟體的快速功能鍵或功能組合鍵吧？&#xA;最多人知悉並且平常使用機率最高的快速組合鍵大概就是「Ctrl+C」和「Ctrl+V」了！&#xA;想想若是有一天這兩組功能鍵不再有作用的話，應該足以讓很多人跳腳吧？&#xA;為什麼？一言以敝之就是速度和效率！&lt;/p&gt;&#xA;&lt;p&gt;不知各位是否曾見過一些專業的或資深的文字編輯人員？&#xA;他們使用電腦時，眼睛盯著螢幕、手指快速在鍵盤上飛舞，畫面上一份文件以極快的速度被編輯著，&#xA;快速又有效率。&#xA;這些人除了打字快以外，通常還熟按作業系統或應用軟體的各種快速功能鍵。&#xA;我記得從前有一套文書編輯軟體，在新的版本上，畫面變得極其漂亮，&#xA;各式又大又富有美感的按鈕花花綠綠的佔滿了螢幕的空間，&#xA;當按下大部份的功能按鈕時，通常還會伴隨著某些華麗的動畫特效，&#xA;這套軟體在當時能夠立刻的吸引新使用者的目光；&#xA;但各位若能站在專業文書編排人員的位置，以他們的角度揣摩他們的心境，&#xA;不知會給予這套軟體怎麼樣的評價？&#xA;可能，他們會為這些功能按鈕佔據了文字版面而苦惱；&#xA;可能，華麗的功能特效在他們眼裡沒有任何價值，反而還會嫌這些東西拖慢功能處理的速度；&#xA;可能，這一切的創意比不上一些簡單而強大的功能鍵組合。&#xA;然而，一般的非專業使用者如何能體會這些人的抱怨？&lt;/p&gt;&#xA;&lt;p&gt;以軟體所設計的快速功能鍵做為例子，來說明文字式的工作模式，則他們共同擁有以下特點：&#xA;入門門檻高，因為你必須先背熟一些功能鍵的組合、或文字命令後才能夠使用；&#xA;但當你熟練以後，他卻能帶給你極有效率的工作模式。&#xA;其可能沒有吸引一般人的外在華麗表皮；但當你上手之後，確也不再在意這些問題了！&lt;/p&gt;&#xA;&lt;p&gt;如果你可以體會快速鍵的價值，那麼應該就不難理解文字命令的優點。&#xA;文字命令的工作模式比起快速鍵可能有更高的入門門檻；&#xA;但當你熟練以後，它卻能帶來令人愛不釋手的甜蜜。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;快速&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/%E6%96%87%E5%AD%97%E5%91%BD%E4%BB%A4%E5%BC%8F%E7%9A%84%E6%93%8D%E4%BD%9C%E7%92%B0%E5%A2%83%E7%82%BA%E4%BB%80%E9%BA%BC%E4%B8%80%E7%9B%B4%E6%B2%92%E6%9C%89%E8%A2%AB%E6%B7%98%E6%B1%B0/#%e5%bf%ab%e9%80%9f&#34;&gt;快速&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;首先，文字命令的輸入其實並不是那麼的不方便，&#xA;在近代如 Bash 等工作環境的輔助之下，命令的自動完成和提示機制加速了指令的輸入及查找。&#xA;再者，實際上不是每次工作時的每一個命令都要用鍵盤敲的！&#xA;我們可以把一些常用的命令、或特定工作所需要的命令、包含參數等打在一個文字檔裡，&#xA;下次就可以直接執行這個文字檔，電腦就會自動逐項執行裡面的命令群，&#xA;這種檔案在 UNIX 家族裡叫作 shell script (&lt;code&gt;*.sh&lt;/code&gt;)，也就是腳本或指令檔；&#xA;而在 DOS 下叫作 batch file (&lt;code&gt;*.bat&lt;/code&gt;)，也就是所謂的批次檔。&#xA;再進一步，命令檔案裡還可以執行其它的命令檔案，&#xA;這樣我們就可以不斷的組合一些基本功能，使之成為個人的工具箱，&#xA;在需要的時候就可以很簡單的執行某一個檔案，然後讓電腦自己處理剩下的事情。&lt;/p&gt;&#xA;&lt;p&gt;況且在熟練的情況下，鍵盤鍵入並執行指令會遠快於移動滑鼠去點擊按鈕。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;組合&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/%E6%96%87%E5%AD%97%E5%91%BD%E4%BB%A4%E5%BC%8F%E7%9A%84%E6%93%8D%E4%BD%9C%E7%92%B0%E5%A2%83%E7%82%BA%E4%BB%80%E9%BA%BC%E4%B8%80%E7%9B%B4%E6%B2%92%E6%9C%89%E8%A2%AB%E6%B7%98%E6%B1%B0/#%e7%b5%84%e5%90%88&#34;&gt;組合&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;另一個文字工作模式的強大特性則是表現在工作的組合上，&#xA;文字式的工作命令往往可以很容易的與其他工作進行前後串接，以一個 Linux 上的簡單例子來說明：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;ls -l /dev | grep tty | less&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;這裡我動用到了三支程式：ls、grep、和 less。&#xA;首先 ls 被執行起來，它的工作是列舉 /dev 目錄下的所有檔案。&#xA;然後我把 ls 找到的結果送給 grep 程式，它的工作是在一群文字資料中過濾出含有 tty 字樣的文字行。&#xA;最後我再把結果送給 less 程式，它能在輸出的資料很多時，將資料以讓我可以翻轉滾動的方式列印在螢幕上。&#xA;就這樣，我使用了簡單的方法將三個基本的功能重新組合出一個新的、稍微複雜的功能。&#xA;當然，這只是個簡單的範例；&#xA;在實際的應用上可以像堆積木一樣讓各個程式彼此協作，組合出無窮無盡的功能，&#xA;甚至再搭配一些命令操作模式下的資料判斷、分歧、反覆、計算等語法，&#xA;可以更進一步組合出具有某些條件判斷能力等更聰明複雜的功能。&lt;/p&gt;&#xA;&lt;p&gt;然而在另一邊，功能組合與協作卻是圖像式軟體的一大致命傷！&#xA;例如，如果我有一千張照片存在記憶卡裡，若今天我想要：&#xA;將照片複製到電腦裡，使用 A 程式全部縮放成指定的大小，並套用某個指定的濾鏡，&#xA;然後使用某教授寫的一個 B 程式，它可以計算出一張照片的上下朝向，&#xA;再回到 A 程式將每張照片旋轉成正確的方向，&#xA;最後將所有照片檔案以某種指定的格式重新命名，然後用電子郵件寄給你指定的朋友群。&#xA;對於上述的工作需求，請問有沒有什麼有效率的工作方式？&#xA;若上面提到的每一個程式都是我們常見有圖有按鈕的程式的話，&#xA;除了手動操作以外，你有想到其他讓它們能夠相互支援協同工作的方法嗎？&lt;/p&gt;&#xA;&lt;p&gt;有人說，PhotoShop 有批次處理檔案的功能，很好！&#xA;那 PhotoShop 可以讓你批次寄信嗎？可以批次一起執行某教授的 B 程式嗎？&#xA;這就反應了一個問題：&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;在圖像式軟體中，若你想要做的事情沒有被軟體開發者預先想到並做出來的話，就沒辦法了！&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;還有些人可能會請出如「按鍵精靈」這類的軟體來做與其他軟體間銜接的自動化工作，&#xA;然而當狀況再複雜一點、變因再多一點、判斷再多一點，按鍵精靈這類軟體很容易就不能勝任了！&#xA;這反映出另一個問題：&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;圖像式軟體本質上極不容易與其他軟體協同工作、互相銜接，進行自動化工作。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;最終，在圖像式軟體的架構下，要達成上述的工作的話，&#xA;大概只能重新寫一個超級強大的程式，可以整批的處理各種影像編修，當然連某教授的最新演算法都要包含在裡面、&#xA;可以管理檔案系統、還可以寄送電子郵件，甚至支援全世界所有的雲端儲存工作；&#xA;否則，應該就只剩下手工重複處理所有工作流程的方法了！&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;自動化&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/%E6%96%87%E5%AD%97%E5%91%BD%E4%BB%A4%E5%BC%8F%E7%9A%84%E6%93%8D%E4%BD%9C%E7%92%B0%E5%A2%83%E7%82%BA%E4%BB%80%E9%BA%BC%E4%B8%80%E7%9B%B4%E6%B2%92%E6%9C%89%E8%A2%AB%E6%B7%98%E6%B1%B0/#%e8%87%aa%e5%8b%95%e5%8c%96&#34;&gt;自動化&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;不知各位在使用電腦時，是否曾經出現過「如果電腦能不經我操作就自動去做什麼事情就好了！」這樣的想法或念頭？&#xA;那麼這裡偷偷告訴你一件事，在以文字操作環境為主的系統上，這個夢想已經實現很久了！&#xA;而且已經普遍到讓在這些系統上操作的人員已經習以為常，而不覺得特別驚豔！&#xA;文字模式使用者常常寫些簡單的腳本讓電腦自動下載更新、自動執行定時工作、&#xA;自動檢查電腦記錄，並在偵測到某種特徵存在時自動進行響應，並寄出郵件通知自己等等。&#xA;這些就是自動化工作。&lt;/p&gt;&#xA;&lt;p&gt;雖然在一些圖像式系統如 Windows 上，已存在如工作排程這樣的機制；&#xA;但若我們要做的事情不是簡單的預設工作可以完成的工作，當我們需要組合一些複雜的工作流程或狀態檢查判斷機制時，&#xA;圖像軟體不利於組合的缺點便會體現出來。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;輕量&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/%E6%96%87%E5%AD%97%E5%91%BD%E4%BB%A4%E5%BC%8F%E7%9A%84%E6%93%8D%E4%BD%9C%E7%92%B0%E5%A2%83%E7%82%BA%E4%BB%80%E9%BA%BC%E4%B8%80%E7%9B%B4%E6%B2%92%E6%9C%89%E8%A2%AB%E6%B7%98%E6%B1%B0/#%e8%bc%95%e9%87%8f&#34;&gt;輕量&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;我想這也不難理解，以文字做為資訊介面對電腦的負擔相比於需要圖形處理的圖形軟體是低很多的。&#xA;文字軟體不需要費神在圖像的繪製、顯示、和使用者交戶上，&#xA;節省了大量的記憶體空間、處理器時間、甚至是檔案空間或資料傳輸時間，&#xA;這個特點使得在某些應用上之所以使用文字式操作環境，不是因為文字或圖像的操作比較親和還是比較有效率，&#xA;而是因為環境資源只足以支應文字操作環境。&#xA;所以文字式操作環境至今大量存在於各種伺服器、遠端控制環境、小型裝置、或是嵌入式系統上。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;圖形操作模式的優點&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/%E6%96%87%E5%AD%97%E5%91%BD%E4%BB%A4%E5%BC%8F%E7%9A%84%E6%93%8D%E4%BD%9C%E7%92%B0%E5%A2%83%E7%82%BA%E4%BB%80%E9%BA%BC%E4%B8%80%E7%9B%B4%E6%B2%92%E6%9C%89%E8%A2%AB%E6%B7%98%E6%B1%B0/#%e5%9c%96%e5%bd%a2%e6%93%8d%e4%bd%9c%e6%a8%a1%e5%bc%8f%e7%9a%84%e5%84%aa%e9%bb%9e&#34;&gt;圖形操作模式的優點&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;除了文字模式外，圖形操作模式當然也存在很多的優點，才能讓當今多數的一般使用者都使用它。&#xA;那圖形模式都有哪些主要的優點呢？&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;易於入門&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/%E6%96%87%E5%AD%97%E5%91%BD%E4%BB%A4%E5%BC%8F%E7%9A%84%E6%93%8D%E4%BD%9C%E7%92%B0%E5%A2%83%E7%82%BA%E4%BB%80%E9%BA%BC%E4%B8%80%E7%9B%B4%E6%B2%92%E6%9C%89%E8%A2%AB%E6%B7%98%E6%B1%B0/#%e6%98%93%e6%96%bc%e5%85%a5%e9%96%80&#34;&gt;易於入門&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;由於圖形化的介面可以很符合人類直覺的表達其意義，&#xA;透過簡單的圖示和版面、操作動線設計，可以讓使用者容易摸索操作。&#xA;總而言之，就是入門的門檻與文字模式相比低得多，使用者不需研讀指令拼字與參數就能開始使用軟體；&#xA;扣除掉部份需要特殊背景知識才能操作的專業領域應用軟體，對於流通的大部份應用軟體，&#xA;許多人甚至在沒有閱讀操作手冊的狀況下就能獨自嘗試出其主要功能的使用方式。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;操作直觀&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/%E6%96%87%E5%AD%97%E5%91%BD%E4%BB%A4%E5%BC%8F%E7%9A%84%E6%93%8D%E4%BD%9C%E7%92%B0%E5%A2%83%E7%82%BA%E4%BB%80%E9%BA%BC%E4%B8%80%E7%9B%B4%E6%B2%92%E6%9C%89%E8%A2%AB%E6%B7%98%E6%B1%B0/#%e6%93%8d%e4%bd%9c%e7%9b%b4%e8%a7%80&#34;&gt;操作直觀&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;這一點是文字操作模式永遠無法與之相比的一點。&#xA;舉個例子，你會願意用滑鼠在畫面上拖拉來改變一張圖片在一份文件中的大小和位置？&#xA;還是透過調整圖片的四個座標值來完成？&lt;/p&gt;&#xA;&lt;p&gt;雖然說 UNIX 上的使用者可能比較傾向使用非所見及所得類型的軟體，&#xA;這些人通常喜歡使用簡單的純文字檔案來表達複雜的組成；&#xA;但這牽涉到另一個大題目，估且就放著不談！&#xA;即便如此，在某些如影像處理、訊號分析等等應用上，若缺乏良好的繪圖甚至是圖像互動機制，&#xA;則其相關之工作將會難以進行！&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;畫面美觀&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/%E6%96%87%E5%AD%97%E5%91%BD%E4%BB%A4%E5%BC%8F%E7%9A%84%E6%93%8D%E4%BD%9C%E7%92%B0%E5%A2%83%E7%82%BA%E4%BB%80%E9%BA%BC%E4%B8%80%E7%9B%B4%E6%B2%92%E6%9C%89%E8%A2%AB%E6%B7%98%E6%B1%B0/#%e7%95%ab%e9%9d%a2%e7%be%8e%e8%a7%80&#34;&gt;畫面美觀&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;這點我想應該不用再多做解釋，由於圖形的處理能力，圖形化軟體常常擁有華麗的皮膚與互動特效，&#xA;而這是文字介面永遠無法觸及的領域。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;設計哲學&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/%E6%96%87%E5%AD%97%E5%91%BD%E4%BB%A4%E5%BC%8F%E7%9A%84%E6%93%8D%E4%BD%9C%E7%92%B0%E5%A2%83%E7%82%BA%E4%BB%80%E9%BA%BC%E4%B8%80%E7%9B%B4%E6%B2%92%E6%9C%89%E8%A2%AB%E6%B7%98%E6%B1%B0/#%e8%a8%ad%e8%a8%88%e5%93%b2%e5%ad%b8&#34;&gt;設計哲學&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;雖說文字介面與圖形介面各有優劣、各有合適的應用情境，&#xA;但有關文字介面與圖形介面的不同，絕對不是只有軟體是透過文字、還是圖像式介面進行操作的方式不同而已。&#xA;由於兩種介面本質上的特性差異，導致兩類軟體的設計和應用哲學往兩個截然不同的方向發展。&lt;/p&gt;&#xA;&lt;p&gt;由於文字介面的程式本質上很容易與其它程式串接，加上批次腳本等週邊支援，&#xA;讓文字介面軟體間互相的「排列組合」能力能夠被極致的運用，因此使得文字式軟體走向「小而美」的發展方向。&#xA;文字式軟體傾向單純化單一化，一個軟體只做其所專注的一件事，而不管其它與主要功能無關的事情，&#xA;專注讓自己做好使用者龐大工具鏈中一個元件的角色。&lt;/p&gt;&#xA;&lt;p&gt;舉個例子，當我要編譯 C 程式碼時，我可能使用 GCC 作為程式編譯器。&#xA;但是 GCC 只負責編譯程式，沒有讓我修改程式碼的功能，於是我要另外找一個文字編輯器來編輯程式碼，&#xA;比方說是 VIM 好了。&#xA;GCC 負責編譯程式碼，但不負責更進階的程式編譯管理工作，於是我在找到了專門處理大規模程式碼編譯管理的 make 程式。&#xA;然後，我將編譯後的程式以 FTP 軟體將之佈署到指定的伺服器上。&#xA;最後，我再用 Git 程式送交程式修改記錄。&#xA;整理下來，為了編輯、編譯、並發佈程式，使用了 VIM + make + GCC + FTP + Git&#xA;五套軟體所組合成的工具鏈來完成。&#xA;這樣的工具組合乍看之下有點麻煩瑣碎，實際上透過組合，上面的五個工具可以成為一個工具腳本。&#xA;另一個好處在於使用者隨時可以依據喜好或特別需求抽換其中使用的工具零件，&#xA;例如改用 Gedit + make + Clang/LLVM + cURL + SVN 這樣的組合，&#xA;甚至在原來的流程中再加入新的工作流程也是一件很容易的事。&lt;/p&gt;&#xA;&lt;p&gt;而圖像式軟體因為本質上不容易與其它軟體串接，因此走向「大而全」方向發展。&#xA;一套圖像式軟體常需要做出很多與主要功能無關的週邊功能，&#xA;例如一套電子郵件軟體需要製做文字編輯功能，最好再加上強大的檔案檢索管理功能；&#xA;一套文件編輯軟體需要圖片顯示功能，還要圖片裁切、甚至一些影像處理的功能，最好再加上強大的檔案檢索管理功能；&#xA;一套程式編譯軟體需要文字編輯功能、程式碼編譯管理、GUI 元件編輯或產生精靈，&#xA;更好再整合版本控制系統、電子郵件系統、和發佈流程系統、以及測試流程系統，&#xA;最好再加上強大的檔案檢索管理功能。&#xA;如此這般讓圖像式軟體一般都比較龐大複雜。&lt;/p&gt;&#xA;&lt;p&gt;另一方面，圖像式軟體通常無法像文字式軟體的工具鏈般抽換零件。&#xA;比如說，我若使用某電子郵件軟體，卻不喜歡他的文字編輯介面，或是其它的功能的話，&#xA;我除了強迫自己適應該軟體所設計的工具以外，可能只剩在不同的應用軟體間切換、並不斷讀檔與存檔一途了！&#xA;甚至，當我使用的軟體沒有某項我需要的功能時，除了找找看有沒有其他更強大全面的軟體外，也許只得雙手一攤！&#xA;當然，有些人可能會反駁我說圖像軟體也可以透過像是 Windows 上面的 OLE、DDE 等技術來進行嵌套與合作，&#xA;讓 Word 裡面嵌入 Excel 面板等應用得以實現，而不需像我說的一樣一直重新製造輪子；&#xA;但這時再看看 OLE、DDE 等在實際應用的不穩定性，甚至是要製做一個支援該技術的軟體的複雜性，&#xA;比較文字式軟體的合作模式，可用性依然差距極大。&#xA;這些現象再再說明一件事，「圖像式軟體先天不善於協調合作組織應用」。&lt;/p&gt;&#xA;&lt;p&gt;圖像式軟體雖然比起文字式軟體肥大、沒有調配彈性、並且不同軟體間充斥著重複又不統一的功能，&#xA;卻也存在一些不可忽視的優點。&#xA;除了前面已解釋圖像軟體基於「圖像」的特性而利於初學者摸索操作外，&#xA;圖像式軟體因其設計哲學的緣故，常需一同包裹一眾相關工具，此點特性又更有利於入門者的探索學習。&#xA;為了執行某種任務，各種文字式軟體組合而成的工具鏈就像是電腦高手手上的一臺組裝電腦，&#xA;他了解它的每個部位、親自挑選需要或愛好的每個零件，各個零件互相協調、爆發出電腦的最大功效，&#xA;使其流暢的完成使用者所賦與的工作；&#xA;這樣的專業使用者一般不喜歡市面上的套裝電腦，&#xA;因為品牌套裝電腦通常是品牌所自認為的良好配置，而不是使用者實際需求的零件搭配，&#xA;甚至因為特殊規格的原因，使用者不能恣意的更換其中零件而只能遷就套裝電腦所預設的「最佳配置」。&lt;/p&gt;&#xA;&lt;p&gt;但對於電腦初學入門者，情況就不一樣了！&#xA;讓初入門者自己選擇零件並組裝一臺可用的電腦就是一件極困難的事，更遑論要好用以及搭配順暢！&#xA;新手在學習一個主要功能的時候往往需要分心到學習量超乎其想像的週邊相關功能操作上，&#xA;特別是當他沒有其它工具的使用經驗時。&#xA;有時候，新手甚至不知道完成一項主要工作究竟需要哪些週邊功能，不知道原來組裝電腦不能動是因為需要買記憶體來插。&#xA;因此初學者在入門文字式工具鏈時往往會感到挫折，可能會問：&#xA;我用了 GCC 編譯程式，但卻不能編輯程式，為什麼編輯程式要用另外一套軟體？&#xA;我用 GCC 要怎麼把程式碼上傳到版本控制系統？&#xA;甚至是，為什麼 GCC 沒有 IDE？人家 Visual C++ 都有！&#xA;因此可以想見，新手入門時會買品牌套裝電腦，買來即可使用；&#xA;他們也會喜歡圖像式軟體，除了美觀直覺以外，所有相關的週邊功能一次全包到底，省去各種折騰。&lt;/p&gt;&#xA;&lt;p&gt;最終，兩種不同類型的軟體因其基本特性和設計哲學的緣故，各自吸引了性質不同的使用者族群。&#xA;沒有一定電腦基礎的使用者可能更喜歡美觀直覺又全面的圖像式軟體，而排斥其認為使用極不方便的文字式軟體；&#xA;而具有一定電腦基礎的使用者則可能更喜歡簡單高效又彈性自由的文字式軟體，而不愛華而無用的圖像式軟體。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;發展軌跡&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/%E6%96%87%E5%AD%97%E5%91%BD%E4%BB%A4%E5%BC%8F%E7%9A%84%E6%93%8D%E4%BD%9C%E7%92%B0%E5%A2%83%E7%82%BA%E4%BB%80%E9%BA%BC%E4%B8%80%E7%9B%B4%E6%B2%92%E6%9C%89%E8%A2%AB%E6%B7%98%E6%B1%B0/#%e7%99%bc%e5%b1%95%e8%bb%8c%e8%b7%a1&#34;&gt;發展軌跡&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;文字與圖像兩種不同型態的軟體，由於不同的特色而吸引了不同的使用族群，也群聚了不同思想心態的開發者。&lt;/p&gt;&#xA;&lt;p&gt;在自由軟體世界，特別是類 UNIX 領域(以 Linux 佔大多數)，是高手雲集的地方。&#xA;自然而然的，所有開發者所製做出來認為好的東西都是文字命令下的程式或腳本。&#xA;幾十年來，這個領域上的技術增長沒有人敢輕視；但是圖形軟體的發展完善方面卻是極度缺乏！&#xA;不是說在這裡沒有圖形軟體被製造出來，而是使用起來可能不順手，功能也僅是文字版程式的子集，&#xA;要使用完整功能的話，還得回去使用文字版本的程式才行。&#xA;因為這個區域的開發者甚至是使用者通常都擅長且習慣在文字模式下工作，&#xA;以至於長期忽略或輕視圖形使用者的需要，致其所開發的圖形軟體往往只停留在堪用即可的狀態。&#xA;這樣的思維與產品，使得進入類 UNIX 的門檻比起市面常見的系統高得多，&#xA;使其數十年來雖然活躍於專業計算領域、伺服器領域、或嵌入式領域，但卻難打入一般工商家庭市場。&lt;/p&gt;&#xA;&lt;p&gt;這麼長的時間裡，當然也不是沒有人嘗試過想把 UNIX 類系統環境推廣到一般使用領域的想法。&#xA;最早是由自由軟體界自發的發起這個運動，推出了一些知名的桌面環境；&#xA;然而要做出讓一般消費者接受的產品，除了程式以外，美術、人因、介面設計、地區化等等的因素&#xA;實在難透過大部份只有軟體開發專長的一群人所突破，因此所產生的成品往往落入難以讓桌面用戶接受的老困境。&lt;/p&gt;&#xA;&lt;p&gt;要讓社會大眾接受軟體產品，必須要結合各種不同領域的人才，還得要有完善的市場策略和服務，&#xA;所以產品的開發和推廣工作終究必須由較為完善的組織或商業公司來完成。&#xA;歷史上不是沒有出現過這樣的大公司，RedHat 就是一個著名的例子，&#xA;可惜因為 RedHat 的市場取向是以服務商業伺服器為主，沒有太多的精力花在終端桌面用戶上，&#xA;因此 Linux 系統環境的使用者仍只侷限於高級技術份子的小眾市場。&#xA;這個困境一直要到 2004 年以後由 Canonical 公司推出，以大眾桌面市場為導向的 Ubuntu Linux，&#xA;才開始被大量的翻轉。&lt;/p&gt;&#xA;&lt;p&gt;在另一個世界裡，圖形式的使用環境佔據了絕大多數的終端用戶的電腦裝置，&#xA;使得像「成熟的軟體應該要有漂亮好用的圖形介面」這樣的觀念在一般使用者心中根深蒂固；&#xA;幾個寡佔的軟體大公司如 Microsoft、Adobe 等更培養了一大批慣用其產品的廣大使用者群，&#xA;實質上的成為了特定軟體應該要如何被操作使用的標準，&#xA;讓後起的競爭者免不了要被拿來與之類比並品頭論足一番。&#xA;一旦有軟體產品與既有流行的軟體工具操作方式稍有不同，就容易被冠以「難以使用」的評價；&#xA;若有人在這樣的使用者群中推出文字式的軟體產品，大概免不了被群起炮轟，&#xA;得到「落後、簡陋、又不人性化」這樣的批評了！&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;結語&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/%E6%96%87%E5%AD%97%E5%91%BD%E4%BB%A4%E5%BC%8F%E7%9A%84%E6%93%8D%E4%BD%9C%E7%92%B0%E5%A2%83%E7%82%BA%E4%BB%80%E9%BA%BC%E4%B8%80%E7%9B%B4%E6%B2%92%E6%9C%89%E8%A2%AB%E6%B7%98%E6%B1%B0/#%e7%b5%90%e8%aa%9e&#34;&gt;結語&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;本文的敘述也許稍微偏向文字操作軟體，但本意並不是要高捧文字軟體而貶低圖形軟體，&#xA;事實上作者在絕大部分的事務上並不喜歡獨尊某種技術或思想。&#xA;各種至今仍然留存的技術、或思維觀點，都有其優秀的一面，&#xA;在特定的環境下選擇適合的方案，揚長避短才是聰明的做法。&lt;/p&gt;&#xA;&lt;p&gt;以本文所述及的不同工作型態之軟體類別為例，在作者生活中所見之不同陣營間的&#xA;或攻詆、或輕視、或傲慢，都不是智慧的表現。&#xA;開啟互相認識、了解的大門，以期能以尊重、包容的心胸與不同陣營的人進行有意義的對話，&#xA;這大概就是當初作者撰寫本文章的為小心願了吧！&lt;/p&gt;&#xA;&lt;p&gt;最後，&#xA;本人的文筆並不優秀，對軟體的各種面向也不敢說有多深入的了解，&#xA;本文謹以個人粗淺的認識，試圖探討文字操作模式軟體的前世今生。&#xA;當中可能有不少謬誤之處，還請讀者包容見諒，&#xA;若有願提供不同的資訊、修正、或心得想法者，亦感激不盡。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;參考資料&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/%E6%96%87%E5%AD%97%E5%91%BD%E4%BB%A4%E5%BC%8F%E7%9A%84%E6%93%8D%E4%BD%9C%E7%92%B0%E5%A2%83%E7%82%BA%E4%BB%80%E9%BA%BC%E4%B8%80%E7%9B%B4%E6%B2%92%E6%9C%89%E8%A2%AB%E6%B7%98%E6%B1%B0/#%e5%8f%83%e8%80%83%e8%b3%87%e6%96%99&#34;&gt;參考資料&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://blog.vgod.tw/2009/12/18/divine-code-10/&#34;&gt;追求神乎其技的程式設計之道（十）&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Visual C&#43;&#43; 抱怨文</title>
      <link>http://www.huoschen.idv.tw/blog/programming/visual-c&#43;&#43;-%E6%8A%B1%E6%80%A8%E6%96%87/</link>
      <pubDate>Sun, 23 Mar 2014 00:00:00 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/programming/visual-c&#43;&#43;-%E6%8A%B1%E6%80%A8%E6%96%87/</guid>
      <description>&lt;p&gt;其實我並不是要刻意詆毀 Visual C++，&#xA;只是最近被迫使用 Visual C++ 進行軟體開發，卻常常把自己搞得一肚子火。&#xA;隨者週末的來到，終於可以稍歇一會，於是便想整理一下最近對於這個工具的使用心得，&#xA;特別是那常常會把人弄火的那一部份。&lt;/p&gt;&#xA;&lt;p&gt;平常寫程式並不常用 Visual C++，我一向喜歡用最新版的 GCC。&#xA;還記得前幾天有業務來我們公司推銷 embedded 版的 Windows，&#xA;當然免不了要吹捧一下在一些小裝置上使用 Windows 的好處，&#xA;雖然當中的很多所謂優點與近年興起的 Embedded Android 相比已經沒有競爭力了，&#xA;不過在那麼多的產品宣導中卻有這麼一句話引起了我的注意：&#xA;「程式設計人員可以使用原來就已經熟悉的 Visual Studio 進行軟體開發」。&#xA;當時我就很不服氣的在想，微軟是不是認為所有的程式人員都應該要最喜歡也最習慣 Visual Studio？&#xA;雖然我也知道實際上開發 Windows 程式的人當中愛用 Visual Studio 的比例的確很高。&lt;/p&gt;&#xA;&lt;p&gt;我之所以不像其他大部分的程式人員一樣愛用 Visual Studio 有幾個原因：&#xA;首先就是他的功能與其他工具相比其實並沒有很強，除了與作業系統整合的部份。&#xA;第二是我一向對新工具的某些新特性懷有很大的期待，&#xA;可若每隔一兩年就要買新的 Visual C++ 的話那可是一筆很大的開銷啊！&lt;/p&gt;&#xA;&lt;p&gt;最近換了新工作的時候，有一位可愛的前輩看到我正使用文字編輯器(Notepad++)在看程式碼，&#xA;沒過多久就開始推薦我使用 Visual C++ 來追蹤程式碼，還示範了好多「方便好用」的地方，&#xA;我當時心裡想者 Code::Blocks 做得更聰明多了……&#xA;其實我用過 Visual C++ 6 和 Visual C++ 2008，現在因為新工作的關係正在使用 Visual C++ 2005。&#xA;不過對於大部分的不便我通常不會抱怨太多，&#xA;我通常不會嚴重的抱怨它那笨拙的自動完成功能、號稱強大的 IDE 卻竟然沒有 Smart Highlight 的事情、&#xA;以及從頭到尾只有一種顏色的註解。&#xA;我曾遇過最鬼打牆的問題就是 Visual C++ 不支援 No-BOM UTF-8 格式的問題&#xA;(由於他的編輯器可以正常顯示，加上設定選項裡確實有這麼一個設定項目，&#xA;於是讓人誤以為 Visual C++ 支援 No-BOM UTF-8)；&#xA;然而真正讓我拋棄它的最後一根稻草是，有一回我發現在 MFC 專案中刪除一個按鍵的響應時，&#xA;他並不是把相關的程式碼刪除(類似 C++ Builder 那樣)，而是把所有的相關程式碼註解起來！&#xA;從此以後我開始鄙視 Visual C++。&lt;/p&gt;&#xA;&lt;p&gt;前面都是從前的事情，這次要分享的是這幾天在「預編譯標頭檔」上遇到的狀況。&#xA;由於新公司要我維護一個前人寫的 MFC 程式，於是我只好再度開啟那久違的 Visual C++。&#xA;然而就在我加入了一個 C 語言程式碼檔案時，故事發生了！&lt;/p&gt;&#xA;&lt;p&gt;首先是編譯器產生了錯誤訊息：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;fatal error C1010: unexpected end of file while looking for precompiled header. Did you forget to add &#39;#include &amp;quot;stdafx.h&amp;quot;&#39; to your source?&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;也就是他告訴我這個專案啟用了 VC 的預編譯標頭檔機制，因此我需要引用 stdafx.h。&#xA;從前我在 Visual C++ 上寫程式時總是把 VC 的預編譯標頭檔機制關掉(就是那個神祕的 stdafx.h/.cpp)，&#xA;因為我認為它是多餘的、違反程式碼單純化守則的、會讓人搞不清楚的、不利於移植與交流的東西。&#xA;但是現在我要修改別人的 MFC 程式碼，如果我把預編譯標頭檔關掉的話會有太多的程式碼需要追蹤修正，&#xA;於是我只好在我的程式碼裡加上 stdafx.h 的引用。&lt;/p&gt;&#xA;&lt;p&gt;但事情並沒有這樣就結束，編譯器隨後發出了這個錯誤：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;fatal error C1853: precompiled header file is from a previous version of the compiler, or the precompiled header is C++ and you are using it from C (or vice versa)&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;很顯然的，問題並不是出在編譯器的版本上，&#xA;而是偉大 Visual C++ 的預編譯標頭檔不能用在 C 程式碼上！&#xA;這時我開始想要罵人了……&lt;/p&gt;&#xA;&lt;p&gt;我心不甘情不願的把程式碼改成 C++ 檔案，但還是想知道別人是不是有別的做法，&#xA;於是又 Google 了一下發現最多人推薦的幾個做法是：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;關掉預編譯標頭檔機制。&#xA;&amp;ndash; 這是個好方法，但前面解釋過此法在此例上不可行。&lt;/li&gt;&#xA;&lt;li&gt;針對專案內個別的檔案設定為關閉預編譯標頭檔機制。&#xA;&amp;ndash; 此法操作麻煩，&#xA;而且程式碼在移轉的時候除非特別交代，否則誰看得出來在某個不起眼的小地方動了什麼設定？&#xA;不過在我當前的狀況下這似乎是最好的做法，也是我後來改用的做法。&lt;/li&gt;&#xA;&lt;li&gt;將所有的 C 語言檔案獨立編譯成一個靜態程式庫檔，再將它聯結進我們的專案。&#xA;&amp;ndash; 這個方法非常不推薦，除了讓專案複雜化以外還會造成追蹤和除錯的困難。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;解決了 C 程式碼的預編譯標頭問題後，編譯器再度拋出訊息：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;error C3861: &#39;assert&#39;: identifier not found&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Assertion 是我最喜歡用的功能之一，我怎麼可能會犯下沒有引用 assert.h 之類的錯誤呢？&#xA;難道是 MFC 不支援 assert？&#xA;然而在試過網路上提供的眾多解法都無效後，&#xA;我發現 stdafx.h 必須是一個程式碼檔案第一個引用的標頭檔，&#xA;在他前面的引用似乎都會被忽略，而此時我開始想要翻桌了！&#xA;(就算 Visual C++ 你有一些奇怪的規則好了，加個警告是會死喔？誰知道你的標頭檔還有順序的問題！)&lt;/p&gt;&#xA;&lt;p&gt;其實標頭檔預編譯機制是有他的價值在的，&#xA;在圖形介面專案上(比方說 MFC 或 wxWidgets)可以省下許多的編譯時間，&#xA;只是 Visual C++ 的預編譯機制實在是太垃圾了！&#xA;C++ Builder 加個 &lt;code&gt;#pragma hdrstop&lt;/code&gt; 就好了，&#xA;雖然他也有順序的問題，但引用順序不對頂多就是編譯時間長一點而已；&#xA;GCC 的 pch 檔案可以選擇性的被使用，在你需要的時候把標頭檔編譯成 pch 檔就可以用了，&#xA;而且各自獨立，&#xA;不會像 Visual C++ 只要被設定後在預編譯標頭下的所有標頭檔都會被強迫引用至專案內的所有程式碼。&lt;/p&gt;&#xA;&lt;p&gt;雖然 Visual C++ 還有許多可以抱怨的地方，但這裡就先不要一次爆太多料了，&#xA;畢竟在工作上還是必須使用它。&#xA;若之後又有相關的頭痛文或趣聞的話再來分享吧！&lt;/p&gt;</description>
    </item>
    <item>
      <title>聯合信用卡中心 新進人員考試</title>
      <link>http://www.huoschen.idv.tw/blog/programming/%E8%81%AF%E5%90%88%E4%BF%A1%E7%94%A8%E5%8D%A1%E4%B8%AD%E5%BF%83-%E6%96%B0%E9%80%B2%E4%BA%BA%E5%93%A1%E8%80%83%E8%A9%A6/</link>
      <pubDate>Tue, 21 Jan 2014 00:00:00 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/programming/%E8%81%AF%E5%90%88%E4%BF%A1%E7%94%A8%E5%8D%A1%E4%B8%AD%E5%BF%83-%E6%96%B0%E9%80%B2%E4%BA%BA%E5%93%A1%E8%80%83%E8%A9%A6/</guid>
      <description>&lt;p&gt;上週六(2014年01月18日)參加了聯合信用卡中心的新進人員考試，地點在臺北科技大學(臺北工專)。&#xA;中文考得有點亂，倒是英文自覺寫得還可以，&#xA;邏輯測驗被我挑到爭議題目，不過還好那題是出現在範例題，所以沒有影響。&#xA;這一次最開心的是最後一堂考的電腦概論被我挑到一個爭議題目，&#xA;比我去 HTC 考試還令人興奮，我在 HTC 都還沒挑到什麼有趣的題目。&lt;/p&gt;&#xA;&lt;p&gt;這題是這樣的(由於記憶有限，因此可能和原題不能一字字相同，但是關鍵的爭議點是被保留的)：&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;請問下列C程式的執行結果：&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;#define SQU(x) (x*x)void main(){ printf(“%d\n”,SQU(3+2)); }&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;答案：(A) 36    (B) 11    (C) 13    (D) 以上皆非&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;我想很多號稱會 C 語言又臨時緊張的人應該會選答案 &amp;ldquo;B&amp;rdquo; 吧！&#xA;我一開始也是直覺這麼認為，&#xA;但再仔細看看題目，卻覺得這程式碼有大問題，不能被編譯出來，所以選了 &amp;ldquo;D&amp;rdquo;。&lt;/p&gt;&#xA;&lt;p&gt;到這裡我想熟悉 C 語言的人都知道我要說什麼了，&#xA;沒錯，關鍵就是全部的程式碼只有一行，所以後面的 &lt;code&gt;void main …&lt;/code&gt; 會被一起納入 &lt;code&gt;SQU&lt;/code&gt; 巨集。&#xA;所以這個程式沒有主函式 &amp;ndash; 無法編譯，&#xA;就算在下面加入主函式，只要使用了這個巨集就會發生編譯錯誤。&#xA;至此，我心裡暗念著：「真是個陷阱題啊！」&#xA;但是再想一想，答案也有可能是 &amp;ldquo;B&amp;rdquo;，原因如下說明：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;答案若是 &amp;ldquo;D&amp;rdquo;：&#xA;真是個拐人的陷阱題，出題老師心機很重，這題專門拐那些冒失又考場緊張的人。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;答案若是 &amp;ldquo;B&amp;rdquo;：&#xA;這樣的話不是出題老師該打就是繕打人員該罵，讓這種簡單的題目產生爭議。&#xA;我想原因很單純，就是為了節省考卷版面才把程式縮成一行，&#xA;因為 C 語言是靠分號來結束一個敘述而不是靠換行。&lt;/p&gt;&#xA;&lt;p&gt;這是有跡可循的，因為把程式碼縮成一行的題目在考卷上就有兩題，&#xA;只是上一題沒有出現預編譯指令。&#xA;會出現這樣的錯誤有可能出題老師是個豬頭，&#xA;不過我覺得機率很低，畢竟能當出題老師少說刷子也要有兩把；&#xA;我覺得更有可能是出題的時候沒問題，而繕打人員為了節省版面，&#xA;加上曾聽工程人員說 C 語言縮成一行的結果是一樣的&#xA;(然而實際上預處理指令的部份卻是依據換行來分隔)，&#xA;就擅自把這題縮成一行了！&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;這一題我最後選了 &amp;ldquo;D&amp;rdquo;，&#xA;但我還是很好奇標準答案到底是什麼(其實是好奇他們到底出了上述哪一種智障問題)，&#xA;所以星期一的上班時間我就打了通電話給聯合信用卡中心的聯絡人詢問，&#xA;結果標準解答是 &amp;ndash; &amp;ldquo;B&amp;rdquo;。&#xA;嗯，看來出題老師心機沒有很重，不果我立刻告訴對方說這題具有爭議，&#xA;還說你可以拿這題去問問你們的程式人員，看這題能不能被編譯通過？&#xA;對方說他需要去和出題老師問問，於是今天的對話就這麼結束了。&lt;/p&gt;&#xA;&lt;p&gt;第二天接近中午，我又迫不及待的再去詢問他們和出題老師討論的結果。&#xA;對方還沒聯絡到出題老師(可能是很神秘的老師)，&#xA;而且調閱全部考卷來看後他們說只有一個人寫 &amp;ldquo;D&amp;rdquo; (這很明顯就是我)，&#xA;其他人都選了 &amp;ldquo;B&amp;rdquo;，不過他們似乎決定這題寫 &amp;ldquo;D&amp;rdquo; 也給分。&lt;/p&gt;&#xA;&lt;p&gt;其實我並不太在意我有沒有拿到分數，實際上也不知道我是不是少這幾分會沒有辦法進入面試階段，&#xA;只是覺得：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;挑到別人的錯誤是一件很開心的事情，&#xA;從前在學校裡那些畢業展覽有自製軟體的組別我就很喜歡去試用，然後想辦法把他玩到當機。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;既然發生了錯誤就應該要修正不是？&#xA;別說我對這個大家都看得懂的東西故意找碴，&#xA;很多 bug 不就是從大家都看得懂都看起來都沒問題的地方來的？&#xA;我還沒追究他的 main 函式竟然沒有傳回值的問題呢！&#xA;C 語言標準只定了兩個 main 函式的宣告方式，沒有哪個是沒有回傳值的，&#xA;所以就算沒有換行的問題，&#xA;如果有人說這程式碼拿到某個 C 語言編譯器會編不出來的話也是很正常的！&#xA;除非題目寫的是虛擬碼，我就同意我這樣做不應該。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;還有另外一個有趣而值得探討的議題就是全部的人都選了 &amp;ldquo;B&amp;rdquo;，&#xA;我不相信當中沒有人知道這題有著無法編譯通過的問題！&#xA;而對於實際考試的結果，我的想法是大部分的人從小所受到的養成教育告訴他們不要沒事找事做，&#xA;真理又如何？正義能當飯吃嗎？&#xA;如果能揣摩老師、或家長、或長官的心意，那就不要違逆他們，即使你的想法才是對的。&#xA;總之不管怎樣絕不要去做和大家不一樣的事情！&lt;/p&gt;&#xA;&lt;p&gt;根據我從小到大的經驗來看，凡是和大家不同的人都會被排擠，無論那個人是無理的還是有理的，&#xA;甚至有些時候其實大家才是錯誤的一方。&#xA;隨著年齡增長，這類幼稚的事情看似越來越少見，&#xA;實則是轉變成另外一種看似有理而不幼稚的方式繼續存在著。&#xA;比方說當有人沒有辦法用 Firefox 登入政府網站時，&#xA;通常他周圍的人不會罵政府為什麼不按 W3C 標準設計網站讓所有遵照標準設計的瀏覽器都能正常使用，&#xA;反而大部分的人會怪罪他為什麼不用 IE？&#xA;「大家都用 IE 都可以正常使用啊！」「你為什麼要與眾不同？」&#xA;「為什麼要特立獨行？為什麼不和大家一樣？」&lt;/p&gt;&#xA;&lt;p&gt;當我發現所有應考的程式人都擁有同樣的現象時，我突然從找到爭議題目的雀躍轉變為對臺灣的憂心，&#xA;這才親身體驗到為什麼很多人說臺灣人的奴性太重。&#xA;我相信參與聯合信用卡中心考試的這些人絕不是特例，而是臺灣普遍的現象。&#xA;當臺灣人說我們要靠文化創意產業打出另外一片天的時候，&#xA;實際參與這些工作的人卻是一群只願安安份份做事的人，&#xA;不能打破既有界線、跳不出框框、思想僵化、甚至少有創意的人。&lt;/p&gt;&#xA;&lt;p&gt;然而，除了憂心外我還能怎樣呢？&lt;/p&gt;</description>
    </item>
    <item>
      <title>我的邁向正版之路</title>
      <link>http://www.huoschen.idv.tw/blog/digit/%E6%88%91%E7%9A%84%E9%82%81%E5%90%91%E6%AD%A3%E7%89%88%E4%B9%8B%E8%B7%AF/</link>
      <pubDate>Mon, 11 Nov 2013 00:00:00 +0800</pubDate>
      <guid>http://www.huoschen.idv.tw/blog/digit/%E6%88%91%E7%9A%84%E9%82%81%E5%90%91%E6%AD%A3%E7%89%88%E4%B9%8B%E8%B7%AF/</guid>
      <description>&lt;h2 id=&#34;氾濫的盜版道德的淪喪&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/%E6%88%91%E7%9A%84%E9%82%81%E5%90%91%E6%AD%A3%E7%89%88%E4%B9%8B%E8%B7%AF/#%e6%b0%be%e6%bf%ab%e7%9a%84%e7%9b%9c%e7%89%88%e9%81%93%e5%be%b7%e7%9a%84%e6%b7%aa%e5%96%aa&#34;&gt;氾濫的盜版、道德的淪喪&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;我想，如果現在做一個全國軟體盜版大調查的話，&#xA;不知道會得出什麼好笑又感傷而且大家都已經知道的結果？&#xA;公司行號、學校宿舍裡、社會上的各個角落隨處可見非法軟體的充斥，&#xA;然而最令我覺得誇張的是人們對於這樣子的行為已經不再有罪惡感，&#xA;甚至明目張膽的流傳盜版軟體、討論破解方法，而不會露出一點羞恥。&#xA;如果有人偷竊物品，我們會對他感到厭惡和不齒；&#xA;但若有人竊盜軟體，我們會問他去哪裡弄來的，好不好用？&#xA;記得從前我們向別人要軟體時都會儘量的低調加明示暗示，除了對於熟悉的同學會比較明白的說明。&#xA;但曾幾何時，見到現在的人要求盜版軟體卻是理直氣壯大聲喧嚷，臉不紅而氣不喘！&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;與盜版結緣&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/%E6%88%91%E7%9A%84%E9%82%81%E5%90%91%E6%AD%A3%E7%89%88%E4%B9%8B%E8%B7%AF/#%e8%88%87%e7%9b%9c%e7%89%88%e7%b5%90%e7%b7%a3&#34;&gt;與盜版結緣&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;和許多人一樣，我也是盜版軟體餵養長大的人。&#xA;家裡第一次買電腦是在我就讀國二的時候，那時候的我們對於電腦根本是一竅不通，&#xA;還記得有一天正好碰上十三號星期五，整天都不敢開電腦，&#xA;還將主機電源按鈕貼起來，深怕中了當時耳邊傳的沸沸揚揚的電腦病毒。&#xA;那時我的父母透過認識的工程師幫我們家組裝了第一臺個人電腦，&#xA;順便裝了滿滿的盜版軟體，從Windows 98到讓我們一家玩了十數年的StarCraft，&#xA;那時哪分得出它們有什麼不同，只要電腦能動能上網能玩遊戲就行了。&#xA;憑我自己弄來的第一套軟體是曾風行一時的Final Fantasy VIII，&#xA;當時燒錄機還不普遍，班上有一位同學便仗著家裡有燒錄機，收我們一片光碟一百元的工本費。&#xA;就這樣，在盜版軟體的灌溉之下，我從一個電腦白痴慢慢的成長，&#xA;然而等到有一天發現盜版不對時卻已經深陷其中而無法自拔。&lt;/p&gt;&#xA;&lt;p&gt;可能是我本身有些完美主義的性格，常常幻想有一天能把自己的電腦扶正，&#xA;只是望著高貴的軟體價格實在讓我卻步。&#xA;畢業後拿到第一份薪水時，我花了千來塊買了生平第一套正版防毒軟體，&#xA;真正開始夢寐已久的邁向正版之路。&#xA;但很快的又陷入老困境，我粗估一下需要購買的軟體：&#xA;一套 Windows 7 約 10000 (專業彩盒版)、&#xA;Office 2010 約 10000、&#xA;PowerDVD 約 1500、&#xA;WinRAR 約 1200、&#xA;ACDSee 約 2500、&#xA;Nero 約 3500、&#xA;Avast 約 5000&#xA;(一年約 1000，實在很難計算它的絕對價值，就當作五年後會重新評估要不要換防毒軟體好了)，&#xA;這樣的設置對一般家庭應用來說應該足夠了。&#xA;可是算一算這樣的基本配置卻需要約三萬元預算，就算我現在有收入，錢也不是這樣花的吧！&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;自由的契機&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/%E6%88%91%E7%9A%84%E9%82%81%E5%90%91%E6%AD%A3%E7%89%88%E4%B9%8B%E8%B7%AF/#%e8%87%aa%e7%94%b1%e7%9a%84%e5%a5%91%e6%a9%9f&#34;&gt;自由的契機&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;就在我放棄轉向全合法軟體後的一段時間，因為工作的需要讓我認識了自由軟體，&#xA;而從前我並不知道原來世界上廣泛存在著這種奇異的軟體。&#xA;慢慢的我開始抱怨自己的遭遇，在心裡吶喊著不公。&#xA;從小到大從沒有人告訴我世界上存在這樣的軟體、&#xA;沒有人告訴我有些軟體不管如何下載複製都不會違法、&#xA;沒有人讓我們知道在每天吃泡麵支持正版與昧著良心被迫盜版當中其實有第三條路可以走，&#xA;一樣可以寫作業、一樣可以看電影，&#xA;在不需要餓著肚子的同時也能對得起自己的良心，挺起胸膛做個真正的人。&lt;/p&gt;&#xA;&lt;p&gt;對這種日後對我引想深遠的軟體類型，我想值得花一點點版面介紹。&#xA;自由軟體定義中的兩個部份對於一般人來說比較重要：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;自由軟體不限制所有的人將他用作任何用途的自由，無論個人、家庭、企業使用都沒有差異。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;所有的人可以任意的研究、修改、再發佈自由軟體，&#xA;因此自由軟體的原始程式碼必須公開，免費只是它的副作用。&#xA;你把下載下來的自由軟體複製給其他人使用並不違法，&#xA;即使你修改了軟體後再發佈給其他人也一樣(當然修改後的程式碼也要公開)。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;因此，自由軟體中不存在盜版的需要，&#xA;正版合法的軟體可以輕易的取得，也免除了怕被提供破解版的「好心人」安放木馬的疑慮。&#xA;因為程式碼公開，所以很難在裡面放怪怪的東西而不被發現；&#xA;如果你不信認給你程式的人，你也可以去官網下載，再者還可以下載程式碼自己編譯。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;對於自由軟體常見的誤解&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/%E6%88%91%E7%9A%84%E9%82%81%E5%90%91%E6%AD%A3%E7%89%88%E4%B9%8B%E8%B7%AF/#%e5%b0%8d%e6%96%bc%e8%87%aa%e7%94%b1%e8%bb%9f%e9%ab%94%e5%b8%b8%e8%a6%8b%e7%9a%84%e8%aa%a4%e8%a7%a3&#34;&gt;對於自由軟體常見的誤解&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;接下來澄清一些近日我對身邊朋友介紹自由軟體時常遇到的疑問：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;你說的自由軟體特色，除了免費以外都只對程式高手才有意義！&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;因為自由軟體的特性使得軟體使用中若發現什麼問題或缺少什麼功能都可以自己著手修改，&#xA;乍聽之下好像對於不是程式高手的絕大多數使用者沒什麼關係。&#xA;然而事實上不是這樣的，隨著網路的連通，&#xA;當我使用自由軟體時就代表著擁有全世界無數工程師在看顧我所用的程式。&#xA;想想身邊如果 10 個朋友中才有一個軟體工程師，&#xA;即使 100 個工程師中才有一位高手在工作之餘可以花心思在自由軟體上，&#xA;那麼全世界會有多少這樣的工程師呢？又哪一家公司可以請得起這麼多的高手？&#xA;所以使用自由軟體的人其實是很幸福的！&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;聽說自由軟體很容易中毒？&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;這個我只能說不要被李家同騙了，以為別人看不到程式碼的軟體就比較安全，&#xA;這樣也太小看那些網路上的高手們了吧！你以為這麼多防毒公司都靠什麼生活的？&#xA;相反的，自由軟體有數不盡的眼睛盯著，軟體漏洞的發現和修補都很迅速。&#xA;沒有一家軟體公司可以請這麼多高手維護一個程式，&#xA;也因此實際使用中自由軟體中毒的機會比同類的閉源軟體還低的多。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;聽說自由軟體不好用？&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;這只能說是見仁見智，幾乎完全是習慣問題；&#xA;如果你有常用自由軟體的朋友，也許他還會告訴你你的軟體他用不習慣！&#xA;然而最讓我覺得神奇的是很多人不願意適應 OpenOffice.org 之類的軟體，&#xA;卻會強迫自己去適應相異程度與之不相上下的新版 MS. Office，而且一次又一次！&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;有些人說我崇尚自由軟體而反對商業軟體反對微軟，&#xA;事實上我的確崇尚自由軟體，然而我並不反對一般商業軟體。&#xA;我也是程式人員，知道一套軟體背後的辛勞，&#xA;而且每位作者對待軟體的看法也應被尊重，他要拿來賣錢是無可厚非，&#xA;無償分享給全世界並不是唯一的價值。&#xA;我反對的是對於軟體盜版的氾濫，道德和羞恥心的失落；&#xA;看不起的是那些不願意買商業軟體卻臉不紅氣不喘堅持盜版的人，&#xA;或者一邊抱怨 Windows 多爛又微軟多惡劣卻不願意嘗試 Windows 以外世界的人。&#xA;從前沒有人告訴我這些，使我一直相信自己是不得已而被迫盜版，&#xA;也因此現在我常向家人、朋友、老師以及不認識的人等介紹自由軟體，&#xA;望者他們豁然明白的眼神彷彿是見到了從前的我。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h3 id=&#34;關於文書檔案格式的衝突&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/%E6%88%91%E7%9A%84%E9%82%81%E5%90%91%E6%AD%A3%E7%89%88%E4%B9%8B%E8%B7%AF/#%e9%97%9c%e6%96%bc%e6%96%87%e6%9b%b8%e6%aa%94%e6%a1%88%e6%a0%bc%e5%bc%8f%e7%9a%84%e8%a1%9d%e7%aa%81&#34;&gt;關於文書檔案格式的衝突&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;回到正題，我開始使用自由軟體，從工作需要擴展到日常生活，&#xA;剛開始接觸 OpenOffice.org、GCC 等等軟體的時候是有點不習慣，&#xA;但很快的一些基本功能就熟悉了，而實際上絕大部分的進階功能其實平常本來就沒在使用。&#xA;在轉換日常使用軟體的過程中，大部分的問題就是習慣而已，&#xA;真正比較能夠拿來討論的大概就是文書處理軟體的檔案格式了。&lt;/p&gt;&#xA;&lt;p&gt;自由軟體大部分喜歡使用國際間的標準文書格式 ODF，常見副檔名為 odt 或 ods 等等的就屬這類；&#xA;當前多數人使用的微軟的舊式 Office 則使用有 doc、xls 等等副檔名的格式；&#xA;而微軟新式 Office 則使用 OOXML，即常見副檔名為 docx、xlsx 的檔案格式。&#xA;其實現在很多的文書處理軟體已經可以支援上述的全部檔案格式，&#xA;但多數的人卻還使用舊的微軟 Office 軟體，以致常有人抱怨說&#xA;「你給的odt是什麼東西？為什麼我打不開！」或者&#xA;「你不要給我docx，我打不開啦！」&#xA;面對這種狀況，我通常會推薦對方安裝自由的文書軟體，&#xA;若遇到堅持使用微軟 Office 的就只好叫他安裝 2010 以上版本，&#xA;至於要花錢或盜版我就不能插手了！&#xA;若他堅持不要升級，那就要他安裝 Sun 專為舊式微軟 Office 開發的 ODF 外掛套件。&#xA;雖然說 OpenOffice.org 也可以存檔為 doc 格式，&#xA;但如果對方就是一副一點都不願意配合的樣子，我在生氣之下通常就丟著 ODF 檔案叫他自己看著辦，&#xA;更何況 ODF 是國際標準外更是我國國家標準！&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;大魔王之作業系統&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/%E6%88%91%E7%9A%84%E9%82%81%E5%90%91%E6%AD%A3%E7%89%88%E4%B9%8B%E8%B7%AF/#%e5%a4%a7%e9%ad%94%e7%8e%8b%e4%b9%8b%e4%bd%9c%e6%a5%ad%e7%b3%bb%e7%b5%b1&#34;&gt;大魔王之作業系統&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;在我慢慢熟悉這些軟體的數個月後，開始萌生面對下一個大魔王的念頭，&#xA;這個大魔王就是電腦的作業系統。&#xA;其實在這個期間，以及接下來與作業系統奮鬥的期間，&#xA;我常常都在想是不是應該要買一個正版的 Windows？&#xA;可是在漫長的過程中無論如何尋價如何優惠，他的價錢永遠是那麼的高貴。&#xA;加上後來微軟霸道的要強迫大家購買包括我在內的很多人都超級討厭的 Windows 8，&#xA;3C 賣場只剩超醜又難用的 Windows 8，在網路上也越來越難找到 Windows 7 的購買來源。&#xA;我常在思索為什麼我們不能視自己需求挑選與購買軟體如同購買硬體一樣？&#xA;為什麼我們只能強迫自己去習慣與遷就單一廠商想要我們接受的一切？&#xA;最後我被迫擁抱 Linux，好似兒時被迫盜版一樣，&#xA;不同的是這次是我深思熟慮後的選擇，一個讓我可以抬頭挺胸的選擇。&lt;/p&gt;&#xA;&lt;p&gt;很神奇吧，自由軟體真是無遠弗屆，連作業系統都有自由的！&#xA;一開始我使用 Cygwin 在 Windows 下模擬並學習使用自由的作業系統 &amp;ndash; Linux，&#xA;很快的我體認到他們之間還是有根本上的差異，我需要一個真正的 Linux 用來學習。&#xA;於是我安裝了 VirtualBox 虛擬機器，在虛擬的電腦中安裝 Ubuntu 12.04&#xA;&amp;ndash; 這是 Linux 的其中一個發行版，&#xA;然後一邊看著鳥哥的網站，真正開始我的 Linux 入門旅程。&#xA;我特別喜歡 Ubuntu 的華麗操作界面和那個紫色的預設背景，美觀程度和 OS X 不相上下，&#xA;至於 Windows 8 的美工則是被我嫌的半死。&#xA;在嘗鮮期中我每天都要把 Ubuntu 開起來滑滑他的視窗玩玩他的四個桌面，&#xA;午休時也要把虛擬機器中的 Ubuntu 畫面放到最大(有意無意向同事炫耀)才肯做別的事。&lt;/p&gt;&#xA;&lt;p&gt;用了 Ubuntu 後我才發現，原來從前我一直使用的 Windows 是多麼落後的東西，&#xA;光是一個 Unicode 機制就可以把 Windows 打翻了！&#xA;當我們還陷在各國語系的亂碼問題時，人家 Linux 早就全面使用萬國碼；&#xA;看到 Windows 8 跟進蘋果的 AppStore 在大吹大擂什麼軟體商城，&#xA;Ubuntu 的軟體中心早就運作了一千年，&#xA;大部分不用錢以外還可以統合一次管理電腦上全部軟體的更新作業。&lt;/p&gt;&#xA;&lt;p&gt;雖然說我現在再回頭看當時的情景，我會覺得當時有點太小題大做了，&#xA;特別是鳥哥的網頁(因為很多人推薦)一定會嚇跑很多想要入門Linux的人。&#xA;事實上這裡沒有任何貶損鳥哥的意思，&#xA;鳥哥的東西讓我學到不少實用的知識和技巧，我到現在也常常去他的網頁查資料。&#xA;不過他的網頁似乎比較是要培養能夠維護伺服器的 Linux 專家，而對於一般家用需求來說就有點太猛了！&#xA;在我實際試用 Ubuntu 的過程中我常常納悶，&#xA;從前聽很多人說Linux很難用、說那是有點瘋的超級專家才會用的東西，&#xA;支援很差、不易理解不易上手、要背很多指令等等，他們說的是不是指十年前的 Linux？&#xA;我現在用起來明明就很好上手，甚至大部份的工作用一隻滑鼠點一點拖一拖就能完成，&#xA;如果拋開既成習慣的問題的話他甚至比 Windows 還容易使用，&#xA;容易到我覺得那些電腦課程長青班應該都要改教 Ubuntu 而放棄對老人家來說比較難使用的 Windows 才對！&lt;/p&gt;&#xA;&lt;p&gt;使用 Linux 後省下的第一筆開銷是作業系統的錢，然後就是防毒軟體。&#xA;由於 Linux 本身在安全上的嚴謹加上漏洞的修補迅速，因此 Linux 用戶很少在安裝防毒軟體的&#xA;(就算有也都是在幫 Windows 抓病毒)，&#xA;而且這樣電腦的效能才不會被防毒所拖累。&#xA;再來是原先我擔心很多在 Windows 上已經習慣的好用工具沒有 Linux 的對應軟體，&#xA;後來我發現很多軟體在 Linux 上之所以沒有是因為根本就不需要，比方說之前提的防毒。&#xA;在 Windows 上要製做光碟映像檔的話大家可能會去安裝 Alcohol 等工具，&#xA;但是在 Linux 上只要一個 dd 就搞定了，而這還是原來就有的指令！&#xA;至於虛擬光碟機？完全沒有必要，用 mount 就行！&#xA;系統的備份也不需要使用 Ghost，一樣用 dd 加另一個系統開機就可以，&#xA;嫌備份資料太大還可以用國家高速網路中心研發的 partclone 來做；&#xA;PDF 的檔案保全機制沒有什麼效果，根本不需要特別去破解等等。&lt;/p&gt;&#xA;&lt;p&gt;當然，使用 Linux 也不是只有好處沒有壞處的，&#xA;比方說眾多的電腦遊戲沒有辦法在 Linux 上執行就是一大壞處，&#xA;而政府和銀行間充斥著不按 W3C 標準設計而非要 IE 才能使用的網頁，&#xA;更使許多消費者對作業系統沒有選擇的餘地。&#xA;因使用人口數量較少而使得新硬體的驅動支援較不完善，&#xA;加上市面上電腦維修人員對 Linux 系統較為陌生的現象，&#xA;我想這些問題應該是 Linux 之所以無法打入沒有一定技術基礎的用戶群的最大原因。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;離別時刻&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/%E6%88%91%E7%9A%84%E9%82%81%E5%90%91%E6%AD%A3%E7%89%88%E4%B9%8B%E8%B7%AF/#%e9%9b%a2%e5%88%a5%e6%99%82%e5%88%bb&#34;&gt;離別時刻&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;從我對身邊朋友大聲嚷嚷說要開始玩 Linux 後又過了一年，&#xA;終於，這次我真的要對我的電腦動手翻新了！&#xA;雖然現在還沒能完全脫離盜版的陰霾，但這次至少可以終結許多對於盜版軟體的依賴。&#xA;經歷約一年的 Linux 學習與試用、經歷虛擬機器上無數次的系統安裝和各式軟體安裝、&#xA;檔案備份都已執行完成、並且挑選了幾天不太需要使用電腦的日子，&#xA;可謂萬事具備，即將要迎接大部分的合法軟體常駐在我電腦的時刻。&#xA;奇怪的是在事前準備接近尾聲時，心裡默默冒出一股離別的感傷，&#xA;我開始一一回憶這些伴隨我一起長大的同伴們：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;WinRAR&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;天啊！這麼多年來有多少檔案是透過你壓縮和解壓縮的？&#xA;從某位學長拿來一片大補帖開始，就愛上你各種好用的功能，&#xA;壓縮比高外還可以分割壓縮，是從前寄送電子郵件夾檔的一大救星。&#xA;可惜最後發現RAR是有專利的壓縮格式，後來便漸漸改用公開格式的 tarball。&#xA;想當初年少不懂事，&#xA;當別人打不開我的 RAR 檔案時我還會責怪人家為什麼不更新最新版的 WinRAR 呢！&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;CyberLink PowerDVD&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;從小到大、從 VCD 到 DVD，每一部在電腦上播放的影片都需要你，&#xA;伴者我們一家一同歡樂、一同哀傷的渡過一次又一次的美好時光。&#xA;說實在的，除了後來找到的 VLC 能夠和你相提並論外，&#xA;我在 Linux 上還沒找到像你這樣強大的 DVD 播放器。&#xA;其實我也很想支持國產軟體，而且價錢又低廉，只可惜不能買到 Linux 版本，&#xA;最後還是得用 VLC 啊！&#xA;若有一天你推出 Linux 版的話我一定要再把你買回來&#xA;(編註：2019 年的現在已經非常習慣功能強大的 VLC，&#xA;就算此時發行 Linux 版本，我也不會再想去買沒有開源的 PowerDVD 了)。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;自然輸入法 9&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;和你的緣份其實很短暫，&#xA;想當初因為受不了像智障一樣的微軟新注音而買了你，&#xA;我最欣賞的部份是你那真的很聰明的智能選字，真是無人能出其右啊！&#xA;可很不幸的因為我也是程式人，&#xA;在使用過程中慢慢嗅出除了智能選字外的其他地方有點亂做的味道，&#xA;是你的開發公司沒有好好照顧你嗎？&#xA;由於沒有 Linux 的版本，所以後來就漸漸改用新酷音輸入法了&#xA;(編註：2019 年的現在已改用更厲害的 GCIN 了)。&#xA;雖然新酷音比微軟新注音聰明，但智能選字卻與你有一大段距離啊！&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Microsoft Office 2000&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;我已經不記得準確的時間了，&#xA;十幾年前姊姊從他男朋友那裡拿來一整包盜版光碟開始，第一次見到你。&#xA;雖然後來我嫌棄你而轉向 LibreOffice 的懷抱&#xA;(編註：2019 年的現在改愛用純文字檔案，不分廠牌的 Office 類軟體都很少在碰了)，&#xA;但在這時刻卻發現對你的感情是所有同伴裡最深刻的！&#xA;多少年來你同我完成了無數的作業、報告，和我一起奮鬥那耗時三年的論文？&#xA;又有多少辛勞的夜晚只有你陪伴我一起渡過？&#xA;這就是緣份吧！&#xA;由於 Office 2003 臭蟲不少、以及 Office 2007 那令人摸不著頭腦的華麗界面，&#xA;於是實際上已經老邁的你仍堅持做我的戰友。&#xA;前後十餘年的光陰，感謝你在我成長過程中的所有提攜教導。&#xA;現在你終於可以好好的休息了，祝你一路好走，我的同伴、我的好戰友！&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;新系統新環境&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/%E6%88%91%E7%9A%84%E9%82%81%E5%90%91%E6%AD%A3%E7%89%88%E4%B9%8B%E8%B7%AF/#%e6%96%b0%e7%b3%bb%e7%b5%b1%e6%96%b0%e7%92%b0%e5%a2%83&#34;&gt;新系統、新環境&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;雖然事前已經在虛擬機器上安裝過無數次的 Ubuntu，&#xA;但畢竟這次是要真正改變自己原有的電腦系統，心中不免緊張。&#xA;安裝過程比想像中順利，&#xA;安裝完成後我電腦上的所有設備就都可以運作了，並不需要額外安裝驅動程式，&#xA;這點對於長久使用 Windows 的我倍感驚訝！&#xA;整個安裝過程在圖像式引導精靈下非常容易進行，幾乎是連笨蛋都知道該怎麼做。&#xA;從系統安裝到常用的應用程式安裝再到軟體更新完成，全部只需約一至兩個鐘頭即可完成，&#xA;至於 Windows 要做完同樣的事情一般來說需要花掉一整天！&#xA;這時我又納悶那些說 Linux 安裝很困難的人到底說的是哪一版的 Linux？&#xA;然後我很快想起來，通常會這樣說的人好像都沒有自己重新安裝過 Windows。&#xA;不過這也合理，因為在很多的情況下 Windows 是買來就有的，&#xA;就算要重新安裝也是請店家代勞。&lt;/p&gt;&#xA;&lt;p&gt;現在我絕大部分的日常需要在 Ubuntu 系統下就可以完成。&#xA;沒過幾個月，手上的全部電腦除了一臺桌電保留了一個 Windows 7 以應付特殊需求外，&#xA;其餘便被我全數改裝各種不同版本的 Ubuntu：&#xA;桌電反正資源夠就安裝 64 位元版的 Ubuntu、&#xA;一般筆電裝 32 位元版的就夠用了，而且比較省記憶體、&#xA;另一臺老舊筆電連 Windows XP 都跑得有些吃力，於是為他安裝上精簡的 LUbuntu 後又起死回生了。&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h2 id=&#34;未盡的旅程&#34;&gt;&#xA;  &lt;a class=&#34;Heading-link u-clickable&#34; href=&#34;http://www.huoschen.idv.tw/blog/digit/%E6%88%91%E7%9A%84%E9%82%81%E5%90%91%E6%AD%A3%E7%89%88%E4%B9%8B%E8%B7%AF/#%e6%9c%aa%e7%9b%a1%e7%9a%84%e6%97%85%e7%a8%8b&#34;&gt;未盡的旅程&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;經過好長一段時間的努力和適應，新軟體新環境已經順利的融入生活，&#xA;我也消滅了身邊絕大部分的盜版軟體。&#xA;但是這個旅程還沒結束，下一個目標便是對付 Windows 7 的工作。&#xA;由於許多的電腦遊戲等等目前還是需要 Windows 的系統，&#xA;加上 Windows 7 確實是 Windows XP 之後的另一個經典，值得購買&#xA;(編註：從 2019 年的現在回頭看，Windows 7 真的是有史以來最好的 Windows 了，&#xA;在它之前、以及在它之後，沒有比它更完美更經典的)，&#xA;只是目前還在為那一萬多塊錢的作業系統預算努力中&#xA;(編註：2019 年的現在各位已經不用再想去買 Windows 7 了，微軟封殺了所有的新品購買管道，&#xA;唯一的取得方式僅剩盜版、和二手軟體，&#xA;所以現在二手 Windows 7 價格高高在上，而且一旦釋出就會在很短的時間內被買走)。&lt;/p&gt;&#xA;&lt;p&gt;這就是我邁向正版軟體的未盡之旅，&#xA;希望這些經驗能給更多仍在迷途中的人指引一條道路，&#xA;祝所有徬徨的人最終都能重新找回自信和驕傲。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
