Основы ООП на PHP 7
Первая часть цикла статей "ООП в PHP 7" будет посвящена философии объектно-ориентированной парадигмы. Но, прежде чем приступать к рассмотрению ООП, мы рассмотрим, какие еще парадигмы бывают.
Что такое парадигма программирования? Это, в каком-то роде, образ мышления в программировании, стиль программирования, совокупность правил и принципов. И чтобы понять, откуда появились парадигмы, попробуем проследить историю о том, как к ним пришли.
История возникновения парадигм программирования
На момент создания компьютеров, когда они занимали целые помещения, программисты работали напрямую с компонентами этих компьютеров: реле, лампы, транзисторы, регистры и т.д. И необходимо было обладать заурядной незаурядностью, чтобы читать и набирать бинарным кодом длинные километры перфокарт. А сам код выглядел таким образом:
Такой код понять очень и очень сложно. А именно таким кодом программировали микросхемы. И чтобы все это вбить в перфокарты, нужно было такой код перевести в нули и единицы.
Таким кодом писать всем надоело и придумали ассемблер - низкоуровневый язык программирования. И от байтов-битов перешли к такому коду:
Такой код стал более понятным, нежели бинарный, к тому же дополнялся комментариями. И ассемблер выступал некой "прослойкой" между программистом и компьютером, так как все равно такой код компилировался в нули и единицы.
- Но все равно возникали проблемы с пониманием такого кода: что в целом этот код выполняет. Хотелось получить код более человеко-понятный. А с годами код на ассемблере вырастал в большие полотна, и понимать его становилось все сложнее и сложнее. Да и операции на ассемблере было описывать очень тяжело. Например, чтобы на ассемблере выполнить умножение одного числа на другое, нужно было взять и положить одно значение в один регистр, потом последовательно положить второе значение во второй регистр, вызвать несколько раз сумму этих значений, потом ее выгрузить, опять просуммировать это дело и т.д. То есть приходилось постоянно таким образом работать с регистрами, "жонглируя" ими своеобразно. И чтобы вот так не заморачиваться над низкоуровневыми операциями, придумали высокоуровневые языки программирования.
Такие языки представляли из себя работу с более человекопонятными переменными, управляющими конструкциями, функциями, циклами и так далее. А сам код уже мог выглядеть следующим образом:
a := 10;
print a;
И многие программисты вздохнули спокойно, так как больше не нужно было напрямую работать с регистрами памяти. Благодаря высокоуровневым языкам программирования можно было легко моделировать ситуации из математики и физики. Но ведь программирование - это не только наука и игры. Да и не только математика и физика. И программисты начали моделировать реальный мир. Но здесь возник ряд проблем, так как реальный мир намного и намного сложнее, чем предполагали на тот момент.
Моделирование основано на том, что вместо реального объекта (предмета) мы представляем его урезанную модель. Хотя многие программисты, услышав слово "модель" ассоциируют ее с Active Record. Но "модель" - это просто модель, ее необходимо понимать в общем смысле. И когда мы будем рассматривать парадигму MVC, мы этой темы обязательно коснемся, и разберем, что же такое на самом деле модель, контроллер, а что - представление.
Модель захватывает абсолютно все, что связано с реальной жизнью: процессы, сущности и многое другое. А на этом и основано проблемно-ориентированное проектирование (Domain-driven design, DDD) - проектирование на основе предметной области.
Так что получили: ушли от байт-кода и пришли к реальному программированию. Но и тогда пришли к тому, что появилось такое понятие, как социальный кодинг.
Основные парадигмы программирования
В итоге, пока развивалось программирование, появлялись следующие основные парадигмы программирования:
- императивное программирование
- декларативное программирование
- структурное программирование
- процедурное программирование
- функциональное программирование
- объектно-ориентированное программирование
Каждую из парадигм разберем отдельно. А объектно-ориентированной посвятим большую часть времени.
Coder Yii, продолжение, конечно, будет
день добрый! продолжение планируете?