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

ExCode.ru - программирование на высоком уровне


ExCode.ru - программирование на высоком уровне
Выпуск №25 ( 2006.02.19 )
Здравствуйте, уважаемые подписчики!

Этот выпуск рассылки подготовил MadvEX, это первый мой выпуск, так что пожалуйста строго не оценивайте и не спешите отписываться ;)
Рассылка так долго не выходила потому что была сессия, но слава богу она позади и жизнь приходит в своё обычное русло, кстати, хочется передать отдельный привет всем студентам которые сдали эту сессию, а тем кто ещё не сдал, пожелать удачи. Хочется так же сказать пару слов о том почему рассылку стал вести я, просто LedWorm переключился на новый проект e-zine - это новый электронный журнал для программиста, хочется пожелать ему и другим авторам удачи, кстати, автором может стать каждый, главное, что было желание и знания которыми вы хотели бы поделиться с другими людьми которым так же интересно заниматься программированием и всем что с этим связанно :).
Кстати мы приглашаем вас посетить наш форум и задать на нём Ваш вопрос, а мы в свою очередь постараемся на него ответить. ;)


Новости копьютерного мира:
2006-01-27    Калифорнийские власти подали в суд на создателей игры GTA3 за скрытую порнографию
Власти лос-Анджелеса подали в суд на создателей скандально известной компьютерной игы Grand Theft Auto: San Andreas (GTA3), которую ранее признали содержащей порнографию вопреки присвоенному ей рейтину, согласно классификационным нормам которого наличие порнографии не допускается.

2006-01-27    Microsoft согласилась предоставить исходные коды Windows
Компания Microsoft согласилась предоставлять другим софтверным производителям исходные коды некоторых компонентов своей операционной системы Windows. Такое заявление сделали в компании по следам антимонопольных мер Евросоюза, власти которого принудили компанию с лета этого года изменить маркетинговую политику при работе на территории ЕС.

2006-01-27    Доменное имя sex.com продано за 12 миллионов долларов
Доменное имя sex.com, считающееся одним из наиболее привлекательных в индустрии развлечений "для взрослых", по предварительным сведениям, недавно было продано его владельцем Гэри Кременом (Gary Kremen) компании Escom из Бостона.

2006-02-09    Новый сервис Google пугает пользователей
Google предлагает новый инструмент, который позволит пользователю искать информацию на удаленном компьютере. С помощью этого инструмента, можно будет, например, с домашнего компьютера просматривать документы, электронную почту и сообщения интернет-пейджеров, хранящиеся на компьютере в офисе.

2006-01-27    Китайский Google будут подвергать цензуре
Компания Google согласилась подвергать цензуре результаты запросов китайской версии своего поискового сервиса, в соответствии с требованиями властей КНР, сообщает AP.

2006-02-09    Исламские хакеры штурмуют датские сайты
Волна протестов мусульман всего мира по поводу опубликованных карикатур на пророка Муххамеда перекинулась на виртуальное пространство. За последние несколько дней исламские хакеры совершили более тысячи попыток взломать сайты, опубликовавшие скандальные рисунки.

2006-02-09    Священники обсудят "Код да Винчи" в интернете
Компания Sony Pictures открывает в интернете сайт "Вызов да Винчи" для публичных дискуссий вокруг известного романа "Код да Винчи" Дэна Брауна. Так создатели картины, премьера которой назначена на 19 мая 2006 года, планируют направить жаркие теологические споры в мирное русло, комментирует газета The New York Times.

2006-02-09    Лучший русскоязычный блог оценили в $500
Сетевое издание "Справочник писателя" сообщает о старте конкурса на лучший русскоязычный сетевой дневник. Премию учредили блоггеры, пишущие под псевдонимами agent_marge, bearsriver и no_lands_man. Победитель конкурса получит $500 и право разместить в своем дневнике особый "Знак лауреата". Авторы дневников, занявших второе и третье места, получат по $100.

2006-02-09    В 2005 году в Японии зафиксировано рекордное количество интернет-самоубийц
За 2005 год количество людей, совершивших групповое самоубийство после знакомства в интернете, достигло в Японии рекордного числа 91 человек, что в два раза больше аналогиченого покахзателя за 2004 год, сообщает Reuters со ссылкой на источник в органах охраны правопорядка Японии.

2006-02-09    Google исключил сайт BMW из "черного списка"
Внесение компанией Google в "черный список" сайтов немецких автопроизводителей BMW.de и Ricoh.de, похоже, стало больше, чем демонстрацией силы. Это было первое громкое предупреждение для всех сайтов, которые будут злоупотреблять возможностями поисковой системы Google, используя нечестные методы увеличения посещаемости.

Интернет-магазин для программистов:

Как известно у нас на сайте имеется интернет магазин для программиста на DVD, в нём вы сможете найти большое количество программ для разработчиков, дизайнеров и проектировщиков. А в этом разделе я буду рассказывать о новинках в нашем магазине и описывать наиболее интересные диски.
На сегодняшний день наиболее интересные диски:
Microsoft Visual Studio 2005 + MSDN Library
E-book - библиотека программиста (150 учебников по программированию)
MSDN - документация по программированию
.NET - все для программиста
DVD - Delphi
Описание увидите в следующем номере ;)

Статья номера:

Интерпретатор или компилятор


Автор: Котеров Д.В.

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

Замечание

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

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

В этот момент он представляет собой классический интерпретатор.

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

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

Замечание

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

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

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

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

Замечание

Я уже предвижу, что множество читателей не согласятся с такой формулировкой. Конечно, слово "компилятор" звучит солиднее, чем какой-то там "интерпретирующий транслятор". Но все дело в том, что английское слово compiler переводится не только как "компилятор", но также и как "транслятор". Задумайтесь над этим, если окончательно решили для себя считать PHP и Perl компиляторами.


Новые статьи на сайте ExCode.ru:
НазваниеРаздел
Кэширование в PHP - Часть 2PHP » Общие
Характеристика языка PHPPHP » Общие
Установка ApacheWeb » Apache
Виртуальные хосты ApacheWeb » Apache
Установка PHPPHP » Общие
Установка MySQLWeb
Интерпретатор или компиляторPHP » Общие
Достоинства и недостатки интерпретатораPHP » Общие
Пример PHP-программыPHP » Общие
Использование PHP в WebPHP » Общие
ПеременныеPHP » Общие
Ссылочные переменныеPHP » Общие
Некоторые условные обозначенияPHP » Общие
Константы PHP » Общие
ВыраженияPHP » Общие
Логические выраженияPHP » Общие
A Terse yet Rich SyntaxС / С++ » На английском [eng] » The Art of C++ » The Power of C++
Powerful LibrariesС / С++ » На английском [eng] » The Art of C++ » The Power of C++
The STLС / С++ » На английском [eng] » The Art of C++ » The Power of C++
The Programmer Is in ControlС / С++ » На английском [eng] » The Art of C++ » The Power of C++
Detailed ControlС / С++ » На английском [eng] » The Art of C++ » The Power of C++
Operator OverloadingС / С++ » На английском [eng] » The Art of C++ » The Power of C++
Comparing the Two Approaches to Memory ManagementС / С++ » На английском [eng] » The Art of C++ » Garbage Collector
The Legacy of C++С / С++ » На английском [eng] » The Art of C++ » The Power of C++
A Clean, Streamlined Object ModelС / С++ » На английском [eng] » The Art of C++ » The Power of C++
Creating a Garbage Collector in C++С / С++ » На английском [eng] » The Art of C++ » Garbage Collector
Choosing a Garbage Collection AlgorithmС / С++ » На английском [eng] » The Art of C++ » Garbage Collector
A Simple C++ Garbage CollectorС / С++ » На английском [eng] » The Art of C++ » Garbage Collector
GCPtr In DetailС / С++ » На английском [eng] » The Art of C++ » Garbage Collector
GCInfoС / С++ » На английском [eng] » The Art of C++ » Garbage Collector
IterС / С++ » На английском [eng] » The Art of C++ » Garbage Collector
How to Use GCPtrС / С++ » На английском [eng] » The Art of C++ » Garbage Collector
Some Things to TryС / С++ » На английском [eng] » The Art of C++ » Garbage Collector
What Is Multithreading?С / С++ » На английском [eng] » The Art of C++ » Multithreading in C++
Why Doesn’t C++ Contain Built-In Support for Multithreading?С / С++ » На английском [eng] » The Art of C++ » Multithreading in C++
What Operating System and Compiler?С / С++ » На английском [eng] » The Art of C++ » Multithreading in C++
An Overview of the Windows Thread FunctionsС / С++ » На английском [eng] » The Art of C++ » Multithreading in C++
Creating a Thread Control PanelС / С++ » На английском [eng] » The Art of C++ » Multithreading in C++
A Multithreaded Garbage CollectorС / С++ » На английском [eng] » The Art of C++ » Multithreading in C++
Some Things to TryС / С++ » На английском [eng] » The Art of C++ » Multithreading in C++
Why Use a Translator?С / С++ » На английском [eng] » The Art of C++ » Extending C++
The Experimental KeywordsС / С++ » На английском [eng] » The Art of C++ » Extending C++
A Translator for Experimental C++ FeaturesС / С++ » На английском [eng] » The Art of C++ » Extending C++
Using the TranslatorС / С++ » На английском [eng] » The Art of C++ » Extending C++
How the Translator WorksС / С++ » На английском [eng] » The Art of C++ » Extending C++
A Demonstration ProgramС / С++ » На английском [eng] » The Art of C++ » Extending C++
Some Things to TryС / С++ » На английском [eng] » The Art of C++ » Extending C++
The WinINet LibraryС / С++ » На английском [eng] » The Art of C++ » File Downloader
The File Downloader SubsystemС / С++ » На английском [eng] » The Art of C++ » File Downloader
The Download Header FileС / С++ » На английском [eng] » The Art of C++ » File Downloader
Demonstrating the File DownloaderС / С++ » На английском [eng] » The Art of C++ » File Downloader
A GUI-Based DownloaderС / С++ » На английском [eng] » The Art of C++ » File Downloader
Some Things to TryС / С++ » На английском [eng] » The Art of C++ » File Downloader
Finding the Payments for a LoanС / С++ » На английском [eng] » The Art of C++ » Financial Calculations
Finding the Future Value of an InvestmentС / С++ » На английском [eng] » The Art of C++ » Financial Calculations
Finding the Initial Investment Required to Achieve a Future ValueС / С++ » На английском [eng] » The Art of C++ » Financial Calculations
Finding the Initial Investment Needed for a Desired AnnuityС / С++ » На английском [eng] » The Art of C++ » Financial Calculations
Finding the Maximum Annuity for a Given InvestmentС / С++ » На английском [eng] » The Art of C++ » Financial Calculations
Finding the Remaining Balance on a LoanС / С++ » На английском [eng] » The Art of C++ » Financial Calculations
Some Things to TryС / С++ » На английском [eng] » The Art of C++ » Financial Calculations
Representation and TerminologyС / С++ » На английском [eng] » The Art of C++ » AI-Based Problem
Combinatorial ExplosionsС / С++ » На английском [eng] » The Art of C++ » AI-Based Problem
Search TechniquesС / С++ » На английском [eng] » The Art of C++ » AI-Based Problem
The ProblemС / С++ » На английском [eng] » The Art of C++ » AI-Based Problem
The FlightInfo Structure and the Search ClassС / С++ » На английском [eng] » The Art of C++ » AI-Based Problem
The Depth-First SearchС / С++ » На английском [eng] » The Art of C++ » AI-Based Problem
The Breadth-First SearchС / С++ » На английском [eng] » The Art of C++ » AI-Based Problem
Adding HeuristicsС / С++ » На английском [eng] » The Art of C++ » AI-Based Problem
The Least-Cost SearchС / С++ » На английском [eng] » The Art of C++ » AI-Based Problem
Finding Multiple SolutionsС / С++ » На английском [eng] » The Art of C++ » AI-Based Problem
Finding the “Optimal” SolutionС / С++ » На английском [eng] » The Art of C++ » AI-Based Problem
Back to the Lost KeysС / С++ » На английском [eng] » The Art of C++ » AI-Based Problem
Some Things to TryС / С++ » На английском [eng] » The Art of C++ » AI-Based Problem
A Brief Review of the STLС / С++ » На английском [eng] » The Art of C++ » Custom STL Container
Other STL EntitiesС / С++ » На английском [eng] » The Art of C++ » Custom STL Container
Custom Container RequirementsС / С++ » На английском [eng] » The Art of C++ » Custom STL Container
Creating a Range-Selectable, Dynamic Array ContainerС / С++ » На английском [eng] » The Art of C++ » Custom STL Container
Interpreters versus CompilersС / С++ » На английском [eng] » The Art of C++ » A Mini C++ Interpreter
An Overview of Mini C++С / С++ » На английском [eng] » The Art of C++ » A Mini C++ Interpreter
The Mini C++ SpecificationsС / С++ » На английском [eng] » The Art of C++ » A Mini C++ Interpreter
An Informal Theory of C++С / С++ » На английском [eng] » The Art of C++ » A Mini C++ Interpreter
The Expression ParserС / С++ » На английском [eng] » The Art of C++ » A Mini C++ Interpreter
The Mini C++ InterpreterС / С++ » На английском [eng] » The Art of C++ » A Mini C++ Interpreter
The Mini C++ Library FunctionsС / С++ » На английском [eng] » The Art of C++ » A Mini C++ Interpreter
The mccommon.h Header FileС / С++ » На английском [eng] » The Art of C++ » A Mini C++ Interpreter
Compiling and Linking the Mini C++ InterpreterС / С++ » На английском [eng] » The Art of C++ » A Mini C++ Interpreter
Demonstrating Mini C++С / С++ » На английском [eng] » The Art of C++ » A Mini C++ Interpreter
Improving Mini C++С / С++ » На английском [eng] » The Art of C++ » A Mini C++ Interpreter
Expanding Mini C++С / С++ » На английском [eng] » The Art of C++ » A Mini C++ Interpreter

Новые файлы на сайте ExCode.ru:
Файлов нет! И к сожалению в ближайшем будущем не предвидеться, так как сервак сдох, а вместе с ним и файлы :(((
Послесловие:

Ну вот и подошёл к концу мой первый выпуск :)
Для особо одаренных жизнью напомню наш адрес в Интернете www.excode.ru, и форума www.forum.excode.ru, и наконец моё мыло MadvEX@excode.ru это специально для спамеров :) Или для Вас, если у вас есть какие-нибудь предложения. До свидания!

Ведущий рассылки: MadvEX
© ExCode.ru 2005-2006

В избранное