Re[7]: C++0x начали урезать
От: no4  
Дата: 13.12.07 12:16
Оценка:
Здравствуйте, VladD2, Вы писали:

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


C>>Как в C++/CLR, например. Который, кстати, остается единственным

C>>нормальным языком, где сделана интероперабельность между GC и ручным
C>>управлением памятью.

VD>Дык там тупо сделали два языка. Один С++, а другой не очень.


Ну, мне кажется, С++/CLI это два языка а MC++ больше был похож на C++ с новой "управляемой" семантикой включаемой модификаторами. Правда микрософтовцам не понравилось, что он слишком похож и его разделили на два (крышечки эти...)
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[11]: C++0x начали урезать
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.12.07 12:51
Оценка:
Здравствуйте, ironwit, Вы писали:

I>простите неумелому

I>какой плюс в реальном проекте приносит "автоматический вывод типов"?
I>может я зря его не применяю?

Там не только вывод типов. Там еще и система типов с возможностями остуствующими в С++ есть. А вывод типов дает урощение кода и уменьшение его объема. В некоторых задачах, особенно связанных с анализом и распознаванием, можно получить до 10 раз. Уж в 2-3 раза код будет точно меньше.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[15]: C++0x начали урезать
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.12.07 12:51
Оценка:
Здравствуйте, EvilChild, Вы писали:

R>>А до предложенной модели памяти и сопутствующей библиотеки поддержки вообще всем ныне существующим языкам далеко.

EC>Ага — язык прикольный во многих отношениях, но необходимо ещё учитывать и специфику задачи.

Это ты про новый стандарт С++?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[12]: C++0x начали урезать
От: Константин Л. Франция  
Дата: 13.12.07 14:03
Оценка:
Здравствуйте, VladD2, Вы писали:

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


I>>простите неумелому

I>>какой плюс в реальном проекте приносит "автоматический вывод типов"?
I>>может я зря его не применяю?

VD>Там не только вывод типов. Там еще и система типов с возможностями остуствующими в С++ есть. А вывод типов дает урощение кода и уменьшение его объема. В некоторых задачах, особенно связанных с анализом и распознаванием, можно получить до 10 раз. Уж в 2-3 раза код будет точно меньше.


прости Влад, но это не всегда так. Я когда игрался с макросами Nemerle, приходилось читать код макросов из Nemerle.Compiler если не ошибаюсь. Так вот из-за отсутствия intellisense читать такой код было мучительно:


def ts = typer.TypeExpr(start);        
def tyVar = ts.Type;
def hint = tyVar.Hint;        
def startTypeInfo = hint.Value.TypeInfo;        
def endTypeInfo = typer.TypeExpr(end).Type.Hint.Value.TypeInfo;
def endType = endTypeInfo.SystemType;


Рефлектором бегал по сигнатурам, чтобы понять возвращаемый тип. Может быть я что-то делал не так, но без IDE это смерть.
Re[16]: C++0x начали урезать
От: EvilChild Ниоткуда  
Дата: 13.12.07 14:43
Оценка:
Здравствуйте, VladD2, Вы писали:

EC>>Ага — язык прикольный во многих отношениях, но необходимо ещё учитывать и специфику задачи.


VD>Это ты про новый стандарт С++?


Про OCaml.
Re[12]: C++0x начали урезать
От: ironwit Украина  
Дата: 13.12.07 15:03
Оценка:
VladD2 пишет:

> I>простите неумелому

> I>какой плюс в реальном проекте приносит "автоматический вывод типов"?
> I>может я зря его не применяю?
>
> Там не только вывод типов. Там еще и система типов с возможностями
> остуствующими в С++ есть. А вывод типов дает урощение кода и уменьшение
> его объема. В некоторых задачах, особенно связанных с анализом и
> распознаванием, можно получить до 10 раз. Уж в 2-3 раза код будет точно
> меньше.

Влад. ну ты блин Ваааще
рассказал достаточно красиво, но можешь привести просто обычный
конкретный пример? я просто лучше конкретику понимаю ...
Posted via RSDN NNTP Server 2.1 beta
Я не умею быть злым, и не хочу быть добрым.
Re[8]: C++0x начали урезать
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.12.07 16:01
Оценка:
Здравствуйте, no4, Вы писали:

no4>Ну, мне кажется, С++/CLI это два языка а MC++ больше был похож на C++ с новой "управляемой" семантикой включаемой модификаторами. Правда микрософтовцам не понравилось, что он слишком похож и его разделили на два (крышечки эти...)


Дык в MC++ и проблем хватало. И все равно даже MC++ тоже четко разделял управляемые ссылки и обычные.

Собственно — это, похоже, единственный правильный путь. Проблема только в том, что тогда в С++ появляется концептуально другой подязык "Безопастный C++". А это цепляет за себя целую кучу концепций. Так что итоге получится что-то вроде MC++ + .NET. Причем если МС создал эталонную реализацию, то в случае со стандартом — это будет куча разных и не новых языков. Так что в стандарт C++ прийдется встраивать и бинарную составляющую.

Короче от C++ ничего не останется.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[17]: C++0x начали урезать
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.12.07 16:01
Оценка:
Здравствуйте, EvilChild, Вы писали:

EC>>>Ага — язык прикольный во многих отношениях, но необходимо ещё учитывать и специфику задачи.


VD>>Это ты про новый стандарт С++?


EC>Про OCaml.


Тогда бось, ты не верно понял remark-а. Он то про новые (гипотетические) мегафичи С++ говорил. Ну, мол ща им обомится и будут они в шоколаде... как эта как ту дуру из Дома 2 завут?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[13]: C++0x начали урезать
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.12.07 16:01
Оценка:
Здравствуйте, Константин Л., Вы писали:

КЛ>прости Влад, но это не всегда так. Я когда игрался с макросами Nemerle, приходилось читать код макросов из Nemerle.Compiler если не ошибаюсь. Так вот из-за отсутствия intellisense читать такой код было мучительно:


КЛ>
КЛ>def ts = typer.TypeExpr(start);        
КЛ>def tyVar = ts.Type;
КЛ>def hint = tyVar.Hint;        
КЛ>def startTypeInfo = hint.Value.TypeInfo;        
КЛ>def endTypeInfo = typer.TypeExpr(end).Type.Hint.Value.TypeInfo;
КЛ>def endType = endTypeInfo.SystemType;
КЛ>


Ну, не мучительнее чем бустовский, првада?

А вывод типов из инициализации и в С++ введут. Они вроде его как в Ди "auto" хотят назвать. Чтобы ключевое слово повторно использовать.

Но я тут немного о другом выводе типов говорил. Немерлу он не доступен по причине неподходящей системы типов. Я говорил о выводе обобщенных реализаций фунций. ОКамл это делать умеет. У него, правда, свои грабли. У них, например, операторы арифметические не перегруженные. Для плавающей точки используют .+, а для целых просто +. Но, зато, если в фунции используются только ссылки на фунции переданные в качестве параметров, то ОКамл выводит фунцию как полиморфную. При этом никаких параметров типов указывать не нужно.

КЛ>Рефлектором бегал по сигнатурам, чтобы понять возвращаемый тип. Может быть я что-то делал не так, но без IDE это смерть.


Это с не привычки. К тому же IDE решает проблему на раз. Незнаю тоольк есть ли для обычного ОКамла добротные IDE. Но есть для F#, а он обратно совместим с ОКамлом.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[13]: C++0x начали урезать
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.12.07 16:01
Оценка: :)
Здравствуйте, ironwit, Вы писали:

I>Влад. ну ты блин Ваааще

I>рассказал достаточно красиво, но можешь привести просто обычный
I>конкретный пример? я просто лучше конкретику понимаю ...

Лезут тут разные, а потом вещи пропадают (с).

Это вообще-то не для тебя писалось.
Человек у которого в списке интересов Эрланг стоит сам кому хочешь должен все рассказать.

А если кому интересны примеры, то путь лезут куда-нить вроде http://ocaml.spb.ru и смотрят. Вот только боюсь, что для чистого С++-ника это будет все одно что книжки на китайском. По крайней мере я раньши это именно так и понимал.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[18]: C++0x начали урезать
От: EvilChild Ниоткуда  
Дата: 13.12.07 16:40
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>>>Это ты про новый стандарт С++?


EC>>Про OCaml.


VD>Тогда бось, ты не верно понял remark-а. Он то про новые (гипотетические) мегафичи С++ говорил. Ну, мол ща им обомится и будут они в шоколаде... как эта как ту дуру из Дома 2 завут?


Я расценил его слова как скепсис насчёт OCaml'а в задачах очень критичных по производительности,
т.е. тех, где битовыжимание оправдано — OCaml плюсам там не конкурент.
now playing: Braincell — Linguist
Re[12]: C++0x начали урезать
От: FR  
Дата: 13.12.07 17:22
Оценка: 2 (1) +1
Здравствуйте, VladD2, Вы писали:

VD>Там не только вывод типов. Там еще и система типов с возможностями остуствующими в С++ есть. А вывод типов дает урощение кода и уменьшение его объема. В некоторых задачах, особенно связанных с анализом и распознаванием, можно получить до 10 раз. Уж в 2-3 раза код будет точно меньше.


Вот тут 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 на си, и почему то сишная версия поменьше в размерах

С (*.с *.h) 194 kb
Ocaml (*.nw) 222 kb

(я еще не копался что там внутри так что если кто раскопает и разъяснит почему буду рад)
Re[13]: C++0x начали урезать
От: remark Россия http://www.1024cores.net/
Дата: 13.12.07 17:39
Оценка: -1 :)
Здравствуйте, 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


А мне вот это
Автор: remark
Дата: 01.01.07
очень понравилось.
Визуально вроде код на С на несколько вспомогательных строчек длиннее, но по сути один в один с Немерле.



1024cores &mdash; all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[14]: C++0x начали урезать
От: Константин Л. Франция  
Дата: 13.12.07 17:40
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, Константин Л., Вы писали:


КЛ>>прости Влад, но это не всегда так. Я когда игрался с макросами Nemerle, приходилось читать код макросов из Nemerle.Compiler если не ошибаюсь. Так вот из-за отсутствия intellisense читать такой код было мучительно:


КЛ>>
КЛ>>def ts = typer.TypeExpr(start);        
КЛ>>def tyVar = ts.Type;
КЛ>>def hint = tyVar.Hint;        
КЛ>>def startTypeInfo = hint.Value.TypeInfo;        
КЛ>>def endTypeInfo = typer.TypeExpr(end).Type.Hint.Value.TypeInfo;
КЛ>>def endType = endTypeInfo.SystemType;
КЛ>>


VD>Ну, не мучительнее чем бустовский, првада?


А я его не читаю. Только хэдэра. От имплементации иногда не по себе, но это случается раз в полгода.

VD>А вывод типов из инициализации и в С++ введут. Они вроде его как в Ди "auto" хотят назвать. Чтобы ключевое слово повторно использовать.


Введут, и я от этой фичи не в восторге. Разве что для foreach полезна

VD>Но я тут немного о другом выводе типов говорил. Немерлу он не доступен по причине неподходящей системы типов. Я говорил о выводе обобщенных реализаций фунций. ОКамл это делать умеет. У него, правда, свои грабли. У них, например, операторы арифметические не перегруженные. Для плавающей точки используют .+, а для целых просто +. Но, зато, если в фунции используются только ссылки на фунции переданные в качестве параметров, то ОКамл выводит фунцию как полиморфную. При этом никаких параметров типов указывать не нужно.


Я не в курсе что такое обобщенные реализации функций.

КЛ>>Рефлектором бегал по сигнатурам, чтобы понять возвращаемый тип. Может быть я что-то делал не так, но без IDE это смерть.


VD>Это с не привычки. К тому же IDE решает проблему на раз. Незнаю тоольк есть ли для обычного ОКамла добротные IDE. Но есть для F#, а он обратно совместим с ОКамлом.


Если бы решало, то я бы не бегал Рефлектором.
Re[15]: C++0x начали урезать
От: remark Россия http://www.1024cores.net/
Дата: 13.12.07 17:48
Оценка: +1
Здравствуйте, Константин Л., Вы писали:

КЛ>Введут, и я от этой фичи не в восторге. Разве что для foreach полезна



auto необходим для таких случаев:

template<typename T>
void f(T t1, T t2)
{
  auto R = t1 + t2;
  //...
}


В общем случае результат сложения двух значений типа T может быть отличным от T, и опредлить его в общем случае не возможно.



1024cores &mdash; all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[14]: C++0x начали урезать
От: WolfHound  
Дата: 13.12.07 19:10
Оценка:
Здравствуйте, remark, Вы писали:

R>А мне вот это
Автор: remark
Дата: 01.01.07
очень понравилось.

R>Визуально вроде код на С на несколько вспомогательных строчек длиннее, но по сути один в один с Немерле.
Влад на это еще тогда ответил...
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[13]: C++0x начали урезать
От: palm mute  
Дата: 13.12.07 19:14
Оценка: 45 (2)
Здравствуйте, FR, Вы писали:


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

FR>(я еще не копался что там внутри так что если кто раскопает и разъяснит почему буду рад)


Тебя не насторожило странное расширение *.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...
Re[13]: C++0x начали урезать
От: WolfHound  
Дата: 13.12.07 19:27
Оценка:
Здравствуйте, FR, Вы писали:

FR>С (*.с *.h) 194 kb

FR>Ocaml (*.nw) 222 kb
FR>(я еще не копался что там внутри так что если кто раскопает и разъяснит почему буду рад)
На первый взгляд в коде на Ocaml очень сильно больше комментариев чем в сишном коде.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[14]: C++0x начали урезать
От: FR  
Дата: 13.12.07 20:10
Оценка:
Здравствуйте, palm mute, Вы писали:

PM>Тебя не насторожило странное расширение *.nw для исходников на Окамле? Окамловская реализация использует NoWeb, систему literate programming. Загляни внутрь и прикинь на глазок количество комментариев.


Я заглядывал и показалось что что-то не так
Вот как бы выкусить оттуда комментарии незнаешь? Там вроде целый препроцессор на перле используется, так что в лоб скриптиком похоже не выйдет.
А на глаз их оценить тяжело.
Re[14]: C++0x начали урезать
От: ironwit Украина  
Дата: 14.12.07 07:30
Оценка:
VladD2 пишет:

> I>Влад. ну ты блин Ваааще

> I>рассказал достаточно красиво, но можешь привести просто обычный
> I>конкретный пример? я просто лучше конкретику понимаю ...
>
> Лезут тут разные, а потом вещи пропадают (с).
>
> Это вообще-то не для тебя писалось.
> Человек у которого в списке интересов Эрланг стоит сам кому хочешь
> должен все рассказать.
так я с ним еще не все понял
только в последней версии добавили имитацию работы драйверов написанных
на сторонних языках так, как будто они сделаны в ерланге (если я верно
понял)
а у меня все драйвера на delphi
>
> А если кому интересны примеры, то путь лезут куда-нить вроде
> http://ocaml.spb.ru и смотрят. Вот только боюсь, что для чистого
> С++-ника это будет все одно что книжки на китайском. По крайней мере я
> раньши это именно так и понимал.

ок. полез но я ещё вернусь
Posted via RSDN NNTP Server 2.1 beta
Я не умею быть злым, и не хочу быть добрым.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.