foreach (array(10, 20, 30) as $item) { $item *= $item; if ($item > 10) print $item;
}
Это если честно, потому что в одну строчку на пхп такой код будет писать самоубийца. Поэтому четыре строчки кода. А если брать по пировскому правило if () {} то и все шесть.
Задумайтесь. Притом решение на руби хорошо тем, что по структуре напоминает просто перечисление действий, а если для пхп попросить добавить еще что-то, получится уже куча ветвлений.
>Можно. Но разница между твоим кодом и моим, в том, что я его пишу сразу с головы.
Писать с головы можно что угодно. Некоторые так и пишут, а называется это "поток сознания".
>Любой другой знаток языка читает его легко и без содрогания.
Да неужели? Хорошо, приведите пример проекта, у которого есть _файлы_ исходников размер которых > 50 килобайт. Я выдергиваю из контекста 10 строчек, а Вы расписываете их алгоритм. На все-про-все - 5 минут с момента опубликования.
>А ты сам в этой лабуде нифига не разберешься.
Мне и не надо. Я на С++ пишу.
Разница между моим кодом и Вашей записью всего-водну-строку такая же, как разница между книгой, в которой есть параграфы и абзацы и кгиной, написанной без единого перевода строки.
Если Вы не понимаете, что надо разделять сущности, которые описываешь, с этим ничего не сделать, увы.
На досуге почитайте coding rules того же ядра Линукса. Их придумади не просто так.
Именно для вас в этом приятнейшем среде приводилась сцылка статью на Пола Грехема. Так вот, он писал, что когда появлялись конкуренты, я смотрел на их раздел вакансий, кого они набирают. Если это была Ява или С++, все было нормально, если же Перл или Питон, это уже были опасные конкуренты.
Поэтому не нужно здесь вспоминать о плюсах. Для десктопа да и еще раз да. А для веба нет и еще раз нет!
> Если Вы не понимаете, что надо разделять сущности, которые описываешь, с этим ничего не сделать, увы.
Это не сущности, а перечисление действий. Я не ввожу промежуточных переменных. Код нормально читается. Зачем что-то усложнять? Понимаю, после плюсов синтаксис скриптовых языков выглядит дико, но иначе они были бы не скриптовыми языками? Isn't it? =)
> Это если честно, потому что в одну строчку на пхп такой код будет писать самоубийца.
Именно. Поэтому обычно все же пишут полностью. Не говоря уже, что за пару лет программирования кучки больших и малых проектов не встречался с задачей вывода квадратов элементов массива больше 10....
А во-вторых, если пользоваться встроенными или фреймворковскими функциями, как в примере с Ruby (помните там про map и select? Вот где засада-то!), то код получается не хуже.
> Можно процитировать Ваши же (ну или другого анонимуса) по поводу читабельности в строчку.
Продолжим. Понимаешь, я не просто взял и сразу сел за Руби. Я очень, очень хорошо знаю пхп. И знаю, что в пхп НИКТО из нормальных людей не пишет в одну строчку. Потому что у пхп такой стиль и такая особенность. Знаешь, есть такое понятие, как хороший и плохой стиль. Так вот, то что ты написал это плохой стиль пхп, если не расставить соответствующие переводы строк и отступы.
То, что я написал на Руби есть ХОРОШИМ стилем программированием на Руби. Тоесть другого рубииста этот код не покоробит, он нормально читается и, ВНИМАНИЕ, нормально изменяется.
Да. Но для D до сих пор нет нормальных компиляторов, особенно для платформ, отличных от x86, а Fortress вообще пока не вышел. И хотелось бы спросить, какое отношение эти достойные языки имеют к вебу?
> Запишите - Aceler работает с реальными проектами и зарабатывает реальные деньги. Все остальные могут гнуть пальцы до загибания в спирали.
Вот только не надо этих детских понтов про реальные проекты и мегазаработки. Мы все здесь взрослые люди (надеюсь), и меряемся не своей зарплатой, а достоинствами и недостатками любимых языков программирования.
вспомните сколько зарплаты дают быдлопхпкодеру и сколько кодеру на жаве или питоне и спорить будет не о чем. я даю в 2 раза больше. потому что он один заменяет троих если не больше. и везде то же самое
[1,3,5,6,20].map {|v| v*v}.select {|v| v > 10}.each {|v| puts v} - это прямой аналог знаменитого ls|sort|less. Или вы будете говорить, что и юникс маздай, а настоящие поцаны выбирают explorer.exe?
Так вот, реальные проекты предполагают один срок сдачи - "вчера вечером". Поэтому наличие готовых решений на PHP - достаточный плюс, чтобы все остальные языки отправились в детский сед.
Знаешь что, я видел кучу кода на perl, к примеру cvsweb, в котором всё что относится к какому то одному определённому действию засовывается в один файл, в результате пара файлов по 10т. строк. (cvsweb и не только). Так вот это тоже считается хорошим стилем программирования на perl.
А на vb так вообще как посмотришь на хороший стиль программирования, так вообще волосы дыбом встают.
Надо писать так что бы понятно было и другим, и разобраться с жтим было просто, а когда у тебя будет 10 строчек таких подряд, то можно это всё выкидывать на свалку. Вряд ли будет приятно глазам.
>А что это Зопу за 300+ страниц никто не вспомнил? Прикольная вещь имхо! а какая в зопу разница? язык везде один. накатал пару классов один раз и юзай хоть в зопе хоть в черепу хоть в консоли.
> Поэтому наличие готовых решений на PHP - достаточный плюс, чтобы все остальные языки отправились в детский сед.
Послушай, Ацелер.
Ты мне тут басни не пой про готовые решения на пхп. Я когда-то пытался найти нормальный класс для работы с базами данных. Так вот, под пхп нету НИОДНОГО нормального класса, окромя того, что написал Д. Котеров. И даже у него есть пара косяков. Ни Adodb ни уебищный ПИиииР не дают самого элементарного - хорошего класса для работы с базами данных!
Кучу вонючих и говенных нюков, хрюков и всякой поибени вообще годится только чтобы сделать большое западло кому-то. Потому что дырки в них находят каждую неделю.
Про нормальный ОРМ или вообще нормальный фреймворк, который вот можно взять и опа - оно работает, не нужно докручивать ничего, лучше вообще молчать. Пока рельсы не появились, пхп-комюнити пиздило убогие идеи из стратса, которой еще то говнецо.
> вспомните сколько зарплаты дают быдлопхпкодеру и сколько кодеру на жаве или питоне и спорить будет не о чем. я даю в 2 раза больше. потому что он один заменяет троих если не больше. и везде то же самое
Так денег не останется если по таким критериям выирать. Нормальный программер сможет писать на чём угодно, и получать будет за способности. А то тут у нас один пришёл, говорим кури mojavi, а он нафига это всё надо, давайте я по старинке всё в один-два файла засуну и будет щастье.
> Где здесь новые возможности, которых не было шесть лет назад???
6 лет назад как раз вышла php 4, до того этих возможностей не было.
> Тогда не теряй времени даром, а открывай эклипс и пиши сразу на яве.
Ты не поверишь, но именно eclipse у меня сейчас и открыт. Правда, с плагином phpeclipse. Ибо я не стану использовать инструмент несоразмерный задаче.
> Даже хороший перлист не может уже писать на пхп без содрогание, что большее маленького сайта.
Значит он плохой программер. Хороший сможет написать на всём.
> Кстати, список в студию!
Извините, но у меня нет желания отчитываться перед вами. По сути разговора могу сказать, что Java и Python входят в список известных мне языков. Python пока ещё знаю не очень, учу. Однако, не планирую использовать его в web. Меня он интересует, как встраиваемый язык и язык, для расширения уже существующих программ.
> Знаешь что, я видел кучу кода на perl, к примеру cvsweb, в котором всё что относится к какому то одному определённому действию засовывается в один файл, в результате пара файлов по 10т. строк. Так вот это тоже считается хорошим стилем программирования на perl.
Ты бы врал, да не завирался. Я не знаток перла, но знаю, что все нормальные люди делят в перле на модули. Поэтому хорош брехать, про то, что не знаешь.
Потом еросенин уже написал выше, что пример на Руби соответствует полностью идее конвеерной работе с пайпами в шелле юникса. Если ты имеешь что-то против шелла - то тебе прямая дорога на оффтопик в тотал-командере по иконкам щелкать.
>Потом еросенин уже написал выше, что пример на Руби соответствует полностью идее конвеерной работе с пайпами в шелле юникса. Если ты имеешь что-то против шелла - то тебе прямая дорога на оффтопик в тотал-командере по иконкам щелкать.
Вот и пускай на нём для shell и пишут, нечего сувать как затычку куда влезет.
> Это если честно, потому что в одну строчку на пхп такой код будет писать самоубийца.
Т.е. Ruby, где так писать надо - язык самоубийц? Ну, да, сепуку у них там в чести... :)
> Задумайтесь. Притом решение на руби хорошо тем, что по структуре напоминает просто перечисление действий, а если для пхп попросить добавить еще что-то, получится уже куча ветвлений.
Задумались. Настоящий программист выбирает алгоритм по задаче, а не пытается гордо впихнуть всё решение в одну строчку.
> Я когда-то пытался найти нормальный класс для работы с базами данных.
<?php
/********************************************
*Работа с SQL-сервером PostgreSQL и MySQL
*(C) С. Бессонов 2005
*
*
********************************************/
$DB_Handler=mysql_pconnect('host','login','pass');
mysql_select_db('dbname',$DB_Handler);
class sql
{
// Библиотека процедур для работы с sql. При смене типа базы заменить.
var $cn = NULL; //БД ID
var $nr = NULL; //Number of Rows - количество строк в ответе
var $rs = NULL; //Return Statement - Собственно ответ
//Конструктор
function sql($sqlstatement=null)
{
//При создании класса необходимо сразу выполнить подключение и ...
$this->cn=$GLOBALS['DB_Handler'];
/ // ... выполнить SQL команду, если она есть
if($sqlstatement)
{
$this->query($sqlstatement);
}
}
//Добываем строки
function query($sqlstatement)
{
// для соединения с базой данных используем переменную $this->cn
// после выполнения запроса записываем в переменную nr
// количество полученных строк $numrows
if($this->cn)
{
// echo 'query->'.$sqlstatement."\n"; //Отладка
//$this->rs = pg_query($this->cn,$sqlstatement);
$this->rs = mysql_query($sqlstatement,$this->cn);
//$this->nr = pg_numrows($this->rs);
@$this->nr = mysql_numrows($this->rs);
return $this->rs;
}
}
// Закрываем соединение с базой данных
function close()
{
//pg_close($this->cn);
mysql_close($this->cn);
}
//Возвращаем одно значение
function value()
{
mysql_data_seek($this->rs,0);
$row=mysql_fetch_row($this->rs);
return $row[0];
}
// Возвращаем текущую строку из результатов запроса
function row($rownum)
{
//$row = pg_fetch_array($this->rs, $rownum, PGSQL_ASSOC);
mysql_data_seek($this->rs,$rownum);
$row = mysql_fetch_array($this->rs);
return $row;
}
//Возвращаем значение конкретного элемента в массиве
function rowvalue($rownum,$name)
{
$array=$this->row($rownum);
return $array[$name];
}
}
Обычно люди пишут такое сами себе.
>Запишите - Aceler работает с реальными проектами и зарабатывает реальные деньги. Все остальные могут гнуть пальцы до загибания в спирали.
запишем. либо сысадмин либо уебмайстор. зачем уебмайстор спорит о том что пхп круче если и так понятно что он них-я не шарит? и думает что програмерам никогда не дорости до его крутых 10к в месяц. как говорили у меня на родине - дурень думкою багатие.
ты уважаемый - потребитель. вот пожалста помолчи и почитай как умные дяди решают что тебе лучше потреблять.
p.s.
знаете какие самые популярные языки в мире? php и вижуал бейсик. потому что это, перефразируя классику, dumb software for dumb people.
Обычно в ПХП люди пишут такое сами себе. В том же перле есть нормальный модуль DBI. А в том же рейлсе вообще большая часть запросов реализуется хорошим ОРМ-ом.
А теперь вспоминаем твое утверждение про все готовое в ПХП и сопоставляем с "Обычно люди пишут такое сами себе" и делаем соответствующие выводы.
Вобщем перестань, глупо это. Если ты недавно начал программировать, на первые пару лет пхп хватит. Главное потом не останавливаться.
Когда делаешь проект для дяди со стороны, под его финансирование, да под конкретное ТЗ - это лафа, скажу я вам. Это просто программирование в кайф.
Когда у тебя свой живой проект... когда все что ты делаешь, надо делать быстро, а ТЗ составляется на текущий день (типа - убрать 20 багов, внести 30 фич) - это и называется Extreme Programming :D
Честно. Малым студиям можно выжить только за счет гибкости. За счет того, что проект извивается, модифицируется и растет _быстро_.
Конечно, он (проект) может быть и на другом языке. Но когда пользователи вдруг захотели чат, я просто взял готовый чат и поставил. Когда им захотелось блогов, не прошло и недели....
Дык, что же не используешь на web? Вон, тут писали, что мегарулез. :)
> ЗЫ: ты так и не ответил насчет других языков, которые ты знаешь...
Из web-ориентированных в добавок ещё только Perl5, но на нём мне довелось писать совсем чуть-чуть, по этому я не особо его считаю. Остальные упоминать смысла нет, не хочу превращать топик в обсуждение меня.