×Закрыть
  • Объясните, пожалуйста, разницу между состоянием и функцией

    Мое знакомство с Spring DM и количество лет потраченых на этот бред написано у меня в резюме.

    XA — это стандарт интерфейса по которому происходят мессаджинг в рамках 2PC протокола. В данном примере вместо XA используется Erlang RPC. Ядро XA интерфейса это три сообщения:

    1. prepare
    2. commit
    3. rollback

    Это все прекрасно и лаконично видно в реализации.

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

  • Объясните, пожалуйста, разницу между состоянием и функцией

    Ой только не надо мне про Virgo тут :) Я видел и Spring DM, и Virgo, и Glassfish, и бандлинг OSGi приложений. Это ад как он есть. После OTP applications я увидел рай. OSGi — это идея которая абсолютно не работает на практике. Если вы мне будете сейчас тут про Eclipse RCP втирать вот я сразу напоготове держу пост нашего директора: doxtop.livejournal.com/189549.html

    Вот пример 2PC имплементации на Erlang которую я нанписал специально для reality_hacker maxim.livejournal.com/422351.html, вот Gen Leader в 70 строчек: github.com/...spot/toy_leader Это только то что писал лично я. PAXOS и RUFT сами в сети найдете. Распределенная транзакция :)

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

  • Объясните, пожалуйста, разницу между состоянием и функцией

    <h2>Почему ФП?</h2>

    Мне всё равно ФП это, ООП либо ассемблер. Просто так получилось, что в ФП мире я обнаружил аттрибуты, которых мне не хватал в .NET/Java. Я как пример СТО с поехавшей крышей перешел на Erlang/BEAM с JVM/CLR языков по следующим причинам:

    1.Maturity. Более стабильная и неизменяющаяся инфраструктура. Надоело адаптировать свои приложения с выходом каждой новой версии WCF и WPF. Для бизнеса нет ничего более убийственного чем постоянное переписывание. В Java тоже самое постоянное заигрывание с разными OSGi контейнерами, и более новыми и лучшими спрингами и MVC 10. Просто надоело переливать воду из пустого в порожнее.

    2. Protopyping. Более быстрая разработка. Действительно прототипировать на Erlang получается быстрее, можно сесть рядом с заказчиком и тут же изменять страницу при нем на стейдже, добавлять чат-окна кнопки и писать логику при нем же. Такое возможно еще только в Clojure, больше нигде такое получить невозможно.

    3. Manageability. Более вменяемые программисты, быстрее проходит коде ревью и я могу быстро попоравить все что я считаю упущено. Это происходит во мнгом благодаря тому, что количество кода которое генериурет Erlang программист несоизмеримо мало с Java/.NET языками. Эрланг очень простой язык, мы нанимаем Python, Ruby программистов и они пишут код через 2 недели.

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

    4. Full Stack. Развитое и полностью самодостаточное окружение. Сначала мы перешли на Riak, RabbitMQ, а потом стали и бизнес логику писать на эрланге и даже Web. У нас все на эрланге, кода стало в 10 раз меньше, управлять проектами стало удобнее, прототипирование продукта делаем за 2 недели. На .NET уходили до 2 месяцев.

    5. Capacity. Если нужно байты переложить из одного сокета в другой и делать это в масштабах 10 миллионов коннекций Erlang показывает near to C перформанс (тут пример Flussonic/Erlyvideo котрый стримит десятки гигабит в секунду, что уже говорить об эрланге в вебе или няшных вебсокетах). Линейную алгебру на нем считать не нужно, если все-таки нужно нужно брать сразу Clojure. То для чего мы раньше использовали 10 машин мы сейчас заменяем одной. По перформансу JVM хорошая, Haskell тоже. Но там проблемы управленческого характера. Создать чисто Haskell компанию трудно.

    Поддержал: Mykola Kharechko
  • Объясните, пожалуйста, разницу между состоянием и функцией

    Можешь использовать свой ноутбук.

  • Объясните, пожалуйста, разницу между состоянием и функцией

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

  • Объясните, пожалуйста, разницу между состоянием и функцией

    Думай, думай :)

  • Объясните, пожалуйста, разницу между состоянием и функцией

    У меня опыт программирования в .NET больше 10 лет, я писал еще на .NET 1.0 CTP. Ушел с F# по причине очень убогих инструментов, надоело загнивать на загнивающих платформах, где принято переливать из пустого в порожнее. Даже MVC 10 тебе не поможет.

  • Объясните, пожалуйста, разницу между состоянием и функцией

    Тогда это тоже

    using Microsoft.AspNet.SignalR.Hubs;

    Это тропинка никуда не приведет. Если сравнить SignalR и N2O то тут тоже окажется полный Win.

  • Объясните, пожалуйста, разницу между состоянием и функцией

    Круто, гибкий подход :)

    Поддержали: Alexander Abakumov, Dmytro Sirenko
  • Объясните, пожалуйста, разницу между состоянием и функцией

    Отлично вот моя версия:

    -module(chat).
    -compile(export_all).
    -include_lib("n2o/include/wf.hrl").
    
    main() ->
          [ #dtl { file="index", 
               bindings=[{title,"Chat"},{body,body()}] } ].
    
    body() ->
            {ok,Pid} = wf:async(fun() -> loop() end),
    
          [ #span    { id=title, body="chatroom name: " },
            #textbox { id=userName, body="Anonymous" },
            #panel   { id=chatHistory, class=chat_history },
            #textbox { id=message },
            #button  { id=sendButton, source= 
                              [ userName,message],
                                body="Send",
                                postback={chat,Pid} } ].
    
    event({chat,Pid}) ->
            Username = wf:q(userName),
            Message = wf:q(message),
            Terms = [ #span { text="Message sent" }, #br{} ],
            wf:reg(room),
            Pid ! {message, Username, Message}.
    
    loop() ->
            receive { message, Username, Message} ->
                 Terms = [ #span { body=Username }, ": ",
                     #span { body=Message }, #br{} ],
                 wf:insert_bottom(chatHistory, Terms),
                 wf:flush(room) end, loop().

    DTL MVC.
    Erlang DSL.
    Бродкаст 300 тысяч пользователям за 1с.
    WebSockets с фолбеком в XHR.

  • Объясните, пожалуйста, разницу между состоянием и функцией

    Для ООП в зависимости от количества юзеров применяются разные подходы ? :)

    Поддержал: Alexander Abakumov
  • Объясните, пожалуйста, разницу между состоянием и функцией

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

    Да, что там этот космос, о чем это я, я же на DOU.

    Давай кто быстрее веб чат напишет я на Эрланге или ты на ASP.NET.

    Поддержал: Alexander Abakumov
  • Объясните, пожалуйста, разницу между состоянием и функцией

    Нужно написать LDAP сервер. Я беру скачиваю Erlang и пишу прототип за пол часа. Нужно написать систему которая превращает программы в Verilog описания для программирования FPGA, я беру скачиваю Scala/Haskell/OCaml. Если я возьму что-то другое я буду просто безумцем.

    Поддержал: Vladislav Svitlichniy
  • Объясните, пожалуйста, разницу между состоянием и функцией

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

    Поддержал: Andrey Shiray
  • Объясните, пожалуйста, разницу между состоянием и функцией

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

    1. www.youtube.com/...h?v=GUmcl36K73U
    2. www.slideshare.net/...vin/ss-15351640

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

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

    Поскольку количество вычислений громадное и даже всем известная система о 5000 потоках и семафорах не справится с такой задачей приходится признать, что конкрутные системы основанные на исчислении процессов и незаслуженно забытая теория массового обслуживания, что называться do the job по координации вычислительных коммуникаций. Особенно это важно именно при моделировании больших нейронных сетей, как в Blue Gene, а также в задачах фолдинга протеинов.

    Несмотря на то, что большинство фреймворков используют OpenMPI (Blue Gene), все то мы прекрасно знаем. что на самом деле старый добрый мессадж пассинг для С++, рожденный из исчисления процессов.

    Список рекомендованной литературы для самостоятельного ознакомления:
    -----------------------------
    [1]. fprog.ru/...-mutable-state
    [2]. www.amazon.com/...e/dp/1461444624

    Поддержал: Dmytro Sirenko
  • Каким должно быть ООП?

    Шаблон Проектирования Шаблон.

    Поддержали: Artem Komisarenko, Bogdan Verbenets
  • Каким должно быть ООП?

    Вот представьте, что вы идете по городу (вы же реальный человек?) и переходите границу зон базовый станций и начинается хендовер и ваш звонок без прекращения разговора нужно перенаправить на другую станцию, а сейчас футбольный матч, а на базовую станцию пришел микроапдейт. Достаточно изменяемый мир? Как нибудь на досуге представьте такую систему написанную с использование паттернов, ООП, SQL и Java. И каждые 3 года новый стандарт: GSM, GPRS, EDGE, UMTS, HSDPA, LTE, 1x, EV-DO, Rev A, B, C, D.

    Поддержали: Dmytro Sirenko, Andrey Shiray
  • Каким должно быть ООП?

    Не менее 30% всех звонков совершаемых через GSM машрутизаторы обратаываются программами написанными на функциональных или декларативных языках программирования. Остальное в ПЛИС, разработанных с помощью метапрограммирования.

  • Erlang, CPP и прочие — тормоза!

    Да да, я знаю, блокирующие драйвера к Ораклу :)

  • Erlang, CPP и прочие — тормоза!

    Agda/Coq — это DXM.
    ML/OCaml/F# — это MDMA.
    Кокаин — это APL/J/K/Q.
    Марихуана — это LISP и Erlang.

    Поддержали: Yuriy Pitometsu, Pavlo Suikov
← Сtrl 1... 45678...12 Ctrl →