По истечению срока отчуждения имущественных прав в пользу издателя открыт свободный доступ к книге "Наглядная статистика. Используем R! (http://ashipunov.info/shipunov/school/books/rbook.pdf)" (М., ДМК Пресс, 2012), рассказывающей о языке программирования R (http://www.r-project.org/),
ориентированном (http://ru.wikipedia.org/wiki/R_%28%D1%8F%... на решение задач по статистической обработке, анализу и визуализации данных. Книга доступна как в формате PDF (http://ashipunov.info/shipunov/school/books/rbook.pdf), так и в виде исходных текстов LaTeX (http://ashipunov.info/shipunov/software/r/src.tar.gz), пригодных к самостоятельной сборке.
URL: http://r-statistics.livejournal.com/56811.html
Новость: http://www.opennet.me/opennews/art.shtml?num=40196
По старинной традиции здесь будет обсуждение NumPy и компании.
Почему не Julia?
http://julialang.org/
Обсудили недавно> Julia, like Dylan and Lisp before it, is a Goldilocks language. Done by a bunch of Lisp hackers who seriously know what they're doing.
> It is trying to span the entire spectrum of its target users' needs, from numerical inner loops to glue-language scripting to dynamic code generation and reflection. And it's doing a very credible job at it. Its designers have produced a language that seems to be a strict improvement on Dylan, which was itself excellent. Julia's multimethods are type-parametric. It ships with really good multi-language FFIs, green coroutines and integrated package management. Its codegen is LLVM-MCJIT, which is as good as it gets these days.
> http://lambda-the-ultimate.org/node/4990
Устаревший калькулятор. Не понимаю зачем нужны специализированные языки для вызова математических функций. Любой динамический язык с REPL не хуже справляется с этой функций, зато отличается универсальностью и доступом не только к математическим библиотекам. Может быть раньше в таких языках был дефицит, и во времена фортрана REPL бывал только в лиспе, но теперь-то есть выбор. И я не вижу в R никаких преимуществ как в языке на уровне синтаксиса и семантики. А коллекцию библиотек можно устроить для любого языка.
и что делать теперь?
> и что делать теперь?Вдоль, что ж ещё-то.
> А коллекцию библиотек можно устроить для любого языкаА также для любого языка можно: изменить синтаксис почти каким угодно образом, построить сколь угодно эффективный транслятор для любой платформы, добавить (или убрать) почти любые фичи вплоть до dependent types и concatenative programming. И что самое смешное - всё вышеперечисленное вместе взятое менее трудоемко чем написание тех самых коллекций библиотек.
>> А коллекцию библиотек можно устроить для любого языка
> А также для любого языка можно: изменить синтаксис почти каким угодно образом,
> построить сколь угодно эффективный транслятор для любой платформы, добавить (или убрать)
> почти любые фичи вплоть до dependent types и concatenative programming. И
> что самое смешное - всё вышеперечисленное вместе взятое менее трудоемко чем
> написание тех самых коллекций библиотек.Это будет уже создание нового языка. Как показывает практика, это происходит очень редко и весьма трудоёмко. А поводу математических библиотек - их можно не только с нуля писать, но и подключать чужие через всякие интерфейсы. Это позволяет использовать legacy библиотеки, написанные на R и фортране. Только зачем писать на этих языках новые библиотеки?
>[оверквотинг удален]
>> А также для любого языка можно: изменить синтаксис почти каким угодно образом,
>> построить сколь угодно эффективный транслятор для любой платформы, добавить (или убрать)
>> почти любые фичи вплоть до dependent types и concatenative programming. И
>> что самое смешное - всё вышеперечисленное вместе взятое менее трудоемко чем
>> написание тех самых коллекций библиотек.
> Это будет уже создание нового языка. Как показывает практика, это происходит очень
> редко и весьма трудоёмко. А поводу математических библиотек - их можно
> не только с нуля писать, но и подключать чужие через всякие
> интерфейсы. Это позволяет использовать legacy библиотеки, написанные на R и фортране.
> Только зачем писать на этих языках новые библиотеки?Тю. А как же NIH-синдром? Или ты всерьез полагаешь, что им страдают только линуксоиды?
> Это будет уже создание нового языка. Как показывает практика, это происходит очень редко
> и весьма трудоёмко.Вам не приходилось писать на lisp'е? Думаю нет, иначе бы вы не употребляли бы слово "редко". Слово "трудоёмко" тут более уместно, но мне почему-то кажется, что вы переоцениваете трудоёмкость этого процесса. Если исключить из рассмотрения создание языков внутри lisp'а, то создать язык конечно сложнее, чем написать библиотеку, но нельзя сказать чтобы это было бы как-то невероятно сложно. Сложно написать *сильный* оптимизирующий компилятор, но это не так уж и критично, как может показаться на первый взгляд. Новые языки появляются реже, чем новые библиотеки лишь из-за недостатка хороших идей, которые можно было бы заложить в основу нового языка.
Что представляет из себя R я не скажу -- не вдавался в подробности. Думаю на неделе книжку почитаю, а пока -- не знаю. Но, отмечу, что класс задач выбранный для R достаточно обширен для того, чтобы под него создать самостоятельный язык.
> А поводу математических библиотек - их можно не только с нуля писать, но и подключать
> чужие через всякие интерфейсы. Это позволяет использовать legacy библиотеки, написанные
> на R и фортране. Только зачем писать на этих языках новые библиотеки?Чужие и через интерфейсы -- это хорошо звучит ровно до тех пор, пока не возникнет желания использовать какую-нибудь библиотеку низкоуровневого языка, типа C/C++, из языка высокоуровневого. Подобные попытки рельефно демонстрируют убогость API низкоуровневых языков, загоняют в угол и вынуждают либо писать низкоуровневый код на высокоуровневом языке (если он позволяет подобное извращение), либо писать крайне неэффективный код, который, например, постоянно преобразовывает "высокоуровневые" массивы в "низкоуровневые" и обратно. Осознание этого незамедлительно порождает сильный приступ NiH-синдрома. Или желание отказаться от высокоуровневого языка в пользу низкоуровневого, потому что низкоуровневый код проще писать на низкоуровневом языке.
Собственно R и написан под влиянием от пройденного курса SICP :)
>> Это будет уже создание нового языка. Как показывает практика,
>> это происходит очень редко и весьма трудоёмко.
>
> Вам не приходилось писать на lisp'е?О, не могу не подтвердить. У меня такое чувство, что любой зажиточный проект на лиспе надо начинать с изучения синтаксиса этого языка, определённого разработчиками. Потому что открываешь проект, смотришь, и думаешь сразу же: "не узнаю". После чего приходит осознание, мол, вот это макрос, это макрос, это тоже макрос, а вот эти макросы порождают вот эти макросы, а они в свою очередь порождают уже что-то до боли знакомое... =)
Вообще, чтобы не утверждать, что создание нового языка - есть штука сложная, достаточно взглянуть на главу с описанием метациклического интерпретатора в том же SICP. Там показано, как просто можно написать на лиспе интерпретатор лиспа с новыми возможностями вычисления. Если не ошибаюсь, они в этом интерпретаторе сделали lisp ленивым, но я давно читал.
Затем что удобно>As an old school (over 50) scientist who has and continues to use a number of these tools I will add my two cents. I have worked with colleagues who still write every piece of code in Fortran, from trivial one-off data analysis jobs to code that dominates some of the worlds supercomputers. Recent Fortran dialects (F90, F95, F2003, F2008) are IMHO, some of the best designed languages in existence. Decades of experience with high performance computing has led to a quite impressive language development.
>http://programmers.stackexchange.com/a/186059
> Не понимаю зачем нужны специализированные языки для вызова математических функций.А ты в универе любил тройной интеграл на доске расписывать?
> А ты в универе любилтолько за универом
> тройной интеграл
а это чё за хрень?
Видимо кто не расписывал, тому R и не интересен. Мне вот в универе тройные тоже не доводилось. Но насколько помню, интегралы проблем не вызывали особых. Кое кто из группы временами брал даже неберущиеся )) Вот дифф. уравнения решать было сложнее.
Предполагаю, что он может понадобится либо в науке, либо в инженерном деле при разработке вещей, где требуется обрабатывать много данных при проектировании и наладке. А в книжке могут оказаться примеры, которые будут полезны и при использовании других языков/библиотек, так что качнул. Всем кто занимается разработкой для пром. задач приходится время от времени иметь дело со стат. данными.
1) Тут "тройной интеграл" как пример избыточности синтаксиса языка общего назначения :)Если вы пишите программу (нечто что будет исполняться не под вашим чутким руководством и во "враждебной обстановке"--- читать: в качестве входных данных будет загружаться что угодно, в том числе с явно деструктивными целями :), то вам нужен язык общего назначения. (хотя сейчас есть и куча библиотек которые всякие конечные автоматы и очереди реализуют "в чистом виде").
Если перед вами стоит задача "обработать данные", то такой язык общего назначения как питон подходит так же как перл. И все имеющиеся дсл для удобной работы по вычислению, и даже "попяченный" из R синтаксис неудобно "выпирает" что в перле, что в питоне. Код все равно получается слишком многословен.
Для _конкретных_ данных не нужно в 99% случаев страница-полстраницы кода (без чего на языке общего назначения не обойтись), а нужна 1 строка специализированного языка. И строка работает именно с данным датасетом, будет ли она работать с другим датасетом голова у исследователя не болит совершенно.
2) Помимо репла надо удобно сохранять состояние виртуальной машины. Даже лисп и схема по сравнению с R слабо выглядят. Нечто эквивалентное по функциональности это APL(J) репл.
Без этой "малости" всегда приходится писать в стиле "код реален -- данные мнимы". А для небольших расчетов и исследовании вариантов анализа (которых более 90% всех случаев) как раз наиболее удобен и производителен подход когда "код мнимый -- содержимое образа ВМ реально".
Как то так.
Так рассуждать, так на каждую область деятельности человека нужен будет свой язык. Я не против R, видимо кому-то он нужен и они считают его удобным, молодцы, что сделали удобный для себя инструмент. Но, я считаю подобный подход неправильным, когда для деления нужно будет изучать язык деления, а для сложения - язык сложения. Для математики есть язык - математика, точнее - wolfram )). Ну, или придумали бы какой-нибудь свободный аналог. К сожалению, пока maxima слабый конкурент для wolfram, хотя я за нее. А написать расширения на wolfram для решения задач статистики - ну очень просто. Потом только откомпилить для быстроты.
То есть твой путь - у меня есть молоток, значит всё вокруг гвозди? Даже если это шурупы? Удачи! :)PS: Посмотри на профессионалов малыш. Даже тот же строитель имеет набор молотков а не одну кувалду. Впрочем всё равно ведь не поймешь ...
Видите ли, любезный юноша, в Вашей аналогии про набор инструментов у "профессионала" - это как набор математических методов, а не набор языков для решения отдельных задач математики. Надеюсь разница понятна? Метод аналогий, вьюнош, очень часто приводит к неверным выводам, как в Вашем случае. Вам еще надо учиться, но сначала прочитать изучить статью из вики http://ru.wikipedia.org/wiki/Демагогия . Я ее уже Вам советовал раньше. А, и конечно же я не против, если кто-то начнет придумывать специальный язык для нахождения корней полиномов и отдельный язык для вычисления производных. И, напоследок, профессионал - это всего лишь тот, кто за свои услуги берет деньги. Об уровне его навыков это никак не говорит.
да, один раз на выставке я видел перца который ГИС "на математике" написанный демонстрировал :)
> да, один раз на выставке я видел перца который ГИС "на математике"
> написанный демонстрировал :)А что тут странного, эта ГИС не работала? Да, конечно, во всем нужна мера. Но, действительно, на wolfram можно написать ГИС и довольно быстро.
>> да, один раз на выставке я видел перца который ГИС "на математике"
>> написанный демонстрировал :)
> А что тут странного, эта ГИС не работала? Да, конечно, во всем
> нужна мера. Но, действительно, на wolfram можно написать ГИС и довольно
> быстро.Вы себе хорошо представляете _сколько_ всего надо повторить, что бы получить пригодную к практической деятельности ГИС? Там один ввод вывод и преобразования систем координат опупеешь в Математике определять и тестировать.
И главное зачем?! Еще один "велосипед" поверх проприетарного движка не имеющий никаких преимуществ? Даже просто модуль с его моделькой на математике писать не рационально по этой причине.
Вы не патетически вопрошайте сколько всего надо повторить, а ответьте хотя для себя на вопрос: работала ли ГИС на "математике". Если работала, то Ваш вопрос теряет смысл. Чтобы говорить про опупеешь, надо хотя бы знать "математику": знать какие солверы в ней имеются и уметь программировать в ней, из Ваших восклицаний становится понятно, что Вы ее не знаете, извините. Или знаете очень мало.>И главное зачем?! Еще один "велосипед" поверх проприетарного движка не имеющий никаких преимуществ?
Собственно об этом и был вопрос, зачем создавать новый язык для решения задач статистики, если нужно сделать всего лишь интерфейс к существующим библиотекам? То есть создать целый язык для задач статистики - это нормально, а написать на той же "математике" работающую ГИС это ненормально. Кстати, а на чем "правильном" нужно писать ГИС, чтобы не "опупевать от преобразований систем координат", может уже создан специальный язык для написания ГИС?
1) Не работала (я специально подошел и поспрашивал :).2) Вы уловили суть "язык общего назначения" для "абстрактных вычислений" в лице огороженной Математики не есть ГИС (как классический представитель "специализированного языка для прикладной области").
PS у вас жир сочиться :)
PPS и кстати пихать в тот же GRASS питон настолько тухло получается на практике, что скорее уж я GRASS через библиотеку интерконнекта из R буду использовать :)
1) Какой-то странный тогда перец - демонстрировал неработающую ГИС. А был ли перец?
2) Я польщен
PS. Всегда умиляют "контразведчики", разоблачающие троллей: "Ужо мы не поддадимся на провокацию". Любого, кто задает вопросы, нужно записать в тролли, потому что он будоражит сформировавшийся мирок обывателя.
PPS. Я же написал, видимо надо специальный язык для написания ГИС, и все будет коннект. Ага.
Какой тролль пошел недоверчивый.Такую херню придумать просто так я не в силах, так что был перец с математикой (о! "для пожарников ГИС" писал) :)
> а это чё за хрень?Во, сразу видно питониста.
>> тройной интеграл
> а это чё за хрень?С его помощью можно, например, посчитать объём Оливье вытесненного лицом, помещённым в тазик, и ограниченный, сверху, плоскостью параллельной краю тазика.
Я думаю лучше так: двойной интеграл нужен для нахождения площади Ленина, а тройной - для нахождения объёма Берии.