99 бутылок: Эллочка

58. Эллочка. Мне написал автор языка программирования «Эллочка» с предложением написать на нём «99 бутылок…», как вы знаете, у меня есть хобби — писать такие программы на разных языках.

Для этого языка есть единственный, авторский интерпретатор под ДОС (и очень важно использовать в файле программы символы перевода ДОС/Виндоуз, иначе ничего не будет работать), а сам язык напоминает странноватый Бейсик, без поддержки функций и процедур. Их можно эмулировать, используя трюк со специальной переменной «@», которая содержит номер текущей строки.

В языке есть ряд интересных возможностей, но их затмевают недостатки разного калибра, что характерно для языков без сообщества. Даже в таком простом примере мне пришлось побороться за работоспособность программы. Например, перед числами зачем-то всегда выводится символ табуляции (я его срезаю функцией %MID), а когда вывод достигает размера экрана (80×25), то прокрутки не происходит, программа просто жалуется, что «операция не позволяется» (поэтому я просто жду нажатия клавиши после каждой итерации и очищаю экран).

!99 beer song by Evgeny Stepanischev
!Used variables: B, R, $1
B=99
@cycl
    R=@+2 
    goto @beer
    list ' of beer on the wall, '
    R=@+2
    goto @beer
    list '.'\
    list 'Take one down and pass around'\
    decr B
    R=@+2
    goto @beer
    list ' of beer on the wall.'\
    list ''\
    wait
    clsc
esli B >> 0; @cycl
list 'No more bottles of beer on the wall, no more bottles of beer.'\
list 'Go to the store and buy some more, 99 bottles of beer on the wall.'
exit
@beer
esli B >> 0; +3\
list 'No bottles'
goto R
esli B == 1; +5\
$1=B
$1=%MID($1,2,10)
list $1+' bottles'
goto R
list '1 bottle'
goto R

1 комментарий

Отрицательное количество элементов (PHP)

Сегодня утром с разработчиками обсуждали фрагмент кода, где автор очень уж параноидально подошёл к проверке:

if (count($this->to) <= 0) {
    $this->validation_errors[] = "Неверный отправитель";
}

Проверять возвращает ли функция count значение меньшее нуля действительно странно, но я вдруг подумал — а можно ли в ПХП в припципе заставить эту функцию вернуть такое значение?

Дело в том, что функцию count можно использовать не только с примитивными типами (чаще всего её используют с массивами), но и с объектами, которые реализуют интерфейс Countable.

Оказалось вполне нормально работает:

$var = new class implements \Countable {
    public function count()
    {
        return -1;
    }
}

var_dump(count($var)); // выведет int(-1)

Выше код написан в синтаксисе ПХП7, который выйдет сегодня, но его можно переписать и на «пятёрку» — надо только дать имя классу.

2 комментария

Одиннадцатое посещение острова сокровищ

Результат (51.42КиБ)

Сегодня выехал на пару часов — к сожалению, стал усиливаться ветер, пришлось сворачиваться. Улов: две копейки 1757 года (слово «две» стёрлось, но она отлично опознаётся по расположению остатка надписи), «конина», смятый напёрсток и пуговка-гирька.

2 комментария

Леонидом Ильичом, Владимиром Ильичём

Члены Орфографической комиссии, готовившие Свод, обратили внимание на то, что форма «Ильичём» (Лениным), как правило, писалась с «ё» (в частности, такое написание встретилось в одном из писем Н. К. Крупской). Чтобы сохранить орфографическую неприкосновенность В. И. Ленина, было принято «устное» исключение: писать, например, Петром Ильичом (Чайковским), Михаилом Ильичом (Роммом), но Владимиром Ильичём (Лениным). И только так.

Владимира Ильича Ленина поставили в оппозицию всей отечественной орфографии сразу. В полном одиночестве — противу масс. Правило это даже в годы застоя не распространилось шире — например, на «верного ленинца» Л. И. Брежнева (Из газет: «…встали, чтоб приветствовать Политбюро во главе с Генеральным секретарем Леонидом Ильичом Брежневым»; «… одна из участниц войны назвала его (Брежнева) „нашим Ильичом“». Впрочем, что там Л. И. Брежнев, если даже по поводу родных братьев В. И. Ленина не было ясности: писать ли Дмитрием, Александром Ильичём или Ильичом!

Из статьи «Об одном негласном орфографическом исключении» филолога Брониславы Букчиной.

Оставить комментарий

Void в PHP

ПХП7 только-только вышел, а авторы языка уже приступили к следующим версиям. Если 7.0.1 будет лишь работой над ошибками, в 7.1 язык продолжит своё совершенствование. Первая ласточка — реализовано указание на отсутствие возвращаемого значения у функции (void).

Я сначала не понял зачем вводить в язык новое ключевое слово, можно было бы использовать для такого указания уже существующее ключевое слово null, но оказалось, что авторы под void имели ввиду, что функция не может вернуть никакого значения:

function returns_null(): void {
    return null; // Fatal error: A void function must not return a value
}

включая null, потому что это определённо значение, хоть и со специальным смыслом. При этом вот такое работает:

function returns_nothing(): void {
    return; // valid
}

Таким образом в языке произошло неявное изменение: раньше ситуации с пустым return и с return null не различались, сейчас они будут иметь разный смысл.

4 комментария

Профессиональная деформация

Профессиональная деформация, конечно, существующее явление, у меня нет сомнений в этом, но я всегда посмеивался над людьми, которые применяют это понятие ко мне. Причина такова — я человек увлекающийся, а в мире так много интересного. Например, меня захватило новое хобби — «копательство» и я езжу искать старинные монеты до сих пор, несмотря на то, что остальные давно закрыли сезон.

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

С работой то же — из-за разнообразия обязанностей и смены глубины погружения в них, я «деформируюсь» то в одну, то в другую сторону. Есть, конечно, какие-то постоянные черты моего характера, но это не следствие, а причина моих занятий.

И вот я обнаружил у себя следы более-менее постоянной деформации, накапливающейся из-за основного рода моей деятельности — управления. Управление подразумевает планирование, в том числе планирование себя, как ресурса. И вот это самопланирование себя проявляется всё больше и больше, иногда сутки у меня распланированы целиком, включая семейную жизнь, друзей, приятелей, что меня беспременно раздражает — мне кажется, что в общении с людьми, особенно с близкими людьми, не должно быть никакого плана.

Возможно деформацией это станет, когда меня это перестанет раздражать, что, боюсь, когда-то случится, но как этого избежать плана у меня нет. Сменить работу?

33 комментария

Шкатулка под находки

У нас в Казани наконец-то ударили морозы, так что придётся, по всей видимости, закрыть сезон «копательства», но новое своё хобби любить не перестаю. На днях заказал для хранения найденного шкатулку у Арсения Амосова, ученика известнейшего мастера по бересте Александра Гавриловича Варламова.

Шкатулка (142.49КиБ)

Сам Варламов занялся гончарным делом, посчитав, что достиг в бересте потолка, а его ученики продолжают его дело. Шкатулка просто отличная, ароматно пахнет, добротно выглядит. На крышке просил сделать фрагмент рисунка встречи Святогора и Ильи Муромца Ивана Яковлевича Билибина. 

Шкатулка открытая (123.86КиБ)

Рисунок мне очень понравился, поэтому заплатил мастеру чуть больше, да и работа сложная, составная — три слоя бересты для объёма. Не знаю где буду хранить находки, когда их станет гораздо больше, но пока, на мой взгляд, шкатулка им очень подходит.

2 комментария

Андреевка в Бугульминском районе

Разрушенное деревянное здание с колокольней на фоне ясного неба, окружённое зарослями и тропинкой в поле.
Церковь в Андреевке

В Андреевке Бугульминского района предки по линии моей фамилии прожили более ста лет. Некоторые потомки семьи переселившейся туда в 1828 году из Средних Апочек Старооскольского уезда, живут там до сих пор. Любопытно, что память поколений сохранила факт переезда, многие из тех, с кем я разговаривал, знают, что их предки переселились из-под Курска.

Всего в тот год в Андреевку было переселено довольно много народу — на перепись 1834 года там проживало 37 семей (219 мужчин и 245 женщины), о чём написано в одном из дел (ЦГАСО, ф. 150, оп. 1, д. 24) Самарского архива.

Из заголовка дела можно узнать, что Андреевка стоит на месте более старого населённого пункта с тем же названием и была вновь образована переселенцами:

1834 года Апреля 21 дня Оренбургской губерніи Бугульминскаго уезда Письмянскай волости вновь заведенной деревни Андреевки о состоящихъ в оной мужеска и женска пола однодворцахъ

Правда по картам подтверждение этому мне найти не удалось — возможно у меня не очень-то подробные карты или недостаточно старые.

В 1896 году в Андреевке освятили Михаило-Архангельскую церковь и она стала селом. Вот цитата из книги «Республика Татарстан: Православные памятники (середина XVI — начало XX веков)», где можно почерпнуть информацию о храме, который там был расположен:

Однопрестольный деревянный храм был построен по проекту гражданского инженера Э. Кистермана, утверждённым в 1896 году. Он же руководил постройкой. В 1896 году храм был освящен, а строительство колокольни и отделочные работы продолжались до 1902 года.

Вопрос о строительстве церкви был решен на сельском сходе села Андреевки в 1894 году, с этого же времени прихожане собирали деньги. Задержки в строительстве были связаны с нехваткой средств и отсутствием крупных благотворителей. Небольшой деревянный храм выполнен в характерных для конца XIX века в форме эклектики.

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

Сейчас село, конечно, умирает — в 2013 году там жило 215 человек, тогда как в 1920 — 1391, фермерское хозяйство в России в упадке, а больше в селе заниматься нечем.

52 комментария

Устал я жить в родном последнем, в тоске по гречневым просторам…

Не в первый раз вижу баталии на тему как спрашивать «кто последний?» или «кто крайний?». Не понимаю в чём вообще вопрос. Это же не синонимы. У очереди безусловно есть первый и последний — это те люди, которые ближе всего к цели и дальше всего от неё.

первый → 🚪🕴🕴🕴🕴🕴🕴🕴🕴🕴← последний

Но, опять же, и крайние у неё тоже есть, это те, кто с краю — первый и последний являются крайними. В большинстве очередей это разные люди.

крайний → 🚪🕴🕴🕴🕴🕴🕴🕴🕴🕴← крайний

Так что спрашивать «кто крайний?», если вы собираетесь присоединиться к очереди, так же неуместно, как и задать тот же вопрос вместо «кто следующий?».

12 комментариев

Новое Исаково Бугульминского района

Сепия: две запряжённые лошади стоят у крыльца деревянного дома с резными колоннами; на повозке сидит мужчина в шляпе, рядом кусты и деревья.
Усадьба Шулешкина

Сегодня произошло примечательное событие — я получил дореволюционную фотографию усадьбы помещика Шулешкина из сельца Новое Исаково (ныне Бугульминский район) — в этом сельце жила семья моего прапрадеда с маминой стороны, крепостного крестьянина Павла Степановича. Фотографию прислал потомок тех самых Шулешкиных.

Фото примечательно тем, что дореволюционных фото этого поселения в интернете нет в принципе, остаётся надеяться только на персональные архивы, которые могли каким-то чудом пережить революцию. Это легко объяснимо — место не историческое, населённый пункт крошечный — в 1850 году там проживало чуть более сотни человек, да и сейчас порядок тот же — 67 человек на начало 2013-го.

Так как документов исчезающе мало, с трудом, но всё-таки удалось хотя бы в общих чертах проследить историю Нового Исакова. Думаю, можно утверждать, что оно было образовано от Старого Исакова, которое так же имеет на старых картах и бумагах названия Исаково (1792, 1834), Лисьи Горы (1799, 1816, 1834, 1850, 1858, 1867) и д. Васильевская (1805).

Год образования Нового Исакова точно мне неизвестен, но наличествующие материалы дают временную вилку 1834—1850. Верхнюю границу даёт Самарский архив, где я нашёл бумаги переписи 1850 года, нижнюю даёт отсутствие такой же переписи в бумагах 1834-го (при этом Лисьи Горы там есть), возможно они просто не сохранились. Но тогда точную нижнюю грань даёт карта 1805 года — там Нового Исакова нет.

Кстати на этой карте Старое Исаково называется «Васильевская», похожее название — «Васильевка» имело, согласно бумагам Новое Исаково. Я обозначил его будущее расположение, оно легко угадывется по расположению рек:

Старинная карта с реками Бабровка и Олотовка, селом Васильевское и двумя красными метками, указывающими на конкретные точки на местности.
Карта 1805 года

Как произошло, что два разных населённых пункта, находящихся под боком друг друга, имели такие похожие названия? У меня есть теория, которая может это объяснить.

По всей видимости «Лисьи Горы» — название усадьбы, такой вывод можно сделать из заголовка архивного дела «Документы о ссуде, просимой потомственным дворянином Василием Ивановичем Аничковым, под залог имения при с. Исакове, Лисьи Гирей».

В Самарском архиве есть запись 1799 года о владении «лисьихъ горъ кадета василья исакова — (муже) 77 (женина) 75». Очевидно фамилия Василия Исакова стала названием населённого пункта, а имя — притяжательным названием имения.

Т. е. усадьба Лисьи Горы (чья?) — Васильевская, по имени владельца. Что и написано на карте 1805 года. А название «Исаково» есть на карте 1792 года (что, кстати, даёт верхнюю границу основания этого поселения):

Фрагмент исторической карты с названиями населённых пунктов: Бугульма, Черкова, Дымска, Медный Верх, Белебей; красная метка указывает на Черкову.
1792 год

В бумагах 1816 года Василий Исаков уже не упоминается, там владелицей обозначена его родственница Анна Никоноровна Аничкова (в девичестве — Исакова). 8 сентября 1838 года Старое Исаково переходит в наследство её сыну — Василию Ивановичу Аничкову, о чём есть запись на обложке ревизии 1850 года.

А на обложке ревизии Нового Исакова того же года о передаче в наследство не написано, поэтому я считаю, что Василий Иванович и основал это сельцо, перенеся туда свою усадьбу, которая стала называться Васильевка, по его имени. Старая же усадьба вернула себе историческое название — Лисьи Горы.

Где-то ближе к 1889 году Новое Исаково было продано Шулешкиным, вероятно Н. В. Аничковым — сыном прежних владельцев, эту датировку даёт документ того года, где новые владельцы просят ссуду под залог своего имения при сельце Ново-Исаковом. Вероятно Шулешкина преследуют финансовые трудности, о чём на говорят заголовки дел Самарского архива.

В 1907 году «потомственный почетный дворянин, проживающий в деревне Ново-Исаковой Николай Александров Шулешкин — 38 — застрелился», о чём есть запись в Национальным Архиве Республики Татарстан. Имущество отошло к банку и было распродано.

Фрагмент исторического документа с рукописным текстом на русском языке, включающий упоминание «деревни Кобы-Исаковой» и подпись «Василий Лазарев».
Шулешкин застрелился

Судя по бумагам 1940 года, после революции в Новом Исакове была организована сельскохозяйственная артель «Прогресс», где работали мои предки. Сейчас это маленькая, ничем не примечательная деревня Бугульминского района.

2 комментария

Слово «имплантат» устарело

Слово «имплантат» умерло. Я намедни зубы лечил, побывал в двух клиниках, в обеих разговор шёл об «имплантах» (обсуждали, что делать с одним моим сложным зубом), спросил у обоих медиков — почему они имплантаты называют «имплантами», оказывается, их специально переучивают так говорить.

Пора и мне переучиваться, видимо. Глупо сопротивляться, если основные пользователи понятия переучиваются на другое слово. Не могу не заметить, что «имплант» звучит более логично, так как соответствующий глагол — «имплантировать», а не «имплантатировать».

10 комментариев

← сюда туда →