Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет yury_finkel ([info]yury_finkel)
@ 2009-08-22 12:26:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Entry tags:жизнь, программазм, работа, эсперанто

отпуск, работа и вообще
Наконец-то я в отпуске. Чувствую себя выжатым лимоном. Похоже, ещё и погода влияет — как-то мне нехорошо; но и поработал под конец очень напряжённо. В последний день в проекте вылезли серьёзнейшие глюки в самом ядре (в серверной части), причём глюки очень трудноотлавливаемые, связанные с параллельной обработкой. Как только начинаешь ходить в отладчике, или даже вставляешь запись в лог — всё начинает нормально работать (потому что отладчик или вывод в лог отрубают всю параллельность), а в штатном режиме — полный глюконат :( Провозился всю пятницу, так ничего и не нашёл. Ну и плевать. После отпуска разберусь.

К слову, о программировании. Недавно случайно набрёл на очень интересный язык: Scala. См. также здесь. Ей-богу, он мне нравится. Надо будет поизучать. Может, даже попробую на нём что-нибудь сделать. Но, конечно, после отпуска. (Кстати, о пользе моего хобби — выдумывания языков программирования: кое-что из того, что я сам напридумывал (и отчасти отказался, т.к. не смог довести до конца), в этом языке есть. Уже не в первый раз я с таким сталкиваюсь. Так что моё хобби помогает мне быстро понять новые концепции программирования, т.к. я их отчасти уже сам придумал, или, по крайней мере, обдумывал возможные пути решения соответствующих проблем. Так, например, было с замыканиями).

И о переводе. В переводе «Золотой цепи» осталось вычитать (третьим чтением) несколько глав. В принципе работа на два-три дня, но — см. выше — я сейчас, как выжатый лимон. Так что возможно с публикацией немного задержусь.



(Добавить комментарий)


[info]rexy_craxy@lj
2009-08-22 06:20 (ссылка)
Жабопаскаль! :)

(Ответить) (Ветвь дискуссии)


[info]yury_finkel@lj
2009-08-22 07:48 (ссылка)
Тогда уж жабопаскалолисп :) Ибо там, если вы не заметили, очень крутой функциональный стиль (всё — выражение), что я в принципе не очень люблю, но здесь это реализовано уж очень изящно. И даже методы класса можно вызывать через пробел. Не говоря уж о «ленивых вычислениях» (т.е. преобразовании выражений в замыкания).

(Ответить) (Уровень выше)


[info]evgeniy_kond@lj
2009-08-23 04:10 (ссылка)
Что ещё за замыкания?

(Ответить) (Ветвь дискуссии)


[info]yury_finkel@lj
2009-08-23 04:15 (ссылка)
Замыкание (http://ru.wikipedia.org/wiki/%D0%97%D0%B0%D0%BC%D1%8B%D0%BA%D0%B0%D0%BD%D0%B8%D0%B5_%28%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%29) (англ. closure) — подпрограмма, сохраняющая контекст (привязку к переменным).

Т.е., проще говоря, это подпрограмма Б, вложенная в подпрограмму А, которая может обращаться к локальным переменным подпрограммы А, даже когда произошёл выход из самой подпрограммы А (т.е. ссылка на подпрограмму Б была передана наружу). Это только звучит мудрёно, а на практике такие штуки очень полезны.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]evgeniy_kond@lj
2009-08-23 04:55 (ссылка)
Т.е. на нижнем уровне это реализуется так: в Б передаются как параметры ссылки на переменные из А.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]yury_finkel@lj
2009-08-23 04:59 (ссылка)
Не только. Важно ещё не затереть переменные из А (используемые в Б) при выходе из А. Т.е. эти переменные должны располагаться в куче, а не в стеке (и уничтожаться сборщиком мусора).

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

(Ответить) (Уровень выше)


[info]rexy_craxy@lj
2009-08-24 07:04 (ссылка)
closures -- очень полезная концепция. Сильно упрощают написание всяких генераторов, перехватчиков и т.п. Очень хорошо, когда они явно реализованы в ядре языка (как в Лиспах, например).

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]yury_finkel@lj
2009-08-24 12:11 (ссылка)
IMHO, если closures не реализованы в ядре языка, то их всё равно что нет :)
Вот в Java можно «через задний проход» их имитировать, но это такой глубокий задний проход, что слов нет. Планируют в Java 7 их наконец-то добавить. (Притом мне непонятно, какого чёрта их не было в Java с самого начала — сборщик мусора есть, казалось бы, и флаг в руки).

(Ответить) (Уровень выше)