Re[3]: [Голосование] Почему я не использую Nemerle
От: Anton Batenev Россия https://github.com/abbat
Дата: 07.04.10 10:13
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:

k> VD>> Почему я боюсь/не хочу/не могу использовать Nemerle в своей работе?

k> AB>Ну для самого-самого начала...
k> Можешь продолжать, ибо fixed. Я весь во внимании

Ну "нешмогла я" пройти молча мимо

k> Хреново, что сайт глючит, согласен. Издержки переноса с польской фряхи на RSDN'овскую винду. Над этим работаем, сейчас переносим багтрекер на гуглокод, как только, так сразу займемся приведением вики в божеский вид под правильную платформу на правильном фреймворке.


То, что нельзя пока исходники получить одним архивом пропустим — уверен, что вы сделаете.

Шаг 2.

$ make
...
../lib/IAnonymous.n:1:3:1:3: warning: N10002: CR character found in input stream
...
ERROR:reflection.c:2587:get_field_on_inst_generic_type: assertion failed: (field_index >= 0 && field_index < dgclass->count_fields)
Stacktrace:

  at (wrapper managed-to-native) System.MonoType.GetField (string,System.Reflection.BindingFlags) <0x00004>
  at (wrapper managed-to-native) System.MonoType.GetField (string,System.Reflection.BindingFlags) <0xffffffff>
  at System.MonoType.GetField (System.Reflection.FieldInfo) <0x00078>
  at System.Reflection.Emit.TypeBuilder.GetField (System.Type,System.Reflection.FieldInfo) <0x0001b>
  at Nemerle.Compiler.ILEmitter.FrameworkGetField (System.Type,System.Reflection.FieldInfo) <0x0006e>
  at Nemerle.Compiler.ILEmitter.GetFieldInfo (System.Type,Nemerle.Compiler.IField) <0x00046>
  at Nemerle.Compiler.ILEmitter.emit (Nemerle.Compiler.Typedtree.TExpr) <0x066ba>
  at Nemerle.Compiler.ILEmitter.emit (Nemerle.Compiler.Typedtree.TExpr) <0x04cea>
  at Nemerle.Compiler.ILEmitter.emit (Nemerle.Compiler.Typedtree.TExpr) <0x01a9c>
  at Nemerle.Compiler.ILEmitter.emit (Nemerle.Compiler.Typedtree.TExpr) <0x01dc8>
  at Nemerle.Compiler.ILEmitter.emit (Nemerle.Compiler.Typedtree.TExpr) <0x01dc8>
  at Nemerle.Compiler.ILEmitter.emit (Nemerle.Compiler.Typedtree.TExpr) <0x041a4>
  at Nemerle.Compiler.ILEmitter.Run () <0x000f7>
  at Nemerle.Compiler.MethodBuilder/_N__N_lambda__60081__60202.apply_void () <0x000ce>
  at Nemerle.Compiler.TypeBuilder.FinalizeType () <0x000a4>
  at Nemerle.Compiler.TypeBuilder.EmitImplementation () <0x001a5>
  at Nemerle.Compiler.TypesManager/_N_emit_impl__53220.apply_void (Nemerle.Compiler.TypeBuilder) <0x0004e>
  at Nemerle.Compiler.TypesManager/_N_maybe_f__53791.apply_void (Nemerle.Compiler.TypeBuilder) <0x0019c>
  at Nemerle.Collections.NList.Iter<object> (Nemerle.Core.list`1<object>,Nemerle.Builtins.FunctionVoid`1<object>) <0x000bf>
  at Nemerle.Core.list`1<object>.Iter (Nemerle.Builtins.FunctionVoid`1<object>) <0x0002a>
  at Nemerle.Compiler.TypesManager.Iter (Nemerle.Core.list`1<Nemerle.Compiler.TypeBuilder>,Nemerle.Builtins.FunctionVoid`1<Nemerle.Compiler.TypeBuilder>) <0x00084>
  at Nemerle.Compiler.TypesManager.Iter (Nemerle.Builtins.FunctionVoid`1<Nemerle.Compiler.TypeBuilder>) <0x00028>
  at Nemerle.Compiler.TypesManager.compile_all_tyinfos (bool) <0x00169>
  at Nemerle.Compiler.TypesManager/_N__N_lambda__52660__52763.apply_void () <0x0001f>
  at Nemerle.Compiler.Solver.Enqueue (Nemerle.Builtins.FunctionVoid) <0x00045>
  at Nemerle.Compiler.TypesManager.EmitDecls () <0x00052>
  at Nemerle.Compiler.ManagerClass.Run () <0x003f5>
  at Nemerle.CommandlineCompiler.MainClass.main_with_catching () <0x0011f>
  at Nemerle.CommandlineCompiler.MainClass.Main () <0x0018b>
  at (wrapper runtime-invoke) object.runtime_invoke_void (object,intptr,intptr,intptr) <0xffffffff>


$ mono --version
Mono JIT compiler version 2.4.2.2 (tarball Fri Jul 24 11:24:57 EDT 2009)
Copyright (C) 2002-2008 Novell, Inc and Contributors. www.mono-project.com
        TLS:           __thread
        GC:            Included Boehm (with typed GC)
        SIGSEGV:       altstack
        Notifications: epoll
        Architecture:  x86
        Disabled:      none


Какая дополнительная информация требуется для исправления ошибки?
avalon 1.0rc3 rev 318, zlib 1.2.3
Re[4]: [Голосование] Почему я не использую Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 07.04.10 10:52
Оценка:
Здравствуйте, Anton Batenev, Вы писали:

AB>То, что нельзя пока исходники получить одним архивом пропустим — уверен, что вы сделаете.


AB>Шаг 2.


AB>
AB>$ make
AB>...
AB>../lib/IAnonymous.n:1:3:1:3: warning: N10002: CR character found in input stream
AB>...
AB>ERROR:reflection.c:2587:get_field_on_inst_generic_type: assertion failed: (field_index >= 0 && field_index < dgclass->count_fields)
AB>


AB>Какая дополнительная информация требуется для исправления ошибки?


Это баг Моно:
https://bugzilla.novell.com/show_bug.cgi?id=467834

Собранные под виндой бинарники на Моно, тем не менее, работают. Так что сам компилятор можно скопировать с Винды из использовать под Линуксом.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: [Голосование] Почему я не использую Nemerle
От: Anton Batenev Россия https://github.com/abbat
Дата: 07.04.10 11:26
Оценка:
Здравствуйте, VladD2, Вы писали:

VD> AB>Какая дополнительная информация требуется для исправления ошибки?

VD> Это баг Моно:
VD> https://bugzilla.novell.com/show_bug.cgi?id=467834

Меня это не успокоило

VD> Собранные под виндой бинарники на Моно, тем не менее, работают. Так что сам компилятор можно скопировать с Винды из использовать под Линуксом.


ОК. Где можно взять собранный под виндой компилятор?
avalon 1.0rc3 rev 318, zlib 1.2.3
Re[6]: [Голосование] Почему я не использую Nemerle
От: WolfHound  
Дата: 07.04.10 11:52
Оценка:
Здравствуйте, Anton Batenev, Вы писали:

AB>Меня это не успокоило

Тут два варианта:
Или починят моно.
Или немерле переедет на другой движек для генерации сборок.


AB>ОК. Где можно взять собранный под виндой компилятор?

В этой теме есть и где брать и как компилятор из инсталятора под линухом вытащить.
http://groups.google.com/group/nemerle-en/browse_thread/thread/9592965f06e00891#
... << RSDN@Home 1.2.0 alpha 4 rev. 1305>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[7]: [Голосование] Почему я не использую Nemerle
От: Anton Batenev Россия https://github.com/abbat
Дата: 07.04.10 12:53
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH> AB>ОК. Где можно взять собранный под виндой компилятор?

WH> В этой теме есть и где брать и как компилятор из инсталятора под линухом вытащить.
WH> http://groups.google.com/group/nemerle-en/browse_thread/thread/9592965f06e00891#

Жесть...

$ ls -l ncc.exe
-rwxr-xr-x 1 abbat abbat 16384 2010-04-05 16:18 ncc.exe*
$ ./ncc.exe
install the Windows version of Mono to run .NET executables


Жесть... Да, я знаю, что для бинарников моно недостаточно простого указания бита исполнения для файла, как это принято в мире *nix, но подобное неожиданное поведение каждый раз сносит башню.

Ладно, идем в First Tutorial и берем пример "Rewriting line counter without mutable values":

class FunctionalLineCounter
{
   public static Main () : void
   {
      def sr = System.IO.StreamReader ("~/8.0-RELEASE-i386-disc1.iso");
      def read_lines (line_no : int) : int {   //  (1)
         def line = sr.ReadLine ();
         if (line == null)      //  (2)
            line_no              //  (3)
         else {
            System.Console.WriteLine (line);  //  (4)
            read_lines (line_no + 1)          //  (5)
         }
      };
      System.Console.WriteLine ("Line count: {0}", read_lines (0)); //  (6)
   }
}


Не подумайте чего плохого прочитав имя файла — я просто хотел посмотреть как оно себя поведет в неожиданной ситуации, но засада случилась не здесь:

$ mono out.exe

Unhandled Exception: System.IO.DirectoryNotFoundException: Could not find a part of the path "/home/abbat/projects/nemerle/test/~/8.0-RELEASE-i386-disc1.iso".
  at System.IO.FileStream..ctor (System.String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean anonymous, FileOptions options) [0x00000]
  at System.IO.FileStream..ctor (System.String path, FileMode mode, FileAccess access, FileShare share) [0x00000]
  at (wrapper remoting-invoke-with-check) System.IO.FileStream:.ctor (string,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare)
  at System.IO.File.OpenRead (System.String path) [0x00000]
  at System.IO.StreamReader..ctor (System.String path, System.Text.Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize) [0x00000]
  at System.IO.StreamReader..ctor (System.String path) [0x00000]
  at (wrapper remoting-invoke-with-check) System.IO.StreamReader:.ctor (string)
  at FunctionalLineCounter.Main () [0x00000]


При этом, конечно же:

$ ls -l ~/8.0-RELEASE-i386-disc1.iso
-rw-rw-r-- 1 abbat abbat 655591424 2010-03-25 17:38 /home/abbat/8.0-RELEASE-i386-disc1.iso
avalon 1.0rc3 rev 318, zlib 1.2.3
Re[8]: [Голосование] Почему я не использую Nemerle
От: WolfHound  
Дата: 07.04.10 13:43
Оценка:
Здравствуйте, Anton Batenev, Вы писали:

AB>Не подумайте чего плохого прочитав имя файла — я просто хотел посмотреть как оно себя поведет в неожиданной ситуации, но засада случилась не здесь:

В данном случае проблемы с тем что System.IO.StreamReader не знает что вместо ~ нужно подставить home пользователя.
Почему он этого не знает я не знаю.
Задай полное имя /home/abbat/8.0-RELEASE-i386-disc1.iso тогда по идее должно сработать.
... << RSDN@Home 1.2.0 alpha 4 rev. 1305>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[8]: [Голосование] Почему я не использую Nemerle
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 07.04.10 13:57
Оценка:
Здравствуйте, Anton Batenev, Вы писали:

AB>Не подумайте чего плохого прочитав имя файла — я просто хотел посмотреть как оно себя поведет в неожиданной ситуации, но засада случилась не здесь:


1. А с чего mono должно само разворачивать тильду?
2. Причем тут nemerle? Этот же результат ты бы получил на любом другом языке под mono.

P.S: http://www.go-mono.com/docs/index.aspx?link=T:System.Environment.SpecialFolder вообще-то.
... << RSDN@Home 1.2.0 alpha 4 rev. 1446>>

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re: [Голосование] Почему я не использую Nemerle
От: Dufrenite Дания  
Дата: 07.04.10 14:19
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>

VD>Почему я боюсь/не хочу/не могу использовать Nemerle в своей работе?


Считаю подход к метапрограммированию в Nemerle идеологически неверным.

Пояснение:
Делать макросы плагинами к компилятору, означает создавать жесткую зависимость между структурами данных компилятора и пользовательским кодом. Это мешает развиваться компилятору, так как невозможно легко и безопасно менять внутренние структуры и алгоритмы компиляции и мешает развиваться пользовательскому коду, так как при каждом новом релизе компилятора есть риск неработоспособности макросов.
Плюс к этому, Nemerle является фактически "языком одного компилятора", так как любой конкурирующий компилятор вынужден будет в точности повторять внутренности нынешнего, иначе часть пользовательского кода работать не будет.
Re[6]: [Голосование] Почему я не использую Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 07.04.10 14:50
Оценка:
Здравствуйте, Anton Batenev, Вы писали:

VD>> AB>Какая дополнительная информация требуется для исправления ошибки?

VD>> Это баг Моно:
VD>> https://bugzilla.novell.com/show_bug.cgi?id=467834

AB>Меня это не успокоило


А тебя никто и не успокаивал. Тебе ответили на вопрос который ты задал. В Моно есть баги. Исправят, и будет все ОК.

VD>> Собранные под виндой бинарники на Моно, тем не менее, работают. Так что сам компилятор можно скопировать с Винды из использовать под Линуксом.


AB>ОК. Где можно взять собранный под виндой компилятор?


Здесь можно взять инсталлятор.
В распакованом виде можно взять в здесь:
http://nemerle.googlecode.com/svn/nemerle/trunk/boot

Это файлы компилятор которыми собирается сам компилятор. Они немного отстают в версии, но тоже периодически обновляются.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: [Голосование] Почему я не использую Nemerle
От: Anton Batenev Россия https://github.com/abbat
Дата: 07.04.10 15:02
Оценка: :)
Здравствуйте, kochetkov.vladimir, Вы писали:

k> AB>Не подумайте чего плохого прочитав имя файла — я просто хотел посмотреть как оно себя поведет в неожиданной ситуации, но засада случилась не здесь:

k> 1. А с чего mono должно само разворачивать тильду?

Ну вот, ты такую малину испортил
avalon 1.0rc3 rev 318, zlib 1.2.3
Re[9]: [Голосование] Почему я не использую Nemerle
От: Mr.Cat  
Дата: 07.04.10 15:11
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>1. А с чего mono должно само разворачивать тильду?
А кто ее должен разворачивать?

KV>P.S: http://www.go-mono.com/docs/index.aspx?link=T:System.Environment.SpecialFolder вообще-то.

Ненене. Строчка от юзера могла прийти. Mono.Unix.Path.GetFullPath починили уже?
Хотя вот как раз программист о принятых в разных осях алиасах задумываться не должен.
Re[10]: [Голосование] Почему я не использую Nemerle
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 07.04.10 15:26
Оценка:
Здравствуйте, Mr.Cat, Вы писали:

MC>Здравствуйте, kochetkov.vladimir, Вы писали:

KV>>1. А с чего mono должно само разворачивать тильду?
MC>А кто ее должен разворачивать?

Это исключительно функционал шелла, причем не особо стандартизованный.

KV>>P.S: http://www.go-mono.com/docs/index.aspx?link=T:System.Environment.SpecialFolder вообще-то.

MC>Ненене. Строчка от юзера могла прийти.

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

MC>Mono.Unix.Path.GetFullPath починили уже?


А что с ним?

MC>Хотя вот как раз программист о принятых в разных осях алиасах задумываться не должен.


Именно поэтому вышеупомянутый SpecialFolder и является тем самым путем, благодаря которому программер может не задумываться об алиасах.
... << RSDN@Home 1.2.0 alpha 4 rev. 1446>>

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[11]: [Голосование] Почему я не использую Nemerle
От: Mr.Cat  
Дата: 07.04.10 15:35
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>Это исключительно функционал шелла, причем не особо стандартизованный.
Зато удобная. И тот же питон тильды умеет разворачивать.
В общем объяснять отсутствие фичи тем, что это типа чужой и нестандартный функционал — несерьезно. Лучше уж честно признаться что лень/нет денег/...

KV>Если строчка могла прийти от юзера, то наличие там тильды — это малейшее из зол, которые необходимо ожидать и соответствующим образом обрабатывать.

Соответствующим — это каким? У нас же, блин, дотнет. Кроссплатформенная технология. Под линуксом мож я хочу тильду разворачивать, а под виндой — нет.

MC>>Mono.Unix.Path.GetFullPath починили уже?

KV>А что с ним?
Было время, он не разворачивал тильду. Как сейчас — хз.
Re[5]: [Голосование] Почему я не использую Nemerle
От: Wolverrum Ниоткуда  
Дата: 07.04.10 16:04
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Не знаю насчет OCaml, но у т.н. "интерпретатора" Haskell никакой он не нормальный. В окне непосредственного исполнения ты можешь использовать ограниченное подмножество языка. Все остальное надо оформлять в файл и вскармливать среде.


Эьл вы про Hugs ?
Re[5]: [Голосование] Почему я не использую Nemerle
От: Ларик Россия  
Дата: 07.04.10 20:12
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Не очень понял мысли. Что значит технически?


Сорри, не правильно высказался, как объяснить начальству, заказчику, что ЭТО лучше. Я от ВАС не требую ничего, а устраиваю что-то вроде "порки" , Вы же советов спрашивали? Идея интересная, многое мне понравилось, но это только для нового проекта пока, старое разумеется никто перетаскивать не будет.
Самая большая в мире ложь — "Я прочел и согласен с условиями пользовательского соглашения".
Re[7]: [Голосование] Почему я не использую Nemerle
От: Anton Batenev Россия https://github.com/abbat
Дата: 07.04.10 23:27
Оценка:
Здравствуйте, VladD2, Вы писали:

VD> http://nemerle.googlecode.com/svn/nemerle/trunk/boot

VD> Это файлы компилятор которыми собирается сам компилятор. Они немного отстают в версии, но тоже периодически обновляются.

Так при выполнении make он и должен был собрать им или нет?
avalon 1.0rc3 rev 318, zlib 1.2.3
Re[6]: [Голосование] Почему я не использую Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 07.04.10 23:56
Оценка:
Здравствуйте, Ларик, Вы писали:

Л>Сорри, не правильно высказался, как объяснить начальству, заказчику, что ЭТО лучше.


Мне кажется, что если заказчик предъявляет претензии к языку (что совершенно не обязательно), то объяснение должно быть очень простым — "это позволит нам использовать продвинутые техники, что в итоге приведет к снижению затрат на разработку". Ну, если там есть дествительно толковые программисты, то можно объяснить про поддержку ФП, схожесть с шарпом и про метапрограммирование.

Л>Я от ВАС не требую ничего, а устраиваю что-то вроде "порки", Вы же советов спрашивали?


ОК

Л> Идея интересная, многое мне понравилось, но это только для нового проекта пока, старое разумеется никто перетаскивать не будет.


Дык я сам бы не стал переписывать что-то уже работающее на другом языке. Другое дело новый проект (особенно если он небольшой) или какую-то более менее обособленную часть проекта (подпроект). Ведь длл созданная на Немерле может быть соврешенно не отличима от сишарпной или вбшной. Ну, а если это отдельное приложение, то вообще проблем нет. Опять же все наработки можно будет использовать через подключение библиотек.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: [Голосование] Почему я не использую Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 08.04.10 00:08
Оценка:
Здравствуйте, Anton Batenev, Вы писали:

AB>Так при выполнении make он и должен был собрать им или нет?


Дано, но немного более новой версии. Это так называемый бутстрапинг, когда компилятор собирается сам собой. При этом, чтобы скомпилировать из исходников новую версию, нужно иметь старую версию бинарников (которой будте компилироваться новая). При существенных изменениях в компиляторе, после перекомпиляции бинарники закладываются в SVN, чтобы в дальнейшем собирать ими последующие версии.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[12]: [Голосование] Почему я не использую Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 08.04.10 03:01
Оценка:
Здравствуйте, Mr.Cat, Вы писали:

MC>В общем объяснять отсутствие фичи тем, что это типа чужой и нестандартный функционал — несерьезно. Лучше уж честно признаться что лень/нет денег/...


Сходи на сапорт Новела и задай им этот вопрос. Может они тебе про деньги расскажут. Что здесь то об этом говорить?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: [Голосование] Почему я не использую Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 08.04.10 03:08
Оценка:
Здравствуйте, Dufrenite, Вы писали:

D>Пояснение:

D>Делать макросы плагинами к компилятору, означает создавать жесткую зависимость между структурами данных компилятора и пользовательским кодом. Это мешает развиваться компилятору, так как невозможно легко и безопасно менять внутренние структуры и алгоритмы компиляции и мешает развиваться пользовательскому коду, так как при каждом новом релизе компилятора есть риск неработоспособности макросов.
D>Плюс к этому, Nemerle является фактически "языком одного компилятора", так как любой конкурирующий компилятор вынужден будет в точности повторять внутренности нынешнего, иначе часть пользовательского кода работать не будет.


Делать API к текстовому редактору, означает создавать жесткую зависимость между структурами данных редактора и пользовательским кодом (макросами). Это мешает развиваться редактору, так как невозможно легко и безопасно менять внутренние структуры и алгоритмы обработки текста и мешает развиваться пользовательскому коду, так как при каждом новом релизе редактора есть риск неработоспособности макросов.
Плюс к этому, макросы MS Word является фактически "языком одного редактора", так как любой конкурирующий редактор вынужден будет в точности повторять внутренности нынешнего, иначе часть пользовательского кода работать не будет.

Аналогия ясна?

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