Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Cyberax, Вы писали:
C>>Как в C++/CLR, например. Который, кстати, остается единственным C>>нормальным языком, где сделана интероперабельность между GC и ручным C>>управлением памятью.
VD>Дык там тупо сделали два языка. Один С++, а другой не очень.
Ну, мне кажется, С++/CLI это два языка а MC++ больше был похож на C++ с новой "управляемой" семантикой включаемой модификаторами. Правда микрософтовцам не понравилось, что он слишком похож и его разделили на два (крышечки эти...)
Здравствуйте, ironwit, Вы писали:
I>простите неумелому I>какой плюс в реальном проекте приносит "автоматический вывод типов"? I>может я зря его не применяю?
Там не только вывод типов. Там еще и система типов с возможностями остуствующими в С++ есть. А вывод типов дает урощение кода и уменьшение его объема. В некоторых задачах, особенно связанных с анализом и распознаванием, можно получить до 10 раз. Уж в 2-3 раза код будет точно меньше.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, EvilChild, Вы писали:
R>>А до предложенной модели памяти и сопутствующей библиотеки поддержки вообще всем ныне существующим языкам далеко. EC>Ага — язык прикольный во многих отношениях, но необходимо ещё учитывать и специфику задачи.
Это ты про новый стандарт С++?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, ironwit, Вы писали:
I>>простите неумелому I>>какой плюс в реальном проекте приносит "автоматический вывод типов"? I>>может я зря его не применяю?
VD>Там не только вывод типов. Там еще и система типов с возможностями остуствующими в С++ есть. А вывод типов дает урощение кода и уменьшение его объема. В некоторых задачах, особенно связанных с анализом и распознаванием, можно получить до 10 раз. Уж в 2-3 раза код будет точно меньше.
прости Влад, но это не всегда так. Я когда игрался с макросами Nemerle, приходилось читать код макросов из Nemerle.Compiler если не ошибаюсь. Так вот из-за отсутствия intellisense читать такой код было мучительно:
Здравствуйте, VladD2, Вы писали:
EC>>Ага — язык прикольный во многих отношениях, но необходимо ещё учитывать и специфику задачи.
VD>Это ты про новый стандарт С++?
VladD2 пишет:
> I>простите неумелому > I>какой плюс в реальном проекте приносит "автоматический вывод типов"? > I>может я зря его не применяю? > > Там не только вывод типов. Там еще и система типов с возможностями > остуствующими в С++ есть. А вывод типов дает урощение кода и уменьшение > его объема. В некоторых задачах, особенно связанных с анализом и > распознаванием, можно получить до 10 раз. Уж в 2-3 раза код будет точно > меньше.
Влад. ну ты блин Ваааще
рассказал достаточно красиво, но можешь привести просто обычный
конкретный пример? я просто лучше конкретику понимаю ...
Здравствуйте, no4, Вы писали:
no4>Ну, мне кажется, С++/CLI это два языка а MC++ больше был похож на C++ с новой "управляемой" семантикой включаемой модификаторами. Правда микрософтовцам не понравилось, что он слишком похож и его разделили на два (крышечки эти...)
Дык в MC++ и проблем хватало. И все равно даже MC++ тоже четко разделял управляемые ссылки и обычные.
Собственно — это, похоже, единственный правильный путь. Проблема только в том, что тогда в С++ появляется концептуально другой подязык "Безопастный C++". А это цепляет за себя целую кучу концепций. Так что итоге получится что-то вроде MC++ + .NET. Причем если МС создал эталонную реализацию, то в случае со стандартом — это будет куча разных и не новых языков. Так что в стандарт C++ прийдется встраивать и бинарную составляющую.
Короче от C++ ничего не останется.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, EvilChild, Вы писали:
EC>>>Ага — язык прикольный во многих отношениях, но необходимо ещё учитывать и специфику задачи.
VD>>Это ты про новый стандарт С++?
EC>Про OCaml.
Тогда бось, ты не верно понял remark-а. Он то про новые (гипотетические) мегафичи С++ говорил. Ну, мол ща им обомится и будут они в шоколаде... как эта как ту дуру из Дома 2 завут?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Константин Л., Вы писали:
КЛ>прости Влад, но это не всегда так. Я когда игрался с макросами Nemerle, приходилось читать код макросов из Nemerle.Compiler если не ошибаюсь. Так вот из-за отсутствия intellisense читать такой код было мучительно:
КЛ>
А вывод типов из инициализации и в С++ введут. Они вроде его как в Ди "auto" хотят назвать. Чтобы ключевое слово повторно использовать.
Но я тут немного о другом выводе типов говорил. Немерлу он не доступен по причине неподходящей системы типов. Я говорил о выводе обобщенных реализаций фунций. ОКамл это делать умеет. У него, правда, свои грабли. У них, например, операторы арифметические не перегруженные. Для плавающей точки используют .+, а для целых просто +. Но, зато, если в фунции используются только ссылки на фунции переданные в качестве параметров, то ОКамл выводит фунцию как полиморфную. При этом никаких параметров типов указывать не нужно.
КЛ>Рефлектором бегал по сигнатурам, чтобы понять возвращаемый тип. Может быть я что-то делал не так, но без IDE это смерть.
Это с не привычки. К тому же IDE решает проблему на раз. Незнаю тоольк есть ли для обычного ОКамла добротные IDE. Но есть для F#, а он обратно совместим с ОКамлом.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, ironwit, Вы писали:
I>Влад. ну ты блин Ваааще I>рассказал достаточно красиво, но можешь привести просто обычный I>конкретный пример? я просто лучше конкретику понимаю ...
Лезут тут разные, а потом вещи пропадают (с).
Это вообще-то не для тебя писалось.
Человек у которого в списке интересов Эрланг стоит сам кому хочешь должен все рассказать.
А если кому интересны примеры, то путь лезут куда-нить вроде http://ocaml.spb.ru и смотрят. Вот только боюсь, что для чистого С++-ника это будет все одно что книжки на китайском. По крайней мере я раньши это именно так и понимал.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>>>Это ты про новый стандарт С++?
EC>>Про OCaml.
VD>Тогда бось, ты не верно понял remark-а. Он то про новые (гипотетические) мегафичи С++ говорил. Ну, мол ща им обомится и будут они в шоколаде... как эта как ту дуру из Дома 2 завут?
Я расценил его слова как скепсис насчёт OCaml'а в задачах очень критичных по производительности,
т.е. тех, где битовыжимание оправдано — OCaml плюсам там не конкурент.
Здравствуйте, VladD2, Вы писали:
VD>Там не только вывод типов. Там еще и система типов с возможностями остуствующими в С++ есть. А вывод типов дает урощение кода и уменьшение его объема. В некоторых задачах, особенно связанных с анализом и распознаванием, можно получить до 10 раз. Уж в 2-3 раза код будет точно меньше.
Здравствуйте, FR, Вы писали:
FR>Здравствуйте, VladD2, Вы писали:
VD>>Там не только вывод типов. Там еще и система типов с возможностями остуствующими в С++ есть. А вывод типов дает урощение кода и уменьшение его объема. В некоторых задачах, особенно связанных с анализом и распознаванием, можно получить до 10 раз. Уж в 2-3 раза код будет точно меньше.
FR>Вот тут http://www.cminusminus.org/rsync/dist/lua-ml-20071123.tar.gz лежит интерпретатор Lua 2.5 написанный на Ocaml, тут он же http://www.lua.org/ftp/lua-2.5.tar.gz на си, и почему то сишная версия поменьше в размерах
FR>С (*.с *.h) 194 kb FR>Ocaml (*.nw) 222 kb
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Константин Л., Вы писали:
КЛ>>прости Влад, но это не всегда так. Я когда игрался с макросами Nemerle, приходилось читать код макросов из Nemerle.Compiler если не ошибаюсь. Так вот из-за отсутствия intellisense читать такой код было мучительно:
КЛ>>
А я его не читаю. Только хэдэра. От имплементации иногда не по себе, но это случается раз в полгода.
VD>А вывод типов из инициализации и в С++ введут. Они вроде его как в Ди "auto" хотят назвать. Чтобы ключевое слово повторно использовать.
Введут, и я от этой фичи не в восторге. Разве что для foreach полезна
VD>Но я тут немного о другом выводе типов говорил. Немерлу он не доступен по причине неподходящей системы типов. Я говорил о выводе обобщенных реализаций фунций. ОКамл это делать умеет. У него, правда, свои грабли. У них, например, операторы арифметические не перегруженные. Для плавающей точки используют .+, а для целых просто +. Но, зато, если в фунции используются только ссылки на фунции переданные в качестве параметров, то ОКамл выводит фунцию как полиморфную. При этом никаких параметров типов указывать не нужно.
Я не в курсе что такое обобщенные реализации функций.
КЛ>>Рефлектором бегал по сигнатурам, чтобы понять возвращаемый тип. Может быть я что-то делал не так, но без IDE это смерть.
VD>Это с не привычки. К тому же IDE решает проблему на раз. Незнаю тоольк есть ли для обычного ОКамла добротные IDE. Но есть для F#, а он обратно совместим с ОКамлом.
очень понравилось. R>Визуально вроде код на С на несколько вспомогательных строчек длиннее, но по сути один в один с Немерле.
Влад на это еще тогда ответил...
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Тебя не насторожило странное расширение *.nw для исходников на Окамле? Окамловская реализация использует NoWeb, систему literate programming. Загляни внутрь и прикинь на глазок количество комментариев.
Типичный исходный файл этого интерпретатора выглядит так:
...Once we have [[Map]], we can provide a mapping between a Lua name like
[[Pair.mk]] and its {\ocaml} implementation. The [[register_module]]
function takes a list of (name, value) pairs, where a value can be a
function. The conversion between the interpreter's internal
representation and our's is provided by a clever infix function [[**->]]
that makes the conversion function look like a function type. The
[[Map]] module is here essential to name the user-defined argument
types.
<<register [[Pair]]>>=
C.register_module "Pair"
[ "mk", V.efunc (V.value **-> V.value **->> Map.pair) Pair.mk
; "fst",V.efunc (Map.pair **->> V.value) Pair.fst
; "snd",V.efunc (Map.pair **->> V.value) Pair.snd
] g;
@
The registration of the [[Char]] module shows how to deal with errors in
conversions. [[Char.mk]] expects a string whose first character is used...
Здравствуйте, FR, Вы писали:
FR>С (*.с *.h) 194 kb FR>Ocaml (*.nw) 222 kb FR>(я еще не копался что там внутри так что если кто раскопает и разъяснит почему буду рад)
На первый взгляд в коде на Ocaml очень сильно больше комментариев чем в сишном коде.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, palm mute, Вы писали:
PM>Тебя не насторожило странное расширение *.nw для исходников на Окамле? Окамловская реализация использует NoWeb, систему literate programming. Загляни внутрь и прикинь на глазок количество комментариев.
Я заглядывал и показалось что что-то не так
Вот как бы выкусить оттуда комментарии незнаешь? Там вроде целый препроцессор на перле используется, так что в лоб скриптиком похоже не выйдет.
А на глаз их оценить тяжело.
VladD2 пишет:
> I>Влад. ну ты блин Ваааще > I>рассказал достаточно красиво, но можешь привести просто обычный > I>конкретный пример? я просто лучше конкретику понимаю ... > > Лезут тут разные, а потом вещи пропадают (с). > > Это вообще-то не для тебя писалось. > Человек у которого в списке интересов Эрланг стоит сам кому хочешь > должен все рассказать.
так я с ним еще не все понял
только в последней версии добавили имитацию работы драйверов написанных
на сторонних языках так, как будто они сделаны в ерланге (если я верно
понял)
а у меня все драйвера на delphi > > А если кому интересны примеры, то путь лезут куда-нить вроде > http://ocaml.spb.ru и смотрят. Вот только боюсь, что для чистого > С++-ника это будет все одно что книжки на китайском. По крайней мере я > раньши это именно так и понимал.