Re[4]: Что мы потеряли?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 04.09.06 00:56
Оценка:
Здравствуйте, IT, Вы писали:

IT>Это ещё и хороший способ самовнушения из серии я не понят, потому что им не дано


Иногда это именно так и обстоит. Но только иногда.
<< Под музыку: Enigma — Mea Culpa (fading shades) >>
<< При помощи Януса: 1.2.0 alpha rev. 650 >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[7]: Что мы потеряли?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 04.09.06 01:08
Оценка: 1 (1) +1
Здравствуйте, Lazy Cjow Rhrr, Вы писали:

LCR>Однако я старался сделать акцент на том, что менять реализацию на лету — это неинтересно, гораздо интереснее менять часть интерфейсов на лету. Пока никто не возразил насчёт того, что интерфейсы менять — (почти) невозможно.


Это невозможно в общем случае. Если пользователь ожидает определённое имя метода (частный случай — смещение в VMT), то для замены интерфейса нужно переделать пользователя. Динамическая загрузка позволяет в некоторой степени избавиться от соблюдения требований к "смещению в VMT", но только за счёт дополнительной схемы поиска адреса метода в VMT. Но если пользователь рассчитывает на имя "Open", то ему бесполезно подсовывать имя "Open_please". Если уж хочется подменять и имя метода, то придётся вводить дополнительное звено косвенности, типа такого:

1) Загрузить имя метода, который будет вызываться;
2) Найти смещение этого метода;
3) Связаться с адресом метода.

Соответственно, когда появится такая схема, тотчас горячие головы захотят организовать подмены на шаге 1) и появится ищё один уровень косвенности:

0) Найти то хранилище, откуда будет загружено имя метода.

И так далее до бесконечности. А ещё ежели захочется вместо одного метода вызывать два...

Вот до чего может довести пренебрежительное отношение к LSP.
<< Под музыку: Enigma — Mea Culpa (fading shades) >>
<< При помощи Януса: 1.2.0 alpha rev. 650 >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[7]: Что мы потеряли?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 04.09.06 01:13
Оценка: :)
Здравствуйте, Трурль, Вы писали:

Т>Нет, правильно — eXtremally Munged Lisp.


eXtremally Muddled Lisp
<< Под музыку: Cruachan — Bloody Sunday >>
<< При помощи Януса: 1.2.0 alpha rev. 650 >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[20]: Что мы потеряли?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 04.09.06 01:25
Оценка: :)
Здравствуйте, Cyberax, Вы писали:

>> Да ну, брось. Сейчас такие же. Не хуже и не лучше. Ещё через 10 лет

>> будешь вспоминать как боролся с боксингом или ещё какой к тому времени
>> забытой хренью и будешь точно так же ронять скупую программистскую слезу
C>Раньше трава была зеленее, а программы быстрее

А ещё:

Блоки питания — тяжелее;
Вентиляторы — шумнее;
Модули памяти — толще;
Флоппики — диаметристее и флопичнее.

Короче, куда ни кинь: "берёшь в руки, маешь — вещь".

<< Под музыку: Cruachan — Ossian's Return >>
<< При помощи Януса: 1.2.0 alpha rev. 650 >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[5]: Что мы потеряли?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 04.09.06 02:20
Оценка: +1
Здравствуйте, Lazy Cjow Rhrr, Вы писали:

LCR>Чуть усложнили язык — и привет. Такие вещи как статическая типизация и инкапсуляция являясь преимуществами с одной стороны оборачиваются большими препятствиями со стороны hot upgrade. (Например, я обновил интерфейс класса, как мне теперь обновить все объекты этого класса? Все ссылки на эти объекты? Если я заменил класс двумя классами? Если сделал рефакторинг?) Кстати, наиболее продвинутая в этом вопросе Ява также ещё далека от совершенства (я о HotSwap).


Вероятнее всего, при затрагивающих интерфейс изменениях тебе придётся обновить всех пользователей класса. Или перезагружать всю систему.

LCR>Вот что понимают под горячей заменой кода другие люди :

LCR>1. Переход от старого к новому коду и обратно так же эффективен для выполняемого кода, как и отсутствие перехода. (Это совсем не то, что например "горячая замена" JSP-формы, что вызывает генерацию и перекомпиляцию соответствующего сервлета и является по сути маленькой кнопочкой "reset").
LCR>2. Контроль за гранулярностью загрузки.
LCR>3. Контроль над процессом загрузки (в т.ч. и откат).
LCR>4. Слабые условия на новый код, произвольный старый код.
LCR>5. Замена (то есть загрузка кода и передача управления) выполняется автоматически средой.

Если реализовать контроль за вызовами функций, то горячую замену компонентов можно сделать даже на C. Перезагрузка самого бинарного кода — это совсем не большая проблема. Куда как труднее в общем случае развязать взаимные зависимости состояний пользователей и самих используемых компонентов. Поэтому, кстати, рассуждения относительно преимуществ stateless-модели часто соседствуют с обсуждением горячей замены.

LCR>Между прочим, такая горячая замена у компилируемых языков есть только у динамически типизированных (Erlang, Lisp, Smalltalk). А REPL вообще только для двух последних. Совпадение?


Если язык предусматривает динамическое связывание, то задача немного упрощается, только и всего.
<< Под музыку: a-Ha — Crying in the rain >>
<< При помощи Януса: 1.2.0 alpha rev. 650 >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[8]: Что мы потеряли?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 04.09.06 02:39
Оценка:
Здравствуйте, eao197, Вы писали:

LCR>>Read-Eval-Print Loop.

LCR>>http://en.wikipedia.org/wiki/Read-eval-print_loop
E>Т.е. приведенный мной здесь
Автор: eao197
Дата: 04.10.05
пример на Ruby является примером REPL (в конце сообщения)?


Твой пример, кстати, иллюстрирует одну особенность REPL. Заменяется неактивный в данный момент объект. Обрати внимание на последовательность выделенных слов:

Вначале вызываем метод hello у объекта t класса Test. Получаем то, что и было сразу реализовано в классе Test.
Затем через eval расширяем класс (Стоп! В этот момент в нашем контексте нет активного обращения к t — Г.В.) Test и добавляем метод bye. Вызваем его у уже существующего объекта t. Получаем ожидаемый результат -- вызов нового метода.


То есть типизация осталась на своём месте, чудес не бывает. Произошла перетрансляция (или пересвязывание, хоть груздём назови) кода типа Test. Здесь, кстати, сильно поможет GC, который по мере удаления ссылок на бинарный код типа в конце концов его прихлопнет.
<< Под музыку: a-Ha — The swing of things >>
<< При помощи Януса: 1.2.0 alpha rev. 650 >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[7]: Что мы потеряли?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 04.09.06 03:15
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Ведь в чем слабость Лисп-коммюнити? В непереносимости программ м/у различными Лисп-средами. Майнстримовыми стали те языки, в которых код более-менее переносим хотя бы на уровне исходников.


Скажу честно. Мне было бы страшно пользоваться программами, если бы Lisp стал мэйнстримовым языком.
<< Под музыку: a-Ha — Hunting high and low >>
<< При помощи Януса: 1.2.0 alpha rev. 650 >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[5]: Что мы потеряли?
От: Дарней Россия  
Дата: 04.09.06 03:29
Оценка: :)
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Иногда это именно так и обстоит. Но только иногда.


Элиты очень мало — по определению. Поэтому не "иногда", а "в большинстве случаев"
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[12]: Что мы потеряли?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 04.09.06 03:34
Оценка: +3
Здравствуйте, VladD2, Вы писали:

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


Фиг его знает. Значит, свой диплом в 93-м я писал под влиянием очень малоизвестного Smalltalk, о котором было, правда, было написано в книжке где-то 91-го года издания, что и сподвигло меня на поиски. А русскую документацию на BC++ 2.0 в 92-м распечатывал во сне. Место действия — Севастополь. Кстати, вот этот вот словарь
Автор: Геннадий Васильев
Дата: 29.11.05
появился как раз в то же время, в 92-93 (обрати внимание на упоминание C++).

В том же 93-м мне предложили работу как раз на C++. Контора работала на германцев, кажись. Так что, я бы не стал утверждать, что C++ не был известен или был уделом единиц. Паскалем же нередко пользовались в силу того, что он значимо быстрее компилировался на распространённых тогда машинах (286/1M/5.25+3.5/типичный объём винта не помню). Хотя и 386-е уже были в достаточном количестве, чтобы эта проблема не была большой.
<< Под музыку: Кельтская гитара — Туман окутал родные горы >>
<< При помощи Януса: 1.2.0 alpha rev. 650 >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[6]: Что мы потеряли?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 04.09.06 03:37
Оценка:
Здравствуйте, Дарней, Вы писали:

ГВ>>Иногда это именно так и обстоит. Но только иногда.

Д>Элиты очень мало — по определению. Поэтому не "иногда", а "в большинстве случаев"

На том и остановимся: в большинстве случаев это самовнушение (что "им не дано понять"), а в некоторых редких "им" действительно не дано понять.
<< Под музыку: Кельтская гитара — Туман окутал родные горы >>
<< При помощи Януса: 1.2.0 alpha rev. 650 >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[21]: Что мы потеряли?
От: Mikhail Polykovsky Россия http://glader.ru
Дата: 04.09.06 03:40
Оценка: 1 (1) +7
Здравствуйте, VladD2, Вы писали:

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


C>>VladD2 wrote:

>>> C>Еще Transport Tycoon, Quake, Duke Nukem, Rise of Triad и еще куче игр.
>>> C>Часть уже потом появилась.
>>> И все это в 1993-1994. Ну, ты крут.
C>>TT — как раз в начале 1994 года, ROTT — конец 94 года. Вот с DN напутал.

VD>Кто такие TT и ROTT знаешь один ты.


Это ложное высказывание
Re[7]: Что мы потеряли?
От: Дарней Россия  
Дата: 04.09.06 04:20
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

опять игрой в слова развлекаешься
самовнушение — это отнесение себя любимого к "элите" на основании знания каких-то технологий или языков, экзотических или не очень.
На самом же деле, элита — это те, кто умеет создавать новое. Или решать старые задачи, но новыми (лучшими) способами. Неважно, какими инструментами. Их можно подобрать или придумать свой.
"Все мы слишком много знаем и слишком мало умеем" (С) Ремарк
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[9]: Что мы потеряли?
От: FR  
Дата: 04.09.06 04:49
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Твой пример, кстати, иллюстрирует одну особенность REPL. Заменяется неактивный в данный момент объект. Обрати внимание на последовательность выделенных слов:


>>> class Test:
...  def run(self):
...     Test.test = lambda self : "test"
...
>>> tst = Test()
>>> tst.run()
>>> tst.test()
'test'
>>>
Re[10]: Что мы потеряли?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 04.09.06 05:36
Оценка:
Здравствуйте, FR, Вы писали:

>>>> tst = Test()

1-й вызов, он устанавливает значение слота test (я не знаю, как это точно называется в Ruby)
>>>> tst.run()
2-й вызов, обращение к слоту test.
>>>> tst.test()

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

Т.е., новый код подключится в момент очередного вызова изменившегося метода. Ну а иначе как стеки раскручивать-то?
<< Под музыку: Blackmoore's Night — Greensleeves >>
<< При помощи Януса: 1.2.0 alpha rev. 650 >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[8]: Что мы потеряли?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 04.09.06 05:36
Оценка:
Здравствуйте, Дарней, Вы писали:

Д>самовнушение — это отнесение себя любимого к "элите" на основании знания каких-то технологий или языков, экзотических или не очень.

Д>На самом же деле, элита — это те, кто умеет создавать новое. Или решать старые задачи, но новыми (лучшими) способами. Неважно, какими инструментами. Их можно подобрать или придумать свой.

Речь была не об основаниях, которые позволяют отнести себя к элите, а об её, элиты, взаимоотношениях с окружающими и сопутствующих тараканах.
<< Под музыку: Blackmoore's Night — Greensleeves >>
<< При помощи Януса: 1.2.0 alpha rev. 650 >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[21]: Что мы потеряли?
От: night beast СССР  
Дата: 04.09.06 06:12
Оценка: +3
Здравствуйте, VladD2, Вы писали:

>>> C>Еще Transport Tycoon, Quake, Duke Nukem, Rise of Triad и еще куче игр.

>>> C>Часть уже потом появилась.
>>> И все это в 1993-1994. Ну, ты крут.
C>>TT — как раз в начале 1994 года, ROTT — конец 94 года. Вот с DN напутал.

VD>Кто такие TT и ROTT знаешь один ты. А вот Квак и Дюк были значительно позже. Так что единственная популярная игра и была Дум.


А такие названия как UFO, Mortal Kombat 2, Warcraft вам что-нибудь говорят?
Для ознакомления
Re[11]: Что мы потеряли?
От: FR  
Дата: 04.09.06 06:40
Оценка: 20 (1) +1
Здравствуйте, Геннадий Васильев, Вы писали:

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


>>>>> tst = Test()

ГВ>1-й вызов, он устанавливает значение слота test (я не знаю, как это точно называется в Ruby)
>>>>> tst.run()
ГВ>2-й вызов, обращение к слоту test.
>>>>> tst.test()

ГВ>Пожалуй, я не совсем удачно выразился. В момент замены метода у нас нет активного обращения именно к этому методу (сам объект, в общем, никуда не делся). Подмена производится не изнутри самого метода test(). Я вполне допускаю, что такое возможно, хотя тогда, по идее, уже запущенный метод test должен был бы отработать без изменений.


Возможно, и именно так и работает:
>>> class Test:
...     def test(self):
...             Test.test = lambda self : "test"
...
>>> tst = Test()
>>> tst.test()
>>> tst.test()
'test'
>>>


ГВ>Т.е., новый код подключится в момент очередного вызова изменившегося метода. Ну а иначе как стеки раскручивать-то?


Он подключится в момент присваивания, но старый метод (активный) не выгрузится пока из него не вернется управление, при этом если в этом старом есть рекурсия то будет вызыватся уже новый метод.
Re[9]: Что мы потеряли?
От: Дарней Россия  
Дата: 04.09.06 06:56
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Речь была не об основаниях, которые позволяют отнести себя к элите, а об её, элиты, взаимоотношениях с окружающими и сопутствующих тараканах.


Для начала надо определиться, кто к этой группе относится. А потом уже думать об их взаимоотношениях
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[2]: Что мы потеряли?
От: LaptevVV Россия  
Дата: 04.09.06 07:14
Оценка:
Здравствуйте, eao197, Вы писали:

M>>Возвращаясь к отправной точке — какие возможности мы потеряли, перейдя с Lisp/Smalltalk на всякие VB/Delphi/C++? а потом на всякие Java/C# и т.д., и какие возможности теперь заново изобретают (в худших формах) в этих новых "язвках"?


E>Элитарность.


E>Попробую объяснить свою мысль, но сильно не пинайте, если получится не складно. Имхо, для достижения успеха в чем-то нужно приложить усилия + нужно иметь способности. Как говорится, гений -- это 10% таланта + 90% труда. Но сейчас важно сосредоточится именно на способностях. Точнее даже на складе ума. Для разных областей деятельности нужны разные способности. Именно поэтому кто-то становится врачем, кто-то математиком, кто-то программистом. Здесь нельзя сравнивать уровень интеллекта (умность). Врач может быть по жизни более умным, чем программист, но, тем не менее, абсолютно не понимать, как можно запрограммировать рисование окружности на экране. Он просто думает по другому, у него нет способностей к этому.


Позволю себе не согласиться...
Козьма Прутков выразил абсолютно точно в плодах раздумья 66
Многие вещи нам непонятны не потому, что наши понятия слабы; но потому, что сии вещи не входят в круг наших понятий.

Дело не в способностях... Способности как раз практически одинаковые... Те самые — интеллектуальные... Но вот обучение в детстве, очевидно, происходило по-разному... Поэтому и СТИЛЬ МЫШЛЕНИЯ — разный...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[4]: Что мы потеряли?
От: LaptevVV Россия  
Дата: 04.09.06 07:21
Оценка:
Здравствуйте, Lazy Cjow Rhrr, Вы писали:

M>>В чем же отличие.. ах да.. "*" и "+" намного сложнее воспринимаются чем multiply и add. Но я думаю к этому можно привыкнуть

M>>Равно как и к замене <> на ()

LCR>Твои мысли удивительным образом пересекаются с


LCR>The Nature of Lisp


Класс!!!!!! Называется "Как современному кодировщику объяснить, что такое Лисп?"
Великолепно!!!!!
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.