Не решают ли программисты противоречащие задачи (архитектура кода)

    Допустим, у нас есть сайт с товарами. У нас есть метод Product::getProducts — возвращает массив товаров.

    Затем к нам пришел менеджер и сказал: хотим сделать акции на сайте (скидки, распродажи). В каждой акции будут прикреплены товары. Мы написали метод Action::getProductsByActionId(actionId)

    Затем к нам снова пришел менеджер и сказал что нужны еще статьи, к которым прикреплены товары. Добавим метод Article::getProductsByArticleId(arcticleId).

    Вы скажите — давайте сделаем 1 метод с параметрами. Ок, мы до этого дойдем.

    И тут внимание: к нам пришел менеджер и говорит — мы хотим иметь возможность отключать товары на сайте. Т.е. необходимо добавить флаг active для товаров, имеющий значение true/false. Товары с флагом false не должны отображаться на сайте.

    Итог: нам надо найти в коде все места, которые достают товары и везде добавить логику, чтобы возвращались только товары с флагом active=true. Т.е. надо поправить 3 метода:

    Product::getProducts,

    Action::getProductsByActionId(actionId),

    Article::getProductsByArticleId(arcticleId)

    То, что нам надо поправить код не в 1 месте, порождает ошибки — в каком-то месте забыли поправить.

    Что же, давайте сделаем так, чтобы у нас было только 1 место, откуда доставать товары. Тогда такой ошибки не будет.

    Опять та же ситуация: достаем товары для основного каталога сайта, акций и статей: пишем метод Product::getProducts(actionId = null, articleId = null). Если не задан ни один параметр, то достаются товары как в Product::getProducts раньше, если задан articleId, то достаются товары Action::getProductsByActionId(actionId), и т.д.

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

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

    И тут внимание: приходит менеджер и говорит: хотим сделать активные и неактивные товары, флаг active. Чтобы на сайте показывались только активные товары. Ок. У нас есть 1 метод — Product::getProducts и мы правим его и добавляем чтобы из него возвращались только товары с флагом active=true.

    Мы вносим изменения в единственный метод. И опять — нам надо посмотреть везде где этот метод используется. И если в 1 месте мы забыли посмотреть, то это приведет к ошибке — на складе пропадает часть товаров. Хотя там по ТЗ должны отображаться вообще все товары. Мы просто забыли, что наш универсальный метод Product::getProducts используется еще и в бек-системах, где флаг active не должен применяться к товарам. Получается при написании 1 метода тоже возникает ошибка.

    Вывод

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

    UPD:

    В комментариях указали, что если сделать 1 метод: Product::getProducts, и затем при изменении в нем назвать его например Product::getProductsV2, а Product::getProducts вообще запретить вызывать, то тогда тогда мы точно найдем все места, где этот метод вызывался, и исключим ошибку.

    Второй способ: создать специализированный класс, содержащий 1 private функцию Product::getProducts. И в том же классе создать кучу public методов, на каждый функционал свою функцию, т.е. для каталога - Product::getProductsForCatalog, для акций - Product::getProductsForAction, для статей: Product::getProductsForArticles, Product::getProductsForStore и т.д. Главное условие - чтобы вызов каждой функции был только из 1 места, и все функции находились в 1 классе. Тогда просмотрев лишь 1 класс (это сильно упрощает задачу), мы сразу сможем понять где используется наша функция.

    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 292

      +4
      Конечно, идеального кода не бывает. Всегда нужно менять старые подходы или архитектуру, переписывая кучу уже написанного кода.
      Однако отличие хорошей архитектуры и хорошего кода от плохой архитектуры и плохого кода — сколько сил вам на это нужно потратить.
      Условно, если у вас говнокод и архитектура построена на костылях, и вам нужно что-то поменять — для вас это будет непросто и займет очень много времени.
      Однако если у вас хорошая, гибкая архитектура и чистый код, то запилить какую нибудь фичу, которая требует изменений архитектуры, займет гораздо меньше времени.
        +16

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

          0
          Нет, автор хотел сказать, что в принципе невозможно написать хорошо расширяемый код.
            +1
            Я про это и говорю. Расширять под заранее неизвестные требования сложно. Угадать, какие будут требования — тоже. Это прекрасно известный факт, не какое-то открытие.
          –11
          Математически невозможно доказать (для произвольной программы) даже то, что она корректно завершит свое выполнение. Про то что будет получен корректный результат для всех входных данных и не говорю.
          Без полной смены парадигмы вычислительной техники и принципов программирования тут не обойтись, проблема именно в самой парадигме.
          Думаю программистам следует готовиться к потере всех накопленных знаний и умений за пределами программирования, старенькие на пенсию, молодые в торговлю (у большинства нет практически пригодных знаний и умений, да и с физической силой для работы на «стройке» тоже проблемы).

          Минусаторам — понимаю обидно, когда начинаешь понимать свою проблему (даже бессмысленность своих усилий в программировании), но ответить нечем )))))
            +2
            бессмысленность своих усилий в программировании

            Хм, "бессмысленность усилий в программировании", когда успешно долгие годы зарабатываешь этим деньги — это любопытно, да. Расскажете поподробнее, что же такого бессмысленного?

              –10
              когда успешно долгие годы зарабатываешь этим деньги

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

              Попробую пояснить свою позицию «на пальцах» — местное «население» плохо относится к философии.
              В настоящее время программирование похоже на вязание, каждая команда связывает некоторое количество данных в результат, при этом ничего кроме именно этих конкретных данных не учитывается. Человеческий мозг устроен так что не может одновременно анализировать (принимать во внимание взаимосвязи) больше чем 5-7 сущностей.
              В реальности, вычислительная машина должна обрабатывать на много порядков больше данных (объектов), и в геометрической степени больше их свойств и сочетаний.
              С практической точки зрения это приводит к невозможности написать код гарантирующий корректность исполнения. Даже если взять идеального программиста, то результатом его работы будет программа практически бесконечного размера (ее просто не получится сохранить на любом реальном накопителе).
              Квалифицированные программисты это понимают и потому даже не пытаются писать «идеальную программу», а просто закладывают некоторый объем финального тестирования (или вероятность сбоя).
              Кроме того вероятность краха возрастает с увеличением размера взаимодействующего кода, и приводит к тому что практически невозможно написать программу размером больше определенного. Надежность такой программы падает ниже «плинтуса», а трудо-затраты улетают в небеса и никакое тестирование не спасает ситуацию (из программистского фольклора известно, что исправление одной ошибки порождает две новых).
              В настоящее время программистов и их работу терпят как меньшее зло, но как только появится новая вычислительная парадигма их отправят на «свалку», как в свое время поступили с трудом ткачей, пахарей и тд.

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

              Если кратко то ситуация примерно такая.
                +4
                это никак не сказывается на практической ценности результата их работы.

                Ммм, то есть то, с помощью чего вы сейчас со мной общаетесь — это не практическая ценность? Ну ок, хорошо, если так.


                Ну или вот вам другой пример: раньше люди тратили на обработку складских документов два часа в день, а после того, как там поработал программист — стали тратить пять минут в день. Это не практическая ценность?


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

                Я так понимаю, этот вывод вы делаете на основании собственного опыта?


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

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


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

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


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

                … а зачем мне писать программу "размером больше определенного"?


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

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

                  –9
                  Извините, меня здесь не «любят» и потому я не могу сильно часто писать.
                  Я так понимаю, этот вывод вы делаете на основании собственного опыта?

                  Это математически доказанные выводы, к сожалению быстро ссылку на доказательство предоставить не могу.
                  … а зачем мне писать программу «размером больше определенного»?

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

                  Уже лучше, но тогда ваша задача никогда не будет исполнена — условия для исполнения не подходящие, а если сильно ослабить «условия» вернемся к исходному состоянию отсутствия надежности.
                  Нуууу… когда появится, тогда и поговорим.

                  Думаю вы на пенсию не успеете — придется в центре занятости переучиваться.
                    +3
                    Это математически доказанные выводы

                    Извините, я вам не верю. Я считаю подобное "математическое доказательство" невозможным. Вы читали "The Leprechauns of Software Engineering"?


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

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


                    Для решения поставленной задачи.

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


                    тогда ваша задача никогда не будет исполнена — условия для исполнения не подходящие

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


                    если сильно ослабить «условия» вернемся к исходному состоянию отсутствия надежности

                    Что такое "отсутствие надежности"? Надежность — это не булева величина, это спектр. Можно написать такую программу, которая будет достаточно надежна для ее использования в заданных условиях. Скажем, человек допускает одну ошибку на 1000 строк гроссбуха. Программа — 1 на миллион. Это не 100% "надежность", но это в тысячу раз надежнее человека. Человек работает 8 часов в сутки, 5 дней в неделю. Программа работает, скажем, 23 часа в сутки и 6 дней в неделю (это, заметим, на несколько порядков ниже, чем требования, предъявляемые к современному LoB) — это все равно больше чем в три раза дольше, чем человек.


                    Думаю вы на пенсию не успеете — придется в центре занятости переучиваться.

                    А я думаю, что это ваше ожидание не основано ни на чем, кроме вашего личного мнения.

                      –6
                      ermak.cs.nstu.ru/cprog/html/038.htm
                      Естественным источником алгоритмически неразрешимых проблем является самоприменимость алгоритмов, т.е. применение программ к анализу свойств других программ. К программированию имеют отношение самые неутешительные выводы теории алгоритмов. Начинается все с проблемы остановки машины Тьюринга: невозможно создать МТ, которая, получив на вход программу любой МТ, решает, останавливается она или «зацикливается». В двух словах, доказательство базируется на том, что такая МТ с некоторыми изменениями предъявляется на вход самой себе, что приводит к противоречию. В переводе на «естественный язык» это означает, что нельзя написать программу, которая по тексту другой программы (не исполняя ее) определяет такое ее свойство. Научно выражаясь, это алгоритмически неразрешимо.

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

                      Думаю диспут закончен?
                        +4
                        Думаю диспут закончен?

                        … похоже, книжку вы не читали. Жаль.


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


                        Какой уж тут "диспут"...

                          –6
                          Хорошо — тогда предлагаю возродить старинный обычай.
                          При первом прохождении поезда по мосту — под пролетом стоял инженер спроектировавший мост.
                          В вашем случае — гранату на шею, которая взорвется при некорректной работе вашей программы?
                            +2

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

                              –2
                              Да согласен не современно — тогда вот так: Вы платите страховой компании взносы на покрытие издержек от ошибок.

                              А то повадились писать: Разработчик не несет ответственности за ущерб понесенный из-за приобретенной программы.
                              Как спросили, так в «кусты» — Но данная проблема очень актуальна и решить ее как то нужно, представьте на автомобилях что то подобное будут писать?
                                +1
                                Вы платите страховой компании взносы на покрытие издержек от ошибок.

                                … в объеме, не превышающем расходы пользователя на программу. Идет?


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


                                Как спросили, так в «кусты»

                                Это в смысле — я у вас спросил про доказательства вашим утверждениям, а вы ушли в кусты?


                                представьте на автомобилях что то подобное будут писать?

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


                                Так чем программа, которая не более чем инструмент, отличается от других инструментов?

                                  +1
                                  представьте на автомобилях что то подобное будут писать?

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

                                    –6
                                    Общение перешло в плоскость софистики — это не конструктивно.
                                    Понимаю что осознания проблемы нет, убеждать в чем то я Вас я действительно не нанимался.
                                    От себя скажу, что если мне придется сделать какой то выбор — нужды и мнение людей не желающих думать учитывать не буду.
                                    В храме программирования нужно верить, думать категорически нельзя.
                                      +3
                                      Общение перешло в плоскость софистики — это не конструктивно.

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

                                        –4
                                        Хорошо докажите, что есть возможность математически проверить, что произвольная программа корректна (всегда дает правильный результат и не виснет хотя бы по не зависящим от аппаратуры причинам)?
                                          +1
                                          Хорошо докажите, что есть возможность математически проверить, что произвольная программа корректна

                                          Я этого никогда не утверждал. Почему я должен это доказывать?

                                            –1
                                            Вы оспорили мое мнение про невозможность анализа свойств программы, значит остается два варианта у Вас нет своего мнения (это опровергается вашими постами) или вы придерживаетесь другой точки зрения (согласно формальной логике вы считаете что это сделать можно).
                                            Тогда конкретизируйте свою точку зрения и докажите ее ссылкой на научные материалы.
                                            Отправлять ссылки на «методики» смысла нет, я могу вам тоже отправить кучу методик вызывания дождя бегающими по полю девственницами. Важны научно доказанные факты, озвученная проблема есть и ее доказали математики (пусть даже в самом простом варианте, как невозможность доказать «завершаемость» программы)
                                              +1
                                              Вы оспорили мое мнение про невозможность анализа свойств программы

                                              Где?


                                              Тогда конкретизируйте свою точку зрения.

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

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

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

                                                  Я вполне четко описал с чем конкретно в ваших комментариях я не согласен. В частности, я не согласен с тем, что приведенная цитата как-то говорит о бесполезности работы программистов.


                                                  проблема невозможности написать программу без потенциальных ошибок или не решаема или не существенна.

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

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

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

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

                                                      Что значит "принято"? Кем принято? Где принято?


                                                      Почему вы вообще считаете, что программисты не знают о наличии этой проблемы?


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

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


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

                                                      Почему это вдруг "становится невозможным"? На каких фактах и исследованиях основано это ваше утверждение?


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

                                                        –2
                                                        Думаю вам стоит подумать над проблемой серьезно, а то чем сейчас занимаются программисты (да и вся отрасль) это бессмысленный бег в колесе. Причем колесо ускоряется, если рань ошибки фиксировались новой версией ПО, то сейчас приходится постоянно качать обновления.
                                                          +1
                                                          то чем сейчас занимаются программисты (да и вся отрасль) это бессмысленный бег в колесе.

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


                                                          По моим личным наблюдениям, конечные пользователи ПО получают, простите за тавтологию, пользу от использования. Кто-то гуляет по интернету, кто-то слушает музыку в удобных условиях, кто-то ведет бухгалтерию. Без ПО это было либо невозможно вовсе, либо требовало намного больше сил. Вы считаете производство этого ПО бессмысленным бегом в колесе? Я — нет.

                                                +1
                                                Вы оспорили мое мнение про невозможность анализа свойств программы, значит остается два варианта у Вас нет своего мнения (это опровергается вашими постами) или вы придерживаетесь другой точки зрения (согласно формальной логике вы считаете что это сделать можно).

                                                Я не ваш исходный оппонент, но почитайте что-нибудь про средства формального доказательства типа Coq/Agda/Idris.

                                                  –2
                                                  Смотрите на проблему шире.
                                                  Еще один локальный пример
                                                  В процессе вычислений никак не контролируется корректность математических операций в разделе потери точности.
                                                  Вычисление среднего, вроде бы все просто. Просуммировал и поделил, но тут появляется проблема — корректно это сделать можно только для целых чисел.
                                                  Если к большому дробному числу прибавить малое, то точность малого ухудшится (а может и вообще исчезнуть). И такого рода проблем очень много.
                                                  Такие проблемы как то проверяются в средствах формального доказательства?
                                                    0
                                                    В процессе вычислений никак не контролируется корректность математических операций в разделе потери точности.

                                                    В смысле — не контролируется?


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

                                                    Или не ухудшится. Зависит от реализации дробных чисел, очевидно.

                                                      0
                                                      Выделите в выдаче компилятора предупреждение о потери точности — может я и правда отстал от жизни.
                                                      Какими служебными словами задается точность результата (не число бит в переменной а именно результата)
                                                        0
                                                        Выделите в выдаче компилятора предупреждение о потери точности — может я и правда отстал от жизни.

                                                        Гм, а в какой момент вы перешли от "в процессе вычислений" к "выдача компилятора"?


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

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

                                                          0
                                                          Сейчас это прочно забыто, но примерно 100 лет назад при обучении инженеров уделялось достаточно большое внимание правилам выполнения математических вычислений (относительная и абсолютная точность, число значащих разрядов и тд) — к сожалению резко не ищется (выдача забивается вопросами чисел с плавающей запятой и тд)
                                                          Если интересна проблема, то сами поищите.
                                                            –1
                                                            правилам выполнения математических вычислений

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


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

                                                              0
                                                              те у вас язык программирования на лету изменяет размер переменной в битах?
                                                              И как называется — с удовольствием прочитаю.
                                                                +1
                                                                те у вас язык программирования на лету изменяет размер переменной в битах?

                                                                Нет.


                                                                И как называется — с удовольствием прочитаю.

                                                                Не откажу себе в удовольствии, извините: "если интересна проблема, то сами поищите".

                                                      +1

                                                      Как-то вы быстро перешли от фундаментальных вещей к конкретным IEEE754.


                                                      Да, эти вещи проверяются, и IEEE754 формализуемо. Нет, я не знаю, как конкретно — плавающая точка немного вне моих интересов.

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

                                                Создать машину которая решит эту проблему для произвольной программы — невозможно

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

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

                                                    0
                                                    Выполнить эту задачу?
                                                    А если проблема возникает только в при определенных данных.
                                                    Но это не важно, я хочу обратить внимание на то что сложность (объем взаимодействующих объектов) типичной программы столь велико, что программист не может гарантировать их корректное взаимодействие.
                                                      0
                                                      А если проблема возникает только в при определенных данных.

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


                                                      программист не может гарантировать их корректное взаимодействие.

                                                      Определите "гарантировать" и "корректное".

                                  0
                                  Вы читали «The Leprechauns of Software Engineering»?


                                  Ворвусь в ваш диалог.

                                  Советуете почитать?
                                    0

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

                                      –2
                                      Для использования в корпоративной «религии» и воспитания кадров вполне подойдет, что бы все шагали «в ногу».
                                      С точки зрения решения проблемы никак, какие бы методики управления вы не применяли это не поможет например обойти законы физики и сконструировать «вечный двигатель».
                                        +2
                                        А вы читали?
                                        Я вроде не собирался обходить законы физики, или вам вообще не принципиально с кем спорить и кого убеждать в неправоте?
                                      –1
                                      Что такое "отсутствие надежности"? Надежность — это не булева величина, это спектр. Можно написать такую программу, которая будет достаточно надежна для ее использования в заданных условиях. Скажем, человек допускает одну ошибку на 1000 строк гроссбуха. Программа — 1 на миллион. Это не 100% "надежность", но это в тысячу раз надежнее человека. Человек работает 8 часов в сутки, 5 дней в неделю. Программа работает, скажем, 23 часа в сутки и 6 дней в неделю (это, заметим, на несколько порядков ниже, чем требования, предъявляемые к современному LoB) — это все равно больше чем в три раза дольше, чем человек.

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

                                        0
                                        Проблема скорее в том, что мы стали доверит машинам абсолютно.

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


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

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

                                          0
                                          А что, если от незаметной ошибки человека зависит жизнь другого человека?

                                          для этого есть ответственность. В случае людей — все понятно. По сути кто накосячил — тот и виноват. Когда в это вмешивается машина — все становится сложнее. Кто виноват? Оператор, который пользуется ПО (и проглядел ошибку в выходных данных), или разработчик ПО (который допустил погрешности в алгоритме)? А тут все становится еще интереснее, учитывая, что весь софт предоставляется AS IS

                                            +1
                                            В случае людей — все понятно.

                                            Ах если бы.


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

                                            Замените ПО на "инструмент". Любой инструмент. Газовую плиту. Кто виноват в пожаре — производитель плиты, у которого не сработал клапан безопасности при задувании пламени, или повар, который не заметил, что пламя задуло?

                                              0

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

                                                +1
                                                Проблема в том, что в случае плиты неисправность очевидна. Ну, или почти. Я уж не говорю о том, что существует допуск к работе с ней (сданные нормативы по противопожарке и все прочее).

                                                Прекрасно. Так кто виноват-то?


                                                А потом перейдем к немножко более сложному примеру: арифмометру. Все то же самое, только арифмометр иногда слегка заедает и ошибается на один знак. Кто виноват — производитель или пользователь?


                                                В случае ПК — все считается само собой разумеющимся.

                                                Считается. Может быть, виноват тот, кто так считает? Как раз?

                                      +1
                                      Извините, меня здесь не «любят»


                                      Вот ведь удивительно, да?
                                        –3
                                        Согласен — а кто будет любить человека рушащего воздушные замки (мир фантазий в котором так хорошо жить) и напоминающего что все мы живем в реальном мире. Но периодически это нужно делать, за жизнь в выдуманном мире кто то все равно платит и в конце концов это приводит к «крушению» самоощущения самого человека.
                                        Думаю многое из темы про «профессиональное выгорание эльфов» появляется в результате конфликта с реальным миром.
                                        К сожалению люди не любят думать — это энерго-затратно, а значит вредно.

                                        Единственный способ заставить человека думать, это причинить ему «боль» пропорциональную степени его заблуждения (звучит не очень, но реально это единственный метод).
                                          +3
                                          Простите, вы ничего не рушите и не напоминаете — вы просто вываливаете на собеседников массу голословных «подрывающих основы» утверждений и призываете остальных попросту верить в них, потому что… ну вот даже не знаю, почему. Соответственно, никакой «боли» никому и не причиняете, потому что кто ж в здравом уме будет принимать всерьёз идеи космического масштаба без какого-либо обоснования?

                                          А если по существу, у меня складывается ощущение, что вы ознакомились с массой интересных (и ни для кого не новых) фактов вроде неразрешимости проблемы останова или затруднительности разработки 100% корректных программ, а дальше уже делаете на их основе довольно парадоксальные выводы. Примите за данность, что другие тоже в курсе существования неразрешимости, NP-полноты, понимают, что такое формальная верификация и почему она не так уж часто используется и т.п. И всё равно занимаются тем, чем они занимаются, и не считают, что их работа под угрозой.
                                            0
                                            А вы сможете понять это самое обоснование?
                                            Вот как пример сложности «детский сад», скажите мне к каким последствиям приведет внедрение описываемой технологии.
                                            habr.com/ru/post/512652

                                            Если можете, то будет описание вычислительной парадигмы, свободной от описываемой проблемы. Правда, да в ней программиста как такового нет.
                                              0
                                              А вы сможете понять это самое обоснование?

                                              Ну вы приведите, а там посмотрим. Никакого другого способа это узнать не существует.

                                                –1
                                                Привести то я приведу, так понять то вы все равно не сможете.
                                                Детский пример прочитали?
                                                Что можете сказать?
                                                После нового года появится такое же простое описание процессора, вы сможете взлететь со своей локальной кочки и осмотреть хотя бы ближайшие окрестности болота? Про принять участие в «разворачивании» базовой идей в глобальную систему я и не говорю.
                                                  0
                                                  Привести то я приведу, так понять то вы все равно не сможете.

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


                                                  Что можете сказать?

                                                  Что он не имеет отношения к "вычислительной парадигме, свободной от описываемой проблемы".

                                                    –2
                                                    После следующей статьи продолжим разговор.
                                                      +3

                                                      Вот и вся ваша доказательная база. Показательно, но печально.

                                                0
                                                А вы сможете понять это самое обоснование?

                                                Откуда я знаю? Наверно, это зависит от качества изложения обоснования. Так что это к вам вопрос, а не ко мне.

                                                к каким последствиям приведет внедрение описываемой технологии.

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

                                                  А теперь вспомните все что вы знаете по теме «DataFlow процессор» и посмотрите на прочитанное еще раз. Учтите что производительность предлагаемой сети может на порядок превосходить имеющиеся сейчас у процессоров (вместе с интерфейсом к модулям динамической памяти)
                                                  Такой подход радикально сократит число ног у процессора, их может стать вообще две (+ Питание и — Питание), а с торца выходят оптические волокна сети. Сам процессор зажат между теплоотводами и одновременно проводниками питания.
                                                  Попробуйте «помечтать» при таких вводных.
                                                    +1
                                                    Это всё очень интересно, но давайте вернёмся к теме текущего разговора. Я не против обсудить различные сетевые технологии, но сегодня вечером у меня было настроение ответить в данном треде, так что не особенно хотел бы с него переезжать.
                                                      0
                                                      Предыдущий разговор…
                                                      Вы думаете, что «баг» к которому привыкли это «фича».
                                                      Я понимаю что вы мыслите внутри текущей вычислительной парадигмы, я пытаюсь указать на то что она не самая лучшая и очень скоро ей на смену придет новая, гораздо более эффективная. Попытки искать «золотую пилюлю» обречены на провал из-за ошибок именно в самой парадигме.
                                                        +4
                                                        Ну ведь в эту игру можно играть и вдвоём: я, конечно, понимаю, что вы мыслите в рамках своего выдуманного мира, в котором волшебная эффективная парадигма решит все проблемы, и в этом случае разговоры о наших бренных делах попросту лишены смысла; при коммунизме-то и денег не будет, зачем же нам обсуждать какие-то тонкости монетарной политики?

                                                        Такого рода разговор в принципе контрпродуктивен. Если вы по какой-то причине общаетесь со «старопарадигматиком», бесполезно обсуждать новый технокоммунизм. Хотите результативного общения — постарайтесь найти некое множество идей, которое будет пересекаться одновременно с нынешним миром и вашим новым миром тоже, а потом уже прыгайте целиком.
                                                          –3
                                                          тогда ждите все описания последовательно и периодически перечитывайте все как единый документ, ну или забудьте.
                                                          Потом, когда АХО купит вам комп с новой парадигмой, предприятие Вас отправит переучиваться, там все узнаете (если раньше не сократят по ненужности — зависит от специфики работы).
                                                          +1
                                                          очень скоро ей на смену придет новая, гораздо более эффективная

                                                          Вы все обещаете...

                                                +1
                                                Я не понимаю о каких крушениях речь. Программист пишет код, который решает проблемы бизнеса или иногда даже помогает людям, получает за это хорошие и иногда даже отличные деньги. И вся эта парадигма в обозримом будущем не то, что не исчезнет — она будет только укрепляться, тк даже банально локдаун очень хорошо показал НАСКОЛЬКО для бизнеса важны цифровые сервисы. Я правда не понимаю о чем вы говорите. Вы вообще к IT какое-то отношение имеете, или так, потусить на огонек зашли?
                                                  0
                                                  А ну ка мил человек поведай из чьих будешь…
                                                  НГТУ АВТФ вычислительные комплексы системы сети.
                                                  Специализация fpga (Verilog).
                                                  Занимаюсь разработкой (в инициативном порядке) альтернативой архитектуры фон Неймана.
                                                  Считаю (полученного образования для предварительной оценку хватает) что получены обнадеживающие результаты (инет похожими идеями не отзывается) и скоро придется их внедрять в практику.
                                                  С программистами нужно общаться. по той причине что на первом этапе именно им придется внедрять, разворачивать и переносить все накопленные знания в новую систему. Потом правда профессия программист исчезнет, но это мелочи.
                                                  Про важность и необходимость не спорю.
                                                  Про все остальное покажет время.
                                                    0
                                                    Потом правда профессия программист исчезнет, но это мелочи.

                                                    А что будет выполняться на этой вашей "альтернативной архитектуре"?

                                                      0
                                                      Что сейчас представляет программирование (в большинстве случаев): составление списка данных и последовательности операций над этими данными.
                                                      Иными словами, программист говорит вычислительной системе прими данные и выполни определенную последовательность команд и будет получен результат.
                                                      Только есть проблема — то что получится (если вообще получится) будет ли корректным результатом?
                                                      Если программа выполняется в контролируемой среде (все параметры известны и учтены программистом на этапе написания программы), то проблем нет все нормально (ошибки именно программиста не учитываем, считаем что программист идеальный). А вот если параметров много или среда вообще другая (отличная от той для которой писал программист), то полученный результат для текущих условий очень может быть и не корректным.
                                                      Как создавать ПО для таких систем. Дальше будет тяжелый для понимания текст.
                                                      Мое мнение делать это нужно таким образом описывать программный объект не как последовательность действий, а как последовательность свойств получаемых данных для входных данных (тоже обладающих некоторыми свойствами).
                                                      В процессе программирования описывать только те свойства, которые важны для конкретной программы.
                                                      Пример, какая разница с точки зрения программирования написать выполнить суммирование двух переменных или получить новые данные обладающие свойством суммы двух переменных.
                                                      Для программиста особой разницы нет, но для вычислительной системы разница огромная. Если в первом случае это просто действие никак не связываемое с другими действиями (кроме результата), то во втором это свойство действующее в пределах всего объекта.
                                                      Тоже самое можно сделать и для групп объектов, например объявить что результат всех математических операций не должен иметь например точность хуже 1%.
                                                      Если задать все важные для решения задачи условия (свойства), то таким образом мы определяем не просто конкретный исполняемый файл для конкретной машины, а вообще все возможное множество программ для всех теоретически возможных машин и окружающих условий.
                                                      Задача компилятора добавить значение текущих условий (это неизвестно в момент написания программы) и сгенерировать программу соответствующую описанию. Если результат исполнения не соответствует заданным условиям, то необходимо обновить текущие условия и повторить компиляцию.

                                                      Описывать всю теорию на «блокнотных листочках» не буду — например достаточно полное описание процессора и потенциальных веток развития занимает около 120 страниц — сейчас пытаюсь уложить все прозрачный и краткий текст в пределах 5-10 старниц с картинками (без комиксов понимания нет)
                                                        0

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

                                                          0
                                                          а если сделать так что бы это мог делать каждый
                                                          а если исходной точкой будут общественные базы описаний
                                                          а если они будут постоянно изменяться, мне что то не понравилось, я на естественном языке озвучит изменение.
                                                            +2
                                                            Ну вы озвучиваете стандартные фантазии совсем лохматых годов — «каждый» делать этого в принципе не может, или напомнить вам анекдот про «купи батон хлеба, если будут яйца — возьми десяток»?
                                                              0
                                                              а если сделать так что бы это мог делать каждый

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


                                                              а если исходной точкой будут общественные базы описаний

                                                              То кто-то должен будет их поддерживать.


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

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

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

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


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

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

                                                                    0
                                                                    На фабрике девушки с веретеном сидят и пахарь прямо в лаптях за лошадкой идет )))
                                                                    По своему смыслу это операторы ткацкой машины и водитель трактора (как там правильно) и вместо половины страны этим занять — меньше процента от населения и то в сезонно.

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

                                                                      Так и программисты больше перфокарты не перфорируют, тумблерами не щёлкают и в машкодах не пишут.

                                                                        –1
                                                                        Ошибаетесь — они как писали последовательности команд, так и пишут. А уж как это делать дырочками на бумаге, тумблерами, кнопками на клавиатуре или пиктограмками с мышью не важно.
                                                                          0
                                                                          Кому не важно? Если бы было так, щёлкали бы и дальше тумблерами.
                                                                            0
                                                                            Кстати интересный момент — могу ошибаться, но объем написанного (собственноручно) и отлаженного в течении одного дня кода с тех времен не увеличивается. Вроде писали про 5 строчек кода в день?
                                                                            Не путать с размером программы — если туда сложить все существующие библиотеки и ресурсы и тд — объем может быть любым.
                                                                            Неважно потому, что принципиально ничего не изменилось, ну разве что с Ада Фортрана и Паскаля перешли на СИ J и еще какую то хрень (при этом в основном меняются командные слова и стили)
                                                                              0
                                                                              Не могу сказать, сколько они писали, но в любом случае 5 строк на Python и 5 строк на ассемблере — это разные вещи. Однако из личного опыта — «5 строк на ассемблере в день» — это абсолютно нереальная цифра, потому что 5 строк у вас банальное перекидывание аргументов из памяти в регистр, выполнение простой операции, и закидывание обратно займёт. (Это по сути атомарный кусок кода, который вряд ли содержит ошибки).

                                                                              Неважно потому, что принципиально ничего не изменилось,

                                                                              У нас разные представления о принципиальном. Вы тут выше пишете, что девушка с веретеном и девушка с ткацким станком — это «принципиально разные вещи», но ведь там тоже никакой разницы — что было плетение ниток, что осталось. Ну и тракторист тоже ничего нового не добавил по сравнению с лошадью. Так что давайте определяться, где граница принципиального.
                                                                                0
                                                                                Да наверное про 5 строк это про языки высокого уровня
                                                                                +1
                                                                                Кстати интересный момент — могу ошибаться, но объем написанного (собственноручно) и отлаженного в течении одного дня кода с тех времен не увеличивается. Вроде писали про 5 строчек кода в день?

                                                                                Зависит. 500-1000 строк в день на плюсах бывало нередко. 50-100 строк на хаскеле — норма. От нуля до десяти строк на агде или идрисе — тоже в пределах нормы.

                                                                                  0
                                                                                  Вроде писали про 5 строчек кода в день?

                                                                                  Писать-то можно что угодно, только (а) как теперь это написанное проверить и (б) какие из этого выводы?


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


                                                                                  (у меня, в те дни, когда я код пишу, явно больше, чем пять строчек)

                                                                                +1
                                                                                Так вы предлагаете заменить написание последовательности команд написанием последовательности свойств. Суть от этого не меняется. Я очень сомневаюсь, что каждый сможет легко описать таким образом программу, которая его сразу полностью удовлетворит. Ну и кто-то ведь должен писать и поддерживать этот самый универсальный «компилятор»?
                                                                                Вообще, по-моему, это похоже на генетическое программирование.
                                                                                  0
                                                                                  Разница очень большая
                                                                                  Команда это здесь и сейчас, это бесконечно малая точка, не пересекается с другими командами (кроме малой части свойств результата исполнения, большинство из которых программист не может контролировать).

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

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

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

                                                                                    И в этот момент для ее выполнения необходимо неограниченное время.


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

                                                                                    Нет, не говорят. Вы неправильно понимаете теорему Райса.


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

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

                                                                                      +2
                                                                                      Выглядит как-то утопично. Хотелось узнать подробности реализации такого чудо компилятора. А то очень много вопросов возникает. Я так понимаю, по сути, он будет сам генерировать эти команды. Но как удостовериться, что он будет делать это правильно для любых возможных задачь во всех возможных случаях при любых возможных условиях?
                                                                                        0
                                                                                        Звучит примерно как:
                                                                                        Подскажи по быстрому, в двух словах, о чем написано
                                                                                        в Войне и Мире.

                                                                                        Следующая статья будет про процессор (сейчас написал и опубликовал статью про коммуникационную основу вычислительной системы habr.com/ru/post/512652 )
                                                                                        Думаю символьная синхронная коммутация она является идеальной для реализации процессора типа DataFlow, да и для общего применения на голову выше всего существующего.
                                                                                        Только после нее будет будет статья про «алгоритм решения произвольной задачи». Давайте до того времени отложим конкретику, кратко я могу описать только «идеи». Если есть вопросы по конкретике, то пока только по сетевой основе вычислительной системы.
                                                                                        Процессор вообще не обсуждается — статья ожидается сразу после нового года.
                                                                                          0
                                                                                          Ну тогда подожду статью. Сеть это лишь способ передачи данных, не так интересно. Особенно до реализации хотя бы на уровне прототипа.
                                                                                            0
                                                                                            Про не интересность сети это сложный вопрос.
                                                                                            Например она является главной проблемой на пути проектирования DataFlow систем, скорость передачи и коммутации сводит на нет все плюсы данного подхода к вычислениям (понятно кроме описываемой в статье).

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

                                                                                              Насколько я понял, ваша цель — декларативное программирование (говорим что хотим, а не как делать). А средство — DataFlow. И как средство соответствует цели? Это же совсем про другое…

                                                                                                0
                                                                                                DataFlow это идеальное средство когда нет единственной нити вычислений. Для моего случая можно сказать, что запускается параллельная проверка или обеспечение соответствия большого числа свойств одновременно.
                                                                                                Программа состоящая из набора свойств (утверждений законов) не содержит явной последовательности действий и может быть исполнена параллельно.
                                                                                                В пределе, такой подход используется в базовой идеи DataFlow и не оптимально для практического применения, может выглядеть как проверка соответствия свойств на каждое изменение данных.
                                                                                                  +1
                                                                                                  Видимо, вы на практике не встречались с проблемой экспоненциального взрыва.

                                                                                                  Я как-то в школе узнал об алгоритме перебора с возвратом. И подумал: ну, теперь-то любые олимпиадные задачки можно будет щёлкать как орехи, алгоритм-то универсальный, решает всё.
                                                                                                    0
                                                                                                    Я и написал, что «в пределе».
                                                                                                    В реальности необходимо наращивать объем обрабатываемых данных пока не будет достигнут затребованный результат.
                                                                                                      0

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

                                                                                                    0
                                                                                                    Программа состоящая из набора свойств (утверждений законов) не содержит явной последовательности действий и может быть исполнена параллельно.

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


                                                                                                    И да, в этот момент оно ничем радикально не отличается ни от декларативного, ни от (чистого) функционального программирования.

                                                                                              0
                                                                                              Давайте до того времени отложим конкретику, кратко я могу описать только «идеи».

                                                                                              Занятно, как это не мешает вам уверенно говорить, что ваши "идеи" будут работать.

                                                                                    0
                                                                                    По своему смыслу это операторы ткацкой машины и водитель трактора (как там правильно) и вместо половины страны этим занять — меньше процента от населения и то в сезонно.

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

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

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

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

                                                                          Ну и кроме того, имейте в виду, что
                                                                          Только есть проблема — то что получится (если вообще получится) будет ли корректным результатом?

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

                                                                          В современном мире есть задачи, которые как-то решаются и которые не решаются вообще. Под «не решаются» я подразумеваю что-то достаточно глобальное типа невозможности на сегодняшний день создать аккумулятор для ноутбука, который на одной зарядке проработает месяц. Если же задача решается, то надо сначала удостовериться, что улучшение процесса вообще кого-либо интересует, то есть снижение издержек или повышение точности решения востребовано и достижимо. Если же мне как заказчику в принципе годится решение, которое работает в 99% случаев как надо и получается в результате недели работы специалиста за мелкий в масштабах фирмы прайс — то по определению улучшение процесса мне ничего не даёт.
                                                                            0
                                                                            Месяц на одной зарядке, проще простого — емкость аккумулятора должна соответствовать возможности поддерживать канал связи достаточный для нормального функционирования RAdmin.
                                                                            Сами вычисления производить на стационарной машине.
                                                                            Какая разница где считать, если не сказать об этом потребителю, то он даже узнать об этом не сможет.
                                                                            Что то похожее сейчас появилось для игр на слабых машинах.

                                                                            Но только фиг вам — потребитель должен покупать дорогие ноутбуки а не дешевые терминалки и арендовать время на серверах.
                                                                              +1
                                                                              Ну это любимый аргумент «тебе это не надо». Мне надо, а если кому хочется сидеть на тонком клиенте — его дело. Лично я хочу хороший аккумулятор, которого бы хватило для полностью автономной работы на месяц при любых нагрузках.

                                                                              В любом случае, кстати, что-то с расчётами у вас не так: одна только смена экрана с Full HD на 4K способна вдвое уполовинить батарею; да и просто работа с ноутом в режиме печати текста уводит заряд в ноль за несколько часов.
                                                                                0
                                                                                В любом случае, кстати, что-то с расчётами у вас не так

                                                                                Что-то как-то да: беспроводной канал + хотя бы FullHD-дисплей, да на месяц — не верится.

                                                                                  0
                                                                                  Ну да если считать что будете пользоваться непрерывно в течении 8 часов в день 30 дней устройством потребляющим 25 Вт (18Вт потребление обычного монитора и 7 Вт связь + мышь + клава). То потребуется аккумулятор 1700 А\Ч
                                                                                  Да 22 кг — да многовато.
                                                                                  Но на неделю и с учетом энергосберегающего режима Вполне можно вписаться в 2-3 кг- вес ноутбука.
                                                                                  Если с покрытием сетью проблемы то да ноут актуален.
                                                                                    +2
                                                                                    Месяц на одной зарядке, проще простого
                                                                                    [...]
                                                                                    Но на неделю и с учетом энергосберегающего режима Вполне можно вписаться

                                                                                    И вот так каждый раз.

                                                                                      0
                                                                                      Сделать специализированную микросхему (по энергосберегающей технологии), оптимизировать экран для работы в режимах в переменными частотами развертки (это фантазии делетанта) и будет вам месяц при весе устройства 5 кг.
                                                                                      А если еще солнечными батарейками обклеить ))).
                                                                                        0
                                                                                        Да, я читал как-то жалобу одного юзера на электросамокат. Дескать, разряжается гораздо быстрее, чем заявлено производителем. А на запросы производитель легко ответил: ну так чего вы хотите. Катаетесь по городу с остановками (тормоз отъедает батарею), температура у вас ниже 20 градусов, да ещё и весите вы больше 75 кг — чего ж удивительного? Вот сделайте всё как в лаборатории — и будет как заявлено.

                                                                                        Можно как угодно играть в фантазии, но понятно, что когда я сказал, что хочу иметь ноутбук с батареей на месяц, речь шла не о том, что будет ЦП на 100МГц с пассивным охлаждением и ч/б монитор 640x480 c солнечными батареями и аккумулятором в половину рюкзака.

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

                                                                                          Кстати нашел решение как раз в рамках вашего запроса
                                                                                          ozlib.com/814093/himiya/pryamoy_metanolnyy_toplivnyy_element_pmtz
                                                                                          Заливаете раз в месяц два килограмма метанола и пользуйтесь свои ноутом (именно ноутом) целый месяц.
                                                                                          Да еще и можно систему охлаждения улучшить — не люблю гудяций вентилятор.
                                                                                            0
                                                                                            Экскьюзе муа, это вы мне говорили, что «аккумулятор на месяц — проще простого». Или там дальше стояла скрытая звёздочка, а снизу сноска (*) с помощью заливки 2 кг метанола?
                                                                                              0
                                                                                              Не будете капризничать и будет все просто, а так любой каприз за ваши деньги )))
                                                                                          +1
                                                                                          это фантазии делетанта)

                                                                                          Nuff said.

                                                                                            0
                                                                                            А что сделать предположение и сказать что оно исходит от дилетанта в области проектирования ЖК матриц — зазорно?
                                                                                            Кстати поискал про энергосберегающие мониторы и сразу нашел про 7Вт
                                                                                              +2
                                                                                              А что сделать предположение и сказать что оно исходит от дилетанта в области проектирования ЖК матриц — зазорно?

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

                                                                                                0
                                                                                                Про матрицы я этого не говорил.
                                                                                                Про технические решения: я не супер спец, но вы вот зарабатываете написанием программ, я зарабатываю разработкой электроники и около-электронных моментов.
                                                                                                Тот кто решит сделать такой девайс придет к таком как я.
                                                                                                По поводу батарейки на 30 дней — посмотрел на эту проблему со стороны безопасности. Хранить 20 МДж энергии в бытовом устройстве весьма опасно и потому нужно идти по пути сокращения потребления или что то типа топливного элемента.
                                                                                                Похожие проблемы решают в геофизике (мой основной источник доходов) — там необходимо на две недели отправить в скважину прибор с похожим потреблением (там только еще и температура 150С и больше, а это печаль для разработчиков почти эпических масштабов).
                                                                                                Кстати, проблема надежности ПО встает во весь рост: час работы буровой это море денег (всей моей зарплаты даже на один час не хватит).
                                                                                                  0
                                                                                                  Про матрицы я этого не говорил.

                                                                                                  Говорили про комплекс, их включающий.


                                                                                                  По поводу батарейки на 30 дней — посмотрел на эту проблему со стороны безопасности. Хранить 20 МДж энергии в бытовом устройстве весьма опасно и потому нужно идти по пути сокращения потребления или что то типа топливного элемента.

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

                                                                                                    –2
                                                                                                    Вы «заряжаете» автомобиль бензином и на попытки заставить заряжать от розетки реагируете без энтузиазма.
                                                                                                    Ноутбук и аккумулятор — это просто привычка.

                                                                                                    Пользователь получивший в пользование качественный топливный элемент будет очень негативно реагировать на призывы вернуться «к розетке».

                                                                                                    То чем вы занимаетесь сейчас называется — софистика (в народе: троллинг).
                                                                                                    Если следовать вашей логике, то самолет это не решение проблемы и перемещаться по воздуху необходимо с использованием ковра самолета, драконов и безумных волшебных карликов.
                                                                                                      0
                                                                                                      Вы «заряжаете» автомобиль бензином и на попытки заставить заряжать от розетки реагируете без энтузиазма.

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


                                                                                                      Ноутбук и аккумулятор — это просто привычка.

                                                                                                      Нет, это условия задачи.


                                                                                                      То чем вы занимаетесь сейчас называется — софистика

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


                                                                                                      Если следовать вашей логике

                                                                                                      Nope. Это если следовать той логике, которую вы мне приписываете.

                                                                                                        0
                                                                                                        Мое мнение — решать необходимо только востребованные проблемы.
                                                                                                        По поводу «программистов» я из хулиганских побуждений постараюсь направить развитие вычислительных систем на путь, где сегодняшние знания (в области программирования) не будут востребованы — даже умение создавать алгоритмы ))))
                                                                                                          +1
                                                                                                          Мое мнение — решать необходимо только востребованные проблемы.

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


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

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

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

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

                                                                                                            Проблемы современной вычислительной техники вы не понимаете, а то что понимаете считаете не решаемыми.

                                                                                                            Так что ждите когда Вас направят на переподготовку — самостоятельно «приближать» будущее вы не можете.
                                                                                                              0
                                                                                                              По первому вопросу — упертость в области достижения практически ненужного результата — основной способ потерять море времени и денег.

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


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

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


                                                                                                              Проблемы современной вычислительной техники вы не понимаете

                                                                                                              Какие-такие проблемы? Пока что каждая "проблема", которую вы озвучиваете, упирается в отсутствие фактологии.


                                                                                                              то что понимаете считаете не решаемыми.

                                                                                                              Вы точно меня ни с кем не путаете?


                                                                                                              самостоятельно «приближать» будущее вы не можете

                                                                                                              Я его, правда, двадцать лет вполне успешно приближаю, но вам, конечно, виднее.


                                                                                                              А оснований для переподготовки я как не видел, так и не вижу. Даже обещанная вами декларативная парадигма, в общем-то, переподготовки не требует.

                                                                                                                0
                                                                                                                Последнее интересно — последние двадцать лет вычислительная техника стагнирует (не буду говорить что начал понимать почему).
                                                                                                                Можете рассказать чем занимались все это время, чего достигли?
                                                                                                                Про себя могу сказать — примерно 35 лет назад меня заинтересовала вычислительная техника. Постепенно я выбрал ее как объект исследований (с философской точки зрения)
                                                                                                                Меня интересовали вопросы — почему постоянно изменяются архитектуры, «операционные системы», почему нужно постоянно все «переписывать».
                                                                                                                Можно ли создать «идеальную вычислительную систему», ПО в которой можно просто дописывать по мере надобности.
                                                                                                                И почему такие попытки постоянно приводили к провалу, и кто (что) виноват в этих провалах. Причины крайне низкой эффективности труда программистов и тд.
                                                                                                                Постепенно сформировал решение проблем — полностью новую вычислительную парадигму. Сейчас начинаю публиковать «слои» — Первый «слой» коммуникационная основа. Следующий «слой» — распределенный параллельный «процессор».
                                                                                                                  0
                                                                                                                  последние двадцать лет вычислительная техника стагнирует

                                                                                                                  Я так не считаю. Объективные факты есть?


                                                                                                                  Можете рассказать чем занимались все это время, чего достигли?

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

                                                                                                                    0
                                                                                                                    Когда последний раз покупая компьютер и устанавливая на него новое ПО (как пример операционную систему) вы смогли сказать:
                                                                                                                    Блин вот это прогресс, то что у меня было до этого…

                                                                                                                    По второму вопросу:
                                                                                                                    Я и сам много раз «дослуживался» до руководящих должностей и результат моей работы (то что было создано) успешно (в том числе и коммерчески) работает до настоящего времени. Информационная система противопожарной области Новосибирской области — самый первый комплексный проект инициированный именно мной. Когда я пришел туда работать — моим первым заданием было оживить неработающие машины СМ1420 и поддерживать их работоспособность. Когда я ушел оттуда — была создана специализированная информационная система (про FoxPro можете даже не говорить Oracle for Solaris) и это практически без финансирования — тогда были проблемы с финансами. Ну и так далее. Ушел из пожарки потому, что меня стали переводить в совсем уж бюрократическую должность.
                                                                                                                    Я не могу работать на конвейере — мой идеал это забраться повыше в «гору и сесть там на пенек» и заниматься поиском закономерностей в происходящем вокруг. Поэтому в программировании меня интересуют только базовые законы и их влияние — самое главное куда они в своем пределе приведут.
                                                                                                                      0
                                                                                                                      Когда последний раз покупая компьютер и устанавливая на него новое ПО (как пример операционную систему) вы смогли сказать:
                                                                                                                      Блин вот это прогресс, то что у меня было до этого…

                                                                                                                      В 2019, когда покупал и настраивал сначала Fire TV, а потом Shield TV.


                                                                                                                      По второму вопросу:

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


                                                                                                                      Я не могу работать на конвейере

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

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

                                                                                                                          Какие у вас занятные представления о максимумах.


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

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


                                                                                                                          Остается два варианта (если вы хотите большего):

                                                                                                                          А зачем мне "большее"-то? Как вы "большее" меряете?


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

                                                                                                                            –1
                                                                                                                            те Вы готовы получить «синицу» и успокоиться?
                                                                                                                            У меня ближайшая вершина, которую я должен достичь
                                                                                                                            описана тут: habr.com/ru/post/489068
                                                                                                                            Довольствоваться крохами я не готов.

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

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


                                                                                                                              Довольствоваться крохами я не готов.

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


                                                                                                                              Все что я пишу — ложится в одну «канву», вы просто не понимаете всей проблемы.

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


                                                                                                                              Вам не хватает кругозора

                                                                                                                              … вы-то, конечно, все знаете про мой кругозор.


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

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


                                                                                                                              Ну и да, каминг-аут — меня не очень интересует вычислительная техника, я все больше по программному обеспечению. А ВТ меня интересует ровно в том объеме, в котором она влияет на ПО.

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

                                                                                                                                  Это утверждение как минимум недоказуемо (а попросту говоря — ложно).


                                                                                                                                  например в сетевой парадигме никто не нашел ни одной ошибки.

                                                                                                                                  Ммм...


                                                                                                                                  Сформулирую нужным образом новую вычислительную парадигму — что бы программистам в ней не нашлось места

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


                                                                                                                                  ждите перемен

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

                                                                                              0
                                                                                              пора спать — а то начал делать грамматические ошибки))
                                                                                  +2
                                                                                  Задача компилятора добавить значение текущих условий (это неизвестно в момент написания программы) и сгенерировать программу соответствующую описанию.

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


                                                                                  Описывать всю теорию на «блокнотных листочках» не буду — например достаточно полное описание процессора и потенциальных веток развития занимает около 120 страниц

                                                                                  Эх, смотрю я на 500 строк кода, наполовину формализующих такую простую операцию, как подстановка аргумента лямбда-функции в эту функцию…

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

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


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


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


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

                                                                                      –1
                                                                                      Чек — изначально это набор цифровых данных с сенсоров.
                                                                                      Причем не именно сенсоров фотоаппарата, а еще и позиционирования, времени, даты, наличия с покупателем знакомых и незнакомых людей вообще в идеале все что сопутствовало получению чека. Вот это и будет набором входных данных. Еще добавлю, что данными будут и все что ассоциируется с чеком, покупками и тд.

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

                                                                                      Заметьте изначально нет никакого приложения по анализу чека, а значит это вообще не ПО и писать его не нужно (значит и программист не нужен).

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

                                                                                      Напишу в духе анекдота про физиков теоретиков, потерявших несколько листков с доказательствами:
                                                                                      — А ты напиши: Из этого однозначно следует…

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

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

                                                                                        Чек — это бумажка. Она передо мной на столе лежит.


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

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


                                                                                        Окей, я без работы не останусь.

                                                                                          –3
                                                                                          У Вас нет фантазии, вы просто исполнитель, идеальный сотрудник для иерархических систем — это проблема работающих на «конвейере».

                                                                                          Надежда на авось ложна — так или иначе неэффективно действующее звено будут исправлено или вообще удалено (в запущенных случаях).
                                                                                            +2

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


                                                                                            Да, кстати, вот вам еще:


                                                                                            человек решил привести свои «финансы в порядок» и сформировал соответствующий набор данных
                                                                                            [...]
                                                                                            Заметьте изначально нет никакого приложения по анализу чека, а значит это вообще не ПО и писать его не нужно (значит и программист не нужен).

                                                                                            … а где же человек "сформировал набор данных"?

                                                                                  +1
                                                                                  Потом правда профессия программист исчезнет, но это мелочи.

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

                                                                                  Я не помню, когда мы перешли на «ты», но не суть — я учился в каком-то вузе, потом писал код на каких-то работах, в итоге дорос до тимлида/руководителя отдела разработки в какой-то компании с 10+ филиалами по стране. Звезд с неба не хватаю, занимаюсь в целом любимым и интересным делом и получаю за это какую-то зарплату. Не рефлексирую по поводу «предназначения» и «будущего» программирования, тк прекрасно понимаю что еще мои дети или даже внуки, если захотят, смогут как и я пристроить свою жопу в айти и неплохо себе поживать.
                                                                                    –1
                                                                                    А ну ка мил человек поведай из чьих будешь… — это цитата и приведена она по поводу вопроса от том кто я такой )
                                                                        +4
                                                                        Квалифицированные программисты это понимают и потому даже не пытаются писать «идеальную программу», а просто закладывают некоторый объем финального тестирования (или вероятность сбоя).

                                                                        Вы бы сначала поняли сами, что такое проблема останова, а потом бы рот открывали на публике. Никому (кроме абстрактных теоретиков) не вперлось проверять тотальность всех программ в мире. А для одной конкретно взятой программы ее проверить внезапно можно, и современные языки программирования, типа идриса, даже позволяют указать директиву %default total, что на практике заставит компилятор проверить тотальность.


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

                                                                          0
                                                                          Мы совершаем ошибки и платим за них. Везде. Кроме ИТ-индустрии. И это ужасно страшно.

                                                                          Знакомая фраза?
                                                                            0

                                                                            Эта фраза немножко (на самом деле, полностью) неправда.

                                                                              0
                                                                              Это фраза из статьи на хабре — автор Chapuza
                                                                                0

                                                                                Я в курсе. Моего мнения по ее поводу это не меняет.

                                                                      +2
                                                                      Математически невозможно доказать (для произвольной программы) даже то, что она корректно завершит свое выполнение.

                                                                      Зато можно для некоторых, а часто этого достаточно.


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

                                                                      Меня вполне устраивает тайпчекер, который иногда выдаёт false negatives (отвергая семантически корректную программу), если он никогда не выдаёт false positives (принимая некорректную).


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

                                                                        0
                                                                        После нового года собираюсь опубликовать статью с описанием альтернативы фон Нейману.
                                                                        Про программирование там особо ничего не будет, но буден показан способ организации вычислений позволяющий увеличить производительность типичной машины на 3-6 порядков от существующих аналогов. Вот потом и нужно будет говорить о новой парадигме программирования пригодной для использования в «неконтролируемом» пространстве (для обеспечения гибкости и безошибочности работы программ с объектами реального физического мира — как пример универсальные антропоморфные роботы).
                                                                        А вообще я сильно хочу вот это: habr.com/ru/post/489068

                                                                          0

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

                                                                        0

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

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

                                                                          А ваши фантазии, что программисты будут не нужны, потому что любой человек сможет получить нужный результат без квалификации, равносильны созданию сильного ИИ. Тут уже проблемы будут вообще у всех профессий, у программистов в последнюю очередь.
                                                                            0
                                                                            Про ненужность я может быть и «загнул», но думаю специалистам в области программирования мало не покажется.
                                                                            ИИ действительно натурально убьет человека, не как «терминатор» — он лишит человека стимула к обучению и тем самым обречет на деградацию.
                                                                            Мое представление о самом оптимальном будущем я описал здесь:
                                                                            habr.com/ru/post/489068
                                                                              +1
                                                                              но думаю специалистам в области программирования мало не покажется
                                                                              А что должно измениться? Вы так и будете писать никому не понятные тексты на Хабре, а программисты так и будут работать в своих банках, заводах, галерах…

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

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

                                                                                Мое мнение: Необходима вычислительная парадигма родственная человеческому мозгу и одновременно являющаяся оптимальный инструментом для проектирования и исследований в этом направлении. С современной производительностью вычислительных машин (и самих программистов) нечего и думать о значимых успехах в области вычислительной биологии и практического применения полученных наработок в практике трансгуманизма. Если простыми словами — необходим пакет разработчика для проектирования биологических информационных структур и биомашин, ну и биологический синтезатор.
                                                                                Да эти технологии предельно опасны, особенно для тех у кого их нет.
                                                                                  +1
                                                                                  Программирование сильно упростится и из самостоятельной профессии трансформируется в простой навык (примерно как читать и писать).
                                                                                  Не вижу к этому никаких предпосылок
                                                                                  Мое мнение: Необходима вычислительная парадигма родственная человеческому мозгу и одновременно являющаяся оптимальный инструментом для проектирования и исследований в этом направлении
                                                                                  Мое мнение: сложность из задач никуда не денется, её необходимо будет осмысливать, переводить на формальные языки, тратить «мыслетопливо». Парадигма всего лишь инструмент и поможет лишь немного, ну примерно как средства рефакторинга в IDE.
                                                                                    0
                                                                                    Про формальные языки — вот они и уйдут в первую очередь.
                                                                                    Пока не могу внятно описать, но (мое мнение) ПО превратится из набора операторов в набор знаний (не экспертная система), а программирование в редактирование «базы знаний» производимое на естественном языке (все естественные языки практически сразу станут частью этой базы знаний) или вообще с помощью визуальных образов.
                                                                                      0
                                                                                      Про формальные языки — вот они и уйдут в первую очередь.

                                                                                      А как вы без формальных языков собираетесь знания описывать? Как вы без формальных языков собираетесь снимать противоречия в требованиях?

                                                                                        0
                                                                                        а как без формального описания картинки распознают?
                                                                                        как без формального описания птицы летают?
                                                                                        Или обезьяна прыгая с ветки на ветку — перед прыжком пишет программу на формальном языке?

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

                                                                                          Люди или машины? Машины — никак.


                                                                                          И все эти формальные языки, совершенно неэффективные принципы программирования и есть плата за это «прикручивание».

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

                                                                                            +3
                                                                                            а как без формального описания картинки распознают? как без формального описания птицы летают?
                                                                                            Или обезьяна прыгая с ветки на ветку — перед прыжком пишет программу на формальном языке?
                                                                                            А вот так — без пониманию, что и как делается. Когда появились формализмы, анализ и синтез, возможности по летанию и прыганию возросли на порядки. Стало понятно, какое решение оптимальное, какие есть ограничения.

                                                                                            А вы предлагаете отказаться от всего этого, от интеллекта, от языка, вернуться к методам работы мозга животного?
                                                                                              0
                                                                                              Я предлагаю сочетать их, причем в правильном порядке — по мере увеличения сложности и соответственно времени вычисления.
                                                                                              Примерно таки образом человек учится (животные просто подсматривают желаемое у других членов стаи(родителей), да и множественное повторение с случайными отклонениями постепенно сформируют некий локальный оптимум).
                                                                                                +1
                                                                                                Примерно таки образом человек учится (животные просто подсматривают желаемое у других членов стаи(родителей)

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

                                                                                      0
                                                                                      Программирование сильно упростится и из самостоятельной профессии трансформируется в простой навык (примерно как читать и писать).

                                                                                      Вы не обращали внимания, что профессия "писатель" никуда не делась?


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

                                                                                      … и откуда же он возьмется?

                                                                                        0
                                                                                        Писатель существует и его только сейчас пытаются автоматизировать (временами весьма успешно). А вот профессия машинистки стала просто опцией.

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

                                                                                        Как «гипотеза» для построения синтезатора:
                                                                                        С синтез белков в биологическом организме происходит с использованием большой молекулы, которая с одной стороны перебирает нить РНК с другой (по данным РНК) синтезирует белок.
                                                                                        А давайте сделаем микросхему, которая сверху заканчивается площадками электродов, если подать определенный рисунок потенциалов, то к конкретному месту «прилипнет» строго определенная молекула в определенном положении.
                                                                                        Изменяя потенциалы мы можем изменять типы, положение молекул и даже изменять ее геометрию.
                                                                                        Если не напрямую, то через молекулу посредника можно собирать молекулярные структуры.

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

                                                                                          Так почему вы считаете, что программист — это машинистка, а не писатель?


                                                                                          потом профильные специалисты реализуют в новой вычислительной парадигме

                                                                                          Подождите, так "профильные специалисты" — это и есть те самые программисты, которые, по вашим словам, не будут нужны.


                                                                                          «накачают» его всеми знаниями которые до этого были получены человеком.

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

                                                                                            –1
                                                                                            Писатель всегда пишет что то новое, а машинистка всегда одинаковые слова русского языка. Новизна в работе программиста исчезающе мала — в больших проектах он опирается на ТЗ, в остальных случаях копирует куски кода из учебников и гитхаба. Очень часто не решает, даже на каком расстоянии иконки располагать.

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

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

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


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

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

                                                                                                –2
                                                                                                Печаль )))
                                                                                                Кто напишет: JMP (PC-<несколько комментариев назад>)

                                                                                                Я же Вам написал — Пустышка.
                                                                                                Смиритесь и просто ждите перемен.
                                                                                                  +1

                                                                                                  Йеп, так и запишем: инструментарий зародится сам собой, как мышь в сене.

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

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

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

                                                                                                      … но при этом программистами он их называть не хочет, ага.

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

                                                                                                        А что останется работать 1% «истинных программистов», уже не важно в рамках всей индустрии.
                                                                                                          0

                                                                                                          Есть у меня на эту тему любимый анекдот: "и вы говорите".

                                                                                        0
                                                                                        Программирование сильно упростится и из самостоятельной профессии трансформируется в простой навык (примерно как читать и писать).


                                                                                        Я, конечно, не иксперт, но даже читать и писать не всегда сейчас умеют нормально, уже не говоря про считать, пример — недавнее видео от россия 24 (или москва 24, не помню), в котором выпускники некого ВУЗ по специальности бухгалтера не могил квадратный корень из 100 взять и говорили, что такой не существует (!). Да и «Уверенный пользователь» это не тот, кто знает, что системный блок — это не процессор, а тот, кто знает как он устроен, что в нем зачем, как это все собрать и обслужить так, чтоб оно заработало, и как затем на него установить ОС и прочее ПО, и как это все настроить под себя. Т.е. знание в любом случае не повседневные и недоступные большинству (как физика, например).
                                                                                +3
                                                                                Получается сколько методов не напиши — всегда когда-нибудь, при изменении бизнес-требований будет ошибка.

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


                                                                                А еще ошибки можно минимизировать — например, используя автоматизированные тесты.

                                                                                  0
                                                                                  Насчет автотестов — отличная мысль.
                                                                                    +1
                                                                                    А еще ошибки можно минимизировать — например, используя автоматизированные тесты.

                                                                                    Ага, и потом чинить ошибки ещё и в тестах:)
                                                                                      0

                                                                                      Я в среднем считаю, что лучше чинить ошибки в тестах, чем ошибки в проде.

                                                                                    +2

                                                                                    Выглядит так, будто вам нужен один метод, умеющий возвращать данные по параметрам, а все остальные методы должны реализовываться через него.
                                                                                    Для склада, кстати, тоже отдельный метод.
                                                                                    И никогда не вызывать базовый метод в клиентском коде (в c++ его можно вообще сделать private).
                                                                                    Тогда реализация методов-обёрток будет минимальной (вызов базового с полным набором параметров) и ошибки из статьи станут маловероятными (при изменении требований надо будет только поправить параметры методов).

                                                                                      +1
                                                                                      Это лишь отодвинет ошибку (ситуация №1 с тем, что мы забыли внедрить параметр в какой-то метод повториться на более высоком уровне), но к сожалению не исключит ее.
                                                                                        0

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


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

                                                                                      +1
                                                                                      Product::getActiveProducts???
                                                                                        0
                                                                                        Если метод вызывается из нескольких мест, например каталог, акции, статьи (назовет места № 1,2,3), то при дальнейшем дроблении метода (например ввели еще один флаг, наподобие active), например на места — 1,3 и другое — 2, опять может возникнуть ошибка, что мы где-то забудем посмотреть (например 1 и 2 посмотрели, а 3 — забыли). Мест может быть и 50.
                                                                                          +2
                                                                                          задумайтесь об архитектуре, проведите рефакторинг.
                                                                                            0

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

                                                                                              0
                                                                                              Было Product::getProducts. Мы заменили вызов в части кода на Product::getActiveProducts. Вы уверены что мы везде заметили, где надо, а где не надо — не заменили? Т.е. нам надо найти все вызовы Product::getProducts и вручную всё просмотреть. Что не всегда возможно (если метод вызывается через рефлексию например), человеческая ошибка и т.д. Т.е. именно через архитектуру кода, т.е. организацию методов и классов, такая ошибка не решается.