Так ML семейство так же как и хаскель рождалось из научной среды, а не пацаном в подвале написано. Так что аргумент за ML как сугубо практичный тоже спорный, т.к на хаскелле все так же можно сделать и вскорости он не уступает.
Тут вообще вижу какие-то скрытие связи в языках, не сколько от его применимости, а столько от того кто его форсит и с какой силой. А потом на форумах бушуют бури обсуждений.
Идеализированно мечтаю: собрать всемирный форум, на котором организации договорятся о использовании 10 языков, самых лучших на самом деле, а не потому что из-за хипстерства или исторических причин. И работать только с этими языками, все остальные статус научные и могут войти в 10ку вытеснив какой-то другой. )) Но это конечно в идеальном мире без бюрократии и субъективизма. Не доверяю я саморегуляции в Ит среде...
=))
он сделал карьеру в ИТ через постель? невероятно! -) Кстати, 20% сотрудников гугла лгбт...
Что уж говорить про машинный код...
О ты заработал язык! Поздравляю!
Каждый HEC (haskell execution context) формируется для отдельного процессора, в каждом HEC есть свой Spark Pool, который держит спарки, как только какой-то процессор становится idle программа запускает спарк. Когда ты указываешь количество тредов, ты указывавешь не количество тредов ОС, а Haskell Lighweight Threads(HLT), а потом уже передаются системным потокам, но ими вроде управлять нельзя.
$ ./A +RTS -N8
В таком коде, ты говоришь,что использовать 8 HLT, как только кто-то из них свободен, на него цепляется спарк.
Для наглядности:i.stack.imgur.com/f57Hm.png
потихоньку пинаю хаскель\yesod (на удивление все «аккуратненько» — шаблонизатор с поддержкой вставок кода , автоматический ребилд
Yesod это template haskell, не совсем канонический, но удобный для веба. Кстати, они недавно получили спонсорскую поддержку, так что будут активнее развиваться.
Конечно, вычисляется каждый раз, суть pure function в том что она не дает сайд эффектов.вот крутится вопрос, который я пока не могу сформулировать «в гугль», в общем есть pure functions , классно, в гайдах упоминается что их можно вычислить один раз и все, так вот — будет ли система кешировать их автоматически или надо указывать ручками,
Для того, чтоб сделать то, что ты хочешь смотри www.haskell.org/...iki/Memoization.
Багов не деплоим!!!111
Вторая задача была не из предметной области, но про нее также рассказывали в классическом смысле, а не в рамках 3д графики.
как насчет того, что мне такая задача в принципе не попадется?
Если у вас есть набор обобщенных воспоминаний, то это как картотека для подсознания, не надо держать в уме доказательства и определения по книге. Нужно понимать, что это может пригодится, а может и нет, мне пригодилось и я рад, что не зря учил.
как насчет того, что вам попадется задача в предметной области с которой вы даже не знакомы?
те же тензоры, у меня друг занимается биоинформатикой(не моя предметка), но один раз за пивом, когда он описал проблему, с которой боролся уже месяц (получает ph.d), я опять по наитию подсказал ему про них, вышло так. Через 3 месяца его статья прошла на конференцию первого класса, почему он не знал о них? Я не знаю, может просто упустил при обучении...
гм. когда-то я на него «смотрел» в рамках grails , чет не заметил там функциональностиGrails это ж фреймворк, кстати очень хороший на мой взгляд. А функциональности там завались, особенно метасистема хороша.
Он популярно рассказывает о функциональных примочках, на хабре есть перевод около 80% статей. Ищи в поиске.
просто память мне «подкинула» что let похож на let из бейсика (вроде ?) а where больше из sql ...Математические метафоры лучше подходят для Haskell, where SQL это ж указание множества, а тут список переменных или объявления внутренних функций.
Языку вообще около 20 лет, его создатель работает в MS Research. Они одни из первых предложили интересные идеи для concurrency — Software Transactional Memory(STM). Конечно ноги изначально росли из академической среды, но где-то с 2006 года он очеловечился. Есть в США даже фирмы которые работают только с ним.
С Clojure другая фишка, его создатель Рич Хики, гениальный адаптатор, на мой взгляд, он сначала пытался в лисп подтянуть джаву, потом забил на 2 года ушел в проектирование. И получился диалект лиспа(отмечу не канонический — lisp-2) на JVM, в виде Сlojure. И теперь туда попадают лучшие идеи типа STM, но сообщество молодое, всего 5 лет, однако последние год очень активное.
Вообще неважно какой ФЯП ты будешь курить, это как другой взгляд на мир, для понимания целостности картины очень полезно, пускай ты даже много не напишешь.
Мне лично нравится, но в реальном мире это гибридный подход обычно.
то вышка — вообще впустую потраченное время.
Ну вот попалась задача, где нужно было сеть базовых станций анализировать по геометрическим и функциональным параметрам одновременно. Если б не было вышки, я б не знал, что гуглить нужно тензоры. Или что для 3д графики лучше использовать кватернионы, а не Эйлеровы матрицы преобразования. Это знания энциклопедические, но полезные когда нужно вглубь уйти, а так даже не знал бы с какой стороны зайти.
Смотри на Haskell, Clojure, Groovy — последний быстрее всего изучается, но Хаскелл интереснее будет.
это как в математике «пускай переменная а будет» «let a be», или наборот как в физических формулах «F=ma, где m- масса тела, a — ускорение » «F=ma, whereвот начал читать про haskell но как-то меня смущает, что конструкция «where» позволяет объявить «подпрограммы» после кода, а let — перед вызывающим кодом :) ,
Это на само деле удобно, надо привыкнуть или ты курсовые по физике не писал?
скорость
Хаскель генерится в С, с опцией -o компилятора может в определенных задачах выдавать скорость равную С. Если много ленивых вычислений то не будет, есть проблемы space leak из-за них.
взрослость системы
В Haskell либ завались на всякий вкус и цвет, разве что для новых БД приходится свои драйвера писать, в виде оберток на Сшными. В Сlojure много хипстерских вещей(читай не нужных и понтовых), вот там приходится много самому писать, но сообщество развивается.
В Хаскелл есть замечательный вывод типов и поиск по образцу (pattern matching), который вносит ясность при чтении кода.
можно, библиотека Functional Java для этого есть.
В продакшине Haskell и Clojure, части более крупного проекта, в виде библиотек к «бааальшому» java приложению, где-то по 5000 LoC каждый.
И таки да, я рекомендую и то и то другое, т.к вначале все писалось на java и было громоздко. Еще есть «скриптота» на Groovy на серверах, для выполнения системных тасков и билды на Gradle, но я им перестал заниматься уже месяцев 8 как.
Ребята из параллельной команды, пишут вообще на Scala, но их проект влили в фирму, так бы тоже Java была.
Особых проблем в таком «зоопарке» нет, т.к все на JVM поэтому логи общие и поддерживать можно нормально.
и? есть противоречия?
Я же сказал, что замена произойдет очень нескоро
Это не произойдет, нет ключего преимущества, более вероятно, что Google зафорсит Go на замену С++ и так распиарит, что все потихоньку пойдут по их стопам...
Это как со Scala, говорят что заменит Java, но когда хз.
У вас видимо мало опыта, раз вы так говорите, Scala никогда тоже не заменит Java, в 8ке появится большая половина фишке Scala, которые сейчас доступны через Functional Java библиотеку. Говоря об этих языках стоит думать только о JVM, а что будет над ней Java, Scala, Groovy, Сlojure или что-то еще не суть важно, но скорее всего симбиоз.
Да он хорош в определенных областях и его теснят там где, нужно уменьшить порог вхождения.
Его никто не закапывает, столько легаси кода написано за 30 лет, что еще на 30 лет работы хватит. Тем более с обновленным стандартом, он стал поприличнее выглядеть.
Не знаю предистории, может быть действительно посыл был, аля прогнали из пеочницы, поэтому: «я сделаю свой С++ с блекджеком и проституками» )
Есть инсайдерская информация?
Завтра поменяется политика внутри компании MS и все начнуть на F# писать. Google ограничивает сотрудников 4мя языками.
К сожалению, современный мир ПО, это «зоопарк технологий и языков» и что да как будет тяжело предсказать. И что все будут писать на одном стеке тож сомнительно.
Силу почувствуй, юный падаван...©