Pull to refresh

Comments 305

Хотите писать код за любую оптимизацию которого вас будут носить на руках? Пишите смартконтракты.

Больше обращать внимания на общую оптимизацию, приложения, сайта. Так как полное игнорирование приводит и привела к текущей ситуации. Просто откройте посещаемый сайт и нажмите f12, вкладка performance.

Решение простое, для кода который исполняется не у тебя(приложения, браузерный жс) ввести некий налог для компаний, чтобы они оплачивали электричество которое я трачу для просмотра их херни

Появится стимул думать

"Добро пожаловать, на сайт, это компания Гос*****. После входа через ***** вам будет выставлен счет для оплаты налога на ваше электричество, пожалуйста, оплатите его до 22 числа".

...а независимые разработчики свалят, т.к. им не интересно делать сайт, мало который юзеры не оплачивают, так еще и за который надо налог платить...

я не говорил ничего про независимых разработчиков, конкретные виды приложений/сайтов и используемый для получения прибыли и проч. Иначе на данный момент можно поставить майнер в приложение для банка и все вынуждены будут его использовать, ведь другого приложения этого банка нет

...использовать другой банк, нет?

А вообще проблема правильная, но имхо, она решается не госрегулированием, которое, как правило, работает как слон в посудной лавке, а поддержкой конкуренции (чтобы было из чего выбирать) и независимой экспертизы (чтобы кто-то называл майнер майнером, а не "продвинутым способом кооплатинга услуг").

Проблема в том, что люди хотят всё бесплатно, а при этом условии выживают только гиганты, которые потом начинают тупо навязывать свои услуги.

поддержкой конкуренции 

именно конкуренция завела айти туда где оно есть. Конкуренция форсит заработать больше денег с меньшими затратами и игнорировать качество продукта.

Регулирование вносит коррективы в то, по каким критериям бизнес считает что-то оправданным. Например сейчас популярно говорить "естественный отбор перестал работать", нет, он стал работать по другому. И общество заинтересовано отбирать не компании, которые любым способом добились успеха (например убив конкурента физически), а те которые сделали именно продукт лучше (не быстрее сделанное / лучше разрекламированное, а просто лучше)

именно конкуренция завела айти туда где оно есть.

Аминь.

[не] игнорировать качество продукта ... а просто [делать] лучше

В этом гигантская проблема - и именно за этим вам нужен институт независимых экспертов, которые будут как-то говорить "как лучше и качественней".

Если такого не будет - у вас будут ученые, журналисты и пр. на финансировании корпораций, и никакого "лучше" не будет.

Или вы хотите, чтобы лучше определяло государство? Будет официальная система с баллами за качество импортозамещения / поддержки меньшинств софта? Вы точно хотите, чтобы эти люди определяли "что лучше"?

Общество - это очень абстрактно; по факту все решают конкретные представители (как правило, с громких голосом, а не большим мозгом) - и в этой ситуации я бы предпочел скорее видеть конкуренцию, как наименьшее зло.

.использовать другой банк, нет?

напомните что сделать, чтобы джаваскрипт на сайте перестал быть таким медленным? Использовать другой браузер?.. Что-то не работает...

Вы про майнер говорили до этого ) очень надеюсь, что майнер не каждый банк засовывает в приложение.

А так... ну, зато бесплатно - затем JS и нужен, БЫСТРЕЕ поставлять решения на 100500 разных девайсов.

Насчет сайтов - вот не поверите, я несколько раз слышал от своих пользователей, что мой сайт-сервис (без Реакта, на HTML+немного JQuery) недостаточно МОДЕН. По моему счастью, на них приходится приблизительно столько же пользователей-инженеров, которые говорят, что "работает отлично и текст - то что надо", составляя таким образом, оппозицию. Но у большинства сервисов пользователей-инженеров сильно меньше - и угадайте, какие решения они принимают?

Вас видимо все-же критикуют не за отсутствие реакта, а за то что сайт сервиса выглядит как привет из девяностых. Что в общем не так важно, если люди получают то зачем пришли, но так-то даже минимальные правки стилей могут сделать его удобней для просмотра. UX дизайн все-же не только для красоты и выпендрежа придумывали.

Вас видимо все-же критикуют не за отсутствие реакта, а за то что сайт сервиса выглядит как привет из девяностых.

Если разработчик не юзает, к примеру bootstrap, то явно сайт выглядит как то так?

А пользователь не-инженер вообще может понять есть ли у вас там React или нет? Я вот например смену технологии комментариев Хабра заметил только по жестким тормозам нового варианта (и их последующему обсуждению). А дизайн, как рядом заметили, совсем другое дело, его и без React сделать можно.

 А дизайн, как рядом заметили, совсем другое дело, его и без React сделать можно.

Это не совсем верно - на практике неплохие интерфейсные решения поставляются вместе с фреймворками.

Нет, конечно, можно всё перелопатить и написать красивый дизайн без Реакта - но денег это будет стоить имхо очень много.

Предыдущему комментатору не стал отвечать именно по этой причине - прекрасно себе представлять что "кто-то" (не автор комментария конечно) возьмет и за счет своих ресурсов сделает красиво. Реальная же практика диктует жесткие условия - либо современные решения (со всеми удобствами, тормозами и необходимостью писать фронтенд), либо в меру устарелые (HTML + староватые фреймворки). Исключения, конечно, есть, но они требуют редкого высокого профессионализма в области фронта, которого у меня нет.

$mol - решение из будущего со всеми удобствами, без тормозов и необходимости хорошо разбираться во фронте. Нужны лишь базовые знания TS и CSS, а так же умение читать доки.

Возможно я ошибаюсь, не видя сайта, но, как мне кажется, того же Bootstrap (и может некоторых плагинов) вполне хватит для современно выглядящего интерфейса.

А Bootstrap и используется - 2010-х годов, 2-ой версии. 4-ую версию сделали со 2 несовместимой - и чтобы на неё перейти, опять надо кучу всего перепахивать.

Так что дизайна из 90-х там нет (я еще помню те сайты), но комментаторам по данной теме данный факт обычно рассуждать не мешает.

К сожалению, да, по общему мнению "современно выглядящий сайт" - это SPA с кучей JS и функциональностью приложения. Т.е. сравнение идет с монстрами типа Яндекса, Сбера, Гугла и прочих - у которых есть отдельная команда фронтенда, постоянно вылизывающих интерфейс.

Если нужно перепахивать, значит была ошибка проектирования. Не стоит жёстко зависеть от vendor кода. Просто постелить соломки в виде адаптеров и смена вендора будет не смертельным квестом, а рутинной задачей.

напомните что сделать, чтобы джаваскрипт на сайте перестал быть таким медленным? Использовать другой браузер?.. Что-то не работает...

Уменьшить его количество до нуля:)

Вы всегда можете наказать их своим кошельком, уйдя с этого сайта и больше никогда его не посещая.

Госрегулирование в такой динамичной и нестандартной среде несет массу своих рисков. Более того, при такой логике налогом вполне можно обложить и вас - чтобы вы купили новый, более энергоэффективный процессор и тратили меньше электричества при равной нагрузке. Опасная эта тема, если ее взяться внедрять в лоб.

На что либо "обращают внимание" только когда есть стимул это делать. Если вы зашли на сайт, а он тормозит, значит никакого стимула ускорять его нет. Я вам назвал сферу, смартконтракты, где оптимизация ВСЕГДА нужна.

Давно хотел когонить спросить, а смартконтракты где используются вообще? ну кроме всякой криптовалютной торговли на бирже

Для создания финансовых пирамид

Если вы про централизованные биржы, то именно там смартконтрактов и нет, на то они и централизованные.

А так смартконтракты могут делать все что угодно, децентрализованные биржы, мосты, сбор средств, обмен токенами, есть попытки делать соц сети и мессенджеры на блокчейне - это тоже смартконтракты. Смартконтракт это программа.

давайте пример где смартконтракты в реальной жизни используются

Биржи, мосты, сбор средств, обмен токенами...

Это вот как древний мем: "Не представляю как жить без автомобиля, поехал в гараж отвез багажник, потом за шинами, затем диски в покраску, далее отполировал фары, затем на заправку, далее на ТО, потом купил страховку, заказал запчастей, съездил в автосервис поменял реактивные тяги, вернулся вечером только....а представляете как это всё делать без автомобиля?"

Смартконтракт это программа.

Ну вот я погромист с начала нулевых, много всякого софта видел и программил, чем мне может пригодится смартконтракт? при условии что я не собираюсь биткоинами торговать и всякими мем-токенами

Корабль, к сожалению (!), может и не рухнет через 30 лет. Придумают как подвязать ИИ к решению говнопроблем и не потонет. И почему "сопротивление"? Нет, не сопротивление. Просто реальную мглу, можно и нужно "просветить", мы же хомо-сапиенс. Мне казалось, что решение этой проблемы возможно с помощью глобального большого специального проекта. Типа параллельная реальность в программировании. Также, как когда-то windows-95 переписали с нуля в windows-xp, можно переписать с нуля всё программирование, с учетом уже имеющегося опыта. Почему я написал "к сожалению"? Потому, что хотелось бы, что такой проект всё-таки был на планете Земля.

Так дел не в том, что проблемы не решаемы. Дело в том, что нет экономического стимула к их решению.

Также, как когда-то windows-95 переписали с нуля в windows-xp

окститесь, никто Win95 в XP не переписывал, это разные ОС и это в NT4 один раз принесли UI из 95 винды, у них разные корни, разные концепции, разные истории которые пересеклись только в момент выхода NT4 где у них унифицировали интерфейс, а в районе XP немного подтянули совместимость

И вообще WindowsXP это на самом деле Win2k которому гламурные скины прикрутили, это даже в номере версии видно, 5.0 и 5.1

Мемный порядок удачных и неудачных ОС от Microsoft, как мне кажется, можно удобно переписать по внутренним номерам версий где x.1 удачные и x.0 нет. Семерка же 6.1 если мне память не изменяет. Правда с 10 они и этот порядок маркетингу подчинили.

4.0 это WindowsNT великая и ужастная про которую легенды ходят, сказать что она неудачная, я бы поостерегся ;)

5.0 это windows 2000, также крайне удачная ОС была, её логический продолжитель Windows 2003 (5.2), а XP (5.1) была продолжателем подлинейки Workstation/Professional у NT систем, причем по началу довольно неудачным

из "неудачных" NT систем можно считать были, первая версия XP, вся Vista (опередившая мощности компов того времени), и 8.0, серверные версии после 2003 я почти не застал но и какогото особого негатива я про них не слышал

из "неудачных" NT систем можно считать были, первая версия XP, вся Vista (опередившая мощности компов того времени), и 8.0, серверные версии после 2003 я почти не застал но и какогото особого негатива я про них не слышал

XP была решетом до SP3 в итоге XP все любят и будут помнить ещё десятки лет. Vista это реально какой то позор.

Vista это реально какой то позор.

гдето слышал, что нормальная-правильная Vista - это Windows 7 ;))

только, что мешает из легаси монолита, сделать модульный монолит

Так а в чём разница между модульным монолитом и набором микросервисов? Микросервисы - это точно не то же самое, что и "модульный монолит"?

нет

"Модуль" и "сервис" ортогональны. Модуль - единица организации логики/кода, сервис - единица организации деплоя/запуска.

Монолит - один запускаемый бинарь, микросервисы - пачка бинарей, общающаяся по сети. Модули же про то, как организован код.

Нет.

Вот у нас хрен знает что. Микросервисов точно нет. Но и одного огромного бинарника тоже нет. Есть куча мелких программ, каждая из которых выполняет какую-то логическую функцию. Разрабатывается, тестируется, поставляется независимо от остальных. В любой момент может быть заменена (с условием обратной совместимости контракта).

Вообще здесь (на этой платформе) все равно где у тебя расположен кусок кода - функция в этой же программе, функция в сервисной (аналоги динамической библиотеки) программе или в виде отдельной программы. Разница лишь в описании прототипа - просто прототип, прототип с модификатором extproc и ссылкой на имя в сервисной программе или прототип с модификатором extpgm с именем программы.

Все три способа вызова абсолютно равнозначны. Я могу написать одну большую программу из 100500 функций или 100500 маленьких с одной функцией в каждой.

Если мне надо вызвать программу асинхронно, я просто вызову ее через spawn (или системную команду sbmjob) и она запустится в отдельном фоновом задании (batch job).

Но, повторюсь, ни про какие "микросервисы" тут не слышали. Скорее все ближе к модели акторов которая была придумана еще когда подавляющего большинства "микросервисовщиков" еще и в проекте не было.

Вызов функции в отдельной программе не создает накладные расходы?

В принципе, создает. Но крайне незначительные на этой [достаточно специфической] платформе. Если речь идет о синхронном вызове, то тут не создается нового процесса (со всеми вытекающими) - вызов идет в рамках того же задания (job), той же памяти и той же (хотя это регулируется параметрами самой программы) группы активации (activation group). Если имя программы в прототипе функции задано явно, то вызов ее будет мало чем отличаться от вызова функции из сервисной программы (аналог динамической библиотеки).

Хуже когда в прототипе в exppgm указано не имя программы, а переменная в которой в рантайме будет записано это имя. Там да - потребуются некоторые дополнительные действия (определение т.н. "системного указателя" на объект типа *pgm - программа - с указанным именем). Но мы таких ситуаций стараемся избегать посильно, а где не удается - есть свои наработки для минимизации накладных расходов с этим связанных.

Модули же про то, как организован код.

Я не думаю, что автор использовал понятие "модуль" в том смысле, в каком оно понимается в организации кода (а-ля unit-ы в Паскале или ES-модули в JS/TS). Очевидно, автор говорит о каком-то подходе к декомпозиции сервиса, только непонятно, о каком. Код любого нормального монолита разбит на модули/единицы компиляции/что-там-ещё-придумано-в-конкретном-языке, никто не пишет исходники в файлах длиной по 10 мегабайт. Поэтому непонятно, какой смысл в вашем комментарии, вы описали очевидную вещь.

смотрит в навязанную работодателем кодовую базу, где есть С++ файлы на 25к строк. "Ну да, пошел я отсюда..."

видимо, мне одному очевидно, что чел изначально имел ввиду модули в том смысле, в каком модули существуют в линукс-ядре)

О программистском судить не буду, а вот с точки зрения пользовательского опыта история с яндекс-аддоном очевидным образом решается даже на Windows: каждому отдельный аккаунт, плюс понимание того, что вкладки браузера — это не замена закладкам браузера, они даже называются по-разному, хотя и похоже (по-русски).

Что касается объединения сканов в PDF, да тем более когда у вас есть убунту — convert image1.png image2.jpg image3.gif doc1.pdf

winget install ImageMagick.ImageMagick
magick convert image1.jpg doc1.pdf

Хотя я терпеть не могу PDF из картинок. Он потом так и будет гулять, в итоге попадёт к кому нибудь в базу документов, которые нужно парсить и обеспечить полнотекстовый поиск. Или просто захочешь почитать на бегу с мобильника...

Мне как-то попался сценарий когда один из государственных сайтов Индии потребовал скан документа в PDF, 2 страницы.

При этом сам документ электронный и присылается пользователю другим департаментов в электронном виде в качестве двух JPEG.

И вот приходится склеивать эти картинки в PDF. Хорошо у меня под рукой есть ImageMagick + руки. А вот местным приходится печатать, потом искать сканер который в PDF умеет.

Да. Чуть не забыл. На размер PDF тоже есть ограничение поэтому там всё ещё больнее чем на первый взгляд.

плюс понимание того, что вкладки браузера — это не замена закладкам
браузера, они даже называются по-разному, хотя и похоже (по-русски).

Да, но ничто не мешает эти вкладки восстанавливать при открытии. Вкладки - это текущий рабочий контекст. Я не хочу их терять при каждом перезапуске браузера.
Браузер может закрыться по любой причине - перезагрузка ОС, выход более новой версии браузера и его обновление, утечки памяти и ручной перезапуск, закрытие случайным кликом.
Софт существует для человека, а не наоборот.

Примерно так же я могу закрыть ide, открыть снова и она откроет проект и файлы, над которыми я работал до закрытия.

Софт существует для человека, а не наоборот.

Если посмотреть по косвенным признакам, то нет:
мы ведём себя с софтом так, как он требует от нас, а не наоборот;
мы часто оплачиваем его существование в виде лицензионных платежей;
и т.д.

Поэтому у разработчиков нет никаких шансов, что то изменить.

Проблема в том, что часто разработчики не хотят ничего менять. Я встречал довольно много проектов, где разработчики при условно неограниченных бюджетах, доступных архитектурных решениях и очень гибких сроках делали такие поделия, что возникали очень большие вопросы практически ко всему. И ответы на то, почему так получилось, никто не даёт.

И отдельная история в том, что есть компании, где люди специально ищут, что можно улучшить (не опираясь при этом на требования бизнеса), но в итоге при улучшении отдельных показателей общее качество постепенно падает.

Имхо, это миф, что если разработчикам дать волю делать, что они хотят, то они в среднем улучшат продукты. Да, есть примеры-исключения, но винить «жестоких менеджеров и капиталистов» не всегда правильно.

Между жестокими менеджерами и капиталистами, еще есть прослойка жестоких айтишников, у которых вагон гонора, свое видение и административный ресурс.

Ну и в целом, рядовому разрабу реально ничего не надо, кроме кода и зарплаты, а на рефакторинг всегда жопят бюджет.

а если появляется кто-то, кому больше всех надо, то он ради своих каких-то интересов, может принести новый язык/базу/технологию/cicd/что угодно. В итоге расплодится зоопарк, который знает он один, и который после его ухода только выбросить

А тем временем С++ программисты продолжают писать код.

И, конечно же, С++ программисты пишут только хороший и правильный код, не раздувают почём зря кодовую базу, не совершают глупых ошибок, не ленятся оптимизировать производительность. Ведь как только ты написал "Hello, world" на C++, тебе открылись все тайные знания Вселенной. А вот если ты, Страуструп упаси, сел за Rust/Go/Java/Python и т.д. - то у тебя автоматически отсыхают руки, прикасавшиеся к святому C++, и вырастают новые из жопы.

А если ты, ко всему прочему, задумался о микросервисах, то уже и программистом называться не можешь, ты, цитируя автора, становишься одной из ">= 1 девочек", притом вне зависимости от своего биологического пола. Потому что над микросерсивами работают только девочки. Мужчины пишут монолиты.

Я правильно понял смысл статьи?

А если ты, ко всему прочему, задумался о микросервисах, то уже и программистом называться не можешь, ты, цитируя автора, становишься одной из ">= 1 девочек", притом вне зависимости от своего биологического пола. Потому что над микросерсивами работают только девочки. Мужчины пишут монолиты.

Я правильно понял смысл статьи?

Нет. Смысл статьи в обозначении проблемы. Показать, что есть проблемы и возможно, проблема приобретает катастрофические формы. Что делаются ошибки выбора тех или иных технологий в угоду, простоты или модности текущего момента.

Одна из проблем - лишние уровни абстракции в угоду "концептуальности".

Условно, если нам нужны классы "котики" и "песики", мы городим 100500 уровней абстракций, отражающих весь процесс зарождения жизни и эволюции (даже не от одноклеточных, а от таблицы Менделеева).

А дальше... Кто-то зачем-то вносит изменения на каком-то из начальных уровней абстракций и... с приветом вам - котики и песики везде превратились в рептилоидов и разъехалось вообще все...

Второй момент - тот же ООП пытаются натянуть даже там, где он избыточен или вообще неудобен. Но... "Концептуально"! А что при этом вместо создания некой структуры и инициализации ее на этапе компиляции в рантайме будет вызываться конструктор (и не просто конструктор, а 3-5-10 конструкторов по всей линии наследования), который фактически делает все тоже самое, но более концептуально - это все фигня на палке.

Да, есть очень много ситуаций где это хорошо и правильно и облегчает и разработку и дальнейшее сопровождение. Но надо же понимать где это реально уместно и нужно, а где излишне и избыточно

Hidden text

Стоят верблюд-сын и верблюд-отец. Сын спрашивает:
— Папа, а зачем нам на спине нужен горб?
— В горбу, сынок мы накапливаем воду. Когда мы идём по пустыне, нас не мучает жажда.
— Папа, а зачем нам такие копыта?
— Это чтобы в пустыне ноги не проваливались в песок.
— А зачем нам такие большие и жёсткие губы?
— Это чтобы в пустыне можно было есть колючки.
— Тогда, папа, объясни мне, на кой чёрт нам весь этот тюнинг в Саратовском зоопарке?..

Может вы видите одну сторону медали но не хотите воспринимать другую? Микросервисы же решают определенную задачу. Не просто же так набирают больше людей и команд чтобы просто им платить деньги.

Чтобы что-то воспринять, надо быть или религиозным фанатиком, или понимать причину почему так, а не иначе. Или просто очень ограниченным человеком.

Если новому поколению сразу вдалбливать что такие задачи решаются микросервисами а монолитом пугать тех, кто плохо себя ведет и изначально говорить что кроме микросервисов и монолита ничего нет, то вырастет поколение тех, кто будет микросервисы пихать везде, не задумываясь надо или нет, просто потому что иных походов не знают.

Я не против микросервисов как концепции. Она в целом хорошая и правильная (думаю, что там в реализации возможны какие-то недочеты, но на концепцию это не влияет). Я против бездумного использования чего-то одного (безотносительно чего) всегда и везде, надо или не надо. Ну и против того, чтобы поливать кого-то грязью, кто хоть в чем-то не согласен.

Чем больше живу и узнаю, тем больше вижу сколько еще непознанного и понимаю что мой кругозор достаточно ограничен тем, с чем приходилось работать на практике. И всегда рад тому, когда жизнь ставит перед необходимостью этот кругозор как-то расширить.

Я не устану повторять одну и ту же мысль "Самое слабое звено всех технологий это человеческий мозг, который эволюционно не предназначен для решения таких задач".

Эволюционные процессы миллионы лет отбора, шлифовали наши тела и разумы для жизни в саванне в небольших группах сородичей. Потом происходит культурно-технологический взлёт. И вчерашние ковырятели корешков палкой, которые не против полакомиться сырым мясом пойманной белки, за секунду (по эволюционным меркам) создают мир в котором Эйфелева башня, коптящие углём пароходы, сверхзвуковые конкорды, глобальная информационная сеть, и техногенные нейросети создают за три секунды картину.

Естественно, эти технологии полное дерьмо. Человечество несётся вперёд вообще не отдавая себе отчёт о происходящем и подгоняемое мотивами, которые были выработаны для условий стаи приматов, живущих в пещере. За срок, соизмеримый с жизнью одного человека, мы умудрились перейти от граммпластинок и ламповых телевизоров к созданию интернета до его цензурирования и фактического распада, попутно разваливая баланс климата планеты и процессы в экосистемах.

Поднимите голову и увидьте за нагромождением кнопочек и распухшим софтом глобальный неконтролируемый технологический взрыв.

За срок, соизмеримый с жизнью одного человека

Природный срок жизни копателя белок в саванне - 20 лет. (Хотя долгожители были всегда)

Гренландская акула живёт по 400 лет не написав ни одной строчки на питоне. Шах и мат.

Зачем их, бедных, копать?...

криптобелки используются на черном рынке

И вчерашние ковырятели корешков палкой, которые не против полакомиться
сырым мясом пойманной белки, за секунду (по эволюционным меркам) создают
мир в котором Эйфелева башня, коптящие углём пароходы, сверхзвуковые
конкорды, глобальная информационная сеть, и техногенные нейросети
создают за три секунды картину.

Возможно их мозг не настолько уж плох для этих задач, раз они решили их так быстро и лучше, чем кто-либо в известной вселенной.

Естественно, эти технологии полное дерьмо.

Либо лучшие из возможных. Вообще, я в какой-то степени согласен, что проблема в человеческом мозге — человеческие представления об идеальном далеко не всегда соответствуют объективной реальности, люди хотят чего-то независимо от того, достижимо ли это в принципе. Причем для многих именно это представление является первичным, некоторые в итоге даже приходят в выводу, что вся наша вселенная "сломана", хотя если постараться смотреть на вещи непредвзято, то реальность вовсе не обязана соответствовать нашим представлениям о прекрасном.

Я скорей о том, что человечество развивается стихийно, подобно пожару или размножающейся планетарной плесени, чей метаболизм (в глобальном смысле) приобрёл технические возможности. Теперь мы пилим древесину моторизированными пилами и гребём руду ковшами миллионов экскаваторов. Но мотивация по прежнему пещерная.

У нас есть особенность разума — недооценка отложенных последствий, т.е. люди начинают что-то исправлять тогда, когда уже проблему стало невозможно отрицать.

Технологические проблемы воспринимаются обособленными, но в их основе когнитивные ошибки и особенности разума их создателей. Они следствие слепоты человека к несовершенству его собственного мышления и прогностической слабости.

Мой вывод - мы выкатываем фичи, а с техдолгом потом разберемся)

ну это уже много сотен лет так

С возвратно-гортанным нервом уже разобрались? А с пересечением дыхательных и глотательных путей? Ну ли хотя бы хвост при инициализации уже выпилили?

1) про "микросервисы" в точку ! Плакат "мы перешли на микросервисы" носился разрабами и показывался намеаждом конфколле. Как они перешли на "микроснрвисы" если СУБД как была одна так и осталась - загадка .

2) Это еще тема - что пишет современные разрабы для СУБД - не раскрыта .

Ну как одна...

Сначала мы героически пилим монолит на микросервисы. И каждый микросервис (дабы работать в своем контейнере и не мешать другим - это так концептуально) работает со своей репликой БД. Потом мы еще более героически решаем проблему синхронизаций реплик БД...

Типичный cargo cult. На самом деле граница между микросервисом и монолитом проходит не по размеру последнего, а по принципу единственной ответственности.

Микросервис просто штучка, которая за одну задачу отвечает, если она сложная, то и он будет сложный и большой.

А вот монолит отвечает за все вообще задачи

Я выше привел пример отсутствия микросервисов, но при этом большого количества программных объектов, каждый из которых реализует некую бизнес-логику.

Каждый объект может быть разработан, оттестирован и поставлен вне зависимости от остальных. Т.е. для изменения локального куска логики не требуется пересобирать огромный бинарник на сотни тысяч строк кода.

И вызов функции (объекта) может осуществляться из 100500 других таких же объектов.

Работал с софтом, который состоял из десятка программ, запускаемых как процессы и контроллируемых через heartbit. Взаимодействие осуществлялось через rpc лайк api через сокеты. Любой процесс перезапускался при потере пинга, если модификация не требовала изменения api её можно было накатывать на ходу. Работало как на одном узле, так и на нескольких. Слышал, что потом это утащили куда то в клауд и засовывали в контейнеры под каждого клиента.

Звучит как у вас можен не быть единственной ответствеености (при изменение одного интерфейся придется менять многие). Если же есть - это и есть микросервис, пусть и пещерный. В некоторых случаях микросервисы реализовались как субпроцессы одного и того же образа (через вызов fork()). Как работал старый inetd...

Контракты модулей нельзя менять без сохранения обратной совместимости. Это приведет к нарушению интеграции.

Внутренняя логика может меняться (например, в сторону оптимизации или если изменилась логика бизнеса).

Понятие "процесс" тут не используется. Вместо него - "задание" (job). Своего рода изолированный контейнер со своей памятью, окружением и т.п. В этом плане тут как "больших машинах" все. В рамках одного задания все вызовы синхронны - вызов одного модуля из другого ничем не отличается от вызова функции внутри модуля или функции из динамической библиотеки.

Асинхронные вызовы - с созданием нового фонового задания - spawn (или sbmjob - системная команда submit job со строкой запуска программы в параметре). И да, бывает запуск нескольких копий одного модуля в разных заданиях - это для параллельной обработки используется.

Для обмена данными между заданиями можно много чего использовать - пулы разделяемой памяти, системные каналы связи (сокеты, пайпы, очереди...)

Вообще все это близко к классической модели акторов работает.

Это наследник Silverlake, IBM i? Так это де-факто монолит. Все что доступно пользователям и программистам это SLIC-интерфейс, язык высокого уровня для машины. Все что вы пишете - это абстракция, а реальная структура и стоимости как и реализация от вас скрыта... что для этой области применения имеет преимущества.

IBM i это ребрендинг AS/400. Который уходит корнями в System/38.

SLIC, точнее, MI - это уровень машинных инструкций на которых основана TIMI. Ну а дальше уже поверх этого языки высокого уровня объединенные в ILE.

Но все это системное ПО, а прикладное уже может быть любым. Просто здесь система изначально построена как многопользовательская, на основе заданий (job) как изолированных контейнеров в которых работает прикладное ПО.

Я думаю, что главная задача, решаемая микросервисами - масштабирование части приложения при возрастании нагрузки на него. Ответственность вторична. То есть, например, если есть онлайн магазин с черной пятницей, то микросервисы дают возможность масштабировать не весь магазин с соответствующими затратами ресурсов, а только те его части, которые подвержены наибольшей нагрузке. В черную пятницу нет смысла сильно раздувать read-only каталог, зато возможно стоит апскейлить корзину и скидочный сервис. Экономия.

А описываемые автором проблемы с размазанными транзакциями - пример плохого разбиения на сервисы.

Но если там общая база, то она становится главным тормозом и масштабирование числа подов уже не так хорошо работает, а если там разные базы или даже одна, но не пересекающиеся данные, то это уже вполне себе микросервисы, а не распределённый монолит.

Хотя часто даже распределённый монолит вполне себе годное решение, если там нет сложных взаимодействий между частями.

Запрос по сети должен обратиться к другим сервисам, "дождаться" ответа, собрать информацию, валидировать, убедиться, что все сервисы ответили, И только потом после всех этих действий, транзакция считается исполненной, это прям мега упрощение. 

Как же это знакомо :-(

И потом начинается "мы упёрлись в СУБД"

все сервисы ответили, И только потом после всех этих действий, транзакция считается исполненной

За сетевые походы внутри транзакций в приличном обществе подвергают публичной порке. Вы с автором либо работаете с не самыми грамотными разработчиками, либо чего-то не понимаете.

За сетевые походы внутри транзакций в приличном обществе подвергают публичной порке. Вы с автором либо работаете с не самыми грамотными разработчиками, либо чего-то не понимаете.

Я же выделил ожидание в кавычки. Я говорю о налоге на сеть. Которая в любом случае даёт накладные расходы.

За сетевые походы внутри транзакций

Иногда это просто неизбежно, к сожалению

Если вы к примеру грамотно настроили конфиг того же Postgresql, это половина успеха.

А вот с этим, по личном опыте нервах и потраченному на общении с разрабами архитекторами и манагерами времени - не согласен.

Они напишут такой код, что никакой тюнинг PostgreSQL не поможет и будут истерить и кричать на каждом конфколле - "у нас хороший код , это СУБД тормозит". А архитектор будет генерить массу прожектов -"что бы еще такого придумать, чтобы эта СУБД все таки залетала".

Я лично видел запрос со стоимостью плана выполнения - триллион (10^12) и долгое долгое обсуждение - почему СУБД не летает.

Настройки СУБД к успеху проекта вообще отношения не имеют. Это как помыть руки перед едой - само собой разумеющееся. Можно мыть руки регулярно и заболеть воспалением легких.

После чтения ваших постов остаются одни загадки. Получается, вы Дартаньян, а все остальные инвалиды умственного труда. Ок, что мешает вам прийти с вашим дартаньянским авторитетом и просто объяснить дурачкам лучшие практики работы с БД? Или включаться в архитектурное ревью в потенциально ресурсоемких задачах? От кодинга до выкатки в прод и факапа с БД недели проходят. Достаточно времени, чтобы улучшить продукт своей экспертизой. Получается, что или ваша экспертиза никому не интересна (интересно, почему) или вы считаете, что это не ваше дело.

Я в жизни встречал вот ровно 2 типа ДБА. Одни видят проблемы и начинают методично бить по рукам и учить уму-разуму. Через пару месяцев все приходит в норму. Другие годами сидят и просто бухтят, какие же разрабы тупые.

Насколько я помню, в начале была Java написанная на С++, так как иначе будет тормозить ещё больше:) Rust это LLVM написанный на.. Сами догадайтесь:)

Непонятно, к чему это

И вообще, все эти стенания к чему? Автор установил говнопрограмму для pdf и плачет, что установил говнопрограмму для pdf. Rust не такой как С++. Андроид требователен к ресурсам. Яндекс задолбал маркетингом (привет, темная тема). ООП объяснют на зверушках, а хочу на отчетах (школьникам понравится очень)

В итоге что?

Как что? Раньше трава была зеленее, вода мокрее и вообще. А сейчас всеобщая всратость (с) и наше IT во мгле, а наш поезд в огне.

В итоге что?

Айти шабаш продолжается:)

В итоге куча людей утверждает, что если первые среды Python/JS/Rust были написаны на C++ - то все эти языки, значит, надстройка над с++ и никогда его нигде не заменят.

ООП объяснют на зверушках, а хочу на отчетах

В статье не ООП, а СОЛИД :) видать писал в кураже, ошибся и не заметил. Честно не понял, что не так со зверушками. Я про ООП узнал у Страуступа в книжке по С++ где-то в начале 90-х и там, по-моему тоже были зверушки, или что-то похожее. Все было понятно и норм, про то, что существуют какие-то отчеты, html и pdf я узнал только через много лет.

В целом, про то, что автор олд нифига не видно. Сплошная категоричность, юношеский максимализм и поверхносность. Ну и мемасики.

Студия не ставится оффлайн - возьмем васянскую сборку с трекера. Нуу, яб на рабочий комп ничего с трекера на ставил, ибо страшно подставить работодателя, или того, кому результат работы отдаешь, даже в теории. А тут не просто ставишь, а используешь для работы. Студия комьюнити эдишен, то есть какое-то мелкое инди в лучшем случае, но тогда к чему рассуждения о монолитах и микросервисах, если у такой инди монолит будет меньше, чем у иных микросервис?

В момент написания той книги SOLID формализованном виде еще не было. Эта парадигма появилась в начале 2000х

Возможно, где-то, не в нашем провинциальгом районе все эти ит компании пилят свой кусок weba и тащатся от прибыли, но даже там где в производственных компаниях с возрастом за 20 лет и наличием только excell и 1С появляются всякие писатели которые тащат туда всякие непотребства в виде php, pyton, Linux и web в локалку не потому что это необходимо, а потому что либо ничего не знают кроме того что знают, либо просто получают "опыт" и через некоторое время сваливают в какие нибудь сотовые конторы за длинным рублём. А компания остаётся с этим софтом, который периодически глючит и тормозит и новый раз раб начинает это все разгребать зачем-то, когда надо просто убить никому не нужный web интерфейс и все что с ним связано и сидеть все заново в нормальном десктопном варианте.

с возрастом за 20 лет и наличием только excell и 1С появляются всякие писатели которые тащат туда всякие непотребства в виде php

За всех писателей не скажу, но вполне себе допускаю, что у многих были хорошие мотивы. И писали не потому, что лишь бы написать, а хотели решить какую-то конкретную проблему. Ничего нет плохого автоматизировать через скрипты, через 1С и формировать какие-то Excel файлы. Оно становится просто в какой-то момент больно, если один файл нужен одновременно разным людям, или, что еще хуже, туда какой-то скрипт должен ходить по расписанию и обновлять данные, например подтягивая данные из клиент-банка или от контроллера при открытии двери. А еще плохо, если данные не всегда приходят в ожидаемом формате, сеть падает, и много чего еще, что как раз и решается такими языками программирования. И очень часто бывает, что ты делаешь что-то простое, решаешь одну задачу, а потом из этого бизнес делает комбайнер, чтобы в одном месте видеть и количество выручки и температуру на удаленном складе. В итоге это в 9 из 10 случаев и скатывается в то самое кодовое месиво, программист идет в более адекватную фирму с более адекватным менджементом, где и платят ему больше. Все логично.

ИТ во мгле или нет?

НЕТ! Мгла темная, а не коричневая, и ни чем не пахнет. Мгла не жидкая. Картинка с коллекторным водолазом точно поясняет ситуацию.

Для меня первым звонком, что погружение начато, стало в MIT больше не изучают SICP. Обратите внимание: Университет отказался от годного курса, потому что он не удовлетворяет требованиям бизнеса.

инженеры обычно пишут код для сложного аппаратного обеспечения, которое
они не до конца понимают (причем часто это происходит по причине
коммерческой тайны

Никто не сказал, что для надежности кода нужно чтобы код был открыт и удовлетворял определенным стандартам. Просто закрыли курс.

Деньги рулят! Через непрозрачное финансирование общественных фондов. Через подкуп политиков. В том числе, Деньги рулят через закрытое и несвободное програмное обеспечение.

Процитирую Столмана:

В случае с ПО существуют две модели развития событий: либо вы
используете программу, либо программа использует вас. Чтобы программу
использовали именно вы, вам нужны определенные свободы. Эти свободы по
сути являются критериями свободного ПО. Если у пользователей их нет, они
не могут использовать программу. Программа использует их. В последнем
случае все равно есть кто-то, кто управляет этой программой, поэтому мы
говорим, что он управляет и ее пользователями. Выходит, что несвободная
программа - инструмент несправедливой власти.

Власть денег - это несправедливая власть. Она называется олигархией. Если вы обслуживаете интересы этой власти, то поздравляю - вы во го МГЛЕ.

Процитирую Столмана

Ну не надо его иконизировать... Столман - этакий "Ленин от IT" (ладно хоть не Троцкий). Вроде бы все мысли идеи правильные, но если возвести их в догму, получится полная ерунда.

GNU Manifesto не догма, а руководство к действию ;-)

Троцкий - это Линус.

Проблему сканирования и объединения pdf в Windows решил с помощью программы WinScan2PDF
Ничего лишнего и весит всего 300кб.

Если честно, все же непонятен глубинный мотив автора. Вроде про 10 лет опыта написано. Значит, 28-32. Какие-то "вкладки", daemon tools... да хоть аська. Что нужно? Продуктам по 20 лет, идёт гонка за прибылью везде, и это логично и хорошо. Претензии к среде уровня джунов не иначе.

Какие-то "вкладки", daemon tools... да хоть аська. Что нужно? Продуктам по 20 лет, идёт гонка за прибылью везде, и это логично и хорошо. Претензии к среде уровня джунов не иначе.

Суть в переусложненном и тормозном софте, что в нативе, бэке, фронте. И данная ситуация усугубляется. Претензии к элементарным вещам. И призыв, нормально делай, нормально будет.

Откройте уже для себя хотя бы BetterC и прекратите плодить копипасту с уязвимостями на С с классами. Вы пеняете на инфантильность современных разрабов, но при этом большая часть ваших тезисов показывает вашу собственную неспособность принимать разумные взвешенные решения.

Вы пеняете на инфантильность современных разрабов, но при этом большая часть ваших тезисов показывает вашу собственную неспособность принимать разумные взвешенные решения.

Что именно за решения?

Так и вижу: проект на пару десятков миллионов строк кода на С/С++. Живет и активно развивается уже 5+ лет. И тут прибегает юноша пылкий со взором горящим - "я принял разумное и взвешенное решение - переводим все на BetterC". Как думаете, куда он в итоге отправится?

Так и вижу: закладывают новый большой проект. Приходит большой Босс и говорит: в соседней фирме уже 40 лет разрабатывают на С, у них всё работает. Поэтому мы тоже будем на С.

В НАСА так и делают. Суть в инструментах. Берём простое js spa приложение. Пару мегабайт на фреймворк. Для запуска нужен браузер и т. д И простой функционал в итоге, потребляет достаточно, ощутимый ресурс на клиенте.

И простой функционал в итоге, потребляет достаточно, ощутимый ресурс на клиенте.

А можно, мы как (условно) в НАСА, посадим все за 1 вариант компьютера, без разных устройств, операционок, мобилок и сборок?

Тогда программы будет писать ну знааачительно проще.

Весь этот цирк с HTML и JS нужен, потому что это универсальная открытая среда запуска графического интерфейса НА всем. Если бы компании не пропихивали своё видение (привет, Джобс и его отказ от Флеш, .NET и пр. - один Safari и Objective-C, привет Microsoft c бесконечной чехардой WinAPI, Silverlight, XAML, .NET 1,2,3,Core - об этом Спольки писал) - возможно, программы было бы писать проще.

И зарежем все инновации. В таком случае мы бы до сих пор без графического интерфейса и мыши бы сидели.

Были бы инновации. Очередная версия нового\старого js фреймворка, с увеличенным потреблением ресурсов. И данная тенденция не останавливается.

потому что нуно работать

Я отвечал на комментарий, где перечислялось " (привет, Джобс и его отказ от Флеш, .NET и пр. - один Safari и Objective-C, привет Microsoft c бесконечной чехардой WinAPI, Silverlight, XAML, .NET 1,2,3,Core ".

Это явно не " Очередная версия нового\старого js фреймворка"

Что из этого нужно принять в качестве единого и обязательного использования для всех без исключения пользователей и разработчиков? Objective-C и Маки с их привязкой к одному производителю железа, полностью контролирующему распространение программ? Флеш? А может классический Net с его жесткой привязкой к виндам?

Да я вообще отвечал в саркастическом духе, объясняя, что писать хорошо и эффективно как в НАСА для Вояджеров можно только, если у тебя очень жестко прописанная железная база. Тогда можно быть довольно эффективным - иначе добро пожаловать в мир HTML/JS, который по факту является универсальным графическим интерфейсом на разных платформах (потому что платформы не хотят договариваться об универсальном интерфейсе сами - и примеры приведены)

Тут был коммент со ссылкой на то "что занимает 300 Мб в приложении ВТБ" - правильно, ресурсы под разные архитектуры и разрешения экранов )

А нужен ли графический интерфейс НА ВСЕМ?

Пользователи хотят; если вы хотите зарабатывать деньги, то вынуждены их слушать (или конкурировать с теми, кто его делает).

Если опенсорс - как у меня - то можно себе немного позволить игнорировать желания пользователей "сделать все красиво", и делать функционально.

Есть разница между закладкой нового проекта и полным переписыванием того, что уже работает. Особенно, когда речь идет не о личном пет-проекте, а о чем-то таком, что давно и стабильно работает и приносит большие деньги.

При закладке нового проекта вы будет учитывать множество факторов. И на основе совокупности уже делать выбор.

И, кстати, аргумент "уже 40 лет разрабатывают на С, у них всё работает" - это тоже аргумент против "тут три студента придумали новый суперязык, правда никто еще ничего серьезного на нем не написал".

А потом Вы отправите Ваших детей лететь на самолёте, ПО для которого написано на *стильном, модном, молодёжном* BetterC/whatever?

Chaque chause a çà place, блин.

Вообще, забавно, когда умудрённые опытом 10-летние девочки называют тебя юношей. Первым делом я бы отправился к вашему начальнику и с числами наперевес объяснил, что 5 лет назад было принято бестолковое технологическое решение, что вылилось в пару десятков миллионов строк дырявого и протекающего говнокода, затягивание разработки, и как следствие - распухание бюджета. Прогноз на следующие 5 лет ещё более не утешительный, если не начать фоновый рефакторинг прямо сейчас. Желательно с распилом на микросервисы, чтобы многомиллионное легаси больше не было ярмом на шее при развитии проекта.

На месте начальника я бы разрешил персонально Вам в свободное от работы время заняться "фоновым рефакторингом" с последующим полным регресс-тестированием (компонентным, бизнес, нагрузочным, интеграционным). Без дополнительной оплаты, естественно. И вот если вам удастся доказать, что стало как минимум не хуже - ну почему бы и нет?

Примеры в истории были. с 2012 по 2017гг Банк Содружества Австралии и Океании переходил на "новый технолгический стек". 5 лет и $750млн денег это им стоило. Других энтузиастов как-то не нашлось. Почему-то.

Все всегда упирается в деньги и ресурсы. Кто этим будет заниматься? Сколько это будет стоить? Сколько на этом заработает компания? Как быстро отобьются вложения?

Одно дело когда вы начинаете проект с нуля - там вольны выбирать любые решения и любой инструментарий.

Совсем другое - когда проект живет и развивается много лет, приносит прибыль. Взять все и поменять в такой ситуации в 99.99% случаев неоправданно дорого.

Да, С/С++ не идеальные языки. Но. Они многое позволяют делать достаточно эффективно. И, как любой эффективный инструмент, они требуют высокой квалификации и аккуратности в использовании.

Но при этом это очень распространенные языки. Поддерживаемые огромным сообществом разработчиков и комитетом по стандартизации. На них написано огромное количество кода. И там гарантированно не будет ситуации, когда кто-то скажет "да скачи оно все конем, надоело" и на этом все закончится - язык "подвиснет" в непонятном состоянии.

А языки "такие же, но лучше" появляются постоянно. Вот только "в широкие массы" они выходят крайне редко.

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

То, что в ИТ это возможно - это к счастью для народного хозяйства в целом. Потому что квалифицированные программисты -товар редкий, а потому дорогой. А железо - оно массовое, и постонянно дешевеет, один порядок величины - это всего лет пять развития по закону Мура.

Понимаю, что вы правы. Но и понимаю и тот момент, что можно всё же лучше писать софт.

Можно, но кто это оплатит?

Что значит "кто оплатит"? Достаточно просто не платить за плохой софт.

Вы же не будете покупать (платить за) невкусные (и/или не полезные) продукты? Или за некачественный товар. Так почему кто-то должен платить за плохо написанный софт?

Тут вопрос в надлежащей организации контроля качества оплачиваемого вами продукта. Ну почему у нас любая поставка проходит этап нагрузочного тестирования где тебе могут сказать "твой код жрет недопустимо много ресурсов - переделывай". А где-то такого нет. Там разработчик отмораживается - "у вас тормозит потому что сервер слабый - покупайте новое железо и все будет ок". А на самом деле ему просто было лень нормально сделать - налабал что-то левой ногой побыстрее и спихнул заказчику.

>Так почему кто-то должен платить за плохо написанный софт?

Например потому, что у него возможностей больше или экосистема больше.

Вот есть две программы. Одна грузит процессор в два раза сильнее и память в пять раз больше чем вторая, например первая загружает процессор на 6% против 3% у второй, и съедает 20% оперативки вместо 4% у второй.

Но у второй программы больше функционал и есть какие-то нужные функции, которых нет в первой. Плюс есть экосистема - подробная документация, большое сообщество в интернете которое быстро отвечает на вопросы, много плагинов, для некоторых классов программ много людей на рынке труда, знакомых с ней.

А еще вторая программа стоит дешевле.

Какую из них логично и разумно выбрать? Как минимум какую из них выберет массовый покупатель?

>Тут вопрос в надлежащей организации контроля качества оплачиваемого вами продукта.

Это все стоит денег. И либо увеличивает стоимость программы либо увеличивает сроки ее разработки и соотвественно уменьшает количество функуионала за тот же период времени.

К примеру выше я могу добавить заказной софт - если я сейчас скажу заказчику "давайте сделаем заказанное вами ПО в два раза быстрее снизив цифру нагрузки на сервер, но в релизы на ближайшие пару лет пойдет в два раза меньше функционала" - догадываетесь, что мне скажет заказчик?

>Вот есть две программы. Одна грузит процессор в два раза сильнее и память в пять раз больше чем вторая, например первая загружает процессор на 6% против 3% у второй, и съедает 20% оперативки вместо 4% у второй.

Поторопился немного и накосячил в комментарии и уже не отредактировать. Вторая конечно грузит процессор и память сильнее.

Так весь вопрос в том, что много софта пишется на заказ. Под конкретные требования. Ну хоть тут-то можно исполнителя напрячь чтобы он сделал нормально?

Там же часто проблема в том, что подход "херак-херак и в продакшн". И скорее следующую задачу взять. А как оно там работать будет - да кого это все волнует.

Ну хоть тут-то можно исполнителя напрячь чтобы он сделал нормально?

ой давайте расскажу как делается, у меня до сих пор подгорает от оутсорс разработки

Есть проект, заказчик говорит что есть бюджет, делаем

аналитики составляют ТЗ, разработчики накидывают задачи, заказчик досканально их изучает и пишет примерно так

  • так, вижу работы по аналитике, ок

  • так, вижу написание кода, ага

  • вижу тестирование - стоп, зачем тестирование? вы что плохо код пишете? давайте сократим..было 3 недели, будет 5 дней, достаточно вам, сервис не сложный

  • вижу аналитику на интеграцию с существующей системой, не понимаю почему вы заложили 4 недели, есть описание в конфлюенс (10 летней давности) там всего три интерфейса, сокращаем, вам хватит 4 дней на такую работу (звук вычеркивания)

  • так, срок исполнения 10 мес...неее, ребят, у нас дедлайн через два месяца, так что сокращаем срок до, так уж и быть до 3 месяцев, причем после 1 месяца мы полностью убираем аналитиков из команды, они же ТЗ написали значит не нужны

приносят на подпись это всё, я говорю - подписывать не буду, мы не уложимся, мне говорят, ничего ничего уложитесь, всё понятно что вы подрядчики хотите бабла срубить с нас, я - ну так вы сами будете на нас бочки катить что плохо работает? - да будем, вы же сейчас подпишите это значит согласны взяться... всё пи..ц мы в итоге имеем сервис такого качества

меня на год работы хватило в таком режиме, не могу я этот дурдом переносить

характерно что разок я был с другой стороны баррикад, есть много контор которые даже не пытались спорить как я когда им чтото режут..я так понимаю это настолько стандартный процесс что никто не удивляется

глюки софта устраивают заказчика в 90% случаев, а аргументацию что надо делать по другому он воспринимает как попытку обмана ради бабла

Так смотрите что получается.

Заказчика устраивает говнокод и он готов за него платить
Разработчик готов писать говонокод, лишь бы на него платили

Ну тогда и эта статья и все разговоры вокруг нее - это "плач Ярославны для баяна с оркестром" (с) Просто потрындеть ниочем т.к. в целом все всех устраивает. Всем и так все хорошо.

Ну за исключением отдельных мест, где на кону стоят большие деньги. Мы вот не идейные отнюдь и не оптимальный эффективный код ради оптимального и эффективного кода. Просто мы с ситуации, когда или код эффективен и все работает, или код не эффективен и все встает колом, а это сразу только прямые финансовые потери с офигенным количеством нулей (теоретическая оценка часа простоя сервера - десятки лямов, если уже не сотни в нынешних ценах, только прямого ущерба, не считая репутационного и тех люлей, который щедро отвесит регулятор).

И да, когда-то все было проще - клиентов меньше, процессов меньше. И с тех времен осталось некоторое количество кода, глядя на который хочется схватиться за пистолет. И все это достаточно часто прилетает "на оптимизацию". У меня даже уже есть пара "любимых" персонажей (у нас принято в камментах в заголовке писать историю изменения кода - кто когда что менял), видя имена которых в коде сразу понимаю - рефакторить тут нечего. Надо поднимать логику и делать все с нуля.

И да, у нас могут поставить вопрос об "отчислении". В первую очередь это по вендорам - мы давно перешли на приемку на уровне кода - т.е. все ревью и тесты делаем мы. И в какой-то момент ставится вопрос перед вендорам - "от этого разработчика мы больше ничего не принимаем и не оплачиваем, ищите другого".

Со своими проще - тут складывается такой "заповедник идейных" - люди с огромным опытом по этой платформе плюс еще и перфекционисты - принципиально стараются выжимать максимум. Но их тут холят и лелеют. Ну и молодежь тянут к такому же уровню - чтобы расти по деньгам и лычкам, нужно стремиться вот к такому. А "снежинок" - пришел, наговнокодил и убежал в другое место, разгребайте без меня - тут нет.

Но много ли таких мест?

Ну за исключением отдельных мест, где на кону стоят большие деньги

и там тоже такое бывает

мне до сих пор ночами снится БД и софт платежной системы без поддержки транзакций..

типичная операция по переводу средств между своими счетами:

acc_1.amount=acc_1.amount-1000

acc_2.amount=acc_2.amount+1000

казалось бы в чем проблема? решили проблему организационным способом, срок прохождения платежки 3 дня, срок холда 30 дней, если по результатам закрытия дня будет расхождения, девочки поправят...если клиент пожалуется - поправят сразу

софт написан в начале 90х, не удивлюсь если он до сих пор работает

я видел фейлы когда куча бабок прилетало не тому кому надо, доступы пропадали, деньги исчезали... условный крупный банк из топ 5 кстати довольно часто падает так что аукается всем участником отрасли...когда я еще был в отрасли, если видишь беготню по коридорам, то два варианта...мы упали или они упали..когда они падают поддержка у нас начинает разрываться от звонков что это у нас ничо не работает..потому что огромное кол-во операций идет в сторону одного из топовых банков и клиенты не верят что это проблема не у нас

вы всё правильно говорите, но вот такой подход как у вас, это скорее исключение чем правило...это прискорбно но это блин так.

Так я же написал

К примеру выше я могу добавить заказной софт - если я сейчас скажу заказчику "давайте сделаем заказанное вами ПО в два раза быстрее снизив цифру нагрузки на сервер, но в релизы на ближайшие пару лет пойдет в два раза меньше функционала" - догадываетесь, что мне скажет заказчик (и куда пошлет)?

В заказном ПО обычно задача впихнуть как можно больше функционала в как можно меньший бюджет.

При этом идеальное удобство пользователей может бизнес вообще не волновать - ждет работник несколько секунд нажатия на кнопку ну и ладною Это с публичного сайта в течение первой секунды половина посетителей уйдет не дождавшись загрузки (навскидку, лень гуглить исследования которые когда-то видел). А работник будет ждать, ему работу делать надо.

И отчета вполне будет ждать минут пять если надо.

Плюс огромное количество заказного ПО вообще железом не особо ограничено, там вполне может быть система которую пилит например лет пять команда из допустим 4 программистов и аналитика, а нагрузка такая, что влезает на не самую мощную виртуалку там с 4-8 ядрами, с 4-16 Гб оперативки. И вы сравните стоимость этой виртуалки и стоимость пяти лет работы команды из 5 человек даже если это миддлы, а не сеньоры и даже если это мидлы в РФ.

Высоконагруженный бэкенд - исключение, и это в плане количества разработчиков ниша.

Для корпоративного рынка примерно так. Есть, правда, нюанс - какой софт считаь плохим (по науке это - асимметрия информации), но пока что бог с ним.

Но вот если речь о потребительском рынке, то тут есть ещё один нюанс, про который я не упомянул, хотя он - более важный: производство ПО и услуг для этого рынка оплачивает рекламодатель, естественно - в своих интересах.

незаслуженно забыли погромистов Озона

 Я скромный богобоязненный разработчик на С#

Мне как C# разработчику хватает одного сайта

Итого - два места, где упоминается C#. Хотя ссылка ведет на справочник по C++. По всему тексту вижу только C++. Ругаете, что все плохо, ужасно, кошмарно и не кошерно (кое в чем - справедливо). Так предложите образец аккуратности. А то, действительно, получается "ИТ во мгле"

В С# я пришел из веба на С++. Понимая как реализовано в С++, почти без заглядывания под капот С#, понимаешь как оно там всё устроено. Те же алгоритмы, концепции, упрощенно и более безопасно. Не то, что С++ база. Но его знание, довольно серьезно расширяет кругозор.

Понимая как реализовано в С++, почти без заглядывания под капот С#, понимаешь как оно там всё устроено.

Не всегда. В C++, насколько я помню, традиционно было плохо с информацией о типах во время выполнения (может, в последних стандартах и улучшили, не знаю, я лично не прошел дальше C++ 2003), а в C# эта информация практически полная. И это позволяет работать с классами, которые не были известны на момент компиляции.
Типичный (хотя сейчас и несколько устаревший) пример - Startup-класс в ASP.NET Core web-приложении, сделанном по шаблону Generic Host: этот класс может отыскиваеться кодом библиотеки (заранее скомпилированным) в рантайме по его имени и может даже быть разным для разных окружений (development/staging/production) и не обязан при этом содержать все потенциально вызываемые кодом библиотеки методы (к примеру, ConfigureContainer там бывал нечасто AFAIK, ибо нужен он только при использовании сторонних DI-контейнеров).

Я больше о взаимодействии с железом.

Статья программиста о программировании. Плохо структурирована, написана плохим языком, перегружена кучей баянистых мемасиков (что также ни разу не облегчает восприятие), основное содержание - "Раньше трава была зеленее", конструктива практически не содержит. То есть чтобы понять то, о чем тут написано, не надо даже читать статью - достаточно просто на нее посмотреть. :) "Если ты долго смотришь в бездну..."

 "Раньше трава была зеленее", конструктива практически не содержит. То есть чтобы понять то, о чем тут написано, не надо даже читать статью - достаточно просто на нее посмотреть. :)

Это же прекрасно. Что просто по картинке, уже понятно, о чём речь:)

"Раньше трава была зеленее"

Знаете, не хочу утверждать. Но некое здравое зерно в данном утверждении есть.

к вашим аргументам о essential issue поста присовокуплю " -раньше трава была зеленее, питайтесь ей....")))

Хорошо, что хром способен восстановить недавно закрытые вкладки. Есть
вкладки, которые висят неделями или месяцами и ждут своего часа когда я
их посмотрю.

Меня несколько.. удивляют люди, которые рассматривают вкладки как некий род постоянного, а не эфемерного хранилища. закладки придуманы примерно вечность назад.

закладки придуманы примерно вечность назад

Удобно когда всё на виду.

Тем не менее, таких людей большинство, включая меня. В закладки тащу то, что уже посмотрел и отобрал, как важное или переиспользуемое, а во вкладках висит то, до чего руки не дошли, но потенциально интересное. Недавно перешёл за сотню вкладок на телефоне (ему 6.5 лет), а сколько их в Хроме на компе, даже подумать страшно)

Аналогично. Закладок море, но есть десяток-другой открытых и закрепленных вкладок, которые сейчас "в работе".

я вот когда вижу больше дюжины открытых вкладок у себя в браузере , тянусь сразу к кнопке "закрыть другие"

Да что там к кнопке, я тянусь сразу к револьверу, но потом вспоминаю, что его у меня нет.

Я сначала добавлял в закладки, потом перешел на заметочные программы Evernote/Nimbus Note/"блин после санкций ни одной приличной нет" но в итоге все равно в браузере может скопиться под сотню вкладок просто потому что сейчас нет времени на их чистку и перенос ссылок в постоянно хранилище

Вкладки легко делаются постоянными с помощью великолепного расширения SessionBudy. Удобнее чем закладки. Я теперь не представляю использование хрома без него.

Статья написана прогером ногами, руками и головой стоящий в прошлом веке, и в прошлом тысячелетии, этак в 1999. Не смотря на то что есть трезвые мысли насчет множественности frameworks разной гадости, насчет моды в программировании - те же микросервисы, как панацея, автор далек от создания сложных программных комплексов. Он мыслит на уровне кода , на уровне языка пусть даже ООП и где то асинхронного программирования. И конечно же на уровне защиты любимого софта от посягательств. Понятны его проблемы на этом уровне, хочется простоты, хочется покоя, хочется знакомого, что бы пилить-пилить-пилить до, как там говорил Буч , до победы над хаосом. Но , как правильно было замечено выше, поместить все в шаблоны и паттерны это не значить объять необъятное. Потому как код никому не победить в огромных проектах. Не нравится тебе сложность -не можешь победить -привлекай нейронку, не пиши просто код - рисуй, строй модели, и потом заставляй туже нейронку эти модели оптимизировать. Существует гигантские открытые банки моделей, с кучей разных параметров , переменных и соответственно поведением, бери пользуйся , натравливай на них сеть, пусть дипленится на них, а не с нуля, и будет вам обоим счастье.

Как по мне, так стоит добавить, что статья написана в полном соответствии с тем софтом/кодом/..., который автор ругает. Все эти бесполезные мемы, отступления от темы и т.п.

Про нейронки и генерацию кода и приложений ими, мне идея нравится. От того, что мне интересна история ИТ и я стою в 1999 году, никак не меняет и не умоляет, то что мы имеем сейчас. Больших и сложных систем не так много. Условно средний портал обслуживающий некий бизнес, не требует для себя выбор в сторону микросервиса и сопутствующего усложнения архитектуры. Он никогда не будет иметь ту нагрузку и количество пользователей. Сложность ради сложности и не более.

Как пример. Есть банк. Достаточно крупный. 50млн клиентов (может и больше уже). Так вот на центральных серверах там никаких микросервисов нет. По очень скромным оценкам (сейчас всего уже может быть ощутимо больше)

  • 27 тыс. программных объектов

  • 15 тыс. таблиц и индексов базы данных

  • Более 150 программных комплексов

  • Занимает более 30 Терабайт дискового пространства

  • В день изменяется более 1,5 Терабайт информации в БД

  • За день выполняется более 100 млн. бизнес операций

  • Одновременно обслуживается более 10 тыс. процессов

И никаких микросервисов. Да, не единый монолит как его пытаются представить любители ужастиков (в виде одного огромного бинарника), но не микросервисы.

но не микросервисы.

а просто сервисы, да

Это тоже разновидность некого монолита, вокруг которого навешивают всякие надстройки потому что отдельные объекты слишком крупные чтобы их шатать, вместо того чтобы например добавить поддержку формирования отчетов в pdf вместо(дополнительно к) txt формату, делается второй сервис который получает на вход txt из первого и генерит pdf, потому что сервис отчётов помимо формирования отчётов еще рассчитывает кредитные рейтинги...и если поломать логику формирования текста то отваливается вообще куча других связанных сервисов, потому что код этого писался непойми когда и как

а был бы микросервис, было бы проще.

это вот кстати реальный пример из начала 10х годов, я помнится перетаскивал гдето сотню таких макросервисов на java 7 с 1.4 ... и писал подобные затычки чтобы хоть чтото современное поддерживать оно началО

Да нет там какого-то единого модуля, вокруг которого все навешано. Есть куча модулей, каждый из которых что-то свое делает. И если поменялась логика - просто заменяем нужный модуль и все.

И такого чтобы какой-то сервис генерировал и рейтинги и отчеты - тут такого не бывает. Каждый модуль реализует свою атомарную логику.

Если сценарий использования подразумевает и то и это - значит будет какой-то модуль, который запускает и то и это. Но каждое в отдельности будет реализовано отдельным модулем.

Я больше скажу - у нас ввод данных во все таблицы (кроме временных рабочих, логов и т.п.) реализован через т.н. "опции ведения таблиц". Которая на самом деле состоит из 4-х модулей - модуль собственно записи в таблицу, модуль т.н. "внешнего ввода" (куда передаются данные для записи), модуль валидации и модуль интерактивного ввода.

Есть модули-ретриверы (для тех случаев, когда данные получаются сложнее чем просто прочитать запись по ключу). Есть какие-то бизнесовые модули (те же отчеты).

Но любой модуль логически атомарен - выполняет одну, строго определенную функцию.

Так всякий жеж

условно средний портал обслуживающий некий бизнес

мнит себя Гуглом Всемогущим, которому без БИГДАТЫ ваще никак

Стенания и плач не помогут. Для перемен нужен стимул. Изначально это палка, которой погоняли ослов, но потом понятие расширилось.
Т.е. сейчас задача создать отрицательный стимул для писателей говнософта, и положительный - для авторов оптимизированных программ и сайтов. Как это сделать? Освещать проблему с конкретными цифрами и бенчмарками, создавать коммьюнити потребителей, вести свой рейтинг, подавать судебные иски, и т.д.

Это не поможет никак. Помочь может только одно - ситуация, в которой люди начнут платить деньги за более быстрые программы.

Я ровно это и написал. Люди собираются вместе, обмениваются мнениями, ищут аналоги, договариваются не покупать медленные программы, а покупать быстрые, привлекают спонсоров для авторов быстрых программ, поддерживают их информационно.

Так понятней. Но, как мне кажется, такая активность никогда не выйдет на те масштабы, которые станут заметными в цифрах продаж и доходов производителей софта.

Подавляющее большинство денег вообще идет от молчаливого большинства, которое никакие обзоры и отзывы в интернете не читает.

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

медленно но с большим функционалом или больше экосистемой. И последние факторы для большинства важнее.

Увы, полностью согласен.

Мне кажется, что будет кучка энтузиастов сидящих на своих линуксах и мэйнстрим, который будет развиваться по сценарию "обосраного замка", т.е. технологию доведут до такой степени избыточности и сложности, что запилят что-то новое и юзеры мигрируют туда.

Мне кажется, вы излишне оптимитичны. Не все живут в первом мире, у кучи пользователей могут тупо кончиться деньги на обновление оборудования с неясными целями.

Может быть и так. Но мне кажется фундементальные проблемы начнутся в сфере политики\экономики\климата раньше чем в ИТ.

Тут не хватает части про экономику, тк она является первопричиной, дешевое железо рождает плохой код, нет ни какого смысла писать «хорошо» потому что это просто дорого, проще больше ядер/памяти, это быстрее и дешевле. Новые языки, роняют планку по вхождению, теперь спустя пол года курсов, можно успешно рисовать кнопочки и безопасно перекладывать жсоны, такие вот современные задачи. Боль олдскульных программистов понятная, они годами вытачивали свои навыки, писали на крестах и сами убирали за собой, но рынок порешал, сложных задач все меньше, а людей, которые могут их решать, в лучшем случае столько же, так что это не мгла, это эволюция.

Если сравнить с товарным рынком, то есть вещи надежные и качественные, но он более затратны в производстве и стоят дороже.

А есть шлак с али - дешево, ярко, много. Но в большинстве своем одноразово.

Такое распределение ни хорошо ни плохо. Он просто есть.

Вся эта деградация закладывается на уровне эволюции. Также как крысам, если предоставить им неограниченные ресурсы, территорию, обеспечить всем необходимым - начинают делать что попало и вырождаться, выдумывать себе проблемы. Каждая отдельная особь может даже это понимать, стремиться избежать, ограничивать себя и сопротивляться. Но макроэволюция всего вида в целом все равно будет деградировать.

Примерно такое же происходит в IT, ресурсов навалом, мощности и память не ограничены. Все будет катиться к тому чтобы вытворять что попало и вырождаться.

В эволюции такие перегибы исправляются кризисами, встрясками, войнами. Примерно также будет и с программами. Хотя как это будет в реальности трудно представить, мощности никто не отберет, и не заставят писать код на 1 Мб памяти. Но какой-то кризис будет. Возможно политический, когда методы обращения с информацией станут регламентированы и цензурированы.

Скорее всего как раз приведет к цензуре по всем сегментам ИТ. Сфера новая, люди дорвались до нее недавно, одурели от ее потенциала и начали делать что попало, как дикари. Это касается не только программирования, а в общем всех информационных технологий: реклама, новости, образование, инфобизнесы и пр. Там вообще анархия и сплошная помойка - и это тоже информационные технологии. Деградирующий софт - только частный случай этого всего процесса.

Андроид этот путь прошел быстрее. От 3-5 мегабайтных apk к... Сколько там сейчас Тинькофф занимает? 300? Может кстати кто нибудь объяснит, что в таких приложениях. Порно? Полный набор анимешных скринов? Вся Википедия?

Ответ на все вопросы про переусложненность и тормознутость софта как мне кажется прост и давно известен - за простоту и скорость не платят деньги. За скорость тупо не платят, про нее любят рассуждать, но платить на практике не готовы. Или готово платить ничтожное меньшинство, деньги которого ничего не решают.

Железо сейчас крайне дешевое, запрос на скорость/компактность софта возникнет тогда, когда начнут возникать ситуации "у меня/компании нет денег на более мощный комп/телефон, куплю более быструю программу, это обойдется дешевле". А сейчас ситуация иная "скоростной SSD на 256ГБ/512ГБ/терабайт стоит копейки, какая мне вообще разница 600 мегабайт весит ОС или 64 гигабайта" или "8-ядерный процессор на 4нм стоит дешево..." нет ситуации "у меня не хватает места на диске и покупка более компактной ОС обойдется дешевле покупки более емкого диска". Единственная сфера, где есть платежеспособный запрос на скорость софта - это высоконагруженный бэкэнд и там вполне могут переписать код с Go на Rust.

Про переусложненность связь чуть сложнее "на сайт всплывает какой то там помощник, на мобилке тыкаешь закрыть окно, оно раскрывается ещё больше. Заходишь в онлайн банк, и тебе сразу экран рекламы" - просто наличие таких элементов приносит хозяевам сайта и приложения больше денег, нежели они теряют из-за недовольства пользователей, вызванного их наличием. Вы же не перестали из-за экрана рекламы пользоваться их услугами? А какой-то процент пользователей среагирует и заплатит хозяевам больше.

С микросервисами у меня опыта мало, но в плане обоснованных причин для их внедрения очень нравится вот этот ответ на softwareengineering.stackexchange.com.

UFO just landed and posted this here

Зачем мне нужна операционка, требующая больше ресурсов от железа при том же функционале?

Я думаю, автор комментария о другом говорил, а вы смотрите не в той плоскости. Грубо говоря, какое мне дело, сколько занимает ОС на диске или сколько памяти оперативной ей нужно? Сейчас SSD на террабайт стоит в районе 6к рублей, что для бизнеса, что для ФЛ является вообще небольшой суммой. И мне не сильно принципиально, ОС от этого объема займет 0,04% процента или 0,002%. Тоже самое и с оперативкой.

Грубо говоря, это все цифры, которые никак не влияют на Ваш пользовательский опыт. Рабоатя с докером, вы этот объем оприходуете очень быстро, а мериться сколько занимает места голая система после установки - такое же бессмысленное занятие, как выбирать видеокарты по синтетическим тестами или сравни FPS в играх, так как разницы между 278 кадрами или 265 для подавляющего большинства пользователей нет.

Грубо говоря, какое мне дело, сколько занимает ОС на диске или сколько памяти оперативной ей нужно?

Я думаю, вам до этого будет дело когда возникнет ситуация - работает вы и все у вас хорошо. Кроме того, что ваша операционка больше не поддерживается. Но перейти на более свежую версию вы не можете потому что более свежую версию ваше желе не потянет. И вам приходится покупать новое железо не потому что старое вас не устраивает, а потому что оно не устраивает новую версию операционки.

Т.о. производитель софта вынуждает вас тратиться на новое железо. Просто потому что такие сейчас подходы к разработке.

Но перейти на более свежую версию вы не можете потому что более свежую версию ваше желе не потянет.

Это какой-то пример в вакууме, мне зачем-то надо перейти на новое ПО, но железо не поддерживается. Далеко ходить не надо, есть Windows 11 с TPM 2.0, но как это связано с объмом занимаемой памяти физической или оперативной?

Т.о. производитель софта вынуждает вас тратиться на новое железо. Просто потому что такие сейчас подходы к разработке.

Я с Вами согласен, такое бывает, когда какой-то софт просто перестается обновлятсья на старой версии ОС, требует обновления, что может потянуть за собой и потребность нового железа. Тут про другое речь, какой смысл всех этих сравнений в попугаях: сколько занимает Гб чистая система, а сколько памяти кушает, за сколько мс откроется проводник и т.д.

Ну вот смотрите, есть у меня старый ноут. Он вполне рабочий, живее всех живых. Но старый. Там двухядерный целерон В820 ну и памяти (изначально было 2Гб, сейчас 8 - благо память для него стоит копейки, а меняется просто - она под отдельной крышкой).

Так вот. Когда он покупался, на нем стояла Win98SE. И все летало (и браузер и офис и что-то там для разработки тех времен). Потом XP - хуже, но терпимо. 7-ка уже еле дышала даже 32бит с 4Гб памяти.

Естественно, что пришлось менять ноут чтобы как-то жить. А этот лежал без использования. Хотя 100% рабочий. Т.е., грубо говоря, меня "развели" на покупку нового железа. Не потому что старое сломалось, а просто так. Хотя с точки зрения конечного пользователя каммент суда можно с одинаковым успехом написать и из браузера под 98-й виндой - ни мощный проц, ни много памяти для этого не надо.

Ну ладно, тут из каждого утюга кричат что линукс типа круто, ресурсов не надо, это вам не винда.

Достал старый ноут, докинул памяти до 8Гб, поставил Минт. Ну грузится оно действительно быстрее, работает. Но. Браузер (Brave) запускается 30 секунд (!!!) - да, специально засекал. Загрузка процессора 100% при этом. Что он делает перед тем как я смогу им пользоваться? Зачем? Почему древня версия оперы на том же железе и в 4 раза меньше памяти под 98 стартовала моментально, а это под линуксом полминуты сопли жует?

Вы всерьез считаете такие подходы к разработке нормой?

Вы всерьез считаете такие подходы к разработке нормой?

Тут дело не в подходе к разработке, на мой взгляд. Так вышло, что компьютерное железо практически не изнашивается и этот процес происходит гораздо быстрее его устаревания. Возьмите те же автомобили, где столько агрегатов, которые между собой взаимодействуют. Они довольно быстро приходят в негодность и требуют обслуживания и ремонта, но по итогу, что обычная машина купленная 20 лет назад, что только сегодня из салона будет иметь сопоставимую мощность. Да, возможно будет отличаться время разгона до 100 км / ч, или расход топлива но при обычной эксплуатации разницу Вы вряд ли почувствуете. Опять же, речь про ТТХ, а не свистоперделки типа больших консолей, дисплеев и кнопок управлений на руле. Едут +- одинаково машины одного класса.

С комьютерным железом ровно обратная картина, оно не изнашивается до такого состояния, что требует ремонта, обслуживания в таком количестве. У вас не будет дилемы с ним, скидывать может его и купить новое. Оно гораздо быстрее устарее морально и будет сильно уступать в производительности новым версиям. И это не проблема разработчиков, что вот есть физически рабочее железо 10-20 летней давности, которое тогда было ого-го, а сейчас браузер запускает со скрипом. Оно просто по хорошему должно находится в чулане или на мусорке, а мы ИТшники его храним и пытаемся его использовать, отрицая, что его вычислительные мощности слабы в текущее время.

Вы же разработчик и знаете, что к разрабатываемому софту всегда есть ряд требований. И когда идет речь об оптимизации ресурурсов - это сложный и дорогой процесс просто потому, что требует много времени дорогих квалифицированных специалистов.

Почему раньше все летало? Да просто потому, что нельзя было выпускать конкруентный продукт на рынок с техническими требованиями, которые невозможны или слишком дороги для клиента. Поэтому были системы, программы и игры, которые как-то уживались на 32Мбайтах оперативки, ибо больше нельзя требовать - клиентов не будет, или конкуренты займут рынок. Это было требование от бизнеса, и требование не потому, что они хотят эффективный код в продукте иметь, а потому что ограничены ресурсами и возможностями пользователей рынка.

Поэтому пока бизнес имеет возможность докупить мощностей, арендовать более мощный сервер - то все так и будет. Если вдруг случится коллапс и стоимость железа увеличиться в разы - поверьте, весь интрнет будет завален статьями как они оптимизировали инфраструктуру, как перегоняли данные в бинарном формате, как отказались от ООП, как переписали большинство алгоритмов и достигли прироста в +100500 при меньшем потреблении. И ровно наоборот, если железо станет кратно дешевле, то появятся операционки и приложения, которые будут требовать 32Гбайта из коробки, так как таких ограничений не будет, можно быстрее разворачивать приложения и быстрее выходить с MVP на рынок и не переживать, что пользоваться этим не смогут.

Стоп.

Что значит "устаревает морально"? Я как могу под 98 в опере написать сюда камент, так и сейчас могу. Как мог под 98 в ворде документ поредактировать, так и сейчас могу.

Что такого принципиально нового я получил за те деньги, которые потратил на новое железо? В чем именно устаревание старого?

Новые кнопочки в интерфейсе? Так мне и со старыми нормально было (не поверите, но я еще WinNT 3.5 помню - со своим задачами она отлично справлялась, не хуже чем Win11 сейчас).

Ах да, на старых браузерах тяжелые рекламные баннеры с анимацией и прочей шнягой не идут... Но мне то до этого какое дело?

И не надо про современные игры с супер-пупер натуральной графикой. Это отдельная ниша - кому надо, то путь покупает железо которое их тянет. А для большинства пользователей, кому комп просто инструмент, потребности не поменялись - что под 98 всего хватало, что сейчас. Только затраты на железо стали больше.

Беда в том, что я сам разработчик со стажем в 30+ лет и неплохо так себе представляю как все это происходит.

кому комп просто инструмент, потребности не поменялись - что под 98 всего хватало, что сейчас.

Проблема в том, что у большинства пользователей уже НЕТ компа. У них есть смартфон, и львиная доля его функциональности - интернет-приложения. Или комп - а в нем браузер, в котором они сидят. Или мессенджер.

Значительная доля пользователей вообще не пользуется компом для решения своих задач - они взаимодействуют с другими пользователям через Интернет - и вынуждены учитывать его эволюцию, вот и всё. Почти никто уже свои задачи с помощью компа, отключенного от сети, не решает :(

Что значит "устаревает морально"? Я как могу под 98 в опере написать сюда камент, так и сейчас могу. Как мог под 98 в ворде документ поредактировать, так и сейчас могу.

Конечно можете. А еще можете эту статью открыть из под Lynx, который наверное сейчас с любого калькулятора запустится. И оно работает, можно читать комментарии, оставлять - и никакой бразуер с банерами не нужен.

Lynx

Что такого принципиально нового я получил за те деньги, которые потратил на новое железо? В чем именно устаревание старого?

Вы правда не хотите признать, что DDR5 эффективнее DDR4, и уж тем более 3 или 2? Или что разницы между свежим 6ти процессором и как-нибудь i7 2го поколения нет? "Устаревание" в том, что появляется более эффективное и более производительное решение с очень доступной стоимостью.

Ах да, на старых браузерах тяжелые рекламные баннеры с анимацией и прочей шнягой не идут... Но мне то до этого какое дело?

Я себя ощущаю адвокатом дьявола что ли, защищая вещи, которые сам не люблю типа всплывающих окон и тяжелых анимацией, или бескончных подгрузок на страницах и т.д. Шняга / не шняга - дело вкуса каждого, можете порезать функционал браузера, натыкать расширений, адблокер и все такое. Доступность вычислительных технологий предоставила развитие программных продуктов. Все эти библиотеки и фреймоврки для фронта появились в первую очередь благодря тому, что обычный пользователь не сидит за 4:3 экраном за компом 20 летней давности с 2Гб оперативки. И поэтому ему можно где-то на ютубе включить предпросмотр, где-то в потоке данные передать, можно организовать полнотекстовый поиск по всему сайту или базе, или в браузере игру увесистую запустить - и все это следствие доступности вычислительных технологий. Это не только банеры с рекламой, но и куча чего другого. Если вам это не нужно - ваше право, не смотрите фильмы в 4К онлайн, не играйте через облако в игры, каждому свое. Заблокируйте JS и HTML5, получите производительность на старом железе.

И мне просто не совсем понятна эта идеологоия. Вот например видео с Андреем Столяровым, очень уважаемым профессионалом и экспертом в ИТ. И вот вроде внимать его опыт и мудрость, а потом слушаешь, как он использует до сих пор Asus Eee PC 901 с 1Гб оперативки и жалуется, что современным вебом пользоваться невозможно на этом нетбуке. И винит он именно разработчиков и веб, а не то, что сейчас на дворе 2021 год (на момент видео) и самый дешевый ноут с алика будет в разы производительнее и шустрее.

Беда в том, что я сам разработчик со стажем в 30+ лет и неплохо так себе представляю как все это происходит.

Ну так тем более же. Вы за 30 лет наверное заметили, что деплой ваших проектов происходит на разных серверах с разными мощностями? У Вас по-моему финтех и очень специфичный, не удивлюсь если сть собственная мейнфрейм железка, купленная 20 лет назад за много-много денег, поэтому все деполится и крутится на ней. Но сейчас, никто в здравом уме не разворачивает приложения на процессорах 15 летней давности, не хостит на HDD и на какой-нибудь DDR2. Казалось бы, почему, ведь устаревания нет?

>Я как могу под 98 в опере написать сюда камент, так и сейчас могу. Как мог под 98 в ворде документ поредактировать, так и сейчас могу.

Справедливости ради Windows 98 был радикально менее стабильным. Даже семейство 2000/XP регулярно приходилось чистить и переустанавливать. Стабильность уровня "работает много лет, жесткий диск умирает раньше" была достигнута только с Vista/7 и 6 ядром NT. Я не эксперт в этой области и не могу обосновано сказать, что иначе стабильную ОС c равными возможностями было не сделать, но эти изменения в стабильности работы как по мне вполне стоили возросшего потребления ресурсов.

Не поверите, но Win98SE была очень стабильной, если ее специально не убивать.

Вот чего оно не любило - это когда начинаешь постоянно что-то ставить, потом сносить, снова что-то ставить и сносить...

А так - мы ее на диспетчерских когда-то ставили. На дешевые компы со своим софтом. Оно там годами работало без проблем в режиме 24/7 без перезагрузок.

95 была неудачной. Vista, Millenium тоже. 8-ка так себе...

После 98 хороша была 2000-я (NT5), XP, 7-ка...

Не поверите, но Win98SE была очень стабильной, если ее специально не убивать.

не верю!

я сидел на всех виндах начиная с 3.1 и пропустив только ME

и только 11 версия у меня стоит в дуалбуте только для случаев если мне прям там чёто свосем нужно

98SE была стабильна на момент своего выхода в сравнении с 95

но уже по сравнению с W2k она была чемто жутковатым, с NT не сравниваю потому что в NT не было адекватного pnp и тогдашний софт её плохо поддерживал

в те годы я держал 98 винду только для игр потому что они там работали быстрее, но для обычных задач это было то еще глюкалово которое "notepad выполнил недопустимую операцию и будет закрыт"

перечисление удачной-неудачной версии у вас как из фольклора, версий было больше на самом деле и к ним были применима фраза "виндой можно пользоваться после 1 сервиспака"

Мое распределение удачности форточек

Win95 rtm - кривое глюкалово как из мемов

Win95 osr2 (и 2.1 с USB) - уже можно жить

Win98 - модно молодежно, тормозит

Win98 SE - можно жить

Win98 SE+IE5 - почти современная винда с интернетом

Windows ME - кошмар и ужас

Windows 2000 (SP1,2,3,4) - нареканий вообще не было, разве что грузилась медленней всех, за играми ходили в Win98

Windows XP - попугайско-тормозящее поделие где надо было отключать службы, тюнить всякий QoS и т.п.

Windows XP SP1+SP2 - уже норм, с годами стало беспроблемно когда подтянулся софт и железо

Windows XP 64 - мутант из (отличной) Win2003 которую почемуто притащили к обычным юзерам

Vista - жуткие тормоза и перегруженность

Vista SP1+SP2 - уже можно жить, но явно не хватает компов тех лет

7 - вообще отлично

8 - плитки? шта? сломали UI у семерки...зощто??

8.1 - о норм, если привыкнуть без проблем

10 и далее уже не следил, сейчас везде 11 стоит но хожу туда пару раз в неделю от силы, нареканий к ним не было

Ну у нас специфическое было все. Но из того что пробовали (и что не вызывало нареканий в работе) в разные годы

3.11
98SE
XP SP2
2000 SP2
7 SP2

Это то, что в разные годы ставилось на диспетчерских и стабильно там работало. Правда, туда кроме нашего софта ничего не ставилось больше. Это были чисто диспетчерские мониторы, работающие 24/7

>Правда, туда кроме нашего софта ничего не ставилось больше. Это были чисто диспетчерские мониторы, работающие 24/7

Как мне кажется, это, мягко говоря, не лучший показатель стабильности ОС. На такие компьютеры и сейчас можно поставить что-то узкоспециализированное которое сможет поднять только ваш софт и которому не нужны будут все возможности современных ОС. И жрать ресурсов оно будет на порядок меньше.

И что в 90-х года было из "узкоспециализированного"?

Мы тогда все это начинали...

Так речь же вроде идет про текущий момент и системы вроде современных виндов которые жрут много ресурсов сейчас.

И дополню лишь тем, что не стоит держаться за старое железо. У меня также есть старый комп на Атлоне, где-то в гараже на селероне по 478 сокете, ноутбук есть почти 15 летней давности, который даже в FullHD не умеет, хотя имеет аж целую дискретную видеокарту на 2Гб и 6Гб оперативки и 4х ядерный i5. И по тем временам столи прилично в районе 500$. Время этих железок ушло, ими можно конечно пользоваться для каких-то своих задач, но ровняться на них и требовать, чтобы современный мир помнил, что такие железки есть - не надо.

И не то, чтобы я оправдываю криворукость и наплевательское отношение разработчиков к производительности приложений. Нет конечно, код нужно уметь писать граммотно, использовать хорошие решения, избегать неээфективных методов, следить за памятью и т.д. Так как это иногда сложно и дорого, то должно быть в меру, без крайностей и перегибов.

Что конкретно в получили, "забыв" про старое железо и потратив деньги на новое. Вот конкретно в решении своих повседневных задач?

Вы начали делать что-то такое, на что раньше мощностей не хватало? Или что?

Вы начали делать что-то такое, на что раньше мощностей не хватало? Или что?

Да, как минимум тот же Docker просит очень много опративки. До этого был ноут с 8ми, где было тяжко. Постоянно приходилось закрывать вкладки, ниспользуемые программы, кучу всего по мелочи. Открыть Rider + Docker + Chrome было нереально от слова совсем.

Пересел за пк, где было 16гбайт, начал интересоваться микросервисами, что это вообще такое, как разворачивать и т.д. Например, чтобы развернуть песочницу магазина от майков требовалось просто 8Гб, добавьте туда базу, инфраструткру типа прометеуса, ноды поднять - вот и вышло, что да, 16гб физически мало. Не для всех задач, а для каких-то определенных. Сходил в магазин, купил за 12 тысяч две планки оперативки по 32Гбайта и на ближайшие 10 лет закрыл проблему памяти.

UPD.

Что конкретно в получили, "забыв" про старое железо и потратив деньги на новое. Вот конкретно в решении своих повседневных задач?

Вот примеры за последний паур лет.

  1. Заменил старый Honor 10 на Oneplus. Все приложения стали открываться шустрее, система не дропает неактивные приложения, что позволяет быстро переключаться между вкладками ьраузера и открытыми мессенджерами, встроенная память увеличиласть и мне не надо вычищать старые фотки и куда-то их переносить. Экран 120Гц, что очень приятно глазу. Как и качество снимков - они лучше, деталей больше, весят также больше, поэтому память оказалась очень к месту.

  2. Купил 4К телек вместо FullHD. Картинка приятнее стала, SmartTV из коробки умеет гораздо больше, чем 15 летний LG.

  3. Приставка XBox X пришла на смену PS4. Функция Quick Resume позволяет одновременно играть в несколько игр и хранить состояние, причем даже на разных учетках. Поскольку играю редко и какими-то небольшими налетами и не один, то слао гораздо приятнее запустить консоль и через 10 секунд уже играть, а не ждать по пол-минуты запуска, потом ждать еще пока закроется другая игра, а еще надо провертиь, а есть ли сохранение. Потом минута грузистя нужная игра, еще пару минут на загрузку уровня и всех текстур, и вот спустя почти 10 минут ты начинаешь играть, но уже пора что-то другое делать.

  4. Про ПК написал. Докупил оперативки и накопитель, стало вообще все равно что там по памяти, лишь бы не лагало и не тормозило. А тормозит периодически именно говнокод, который никак не связан с количеством потребляемых ресурсов.

Вот что получил, "забыв" про старые железки. Можно конечно сидеть с первым гугл пикселем, играть в пс2, держать неттоп с XP и возмущаться производительности соврмеенных продуктов - дело лично каждого.

Имхо, докер это отдельное проявление "тьмы" в ходе борьбы за безопасность и против library hell. Решение создавать песочницу с полным фаршем зависимостей на каждый чих для меня очень неочевидно)

В общем и целом итог такой - количество говнокода увеличилось и бороться с ним приходится покупкой нового железа.

Был у меня в свое время телефон Blackberry Z30. Модель 2013-го года. С 2Гб памяти и 2-ядерным 1.7ГГц процессором.

Так вот там вообще никаких лагов. Все летало. Потому что там все сделано было правильно. ОС там фактически QNX (погуглите что это такое если не в курсе). Реалтаймовая операционка на микроядерной архитектуре со всеми вытекающими. Внятное управление приложениями - открыто на весь экран, свернуто в плитку (работает в фоне) или закрыто и выгружено из памяти. Никакое приложение физически неспособно завесить всю систему. Очень продуманный и удобный интерфейс.

Но... Все это загнулось потому что писать приложения под него сложнее. Там сложно говонокодить, приходится нормально все делать.

>количество говнокода увеличилось и бороться с ним приходится покупкой нового железа.

Так и есть. Экономика и прогресс железа таковы, что более быстрое железо обходится дешевле оптимизации кода.

Ну попробуйте здесь и сейчас купить, к примеру, Power10 вместо тогда, чтобы оптимизировать код, работающий на имеющемся Power9...

Равно как и с облаками - скажет тот же Amazon "вы плохо себя ведете, посему - баста, карапузики..." и что дальше?

А много сейчас систем на Power вообще? Могу ошибаться, но выглядит как узконишевое решение с vedor-lock. За привязку к вендору и его закрытым решениям всегда придется много и дорого платить, это надо учитывать при исходном проектирование и выборе между открытыми и закрытыми решениями.

В более стандартных конфигурациях поставить новое поколение процессоров где вместо 64 ядер уже 96 или 128 явно гораздо проще.

Но я, возможно, не в вышестоящем комментарии, но где-то здесь точно специально делал оговорку что высоконагруженный бэкэнд - это исключение. Здесь действительно сохранились экономические стимулы для оптимизации кода.

А вот на пользовательское устройство намного проще и дешевле воткнуть 16 гигов памяти вместо 8 или 8-ядерный процессор вместо 4-х ядерного. Или терабайтный SSD вместо 128 Гигабайтного.

Ну, если судить по тому, что пишут в сети (те же группы в LinkedIn, тематические сайты) - этих систем хватает в мире.

Даже в РФ вакансии разработчика на IBM i проскакивают иногда. Правда, там все знакомые конторы - РМС Лаб, ОТП, Синимекс, ВТС... Работаем с ними как вендорами.

Правда, насколько я понимаю, они используются там, где бизнес изначально готов выбирать наиболее подходящее, специализированное решение для своих задач. И готов за это решение платить.

Вот что получил, "забыв" про старые железки. Можно конечно сидеть с первым гугл пикселем, играть в пс2, держать неттоп с XP и возмущаться производительности соврмеенных продуктов - дело лично каждого.

Не то. Это конкретная железяка для конкретных целей с конкретными характеристиками и возможностями. Мы говорим об универсальном ПК. Где можно запустить любой софт и использовать под любые цели.

Думаю, ключевой вопрос здесь в том, что приобретение новых железок совсем не бьет по бюджету типичного жителя развитой страны. Стоил бы новый компьютер условные 10-20 тысяч долларов, старые бы так легко не выбрасывали и тратили бы деньги на работоспособный на них софт.

Экономию электричества.

Полуваттный * Pi, по производительности находящийся где-то в районе четвёртого пентиума с потребляемой мощностью ватт пятьдесят только на процессор, сильно способствует замене железа на новое, если вы находитесь не в Иркутской области в частности и не в России вообще.

Там двухядерный целерон В820

Когда он покупался, на нем стояла Win98SE

B820 вышел в 2012 году, 98SE уже в гробу истлела и XP начали закапывать, как там могла стоять 9x винда? :))

Мы долго сидели на старых версиях т.к. основной софт ставился на диспетчерские с очень простыми и дешевыми компами. Ну и писать приходилось под тем, подо что пишешь. Хотя для понимания как оно будет работать "на натуре".

>Браузер (Brave) запускается 30 секунд (!!!) - да, специально засекал. Загрузка процессора 100% при этом. Что он делает перед тем как я смогу им пользоваться? Зачем? Почему древня версия оперы на том же железе и в 4 раза меньше памяти под 98 стартовала моментально, а это под линуксом полминуты сопли жует?

Насколько я понимаю, Windows при загрузке подгружает в память наиболее часто используемые приложения до их запуска. Отсюда и большее потребление памяти. Ну а то, что сам браузер ест больше древней оперы думаю неудивительно - сложность всех веб-стандартов с тех пор выросла очень сильно.

Ок. сложность выросла. А что я лично с этого получаю? Красивые рекламные баннеры? Так они мне не уперлись вообще никуда... Я вообще больше хожу по сайтам где >80% текст (доки разные и т.п.)

Картинки отображались и в древнем хтмле. Для этого не нужны странички по несколько десятков мегабайт скриптов.

Мы так до полуоси, линкса и лексикона откатимся... Не, я согласен, что прирост требований непропорционален приросту ценности, но у вас сценарий использования еще менее типовой, чем у меня.

Ну у меня комп - это рабочая машинка. Но пишу я под AS/400 (IBM i), так что все сборки и прочее уже на серваке. На компе только документация, IDE и гит. Ну и эмулятор IBM5250. Ну и мессенджеры всякие. А, еще есть VDI, но он под линухом на старом ноуте - фактически тот работает как отдельный VDI терминал к виртуальному рабочему месту.

Вы конкретно может и не получаете. Но вы не единственный пользователь браузера. Большинство пользователей - получает и браузеры делаются все-таки под большинство. Все та же экономика.

Просто так ради примера не нужного вам - я например на отдыхе регулярно смотрю игровые стримы на twitch (поток видео в 1080p в реальном времени, я бы и от 4К не отказался) и общаюсь со стримерами в чате. А на работе периодически надо заходить в фигму (я не дизайнер, но берем оттуда готовый дизайн). Сколько надо впихнуть в браузер технологий, чтобы все это работало? Тому что мы делаем это все, кстати нафиг не надо, там все тот же текст и немного векторных картинок.

Чисто теоретически можно было бы сделать отдельный браузер для вас в котором всего этого не было бы и было бы просто отображение текста. Может он даже есть? Я не искал. Но скорее всего у разработчиков нет экономического стимула его делать.

UFO just landed and posted this here

Это вообще отдельная боль. Тоже трясет от одной мысли заново настраивать то, что годами выстроено было под комфортную работу.

Модники не меняют ничего. Но опять же вы явно среди ничтожного меньшинства пользователей, деньги которых не оказывают особого влияния на доходы Microsoft.

Если бы они могли увеличить прибыль хоть на пару процент за счет продолжения поддержки Windows 7 они бы это сделали.

Я думаю, автор комментария о другом говорил, а вы смотрите не в той плоскости. Грубо говоря, какое мне дело, сколько занимает ОС на диске или сколько памяти оперативной ей нужно? Сейчас SSD на террабайт стоит в районе 6к рублей, что для бизнеса, что для ФЛ является вообще небольшой суммой. И мне не сильно принципиально, ОС от этого объема займет 0,04% процента или 0,002%. Тоже самое и с оперативкой.

Вы правы. Я больше отталкиваюсь от фукционал\потребление ресурсов. И если смотреть в данной плоскости. То разброд и шатание.

Сугубо формально она конечно есть. Но она недостаточно большая, чтобы повлиять на финансовое поведение клиентов.

Вы же не стали покупать другую ОС, с меньшей требовательностью к ресурсам? Или устанавливать Linux, про который автор статьи пишет? Соответственно требовательность Windows к ресурсам никак не повлияла на продажи этой операционной системы даже в вашем случае и никакого финансового стимула делать версию Windows которой хватит 2ГБ оперативной памяти у Microsoft нет. На самом деле это еще немного сложней - так как для финансового стимула такое решение по смене ОС должны принимать не только единичный вы, но и достаточно заметный процент платящих деньги клиентов.

Ситуация могла бы измениться, если бы по цене нынешнего ноута с 32 ГБ продавался ноут с 2 ГБ, а по цене 16 - с 1 ГБ памяти. В таком случае, стимул для оптимизации быстро бы появился и мы бы увидели новые, оптимизированные, версии Windows и, возможно, новые, конкурирующие ОС или рост доли Linux. Был бы такой мир лучше? Я не уверен.

Наброс годный, конкретных проблем вроде и нет. То что системы стали требовать больше вычислительных ресурсов? Ну логично, они стали доступнее поэтому проблема оптимизации ушла на второй план. Вместе с ними и поднялись требования пользователей к приложениям и сайтам. Уже сложно представить что-то актуальное без JS на фронте, будь то ванильный или какой-то фреймворк, а значит и ресурсов нужно больше для отрисовки всех анимаций, скролингов и спинеров.

Касаемо архитектуры. Да, у микросервисов был хайп, многие на них переходили и есть немалая часть разработчиков, котоыре переходили туда за компанию. Но это не проблема архитектуры, а проблема тех, кто не правильно ее применяет и не понимает зачем. Тоже самое и про паттерны проектирования, надо понимать для чего они и когда применять, а не обмазывать весь код несколькими слоями абстракций, упаковывать все в декораторы и ходить потом довольные, как все по уму сделано. Микросервисы решают одну глобальную проблему - простоту масштабирования, из нее вытекают два плюса - возможность проектировать распределенные системы и вести "относительно независимую" разработку. Других способов как-то эффективно масштабироваться нет.

Так и есть. Потому и упомянул про 95% компаний, которым микросервисы не понадобятся.

Микросервисы решают (как кажется) ещё одну серьезную, хоть и не техническую, проблему: разбиение единой организации, ведущей разработку, на практически независимые друг от друга группы. Такое разбиение сильно уменьшает потребность в качестве управления и квалификации управленцев. А хороший управленец для большой организации - товар не менее эксклюзивный, чем хороший разработчик. Именно поэтому, полагаю, микросервисы столь популярны у менеджмента.

Засада тут в том, что часто это действительно только кажется. Если разрабатываемая система имеет сложную внутреннюю логику, то от этой сложности никуда не деться. И если каждый микросервис в рамках такой системы будет простым, то сложность логики перейдет во взаимодействие между микросервисами. И - между командами, их разрабатывающими.

Вся наша надежда на искусственный интеллект!

Он придет и все нахрен выбросит - и Windows, и языки программирования, и нас - программистов.

Если, конечно, он реально интеллект и если сеть не будет слишком тормозить. :(

Но когда-нибудь и до него дойдет что главное в любом серьезном деле - это деньги, а все остальное не важно. И деньги можно зарабатывать бесконечно, если под соусом улушения и оптимизации заниматься переусложнением. И так до самого самоуничтожения!

Нечасто у меня возникает потребность объединить несколько сканов в один pdf. Использовать онлайн редакторы, такое себе конечно.

  1. Open a word processor

  2. Paste your pictures

  3. Export to PDF

Куча умных мыслей про проблемы, про причины, но ни одной простейшей мысли о изменении ситуации.

Способ тривиальный - вы должны заплатить денег тому, кто вам сделает конфетку. И про это тоже упоминалось среди умных мыслей. Но самое интересное - никто не сказал "я готов заплатить". Никто. И эти люди хотят, что бы им кто-то бесплатно сделал "красиво"?

Общая проблема человекообразных (одного из множества вариантов пожирателей чужого ресурса) - локальная оптимизация. Они хотят сразу и всё. А затрат нести не хотят. Они так себе жизнь оптимизируют.

И правда, если брать всё и ничего не платить - такой подход максимизирует удовольствие. И именно ему следуют все (и человекообразные и одноклеточные). А вот другой подход - объединить усилия - человекообразные забывают напрочь. И чем лучше живут, тем сильнее забывают. Всяким одноклеточным конкуренты не дают нужную химию перестать вырабатывать, а вот двуногим прямоходящим переход от пальмы с бананами к ядерному топливу дал лишь одно "улучшение" - почти полный отказ от добровольной совместной деятельности. Ну так и получите что просили - вам что-то наливают в корыто, оно даже съедобно, делать вообще ничего не надо, только челюстями двигай (мышкой шевели). Но вам мало!

Я согласен, всё криво, всё косо, даже прямо скажу - мне тоже мало. Но кто из вас готов работать ради улучшения? Никто. Так чего-ж вы ноете?

Можно переформулировать иначе - двуногие скооперировались и вложили все усилия не в оптимизацию софта, а в улучшение железа.

двуногие скооперировались

Не так. Правильнее так - двуногих нагнули и они...

Они изобретают всякую всячину не просто так. Цель, как всегда - деньги. Мелочь можно изобретать ради удовольствия, но всё крупное - дорого, а потому без денег в принципе никак.

В итоге весьма хаотичного процесса изобретения ради денег в какой-то области намечается хорошее продвижение. Остальные замечают и стараются сэкономить с помощью нового изобретения всё те же деньги. Не планируют, моделируют, изучают, а сразу именно экономят. Или исследуют монетизацию. В результате опять имеем хаотичный процесс, без планов и по наитию.

Конкретно по железу - просто вот так получилось. Никакой кооперации. Один хаос. Но он подчёркивает - не хотят люди оптимизировать глобально, ибо инстинкты не те.

>Правильнее так - двуногих нагнули

Так и не понял процесса нагибания. Как по мне так оптимизировать железо банально оказалось на данный момент выгоднее экономически, чем оптимизировать софт.

Можно переформулировать иначе - двуногие скооперировались и вложили все усилия не в оптимизацию софта, а в улучшение железа.

Примерно так. Только софт всё же проще обновить, чем железо. Ещё и дешевле.

Я бы не сказал. Сравним стоимость покупки более мощного процессора и переписывание программы чтобы она в два раза быстрее работала.

Процессор стоит как несколько дней работы программиста.

Но ведь процессор с производительностью в 2 раза стоит намного дороже, двух дней работы программиста. Или его физически нет. Типа i7 текущего, поменять на следующий. Будет прирост от силы на 10%

Ну так любая более-менее нормальная программа это суммарные годы работы программистов как минимум (месяцы работы команды). Если нагрузка распараллеливается - то тут решение линейное как правило, взять больше процессоров или видеокарт.

Задач где нагрузка не распараллеливается и при этом упирается в возможности имеющегося железа не так много.

Я согласен, всё криво, всё косо, даже прямо скажу - мне тоже мало. Но кто из вас готов работать ради улучшения? Никто. Так чего-ж вы ноете?

Добавил ответ на ваш вопрос в конце статьи. Посмотрите плиз.

Идеология малых дел. Давно известно и малоэффективно.

Но если конкретному человеку нравится, то чего ему ещё хотеть?

Серьёзно проблему можно решить лишь на уровне множества индивидов, вовлечённых в процесс её устранения. Только если представители этого множества как лебедь, рак и щука тянут в разные стороны, то сразу получаем вот это - малоэффективно.

Теоретически, если вложится человек 10, грамотных и с возможностью тратить какие-то деньги, можно постепенно увлечь приличное количество народу. Но разумеется, лучше это всё решать на уровне государства.

Программ для pdf тьма. Сотрудникам поставили ту , что меньше и не висит в трее

"Я не понимаю, авторов данных эпосов. " - а они получают просмотры и деньги за показы.
Это не относится к программированию, это элемент шоубиза.

Про монолиты/микросервисы - прям за живое задело. Я много раз читал/слышал "мы пилим монолит". Я сам работаю там, где пилят монолит.

Я не разу еще не читал/ не слышал - "Мы уже давно распилили свой монолит. Мы живем с одними микросервисами. И у нас все классно, все летает и не падает. И народа для обслуживания нам не нужно в 10 раз больше, чем было на монолите."

Беспроигрышный вариант хайпануть - запилить статью на тему "раньше мы из говна и палок делали космические корабли на 640 КБ памяти действительно запускали корабли в космос, а теперь текстовый редактор на электроне требует гигабайт памяти". Снизу обязательно будет срач в каментах, бывалые разработчики поставят лайк, птушта у них это все за годы в ушах просвистело и начинали они с курсовой по визуализации бикубических поверхностей которая писалась в турбо цпп, а проснулись за написанием плагина под десктоп на msvc под какой-нить флаттер и - не этого они от жизни ждали.

Я бы только вас поправил. 10 лет назад на дворе был 2014 - уже пятый дроид, пятый нексус, на носу (в 15-м) аж 10-я винда и тот самый vs code и прототип флаттера. Маркетинговые отделы получали премии за наполнение 75% поверхности сайта рекламными материалами, SPA давно вошли в полную силу, клан PWA в гугле тоже расцвел. Электрон начинал победное шествие, в гибридном мобайле, покушавшемся на мультиплатформу, были свои аналоги, джава-разработчики делали первые робкие попытки внедрить в прод еще не релизнувшийся котлин (в основном мобильщики, все знают что мобильщики безумны). Там же где-то и свифт (я помню мы с коллегой айосником в 14-м году учили их одновременнно - я котлин, он свифт). Ребята из бигтеха уже начали безумную модуляризацию своих проектов, что через год-два породит волну однояйцевых докладов на конференции "как мы ускорили сборку многомодульных проектов", то есть героически решили проблему абсолютной перегрузки сборки бесконечными градл-тасками, которую сами же и создали, решив что им нужна команда в 100 тел на одно маленькое приложение чтобы родить его не за 9 а за 0,09 месяцев и стало быть их детище должно быть попилено до рождения на 1000 частей, чтобы, стало быть, каждый рожал в день по нескольку десятков его кусков. И еще инфраструктурная команда, ежедневно принимающая роды (туши свет! они на свет лезут!).

Чуть позже, где-то году в 15-м или 16-м мне коллега скинет ровно такую же статью на том же самом хабре, только переводную. И в ней уже будет мгла. То есть вы что-то иное нежели мглу могли застать только в университете, где время, по объективным причинам, остановилось. А в жизни до работы просто не сталкивались с зоопарками, карго-культом и кадрово-ориентированным программированием (спойлер - оно всегда именно таково) и его главным постулатом: время компа уже в 90-е перестало быть дороже времени человека, что и привело к техническому взрыву.

Но это все лирика, вы вот скажите: вас самого не коробит от подстановки рядом слов "богобоязненный" и C#? Спрашиваю как сам бывший в несколько более далеком прошлом C# разработчиком.

Но это все лирика, вы вот скажите: вас самого не коробит от подстановки рядом слов "богобоязненный" и C#? Спрашиваю как сам бывший в несколько более далеком прошлом C# разработчиком.

Нет.

Ну я вот просто не знаю как можно играться в цпп-интероп и при этом бояться чего/кого бы то ни было, даже если это Бог.

Ну я вот просто не знаю как можно играться в цпп-интероп и при этом бояться чего/кого бы то ни было, даже если это Бог.

Слава богу я атеист:) Ну вы же читали статью, она полна сарказма. Это был именно сарказм.

я ждал что вы подыграете и напишете "с божией помощью"

Статьи такого плана публикуют на хабре, не так уж и редко. Это постоянный процесс, не из за того, что у олдов сносит крышу. А именно из за сложившейся ситуации по росту потребления ресурсов у сайтов и приложений. Это объективный процесс.

Микросервисы и монолиты это да..

Прошлая работа - монолит. Надо проверить вновь запиленную фичу или фикс бага. Запускаю сервак, тыкаю в него постманом или чем-либо в таком духе, смотрю что возвращает.. Ну или фронт рядом разворачиваю и с фронта проверяю.

Сейчас работаю на другом проекте с кучей микросервисов. Запилил фичу, надо проверить. Надо запустить сервис авторизации, фронт, шлюз, еще кучу всякой хрени для поддержки работы этой хрени, пяток микросервисов, с которыми общается тот, в котором я фичу запилил, убедиться что вся эта фигня друг-друга видит и обменивается данными, что у них там нормально отработали миграции при старте (чаще всего нет, и надо поплясать с бубном что-бы все отработало), потом аккуратно пытаюсь потыкать и долго разбираюсь почему нихрена не работает, или работает но не так как надо..

В общем проще разрабатывать точно не стало.

Автоматизировать всё это конечно можно. Но взять и поднять весь проект на локальном ПК имея 100500 микросервисов, БД и остального. Понятно, что нужно подымать, именно те микросервисы которые участвуют в тестировании определенного функционала. Но как понять, что откуда берется, что запускать и т.д

Да, понять что нужно запускать, это не всегда тривиальная задача и хуже всего что часто и запускать их надо в определенном порядке. В общем, микросервисы, конечно, решают некоторые проблемы с производительностью, на очень нагруженных проектах, но платить за это приходится сложностью на уровне общей инфраструктуры. Самое фиговое, что они стали модной фишкой и их часто пихают туда, где они совсем не нужны, их плюсы не используются, зато минусы команда разработки получает все по полной.

Насколько я понимаю у микросервисов два преимущества - если у вас очень высокая нагрузка (Discord, Twitter и так далее), то их легче масштабировать и если у вас очень много разработчиков и куча команд, то легче организовывать совместную работу большого количества команд. Но вот если ни первого ни второго нет, то вы получаете только недостатки.

В общем, да.

Правда, как отдельная печаль, возникает некий тип разработчиков, которые в принципе не могут себе представить как можно в монолите самостоятельно запустить проект полностью.

Никто на самом деле не знает, что такое "микросервис" и насколько он должен быть микро.
Достаточно проектировать архитектуру в виде просто сервисов, пользуясь принципом бритвы Оккама, а не плодить "микросервисы" на каждый чих, раздувая сложность разработки, сопровождения, развертывания и т. д.

Несколько сервисов можно поднимать локально через docker compose, это не так больно.

Но и монолит один сервис можно написать вполне себе модульно со слабым зацеплением, что работать с ним будет удобно всем разработчикам в команде.

Просто почему-то люди в IT отрасли сильно подвержены влиянию "авторитетных мнений", бездумному следованию за модными тенденциями и зачастую скатываются в карго-культы. Иногда смотришь на всё это и думаешь: "Ну что за дурдом, зачем люди всё это делают?"

Так проблема не просто поднять сервис, именно с запуском сложностей и нет, сложность с тем что-бы он правильно поднялся, что-бы у него было валидное состояние после запуска. И не у него одного а у системы в целом. Валидное в смысле - данные в БД всех сервисов между собой как-то "бьются", и желательно что-бы они были, на пустых базах что-то проверять не имеет особого смысла.

Насчет бездумного следования моде - увы, согласен. Везде где я на практике с ними сталкивался, смысл в их использовании был только на одном проекте. А так, обычно, нагородят что-бы было, потом мучаются со всем этим, при том что монолита там бы за глаза хватило на долгие годы.

Ну вот разница между микросервисами и модулями. Если я правильно понял, микросервис надо "поднять", а потом он будет болтаться и ждать когда кому-то понадобится.

А модуль - он просто вызывается как внешняя функция (или процедура) синхронно или асинхронно, делает свое дело и завершает работу. Он должен просто быть в системе.

Ну там есть особенности при синхронных вызовах в том же задании - группы активации, сохранения состояния памяти и т.п., но это уже платформозависимое.

Накладные расходы при синхронном запуске в том же задании тут мизерные. Куда выгоднее, чем он будет постоянно в отдельном задании болтаться (хотя такие у нас тоже есть - разного рода мониторы).

Не то чтобы я был экспертом в этой области, но насколько я понимаю микросервис - это больше организационный вопрос. Если над модулем работает отдельная большая команда разработчиков, то его может быть проще вынести в микросервис чтобы они работали полностью отдельно. Там, например, можно вообще другой технологический стек применить.

Если у вас на модуль очень высокая нагрузка - то микросервис проще масштабировать со своей инфраструктурой.

Я уже приводил в пример в соседней ветке вот эту статью - как раз наглядный пример, нагрузка в десятки тысяч запросов в секунду, отдельная команда, которая вполне может переписать сервис с Go на Rust никак не затронув другие сервисы.

Ну я писал уже - рассматривайте модуль как одну функцию. У вас бывает чтобы над одной функцией целая команда работала? первые 10 строк пишет один, вторые другой и т.п.?

Логика модуля, например, такая - "дай мне список открытых счетов для вот этого клиента". Или проверь вот этого клиента на совпадения со списками росфина - не террорист ли он часом?

Т.е. в модуле заложена атомарная логика. Кода там со всеми комментариями и объявлениями редко более тысячи строк. И делается это одним человеком всегда.

"Нагрузка в десятки тысяч запросов в секунду" не показатель. Зависит от того, что с этими запросами делается. Ну я могу сказать нагрузку только по платежам - более 100 000 000 в сутки. А каждый платеж это не просто переложить деньги с одного счета на другой - там куча проверок предварительно делается ("контроль платежей"). Десяток из них только по линии комплаенса. А есть и еще службы со своими проверками.

Или сверка клиентов со списками росфина (составление стоп-листов по совпадениями с разными террористами-экстремистами). Там и по именам и по документам и по ИНН и по адресам совпадения ищутся... Причем, клиентов 50млн. У каждого еще есть "субъекты" (доверенные лица и т.п.). И на каждого одних адресов по 5 штук разных типов. Там в сумме под ярд элементов запросто набегает. Это с одной стороны. С другой - злодеи-бармалеи. Их немного - тысяч 300, может 500. Но у каждого по несколько имен, документов, адресов... За миллион элементов запросто. И вот надо всех со всеми сравнить и список совпадений построить.

А адреса те же (да и имена) сравниваются не строка в строку, а разбиваются на элементы и потом сравниваются так, что совпадением считается когда все уникальные элементы набора с меньшим количеством входят в набор с большим количеством.

Вот такие вот задачи жизнь ставит. Сидишь и ломаешь голову как все это реализовать так, чтобы оно в разумное время укладывалось.

Так что десятком тысяч запросов в секунду нас не испугать :-)

Я, конечно, в микросервисах ничего не понимаю, но по аналогии с тем, как мы работаем с моудлями, всегда казалось что это должно быть просто.

Ну сделал модуль (программа которая что-то дерет на вход и что-то отдает на вход). Дернул его отдельно с передачей нужных параметров. Посмотрел что на выходе. При необходимости запустил под отладчиком. Ну в некоторых случаях небольшую программу-вызывалку написать.

Все это достаточно просто автотестами оборачивается....

Это в теории все просто. На практике..

Что-бы дернуть API, нужна авторизация, т.е. нужен поднятый сервис авторизации, для которого тоже нужны другие работающие сервисы и настроенная БД пользователей, хотя-бы тестовая. Ладно, авторизацию в принципе можно и выпилить или предусмотреть отладочную конфигурацию в каждом сервисе, с отключенной авторизацией, что-бы не мешала разработке. (хотя это тоже не всегда выход, отключите авторизацию, отладите, а потом на реальной системе нифига не работает, потому что каким-то запросам не хватает привилегий для работы, или еще что-либо в таком духе.
К сожалению есть и другие сервисы, обычно нужные запускаемому для работы. Даже выполняя один запрос из API, он при этом может дернуть другие сервисы. Некоторые из этих сервисов требуют другие работающие сервисы.. В общем в итоге получается что поднимать приходится почти все.

Тесты, это, конечно, хорошо (без сарказма), но к сожалению они зачастую всей картины не показывают, и ответственный разработчик не станет отдавать фичу, которая только на тестах проверена. Бывает что и локально проверенная, работающая фича, после выкатки в прод оказывается не такой уж рабочей, потому что всплывает масса нюансов, сложно повторимых в локальной конфигурации.

В общем, пока не столкнулся с реальными микросервисами, читал только в теории про них, я примерно так-же думал. Увы, в реальности все далеко не так просто и удобно.

Скажете что мы не умеем эти МС готовить? Возможно, но вот пока что сколько я с ними не сталкивался, везде было примерно похожая ситуация, локальная отладка это что-то довольно адовое.

Я всё забываю в каком веке сейчас нахожусь, Докер ещё не изобрели?

Вот сколько слышу про докер, контейнеры и все больше складывается ощущение, что все это попытка "назад в будущее" - эмулировать систему "заданий" которая была реализована на "больших машинах" старой эпохи. Где задание полностью изолировано от остальных и работает в своем окружении. И где если что-то пошло не так - просто убиваешь задание и никому вокруг никакого ущерба.

Я не сильно вникал в историю докера, но мне кажется тут есть доля истины, но фраза про "эмулировать" звучит странно. это же и есть инструментарий для создания таких "заданий" на современных платформах и вероятно он и был создан в т.ч. под впечатлением и по аналогии с технологиями древних времен

Соглашусь что "эмуляция" не совсем точный термин, просто другого сходу не пришло на ум.

Тут речь о том, что или эти все принципы заложены в основу операционки и под них все оптимизировано (т.е. она изначально строилась как многопользовательская и с расчетом на то, что там будет одновременно работать большое количество заданий с предпринимаемыми мерами по минимизации накладных расходов на переключение контекста задний - та же модель памяти, исключающая необходимость перезагрузки каждый раз сегментных регистров и т.п.), или это просто какая-то навеска поверх операционки, которая изначально создавалась как десктопная (ну или на принципах недалеко от десктопных систем ушедших).

Вызывает, так скажем, недоумение - с одной стороны говорим что "мейнфреймы это вымирающие мастодонты", с другой - внедряем "передовые технологии", которые повторяют принципы их работы.

Носимся с микросервисами, при этом мало кто вспоминает, что принципы их архитектуры во многом повторяют модель акторов (1973-й год).

И так во многом - форумы и соцсети по сути своей, недалеко ушли от фидошных BBS-ок. Ну разве что котиков стало можно постить.

Мессенджеры - все идеи идут из "ИРКи" (IRC)...

Вызывает, так скажем, недоумение - с одной стороны говорим что "мейнфреймы это вымирающие мастодонты"

мастодонты - это закрытые проприетарные мейнфреймы с кастомным железом и кодом, под которые надо учить спец.языки и окружение

Они вымирают, также как SunSparc, Itanium и прочая куча уже раритетов

С точки зрения бизнеса, это огромный риск и расходы, дешевле нанять мальчиков на питоне/голанге/расте/яве которые напишут сотню микросервисов которые будут крутится на кубер-кластере на 5000 серверах и это будет в разы дешевле чем покупать спец.железо, платить адовейшие лицензии на используемую платформу я до сих пор помню свое негодование, Sun-sparc сервер стоимостью как новая иномарка, который работал у нас сервером БД подключенном к NAS, и чтобы туда установить OS на его встроенный HDD который надо собрать в RAID1, надо бл..купить за 200тыр лицензию на RAID1 на сервер где диск нужен тупо только для ОС без какихлибо данных...я еще молчу про OracleDB с лицензированием на процессор...помню подсчитали сколько надо купить лицензий под это железо (куда входил этот sun) чтобы нашу конфигурацию запустить...ценник вышел такой что каждому сотруднику по бентли можно купить в качестве премии... и в итоге на спарках работал только прод, а тестовые сервера и обвязка, на пиратской солярке на x64

при этом рядом стоит топовый Proliant на кучу процессоров который в десятки раз дешевле и там можно хоть пяток рейдов собрать на его встроенной дисковой полке ....а у спарка всего два SATA разъема (даже не SAS..не заслужили за такие деньги...SAS версия сервера стоит уже на полмиллиона больше)

и если перейти на postgres то экономия на лицензиях превысит все затраты на покупку таких штук, хотя тут всёже доля правды в том что полноценно оракл заменить всёже невозможно... но это только БД, а если рабочий софт так залочен на железо, то это просто дурь такой софт писать и использовать в 24 году

Мессенджеры - все идеи идут из "ИРКи" (IRC)...

Не совсем, концептуально мессенжеры изначально идут из ICQ и наследуют именно её идеи, а с IRC напрямую я бы сравнил только телеграмм где появились каналы боты, админы, передача файлов..и это вот всё...разве что буквы R (из IRC) ни в одном популярном ныне мессенджере уже давно нет.

И так во многом - форумы и соцсети по сути своей, недалеко ушли от фидошных BBS-ок.

так форум и был прямым логическим продолжением фидошной эхи в интернете, это даже не вариация, это прямейший наследник фидошной сущности... и кстати форумы уже вымирают

а соцсеть, боюсь что это всётаки новая сущность, с BBS её както сложно сравнить, не припомню концептуальных систем в древние времена где пользователи выстраивают видимые для всех связи со своими собеседниками и рассылают информацию в рамках этих групп... сюда даже электропочту не подтянешь и списки рассылки, потому что соцсеть это всёже сущность выше уровнем

Одно из первых моих воспоминаний о проблемах вычислительной техники - это когда я, будучи студентом на ЕС-1045, захотел поиграть в Star Trek, и для этого вечерком переключил proclib - подсмотрев, как это делают инженеры и системщики, тоже большие любители погонять клингонов. А обратно - не переключил, в результате вся ночная пачка заданий не выполнилась. Мне повезло - обошлось без телег в деканат, всего лишь лишили на пару месяцев машинного времени. Но в полную изоляцию чего-либо на компьютерах я с тех пор верить опасаюсь.

Полной изоляции, конечно нет... Но есть способы выстраивать окружение индивидуально для задания.

На нашей системе, к примеру, нет понятия "папка". Вместо это "библиотека" - *LIB. Каждый объект лежит в какой-то библиотеке. К примеру, данные (таблицы, индексы...) - это AFIL. Программные объекты - ALIB.

Есть "юниты" - все одни имеют одинаковую структуру, отличаются именами библиотек - юнит D66 - ALIBD66, AFILD66 и т.п.

Права пользователей настроены так, что к каким-то юнитам есть полный доступ, к каким-то только чтение, к каким-то вообще нет доступа.

Вместо PATH тут Library List - *LIBL. Список библиотек, где ищется объект по имени. Сверху вниз по списку. И вот LIBL для каждого задания свой. И его можно динамически менять в любой момент, добавляя (ADDLIBLE) или удаляя (RMVLIBLE) элементы. Или в интерактиве EDTLIBL - там покажет весь либл и можно удалять или дописывать элементы в него

К чему все это так длинно? Так вот. Есть некая программа (объект *PGM в ALIB), которая использует некоторую сервисную программу (аналог виндовой DLL - *SRVPGM, тоже в ALIB). И мне по какой-то причине надо подменить SRV свою и посмотреть что получится.

  • Создаю новую библиотеку ATST (к примеру)

  • Кладу туда свою версию *SRVPGM

  • Запускаю новое задание

  • Добавляю свою ATST "выше по либлу" чем ALIB - ADDLIBLE LIB(ATST) POSITION(*FIRST)

  • Запускаю программу. Она ищет сервисную по либлу и первой находит ту, что лежит у меня в ATST/

Все это работает только в рамках того задания, где я изменил либл. На других заданиях никак не скажется - они про ATST ничего не знают и искать там ничего не будут.

Т.е. ситуация

вечерком переключил proclib

будет работать только для вашего задания и ни для чего более.

А что он поменяет? Сервису в докере не нужно корректное состояние?

Одной командой запустит пачку провязанных друг с другом сервисов с нужным состоянием. Доброе утро.

Запустить все это из Идеи не сильно сложнее, это во первых, во вторых докер тоже есть и проблема не в том что надо запустить что-то. Проблема в том, что это что-то должно иметь корректное внутреннее состояние (БД, как правило, и настройки) для того что-бы можно было всю систему в целом протестировать, и с этим всегда есть проблемы, если разрабатывается что-то по настоящему сложное (а если это что-то простое, то другой вопрос - а нахрена тут вообще микросервисы?)

Мда...

Тяжела и неказиста
Жизнь простого программиста

У нас всех этих проблем нет, к счастью. Поскольку пишем под IBM i (AS/400) которая работает на серверах с процессорами PowerS (у нас сейчас Power9), то все можно поставить и запустить только на тестовом сервере. Т.е. в лайтовом варинте (если с компа есть доступ на тестовый сервер) - запускаем gradle с нашими плагинами, оно все закидывает на сервер и устанавливает. Не в лайтовом - с локального компа вгружаем в гит (через VPN), идем на виртуалку (VDI), там подтягиваем из гита и опять gradle на сервер. Я предпочитаю этот вариант - так удобнее чем постоянно работать на виртуалке (а из внешнего контура доступа к тестовому серверу нет, только небольшой виртуальный сервер, но там не все можно развернуть, это так, для личных экспериментов всяких больше).

На сервере у каждой команды есть свой юнит компонентного тестирования (где выстроено все окружение). Но первичные тесты в песочницах - копии компонентных юнитов которые можно в любой момент пересоздать с компонентного юнита просто кнопкой на соотв. портале.

Ну а дальше - тут и данные свои можно накидать и окружение все нужное есть. Авторизации никакой не требуется - если ты на сервере авторизован, этого достаточно (сам ты не авторизуешься там пока сопровождение тебе не создаст профайл).

Ну и в нашей модели не требуется запуск каких-то дополнительных сервисов. Если из нашего модуля вызывается что-то другое, то оно просто должно быть на сервере. Про это писал уже.

Так что в этом отношении тут все просто. Если утрировать до предела, то можно это представить себе как набор множества функций (процедур), каждая из которых лежит в отдельном бинарнике (и может быть в любой момент изменена заменой одного этого бинарника - при условии сохранения обратной совместимости контракта интеграция не нарушается). Т.о. любая функция разрабатывается, отлаживается и поставляется независимо от остальных.

Что касается тестов, то сначала компонентные, потом бизнес (для бизнес-тестов есть отдельный юнит со своими данными - он ближе к проду). Затем нагрузочные тесты на копии прода. Потом интеграционные (тоже копия прода). Потом техтест на прелайве. И только потом внедрение в бой.

Ну вот как пример. Есть у наших клиентов такой параметр - дата актуализации. Она хранится в отдельной таблице. Причем, по требованиям бизнеса, эта таблица историческая - там хранится вся история дат актуализации. Но в большинстве случаев нужна актуальная, последняя. Т.е. каждый раз искать в этот таблице последнюю (по истории изменений) ДА. Для этого был сделан ретривер, в котором был заложен этот поиск. Таблица ДА ведется специальной опцией - там тоже логика наворочена т.к. при изменении ДА нужно еще в ряде таблиц изменения внести.

Ну и в какой-то момент решили что надо это оптимизировать. Сделали "витрину ДА" - таблицу, где хранятся только актуальные ДА. На практике для этого просто добавили логику обновления витрины в модуль записи в таблицу ДА и внутри ретривера изменили логику - вместо поиска в таблице ДА он теперь сразу из витрины запись по ключу дергает. Все контракты сохранились, интеграция не нарушилась. Поставка содержит два изменившихся модуля. Для всех, кто эти модули пользует, все это вообще незаметно случилось. Просто вызовы ретривера стали быстрее работать.

Модульность, независимость - все в наличии. Но никто никогда это не называет "микросервисами". И все это существовало еще в те времена, когда в микросервисами никто так не носился. Тут оно так с испокон веков работало и еще бог знает сколько проработает.

Технологии и хайп вообще волнами приходят и уходят. Я еще помню как дикий хайп был вокруг языков со сборщиком мусора, байт-кодом и виртуальной машиной (Java, C# и так далее). Теперь ситуация развернулась и дикий хайп уже вокруг компилируемых языков (Go, Rust). И таких примеров можно привести массу.

Технологии и хайп вообще волнами приходят и уходят. Я еще помню как дикий хайп был вокруг языков со сборщиком мусора, байт-кодом и виртуальной машиной (Java, C# и так далее). Теперь ситуация развернулась и дикий хайп уже вокруг компилируемых языков (Go, Rust). И таких примеров можно привести массу.

Именно, абсолютно согласен. А тем временем С++ программисты продолжают писать код:)

Я вот кстати прочитал все ваши комментарии здесь по поводу вашей системы - и звучит интересно... но... Вот предложу я что-то подобное на работе внедрить - сколько оно стоить будет и не находится ли под санкциями? Удастся ли найти других программистов под этот язык и систему? Ладно, попробую сам изучить и поискать новую работу - где и как это изучать самостоятельно и где потом искать работу? У меня такое ощущение, что я не глядя могу предсказать почти нулевое количество вакансий. Так что как бы оно интересно не звучало, с реальной жизнью для рядового разработчика никак не связано.

Вопрос, имхо, еще проще: как это можно реализовать без великого и ужасного IBM и специализированного стека? Все, что можно реализовать на одном тьюринг-полном языке, можно реализовать и на другом, главное правильно ткнуть в соответствующий раздел CS и приготовиться к боли.

Тут лучше бы @SpiderEkb ответить, но как мне кажется речь идет не столько о языке, сколько о платформе со своей продуманной архитектурой и набором библиотек/фреймворков. Сам по себе язык - это очень маленькая часть любой реальной работы.

Да, все верно. Речь идет о платформе целиком. Единой и цельной. Покупая IBM i сервер вы сразу получаете все в одной коробке. БД (DB2) интегрирована в систему и является ее неотъемлемой частью. Т.е. все эти "подключится к БД" нужны только для работы ней извне. Внутри системы вы просто сразу обращаетесь к нужной таблице. SQL движок тоже интегрирован в систему - вы можете системной командой выполнить любой SQL скрипт.

Компиляторы (CL, COBOL, C, C++, RPG) тоже интегрированы в систему. Т.е. вызываются системной командой, а не как программа. Более того, сами компиляторы генерируют единообразный TIMI код, что позволяет создать несколько модулей (аналог объектного файла - тот самый TIMI код) из исходников на разных языках, а потом объединить (bind) их в один программный объект. Это называется ILE - интегрированная языковая среда. Когда я пишу на RPG какую-то бизнес-логику и вижу, что "вот эту функцию мне проще на С сделать" - я просто делаю ее на С и вызываю из RPG кода точно также как любую процедуру на RPG. Точно таже я могу из RPG вызвать любую функцию из С библиотеки. Просто объявив на RPG ее прототип со ссылкой на "внешнюю процедуру" (extproc(*CWIDEN: 'memcpy'), например).

TIMI код также хранится внутри программного объекта вместе с исполняемым. И есть метка под какой именно процессор собран исполняемый код. Если вы собрали программу под Power9, а потом перенесли ее на Power10, при первом же запуске система это увидит и по TIMI коду перегенерит исполняемый уже под новый процессор. Представьте такое на других системах - собираете под x86, потом переносите на ARM и вам ничего не нужно делать - все само адаптируется при первом запуске.

Что касается самого языка, то да. Все можно написать на любом языке. Вопрос в том - насколько все это будет удобно. Сколько внешних зависимостей вам придется подтянуть в какой-нибудь C# чтобы дернуть SQL запрос, а потом реализовать арифметику работы с датами (например). Сколько дополнительных действия вам придется. В RPG нисколько. Все нужное для работы с БД и коммерческих вычислений в нем уже есть. Все типы данных, которые есть в БД, нативно поддерживаются языком - decimal, numeric, date, time, timestamp, varchar - все это в языке есть и на 100% соответствует типам данных в БД. Если у вас есть переменная типа date - делайте с ней что хотите. Прибавить 2 месяца, вычесть три дня, представить в виде числа или строки в нужном формате - все это поддерживается. Если форматы с фиксированной точкой - вся арифметика, включая операции с округлением.

Если вам нужно прочитать запись по ключу - можно даже не использовать SQL. Поддерживается и прямой доступ к таблицам. Просто объявляете структуру соответсвующую структуре записи (для этого есть специальный модификатор - likerec со ссылкой на формат записи) и в этот буфер читаете запись. И дальше вам не надо мапить куски этого буфера в какие-то объекты чтобы работать с ними - это просто поля с любым из которых вы сразу работает как с обычной переменной - все типы данных поддерживаются языком.

Хотите SQL? Не вопрос. Просто вставляете в код на RPG exec sql

exec SQL SELECT STUSSN, 
                (SFNAME CONCAT " " CONCAT SLNAME), 
                (STREET CONCAT " " CONCAT CITY CONCAT " " CONCAT STATE),
                PHONE, 
                SEMAIL 
           INTO :StudInfo
           FROM WUSTDP
          WHERE STUSSN = :Studnt;

Все. Используя переменную Studnt в качестве параметра оно прочитает в структуру StudInfo то, что вам нужно.

Так что тут вопрос не в том можно или не можно, вопрос в том - насколько все это просто, удобно и эффективно в конечном итоге.

Вообще, говорить о том, что лучше - С/С++ или RPG (как порой спорят про С++ и тот же Rust) совершенно некорректно. Потому что для решения широкого круга общих задач С++ мощнее и дает больше несоизмеримо возможностей. Но для решения узкого круга специфических задач, связанных с работой с БД и коммерческими вычислениями (фиксированная точка, строки, дата/время...) RPG проще и удобнее. Плюс ILE - каждую часть вашей задачи пишете на том, что удобнее здесь и сейчас.

Ну и сама платформа очень мощная. И тоже заточена именно на эти задачи. Рассказывать про нее - это даже не отдельная статья, это книга. Тут, если интересно, можно почитать Ф.Солтис "Основы AS/400" - один из отцов-основателей системы. Там и история и технические вопросы расписаны.

IBM AS/400 — одна из самых интересных по инженерным решениям и эффективных коммерчески компьютерных архитектур. Задолго до того, как термин «объектно-ориентированный» широко распространился, машинный интерфейс высокого уровня AS/400, появившийся в предшествовавшей ей System/38, предоставил разработчикам приложений набор объектов (таких как очереди, индексы и файлы базы данных), которые при создании программы можно было использовать в качестве строительных блоков. Объекты придали высоким функциональным возможностям системы согласованную и простую в работе форму. Унифицированный объектный интерфейс скрывает от программистов AS/400 детали, благодаря чему они могут игнорировать сложные управляющие блоки и системные процедуры, относящиеся к внутренним процессам операционной системы (ОС). Более того, с помощью набора заранее определенных операций ОС ограничивает доступ к объектам. Это обеспечивает приложениям дополнительную защиту при исполнении.   Объекты AS/400 расположены в слое программного обеспечения поверх аппаратных средств. Это позволяет IBM вносить в аппаратуру значительные изменения, не затрагивая при этом приложения. Обычно новое оборудование требует лишь обновления поставляемого IBM внутреннего кода — ведь интерфейсы объектов, задействованных приложениями, неизменны. Это еще одно преимущество объектов AS/400: они позволяют приложениям воспользоваться новшествами аппаратных средств, при этом модифицировать код приложений не требуется. Все детали реализации системных объектов «скрыты» слоем программного обеспечения.

Тут "все есть объект". От файловой системы (где не "файлы", но "объекты") и далее.

Плюс одноуровневая модель памяти с 128-бит указателями (содержит не только сам указатель, но и набор специальных тегов) - все это позволяет свести практически к нулю накладные расходы на переключения контекста заданий (процессов). Т.е. система изначально проектировалась для максимально быстрой одновременной работы большого количества процессов.

Плюс (уже с точки зрения разработчика) тут очень много разного рода "сахара". Например, структурированные ошибки и системные исключения. Вам совершенно не нужна поддержка исключений в языке - механизм try/trow/catch можно реализовать на системных исключениях в программе на любом языке с возможностью целенаправленного проброса на любой уровень стека.

Плюс разные полезные с точки зрения разработки типы объектов

  • User Space (*USRSPC) - что-то типа memory mapped file. Персистентный объект на диске но с доступом по указателю как к области памяти

  • User Index (*USRIDX) - хранение значений ключ-данные с быстрым поиском по ключу.

  • Очереди - User Queue (*USRQ), Data Queue (*DTAQ), Message Queue (*MSGQ). Первые две фактически список пакетов, могут быть FIFO/LIFO/KEYED (последнее - когда каждый пакет снабжается ключом по которому можно извлекать данные - равно/не равно, больше/меньше и т.п.) Последняя удобна для разного рода вывода. Например, отладочной информации - расставив в программе отладочный вывод и запустив ее в одном задании, в другим можете реальном времени смотреть что оно туда выводит. Ну или между программами/заданиями сообщения прокидывать.

В общем, тут очень много всякого удобного. Такого, чему в других системах нет аналогов (или это все нужно как-то отдельно реализовать, а тут все посредством системных API).

Так что еще раз - вопрос не в том можно или нет решить ту же задачу как-то иначе (на другой платформе, языке), а исключительно в том где и как эти задачу решить проще и эффективнее. Тут нет абсолютной лучшести или хужести, только применительно к конкретной задаче.

>Тяжела и неказиста Жизнь простого программиста

Но зато у вас жесточайшая привязка к вендору с которой уже никак не съехать без полного переписывания всей гигантской системы с нуля. Если обстановка обострится еще сильней или государство ультимативно потребует это будет очень весело и дорого. Может тогда и Rust заинтересует. )))

Ну, во-первых, все понимают, что так просто взять и "положить" системообразующий банк из топ-10 с >50млн клиентов (в т.ч. и крупных корпоратов) по всей стране чревато для экономики в целом. Так что подобные вещи, конечно, декларируются (уже), но на их несоблюдение смотрят сквозь пальцы в силу отсутствия технической возможности.

Ну а если все станет совсем жестко, то вам тоже придется думать о том как запустить Rust на каком-нибудь Байкале или Эльбрусе. Или переходить на такое вот

Ну, во-первых, все понимают, что так просто взять и "положить"
системообразующий банк из топ-10 с >50млн клиентов (в т.ч. и крупных
корпоратов) по всей стране чревато для экономики в целом.

вот кстати это прям очень явный пример почему нельзя НЕЛЬЗЯ использовать такие вендорлокнутые системы, какими бы они крутыми не были

Это всё конечно капец как здорово, но из явных проболем

1) нет специалистов, их и для универсальных систем то нет, а тут прям вообще нет

2) жесточайшая привязка к железу которое уникально для таких систем

3) ценники на всё учитывая 1+2, просто сверхкосмические

с точки зрения бизнеса, особенно с учетом стрельнувших уже рисков вендорлока, это выглядит как то что никогда ни в коем случае нельзя внедрять такие системы в будущем

Ну тогда счеты и арифмометры феликс-м ваш путь. Они даже от электричества не зависят. И с информационной безопасностью у них все ок.

Мы все привязаны к железу производство которое не контролируем. И что?

И да. Два года (на сами понимаете, да?) прошло и никакого ущерба от вендор-лока нет. И даже "параллельный импорт" в некотором смысле работает.

И больше скажу - в принципе, купить те же Power10 возможность и сейчас есть.

Все эти страшилки - они по большей части для СМИ. Что-то стало дольше, что-то дороже, но ничего при этом не рухнуло. И не рухнет.

Вопрос конечно вне рамок хабра, но новых требований государства в духе "вы там хоть всю прибыль потратьте, но импортзамещайтесь" или дальнейшего обострения ситуации я бы не исключал из списка возможных и вероятных.

Такие требования будут в реальности означать полную остановку деятельности системообразующего банка из топ-10 (в настоящее время 4-е место в финансовом рейтинге банков по объему нетто активов). Т.е. весьма ощутимый удар по стабильности финансовой системы страны.

На такой шаг никто никогда не пойдет в здравом уме.

Просто так "импортозаместиться" тут не получится. Близких аналогов ни по железу, ни аналогов по софту нет. Т.е. речь идет о полной миграции всего и вся на какую-то новую платформу. Что нереально в какие-то разумные (даже год-два) сроки. Тут от 5-ти лет может потребоваться, если не больше, для переноса всех внутренних бизнес-процессов на какие-то "православные" решения. И надо понимать, что на 100% "православных" решений по железу требуемой производительности просто не существует в природе в настоящий момент. Я даже не уверен, что китайцы могут предложить на 100% свои серверы (без "вражеских" компонентов) требуемой производительности. Про отечественное уже молчу.

Все эти вопросы внутри банка обсуждались неоднократно. Думаю, и на уровне регулятора тоже.

На такой шаг никто никогда не пойдет в здравом уме.

Эхехе...

На самом деле тут много "больших денег". В т.ч. всякие региональные кредиты и з/п проекты. Положить банк "на бок" слишком много кому аукнется. Проще на все это смотреть сквозь пальцы т.к. "нет технической возможности".

А еще клиентам придется компенсировать через АСВ, а там столько денег просто физически нет...

Тут от 5-ти лет может потребоваться, если не больше, для переноса всех внутренних бизнес-процессов на какие-то "православные" решения.

Я бы ни разу не удивился такому требованию в наше время - вот идите и пять лет переписывайте.

Железо - так накрайняк китайское, какие-нибудь ARM, RISC-V или Loongson.

Ну и чисто теоретически в случае резкого ухудшения обстановки закрытая система в системообразующей организации которую надо обновлять из-за рубежа (либо сидеть с уязвимостями) прямо напрашивается как вектор целенаправленной атаки возможно уже с участием спецслужб и государства.

Оно все конечно звучит маловероятно и неразумно, но знаете многие нынешние события тоже казались маловероятными и неразумными.

Я, само собой, не призываю вас немедленно кидаться все переписывать, но вот новые проекты на такой технологии как бы хороша она не была...

Если нужно все переписывать, значит система базировалась на вендов лок технологиях? Есть же относительно кроссплатформенный софт. К примеру Linux, если на нём работает. Врядли потребуются титанические трудозатраты, что бы портировать под astra Linux. Просто пример.

Так вы почитайте описание системы @SpiderEkbтут уже достаточно много написал - там все свое, от IBM, начиная с железа и ОС и заканчивая языком программирования, фреймворком, библиотеками и СУБД. Причем все тесно интегрированное.

Понял. Прочитал сообщения выше.

Ага. Линукс. По сравнению с IBM i астра линукс это примерно как спектрум по сравнению с современным процем.

Как пример - в линуксе есть "уровни защиты" на уровне ОС? Ну вот типа чтобы она тебе сказала на определенные действия - "работа с объектами в домене *SYSTEM через системные указатели на уровнях защиты 40 и выше запрещена, только с объектами в домене *USER или через системные API".

Могу я в линуксе использовать такие вещи как системные очереди (*DTAQ/*USRQ/*MSGQ)? Да там просто ничего подобного нет...

Могу я в линуксе 10 раз запустить одну и ту же программу в рамках одной и той же группы активации с сохранением всех глобальных и статических переменных между запусками? Нет. Там такого понятия нет.

Могу я в линуксе пользоваться механизмом системных исключений с пробросом на нужный мне уровень стека? Опять нет...

Про окружения заданий уже писал выше - в линуксе тоже все не так...

Т.е. портировать что-то не получится. Можно только все переписать заново. Миллионы строк кода. С полным рестестом. Титанический труд.

Чтобы понять о чем идет речь рекомендую хотя бы бегло ознакомиться: Фрэнк Солтис "Основы AS/400"

Почитаю. У вас там какая то деревняя магия:) Я с таким не сталкивался.

Она не древняя :-)

Работает все это на процессорах Power9 (в версии SMT8). Сейчас уже есть Power10 (говорят, что, в принципе, можно купить, но дорого и пока нет необходимости).

Версия ОС - 7.4 (2019) со всеми свежими TR (Technology Refresh - минорное обновление ОС). Последнее в прошлом году накатывали (то ли TR8, то ли TR9...)

Самая свежая версия - 7.5 от 2022 года.

Так что это просто "параллельная вселенная", которая живет своей жизнью и вполне себе развивается.

Просто "это другое". Оно иначе работает в принципе. Линукс можно использовать как десктоп, тут нет. Только многопользовательский режим. Заходим терминалом. Каждый терминал - отдельное задание со своим окружением. Например, есть временная библиотека QTEMP. Она своя для каждого задания. Запустилось задание - для него создалась своя QTEMP. Завершилось - удалилась (со всем содержимым).

У каждого задания свой JOBLOG. Автоматически ведется системой. Можно посмотреть текущий лог задания хоть командой в терминале, хоть SQL запросом (т.е. сопровождение может мониторить любое задание в реальном времени - что там происходит). Завершилось задание - JOBLOG конвертируется в "spool file" - *SPLF (это "вывод на принтер"). И далее доступен для просмотра уже в виде текста.

Т.е. тут работа как на "больших машинах", а не как на привычном домашнем компе.

Сообщество в мире есть. Группы в LinkedIn, теги на SO. Есть просто ресурсы типа Code400, RPGPGM, ITJungle, Scott Klement и т.п. Так что просто свой мир. Не сильно большой, но вполне себе живой и развивающийся.
Для VSCode, кстати есть неплохие плагины IBM i Development Pack - там и синтаксис для языков и работа с сервером и работа с БД...

Есть даже публичный бесплатный сервер PUB400 - любой может подключиться и попробовать (я пробовал, но мне не надо - у нас свой тестовый сервер, да и есть отдельная партиция изолированная, которая доступна с локальной машины через VPN - там тоже сопровождение аккаунт может создать по запросу сотрудника).

Мы каждый год (с 2017-го года) проводим митап Core Sytems DevConf (с этого года, до этого назывался IBM i DevConf)

Вы как из четвёртого измерения:) Спасибо за подробный ответ.

Ну примерно так да :-)

Я до 17-го года (примерно этак с 88-89-го) только на PC писал. В основном на С/С++. Ну если не считать пары учебных задач на фортране для ЕС-1033 в институте и немножко на фортране же на СМ-4 в 88-м году на первой работе.

А так - с 93-го года винда и С/С++.

А в 17-м пришел сюда и... Первые полтора-два месяца просто мозг ломался и взрывался - все не так. Все концепции, вся идеология совершенно другие.

А сейчас... Нравится эта система. В т.ч. с точки зрения разработчика - теми возможностями, которые она дает.

Да и интерфейс при работе в терминале куда более логичный и внятный по сравнению с тем же линуксом.

Я бы ни разу не удивился такому требованию в наше время - вот идите и пять лет переписывайте.

Ок. Идем и переписываем. Только на 5 лет отстаньте от нас :-)

Ну и чисто теоретически в случае резкого ухудшения обстановки закрытая система в системообразующей организации которую надо обновлять из-за рубежа (либо сидеть с уязвимостями) прямо напрашивается как вектор целенаправленной атаки возможно уже с участием спецслужб и государства.

Дело в том, что эта система (не поверите) изолирована от внешнего мира. Т.е. вы не можете просто так к этому серверу обратится извне. Ни через логин-пароль, никак. Там может пройти запрос через несколько промежуточных слоев и в ответ вы получите какие-то данные (если все правильно сделаете). Но доступ к серверу только изнутри.

Даже с тестовым сервером поработать можно или с компа во внутреннем периметре (но с этих компов нет выхода в инет), или с виртуалки.

Т.е. вендор, даже заложив какие-то backdoors воспользоваться ими не может.

Ну а обновления - параллельный импорт работает :-) И это не линукс, где обновления чего-то там валятся каждый день.

Ну, МС по своей идеологии подразумевают то, что каждый сервис работает как автономная единица, на своем железе, в идеале при этом горизонтально масштабируется, т.е. эти сервера могут быть вообще в разных ЦОД-ах на разных частях планеты. Поэтому и разрабатывается МС как отдельный сервер со всей этой авторизацией и прочим "блэкджеком". Это в принципе штука интересная и полезная, просто надо применять их там где без них реально не обойтись, а то часто получается что у нас на карьерных самосвалах в булочную за хлебом катаются, мучаясь с огромными габаритами и расходом топлива, при том что любая микролитражка была-бы намного удобнее и экономичнее для этого дела.

Особо ретивые ученики, уже отпраздновали кончину С++. Весь код в мире переписан на Rust. Но вот скажите мне, почему в Rust'е осилили безопасность, парсинг 100500 разных видов скобочек, но не осилили впилить исключения и нормальный ООП к которому все привыкли за 40+ лет. Это не безопасно?

И медленно, если верить Линусу. Именно за исключения и ООП он отказывается принимать С++-подобные языки как языки программирования. А разработчики раста - его секта.

Мы на своей платформе гоняли плюсовые исключения. В целом - да, как только исключение пробрасывается за граница объекта в котором оно было создано, начинаются просадки производительности.

Но на нашей платформе есть понятие "структурированная ошибка" и механизм системных исключений, позволяющий их пробрасывать куда угодно по стеку вызова. Так что стараемся использовать их.

Мы на своей платформе гоняли плюсовые исключения. В целом - да, как только исключение пробрасывается за граница объекта в котором оно было создано, начинаются просадки производительности.

Но ведь исключение происходит, только при ошибке. Уверен, намного реже.

Скажем так -при исключительных ситуациях. Однако там есть цена , платимая даже если оно не происходит, а в блоке нет try-catch. Именно поэтому появились тэги noexcept

В защиту могу сказать, что это не накладные расходы на сборщик мусора.

И медленно, если верить Линусу. Именно за исключения и ООП он отказывается принимать С++-подобные языки как языки программирования. А разработчики раста - его секта.

Насколько я понимаю, это его комфорт. А тут плюсы, концепции, ООП и т.д

не осилили впилить исключения и нормальный ООП к которому все привыкли за 40+ лет

Быть может, потому, что уйти от "нормального ООП, к которому привыкли за 40 лет" и было одной из основных идей Rust?

Но, почему за ним идёт шлейф сектантства?

а так ли это плохо?

Быть может, потому, что уйти от "нормального ООП, к которому привыкли за 40 лет" и было одной из основных идей Rust?

Но зачем?

а так ли это плохо?

Да плохо, мне не нужны библиейские сюжеты. Все же программирование это наука, а не набор мифов.

Скорее кликушество, чем сектантство. Сектантство подразумевает пирамидальную схему и наличие социального контракта

Имхо, но объяснение ООП на животных и тд и тп исходит из того, что данная абстракция достаточно легко воспринимается людьми, которые до этого подобные вещи не трогали на уровне разработки, т.е неподготовленному мозгу просто проще это переварить, осознать и закрепить как параллель. Накручивать на это бизнес примеры имеет смысл, но скорее как дополнительную информацию, аля сейчас мы рассмотрели как оно может быть замаплено в около биологическую иерархию, а вот пример из бизнеса и где оно может быть этому самому бизнесу полезно

Интересно послушать мнение автора насчёт ООП vs ФП (:

Хочу доработать статью, более полно раскрыть темы. Исправить ошибки и улучшить орфографию. И добавить пару глав. Раскрыть некоторые темы. Улучшить язык статьи. Имеет ли смысл снимать статью с публикации? Доработать и потом опубликовать. Или доработать и потом просто добавить в статю заметку, что статья доработана? Или вообще уже не имеет смысла это делать? Так то есть что добавить и ответить на комментарии.

IMHO - нет. А пару глав можно написать в следующей статье.

Много букв...
Пойду лучше код писать, ведь мой код, обычно, не занимает даже мегабайта. Ну ладно, исходный текст занимает 3+ метра. + либы под разные архитектуры и ОС 10+ метров...

Всплакнул по Beos....

И каждый день пользуюсь приложением ВТБ, в котором 50% пространства занимает собственная реклама ВТБ. А еще всплывающие окна, которые предлагают купить квартиру, страховку, юани и черт еще знает чего.

Не ИТ во мгле.. Мир из-за капитализма во мгле...

(сам являюсь предпринимателем, капиталистом себя не считаю. Давайте объединяться и вырабатывать правила)

Мир из-за капитализма во мгле...

(сам являюсь предпринимателем, капиталистом себя не считаю. Давайте объединяться и вырабатывать правила)

забавно капиталист не считает себя капиталистом ;)) вы полезные сервисы для людей разрабатываете или очередую визитку-црмку-магазинчик-телеграмбота-сканер_ценников для оболванивания простого рабочего народа и отъема у них честнозаработанных денег за зарплату в 5 раз выше средней по стране для других капиталистов делаете? или за 20тыщ рублей сайты для местного дома культуры пилите? или для школы?

никто не будет правила вырабатывать, капитализм это не выдуманный конструкт, это буквально суть человечества которую немного огородили правилами и законами чтобы люди друг друга не перегрызли

 капитализм это не выдуманный конструкт, это буквально суть человечества которую немного огородили правилами и законами чтобы люди друг друга не перегрызли

Откуда вы такое почерпнули?

забавно капиталист не считает себя капиталистом ;))

А по-моему забавна ваше узкое мышление. На мой взгляд капиталист, это человек сконцентрированный на прибыли, ему все равно что делать. Мне нет. Вы сейчас конечно, судя по себе, скажете что дело только в сумме. Но и в этом мы с вами тоже различаемся.

ы полезные сервисы для людей разрабатываете или очередую визитку-црмку-магазинчик-телеграмбота-сканер_ценников для оболванивания простого рабочего народа и отъема у них честнозаработанных денег за зарплату в 5 раз выше средней по стране для других капиталистов делаете? или за 20тыщ рублей сайты для местного дома культуры пилите? или для школы?

Ощущение, что почитал ваше резюме. Для полного, совершенного нигилизма, который вы транслируете все еще не хватает яда. Но угадывается подписчик Невзорова, Навального..

Если что, мы разрабатываем систему менеджмента качества для фармацевтических компаний. Мы просто делаем свое дело и делаем его с удовольствием и на максимально хорошем уровне.

Откуда вы такое почерпнули?

из собственного опыта и наблюдений, или вы думаете надо книжки с определениями читать чтобы делать такие выводы?

А по-моему забавна ваше узкое мышление. На мой взгляд капиталист, это
человек сконцентрированный на прибыли, ему все равно что делать. Мне
нет. Вы сейчас конечно, судя по себе, скажете что дело только в сумме.
Но и в этом мы с вами тоже различаемся.

на самом деле вы зря так думаете, как мне кажется это вы просто не затрагивали собственные пограничные уровни комфорта когда падение по пирамиде Маслоу на уровень ниже, открывает совершенно удивительные для себя самого вещи которые РЕАЛЬНО влияют на вас, а не то что вы для себя выдумываете. Я с сеньорской зарплатой тоже могу говорить умные вещи и цыкать зубом какой я правильный и морально неиспорченный капитализмом... но стоит встать на пороге ситуации когда у вас вообще нет зарплаты или денег не хватает даже на платеж по ЖКХ, то мигом сдувает все это морализаторство... я до сих пор помню когда у меня был бизнес и при кассовом разрыве я искал деньги для зарплаты подчиненным и, простигосподи, подписывался под размещение предвыборной рекламы ЕР чтобы, бл.. жрать купить себе и сотрудникам выплатить зарплату...капитализм ха. мне до сих пор за это стыдно что я всего лишь раз коснулся политической рекламы и рекламы именно ЕР..

всёравно все сводится к деньгам. даже если вы этого не замечаете, просто это становится настолько привычным что вам кажется что этого нет. спросите как живет слесарь с зарплатой 30тыщ и семьей в 4 человека, какой он не капиталист хотя он будет отрицать это все, но пойдет халтурить чинить водопровод бабушке и ломанет цену больше среднего если увидит что бабушка не бедная..потому что денежки нужны и сына надо в школу собирать

Но угадывается подписчик Невзорова, Навального..

хах, вы не можете принять что есть люди, мнение которых не сформировано блогерами и политиками? весь мой опыт и мировоззрение построено на моем личном опыте, наблюдении и общении с людьми, я не смотрю подкасты политиков. либералов, зедпатриотов и прочих непоймикого.

Если что, мы разрабатываем систему менеджмента качества для фармацевтических компаний.

хаха...пять баллов, вы за адские килобаксы разрабатываете вещь для самых отпетых капиталистических сволочей сам принцип существования которых заключается в зарабатывании астрономических денег на госзаказах жизненнонеобходимых лекарств, когда важнейшие для человечества препараты стоят просто сверхсуперкосмических денег, дааа...дорогая разработка, исследования, это ценники в которые заложена ВАША бл..ВАША заплата айтишника которая попадает в 1% зарплат населения РФ, вы же не будете зп 50тысяч разрабатывать систему для фармы чтобы они снизили цену на условный инсулин? нет, денежки, работа мозгами стоит денег, 150 джун, 250 миддл. 350+сеньор...пусть шахтер за 80к там горбатится уголь добывает или химик в лаборатории за 30тыщ проверяет химикаты на производстве лекарств, вы делаете нужную вещь! хах ;))

Фарм отрасль считается самой безжалостной, злой и насквозь прогнившей, когда запрещают выпуск дженериков для бедных стран чтобы заработать побольше бабла... чтобы бабло это заплатить в том числе вам.

Хах...подписчик навального, а вы то подписчик кого? расскажете мне как спасаете мир?

Ну если вы знакомы с пирамидой Маслоу, наверное вам знакомо понятие генерализации, т.е. перенесение собственного опыта на всех вокруг. Стоит просто понять, что у людей вокруг бывает и другой опыт.

всёравно все сводится к деньгам. даже если вы этого не замечаете, просто это становится настолько привычным что вам кажется что этого нет. спросите как живет слесарь с зарплатой 30тыщ и семьей в 4 человека, какой он не капиталист хотя он будет отрицать это все, но пойдет халтурить чинить водопровод бабушке и ломанет цену больше среднего если увидит что бабушка не бедная..потому что денежки нужны и сына надо в школу собирать

Вряд ли вы приведете пример, в котором есть некий абстрактный человек, который работает без денег, разве что монах или схимник. Да и он все равно еще кушает хлеб. Просто необходимо понять, что без денег в принципе не делается ничего, ни благотворительность ни экологические проекты, ни волонтерство, ни самая благородная цель. Деньги это универсальный способ обмена энергией, временем, опытом. Если это понять, то становится очевидным, что раз без денег ничего не делается, и деньги это средство, а не цель, то можно сосредоточиться на действительно важном - а что именно мы делаем. Не что мы делаем, что бы получить деньги, потому, что деньги как константа выпадают из этого уравнения, а в принципе - что мы делаем?

У меня так же. Когда приближался кассовый разрыв - я искал уже где буду закладывать или продавать машину. Это нормальная ситуация, если ты берешь ответственность за людей.

весь мой опыт и мировоззрение построено на моем личном опыте, наблюдении и общении с людьми, я не смотрю подкасты политиков. либералов, зедпатриотов и прочих непоймикого.

Тогда у вас очень печальный опыт.

хаха...пять баллов, вы за адские килобаксы разрабатываете вещь для самых отпетых капиталистических сволочей сам принцип существования которых заключается в зарабатывании астрономических денег на госзаказах жизненнонеобходимых лекарств, когда важнейшие для человечества препараты стоят просто сверхсуперкосмических денег, дааа...дорогая разработка, исследования, это ценники в которые заложена ВАША бл..ВАША заплата айтишника которая попадает в 1% зарплат населения РФ, вы же не будете зп 50тысяч разрабатывать систему для фармы чтобы они снизили цену на условный инсулин?

Лично мы разрабатываем систему, которая помогает выпускать КАЧЕСТВЕННЫЕ лекарства. Что там делают остальные - я не знаю. Предлагаю вам не покупать таблетки у этих всех отвратных компаний, не поддерживать сволочей. И опять генерализация. Где-то что-то нахватались, начитались и теперь вываливаете это все со своей огромной высоты.

Тогда у вас очень печальный опыт.

Это жизнь реальная, если жить всегда внутри условного МКАДа и в розовых очках, в окружении прекрасных людей одного с вами уровня, кажется что проблем в мире не существует...однако и крупнейшие мегаполисы первых стран мира и вообще весь золотой миллиард, это лишь небольшая часть человечества.

то можно сосредоточиться на действительно важном - а что именно мы делаем

Да, вы под эгидой повышения качества лекарств увеличиваете их стоимость, причем в сотни раз.

Лично мы разрабатываем систему, которая помогает выпускать КАЧЕСТВЕННЫЕ лекарства.

Вы сделали свою систему доступной ..ну не бесплатно, но хотябы очень дешево для стран третьего мира? выложили в общественное достояние исходные коды чтобы ваш бесценный опыт распространялся на весь мир и делал его лучше и качественней? или вы просто денежек лишних таким образом не заработаете?

Вы я смотрю отлично упустили мою ремарку про зарплаты и стоимость вашей разработки относительно лаборантов и ученых которые эти самые лекарства разрабатывают. видимо это другое, да. тут у вас не капитализм, а здесь уже капиталистический рыночек и за копейки качественные лекарства вы делать не собираетесь...но вы корону спасителя людей уже нацепили ;) удобно чо.

Предлагаю вам не покупать таблетки у этих всех отвратных компаний, не поддерживать сволочей.

Это монопольный рынок, я к этому прицепился только потому что вы считаете себя дартартаньяном потому что считаете что делаете мир лучше своей работой, конечно в этом есть часть правды, но это не отменяет суть что и ваша личная работа и ваши заказчики - это сугубо капиталистические сущности. вы лишь убеждаете себя что это не так.

Где-то что-то нахватались, начитались и теперь вываливаете это все со своей огромной высоты.

Вы всёравно не можете поверить что люди могут какието выводы делать сами, а не читать чтото и смотреть когото....как в детском саду "мальчик, кто тебе такое сказал?"

ваш опыт врятли сильно больше моего (а мой вашего), но у меня нет иллюзий на счет великой цели человечества и что человек человеку друг по умолчанию, принцип капитализма вытекает из обычных отношений, когда сосед ваш оттяпает ваш участок и не поморщится, но при этом будет милейшим человеком спасающим котиков

никто не будет правила вырабатывать, капитализм это не выдуманный конструкт, это буквально суть человечества которую немного огородили правилами и законами чтобы люди друг друга не перегрызли

Капитализм - это способ управления общественным производством. На текущий момент - оптимальный, но так было не всегда и не факт что так будет всегда начиная с настоящего момента.

Суть человечества (она же - "природа человека") определяется в занчительной мере совокупностью тех отношений, в которые люди всупают в процессе производства необходимых им благ. В частности, с тем, чтобы люди в одном обществе не перегрызли друг друга, вполне успешно справлялись разные по своему характеру общества и до капитализма. А правила для этого были весьма разные.

Но это все - уже философия (конкретно - материалистическое понимание истории). Не думаю, что на Хабре это можно и нужно всерьез обсуждать.

Капитализм - это способ управления общественным производством

только его никто не вырабатывал и не создавал, рынок и товарные взаимоотношения появились с момента появления человечества сразу как одно племя пошло в гости к соседям с мотивацией не перерезать всех, а чтото сделать вместе. это универсальная штука, не зависящая от способа управления производством.

Суть человечества (она же - "природа человека") определяется в занчительной мере совокупностью тех отношений

суть человечества в том что каждый человек хочет сделать хорошо себе и ему плевать на других, даже если он считает что это не так. капитализм строится расширении этого принципа

почему собственно утопические модели общества всегобщего благоденствия и всякие коммунизмы нежизнеспособны в долгосрочной перспективе, всё обламывается на ошибочном допущении что "люди всё понимают и работают на общество" - нет человек всегда работает сам на себя, даже если в конкретный момент кажется что это не так

Спорить дальше совсем не хочу, только пару вещей отмечу.

  1. Капитализм - это не только рынок, но и частная собственность на средства производства. А это уже не столь универсальная штука. С понятиями африканских племен, к примеру, не сочетается - там делиться надо. И со Средневековьем европейским - тоже очень посредственно: к примеру, право распоряжаться землей там было обставлено кучей условий. А отсюда - и другая психология. К примеру, психология тех же участников Крестовых походов (да и рыцарского сословия вообще - для которого честь была дороже любых денег) нашему современнику далеко не органична. Но это, особенно весь массив связанных с этим знаний - оно опять-таки далеко за пределами тематики Хабра.

  2. Плевать на других получается не всегда. К примеру, при "первобытном коммунизме" (родово-племенном строе) - не получается: на индивида, коли он против понятий пойдет, там наплюют так, что мало не покажется. А в одиночку там не проживешь - съедят или сам с голоду помрешь.

частная собственность это тоже куда более естественно, чем какая-то коллективная

Это для вас она более естественна, потому что вы в Европе живете. А вот для негров в Африке она неестественна. Тамошний типовой случай: заработал там кто-нибудь на кокй-нибудь торговле денег, решил вложить их, чтобы расширить бизнес - ан, нет. Приходят к нему соклановцы и прочие соседи по деревне и говорят, что не надо жадничать, а надо делиться, по-братски. Потому что там до идеи частной соственности массы ещё не дошли.
Да что там Африка: здесь в России всего каких-то сто лет назад с небольшим крестьяне массово и активно боролись против частной собственности на землю. Типа, земля - она, пусть, государева, но урожаем с нее должен распоряжаться, тот кто на ней работает. А наделять землей должен мир (община), причем - по справедливости.
Нет, то, что всякие там плуги, бороны, а также лошади с коровами - они у каждого свои, это для крестьян было естественно. А что земля у каждого своя - нет (точне, не совсем, но это уже детали).

Нет, то, что всякие там плуги, бороны, а также лошади с коровами - они у каждого свои, это для крестьян было естественно.

Интерполяция этого понятия на землю, тоже вполне естественно.

То что вы описываете совершенно не исключает понятия частной собственности, оно просто на несколько ином уровне

В Африке с общиной, кажется что это "община" приходит, а на самом деле человек и его типа "земля" принадлежит вождю или совету старейшин, это всё племя - частная собственность этой группы, а конкретный член племени не имеет сил им противостоять, по этому живут как повелось

также как и крепостной крестьянин, мог что у годно считать, но ОН САМ был частной собственностью своего барина вместе с землёй, женой и детьми

если взять достаточно предприимчивого крестьянина и выдать ему пару деревень, он запросто станет капиталистом, но уж никак не будет там коммунизм и общину строить....точнее если он попытается это сделать выдав права решать самостоятельно, его быстро прикопают за сараем более предприимчивые соратники и заберут управление себе.

Я уже написал выше, что на эту посторонюю тут тему спорить особо не буду. Просто отмечу, что понятие про "частную собственность" у вас настолько растянуто, что натянуть на него можно что угодно. Хотите более предметно рассуждать о частной собственности - используйте хотя бы критерий "это то, что можно просто взять и продать". А это не везе и не всегда было так. Примеры, касательно земли: крестьянин после реформы 1861 года свою землю так продать не мог, вплоть до реформы Столыпина. Которую в деревне не приняли и сразу после революции продажа земли была запрещена. И феодальный сеньор в Средние Века тоже не мог просто взять и продать часть свих владений, внезапно (всякие продажи имений - это уже в более позднее время) - его право на землю было обусловлено службой сюзерену. Пока, для понимания сложности, надеюсь, хватит.

А про бизнес в Африке - это было совсем не про землю, а про лавку с товарами и тому подобные вещи.

Короче, хотите оставаться при своем мнении - оставайтесь, ради бога. Обсуждать его - это IMHO не для Хабра: слишком много посторонней информации требуется для этого, знать которую типичному хабражителю не свойственно.

его право на землю было обусловлено службой сюзерену

потому что земля принадлежала не ему, а вышестоящему в иерархии

вы сейчас описываете частные случаи одного и того-же явления

"это то, что можно просто взять и продать"

так настоящий владелец может взять и продать, крестьяне, феодалы и т.п. не были настоящими владельцами земли, ими были монархи, вожди и прочие верховные правители.

глупо рассуждать о частной собственности на примере вещей которые вам не принадлежат. конечно у крестьянина до 18 века не было своей земли в частной собственности, но не потому что первоначальный коммунизм-социализм и общественное владение, а потому что она принадлежала комуто вышестоящему

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

так настоящий владелец может взять и продать, крестьяне, феодалы и т.п. не были настоящими владельцами земли, ими были монархи, вожди и прочие верховные правители.

Ну вот, внезапно у нас вместо частной собственности вылезает государственная. И она, если уже смотреть конкретику, в те врмена была - отнюдь не частной собственностью монарха. Монарх тоже был ограничен в своих правах, как он мог распорядиться землей без согласия подданных, часто - законами неписанными, т.е.обычаями (есть такое понятие - "обычое право"), но иногда - и писанными (Magna Carta, к примеру). Короче там вылезает некое количество всяких частностей (ими занимается отдельная наука - история) - настолько большое, что абстрация частной собственности, с ее свободой распоряжения, просто станвится негодной для описания действительности.

Тема эта реально не для Хабра ввиду явного недостатка на нем историков. Я вот, к примеру - вообще не историк. Просто я знаю границы своих знаний и иногда - кое-что отдельное за этими границами, что заставляет меня этих границ придерживаться. И, надеюсь - способствует указанию другим границ их знаний.

Так что, если никто этой темой больше не заинтересуется, я просто прекращаю обсуждение.

Понимаю, что раскрыл не все темы. Будет вторая часть статьи.

Вот прямо захотелось послушать историю боли как " разработчики страдали с монолитом. Коммиты не коммитились, абсолютно всё было плохо, релиз раз в месяц, ужасные миграции"

То есть как девопсы не справились с монолитом, перешли на микросервисы и подложили бяку всем и разработчикам и себе.

И почему не справились.

Articles