Re[6]: REPL
От: catbert  
Дата: 20.10.11 15:03
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, catbert, Вы писали:


H>>>Мне нравится подход ideone, в принципе я не против NPad, но я не могу понять, зачем на нужен REPL в виде консоли?


C>>Макросы пробовать, например.


VD>И как ты себе это видишь из РЕПЛ-а?


Так и вижу: подключаешь/объявляешь макрос, пробуешь использовать. Ведь в Nemish каждое выражение создает свою сборку, так что проблем с этим нету. Если научить РЕПЛ показывать AST и TAST, то тулза будет поудобнее Рефлектора.
Re[7]: REPL
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.10.11 16:02
Оценка:
Здравствуйте, catbert, Вы писали:

C>Так и вижу: подключаешь/объявляешь макрос, пробуешь использовать. Ведь в Nemish каждое выражение создает свою сборку, так что проблем с этим нету. Если научить РЕПЛ показывать AST и TAST, то тулза будет поудобнее Рефлектора.


Макрос перед использованием нужно скомпилировать в сборку.

Меж тем в студии, как раз, тестировать макросы очень удобнее. Сразу после перекомпиляции макросы перечитываются.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: REPL
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 20.10.11 16:08
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Здравствуйте, gandjustas, Вы писали:


H>>>Я правильно понял, что на самом деле нужен не REPL а фигня для написания мелких программ (NPad)?


G>>Неправильно понял. Не надо ограничивать инструмент.


H>Я не ограничеваю инструмент, я выявляю требования. Покачто никому небыл нужен инструмент вроде нынешнего nemish, а вот однодокументный редактор с подсветкой и интеллисенсом — хотят.


Ну потому что для .NET и компилируемых языков как-то мало repl вообще существует, поэтому и народ не в курсе. Ща с roslyn наиграется, сразу потребность появится.
Re[4]: REPL
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 20.10.11 16:10
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, gandjustas, Вы писали:


G>>Я очень радовался когда repl в f# увидел, для маленьких программ сильно повышает скорость разработки.


VD>Вот никогда этого понять не могу. Какая разница жать Ctrl+enter по кускам, или один раз F5?


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

VD>А на мало мальски больших прилоежниях это не прокатывает. Это в хаскеле репл может закгужать окромные приложения. Тут же это просто задолбаешся делать.

Ты о чем? Хейлсбегр на build (как и на PDC год назад) показывал как в repl C# загружать оконные приложения.
Re[7]: REPL
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.10.11 16:32
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>Ну потому что для .NET и компилируемых языков как-то мало repl вообще существует, поэтому и народ не в курсе. Ща с roslyn наиграется, сразу потребность появится.


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

А вот за пределами дотнета, в основном, только РЕПЛ и есть. Возьми OCaml, Haskell и прочие распространненые языки. Для них IDE качественной нет, а РЕПЛ хоть отбавляй.

Так что правильнее было бы говорить для Шабпа и Васика реплов не было. Но теперь будут. Радости от этого, правда, не так много.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: REPL
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 20.10.11 16:37
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, gandjustas, Вы писали:


G>>Ну потому что для .NET и компилируемых языков как-то мало repl вообще существует, поэтому и народ не в курсе. Ща с roslyn наиграется, сразу потребность появится.


VD>Для .NET не существует ничего за пределами майкросоят. Ты вот сам-то по какому критерию языки выбираешь? Ведь не по их удобству и возможнсотям.

Библиотеки + инструменты + простота изучения.

VD>А вот за пределами дотнета, в основном, только РЕПЛ и есть. Возьми OCaml, Haskell и прочие распространненые языки. Для них IDE качественной нет, а РЕПЛ хоть отбавляй.

Да, но я как раз говорю за F#, на котором делал пару небольших проектов. Там repl очень помог. Быстрый вариант для ad-hoc тестирования и проверки кода.
Особенно удобно с repl переходить от частного решения к общему.


VD>Так что правильнее было бы говорить для Шабпа и Васика реплов не было. Но теперь будут. Радости от этого, правда, не так много.

Ну и для C, C++, pascal, delphi, assembler нету. Они гораздо более распространены, чем haskell и ocaml. Поэтому будем говорить что для всех (обычно имеется виду 95% и более)
Re[5]: REPL
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.10.11 16:39
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>Суть в том что нажатие f5 может приводить к очень длительному ожиданию выполнения некоторых действий. REPL в этом случае как раз больше всего подходит.


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

Учти еще и то, что шарповский репл работает в отдельном процессе (не в отлаживаемом). Его окружение — это то что ты забил через консоль или загрузил из скриптового файла.

VD>>А на мало мальски больших прилоежниях это не прокатывает. Это в хаскеле репл может закгужать окромные приложения. Тут же это просто задолбаешся делать.

G>Ты о чем? Хейлсбегр на build (как и на PDC год назад) показывал как в repl C# загружать оконные приложения.

А Бокс, десять лет назад, показывал как C# рвет С++ по скорости создания объектов.
Не уже ли не ясно, что это просто фокусы?

Ну, да мелкую форму ты сможешь сделать. А что дальше? Захотел ты тип поля в этой форме поменять, и что делать? Перезапускать все команды заново?

Было бы намного лучше если вместо этого репла сделали бы полноценное редактирование кода без прерывания отладки. Чтобы можно было лябды менять и классы новые добавлять. Вот это дало бы реальную прибавку к производитльности. Но этого, видимо, в ближайшее время не будет, потому что это сложно. А вот репл сделать довольно просто. Вот его и сделали. Все по радуются, поиграются (с неделю) и пойдут опять F5 жать. А репл останется для игр которые раньше во временных проектах производились. У меня вот номер косольного проекта на некоторых машинах до 300 доходит .
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: REPL
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.10.11 16:50
Оценка:
Здравствуйте, gandjustas, Вы писали:

VD>>Ты вот сам-то по какому критерию языки выбираешь? Ведь не по их удобству и возможнсотям.

G>Библиотеки + инструменты + простота изучения.

Да ладно! Если это были бы твои реальные критерии, то ты бы выбрал Яву и IDEA или Эклпис. Библиотек там в сто раз больше, простота изучения ниже плинтуса, и инструменты лучше в мире.

Ты выбираешь решение от большого дяди (гиганта индустрии). И не надо врать ни мне, ни себе. Потому как если бы тебе нужен был хороший язык, то ты выбрал бы Немерл или хотя бы Бу (если для дотнета, или Скалу, Хаскель и т.п.).

VD>>А вот за пределами дотнета, в основном, только РЕПЛ и есть. Возьми OCaml, Haskell и прочие распространненые языки. Для них IDE качественной нет, а РЕПЛ хоть отбавляй.

G>Да, но я как раз говорю за F#, на котором делал пару небольших проектов. Там repl очень помог. Быстрый вариант для ad-hoc тестирования и проверки кода.

Ну, так и что ты ОКамл, в свое, время не выбрал? Там репл был испокон веков.
Почему не сожалел о его остутсвии когда 10 лет писал на Шарпе?

G>Особенно удобно с repl переходить от частного решения к общему.


Репл без комплит вообще вещь мало нужна. Это только от бедности. А с комплитом он конечно полезен, но не сильно полезнее простой IDE. Разве что при изучении языка. Вот ты учил F#, вот он тебе и помог. Но как только ты его освоишь, то и РПЕЛ будешь использоввать все реже.


G>Ну и для C, C++, pascal, delphi, assembler нету.


http://neugierig.org/software/c-repl/
Про Дельфи лучше не будем.

G>Они гораздо более распространены, чем haskell и ocaml.


Ну, так они мэйстрим языки. А РЕПЛ родился в среде тех кто строем не привык ходить.

G>Поэтому будем говорить что для всех (обычно имеется виду 95% и более)


Я тебе это к тому сказал, что твои слова про отсуствие репла для статически типизированных языко — это не более чем выдумка. Просто надо в других местах было искать.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: REPL
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 20.10.11 17:00
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, gandjustas, Вы писали:


G>>Суть в том что нажатие f5 может приводить к очень длительному ожиданию выполнения некоторых действий. REPL в этом случае как раз больше всего подходит.


VD>Ты сильно не обольщайся. Репл на больших проектах тоже вещь довольно бесполезная (с системой типов донета, по крайней мере). Изменить тип ты уже не сможешь. А это означает, что тебе скоро прийдется перезапуститься.


VD>Учти еще и то, что шарповский репл работает в отдельном процессе (не в отлаживаемом). Его окружение — это то что ты забил через консоль или загрузил из скриптового файла.


VD>>>А на мало мальски больших прилоежниях это не прокатывает. Это в хаскеле репл может закгужать окромные приложения. Тут же это просто задолбаешся делать.

G>>Ты о чем? Хейлсбегр на build (как и на PDC год назад) показывал как в repl C# загружать оконные приложения.

VD>А Бокс, десять лет назад, показывал как C# рвет С++ по скорости создания объектов.

VD>Не уже ли не ясно, что это просто фокусы?

Где фокусы? Действительно создание объектов работает в C# быстрее, чем в C++.

VD>Ну, да мелкую форму ты сможешь сделать. А что дальше? Захотел ты тип поля в этой форме поменять, и что делать? Перезапускать все команды заново?

Да, а почему нет? Можно не все, а часть перезапускать. Ты же предлагал перезапускать всю программу

VD>Было бы намного лучше если вместо этого репла сделали бы полноценное редактирование кода без прерывания отладки. Чтобы можно было лябды менять и классы новые добавлять. Вот это дало бы реальную прибавку к производитльности. Но этого, видимо, в ближайшее время не будет, потому что это сложно. А вот репл сделать довольно просто. Вот его и сделали.


Отличная логика: вот полностью реализовать инструмент тяжело, поэтому давайте не делать вообще. С таким подходи и смысла что-то делать нету, ведь любой нетривиальный функционал сделать тяжело.
Re[7]: REPL
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.10.11 17:15
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>Где фокусы? Действительно создание объектов работает в C# быстрее, чем в C++.


Ну, да это не фокусы. Это банальная лож и развод. В С++ объект одного и того же класса можно создать как в куче, так и в стеке. В стеке он будет создаваться не просто быстрее, а быстрее на несколько порядков. Кроме того в С++ можно создать очень быструю кучу (быстрее чем в дотнете) и тем самым оптимизировать выделение памяти для конеретных задач.

VD>>Ну, да мелкую форму ты сможешь сделать. А что дальше? Захотел ты тип поля в этой форме поменять, и что делать? Перезапускать все команды заново?

G>Да, а почему нет?

Потому что это тоже самое что закрыть приложение и нажать еще раз F5. Только в репле траху будет в сто раз больше. Ты ведь не будешь иметь готового сценария.

Знаешь сколько раз народ терял набранный в репле код просто потому что забыл его сохранить?

G>Можно не все, а часть перезапускать. Ты же предлагал перезапускать всю программу


Я смысла в этом не вижу. В шарпе и так во время работы можно код менять. Этого для исследовательской деятельности вполне достаточно Лучше бы с лямбдами проблему решени.

VD>>Было бы намного лучше если вместо этого репла сделали бы полноценное редактирование кода без прерывания отладки. Чтобы можно было лябды менять и классы новые добавлять. Вот это дало бы реальную прибавку к производитльности. Но этого, видимо, в ближайшее время не будет, потому что это сложно. А вот репл сделать довольно просто. Вот его и сделали.


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


Дык логики прикручивания РЕПЛ-а это и есть такая логика. Популизм называется. "Реализовать полноценное редактирование кода в рантайме тяжело... А давайте сделаем репл и отвлечем народ от рельных проблем?!"

А сделать РЕПЛ не так уж и сложно. У немерла он был еще 6 лет назад. Вот только не пользовался им никто, с тех пор как студия появилась.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: REPL
От: Ziaw Россия  
Дата: 20.10.11 21:40
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Здравствуйте, gandjustas, Вы писали:


G>>Roslyn в ранней версии содержит эту возможность, а в Nemerle есть repl в студии и standalone?


H>Я его сломал. Починен будет очень не скоро, так как я занят переносом компилятора на IKVM.Reflection.


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

Кстати, я тут еще с нпадом наткнулся, если два раза подсовывать один и тот же файл компилятору (при том, что создается новый ManagerClass), на второй раз будет ошибка, что файл подсунут дважды. Хотя передается однозначно один файл: options.Sources = [fileName.FullName]. Где-то статик хранилище?

Решил вопрос сохранением во временный файл.
Re[3]: REPL
От: hardcase Пират http://nemerle.org
Дата: 21.10.11 06:10
Оценка:
Здравствуйте, Ziaw, Вы писали:

H>>Я его сломал. Починен будет очень не скоро, так как я занят переносом компилятора на IKVM.Reflection.


Z>Поломка, насколько я понял, в компиляторе при выборе лексера в том случае, когда файла не существует.


Там фигня в том, что Sources у ManagerClass — это имена файлов, а должны быть экземплярами ISource. Собственно именно это и нужно переправить
/* иЗвиНите зА неРовнЫй поЧерК */
Re: REPL
От: hardcase Пират http://nemerle.org
Дата: 22.10.11 19:21
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>Roslyn в ранней версии содержит эту возможность, а в Nemerle есть repl в студии и standalone?


Классический РЕПЛ я в принципе могу сделать, но это будет когда я сделаю IKVM-бэкэнд и из нынешнего SRE-бэкэнда сделаю ограниченную фиговину, генерирующую DynamicMethod.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[2]: REPL
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.10.11 20:43
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Классический РЕПЛ я в принципе могу сделать, но это будет когда я сделаю IKVM-бэкэнд и из нынешнего SRE-бэкэнда сделаю ограниченную фиговину, генерирующую DynamicMethod.


Сейчас лучше багами заняться. 1.1 релизить надо.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: REPL
От: catbert  
Дата: 22.10.11 21:25
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Классический РЕПЛ я в принципе могу сделать, но это будет когда я сделаю IKVM-бэкэнд и из нынешнего SRE-бэкэнда сделаю ограниченную фиговину, генерирующую DynamicMethod.


Был же вроде CCI-бекенд?
Re[3]: REPL
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.10.11 15:09
Оценка:
Здравствуйте, catbert, Вы писали:

H>>Классический РЕПЛ я в принципе могу сделать, но это будет когда я сделаю IKVM-бэкэнд и из нынешнего SRE-бэкэнда сделаю ограниченную фиговину, генерирующую DynamicMethod.


C>Был же вроде CCI-бекенд?


Это был бэкэнд для Н2. Там с точки зрения генерации кода еще конь не валялся.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.