07 января 2018 Python variables


Переменная в программе это объект с именем в оперативной памяти компьютера.

Оперативная память компьютера это множество пронумерованных ячеек в которых хранится информация в виде 0 и 1.

Объект в оперативной памяти это участок памяти который интерпретируется процессором в зависимости от типа объекта.

Самый простой тип объекта это бит, бит может принимать только два значений 0(ноль) или 1(единица).

Бит может использоваться в качестве индикаторов состояния включено или выключено.

Если объединить несколько бит то можно интерпретировать состояние бит в виде числа, так например в с помощью 8 бит можно преставить последовательность и 256 цифр (2 значения в 8 степени).

С объединением нескольких значений одного или нескольких типов объектов создаёт составной тип данных, самый простой составной тип данных это байт.

С помощью 1 байта из 8 бит можно представить последовательность из цифр 256 либо последовательность из 256 символов алфавита и технических символов.

Последовательность символов составляет ещё один тип данных — строка символов. Строки могут объединяться в массивы строк.

С помощью последовательности бит можно сформировать активный код выполняеымй процессором, это называет код функции. Код функций это последовательность бит, который выполняется процессором в командном режиме, что приводит к изменению состояния процессора, а следовательно и к изменению состояния объектов в оперативной памяти.

Возможно создание комбинированных типов данных, включающих в себя цифры, строки, массивы цифр и строк, исполняемый код функций. Этот объект уже является на объектом с собственной функциональностью. В высокоуровневых языка программирования создают объекты классов, которые помимо данных имеют исполняемый код изменяющий состояние объекта.

Для обращения к объекту необходимо знать адерес объекта в оперативной компьютера, так как работать с адресам для человека не удобно, существую таблицы имён созданых человеком и связанных с именами адресов объектов в оперативной памяти. При этом адрес объекта в оперативной памяти может постоянно меняться но связь с именем всегда позволяет обратиться к объекту.

Так как объекты бывают составными, то существуют иерархически составные названия объектов по аналогии с реальным миром, например: дом, улица, квартира, стул номер 3, ножка стула номер 2, длинна ножки стула.

Таким образом:

Переменная это объект созданный в оперативной памяти компьютера, имещий имя которое используется для обращения к объекту, а так же информацию о типе объекта, а от типа объекта зависит интерпретация процессором оперативной памяти занимаемой объектом.

Типы объектов крайне важны в программировании. Так например, можно изготовить из пластилина молоток на 100% похожий на настоящий молоток, только забивать гвозди им не получится.


04 января 2018 08 января 2018 Python variables


Первое с чем сталкивает человек изучающий программирование это концепция переменных(Что такое переменные). Это сложная тема абстрактных понятий очень часто является барьером в изучении компьютерных наук. У новичков сразу возникают вопросы что такое перменные, какие типы переменных существуют, как правильно и не правильно использовать переменные, почему всё устроенно именно так. Если не разобраться с этим понятием то невозможно продолжить изучение программирования, а если углубиться в изучение концепции переменнных, то очень многие абстракции в программировании станут понятны сами по себе, по крайней мере интуиция будет подсказывать почему всё устроено именно так, а не иначе.

Понимание концепции переменных является ключевым пунктом к изучению программирования. Компьютерные переменные это абстракция которую придумали инженеры и окружили её аурой загадачного жаргона. Но если немного отвлечься от программирования и поглядеть на нашу жизнь со стороны то можно увидеть следующее: когда человек рождается то его память пуста, он не знает ни одного слова и даже не знает своего имени. Но постепенно общаясь с родителями, с другими людьми он учится связывать объекты реального мира со звуками которые произносят люди. Так он узнат что женщина которая его кормит и ухаживает за ним это мама, что когда мама произносит некоторое имя, например Вова, то это значит, что она обращается к нему, он начинает различать интонации в произношении различных слов учится работать с контекстом. Этот процесс можно назвать загрузкой сознания человека. В сознании ребёнка образы различных объектов начинают связываются с их названиями. Когда он впервые слышит слово "ты" то для него это слово ничего не означает, но в результате многократного повторения слова и связанного действия в памяти ребёнка закрепляется связь слова "ты" с набором объектов и ощущений. Все прекрасно помнят те моменты когда ребёнок начинает спрашивать у родителей "что это такое?" показывая на различные предметы и родители, отвечая на это вопросы, загружают в сознание ребёнка названия объектов и тем самым формируют его сознание и направление развития. Получается, что в этой ситуции ребёнок выступает в роли своеобразного компьтера, а родители в роли программистов которые составляют программу с помощью которой этот компьютер будет развиваться и взаимодействовать с другими живыми системами. А в компьютерном понимании это выглядит следующим образом: существует реальность в которой существуют различные объекты и явления с которыми необходимо воздействовать и название этих объектов и явлений необходимы для того чтобы к ним можно было обращаться с помощью речевых команд. Так например простой вопрос "где бобо" подразумевает, что ребёнок должен понять что от него хотят чтобы он указал на то место которое у него болит, то-есть происходит обращение к двум алгоритмам:

  • определение места где болит
  • указать на него каким либо способом

Если родители уже успели заложить в него связи между этими словами и алгоритмами то ребёнок сумеет выполнить команду. Этот пример наглядно показывает, что названия крайне необходимы для выполнения любых разумных и осмысленных действий. Если эти связи не установлены и для ребёнка слова родителей ничего не значат, то не возможно и управлять действиями ребёнка. Тут я ввожу понятие: алгоритм это набор действий приводящий к определённом результату, очевидно что алгоритмы так же должны иметь название и по сути так же являются объектами к которым можно обратиться через название.

Получается, что процесс воспитания ребёнка является программированием сознания ребёнка с помощью выстраивания связей между объектами и явлениями реального мира с названиями объектов и явлений в нашей речи, на нашем языке. В компьютерной среде происходит тоже самое программист работает в среде оперативной памяти компьютера, а в этой памяти располагаться объекты которые создаёт сам программист или которые там были созданы другими программистами. Например, программист создаёт внутри оперативной памяти список учеников и даёт ему некоторое название (можно сказать даёт ему кличку) которое существует в контексте этой программы и для того чтобы повторно обратиться к этому списку программа использует название которое программист присвоил ему при создании. По сути, вся работа программиста заключается в том, что он создаёт объекты в оперативной памяти компьютера, даёт названия объектам и создаёт алгоритмы взаимодействия объектов с помощью названий. От того насколько эффективно он создаёт эти объект и насколько то что он создаёт понятно другим людям зависит профессионализм программиста. Для сравнения можно взять Льва Толстого и его роман "Война и Мир". В этой книге, писатель с помощью правильных связей с названий и удачных конструкций определяющих конекст создал программу которая вызывает практически во всех людях одинаковые эмоции -- именно по этому этот писатель считается Великим, такое могут далеко не все, чаще всего люди собственной речью не могут выразить то что хотят сказать и тем более у них не получается вызывать те же образы что и самого автора.

Я использовал аналогию с обучением ребёнка для того, чтобы стало очевидно то, что для нашей разумной деятельность крайне важно то что мы знаем названия того с чем мы взаимодействуем, без этого невозможно выполнение разумной и упорядоченной деятельности и точно так же в программирование без знания названий сущностей внутри оперативной памяти невозможно делать что либо разумное. Таким образом получается, что на самом деле самос компьютерные "переменные" это всего лишь объекты и названия объектов внутри оперативной памяти. Но очевидно что использование слова "переменные" более удобно и наглядно чем выражение "объекты и названия объектов" для тех понимает о чём речь.

Поняв вышеизложенное становится очевидно, что когда программист говорит, что он создал переменную то он всего лишь создал объект в оперативной памяти компьютера и дал название этому объекту, когда программист говорит что он обратился к  переменной то это означает что он заставил программу обратиться к объекту по его имени. В этом смысле программисты подобны творцам, которые создают объекты, дают им названия, учат эти объекты взаимодействовать друг с другом, создают целые миры из объектов подчняющихся действию алгоримов взаимодействия и даже общению с объектами из миров созданных другими творцами. Так что на самом деле программирование это очень простое и увлекательное творчество, посоревноваться с которым может лишь творчество которое вызывает у людей сильные эмоции, это я сейчас про кино, музыку и всякую прочую живопись, только в программировании гораздо меньше возможностей для субъективизма и больше логики.


... статья в разработке, продолжение следует

Так же с помощью этого примера можно понять что названия не являются постоянными(константыми), например, объект реального мира "яблоко" может иметь название "яблоко" или "apple" так как это зависит от того в какой семье воспитывается ребёнок, это явление назвается контекст, то-есть одно и тоже явление может называться по разному в зависимости от контекста.

И так в нашем собственном сознании присутвтвуют переменные. Среди них можно выделить переменные долгосрочные и короткосрочные. Например, слово мама почти у каждого человека связыватся с одним единственным человеком на свете, то-есть в сознании этого человека есть конкретная связь между этим названием и конкретным объектом реального мира. Связь с составными названиеми "моя машина", "твоя машина" и реальным объектом реального мира показывает, что переменные бывают не постоянными, а с деньгами понимание недолговременности существования переменных становится ещё очевиднее.