Re[10]: Как думаете что мне больше всего нехватает в C# из N
От: Павел Кузнецов  
Дата: 14.03.06 01:34
Оценка: +1
Здравствуйте, Vermicious Knid, Вы писали:

ПК>>-1


VK>Вопрос: зачем комитет C++ решил ввести в новый стандарт локальный вывод типов для переменных? Неужели чтобы ухудшить читабельность?


[Не]явная типизация [не]явной типизации рознь. В ряде (простых) случаев с неявной типизацией читабельность лучше, в ряде (более сложных) — хуже. Я не согласен с оценкой соотношения первых и вторых ("Явная типизация в большинстве случаев только ухудшает читабельность"); у меня опыт ровно обратный
Автор: Павел Кузнецов
Дата: 07.07.05
.

ПК>>Именно из-за разных типов я и сказал о compile-time циклах. Это вполне осмысленно для любых утилит обобщенной обработки tuples.


VK>В Nemerle для кортежей никаких костылей в принципе не нужно, это внутренний тип. Они реализуют Equals, GetHashCode, ToString, поддерживается сериализация.


VK>Если этого недостаточно, то можно во-первых попытаться расширить классы внутренней библиотеки, которые отвечают за фактическую реализацию кортежей. А во-вторых есть макросы. <...>


И? Как это является возражением к тезису о необходимости использования в этом случае отличного от (i, _) = t синтаксиса? В случае get<n>(t) может быть использован тот же синтаксис. Это все, что я хотел сказать по этому поводу.

VK> <...>


ПК>>Кстати, какого типа выражение t[0] в Nemerle?


VK> Я надеюсь вышеприведенный пример ответил на данный вопрос.


Честно говоря, не вполне...
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[11]: Как думаете что мне больше всего нехватает в C# из N
От: Павел Кузнецов  
Дата: 14.03.06 01:44
Оценка: +1
P.S.

ПК>>>Кстати, какого типа выражение t[0] в Nemerle?


VK>> Я надеюсь вышеприведенный пример ответил на данный вопрос.


ПК>Честно говоря, не вполне...


Впрочем, судя по этому документу, должно иметь такой же тип, как и элемент #0.
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[8]: Как думаете что мне больше всего нехватает в C# из Ne
От: Дарней Россия  
Дата: 14.03.06 03:40
Оценка: +1
Здравствуйте, eao197, Вы писали:

E>А вот теперь посмотри: год назад, ты уверял меня, что C# -- это круто, что нужно бросать C++ и писать на C#. Послушал бы я тебя тогда, к сегодняшнему моменту чего-нибудь успел бы сделать на C#. Но чу! C# то не так крут, есть и круче. Значит, нужно бросать C# и писать на Nemerle. С такими же перспективами через 1.5 года перебраться под OCaml/NET (к примеру).


нет предела совершенству
хотя OCaml/NET вряд ли представит что-то новое по сравнению с немерле

E>Так что получается, что на массированную рекламу лучше не поддаваться, никуда не перепрыгивать. Время покажет, на какую платформу имеет смысл переходить. Может и правда это будет Nemerle. Если так, то я ничуть не огорчусь, что C# прошел мимо меня.


Вот и будешь ты так сидеть, а языки будут проходить и проходить.... мимо тебя
... << RSDN@Home 1.1.4 stable rev. 510>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[8]: Как думаете что мне больше всего нехватает в C# из Ne
От: srggal Украина  
Дата: 14.03.06 06:29
Оценка:
Здравствуйте, VladGalkin, Вы писали:

VG>ИМХО: pair это очень конкретный и специальный случай кортежа, и вспоминать о нём не к лицу. Даже суть его вынесена в название (парочка ) и появился он, скорее всего, (а скорее всего так и есть) именно для использования в контейнерах для пар ключ/значение, а не для поддержки идеи кортежей, в том виде, в каком я хочу быть свободным использовать её.


В контексте того, что Влад сообщил о том, что вмесчто удобного Tuple Nemerle ему пришлось писать свой класс на два значения — ИМХО очень к лицу вспомнить и про std::pair.


И случай этот не конретный, в частности в терминах С++, опять же не скажу за всю Одессу, — Кортеж служит для передачи анонимных значений, а std::pair — поименных ( first, second ). Но это так, к слову — ИБО КАЗУИСТИКА
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[8]: Как думаете что мне больше всего нехватает в C# из Ne
От: srggal Украина  
Дата: 14.03.06 06:43
Оценка: +1 -4
Здравствуйте, VladD2, Вы писали:

VD>Обезьяна — теплокровное животное наделенная мозгом. А...

А может ли обезьяна, при наличии мозга, программировать, пусть даже на таком удобном языке как C#, а на Nemerle ?

Такие вот родственнички

VD>Применительно к данному случае они ничем от шаблонов не отличаются.

VD>Шаблоны С++ воплощаются компилятором. А дженерики джит-компилятором.
как это не чем. В С++ инстанцирование шаблона осуществляется во время компиляции, а в C#, тоже, что понимается под этим в С++, производится в в рантайм.
Исходный вопрос был чем Дженерик KeyValuePair<K, V> лучге чем шаблон std::pair

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


и один из пунктов, которые я привел — это был compile-time. После этого Вы грите что это в конте5сте данного обсуждения несуществено .

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

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

VD>Не уловил связи.

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




S>>ЗЫ Я на Вашей стороне — пользоваться Туплами одинаково неудобно и на С№ и на С++. Просто на Шареп пишут менее терпимые и более разнеженные, а С++ серам, суровым парням, лишних пару байт набить на клавиатуре, либо распознгать и интерпретировать при промотре исходникоф — не в западло


VD>Понимаш ли в чем дело? Разница между нашими подходами в том, что ты думашь сколько ты набьешь кода, а я о том насколько понятным будет мой код. Только и всего.


Для кого понятным ? Для домохозяйки ? Для телеведущего ? Для компилятора ? Или для адекватного специалиста ? В Делфи код ещё более наглядный. TForm1.OnClose() и все дела.

Мой продакшн-код тоже понятный, очень наглядный — это даже не аксиома, ИБО эот не мои слова.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[8]: Как думаете что мне больше всего нехватает в C# из Ne
От: srggal Украина  
Дата: 14.03.06 06:47
Оценка:
Здравствуйте, eao197, Вы писали:

E>Вай, вай! А где в Янусе нужна высокая скорость работы?

В первую очередь при поиске сообщениёй в Базе, когда её размер превыщает 1 Гигабайт.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[9]: Как думаете что мне больше всего нехватает в C# из Ne
От: srggal Украина  
Дата: 14.03.06 06:50
Оценка: +1 -1 :)
Здравствуйте, Дарней, Вы писали:


Д>Вот и будешь ты так сидеть, а языки будут проходить и проходить.... мимо тебя

Весь вопрос в том, куда они будут проходить, если в топку, то пусть себе идут

ЗЫ ЖДУ минуса с нетерпением
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[9]: Как думаете что мне больше всего нехватает в C# из Ne
От: VladGalkin Украина  
Дата: 14.03.06 07:26
Оценка: +1
Здравствуйте, srggal, Вы писали:


S>В контексте того, что Влад сообщил о том, что вмесчто удобного Tuple Nemerle ему пришлось писать свой класс на два значения — ИМХО очень к лицу вспомнить и про std::pair.

S>

В таком случае таки к лицу. Но вот если бы пришлось заиметь класс на 3 значения...

S> И случай этот не конретный, в частности в терминах С++, опять же не скажу за всю Одессу, — Кортеж служит для передачи анонимных значений, а std::pair — поименных ( first, second ). Но это так, к слову — ИБО КАЗУИСТИКА


Казуистика, чистой воды, так как в том же Nemerle я могу спокойно использовать pattern matching для того, чтобы осуществлять поименный доступ к элементам кортежа. Не будем далеко ходить и возьмём пример из курсов по Nemerle:
def divmod (x, y) {
  def div = x / y;
  def mod = x % y;
  (div, mod)
}
 
match (divmod (142, 13)) {
  | (d, m) =>
    System.Console.WriteLine ($ "div=$d, mod=$m");
}
 
// Output: div=10, mod=12


Или короче:
def (d, m) = divmod (142, 13);

System.Console.WriteLine ($ "div=$d, mod=$m");
... << RSDN@Home 1.1.4 stable rev. 510>>
ДЭ!
Re[9]: Как думаете что мне больше всего нехватает в C# из Ne
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 14.03.06 07:34
Оценка: +2
Здравствуйте, Дарней, Вы писали:

Д>хотя OCaml/NET вряд ли представит что-то новое по сравнению с немерле


Ты уверен, что Nemerle -- это что-то новое? Мне кажется, это очень симпатичная попытка запихнуть в NET то, что было опробованно на других языках.

Д>Вот и будешь ты так сидеть, а языки будут проходить и проходить.... мимо тебя


Языки путь идут. Их каждый год порядка 200 рождается и столько же умирает.
Главное, чтобы интересная и устраивающая меня работа мимо меня не проходила. А, как показывает мой опыт, язык программирования здесь вовсе не определяющую роль играет.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[9]: Как думаете что мне больше всего нехватает в C# из Ne
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 14.03.06 07:37
Оценка:
Здравствуйте, srggal, Вы писали:

E>>Вай, вай! А где в Янусе нужна высокая скорость работы?

S>В первую очередь при поиске сообщениёй в Базе, когда её размер превыщает 1 Гигабайт.

А развернуть свою мысль можешь?
Разве в Янусе поиском не Jet занимается?


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[10]: Как думаете что мне больше всего нехватает в C# из N
От: Cyberax Марс  
Дата: 14.03.06 07:55
Оценка:
VladD2 wrote:
> K>// tie(...) { return Tie<>(...); } где Tie — хелпер-класс распаковки кортежей
> А эти хэлперы нужно ручками писать?
Все уже украдено (написано) до нас. В Бусте в том числе.
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[10]: Как думаете что мне больше всего нехватает в C# из N
От: Дарней Россия  
Дата: 14.03.06 08:01
Оценка: +5
Здравствуйте, srggal, Вы писали:

S>Весь вопрос в том, куда они будут проходить, если в топку, то пусть себе идут


в топку однозначно попадают программисты, которые не интересуются ничем новым.
... << RSDN@Home 1.1.4 stable rev. 510>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[10]: Как думаете что мне больше всего нехватает в C# из N
От: Дарней Россия  
Дата: 14.03.06 08:01
Оценка:
Здравствуйте, eao197, Вы писали:

E>Ты уверен, что Nemerle -- это что-то новое? Мне кажется, это очень симпатичная попытка запихнуть в NET то, что было опробованно на других языках.


в нашей области придумать что-то принципиально новое — это вообще практически нереально. У всего можно найти какой-то прототип. Да и вообще, ничто не ново под луной (С)
... << RSDN@Home 1.1.4 stable rev. 510>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[9]: Как думаете что мне больше всего нехватает в C# из Ne
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 14.03.06 08:27
Оценка: +1 :)
Здравствуйте, srggal, Вы писали:

S>В первую очередь при поиске сообщениёй в Базе, когда её размер превыщает 1 Гигабайт.


?!! То есть тормозит таки C#?
http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[8]: Как думаете что мне больше всего нехватает в C# из Ne
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.03.06 08:38
Оценка: +1 :)
Здравствуйте, WolfHound, Вы писали:


WH>Причем С++ чем дальше тем больше превращается в огромного жутика обвешанного всякой фигней... и это при том что комитетчики придерживаются принципа зачем вводить в язык то что реализуется библиотекой? Вот только что-то у них это не получается... За то получается у авторов Nemerle за что им большой респект. Там половина языка (а может и больше) в библиотеке... С++у такое и не снилось. И не приснится уже никгда... ибо этот титаник на глиняном айсберге рушится под собственным весом.


А ведь чертовски верно замечено! Нэмерел действительно воплощает в жизть этот самый принцип. Ведь по сути базовая часть языка очень мала.

Что есть Нэмерле?

Поддержка:
* ООП — класс, перечисления, варианты, методы, свойства, поля.
* Обобщенного программирования — параметризация типов и функций (т.е. дженерики).
* Функциональных вычислений — вложенных функции, константы, рекурсия и оператор match, вычисления выражений (арифметика, битовые операции, вызов функций).
* Императивного программированияпеременные (локальные и поля). И это все что нужно для поддержки ИП!!! .
* Метапрограммирования — макросы (в том числе переопределение синтаксиса и операторов), квази-цитирование, AST, средства получения метаинформации о элементах AST.

Все остальное — надстройка над этими основопологающими фичами! Может какую мелочь я пропустил, но сути дела это не меняет. Блин, мыслимо ли это, но даже операторы &&/|| являются макросами.

База языка очень мала. С++ и темболее C# просто монстры по сравнению с этим языков. Но стройная и сбалансированная модель в купе с продуманной системой расширения зыка приводят к тому, что по расширяемости ему нет равных среди статически типизированных языков.

И при этом, что очень важно, ненужны никакие компромисы.

Когда я слышу про невероятную расширяемость С++ мне становится смешно. Я не видел ни одного безпроблемного расширения С++. Взять те же кортежи. Целое море обвязки, но краткого и удобного синтаксиса добиться так и не удается. А если вспомнить, о том, что почти все рсширения на шаблонах, а те очень часто приводят к жудчайшим сообщениям об ошибках, то становится очень грусно.

Сложность и противоричивось С++ так высока, что даже мегакорпорации не в силах создать полноценных компиляторов не говоря уже о средствах интелисенса и рефакторинга. Между тем Нэмерле превосходя С++ почти по всем параметрам прост до безобразия и его реализация сделана тремя студентами в качестве курсовой.

Объем всех (!) файлов из каталога ncc (компилятора Нэмерла) составляет ~2.4 мегабайта! И это при том, что среди них не малую долю занимает код тестов (без него код компилятора составляет 1.5 мега.).

Код всех макросов (в том числе if/else, while, for, foreach, ..., printf, ... занимает ~177 килобайт!

Сравним это с бустом. Сколько там занимают эти костыли? А ведь и без них компилятор С++ — это море кода!

Подытожу...

Нэмерле язык несомненно более выразительный чем C++ и C#, такой же безопасный как C# в safe-режиме, почти столь же просой как С, лучше поддающийся расширению чем С++.

Короче С++ точно идет неверным путем. База азложенная в С++ явно неверна. Чтобы выполнить принцип "зачем вводить в язык то что реализуется библиотекой" нужно разрабатывать язык так, чтобы он в первую очередь имел средства создания тех самых библиотек. Причем безкомпромисные.

Блин, ему бы коммерческое воплощение и вопрос мэйстрим-языка на ближайшие 10 лет был бы закрыт.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[13]: Как думаете что мне больше всего нехватает в C# из N
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 14.03.06 08:54
Оценка: +1
Здравствуйте, Kluev, Вы писали:

K>struct elemTuple

K>{
K> int i;
K> list<int> list;
K> int[] array;
K>}

K>писаниниы не намного больше


Намного.

K>, а по удобству лучше, человеческие названия у полей. А вот если бы такой кортеж возвращался бы из функции...


То точно так же можно было бы написать руками структурку, ведь писанины не намного больше?
... << RSDN@Home 1.2.0 alpha rev. 642>>
AVK Blog
Re[11]: Как думаете что мне больше всего нехватает в C# из N
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 14.03.06 09:04
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Имхо, tuples должны использоваться в "обобщенном" коде, где нам не важна семантика данных, а важны их количество и типы. Грубо говоря, как список, но с элементами разного типа.


Что то я не улавливаю сценарий. Если состав кортежа задается извне, то очевидно, что сам кортеж в итоге будет виден в инстанцированном типе. Следовательно проблемы с бессмысленными именами элементов кортежа остаются. Если же кортеж используется только внутри, то либо он используется в служебных целях и состав кортежа известен заранее, но тогда опять же имена элементов должны быть осмысленными, либо когда мы не обобщенным программированием занимается, а кодогенерацией. В этом случае действительно можно обойтись циферками, тем более что они итерацию позволяют. Но в таких случаях есть куда более эффективные и удобные средства, нежели элементы обобщенного программирования. Примеров на Nemerle Влад уже приводил более чем достаточно. Основная мысль в том, что tuples по большому счету всего лишь уменьшают размер исходного кода (незначительно, но на мелких и частых применениях заметно), что для кодогенерации вобщем то некритично, поскольку столь же успешно (не на С++ ) можно сгенерировать вместо кортежа специализированную структуру.

ПК> В самом деле, не даешь же ты имена индивидуальным элементам списков


Передергиваешь. Количество строк обычно меняется в рантайме произвольным образом, а вот количество колонок бывает что и фиксированное на этапе компиляции.
... << RSDN@Home 1.2.0 alpha rev. 642>>
AVK Blog
Re[9]: Как думаете что мне больше всего нехватает в C# из Ne
От: srggal Украина  
Дата: 14.03.06 09:07
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>База языка очень мала. С++ и темболее C# просто монстры по сравнению с этим языков. Но стройная и сбалансированная модель в купе с продуманной системой расширения зыка приводят к тому, что по расширяемости ему нет равных среди статически типизированных языков.


VD>И при этом, что очень важно, ненужны никакие компромисы.

+1

VD>Когда я слышу про невероятную расширяемость С++ мне становится смешно. Я не видел ни одного безпроблемного расширения С++. Взять те же кортежи. Целое море обвязки, но краткого и удобного синтаксиса добиться так и не удается. А если вспомнить, о том, что почти все рсширения на шаблонах, а те очень часто приводят к жудчайшим сообщениям об ошибках, то становится очень грусно.


ИМХО после Немерле вам будет много на что грусно смотреть и не только в С++.

VD>Сложность и противоричивось С++ так высока, что даже мегакорпорации не в силах создать полноценных компиляторов не говоря уже о средствах интелисенса и рефакторинга. Между тем Нэмерле превосходя С++ почти по всем параметрам прост до безобразия и его реализация сделана тремя студентами в качестве курсовой.


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

VD>Объем всех (!) файлов из каталога ncc (компилятора Нэмерла) составляет ~2.4 мегабайта! И это при том, что среди них не малую долю занимает код тестов (без него код компилятора составляет 1.5 мега.).


VD>Код всех макросов (в том числе if/else, while, for, foreach, ..., printf, ... занимает ~177 килобайт!


VD>Сравним это с бустом. Сколько там занимают эти костыли? А ведь и без них компилятор С++ — это море кода!

Да, С++ такой язык, много исходников, много файлов, это не Перл в котором многие вещи делаются одной строкой, иногда размером более 120 символом


VD>Подытожу...


VD>Нэмерле язык несомненно более выразительный чем C++ и C#, такой же безопасный как C# в safe-режиме, почти столь же просой как С, лучше поддающийся расширению чем С++.

+1

VD>Короче С++ точно идет неверным путем. База азложенная в С++ явно неверна. Чтобы выполнить принцип "зачем вводить в язык то что реализуется библиотекой" нужно разрабатывать язык так, чтобы он в первую очередь имел средства создания тех самых библиотек. Причем безкомпромисные.

=1

Избитая тема, C++ идёт своим путем, как у Макаревича, про вагонные споры: "Один сошел где-то под Таганрогом, среди Бескрайних полейб ... И каждый пошел своей дорогой, а поезд пошел своей".

И не факт сто паровоз это Немерле, паравоз, это скорей в целом процесс развития ИТ, а Немерле, С++ и остальные ЯП да и технологии , все это пассажиры. И где они сойдут для движения паравоза — не важно

Но что сойдут — это даже не теорема.

Дык, а смысл так восхищаться одним из пассажиров и подкалывать другого ?
И в этом поезде нет безбелетников.

Пассажиры разные, пути у них разные, цели их путешествия совпадают лишь отчасти.


Так что — я за МИР
Но я занимаю позицию сходную с позицией eao197.

VD>Блин, ему бы коммерческое воплощение и вопрос мэйстрим-языка на ближайшие 10 лет был бы закрыт.

Вопрос был бы закрыт до следующей подобной курсовой.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[9]: Как думаете что мне больше всего нехватает в C# из Ne
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 14.03.06 09:14
Оценка: +1
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Честно говоря, не понимаю, зачем нужно t.IntProperty в tuples... Нужно IntProperty — заводим соответствующую структуру.


А зачем тогда вобще эти кортежи нужны?

ПК> Нужно несколько значений — tuples. Нет?


Сценарий можно, где типы значений все известны, а их семантика нет?

ПК>А зачем мне локально оборачивать именованные значения в tuple, через который я затем с ними же буду работать как с именованными значениями?..


Для улучшения читаемости кода. Собствено в C# 3.0 нормальных кортежей нет, как тут справедливо заметили. А то что есть предназначено для улучшения читаемости операции проекции:
class A
{
    int X,
    int Y,
    string Z
}

...

var la = new List<A>();
...
foreach (var element in la.Select(new {X, Z}))
{
    Console.WriteLine(element.X); // OK
    Console.WriteLine(element.Y); // compile-time error
    Console.WriteLine(element.Z); // OK
}


Если переписать это же в декларативную форму, эффект будет еще заметнее.
Увы, на бустовских кортежах такое не повторишь. А писать под каждую проекцию отдельную структуру это уже перебор.
... << RSDN@Home 1.2.0 alpha rev. 642>>
AVK Blog
Re[11]: Как думаете что мне больше всего нехватает в C# из N
От: srggal Украина  
Дата: 14.03.06 09:16
Оценка:
Здравствуйте, Дарней, Вы писали:

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


S>>Весь вопрос в том, куда они будут проходить, если в топку, то пусть себе идут


Д>в топку однозначно попадают программисты, которые не интересуются ничем новым.

-1

из здесь
Автор: eao197
Дата: 14.03.06


Языки путь идут. Их каждый год порядка 200 рождается и столько же умирает.
Главное, чтобы интересная и устраивающая меня работа мимо меня не проходила. А, как показывает мой опыт, язык программирования здесь вовсе не определяющую роль играет.

... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.