C#

Jan. 29th, 2011 10:09 pm
juan_gandhi: (Default)
[personal profile] juan_gandhi
Только что пролистал Monadic parser combinators in c#

Ну и внимание вопрос - что за фигня с джавой творится? Ну ладно, у нас есть скала. Но ведь толпы джавщиков падают в обморок от самой идеи начинать использовать такой сложный для их ума язык. А шарпщики и ухом не ведут, у них теперь есть парсеры и монады (а замыкания были всегда).

Конечно, благодарить надо в частности и травоядное стадо из Борланда, во главе с мотоциклистом Филипом, которые были и рады избавиться от нарушителя покоя... но и весь честной джавный мир тоже хорош.

Но на венде, конечно, работать сугубо вломак.

Date: 2011-01-30 06:52 am (UTC)
From: [identity profile] sdfgh153.livejournal.com
Не приведи Господь. Я по граблям находился с моной в свое время, сервак одного проекта писался на нём, работал и под линуксом и под виндой.
Вот под виндой он просто работал, а под линуксом с оговорками из-за которых пришлось процентов 30 кода переписывать с учетом костылей.

Date: 2011-01-30 07:24 am (UTC)
From: [identity profile] antilamer.livejournal.com
А можешь привести какие-нибудь примеры - в каких областях у него были проблемы? Давно это было?

Date: 2011-01-30 07:26 am (UTC)
From: [identity profile] sdfgh153.livejournal.com
Это было в 2008. Проблемы были с кодировками, почему-то в линуксе по дефолту использовалась UTF-16 везде. И были проблемы с реализацией Network классов. Я в деталях не помню теперь уже :)

Date: 2011-01-30 07:58 am (UTC)
From: [identity profile] antilamer.livejournal.com
Хм. Ну, может, за 3 года исправили уже :) Меня понемногу в связи с недавними событиями в мире джавы гложет мысль "закопать джаву, писать на сишарпе, контрибьютить в моно если что не так" :) (ну или полюбить другие JVM-based языки типа скалы)

Date: 2011-01-30 08:01 am (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
Эти "недавние события" начались ещё где-то в 2008-м.

Когда Гафтер ушел в Майкрософт.

Date: 2011-01-30 09:08 am (UTC)
From: [identity profile] ekr.livejournal.com
Аналогично.
Но имхо лучше смотреть в сторону Scala/Clojure.

Есть подозрение, что MS не будет всерьез помогать развиваться mono, и не факт, что сообщество сможет обеспечить это развитие.

Date: 2011-01-30 10:15 am (UTC)
From: [identity profile] xeno-by.livejournal.com
А почему не Хаскелл? Ты ж вроде на нем достаточно активно пишешь.

Date: 2011-01-30 10:17 am (UTC)
From: [identity profile] antilamer.livejournal.com
Я все же пока воспринимаю его скорее как кузницу идей, нежели как универсальный инструмент разработки. Не знаю, почему :)

Date: 2011-01-30 10:30 am (UTC)
From: [identity profile] xeno-by.livejournal.com
Да простит меня хозяин журнала за оффтоп, но я давно у тебя хотел узнать как ты готовишь Хаскелл.

Интересует IDE/текстовый редактор со следующими фичами:
1) Интегрированный REPL
2) Навигация по коду аля решарпер (более подробно вот тут: http://xeno-by.livejournal.com/34679.html)
3) Средства рефакторинга (по сути, нужны только переименование и вынос переменной)
4) Интегрированная справка по API (что-то типа Object Browser в студии)

Если идеала нет, то просто расскажи свой воркфлоу, плиз. А то я читал эпичный тред у thesz (http://thesz.livejournal.com/596553.html), но нифига не понял + с того момента уже прошло три года.
Edited Date: 2011-01-30 10:31 am (UTC)

Date: 2011-01-30 10:33 am (UTC)
From: [identity profile] antilamer.livejournal.com
Да вообще я на хаскелле же мало пишу - вима хватает :) Единственный раз когда серьезно писал (timeplot), использовал Leksah. Это было 2 года назад и она уже тогда была довольно хороша.

Date: 2011-01-30 06:54 am (UTC)
From: [identity profile] sdfgh153.livejournal.com
Не прибедняйся, а? :)
У вас там ещё clojure есть и нормальный jRuby и Scala, которая жива пока в отличие от Nemerle.

Date: 2011-01-30 06:59 am (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
Мне-то что, я пишу дома на скале, в ус не дую. Но в целом-то глупо получается. Толпа леммингов сама себя загнала в тупик.

Date: 2011-01-30 11:03 am (UTC)
From: [identity profile] http://users.livejournal.com/_windwalker_/
Кстати замыкания хотят в 8 жабу добавить, с упращением этого мудацкого синтаксиса с анонимными классами. Т.е. классы всё равно будут анонимными, но компилятор возьмёт на себя труд их оформления.

Хотя когда эта 8-ка будет - через 4 года.

PS. Надо таки посмотреть скалу, да. Может понравится и соскочу на неё.

Date: 2011-01-30 02:12 pm (UTC)
From: [identity profile] jakobz.livejournal.com
В C# замыкания и просто лямбды так и работают: если не зацепил ничего в замыкание - метод с абракадабристым именем сгенериться; если зацепил что в замыкание - сгенерится класс и все зацепленные локальные переменные переедут в него.

Date: 2011-01-30 04:58 pm (UTC)
From: [identity profile] antilamer.livejournal.com
Да пока они их добавят, уже все, кого замыкания в джаве могли бы интересовать, перейдут на скалу или другие языки :)

Date: 2011-01-30 10:28 am (UTC)
From: [identity profile] alexott.livejournal.com
из того, что я вижу - большинству жабщиков это совершенно не нужно... у нас уже дошло до того, что я им рассказываю про maven, emma, hudson и т.д., и даю советы как писать гуй правильней

Date: 2011-01-30 11:11 am (UTC)
From: [identity profile] fenikso.livejournal.com
Java - язык Си 21го века?

Date: 2011-01-30 02:31 pm (UTC)
From: [identity profile] thedeemon.livejournal.com
Кобол.

Date: 2011-01-30 02:16 pm (UTC)
From: [identity profile] jakobz.livejournal.com
Многие коллеги-сишарперы до выхода C#3 тоже не понимали как круто иметь лямбды. Я радостно им рассказывал как будет круто, а на меня смотрели стеклянными глазами. Вот когда попробовали - тогда пришло понимание и радость. В последнее время вообще редко вижу чтобы писали алгоритмы по-старинке: со временными списками, вложенными циклами и прочими радостями.

Date: 2011-01-30 02:33 pm (UTC)
From: [identity profile] thedeemon.livejournal.com
Так объявляемые по месту делегаты же были и до 3-ей версии. Более многословно, но вполне себе.

Date: 2011-01-30 04:59 pm (UTC)
From: [identity profile] antilamer.livejournal.com
Ага, припоминаю как переписал несколько сотен строк в лабе однокурсника на циклах и массивах - в пару десятков на делегатах и массивах. Конечно нечестно - идиоматический пример, матричные вычисления - но все-таки.

Date: 2011-01-30 09:41 am (UTC)
From: [identity profile] huzhepidarasa.livejournal.com
Надо будет ради смеха на c++ (c++0x?) парсер-комбинаторы написать.

Date: 2011-01-30 10:27 am (UTC)
From: [identity profile] alexott.livejournal.com
boost.spirit?
P.S. у меня есть библиотека а-ля "парсер комбинаторы", написанная на plain c

Date: 2011-01-30 01:43 pm (UTC)
From: [identity profile] huzhepidarasa.livejournal.com
Спасибо, как же я забыл про спирит. Это ж они, комбинаторы. Давно не писал ничего на бусте.

Date: 2011-01-30 02:10 pm (UTC)
From: [identity profile] alexott.livejournal.com
Но к сожалению оно очень долго компилируется :-( Я использовал версию 1.85, говорят, что 2-я намного лучше и генерирует более быстрый код

Date: 2011-01-30 10:23 am (UTC)
From: [identity profile] xeno-by.livejournal.com
О, хорошо, что вы этот топик подняли.

Меня давно интересует вопрос, насколько практичны монады без поддержки в языке. Я время от времени натыкаюсь в инете на посты про то, как интересно было автору играть с SelectMany/Select или flatMap/map и меня сразу прёт заюзать эту тему на практике.

А в реальности получается, что в силу ограниченности языковой поддержки (в моем случае сишарпа) что-то более-менее сложное закодировать в монадическом стиле можно, конечно, но читать это потом нереально.

С другой стороны, computational expressions в F# это здорово, do-нотация в Хаскелле мне также кажется симпатичной (хотя я на хаскелле не программировал никогда) - потому, что не надо явно писать bind. Ну там поставил точку с запятой и пошел дальше. Здесь я лично для себя усматриваю несомненный смысл.

А что вы думаете по этому поводу?
Edited Date: 2011-01-30 10:24 am (UTC)

Date: 2011-01-30 02:24 pm (UTC)
From: [identity profile] jakobz.livejournal.com
Ну как. Тот же Linq to collections и Linq2SQL - это же они, родные. Кроме того есть еще IObservable, который по сути CPS. Ну или вот эти самые парсеры.

Полные матана хаскель-стайл штуки не будут выглядеть родными в C#, это да. Плюс синтаксис не айс. Но как бы C# не для этого, нет.

Date: 2011-01-30 05:00 pm (UTC)
From: [identity profile] antilamer.livejournal.com
IObservable ftw! Это functional reactive programming!

Date: 2011-01-30 08:50 pm (UTC)
From: [identity profile] tretiy3.livejournal.com
я вот догоняю, что IObservable это тоже самое что IEnumerable.
А вот то, что тут где-то монады (или, по вашему, их присутствие в первом случае и отсутствие во втором) - не догоняю :(

Date: 2011-01-31 05:37 am (UTC)
From: [identity profile] antilamer.livejournal.com
IEnumerable тоже монада.
Но совершенно другая.

Попробуйте реализовать IObservable через IEnumerable и наоборот - получится только в одну сторону.

Date: 2011-01-31 05:56 am (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
А вы вообще не путаете с комонадами? (Это я риторический вопрос задаю, сам ещё не разобрался.)

Date: 2011-01-30 05:43 pm (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
Моё лично мнение, что монадический стиль - это дело такое, широкое. Можно просто идеологию соблюдать, а можно и в хаскельном или скальном стиле. Мне кажется, главное - понимание вопроса.

Profile

juan_gandhi: (Default)
Juan-Carlos Gandhi

July 2025

S M T W T F S
  12345
6789 1011 12
131415 1617 1819
20212223242526
2728293031  

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 21st, 2025 09:37 pm
Powered by Dreamwidth Studios