В этой лекции мы раскроем базовые представления о трансляторах, интерпретаторах и компиляторах.

Когда программист создает конкретную программу, допустим используя PHP, С++, Java, Delphi и тд, он вводит код на языке подобном удобочитаемому. Так гораздо проще создавать программу. Но понимает ли компьютер этот язык? На самом деле - нет.

Это значит, что необходима другая программа, которая обрабатывала бы все, что было написано с помощью исходного кода. Эта программа называется транслятором (от англ. - переводчик). Она переводит все созданное программистом на язык, который понятен компьютеру. Это все равно что человек, переводящий с английского на немецкий.

Есть разнообразные виды трансляторов. Мы рассмотрим компиляторы и интерпретаторы.

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

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

Это все равно что редакитровать статью и помечать все найденные ошибки, а затем сообщать о них.

Примеры компиляторов: С, С++, Delphi.

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

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

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

Примеры интерпретаторов: Java, JavaScript, PHP

==========================================

В этой лекции мы изучим, что такое PHP и как он работает.

Давайте рассмотрим пример. Нам нужно указать текущую дату на нашем сайте. Для этого мы используем своего рода функцию. Мы не желаем редактировать HTML-страницы каждый раз после того, как данные изменились. Это значит, что мы должны использовать язык программирования для этой цели. Наш выбор это PHP.

В первую очередь стоит отметить, что PHP (аббревиатура расшифровывается как Personal Home Page) - это язык программирования. Это самое популярное средство для создания веб-приложений.
Исходный код, который написан на PHP обрабатывается PHP интерпретатором. Этот интерпретатор обычно установлен на веб-сервере, что позволяет запускать скрипты на удаленном сервере.

Скрипт (сценарий) - по факту обозначает небольшую программу, которая встроенная в определенное окружение. Более точно будет называть PHP языком сценариев.

PHP выполняет код внутри конкретных тегов . Все что находится за пределами этих тегов отображается на экране. Таким образом, PHP генерирует веб-ресурсы (в частности HTML-документы) динамически, где PHP код интегрирован в HTML разметку, либо же этот процесс происходит напрямую, с помощью самого PHP кода.

Главный момент заключается в том, что пользователь не может видеть PHP код в качестве исходного кода веб-документа, даже если этот же документ будет открыт в браузере со скриптами. Пользователь может видеть лишь то, что PHP производит. Невозможно увидеть исходный код PHP скриптов без доступа к файловой системе удаленного сервера.
Здесь несколько примеров PHP кода:

 echo 'Hello PHP';

 for ($i = 1; $i <= 10; $i++) {
   echo $i;
}

В первом случае мы увидим текст Hello world под заголовком Hello PHP. Во втором случае мы увидим на экране числа от 1 до 10 без пробелов между ними.

Когда клиент отправляет определенный запрос серверу ( например, пользователь нажимает на ссылку) веб-сервер определяет, нужно ли его обрабатывать PHP интерпретатору. Если да, PHP интерпретирует данные скрипты и клиент затем получает ответ, который собственно был создан в процессе обработки скриптов. Файлы, которые включают в себя PHP скрипты обычно имеют расширение .php или .phtml.

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

Поскольку PHP обрабатывает код на удаленном сервере, результат не зависит от того, каким браузером пользуется клиент. PHP даст тот же результат с тем же скриптом , но отображение HTML разметки будет отличаться в зависимости от браузера.  
============================
Для того, чтобы парсер HTML идентифицировал код как PHP, об этом ему нужно об этом сигнализировать. В этих целях существуют теги начала (открывающий) и конца (закрывающий) кода PHP.

Открывающий тег это
Закрывающий тег это ?>

Таким образом, все, что размещено между такими открывающим и закрывающим тегами - интерпретируется как код языка PHP:



// here goes the code
echo 1;
x = 123;
?>



Существуют еще несколько форм записи этих тегов:

  • - сокращенная запись (short open tags)
  • <% ... %> - теги в стиле ASP.NET (ASP tags)
  • - скриптовые теги (script tags)

Сокращенная форма доступна, если в файле конфигурации php.ini соответствующая директива включена: short_open_tag=On. Аналогично и с asp формой: если включена директива asp_tags=On. Скриптовая форма доступна по умолчанию.

Замечание. Файл php.ini - это текстовый файл с основными настройками PHP. Время от времени мы будет на него ссылаться.

Замечание. Рекомендуется использовать только полную форму записи PHP тегов.



В предыдущей лекции мы познакомили Вас с тегами PHP. Как уже было сказано, они служат для вставки кода PHP в разметку HTML.

PHP теги необходимо записывать в самом HTML коде - в том месте, где требуется исполнить некоторый алгоритм средствами PHP.

Отметим, что, как правило, файл с PHP скриптом должен иметь расширение .php или .phtml. Код разметки HTML будет одинаково работать как в html-файле, так и в php-, phtml-файлах.

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

PHP позволяет сделать его динамическим, т.е. генерировать его при помощи некоторого алгоритма. Чтобы вставить блок кода PHP, используем описанные в предыдущем уроке теги:


Таким образом, мы можем помещать в HTML разметку алгоритмы, которые могут обрабатывать данные и генерировать содержимое веб-документа.


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

Попробуем разместить на страничке надпись Hello world!. Для этого необходимо записать инструкцию

echo 'Hello, world!' ;


На текущем этапе (пока мы еще не знакомы с типами данных и переменными) условимся писать эти данные в одинарных или двойных кавычках.

Т.к. эта конструкция является частью синтаксиса PHP, то ее необходимо употреблять внутри соответствующих тегов PHP. Рассмотрим пример:


Таким образом мы генерируем на веб-странице надпись 'Hello, world!'. Важно заметить, что мы можем генерировать таким образом не только просто текст, но и теги HTML - просто включив их в данные для вывода. Фактически таким образом мы можем генерировать веб-страницу при помощи PHP. Это очень важно для понимания основного предназначения PHP.

Замечание. Существует сокращенная запись открывающего тега PHP и вызова оператора echo. Для этого используется специальный короткий тег. То есть, код
Комментарий - это участок кода, который игнорируется интерпретатором и несет сугубо информационный характер. Комментарии используются для:

  • указания сопутствующего текста для кода - для того чтобы не забыть что там происходит или для того чтобы другому программисту было легче в этом разобраться;

  • временного отключения участков кода. Как правило, для того чтобы их не удалять, их просто преобразуют в комментарии.


Комментарии в PHP, как и во многих других языках программирования, бывают двух типов: однострочные и многострочные.

Чтобы добавить однострочный комментарий, необходимо обозначить его начало символами //. Конец такого комментария наступает при переходе на новую строку.

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

Чтобы добавить многострочный комментарий, необходимо определить его начало символами /*, и конец - символами */.



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

Все, что необходимо понять - это то, что PHP является программой (php), которую можно запустить (вызвать). Когда PHP скрипты исполняются на сервере - эту программу (php) запускает веб-сервер. Мы можем запустить php при помощи командой строки, если сам php установлен на компьютере.

Для того, чтобы исполнять PHP скрипты из командной строки необходимо включить т.н. интерактивную консоль, которая позволит исполнять код PHP, который был набран в ней. Для этого необходимо вызвать php с опцией -a.

Для того чтоб исполнить существующий скрипт (в отдельном файле), необходимо вызвать php и указать полный путь к файлу.

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


Инструкцией (statement) называют строку кода, которая эквивалентна некоторому действию в рамках синтаксиса. Это, фактически, команда интерпретатору. В PHP инструкции должны быть разделены точкой с запятой. Например, выведем некоторый текст двумя разными вызовами echo



Здесь мы воспользовались оператором echo, о котором шла речь в одном из предыдущих уроков. В конце каждой инструкции мы поставили точку с запятой.

Замечание. Если закрывающий PHP тег присутствует, то ставить точку с запятой после последней инструкции необязательно


В этом уроке (и в дальнейших аналогичных) мы рассмотрим основные ошибки, которые имеют отношение к тематике пройденного материала.

Точка с запятой. Распространенной механической ошибкой, которой страдают даже опытные программисты, является отсутствие точки с запятой ( ; ) в конце инструкции. Эта ошибка подпадает под тип ошибки Parse error. Об ошибке интерпретатор PHP сообщит, сгенерировав сообщение в качестве веб-документа в окне браузера.

Теги PHP. Частой ошибкой является отсутствие закрывающего тега PHP при интеграции скрипта в HTML

<body> 
    echo "Hello world"; 
   <p>Another paragraph</p> 
</body>


Тег не ожидается интерпретатором PHP, потому что такой конструкции нет в данном языке. Соответственно, интерпретатор выдаст ошибку Parse error. Правильным было бы закрыть тег.



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

Замечание. Напомним, что при отсутствии HTML кода или других текстовых данных в файле, закрывающий тег PHP не обязателен.

Многострочные комментарии. Если Вы используете многострочный комментарий, не забывайте закрывать его, иначе весь последующий код будет игнорироваться интерпретатором PHP, соответственно, не будет выполнен.

Также, необходимо внимательно использовать вложенные комментарии. Например, комментарий

/*   This is   /* included comment */    it's bad.  */


будет провоцировать ошибку Parse error, т.к. интерпретатор расценит /* This is /* included comment */ как закрытый многострочный комментарий, а остаток it's bad. */ как сам код и это приведет к ошибке.        
Переменной можно назвать зарезервированную именованную область памяти, в которой могут храниться данные определенного типа. Иначе говоря, это ячейка для хранения данных. Поскольку переменная - это именно ячейка, а не сами данные, значит, ее содержимое можно изменять. Отсюда и название - переменная.

Для лучшего понимания, приведем пример, используя бытовые понятия. Пусть у нас есть коробка. На коробке мы напишем некоторое слово. Например, слово "яблоки". В саму коробку положим 5 яблок. Через час мы съедим два яблока и их станет 3. По этому же принципу работают переменные. Коробка - это переменная, надпись на коробке - это название переменной, а значение переменной - это количество яблок. Оно может со временем измениться.

Переменная в PHP определяется при помощью символа $ в начале ее имени, например

$apples, $x, $name, $properties
Следует также заметить, что имена переменных регистро-зависимы. Это означает, что переменные $apples и $Apples ссылаются на разные ячейки памяти. Это разные коробки, проще говоря.

Существуют определенные правила для составления названия переменной, а именно:

  • в имени переменной можно использовать лишь символы алфавита (a-z, A-Z), цифры (0-9) и знак подчеркивания _
  • имя переменной (после символа $) должно начинаться либо с символа латинского алфавита, либо с символа подчеркивания


Рассмотрим допустимые названия переменных:
$a, $count, $max_value, $_action, $d2o
Примеры недопустимых имен переменных это:
$222, $5f, $hello?, $get products

Для создания переменной, ее необходимо инициализировать (объявить).

Инициализация переменной происходит во время присвоения ей некоторого значения (детальнее про оператор присвоения - в следующих уроках). После того, как переменная объявлена, ее можно использовать в последующем коде в рамках файла. Например:



Замечание. Использовать переменную без объявления (инициализации) также можно, но это будет сопровождаться замечаниями (Notice) со стороны интерпретатора.

Замечание. Переменная $this не может быть инициализирована (детальнее про эту переменную - в разделе ООП)

Существуют также некоторые рекомендации по именованию переменных. Например, одна из рекомендаций сообщества разработчиков PHP (PSR - PHP Standard Recommendations) звучит так: начинайте имя переменной с буквы в нижнем регистре.

Внесем также нашу авторскую рекомендацию: разделяйте составляющие слова в имени переменной знаком, например

$max_value, $my_var , $products_all
Рассмотрим перечень типов данных в PHP.

Прежде всего, необходимо упомянуть, что хоть PHP и называют слабо- или динамически типизированным, это вовсе не значит, что в нем нет такого понятия как "тип данных". Как и в любом другом языке программирования, в PHP существуют несколько элементарных (скалярных) типов и несколько структурированных:

  • Строчный string

  • Целый integer

  • Число с плавающей точкой float

  • Логический boolean

  • Массив array

  • Объект object

  • Ресурс resource

  • Без значения / значение неизвестно null

Детальнее эти типы данных будут описаны в следующих уроках.

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


Логический или булев тип ( boolean, bool) - один из простейших типов данных.

Название этого типа происходит от фамилии Джорджа Буля (Geogre Boole) - известного математика.

Ячейка памяти с таким типом занимает всего 1 бит и хранит одно из двух возможных значений, которые определены ключевыми словами true или false. Эти ключевые слова не являются регистро-зависимыми, т.е. trueи TRUE- это одно и то же.

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

Замечание. При попытке вывода на экран значения trueоператором echo, на экран будет выведено 1. Если подставить в оператор echo значение false- на экран не будет выведено ничего. Это является результатом приведения типов (Type Casting, детальнее - в следующих уроках)




   

Комментарии

Популярные сообщения из этого блога

Для чего создан данный блог.