<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>Блоги: заметки с тегом pascal</title>
<link>https://blogengine.me/blogs/tags/pascal/</link>
<description>Автоматически собираемая лента заметок, написанных в блогах на Эгее</description>
<author></author>
<language>ru</language>
<generator>Aegea 11.0 (v4079e)</generator>

<itunes:subtitle>Автоматически собираемая лента заметок, написанных в блогах на Эгее</itunes:subtitle>
<itunes:image href="" />
<itunes:explicit>no</itunes:explicit>

<item>
<title>«99 бутылок пива» на PERQ Pascal</title>
<guid isPermaLink="false">130901</guid>
<link>https://bolknote.ru/all/99-butylok-piva-na-perq-pascal/</link>
<pubDate>Wed, 25 Sep 2024 10:57:33 +0500</pubDate>
<author>Евгений Степанищев</author>
<comments>https://bolknote.ru/all/99-butylok-piva-na-perq-pascal/</comments>
<description>
&lt;p&gt;&lt;a href="https://bolknote.ru/"&gt;Евгений Степанищев&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;Мои читатели знают, что последние несколько дней я возился с эмулятором &lt;i&gt;PERQ&lt;/i&gt;. &lt;i&gt;PERQ&lt;/i&gt; — это персональный компьютер, выпускавшийся в начале 1980-х годов, первый коммерчески успешный ПК с графическим интерфейсом. Такой олдскул мил моему сердцу, поэтому я потратил несколько вечеров, чтобы попробовать хоть на базовом уровне разобраться что из себя представляла операционная система тех компьютеров.&lt;/p&gt;
&lt;p&gt;Последние пару дней я пытался написать на тамошнем «Паскале» «песню о пиве», но поскольку на моём ноутбуке потребовалась двойная эмуляция, скорость работы встроенного в систему редактора была ниже плинтуса. Писать было очень сложно, а править ошибки — ещё сложнее. Тем не менее, я справился.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;79. PERQ Pascal&lt;/b&gt; — диалект некогда широко распространённого в учебных учреждениях языка «Паскаль». Компилируемый язык, в какой-то степени можно назвать его конкурентом Си, которому он проиграл вчистую.&lt;/p&gt;
&lt;p&gt;Не думаю, что кто-то, кроме редких энтузиастов языка, сейчас выберет «Паскаль» для чего-то нового, но со старыми проектами на нём я иногда сталкиваюсь. Например, в начале этого года видел электронный документооборот, написанный на «Делфи» (это визуальная среда программирования и название диалекта «Турбо Паскаля»).&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="pascal"&gt;{$MESSAGE Written by Evgeny Stepanischev, 2024}
PROGRAM BOTTLES_OF_BEER;

const
    MAX_BOTTLES = 99;

Function BotStr(count: integer): string;
begin
    if count = 1 then
        BotStr := &amp;#039; bottle of beer&amp;#039;
    else
        BotStr := &amp;#039; bottles of beer&amp;#039;;
end;

Procedure SingSong;
var
    i: integer;
    b: string;
begin
    for i := MAX_BOTTLES downto 1 do
    begin
        b := BotStr(i);
        writeln(i:0, b, &amp;#039; on the wall,&amp;#039;);
        writeln(i:0, b, &amp;#039;!&amp;#039;);
        writeln(&amp;#039;Take one down, pass it around,&amp;#039;);
        if i &amp;gt; 1 then
        begin
            b := BotStr(i-1);
            writeln((i - 1):0, b, &amp;#039; on the wall!&amp;#039;)
        end
        else
            writeln(&amp;#039;No more bottles of beer on the wall!&amp;#039;);
        writeln;
    end;
    
    writeln(&amp;#039;No more bottles of beer on the wall,&amp;#039;);
    writeln(&amp;#039;No more bottles of beer!&amp;#039;);
    writeln(&amp;#039;Go to the store and buy some more,&amp;#039;);
    b := BotStr(MAX_BOTTLES);
    writeln(MAX_BOTTLES:0, b, &amp;#039; on the wall!&amp;#039;);
end;

begin
    SingSong;
end.&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Из того, с чем мне пришлось столкнуться, когда я писал программу.&lt;/p&gt;
&lt;p&gt;Больше всего ушло времени на ошибку &lt;i&gt;Error 116: Error in type of standard procedure parameter&lt;/i&gt;. Речь тут, вроде, идёт о том, что я какой-то процедуре передаю параметры не того типа. Несмотря на то, что в ошибке был указан номер строки, мне всё равно не удавалось понять, что я делаю не так.&lt;/p&gt;
&lt;p&gt;Оказалось, что вызов функции &lt;tt&gt;BotStr&lt;/tt&gt; нельзя напрямую поместить во &lt;tt&gt;writeln&lt;/tt&gt;, надо обязательно использовать промежуточную переменную (у меня это &lt;tt&gt;b&lt;/tt&gt;). Учитывая, что скорость работы с эмулятором не позволяет быстро попробовать разные варианты, пришлось изрядно поскрипеть мозгом, чтобы дойти до сути.&lt;/p&gt;
&lt;p&gt;Вторая вещь оказалась проще для исправления. В этом диалекте «Паскаля» вывод чисел происходит с отступом. В моём случае выглядит это неаккуратно. К счастью убрать его просто — нужно добавить параметр &lt;tt&gt;:0&lt;/tt&gt; для каждого числа, выводимого на экран.&lt;/p&gt;
&lt;p&gt;В какой-то момент я так устал редактировать код со скоростью улитки, стал использовать обычный редактор своего ноутбука. Потом я просто запускал небольшую программу, написанную на «Пайтоне», которая печатала код за меня прямо внутрь окна с эмулятором &lt;i&gt;PERQ&lt;/i&gt;:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="python"&gt;import pyautogui, time

FILE_PATH = &amp;#039;99.pas&amp;#039;

time.sleep(5)

with open(FILE_PATH, &amp;#039;r&amp;#039;) as file:
    for line in file:
        for x in line.lstrip():
            pyautogui.typewrite(x)
            time.sleep(.6)

        time.sleep(1)&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Вчера ночью всё наконец запустилось и я смог посмотреть как работает моя первая (и наверняка единственная) программа для &lt;i&gt;PERQ&lt;/i&gt;.&lt;/p&gt;
&lt;p&gt;Кстати, вот ещё одна интересная деталь.&lt;/p&gt;
&lt;p&gt;Чтобы получить исполняемый файл, надо исходный код программы сначала скомпилировать командой &lt;tt&gt;COMPILE&lt;/tt&gt; в объектный файл (&lt;tt&gt;.SEG&lt;/tt&gt;), потом скомпоновать командой &lt;tt&gt;LINK&lt;/tt&gt; в исполняемый (&lt;tt&gt;.RUN&lt;/tt&gt;). У обеих команд есть параметр, где указывается имя файла, с которым мы работаем.&lt;/p&gt;
&lt;p&gt;Но если мы открывали на редактирование какой-то файл, его имя указывать не надо — операционная система его где-то запоминает и команды &lt;tt&gt;COMPILE&lt;/tt&gt; и &lt;tt&gt;LINK&lt;/tt&gt; знают с каким файлом мы работаем. Очень удобно.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://bolknote.ru/pictures/2024.09.25@2x.png" width="768" height="1024" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Результат запуска «Песни о пиве» под эмулятором компьютера &lt;i&gt;PERQ&lt;/i&gt;&lt;/div&gt;
&lt;/div&gt;
</description>
</item>

<item>
<title>«Трубо Паскакаль»</title>
<guid isPermaLink="false">125246</guid>
<link>https://bolknote.ru/all/trubo-paskakal/</link>
<pubDate>Sat, 30 Dec 2023 13:01:59 +0500</pubDate>
<author>Евгений Степанищев</author>
<comments>https://bolknote.ru/all/trubo-paskakal/</comments>
<description>
&lt;p&gt;&lt;a href="https://bolknote.ru/"&gt;Евгений Степанищев&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;В конце 90-х у меня был выбор какой язык сделать своим основным, — Паскаль или Си. Не помню почему, но я выбрал Паскаль.&lt;/p&gt;
&lt;p&gt;Это был хоть и случайный, но удачный выбор, —  позже появилась совершенно гениальная среда разработки «Делфи», где я заработал немало масла на свой хлеб. Кроме того, в Университете всё программирование преподавалось на Паскале, очень выручило, что я знал тогда этот язык.&lt;/p&gt;
&lt;p&gt;До «Делфи» разработка происходила в среде «Турбо Паскаль», глядя в синие окошки которой, я провёл много-много лет. В общем, у меня был очень длинный период, когда большинство своих программ я писал на Паскале.&lt;/p&gt;
&lt;p&gt;Поэтому, наверное, понятно, почему когда я &lt;a href="https://habr.com/ru/articles/783992/#comment_26320318"&gt;в комментариях&lt;/a&gt; к одной из статей на «Хабре» увидел упоминание пародийной программы «Трубо Паскакаль», не смог пройти мимо.&lt;/p&gt;
&lt;p&gt;Программа поверхностно имитирует «Турбо Паскаль», где в меню спрятаны разные приколюхи. Если вы когда-то программировали на «Турбо Паскале» и не видели этой пародии, скачайте, запустите, мне кажется, не пожалеете, — выглядит забавно.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://bolknote.ru/pictures/2023.12.30@2x.jpg" width="1000" height="600" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Пародийная программа «Трубо Паскакаль», штука одноразовая, но забавная&lt;/div&gt;
&lt;/div&gt;
</description>
</item>

<item>
<title>Не «Пайтоном» единым</title>
<guid isPermaLink="false">123175</guid>
<link>https://bolknote.ru/all/ne-paytonom-edinym/</link>
<pubDate>Mon, 25 Sep 2023 23:31:50 +0500</pubDate>
<author>Евгений Степанищев</author>
<comments>https://bolknote.ru/all/ne-paytonom-edinym/</comments>
<description>
&lt;p&gt;&lt;a href="https://bolknote.ru/"&gt;Евгений Степанищев&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;Писал недавно про &lt;a href="https://bolknote.ru/all/populyarnost-paytona/"&gt;засилье «Пайтона»&lt;/a&gt; — там, где надо изобразить компьютерную программу, сейчас в основном используют в качестве основы именно этот язык, исключения встречаются всё реже.&lt;/p&gt;
&lt;p&gt;И вот на днях, на конференции «Казан Диджитал Вик» встретил одно из приятных исключений — на одном из участников гонок на беспилотных миниавтомобилях была футблока с чем-то паскалеподобным.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://bolknote.ru/pictures/2023.09.25@2x.jpg" width="1000" height="562" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Это единственный язык, кстати, который я прочно забыл. Непонятно почему — писал на нём всё детство, а в Университете делал на «Делфи» (это диалект) несколько дипломных работ за деньги.&lt;/p&gt;
&lt;p&gt;То есть плотненько работал с ним несколько лет, но когда два года назад поковырялся в нём в рамках &lt;a href="https://github.com/bolknote/Adventofcode-2021/blob/main/day08/code/part2.pas"&gt;решения одной из задач&lt;/a&gt; для программисткого адвент-календаря, понял, что не помню вообще ничего, кроме каких-то очень общих вещей, вроде конструкций &lt;tt&gt;begin&lt;/tt&gt; — &lt;tt&gt;end&lt;/tt&gt;.&lt;/p&gt;
</description>
</item>


</channel>
</rss>