Как стать автором
Обновить
19
0

Пользователь

Отправить сообщение
сенкс. почитаю
по поводу БД вы ошибаетесь, мне кажется.
в Пхп5 же есть PDO (Php Data Objects), высокий уровень абстракции, биндинг и плейсхолдеры, поддержка кучи БД…

для HTML разметки, действительно похоже нет ничего нативного, но честно говоря оно и не нужно. так как Пхп все же работает на другом уровне, и ему нет необходимости знать чтото о Представлении. Он готовит данные а как смешать их пусть думает программер, напрямую или используя шаблонизатор, ведь это может быть не только Html, а как вы писали выше и xml, plaintext и даже binary data…
к томуже, за Html по хорошему отвечает отдельный человек -кодер. и Пхп-программисту вообще не нужно лезть в шаблоны )
а что чаще всего на нем пишут?
а то у меня складывается впечатление что во многом он схож с Питоном.
>Так это, без рекурсии его не сделаешь. А если заменить стек вызовов на самописный то это только отодвигает агонию. %)

Исчерпать Стек и исчерпать оперативку — разные вещи, и Агония при этом отодвигается ОЧЕНЬ далеко )
прикольно.
Хотя я ждал более лаконичный код)
как это нафига?
Чтобы был выбор! ЧТоб решая задачу делать не «как все», а как необходимо для решения каждой конкретной задачи. Если заранее известно что вложенность будет небольшая то рекурсия отличный выход, а если алгоритм будет оперировать с неизвестной глубиной дерева да еще и есть основания предположить что глубина все же будет Очень большой, то есть смысл обезопасить себя от Stack overflow и написать без рекурсии.
Разминка для ума опять-же)
Так что это совсем не извращение) а один из способов развития мышления)

Давайте обещанный обход дерева директорий на Хаскеле, без рекурсии или с ней!
тоже хотел бы взглянуть, так как с Хаскелом еще не работал толком.
а при желании и на пхп можно меньше пальцы нагружать)
function getFilelist( $dir0 ) {
	$f = $d = array();
	$d[] = $dir0;
	while (sizeof($d)>0) {
		$l = glob( array_shift($d).'*' );
		foreach( $l as $n ) is_dir($n) ? $d[]=$n.'/' : $f[]=$n;
	}
	return $f;
}
причем здесь Хаскел? был вопрос о том что без рекурсии нельзя обойти дерево каталогов. я привел принцип одного из решений. о оптимизации речи небыло. на Питоне тоже можно написать компактнее ) но это уже холивар начинается…
ваши проекты без вычисления рекурсии не работают? ))
без рекурсии такое прекрасно решается с помощью Итераторов.
вот ПРИМЕРНО накидал.
общий принцип думаю станет понятен.
function getAllFiles( $dir_start ){
	$dirs = $files = array();
	$dirs[] = $dir_start;
	while (sizeof($dirs)>0) {
		$k=array_keys($dirs);
		$dir = new DirectoryIterator( $dirs[$k[0]] );
		foreach( $dir as $f ) {
			$fn = $f->getFilename();
			if (!in_array($fn, array('.','..'))) {
				if (is_dir($fn)) $dirs[] = $dir_start.'/'.$fn;
				else $files[] = $fn;
			}
		}
		unset($dirs[$k[0]]);
	}
	return $files;
}
$files = getAllFiles("C:/");
Первый блин иногда бывает комом )
НО!
Во-первых, кардинальных отличий не так много. Принцип построения и работы веб-приложений очень схожи, какой бы язык вы не выбрали.
Во-вторых, решая появившиеся проблемы, значительно повышается скилл, который, опять же, помогает далее.
В-третьих, сейчас столько документации, примеров и успешных реализаций на любой технологии, что все проблемы достаточно быстро решаются.
В-четвертых, я говорил о том что решение использовать в проекте новую технологию, принимается не «от балды» а если есть потенциальные плюсы от этого, или если использование другой технологии вызовет необходимость в изобретении костылей и т.д.

Например, на Java пришлось делать первый проект, потому что у заказчика уже крутилось много чего на Java. И даже несмотря на то что на Php я бы сделал проект менее чем за месяц, я все же не стал навязывать заказчику использовать Php. А предупредил его, что делать буду на Java, но чуть дольше ). в Итоге заказчик согласился подождать подольше, и получил сайт на Java через 2 месяца )
читая ваши сообщение, складывается впечатление что вы любую задачу решаете через рекурсию )
я уже давно работаю с Php, и применял рекурсию только несколько раз: работа с поддиректориями, xml…
в остальных случаях прекрасно можно решать задачи без неё…
Конечно по работе приходится поддерживать и дописывать проекты реализованные определенных языках и технологиях. Но когда начинаем новый проект, то иногда есть основания привести аргументы в пользу перехода на чтото другое. Если это будет эффективнее и быстрее или легче в поддержке или другие какието плюсы обнаруживаются.
Главное чтобы начальник или Team-лидер был адекватным и не был зациклен на одной технологии. Мне пока везло с такими людьми. А когда попадались консерваторы и фанатики — я с ними расставался ))

Ну а для своих проектов тем более, выбираю что душе угодно. Благо сейчас есть выбор — любую задачу можно решить кучей способов.
Многие в комментариях называют пхп-кодеров = быдло-кодерами, и типа они незная ничего лучше и из-за низкого порога вхождения пишут именно на ПХП… на собственном примере знаю что это не так.
Программист должен эволюционировать!
Я начинал с Perl.
Когда познакомился с Php и оценил его плюсы и быстроту разработки, пересел на него.
Сейчас наслаждаюсь Java, Jsp…
Далее смотрю в сторону Python.

Все это я говорю к тому, что для решения задачи надо выбирать язык который решит её наиболее качественно и быстро. И у Php тут есть своя ниша и задачи которые он решает очень хорошо.
Перечисленные в статье минусы — конечно являются частью Php, но мне например они никогда особо не мешали. Тем более что пока язык развивается есть вероятность что проблем этих станет значительно меньше.

Идеального языка я пока не встретил. В любом языке можно найти места которые лучше реализованы у языка конкурента…
несмотря на квази-красоту кода при ее использовании, переполнение стека и забивание памяти не так уж трудно вызвать. к тому же практически всегда можно сделать тоже самое, но без рекурсии, а просто изменив алгоритм.
при хорошей нагрузке даже без огромных запросов все будет тормозить.
Раз 60% съедает постгрес, значит стоит для начала разобраться с именно с ним.
- Выявить медленные запросы и провести их оптимизацию.
- создать и расставить в запросах индексы.
- уменьшить количество запросов, (особенно вставку и обновление), по возможности прикрутить кеширование
- прикрутить таймер исполнения к каждой странице, и результат складывать в лог. так можно выявить разделы сайта которые больше всех выполняются. далее можно также уже сами тормозные скрипты исследовать.
- xdebug к php поможет более детально изучить состояние переменных и памяти при дебаге
- ну и конечно код надо просмотреть. может чтото внутри какое безобразие происходит

готовых автоматизированных решений для анализа производительности не подскажу, к сожалению.
спор из разряда:
что быстрее ECHO или PRINT...
а рекурсия зло, независимо от того с include она или c eval.
что тут обсуждать вообще?
в php5 есть как минимум 2 библиотеки для работы с БД, которые позволяют использовать механизм плейсхолдеров, и еще кучу других возможностей, появившихся в современных БД.
это MYSQLI и PDO (php data objects). PDO - вообще является "фабрикой", так как поддерживает кучу БД, помимо MySQL.

насчет unregister_globals
подобный код встречал давно уже в некоторых CMS. в Mambo вроде...
щас уже думаю остались единицы разработчиков которые пользуют в приложениях $HTTP_*_VARS массивы. а вот вместо unset($GLOBALS[$name]); там в цикле можно проверять входные переменные на валидность и на присутствие атак(XSS,SQL inj...). чтоб ниже в приложение попадали гарантированно очищенные данные.
12 ...
15

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность