{
    "version": "https:\/\/jsonfeed.org\/version\/1.1",
    "title": "Блоги: заметки с тегом pascal",
    "_rss_description": "Автоматически собираемая лента заметок, написанных в блогах на Эгее",
    "_rss_language": "ru",
    "_itunes_email": "",
    "_itunes_categories_xml": "",
    "_itunes_image": false,
    "_itunes_explicit": "no",
    "home_page_url": "https:\/\/blogengine.me\/blogs\/tags\/pascal\/",
    "feed_url": "https:\/\/blogengine.me\/blogs\/tags\/pascal\/json\/",
    "icon": false,
    "authors": [
        {
            "name": "Илья Бирман",
            "url": "https:\/\/blogengine.me\/blogs\/",
            "avatar": false
        }
    ],
    "items": [
        {
            "id": "130901",
            "url": "https:\/\/bolknote.ru\/all\/99-butylok-piva-na-perq-pascal\/",
            "title": "«99 бутылок пива» на PERQ Pascal",
            "content_html": "<p>Мои читатели знают, что последние несколько дней я возился с эмулятором <i>PERQ<\/i>. <i>PERQ<\/i> — это персональный компьютер, выпускавшийся в начале 1980-х годов, первый коммерчески успешный ПК с графическим интерфейсом. Такой олдскул мил моему сердцу, поэтому я потратил несколько вечеров, чтобы попробовать хоть на базовом уровне разобраться что из себя представляла операционная система тех компьютеров.<\/p>\n<p>Последние пару дней я пытался написать на тамошнем «Паскале» «песню о пиве», но поскольку на моём ноутбуке потребовалась двойная эмуляция, скорость работы встроенного в систему редактора была ниже плинтуса. Писать было очень сложно, а править ошибки — ещё сложнее. Тем не менее, я справился.<\/p>\n<p><b>79. PERQ Pascal<\/b> — диалект некогда широко распространённого в учебных учреждениях языка «Паскаль». Компилируемый язык, в какой-то степени можно назвать его конкурентом Си, которому он проиграл вчистую.<\/p>\n<p>Не думаю, что кто-то, кроме редких энтузиастов языка, сейчас выберет «Паскаль» для чего-то нового, но со старыми проектами на нём я иногда сталкиваюсь. Например, в начале этого года видел электронный документооборот, написанный на «Делфи» (это визуальная среда программирования и название диалекта «Турбо Паскаля»).<\/p>\n<pre class=\"e2-text-code\"><code class=\"pascal\">{$MESSAGE Written by Evgeny Stepanischev, 2024}\nPROGRAM BOTTLES_OF_BEER;\n\nconst\n    MAX_BOTTLES = 99;\n\nFunction BotStr(count: integer): string;\nbegin\n    if count = 1 then\n        BotStr := &#039; bottle of beer&#039;\n    else\n        BotStr := &#039; bottles of beer&#039;;\nend;\n\nProcedure SingSong;\nvar\n    i: integer;\n    b: string;\nbegin\n    for i := MAX_BOTTLES downto 1 do\n    begin\n        b := BotStr(i);\n        writeln(i:0, b, &#039; on the wall,&#039;);\n        writeln(i:0, b, &#039;!&#039;);\n        writeln(&#039;Take one down, pass it around,&#039;);\n        if i &gt; 1 then\n        begin\n            b := BotStr(i-1);\n            writeln((i - 1):0, b, &#039; on the wall!&#039;)\n        end\n        else\n            writeln(&#039;No more bottles of beer on the wall!&#039;);\n        writeln;\n    end;\n    \n    writeln(&#039;No more bottles of beer on the wall,&#039;);\n    writeln(&#039;No more bottles of beer!&#039;);\n    writeln(&#039;Go to the store and buy some more,&#039;);\n    b := BotStr(MAX_BOTTLES);\n    writeln(MAX_BOTTLES:0, b, &#039; on the wall!&#039;);\nend;\n\nbegin\n    SingSong;\nend.<\/code><\/pre><p>Из того, с чем мне пришлось столкнуться, когда я писал программу.<\/p>\n<p>Больше всего ушло времени на ошибку <i>Error 116: Error in type of standard procedure parameter<\/i>. Речь тут, вроде, идёт о том, что я какой-то процедуре передаю параметры не того типа. Несмотря на то, что в ошибке был указан номер строки, мне всё равно не удавалось понять, что я делаю не так.<\/p>\n<p>Оказалось, что вызов функции <tt>BotStr<\/tt> нельзя напрямую поместить во <tt>writeln<\/tt>, надо обязательно использовать промежуточную переменную (у меня это <tt>b<\/tt>). Учитывая, что скорость работы с эмулятором не позволяет быстро попробовать разные варианты, пришлось изрядно поскрипеть мозгом, чтобы дойти до сути.<\/p>\n<p>Вторая вещь оказалась проще для исправления. В этом диалекте «Паскаля» вывод чисел происходит с отступом. В моём случае выглядит это неаккуратно. К счастью убрать его просто — нужно добавить параметр <tt>:0<\/tt> для каждого числа, выводимого на экран.<\/p>\n<p>В какой-то момент я так устал редактировать код со скоростью улитки, стал использовать обычный редактор своего ноутбука. Потом я просто запускал небольшую программу, написанную на «Пайтоне», которая печатала код за меня прямо внутрь окна с эмулятором <i>PERQ<\/i>:<\/p>\n<pre class=\"e2-text-code\"><code class=\"python\">import pyautogui, time\n\nFILE_PATH = &#039;99.pas&#039;\n\ntime.sleep(5)\n\nwith open(FILE_PATH, &#039;r&#039;) as file:\n    for line in file:\n        for x in line.lstrip():\n            pyautogui.typewrite(x)\n            time.sleep(.6)\n\n        time.sleep(1)<\/code><\/pre><p>Вчера ночью всё наконец запустилось и я смог посмотреть как работает моя первая (и наверняка единственная) программа для <i>PERQ<\/i>.<\/p>\n<p>Кстати, вот ещё одна интересная деталь.<\/p>\n<p>Чтобы получить исполняемый файл, надо исходный код программы сначала скомпилировать командой <tt>COMPILE<\/tt> в объектный файл (<tt>.SEG<\/tt>), потом скомпоновать командой <tt>LINK<\/tt> в исполняемый (<tt>.RUN<\/tt>). У обеих команд есть параметр, где указывается имя файла, с которым мы работаем.<\/p>\n<p>Но если мы открывали на редактирование какой-то файл, его имя указывать не надо — операционная система его где-то запоминает и команды <tt>COMPILE<\/tt> и <tt>LINK<\/tt> знают с каким файлом мы работаем. Очень удобно.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/bolknote.ru\/pictures\/2024.09.25@2x.png\" width=\"768\" height=\"1024\" alt=\"\" \/>\n<div class=\"e2-text-caption\">Результат запуска «Песни о пиве» под эмулятором компьютера <i>PERQ<\/i><\/div>\n<\/div>\n",
            "date_published": "2024-09-25T10:57:33+05:00",
            "date_modified": "2024-09-25T17:02:38+05:00",
            "tags": [
                "99",
                "pascal",
                "PERQ"
            ],
            "author": {
                "name": "Евгений Степанищев",
                "url": "https:\/\/bolknote.ru\/",
                "avatar": "https:\/\/bolknote.ru\/pictures\/userpic\/userpic@2x.jpg?1760600028"
            },
            "_date_published_rfc2822": "Wed, 25 Sep 2024 10:57:33 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "130901",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": null,
                "og_images": []
            }
        },
        {
            "id": "125246",
            "url": "https:\/\/bolknote.ru\/all\/trubo-paskakal\/",
            "title": "«Трубо Паскакаль»",
            "content_html": "<p>В конце 90-х у меня был выбор какой язык сделать своим основным, — Паскаль или Си. Не помню почему, но я выбрал Паскаль.<\/p>\n<p>Это был хоть и случайный, но удачный выбор, —  позже появилась совершенно гениальная среда разработки «Делфи», где я заработал немало масла на свой хлеб. Кроме того, в Университете всё программирование преподавалось на Паскале, очень выручило, что я знал тогда этот язык.<\/p>\n<p>До «Делфи» разработка происходила в среде «Турбо Паскаль», глядя в синие окошки которой, я провёл много-много лет. В общем, у меня был очень длинный период, когда большинство своих программ я писал на Паскале.<\/p>\n<p>Поэтому, наверное, понятно, почему когда я <a href=\"https:\/\/habr.com\/ru\/articles\/783992\/#comment_26320318\">в комментариях<\/a> к одной из статей на «Хабре» увидел упоминание пародийной программы «Трубо Паскакаль», не смог пройти мимо.<\/p>\n<p>Программа поверхностно имитирует «Турбо Паскаль», где в меню спрятаны разные приколюхи. Если вы когда-то программировали на «Турбо Паскале» и не видели этой пародии, скачайте, запустите, мне кажется, не пожалеете, — выглядит забавно.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/bolknote.ru\/pictures\/2023.12.30@2x.jpg\" width=\"1000\" height=\"600\" alt=\"\" \/>\n<div class=\"e2-text-caption\">Пародийная программа «Трубо Паскакаль», штука одноразовая, но забавная<\/div>\n<\/div>\n",
            "date_published": "2023-12-30T13:01:59+05:00",
            "date_modified": "2023-12-30T13:05:32+05:00",
            "tags": [
                "pascal",
                "айрхеология",
                "программирование"
            ],
            "author": {
                "name": "Евгений Степанищев",
                "url": "https:\/\/bolknote.ru\/",
                "avatar": "https:\/\/bolknote.ru\/pictures\/userpic\/userpic@2x.jpg?1760600028"
            },
            "_date_published_rfc2822": "Sat, 30 Dec 2023 13:01:59 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "125246",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": null,
                "og_images": []
            }
        },
        {
            "id": "123175",
            "url": "https:\/\/bolknote.ru\/all\/ne-paytonom-edinym\/",
            "title": "Не «Пайтоном» единым",
            "content_html": "<p>Писал недавно про <a href=\"https:\/\/bolknote.ru\/all\/populyarnost-paytona\/\">засилье «Пайтона»<\/a> — там, где надо изобразить компьютерную программу, сейчас в основном используют в качестве основы именно этот язык, исключения встречаются всё реже.<\/p>\n<p>И вот на днях, на конференции «Казан Диджитал Вик» встретил одно из приятных исключений — на одном из участников гонок на беспилотных миниавтомобилях была футблока с чем-то паскалеподобным.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/bolknote.ru\/pictures\/2023.09.25@2x.jpg\" width=\"1000\" height=\"562\" alt=\"\" \/>\n<\/div>\n<p>Это единственный язык, кстати, который я прочно забыл. Непонятно почему — писал на нём всё детство, а в Университете делал на «Делфи» (это диалект) несколько дипломных работ за деньги.<\/p>\n<p>То есть плотненько работал с ним несколько лет, но когда два года назад поковырялся в нём в рамках <a href=\"https:\/\/github.com\/bolknote\/Adventofcode-2021\/blob\/main\/day08\/code\/part2.pas\">решения одной из задач<\/a> для программисткого адвент-календаря, понял, что не помню вообще ничего, кроме каких-то очень общих вещей, вроде конструкций <tt>begin<\/tt> — <tt>end<\/tt>.<\/p>\n",
            "date_published": "2023-09-25T23:31:50+05:00",
            "date_modified": "2023-09-25T23:31:35+05:00",
            "tags": [
                "pascal",
                "программирование"
            ],
            "author": {
                "name": "Евгений Степанищев",
                "url": "https:\/\/bolknote.ru\/",
                "avatar": "https:\/\/bolknote.ru\/pictures\/userpic\/userpic@2x.jpg?1760600028"
            },
            "_date_published_rfc2822": "Mon, 25 Sep 2023 23:31:50 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "123175",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": null,
                "og_images": []
            }
        }
    ],
    "_e2_version": 4079,
    "_e2_ua_string": "Aegea 11.0 (v4079e)"
}