hotchpotch/wikipedia-multilingual-ir-pairs huggingface dataset:
市长
市長是近現代开始出现市这一行政单位后，其行政首长使用的职衔。亦用以翻译汉语之外，城市或市鎮最高行政首長職稱。
在許多政府系統裡，市長是当地的最高行政長官。市長這個名稱在全世界各個地方依據當地的法律有不同職責和權力，也因各個地方而有不同意義。市长的任命有两种常见情况，一是上级地方政府或中央政府任命，二是，通过地方议会选举产生。此外，在西方国家的政治传统中，市长做为地方行政首长、地方“第一公民”，有礼仪性质首长的职能。如市长担任地方议会主席，后者即是一种礼仪性职务:58—61。
在实际行政中，世界各地被称为市长的地方行政首长差别巨大。在人口众多、经济发达的大城市，如纽约、东京等，当地行政首长需领导庞大的行政机构和人员。在一些低级地方政府中，市长则一般为无给职或低给职，下属人员较少，本人则多为兼职人员:58。
市长 各地情況
英語：，出自拉丁文「」，「較大的」的意思。法语：，德语：，荷兰语：:58。
島嶼
島嶼或島（英語：）是指於海洋、江河或湖泊中被水体圍繞，面积小于大陆的陆地区域。世界上面积最大的岛屿是北美洲的格陵兰岛，面积更大的陸地則不再被視為島嶼，而叫做「大陸」。在狹小的地域集中2個或以上的島嶼，即成「島嶼群」，大規模的島嶼群稱作「群島」或「諸島」，列狀排列的群島即為「列島」。而如果一個國家的整個國土都坐落在一個或數個島之上，則此國家可以被稱為島嶼國家，簡稱“島國”。
島嶼 定義
国际海洋法《联合国海洋法公约》第121条规定，岛屿的定義是「四面环水并在高潮时高于水面的自然形成的陆地区域」，擁有與其他陆地领土相同的领海、毗连区、专属经济区和大陆架，但是「不能维持人类居住或其本身的经济生活的岩礁，不应有专属经济区或大陆架。」如果是低潮时四面环水并高于水面，但在高潮时没入水中的自然形成陆地則属于「低潮高地」。
另一方面，有些國家會用更廣泛的定義來命名「島」，涵義包括自然地理所謂之列島、群島、島嶼、島礁、岩礁、淺灘、暗礁和暗灘，並在有主權爭議的環礁構築人工島，在島上建設界碑、燈塔、港口、機場、氣象觀測站等設施，達到「維持人類居住或其本身的經濟生活」的條件，以維護其有效控制的正當性。
島嶼 分類
可以依照地質成因、位置、開發狀況來區別。
按地質成因：
島可以分为以下四种类型：大陆岛、火山岛、珊瑚岛和沖積島（也可算作大陆岛的一种）。其中大陆岛有两种分类方法：
火山岛也可进一步分为大陆型火山岛和海洋型火山岛。
按位置：
沿海各地对岛屿的称呼有所不同，有相当多的地区以“山”为名，尤以中國浙江沿海为多，长江以南（浙、闽、粤等地）对小岛又通常称为“嶼”。但實際上「島」、「嶼」從未有明確正式或確定的定義，例如台灣的綠島面積僅為蘭嶼的三分之一，但前者为「島」，后者为“屿”。而「排」、「石」或「岩」等則通常指更小的岛屿。有的島雖然細小，但是用「洲」來命名的，如香港的長洲，广东一带使用较多，同时内河（如长江）中因江河冲击而形成的沙洲型岛屿多有使用“洲”为名，如武汉市的天兴洲。
島嶼 世界主要岛屿一览表
注：统计不包括澳洲及比澳洲大的陆块。
資料來源：全球陆块排名（包括大陆和岛屿） （英文）
未上榜的其它世界重要岛屿包括：
幻方
幻方，有时又称魔术方阵（其简称“魔方”现一般指立方体的魔術方塊）或纵横图，由一组排放在正方形中的整数组成，其每行、每列以及每一条主对角线的和均相等。通常幻方由从到的连续整数组成，其中为正方形的行或列的数目。因此阶幻方有行列，并且所填充的数为从到。
幻方可以使用阶方阵来表示，方阵的每行、每列以及两条对角线的和都等于常数，如果填充数为，那么有
幻方 幻方简史
《繫辭》云：「河出圖，洛出書，聖人則之。」在宋朝之前，洛書的記述只有文字。
九宮圖實物最早發現於西漢，1977年中國考古學家在安徽阜陽縣雙古堆西漢古墓中發現漢文帝七年（前173年）的太乙九宮占盤，乃是中國漢代幻方的實物。東漢《數術記遺》也有記載。
後來陳摶以降認為河圖洛書的洛書代表九宫图，為这个数，而行、列以及两对角线上各自的数之和均为15。
幻方 杨辉纵横图
南宋数学家杨辉著《续古摘奇算法》把类似于九宫图的图形命名为纵横图，书中列举3、4、5、6、7、8、9、10阶幻方。其中所述三阶幻方构造法：“九子斜排，上下对易，左右相更，四维挺出，戴九履一，左三右七，二四为肩，六八为足”，比法国数学家Claude Gaspar Bachet提出的方法早三百余年。
幻方 构造法
根据构造方法的不同，幻方可以分成三类：奇数阶幻方、阶幻方和阶幻方，其中为自然数，阶幻方不存在。幻方构造法主要有：连续摆数法、阶梯法（楼梯法）、奇偶数分开的菱形法、对称法、对角线法、比例放大法、斯特雷奇法、LUX法、拉伊尔法（基方、根方合成法）、镶边法、相乘法、幻方模式等。
假設要建構n階幻方，n為奇數。
以下图阶幻方为例，填写在（第一行第三列）的位置上；应当填写在其右上方格即中，由于超出顶边界，所以从最底行进入，即；填写在的右上方格中；填写在的右上方格中，由于超出右边界，所以从最左列进入，即；填写在的右上方格中；应该填写的方格已经被所占据，因此填写在的正下方格中；按照上面的步骤直到所有数填入。
魔方阵不是唯一的，比如5阶魔方阵还可以是：
假設要建構n階幻方，n為奇數。
假設要建構n階幻方，n為奇數。
假設要建構n階幻方，n為奇數。
假設要建構n階幻方，n為4的倍數。
如4阶幻方的排列法：

按如上图排列好，再将非主副对角线上的各个数关于中心对调，即成下图：

八阶幻方构造如下

即：
幻方 构造法
在(4M+2)×(4M+2）個方格的適當格點上，先排出2M+1階的幻方。在前M+1行的格點，全部標上「L」；在第M+1行的中間格點標上「U」，其余格點標上「L」；在第M+2行的中间格點標上「L」，其余格點標上「U」；在餘下的M-1行的格點全部標上「X」。將格點上的數乘以4再減4，再按下面的規則加上1至4其中一個數，填入對應的格上：
例子：
此方法可用來建構任何階數的幻方，當要建構n階幻方時，使用兩個方陣，一個填入正整數1到n各n次，另一個則填入0、n、2n、3n、…、(n-1)*n各n次，儘管奇數階幻方與偶數階幻方的填入方式有所不同。
對於奇數階幻方：
第一個方陣：在第一橫列中央的方格填入1，並且往左下角不斷填入1，若超出方陣外，則向右平移n格，直到每一橫列都有一個方格填入1為止，再把所有填入1的方格右邊的格子填入2（若超出方陣外，則向左平移n格），再把所有填入2的方格右邊的格子填入3，一直到填入n為止。
幻方 构造法
第二個方陣：在第一直行中央的方格填入0，並且往右下角不斷填入1，若超出方陣外，則向上平移n格，直到每一直行都有一個方格填入0為止，再把所有填入0的方格右邊的格子填入n（若超出方陣外，則向上平移n格）。再把所有填入n的方格右邊的格子填入2n，一直到填入(n-1)*n為止。
再把兩個方陣中的數相加。
事實上，你可以將這兩個方陣中的每一個相同數字都替換為另一個數字，只要這兩個方陣中原本有出現的n個數字都仍然各出現n次即可，唯一的條件是第一個方陣中(n+1)/2這個數字，以及第二個方陣中(n-1)*n/2這個數字，不能被替換。
對於偶數階幻方：
第一個方陣：第一直行由上到下依次填入1到n，第二直行由下到上依次填入1到n，第三直行與第二直行相同，第四直行與第一直行相同，若超過四直行，則重複第一到第四直行的步驟。
第二個方陣：第一橫列由上到下依次填入0到n*(n-1)，第二橫列由下到上依次填入0到n*(n-1)，第三橫列與第二橫列相同，第四橫列與第一橫列相同，若超過四橫列，則重複第一到第四橫列的步驟。
幻方 构造法
此方法暫時只適用於4k階的幻方。
事實上，你可以將這兩個方陣中的每一個相同數字都替換為另一個數字，只要這兩個方陣中原本有出現的n個數字都仍然各出現n次即可，唯一的條件是第一個方陣中每個直行相對的兩個數字之和必須是n+1，以及第二個方陣中每個橫列相對的兩個數字之和必須是n*(n-1)。
如果是4k+2階的幻方，就必須在第二個方陣中，檢查每個直行相對的兩個數字之和為n*(n-1)的格子，對於這些格子，第一個方陣的對應格子。
當n為大於等於5的正整數時，此方法可由n-2階幻方外圍加上一圈來構造n階幻方。
以阶为例子，先排出阶的幻方，如上图，再将图中每一个数都加上，有下图：
在外围加上一圈格子，把和这些数安排在外圈格子内，但要使相对两数之和等于。对于这些数是：；。结果如下：
當n可以分解成兩個大於等於3的正整數a與b的乘積時，此方法可由a階幻方與b階幻方來構造n階幻方。
以下是本算法將n設置為11時得出的11階幻方的構造結果：
以下是本算法輸出的結果：
幻方 研究价值
知名华人数学家陈省身曾在数学演讲中说幻方只是一个奇迹，它在数学中没有引起更普遍深刻的影响，不属于“好的数学”。
对幻方的学习和研究一直局限于趣味数学本身，更接近数字游戏或文字游戏，缺乏与主流数学的联系(和璇玑图在中国诗歌中的地位有一些相似)。数学和物理中也有具有更多学术价值的特殊数字方阵，如推动了试验设计研究的拉丁方陣和已有应用的阿达玛矩阵，还有在量子力学中有重要价值的泡利矩阵及其推广版本盖尔曼矩阵。魔术方块则可以与群论建立联系(见魔方群)，可以作为抽象代数的入门教具，也是计算群论的研究案例之一，并非单纯的几何玩具。高性能的计算机诞生后，幻方、幻星、素数环(prime ring problem)等很多这类需要满足特殊规律的填数问题，只要所需的数字规模不大，都可以考虑通过深度优先搜索算法暴力求解和枚举。
Smalltalk
Smalltalk是一种动态类型、反射式的面向对象编程语言。Smalltalk由艾伦·凯、Dan Ingalls、Ted Kaehler、Adele Goldberg等于1970年代在施乐帕羅奧多研究中心开始开发。
Smalltalk对其它众多的程序设计语言的产生起到了极大的推动作用，特別是Objective-C、CLOS、Python和Ruby等。1990年代涌现的许多软件开发思想都得益于Smalltalk，例如设计模式、敏捷编程和代码重构等。
Smalltalk 概述
Smalltalk和许多程序设计语言不同，它不仅仅是一门语言。下面从几个不同的角度来解释Smalltalk。
Smalltalk 历史
最早的Smalltalk原型由艾伦·凯于1970年代初提出。类（来自Simula 67）、海龟绘图（来自LOGO）以及图形用户界面（来自Sketchpad等先驱系统）等概念的有机组合，构成了Smalltalk的最初的蓝图。
在1971年到1975年之间，艾伦·凯在Xerox PARC的小组，在Xerox Alto计算机上，设计并实现了第一个真正的Smalltalk语言系统，編譯器由Dan Ingalls負責主要實作。这个系统被称为Smalltalk-71與Smalltalk-72，具有以下几个技术创新：
开发环境的革新相当迅速。虽然当时的位图显示器十分昂贵，但是艾伦·凯却说服了PARC，让他使用这些位图显示器，这使得艾伦·凯和他的小组，能够实现不同大小和字体的文字，使用多窗口环境，以及一些对图像处理的高端支持。Smalltalk-72影响了演员模型的发展，它的语法和执行模型，与现代的Smalltalk变体有着显著的差异。
Smalltalk 历史
在1975到1976年间，艾伦·凯小组认识到应当对执行效率和规模进行优化。于是他们在许多重要方面重新设计了Smalltalk系统，被称为Smalltalk-76，它在语言上：
前述的所有Smalltalk系统，都是在特殊的硬件上实现的，直到1977年至1978年，Bruce Horn和Ted Kaehler把Smalltalk-76移植到Xerox NoteTaker上，它是由Intel 8086处理器和自定显示器所组成的硬件环境。虽然这种硬件环境只生产了10台，但是它证明了在通常的处理器上实现Smalltalk的可能性。
在1979至1980年，部分受NoteTaker项目的影响，Smalltalk小组的注意力转移到Smalltalk的销售可行性上。小组设计并实现了新一代的Smalltalk系统，这次修改的目标着重于在标准硬件上的移植性等方面，被称为Smalltalk-80，它包括：
Smalltalk 历史
Smalltalk-80是在PARC之外能获得到的第一个语言变体，最初作为Smalltalk-80版本1，给与了少数公司（惠普、苹果公司、泰克和DEC）和大学（UC Berkeley），用于同行评审和在它们自己的平台上实现。后来在1983年普遍可获得的实现，叫做Smalltalk-80版本2，发行为虚拟机规定和映像（具有对象定义的独立于平台的文件）。
1988年Xerox PARC为了将Smalltalk推向市场而成立了分拆公司ParcPlace Systems。ANSI Smalltalk自从1998年来是标准的语言参考。
两个当前流行的Smalltalk实现变体，是这些最初Smalltalk-80映像的后代。Squeak是开源实现，它经由Apple Smalltalk，派生自Smalltalk-80版本1.03。VisualWorks经由Smalltalk-80 2.5和ObjectWorks（二者都是ParcPlace Systems的产品），派生自Smalltalk-80版本2。
Smalltalk 面向对象编程
如同其他面向对象语言，Smalltalk-80（而非Smalltalk-72）的中心概念是“对象” 。一个对象总是一个“类”的一个“实例”。类是描述它们的实例的属性和行为的“蓝图”。例如，一个GUI窗口类，可以声明窗口拥有的属性，比如标签、位置和窗口是否可见。这个类还可以声明其实例支持的操作，比如打开、关闭、移动和隐藏。每个特定窗口对象，对这些属性都有自己的值，它们每个都能进行它的类定义的操作。
Smalltalk对象确切的可以做三件事：
一个对象持有的状态总是私有于这个对象。其他对象只能通过发动请求（消息）至这个对象，来让它做出查询或变更这个状态。任何消息可以发送给任何对象：当接收到一个消息的时候，接收者确定这个消息是否合适。Alan Kay评论说，尽管关注于对象，消息才是Smalltalk中最重要的概念：“最大的想法是消息传递，它是Smalltalk/Squeak核心的全部意义所在（它是我们在Xerox PARC阶段从未真正完成的某种东西）。”
Smalltalk 面向对象编程
不同于多数其他语言，Smalltalk对象可以在系统运行的同时进行修改。现场编码和飞速应用补丁，是Smalltalk的主导编程方法论，并且是它高效的主要原因。
Smalltalk是“纯”面向对象编程语言，这意味着，不像C++和Java，在作为对象的值和作为原始类型的值之间没有区别。在Smalltalk中，原始值比如整数、布尔值和字符，也是对象，这么说的意义在于它们也是相应类的实例，而且要发送消息来调用在它们上的运算。编程者可以通过子类，改变或扩展实现原始值的类，使得可以向它们的实例定义新行为，例如实现一个新的控制结构，甚至使得它们现有行为得以改变。这个事实被总结成常听到的一句短语：“在Smalltalk中，所有东西都是对象”，它可以更精确的表达为：“所有的值都是对象”，因为变量不是。
因为所有的值都是对象，类也是对象。每个类都是这个类的元类的一个实例。元类都是Metaclass（元类类）的实例，它也是对象，并且是Metaclass class（元类元类）的实例。代码块是Smalltalk表达匿名函数的方式，它也是对象。
Smalltalk Hello, World!例子
Hello, World!程序，实质上被所有计算机语言的课本用作要学习的第一个程序，它展示了这个语言的最基本语法和环境。对于Smalltalk，这个程序可极其简单的书写。下列代码中，消息show:被发送给对象Transcript，具有字符串文字'Hello, World!'作为它的实际参数。调用show:方法，导致它的实际参数，即字符串文字'Hello, World!'，显示在叫做“副本”（Transcript）的终端窗口：
注意需要打开Transcript窗口，来看到这个例子的结果。
Smalltalk 语法
Smalltalk-80语法是相当极简主义的，只基于了一小把的声明和保留字。事实上，Smalltalk中只保留了六个“关键字”：true、false、nil、self、super和thisContext。它们的准确术语是“伪变量”，是服从变量标识符规则的标识符，但指示了编程者所不能变更的绑定。true、false和nil伪变量是单例实例。self和super，在响应一个消息而激活的方法中，指称这个消息的接收者；但是发送给super的消息，在这个方法的定义类的超类中查找方法，而非这个接收者的类中，这允许子类中的方法调用在超类中的同名方法。thisContext指称当前的活动记录。
内建的语言构造只有消息发送、赋值、方法返回和某些对象的文字语法。从它最初作为给所有年龄儿童的语言开始，标准的Smalltalk语法以更像英语，而非主流编码语言的方式使用标点符号。语言余下部份，包括用于条件求值和迭代的控制结构，都由标准Smalltalk类库实现在内建构造之上。出于性能上的原因，实现可以识别并特殊处理某些这种消息，但这只是优化而并未硬性规定入语言语法。
Smalltalk 语法
谚语“Smalltalk语法适合一张明信片”，所提及的是Ralph Johnson的一个代码片段，展示了一个方法的所有基本标准语法元素：
下列例子诠释了最常用的对象，可以在Smalltalk-80方法中被写为文字值。
下列是数的某些可能例子：
最后两个项目分别是二进制和十六进制数。在r前的数是底数或基数。基数不必须是二的幂；例如36rSMALLTALK是一个有效的数值，等价于十进制的80738163270632。
字符书写时带有前导的美元符：
字符串是包围在单引号内的字符序列：
要在一个字符串中包括一个引号，使用另一个引号来转义：
双引号不需要转义，因为单引号界定字符串：
两个相等的字符串（字符串相等，如果它们包含完全相同的字符）可以是驻留在内存不同位置中的不同对象。
除了字符串，Smalltalk有一类叫做符号（Symbol）的字符序列对象。符号保证是唯一的，没有作为不同对象的两个相等的符号。因此，符号非常易于比较，并经常用于语言构造中，比如用作消息选择子。
符号被写为#跟随着字符串文字。比如：
Smalltalk 语法
如果一个序列不包含空白或标点字符，还可以写为：
例如定义了四个整数的一个数组：
很多实现支持下列字节数组（ByteArray）的文字语法，例如定义了四个整数的字节数组：
最后却重要的是块（匿名函数文字）:
很多Smalltalk方言为其他对象实现了额外的语法，但是上述的是所有方言都本质上支持的。
在各种Smalltalk中共同使用的有两种变量：实例变量和临时变量。其他变量和有关术语依赖于特定实现，例如VisualWorks有类共享变量和名字空间共享变量，而Squeak和很多其他实现，有类变量、池变量和全局变量。
在Smalltalk中临时变量声明是在方法（见后）内声明的变量。它们声明在方法的顶部，作为由竖杠包围的空格分隔的名字。例如：
声明一个临时变量名叫index，可以包含初始值nil。
多个变量可以在一组竖杠内声明：
声明了两个变量：index和vowels。所有变量都要初始化。字符串的索引变量，初始化为null字符或初始为0的ByteArray，此外的所有变量初始化为nil。
Smalltalk 语法
按命名约定，实例变量、临时变量、方法或块的参数，应当以小写字母开头，指示它们具有私有作用域，它们合称为局部变量。而全局变量、类变量、池字典、类名字，应当以大写字母开头，它们合称为共享变量。
变量通过:=语法来指定一个值。比如：
指定字符串'aeiou'至前面声明的vowels变量。这个字符串是个对象（在单引号之间的字符序列是文字字符串的语法），在编译时间由编译器创建。
在最初的Parc Place映像中，现在下划线（_）的字形，在那时是左向箭头（←）字形（就像1963年版本ASCII代码中那样）。Smalltalk最初接受左向箭头，作为唯一的赋值算符。一些现代代码仍然包含充当赋值的下划线，会让人想起这种最初的用法。多数现代的Smalltalk实现接受要么下划线，要么冒号等号语法。
消息是Smalltalk中最基础的语言构造。所有控制结构都实现为消息发送。Smalltalk缺省的采用动态分派和单一分派策略，这是相对于其他一些面向对象语言使用的多分派而言的。
下列例子是发送消息factorial至数值42：
Smalltalk 语法
在这种情况下，42叫做这个消息的“接收者”，而factorial是消息的选择子。接收者通过返回一个值来相应这个消息（这个情形中是42的阶乘）。同其他事物一样，消息的结果可以赋值给一个变量：
上面的factorial是“一元”消息，因为只涉及了一个对象，即接收者。
消息可以承载额外的对象作为实际参数，比如：
在这个表达式中，涉及了两个变量：2作为接收者而4作为消息的实际参数。消息结果，或用Smalltalk的说法，回答被认定为16。这种消息叫做“关键字”消息。消息可以有多个实际参数，使用如下语法:
它的回答是在接收者字符串中字符o的索引，从索引6开始查找。这个消息的选择子是indexOf:startingAt:，构成自两个部份或关键字。
这种关键字和实际参数的交织意图改进代码的可读性，因为实际参数由前导于它们的关键字来解释。例如，要建立一个矩形的表达式使用C++或Java类语法可以写为：
不清楚这些实际参数分别是什么。与之相反，在Smalltalk中，这个代码可以写为：
这个情况下接收者是Rectangle类，回答是这个类的具有指定宽度和高度的一个实例。
Smalltalk 语法
最后，多数特殊（非字母）字符可以被用作所谓的“二元消息”。这些允许了数学和逻辑算符以传统形式书写：
它发送消息+给接收者3，具有4作为实际参数传递（回答将是7）。类似的：
将消息>发送给3具有实际参数4（回答将是false）。
注意，Smalltalk-80语言自身，不包含着这些算符的含义。上述的结果，都只是这些消息的接收者（这里是数值实例），为了响应消息+和>而定义并返回的。这个机制的副作用是运算符重载，消息>可以被其他对象所理解，允许使用形如a > b的表达式来比较它们。
一元消息可以一个接一个的写成方法链式调用：
它发送factorial到3，接着发送factorial到前面的结果6，接着发送log到前面的结果720，产生最终的结果2.85733。
一个表达式可以包括多次消息发送。在这个情况下，表达式依据一个简单的优先级次序来分析。一元消息有最高的优先级，随后是二元消息，最后是关键字消息。例如：
被求值如下：
最后的消息发送的回答，是整个表达式的结果。
在需要的时候使用圆括号可以改变求值的次序。例如：
Smalltalk 语法
将改变表达式含义，首先计算3 factorial + 4产生10。接着10接收第二个factorial消息，产生3628800。3628800接着接收between:and:，回答false。
注意由于二元消息的含义，不是硬性规定入Smalltalk-80语法的，它们全部都被认为有相等的优先级，并简单的从左至右来求值。因此，使用二元消息的Smalltalk表达式的含义，可能不同于传统释义：
被求值为(3 + 4) * 5，产生35。要得到预期回答23，必须使用圆括号来显式的定义运算次序：
以点号分隔的表示式按顺序执行。注意在变量定义和随后的表达式之间没有点号。一个表达式序列的值，是最后的表达式的值。除了最后的表达式之外，所有的表达式的值都被忽略。注意点号是分隔符而并非终结符，因此最终的点号是可选的。
下列（假想）例子中，书写了一序列的表达式，每个都用点号分隔。这个例子首先建立类Window的一个新实例，存储它在一个变量中，接着向它发送两个消息：
如果像上述例子这样，将一序列消息都发送给相同的接收者，它们也可以写为方法级联调用，具有用分号分隔的单独消息：
Smalltalk 语法
这种将前面例子的重新为一个单一表达式，避免了对将新窗口存储在临时变量的需要。依据平常的优先级规则，首先向Window类发送一元消息new，接着向new回答的那个对象，发送label:和open。
可以使用yourself消息来返回一个级联消息的接收者。
块是头等对象。代码块即匿名函数，可以被表达一个文字值（它是一个对象，因为所有值都是对象）。这是通过方括号达成的：
这里的:params是代码可以接受的形式参数的列表。结果的块对象可以形成一个闭包：它可以在任何时间访问它外围的词法作用域内的变量。这意味着下列Smalltalk代码：
可以理解为：，或用λ演算表达为： : 。
块可以通过发送给它们value消息来执行。块有一个参数用value:，有2个参数使用value:value:，以此类推直到4个参数，对多于4个参数使用valueWithArguments:并将参数作为数组传递。例如下面的表达式：
可以被求值为：，或用λ演算表达为：。
Smalltalk 语法
块返回（常称为回答）其主体的最后一个表达式的值，除非有一个由显式的^指示的返回，这时返回这个返回表达式的值。在块内部的返回，充当了一种逃出（escape）机制。在一个嵌套的块表达中的返回表达式，将终止在字面上包围的方法。
块的文字表示是一种创新，它一方面允许特定代码有更重大的可读性；它允许涉及迭代的算法一更清晰和简洁的方式编码。典型的在某些语言中使用循环写成的代码，可以在Smalltalk中使用块简洁的书写，有时在单一一行之内。更加重要的，块允许使用消息和多态来表达控制结构，因为块推延了计算，而多态可以用来选择交替者（alternative）。所以在Smalltalk 80中，if…then…else被书写和实现为：
再举一例，向一个搜集发送消息select:：
注意这与函数式编程有关，这里的计算模式被抽象成了高阶函数。select:等价于在一个适当的函子上的高阶函数filter。
Smalltalk 控制结构
在Smalltalk中控制结构没有特殊的语法。它们转而实现为发送到对象上的消息。以条件执行为例，布尔类Boolean定义了ifTrue:、ifFalse:、ifTrue:ifFalse:和ifFalse:ifTrue:方法。比如向一个布尔对象，发送ifTrue:消息，并传递一个代码块作为实际参数，这个块被执行当且仅当布尔接收者为真。下面用一个例子来展示：
块也被用来实现，用户定义控制结构、枚举器、访问者、异常处理、可插拔的行为和很多其他模式。
下面例子，从一个字符串中过滤出其中所含有的元音字符：
在最后一行，向字符串对象aString发送一个select:消息，它具有一个代码块[:aCharacter | aCharacter isVowel]作为实际参数。这个代码块，表示一个测试，代码块文字将被用作一个谓词函数，它回答true，当且仅当这个字符串的一个元素aCharacter，应当被包括在满足这个测试的字符搜集之中。
Smalltalk 控制结构
字符串类String响应select:消息，要调用的select:方法，定义并实现在搜集类Collection中；它将给select:的实际参数选择块，传送给形式参数aBlock；然后将绑定了选择块的aBlock嵌入到迭代块的代码之中，再把这个迭代块作为向字符串自身发送的do:消息的实际参数，从而将这个字符串所包含的每个字符，都作为实际参数传送给这个迭代块，而各做一次求值。在求值迭代块的时候，通过value:消息，将迭代元素传送给aBlock所绑定的选择块，它回答一个布尔值；接着向它发送ifTrue:消息，如果这个布尔值是对象true，则将这个字符增加到要返回的字符串中。
字符串类String响应do:消息，要调用的do:方法，定义在可迭代类Iterable中，而实现在可序列化搜集类SequenceableCollection中，这个类是Iterable类的子类和String类的超类。
Smalltalk的异常处理机制，Exception类及其子类比如Error类，类似于CLOS的异常处理样式，使用块作为处理器：
异常处理器的ex实际参数，提供对挂起运算的状态的访问，比如它的栈帧、行号、接收者和实际参数等，并且通过发送ex proceed、ex reject、ex restart或ex return之一，还可用来控制计算怎样继续。
Smalltalk 类
类通过实例变量定义它的实例的结构，通过方法定义它的实例的行为。每个方法都有叫做选择子的一个名字，它在这个类之内是唯一性的。
下面是个平凡的类定义：
多数这种定义经常由编程环境来填充。这里的类定义是给Object类的一个消息，用来建立它叫做MessagePublisher的一个子类。
在Smalltalk中类是头等对象，它可以就像任何其他对象一样接收消息，并可以在执行时间动态的创建。Object类在收到这个subclass:instanceVariableNames:classVariableNames:poolDictionaries:category:消息之时，原则上首先在其元类Object class中查找对应方法，未果而上溯继承链在其超类Class类中找到对应方法实现。
Smalltalk 类
在Smalltalk中，实例变量是这个实例的私有变量，它可以在定义它们的类的任何实例方法中，还有在它的子类中定义的方法中，通过名字来访问。在需要于一个类的所有实例、这个类本身和它的子类之间，共享某个数据的时候，要使用类变量，它是由这个类和它的所有实例共享的私有变量。池变量是在可以没有继承关联的多个类之间共享的变量。池变量最初存储在池字典中，现在它们应当被定义为专门的类（SharedPool的子类）的类变量。
category指示有关的类的“群组”，在现代Smalltalk版本如Pharo中被替代为package，包系统是利用简单的命名约定，组织Squeak和Pharo源代码的简单而轻量级的方式。
在一个类所对应的元类中定义的实例变量叫做类实例变量，每个类都有自己私有的类实例变量，子类将继承这些类实例变量，但是子类会拥有这些变量的它们自己的私有复本，类和它们的子类不分享类实例变量。例如，可以定义一个类实例变量叫做count来跟踪一个给定的类有多少实例。
类不能直接访问它的实例的实例变量，而实例不能访问它们的类的类实例变量。如果需要的话必须定义变异子与访问子。
Smalltalk 类
当一个对象接收到一个消息的时候，调用匹配这个消息名字的一个方法。所有方法都是公开的和虚拟的（也就是动态查找的）。方法被分组入指示它们意图的协议（protocol）之中。
为一个类增加方法涉及到Behavior类，其中的compile:方法，编译一个方法源代码并返回一个CompiledMethod类的实例；addSelector:withMethod:方法，将给定的一个编译过的方法增加到方法字典中。在Behavior类的子类ClassDescription类中，compile:classified:方法，编译一个方法的源代码，并为这个方法指派上给定的归类（对于方法称为协议）。
对象负责在运行时间动态的确定，执行哪个方法来响应一个消息，尽管在很多语言中，这可能是（有时或总是）在编译时间静态确定的。下列代码定义一个方法publish，并且这个定义将在这个对象收到publish消息的时候发生。
下列名字为#quadMultiply:and:的方法，演示了接收多个实际参数并返回一个值：
Smalltalk 类
执行任何前导了^（脱字符或↑）的表达式，都导致这个方法于这一点退出，并返回这个表达式的值。终止而没有显式返回某个表达式的一个方法，将隐含的返回自身。
为一个类新建一个实例，要用到new方法，它定义在Behavior类中。下列例子代码：
建立并返回MessagePublisher类的一个新实例。它典型的会被赋值到一个变量：
但是也可以向一个临时的匿名对象发送一个消息：
类方法就是在一个类的元类中定义的方法。
比如搜集类Collection的类方法中，实例创建方法有with:、with:with:、一直到with:with:with:with:with:with:方法。在下面的例子中，将with:with:用于有序搜集类OrderedCollection，它是SequenceableCollection类的子类，故而能最终上溯至超类搜集类：
Smalltalk 反射
反射是一个计算机科学术语，适用于有能力检查它们自己的结构的软件程序，例如检查它们的分析树或输入和输出参数的数据类型。反射是动态、交互式语言比如Smalltalk和Lisp的一个特征。具有反射的交互式程序（要么解释的要么编译的）维护所有内存内对象的状态，包括代码对象自身，这是在解析/编译期间生成的，并且是在编程上可访问和修改的。
反射也是Smalltalk这种有元模型的语言的一个特征。元模型是描述这个语言的模型，开发者可以使用元模型来做事，比如游历、检查和修改一个对象的分析树，或找到特定种类的结构的所有实例（例如在元模型中Method类的所有实例）。
Smalltalk 反射
Smalltalk-80是完全的反射式系统，用Smalltalk-80语言实现。Smalltalk-80提供了结构性和计算性反射二者。Smalltalk是结构性反射式系统，其结构是由Smalltalk-80对象定义的。定义这个系统的类和方法也是对象，并且完全是它们所有助力定义的系统的一部份。Smalltalk编译器将文本源代码编译成方法对象，典型是的CompiledMethod的实例。通过把它们存储入一个类的方法字典，而增加到这个类。类层级的定义类的那部份，可以向系统增加新类。这个系统是通过运行建立或定义类和方法的Smalltalk-80代码来扩展的。Smalltalk-80系统是个现场（living）系统，承载着在运行时间扩展自身的能力。
因为类是对象，可以向它们提问比如：“你实现了哪些方法？”或“你定义了什么字段/槽/实例变量？”。所以通过能应用于系统中的任何对象的普通的代码，对象可以轻易的检查、复制、（去）序列化，诸如此类。
Smalltalk 反射
Smalltalk-80还提供计算性反射，有能力观察系统的计算状态。在派生自最初Smalltalk-80的语言中，一个方法的当前活动（activation），可以作为通过伪变量命名的一个对象来访问，这个伪变量是作为六个保留字之一的thisContext。通过发送消息至thisContext，一个方法活动可以提问比如：“谁给你发送了这个消息？”。这些设施使得有可能实现协程，或类似Prolog的回溯，而不需要修改虚拟机。异常系统也是使用这个设施实现的。这个设施更有趣的用法之一，是在Seaside web框架之中，它通过为每个编辑的页面存储续体，并在它们之间切换来导航一个web站点，缓解了编程者处理Web浏览器的返回按钮的复杂性。使用Seaside编程web服务器，可以使用更常规的编程风格来完成。
Smalltalk 反射
Smalltalk如何使用反射的一个例子，是处理错误的机制。当一个对象被发送了一个它没有实现的消息的时候，虚拟机发送给这个对象doesNotUnderstand:消息，具有这个消息的实化作为实际参数。这个消息（它是另一个对象，是Message的实例），包含这个消息的选择子和它的实际参数的一个Array。在交互式Smalltalk系统中，doesNotUnderstand:的缺省实现，是打开一个错误窗口（一个Notifier）向用户报告错误。通过它和反射设施，用户可以检查错误在其中发生的上下文，重新定义犯错的代码，并继续，这一切都在这个系统之中，使用Smalltalk-80的反射设施。
通过建立只理解（实现）doesNotUnderstand:的一个类，可以建立一个实例，经由它的doesNotUnderstand:方法能拦截发送给它的任何消息。这种实例可以叫做透明代理（proxy）。可以使用这种代理来实现很多设施，比如分布式Smalltalk，这里的消息在多个Smalltalk系统之间交换，和数据库接口，这里的对象透明的从数据库中排除错误，还有promise等。分布式Smalltalk的设计影响了如CORBA这样的系统。
Smalltalk 基于映像的持久存储
多数流行的编程系统，将静态的程序代码（以类定义、函数或过程的形式），分离于动态的或运行时间的程序状态（比如对象或其他形式的程序数据）。它们在程序启动的时候装载程序代码，而任何先前的程序状态必须从配置文件或其他数据源显式的重新建立。程序（和编程者）未显式保存的设置，在每次重启时都必须再次设立。传统的程序在每次程序保存一个文件、退出和重载的时候，还失去很多有用的文档信息。这会失去细节比如回退历史或光标位置。基于映像的系统不会因为计算机关闭或OS更新，而强制失去所有这些东西。
但是很多Smalltalk系统，不区分程序数据（对象）和代码（类）。事实上，类也是对象。因此，多数Smalltalk系统，存储整个程序状态（包括类和非类对象二者）在一个映像文件之中。这个映像可以接着由Smalltalk虚拟机装载，将类Smalltalk系统恢复成先前的状态。这是受到了FLEX的启发，它是Alan Kay创建的语言并描述于他的科学硕士毕业论文中。
Smalltalk 基于映像的持久存储
Smalltalk映像类似于（可重启的）核心转储，并可以提供与核心转储相同的功能，比如延迟或远程调试，具有对出错时刻的程序状态的完全访问。将应用代码建模为某种形式的数据的其他语言比如Lisp，也经常使用基于映像的持久存储。这种持久存储的方法，对于快速开发是强力的，因为所有开发信息（比如程序的解析树），都保存而利用于调试。但是它作为一个真实的持久存储机制，也有一个严重的缺点。首先，开发者可能经常想要隐藏实现细节，并使它们在运行时间不可获得。出于法律和维护的原因，允许任何人在运行时间修改程序，对于在运行时间环境不暴露源代码的编译后的系统，不可避免的介入复杂性和潜在的错误。其次，尽管持久存储机制易于使用，它缺乏多数多用户系统需要的真正持久存储能力。最明显的是进行同多个用户并行访问相同的数据库的事务。
Smalltalk 实现列表
OpenSmaltalk VM（OS VM）是Smalltalk运行时环境的著名实现，很多现代Smalltalk VM基于或派生自它。OS VM自身是从一组Smalltalk源代码文件（它们叫做VMMaker），转译成原生C语言源代码（通过使用叫做Slang的转译器），它依次再针对特定平台和硬件架构来编译，实际上确使Smalltalk映像的跨平台执行。源代码可以在GitHub上获得并在MIT许可证下发布。OS VM的知名派生者有：
Smalltalk 延伸阅读
Nierstrasz, Oscar; Ducasse, Stéphane; Pollet, Damien; Black, Andrew P. . Kehrsatz, Switzerland: Square Bracket Associates. 2009-10-07  [2022-03-12]. ISBN 978-3-9523341-0-2. （原始内容存档于2022-03-18）.
Nierstrasz, Oscar; Ducasse, Stéphane; Pollet, Damien; Black, Andrew P. . Kehrsatz, Switzerland: Square Bracket Publishing. February 23, 2010  [2022-03-12]. ISBN 978-3-9523341-4-0. （原始内容存档于2022-02-10）.
Smalltalk 延伸阅读
. Byte (McGraw-Hill). August 1981, 6 (8)  [2013-10-18]. 
Adele Goldberg. . Byte (McGraw-Hill). August 1981, 6 (8)  [2013-10-18]. 
Dan Ingalls. . Byte (McGraw-Hill). August 1981, 6 (8)  [2011-11-11]. 
Larry Tesler. . Byte (McGraw-Hill). August 1981, 6 (8)  [2016-05-02].
日本历史
根據研究，日本群島大約在38–39,000年前，就有人類定居。傳統上，則認為日本在公元前660年2月11日建國。約12,000年前，日本進入繩文時代。當時特徵有繩紋陶器、引入稻作等。之後在10,000年前（前10世紀），日本進入彌生時代。在1世紀中期，邪馬台國的卑彌呼女王掌政，日本開始有文字記錄出現。大約2世紀，日本進入古墳時代，並在4世紀的近畿地方，出現了首個統一全日本的大和王權。
其後，日本進入飛鳥時代及奈良時代。當時最明顯的變革為大化革新，其旨在效法中國隋朝及唐朝的制度與文化。大化革新引入漢字、確立以天皇為中心的中央集权體制、並建立了東亞的習俗與價值觀，對日本造成了深遠的影響。然而從8世紀開始，日本進入平安时代，扭轉了效法中國的風氣，改風行日本獨特文化。自平安時代後期，公家、武家（武士）、寺家（宗教）等三大勢力互相對抗，之後由武家勢力勝出；此後約7個世紀，以平氏政權為起始，日本進入由武家政權統治的封建時代。武士階級主導國政，武家構成的大名成為地方領主。天皇則淪為名義上的天下共主。武家政權按照幕府政權掌政的時間，主要分為鎌倉、室町、江戶3大時代。
日本历史
1185年（12世紀），鎌倉幕府掌政，象徵著鎌倉時代開始。當時日本擋下了蒙古帝國的侵攻。但之後在幕府的統治力量開始衰落，最後以元弘之亂與其後動亂為標誌，在14世紀的1333年結束了鎌倉時代。後醍醐天皇隨後試圖以建武新政恢復皇權，但終告失敗。1336年（14世紀），足利尊氏建立室町幕府，並開創以其為中心的室町时代。當時，室町幕府與後醍醐天皇勢力形成南北朝對抗，後來在1392年，以代表室町幕府政權的北朝獲鞏固而告終。之後在日本社會動盪不安與家族繼承紛爭的背景下，1467年（15世紀）爆發了應仁之亂，並引發了近一世紀多的戰國時代與安土桃山时代。1573年（16世紀），織田信長發動槙島城之戰，擊潰了足利義昭率領的幕府軍。室町幕府就此垮台。數年後，明智光秀策動本能寺之變暗殺織田信長，後遭豐臣秀吉擊敗。豐臣秀吉在1590年以小田原之戰為標誌，初步統一日本，並試圖征服朝鮮，但以失敗告終。豐臣秀吉也在1598年過世。1600年（17世紀），德川家康在關原之戰打敗其他大名、建立以江戶幕府為中心的江戶时代。
日本历史
1641年，江戶幕府第三代将军德川家光開始實行鎖國政策。鎖國延續了二百多年，直到1854年（19世紀）美國派遣海軍要求廢除後，才出現重大轉折。在之後西方列強步步緊逼的時局下，部分武士大名发动武装推翻幕府，同時幫助天皇從幕府手中收回政治實權。倒幕勢力其後發動了戊辰戰爭，擊倒了德川幕府。1868年，日本進入了以明治天皇為中心的明治時代，同時也建立了大日本帝國。19世紀中后期，大日本帝國啟動明治维新，進行了大規模政治與經濟改革。其施行天皇專權的君主立憲制，废除各地藩国，先後將千島群島及琉球纳入版图，師法西方實現工業化及現代化，並且開始大規模開墾北海道；經歷改革後的日本國力大幅增強，先在甲午戰爭擊敗清朝、後於日俄戰爭打倒俄罗斯帝国，並將臺灣、南樺太（库页岛南部）、朝鮮等地納為屬地。進入20世纪時，日本被認為是东方世界唯一能和西方列強爭霸的大國。日本在一戰後進入大正時代與昭和時代。在昭和時代初期，日本軍部控制了國家政治，政治法西斯化，並在1931年開始發動對中國的侵略戰爭。1940年，德意日三国结盟，成為二戰軸心國。1941年，日本发动太平洋战争，对英美等同盟國宣战，最終於1945年敗戰投降。
日本历史
戰後日本在盟軍主導下，轉型為以國會為中心的君主立憲制政體，天皇成為虛位君主。二戰後的日本全力發展經濟、實現經濟高速增長，成為亞洲最早的已開發國家之一。1980年代，日本經濟體量達到世界第二，並進入平成時代。但在1990年代，日本泡沫经济破灭、從此陷入長期低潮。21世紀的2019年，日本進入令和時代。
日本历史 史前時代・原史時代
關於日本列島上被確認過的人類歷史，大約可追溯到愛知縣出土10萬年前的古蒙古人種「牛川人」化石乃至3萬年前，及在琉球出土的1萬8千年前古蒙古人種「港川人」。約3萬4千年前，從華北地區傳來被稱呼為小刀型石器的石器，在列島全區被廣泛的使用，但在約2萬年前由西伯利亞過來新的稱呼為細石刀片的石器主要在東日本傳開。一段時間裡，東日本細石刀片文化與西日本的小刀型石器文化並存，不久細石刀片也在西日本傳開，約1萬5千年前左右，小刀型石器的蹤影急速消失。
約1萬2千年前，因末次冰期結束而開始急劇溫暖化，使得人們的文化與生活產生極大變化，除了琉球群島以外，全島進入了繩文時代。
約1萬2千年前開始被稱為繩文時代。分為草創期、早期、前期、中期、後期、晩期這6期。
這個時候的人們製作繩文式陶器、早期以後邁向定居，大部分住在半地穴式房屋（）。使用弓箭狩獵、貝塚漁撈、採集植物等經營生活，使用打製石器、磨製石器、骨角器等等。而此時人們也進行栽培，後期到晩期間种植稻。
日本历史 史前時代・原史時代
西元前10世紀左右至西元3世紀前後的期間被稱為彌生時代。時代劃分的名稱，是由這個時期被視為代表特徵性的彌生式陶器而來。1884年，在東京府本鄉區向岡彌生町（今东京都文京区弥生町），这种陶器首次被发现，故名。
在这一时期，以種植稻米為中心成立的農耕社會，從北部九州向東逐漸擴散至日本列島全域。弥生时代根据陶器的形式，可分为前、中、后三期。前期从九州扩展到近畿一带（东日本尚处于绳纹时代末期），中期波及到东北地方。扁平片刃石斧等磨制石器、青铜器和前期北九州的支石墓等类似于大陆文化。弥生文化从一开始就具有先进的农耕技术，通常认为它受到来自朝鲜、吴越与中原汉人的移民的影响。中期以后灌溉技术进步，农业生产渐趋稳定。后期，铁制农具普及，石器基本消失。铜铎、铜剑、铜矛、铜戈等青铜祭器发达，出现制铁和制盐等社会分工。通过交易和战争等，形成统一的政治性的地区集团。此时北海道尚不能种植水稻，仍处在绳纹文化阶段。
弥生时代中期，日本諸國中的奴國國王曾向汉朝朝貢，並為漢光武帝賜以金印。
日本历史 古代
顾名思义，古坟时代就是盛行修筑古坟的时代。前方后圆的大小古坟，以奈良县为中心，散布在北起福岛县、南至熊本县和大分县的广大地区。这一边界5世纪又扩展到宫城县和鹿儿岛县。古坟只埋葬氏族首长，由氏族成员共同修筑，并使用奴隶殉葬。
日本皇室的前身“大和王权”究竟是何时正式建立尚不明确，但史料记载在公元2世纪以前日本列岛上的国家就至少有两次向中央朝廷遣使。魏志中记载了2世纪末一场波及整个倭国的大乱和乱后3世纪初的霸权国家“邪马台国”（音近似于yamato“大和”），从史书中可见其政体有着十分强烈的神权色彩和严格的身份等级，但同时也具备着较为成熟的官僚机构。3世纪后半期出现最古老的大型前方后圆形古坟箸墓古坟被建立起来，其被葬者有可能就是史书中提及的女王卑弥呼。
4世紀，中国历史文献完全沒有关于日本的记录，日本史学家称呼这段时期為「空白的四世紀」，但并不意味着人们对这一时期一无所知；根据1877年被发掘的好太王碑铭文上记载，4世纪末大和王权与日本海另一侧的大国高句丽王国发生了战争，导致大和王权在朝鲜半岛的扩张受挫（韩国主流学者否认此事件的真实性）。
日本历史 古代
5世纪初，百舌鸟和古市古墳群（其中最著名的为大仙陵古墳）被营建，此时期被认为是王权的全盛期，可能对应记纪中的应神天皇和仁德天皇的统治时期。同時期南朝宋的史書中記錄了“倭五王”向南方朝廷复数次的遣使。5世纪中叶原始的所有制关系开始崩溃，大家族发展为生产单位和动产所有单位，原有部族内部发生利害矛盾。此期间从出土遗物被证实为纪记中雄略天皇的统治时期，据记载这一时期政权内外动荡不断，雄略之兄安康天皇被暗杀，外戚葛城氏因被指控暗杀嫌疑遭灭族，地方豪族吉备氏作乱企图与王权分庭抗礼，记载上的统治阶级内斗激化和现实中考古得出的结论相符。
6世纪前期，武烈天皇驾崩后日本国内又发生了一系列动荡，由地方王族男大迹王为首的势力统一畿内重新确立大王的地位。同一时期北九州藩侯筑紫君磐井亦勾结与大和王权敌对的新罗起兵叛乱，但最终兵败被杀。
日本历史 古代
在内战过程中，各地首长可能授予了氏族成员和下属修造小型古坟的权利，以此增强氏族的团结。原来只是首长墓的古坟，到5世纪后半叶便向小古坟群（群集坟）演变。这种倾向到6世纪进一步发展。日本全国各地修造的古坟超过十万个。古坟的主体部分也采用横穴式石室。石室内埋葬数代家族成员，并以武器为中心，陪葬有须惠器、土师器等死后生活的必需品。
但大量小古坟群的出现，古坟作为统治者的建筑物的性质逐渐减弱。佛教在这一时期通过百济传来，朝廷中两大势力之一的苏我氏支持佛教，另一势力物部氏支持传统的神道教，双方发生激烈冲突。587年，苏我马子发动衣折之战消灭物部守屋，取得苏我家族对朝政的垄断权。因此，从6世纪末到7世纪初，倭王权在畿内尽力建造寺院，同时限制修筑小古坟群，大王和强大的豪族则葬于源於中国皇帝陵墓而建的大型方坟。这样，古坟时代临近结束，而大化革新时期发命的《薄葬令》更进一步助长这种倾向，留下来的只不过是高松塚古坟等贵族阶层的古坟，坟丘小但很华丽。东日本的古坟时期结束的比西日本晚，直到七世纪前半叶仍修造前方后圆坟。
飛鸟时代得名于奈良县的飛鸟地区（现在的明日香村，当时的都城飛鳥京、藤原京）。
日本历史 古代
西元603与604年，圣德太子分别制定十二阶冠位和十七条宪法，奠定漢式的官僚制度的基础，並受儒學影響，首先使用天皇名號；同时还派遣使节和留学生到隋朝学习。为了维持自己的专权，苏我氏极力反对改革，苏我入鹿还杀害了圣德太子的儿子山背大兄王，并与其父苏我虾夷独揽大权。但就在645年，皇子葛城联合神祇官中臣镰足发动乙巳政变，诛灭苏我氏；并颁布大化改新诏，推行革新。
西元660年，唐朝灭百济，为了复兴自己的同盟国百济，日本发兵4万大军于朝鲜半島，却在白村江被1万唐军打的溃败，史稱白江口之役。668年，天智天皇即位，模仿唐朝建立户籍管理制度，并于670年制定最早的全国性户籍。672年，天智天皇驾崩，儿子大友皇子即位弘文天皇。天智天皇的弟弟大海人皇子与其争位，爆发战争，史称壬申之乱。大海人皇子在岐阜县击败弘文天皇並即位，是為天武天皇。天武天皇时期，日本出现历史上最早的钱币富本钱。701年（大宝元年），颁布大宝律令。710年，元明天皇迁都平城京，飛鸟时代结束。
日本历史 古代
以平城京（今奈良）为都的时代。自710年（和铜三年）定都平城京，至784年（延历三年）迁都长冈京，共计74年，是律令制社会的繁荣鼎盛时期，表现在政治经济制度、阶级关系、文化以及对外关系等方面。此时贵族内部政治斗争不断发生，例如长屋王之变、藤原四兄弟和橘诸兄與僧玄昉等争权。光仁天皇及桓武天皇时期，朝廷力图整顿混乱的政治形势，缩减财政开支，改革兵制，向东北地区扩展疆域，谋求整形和重新加强律令制。
以平安京（京都）为都城的历史时代，始于794年（延历十三年）桓武天皇迁都平安京，终于1185年镰仓幕府成立，历经約400年。平安時代可分为三个时期：前期（794-967年）为律令制松懈但继续运用时期。中期（968-1068年）为摄关政治确立与全盛时期。后期（1069-1190年）为院政時期，被史学界劃入中世。院政后期出現史上首個武家政權「平氏政權」，由伊勢平氏專政。平清盛長年擔任公卿、權傾朝野，更透過婚姻關係成為天皇的外戚，院政时期的藤原摄关家、法皇等各自与各种武家势力结合，促使伊勢平氏與清和源氏等武家势力急剧上升。
當時出現了國風文化。在國風文化的影響下，日本開創了獨有的服裝、建築、文字文化，並確立以公家（京都貴族）為中心的生活模式。莊園制度讓開墾耕地的人永久擁有耕地，他們結合成利益集團，更武力兼併莊園，漸成各地武家實力的來源。
日本历史 中世
平安时代晚期后三条天皇开启日本的院政期。现在的研究认为，作为历史分期的標誌的主要因素：如庄园制、权门体制等等，都在院政期确立。因此，中世从院政时代开始而不是镰仓时代开始已经成为共识。院政是中世王权的基本形式，退位的天皇即“治天”作为天皇家的家长执掌国政。尽管院政时代一般仅指镰仓时代以前的时期，但事实上，院政这一政治形式一直延续下去。
关于中世国家的统治模式，有“权门体制论”和“东国国家论”两个基本观点。“权门体制论”认为以庄园制为基础的“权门势家”（武家、公家、寺社势力）互相补充、分掌国政，统一在天皇王权之下。镰仓幕府是承担军事、警察职能的军事权门。也有的学者主张京都的天皇、公家朝廷与镰仓幕府是两个不同的政权及王权。在中央朝廷的秩序之外，权门势家均有各自的家政机构及法制体系，公家、武家、寺家各大权门势家各有自己的政所、武装力量，有着自己的庄园支配系统，并且在自己的支配范围内实施审判权。院政晚期，以平清盛为代表的武士势力登上中央政治舞台。
日本历史 中世
在宗教政策上，中世的典型特征是显密体制。以延历寺、园城寺、东寺、兴福寺为中心的显密寺院承担镇护国家的职能，开展各样的密教法会、祈祷。而大寺社也有自己的家政机构、武装力量、庄园，作为“寺家”或者“寺社势力”与公家、武家互相补充，掌控国家。
源平合战（治承·寿永内乱）與奧州征战後，源赖朝建立以武家為主的权力机构。武家权力机构镰仓幕府作为执掌军事警察权和一部分裁判权的武家权门机构与公家政权共同支配国家。镰仓幕府与公家朝廷在长时间内保持着合作的友好关系。
日本历史 中世
源賴朝薨後，幕府的政權開始被北條政子與北條時政、北條義時掌握。1203年源賴家被廢並於翌年被弒，源實朝成為傀儡將軍直至1219年被弒。1221年後鳥羽上皇企圖倒幕發動承久之亂，終為北條義時、泰時父子鎮壓，導致多位前後任天皇被流放。北條氏借由世襲幕府執權一職架空幕府將軍的權力，在攝家将军九条赖经的时代，将军支配众多有力御家人以对抗北条氏，在京都则有将军的父亲九条道家执掌公家最高权力，延历寺等大寺社也被九条家控制，此时九条家的势力达到顶点。但在宝治合战后，九条家和三浦家失败。此後，幕府的政權被第五代執權北條時賴為首的得宗家所世襲領導，史称得宗专制。而幕府也很大程度上左右朝廷的政局、摄关的更替及皇位的废立等等。
镰仓时代的朝廷仍然维持了院政时期以来的政务治理，并在镰仓幕府的影响之下积极实施诉讼审判制度改革。朝廷与幕府之间建立了以关东申次为核心的公武交涉制度。
在第八代幕府执权北條時宗执政時，元世祖忽必烈發動元日战争，試圖征服日本，但最後失敗。元日战争给日本社会带来了深重的影响。尤其十一、十二世纪以来的神国、佛国思想在自此进一步发展。
日本历史 中世
後期，镰仓幕府的統治日漸衰敗，無法維持。镰仓幕府对王位继承的介入引发了王权的混乱。特别是后醍醐天皇即位后，他不满足于作为过渡者的地位，决心讨伐其政治上最大的障碍镰仓幕府，發動元弘之亂。元弘年间，镰仓幕府被討伐大將、上野大族足利尊氏的倒戈乃至新田義貞揮軍領導的東勝寺合戰而滅亡。
在院政后期和镰仓时代，日宋日元贸易的繁荣推动文化的发展，为日本文化引入新的元素。入宋僧荣西、道元、俊芿、圆尔辨圆等在宋朝留下足迹，而兰溪道隆、无学祖元等的东渡也使得镰仓时代被称为“渡来僧的时代”。
後醍醐天皇消滅鎌倉幕府後，就進行第一次的王政復古，推行新政，史稱建武新政。后醍醐天皇的新政措施引发了一部分武士和公卿贵族的不满。其中，倒幕大將足利尊氏更為不滿，他雖然被賜給天皇名字中的尊字，但他想再度開創幕府，結果足利尊氏迫使大覺寺統的後醍醐天皇退位。足利尊氏与失势的持明院统及反對后醍醐天皇的公家势力结合，拥立新天皇，新天皇光明天皇策封他為征夷大將軍，建室町幕府，是為北朝。而後醍醐天皇退位後持著天皇象徵的三神器退往大和的吉野（今奈良縣），是為南朝，至此南北朝終於形成，史書還稱為“一天二帝南北京”。
日本历史 中世
南朝在支持他的武家势力的帮助下持续与北朝作战，并利用足利尊氏与足利直义的矛盾，一度在观应扰乱中得势，北朝的光严上皇光明天皇直仁亲王都被掳走。經過多次攻防後，南朝的勢力衰退，最終南朝的天皇把三神器交給北朝的天皇，結束南北朝時代。观应扰乱之后，公家朝廷的实力弱化，在室町幕府的帮助之下继续维持，室町政权的统治者则作为公家与武家政权的首班，成为“公武统一政权”的实际领导者。
足利氏原是上野豪族，而且更是鎌倉幕府將軍源賴朝同族，足利尊氏在京都的室町開設幕府，是為室町幕府。