ailev.ru

Обсуждение

В архиве: 24 комментария.

Читать и комментировать в ЖЖ ↗

Имя не сохранено · 7 октября 2014

Комментарий

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

potan · 7 октября 2014

Комментарий

А ранних версиях Rust был REPL. Правда, у меня стабильно в корку падал. Может еще вернут - llvm сервис для этого предоставляет.

Анатолий Левенчук · 7 октября 2014

Комментарий

В этом-то и фишка, что один язык к REPL идёт, а другой от него. Я это как-то и ощущаю. Базисное различие для меня. Ну, и там ещё детали про llvm против AOT компиляции. Rust более на AOT, конечно, нацелен -- и там не до REPL при этом обычно.

Ответ на комментарий

Анатолий Левенчук · 7 октября 2014

Комментарий

Что деградация? Что такое "следующий мета-уровень"? Дельфи -- это ж был слегка усиленный пакетами типа адовских паскаль, чего там мощного и парадигмального? Я понимаю, что в нулевых отрабатывались концепты программирования-в-большом, а предыдущие языки обслуживали программирование-в-малом. Но и это не так, линия smalltak и self это обсуждала ещё в начале восьмидесятых (но всё это оборвано в Java, к сожалению). Так что я вижу тут не деградацию, а новый виток спирали и расцвет удачных бутончиков прошлого.

Ответ на комментарий

Имя не сохранено · 7 октября 2014

Комментарий

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

Анатолий Левенчук · 7 октября 2014

Комментарий

А подробнее -- ты на что намекаешь? Понятно, что все "разбирательства с типами" сейчас происходят главным образом с функциональными языками, но что такое "разбор типов", пардон мой pun intended?

Ответ на комментарий

Имя не сохранено · 7 октября 2014

Комментарий

Ну, пишешь разборный тип или типаж, а потом case-ом его разбираешь по вариантам:
// !scala
trait Expr

 case class Number(n: Int) extends Expr

 case class Sum(e1: Expr, e2: Expr) extends Expr 
// ...
def eval(e: Expr): Int = e match {

 case Number(n) => n

 case Sum(e1, e2) => eval(e1) + eval(e2)
}
match здесь обобщает и распространяет на интроспекцию switch, как можно понять. Можешь глянуть мой конспектик недописанный (не факт, что более внятные тексты по-русски существуют). Я просто поймал себя на том, что когда решал простые задачки, несколько раз писал файл с определением типа и кучей данных, вместо того, чтобы организовывать нормальное чтение данных из файла.

Ответ на комментарий

beldmit · 7 октября 2014

Комментарий

А где здесь графовые базы данных?

Анатолий Левенчук · 7 октября 2014

Комментарий

То есть ты про эмуляцию multiple dispatch в Scala? Это во многих языках есть, а хоть и в Си: http://en.wikipedia.org/wiki/Multiple_dispatch (но как я понимаю, в Scala более прямые методы реализации). Я просто не понимаю, что ты хочешь сказать -- хотя твои намёки на файл-как-базу-данных и работу с типизацией данных в нём через систему типов языка я воспринимаю, но по-прежнему не понимаю, что именно ты говоришь, на какой вопрос отвечаешь.

Ответ на комментарий

Имя не сохранено · 7 октября 2014

Комментарий

> в тексте Graydon Hoare всё более-менее систематически изложено, включая важность Forth Перечитал оба текста дважды, но про Forth увидел только два упоминания: "Possible exceptions might be the Forth lineage" и на картинке про популярность разных языков программирования. Может, была ещё какая-то ссылка?

Анатолий Левенчук · 7 октября 2014

Комментарий

Графовые базы данных, семантический веб, трипл сторы -- это всё разные имена для одного и того же явления. В Julia этого в явном виде нет, но в этом и есть суть моего псто: графовые базы данных с их языками запросов решают примерно те же задачи, что и multiple dispatch (с точностью до того, что это разные задачи, разные области применения разных языков, разная терминология, разная теория -- и я лишь верхним чутьём улавливаю их какую-то похожесть).

Ответ на комментарий

Анатолий Левенчук · 7 октября 2014

Комментарий

Да-да. (Possible exceptions might be the Forth lineage or the Oberon System, each with similar minimal, efficient, interactive compilers; there are 77 Schemes, a dozen MLs and 37 Common Lisps vs. 126 Forths.). Для меня лично это очень важное замечание и сравнение лисповой и фортовой экосистем -- включая разнообразие диалектов, разработки спецжелеза, стремительный расцвет и не менее стремительное вываливание из мейнстрима куда-то в ниши.

Ответ на комментарий

Имя не сохранено · 7 октября 2014

Комментарий

"Почему симпатична" - потому что (единственное заметное) новое шевеление в интересующей exploratory нише. На безрыбье. Всё остальное существует по 20 и более лет.

Имя не сохранено · 7 октября 2014

Комментарий

Это не эмуляция мультиметода, это стиль, при котором проблема мультиметодов не должна возникать по идее. Я сам здесь несколько плаваю, поскольку в детстве типизованное ФП (ML and the kind) как-то пролетело мимо.

Ответ на комментарий

Имя не сохранено · 7 октября 2014

Комментарий

> Графовые базы данных, семантический веб, трипл сторы -- это всё разные имена для одного и того же явления. нет, конечно. все три термина даже на разных уровнях находятся. графовая база данных - про то, как она внутри устроена, про engine. трипл стор - это какая у нас schema (которая, в свою очередь, может лежать в реляционке, а может и нет). семантический веб - это про semantic entities и их relationships безотносительно того, какая там schema и где и как они хранятся.

Ответ на комментарий

Анатолий Левенчук · 7 октября 2014

Комментарий

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

Ответ на комментарий

Имя не сохранено · 8 октября 2014

Комментарий

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

Ответ на комментарий