<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Программирование on Atrax Tech</title><link>http://flow.salpagarov.com/docs/programming/</link><description>Recent content in Программирование on Atrax Tech</description><generator>Hugo</generator><language>ru</language><atom:link href="http://flow.salpagarov.com/docs/programming/index.xml" rel="self" type="application/rss+xml"/><item><title>Базовые алгоритмы</title><link>http://flow.salpagarov.com/docs/programming/08-algorithms/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://flow.salpagarov.com/docs/programming/08-algorithms/</guid><description>&lt;h1 id="базовые-алгоритмы"&gt;Базовые алгоритмы&lt;a class="anchor" href="#%d0%b1%d0%b0%d0%b7%d0%be%d0%b2%d1%8b%d0%b5-%d0%b0%d0%bb%d0%b3%d0%be%d1%80%d0%b8%d1%82%d0%bc%d1%8b"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Как в литературе, по мнению Кристофера Букера, есть только семь основных сюжетов&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;, так и в программировании базовых алгоритмов всего три. Это те &amp;ldquo;кубики&amp;rdquo;, из которых создаются программы.&lt;/p&gt;
&lt;p&gt;На самом деле их больше, но здесь ситуация схожа с описанием свойств алгоритмов &amp;ndash; многие из них являются частными случаями существующих и не вполне понятно, почему авторы учебных пособий выделяют для них особое место в классификации.&lt;/p&gt;
&lt;p&gt;В линейном (последовательном) алгоритме команды выполняются последовательно. Одна за другой, всегда одинаково.&lt;/p&gt;</description></item><item><title>Виды программного обеспечения</title><link>http://flow.salpagarov.com/docs/programming/05-software/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://flow.salpagarov.com/docs/programming/05-software/</guid><description>&lt;h1 id="виды-программного-обеспечения"&gt;Виды программного обеспечения&lt;a class="anchor" href="#%d0%b2%d0%b8%d0%b4%d1%8b-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%bd%d0%be%d0%b3%d0%be-%d0%be%d0%b1%d0%b5%d1%81%d0%bf%d0%b5%d1%87%d0%b5%d0%bd%d0%b8%d1%8f"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Традиционно все, что связано с электронно-вычислительной техникой, делят на &amp;ldquo;твердое&amp;rdquo; и &amp;ldquo;мягкое&amp;rdquo;. К &amp;ldquo;твердому инвентарю&amp;rdquo; (буквальный перевод термина &amp;ldquo;hardware&amp;rdquo;) относят оборудование – лампы, микросхемы; всё, что можно потрогать. Антитезой к нему введен термин &amp;ldquo;software&amp;rdquo;. Под &amp;ldquo;мягким инвентарем&amp;rdquo; подразумевается то, что потрогать нельзя – программы в виде электронных импульсов хранятся &amp;ldquo;где-то внутри&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Сленговые понятия &amp;ldquo;железо&amp;rdquo; и &amp;ldquo;софт&amp;rdquo; наиболее близки к исторически сложившимся английским терминам, хотя и не настолько официальны.&lt;/p&gt;</description></item><item><title>Декомпозиция</title><link>http://flow.salpagarov.com/docs/programming/09-decomposition/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://flow.salpagarov.com/docs/programming/09-decomposition/</guid><description>&lt;h1 id="декомпозиция"&gt;Декомпозиция&lt;a class="anchor" href="#%d0%b4%d0%b5%d0%ba%d0%be%d0%bc%d0%bf%d0%be%d0%b7%d0%b8%d1%86%d0%b8%d1%8f"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Буквально слово «декомпозиция» означает «разделение на части». В программировании это означает разделение программы на более простые подпрограммы, а те, в свою очередь, &amp;ndash; на еще более простые, пока с одной стороны не окажутся простейшие действия сложения, умножения и вычитания, которые исполнитель способен выполнять без дальнейшего объяснения, а с другой &amp;ndash; Deep Blue&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; или Mars One&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;Подпрограмма. В самом простом случае, подпрограмма &amp;ndash; это несколько действий вместо одного.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ЕСЛИ условие ТО
 НАЧАЛО
 действие 1
 действие 2
 действие 3
 КОНЕЦ
ИНАЧЕ
 другое действие
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Процедура. Для именованных подпрограмм используется термин &amp;ldquo;процедура&amp;rdquo;. Если мы дадим имя подпрограмме, то тем самым обогатим язык исполнителя новой командой, как если бы она изначально была частью языка исполнителя.&lt;/p&gt;</description></item><item><title>Информация</title><link>http://flow.salpagarov.com/docs/programming/02-information/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://flow.salpagarov.com/docs/programming/02-information/</guid><description>&lt;h1 id="информация"&gt;Информация&lt;a class="anchor" href="#%d0%b8%d0%bd%d1%84%d0%be%d1%80%d0%bc%d0%b0%d1%86%d0%b8%d1%8f"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;blockquote class='book-hint '&gt;
&lt;p&gt;Информатика — наука о методах хранения, передачи и обработки информацию.&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;Данные можно представить числами, понятиями, категориями&amp;hellip;&lt;/p&gt;
&lt;h2 id="представление"&gt;Представление&lt;a class="anchor" href="#%d0%bf%d1%80%d0%b5%d0%b4%d1%81%d1%82%d0%b0%d0%b2%d0%bb%d0%b5%d0%bd%d0%b8%d0%b5"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Информация хранится в структуре материальных объектов. Зарубки на дереве, электрический потенциал в элементах микросхемы — все это может содержать информацию, быть ее представлением.&lt;/p&gt;
&lt;h2 id="носитель"&gt;Носитель&lt;a class="anchor" href="#%d0%bd%d0%be%d1%81%d0%b8%d1%82%d0%b5%d0%bb%d1%8c"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Носителем информации считается материальный объект или среда, в структуре которого можно переносить информацию в пространстве или во времени. Электромагнитное поле способно переносить информацию в пространстве, архивный документ — во времени, а бумажное письмо — и в пространстве, и во времени.&lt;/p&gt;</description></item><item><title>Итак...</title><link>http://flow.salpagarov.com/docs/programming/13-amen/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://flow.salpagarov.com/docs/programming/13-amen/</guid><description>&lt;h1 id="итак"&gt;Итак&lt;a class="anchor" href="#%d0%b8%d1%82%d0%b0%d0%ba"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Вы, наверное, уже догадались.&lt;/p&gt;
&lt;p&gt;Писать программы легко. Но программирование — это не написание программ, а умение думать. У вас есть инструмент, но что вы будете с ними делать? Попробуйте разобраться в игре &amp;ldquo;крестики-нолики&amp;rdquo;, напишите программу, которая не проигрывает. А потом возвращайтесь и мы поговорим о деревьях и конечных автоматах.&lt;/p&gt;
&lt;p&gt;Программирование — это математика, а не технологические фокусы.&lt;/p&gt;</description></item><item><title>Методологии</title><link>http://flow.salpagarov.com/docs/programming/12-methodology/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://flow.salpagarov.com/docs/programming/12-methodology/</guid><description>&lt;h1 id="методологии"&gt;Методологии&lt;a class="anchor" href="#%d0%bc%d0%b5%d1%82%d0%be%d0%b4%d0%be%d0%bb%d0%be%d0%b3%d0%b8%d0%b8"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Методологии разработки программного обеспечения - это вообще не программирование, а управленческие модели. Но знать их полезно, хотя бы для расширения кругозора.&lt;/p&gt;
&lt;p&gt;Waterfall Development . Каскадная разработка (она же &amp;ldquo;водопад&amp;rdquo;) делит весь процесс на этапы &amp;ldquo;анализ - проектирование - реализация - тестирование - интеграция - поддержка&amp;rdquo;. Это классический подход в промышленной разработке, где аналитики анализируют, архитекторы ставят задачи и так далее. Все начинается с технического задания, которое описывает весь проект в целом и каждую его часть в отдельности. Затем &amp;ldquo;по написанному&amp;rdquo; пишется программный код и уходит сначала в тестирование, потом во внедрение и на поддержку.&lt;/p&gt;</description></item><item><title>Основные определения</title><link>http://flow.salpagarov.com/docs/programming/01-definitions/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://flow.salpagarov.com/docs/programming/01-definitions/</guid><description>&lt;h1 id="основные-определения"&gt;Основные определения&lt;a class="anchor" href="#%d0%be%d1%81%d0%bd%d0%be%d0%b2%d0%bd%d1%8b%d0%b5-%d0%be%d0%bf%d1%80%d0%b5%d0%b4%d0%b5%d0%bb%d0%b5%d0%bd%d0%b8%d1%8f"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Философия из всех наук самая «фундаментальная». Поэтому мы начнем с точного значения слов — то есть, с понятийного аппарата.&lt;/p&gt;
&lt;h2 id="информация"&gt;Информация&lt;a class="anchor" href="#%d0%b8%d0%bd%d1%84%d0%be%d1%80%d0%bc%d0%b0%d1%86%d0%b8%d1%8f"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Информация — это отражение реальности, сведения о фактах, из которых состоит мир. Данные, описывающие объект, по отдельности называются его свойствами, а все вместе — его состоянием.&lt;/p&gt;
&lt;h2 id="исполнитель"&gt;Исполнитель&lt;a class="anchor" href="#%d0%b8%d1%81%d0%bf%d0%be%d0%bb%d0%bd%d0%b8%d1%82%d0%b5%d0%bb%d1%8c"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Исполнитель — объект, способный выполнять действия. Выполнение действия исполнителем может менять (или не менять) его свойства, тем самым переводя его из одного состояния в другое. Все возможные состояния и переходы между ними образуют граф состояний.&lt;/p&gt;</description></item><item><title>Память</title><link>http://flow.salpagarov.com/docs/programming/07-memory/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://flow.salpagarov.com/docs/programming/07-memory/</guid><description>&lt;h1 id="память"&gt;Память&lt;a class="anchor" href="#%d0%bf%d0%b0%d0%bc%d1%8f%d1%82%d1%8c"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Вся информация, которой оперирует исполнитель, в хранится у него в памяти. Можно сохранить в памяти число (а мы помним, что всё можно записать при помощи чисел), можно его оттуда извлечь. Между этими операциями они хранится в неизменном виде.&lt;/p&gt;
&lt;p&gt;Запоминающее устройство на магнитной ленте, которую можно проматывать вперед-назад, последовательно читая и записывая данные, называется памятью последовательного доступа («Sequential Access Memory», «SAM»). Запоминающее устройство из большого количества пронумерованных ячеек, в поторые можно писать напрямую по их «адресам», называется памятью произвольного доступа («Random Access Memory», «RAM»). Память (любого принципа действия), позволяющая только читать однажды записанные данные, называется ROM («Read Only Memory», «память только для чтения»).&lt;/p&gt;</description></item><item><title>Парадигмы программирования</title><link>http://flow.salpagarov.com/docs/programming/11-paradigms/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://flow.salpagarov.com/docs/programming/11-paradigms/</guid><description>&lt;h1 id="парадигмы-программирования"&gt;Парадигмы программирования&lt;a class="anchor" href="#%d0%bf%d0%b0%d1%80%d0%b0%d0%b4%d0%b8%d0%b3%d0%bc%d1%8b-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d1%8f"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;В программировании парадигмой или моделью программирования называется общая концепция написания программ. Хоть она и зависит от языка программирования, но все же скорее относится к концептуальным, почти философским, моментам.&lt;/p&gt;
&lt;p&gt;Императивная. В императивной парадигме программа напоминает последовательность приказов. Это набор команд, последовательно меняющих состояние исполнителя.&lt;/p&gt;
&lt;p&gt;Функциональная . В функциональной парадигме программа это функция. И все её структурные составляющие - тоже функции. Главное свойство функции в том, что ее результат зависит только от входных параметров и больше ни от чего. Синус от pi/2 равен 1, а квадратный корень из 4 равен 2. Всегда. Везде. И если эти значения потребуется еще раз, их не потребуется вычислять снова. Достаточно &amp;ldquo;вспомнить&amp;rdquo;.&lt;/p&gt;</description></item><item><title>Системы счисления</title><link>http://flow.salpagarov.com/docs/programming/04-number_systems/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://flow.salpagarov.com/docs/programming/04-number_systems/</guid><description>&lt;h1 id="системы-счисления"&gt;Системы счисления&lt;a class="anchor" href="#%d1%81%d0%b8%d1%81%d1%82%d0%b5%d0%bc%d1%8b-%d1%81%d1%87%d0%b8%d1%81%d0%bb%d0%b5%d0%bd%d0%b8%d1%8f"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;А, собственно, почему человек пользуется десятичной системой счисления? Потому, что изначально для счета использовались пальцы рук. Двурукие шестипалые существа пользовались бы двенадцатеричной системой счисления, трехрукие - восемнадцатиричной. Никакой разница, на самом деле. Кому как удобней. Нам, двуруким пятипалым, удобней десятичная.&lt;/p&gt;
&lt;p&gt;Число 10 - это основание десятичной системы. Арабских цифр, которыми мы пользуемся - десять, 0-1-2-3-4-5-6-7-8-9. Отсчет ведется не с единицы, а с нуля. Для записи чисел больше 9 используются две цифры - 10, 11, 12&amp;hellip; для чисел больше 99, три цифры - 100, 101, 102. Такие системы счисления называются позиционными, место цифры в записи числа определяют порядок.&lt;/p&gt;</description></item><item><title>Типы данных</title><link>http://flow.salpagarov.com/docs/programming/06-datatypes/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://flow.salpagarov.com/docs/programming/06-datatypes/</guid><description>&lt;h1 id="типы-данных"&gt;Типы данных&lt;a class="anchor" href="#%d1%82%d0%b8%d0%bf%d1%8b-%d0%b4%d0%b0%d0%bd%d0%bd%d1%8b%d1%85"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;blockquote class='book-hint '&gt;
&lt;p&gt;Все есть число&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;Слова Пифагора Самосского как нигде применимы в &amp;ldquo;компьютерной науке&amp;rdquo;. Электронно-вычислительные машины все свои действия сводят к манипулированию числами. Но что можно представить числами?&lt;/p&gt;
&lt;p&gt;Все. Температуру, цвет, звук. Но все многообразие данных невозможно анализировать без определения того, какие операции для них применимы. Нельзя сложить число и геометрическую фигуру, умножить множество на слово и так далее. Для этого данные определяются по типам. А типы определяют действия, которые с ними можно производить.&lt;/p&gt;</description></item><item><title>Устройство электронно-вычислительной машины</title><link>http://flow.salpagarov.com/docs/programming/03-hardware/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://flow.salpagarov.com/docs/programming/03-hardware/</guid><description>&lt;h1 id="устройство-электронно-вычислительной-машины"&gt;Устройство электронно-вычислительной машины&lt;a class="anchor" href="#%d1%83%d1%81%d1%82%d1%80%d0%be%d0%b9%d1%81%d1%82%d0%b2%d0%be-%d1%8d%d0%bb%d0%b5%d0%ba%d1%82%d1%80%d0%be%d0%bd%d0%bd%d0%be-%d0%b2%d1%8b%d1%87%d0%b8%d1%81%d0%bb%d0%b8%d1%82%d0%b5%d0%bb%d1%8c%d0%bd%d0%be%d0%b9-%d0%bc%d0%b0%d1%88%d0%b8%d0%bd%d1%8b"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;blockquote class='book-hint '&gt;
&lt;p&gt;Вся история вычислительной техники это попытки заставить изобретение Эдисона приносить больше пользы, чем уличное освещение.&lt;/p&gt;
&lt;/blockquote&gt;&lt;h2 id="диод"&gt;Диод&lt;a class="anchor" href="#%d0%b4%d0%b8%d0%be%d0%b4"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Первый диод случайно изобрел Эдисон, когда внутрь вакуумной лампы накаливания поместил металлическую пластину с выведенным наружу контактом. Вдруг оказалось, что вакуум, считавшийся до тех пор изолятором, проводит ток. Но строго в одну сторону — от горячего проводника к холодному. Это явление называется термоэлектронной эмиссией.&lt;/p&gt;
&lt;p&gt;Потом были изобретены полупроводниковые диоды с другим принципом работы, но главное — ток внутри диода может двигаться только в одну сторону.&lt;/p&gt;</description></item><item><title>Языки программирования</title><link>http://flow.salpagarov.com/docs/programming/10-languages/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://flow.salpagarov.com/docs/programming/10-languages/</guid><description>&lt;h1 id="языки-программирования"&gt;Языки программирования&lt;a class="anchor" href="#%d1%8f%d0%b7%d1%8b%d0%ba%d0%b8-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d1%8f"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Совсем не обязательно при разработке программы опускаться на уровень машинных операций, которыми оперируют электронно-вычислительные машины. Языки программирования предоставляют готовый набор подпрограмм для того, чтобы процесс декомпозиции не опускался на уровень машинного кода. Это называется уровнем абстракции языка программирования и у разных языков он различен.&lt;/p&gt;
&lt;p&gt;Низкоуровневые языки программирования . Самый низкий уровень программирования &amp;ndash; это машинный код, который исполняется непосредственно. По сути набор чисел, которые процессор знает и умеет выполнять. Ассемблер - язык, в котором каждому машинному коду присвоено буквенное обозначение и которое человек уже способен прочесть и понять. Глазами. Хотя уровень абстракций практически нулевой - за каждой командой скрывается машинный код.&lt;/p&gt;</description></item></channel></rss>