Skip to content

Commit

Permalink
Merge pull request #12 from angelgardt/angelgardt/dev
Browse files Browse the repository at this point in the history
deploy 0.0.1:6
  • Loading branch information
angelgardt authored May 20, 2024
2 parents 5d11263 + 64daaf6 commit adf6e64
Show file tree
Hide file tree
Showing 61 changed files with 3,265 additions and 777 deletions.
456 changes: 455 additions & 1 deletion book/_book/appendix-math-letters.html

Large diffs are not rendered by default.

54 changes: 53 additions & 1 deletion book/_book/appendix-proglang.html
Original file line number Diff line number Diff line change
Expand Up @@ -767,7 +767,18 @@ <h1 class="title"><span id="appendix-proglang" class="quarto-section-identifier"
<div id="quarto-sidebar-glass" class="quarto-sidebar-collapse-item" data-bs-toggle="collapse" data-bs-target=".quarto-sidebar-collapse-item"></div>
<!-- margin-sidebar -->
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar">

<nav id="TOC" role="doc-toc" class="toc-active">
<h2 id="toc-title">Содержание</h2>

<ul>
<li><a href="#proglang-translator" id="toc-proglang-translator" class="nav-link active" data-scroll-target="#proglang-translator"><span class="header-section-number">E.1</span> Транслятор языка</a></li>
<li><a href="#proglang-classifications" id="toc-proglang-classifications" class="nav-link" data-scroll-target="#proglang-classifications"><span class="header-section-number">E.2</span> Классификации языков программирования</a>
<ul>
<li><a href="#proglang-classification-tasks" id="toc-proglang-classification-tasks" class="nav-link" data-scroll-target="#proglang-classification-tasks"><span class="header-section-number">E.2.1</span> По задачам</a></li>
<li><a href="#proglang-classification-pardigm" id="toc-proglang-classification-pardigm" class="nav-link" data-scroll-target="#proglang-classification-pardigm"><span class="header-section-number">E.2.2</span> По парадигме</a></li>
</ul></li>
</ul>
</nav>
</div>
<!-- main -->
<main class="content quarto-banner-title-block" id="quarto-document-content">
Expand All @@ -776,8 +787,49 @@ <h1 class="title"><span id="appendix-proglang" class="quarto-section-identifier"



<p>Низкоуровневые языки</p>
<ul>
<li>близки к железу</li>
<li>представляют собой команды для конкретного семейства процессоров</li>
<li>асссемблер</li>
<li>чтобы программа работала, её нужно писать под разные архитектуры, операционные системы — это финансово затратно</li>
</ul>
<p>Индустрия начала создавать языки более высокого уровня, которые самостоятельно справляются с этой рутиной.</p>
<p>Высокий уровень — приближенность к восприятию человека за счет повышения уровня абстракций.</p>
<p>Программы становятся проще, короче, читаемее, понятнее.</p>
<p>Любая программа в исходном виде — бесполезный набор текста. В конечном виде — набор инструкций для конкретного процессора. Программа из языка, на котором она написана, должна трансформироваться в форму, способную выполниться процессором — машинный набор инструкций.</p>
<p>Такой трансформацией занимаются специальные программы, которые называются трансляторы. Они делятся на компиляторы и интерпретаторы. Они получаются на вход текст исходной программы, но компилятор целиком анализирует и переводит программу с исходного языка в эквивалентную программу на машинном языке. После этого она может быть запущена и выполнена. Интерпретатор покомандно анализирует программу и сразу же выполняет, и не переводит её в эквивалентный вид. Существуют промежуточные варианты, когда программа, например, транслируется в байт-код, который затем интерпретируется.</p>
<p>То есть, чтобы создать язык надо написать транслятор языка и документацию, чтобы программист мог правильно написать программу на этом языке — синтаксис. Синтаксис определяется транслятором языка. Это то, что транслятор ожидаем получить на вход для корректной обработки программы.</p>
<p>В случае нарушения синтаксиса компилятор выдаст ошибку по время обработки программы, интерпретатор — во время выполнения этого куска кода.</p>
<p>Исходная программа (модули) -&gt; препроцессор (сборка) -&gt; программа -&gt; компилятор -&gt; ассемблерная программа -&gt; компилатор ассемблера -&gt; объектные модули -&gt; компоновщик -&gt; целевая программа (на машинном языке, исполняемый файл) -&gt; ОС (исполнение программы (выделение памяти, загрузка, передача управления, взаимодействие с внешними устройствами))</p>
<p>Процесс компляции отличается под каждую ОС и под каждую архитектуру процессора.</p>
<p>Парадигмы и типизация данных</p>
<p>Парадигмы — стиль написания кода. Их много, но основных два — императивный и декларативный. Их различия — в пути решения задачи: КАК реализовать и ЧТО реализовать?</p>
<p>В императивном стиле пошагово расписывается как решить задачу в виде последовательных действий, которые должны привести к результату. Большинство языков. В декларативном стиле не расписываются шаги реализации, описывается только, что нужно сделать (SQL).</p>
<p>Императивная парадигма разделяется еще на несколько ветвей, две основные — процедурное и объекто-ориентированное.</p>
<p>В процедурном стиле вся программа состоит из набора процедур и функций, которые могут вызывать друг друга в ходе своего исполнения. Функции — это подпрограммы, куски кода, разбросанные в памяти по разным адресам. Создание кода на одних функциях приводит к двум проблемам: плохой расширяемости и трудноподдерживаемости кода. Единственный выход — упрощение, поэтому придумали ООП.</p>
<p>ООП позволяет оперировать такими сущностями, как объекты. Это очередная абстракция, для облегчения построения архитектуры программ, которая присутствует во многих высокоуровневых языках.</p>
<p>Несмотря на это многие языки являются мультипарадигменными — в них можно использовать как процедурный, так и объектор-ориентированный стиль вместе.</p>
<p>Типизация данных. Изначально все данные, которые лежат в памяти, не имеют никакого типа — это просто двоичные числа в представлении людей. Но при разработки языков для удобства манипуляции данными их разбили на некоторые типы. Языки начали разделяться на изыки с типизацией и языки без типизации. Данные без типа — это просто последовательности бит, которые присутствуют в низкоуровневых языка вроде ассемблера.</p>
<p>99% языко содержит типизацию данных. Явная/неявная: при явной типизации необходимо эксплицитно указывать, какой тип данных, при неявной тип данных задается компилятором.</p>
<p>Статическая/динамическая: при статической типизации проверка и установка типов данных происходит на этапе компиляции, а в динамической — на этапе выполнения программы. Языка со статической типизацией работают быстрее.</p>
<p>Сильная/слабая (строгая/нестрогая): сильная типизация не позволяет смешивать различные типы друг с другом, при слабой типизации автоматически выполняется приведение типов, что может приводить к неоднозначным результатам.</p>
<section id="proglang-translator" class="level2" data-number="E.1">
<h2 data-number="E.1" class="anchored" data-anchor-id="proglang-translator"><span class="header-section-number">E.1</span> Транслятор языка</h2>
</section>
<section id="proglang-classifications" class="level2" data-number="E.2">
<h2 data-number="E.2" class="anchored" data-anchor-id="proglang-classifications"><span class="header-section-number">E.2</span> Классификации языков программирования</h2>
<section id="proglang-classification-tasks" class="level3" data-number="E.2.1">
<h3 data-number="E.2.1" class="anchored" data-anchor-id="proglang-classification-tasks"><span class="header-section-number">E.2.1</span> По задачам</h3>
<p>Языки программирования общего назначения</p>
</section>
<section id="proglang-classification-pardigm" class="level3" data-number="E.2.2">
<h3 data-number="E.2.2" class="anchored" data-anchor-id="proglang-classification-pardigm"><span class="header-section-number">E.2.2</span> По парадигме</h3>
<p>Объектно-ориентированные</p>


</section>
</section>

</main> <!-- /main -->
<script id="quarto-html-after-body" type="application/javascript">
Expand Down
6 changes: 3 additions & 3 deletions book/_book/debug_chapter.html
Original file line number Diff line number Diff line change
Expand Up @@ -1461,8 +1461,8 @@ <h6 data-number="1.2.1.2.1.1" class="anchored" data-anchor-id="совсем-ме
<div id="fig-rbirthplace" class="cell-output-display quarto-figure quarto-figure-center quarto-float anchored">
<figure class="quarto-float quarto-float-fig figure">
<div aria-describedby="fig-rbirthplace-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<div class="leaflet html-widget html-fill-item" id="htmlwidget-1e77f225aee28fd311bc" style="width:100%;height:464px;"></div>
<script type="application/json" data-for="htmlwidget-1e77f225aee28fd311bc">{"x":{"options":{"crs":{"crsClass":"L.CRS.EPSG3857","code":null,"proj4def":null,"projectedBounds":null,"options":{}}},"calls":[{"method":"addProviderTiles","args":["Stadia.AlidadeSmooth",null,null,{"errorTileUrl":"","noWrap":false,"detectRetina":false}]},{"method":"addMarkers","args":[-36.852,174.768,null,null,null,{"interactive":true,"draggable":false,"keyboard":true,"title":"","alt":"","zIndexOffset":0,"opacity":1,"riseOnHover":false,"riseOffset":250},"The birthplace of R",null,null,null,null,{"interactive":false,"permanent":false,"direction":"auto","opacity":1,"offset":[0,0],"textsize":"10px","textOnly":false,"className":"","sticky":true},null]}],"limits":{"lat":[-36.852,-36.852],"lng":[174.768,174.768]}},"evals":[],"jsHooks":[]}</script>
<div class="leaflet html-widget html-fill-item" id="htmlwidget-0e62a905b2b5746297df" style="width:100%;height:464px;"></div>
<script type="application/json" data-for="htmlwidget-0e62a905b2b5746297df">{"x":{"options":{"crs":{"crsClass":"L.CRS.EPSG3857","code":null,"proj4def":null,"projectedBounds":null,"options":{}}},"calls":[{"method":"addProviderTiles","args":["Stadia.AlidadeSmooth",null,null,{"errorTileUrl":"","noWrap":false,"detectRetina":false}]},{"method":"addMarkers","args":[-36.852,174.768,null,null,null,{"interactive":true,"draggable":false,"keyboard":true,"title":"","alt":"","zIndexOffset":0,"opacity":1,"riseOnHover":false,"riseOffset":250},"The birthplace of R",null,null,null,null,{"interactive":false,"permanent":false,"direction":"auto","opacity":1,"offset":[0,0],"textsize":"10px","textOnly":false,"className":"","sticky":true},null]}],"limits":{"lat":[-36.852,-36.852],"lng":[174.768,174.768]}},"evals":[],"jsHooks":[]}</script>
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-fig" id="fig-rbirthplace-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Иллюстрация&nbsp;1.5: Тут родился R
Expand All @@ -1481,7 +1481,7 @@ <h6 data-number="1.2.1.2.1.1" class="anchored" data-anchor-id="совсем-ме
</figcaption>
</figure>
</div>
<p>Выше была карта (<a href="#fig-rbirthplace" class="quarto-xref">Иллюстрация&nbsp;<span>1.5</span></a>) с местом рождения R.</p>
<p>Выше была карта (<a href="r-intro.html#fig-rbirthplace" class="quarto-xref">Иллюстрация&nbsp;<span>2.1</span></a>) с местом рождения R.</p>


</section>
Expand Down
Binary file modified book/_book/debug_chapter_files/figure-html/fig-huge-chunk-1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit adf6e64

Please sign in to comment.