让我们试着想象没有门捷列夫(1869)周期系统的化学反应。 必须牢记多少个元素并以随机顺序...(然后-60。)
为此,只需立即考虑一种或多种编程语言。 同样的感受,同样的创意混乱。
现在,我们可以在一张周期表中体验十九世纪化学家的感受,他们可以从上面获得一点点知识,而可以得到所有知识。

《 Matryoshka C. 程序语言的“层系统”一目了然地代表了C语言的所有单元。 这使您可以组织它们,更正过时的信息,甚至阐明程序的概念。
今天,编程信息需要比150年前的化学元素更加系统化。
首先需要的是教学。 门捷列夫提出了一个问题-开始讲课的元素:O,H,N,He,Au ...开始建立他的系统。与此同时,对他来说更容易-他教了最好的化学-圣彼得堡大学的学生。 而且编程已经在学校教授,并将很快在幼儿园开始。
第二个需求是科学方法。 使用定期系统,发现了新元素,并纠正了有关旧元素的信息。 她帮助创建了原子模型(1911年)。 依此类推。
第三个需求是阐明程序的概念。
一只脚踩在20世纪50年代的现代编程。 那时程序很简单,机器和机器语言也很复杂,所以一切都围绕机器和语言展开。
现在正好相反:程序既复杂又主要,语言又简单又辅助。 这就是所谓的应用方法,每个人似乎都很熟悉。 但是,学生和开发人员继续说服一切都一样。
这使我们回到了私有的门捷列夫的第一次演讲。 对新生说些什么? 真相在哪里? 这就是问题。
《 Matryoshka C. 程序语言的层系统。” 而且,它不仅针对学生,而且针对受过训练的程序员,因为正是他们必须寻找真相并扭转世界观,即我们。
以下是这本书的摘要。
1.简介
1969年创建了C语言,它已成为基本的编程语言,并且已经存在了50年。 为什么会这样呢? 首先,因为C是一种
应用程序语言,它使程序具有
人性化的外观,而不是
机器外观。 这项成就是由C家族的语言解决的:C ++,JavaScript,PHP,Java,C#和其他语言。 其次,这是一种简短而优美的语言。
但是,C语言本身通常与机器汇编程序混合使用,从而使它的感知复杂化并扭曲了。 另一个极端是在语言的负担上强加某种“哲学”:过程,对象,功能,编译,解释,类型等等。 这增加了情感,但无助于更好地描述语言。
对于C语言来说,真相在中间-严格地在哲学和机器知觉之间。
C语言不是独立的,它服从普通的书面讲话,同时它控制汇编语言本身。 此位置描述了
程序的
语音模型 ,根据该
模型,程序分为三种从属类型:语音,代码,命令。 C语言负责第二种代码形式。
确定了语言在程序中的位置后,就可以在一页上安排有关该语言的信息,这由
程序语言的
Layer系统完成,该
语言代表Mendeleev系统的精神,代表C语言。
建立该系统时要考虑到从属
语言的应用语言的
通用性 。 一组Matryoshka C单元允许您通过创建许多Matryoshkas来描述和比较不同的语言:C ++,PHP,JavaScript,C#,MySQL,Python等。 用基本语言的单位描述不同的语言是正确和正确的。
2.第二章1.程序的语音模型。 清除C
第一章介绍了
程序的
语音模型 ,反映了所采用的方法。 据他介绍,该程序具有三种明显的顺序类型:
- 语音-解决问题的程序员的直接语音,
- 代码-用C(或任何其他形式)以数学形式对解决方案进行编码
- 和命令-即时机器命令。
语音模型解释了为什么C是一种简单易懂的语言。 C建立在我们熟悉的人类语音的图像和相似性中。
第一种程序是程序员的直接讲话。 言语符合人类的思想。 在语音的帮助下,新手程序员首先用俄语编写程序,然后逐步将操作翻译成代码语言。 正是在此模型上创建了C语言。
程序员通过语音表达的结论将转换为代码数字形式。 这种转换应称为
反射 ,因为语音和代码具有相同的性质(反射-出生-性别)。 如果我们比较程序的语音类型(左侧)和代码类型(右侧),这是非常明显的。

奇怪的是,反射非常简单-仅使用两种表达式。
但是,现代的C语言描述(自1978年起)没有足够的名称列表来描述该语言,特别是用于反射任务。 因此,我们被迫从事创造力并引入这些名称。
单词的选择必须准确,清晰。 这需要一种特殊的方法,总结如下-严格使用本地语言。 对于英语,它将是英语,但我们不是英语。 因此,我们将使用现有的语言,并尝试说俄语。
反射由两种表达方式执行:
- 计算 (HF)-反映对象属性的变化。 对象的属性用数字表示,然后对该属性的操作就是对数字的操作-操作。
- 提交 (Pch)-反映操作顺序的变化。 PC的原型是带有复杂句子的语音句子,因此,大多数类型的PC都以从属联合“ if”,“否则”,“ bye”,“ for”开头。 其他类型的PC对其进行了补充。
顺便说一句,您是否可以相信在C的描述中没有表达式计算的名称-它们简单地称为“表达式”吗? 此后,对于提交类型没有名称和关联,实际上在名称,定义和泛化方面也很匮乏,这将不再让人感到惊讶。 这是因为著名的K / R(“ C语言”,Kernigan / Ritchie,1978年)不是描述,而是语言使用的指南。
但是,我想对这种语言进行描述。 因此,它是由
Layer程序语言系统提供的 。
3.第2章。分层系统。 短C
任何描述都应该准确且简短。 在使用程序语言的情况下,很难进行正面描述。
这里我们有一个程序。 它由模块组成。 模块由子例程和集合组成。 子程序由单独的表达式组成:声明,计算,提交。 提交-多达十种。 下级连接子级别和子例程。 也有几个广告。 但是,声明不仅包括在子程序和子级别中,而且还包括在模块和集合中。 而且大多数表达都是由难以描述的单词组成的,因此通常只给它们两个清单-源词和派生词,您必须在学习和应用该语言时熟悉它们。 在此添加标点符号和一些表达式。
在此声明中,不容易理解谁站在谁身上。
语言描述的直接分层方法将过于复杂。 对回旋路径的搜索会根据语言的语音性质和命令方面对语言进行描述。 因此,层系统诞生了,它与门捷列夫的元素周期表部分重合,后者也是一个分层系统。 该系统发布后的42年(1869年)出现,该系统的周期性与电子层有关(1911年,玻尔-卢瑟福原子模型)。 同样,分层和定期系统也通过将所有单元的表格放置在一页上相关联。
语言单位的描述简洁明了-仅10种表达方式和8种其他单位,而且有意义且直观。 虽然初次见识并不寻常。
语言单元分为6个级别:
- 小队-表格行
- 部门-属的特殊群体(第一行的一部分)
- 种类-细胞(主分裂级)
- 亚种-物种划分(稀有水平)
- 视图-单元格底部或单独的单位公式
- 模式是单位本身(仅单词)
单词的示例由
字典描述-
字典是由相同的六个级别组成的单独子系统。
尽管仍然值得描述,但C语言的语音组件非常明显。 但是语言的命令部分只是与编译控制相关,在此期间,创建了第三种程序-命令。 在这里,我们谈到C的最激动人心的一面-美丽。
4.下一章。 美丽的寺
C语言是现代编程的基础。 怎么了 首先,凭借最一致的讲话。 其次,因为它很好地规避了数字机器处理的局限性。
Xi到底提供了什么? 图像和图层。
单词“ image”是英语单词“ type”的翻译,其源自希腊语“ prototype”-“ prototype”。 在俄语中,“类型”一词并未传达所表达概念的基石,而且,它与“视图”的官方含义相混淆。
最初,图像解决了纯机器的计算任务,然后成为对象语言诞生的跑道。
该层立即解决了几个问题-机器问题和应用问题。 因此,审阅将以单任务图像开始,然后进入多任务层。
历史编程的令人不快的特征之一是,大多数概念(包括基本概念)都没有定义。 “编程语言(河流的名称)具有整数和浮动类型的数字……”-并从头开始。 无需确定什么是“类型”(图像),因为作者本人并不完全理解这一点,因此会“为清楚起见”将其隐藏起来。 如果将它们固定在墙上,它们将给出模糊且无用的定义。 它有助于隐藏外来单词:对于俄罗斯作者-对于英语(类型),对于英语-对于法语(子例程),希腊语(多态性),拉丁语(封装)或它们的组合(即席多态性)。
但这不是我们的命运。 我们的选择-带有纯俄语的遮阳板定义。
图片
图像是数量的预测名称,它定义1)数量的正确属性和2)选择数量的操作。
单词“类型”(type)对应于定义的第一部分:“数量的适当属性”。 但是图像的主要含义在第二部分:“选择操作数量”。
用C语言引入图像的起点是通常的计算,例如加法运算。
手写或印刷的
纸上数学在数字种类之间没有太大区别,通常认为它们是真实的。 因此,它们的处理操作是明确的。
机器数学严格将数字分成整数和小数。 不同类型的数字以不同的方式存储在内存中,并由不同的处理器指令进行处理。 例如,整数和小数的加法是对应于两个不同处理器节点的两个不同命令。 但是缺少用于添加整数和小数参数的命令。
应用数学,即C语言,分隔数字的类型,但结合了运算:整数和/或小数的加法运算带有一个动作符号。
概念图的清晰定义使您可以肯定地谈论另外两个概念:
size和
operation 。
价值与运作
该值为正在处理的数字。
操作 -处理初始值(参数)的值以获得总数(总数)。
幅度和操作相互关联。 每个操作都是一个数量,因为它具有数字总计。 每个值都是从处理器将值发送到处理器寄存器/的结果,即操作的结果。 尽管存在这种相互联系,但最主要的是可以对它们进行单独描述,尽管字典中不同部分重复了一个单词,这种情况发生在ma3中。
机器方法将程序员使用的所有数字分为
命令和
数据 。 以前,两者都是数字,例如,命令是用数字代码编写的。 但是,在应用语言中,团队不再只是数字,而是成为
行动的 语言和
标志 。 仅“数据”保留了数字,但继续称其为可笑的,因为当从计算机转移到数学观点时,数字是将初始(
数据 )和最终(搜索)数相除的数量。 “未知给定”-这听起来很愚蠢。
团队也分为两种类型的动作:数学动作和服务动作。 数学动作-运算。 我们稍后将转向该服务。
在C语言中,通常的纸张和机器毫无歧义或单一的数学运算几乎无一例外地变成了多种。
多个操作-具有相同名称的多个操作,具有不同的参数图像和不同的,含义相似的动作。
整数参数对应于整个操作,分数-分数。 这种差异在除法运算中尤其明显,当表达式1/2的总和为0而不是0.5时。 这样的记录不符合纸上数学的规则,但是C语言不寻求遵守它们(与Fortran不同)-它是按照自己的
应用规则演奏的。
在混合整数和小数的情况下,仅包括
对参数值的正确
缩减 -值从一个图像到另一个图像的选择转换。 确实,当将整数和小数相加时,结果是小数,因此操作的图像
选择将整数参数转换为小数的操作。
许多操作不是
多重的,而是
单一的 。 此类操作仅针对一种类型的参数定义:除法的其余部分是整数参数,样式(按位运算)是自然整数。 Ma3通过符号(#^)表示多个操作,符号(#^)表示为其定义操作的模式。 这是每个操作的重要但先前被忽略的属性。
所有功能均为任意单位操作。 唯一的例外是语言中内置的运算符-
非括号函数 (初始操作)。
晋升
援助是伴随的行动。
如果我们将操作视为主要动作,那么我们可以区分两个附带的内容,它们提供了操作且与操作有所不同。 这些是1)变量控制和2)提交。 此动作称为
晋升 。
在这里,有必要分散注意力并分别谈论编程教科书的俄文翻译。 在C / R文本中引入了一个新的单词
声明 (表达式)来记录动作,该动作试图将机器命令的概念划分为不同的动作:1)操作,2)公告和3)提交(称为“控制结构”)。 这项尝试被俄国翻译们埋下了脚步,用“ operator”一词代替了“ expression”,即:
- 成为“团队”一词的同义词
- 原来是“行动迹象”的同义词,
- 并且还收到了无限数量的附加值。 也就是说,它变成了英语文章“ uh ...”的相似之处。
考虑相关的活动或
便利 。
变量管理
变量管理 (UE)-创建/删除变量单元格。
声明变量时已隐式发生UP,该变量已由于其他原因而被写入-表示数量的图像。 使用malloc()和free()函数仅显式地控制一种
增量变量 。
应该注意的是,隐式动作对于编写更为方便,因为它根本不需要编写任何东西,但是更加难以理解-它们更难以考虑和解释。
投稿
提交 -启用/禁用图层部分。
C语言提出了一种与汇编程序不同的方式,即控制动作顺序的一种应用方式-提交。 它反映并发展了复杂的语音句子,并明确分为主要部分(句子提交)和从属部分(子级别/子程序部分)。
公告和提交都完全基于
层的概念。
层数
层是有限的单级选择性表达式集。
该层一次显式地和隐式地承担了自己的几个任务的执行:
- 精简程序,
- 名称可见性限制(隐式),
- 变量(内存单元)的管理(隐式),
- 为从属定义下属部分,
- 功能和集合的定义以及其他。
在机器语言中,没有层的概念,因此它不会出现在K / P中,如果不存在某些内容,那么在后续书籍中引入它将是一种杂乱无章的想法。 因此,尽管层的概念非常有用并且非常明显,但它根本没有出现。
没有层,就不可能简要,清楚地解释程序的许多动作和规则。 例如,为什么像三个戈比这样的简单goto不好,而棘手的则好。 您只能像Dijkstra那样无奈地发誓(“程序员的资格是一个反过来取决于程序中goto语句出现频率的函数。”总之,只有山羊才使用goto。合理性是上帝。)没错,如果您的书还不错他们根本不需要解释任何事情,但是,正如我们所说,这不是我们的命运。
顺便说一句,可以假设Den Ritchie完全将goto作为搜索某些未命名概念的关键,因为goto表达式中没有必要或没有美感。但是,需要对Richie本人不愿给出的语言的新原理进行简单且易于理解的解释,这些新原理只是基于分层的概念。偏差
偏差 -更改新名称的常规属性。最重要的偏差仅与程序的层属性有关,并用一个单词“ static”描述,该词在每种类型的层中都有不同的含义。5.最后一章。常用的应用语言
应用语言是比喻语言(具有图像,“键入”)。它们基于图像的显式或隐式使用。这里又再次出现了矛盾:显式图像更容易理解,但不太方便,反之亦然。
(表格的布局尚未交付,因此表格以图片的形式给出。)在C语言之后,应用语言的发展成为增加其图像的一种方式。了解高清最重要的是C的直接后代-C ++语言。他提出了对数量进行任意选择运算的想法,并在一个sy表达式的基础上体现了这一想法,该表达式具有一个新名称-一个对象。但是,由于新类型的集合和相关规则的繁重,C ++不像C那样简洁明了。顺便说一下,让我们谈谈“过载”。«» (overload) — ,
.
()
: « (+): , ?! !» («», «»). — , , , .
++
不仅扩展到原始操作,还扩展到功能-单个和分组为方法的方法。与多种方法一起,可以在扩展类中重新定义它们,这被模糊地称为“多态”。多态和过载的结合产生了爆炸性的混合物,该混合物散布为两个“真”和“临时”多态。尽管分配了名称,但您只能解决这个问题。外国名字为广告铺平了道路。用“其他声明”一词更好地表示“过载”形式的公告-在同名函数的公告中添加另一个图像的参数。“多态”形式的广告最好称为“ 重新声明 ”一词 — .
, () —
, —
.
.
对高度含糊语言的概念的考虑证实了对基本概念进行清晰定义的重要性。使用正确描述的C,学习高形式的语言将变得轻松而愉快。这对于隐含的高象征语言(PHP,JavaScript)尤其重要。对于他们来说,对象(合成图像)的重要性甚至比C ++中更高,但是图像的概念变得含蓄而难以捉摸。从方便的角度来看,它们已经变得更简单,但是从理解的角度来看,它更加复杂。因此,您应该开始使用C语言学习编程语言,并按照C系列语言的出现顺序进行操作。语言说明也是如此。与C语言相比,不同的语言具有匹配的或更少的性别单位集。种类和样本的数量可以在两个方向上有所不同:C ++比C具有更多的种类,JavaScript具有更少的种类。MySQL语言值得特别提及。看起来-没什么共同点,但是Matryoshka完美地描述了他,而且认识他变得越来越容易。重要的是,鉴于它对网络的重要性-现代编程的食堂。 MySQL在哪里,还有其他SQL。好吧,一旦Matryoshka伸出手,各种各样的Fortran-Pascal-python也被描述了。, — . « , . , ! (, , . .)»
, . , .