Re[2]: Система исчисления
От: FDSC Россия consp11.github.io блог
Дата: 05.09.06 19:10
Оценка:
Здравствуйте, minorlogic, Вы писали:

M>Известно , что счет удобнее вести в 12 рмчной системе исчесления , но пользуемся мы 10 ричной ..


Это откуда это известно. Мне вот говорили, что лучшая система исчисления — с основанием с числом e , так и не знаю почему
Re[3]: Система исчисления
От: minorlogic Украина  
Дата: 05.09.06 19:15
Оценка:
Здравствуйте, FDSC, Вы писали:

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


M>>Известно , что счет удобнее вести в 12 рмчной системе исчесления , но пользуемся мы 10 ричной ..


FDS>Это откуда это известно. Мне вот говорили, что лучшая система исчисления — с основанием с числом e , так и не знаю почему


Были такие исследования, источник не помню. но вкратце таблица умножения намного проще.

12 делится без остатка на 2 , 3, 4, 6, в отличие от 10 который делится на 2 и 5. Помните как легко делить на 2 и на 5 различные числа в 10 ричной системе .
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[11]: Насколько важен синтаксис языка?
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.09.06 19:15
Оценка: 1 (1)
Здравствуйте, FDSC, Вы писали:

FDS>Я макросы и имел ввиду. Если честно, кроме макросов меня в Nemerle ничего не привлекает.


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

FDS> Собственно, всё что я говорил — это про макросы. Сам язык мне почти нравится — он действительно не сильно отличается.


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

FDS> По моему они вообще не позволяют адекватно переносить "макросовые" мысли на язык макросов


Вот это вообще не понял.

FDS>Если честно, то я всегда считал своим успехом то, что мои мысли стали относительно слабо зависить от языка программирования. И код стал лучше после этого. Что ж там за ломка то такая? Может эти языки, действительно, лучше на помойку выбросить, если там такая ломка


Объяснить это невозможно. Это нужно пробовать. Скачай Смолток, а лучше Лисп или хотя бы ОКамл и попробуй. Только совместо с этим нужно прочесть некую статью по языку. Крышу будет рвать еще при чтении книги, а потом когда будешь пытаться что-то сделать, но уже меньше.

Гарантирую, что это ощущение ни в какое сравнение не идет с дедовольством от того или иного алголоподобного языка.

FDS>Макросы (полностью)


И что с ними не так? Ты писал когда нибудь программу которая генерировала бы код другой программы?

FDS> и то, что нужно объявлять все переменные как переменные


Хм. А как что же их тогда объявлять? Или ты предлагаешь вообще их не объявлять? Последнее приводит к ошибкам. Это натуральные грабли. Одна опечатка и ищи ошибку часами.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[13]: Насколько важен синтаксис языка?
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.09.06 19:15
Оценка: +3
Здравствуйте, Курилка, Вы писали:

К>Опять 25, вот здесь
Автор: Eugene Beschastnov
Дата: 05.09.06
вроде описано, что возврат-то идёт из блока, который содержится в выражении, а не из метода, в котором содержится выражение, разницу ощущаешь?


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

К>P.S. вроде смолтолк вообще почти не знаю, поэтому могу ошибаться , но если бы было как ты утверждаешь, то это грабли, причём кривее некуда, а тут просто лямбда и не более


По-моему, лямбды в языках притендующих на ФЯ вообще являются выражениями и потому о возврате управления в них речь не идет. Даже в языках хорошо реализующих императивную составляющую возврат является структурным, и никак не может передавать управление вне функций. Другое дело, что в некоторых языках есть реальные континуэшоны или хотя бы итераторы. Но они опять же выглядят совершенно структрно, а этот код выглядит явно не структрно.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[14]: Насколько важен синтаксис языка?
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.09.06 19:15
Оценка:
Здравствуйте, FDSC, Вы писали:

FDS>Вот если бы эти лямбды нельзя было бы передавать как параметры другим методам, тогда можно было бы сказать, что это полезно и не слишком опасно для ограниченного применения.


На самом деле это "фича" со своими бенефитами и своими недостатками. И их оценка не так проста. Лично я считаю, что подобные континюэйшоны могут привести к совершенно запутанному коду, так как читая его мы не рассчитываем на то, что функция может не вернуть управление или что управление из середины выражения может бесследно исчезнуть и оказаться уже в конце метода.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[15]: Насколько важен синтаксис языка?
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.09.06 19:15
Оценка: +2
Здравствуйте, Курилка, Вы писали:

К>Наоборот смысл лямб в том и есть, чтобы передавать анонимные функции в другие функции, если не передавать, то грош им цена и нафиг не упало.


Еще раз. Это не лябда! Это эдакий вариант континюэшона, а еще точнее замена дальнего goto. За такое в приличных программистских конторах по пальцем железной линейкой были во времена С. Код может получиться столь не предсказуемым, что его отладка и изучение может стать пыткой.

Вот как я понимаю это дело (псевдо Немерле, в реальном нет goto):
def func1(f)
{
    WriteLine(f()); // f никогда не вернет управление так как сработает goto
}

def func2()
{
    func1(fun(){ goto label; 1 }); // "fun(){...}" - это объявление лямбды без параметров
label:
    ...
}
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[10]: Насколько важен синтаксис языка?
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.09.06 19:15
Оценка: +2 :)
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Да ничего нового, в общем. Для меня, во всяком случае. Зато кратко и честно, хоть и грубовато.


Ну, да, конечно. Ты же ведь его слова на свой счет не относишь. Хотя именно так оно и есть.

ГВ>А ещё грамотно и без опечаток. Очень уж мне эта черта импонирует.


VD>>Примеры амбиций мэйнстрима тоже хотелось бы поглядеть.


ГВ>Специализация по странным критериям, ориентация на a priori низкоквалифицированного программиста. Выхолащивание понятия "программист" до "кодер". Достаточно?


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

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

ГВ>Если не достаточно, то добавлю ещё перекорёживание тезиса о постоянном обучении. Извини, но прыжки по направлению C++ -> Java -> C# -> ASP и прочий web никак "учёбой" назвать нельзя.


Извни, но это твое личное частно мнение. Люди изучают то что им нужно. Изучаяют для определенных целей, а не ради развлечения. И не тебе решать чему нужно учиться, а чему нет. Ты то сам после С --> С++ куда дальше прыгнул? В "Философию программирования"?

ГВ> Это натаскивание на новые API в рамках одной идеи и не более того. А ещё и перекос в сторону "специалистов по API xxxxx", специалистов "по библиотеке X".


Ну, что же поделаешь если библиотеки стали сложными. И причем тут амбиции, то?

ГВ>И главное, майнстрим не ставит своей целью борьбу со скукой. Наоборот, спящий мозг — самое то.


Да, действительно. Такие задачи как борьбу со скукой рещает не мэйнстрим и не программирование вообще, а эстрада, театр, кино, музыка, кники, телевизор и т.п. На работе люди работают. И ты волен лишь выбрать работу которая тебя интересует. Хочешь развлекаться — иди работать в стрип-клуб .

В общем, понятно. Так как на вопрос рельно ты ответить не можешь (ну, нет в природе явления вроде "амбиций мэйнстрима") и вместо этого ты тут с большим удовольствием загнул рассуждения на панко-философо-романтическую тему о скуке бытия.

ГВ>Ну и кому это понравится?


Хороший вопрос. Так что понравится то? Быдляческое недменность всех этих Колхозов, Вин2К и т.п.? Мне лично оно не не нравится. Мне вообще не наравится когда другие говоря со мной начинают намекать, что я или другие люди не дерьмо, а он Д'артоньян на белом коне.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Кстати
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.09.06 19:15
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>

VD>>>>...относиться с уважением и к другим. Они ведь тоже что-то сделали?!
ГВ>>>Как ты думаешь, почему считается некорректным приём дискуссии, называемый "апелляцией к опыту"? Никогда не задумывался?
VD>>Задумывался. Когда ты к нему прибегал.

ГВ>Ну так почему же этот приём считается некорректным?


Если что-то хочешь сказать, просто скажи. Нет полчи. Я отвичаю только на вопросы смысл и цель которых понимаю.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Насколько важен синтаксис языка?
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.09.06 19:15
Оценка:
Здравствуйте, FDSC, Вы писали:

FDS>Ага, вопрос: что мешало авторам сделать язык без этой особенности?


Если отбрасывать все решения кроме "все объект и общатся объекты могут только посылая сообщения", то и дийант получится вот такой. Ты же не можешь создать оператор if(условие) выражение else другое-выражение? Это же не укладывается в концепцию "все объект...".

Ну, и без вывертов жить не интересно. А выверты необычны. Вот как случай с тем, что возрат внутри блока кода прерывает выполнение другой функции.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[20]: Насколько важен синтаксис языка?
От: Beam Россия  
Дата: 05.09.06 19:43
Оценка: 4 (1) +1 -2
Здравствуйте, FDSC, Вы писали:

FDS>Вот мне это как раз очень страшно: "выход из блока во время его исполнения — штатная и достаточно часто использующаяся функция". С моей точки зрения — это скорее удобный хакерский приём. Он очень сильно усложняет верификацию алгоритма, просто сердцем чувствую, даже нехорошо как-то стало.


Ваше предчуствие Вас обманывает. Таким "хакерским" приемом Вы и сами пользуетесь постоянно.

int method(){
    if (a < 5) {
        return 8;
    } else
        return 10;
    }
}


Как работает эта программа: она вычисляет значение условия, а затем переходит к соответствущему составному оператору (блоку кода).
Есть ли у Вас сомнения, куда перейдет управление после выполнения return. Я думаю, что нет.
Но ведь Вы прервали выполнение блока кода (составного оператора) и вышли из метода! Хакерский прием или нет?

Представим, что блоки кода (операторы, объединенные фигурными скобками) — это объекты, которыми можно манипулировать, в т.ч. передавать эти блоки как параметры метода. Допустим у нас есть метод, который в зависимости от значения условия вызывает соответствующий блок кода (заметьте — описание метода полностью совпадает с описанием оператора if).

void if(boolean condition, block trueBlock, block falseBlock);


Теперь код можно переписать так:
int method(){
    if(a < 5, {return 8}, {return 10});
}

Есть ли у Вас сомнения, куда перейдет управление после выполнения return? Я снова думаю, что сомнений нет.

Теперь и сам Smalltalk. Угадайте, куда перейдет управление
method
    (a < 5) ifTrue: [^8] ifFalse: [^10].


P.S. В Smalltalk знак ^ аналогичен ключевому слову return
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Best regards, Буравчик
Re[22]: Насколько важен синтаксис языка?
От: Beam Россия  
Дата: 05.09.06 19:43
Оценка: +1 -1
Здравствуйте, VladD2, Вы писали:

Код:
VD>
VD>DataTable msgTable = msgs.Tables["message"]; if (msgTable == null)  return 0;
VD>

VD>А точнее:
VD>
VD>DataTable msgTable = msgs.Tables["message"];
VD>if (msgTable == null)
VD>  return 0;
VD>

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

Давайте поговорим о повторном использовании и читаемости кода.
Пусть имеется коллекция. Надо пробежаться по ней и выполнить некоторые операции.
Операции, которые нужно выполнить, различны для первого элемента (doFirst), для последнего элемента (doLast), а также для всех средних элементов (doMiddle).

На Java это может выглядеть так.

for (int index = 0; index < col.size(); index++) {
  Object elem = col.get(index);
  if (index == 1)
    doFirst( elem );    // TODO: подставить свою операцию для первого элемента коллекции
  else if (index == col.size()-1)
    doLast( elem );        // TODO: подставить свою операцию для последнего элемента коллекции
  else
    doMiddle( elem );    // TODO: подставить свою операцию для средних элементов коллекции
}


Но проблема заключается в том, что такой код повторяется в проекте несколько раз, и в добавок, операции, которые надо выполнять над элементами различны (т.е. doFirst, doLast, doMiddle могут изменяться для разных случаев). В Java придется скопировать этот код тоже несколько раз!!

В Smalltalk можно написать метод doFirst: doMiddle: doLast:, который решит эту проблему. Перебор коллекции будет осуществляться внутри этого метода, а вот сами операции, которые необходимо выполнить можно передать в качестве параметров.

Вызов этого метода будет выглядеть так:
col 
    doFirst: [:elem | ...]
    doMiddle: [:elem | ...]
    doLast: [:elem | ...]


На мой взгляд этот код читается легче, чем на Java. Да и возможности повторного использования у него выше.
Все это возможно в Smalltalk и невозможно в Java благодаря наличию блоков кода (BlockClosure).

Радует, что в C# добавили такие возможности (я говорю про лямбду в C# 3), а там глядишь и Java подтянется в этом плане.
Только интересно, примет ли это все mainstream? Наверное ДА — вон сколько шума вокруг LINQ.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Best regards, Буравчик
Re[11]: Насколько важен синтаксис языка?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 05.09.06 20:30
Оценка: 12 (1) +4
Здравствуйте, VladD2, Вы писали:

ГВ>>Да ничего нового, в общем. Для меня, во всяком случае. Зато кратко и честно, хоть и грубовато.

VD>Ну, да, конечно. Ты же ведь его слова на свой счет не относишь. Хотя именно так оно и есть.

Во всяком случае, я нисколько не оскорбился.

VD>>>Примеры амбиций мэйнстрима тоже хотелось бы поглядеть.

ГВ>>Специализация по странным критериям, ориентация на a priori низкоквалифицированного программиста. Выхолащивание понятия "программист" до "кодер". Достаточно?
VD>Скажи, вот ты как мэйнстрим-программист счташь себя низкоквалифицированным? Нет? Значит все же мэйнстрим ориентируется и на довольно квалифицированных?

Про свои взаимоотношения с мэйнстримом я уже говорил, повторяться не буду. Дополню только тем, что от Java я долго отплёвывался, когда довелось кое-что на ней писать.

VD>И вот еще что... Ты ответил не на мой вопрос. Я не спрашивал на кого ориентируется мэйнстрим. Я просил привести примеры амбиций мэйнстрима. Мы ведь говорили об оскорблениях и выливаемом дерьме выливаемом с амбициозностю и пафасом. Ты заговорил об "амбициях мэйнстрима". Так будь добр предявить какие-то факты существования амбиций. Ты вообще хорошо понимаешь смысл этого слова?


Естественно, у самого мэйнстрима, как у неодушевлённого явления, амбиций никаких нет. Я скорее говорю о тех требованиях, которые предъявляются к окружающим ради "следования майнстриму".

ГВ>>Если не достаточно, то добавлю ещё перекорёживание тезиса о постоянном обучении. Извини, но прыжки по направлению C++ -> Java -> C# -> ASP и прочий web никак "учёбой" назвать нельзя.

VD>Извни, но это твое личное частно мнение. Люди изучают то что им нужно. Изучаяют для определенных целей, а не ради развлечения.

Естественно, это моё личное мнение. С которым окружающие вольны соглашаться или не соглашаться. Далее они вольны как-то оценить постинг или пройти мимо. Также они вольны написать ответный постинг или не написать его. В свою очередь я волен отреагировать на этот ответный постинг или проигнорировать его.

VD>И не тебе решать чему нужно учиться, а чему нет.


Да я и не пытаюсь решить за всех. Это прерогатива майнстрима — за всех решать.

Я только со своей колокольни характеризую некоторое явление, которое мне не очень сильно нравится.

VD>Ты то сам после С --> С++ куда дальше прыгнул? В "Философию программирования"?


Шутку оценил. Но и ты не переоценивай RSDN в качестве индикатора, OK?

ГВ>> Это натаскивание на новые API в рамках одной идеи и не более того. А ещё и перекос в сторону "специалистов по API xxxxx", специалистов "по библиотеке X".

VD>Ну, что же поделаешь если библиотеки стали сложными. И причем тут амбиции, то?

Так в том-то и дело, что их сложность преувеличивается и ммм... подтягивается под понятие "специализация". В конце концов, любая библиотека пишется для упрощения решения определённого круга задач. Для упрощения, а не для создания группы посвящённых. В последнем случае это уже не общеизвестная библиотека, а нечто иное.

Впрочем, возможно, что я преувеличиваю.

ГВ>>И главное, майнстрим не ставит своей целью борьбу со скукой. Наоборот, спящий мозг — самое то.


VD>Да, действительно. Такие задачи как борьбу со скукой рещает не мэйнстрим и не программирование вообще, а эстрада, театр, кино, музыка, кники, телевизор и т.п. На работе люди работают. И ты волен лишь выбрать работу которая тебя интересует. Хочешь развлекаться — иди работать в стрип-клуб .


Что-то подобное я и ожидал услышать. Но ты не понял. Я говорю о скуке, вызванной однообразием и примитивностью задач. Здесь уже ни кино ни стриптиз не помогут.

ГВ>>Ну и кому это понравится?

VD>Хороший вопрос. Так что понравится то? Быдляческое недменность всех этих Колхозов, Вин2К и т.п.? Мне лично оно не не нравится. Мне вообще не наравится когда другие говоря со мной начинают намекать, что я или другие люди не дерьмо, а он Д'артоньян на белом коне.

А мне не нравится, когда некто начинает вливать про "закостенелые мозги", "замшелые стереотипы" и "фобии". И почему-то я не удивляюсь, что этот же некто остро реагирует на нелицеприятные высказывания других.
<< Под музыку: a-Ha — The sun always shine on TV >>
<< При помощи Януса: 1.2.0 alpha rev. 650 >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[2]: Кстати
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 05.09.06 20:30
Оценка:
Здравствуйте, VladD2, Вы писали:

ГВ>>

VD>>>>>...относиться с уважением и к другим. Они ведь тоже что-то сделали?!
ГВ>>>>Как ты думаешь, почему считается некорректным приём дискуссии, называемый "апелляцией к опыту"? Никогда не задумывался?
VD>>>Задумывался. Когда ты к нему прибегал.

ГВ>>Ну так почему же этот приём считается некорректным?


VD>Если что-то хочешь сказать, просто скажи. Нет полчи. Я отвичаю только на вопросы смысл и цель которых понимаю.


Буду краток: оценку высказываний не стоит связывать с личностью того, кто их сформулировал. Какая разница, кто сколько чего сделал?
<< Под музыку: a-Ha — Hunting high and low >>
<< При помощи Януса: 1.2.0 alpha rev. 650 >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Дополнение
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 05.09.06 20:38
Оценка: +1
Здравствуйте, VladD2,

Дополню рассуждения на тему опыта.

Маленькая мышка сожрать большой амбар зерна, то есть "сделает" очень много, но банальным грызуном с примитивной моделью существования она от этого быть не перестанет. Тогда как учёный может жизнь положить на безуспешные исследования, то есть "сделать" в смысле ощутимого результата очень мало, но, возможно, проложить этим дорогу другим.

Так что, при жизни к учёному нужно относиться пренебрежительнее, чем к грызуну?
<< Под музыку: a-Ha — The living daylights >>
<< При помощи Януса: 1.2.0 alpha rev. 650 >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[14]: Насколько важен синтаксис языка?
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.09.06 23:27
Оценка: +1 :)
Здравствуйте, WolfHound, Вы писали:

WH>А как исключения относятся к выходу черт знает куда?


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

WH>Да и что получится если блоки кода сложить в коллекцию, потом выдти из функции где были созданны эти блоки, и после этого повызывать эти блоки?


Очень хитрая логика. Такая хитра, что только настоящий индеец в ней может разобраться.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: Насколько важен синтаксис языка?
От: night beast СССР  
Дата: 06.09.06 04:59
Оценка:
Здравствуйте, Kisloid, Вы писали:

VD>>Да, уж. Забавно, что если бы не любовь к смешиванию с дерьмом, то их (егоЭ) бы было интересно послушать.


K>Кстати говоря да, я даже сегодня прочитал все сообщения Win2K'ея. Если фильтровать все его поливания дерьмом остальных, то он очень толковые вещи говорит, местами.


если он тот, кто я думаю, то кого попало (без причины) он дерьмом не обливает.
Re[7]: Насколько важен синтаксис языка?
От: Sinclair Россия https://github.com/evilguest/
Дата: 06.09.06 05:01
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>те же яйца, только в профиль. Только синтаксис индексеров слишком убогий, для использования в, например, ConcurrentMap.

ANS>Рассмотрим метод V putIfAbsent(K key, V value), который атомарно устанавливает значение, если по ключу еще не было записи, или еще более сложный случай — "boolean replace(K key, V oldValue, V newValue)", который атомарно устанавливает значение, только если по ключу лежит определённый элемент. В рамки индексеров такая семантика уже не влазит. И получается — половина доступов к словарю по индексеру, а половина по методам.
Ну, во-первых давайте посчитаем вызовы putIfAbsent по сравнению с put. Или ты по методу блондинки вероятность оцениваешь?
Во-вторых, мне не нравится сам подход. Это что же, я буду изобретать по методу на каждую мыслимую транзакцию??? Имхо, лучше дать пользователю возможность явно обозначать границы:
lock(map.SyncRoot)
{
  if (!map.Contains[key])
      map[key]=value;
}
lock(map.SyncRoot)
{
  if(map[key]==oldValue) map[key]=newValue;
}



ANS>Короче — проперти и индексеры — сакс

О да. Удивляюсь, как еще джава решилась применить встроенные value-типы. А то ведь можно же было обойтись одними классами.

S>>2. Джава sux: а если в словаре хранятся значения примитивного типа, то мы что будем возвращать? А что делать, если мы хотим намеренно сохранить null?

ANS>В джава нельзя положить в словарь примитивный тип, так что со вторым пунктом всё впорядке
Точнее, это третий пункт: джава suxx, потому что в ее коллекции нельзя положить примитивный тип. Кстати, теперь вроде можно. Или генерики в джаве так и не заработали?
S>>3. Смоллток sux: это что, нам надо в каждом методе предоставлять параметры для разных исходов? А если я этого не сделал?
ANS>Есть метод "at:" который просто кидает a KeyNotFoundError в случае чего. Выбор за программистом.
Ну хоть это хорошо.

ANS>Во-первых, как я написал выше, код можно записать на исключениях один в один с этим. Во-вторых, ты можеш передать хоть 10 разных блоков в 10 разных методов — возврат то сработает только для одного — до остальных дело просто не дойдёт.

Неважно, до кого дойдет. Мне важно не писать один и тот же код дважды.
ANS>В третих, можно создать один блок, присвоить его переменной и передавать в оба метода-доступа.
А, ну вот это уже интереснее, хотя скорее всего читаться будет хуже, чем то же самое в виде try/catch.
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[8]: Насколько важен синтаксис языка?
От: Sinclair Россия https://github.com/evilguest/
Дата: 06.09.06 05:01
Оценка: +2 :)
Здравствуйте, Геннадий Васильев, Вы писали:


ГВ>Есть. Ты забываешь про лес и выделяешь деревья. Win2K очень много дельного говорит (как и камрад Kolhoz). Не знаю, зачем это ему нужно. Может быть, его тоже достал "майнстрим" со своими амбициями? Я вот ничего оскорбительного в его словах не вижу

а ты сходи постинги его почитай. Квалификация у чувака есть, но от так тщательно маскирует ее за ведрами помоев, что трудно разглядеть. И уж успешность его в жизни — не знаю, личной там или профессиональной, — вызывает обоснованные сомнения. Влад верно заметил — те, кто чувствует себя комфортно и достиг успеха, не бегают на форумы собеседников в умственной отсталости обвинять.
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[7]: Насколько важен синтаксис языка?
От: Sinclair Россия https://github.com/evilguest/
Дата: 06.09.06 05:01
Оценка: +1
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>Я забыл упомянуть про такую фичу ST-блоков как нелокальный возврат (non-local return). Её несколько раз упоминали в этом форуме, но внимание особо не заостряли. Этой фичи нет ни в C#2, ни в java. То есть "с привычным С-синтаксисом" — можно, но по сути в C#2 — нельзя.


ANS>Рассмотрим уже привычный нам пример:


ANS>
ANS>aValue := aDictionary at: aKey ifAbsent: [return nil].
ANS>... тут идёт, при котором aValue всегда имеет корректное значение ...
ANS>


ANS>Вместо пугающей "крышечки" я написал слово "return". Так вот, "возврат" выполняется не в контексте блока, а в контексте где блок определён.

Ой! Ужасть, как интересно. Чего-то я здесь не понимаю.
Вопрос №1: что еще "интересного", т.е. контекстно-специфичного, можно сделать, помимо return? Ну там: break, continue, goto?
ANS> То есть выполнение команды "return" из анонимной функции в C#, или метода анонимного класса в Java возвращают управление в код, вызвавший эту функцию. А в ST происходит возврат из того метода, где был блок определён.
Вопрос №2: а как это работает вместе с присвоением блока кода в переменную с последующей ее передачей за пределы контекста.
Подробнее: допустим, у нас есть переменная absent. Мы в нее присвоили значение в контексте одного метода. А вызвали в рамках совсем другого. Куда вернется управление?
ANS>Отсутсвие этой фичи делает невозможным реализацию аналога at:ifAbsent: в Java и C#.
Угу, причем не вполне ясно, нужен ли этот аналог.
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[9]: Насколько важен синтаксис языка?
От: _rasta  
Дата: 06.09.06 05:12
Оценка: :)
Здравствуйте, Sinclair, Вы писали:

ГВ>>Есть. Ты забываешь про лес и выделяешь деревья. Win2K очень много дельного говорит (как и камрад Kolhoz). Не знаю, зачем это ему нужно. Может быть, его тоже достал "майнстрим" со своими амбициями? Я вот ничего оскорбительного в его словах не вижу

S>а ты сходи постинги его почитай. Квалификация у чувака есть, но от так тщательно маскирует ее за ведрами помоев, что трудно разглядеть. И уж успешность его в жизни — не знаю, личной там или профессиональной, — вызывает обоснованные сомнения. Влад верно заметил — те, кто чувствует себя комфортно и достиг успеха, не бегают на форумы собеседников в умственной отсталости обвинять.

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