Подсветка картин
производит очень приятный эффект на картине. Он решил, что если усиление освещенности применить ко всем ярким местам картины, то она приобретет особый блеск и яркость. Самые яркие белила всего в шестьдесят раз ярче
черной краски, употребляемой художниками, в то время как соотношение интенсивности освещения, скажем, залитой солнцем стены белого дома и темного подъезда может достигать тысячи к одному. Он нашел такой способ
интенсификации световых контрастов: фотографировать оригинал, печатать с негатива диапозитив и проецировать его на картину с такого расстояния, чтобы изображение в точности с ней совпадало. При этом светлые пятна картины ярко
освещались, а тени оставались затемненными, с правильной градацией всех тонов. Эффект в темном помещении получался поразительный -— ландшафт сиял бликами солнечного света. Если смотреть на такую картину несколько минут, а потом выключить проектор и зажечь свет в комнате, картина кажется такой, как будто бы ее несколько лет не
очищали от пыли.
Весьма любопытно. Из книги Вильяма Сибрука «Роберт Вильямс Вуд. Современный чародей физической лаборатории». [ >>> ] Интересно, проводит ли
Omi Opera
Хуедин

Кнопка Turbo
Примечание. На некоторых клавиатурах эта кнопка называется «Fn».
99 бутылок
99 бутылок: Refal-5, FOCAL
40. Refal. Литературы по этому языку достаточно, так что, если возникнет заинтересованность — поищите в интернете. Пожалуй, описывать я его не буду, лишь приведу небольшую выдержку из учебника.
«Рефал» — язык манипулирования символьными объектам: текстами, формулами, программами и т. п. Программа на «Рефале» состоит из функций, которые могут определяться друг через друга, т. е. рекурсивно. Отсюда и название: «Алгоритмический язык Рекурсивных Функций». Язык «Рефал» был создан В. Турчиным в качестве метаязыка для описания семантики других языков. Язык определения функций «Рефала», основанный на понятиях образца и результатного выражения, чрезвычайно прост и компактен. Образцы — […] в сжатой и наглядной форме обеспечивают как запись условий на вид аргумента, так и разбиение аргумента на составные части.
Программа, выводящая песню о пиве (beer.ref):
** Beer song. Written by Evgeny Stepanischev
Pr {
e1 = <PRINTLN! *STDOUT e1>;
};
S {
1 = ;
e1 = 's';
};
Beer {
0 = 'No bottles of beer';
e1, <S e1>: e2 = e1 ' bottle' e2 ' of beer';
};
Beers
{
e1 (e2), <Beer e1>: e.beer =
<Pr e.beer ' on the wall, ' e.beer '.'>
<Pr 'Take one and pass around,'>
<Pr <Beer e2> ' on the wall.'>
<Pr>;
};
Start
{
0 = <Pr 'No more bottles of beer...'>
<Pr 'Go to the store and buy some more...'>
<Pr '99 bottles of beer.'>;
e1, <- e1 1>: e2 = <Beers e1 (e2)> <Start e2>;
};
$EXEC Start 99;41. FOCAL. Название языка произошло от сокращения «Formula CALculator». В настоящее время язык, можно сказать, умер — в интернете мне с большим трудом удалось найти его описание. Ни одной действующей версии компилятора или интерпретатора языка мне найти не удалось.
Что интересно в языке — нумерация строк. Она двойная. Строки организуют группы с внутренней нумерацией, к которым (группам) можно обращаться при помощи различных конструкций. Другая интересная особенность — все операторы можно сокращать. Например, вполне можно писать COMMENT как C, а FOR — как F.
Как я сказал, компилятора или интерпретатора мне найти не удалось, так что пришлось писать программу по теории. В частности, по скудной литературе мне не удалось понять как должна работать функция FSBR (вызов группы строк как функции), поэтому пришлось определять функции другим путём.
Уже после выхода этой песни, со мной связался Алексей Томин и привёл описание функции FSBR. Вот, что он пишет: FSBR позволяет определить функцию с одним аргументом (с использованием & как параметра). Самое интересное — возможна рекурсия.
Пример, вычисление факториала:
11.1 I (&-1) 11.3,11.3,11.2
11.2 S &=&*FSBR(11,&-1)
11.3 RПрограмма, выводящая песню о пиве (beer)
1.10 COMMENT Beer song. Written by Evgeny Stepanischev
1.20 FOR I=99, -1, 1; DO 2
1.30 TYPE "No more bottles of beer...", !
1.40 TYPE "Go to the store and buy some more...", !
1.50 TYPE "99 bottles of beer.", !
1.60 QUIT
2.10 SET B=1; DO 3; TYPE " on the wall, "; DO 3
2.20 TYPE !, "Take one and pass around,", !
2.30 SET B=2; DO 3; TYPE " on the wall.", !
3.10 DO 4.10; TYPE " of beer"; RETURN
4.10 IF (I-B) 4.20, 4.30, 4.40
4.20 TYPE "No bottles"; RETURN
4.30 TYPE "1 bottle"; RETURN
4.40 TYPE %4.00, I, "bottles"; RETURN