кстати, о краткости кода.
можно
<?php if ($a != 0) { echo 'текст';} ?>
а можно
<?=($a)?'текст':''?>
так что тоже не критерий.
Вид для печати
кстати, о краткости кода.
можно
<?php if ($a != 0) { echo 'текст';} ?>
а можно
<?=($a)?'текст':''?>
так что тоже не критерий.
тогда 3 критерия пусть будет
1) краткость
2) понятность(комментированность)
3) защищенность
По поводу краткости, это значит, не меньше символов, а то, что бы говнокода не было(за примерами идти сюда)
Претензии по критериям принимают судьи и Webmaster. Я - лишь ведущий и организатор основных составляющих конкурса.
Flok, все подозрительные материалы в интернете будут рассматриваться всеми судьями и организаторами. Так же будут смотреться всевозможные данные об авторе "схожего" кода, обычного текста.
В случае дисквалификации пользователь может подать протест, объяснив ситуацию.
Уверен, что дисквалифицировать никого не придётся, по крайней мере, надеюсь на это.
MetSerp, конечно от настроек зависит, но я не видел ещё ни одного сервера, в котором <?= не работало как как команда "покажь" =)
кстати, ещё мысль:
<?php if ($a != 0) {?> текст <? } ?>
тоже работоспособный код.
и как судить, какой из 3 предложенных вариантов самый оптимальный? )
Я думаю краткость здесь - это сам алгоритм, а не кол-во символов. Если, например, можно обойтись 1 циклом в 10 проходов с 1 условием, зачем нагружать код оператором switch с вложенными циклами?
Имхо, разницы в <?php echo '';?> и <?='';?> вообще не вижу. Да, 2ая конструкция не везде сработает, да меньше символов, но функция-то выполняется одна и та же.
То же оформление кода:
<?php if (1) { ... } ?>
или
<?php if(1)
{
...
}
?>
Лишние пробелы и переводы строк заметили? А разницу в выполнении кода? :)
кстати, нам на матобесе демонстрировали пример кода (не пытайтесь понять задачу):
for ($i = 0; $i<10; $++) {и код
if ($k > 0) {
$a = $a + $i
}
else {
$a = $a*$i
}
}
if ($k > 0) {в первом случае меньше кода, но больше нагрузка на сервак из-за проверки $k>0 при каждом шаге цикла.
for ($i = 0; $i<10; $++) {
$a = $a + $i
}
}
else {
for ($i = 0; $i<10; $++) {
$a = $a * $i
}
}
во втором случае проверка делается перед циклами, размер кода вырастает почти в 2 раза, зато нагрузка на сервер снижается.
Вот и как тут оценивать? по нагрузке выигрывает второй код, по компактности и удобству чтения первый.
Nitrex, почему это разную задачу? о_О
p.s.: меня прёт моя опечатка $++ :1135:
А когда именно пойдут вопросы?
Я вот читая, не мог вехать одного:
Какие критерии будут приоритетными для решения задач. Поскольку наверное все известно, что сделать супер код (тем более програму) по всем критериям не возможно, ну разве что:
<?=$x?"Yes":"No"?>
В правилах (первый пост этой темы) крупным шрифтом написано, когда начало - 19 ноября в 21:00 по Москве и в 20:00 по Минску.
Оценки ставят люди. Ну понятно, что для суперпроги нужен большущий код, но если это действительно будет суперпрога, тебе не поставят низкую оценку за большое количество кода. То есть оценки по каждому критерию будут ставятся с учётом важности "оцениваемого материала"данного критерия для программы. То есть, если у тебя куча бесполезного кода, то за это уже снизят оценку в количестве кода.
Время на решение одной задачи...
А как же наработки...? Остальное - нормально.
Что опять написать программу выводящую свой код на экран или поменять значения 2 переменных без использования третьей?
Почитал... прикольно. Написать законченую галерею с админкой... за банер на этом сайте? Не интересно вообще. А на счёт судей - и что там насмотрят? О да, работает :) В начало микротайм и в конец и по 10 раз ф5 в браузере. у кого меньше времени, тот и победил
Это РНР, тут важен понятный для программиста безглючный код (нагрузка это дело десятое совершенно, и снижать её надо в очень редких при работе над Highload проектами, но это штучный товар, типичному РНР-программисту это даже уметь не обязательно)
По этому данный конкретный код я бы написал проще в 100 раз
for ($i = 0; $i<10; $++) {
$a = $k > 0 ? $a + $i : $a * $i;
}
По теме конкурса. Призы смехотворны, уж если конкурс создан для привлечения людей, так уж и привлекайте людей, а не школоту...
Vladson, спасибо за ваше мнение
пока наши конкурсы проводятся для того, чтобы пользователи расширили свои знания участвуя в конкурсе и наличие призов (хоть и не столь значительных) это дополнительный стимул для участия
мы не присуждаем звание лучший программист PHP, т.к. не претендуем пока на такой уровень конкурса
и для нас это будет хорошим опытом, и если действительно люди захотят более навороченный конкурс - тогда и мы задумаемся над такой реализацией
RayOfLight, вы не поняли. (Видимо опыта именно коммерческого рассмотрения скриптов у вас не очень много.)
1 - Я говорю о быстродействии именно РНР, а не о быстродействии готового продукта. Оно НИКОГДА не будет узким местом при грамотном проектировании. Кеширование одного SQL-запроса перекроет 100кратную оптимизацию РНР-циклов и прочей мути. (Исключение Highload, но там вообще чаще предпочитают избегать РНР и кстати не зря.)
2 - Код написанный для программистов снижает затраты на поддержку, упрощает модификацию а стало быть выгоден заказчику.
3 - Вот из за таких программеров которые пишут "важно, что работает" мы (РНР-шники) и имеем авторитет говнокодеров, а сам РНР считают за "недоязык" какой-то. Между тем на деле программирование требует грамотного и широкого подхода независимо от языка. (Причём рассматривать надо как техническую составляющую, так и коммерческую.)
Vladson, я и не говорил, что пишу "лишь бы работало". Я имею в виду, что заказчик код все равно не поймет (а иногда и принцип работы скрипта не понимает, пока наглядно не покажешь). Я не отметаю полностью читаемость кода и прочие элементы программистской этики, а показываю вам взгляд на работу со стороны заказчика. И если код вашего скрипта будет суперпонятным, суперстильным, "написанным для программистов", но сам скрипт не понравится заказчику, все можно будет выкинуть.
Возможно, не настолько много как у вас, но пальцы можете оставить при себе. :0051:
Vladson, у нас с вами совершенно разные взгляды.
Я делаю работу прежде всего для заказчика, для вас же важно, что о вас подумают те, кто будут ковыряться в вашем коде. Не думаю, что есть еще смысл спорить, т.к. кроме вашего ЧСВ больше ничего не видно.
Да и оффтоп мы тут развели.
Vladson, конкурс на этом форуме дает нам возможность посмотреть, какой подход будет эффективнее.
Плевать более чем полностью. Интересует только то чтоб у заказчика не возникло трудностей с моим кодом в будущем.
Вот мы и подошли к главному. На что я и хотел указать сразу. (это вы уже спровоцировали меня на объяснение прописных истин о быстродействии)
Где гарантия что жюри имеет более правильный взгляд чем участники конкурса ?
(В программировании нередко получается так что с опытом код становится проще и проще)
Как определить низкокачественный перед глазами код или просто член жюри ещё "не дорос" до такого кода ?
Программирование это не только "код" это очень обширная область, и оценивать любой код это очень и очень субъективное занятие. По этому я вообще не рекомендовал бы подобные конкурсы.
Vladson, мнение жюри всегда является субъективным, и да ест вероятность того, что участник может оказаться уровнем выше члена жюри
а конкурс направлен не на выявление кто тут царь всея PHP, а для того, чтобы все получили новые знание и опыт
будем рады, если и Вы примете участие в нашем конкурсе
Есть небольшое пожелание - в конце конкурса не только назвать победителей, но и опубликовать самые удачные решения.:0024:
Предлагаю предупреждать пользователей о возможных косяках и уязвимостях в коде. Найдутся же те, кто просто захочет использовать готовое решение, полученное на конкурсе, и просто скачают себе архивчик.
Webmaster,может я и действительно плуг, но как прикрепить атач? Просто как файл?