Найти тему
Programmer

Основы программирования. Какие могут быть в реале типы данных?

Оглавление

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

взял картинку с "официального" учебника
взял картинку с "официального" учебника

Возьмем для наглядности эту картинку из "официальной" документации по любому языку программирования. И уже с первой строки мы видим ДИЧ , которая дезинформирует человекообразных существ, но они этого не понимают в упор! Итак, читаем: "В объектно-ориентированных языках программирования..." и пошло и поехало...

Все типы данных в программировании являются объектами!

Начнем с того, что определим основные сущности программирования. Нас запутывают сразу же термином "объектно-ориентированный", то есть бывают языки "не объектно-ориентированные"? Но в этом термине уже кроется гигантский подвох, который отупляет человека. Одна из самых главных тайн программирования в том, что оно все ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ или состоит абсолютно повсеместно из объектов.

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

В доказательство приведенного мной выше факта я вам скажу, что даже один бит (единица или нуль) или минимальная ячейка в памяти ЭВМ является также объектом. Данный объект является основой всей работы ЭВМ. Кстати, в языке С есть аналог данного объекта или битовые поля, то есть самые минимальные типы данных. Битовый объект может принимать только два значения: единицу или нуль. В логическом смысле это переводится как истина или ложь, в электронике это понятие обозначает "есть ток" или "нет тока". Итак, объектность нашего мира минимум можно считать доказанной, а если кто-то возражает, то напишите мне и я вам приведу сколько угодно больше доводов!

Все объекты находятся в каком-то месте памяти.

Вторая важнейшая основа программирования: любой объект любого типа должен находиться где-то в памяти! И эта память может быть необязательно оперативной в ЭВМ, тот же файл может быть записан на диск, на флешку, на дискету, на жесткий диск, на сервер и куда угодно. Например, в старом добром языке С файл "под капотом" представляет собой именно объект типа struct, то есть по сути обычную структуру или основной объектовый тип данных языка С.

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

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

Итак, каждый основной тип данных программирования нужно будет разобрать в будущем под микроскопом "до атомов", а в данной статье я вам кратко опишу эти основные типы данных, на которых держится понимание всего программирования, но так как эти типы вам никто не описывает нигде ни в документации, ни в блогах, ни в учебниках, то в мире сегодня царит полное непонимание программирования!

Запоминайте! Существуют такие основные типы данных: это обычные объекты с именем, это обычные объекты без имени, это указатели на объекты или их адреса, это ссылки на объекты или их коробки, это волшебные мгновенные объекты или их называют еще литералами, это объекты в виде функции или метода, которые содержат блоки кода алгоритмов!

Кроме указанных выше основных типов объектов, в программировании бывают еще и комбинации данных типов объектов. Например, "непонятный всем" тип данных делегат в C# является именно сложным ссылочным классом, "под капотом" которого лежит просто массив ссылок или указателей на методы или на функции.

Еще вы должны запомнить важнейшую вещь, что каждый из перечисленных выше основных типов данных может быть константным или readonly, то есть эти объекты будут неизменны после создания. Между ключевыми словами const и readonly и других константах в языках C++, Java, C# есть некоторые различия, но при этом вам никто в мире не говорит, что здесь не нужно заморачиваться и это все является константами. То есть любые типы объектов могут быть неизменяемы! При этом есть такой волшебный "мгновенный объект" или литерал, он всегда является константой и безымянным объектом, так как существует одно мгновение в памяти и исчезает.

А теперь кратко перечислим особенности основных типов данных:

Обычные объекты с именем

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

Обычные объекты без имени

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

Мгновенные объекты или "литералы"

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

Указатели или адреса (коробки) объектов

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

Коробки или ссылки на существующие объекты

В эту основную категорию попадают гигантский диапазон разных типов объектов. Главным критерием этого типа данных является его возможность хранить виртуальные коробки объектов в определенном месте памяти, выделенном для объекта операционной системой, что делает эти объекты подчиняющимися операционной системе и поэтому их называют "безопасными". Каждый такой объект хранит адрес "под капотом" или коробку (ссылку) именно на свой тип объектов! От указателей коренным образом отличаются еще тем, что принимают значения самого объекта, на который ссылаются и который лежит в данной коробке! Все остальные критерии уже делят этот глобальный тип данных на подтипы и подклассы.

Объекты, содержащие функции или методы

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

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