Здравствуйте, FDSC, Вы писали:
FDS>Здравствуйте, minorlogic, Вы писали:
M>>Известно , что счет удобнее вести в 12 рмчной системе исчесления , но пользуемся мы 10 ричной ..
FDS>Это откуда это известно. Мне вот говорили, что лучшая система исчисления — с основанием с числом e , так и не знаю почему
Были такие исследования, источник не помню. но вкратце таблица умножения намного проще.
12 делится без остатка на 2 , 3, 4, 6, в отличие от 10 который делится на 2 и 5. Помните как легко делить на 2 и на 5 различные числа в 10 ричной системе .
Здравствуйте, FDSC, Вы писали:
FDS>Я макросы и имел ввиду. Если честно, кроме макросов меня в Nemerle ничего не привлекает.
А это зря. Макросы это средство автоматизации программирования, но программирования они не отменяют. А вот как раз програмировать лучше на боолее выраительном языке.
FDS> Собственно, всё что я говорил — это про макросы. Сам язык мне почти нравится — он действительно не сильно отличается.
Это ошибочное мнение. Он не неотличается. Он успешно "косит" под привычный язык. А отличается он сильно. Но чтобы это прочувствовать нужно пописать на нем код и попытаться использовать те вещи которые пока просто непонятны.
FDS> По моему они вообще не позволяют адекватно переносить "макросовые" мысли на язык макросов
Вот это вообще не понял.
FDS>Если честно, то я всегда считал своим успехом то, что мои мысли стали относительно слабо зависить от языка программирования. И код стал лучше после этого. Что ж там за ломка то такая? Может эти языки, действительно, лучше на помойку выбросить, если там такая ломка
Объяснить это невозможно. Это нужно пробовать. Скачай Смолток, а лучше Лисп или хотя бы ОКамл и попробуй. Только совместо с этим нужно прочесть некую статью по языку. Крышу будет рвать еще при чтении книги, а потом когда будешь пытаться что-то сделать, но уже меньше.
Гарантирую, что это ощущение ни в какое сравнение не идет с дедовольством от того или иного алголоподобного языка.
FDS>Макросы (полностью)
И что с ними не так? Ты писал когда нибудь программу которая генерировала бы код другой программы?
FDS> и то, что нужно объявлять все переменные как переменные
Хм. А как что же их тогда объявлять? Или ты предлагаешь вообще их не объявлять? Последнее приводит к ошибкам. Это натуральные грабли. Одна опечатка и ищи ошибку часами.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
вроде описано, что возврат-то идёт из блока, который содержится в выражении, а не из метода, в котором содержится выражение, разницу ощущаешь?
Я прекрасно понимаю, что это возврат ведет себя как континюэшон. Не надо мне объяснять банальности. Смысла моих слов это не меняет. На лицо неочевидный переход управления.
К>P.S. вроде смолтолк вообще почти не знаю, поэтому могу ошибаться , но если бы было как ты утверждаешь, то это грабли, причём кривее некуда, а тут просто лямбда и не более
По-моему, лямбды в языках притендующих на ФЯ вообще являются выражениями и потому о возврате управления в них речь не идет. Даже в языках хорошо реализующих императивную составляющую возврат является структурным, и никак не может передавать управление вне функций. Другое дело, что в некоторых языках есть реальные континуэшоны или хотя бы итераторы. Но они опять же выглядят совершенно структрно, а этот код выглядит явно не структрно.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, FDSC, Вы писали:
FDS>Вот если бы эти лямбды нельзя было бы передавать как параметры другим методам, тогда можно было бы сказать, что это полезно и не слишком опасно для ограниченного применения.
На самом деле это "фича" со своими бенефитами и своими недостатками. И их оценка не так проста. Лично я считаю, что подобные континюэйшоны могут привести к совершенно запутанному коду, так как читая его мы не рассчитываем на то, что функция может не вернуть управление или что управление из середины выражения может бесследно исчезнуть и оказаться уже в конце метода.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Курилка, Вы писали:
К>Наоборот смысл лямб в том и есть, чтобы передавать анонимные функции в другие функции, если не передавать, то грош им цена и нафиг не упало.
Еще раз. Это не лябда! Это эдакий вариант континюэшона, а еще точнее замена дальнего 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>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Геннадий Васильев, Вы писали:
ГВ>Да ничего нового, в общем. Для меня, во всяком случае. Зато кратко и честно, хоть и грубовато.
Ну, да, конечно. Ты же ведь его слова на свой счет не относишь. Хотя именно так оно и есть.
ГВ>А ещё грамотно и без опечаток. Очень уж мне эта черта импонирует.
VD>>Примеры амбиций мэйнстрима тоже хотелось бы поглядеть.
ГВ>Специализация по странным критериям, ориентация на a priori низкоквалифицированного программиста. Выхолащивание понятия "программист" до "кодер". Достаточно?
Скажи, вот ты как мэйнстрим-программист счташь себя низкоквалифицированным? Нет? Значит все же мэйнстрим ориентируется и на довольно квалифицированных?
И вот еще что... Ты ответил не на мой вопрос. Я не спрашивал на кого ориентируется мэйнстрим. Я просил привести примеры амбиций мэйнстрима. Мы ведь говорили об оскорблениях и выливаемом дерьме выливаемом с амбициозностю и пафасом. Ты заговорил об "амбициях мэйнстрима". Так будь добр предявить какие-то факты существования амбиций. Ты вообще хорошо понимаешь смысл этого слова?
ГВ>Если не достаточно, то добавлю ещё перекорёживание тезиса о постоянном обучении. Извини, но прыжки по направлению C++ -> Java -> C# -> ASP и прочий web никак "учёбой" назвать нельзя.
Извни, но это твое личное частно мнение. Люди изучают то что им нужно. Изучаяют для определенных целей, а не ради развлечения. И не тебе решать чему нужно учиться, а чему нет. Ты то сам после С --> С++ куда дальше прыгнул? В "Философию программирования"?
ГВ> Это натаскивание на новые API в рамках одной идеи и не более того. А ещё и перекос в сторону "специалистов по API xxxxx", специалистов "по библиотеке X".
Ну, что же поделаешь если библиотеки стали сложными. И причем тут амбиции, то?
ГВ>И главное, майнстрим не ставит своей целью борьбу со скукой. Наоборот, спящий мозг — самое то.
Да, действительно. Такие задачи как борьбу со скукой рещает не мэйнстрим и не программирование вообще, а эстрада, театр, кино, музыка, кники, телевизор и т.п. На работе люди работают. И ты волен лишь выбрать работу которая тебя интересует. Хочешь развлекаться — иди работать в стрип-клуб .
В общем, понятно. Так как на вопрос рельно ты ответить не можешь (ну, нет в природе явления вроде "амбиций мэйнстрима") и вместо этого ты тут с большим удовольствием загнул рассуждения на панко-философо-романтическую тему о скуке бытия.
ГВ>Ну и кому это понравится?
Хороший вопрос. Так что понравится то? Быдляческое недменность всех этих Колхозов, Вин2К и т.п.? Мне лично оно не не нравится. Мне вообще не наравится когда другие говоря со мной начинают намекать, что я или другие люди не дерьмо, а он Д'артоньян на белом коне.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
VD>>>>...относиться с уважением и к другим. Они ведь тоже что-то сделали?!
ГВ>>>Как ты думаешь, почему считается некорректным приём дискуссии, называемый "апелляцией к опыту"? Никогда не задумывался?
VD>>Задумывался. Когда ты к нему прибегал.
ГВ>Ну так почему же этот приём считается некорректным?
Если что-то хочешь сказать, просто скажи. Нет полчи. Я отвичаю только на вопросы смысл и цель которых понимаю.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, FDSC, Вы писали:
FDS>Ага, вопрос: что мешало авторам сделать язык без этой особенности?
Если отбрасывать все решения кроме "все объект и общатся объекты могут только посылая сообщения", то и дийант получится вот такой. Ты же не можешь создать оператор if(условие) выражение else другое-выражение? Это же не укладывается в концепцию "все объект...".
Ну, и без вывертов жить не интересно. А выверты необычны. Вот как случай с тем, что возрат внутри блока кода прерывает выполнение другой функции.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, FDSC, Вы писали:
FDS>Вот мне это как раз очень страшно: "выход из блока во время его исполнения — штатная и достаточно часто использующаяся функция". С моей точки зрения — это скорее удобный хакерский приём. Он очень сильно усложняет верификацию алгоритма, просто сердцем чувствую, даже нехорошо как-то стало.
Ваше предчуствие Вас обманывает. Таким "хакерским" приемом Вы и сами пользуетесь постоянно.
int method(){
if (a < 5) {
return 8;
} else
return 10;
}
}
Как работает эта программа: она вычисляет значение условия, а затем переходит к соответствущему составному оператору (блоку кода).
Есть ли у Вас сомнения, куда перейдет управление после выполнения return. Я думаю, что нет.
Но ведь Вы прервали выполнение блока кода (составного оператора) и вышли из метода! Хакерский прием или нет?
Представим, что блоки кода (операторы, объединенные фигурными скобками) — это объекты, которыми можно манипулировать, в т.ч. передавать эти блоки как параметры метода. Допустим у нас есть метод, который в зависимости от значения условия вызывает соответствующий блок кода (заметьте — описание метода полностью совпадает с описанием оператора if).
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:, который решит эту проблему. Перебор коллекции будет осуществляться внутри этого метода, а вот сами операции, которые необходимо выполнить можно передать в качестве параметров.
На мой взгляд этот код читается легче, чем на Java. Да и возможности повторного использования у него выше.
Все это возможно в Smalltalk и невозможно в Java благодаря наличию блоков кода (BlockClosure).
Радует, что в C# добавили такие возможности (я говорю про лямбду в C# 3), а там глядишь и Java подтянется в этом плане.
Только интересно, примет ли это все mainstream? Наверное ДА — вон сколько шума вокруг LINQ.
Здравствуйте, 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.: Винодельческие провинции — это есть рулез!
VD>>>>>...относиться с уважением и к другим. Они ведь тоже что-то сделали?!
ГВ>>>>Как ты думаешь, почему считается некорректным приём дискуссии, называемый "апелляцией к опыту"? Никогда не задумывался?
VD>>>Задумывался. Когда ты к нему прибегал.
ГВ>>Ну так почему же этот приём считается некорректным?
VD>Если что-то хочешь сказать, просто скажи. Нет полчи. Я отвичаю только на вопросы смысл и цель которых понимаю.
Буду краток: оценку высказываний не стоит связывать с личностью того, кто их сформулировал. Какая разница, кто сколько чего сделал?
<< Под музыку: a-Ha — Hunting high and low >>
<< При помощи Януса: 1.2.0 alpha rev. 650 >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Маленькая мышка сожрать большой амбар зерна, то есть "сделает" очень много, но банальным грызуном с примитивной моделью существования она от этого быть не перестанет. Тогда как учёный может жизнь положить на безуспешные исследования, то есть "сделать" в смысле ощутимого результата очень мало, но, возможно, проложить этим дорогу другим.
Так что, при жизни к учёному нужно относиться пренебрежительнее, чем к грызуну?
<< Под музыку: a-Ha — The living daylights >>
<< При помощи Януса: 1.2.0 alpha rev. 650 >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Здравствуйте, WolfHound, Вы писали:
WH>А как исключения относятся к выходу черт знает куда?
Ну, если на исключениях начать логику описывать, то можно очень запутанные решения создать. Потому и рекомендуют использовать исключения только для разборок с исключительными ситуациями. Тут уж не грех и стек раскрутить, и на значения наплевать.
WH>Да и что получится если блоки кода сложить в коллекцию, потом выдти из функции где были созданны эти блоки, и после этого повызывать эти блоки?
Очень хитрая логика. Такая хитра, что только настоящий индеец в ней может разобраться.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Kisloid, Вы писали:
VD>>Да, уж. Забавно, что если бы не любовь к смешиванию с дерьмом, то их (егоЭ) бы было интересно послушать.
K>Кстати говоря да, я даже сегодня прочитал все сообщения Win2K'ея. Если фильтровать все его поливания дерьмом остальных, то он очень толковые вещи говорит, местами.
если он тот, кто я думаю, то кого попало (без причины) он дерьмом не обливает.
Здравствуйте, Andrei N.Sobchuck, Вы писали:
ANS>те же яйца, только в профиль. Только синтаксис индексеров слишком убогий, для использования в, например, ConcurrentMap. ANS>Рассмотрим метод V putIfAbsent(K key, V value), который атомарно устанавливает значение, если по ключу еще не было записи, или еще более сложный случай — "boolean replace(K key, V oldValue, V newValue)", который атомарно устанавливает значение, только если по ключу лежит определённый элемент. В рамки индексеров такая семантика уже не влазит. И получается — половина доступов к словарю по индексеру, а половина по методам.
Ну, во-первых давайте посчитаем вызовы putIfAbsent по сравнению с put. Или ты по методу блондинки вероятность оцениваешь?
Во-вторых, мне не нравится сам подход. Это что же, я буду изобретать по методу на каждую мыслимую транзакцию??? Имхо, лучше дать пользователю возможность явно обозначать границы:
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
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
ГВ>Есть. Ты забываешь про лес и выделяешь деревья. Win2K очень много дельного говорит (как и камрад Kolhoz). Не знаю, зачем это ему нужно. Может быть, его тоже достал "майнстрим" со своими амбициями? Я вот ничего оскорбительного в его словах не вижу
а ты сходи постинги его почитай. Квалификация у чувака есть, но от так тщательно маскирует ее за ведрами помоев, что трудно разглядеть. И уж успешность его в жизни — не знаю, личной там или профессиональной, — вызывает обоснованные сомнения. Влад верно заметил — те, кто чувствует себя комфортно и достиг успеха, не бегают на форумы собеседников в умственной отсталости обвинять.
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, 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
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Sinclair, Вы писали:
ГВ>>Есть. Ты забываешь про лес и выделяешь деревья. Win2K очень много дельного говорит (как и камрад Kolhoz). Не знаю, зачем это ему нужно. Может быть, его тоже достал "майнстрим" со своими амбициями? Я вот ничего оскорбительного в его словах не вижу S>а ты сходи постинги его почитай. Квалификация у чувака есть, но от так тщательно маскирует ее за ведрами помоев, что трудно разглядеть. И уж успешность его в жизни — не знаю, личной там или профессиональной, — вызывает обоснованные сомнения. Влад верно заметил — те, кто чувствует себя комфортно и достиг успеха, не бегают на форумы собеседников в умственной отсталости обвинять.