Политический триллер для зевак, считающих своё мнение наиболее важным, с целью обоснования открытого вооружённого столкновения с Китаем. Конъюнктура - она такая.
Дядь, ты не уловил суть написанного мной. "Серьёзные проекты" на PHP в здравом уме никто не делает.
на современном PHP
Опять мимо. Как его не "осовременивай" - он всё равно останется шаблонизатором, прибитым гвоздями к циклу HTTP-запроса.
Надо ли тебе объяснять, что не весь софт является веб-сервисом, или сам догадаешься? (Хотя вряд ли - ты ж кроме PHP ничего не видел.)
Ну да ладно. Вот тебе простой пример. Вот захотел ты "современно" работать с входящим HTTP-запросом (ведь ничего другого в PHP всё равно делать нельзя). А то - 25-ый год всё же на дворе, не комильфо этот запрос из "глобальных переменных" получать. Берёшь, допустим, "библиотеку" Sabre, а там - о ужас! - инициализация классов, реализующих HTTP-запрос - из [тех же самых глобальных переменных(https://github.com/sabre-io/http/blob/master/lib/Sapi.php#L154)! Оно и понятно - ведь в таком современном PHP до сих пор не смогли это исправить. Но это ещё цветочки. Саму библиотеку, оказывается, чтобы подключить - надо положить в условленное место специальный "скрипт"-автолоадер - иначе никаких библиотек у тебя не будет! Почему? Да потому что PHP на столько современный, что до сих пор ничего, кроме инклюда одного файлика в другой в нём нет! Я тебе открою маленький секрет - в настоящих языках программирования уже лет 40 как есть концепт под названием "library path", откуда "импорты" будут загружать код. И прикинь - делается это не инклюдом файлов, а через систему модулей!
Но что я тут распинаюсь - тебе ж всё равно не докажешь. Ты ж дубовый - так и будешь считать PHP "лучшим языком программирования" и разгребать говна у работодателя за три копейки - разве что в жопу его ещё осталось поцеловать!
Постоянно слышу этот тезис. Но отвергаю его. Как бы он не "импрувнулся" - он всё ещё остаётся шаблонизатором. Вообще, такое может заявлять только человек, ничего кроме php не знающий - "другого мира" не видевший. Если бы знал хотя бы ещё один ЯП - шоры с глаз моментально упали бы, и стало бы жаль времени, потраченного впустую.
Аргументы можно привести по количеству вакансий, считаю
Увы - тоже не аргумент. Количество вакансий говорит лишь о нежелании "работодателей" хоть что-то менять - достался им в наследство некий "продукт" на php, вот они и тянут лямку. И правильно - зачем что-то менять? Ведь всегда найдутся дурачки, готовые за три копейки это говно поддерживать (ещё и с пеной у рта будут доказывать окружающим, что "php - норм"). Удачи вам в этом нелёгком деле.
М-да... И "айтишку" деградация не обошла стороной - хотя это как раз не удивительно.
Вообще, началось всё с того, что прочитал на хабре статейку про FreeBSD (фри-бздю), где расписывается, какая же она хорошая, и лучше чем Linux. Ну, на счёт прям "хорошая" не знаю - но ZFS в ней нативно поддерживается, а я уже давненько собирался с этой файловой системой познакомиться на практике. Ещё, автор пишет, что "бздя, в отличие от линукса - это целостная ОСь", которая даже собирается полностью вся из "одного репозитория" - а не как линукс, где собсно и существует такое понятие, как "дистрибутив", и их компонуют совсем разные люди, из разных частей. А Linux - это только ядро ОС.
С этими тезисами я, пожалуй, согласен. Но на этом все преимущества FreeBSD и заканчиваются. Я затестил - благо, сейчас есть свободная железка, а именно ноутбук Xiaomi Notebook Pro i7-8550U, который мне любезно предоставил "на поиграться" братан. Так вот, на этом железе она тупо не работает. От аккумулятора ноутбук прожил 40 минут. Это значит, что никакого управления питанием и в помине нет. Wi-Fi, не смотря на то, что в адаптере есть и 802.11n, и пяти гигагерцовый 11ac - работает ТОЛЬКО в режиме 11b - даже не 11n. Ну это вообще фейспалм.
🤦♂️
(И в ноутбуке он припаян, б🤬ь!)
Но вот на счёт целостности - таки я готов поспорить. Дрова для видюхи в бзде - "из линукса", вместе со всей подсистемой KMS/DRM (вообще это хорошо, но всё-таки). Пока игрался - на глаза попался патч, в котором "какие-то там демоны перевели на использование netlink" - тоже из линукса (опять-таки - движение в правильном направлении, потому что всё остальное до сих пор сделано на ioctl, что есть абсолютное зло). И так - много с чем.
Помимо "эмулятора венды" (WINE), есть ещё "эмулятор линукса" (Linuxulator, гг), и нужен он за тем, что под бздю тупо есть не весь софт, который нужен, в основном проприетарщина всякая, но опять же - что делать, если его использование не избежать?
Ну и capabilities на всё и jail'ы - да, круто. Появились раньше линуксовых namespace'ов (и контрольных группу, cgroup; всё вместе это нынче называется "контейнеры"). Но системные сервисы до сих пор не переведены на их использование. Почему? Потому что "Mewburn rc.d", читай - шелл-срипты во все поля. Это, извините, прошлый век, и жутко бесит и не поддерживаемо. Собсно, никто менять по этому и не хочет. "Работает же - зачем менять?". Ну да, ну да, "работает". Порты (система сборки софта) - туда же, "шелл во все поля".
Нет, вы конечно возразите, что "ноутопроблемы, а фри-бздя - это ОСь для серверов, при том - настоящих, которые по 10k rps тянут и даже не икают".
Не соглашусь. Ноутбучное железо - не оправдание для ОС, если мы таки утверждаем, что "бздя лучше линукса". Линукс работает на том же железе - а бздя нет. И если уж мы вообще хотим их сравнивать - то должна работать, и не потому что мне так хочется, а потому что "хорошая (лучшая?) ОС должна работать на всё, даже на утюге".
"Исходники же есть, возьми да и запили поддержку своего железа".
Вот я, допустим, и рад был бы "взять да и запилить". Но вышеупомянутая система сборки к этому никак не располагает - барахтаться в лапше из shell-скриптов и make - крайне сомнительное удовольствие. Как раз по этому BSD так медленно развивается, как ОСь. Засилие старпёртсва и скуфства.
То есть, может быть раньше FreeBSD и была целостной системой - то сейчас она практически превратилась в "отрицание самоё себя", потому что "тащит из линукса всё, что плохо лежит", в ущерб развитию собственных аналогичных подсистем и решений.
Как-то так.
P. S. Там дальше ещё продолжение есть. Кому интересно - подписывайтесь на наш канал я могу запостить.
Просто подключая кабель, ОС делает одну приёмо-передачу ICMPv6 пакетов, после чего является полноценным участником глобальной полностью работающей (со всеми настроенными адресами маршрутизаторов, MTU, DNS) IPv6 сети.
Я не волшебник, я только учусь, но разве SLAAC не предоставляет только локально уникальную адресацию? (ULA vs GUA). То есть, для того, чтобы "являться полноценным участником глобальной полностью работающей сети" разве не потребуется маршрутизатор, соединяющий различные сегменты сети с локальной адресацией? И да, мне где-то встречалось утверждение, что "маршрутизатор в принципе может перенаправлять трафик между разными сегментами, используя только лишь link-lockal адреса" - но я не понял, как это так может быть. Вспомнил, вон там встречал:
Любопытный факт. В сети IPv6 маршрутизатор может вообще не иметь никаких других адресов, кроме link-local, но при этом успешно маршрутизировать пакеты. А всё потому, что в его таблице маршрутизации могут быть быть указаны link-local адреса соседних маршрутизаторов.
Или это я сам себе придумал, что "маршрутизатор может" - ведь link-local адреса на то и канальные, что - действуют только в той же самой сети, в которой я сам? Иными словами - что произойдёт, если я отправлю ping по link-local адресу из соседней сети?
И ещё:
Глобальных префиксов так много выдаётся конечным пользователям и организациям, что просто не имеет смысла использовать site-local адреса сетей (fc::/7)
Но я как раз понял так, что SLAAC используется для автоматического получения уникального локального адреса (ULA) в этом сегменте. Или я не так понял?
Столкнулся с подобной проблемой - проще вызвать libnetd_client.so, чем "пробросить из Go'шки дескриптор сокета в обёртку для mobile". Но не нравится, что надо "выдёргивать с мобилки эту so'шку" - хочется всё же иметь для приложения "нормальную сборку". Думается, что можно эту либку собрать из исходников, и уже с собранной - слинковаться (по идее, она должна быть "одна и та же" на всех устройствах). Не рассматривали такой вариант? Не силён, если честно, в разработке AOSP, куда там копать? Можно ли каким-то образом собрать одну только эту библиотеку, а не весь AOSP (ради одной либы "качать всё" всё же не хочется).
По поводу "ничего не надо качать" и export GOOS=android - таки надо. Плюс gomobile в том, что он это делает за вас. Оно и понятно - Android разрабатывает Google, и Go разрабатывает - кто? Внезапно, тоже Google. Благо - просто для линковки с нативными либами Android достаточно некоторых tools и NDK - а это всё равно около четырёх ГБ. В целом, удобно, но всё же хочется больше контроля над сборкой. Весьма любопытно было бы узнать, как вы в итоге собираете приложение.
Если вас не затруднит, отправьте пожалуйста ссылку на исходники мне в личку, если вы их уже опубликовали, но по какой-то причине не хотите давать её (ссылку) тут, на хабре.
По сути, рассуждения Тьюринга говорят нам не о том, что анализатора быть не может, а то, что классической (бинарной) логики не достаточно для представления результата его работы — нужна как минимум троичная, в которой представим в том числе и вердикт о некорректности кода.
Получается, всё, что нам нужно сделать — это исполнить алгоритм, на каждом шаге запоминая полное состояние памяти и сравнивая его со всеми предыдущими состояниями.
Проблема останова - отнюдь не теоретический абсурд.
Исходя из предложенного алгоритма, на каждом шаге он запоминает полное состояние (конечной) памяти. Вопрос - куда он "запомнит" это состояние на первом же шаге исполнения, если память уже заполнена? В некую внешнюю память?
Далее. Запоминание на каждом шаге состояния памяти ведёт к экспоненциальному увеличению объёмов "запоминания" - ведь хранить надо все предыдущие состояния (чтобы проверить, "а не бывали ли мы уже в этом состоянии"?) Получается, нужен исполнитель, на каждом шаге увеличивающий собственную память в два раза. Но память, согласно предпосылкам, введённым самим же автором - конечна... Ой.
Каким образом "многофазная" логика от этого спасает?
Это я ещё не рассматриваю возможность модификации состояния памяти, как в принципе и поступает любой реально существующий исполнитель, как раз чтобы "сбежать из этой петли". При этом, модификация памяти может наступить по самым разным причинам - фотон с Солнца, например. Но самое главное - модификация памяти может случиться в результате выполнения самого алгоритма - и он "это понять не сможет", так как электроны физически взаимодействуют в одном и том же исполнителе (сигналы ходят по одним и тем же транзисторам), и с точки зрения самого исполнителя - никакой разницы нет, сравнивает ли он некие "запомненные" состояния памяти - или попросту попал в петлю, и сравнивает True с True.
Собственно, как раз по этой причине все реальные исполнители имеют прерывания, которые "вмешиваются в работу исполнителя снаружи, а не изнутри". Однажды запущенный, процессор будет работать до тех пор, пока его не обесточат, либо пока его не прервут с помощью прерывания. На мой взгляд - самая яркая иллюстрация реальности проблемы останова. Снова - каким образом тут поможет "многофазная" логика?
Ну и на последок - эта самая логика, "многофазная" - уже и так присутствует в языках программирования. Простейший пример - nullable Boolean, у которого "три состояния - true, false и null". Надо ли говорить, сколько проблем доставляет этот кейс "истина, лож и всё остальное"?
Как раз это - весьма наглядная иллюстрация того, что "многофазная логика" может и выглядит красиво в теории - но практика, как всегда, неумолима. В случае с "многофазной логикой", на практике это значило бы, что каждый дополнительный вариант, отличный от true и false, необходимо было бы всегда явно кодировать в программе. Что, собственно, и предлагает нам делать Result в языке Rust, например. Или throws при объявлении метода в Java. Надо ли говорить, как громко плачут от этого сами rust'овики? Шутка ли - в каждой функции надо явно обрабатывать каждый failure mode, который может возникнуть в результате вызова "нижележащего" кода. Пример: функция A вызывает функцию D1 и H1. D1 может "падать" способами FD1, FD2, FD3. Функция H1 - "падает" как FH42, FH73, FH111. Итого: теперь функция A "падает" как FA999, FA998, FA997, FD1, FD2, FD, FH42, FH43, FH111. Это скольки-фазная логика уже получается? Где-то тихо заплакал один растовик...
Вывод из этого такой: оставьте формальную логику в покое. Не всё - логическая переменная. И не надо пытаться "замешивать ошибки (failure modes) в булев тип данных".
Зашёл почитать статью в надежде увидеть ссылки на обещанные написанные материалы - "я напишу о том, и об этом". Десять лет прошло, а ссылок на материалы так и нет - "я человек занятой".
Особенно умилили высказывания по типу "по крайней мере у меня тесты проходят" - замечательно. Есть вывод этих тестов? Хотя бы на них посмотреть, раз материалы так и не удосужились написать?
Так же забавно выглядят заявления "приходите к нам разрабатывать ФС", но "как именно разрабатывать - мы вам не скажем! Да и вообще - это сложно! Потрудитесь сперва доказать пару теорем!"
Когда вы последний раз видели "законченный" программный проект? После релиза (в терминологии этой книги - "завершения"?) программный проект только начинает настоящую жизнь. Или это уже "операционная деятельность"? Тогда почему в рамках этой операционной деятельности проект перекраивается вдоль и поперёк?
"Рынку" не нужны специалисты, действительно разбирающиеся в своём деле. Ведь не возможно быть профессионалом, когда пытаешься угнаться за бесконечным паровозом хайпа. Профессионализм подразумевает накопление и углубление опыта, а как это сделать, если каждый год выходит новый фреймворк? Вот и мыкаются бедолаги-программисты, крутятся как белка в колесе. Не выучил очередную хайповую технологию? На мороз! Успешному менеджеру бонус же надо получать за очередное "внедрение". Отсюда повсеместное засилие "семируких пятих*ев" на всех уровнях, и как следствие - качество производимого софта. Но в том и соль - именно такие и нужны.
Политический триллер для зевак, считающих своё мнение наиболее важным, с целью обоснования открытого вооружённого столкновения с Китаем. Конъюнктура - она такая.
Дядь, ты не уловил суть написанного мной. "Серьёзные проекты" на PHP в здравом уме никто не делает.
Опять мимо. Как его не "осовременивай" - он всё равно останется шаблонизатором, прибитым гвоздями к циклу HTTP-запроса.
Надо ли тебе объяснять, что не весь софт является веб-сервисом, или сам догадаешься? (Хотя вряд ли - ты ж кроме PHP ничего не видел.)
Ну да ладно. Вот тебе простой пример. Вот захотел ты "современно" работать с входящим HTTP-запросом (ведь ничего другого в PHP всё равно делать нельзя). А то - 25-ый год всё же на дворе, не комильфо этот запрос из "глобальных переменных" получать. Берёшь, допустим, "библиотеку" Sabre, а там - о ужас! - инициализация классов, реализующих HTTP-запрос - из [тех же самых глобальных переменных(https://github.com/sabre-io/http/blob/master/lib/Sapi.php#L154)! Оно и понятно - ведь в таком современном PHP до сих пор не смогли это исправить. Но это ещё цветочки. Саму библиотеку, оказывается, чтобы подключить - надо положить в условленное место специальный "скрипт"-автолоадер - иначе никаких библиотек у тебя не будет! Почему? Да потому что PHP на столько современный, что до сих пор ничего, кроме инклюда одного файлика в другой в нём нет! Я тебе открою маленький секрет - в настоящих языках программирования уже лет 40 как есть концепт под названием "library path", откуда "импорты" будут загружать код. И прикинь - делается это не инклюдом файлов, а через систему модулей!
Но что я тут распинаюсь - тебе ж всё равно не докажешь. Ты ж дубовый - так и будешь считать PHP "лучшим языком программирования" и разгребать говна у работодателя за три копейки - разве что в жопу его ещё осталось поцеловать!
Постоянно слышу этот тезис. Но отвергаю его. Как бы он не "импрувнулся" - он всё ещё остаётся шаблонизатором. Вообще, такое может заявлять только человек, ничего кроме php не знающий - "другого мира" не видевший. Если бы знал хотя бы ещё один ЯП - шоры с глаз моментально упали бы, и стало бы жаль времени, потраченного впустую.
Увы - тоже не аргумент. Количество вакансий говорит лишь о нежелании "работодателей" хоть что-то менять - достался им в наследство некий "продукт" на php, вот они и тянут лямку. И правильно - зачем что-то менять? Ведь всегда найдутся дурачки, готовые за три копейки это говно поддерживать (ещё и с пеной у рта будут доказывать окружающим, что "php - норм"). Удачи вам в этом нелёгком деле.
М-да... И "айтишку" деградация не обошла стороной - хотя это как раз не удивительно.
Правильно! Давайте продолжать писать на шаблонизаторе вместо языка программирования!
Вообще, началось всё с того, что прочитал на хабре статейку про FreeBSD (фри-бздю), где расписывается, какая же она хорошая, и лучше чем Linux. Ну, на счёт прям "хорошая" не знаю - но ZFS в ней нативно поддерживается, а я уже давненько собирался с этой файловой системой познакомиться на практике. Ещё, автор пишет, что "бздя, в отличие от линукса - это целостная ОСь", которая даже собирается полностью вся из "одного репозитория" - а не как линукс, где собсно и существует такое понятие, как "дистрибутив", и их компонуют совсем разные люди, из разных частей. А Linux - это только ядро ОС.
С этими тезисами я, пожалуй, согласен. Но на этом все преимущества FreeBSD и заканчиваются. Я затестил - благо, сейчас есть свободная железка, а именно ноутбук Xiaomi Notebook Pro i7-8550U, который мне любезно предоставил "на поиграться" братан. Так вот, на этом железе она тупо не работает. От аккумулятора ноутбук прожил 40 минут. Это значит, что никакого управления питанием и в помине нет. Wi-Fi, не смотря на то, что в адаптере есть и 802.11n, и пяти гигагерцовый 11ac - работает ТОЛЬКО в режиме 11b - даже не 11n. Ну это вообще фейспалм.
🤦♂️
(И в ноутбуке он припаян, б🤬ь!)
Но вот на счёт целостности - таки я готов поспорить. Дрова для видюхи в бзде - "из линукса", вместе со всей подсистемой KMS/DRM (вообще это хорошо, но всё-таки). Пока игрался - на глаза попался патч, в котором "какие-то там демоны перевели на использование netlink" - тоже из линукса (опять-таки - движение в правильном направлении, потому что всё остальное до сих пор сделано на ioctl, что есть абсолютное зло). И так - много с чем.
Помимо "эмулятора венды" (WINE), есть ещё "эмулятор линукса" (Linuxulator, гг), и нужен он за тем, что под бздю тупо есть не весь софт, который нужен, в основном проприетарщина всякая, но опять же - что делать, если его использование не избежать?
Ну и capabilities на всё и jail'ы - да, круто. Появились раньше линуксовых namespace'ов (и контрольных группу, cgroup; всё вместе это нынче называется "контейнеры"). Но системные сервисы до сих пор не переведены на их использование. Почему? Потому что "Mewburn rc.d", читай - шелл-срипты во все поля. Это, извините, прошлый век, и жутко бесит и не поддерживаемо. Собсно, никто менять по этому и не хочет. "Работает же - зачем менять?". Ну да, ну да, "работает". Порты (система сборки софта) - туда же, "шелл во все поля".
Нет, вы конечно возразите, что "ноутопроблемы, а фри-бздя - это ОСь для серверов, при том - настоящих, которые по 10k rps тянут и даже не икают".
Не соглашусь. Ноутбучное железо - не оправдание для ОС, если мы таки утверждаем, что "бздя лучше линукса". Линукс работает на том же железе - а бздя нет. И если уж мы вообще хотим их сравнивать - то должна работать, и не потому что мне так хочется, а потому что "хорошая (лучшая?) ОС должна работать на всё, даже на утюге".
"Исходники же есть, возьми да и запили поддержку своего железа".
Вот я, допустим, и рад был бы "взять да и запилить". Но вышеупомянутая система сборки к этому никак не располагает - барахтаться в лапше из shell-скриптов и make - крайне сомнительное удовольствие. Как раз по этому BSD так медленно развивается, как ОСь. Засилие старпёртсва и скуфства.
То есть, может быть раньше FreeBSD и была целостной системой - то сейчас она практически превратилась в "отрицание самоё себя", потому что "тащит из линукса всё, что плохо лежит", в ущерб развитию собственных аналогичных подсистем и решений.
Как-то так.
P. S. Там дальше ещё продолжение есть. Кому интересно -
подписывайтесь на наш каналя могу запостить.Я не волшебник, я только учусь, но разве SLAAC не предоставляет только локально уникальную адресацию? (ULA vs GUA). То есть, для того, чтобы "являться полноценным участником глобальной полностью работающей сети" разве не потребуется маршрутизатор, соединяющий различные сегменты сети с локальной адресацией? И да, мне где-то встречалось утверждение, что "маршрутизатор в принципе может перенаправлять трафик между разными сегментами, используя только лишь link-lockal адреса" - но я не понял, как это так может быть. Вспомнил, вон там встречал:
Или это я сам себе придумал, что "маршрутизатор может" - ведь link-local адреса на то и канальные, что - действуют только в той же самой сети, в которой я сам? Иными словами - что произойдёт, если я отправлю ping по link-local адресу из соседней сети?
И ещё:
Но я как раз понял так, что SLAAC используется для автоматического получения уникального локального адреса (ULA) в этом сегменте. Или я не так понял?
Да, действительно, даже не знал об этом. Изменил настройки.
Столкнулся с подобной проблемой - проще вызвать
libnetd_client.so
, чем "пробросить из Go'шки дескриптор сокета в обёртку для mobile". Но не нравится, что надо "выдёргивать с мобилки эту so'шку" - хочется всё же иметь для приложения "нормальную сборку". Думается, что можно эту либку собрать из исходников, и уже с собранной - слинковаться (по идее, она должна быть "одна и та же" на всех устройствах). Не рассматривали такой вариант? Не силён, если честно, в разработке AOSP, куда там копать? Можно ли каким-то образом собрать одну только эту библиотеку, а не весь AOSP (ради одной либы "качать всё" всё же не хочется).По поводу "ничего не надо качать" и
export GOOS=android
- таки надо. Плюс gomobile в том, что он это делает за вас. Оно и понятно - Android разрабатывает Google, и Go разрабатывает - кто? Внезапно, тоже Google. Благо - просто для линковки с нативными либами Android достаточно некоторых tools и NDK - а это всё равно около четырёх ГБ. В целом, удобно, но всё же хочется больше контроля над сборкой. Весьма любопытно было бы узнать, как вы в итоге собираете приложение.Если вас не затруднит, отправьте пожалуйста ссылку на исходники мне в личку, если вы их уже опубликовали, но по какой-то причине не хотите давать её (ссылку) тут, на хабре.
Проблема останова - отнюдь не теоретический абсурд.
Исходя из предложенного алгоритма, на каждом шаге он запоминает полное состояние (конечной) памяти. Вопрос - куда он "запомнит" это состояние на первом же шаге исполнения, если память уже заполнена? В некую внешнюю память?
Далее. Запоминание на каждом шаге состояния памяти ведёт к экспоненциальному увеличению объёмов "запоминания" - ведь хранить надо все предыдущие состояния (чтобы проверить, "а не бывали ли мы уже в этом состоянии"?) Получается, нужен исполнитель, на каждом шаге увеличивающий собственную память в два раза. Но память, согласно предпосылкам, введённым самим же автором - конечна... Ой.
Каким образом "многофазная" логика от этого спасает?
Это я ещё не рассматриваю возможность модификации состояния памяти, как в принципе и поступает любой реально существующий исполнитель, как раз чтобы "сбежать из этой петли". При этом, модификация памяти может наступить по самым разным причинам - фотон с Солнца, например. Но самое главное - модификация памяти может случиться в результате выполнения самого алгоритма - и он "это понять не сможет", так как электроны физически взаимодействуют в одном и том же исполнителе (сигналы ходят по одним и тем же транзисторам), и с точки зрения самого исполнителя - никакой разницы нет, сравнивает ли он некие "запомненные" состояния памяти - или попросту попал в петлю, и сравнивает True с True.
Собственно, как раз по этой причине все реальные исполнители имеют прерывания, которые "вмешиваются в работу исполнителя снаружи, а не изнутри". Однажды запущенный, процессор будет работать до тех пор, пока его не обесточат, либо пока его не прервут с помощью прерывания. На мой взгляд - самая яркая иллюстрация реальности проблемы останова. Снова - каким образом тут поможет "многофазная" логика?
Ну и на последок - эта самая логика, "многофазная" - уже и так присутствует в языках программирования. Простейший пример - nullable Boolean, у которого "три состояния - true, false и null". Надо ли говорить, сколько проблем доставляет этот кейс "истина, лож и всё остальное"?
Как раз это - весьма наглядная иллюстрация того, что "многофазная логика" может и выглядит красиво в теории - но практика, как всегда, неумолима. В случае с "многофазной логикой", на практике это значило бы, что каждый дополнительный вариант, отличный от true и false, необходимо было бы всегда явно кодировать в программе. Что, собственно, и предлагает нам делать Result в языке Rust, например. Или
throws
при объявлении метода в Java. Надо ли говорить, как громко плачут от этого сами rust'овики? Шутка ли - в каждой функции надо явно обрабатывать каждый failure mode, который может возникнуть в результате вызова "нижележащего" кода. Пример: функция A вызывает функцию D1 и H1. D1 может "падать" способами FD1, FD2, FD3. Функция H1 - "падает" как FH42, FH73, FH111. Итого: теперь функция A "падает" как FA999, FA998, FA997, FD1, FD2, FD, FH42, FH43, FH111. Это скольки-фазная логика уже получается? Где-то тихо заплакал один растовик...Вывод из этого такой: оставьте формальную логику в покое. Не всё - логическая переменная. И не надо пытаться "замешивать ошибки (failure modes) в булев тип данных".
Зашёл почитать статью в надежде увидеть ссылки на обещанные написанные материалы - "я напишу о том, и об этом". Десять лет прошло, а ссылок на материалы так и нет - "я человек занятой".
Особенно умилили высказывания по типу "по крайней мере у меня тесты проходят" - замечательно. Есть вывод этих тестов? Хотя бы на них посмотреть, раз материалы так и не удосужились написать?
Так же забавно выглядят заявления "приходите к нам разрабатывать ФС", но "как именно разрабатывать - мы вам не скажем! Да и вообще - это сложно! Потрудитесь сперва доказать пару теорем!"
Прям доебался до каждого слова - красава, хорошим ментом будешь!
Надо же, как деградировала "аудитория" хабра! В английский комментаторы похоже не смогли ))
Сказочка только началась! ?
Перестаньте использовать библиотеки, не умеющие абстрагировать от вас детали БД. Да и в целом, на PHP писать перестаньте.
Ну и, на секундочку, SQLite - одна из самых высокопроизводительных БД.
После хаскла докатиться до раста - это, извините, деградация. Уж не знаю, как там автора вёл экзистенциальный поиск...
Ну да, ну да))
Когда вы последний раз видели "законченный" программный проект? После релиза (в терминологии этой книги - "завершения"?) программный проект только начинает настоящую жизнь. Или это уже "операционная деятельность"? Тогда почему в рамках этой операционной деятельности проект перекраивается вдоль и поперёк?
Так и не понял, они анонимизируют, накладывая на закрашенное лицо "исходные точки"? А нахуа, прошу прощения?
Да кто такой этот ваш "исходное распределение данных"?
Перевожу на русский язык.
"Рынку" не нужны специалисты, действительно разбирающиеся в своём деле. Ведь не возможно быть профессионалом, когда пытаешься угнаться за бесконечным паровозом хайпа. Профессионализм подразумевает накопление и углубление опыта, а как это сделать, если каждый год выходит новый фреймворк? Вот и мыкаются бедолаги-программисты, крутятся как белка в колесе. Не выучил очередную хайповую технологию? На мороз! Успешному менеджеру бонус же надо получать за очередное "внедрение". Отсюда повсеместное засилие "семируких пятих*ев" на всех уровнях, и как следствие - качество производимого софта. Но в том и соль - именно такие и нужны.
Отличная статья! Автор, а вы читали https://habr.com/ru/post/672012/?