<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Работа для  программистов &#187; ООП</title>
	<atom:link href="http://job-interview.ru/articles/post/tag/%d0%be%d0%be%d0%bf/feed" rel="self" type="application/rss+xml" />
	<link>http://job-interview.ru/articles</link>
	<description>вакансии, вопросы, статьи</description>
	<lastBuildDate>Thu, 29 Mar 2012 20:53:41 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Разработка в среде WEB: Java или PHP?</title>
		<link>http://job-interview.ru/articles/post/356</link>
		<comments>http://job-interview.ru/articles/post/356#comments</comments>
		<pubDate>Tue, 28 Feb 2012 18:31:26 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[ООП]]></category>
		<category><![CDATA[программирование]]></category>

		<guid isPermaLink="false">/articles/?p=356</guid>
		<description><![CDATA[Вместо предисловия.
Я постараюсь максимально объективно сравнить два языка. В конечном итоге, выбор платформы, стиля и языка &#8211; не определяющий фактор успеха. Главное, чтобы руки разработчика не повторяли форму интеграла. Ведь язык лишь инструмент, а инструмент, как известно, продолжение рук. 

Начнем.


WEB развивается уже второй десяток лет. Время статичных HTML-страниц кануло в истории, на смену которому пришел [...]]]></description>
			<content:encoded><![CDATA[<h2>Вместо предисловия.</h2>
<p>Я постараюсь максимально объективно сравнить два языка. В конечном итоге, выбор платформы, стиля и языка &#8211; не определяющий фактор успеха. Главное, чтобы руки разработчика не повторяли форму <em>интеграла</em>. Ведь язык лишь инструмент, а инструмент, как известно, продолжение рук. </p>
<p><span id="more-356"></span></p>
<h2>Начнем.</h2>
<p><img border="0" align="left" style="padding: 0px 10px 10px;" src="/img/javaphp/javaphp.jpg"></p>
<p style="height: 110px;">
<strong>WEB</strong> развивается уже второй десяток лет. Время статичных <strong>HTML-страниц</strong> кануло в истории, на смену которому пришел абстрактный стандарт <em>WEB2</em>, главное требование которого &#8211; взаимодействие с пользователем. Спорить, правильно ли это, конечно, можно, только в таком случае появляется вполне резонный вопрос: зачем читать эту статью, если она о средствах создания подобных сервисов? </p>
<h2>Порог вхождения.</h2>
<p>Традиционно для сравнительного анализа языков в первую очередь используют удобство синтаксиса, скорость работы и возможности.</p>
<p>Такой подход логичен для выбора собственного. А вот с точки зрения работодателя, качества самого программиста значительно важнее.</p>
<p><strong>PHP</strong> считается простым языком. Это не удивительно: от открытия учебника до первого &#8220;HelloWorld-a&#8221; проходит не больше 5 минут. С одной стороны это хорошо. Но подводных камней не мало.</p>
<p><img border="0" align="left" src="/img/javaphp/helloworld.jpg" style="padding: 10px;"></p>
<p>Потратив неделю на изучение PHP, можно научиться базовым приемам ввода-вывода, примитивной <em>выборке из БД</em> и парочке других алгоритмов обработки информации. С усложнением задач появляется соблазн <em>изобретать &#8220;велосипеды&#8221;</em> и &#8220;костыли&#8221; на основе старых знаний, делая код нечитабельным, уничтожая возможность дальнейшей поддержки на корню.</p>
<p>Работа с таким &#8220;<em>кодером</em>&#8221; в команде, или еще хуже, поддержка проекта, написанного им, превращается в будни школьного учителя. Естественно, это утверждение относится не ко всем, но такая проблема существует.</p>
<p>Что касается <strong>Java</strong>, порог вхождения очень высокий. Вместо &#8220;<em>Установка LAMP под Ubuntu</em>&#8221; и &#8220;<em>Скачать самоучитель PHP</em>&#8220;, необходимо вникнуть в <strong>сервлеты</strong>, взаимодействие между ними, <strong>jsp</strong>, научиться работе с каким-нибудь <em>фреймворком</em>.</p>
<p>Плюс <strong>ООП</strong>, который в Java обязателен. Если проводить аналогию, начало работы сравнимо с <em>высшей математикой</em> в ВУЗ-е: всех неспособных отправить на службу родине.</p>
<p>Подобный подход к оценке языка не панацея. Достаточно много серьезных проектов, написанных на <strong>PHP</strong>. Более того, на данный момент в сфере <strong>WEB-разработок</strong> он доминирует.</p>
<h2>Синтаксис и код.</h2>
<p><img border="0" align="left" src="/img/javaphp/sourcecode.jpg" style="padding: 10px;"></p>
<p>Одна из обсуждаемых проблем <strong>Java</strong> &#8211; длиннейшие названия классов и стандартных методов. Чего только стоит &#8220;<em>System.out.println()</em>&#8221; оного вместо &#8220;<em>echo</em>&#8221; на PHP. Конечно, это легко решается &#8220;<em>import</em>-ом&#8221; в начале документа или выбором современной <em>IDE</em>, в которой достаточно написать первую букву метода или поля, как появится возможность выбора нужного из списка. Тем не менее, отрицать впечатляющий объем кода на Java &#8211;  предвзято.</p>
<p><strong>PHP</strong> тоже не идеален. Взять к примеру обязательный знак доллара перед переменной. Конечно, рациональное зерно различия между обозначениями переменных и методами(функциями) присутствует. Лично у меня это вызывает жуткую головную боль. В первую очередь от созерцания самого знака. Плюс, я так и не сумел привить у себя<br />
привычки ставить доллар перед каждой переменной. Слишком меркантильно, что-ли&#8230;</p>
<p>Что касается кода, я думаю мало кто станет спорить, что серьезный проект == серьезная <em>работа в команде</em>. А работа в команде требует годного, понятного кода, качественную <em>документацию</em>, и возможность эффективно распределить работу.</p>
<p>Здесь принудительное ООП Java и <strong>Javadoc</strong> для документации дают ощутимый прирост в копилке аргументов &#8220;За Java&#8221;.</p>
<p>В PHP эти возможности так же есть. Сравнительно недавно я узнал о аналогах Javadoc в PHP- <strong>phpdoc</strong>/<strong>PhpDocumentor</strong>.</p>
<p>С известных версий PHP поддерживает объектный подход(ООП). Правда он смешанный, и соблазн написать простую функцию без обертки очень большой.</p>
<h2>Техническая площадка.</h2>
<p><img border="0" align="left" src="/img/javaphp/servers.jpg" style="padding: 10px;"></p>
<p>С кодом мы разобрались. А вот что касается хостинга, Java в проигрыше. <strong>PHP-хостинг</strong> распространен и он дешевле.</p>
<p>Правда под вопросом, стоит ли экономить на хостинге, если проект серьезный? Тем не менее, то, что заменить техническую основу проекта на PHP проще &#8211; факт.</p>
<p>Другой вопрос, если проект используется в интрасети. Стоимость <strong>хостинга</strong> отпадает. И программирование на стороне клиента дает плюс в сторону Java. Интеграция <em>апплетов</em> на нем в сети интернет потерпела крах, так как для запуска они требуют имплементатор на локалхосте. Но когда клиенты доступны физически, проблем нет.</p>
<p>Единая платформа, без связки разных языков &#8211; очевидный плюс. </p>
<h2>Вместо заключения.</h2>
<p>Я постарался не затрагивать сравнения технических характеристик языков. Такой информации в интернете полно. Так же считаю, что качество разработки значительно важнее. Язык создан для человека, а не для процессора. Для второго есть ассемблер.</p>
<p>Претензий на объективность у меня нет. Я попытался, насколько успешно- не знаю. Буду рад аргументированной критике.</p>
<p>Под конец повторюсь: все в руках разработчика, язык лишь инструмент. Профессионал и пальцем болт закрутит.</p>
]]></content:encoded>
			<wfw:commentRss>http://job-interview.ru/articles/post/356/feed</wfw:commentRss>
		<slash:comments>568</slash:comments>
		</item>
		<item>
		<title>Вопросы на собеседовании для PHP-программиста (часть 2)</title>
		<link>http://job-interview.ru/articles/post/57</link>
		<comments>http://job-interview.ru/articles/post/57#comments</comments>
		<pubDate>Wed, 08 Jul 2009 21:18:15 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[Собеседования]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[вопросы]]></category>
		<category><![CDATA[ООП]]></category>
		<category><![CDATA[собеседование]]></category>

		<guid isPermaLink="false">/articles/?p=57</guid>
		<description><![CDATA[Итак, в продолжение моей предыдущей статьи, выкладываю следующий список вопросов, на которые мне приходилось отвечать на собеседованиях. В первой статье я разделил их на 7 тем и выложил вопросы из первых двух.
Теперь я затрону 2 темы — это «Администрирование СУБД» и «Основные принципы ООП».
Как уже было упомянуто, я являюсь PHP-программистом и, основываясь на своем опыте [...]]]></description>
			<content:encoded><![CDATA[<p>Итак, в продолжение моей предыдущей <a href="/articles/post/12">статьи</a>, выкладываю следующий список вопросов, на которые мне приходилось отвечать на <strong>собеседованиях</strong>. В первой статье я разделил их на 7 тем и выложил вопросы из первых двух.</p>
<p>Теперь я затрону 2 темы — это <strong>«Администрирование СУБД»</strong> и <strong>«Основные принципы ООП»</strong>.</p>
<p>Как уже было упомянуто, я являюсь <em>PHP-программистом</em> и, основываясь на своем опыте прохождения собеседований, могу сказать, что в основном при упоминании СУБД имеется ввиду <strong>MySQL</strong>, реже PostgreSQL. В настоящей статье я перечислю вопросы, касающиеся администрирования именно MySQL.</p>
<h3>Администрирование MySQL</h3>
<blockquote>
<p>1.&nbsp;&nbsp;Что работает быстрее? <em>MyISAM</em> или <em>InnoDB</em>? Почему в основном используют MyISAM?</p>
<p>2.&nbsp;&nbsp;Есть ли для MySQL универсальная защита от <em>SQL-инъекций</em>?</p>
<p>3.&nbsp;&nbsp;Какими средствами вы будете пользоваться при поиске источника замедления запросов к MySQL? Дайте описание полей, выводимых командой <em>EXPLAIN</em>.</p>
<p>4.&nbsp;&nbsp;Расскажите о способах хранения деревьев в таблице? Например, когда нужно реализовать древовидные комментарии к статье.</p>
<p>5.&nbsp;&nbsp;На что вы в первую очередь обратите внимание при при наличии ощутимых «тормозов» MySQL при условии, что все направленные запросы составлены корректно? Расставьте приоритеты:</p>
<ul>
<li>Настройки MySQL</li>
<li>Файловая система</li>
<li>Язык программирования</li>
<li>Память</li>
</ul>
<p>6.&nbsp;&nbsp;Перечислите случаи, когда использование индексов может только навредить.</p>
</blockquote>
<h3>Основные принципы ООП</h3>
<blockquote>
<p>1.&nbsp;&nbsp;Чем <em>интерфейс</em> отличается от <em>абстрактного класса</em>?</p>
<p>2.&nbsp;&nbsp;Как реализовать <em>множественное наследование</em> в PHP?</p>
<p>3.&nbsp;&nbsp;Напишите класс, реализующий <em>синглтон</em>, подсчитывающий количество попыток создания объектов этого класса.</p>
<p>4.&nbsp;&nbsp;Каким будет вывод? Объясните.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?</span>
<span style="color: #000000; font-weight: bold;">class</span> foo <span style="color: #009900;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">function</span> bar<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span><span style="color: #000088;">$a</span><span style="color: #009900;">&#41;</span> 
  <span style="color: #009900;">&#123;</span> 
    <span style="color: #000088;">$a</span><span style="color: #339933;">++;</span> 
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">function</span> bar2<span style="color: #009900;">&#40;</span><span style="color: #000088;">$a</span><span style="color: #009900;">&#41;</span> 
  <span style="color: #009900;">&#123;</span> 
    <span style="color: #339933;">++</span><span style="color: #000088;">$a</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000088;">$f</span> <span style="color: #339933;">=&amp;</span> <span style="color: #000000; font-weight: bold;">new</span> foo<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$a</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> 
<span style="color: #000088;">$b</span> <span style="color: #339933;">=&amp;</span> <span style="color: #000088;">$a</span><span style="color: #339933;">;</span> 
<span style="color: #000088;">$c</span> <span style="color: #339933;">=&amp;</span> <span style="color: #000088;">$b</span><span style="color: #339933;">;</span> 
<span style="color: #000088;">$d</span> <span style="color: #339933;">=&amp;</span> <span style="color: #000088;">$c</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$f</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">bar</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$a</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$f</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">bar2</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$a</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$d</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>5.&nbsp;&nbsp;Для чего нужен <em>паттерн</em> «Наблюдатель». В каких случаях его применение может быть полезно?</p>
</blockquote>
<p>
На этом все. В следующей статье я выложу вопросы по оставшимся темам:</p>
<ul>
<li><em>Регулярные выражения</em></li>
<li><em>Основные протоколы интернета</em></li>
<li><em>Работа в командной строке Linux</em></li>
</ul>
<p><a href="/articles/post/12">Вопросы на собеседовании для PHP-программиста (часть 1)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://job-interview.ru/articles/post/57/feed</wfw:commentRss>
		<slash:comments>45</slash:comments>
		</item>
	</channel>
</rss>
