Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

PHP для начинающих Простые вещи или лирическое отступление


Партнерская программа Wizards World - заработай вместе с крупной онлайновой игрой. Размести ссылку на своем сайте и получай проценты от платежей привлеченных пользователей.

«Программирование – это не эти ваши навороченные инструменты, а – прежде всего! – математика». Так говорил мой старый учитель по информатике и я, тогда еще 14-летний подросток, считал его закостенелым консерватором. В самом деле, о какой высшей математике может идти речь, когда программа – это просто набор команд, которые машина выполняет одну за другой в нужном порядке?

Прошло почти 20 лет и теперь я уже сам говорю, что «инструмент всегда вторичен, гораздо более важным является умение правильно думать». Что же такое программа, данные и алгоритмы? Элементарные вещи, основы, в которые не приходится вдумываться. А зря…

Итак, программа – это набор команд, которые понимает машина. Алгоритм – это описание процесса. Разнице небольшая, но есть. Алгоритмы могут быть любой степени абстрактности, например «находим 10 самых редко используемых файлов» или «такой же способ перебора у нас будет и в каталоге продукции». Так можно и нужно писать документацию. Причем документацию к проекту на любом языке. Это описание для людей. Программа же – описание для машины, на языке машины и без абстракций совершенно. Понимающие эту разницу могут писать на PHP, используя примеры из других языков программирования. Повторюсь, инструмент вторичен и сказанное здесь может использоваться в проектировании совершенно других систем и на других языках.

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

Линейное программирование. Программа записывалась команда за командой и так же, команда за командой выполнялось. Одна из команд могла управлять последовательностью выполнения и позволяла «перепрыгнуть” через несколько команд в зависимости от некоторого условия. С возрастанием сложности программ программирование с использованием многочисленных переходом стало очень утомительным и получило название «спагетти-стиля» из-за запутанности программы. Команда goto во многих языках программирования имеет дурную славу пережитка эпохи линейного программирования.

Структурное программирование в самой простой формулировке сводится к объединению нескольких команд в единый блок (структуру), которые выполняются или не выполняются как одна команда. И вместо переходов по условию выполняется одна команда if (условие) блок1 else блок2, а для повтора до тех пор, пока не нарушится условие while (условие)  блок. Блок – это набор команд в фигурных скобках

if ($a == 0) echo “Нулевое значение, ничего не делаем”;

else

{

echo “Не нулевое значение”;

if ($a>0)

{

            $a = 1;

            echo “Для положительных значений – меняем на 1”;

}

else

{

$a = $a * 3;

echo “Отрицательные значения утраиваем;

}

}

 

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

Прежде чем идти дальше, обратим свой взор на переменные. Переменной называется именованная часть памяти для хранения информации. За этим строгим определением скрываются две вещи – у каждой переменной есть имя и у каждой переменной есть какое-то содержание. В первых языках программирования вид информации не задавался и зависел только от того, каким именно образом будет пользоваться программа этой информацией – выводить строку, хранить результаты математических операций или использовать в качестве логического флажка «да»/«нет». В php переменные – это то, что начинается со знака $ («доллар»).

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

Однако вернемся к программным структурам. Блоки команд могут иметь имя. Именованные блоки называются функциями и описываются так:

 

function fact ($n)

{

if  ($n == 0) return 1; else return $n * fact (n-1);

}

 

Чтобы вычислить факториал числа 5 (напомним, что факториал это 1 х 2 х 3 х  4 х  5), необходимо обратиться к этой функции по имени и передать ей значение.

 

$f = fact (5);

 

Эта строка передает управление блоку с названием fact, но делает это так, чтобы внутри блока значение переменной N было равно 5. Больше нигде этой переменной нет – то есть «область видимости» переменной ограничивается функцией fact. Это если кратко. Не забываем, что сегодняшняя рассылка максимально обзорная, запоминаем на будущее и идем дальше.

Понятие объектно-ориентированной концепции (парадигмы, философии, если угодно) является логическим продолжением структурного программирования. Являясь серьезной концепцией, она кажется очень сложной, но на деле…. Впрочем, смотрите сами.

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

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

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

В завершении скажу, что все описанное здесь предназначается лишь для получения общей картины. Очень много мелочей было сознательно упущено из виду, чтобы за «деревьями» мы не потеряли из виду «леса». Все это мы будем изучать в новом году. Оставайтесь с нами… и с наступающим Новым годом!

Бесплатный каталог Webfile - музыка, видео, картинки!
Подпишись на обновления и получай по почте прямые ссылки на новые файлы!
Подпишись на обновления каталога:


В избранное