После многих лет разработки до меня наконец-то дошло, что является основной проблемой. Не фичи языка или костыли, которые мы создаем. Не сбор требований и нехватка данных. Не написание надежного кода и его тестирование. И даже не изменения как таковые. Главная проблема — это предположения. Пока они выполняются, все работает. Как только предположение оказалось нарушенным — все, приехали. В динамикодрисне вся работа кода построена на предположениях, которые нельзя автоматически проверить. Весь код придется выкинуть и переписать, или внимательно проверить вручную, что по трудозатратам равноценно. В супернадежном Хачкеле, "ко-ко-ко скомпилировалось значит работает", нарушение предположений опять же заставит переписать все релевантные части — слишком уж он ригиден для изменений. Или изначально надо писать суперобобщенный код, везде протаскивать конфигурацию через Reader и охуевать от многословности, которой в функциональщине быть как бы и не должно. И только в жабоподобных языках все в порядке. Золотая середина между надежностью и возможностью впихнуть костыль в любое место. Что-то поменялось, выяснился неизвестный факт? Добавим пару строчек в XML-конфиг, вытащим условие посреди кода, как фокусник вытаскивает кролика из шляпы, и все снова в порядке. Новые предположения все равно не абсолютны, так что вылизывать код каждый раз — пустая трата времени. Накопится долг — перепишем все с учетом вновь открывшихся данных.
Именно поэтому жабогоспода всегда будут прилично зарабатывать, не напрягаясь, а хипстеры и борщехлебы будут вынуждены каждый день читать про новые фреймворки, монады с линзами, получая лишь долю того, что платят жабабогу. И пока задроты изучают технологии, у жабабояр есть время на развитие софтскиллз, социализацию и рост в синьоры/тимлиды/менежмент.
>>1062774 Пример простого предположения: "Если товар в наличии, покупатель хочет купить его. Если товара нет в наличии, покупатель хочет узнать о его появлении." И в жабе, и в пхп мы можем прописать это условие. Но завтра оказывается, что мы учли не все: "Если товар в наличии, покупатель хочет купить его. Если товара нет в наличии, покупатель хочет узнать о его появлении или предзаказать его." В жабе мы просто добавляем значение Preorder в ButtonTypeEnum и добавляем обработку везде где надо. В пхп мы делаем как бы то же самое, но есть один нюанс: IDE не сделает работу за нас, найти все места для изменений придется самостоятельно. Чем сложнее предположения — тем сильнее страдает пыхораб, а для жабобогов сложность не принципиально не меняется.
>>1062778 > В пхп мы делаем как бы то же самое, но есть один нюанс: IDE не сделает работу за нас, найти все места для изменений придется самостоятельно. Чтааааа, это серьёзно? У пыходебилов за все это время не появилось нормальной иде?
>>1062785 >>1062800 IDE/фреймворки сами по себе чудес сотворить не могут, язык должен быть предрасположен к тому, чтобы они могли приносить настоящую пользу. Взгляните на код средней жаба-макаки. Он отвратителен, но, если макака не обмазывается рефлексией, то IDE может исправить этот код без участия человека, ведь система типов достаточно хороша, чтобы не наломать дров. А теперь взгляните на код средней пхп-мартышки. Где-то используются кошерные фичи фреймворка, где-то есть аннотации типов, но большая часть является неструктурированной лапшой, вместо объектов используются словари/массивы/строки. Сами объекты зачастую являются бессмысленной синглтон-оберткой над процедурщиной.
Да, с должной дисциплиной любой язык позволяет писать нормальный код, в котором IDE сможет разобраться. Но в пхп такой код писать бывает сложно(и не все хотят напрягаться), а в жабах такой код сложно не написать.
>>1062767 (OP) >Хочкиль Жавамартышка размышляет о том, чего не может знать и понимать. Жавамартышке лучше забыть о хачкиле и продолжить крыть хуями динамикопетушков
>>1062778 >просто добавляем значение Preorder в ButtonTypeEnum и добавляем обработку везде где надо >добавляем обработку везде где надо >добавляем >везде >просто Всегда проигрываю с паттерно-дебилов. Почему бы сразу не признаться, что ради одной кнопки, нужно перелопатить половину файлов в проекте?
>>1062767 (OP) Открой для себя свифт. С типизацией все охуенно аки в Хачкелле, но при этом очень гибок. Даже некое ощущение, что на скриптоязыке ебашишь, при этом никаких допущений, компилятор везде тебя подстрахует.
>>1062778 > Найти все места А потом оказывается что часть этих мест в скомпилированном class-файле, написанном уволившимся сотрудником 4 года назад с кучей грязных хаков, декомпилятор шлёт нахуй, что код на самом делает - нихуя непонятно, доков нет, а разбираться в байткоде джавамакаку не учили.
>>1062778 У тебя какие то перевратные представления о структуре интернет магазинов на пхп. Преордер это один новый метод в контроллере который обрабатывает заказы, будет вызываться по клику на кнопку "Предзаказать", новый метод в модели заказа, будет создавать заказ с пометкой что это предзаказ, новый столбец в таблице заказов, там будет инфа о том предзаказ это или нет, ну и какие то изменения во вьюхах. И все. В чем тут преимущества явы на пхп, не ясно.
>>1062800 Кекнул с программиста на IDE. >>1062778 А тут я кекнул с манявров. Заметьте как он видит добавление новой функции. Он даже выстраивает диалог так, чтобы вы не смогли догадаться что это всего-то добавление новой функции. Но дальше просто пушка "IDE не сделает работу за нас", то есть это уже норма что в 2к17 ты как-бы работая программистом сам признаёшься что ты нихуя не умеешь без IDE.
Не фичи языка или костыли, которые мы создаем.
Не сбор требований и нехватка данных.
Не написание надежного кода и его тестирование.
И даже не изменения как таковые.
Главная проблема — это предположения. Пока они выполняются, все работает. Как только предположение оказалось нарушенным — все, приехали.
В динамикодрисне вся работа кода построена на предположениях, которые нельзя автоматически проверить. Весь код придется выкинуть и переписать, или внимательно проверить вручную, что по трудозатратам равноценно.
В супернадежном Хачкеле, "ко-ко-ко скомпилировалось значит работает", нарушение предположений опять же заставит переписать все релевантные части — слишком уж он ригиден для изменений. Или изначально надо писать суперобобщенный код, везде протаскивать конфигурацию через Reader и охуевать от многословности, которой в функциональщине быть как бы и не должно.
И только в жабоподобных языках все в порядке. Золотая середина между надежностью и возможностью впихнуть костыль в любое место. Что-то поменялось, выяснился неизвестный факт? Добавим пару строчек в XML-конфиг, вытащим условие посреди кода, как фокусник вытаскивает кролика из шляпы, и все снова в порядке. Новые предположения все равно не абсолютны, так что вылизывать код каждый раз — пустая трата времени. Накопится долг — перепишем все с учетом вновь открывшихся данных.
Именно поэтому жабогоспода всегда будут прилично зарабатывать, не напрягаясь, а хипстеры и борщехлебы будут вынуждены каждый день читать про новые фреймворки, монады с линзами, получая лишь долю того, что платят жабабогу. И пока задроты изучают технологии, у жабабояр есть время на развитие софтскиллз, социализацию и рост в синьоры/тимлиды/менежмент.