ticoAg/ChineseCorpus-Kaggle-fanti huggingface dataset:
由於開發甚早，又無版權，倉頡輸入法的普及度在中文電腦系統中十分高，號稱「只要有中文系統，就必定有倉頡輸入法的存在」，所以人們學習倉頡後，理論上是不用擔心無法使用它的。此外倉頡的重-{}-碼-{}-率為所有中文輸入法中最低，這就讓使用者只需要看著稿子或鍵盤就能打字，不需要緊盯著螢光幕來選字，實現「盲打」。倉頡輸入法字根較許多形碼輸入法少和簡單，容易記憶。它不依靠四排按鍵——即使沒有把鍵盤上的數字鍵、符號鍵都用作中文字根鍵，輸入時手指活動幅度與英文打字相若也免除輸入符號、數字時的困擾，以及在手提電腦鍵盤上遇到的移位問題。它對漢字的拆分規則清晰嚴謹，只要熟悉拆碼規則，絕大多數漢字的拆碼都沒有爭議。倉頡輸入法支援的字庫極大，能輸入幾乎所有系統能呈現的漢字。
倉頡輸入法雖然具備以上優點，但也受到許多批評，例如為了顧及檢索而令編碼規則相對較繁複，沒有容錯編碼，取碼字形問題，版本差異問題，導致規則略顯繁瑣、取碼或遇問題，而被一些人視為畏途。另外倉頡輸入法並未為常用字之快速輸入設計簡快碼，沒有類似于五筆的詞組輸入方法，標點符號之輸入也略嫌不便，因此沒有成為最快速的中文輸入法。
不過，倉頡輸入法有一些衍生版本，改進了上述的批評點，例如加入容錯編碼、不同字形的取碼、簡快碼、詞組輸入，同時容許不同版本的取碼等。它們都標榜可以由傳統倉頡輸入法輕鬆跳至衍生版本。當中有一些版本更提升了輸入速度。例如大新倉頡輸入法，是目前中文電腦輸入最快速紀錄的優勝者。
倉頡還有一些特色，常被競爭對手或批評者視為缺點，但有研究輸入法的人士並不同意有關批評。包括：依字形來取碼，而非依書寫的筆畫和筆順取碼；同一筆畫可以剪開（例如「里」字的倉頡碼為「田土」）等。批評者認為它違反漢字邏輯，令漢字走上「歧途」，是缺點。反駁者則指漢字在分析構形字理、字典部首歸部時，都是按形狀分析，也會不依筆順甚至剪裁筆畫，因此這只是主觀上接受與否的問題。一些競爭對手如嘸蝦米的發明人或擁護者甚至以攻擊倉頡輸入法來作爲文宣，有輸入法硏究者對此不予認同。
目前倉頡輸入法通行的最新公開版本是第五代，而流傳最廣泛、最常使用版本是第三代。三代倉頡與五代倉頡相差不大。
朱邦復的多年助手沈紅蓮，另行設計蒼頡檢字法，坊間多稱之爲「第六代」倉頡，但實際使用上，一般都不把它視爲倉頡輸入法的新版本，相反更像另一款由倉頡衍生而來的新輸入法。它與三代倉頡或五代倉頡相差較大，字根明顯增多，拆碼規則也有不少改變。它應用於朱、沈二人開發的倉頡系統上，該系統字庫完整收錄了歷代文獻用字十萬以上，以蒼頡碼作為內碼，重碼率低於5%。雖然倉頡輸入法愛好者向朱邦復工作室索取到蒼頡檢字法編碼，但它尚未正式發佈。
;Microsoft Windows
在Ubuntu之下，以Gedit利用倉五輸入中文在Android裝置輸入中文
*在Microsoft Windows裏使用倉頡時並沒有任何特別介面，只會出現：
::-{維}-基百
:這樣的小框於文字旁邊。
*用戶亦可使用「＊」（Shift + 8）來代表不知道的碼（萬用字元）：
::-{維}-
:結果會與速成輸入法出來的結果一樣。
;macOS
*在macOS，Z鍵是「重」，每個「重」代表一個未知的碼︰
::-{維}-基百竹重重十
::-{維}-基百科
* 1977年，朱邦復在臺灣發表第一代倉頡，根據一萬二千字的《國語辭典》所設計。
* 1980年，發表第二代倉頡，僅將第一代倉頡略作調整。
* 1982年，發表第三代倉頡，是以《康熙字典》為範圍，選取其中四萬字，將第二代加以改良的結果。
* 1985年，在美國發表第四代倉頡。
* 1987年，返中國深圳科技園，任兩儀文化科技公司總經理，發表聚珍大字庫、第五代倉頡輸入法。第五代將正、簡體字統一處理，共收集了約六萬字，同時增加一些輔助字形及修正了少許的取碼。在 朱邦復工作室 網站上的《第五代倉頡輸入法手冊》一書中提供了第三代、第五代改碼字的對照表。
* 1990年，與臺灣資策會合作開發微軟中文視窗系統3.0，採用倉頡系統的概念。後來朱邦復與微軟的合作關係破裂，之後Windows系統改採其他的漢字編碼系統，並自行更新第三代倉頡輸入法（修改了一些異體字及加入了部分香港字，但有錯碼），成為目前所見的主流版本。目前一般所稱的「三代倉頡」多指此版。
* 2002年，朱邦復在其論壇提及：「倉頡輸入法最後一版本 —— 第六代已完成，並據之設計中文CPU」。因為朱邦復已不理輸入法之事，轉交沈紅蓮女士負責。第六代倉頡輸入法改名為「蒼頡檢字法」，原本並不公開，僅供與朱邦復工作室有工作關係之專家學者使用，直至2013年才釋出予倉頡輸入法愛好者。雖然通稱「六代」，但實際使用上，一般都不把它視爲倉頡輸入法的新版本，相反更像另一款由倉頡衍生而來的新輸入法。
:由「面」、「非」兩字即可辨別是第三代、第五代倉頡或者蒼頡檢字法：
::* 三代：「面」字取碼MWYL；「非」字取碼LMYYY
::* 五代：「面」字取碼MWSL；「非」字取碼LMSY
::* 蒼檢：「面」字取碼MWS；「非」字取碼LSY
倉頡輸入法所有字根在電腦鍵盤上的排列
* Microsoft Windows
:Windows 95/98/NT/ME/2000/XP等作業系統中內建的倉頡輸入法是第三代的修改版；Windows Vista/7/8內建的倉頡輸入法則兼容第三代和第五代（預設情況下，僅支援第三代；設定使用CNS11643中文標準交換碼字根後，可同時支援第三代和第五代）。Windows 10 內建的倉頡輸入法則僅支援三代，並不兼容五代。
:Mac OS X 10.4內附的為第五代。
:SCIM、gcin、 ibus-table-chinese  等提供第三和第五代， OXIM 、 rime-cangjie  等只提供第五代。
:電子辭典等平臺， 中文全字庫、 漢字構形資料庫 等漢字資料庫檢索系統，皆採用第三代。而朱邦復推廣的 漢文庫典，則採用第五代。
:此外網路上還有許多自製的倉頡輸入法，第三代和第五代皆有，例如 馬來西亞。倉頡之友 所製作的倉頡第五代通用版、國際版與香港版等，採用了五代倉頡。
這裏僅提供簡介，詳情可見。
只備倉頡字母的鍵盤，這種設計類似007電影《明日帝國》中出現的中文電腦鍵盤
臺、港、澳地區常見的鍵盤類型
倉頡字母即倉頡輸入法的主要字根（主根），分為四大類，共24個，另有2個特殊鍵。這些鍵與26個英文字母一一對應（以下括號內的中文字為字母之代表字）：
*-{難}-（X），用於特殊的「難字」，如：、等。注︰輸入並不會輸出「-{難}-」字。
*重（Z），原本用於重碼字，但從第三代開始不再使用。部份系統改用作輸入標點符號，如句號，或者被一些自製倉頡當作特殊鍵用，寫法不一，有寫作「重」、「片」、「-{符}-」、「-{標}-」等。
舉例說，「妲」字由倉頡字母「女、日、一」組成，輸入時就敲打「女(V)、日(A)、一(M)」三鍵。
這24個倉頡字母還可再變化、衍生出「輔助字形」（輔助字根、輔根），來組合所有的中文字。例如：「水」衍生出「氵」（三點水）；「手」衍生出「扌」（提手旁）；「中」衍生出「丨」（主榦是豎筆）；「弓」衍生出「亅」（重點爲鈎形）；「田」衍生出外圍的「囗」（音ㄨㄟˊ；框內有東西，與『口』不同）等等。詳情可見維基教科書上的說明。
這裏舉出一個運用輔助字形的例子：「泗」字由輔根「氵、囗、18px」組成，由於「氵」隸屬「水」，「囗」隸屬「田」，「18px」隸屬「金」，輸入時就敲打「水(E)、田(W)、金(C)」三鍵。
實際應用時，倉頡字母和輔助字形通常會混用，比如「-{煙}-」字由主根「火」、輔根「囗」（隸屬「田」）和主根「大」組成；「-{桐}-」字由主根「木」、輔根「冂」（隸屬「月」）和主根「一」、「口」組成；「-{銀}-」字由主根「金」、「日」和輔根「18px」（隸屬「女」）組成。
倉頡輸入法的取碼示例
憑視覺（非字義或筆順）把漢字分割為字首及字身，字首為最左、最上、最外部份，剩余部份為字身。若字身可以再分，則分為次字首和次字身。各部份再分拆為有限個字碼（中間部分省略），以不破壞字形特征和視覺容易辨識為準。
字首最多取二碼，字身最多取三碼；無法明確分割為字首、字身者（如“東”），則全取。一個漢字最少用一碼輸入，最長則為五碼。取碼以后再按下空白鍵（組字鍵），即可輸出字元（字形）。
鍵盤上的按鍵
整體字，無法分割
最多取 4 碼
字首：王 . 字身：里
最多取 2 . 3 碼
字首：艸 . 次字首：女 . 次字身：古
最多取 2 . 1 . 2 碼
字首：-{言}- . 次字首：五 . 次字身：口
最多取 2 . 2 . 1 碼
以上數字爲取碼類型。基本上，-{只}-要將字形一分爲二，最左、最上、最外的字首部份，取首、尾二碼；其餘的字身部份，依規則取三碼，則可拆解所有漢字。
倉頡輸入法是少數能同時輸出正、簡體的輸入法，但部分平臺（如微軟Windows）上的簡體倉頡拆字並不標準，部分違反了原本的拆碼規則，或者使用了非簡體字習慣字形，用戶需要稍作適應。一些外掛的倉頡輸入法會改用朱邦復工作室的標準倉頡編碼，不會出現下述的問題碼；或者採取加入容錯碼，令同一字可能有超過一種拆碼方法。
微軟依照字的傳統寫法來拆碼，首碼為「金」而非「廿」，全碼為「金一大」。標準倉頡依簡化字習慣寫法，取「廿大」。
言字旁作字首時，微軟取碼為「戈弓」，如「-{訂}-」的編碼是「戈弓一弓」。但標準倉頡取「戈女」，如「-{訂}-」字取「戈女一弓」。
不過，大部分字如、、、、、、、、等，均符合繁體倉頡的取碼原則，毋須重新適應。
+ 以下是字形輸入法的比較
大五碼常用字重碼-{}-率共5401個字
140個（含難字根）
基本字根約350個簡速字根約150個
超過300個
倉頡和速成也能輸入標點符號，方法是輸入，速成則取頭尾碼，或選擇全形後直接按鍵盤上相應的半形標點符號。另外同時按下  會彈出符號表。
:第一個只能為 A、B、C 其中一個，
:第二個只能為 A 至 Y 其中一個。
比較常用的為，以及。
*臺灣：根據2011年波仕特的調查報告指出，臺灣使用倉頡輸入法的比例為9.9%。其他則是注音輸入法70%、嘸蝦米輸入法10.7%。
*港澳：由於主權移交前，兩地並無全面推行普通話的教育，且普遍市民不懂注音或普通話拼音，而粵語拼音亦不流行，故以字形取碼的倉頡輸入法最多人使用。香港無全面統計數據。據輸入法硏究者李祥於2000年所述，香港使用者最多的輸入法是倉頡輸入法。該年年初，在中文大學舉辦的研討會上，現場近三百名教師有90%以上使用倉頡輸入法。而2001年「香港中學校際中文輸入大賽」中，1288人裏，有761人使用倉頡輸入法，其次爲速成輸入法，有317人選用。其他輸入法皆不足4%。澳門也普遍使用倉頡輸入法，是大多數中小學校的必修課程，公營機構澳門生產力暨科技轉移中心下轄的中文輸入技能評核中心設有初級中文打字認證，就是以倉頡輸入法及速成輸入法作為考試的工具。
有眾多輸入法皆源自倉頡輸入法，如下所示：
* 新倉頡輸入法：發佈時間大約在Windows 2000推出時，同時發佈還有新注音輸入法。它免除選字的麻煩，對於一個熟練的打字員，可以在完全不用看螢幕的情況下盲打，而讓系統自動分詞選字。不過由於不少人並不習慣新倉頡的盲打模式及沒有關連字的提供，他們都對新倉頡輸入法非常抗拒，甚至千方百計要找回舊有的倉頡輸入法來重新安裝。為此，微軟在後來的Windows版本裡仍保留舊有的倉頡輸入法。
* 第五代倉頡輸入法：發明人朱邦復支援 倉頡之友·馬來西亞 推出的輸入法，支援七萬多個漢字，組字字根全採第五代拆碼原則，並為第二個重碼字（依使用頻率排序）增加以「難（X）」為開頭的組字字根，如「知」、「佑」  為重碼字，「知」較「佑」常用，以「人大口（OKR）」組字時，「知」為第一個候選字（連續輸入時可以省略按1）、「佑」為第二個候選字；「佑」可用「 難人大口（XOKR）」組字後直接出字。此輸入法程式有Windows及Linux版本，為一免費軟體，其介面與Windows XP簡體中文版內建的輸入法程式較接近。此外，Linux系統多已內建三代及五代倉頡輸入法。
* 自由倉頡輸入法：由香港華通軟件開發，免費供中港臺地區人士使用。香港華通另設一「自由速成輸入法」，取倉頡碼的首尾兩碼，兼有以上的特點。特點如下：
# 免費公益軟件（支援Windows Vista/7）
# 使用全新的「TSF」輸入技術，全面支援32位元/64位元Windows平臺。
# 依據Windows第三代倉頡為基礎
# 支援及更正統一碼字根的編碼
# 含有詞組輸入，大幅提高輸入速度
* 輕鬆輸入法：輕鬆輸入法雖由倉頡衍生（字根多半沿用），卻大有不同。輕鬆輸入法的宗旨是易學、方便，將字根減至75個，取碼只取頭尾，有些類似速成。面對選字過多的問題，輕鬆輸入法採用超大詞庫、五碼定字、詞音定字等方式，不但減少選字選詞，也增加了輸入速度。採用GPL授權，人人可以免費取得，以及自由的使用，是第一個開放源碼的倉頡輸入法系統。
* 快速倉頡輸入法：簡稱快倉，是麥志洪自1987年起在倚天中文系統中開發出來的三碼倉頡（首碼、二碼和末碼）改良而成的倉頡輸入法。至今已經包含在各大輸入法程式平臺框架中（如：酷倉輸入平臺、小小輸入平臺、小狼毫中洲韻輸入平臺等等）。快倉每字最多取四碼，與速成相比選字較少因此更快，與倉頡相比則按鍵較少因此也更快。它的特點有：採用「一字多碼」的編碼策略、擁有容錯碼、改良標點符號編碼等等。採用GPLv3授權，人人可以免費取得，以及自由的使用，是第二個開放源碼的倉頡輸入法碼表。
輸入法表格：
* 中標倉頡：中華民國行政院主計處為「CNS全字庫」製作的輸入法表格（又稱為「對照表」或「參考檔」），目前 OpenDesktop 的「OXIM輸入法1.2.2」裡提供的「中標倉頡」即採用主計處在2006年2月22日修訂的參考檔。「中標」為「中文標準交換碼」的簡稱。此參考檔支援字數超過七萬字，採用第三代倉頡拆碼原則。中標倉頡的組字字根與微軟倉頡的組字字根較近似，另外亦提供中華民國教育部頒布之國字標準字體的組字字根（如「今」字的「人」下面應為「一」而非「、」，但微軟倉頡-{只}-能拆「-{人戈弓}-」，中標倉頡拆「-{人戈弓}-」或「-{人一弓}-」皆可）。
* 泰瑞倉頡輸入法：整合「倉頡之友·馬來西亞」的第五代倉頡輸入法組字字根及中標倉頡輸入法的組字字根（第三代），並確認中日韓統一表意文字及其擴展A、B區合計的70195個漢字都被編入對照表裡。另外引用了亂倉打鳥輸入法的符號組字字根，並做適度的修改，使得符號輸入方式更加便捷。目前已提供TXT檔（給 Windows「通用輸入法編輯工具」）及CIN檔（給「Yahoo! 奇摩輸入法」、「OpenVanilla輸入法」、Linux平臺輸入法）兩種格式的對照表，優點為具備高度之彈性，可配合個人喜好編修對照表，來產生適合自己使用的輸入法程式。
* 亂倉打鳥：融合了倉頡三代及大新倉頡的優點，支援常用詞及日文字母及各種符號的輸入，提供一個更快速、更簡單好用的輸入環境，同時適合入門新手以及已使用倉三、快倉、??倉等的老手們來使用。「亂   倉打鳥」名字的來源，是因為此輸入法包含倉頡三代、大新倉頡以及一些自創的規則。「這樣一個『亂』七八糟的『倉』頡要『打』個什麼『鳥』啊？」，這一句 說 話便是本輸入法命名的原則。這個輸入法最大的優點，是提供了將近七萬個詞供輸入，且依詞頻排序過，有助增加輸入的效率。
* 簡體倉頡輸入法：是由第五代倉頡輸入法規則和網上流傳的蒼頡檢字法字根整合修改而成。只支援簡化字輸入。創建于2013年7月。簡體倉頡輸入法有如下特點：
#選字範圍以國家語委早期發佈的現代漢語通用字表和2013年發佈的通用規範漢字表及其徵求意見稿為藍本。在此基礎上略有擴充。整理編碼字數超過8700字。實際可錄入字數超過17000字（含單字全拼輸入，拼音方案采用谷歌輸入法開源碼表）。
#取碼以簡化字宋體字型為標準。
#取碼基本沿用倉頡五代的取碼規則，在左右結構和上下結構的判斷上採用了更直觀的方式。
#字根以網上流傳的蒼頡檢字法為基礎，為便於簡化字錄入進行了一定改進。
#對取碼有爭議或有難度的字設立了容錯碼，容錯碼的設定以不增加常用字重碼為原則。
#一、二級漢字中的五碼字均可四碼輸入。
#在不增常用字重碼的情況下設定大量簡碼，多數常用字可在三碼內完成錄入。
#碼-{}-表內容以 CC-BY-NC-SA-3.0 協議授權。
以下是商業軟件：
* 大新倉頡輸入法：為商業軟體，特色是簡化整體拆碼規則、最大碼長簡為4碼、增加六段簡碼、多種容錯碼、重覆字最佳化編排等，並提供優質的影音、圖文教學。大新倉頡為TQC中打認證中創下最高記錄的打字者所使用的輸入法。
需要版權持有人重新發佈或開放源碼的輸入法：
只印上了倉頡字根的鍵盤，模仿007系列電影《明日帝國》中出現的中文電腦鍵盤
*  朱邦復工作室 ：發明人朱邦復的網站。
*  倉頡之友。馬來西亞 ：第五代倉頡輸入法下載、編碼表等。
*  倉頡之友。香港 ：第三代和第五代倉頡輸入法介紹、教學、練習程式等。
*  香港中文大學教育學院倉頡輸入法 ：快速學成倉頡輸入法的教學網站。
*  快倉2000 ：快倉2000中文輸入法。
*  【鯨魚】、【我的倉頡】輸入法：提供各種輸入法的重碼字表、學習倉頡的電子書，並比較各種中文輸入法的優缺點。
*  泰瑞的世界 ：研究輸入法的部落格。
*  《Follow Me倉頡字典》線上查詢版 ：6200個常用漢字的倉頡拆碼的動態演示，同步顯示漢字的倉頡字形結構、取碼原則、取碼方法。
*及  Online Cangjie Input Method網上倉頡輸入法 ：提供沒有安裝倉頡輸入法的電腦直接在Web上用倉頡輸入法打出文章，兼容第三代和第五代。
*  Cangjie倉頡輸入法 ：提供大量相關連結。
* 《 第五代倉頡輸入法手冊 》，朱邦復、沈紅蓮著，博碩文化出版，2006年10月初版，ISBN 957-527-952-2。（ 影印版 ， 線上版 ）
* Android 工具  倉頡拆碼
編程語言中的經典語句：Hello World。
編程語言，是用來定義計算機程序的形式語言。它是一種被標準化的交流技巧，用來向計算機發出指令，一種能夠讓程序員準確地定義計算機所需要使用數據的計算機語言，并精確地定義在不同情況下所應當采取的行動。
最早的編程語言是在電腦發明之前產生的，當時是用來控制及自動演奏鋼琴的動作。在電腦領域已發明了上千不同的編程語言，而且每年仍有新的編程語言誕生。很多編程語言需要用指令方式說明計算的程序，而有些編程語言則屬於，說明需要的結果，而不說明如何計算。
編程語言的描述一般可以分為及語義。語法是說明編程語言中，哪些符號或文字的組合方式是正確的，語義則是對於編程的解釋。有些語言是用規格文件定義，例如C語言的規格文件也是ISO標準中一部份，2011年後的版本為ISO/IEC 9899:2017，而其他語言（例如Ada或者Perl）有一份文件，視為。
編程語言原本設計是專用于計算機，也用來定義算法或者數據結構。故而程序員試圖使程序代碼容易閱讀。
BBC BASIC語言顯示在螢幕上
編程語言往往使程序員能夠比使用機器語言更準確地表達他們所想表達的目的。對那些從事計算機科學的人來說，懂得程序設計語言是十分重要的，因為在當今所有的計算都需要程序設計語言才能完成。
之所以有那么多種不同的編程語言存在的原因是，編寫程序的初衷其實也各不相同；新手與老手之間技術的差距非常小，而且有許多語言對新手來說太容易學；還有，不同程序之間的運行成本各不相同。
有許多用于特殊用途的語言，只在特殊情況下使用。例如，PHP專門用來顯示網頁；Perl適合文本處理；C語言被廣泛用于操作系統和編譯器的開發（所謂的系統編程）。
高級語言的出現使得計算機程序設計語言不再過度地依賴某種特定的機器或環境。這是因為高級語言在不同的平臺上會被編譯成不同的機器語言，而不是直接被機器執行。最早出現的編程語言FORTRAN的一個主要目標，就是實現平臺獨立。
雖然大多數的語言既可被編譯又可被解譯，但大多數僅在一種情況下能夠良好運行。在一些編程系統中，程序要經過幾個階段的編譯，一般而言，后階段的編譯往往更接近機器語言。這種常用的使用技巧最早在1960年代末用于BCPL，編譯程序先編譯一個叫做“0代碼”的轉換程序，然后再使用虛擬器轉換到可以運行于機器上的真實代碼。這種成功的技巧之后又用于Pascal和P-code，以及Smalltalk和二進制碼，在很多時候，中間過渡的代碼往往是解譯，而不是編譯的。
如果所使用的翻譯的機制是將所要翻譯的程序代碼作為一個整體翻譯，并之后運行內部格式，那么這個翻譯過程就被稱為編譯。因此，一個編譯器是一個將人可閱讀的程序文本（叫做源代碼）作為輸入的數據，然后輸出可執行文件。所輸出的可執行文件可以是機器語言，由計算機的中央處理器直接運行，或者是某種模擬器的二進制代碼。
如果程序代碼是在運行時才即時翻譯，那么這種翻譯機制就被稱作直譯。經直譯的程序運行速度往往比編譯的程序慢，但往往更具靈活性，因為它們能夠與執行環境互相作用。
每一種程序設計語言可以被看作是一套包含語法、詞匯和含義的正式規范。
這些規范通常包括：
程式語言不成文規定：
大多數被廣泛使用或經久不衰的程式語言，擁有負責標準化的組織，經常會晤來創造及發布該程式語言的正式定義，并討論擴展或貫徹現有的定義。
現代計算機內部的數據都只以二元方式儲存，即開-關模式。現實世界中代表信息的各種數據，例如名字、銀行賬號、度量以及同樣低端的二元數據，都經由程序設計語言整理，成為高階的概念。
一個程序中專門處理數據的那個系統被稱為程序語言的型態系統；對型態系統的研究和設計被稱為型態理論。語言可以被分為靜態型態系統，例如C++和Java，和動態型態系統，例如Lisp，JavaScript，Tcl和Prolog。前者可被進一步分為包含宣告型態的語言，即每一個變量和函數的型態都清楚地宣告，或type-inferred語言（例如MUMPS，ML）。
大多數語言還能夠在內置的型態基礎上組合出復雜的數據結構型態（使用數組，列表，堆棧，文件等等）。面向對象語言（，又譯作“物件導向語言”）允許程序員定義新的數據型態，即對象，以及運行于該對象的函數和方法。
除了何時以及如何確定表達式和型態的聯系，另外一個重要的問題就是語言到底定義了哪些型態，以及允許哪些型態作為表達式的值。諸如C編程語言之類的低端語言允許程序命名內存位置、內存區域以及編譯時的常量；ANSI C甚至允許表達式返回結構值。功能性的語言一般允許變量直接使用運行時計算出的值，而不是指出該值可能儲存的內存地址。
常見的數據結構：
一旦數據被確定，機器必須被告知如何對這些數據進行處理。較簡單的指令可以使用關鍵字或定義好的語法結構來完成。不同的程序語言利用序列系統來取得或組合這些語句。除此之外，一個程序語言中的其他指令也可以用來控制處理的過程（例如分支、循環等）。
參照的中心思想是必須有一種間接設計儲存空間的方法。最常見的方法是通過命名變量。根據不同的語言，進一步的引用可以包括指向其他儲存空間的指針。還有一種類似的方法就是命名一組指令。大多數程序設計語言使用宏調用、過程調用或函數調用。使用這些代替的名字能讓程序更靈活，并更具重用性。
編程語言可借助機械、電子、電腦完成人類需求的計算、功能與目的。
透過低階程式語言或高階程式語言，將實體間接達成傳輸連結或控制實體。
高階編程語言可發展多功能的應用程序軟件，例如操作系統、工程計算、文件處理、播放軟件、網頁設計、手機App等。
編程語言已超過上千種，大部份用在計算領域。程式語言和人類使用的自然語言在精確度和完整性上有很大的差異。
人們在用自然語言溝通時，內容可以不明確，甚至小的錯誤，而聽的人仍然可能理解說的人想要說的內容。但電腦不同，電腦「只做被告知要做的事」，無法理解程式設計者想要寫的程式。語言的定義、編程以及編程輸入的組合需完整定義程式執行時的外部特性。另一方面，演算法的概念可以表示為虛擬碼抑或者為編成碼，是交織有自然語言和程式碼的程式語言，和其他人溝通時使用，此時就不一定要那麼精確。
程式語言提供定義片段資料的結構化機制，以及在資料中需自動進行的運算或是轉換。程式設計者利用程式語言提供的抽象化來表示計算的相關概念，這些概念則是由許多最簡單元素（稱為）的集合所組成。程序設計就是指利用語言基元來撰寫新的程式，或是將舊程式改寫，配合新的應用或是新的環境。
電腦程式語言可能是以批處理任務的方式執行，中間不需和使用者互動，也有可能是由用戶在直譯器中指定執行特定的的程式。若某一程式語言的是目的是在某一應用軟體（如Unix shell）或其他命令列介面執行其他程式，此程式語言會稱為腳本語言。
很難去比較哪一種程式語言的使用量最大，而且「使用量」一詞也很難定義。某一種程式語言可能需要較多的時間進行開發，另一種程式語言可能產生的程式碼較長，第三種程式語言可能在CPU中執行的時間較長。有些語言在特定的領域十分受歡迎，例如COBOL在公司的資料中心仍相當常用，多半是在大型計算機上執行，Fortran常用在科學及工程應用，C語言常用在嵌入式設備應用及操作系統，Perl常用于系統管理和文本處理, JavaScript用于網頁等。
有許多不同的測量程式語言使用的程度的方法，不同的測量方式各有誤差：
* 計算徵才廣告中提到各程式語言的次數。
* 計算教授或描述各程式語言書籍賣出的數量。
* 佔計各程式語言目前仍在使用程式碼的長度，不過可能會低估一些公開搜尋不容易找到的程式語言。
* 利用搜尋引擎計算找到不同程式語言的次數。
根據TIOBE指數在2021年10月，十大最受歡迎的語言如下：Python、Java、C、C++、C#、Visual Basic .NET、JavaScript、PHP、SQL及R.。
1940年代當計算機剛剛問世的時候，程序員必須手動控制計算機。當時的計算機十分昂貴，唯一想到利用程序設計語言來解決問題的人是德國工程師康拉德·楚澤。
幾十年后，計算機的價格大幅度下跌，而計算機程序也越來越復雜。也就是說，開發時間已經遠比運行時間寶貴。
于是，新的集成、可視的開發環境越來越流行。它們減少了所付出的時間、金錢（以及腦細胞）。只要輕敲幾個鍵，一整段代碼就可以使用了。這也得益于可以重用的程序代碼庫。
* Hello World程序
* 計算機科學、基本的電腦科學主題列表
* 軟件工程、軟體工程主題列表
* Raphael Finkel: '' Advanced Programming Language Design'', Addison Wesley 1995.
* Daniel P. Friedman, Mitchell Wand, Christopher T. Haynes: ''Essentials of Programming Languages'', The MIT Press 2001.
* Maurizio Gabbrielli and Simone Martini: "Programming Languages: Principles and Paradigms", Springer, 2010.
* David Gelernter, Suresh Jagannathan: ''Programming Linguistics'', The MIT Press 1990.
* Ellis Horowitz (ed.): ''Programming Languages, a Grand Tour'' (3rd ed.), 1987.
* Ellis Horowitz: ''Fundamentals of Programming Languages'', 1989.
* Shriram Krishnamurthi: ''Programming Languages: Application and Interpretation'',  online publication.
* Bruce J. MacLennan: ''Principles of Programming Languages: Design, Evaluation, and Implementation'', Oxford University Press 1999.
* John C. Mitchell: ''Concepts in Programming Languages'', Cambridge University Press 2002.
* Benjamin C. Pierce: ''Types and Programming Languages'', The MIT Press 2002.
* Terrence W. Pratt and Marvin V. Zelkowitz: ''Programming Languages: Design and Implementation'' (4th ed.), Prentice Hall 2000.
* Peter H. Salus. ''Handbook of Programming Languages'' (4 vols.). Macmillan 1998.
* Ravi Sethi: ''Programming Languages: Concepts and Constructs'', 2nd ed., Addison-Wesley 1996.
* Michael L. Scott: ''Programming Language Pragmatics'', Morgan Kaufmann Publishers 2005.
* Robert W. Sebesta: ''Concepts of Programming Languages'', 9th ed., Addison Wesley 2009.
* Franklyn Turbak and David Gifford with Mark Sheldon: ''Design Concepts in Programming Languages'', The MIT Press 2009.
* Peter Van Roy and Seif Haridi. ''Concepts, Techniques, and Models of Computer Programming'', The MIT Press 2004.
* David A. Watt. ''Programming Language Concepts and Paradigms''. Prentice Hall 1990.
* David A. Watt and Muffy Thomas. ''Programming Language Syntax and Semantics''. Prentice Hall 1991.
* David A. Watt. ''Programming Language Processors''. Prentice Hall 1993.
* David A. Watt. ''Programming Language Design Concepts''. John Wiley & Sons 2004.
*  Syntax Patterns for Various Languages
八王之亂是發生於西晉末年元康元年（291年）至光熙元年（306年）間的政治內鬥，是一場由西晉皇族為爭奪中央政權而引發的內鬥，為中國歷史上一場極為嚴重的皇族內亂，共持續16年。西晉皇族中參與這場動亂的王不止八個，但八王為主要參與者，且《晉書》將八王彙為一列傳，故史稱“八王之亂”。
這場動亂從宮廷內權力斗爭開始，進而引發戰爭，禍及全社會，造成大量破壞，也加劇西晉的統治危機，成為西晉迅速滅亡的重要因素。八王之亂期間，北方主要少數民族匈奴、羯、鮮卑、羌及氐等五族的各個部族趁西晉政權內部空虛，紛紛起兵脫離晉朝控制，並陸續建立割據政權，入駐中原，最後導致建興四年（316年）西晉滅亡。之后晉室遺族避走中原、至江南地區建立王朝，設都建康，史稱東晉。
北方的中原地區則由漢族以及非漢族的各游牧民族部族政權割據，前后建立十六個國家，其中以鮮卑族建立的一系列政權影響力最廣。因為鮮卑屬于上古華夏族同時期的北方游牧民族東胡族后裔，所以這五個少數民族被南方王朝統稱作“五胡”，中國古代史進入五胡十六國時期。南北分裂的局面從東晉十六國一直持續到南北朝，直到589年隋滅陳之戰后，隋朝正式成為統一的王朝。
曹魏時代，皇室對宗室王公雖有授爵，但其實僅有虛名，沒有任何實權，行為也受嚴密管控。魏明帝死後，幼主曹芳即位，由宗室曹爽當政，其時宗室曹冏曾寫《六代論》指出若不授以宗室諸王實權以保衞皇室，政權可能轉入他姓之手，希望曹爽會進行改革，但曹爽沒有聽從。不久，司馬懿發動高平陵之變，族滅曹爽，奪取大權，自此將政權轉移到司馬一族手中，實力微弱的曹魏宗室無法抗衡，遂讓司馬氏成功篡位。因此，晉武帝在泰始元年（266年）晉朝初建時，就恢復周、漢二代的分封制，封二十七個同姓王，以郡建國。晉武帝制定的王國置軍制度，將封國分為大、次、小三等，不同級別可置不同數目的軍，但各王無地方行政權。分類情況如下：
上、中、下三軍五千人
上、下二軍三千人
晉武帝在分封同姓王的同時，又大封異姓士族為公、侯、伯、子、男等爵位，他們也有封地。公侯邑亦分三等，如下面列表。
除了有自己的封國軍隊，諸王也可能獲授地方都督職位，掌握地方軍事權力，遂能於地區建立自己的影響力。而晉滅吳後，晉武帝更下令裁撤州郡兵力，大郡只設武官百人，小郡則設五十人，令州郡防禦薄弱。諸藩王隨後更可以自選封國內的官員，及以三分食一方式取得封國的租稅收益。而原本諸王除了別授職位皆會留在京師洛陽，不會回到封國，但晉武帝後來因為聽從荀勖等人所言，終在咸寧年間將諸王王國皆增至萬戶大國，命諸王公回到封國。荀勖等人原意其實只是希望時任司空的齊王司馬攸離開中央政府，以免武帝一旦離世會因其高名望影響太子司馬衷之位，但在武帝去世以後，太子無力掌控國家，皇后賈南風趁機掌握朝政，並有宗室諸王參與，最終發展成諸王為了爭權而運用自己封國軍隊及地方影響力互相攻伐，觸發八王之亂。
以下為主要參與的八位宗王（按敗亡次序）：
291年在洛陽為楚王司馬瑋所殺
291年在洛陽為惠帝皇后賈南風所殺
301年在洛陽為齊王司馬冏為首諸王擊敗誅殺
惠帝再從兄（或弟）／原為惠帝堂兄（或弟）
司馬師嗣孫／司馬昭次子司馬攸之子
303年在洛陽為長沙王司馬乂擊敗誅殺
304年在洛陽為東海王司馬越襲捕，交河間王司馬颙部將張方處死
306年在鄴城為范陽王司馬虓部屬劉輿所殺
惠帝再從伯（或叔）
司馬懿三弟司馬孚之孫
306年在長安赴洛陽途中為東海王司馬越所殺
司馬懿四弟司馬馗之孫
311年在洛陽返回封地東海國途中病死
八王之亂相關人物世系關係如下圖所示，其中藍色字體為為八王，綠色字體為為皇帝及太子，紅色字體為參與亂事的其他王。
西晉皇親國戚世系圖，從左到右，每一縱列為一世代（不包括外戚），實線為父母與子女關系（注：楊文宗與楊駿是兄弟關系），虛線為配偶關系，藍色為八王，青色為皇帝及太子，紅色為參與八王之亂的其他王，紫色為-{后}-妃及外戚。
晉惠帝之父——武帝司馬炎
太熙元年（290年），晉武帝（司馬炎）重病之時下了詔書，存放在中書省，詔書中依托叔父汝南王司馬亮及皇后楊芷之父楊駿共同輔助太子司馬衷 (晉惠帝) 繼位。楊駿懼怕失勢，曾經從中書省借出詔書，看后不歸還。當時的中書監華廙恐懼，還親自向楊駿索取詔書，但楊駿始終不還。晉武帝病情加重時，楊駿要求晉武帝讓他單獨輔政，晉武帝點頭默許。楊駿招來華廙及中書令何劭，口宣帝旨作遺詔，讓楊駿單獨輔政。詔成后華廙、何劭二人拿給晉武帝看，晉武帝視而無言，兩日后就駕崩了。但其實惠帝愚鈍，根本無力掌控國家，朝政就旁落在楊駿、太后楊芷父女身上。
而原本會參與輔政的汝南王司馬亮在晉武帝去世後知楊駿要對付他，但他又不敢先發制人進攻楊駿，於是只好逃亡到許昌保住性命。不過，司馬衷的皇-{后}-賈南風是開國元老賈充之女，她相貌不好，又矮又黑，但卻兇狠多詐，也企圖操縱晉惠帝以把持朝政。楊駿輔政期間，在皇帝身邊安插自己親信，凡有詔令，晉惠帝過目后交予楊太-{后}-，才直接下發執行。楊駿亦知賈南風難以控制，為防賈南風礙其擅權，則任命其親信掌管禁軍，此舉引起宗室和朝野的不滿。楊駿的兩位弟弟楊珧、楊濟也對他的做法不以為然，屢次試圖勸止他，但楊駿不納。賈南風雖受楊駿壓制，遂暗中與東宮舊臣黃門董猛聯絡，合謀要廢掉楊太后，董猛則與不滿楊駿的殿中中郎孟觀及李肇交結。賈-{后}-接著命李肇聯絡司馬亮及惠帝弟楚王司馬瑋，讓他們出兵討伐楊駿，二人都欣然同意，上請入朝。楊駿一直防範司馬瑋，向來都想召他入京嚴加看守，不讓他作亂，此舉正合楊駿意思，於是應允。永熙二年（291年），司馬瑋到後，孟觀和李肇就上報惠帝，接著寫下詔書稱楊駿反叛，要廢黜楊駿。駐屯雲龍門的東安公司馬繇也率殿中四百人隨司馬瑋討伐楊駿。
楊駿時在府中，聽聞宮中有變，於是召集一眾屬官討論。主簿朱振就看穿肯定是宦官為賈-{后}-謀劃政變，建議在雲龍門縱火示威，並追緝禍首，開萬春門取東宮及外營兵力，奉太子之名入宮反攻，如此震懾宮中人們，讓其速速交出主謀者，從而解決危機。可是楊駿為人怯懦，猶豫之下最終還是不作。就在楊駿仍不知如何反應時，侍中傅祗就自請與尚書武茂到雲龍門察看形勢，又向眾人說：「宮中不宜空」，接著就作揖離去，眾人亦隨之而走。稍後，宮中出來討伐楊駿的軍隊就來到楊駿府中，並放火燒府，更命弩兵在閣上射箭入楊駿府中，令府中士兵無法組織反攻；楊駿就逃到馬廄中，被殺。楊氏及其黨眾亦被夷滅三族，賈后也燒毀楊府以圖毀掉武帝讓楊駿顧命的手詔，外戚楊氏勢力遂被剷除。皇太后楊芷在變亂時在布帛中寫上「救太傅者有賞」並射出宮外，希望能救到楊駿，但這反而被賈-{后}-用作指控太后與楊駿同反的証據，最終太后被廢並囚禁在金鏞城。次年（292年），楊芷餓死在金鏞城。
楊氏勢力被消滅後，汝南王司馬亮與元老大臣衛瓘分任太宰及太保，共同執掌朝政。同樣參與政變的楚王瑋則任衞將軍、領北軍中候，但他就因個性狠戾而為二人所忌，於是二人提議將諸王遣還封國，以圖除去楚王在宮禁的威脅，不過朝中人人都怕楚王，提議之時也只有汝南王亮及衞瓘二人敢表態支持，司馬瑋亦因此記恨二人。時司馬瑋親信公孫宏及岐盛行為不端，衞瓘討厭他們為人，更怕他們會是禍胎，於是想收捕岐盛。岐盛知道後與公孫宏商量，遂藉積弩將軍李肇假託楚王瑋的命令，向賈后中傷汝南王亮及衞瓘二人。因為衞瓘在武帝在位時就曾表示司馬衷並不聰明，危害其地位，故賈后向來都不喜歡他，現在亦阻礙她專擅朝權，於是就乘勢讓惠帝下詔指稱亮、瓘二人圖謀廢立，下令廢黜二人，並授命楚王瑋收捕。楚王瑋遂假傳詔命，敕令三十六軍控制宮禁，並分別派人收捕二人。司馬亮為公孫宏及李肇率兵所攻，但司馬亮拒絕以府兵迎擊而被擒，隨後被殺；衞瓘由清河王司馬遐奉命收捕，衞瓘也不反抗，與子孫皆為故吏榮晦所殺。
岐盛接著更勸楚王乘機殺害賈后堂兄侍中賈模及母舅右衛將軍郭彰，獨攬朝權，但楚王此時卻猶豫。另一方面，楚王掌握禁軍，發動政變的消息亦令朝廷混亂，張華卻認為禁軍們受楚王控制都是為國盡忠，只要朝廷下令解嚴，危機就會消除。最終賈后以朝廷名義出“騶虞幡”，宣稱楚王假傳詔命，禁軍見此都立即散去，而楚王突然失去軍力就失措不已，不久就被收捕下廷尉。楚王被指控假傳詔命擅殺兩名大臣，圖謀不軌，即被處決，公孫宏及岐盛皆被誅三族。自後，賈后盡掃其獨掌朝權的障礙，任命賈謐、郭彰等親黨，但重用張華，張華亦盡心匡輔，接著十年間，在張華、裴頠等人的努力下，雖然賈氏勢力有專擅之行，但朝野內外都大致平穩。
晉惠帝的太子司馬遹乃謝才人謝玖所生，而賈后卻一直沒有生下皇子。而賈謐在賈后專權後權勢極盛，但太子就不肯去討好他，而其時賈后又拒絕為太子娶賈后妹夫韓壽的女兒以及王衍長女，太子更因賈后為賈謐娶王衍長女而大感不滿，而賈謐亦不退讓，甚至因對太子不禮敬而曾被成都王司馬穎當面斥責。賈謐於是就向賈后中傷太子，而賈后沒聽從母親郭槐臨終時所說的話，立姨甥韓慰祖當作皇子，藉以其嫡子身分廢掉太子，同時亦宣揚太子的缺失。當時人都知道賈后有意廢太子，中護軍趙俊更勸太子先發制人廢掉賈后，但太子沒有聽從。最終在元康九年（299年），賈后召太子入宮並將其灌醉，逼其寫下言辭悖逆的書信，以此為由將其廢黜，囚在金鏞城，並殺害謝玖。次年再將太子押到許昌囚禁。
眾人對太子被廢都感不滿，尤其殿中將司馬雅及許超都得太子寵信，更想救太子，遂向趙王司馬倫的親信孫秀求援。趙王倫時以車騎將軍領右軍將軍，得孫秀通報後亦同意幫忙，並作出部署。不過，孫秀卻另有計劃，怕向來被視為賈后一黨的司馬倫即使幫太子也勢不得其信任，未必有利，遂改向賈后施反間計，聲稱禁軍宿衞中有人謀廢賈后、復立太子，以圖借賈后之手殺害太子，接著趙王再以殺太子為理由討伐賈后。流言傳出後賈后果然害怕，趙王及孫秀又力勸賈謐建議賈后殺太子，最終成功令賈后中計，派黃門孫慮到許昌殺死太子。
趙王倫接著準備廢掉賈后，與閻和約定在永康元年四月三日（300年5月7日）夜晚一更起事。當晚，趙王對三部司馬假傳詔命，聲稱惠帝因太子被殺要命令他廢掉賈后，於是眾人都跟他起事。接著趙王又以假詔命過宮門，陳兵道南，命齊王司馬冏率三部司馬的一百人進宮廢后，內應華林令駱休就帶惠帝到東堂。賈后被廢後先被囚在建始殿，接著又被移送到金鏞城，不久就被毒殺。另趙王又收捕賈午等人，又令尚書收賈謐、張華、裴頠等人，時內外官員都多被貶黜。趙王倫不久就自任使持節、大都督、督中外諸軍事、相國，侍中，並大封親信。
不過，趙王倫才能低下，事事都聽從孫秀，故此眾人有所求都會直接去找孫秀，而孫秀大權在握，於是專擅濫權，肆意而為，多殺忠良，和他有私怨的石崇、潘岳也被他誅殺，京中人士都大感不滿。而中護軍淮南王司馬允亦不滿趙王倫等，於是暗中蓄養死士，想要消滅他；而趙王及孫秀皆畏懼得禁軍軍心的淮南王，於是故意晉升其為太尉，實質就是奪其中領軍兵權。淮南王於是憤而起兵，率淮南國兵及帳下七百人進攻相國府，屢敗趙王軍，並逼得趙王躲在樹後狼狽避箭。不過，趙王之子侍中、汝陰王司馬虔就派司馬督護伏胤假稱有詔助淮南王，騙得淮南王開陣下車受詔，乘機殺害他，淮南王的討伐因而失敗。另外參與廢賈后的齊王冏不滿封賞不足，孫秀怕他作亂，於是將其調到許昌。
事後趙王集團將心腹都安置在宮禁要職，孫秀更偽造符命，假作皇帝禪讓詔書，讓趙王於永康二年（301年）正月篡位稱帝，並送惠帝到金鏞城軟禁。趙王登位後為收買人心，濫授官爵，乃至府庫根本沒有足夠儲備供其封賞，一些人雖獲封爵但沒有璽綬，成為僅是有詔命的空銜。而朝政更全由孫秀所主，不但趙王每事都會問他，連帶已發出的詔命都可被孫秀隨意改易甚至由其自行作詔。
孫秀在趙王篡位後進齊王司馬冏為鎮東大將軍，以圖安撫他。其時齊王與成都王司馬穎及河間王司馬顒皆擁強兵，孫秀很忌憚他們，於是將親信和趙王舊部安插到三人的僚屬中。不過，孫秀等人的行為引起很多人不滿，齊王就與王盛及處穆共謀討伐趙王。其時趙王心腹張烏去監視過他，回覆趙王稱齊王沒有謀反意圖，齊王亦為安定其心，就聯同軍司管襲殺害處穆，將其首級獻給趙王以示忠誠。不過，就在永康二年（301年）三月，齊王謀定，殺死管襲，與豫州刺史何勖及龍驤將軍董艾共同舉兵，並派人聯結成都王司馬穎、河間王司馬顒、常山王司馬乂及新野公司馬歆四位宗室。成都王見過使者後召見鄴令盧志討論，盧志勸他支持討伐，並建議他選用賢才以收時望，成都王於是改易僚屬，又派冀州刺史李毅、兗州刺史王彥等人為前鋒。成都王出兵後得各方響應，大軍到達朝歌時就有二十多萬人。另一方面，河間王在初時還是站在趙王一方，他殺死起兵響應齊王的夏侯奭，並將齊王使者押送給趙王，更響應趙王徵兵，命部將張方率軍支援趙王。不過，在張方行軍至華陰時，河間王見齊王及成都王軍力強大，於是立即改變立場，命李含率兵追上張方，改為響應二王舉兵。常山王及新野公亦支持行動。
趙王及孫秀得知三王起事後十分恐懼，但孫秀還是派孫輔、張泓及司馬雅等人兵分三路，經延壽關、堮阪關及成皋關出襲齊軍，孫會、士猗及許超出黃橋抵抗成都王。張泓一開始就屢敗齊軍，更在陽翟擊敗齊軍輜重隊，但都沒法擊潰齊軍，齊王接著在潁水對張泓軍發動進攻，但不能攻破，只是孫輔軍夜間自亂，並提供錯誤情報給趙王，影響趙王調度，打擊趙軍士氣。及後張泓渡過潁水直攻齊軍軍營，齊王出兵大敗孫輔等別軍，逼得張泓收兵。另外許超等人初戰亦敗成都王前鋒，成都王一度想退還朝歌，但在盧志等人勸說下堅持，並再度進攻，士猗等因輕敵而大敗，成都王遂乘勝南渡黃河，直取洛陽。
河北兵敗的消息更令孫秀無計可施，同時自三王舉兵以來孫秀都因怕百宮和宿衞將士將他和趙王殺了以結束事件，故一直留在中書省不出。正當孫秀和黨眾籌劃下一步行動時，四月辛酉日，左將軍王輿就起兵攻討孫秀，在中書省殺死孫秀等人、殺害趙王黨羽、以趙王名義下達騶虞幡命眾將士解兵、將趙王及其三名兒子押到金鏞城，並從金鏞城迎惠帝復位。不久，趙王被賜死，三子亦在廷尉刑訊致死，所有趙王任命的官員都被撤換；河間王軍在此時仍只到潼關，聞訊退兵；而齊王及成都王都率眾入洛陽。齊王自以首先起兵，於是行事專擅，成都王就聽盧志的建言，將功勞都推給齊王，並以母疾為由，在朝見惠帝及拜謁太廟後就離開洛陽，回到鄴城，贏得四方稱譽。而本因楚王瑋而被降封為常山王的司馬乂亦獲恢復長沙王爵位。
齊王及後以大司馬身份掌政，但他隨即大興土木，並沉迷酒色逸樂，不朝惠帝，亦不視朝政，用人唯親，大封親信，甚至加罪不經大司馬府而直接上奏的大臣以及殺害諫臣，種種事跡都令眾人失望，同時大家也就歸心於先前謙退的成都王。其時任翊軍將軍的李含因與齊王參軍皇甫商及右司馬趙驤不和，夏侯奭的哥哥也在齊王府中，故李含很不安，於是隻身西奔長安，向河間王聲稱受了密詔，獻計讓河間王檄命長沙王乂討伐齊王，待齊王消滅長沙王後再以此為由討伐齊王，並以有名望的成都王接掌政事，河間王遂得建立大功勳。河間王聽從，遂於永寧二年（302年）十二月上表稱齊王之罪，率軍東進，並命長沙王乂廢齊王。齊王接到上表後驚懼不已，召見百官討論，司徒王戎及東海王司馬越勸齊王讓位退避，但齊王親信葛旟卻堅持不退；其時齊王就派董艾進攻長沙王，而長沙王就即率兵入宮，以天子名義進攻齊王府，兩軍遂在城內激戰。大戰三日以後，齊王兵敗被擒，被長沙王下令斬首處死，梟首曝屍，其他黨羽都被誅殺三族，齊王三子皆被囚禁在金鏞城。
長沙王乂大出河間王及李含所料戰勝齊王，並以太尉、都督中外諸軍事留在洛陽中主政，遂令原本的計劃不能成事。河間王於是命李含為河南尹，讓其與侍中馮蓀及中書令卞粹等殺了長沙王。皇甫商知道李含的意圖，遂將李含的計劃告知長沙王，最終李含等人被長沙王所殺。另一方面，成都王穎雖然以大將軍、錄尚書事身份遙控朝政，長沙王每事亦都會詢問身在鄴城的他，但他還是不欲長沙王在內妨礙他，於是就與河間王聯手要除去長沙王。河間王即以李含等被殺為藉口出兵，司馬穎亦響應，二王聲明要誅殺皇甫商及外戚羊玄之，並廢掉長沙王權力。河間王派張方率七萬精兵攻向洛陽，成都王就親率大軍進攻，面對二王來伐，長沙王受命為大都督拒戰，兩軍自八月攻戰到十月，最終長沙王擊退來攻的張方，逼其守壘自保，但無法消滅張方軍。另成都王攻至洛陽，朝廷試圖憑藉成都及長沙二人兄弟的關係展開和談，試圖平息干戈，但成都王不允，於是戰事持續。長沙王屢敗成都王軍，殺俘共計六七萬人，洛陽雖然爆發饑荒但兵眾仍然堅毅抗敵，連張方也覺得不太可能成功，想要退兵。不過，司空東海王越卻怕長沙王撐不下去，於是在次年（304年）正月聯結殿中諸將把長沙王囚於金鏞城，眾士兵憤恨戰事功敗垂成，打算救出長沙王以繼續作戰，竟讓東海王下殺機，將長沙王送到張方那裏，以絕眾心。張方於是將長沙王殺死，二王於是取得勝利。
成都王戰後獲增封二十郡，升任丞相，但不久就返回根據地鄴城，由東海王守尚書令作為留守。不久河間王更表奏廢掉太子司馬覃，立成都王為皇太弟。可是，成都王將洛陽的乘輿服飾都遷到鄴城，殺害他忌憚的殿中禁軍，將宿衞都換成自己的人《晉書·惠帝紀》：「穎遣從事中郎成夔等以兵五萬屯十二城門，殿中宿所忌者，潁皆殺之，以三部兵代宿衛。」，表現更是驕奢，有無君之跡，又重用親信孟玖，加上上一年領兵出征荊州亂民張昌時所表現的「恃功驕奢、百度廢弛」，皆令朝野失望《晉書·成都王穎傳》：「後張昌擾亂荊土，穎拜表南征，所在響赴。既恃功驕奢，百度弛廢，甚於冏時。……穎既入京師，複旋鎮於鄴，增封二十郡，拜丞相。河間王顒表穎宜為儲副，遂廢太子覃，立穎為皇太弟，丞相如故，制度一依魏武故事，乘輿服御皆遷於鄴。表罷宿衛兵屬相府，更以王官宿衛。僭侈日甚，有無君之心，委任孟玖等，大失眾望。」。同時這些行為亦為司馬穎招來討伐的藉口。
永安元年（304年）七月，亦是成都王當上皇太弟五個月後，右衞將軍陳眕、長沙王舊將上官巳等人於洛陽起兵討伐成都王，復立清河王司馬覃為太子，並奉惠帝出征，司徒王戎、東海王司馬越、吳王司馬晏、高密王司馬略等人亦隨軍，眾達十萬多人。大軍奉天子來攻的消息震動鄴城，成都王亦感害怕，東安王司馬繇當時就勸成都王主動歸罪，但司馬王混、參軍崔曠就勸其抵抗，最終成都王選擇抵抗，命石超率五萬兵到蕩陰防備。另一方面，陳眕的兩個弟弟陳匡及陳規自鄴投奔大軍，稱鄴中已經自潰，故大軍都鬆懈起來，終於在蕩陰遭受石超軍攻擊時落得大敗，隨軍王公大臣都奔散，連惠帝也被俘虜至鄴城。成都王抵抗成功之餘還得到了天子，於是下令改元建武，殺死建議投降的東安王，並置百官，生殺大事也由自己決定，並在鄴南郊祀。
陳眕與上官巳等在戰敗後奉司馬覃為主守住洛陽，但其實司馬顒在大軍發出時時就派了張方支援成都王，張方來到洛陽後擊敗上官巳等人，控制洛陽，再廢司馬覃及羊皇后。
早在三王起兵討伐司馬倫之時，都督幽州諸軍事王浚就沒有響應，不過成都王一直沒時間去討伐。成都王在蕩陰之戰後伺機請幽州刺史石堪為自己左司馬，送了和演接任刺史，其實就想讓和演找機會殺了王浚，吞併其勢力。不過與和演一起策劃行刺行動的烏丸單于審登因天雨影響原定行動而以為這有逆天意，將事情告訴王浚，王浚遂與并州刺史東瀛公司馬騰及審登聯手消滅和演。王浚兼領幽州刺史，並大舉整軍，與段部鮮卑段務勿塵聯手進攻成都王，令主簿祁弘在平棘擊敗石超後乘勝攻進鄴城，縱容鮮卑兵大肆搶掠。而成都王在石超兵敗後就已帶著惠帝出逃，用了五日到了張方控制的洛陽。
而張方軍在洛陽胡作非為，時間久了士兵更有西返的意圖，張方此時率兵入宮擄掠並抓惠帝到自己營壘中，更差點要將洛陽宮殿焚毀，接著張方就率軍帶惠帝等人西赴河間王的根據地長安。同時河間王表廢成都王皇太弟之位，遣其歸國，改以豫章王司馬熾為皇太弟。
張方強脅惠帝西遷的行為令天下憤怨，東海王司馬越於是乘機於永興二年（305年）在徐州起兵討伐河間王，並得兗州刺史東平王司馬楙、都督青州諸軍事高密王司馬略、都督并州諸軍事東瀛公司馬騰、都督冀州諸軍事平昌公司馬模、都督豫州諸軍事范陽王司馬虓及幽州刺史王浚等人支持，更獲推為盟主，聲言要迎惠帝東歸洛陽，更得不少朝臣支持。河間王知東海王等起兵，一度打算退讓，接受其送帝還都，分陝而居的條件，但為張方所阻，於是下令免去東海王等人的官職，命其還國，亦派張方率兵十萬討伐。其時成都王舊將公師藩及汲桑在河北起兵，由於河北人民思念成都王，故此造成人心不穩，河間王亦聽從張方建議，恢復成都王的職位，讓他重駐鄴城，協助對抗東海王為首的力量。另一方面，豫州刺史劉喬本也起兵要迎惠帝東歸，但他卻因不接受東海王的調度，出兵對抗東海王所派的豫州刺史范陽王虓，又上書陳述穎川太守劉輿的親昵范陽王的罪行。河間王因而派兵支援劉喬，在許昌擊敗范陽王軍，逼使其逃到河北。原本也支持討伐的東平王司馬楙亦因為不滿范陽王派茍晞復任兗州刺史，調其至青州的行動而反叛討伐軍，並與劉喬交結。但不久，范陽王得王浚借兵而反擊，在廩丘擊敗東平王，東平王敗返封國。接著范陽王軍聯合東海王的大軍要西進關中，大軍到蕭縣時，劉喬怯而派兒子劉祐在蕭縣的靈壁作出防備，但被司馬越擊敗，劉喬軍於是潰散，南奔平氏。另一方面，成都王到洛陽後亦怯於東海王兵強，不敢繼續北進，於是折返關中。河間王得知劉喬兵敗後大懼，甫開始就想退讓求和的他此時就更想息兵，但就顧慮主戰的張方而猶豫不決。永興三年（306年），河間王聽信張方謀反的假消息而派郅輔殺死張方，並傳首討伐軍，但討伐軍接到張方首級後沒有退兵，反而以此招降關中其他軍隊，並繼續奪取關中諸郡。其年五月，河間王最後所派的馬瞻及郭傳於霸水戰敗後，討伐軍就攻入長安，迎惠帝東歸，河間王則出逃。
在東海王將祁弘護送之下，惠帝在六月返回洛陽，改元光熙。成都王在惠帝東歸時就經武關出新野，途中被鎮南將軍劉弘及南中郎將劉陶阻截，於是轉奔朝歌想到公師藩那裏，但遇是被頓丘太守馮嵩所捕，被囚在鄴城。同年十月，鎮守鄴城的范陽王去世，其長史劉輿擔心得當地人心的成都王會成為禍患，於是假傳詔命將其殺死。惠帝東歸後長安由鎮西將軍梁柳所守，但馬瞻隨後就擊殺梁柳，復取長安，並迎河間王回城。可是關中地區都起兵對抗河間王勢力，河間王僅能控制長安城。十一月，惠帝中毒去世，晉懷帝立，朝政仍由東海王主掌，並在次月藉召河間王入朝任司徒的機會在途中殺害河間王。東海王接著主導晉朝的朝政，直至永嘉五年（311年）去世為止。
八王之亂歷時達十六年，期間時有戰亂，後期朝廷已無法掌握全國，受戰亂影響地區亦愈來愈大，除了諸王互相攻伐的戰事外，期間還有氐人齊萬年的變亂，以及成漢和漢趙兩個政權針對西晉朝廷的一系列戰爭，南方亦有變民杜曾、王如及張昌的起事。這些戰事都對全國不少地區都造成嚴重破壞，饑荒、疫病頻生, 亦令到不少人被逼離開家鄉求活，成為流民。成漢的領導者李特、李流、李雄皆本住洛陽，就因逃避齊萬年叛亂而入蜀，但就因為益州刺史趙廞見八王之亂的局面而有自立之願，就任了他們為爪牙，及至後來趙廞以及下任刺史羅尚的處理失當而令李氏叛晉自立，建立十六國中的成漢割據政權。
早在東漢末年南匈奴諸部就因黃巾之亂內遷河內郡，曹操分匈奴為五部時，各部人亦都聚居在并州一帶，繼持至晉朝。匈奴族人劉淵在八王之亂中與成都王聯結，並藉此聯結匈奴諸部，壯大實力。成都王被王浚等擊敗後，劉淵就乘時而起，建立漢國，更是日後滅亡西晉的力量。魏晉年間，除匈奴外其他外族亦有內遷，而八王之亂期間及後續亦屢見外族參與中原戰事，如并州刺史劉琨曾多次與代王拓跋猗盧聯結對抗漢國的進攻；王浚與司馬騰亦曾與烏桓人及段部鮮卑聯手對抗成都王，這些促成五胡亂華及十六國時代。
晉初體制本將地方軍事及民政分開，分別由都督及刺史掌管，而在滅吳後撤去地方軍力，更讓各都督成為地方軍事力量。但到八王之亂後期，地方無法抵抗變亂，遂令制度失效，刺史再兼領一方軍政及民政，如兼領幽冀的王浚、領并州的劉琨及領青州的茍晞都是一方的軍鎮，在北方抵抗漢國的侵襲，茍晞甚至曾出檄文討伐東海王司馬越。永嘉之亂後洛陽朝廷傾覆，據有一方的王浚甚至有自立之願，但這些兵鎮後來都被漢國所滅。
東海王司馬越在八王之亂後掌握朝權，但期間不但無力控制日益壯大的匈奴漢國政權，更排除異己，殺害中書監繆播、散騎常侍王延等人，大失人心。後更在永嘉四年以討漢國為率領行臺出京，帶著大批軍隊及王公大臣離開首都洛陽，致令洛陽防禦薄弱，盜賊橫行。在其死後，他帶領的大軍以及大批王公大臣在苦縣寧平城被漢將石勒屠殺，不久洛陽亦在永嘉之亂中陷落。秦王司馬鄴雖在晉懷帝遇害後於長安即位延續國祚，但也在建興四年（316年）被俘，西晉正式滅亡。而早在蕩陰之敗後，東海王東走並在徐州收聚兵眾，及後更起兵討伐河間王，迎帝東歸。當時東海王就留了瑯邪王司馬睿以安東將軍都督揚州諸軍事，鎮守下邳。後來瑯邪王就移鎮建鄴，在江左發展，奠下東晉的基礎。晉愍帝死後，瑯邪王就即位為帝，即晉元帝。
*司馬光《資治通鑑》卷八十二至卷八十六
* 羅宏曾：《 荊棘銅駝：西晉“八王之亂”》.
* 周藝、高遠：〈 西晉“八王之亂”原因新釋 〉.
紐西蘭（，，奧特亞羅瓦），位于太平洋西南部的主權島國，是英聯邦王國紐西蘭王國的主體部分，首都為惠靈頓，最大的城市則為奧克蘭。紐西蘭主要由兩大島嶼組成，即北島（Te Ika-a-Māui）和南島（Te Waipounamu），兩島以庫克海峽分隔，首都惠靈頓即位于北島南端，首都轄境還包含了一些小島。
紐西蘭與澳大利亞隔塔斯曼海相望，距離澳洲東海岸約10公里，與南太平洋群島的新喀里多尼亞、湯加和斐濟相隔大約1,000公里，所以特殊的地理位置使得紐西蘭成為最后幾個為人類所聚居的地區之一。野生生物由於長時間的與世隔離，故發展出與眾不同且具有多樣性的生態環境。由於陸地構造隆升及火山噴發，紐西蘭地形多變，南阿爾卑斯山脈縱貫南島中西部。紐西蘭風景優美，氣候宜人，遍布著旅遊勝地。紐西蘭自然資源豐富，民眾生活品質高，是為數不多的位於南半球的發達國家。紐西蘭常年在聯合國開發計劃署公佈的人類發展指數報告中名列前茅，曾在2010年位列第三，最新排名為2019年的第14位。
紐西蘭乃世上最年輕的移民國家之一。波里尼西亞移民約在西元500年至1300年間抵達，成為紐西蘭的原住民毛利人。
毛利人可能是從臺灣移民到美拉尼西亞，然後向東前往社會群島的人的後裔；在暫停了70至265年後，新一輪的探索浪潮導致了紐西蘭的發現和定居|alt=One set of arrows point from Taiwan to Melanesia to Fiji/Samoa and then to the Marquesas Islands. The population then spread, some going south to New Zealand and others going north to Hawai'i. A second set start in southern Asia and end in Melanesia.
首批已知到此的歐洲人是奉荷蘭東印度公司之命而來的荷蘭人亞伯·塔斯曼（Abel Tasman，1603年－1659年10月10日）所帶領的船隊，在1642年抵達“南北島”西岸。當時他們誤認為該地屬於斯塔滕島，故命名為Staten Landt（斯塔滕地）。後來亨德里克·布勞沃爾於1643年證明斯塔滕島只是一個小島，同時荷蘭繪圖師將該地名稱改為Nieuw Zeeland，得名於荷蘭本土的西蘭省。
1769年，英國庫克船長（James Cook，1728年11月7日－1779年2月14日）先後五次到訪南太平洋仔細研究紐西蘭，並為紐西蘭繪製地圖。其最初的地圖，把斯圖爾特島當作一個半島，把班克斯半島當做一個島嶼。庫克的地圖致使歐洲捕鯨船擴增在此地海域的活動。