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

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

      Не так. do-нотация это сахар над монадами. Т.е. она применима к любым видам монад.
        Астарот, например:

        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
          Выглядит, как те же яйца, просто в профиль. А киллер-фича какая-нибудь есть? За пример спасибо :yes:
            Хаскель это просто и понятно, говорили они :D
            Прикреплённая картинка
            Прикреплённая картинка
              Цитата Астарот @
              Чем вообще хорош эликсир, кстати говоря? Сахару в нем много, но есть что-то что действительно упрощает жизнь, а не просто слегка сокращает код?
              Уши эрланга торчат из эликсира повсеместно. Из того что упрощает жизнь: метапрограммирование, адекватный синтаксис, более вменяемая стандартная либа. Меня лично еще напрягает в эрланге невозможность ребиндить переменные.
                ООП - прекрасный инструмент в соответствующих условиях и ... руках. Ну все же отлично понимают, что это не панацея?! Если речь идет, к примеру, о программировании какой-либо логической матрицы с 256 выходами и 1024 состояниями (ну очень разреженная матрица), разумнее просто исполнить CASE вариант алгоритма?
                  Цитата JoeUser @
                  Если речь идет, к примеру, о программировании какой-либо логической матрицы с 256 выходами и 1024 состояниями
                  Не уверен, что понял, что ты имеешь в виду под понятием "логическая матрица" (я привык, что под этим понимают микросхему, физически реализующую ДНФ, да, матрицы соединений там как правило очень разреженные). Но ещё более непонятно, каким боком к ним ООП.

                  Но должен заметить, что ООП прекрасно укладывается в концепцию CASE-систем.
                    JoeUser, а ты как определяешь ООП?
                      Цитата Астарот @
                      Выглядит, как те же яйца, просто в профиль.

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

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

                      Какая киллер-фича у интерфейса 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 -
                        Цитата korvin @
                        А что тут сложного? =)

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

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

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

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

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

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

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

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

                          Как и JS на бэкенде… =)
                            Цитата korvin @
                            Моноид — это тройка:
                            – множество
                            – бинарная ассоциативная операция над элементами этого множества и возвращающая в качестве результата элемент этого же множества
                            – нейтральный элемент по отношению к это операции
                            Ты сейчас процитировал определение абелевой группы. Почти, про обратный элемент промолчал.

                            Добавлено
                            А, не, не обязательно абелевой.
                              Qraizer, моноиды - это понятие из математики, если что.
                                Цитата amk @
                                Но ещё более непонятно, каким боком к ним ООП.

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

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

                                Если речь идет о "программировании", то тут классика:
                                - Инкапсуляция
                                - Наследование
                                - Полиморфизм
                                Если речь идет о "проектировании", то понятие ... самоопределимое :-? - проектирование, в котором основная идея - моделирование функционала, как группы взаимодействующих объектов.
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (21) « Первая ... 13 14 [15] 16 17 ...  20 21


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,1130 ]   [ 18 queries used ]   [ Generated: 23.04.24, 10:01 GMT ]