Попаданец в мир литералов и переменных
Пролог
За компьютерным столом сидел человек с каштановыми волнистыми волосами.. Это Марк. На нём была белая рубашка. А сам он писал свои программы для поступления на работу.
На мониторе его ноутбука появилось сообщение от Николая: «Эй, Марк, ты всё изучаешь этот язык программирования? Он же уже не актуален, лучше поизучай популярные языки».
– Языки должны выбираться не по моде, а исходя из целей разработки программы. – набрал Марк и нажал кнопку отправить.
– Скука… Зачем изучать то, что уже вышло из моды. – тут же пришло ответное сообщение.
– Я не согласен. – написал Марк и выключил мессенджер, дабы не отвлекаться от программирования. В соседней комнате орал телевизор, а у соседей был десятый ремонт на неделе.
– Невозможно сосредоточится! – прорычал Марк и ударил по столу.
– Чего ты психуешь?! – спросил отец Марка, прибежав из прилегающей комнаты в здании, построенном довольно глупо, чтобы пройти в коридор из комнаты родителей, нужно пройти через комнату Марка.
Каждый раз, когда хоть кто-то проходил, Марк напрягался, стараясь сидеть тише воды, ниже травы, но из-за этого родители часто заглядывали ему в ноутбук.
Марк пытался указать им на границы, но каждый раз слышал: «До этого все жили без личных границ и всё было хорошо, а сейчас все стали неженками, нежелающих работать».
– Я бы не психовал, если бы не орущий телевизор в вашей комнате. – Марк сжимал в кулаках игрушку-антистресс. – Как мне сосредоточиться на моих проектах?!
– А как ты дальше в жизни будешь работать? – отец поставил руку на стол Марка. – Ты должен привыкать работать в шуме!
– Уж лучше бы работу искал, – отец сверлил Марка взглядом. – да причём нормальную, а не эти игрушки постоянно!
– Я не играю в игрушке, я пишу программу! – возмутился Марк. – Это совсем другое, как вы не понимаете?
– Скажи, а какая польза от твоих программ? – отец не отрывал взгляд от самого Марка.
– Ну, какой тебе… – начал Марк, но тут же отец его тут же перебил.
– Причём тут это?! – отец не давал Марку вставить и слова. – Твои программы приносят деньги?
– Пока нет… – тяжело вздохнул Марк. – но…
– Вот видишь! – отец поднял подбородку. – А ещё и говоришь, что это не игрушки!
– Позже будут… – продолжил Марк, но отец бросил на него косой взгляд.
– Позже когда? – отец всё ещё не отрывал взгляда от Марка. – На пенсии?
– Да кому нужен неудачник на пенсии! – отец закатил глаза.
– Я правда стараюсь, но вы не понимаете! – кричал Марк и закрывал глаза, пытаясь сдержать подступающие слёзы.
– Ишь что ещё удумал, как тебе не стыдно кричать на отца?! – отец не замечал подступающих слёз Марка.
– Извини, мне нужно отдохнуть… – произнёс Марк, но отец тут же опёрся на его стол.
– Отдыхать он хочет! – отец посмотрел на Марка косым взглядом. – Нормальные люди вон от рассвета до заката трудятся, а ты просто в игрушки играешь!
– Да поймите вы, – начал Марк, его голова уже начала шататься из-за ежедневного сценария. – что без опыта и без собственного портфолио никуда не берут.
– Так ты курсы пройди! – отец продолжил сверлить взглядом собственного сына.
– У меня нет денег на них. – Марк схватился за голову.
– Так устройся на подработку. – настаивал отец, в упор, не замечая аргументов Марка.
– На какую? – возмутился Марк. – Помните вы ругали, что я не хожу на работу? Я устроился на подработку, а потом вы требовали уволится с этой подработки…
– А всё почему? – Марк вскочил с места. – А потому что там мало платят! Но открою вам континент из поговорки, на подработках вообще всегда мало тратят! Тогда чего ждёте?
– Мы просто хотим, чтобы ты нас не позорил, своими игрушками. – отец бросил взгляд на ноутбук Марка.
– Я вас не позорю, вы сами себя позорите. – Марк едва держался на ногах.
– Ах так, значит никакого интернета! – отец потянулся к своему телефон.
– Без интернета? – Марк выпучил глаза. – А как я узнаю о предложениях вакансии? Как я загружу свои проекты в интернет?
– Тоже мне отговорки, – отец, отключил доступ к интернету у Марка. – найди нормальную работу и тогда получишь интернет.
– Ладно-ладно, – Марк понял, что спорить бесполезно и вернулся к своим программам.
– Я не закончил! – отец захлопнул крышку ноутбука. – Не отворачивайся, когда с тобой говорят. Ты хоть знаешь, что другие работали и во время учёбы и летом, а ты только учился и при этом не можешь найти работу уже два года.
– Я бы не выдержал одновременную учёбу и работу. – вздохнул Марк. – Сколько раз говорить!
– В вузе не вагоны грузят, ты не мог устать! – отец забрал ноутбук у Марка, подаренный ему на первом курсе. – А работать как будешь? Тоже скажешь не выдержал бы? Да кому такой нужен! Ответ никому!
Раздался телефонный звонок, Марк потянулся к своему телефону. Но отец тут же перехватил телефон и посмотрела на неизвестный номер и отключила телефон.
– Но это же могло быть предложение о вакансии. – Марк пытался дотянуться до собственного телефона, но отец специально отводил его в сторону.
– Ничего, подождут, пока мы закончим, а потом ты им перезвонишь. – произнёс отец спокойным голосом, заглушаемым шумом шуруповёрта из соседней квартиры.
– Тогда я упущу свой шанс. – Марк закатил глаза, собираясь всеми силами дотянуться до своих личных вещей.
– Упустишь свой шанс, – отец ударил по столу. – ты уже упустил шанс.
Марк ударил по столу и пошёл стелить свою кровать, но как только он сделал это, отец сразу сбросила его постельное бельё.
– Бежишь? – спросил отец. – Ты что вообще ни на что не годен? Будешь спать на полу, пока не найдёшь работу!
Марк еле сдерживал эмоции, чтобы и не злиться, и не заплакать от такой жизни, всё то время, что он жил его только ругали с поводом и без.
– Что, язык проглотил? – отец не оставлял Марка в покое, в котором тот сейчас нуждался больше всего.
– Да с вами невозможно разговаривать! – Марк повысил голос на отца.
– Не смей повышать голос на отца! – сказал отец. – Показать, где ремень находиться?!
– Ну почему вы не можете… – на лице Марка проступили слёзы. – хотя бы периодически хвалить, а не ругать сутками на пролёт?
– Только плакать и можешь?! – отец потянулся к ремню. – Как не стыдно, ты же мужчина!
У Марка заболела голова и он прилёг на пол, последним, что он услышал был свист воздуха, разгоняемого ремнём.
Глава 1. Новый мир
Марк очнулся на остановке с зелёной крышей, плавно переходящей в жёлтые опоры и с чёрными стенами, на которых была вывеска с надписью PC.
Все постройки по краям обводились неоновыми линиями.
– Так, и где это я? – осматривался Марк, но увидел лишь одного незнакомца, приближающегося к нему.
Этот незнакомец был полностью зелёным, а одет он был в одежды такого же цвета.
– Ты в нашем мире, – неизвестный подошёл к Марку на расстояние метра
– Мире? – взгляд Марка упал на голову неизвестного и застыл на зелёных наушниках, что тот даже не надел на уши, они лишь лежали на его плечах без надобности. – А ты кто?
– Я строковой литерал, к сожалению, здесь ты можешь нормально говорить лишь со мной. – вздохнул неизвестный и улыбнулся. – Повезло, что ты дождался меня, а не как некоторые поспешили вперёд, встречаясь сразу с числовым и логическим литералом, битам на смех.
– Числовым и логическим? – спросил Марк и скривил взгляд.
– О да, с числовым, ещё хоть как-то можно общаться так, как он имеет множество значений, а вот логический имеет всего два значения, ему можно только вопросы задавать, а ответ он лишь немного.
– Это какой-то бред… – пробубнил Марк и вновь стал осматриваться. – это просто сон…
– Бред? – засмеялся строковой литерал. – Поверь это не бред, это было бы им, если бы ты вёл обычный разговор с логическим литералом. Ваши попытки понять друг друга были бы уморой.
– Но знаешь, – строковой литерал наклонился к Марку. – есть один секрет, как с ним говорить.
– В вашем мире, – подмигнул строковой литерал. – существует такая вещь, как азбука Морзе.
– Азбука Морзе? – Марк прищурил глаза, не отводя взгляд от строкового литерала.
– О да, – кивнул строковой литерал. – а как ещё общаться с тем, у кого есть лишь да, нет и пустота?
– Только так… – согласился Марк и вздохнул.
– Скажи, а как называется это поселение в мире? – Марк вновь огляделся по сторонам.
– Поселение у нас пока называется main, а вот район называется стандартным. – ответил строковой литерал.
– main? – Марк закатил глаза и зевнул. – а вы могли придумать название поярче?
– Да, main. – кивнул строковой литерал.
– Мы всего лишь жители этого мира, а о названии решает он, – строковой литерал указывал на чёрное небо. – наше божество курсор.
– А где он? – Марк осмотрел непроглядное чёрное небо.
– Сейчас ночь, – строковой литерал посмотрел в небо. – но, когда он появится, начнётся день.
– Но, советую, – строковой литерал наклонился к Марку. – не попадайся ему на глаза.
– К слову, ты ж, ещё не обустроился, нам нужен кто-нибудь, кто исправлял бы ошибки. – произнёс строковой литерал и подмигнул.
– Ладно. – вздрогнул Марк и по его спине пробежали мурашки.
– Да не бойся ты, – строковой литерал похлопал по плечу Марка. – если ты программист, то там ничего сложного не будет.
– К тому же, рано или поздно, – строковой литерал вздохнул. – тебе понадобится на что-то жить, а так хоть работа будет.
– И, надеюсь, ты не как турист, – строковой литерал сощурил взгляд и посмотрел на Марка. – который наводит свои порядки в чужом городе, считая, что его жители должны терпеть его выходки.
– Ну так, ты идёшь – строковый литерал моргнул и взгляд его стал совершенно обычном. – али как?
Марк сглотнул, кивнул и молча пошёл за строковым литералом.
Они шли молча, сквозь совершенно одинаковые строения разделённые пятнадцати метровыми дорожками.
Сами строения напоминали собой простенькие коробки с одной дверью. Окна были в самих дверях.
– Я помню ты упомянул стандартные районы… – нарушил молчание Марк. – а что есть нестандартные?
– Да, есть… – кивнул строковой литерал. – нестандартные районы – это районы библиотеки.
– Они бывают двух видов, – строковой литерал зевнул. – но их огромное множество так, что я уже и не помню их все.
– Но, знаешь, – строковой литерал бросил взгляд на Марка. – многие туристы пытаются попасть в столицу и уйти из этого мира.
– Но не каждого туда впускают… – вздохнул строковой литерал. – нужно получить одобрение ряда проверок.
– Скажи, а до столицы как попасть? – спросил Марк, зевая каждый раз, когда его взгляд останавливался на очередном однородном строении.
– Хочешь сразу попасть до столицы?– усмехнулся строковой литерал. – что ж, поработаешь чуток и тебя начнут проверять.
– Да, – ответил Марк и стал оглядываться по сторонам в поиске автобуса, идущего к столице. – мне нужно выбираться отсюда.
– Хорошо, когда имеешь цель, – подмигнул строковой литерал. – можно не сойти с ума от рутины, но не жди, что всё будет так просто, как ты хочешь…
– Это ещё почему? Мне необходимо выбраться отсюда.
– Дело в том, что в столице стоят строгие правила, – строковой литерал задержал взгляд на Марке и вздохнул. – о которых ты ещё пока не знаешь.
– О привет, приятель, – строковой литерал помахал рукой серому незнакомцу, на одной из рук которого была надета рукавица. – это серый гость, которого мы называем комментарием.
– Строковой литерал машет рукой мне комментарию и ведёт очередного туриста, который на сей раз дождался его.
– А он что делает? – спросил Марк.
– Не волнуйся, он помогает туристам таким, как ты не сойти с ума.. – произнёс строковой литерал. – некоторым из вас порой нужно услышать собственную речь со стороны, чтобы не упустить мелких деталей.
– Ты уже несколько раз упомянул существование таких же, как и я? – Марк задержал взгляд на строковом литерале. – Здесь есть другие люди?
– Да, они есть, вот только… – строковой литерал отвёл взгляд в сторону. – Они не очень приятные собеседники, всё пытаются доказать, что наша страна лучше, чем другие страны.
– Ваша страна? А разве тут есть другие страны?
– Да, есть наша страна называется Питон, а есть ещё и Джава, и Котлин, и Си-Шарп и многие другие, некоторые из стран уже не пользуются популярностью, эти туристы, честно уже надоели, приходят в популярный язык, наводят там свои порядки. – сказал строковой литерал. – А потом, нашим постояльцам приходиться чистить города.
У Марка заурчал живот.
– Скажи, а у вас есть можно поесть? – Марк оглядывался по сторонам в поиске какого-нибудь ресторана или на худой конец закусочной. – А то есть хочется.
– Есть такое место, однако сначала работа. – сказал строковой литерал и замолчал.
– Почему ты вдруг замолчал? – спросил Марк. – Здесь есть что-то страшное?
– Да дело в месте, куда мы идём… – вздохнул строковой литерал. – часто задачи поступают неправильно сформированные так, что тебе придётся работать вместо компилятора.
– Компилятора? – спросил Марк. – Это что за зверь?
– Это не зверь, это наш начальник, но лучше тебе в случае сомнений обращаться к интерпретатору.
– А это кто?
– А это секретарь, который проверяет шаги нашей работы. Но запомни главное, сдавай компилятору готовый результат, а интерпретатор может наблюдать за тобой по ходу работы.
– Ладно, ладно, что дальше? Как мне найти это место работы? А вот видишь здание стоит, на ней вывеска среды разработки, у неё аббревиатура ПЧ. К слову, знаешь, а ведь под землёй тоже существует свои города. Ну, что ж, идём туда.
– Города под землёй? – спросил Марк и закашлялся. – Мне что-то слабо вериться.
– Поверь, но сначала я помогу тебе освоиться в этом городе. – строковой литерал посмотрел в небо. – бывают ещё и небесные города, но о них позже.
– К слову, комментарий идёт с нами, порой мы с ним работаем вместе.
– Как это работаете вместе?
– Я принимаю переменные, а он их провожает.
Марк, строковой литерал и однострочный комментарий зашли в компанию ПЧ, где их встретила девушка в чёрно-белой одежде.
Она стояла за стойкой, на которой было всего две кнопки.
– Здравствуй, строковой литерал, а кто это с тобой? – незнакомка начала осматривать Марка.
– Это новый турист, он пришёл поработать для нашего города. – сказал строковой литерал. – Ой, совсем вылетело из битов.
– Вылетело из битов? – спросил Марк и снова скривил взгляд.
– Это выражение такое у нас, мы же всё части программы, но вот у каждого города есть своя цель, а вот мы пока лишь просто существуем без цели. Надеюсь, что ты выберешь нашу цель.
– А как её выбрать? – спросил Марк. – Я же не совершенно не знаю ваших порядков.
– Для этого нужно придумать регламент для взаимодействий переменных.
– У вас даже правил нет? – удивился Марк.
– Правила-то есть, да вот только они не такие, которые нам нужны. Они относятся к стране, но не к нашему городу.
– Хм-хм, ничего, что я всё ещё тут стою, пока вы тут общаетесь? – спросила девушка в чёрной одежде. – Мне как бы тоже работать нужно, а меня до сих так и не представили.
Консоль надула губы и скрестила руки.
– А в чём заключается твоя работа?! – Марк стал оглядывать незнакомку.
– Марк, – обратился строковой литерал. – это консоль и она…
– Я сообщаю об ошибках. – перебила консоль и пожав плечами, развела руки в стороны.
– А зачем вам тогда компилятор и интерпретатор? – спросил Марк. – Разве они не могут говорить сотрудникам об ошибках?
– Говорить об ошибках они не будут, они лишь составляют отчёты, а я же их передаю.
– А зачем тогда они нужны? Это же убивает много времени.
– Скажи, а зачем тогда нужно разделение обязанностей? Это ведь тоже убивает кучу времени.
– Нет, это не убивает кучу времени, а освобождает его. – возразил Марк.
– Вот тут-то и оно, они отвечают за проверку, а я отвечаю за раздачу отчётов, мы дополняем друг друга, а не перекладываем ответственность, запомни это, турист. – скрестила руки консоль. – А теперь иди работать.
– Пошли. – скомандовал строковой литерал, и они с Марком пошли в офис, где Марк сел за предложенное ему место, сзади него была дверь. – Слушай внимательно, для вызова компилятора нажимай кнопку с зелёным треугольником, а для вызова интерпретатора нажимай кнопку с зелёной шестерёнкой.
Побелело небо и над миром нависла тень курсора, что танцевал в полёте.
И вот первый клиент, одетый в зелёную кофту с надписью «Привет мир!».
– Слушай, я вот знаю, что для этого нужно использовать процедуру консольного вывода print, но как поступать в вашем случае?
– Тебе нужно привести к литералу процедуру, ты сразу узнаешь её по подавленному состоянию, ведь её мачеха input задавила её волю. Но мы зовём её мачеху попугаем.
– Попугаем? – спросил Марк. – Но почему?
– Поверь, ты сам поймёшь, когда встретишь её.
Марк и Строковой Литерал пошли к Процедуре print, по пути они встретили мачеха input.
– Здравствуйте. – сказал Строковой Литерал и похлопал Марка по плечу, передавая право ему.
– Здравствуйте. – сказала input.
– Здравствуйте, мачеха input. – сказал Марк и Строковой Литерал рассмеялся.
– Здравствуйте, мачеха input. – сказала input.
– Что?! Почему она повторяет за мной?! – спросил Марк.
– Что?! Почему она повторяет за мной?! – спросила input.
– Не повторяй за мной!
– Не повторяй за мной!
– Хватит!
– Хватит!
– input, можно мы возьмём вашу дочку? – спросил строковой литерал. – Да.
– input, можно мы возьмём вашу дочку? – сказала input. – Да.
Её дочка print тут же вышла и осмотрела вошедших гостей, печальным взглядом и тяжело вздохнула.
– Снова работа… и снова строковой литерал, а вот тебя я вижу впервые… – произнесла print, продолжая тяжело вздыхать.
– Снова работа… и снова строковой литерал, а вот тебя я вижу впервые… – передразнивала input, print.
– Я Марк.
– Привет, Марк.
– Привет, Марк. – вновь сказала input.
– Меня уже бесит, что ты повторяешь за мной!
– Меня уже бесит, что ты повторяешь за мной!
Строковой литерал указал на выход, и они пошли обратно все втроём, print то и дело говорила о погоде.
– Слушай, а почему ты продолжаешь жить с input? – спросил Марк.
– Ты это спрашиваешь потому, что тебе не нравится моя мачеха? Потому, что ты сочувствуешь мне? Потому, что ты думаешь, что это легко? Потому, что ты считаешь, что так положено любоваться из вежливости? Потому, что я тебя достала? Потому, что ты хочешь произвести хорошее впечатление передо мною? – спрашивала print, не давая Марку вставить и слова и тот замолчал, про себя лишь подумал: «Они обе стоят друг друга».
Они вернулись к клиенту, вместе с print, та поставила печать и осталась вместе с Марком работать, расставляя печати для переменных и так до конца рабочего дня.
Марк нажал на кнопку с зелёным треугольником и компилятор вышел, передал отчёт.
Консоль взяла его в руки.
– Привет, мир! – сказала консоль и положила отчёт на стойку.
И так продолжалось до конца дня, а в конце Марк и строковой литерал пошли в один из ресторанов, что был в центре квартала. Единственное отличие ресторана от остальных зданий, была вывеска: Аскьюэль.
В нём они поели блюда, названные в честь того или иного символа из одноимённой кодировки.
Глава 2. Именования
На следующий день, Марк вновь пришёл в ту организацию и встретился с консолью. Она принимала посетителя.
– Ну почему вы не принимаете меня? – орал посетитель. – Примите меня!
– Ни компилятор, ни интерпретатор не могут вас принять. – ответила Консоль. – Примите меня немедленно!
«– Мда, – Марк посмотрел на посетителя, потребительское отношение совсем, как в нашем мире».
– Доброе утро. – вошёл строковой литерал и облокотился на стену. Он был всё в тех же наушниках.
– Доброе, утро, а что здесь происходит? – сказал Марк, не отрывая взгляд от посетителя. – А из-за чего его не могут принять?
– Да всё дело в некорректной анкете... – строковой литерал зевнул. – Можешь проверить их анкету...
– Хорошо, – Марк подошёл к посетителю. – возможно, я смогу помочь, простите, но можно вашу анкету?
– Да, благодарю. – сказал посетитель и протянул Марку анкету, на которой было написано имя один в цифровой форме и тип данных "int".
– А вот в чём дело... – Марк закатил глаза, взяв новую анкету и написав на ней имя one и тип данных "int". – Вот держите.
Марк протянул анкету посетителю и пошёл за всё той же “print”, опустив взгляд, а вздохнув поднял его.
– Неплохо, – строковой литерал похлопал Марка по плечу. – ты уже справляешься, к слову, идя сюда я увидел очередь из посетителей.
Марк привёл процедуру вновь и она поставила печать и Марк нажал на кнопку с зелёным треугольником
Услышав от строкового литерала об очереди посетителей, процедура решила остаться.
Пришёл новый посетитель, ну как посетитель, два посетителя: переменная и числовой литерал. Однако и их не приняли сразу, Марк взял у них анкету и увидел имя из двух английских слов с пробелом и тип данных "int".
Марк зевнул, и поставил знак нижнего подчёркивания, вместо пробела, затем передал анкету всё той же процедуре и та поставила печать и там происходила с каждой анкетой.
Следующая анкета была с именем два русскими буквами. Марк взял новую анкету и написал в имени два на английском и тип данных int. А дальше повторил взаимодействие с процедурой и компилятором.
Пришёл ещё один посетитель и на сей раз у него в имени был написан плюс в виде символа. Марк сжал кулаки, прошептав: это же не имя... недопустимый же символ...
Марк взял новую анкету и написал английское название плюса, затем процедура поставила подпись.
В следующей же анкете было написано имя процедуры, стоящей рядом с ним.
– Зарезервированное имя ведь… – Марк вновь закатил глаза и дописал знак нижнего подчёркивания. – Имя тут как номер паспорта у нас…
За утреннюю смену было даже имя free без кавычек.
Затем пришла очередь посетителя, у которого в анкете было написано имя английское “да” написанное с маленькой буквы, но в требовании было вывести это название с заглавной буквы.
– Разный регистр... – пробубнил себе под нос Марк и взял новую анкету и переписал всё, кроме вывода, где переименовал её в выводе на yes.
Утренняя смена подошла к концу и Строковой литерал произнёс: знаешь, на вечерней смене придёт PEP8, надеюсь, ты нас не подведёшь.
– Ясно... – вздохнул Марк и зевнул. – местный ревизор.
Настал черёд второй смены, и Марк продолжил принимать посетителей, но был один из них, кто не вставал в общую очередь, а лишь наблюдал за марком. Это и был PEP8.
Он был одет в чёрный костюм с белой рубашкой, а в руке держал сборник правил.
Первый посетитель подошёл к Марку и в его анкете он увидел имя из одной латинской буквы и тип данных int со значением ноль. Марк не стал ничего исправлять и пропустил переменную к Консоли.
– Кхм, кхм... – PEP8 привлёк к себе внимание, и переменная подошла к нему, показать анкету. – имя не отвечает принципам именования!
– Но... – Марк выступил вперёд. – программа ведь запустится и так!
– Разумеется она запустится, – согласился PEP8. – но необходимо соблюдать принципы именования переменных.
«– Совсем как отец, – Марк закатил глаза и скрестив руки протяжно вздохнул».
– Это же не принципы, а рекомендации! – произнёс Марк. – Они не обязательны!
– Ты ещё зелёный... – произнёс PEP8, и Марк оглядел строкового литерала, который был буквально зелёным. – Давайте сойдёмся на том, что вы назовёте её zero и я не внесу ошибку.
– Ладно... – сказал Марк и взял новую анкету переписав ещё всё, кроме имени, заменив его по совету.
Следующий же посетитель пришёл с именем в виде маленькой буквы "o", Марк хотел снова пропустить его, но не тут-то было.
– Простите, – и снова PEP8 привлёк внимание Марка, и переменная вновь подошла к нему с анкетой. – Но как вы отличите маленькую букву от нуля?
– Так они же по-разному выглядят! – Марк сверлил глазами PEP8.
– У вас да, а в других шрифтах они станут не отличимыми. – произнёс PEP8.
Марк решил дописать строку _eng_letter, чтобы не переписывать всё с нуля.
Также были посетители с именами эл, ай и многие другие однобуквенные выражения, каждый раз PEP8 придирался к Марку, вопреки тому, что программа работала и без его советов.
Наконец, PEP8 ушёл, но день ещё не был закончен. Пришёл последний посетитель, у которого в анкете отсутствовало имя.
– Простите, опоздала… – аноним подошёл к Марку, тот взглянул на анкету и увидел там тип данных str и значение в виде двух двойных кавычек.
– Ясно, – Марк написал английское слово, означающее “пустота”. – прошу.
– Но разве это не правило именования? – пронеслось в голове у Марка.
Посетитель подошёл и всё было в порядке, однако вскоре посетитель подошёл к Марку.
– Простите, но меня попросили передать конверт Марку. – посетитель протянул Марку конверт. – собственно из-за этого я и опоздала.
Марк взял конверт, и посетитель ушёл, а сам он уединился.
Марк осмотрел конверт, но не увидел имени, он развернул письмо и стал читать.
– Ты неплохо показывал себя в реальности, – писал аноним. – однако сейчас ты должен освоиться в обычном городе, а затем я жду тебя в столице, Марк.
«– Аноним… – пронеслось в голове у Марка. – обычно им становятся чтобы скрыть свою личность.
– Но достаточно часто ими становятся хейтеры и тролли… – Марк стал расхаживать по кругу. – они считают, что в интернете можно отбросить правила и остаться безнаказанными.
– Однако этот аноним… – Марк поднял голову к небу. – он явно впечатлён мной.
– Впечатлён? – Марк поднял опустил голову. – Но чем именно? И что ему или ей нужно?»
Вскоре строковой литерал позвал Марка поужинать и они пошли всё в тот же ресторан.
Глава 3. Операторы
Марк пришёл и на третий день. До начала работы он размышлял о всё том же письме, но началась работа и на сей раз приходили посетители вместе с роботами, которые держали их за руку.
Вот пришли двое посетителей, держась за робота, с тремя руками.
Над ним виднелся символ плюса.
Посетители передали три анкеты, две из которых рассказывали о посетителях, а третья же говорила о роботе-операторе.
– Хм... – Марк почесал затылок. – интересный механизм для арности и возвращения данных.
В анкете оператора было написан символ плюс, Марк взглянул на анкеты и увидел, как к "Стоимость: " прибавлялось единица.
– Ясно... ошибка типа, при попытке конкатенации. – Марк обвёл единицу в кавычки.
Следующий посетитель был с роботом, на котором был изображён символ минус. В анкетах же посетителей виднелась операция единица в кавычках минус единица в числах.
– И снова ошибка типа... – покачал головой Марк и взял новую анкету написав в ней операцию без кавычек.
Далее следовал спиралеобразный робот, держащий таких же посетителей, но при этом напоминающий собой шторм.
– Шторм... – пронеслось в голове Марка. – почему не мозговой?
Марк вздохнул и увидел, что в анкете написано два умножить на букву "A" в кавычках, он слегка задумался, а потом вспомнил PEP8 и решил взять новую анкету и изменить порядок символов, написав "A" * 2.
– Ох, сейчас начнётся... – прошептал строковой литерал так, чтобы его слышал только Марк.
– Начнётся что? – Марк перевёл взгляд на строковой литерал, а затем вернул его на робота.
– Начнётся что? – произнёс робот умножения.. – Начнётся что?
– Прекрати!
– Прекрати! – произнёс робот. – Прекрати!
Марк закатил глаза и тут его глаза расширились.
– Эхо отзовись. – улыбнулся Марк, вспоминая урок музыки из начальной школы, где они всем классом пели эту песенку.
– Эхо отзовись. – произнёс робот. – Эхо отзовись.
Строковой литерал показал головой, легонько улыбнувшись.
Следующие посетители пришли с дрожащим чёрным роботом с белым животом, голова которого представляла собой воронку, вместо третьей руки у него был кран для жидкостей. На нём виднелся слэш “/”, означающий деление.
Они передали анкету и Марк ударил себя по лицу, увидев деление строки и тут Марк взял новую анкету и переписал почти весь код из-за требований PEP8.
В операции же Марк написал “print(string[:2])”, вместо деления строки. Робот же перестал дрожать.
– О ты освоил срез наборов данных? – спросил строковой литерал и замолчал.
Пока посетители шли возвращать робота деления, Марк посмотрел на Строковой Литерал, что молчаливо пожал плечами, уловив взгляд программиста.
Пришли следующие посетители и стало жарко. С ними был робот, что был похож на умножение, но в отличие от того, вокруг его тела была шестерёнка, способная вращаться вокруг него за счёт внутренних шестерёнок.
Посетители протянули Марку анкету, постоянно оглядываясь на робота.
Марк взял и увидел операцию возведение строки в степень. Он прочёл задание и увидел повторение строки, затем взял новую анкету и занёс в неё всё, кроме лишней звёздочки.
Глава 4. Оптимизация
Марк вновь пришёл и на сей раз ему к Консоли подошли бледные посетители, их глаза постоянно дёргались от любого шума, они были окружены кучей роботов.
Марк взял анкеты посетителей и посмотрел на запись действий, где мало того, что были перепутаны математические символы возведения в степень, так ещё и написана формула квадрата суммы в объёмной записи: к удвоенному произведению переменных прибавить сумму квадратов двух переменных.
– Ну кто так пишет? – спросил Марк и сжал кулак. – Да он в притык не видит ошибку!
– Это же разные языки! – возмутился Мар и закатил глаза. – Да как он вообще перепутал математический язык с питоном?!
– Да и тоже мне математик, – произнёс Марк и цокнул. – это же не оптимальный вариант, он что вообще формулы сокращённого умножения не учил?
Марк взял новую анкету и написал возведение в квадрат сумму двух переменных, а старую он смял и выбросил в ведро.
Следующий посетитель пришёл окружённый ещё большим количеством роботов и с анкетой ещё хуже: разность разности кубов двух переменных с произведением утроенного перемножения переменных и разности этих самых переменных.
Марк пробубнил себе под нос и взяв новую анкету, исправил на куб разности двух переменных. Он прошёлся по всем формулам сокращённого умножения за первую половину дня.
Но ему повезло, пока не требовалось вспоминать бином Ньютона, в котором могли операции с двумя переменными в сотой степени.
– Строковой литерал, – обратился Марк и перевёл взгляд на своего собеседника.
– Да? – отреагировал строковой литерал.
– У тебя не возникает желания дать по носу таким программистам? –Марк тяжело вздохнул.
– Поверь, – произнёс строковой литерал. – это ещё биты.
– Ты имел в виду цветочки? – уточнил Марк.
– Ну, – начал строковой литерал. – у вас цветочки, у нас биты.
– Честно, – вздохнул Марк. – ощущение, что метрики эффективности у этого программиста был по длине кода, а не по его качеству.
– Ты хотел сказать по информацию объёму? – спросил строковой литерал и хлопнул Марка по плечу.
– Если бы информационного объёма… – сказал Марк и поднял глаза из-под бровей. – если бы тут он был, то метрики сильно бы изменились. Они бы были умнее.
Наступил перерыв, а после него пришёл ещё один посетитель, но на сей раз за ним виднелась вереница роботов. Посетитель, шатаясь, подошёл к Марку и протянул анкету.
Марк взглянул на неё и его глаза выпучились.
– Строковой Литерал, – вновь обратился Марк. – тут нет ли стикера с фейспалмом?
– Фейспалмом? – спросил строковой литерал. – Нет, тут такого нет.
– Жаль… – произнёс Марк и стал разглядывать код. В этом коде две операции писались сотню раз, по половине строк на каждую операцию.
Марк покачал головой и стал писать новый код, более оптимизированный.
– Здесь понадобится цикл. – произнёс Марк. – И снова эта мачеха!
– Строковой литерал, – обратился Марк. – а нет ли способа избежать повторения у мачехи?
– Есть. – сказал строковой литерал.
– Есть? – спросил Марк. – Почему ты молчал?
– Так ты не спрашивал. – ответил строковой литерал, пожав плечами.
– Ну и как же это сделать?
– Передай ей записку с текстом, – ответить строковой литерал и зевнув, облокотился на стену. – только тебе придётся ещё и привести с собой функции преобразования типов.
– И где ты прикажешь их найти? – спросил Марк.
– Там же, где и input и print, – ответил строковой Литерал. – но ладно я провожу тебя к ним, только смотри не перепутай функцию преобразования типа с функцией определения типа.
Марк переименовал переменные для соответствия соглашению с Pep8 и сократил код, раздутый в сто две строки до семи строк, при этом повысив масштабируемость операцией без вмешательства разработчика. И всё это при помощи параметрического цикла.
Марк закончил писать код, но прежде, чем отдать анкету, они пошли за двумя функциями.
По совету строкового литерала, Марк захватил с собой листок, на котором заранее написал строку “Введите число элементов арифметической прогрессии”.
Пока они шли, Марк всё время молчал и ушёл, уставившись в одну точку.
– Куда ты биты тратишь? – спросил строковой литерал.
– Да вот думаю, – начал Марк. – вот в школе мы проходили конструкции ветвления до цикла, а тут её пока не было, почему так?
– А у вас в реальном мире, – отвечал строковой литерал. – разве не точно так общаются с заказчиками?
– Ну, и… что? – спросил Марк.
– Ну обычно в школе используют водопад, – произнёс строковой литерал. – однако, кто сказал, что это единственный путь к освоению материала.
– К тому же, – продолжил строковой литерал. – заказы в твоём мире набираются не по водопаду, а что чему-нибудь близкому к Agile, а то и RUP.
Марк и строковой литерал пришли на место и стали искать первый переводчика символов в строку. Вот они зашли в первый дом.
– Здравствуйте, вы переводчик строк в цифры? – спросил Марк у первого переводчика.
– True. – ответил переводчик, строковой литерал усмехнулся попытке Марка общаться с переводчиком на логические значения.
– Вы не переводчик строкового типа данных? – Марк закатил глаза.
– True. – ответил переводчик и Марк спросил: А где нам его найти?
– True. – ответил всё тот же переводчик и Марк тяжело вздохнул, понимая, что переводчик строкового типа данных в логический говорит истину только тогда, когда ему что-либо говорят и получается, что он всегда будет поддакивать.
Марк обратился к следующему переводчику и этот переводчик нажал на кнопку. Вбежала консоль с взъерошенными волосами.
– Вы что хотите сделать с переводчиком в вещественный тип данных?! – спросила консоль чуть-ли н рыча. – вам нужен int, а не float.
Консоль указала на нужного переводчика и захлопнула дверь. Марк на некоторое время застыл, а когда пришёл в себя – увидел, как строковой литерал машет перед его лицом.
Затем Марк и строковой литералы пошли обратно, вместе с нужным переводчиком, заодно прихватив с собой ту саму мачеху, которая на сей раз молчала, ведь Марк с ней не говорил, а лишь протянул записку. Она сказала один раз и больше не говорила.
Марк выполнил работу и день закончился.
Глава 5. Циклы
На следующий день, Марк пришёл и долго ждал первого посетителя.
– Ноль, один, два. – послышался тройной скрип, последовали удары металла о камень. – Ноль, один, два.
За дверью показался силуэт робота и согнувшегося посетителя, послышался тройной скрип и снова раздалось: Ноль, один, два.
Робот посетителя остановился в проходе, а рядом с ним были функции int и та же самая мачеха.
«– Только не она… – пронеслось в голове Марка, и он закатил глаза, а затем посмотрел на строкового литерала».
Марк осмотрел посетителя, когда робот подошёл поближе и снова остановился.
– Да сколько же тут шагов?! – возмутился посетитель.
«– А, ясно в чём дело… – произнёс Марк и сам подошёл к посетителю и получив от него анкету, он стал рассматривать её».
В первой строке был написан запрос о получении количества шагов с конвертацией их в целое число.
Во второй строке был написан цикл с параметром, где за конец цикла применялась переменная с подсчётом шагов. Последняя строка с табельным отступом выводила номер шага.
– Эх, – произнёс Марк. – тут не тот цикл используется.
Марк инициировал первую переменную «шаг» приравняв её к нулю, а вторую переменную он объявил на следующей строке, но на сей раз без конвертации в целое число, однако в дело всё равно пришлось вмешать мачеху.
На новой строке он написал цикл с предусловием, где продолжение не равно точке.
Марк написал инкремент шага, после одной табуляции, что означала прибавление единицы к шагу. Он помнил, что обратной операцией был декремент, однако сейчас он был совершенно не нужен.
Марк повторил запрос о продолжении, но поставил перед ней всё ту же табуляцию.
– Вот и всё, – произнёс Марк и похлопал руками.
– Кхм, кхм… – откашлялся PEP8, привлекая внимание к самому себе. – значит вы не думаете о кроссплатформенности?
– Как это? – спросил Марк. – алгоритм же ведь работает независимо от платформы.
– Поправочка, он будет работать на любой платформе, с одинаковой кодировкой табуляции. – произнёс PEP8. – Или вы хотите, чтобы ваша табуляция превратилась в восемь пробелов, вместо четырёх и весь код сломался бы?
– Ладно, ладно… – пробубнил Марк, закатывая глаза. – исправлю на пробелы.
– Надеюсь, вы запишите правила к себе в байты. – произнёс PEP8. – И, к слову, не используете имя continue.
– Это ещё почему? – спросил Марк.
– Как вы отличите переменную продолжения от оператора пропуска итерации? – спросил PEP8.
– Ладно, напишу “question_continue_or_not”. – произнёс Марк.
Глава 6. Конструкции ветвления и условия
Марк пришёл вновь и сразу закатил глаза, в ожидании следующих посетителей.
И тут пришли четверо посетителей с роботами, они протянули Марку анкету.
Он взглянул, и он посмотрел на строковой литерал и вспомнил про отсутствие фейспалма в этом мире.
В записке снова была формула, где вместо программного символа возведения в степень был математический символ с той же целью.
Однако на сей раз, в этой записке формула выглядела, как вычисление корней квадратного уравнения без обозначения дискриминанта: Корни квадратного уравнения – это корень разности квадрата второго члена и перемножения остальных переменных, умноженных на четыре, из которого вычитается или прибавляется вторая переменная уравнения, а итоговый результат делится на удвоенную первую переменню.
– Это уже даже над математикой издевательство! – воскликнул Марк и схватил новую записку, едва не порвав ту.
Он переписал всё до формулы и покачал головой.
– Нет, – пробубнил Марк. – так дело не пойдёт. Тут даже в математической формуле мириады ошибок!
Марк начал разбирать формулу.
– Так, это решение квадратных уравнений, – размышлял Марк. – значит нужна формула дискриминанта: разность квадрата первой переменной и перемножения остальных, умноженных на четыре.
– Так, затем нужен оператор ветвления. – пробубнил Марк и посмотрел на роботов. – Мда, им нужны роботы если, если иначе и иначе.
– Если дискриминант больше нуля: – написал Марк, после первой формулы, то используется две формулы.
Марк поставил вначале строки четырежды пробел и ощутил тяжёлое дыхание в спину.
– Ну кто так пишет! – заорал над ухом PEP8. – Неуч ты, а не программист!
– Да не орите вы! – возмутился Марк. – Да и из-за чего вы так злитесь?
– Так ты со старшими обращаешься?! – спросил PEP8. – Вы даже не думаете о коллегах!
– Как коллеги прочтут ваши формулы? – продолжил PEP8. – Где форматирование строк?
– Форматирование строк? – спросил Марк. – А разве оно не у дисков?
– Давайте сойдёмся на том, что вы используете метод format, но я бы рекомендовал ф-строки… – продолжил PEP8, проигнорировав Марка. – и запомните, оба способа используются фигурные скобки, как у систем уравнений.
– Ладно, ладно… – произнёс Марк, чуть ли рыча и закатывая в очередной глаза и сжимая кулаки. – напишу я отдельно два уравнения, а затем: print(f”Корни: {x1}, {x2}”).
– Так, а теперь если дискриминант равен нулю – проговаривал Марк, оглядываясь на PEP8, но тот лишь молча кивал.
– Корень равен отношению второго члена к удвоенному первому с обратным знаком. – написал Марк на следующей строке, но проверяющий молчал. – И дальше в ответе Марк поставил символ f перед строковым литералом и в фигурные кавычки вставил корень уравнения.
– Иначе… – продолжил Марк и перенёс ручку ниже: «Корней нет».
– Кхм, кхм… – вошёл новый проверяющий, который не имел совершенно ничего общего с PEP8. – простите, а вы проверили задачу прежде, чем написать об отсутствии корней?
– Это ещё кто? – спросил Марк у строкового литерала.
– Это бизнес-задача. – произнёс строковой литерал. – Знаешь, иногда в математике используют мнимые числа, например, корень из минус единицы. Так, что лучше проверь задачу. Вдруг там нужно найти и мнимый корень уравнения.
Марк посмотрел в анкету и увидел: если корней нет, то вывести “Корней нет”.
– Ну, я сделал всё согласно задаче. – произнёс Марк, пожимая плечами.
– Хорошо, но учтите, дальше я буду проверять вас на равных с этим PEP8. – произнесла бизнес-задача и фыркнул посмотрела в сторону PEP8.
– А что с ними? – спросил Марк у строкового литерала.
– Да так, бизнес-задачу обычно ругает PEP8 за торможение бизнеса, а PEP8 наоборот ругает бизнес-задачу из-за её брата близнеца бизнес-правила, который спешит везде, куда бы он не пошёл.
– Ясно…
Далее пришли двое посетителей, но на сей раз, с сдвоенными роботами, на груди которых красовались символы равенства, а на их боках виднелось по двум сканерам. Они протянули анкету Марку и тот посмотрел в неё и увидел: умножение двух логических переменных.
– Что за программист? – спросил Марк, беря новую анкету. – Есть же более читаемый способ описать конъюнкцию.
Марк переписал всё до вывода, а затем изменил вывод на строку: конъюнкцию при помощи оператора «and» и передал анкету посетителям.
Далее Марк исправил выражение: «Не первый или не второй и первый или второй», на выражение первый не равен второму. Марк делал это, едва не засыпая от замены формулы исключающего или на простое выражение неравенства.
Точно также прошла и замена формулы импликации «не первый или второй» на более простую формулу «первый меньше или равен второму», означающую меньше или равно.
И в конце дня Марку пришлось исправлять сумму двух логических переменных на дизъюнкцию., Марк посмотрел на стену и понял, что на них нет часов.
– Слушай, – произнёс Марк, обращаясь к строковому литералу. – а нет ли способа измерить время?
– Есть, да вот только… – произнёс строковой литерал. – тебе пока не дали пропуск в один из городов-библиотек.
– А когда дадут? – спросил Марк, уставившись на собеседника.
– Думаю, скоро… – произнёс строковой литерал и зевнул, время подходило к концу, как вдруг дверь распахнулась.
– Успел… – сказал посетитель, пытаясь отдышаться. – У меня послание для Марка.
– Это я. – произнёс Марк и подошёл к посетителю, забирая послание. А посетитель, передав письмо отправился обратно.
– Подожди, – прокричал Марк, но след посетителя уже простыл. – от кого это хоть?
Не дождавшись ответа. Марк продолжил ждать окончания смены, а когда та закончилась, он раскрыл письмо.
«Здравствуй Марк, ты уже познакомился с бизнес-задачей? Что ж, когда ты освоишься с библиотеками, я выдам тебе доступ в ооп-город, ну, а сейчас передохни, пока здание подготовят к работе с наборами данных».
– Подготовят к работе с наборами данных? – спросил Марк и затем обратился к строковому литералу с тем же вопросом.
– А, ну так они будут на машинах приезжать, – отвечал строковой литерал. – а не входить, как обычные посетители, ты будешь сидеть за окном и принимать их анкеты.
– Ну, а что мне сейчас делать? – спросил Марк, протягивая письмо строковому литералу.
– Ну, тут сказано отдыхать, считай это своим выходным. – сказал строковой литерал и зевнул. – Скажи, а остались ли у тебя какие-нибудь вопросы по миру?
– Вопросы по миру? – спросил Марк. – Почему ты спросил?
– Да дело в том, что с появлением наборов данных, моя роль, как твоего учителя, будет становится всё меньше и меньше, а тебе придётся сталкиваться с числовым и логическим литералами, а ко мне обращаться почти не придётся.
– Ты уходишь? – спросил Марк.
– Нет, – ответил строковой литерал. – пока нет, во всяком случае, если тебе не понадобится выполнить требования бизнес-задачи, то… – продолжил строковой литерал и вздохнул. – я тебе и вовсе не нужен.
– А что мне делать без тебя? – спросил Марк.
– Ты и без меня прекрасно справляешься, – сказал строковой литерал. – ну, а моя роль была лишь посвятить тебя в правила этого мира.
– А сейчас я хочу отдохнуть. – произнёс строковой литерал и оставил Марка, опустившего голову, в одиночестве.
Спасибо за чтение
Вернуться к книге
