> Спасибо, что не понимаете разницу между границами своего приложения, своих объектов и модулей и границами внешней библиотеки/компоненты.
А вы программист волк-одиночка? Разрабатываете (и метите?) свой код и чужаков в него не пускаете? Еще, вы знаете, бывает командная разработка, когда в истории коммитов один и тот же кусок кода менялся 10 разными людьми 50 - 100 раз за последние 5-10 лет, причем половина из которых уже не работает, соответственно недоступна для вопросов. О как!
> Люди со стажем лишь ищут возможность присоветовать IDE.
Когда жалуются что трудно написать одну строчку кода проверки на ум приходит только то, что человек не пользуется IDE.
> Ну не томите же, какая IDE облегчит всем жизнь?
Вам - любая! После ноутпада-то, которым Вы насколько я понимаю пользуетесь как средой разработки.
В ответ на: Еще, вы знаете, бывает командная разработка, когда в истории коммитов один и тот же кусок кода менялся 10 разными людьми 50 - 100 раз за последние 5-10 лет, причем половина из которых уже не работает, соответственно недоступна для вопросов. О как!
Напугали ежа голым задом.
Понял я Вас давно и горе Ваше. Такая реальность конечно для сохранения лица и защиты от коллег диктует именно такой стиль. Об этом уже писал. И код такой видел и сам ваял. И считаю это в продакшине не всегда нормальным.
Что можно сделать в продакшине при вылете такого "привета": "коллега (или сам) - мудак, профукал и спустил вниз неверные параметры" кроме логирования фамилии и отказа от контракта? Надо ли в каждой мелкой функции (см. пример ТС) ваять такое? Мой ответ - не всегда и не везде. В примере ТС точно ни к чему. Хотя некоторые и пытались рассказать, что без панорамных макро видов зубочисток прайс-листы будущего не обойдутся
Ответ на сообщение Программист. пользователя tolstopuz
Устал читать. Мудак он и в Африке мудак. И все отметившеся в ветке этой фигней маются. Ну чЁ вы жуете жвачку третий месяц? Умный - устройся в гугле/ибм/прочей хрени на от 100к юсд. Не устроился - пшел нах и инет не засирай, неудачник
Не ломайте fun
Это отличный способ скоротать время в туалете, в пробке, в общественном транспорте.
Выбор всегда есть. Можете не заходить сюда со своей затаённой неудовлетворённостью жизнью О чистоте интернета поздно уже переживать, тем более, что не в Ваших силах что-то изменить. Только депрессии добавит.
В ответ на: Умный - устройся в гугле/ибм/прочей хрени на от 100к юсд. Не устроился - пшел нах и инет не засирай, неудачник
Вот задача, которая должна быть интересной для Вас:
Начиная с каких доходов (в Новосибирске) становится экономически нецелесообразно перебираться на зарплату в $100K в США?
Может ли человек, имеющий эти деньги, считаться неудачником?
Как видите, задача сформулирована нечетко. Если покажется интересным ее решать, то будем конкретизировать:
- нужно ли здесь арендовать жилплощади,
- есть ли семья, сколько иждивенцев, и т.п.
В ответ на: точно! нужна новая модель именно этого года. Модель прошлого года должна идти со скидкой
если сможете впарить пользователю, вперед, за исключением случаев монополизма и бесплатного.
В ответ на:
В ответ на: расскажу знакомым дизигнерам, как анекдот, поржем. да, кстати забыл спросить общий код зовется standart C library?
Вы так легко и со смехом садитесь в лужу, что остаётся только ржать с дизайнерами
C standard library очень древняя, да?
ну умному был бы общий смысл понятен такое же внимание к опечатке выглядит чересчур навязчивым
В ответ на:
В ответ на: как бэ для скорости реляционные БД не самое лучшее решение
Вам голоса в голове сказали про реляционные БД? Причём здесь MUMPS?
Или уже не важно и можно без повода ржать?
утверждене - "Самая быстрая...", сродни пресловутому вопросу - "Приборы?", и ответ на него аналогичный - "300". Так и ответил, впрочем ответить можно было все, что угодно, любая бессмысленная фраза попадает под "300". Теперь как попавшись на столь прим. разводку пускаются пузыри в луже?
Схватил жопку в брюсселе
бабами любимы
тёплые коты
а чего добился
в этой жизни ты
В ответ на: Начиная с каких доходов (в Новосибирске) становится экономически нецелесообразно перебираться на зарплату в $100K в США?
Может ли человек, имеющий эти деньги, считаться неудачником?
Как видите, задача сформулирована нечетко. Если покажется интересным ее решать, то будем конкретизировать:
- нужно ли здесь арендовать жилплощади,
- есть ли семья, сколько иждивенцев, и т.п.
Надо подходить итерационно :). Сравним сначала с г. Москва.
1. вариант аренда - г. Москва 35 тр (ну допустим рядом с работой 1к), г. Новосибирск (15 тр 1к). Допустим в Москве зп нормального разработчика 100 тр, получаем, что при 80 тр из Нска в Москву уезжать не выгодно. Возможно здесь надо рассматреть аренду 2к, но тогда разрыв в зп будет еще больше.
2. вариант ипотека. 2к. Нск 25 тр в месяц на 20 лет. Мск 75 тр в месяц на 20 лет. Получаем, что при зп выше 50 тр из Нска уезжать не выгодно.
В целом логично предположить, что средний сферический программист имеет 1 жену и двоих детей. Следовательно из совокупного 20 летнего ипотечного рабства выпадает 6 лет жены на декретный отпуск. Тогда доход жены можно не учитывать в совокупном доходе, полагая, что она своей работой зарабатывает на эти 6 лет ухода за детьми.
Теперь для предположительных расчетов нужна ставка аренды и ипотеки в США вблизи работы.
В ответ на: как бэ для скорости реляционные БД не самое лучшее решение
Вам голоса в голове сказали про реляционные БД? Причём здесь MUMPS?
Или уже не важно и можно без повода ржать?
утверждене - "Самая быстрая...", сродни пресловутому вопросу - "Приборы?", и ответ на него аналогичный - "300". Так и ответил, впрочем ответить можно было все, что угодно
Да нет
Ваша отработанная ржака-тактика в стиле LOR дала осечку.
Реакция на "самая быстрая" хорошая, и любой школьник так отреагирует.
А вот на keyword приведённой базы реагировать "300" глупо. И даже более того - Вы отреагировали супер-глупо. Расшифровываю: это один из прародителей NoSQL решений и сам NoSQL разумеется. Об этом в википедии почему-то для школьников не написали. И, кстати, до сих пор успешно используется и имеет коммерческие ветки.
ps ТС, конечно, сильно заносит на поворотах, но по сути его обмануть многим будет сложно, а кому-то просто невозможно
Ответ на сообщение Программист. пользователя elfking
В ответ на: На самое интересное - про авто тесты - вы и не ответили. Сколько бы вы не расставляли "лишние" else от них будет не сильно много толку если ошибка "ой что-то неправильно" вылетит у клиента
Читайте Классиков. По этому поводу неплохо писал Дейкстра.
В ответ на: передал ее в отдел разработки, там ее исправили (пара строк кода), создали патч или минорную версию продукта, продукт прошел QA, был отослан клиенту, клиент остановил кластер их 20 машин, задеплоил новую версию приложения, запусти кластер и подождал пока он "прогреется" (кеши заполнятся часто используемыми данными). И это не какой-то rocket science - а обычная крупная enterprise система.
Во-первых, это были "всего лишь" советы, которые Вы и так знали... а, во-вторых: Вы задаете мне вопросы со своей колокольни, не взирая на мои ответы о том, чем и как я конкретно сейчас занимаюсь... или очередная сознательная невнимательность для удобства подтасовок... уж и не знаю...
В ответ на: Я же говорю вы живете в идеальном мире где все системы написны исключительно правильно что любое изменение максимально локализовано. Только опять таки вам в голову не приходят варианты измений вызванные новыми требованиями которые затрагивают несколько слоев и компонентов (да бывают и такие). И не надо говорить что программисты должны быть телепатами что начальная архитектура должна предусматривать все возможные изменения. Хотя безусловно опыт и чутье влияет на гибкость архитектуры.
Вы НИ РАЗУ не ответили, но мне не лениво повторить: "что будет плохого (конкретно ещё и кому) от того, что программисты будут стремиться писать ПРАВИЛЬНО (это из Вашей цитаты)?
Вот поэтому, я пишу о необходимости "практически механического" рефакторинга кода... впрочем, думаю, что через пару лет его и без участия народа научатся делать...
Этот Ваш абзац, как раз сам обеспечивает ложность следующего за ним утверждения... пасибки.
"Только так, только личная инициатива и напряженная работа над собой. .. Нужно своей собственной рукой все делать" (с) В.В. Путин(а не на "вертикаль власти" надеяться)
"Класс" как раз и обеспечивается самоорганизацией самопорядка, а вовсе не 500% покрытием юнит-тестов уж не знаю и кого...
"Только так, только личная инициатива и напряженная работа над собой. .. Нужно своей собственной рукой все делать" (с) В.В. Путин(а не на "вертикаль власти" надеяться)
Погуглите и найдете... я уже не помню как называется графическая библиотека, лежащая в основе всех этих продуктов... давно это было.
"Только так, только личная инициатива и напряженная работа над собой. .. Нужно своей собственной рукой все делать" (с) В.В. Путин(а не на "вертикаль власти" надеяться)
знаю, прикол в том, что для время-критичных задач современные варианты NoSQL часто эффективнее и быстрее, хотя бы таже монга.
зы. а выражение "самая быстрая" вполне сродни выражению самая быстрая машина, вот только если взять жЫп и феррари допустим, на хорошем асфальте, на красном вроде до сих пор висит знак сиськи, точно не помню, там редко езжу, так вот на хорошем афальте феррари (какая-нить F12блаблабла) с легкостью уделает жЫп, но только выедим на проселочную дорогу, ее с такой же легкостью сделает жЫп.
ззы. знал же, что еще раз попадешься, не спецом не стал объяснять, что выражение "самая быстрая" только сферический конь в вакууме без указания условий, соотвестенно "300", вполне адекватный ответ.
Схватил жопку в брюсселе
бабами любимы
тёплые коты
а чего добился
в этой жизни ты
Нет. Например потому, что предыдущий разработчик так сделал. Мне нужно было сохранить совместимость... хотя, думаю что он так поступил по простой причине: в ПХП типовые граф. функции работают с этой структурой данных.
Константа потому и была ИМЕНОВАННОЙ. Я писал про втыкание константных значений непосредственно в код проверок...
Вот именно! Он покупает РЕШЕНИЕ, а не предложения по апгрейду...
В ответ на: просто увидел какой у Вас апломб, Вы весь в белом, вокруг одни копроделы
Вам это показалось.
"Только так, только личная инициатива и напряженная работа над собой. .. Нужно своей собственной рукой все делать" (с) В.В. Путин(а не на "вертикаль власти" надеяться)
В ответ на: Еще, вы знаете, бывает командная разработка, когда в истории коммитов один и тот же кусок кода менялся 10 разными людьми 50 - 100 раз за последние 5-10 лет, причем половина из которых уже не работает, соответственно недоступна для вопросов. О как!
Бывает и не за 5-10 лет... могу привести аналогичные ситуации из нашего СВН... там понедельно есть в таком же количестве... вот потому что такие ситуации - норма, и пишу о деградации отрасли "в целом"...
"Только так, только личная инициатива и напряженная работа над собой. .. Нужно своей собственной рукой все делать" (с) В.В. Путин(а не на "вертикаль власти" надеяться)
В ответ на: Устал читать. Мудак он и в Африке мудак. И все отметившеся в ветке этой фигней маются. Ну чЁ вы жуете жвачку третий месяц? Умный - устройся в гугле/ибм/прочей хрени на от 100к юсд. Не устроился - пшел нах и инет не засирай, неудачник
Благодарю за самокритичность. Помнится в году 95-м мне предлагали 120к$, правда канадских...там даже целая история була... но после общения в консульстве, решил что здесь интереснее... а Вы, как уже перепрыгнули этот критерий? Надеюсь, как миниум - вдвое...
"Только так, только личная инициатива и напряженная работа над собой. .. Нужно своей собственной рукой все делать" (с) В.В. Путин(а не на "вертикаль власти" надеяться)
ловить не буду. Речь про функционал. Если взять снова аналогию с машинами, то и у жигулятора и феррари по 4-е колеса, обе из металла. Если и есть общность между гимпом и фотошопом, то она именно примерно такая, пока гимп не поддерживает в полном объеме перо, пока в нем нет хоткеев, гимп - только жигулятор и конкурент пайнта, особенно в семерке.
1. Простая задача, нарисовать прямую: в гимпе - повесишься (особенно если с бодуна ) в фотошопе click - первая точка, shift + click - вторая и прямая между ними готова.
2. Нарисовать кривую с мягким градиентом и равномерно суживающуюся к конца: в гимпе - долго и сложно, в фотошопе один мазок пером выбрав brush с правильно настроенным dynamics. Причем в гимпе получится только если уметь рисовать, причем это то рисование когда например берешь простой карандаш и русуешь на бумаге правильную сферу, этому еще учиться надо. Долго, сложно и не у всех руки ростут откуда надо. И бухать нельзя, совсем нельзя.
3... и т.д.
Фотошоп - инструмент для профи, инструмент для быстрой и эффективной работы, гимп - поделие красноглазых студентов.
Ну а то, что в обоих есть какие-то общие либы, да аллах с ними, всюду есть какая-то общность, особенно если искать, не за них выбирают, не по ним оценивают.
Схватил жопку в брюсселе
бабами любимы
тёплые коты
а чего добился
в этой жизни ты
Ну зачем Вы так... пусть сами пошукают... я же эту БД специально привел... в порядке обучения, можно сказать... э-эх!
"Только так, только личная инициатива и напряженная работа над собой. .. Нужно своей собственной рукой все делать" (с) В.В. Путин(а не на "вертикаль власти" надеяться)
Совсем то завиратся не надо, 120 к они и в текущее время зп хорошо разработчика в США, где зп выше, чем в Канаде. Ну и вот - "меня брали, но я гордый не пошел", говорит о том, что все таки не взяли.
В ответ на: что будет плохого (конкретно ещё и кому) от того, что программисты будут стремиться писать ПРАВИЛЬНО
Будет очень хорошо. Я вообще нигде не оспаривал важность развития квалификации и стремления к качеству. Просто, мне кажется, в отличие от вас я на мир смотрю более трезво.
Открою вам тайну - 99% процентов людей хотят, искренне хотят, делать свою работу хорошо и гордиться своей ей. И даже не зависимо от квалификации обычно человеку в проекте удается найти место, где он будет делать что-то хорошо и где будет возможен рост. И это работе менеджмента и тим-лида наладить процесс так чтобы каждый был на своем месте и все работали согласованно. Потому что это стандартная вещь когда в большой проект люди приходят с разным опытом и квалификацией и это ВАША задача сделать так чтобы каждый был счастлив работая над проектом и чтобы программисты не были "лебедь, рак, и щука".
Одним словом мне, как и многим здесь, неприятно ваша позиция "один я в белом" а все остальныей копрокодеры. Поверьте это не так. В Новосибирске много хороших программистов но очень мало хороших менеджеров и тимлидов. Видимо во многом потому что 70-80% лучших уезжает либо в Питер\Мск либо на запад.
Ответ на сообщение Программист. пользователя andrew13
Вы путаете функционал и юзабилити пользолвательского интерфейса и работу ПО. Я - не дизайнер, мне однофигственно неудобен ни тот ни другой интерфейс. По опыту общения с дизайнерами, знающими и то и другое - они "отличий" не находят... как-то так.
Ещу раз: речь шла о работе ПО по созданию прямой линии, градиента, рендеринга и т.д. Советую таки погуглить... ситуевина весьма забавная с этими "графическими" пакетами...
"Только так, только личная инициатива и напряженная работа над собой. .. Нужно своей собственной рукой все делать" (с) В.В. Путин(а не на "вертикаль власти" надеяться)
Я не писал "не пошел", а написал "решил <остаться> здесь - ИНТЕРЕСНЕЕ"... кое что делал... удаленно.
"Только так, только личная инициатива и напряженная работа над собой. .. Нужно своей собственной рукой все делать" (с) В.В. Путин(а не на "вертикаль власти" надеяться)
В ответ на: Начиная с каких доходов (в Новосибирске) становится экономически нецелесообразно перебираться на зарплату в $100K в США?
Сейчас в основном уезжают на запад не за деньгам, а за нормальной жизнью. Мерить все в деньгах смысла нет - думаю каждый с какого-то возраста\планки зарплаты это понимает. В РФ сколько бы ты не зарабатывал от этого мало что поменяется - ну будет у тебя машина чуть круче и квартира чуть больше.
А многим просто становиться скуууучно после 5-10 лет карьеры в Нск. Переезд в Москву это имхо переезда в еще большую жопу с точку зрения жизни (у меня например жена не хотела ни в какую хотя я рассматривал такую возможность).
Если есть возможность уехать на запад за нормальные деньги - надо ехать. Просто чтобы почувствовать другую жизнь - хотя она и не всем понравиться. Вернуться всегдо можно успеть в крайнем случае.
В ответ на: Открою вам тайну - 99% процентов людей хотят, искренне хотят, делать свою работу хорошо и гордиться
в том-то и дело, что ЭТО - НЕ ТАК. Приведу опять же исключительно как пример обоснования этого (а не того что я один в белом):
в конце 2009, а точнее 30 декабрю... нас, ит-шников собрал генеральный и радостно объявил, что в период каникул мы будем пахать аки негры, но ... эту задачу ДО 11.01 надо сделать. Типа оплата - будет. Помнится, что оценив сложность задачи и тот уровень решений, который был в коллективе - громче всех орал(!) что этого нельзя делать ТАК... и это несмотря на то, что моя часть была проста, а двойной тариф оплаты - как-то "грел душу"... Тогдашний рук-ль отдела, при этом бил себя пяткой в грудь... "б..я - справимся, зуб даю"... остальные тихо его поддержали. Итог, спросите? Банален: с 29.01.2010 руководитель свалил на больничный ... до августа кажется, остальная команда выкашивала баги (с пару месяцев) и постепенно рассосалась, потому как это надоедает (ой как верю уже!)...
... а причина такого решения генерального была банальна: оказывается ещё с апреля продакшн глючило и корявило по причине бага, о котором этот руководитель ЗНАЛ хорошо. Обвиняли всех, и сотрудников, пользующихся этим продакшн... и прогеров... тока не правили.
... и после... регулярно доходят слухи как эти же самые "специалисты" мало того, что сами разводки устраивают, так и других поучаствовать зовут...
Так что это ДАЛЕКО не так, к сожалению... собственно об этом и тема.
"Только так, только личная инициатива и напряженная работа над собой. .. Нужно своей собственной рукой все делать" (с) В.В. Путин(а не на "вертикаль власти" надеяться)
есть еще нюанс, не все знают, спор про скорость напомнил. Давно были П4 и еще какая-то серия за ними от интелла, они еще просрали мобильным пням ставшими core duo и т.п. и просрали амд.
Классический прикол, как раз по Олджу:
function doSomething(arg1, arg2, arg3) {
if (arg1 wrong) {
throw AAAA1!;
}
if (arg2 wrong) {
throw AAAA2!;
}
if (arg3 wrong) {
throw AAAA3!;
}
// do something very, very simple
return arg1 + arg2 + arg3;
}
так вот для П4 и с ейже архитектурой, учитывая глубину конвейера в них в ~30+ команд, учитывая, что при нормальной работе аргументы нормальные, в большом проекте, на хранение истории всех переходов никакой памяти не хватит, учитывая, что за такт те процы исполняли по несколько nop-ов, каждая проверка эквивалентна 60-90 nop-ам. Компилятор/интерпретатор для подобных проверок генерит условный переход дальше если проверка не выполняется (аргумент корректный), если же аргумент не правильный, то никакого перехода нет. А у всех процов при переходе сбрасывается конвейер, весь, повторю для процов с архитектурой пентиума4 это~30+ команд (в среднем одна или более команд за такт). Менее частотные центрино с амд выиграли за счет более короткого конвейера 10-20 команд всего. Фактически П4 большую часть тупо сбрасывал и снова заполнял свой конвейер попутно при этом нагревая воздух. И вспоминая изначальный вариант например функции работы с картинкой уже здесь обсужденной здесь, она вполне может работать быстрее чем "оптимизированная с проверкой входных параметров по Олджу". Кстати такой codestyle была из причин, что процы с архитектурой пентиума4 и проиграли (аспект читабельности и т.п. не учитываю, только взаимодействие с процом).
Это к тому, что слова быстрый, оптизация и т.п. бла бла бла, только бла бла бла если не учитывать и не указывать остальные факторы.
Схватил жопку в брюсселе
бабами любимы
тёплые коты
а чего добился
в этой жизни ты
Возможно. Я же писал, там была целая история "как уехать будучи невыездным"
На самом деле, реально остановило общение в канадском консульстве... хорошо зная английский (тогда) было крайне неприятно выслушивать с одной стороны очень правильную речь, имеющую крайне презрительный подтекст в ряде сленгов... стало понятно, КАК там к нашим относятся НА САМОМ ДЕЛЕ.
"Только так, только личная инициатива и напряженная работа над собой. .. Нужно своей собственной рукой все делать" (с) В.В. Путин(а не на "вертикаль власти" надеяться)
В ответ на: в том-то и дело, что ЭТО - НЕ ТАК. Приведу опять же исключительно как пример обоснования этого (а не того что я один в белом):
Ваш топик начался с "плохих" программистов. А тут пример про руководителя отдела. Там где начинается менеджмент начинается политика. Я могу таких же примеров как у вас с 10 привести. Кстати этот пример только подтверждает что в Нсе мало хороших тим-лидов\менеджеров.
Я утверждал, что большинство программистов хотят делать свою работу хорошо и гордиться ей. И задача тим-лида привести всех "под один знаменатель" и расставить по местам.
я оба пакета знаю, в каких-то случаях за дезигнера сойду. Дезигнеры, заразы, это знают, сложно перек..делигировать им задачи.
Речь была про то, что общая часть в гимпе и фотоЖопе слишком малозаметна в общем функционале. И если только общую часть использовать, то и пайнт сойдет, и жигулятор тоже машина.
Схватил жопку в брюсселе
бабами любимы
тёплые коты
а чего добился
в этой жизни ты
В ответ на: Это к тому, что слова быстрый, оптизация и т.п. бла бла бла, только бла бла бла если не учитывать и не указывать остальные факторы.
И? А применить собственный совет к себе любимому - религия не позволила?!? Там же кирилицей було писано, что рефакторена функция с ПиХаПи!
Для справки:
1. PHP - интерпретатор. Весь пассаж о конвееризации ЦПУ - просто ни о чем. Данные в ём - тоже храняться в специяльном виде...
2. Уже не раз написал - рефакторинг кода для интерпретатора особенно необходим - для уменьшения в ДВУХ местах: на стадии интерпретации и на стадии выполнения... просто, хотя бы потому, что нет в нем оптимизирующих наборов интерпретации... по крайней мере "круто оптимизирующих"...
"Только так, только личная инициатива и напряженная работа над собой. .. Нужно своей собственной рукой все делать" (с) В.В. Путин(а не на "вертикаль власти" надеяться)
В ответ на: стало понятно, КАК там к нашим относятся НА САМОМ ДЕЛЕ.
На самом деле ТУТ к русским относятся хорошо. Как, собсвенно, и ко всем. И вообще с точки зрения корректности как в профессиональном так и в бытовом плане РФ до Запада еще "200 лет в обед". Собственно это одна из немногих вещей что действительно поражает - на СКОЛЬКО большая разница. И вежливость и терпимость проявляется в том числе и на работе - даже если видно что человек что-то не знает никто не будет оскорблять или как то пытаться поддеть.
Ок. Возможно пример - не самый удачный. Но и без него - это НЕ ТАК, поверьте. "Проверено электроником"...
Я, как раз и ратую за тех, кто постоянно учится, пишет правильный код "невзирая на ...", и хочет чтобы было банально не стыдно за свой автограф на таком коде...
Перечитайте ответы, и Вы удивитесь, но даже среди возражавших - далеко не все такие... а уж про тех, кто тут (в нашем свн) это писал и здесь отметился - уверен.
"Только так, только личная инициатива и напряженная работа над собой. .. Нужно своей собственной рукой все делать" (с) В.В. Путин(а не на "вертикаль власти" надеяться)
Да нету этой позиции! Я всего лишь поднял тему, которая для меня болезненна! Понятно, что раз я пишу "кругом плохо" и сам тоже программист, МОЖНО подразумевать что "а вот у меня - хорошо"... тем более, что я приводить примеры имею право ТОЛЬКО из собственного кода... проблема не в том, что я - в белом (или чём ещё)... проблема в том, что копрокодерство - уже норма.
"Только так, только личная инициатива и напряженная работа над собой. .. Нужно своей собственной рукой все делать" (с) В.В. Путин(а не на "вертикаль власти" надеяться)
В ответ на: Для справки:
1. PHP - интерпретатор. Весь пассаж о конвееризации ...
там специально, для ПиХаПи, для тиби, окромя слова компилятор сразу было и интерпреиатор. Принципы генерации кода одни и теже, что для компилируемых С/С++, что java/.NET/php (по секрету, точно знаю поскольку в потрахах ПиХаПи лазил/хачил/фиксал/расширял-дополнял, ПиХаПи не интерпретатор, это дизигнер-вебразработчик может так считать, прогеру не простительно. ПиХаПи НЕ интерпретатор, он точно также как и java с .NET вначале компиляеЦа в P-code, а потом уже исполняется, если поставить спец. расширения, то компилиЦа будет на диск, сокращая время исполнения, а так только в памяти фсе хранит. Это кстати намек на оптимазацию ПиХаПи, еслиф чо. )
Так вот, возвращаясь к баранам, принципы генерации кода, что для компилятора, что для интерпретатора одни и теже. Соответственно более читаемый код:
if (failed) {
throw Error;
}
бывает менее эффективен, чем
if (succeed) {
do...
}
throw Error;
Это все к тому, что произнесенное словО оптимизация без произнесенного профайлер, только пук и не имеет никакого смысла.
Схватил жопку в брюсселе
бабами любимы
тёплые коты
а чего добился
в этой жизни ты
Ответ на сообщение Программист. пользователя andrew13
Вот нет никакого желания расжевывать что такое оптимизирующий компилятор, интерпретатор с/без предкомпиляции в p-, j- ... или какой ишо код... какова польза от оптимизирующего интерпретатора, до тех пор пока он КАЖДЫЙ раз делает "оптимизацию в память"... тем более, человеку, который "в потрохах сам лазил"...
разве что напомню, что наиболее сложные методы оптимизации (и наиболее оптимизирующие) требуют зачастую гигантских вычислений и памяти... по Касьянову - два последних его метода, ежели вчё...
произнесенное слово имеет ровно тот смысл, который в него БЫЛ вложен. Интересно троллить моменты "около" - флаг в руки. Напомню: оптимизирован в примере был код в части УСТРАНЕНИЯ повторных блорков исполнения, ЛИШНИХ ветвлений, работа которых НИКАК не влияла на результат. Причем ТУТ(!) Ваше упирательство про конвееризацию ЦПУ?
"Только так, только личная инициатива и напряженная работа над собой. .. Нужно своей собственной рукой все делать" (с) В.В. Путин(а не на "вертикаль власти" надеяться)
> Что можно сделать в продакшине при вылете такого "привета"
Быстренько пропатчить, если "привет" хорошо отлогирован то найти причину труда не составит, а вот если сглючит и юзера будут жаловаться на какую-то фигню вместо картинку, то тогда вот голову то поломать придется откуда у этой баги ноги растут.
> Надо ли в каждой мелкой функции (см. пример ТС) ваять такое? Мой ответ - не всегда и не везде.
От размера не зависит. Функции вообще не должны быть большие в своем большинстве.
> хотя, думаю что он так поступил по простой причине: в ПХП типовые граф. функции работают с этой структурой данных.
Не зная ПХП и приложение, мне конечно сложно говорить как оно лучше, но сдается мне что это не может быть объективной причиной использования массива. Гораздо лучше сконвертировать структуру в массив непосредственно во время работы с граф. функциями, чем гонять данные в массиве по коду. Оверхед на конвертацию настолько ничтожен, что абсолютно незаметен на остальном фоне. А вред от снижения читабельности реален и заметен, хотя может я что-то не понимаю в логике которая behind the scenes.
> Константа потому и была ИМЕНОВАННОЙ. Я писал про втыкание константных значений непосредственно в код проверок...
Скажите пожалуйста, вот есть у меня некий Map (надеюсь в пхп есть такая структура данных), в котором может передаваться по строковому ключу, пусть "price", вещественное значение цены. Этот Map может передаваться параметром в разные модули в качестве ну пусть будет контекста. Означает ли это, что по Вашей религии я должен определить именованную константу PRICE_KEY = "price", которую мне нужно использовать в качестве ключа для вытаскивания значения из Map'а ? Где ее нужно определить? Не имеет ли такое именование каких-то побочных эффектов?
> Вот именно! Он покупает РЕШЕНИЕ, а не предложения по апгрейду...
Речь же всегда идет о разумных рамках, для начала надо определить критерии оптимальности, который всегда подразумевают под собой вполне конкретные требования к железу, а уж потом кидаться оптимизировать, иначе получится оптимизация ради оптимизации, бесмысленная и беспощадная.
Опять же разумные рамки подразумевают, что программист не пишет конструкции в которых нет необходимости, есть разумные правила кодирования - вынесение инвариантного условия за рамки цикла и т.п.
> Бывает и не за 5-10 лет... могу привести аналогичные ситуации из нашего СВН... там понедельно есть в таком же количестве... вот потому что такие ситуации - норма, и пишу о деградации отрасли "в целом"...
50 - 100 рефакторингов одного и того же когда в неделю не норма ... В целом же отрасль всяко развивается, но вот как и куда мне без бутылки сложно сказать
Господин Толстопуз, я думаю вам будет небезынтересно прочитать вот эту небольшую, но меткую статью:"Легкий способ бросить писать идеальный код" на тему злоупотребления перфекционизмом в программировании.
А мне, в свою очередь, было бы небезынтересно знать ваше мнение на этот счет
Ответ на сообщение Программист. пользователя andrew13
В ответ на: Это все к тому, что произнесенное словО оптимизация без произнесенного профайлер, только пук и не имеет никакого смысла.
Ну дак когда же мы услышим солиста Большого?
Пока Вы только поведали обществу, как рисовать линию в фотошопе.
Я, перед тем, как выложить свой отрывочек, прогнал его и увидел прирост производительности.
Приведите свой пример с учётом Ваших знаний очередей команд в процессоре, потрохов php и компилирующих интерпретаторов.
В ответ на: От размера не зависит. Функции вообще не должны быть большие в своем большинстве.
Напоминаю:
Вы до сих пор не привели примера проекта, где бы разработчики внутри в каждом методе проверяли аргументы методов друг у друга, демонстрируя пароноидальное применение программирования по контракту. То, что приведено (ладно, раскрою) - пример внешней границы библиотеки, где автор(ы) защищается от внешнего мира.
Без примера от Вас рассуждать о том, что мелко, что быстро смысла не имеет.
Считать процессорные такты и рассуждать об оптимизации на уровне байт-кода при наличии в АПК такой штуки как СУБеДе, да еще и физически расположенной на отдельной машине - по меньшей мере смешно. Вся оптимизация происходит в БД, а на уровне приложения - сводится к минимизации количества обращений к той самой БеДе, в идеале (как правило - недостижимом) - "одна страница - один запрос". При инфраструктурных потерях в несколько сотен (иногда - тысяч) миллисекунд, нет никакой необходимости тратить время на оптимизацию времени работы скрипта с 90 до 30 мс.
Это если мы веб обсуждаем, конечно, а не микроконтроллеры с их жесточайшими лимитами по памяти и вычислительной мощности. Но что-то я не слышал, чтобы контроллеры на php программировали.
В ответ на: Считать процессорные такты и рассуждать об оптимизации на уровне байт-кода при наличии в АПК такой штуки как СУБеДе, да еще и физически расположенной на отдельной машине - по меньшей мере смешно.
Мне кажется Вы не очень правы. Где расположена СУБД сейчас роль играет слабую, если канал не GPRS. Этому доказательством является возрождение NoSQL, когда логика часто выносится из неё в сервер лишь бы избежать бутылочного горлышка базы с её локами.
1. Все через это проходят, когда в первый раз устраиваются в большую контору и узнают правду жизни
2. Если бы ТС стремился к идеальному коду, а не думал о задаче, то сейчас бы вырисовывал программирование по контракту и граничные условия в каждом методе и вещал, что это очень нужно.
В ответ на: Мне кажется Вы не очень правы. Где расположена СУБД сейчас роль играет слабую, если канал не GPRS.
"Где" расположена СУБД на самом деле не играет особой роли (все равно соединение поедет через TCP/IP стек в 99,9999% случаев), главное что она вообще есть. Ну, за исключением того, что у похапе отсутствует (во всяком случае - отсутствовала, когда я с ним последний раз имел дело) возможность организовать connection pool, и даже правильно написанный прямыми руками скрипт все равно как минимум один раз делает db_connect() на этапе иницализации.
Ну и так, на минуточку - простейший "select SYSDATE from DUAL" на живом соединении занимает порядка 35 мс. Это практически 100% инфраструктурных затрат (сеть + парсинг запроса + отдача ответа). Т.е. если у Вас скрипт для построения страницы делает 10 запросов в БД, то Вы *УЖЕ* 350 мс потеряли тупо на сеть плюс порядка 400-600 мс на подключение к базе, и это без учета времени на собственно обработку запросов и выборку из таблиц. Правильно было бы соединение взять из пула, а запросы засунуть в батч - но, опять же, пехепе. И какой тут смысл экономить процессорные такты на уровне языка?
В ответ на: Этому доказательством является возрождение NoSQL, когда логика часто выносится из неё в сервер лишь бы избежать бутылочного горлышка базы с её локами.
NoSQL - это такой модненький fud: "раз на этом работает ФЕЙСБУК, то и нам подойдет". А потом с квадратными глазами и паром из ушей рисуем простейший "поквартальный отчет о продажах, сгруппированный по поставщикам", который на SQL реализуется в три строчки.
В ответ на: Смысла холиварить нет. Каждой задаче - свой инструмент.
Угу. NoSQL и прочие хадупы - инструмент для построения фейсбуков, гуглов и прочих MMOG. К созданию среднестатистического говносайта отношения не имеет.
Это плохой термин "защита от внешнего мира". На самом деле выбирают меньшее из зол - эксепшен понятной природы с описаловом или сломаться потом по фик пойми какой причине. А защититься от плохих данных нельзя, плохие данные - плохие результаты. Ну и дальше возможны варианты:
а) это публичная библиотека - значит заранее не известен контекст исполнения, действительно может стоит поберечь проц. время, кто его знает в каких условиях эксплуатации будет находится данный метод
б) это опен сорц - парням просто похрен, они не отвечают за результат, баги фиксят только если им отпрвят внятную инструкцию как его воспроизвести, ну и а) в том числе
в) Люди просто не понимают резонов, ну как Вы к примеру, и не пишут - типа экономим процессор ах ох.
В контексте коммерческого уеб приложения ни а), ни б), ни тем более в) объективными причинами быть не могут.
З.Ы. Внешняя граница - это все, к чему можно получить доступ извне, а это как правило большая часть кода. Private методы можно не чекать, если они проверены их более внешними caller'ами
Ответ на сообщение Программист. пользователя Камон
В ответ на: Это плохой термин "защита от внешнего мира". На самом деле выбирают меньшее из зол - эксепшен понятной природы с описаловом или сломаться потом по фик пойми какой причине. А защититься от плохих данных нельзя, плохие данные - плохие результаты.
Обсуждаете котлеты из мух. Что такое "плохие данные" для начала? Кто-то ручками в БД пошалил? Ну так это не наш уровень ответственности, показываем пользователю идентификатор ошибки, которую легко отследить по логам и умываем руки. Пользователь прислал слово "х.й" вместо даты рождения? Для этого есть валидация. Слово "х.й" проскочило валидацию? Чиним валидатор, заодно проверяем не утёк ли у нас метод "для внутреннего пользования" во внешний мир.
Информация о возрастных ограничениях в отношении информационной продукции, подлежащая распространению на основании норм Федерального закона «О защите детей от информации, причиняющей вред их здоровью и развитию».
Некоторые материалы настоящего раздела могут содержать информацию, запрещенную для детей.