На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (17) « Первая ... 13 14 [15] 16 17  все  ( Перейти к последнему сообщению )  
> ООП - в топку!
    Цитата applegame @
    Эрланг (а для меня лично эликсир)

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

    Право — это возведенная в закон справедливость. Закон есть этика, высеченная в логике.
      Цитата applegame @
      Вот do-нотация и превращает список операций в кучу функций, результаты которых являются аргументами других функций, результаты которых являются аргументами других функций... Все это является одним из видов монад

      Не так. do-нотация это сахар над монадами. Т.е. она применима к любым видам монад.
      "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
        Астарот, например:

        ExpandedWrap disabled
          doSomething()
          .then(result => doSomethingElse(result))
          .then(newResult => doThirdThing(newResult))
          .then(finalResult => {
            console.log(`Got the final result: ${finalResult}`);
          })

        https://developer.mozilla.org/en-US/docs/We.../Using_promises

        ExpandedWrap disabled
          do
            result <- doSomething
            newResult <- doSomethingElse result
            finalResult <- doThirdThing newResult
            putStrLn $ "Got the final result: " ++ finalResult
        “Object-oriented design is the roman numerals of computing.” — Rob Pike
        All software sucks
          Выглядит, как те же яйца, просто в профиль. А киллер-фича какая-нибудь есть? За пример спасибо :yes:

          Право — это возведенная в закон справедливость. Закон есть этика, высеченная в логике.
            Хаскель это просто и понятно, говорили они :D
            Прикреплённая картинка
            Прикреплённая картинка

            Право — это возведенная в закон справедливость. Закон есть этика, высеченная в логике.
              Цитата Астарот @
              Чем вообще хорош эликсир, кстати говоря? Сахару в нем много, но есть что-то что действительно упрощает жизнь, а не просто слегка сокращает код?
              Уши эрланга торчат из эликсира повсеместно. Из того что упрощает жизнь: метапрограммирование, адекватный синтаксис, более вменяемая стандартная либа. Меня лично еще напрягает в эрланге невозможность ребиндить переменные.
              error: 'long long long' is too long for GCC
                ООП - прекрасный инструмент в соответствующих условиях и ... руках. Ну все же отлично понимают, что это не панацея?! Если речь идет, к примеру, о программировании какой-либо логической матрицы с 256 выходами и 1024 состояниями (ну очень разреженная матрица), разумнее просто исполнить CASE вариант алгоритма?
                Мои программные ништякиhttp://majestio.info
                  Цитата JoeUser @
                  Если речь идет, к примеру, о программировании какой-либо логической матрицы с 256 выходами и 1024 состояниями
                  Не уверен, что понял, что ты имеешь в виду под понятием "логическая матрица" (я привык, что под этим понимают микросхему, физически реализующую ДНФ, да, матрицы соединений там как правило очень разреженные). Но ещё более непонятно, каким боком к ним ООП.

                  Но должен заметить, что ООП прекрасно укладывается в концепцию CASE-систем.
                  Всё написанное выше это всего лишь моё мнение, возможно ошибочное.
                    JoeUser, а ты как определяешь ООП?
                    "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                      Цитата Астарот @
                      Выглядит, как те же яйца, просто в профиль.

                      А это и есть те же яйца. Только в статике.

                      Цитата Астарот @
                      А киллер-фича какая-нибудь есть?

                      Какая киллер-фича у интерфейса Collection? Или у интерфейса Iterable?

                      Цитата Астарот @
                      Хаскель это просто и понятно, говорили они

                      А что тут сложного? =)

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

                      Пример 1:
                      – Целые числа
                      – (+)
                      – 0

                      Пример 2:
                      – Целые числа
                      – (*)
                      – 1

                      Пример 3:
                      – Строки
                      – конкатенация
                      – пустая строка

                      Пример 4:
                      ExpandedWrap disabled
                        data OrderStat = OS {
                            quantity  :: Int,
                            totalCost :: Double
                        }
                         
                        instance Monoid OrderStat where
                            mempty = OS 0 0.0
                            mappend (OS q1 tc1) (OS q2 tc2) = OS (q1 + q2) (tc1 + tc2)


                      Моноиды удобны для свёрток (в т.ч. параллельных)

                      Функтор — это, упрощённо, отображение одного множества на другое. Эндофунктор — это функтор, который отображает множество на само себя. Например тип Список является функтором, отображением — функция map (или её "функторный" вариант: fmap):

                      ExpandedWrap disabled
                        class Functor f where
                            fmap :: (a -> b) -> f a -> f b
                         
                        instance Functor [] where
                            fmap f xs = map f xs


                      Т.е. можно считать, что эндофунктор — это такой контейнерный тип, у которого есть операция map, применяющая к содержимому контейнера некоторую операцию, но сохраняющая сам контейнер.

                      Моноид в категории эндофункторов:
                      – множество функций m a -> m b
                      – композиция функций bind :: (m a -> m b) -> (m b -> m c) -> (m a -> m c)
                      – функция id :: a -> a (id x = x) — нейтральный элемент
                      Сообщение отредактировано: korvin -
                      “Object-oriented design is the roman numerals of computing.” — Rob Pike
                      All software sucks
                        Цитата korvin @
                        А что тут сложного? =)

                        Держите наркомана! :D

                        Цитата korvin @
                        Т.е. можно считать, что эндофунктор — это такой контейнерный тип, у которого есть операция map, применяющаяся к содержимому контейнера некоторую операцию, но сохраняющая сам контейнер.

                        Во! Можно же понятным языком :D

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

                        Добавлено
                        Цитата korvin @
                        Какая киллер-фича у интерфейса Collection? Или у интерфейса Iterable?

                        Я спрашивал про киллер-фичу Эликсира против Эрланга. Ну, типа Котлин против Джавы. У Котлина есть парочка фич тянущих на киллер, типа функций-расширений, корутин и делегатов. Думал может у Эликсира что-то такое найдется.

                        Право — это возведенная в закон справедливость. Закон есть этика, высеченная в логике.
                          Цитата Астарот @
                          Я спрашивал про киллер-фичу Эликсира против Эрланга.

                          А. Но это шло в твоём же ответе про do-нотацию, как можно было понять, что вопрос про Эликсир?

                          Добавлено
                          Цитата Астарот @
                          Там народ угорел, вроде бы даже на фронтенд хаскель тянут. Ну, чисто культ карго, как по мне...

                          Как и JS на бэкенде… =)
                          “Object-oriented design is the roman numerals of computing.” — Rob Pike
                          All software sucks
                            Цитата korvin @
                            Моноид — это тройка:
                            – множество
                            – бинарная ассоциативная операция над элементами этого множества и возвращающая в качестве результата элемент этого же множества
                            – нейтральный элемент по отношению к это операции
                            Ты сейчас процитировал определение абелевой группы. Почти, про обратный элемент промолчал.

                            Добавлено
                            А, не, не обязательно абелевой.
                            Одни с годами умнеют, другие становятся старше.
                              Qraizer, моноиды - это понятие из математики, если что.
                              "If someone claims to have the perfect programming language, he is either a fool or a salesman or both"(c) Bjarne Stroustrup
                                Цитата amk @
                                Но ещё более непонятно, каким боком к ним ООП.

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

                                Цитата D_KEY @
                                JoeUser, а ты как определяешь ООП?

                                Если речь идет о "программировании", то тут классика:
                                - Инкапсуляция
                                - Наследование
                                - Полиморфизм
                                Если речь идет о "проектировании", то понятие ... самоопределимое :-? - проектирование, в котором основная идея - моделирование функционала, как группы взаимодействующих объектов.
                                Мои программные ништякиhttp://majestio.info
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script Execution time: 0,2292 ]   [ 16 queries used ]   [ Generated: 26.06.19, 01:59 GMT ]