Re[10]: Как думаете что мне больше всего нехватает в C# из N
От: Павел Кузнецов  
Дата: 13.03.06 17:50
Оценка: 13 (2) +3
Здравствуйте, AndrewVK, Вы писали:

AVK> я тут в маленьком проекте применил как раз локально кортеж с 3 параметрами. И даже локально выглядело это преотвратно. Настолько, что я выкинул и добавил внутренний класс.


Имхо, tuples должны использоваться в "обобщенном" коде, где нам не важна семантика данных, а важны их количество и типы. Грубо говоря, как список, но с элементами разного типа. В самом деле, не даешь же ты имена индивидуальным элементам списков
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[8]: Как думаете что мне больше всего нехватает в C# из Ne
От: Павел Кузнецов  
Дата: 13.03.06 17:52
Оценка:
Здравствуйте, WolfHound, Вы писали:

ПК>> У этого синтаксиса есть очень существенное преимущество по сравнению с (i, _): возможность итерации по значениям t в compile-time цикле.


WH> Влад сейчас тебе раскажет про макросы Nemerle и будет прав.

WH> С++ со всеми своими щаблонами мягко говоря нурвоно курит в углу.

Это-то тут причем? Речь не о языке, а о синтаксисе. Синтаксис (i, _) не позволяет выразить итерацию по значениям tuple, а синтаксис get<n>(t) — позволяет.
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[3]: Как думаете что мне больше всего нехватает в C# из Ne
От: ie Россия http://ziez.blogspot.com/
Дата: 13.03.06 18:06
Оценка:
Здравствуйте, VladD2, Вы писали:

ie>>Так насколько я понимаю, разработка Nemerle идет на майкрософтовский гранд, так что можно считать MS уже набрал этих самых студентов


VD>Это разные вещи. Они могут позаимствовать идеи, а могут и вообще сделать вид, что не заметили ничего.


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

VD>А внутренняя команда выдает реальный продукт.


Это да.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Превратим окружающую нас среду в воскресенье.
Re[8]: Как думаете что мне больше всего нехватает в C# из Ne
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.03.06 18:30
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Из спецификации:

AVK>

Within the same program, two anonymous object initializers that specify a sequence of properties of the same names and types in the same order will produce instances of the same anonymous type.


Без возможности объявить этот тип это замечание без толку.
Возможно они просто пока неуспели все доделать и к релизу мы увидим полноценное решение.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Как думаете что мне больше всего нехватает в C# из Ne
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.03.06 18:30
Оценка:
Здравствуйте, Юнусов Булат, Вы писали:

VD>>плюнул и создал специализированную пару... На четверки уже не решился.


ЮБ>Ecma C# and Common Language Infrastructure Standards

ЮБ>там ближе к низу сурсы CommonGenerics

Это все не то. И неудобно.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Как думаете что мне больше всего нехватает в C# из Ne
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.03.06 18:30
Оценка:
Здравствуйте, Юнусов Булат, Вы писали:

ЮБ>Значит кто то из нас что то забыл, бывает


Нет. Значит кто-то прочел текст и не смог понять смысл.

Повторяю еще раз. Нудобно пользоваться дженерик-типами вместо кортежей. Ну, неудобно и все. Нужен более краткий синтаксис. Нужна поддержка компилятора. Нужен вывод типов. Без всего этого получается больше проблем чем удобств.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[11]: Как думаете что мне больше всего нехватает в C# из N
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.03.06 18:30
Оценка:
Здравствуйте, Kluev, Вы писали:

K>Давай конкретнее, а то фраза какие либо расчеты, это про сферического коня в вакууме.


Конкретно списк кортэжей.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: Как думаете что мне больше всего нехватает в C# из Ne
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.03.06 18:30
Оценка:
Здравствуйте, Kluev, Вы писали:


K>// tie(...) { return Tie<>(...); } где Tie - хелпер-класс распаковки кортежей


А эти хэлперы нужно ручками писать?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Как думаете что мне больше всего нехватает в C# из Ne
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.03.06 18:30
Оценка:
Здравствуйте, srggal, Вы писали:

S> В С++ уже есть std::pair, так что Владу если бы он писал на Янус на С++ не понадобилось бы изобретать велосипед, кроме того, Янус мог бы называться много приятней Янус++, но это на любителя.


В С++ ничено нет. Есть в библиотеках. В библиотеках есть где угодно. Но речь не об этом. Речь о неуклюжести и неудобстве.
В общем, это то что нельзя доказать. Это нужно пробовать. Написав 3-4 более менее объемные функции с кортежами, а не с их эмуляцией ты поймшь о чем речь.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Как думаете что мне больше всего нехватает в C# из Ne
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.03.06 18:30
Оценка:
Здравствуйте, srggal, Вы писали:

S>Тем, что:

S> a) Он наш, родной, С++ный;

Нда, вести родство с языками программирования... это жуе... уууу...

S> б) Тем что он compile-time


А... А у "их" значичь другой?

S> в) Тем что он появился раньше


Чем что? У тебя пробелы в изучении истории? С++ в задумках небыло когда появился Лисп и S-выражения.

S> в) тем что Владу он не понравился ( Влад грил, что он использовал Tuple )


Владу вообще не нравятся эмуляции и извращения. Он любит простые и чистые решения. Чем проще и чище, тем лучше.

S>ЗЫ За юмор ниже пояса — не бить...


...выше пояса.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: Как думаете что мне больше всего нехватает в C# из Ne
От: WolfHound  
Дата: 13.03.06 18:37
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Это-то тут причем? Речь не о языке, а о синтаксисе. Синтаксис (i, _) не позволяет выразить итерацию по значениям tuple, а синтаксис get<n>(t) — позволяет.

Tuples
def t = (1, "one");: a tuple is a set of values which no name to recognise them
def fst = t[0];: use 0-based index to get the items

Ы?
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[4]: Как думаете что мне больше всего нехватает в C# из Ne
От: srggal Украина  
Дата: 13.03.06 18:38
Оценка:
Здравствуйте, VladD2, Вы писали:

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


S>> В С++ уже есть std::pair, так что Владу если бы он писал на Янус на С++ не понадобилось бы изобретать велосипед, кроме того, Янус мог бы называться много приятней Янус++, но это на любителя.


VD>В С++ ничено нет. Есть в библиотеках.

STL — стандартная библиотека С++. std::pair описан в стандарте языка. Спор об этом — это флейм, и Мы рискуем скатится к тому, что в С++ нет исключений, они есть в компиляторе.

VD>В библиотеках есть где угодно. Но речь не об этом. Речь о неуклюжести и неудобстве.

VD>В общем, это то что нельзя доказать. Это нужно пробовать. Написав 3-4 более менее объемные функции с кортежами, а не с их эмуляцией ты поймшь о чем речь.

Я понял, о чём идет речь, но целью моего сообщения было напомнить С++ комьюнити, что передать два значения можно не только при помощи Тупла.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[4]: Как думаете что мне больше всего нехватает в C# из Ne
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.03.06 18:38
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Это приятная возможность.


Ага. А знашь где она становится особенно приятна? В метапрограммировании! Попробуй на плюсах сформировать параметры для костнуктора и т.п. А на Нэмерле ты делашь список и формируешь на его основе кортеж который интерпретируется компиялтором как список параметров метода! Вот реальный пример:
// Добавляем в начала списока параметров парамер содержащий строку формата.
// сам список параметров при этом разворачиваем, так как формировался он в обратном порядке.
def args = <[ $(Helper.GenerateId() : string) ]> :: args.Reverse();

...

// Формируем выражение форматированного вывода и возвращаем его как результат работы макроса.
// Этот код заместит вызов макроса. Консрукция ( .. $args) сформирует кортэж с параметрами.
// В Nemerle кортежи и списки параметров функций равнозначны. Так что можно считать, что 
// сформирован список парамтеров!
<[ Localiser._instace.Format( .. $args) ]>


Конструкция ".. $args" разворачивает список в значения кортежа. А кортеж интерпретируется как параметры вызова. В итоге мы красиво и легко формируем вызов метода с переменным числом параметров. И при этом все типизированно и с контролем в компайлтайме!

Это то о чем я даже мечтать не мог.

ПК> Впрочем, никто не мешает сделать поддержку следующего:

ПК>
ПК>auto tuple1 = make_tuple(1, "text", 1.2);
ПК>call(&F, tuple1);
ПК>


Не. И грязновато. И не дает той гениальной простоты и завершенности дизайна языка.
Я вообще фигею как хорошо сочетаются некоторые части дизайна Нэмерла. Мужики явно нащупали .

>> Таким образом можно рассматривать функцию как всегда принимающую один параметр и возвращающую одно значение. Это делает язык очень выразительным, а его концепции очень простыми.


ПК>Если бы я разрабатывал язык сегодня, скорее всего, так бы и делал. Кста, подобная же концепция обобщается и на параметризацию типов в духе шаблонов C++: там можно считать, что тип параметризуется списком типов.


Да. Действительно! И автоматом решается проблема создания типов с переменным числом параметров.
Как говорится все гениальное просто.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: Как думаете что мне больше всего нехватает в C# из Ne
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.03.06 18:38
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Это-то тут причем? Речь не о языке, а о синтаксисе. Синтаксис (i, _) не позволяет выразить итерацию по значениям tuple, а синтаксис get<n>(t) — позволяет.


1. В Нэмерле есть и индексация, но без извратов.
2. Как не странно в немерле без проблем можно перебирать значения кортежей. Как это выглядит я уже приводил.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[13]: Как думаете что мне больше всего нехватает в C# из N
От: WolfHound  
Дата: 13.03.06 18:40
Оценка:
Здравствуйте, Kluev, Вы писали:

K>Ф топку такие кортежи, мы лучше будем struct и unused пользовать

На сайте RSDN.ru пАдонковщина запрещена.
Так что с выражениями типа:

Ф топку

Настоятельно рекомендую завязывать. Иначе в бан.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[10]: Как думаете что мне больше всего нехватает в C# из N
От: WolfHound  
Дата: 13.03.06 18:44
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>А эти хэлперы нужно ручками писать?

Их ребята из boost'а уже написали.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[14]: Как думаете что мне больше всего нехватает в C# из N
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 13.03.06 18:44
Оценка:
Здравствуйте, Kluev, Вы писали:

K>В многопоточной программе проблеммы можно порешить юзая

K>[/c]
K> template <class T>
K> operator T& ()
K> {
K> return Static<T>::value; // юзаем не локальную стaику, а глобальную
K> }
K>[/c]

Ты уверен?
Имхо, использование функций:
std::string & first()
  {
    static std::string s;
    return s;
  }

std::string global;
std::string & second()
  {
    return global;
  }

в многопоточных программах с одинаковой вероятностью приведет к проблемам. Даже с std::string. Не говоря о том, что могут быть и более сложные классы.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[9]: Как думаете что мне больше всего нехватает в C# из Ne
От: Vermicious Knid  
Дата: 13.03.06 18:45
Оценка: +1
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Это-то тут причем? Речь не о языке, а о синтаксисе. Синтаксис (i, _) не позволяет выразить итерацию по значениям tuple, а синтаксис get<n>(t) — позволяет.


В Nemerle абсолютно иной подход к compile-time, поэтому причем, а вот синтаксис как раз ни причем. Так что если бы был только синтаксис (i, _)(индексирование константами там тоже есть), он бы все равно позволял проитерироваться по значениям tuple в compile-time, так как в Nemerle во время компиляции доступна любая информация о любом типе, можно конструировать и деконструировать любые элементы AST. В добавок ко всему compile-time в Nemerle это по сути дела полноценный run-time, в отличие от "вычислений" с помощью шаблонов C++.

Я не говорю, что подход C++ принципиально хуже подхода Nemerle. В ряде случаев он даже имеет свои преимущества. Но если речь идет именно о гибкости расширении языка и возможностях времени компиляции, то C++ однозначно проигрывает.
Re[6]: Как думаете что мне больше всего нехватает в C# из Ne
От: srggal Украина  
Дата: 13.03.06 18:45
Оценка:
Здравствуйте, VladD2, Вы писали:

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


S>>Тем, что:

S>> a) Он наш, родной, С++ный;

VD>Нда, вести родство с языками программирования... это жуе... уууу...

Хуже/лучше чем с обезьяной ?

S>> б) Тем что он compile-time


VD>А... А у "их" значичь другой?

Дженерики в C# разве не имеют ничего общего с рантайм ? Я , к сожалению, точно сказать не могу ибо не владею вопросом, слышыл краем уха что некоторые вроде дженерики работают через рефлекшн, конечно если я не напутал. Поправьте в 2х словах если не трудно.

S>> в) Тем что он появился раньше


VD>Чем что?

Может тогда расскажешь чем он лучше KeyValuePair<K, V>?

VD>У тебя пробелы в изучении истории? С++ в задумках небыло когда появился Лисп и S-выражения.
Чем грузины (KeyValuePair<K, V>)

S>> в) тем что Владу он не понравился ( Влад грил, что он использовал Tuple )


VD>Владу вообще не нравятся эмуляции и извращения. Он любит простые и чистые решения. Чем проще и чище, тем лучше.

Отчего же Влад так любит работать на виртуальном байт-коде, который не имеет ничего общего с реальным и который потом какой-то приблудой компилируется в конретный машинный ?

Это я к тому, что ИМХО не стоит быть таким категоричным.

ЗЫ Я на Вашей стороне — пользоваться Туплами одинаково неудобно и на С№ и на С++. Просто на Шареп пишут менее терпимые и более разнеженные, а С++ серам, суровым парням, лишних пару байт набить на клавиатуре, либо распознгать и интерпретировать при промотре исходникоф — не в западло
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[5]: Как думаете что мне больше всего нехватает в C# из Ne
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 13.03.06 18:50
Оценка: -1
Здравствуйте, VladD2, Вы писали:

VD>Это то о чем я даже мечтать не мог.


/С ехидной интонацией/ А в Ruby это уже давным давно было И если бы ты в свое время меньше доказывал мне, что C# подходит для скриптования лучше, чем Ruby, а посмотрел бы сам на Ruby, то мечтать бы о таком ты мог бы начать гораздо раньше

Зато сейчас... Nemerle, Nemerle...
От чего ты будешь фанатеть завтра?


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.