Программы на языке программирования Rockstar, похожие на песни
Обновлено: 21.11.2024
ТочкаДалее
58 мин
Маттиас Кох
ТочкаДалее
59 мин
Евгений Пешков
ТочкаДалее
59 мин
Дино Эспозито
ТочкаДалее
54 мин
Дмитрий Нестерук
ТочкаДалее
70 мин
Александр Якунин
Каковы связи между обновлениями, работающими в режиме реального времени, инкрементными сборками, кэшированием, избыточностью микросервиса и, наконец, выявлением React? Александр показывает, как набор…
ТочкаДалее
72 мин
Стивен Туб
ТочкаДалее
61 мин
Карлен Симонян
Создание парсеров и лексических анализаторов — затратное по времени дело. Обычно к ним прибегают при необходимости реализации формальных грамматик, в том числе предметно-ориентированных…
ТочкаДалее
49 мин
Андрей Дятлов
Вы узнали, как ReSharper анализирует ваш код? В предположении Андрей с практическими примерами рассуждения о том, как писать кросс-процедурные анализы кода и почему это теперь необходимо для самого раз…
ТочкаДалее
56 мин
Дмитрий Иванов
ТочкаДалее
71 мин
Жером Лабан
Разработка кроссплатформенных приложений для Windows, iOS, macOS, Android и WebAssembly может быть сложным процессом, особенно когда речь идет о пользовательском интерфейсе. У каждой платформы есть свои способы определения Dynam…
ТочкаДалее
71 мин
Крис Клуг
Принципы SOLID. Пять заповедей мира программного обеспечения. Забытый на долгие годы, поскольку разработчики сосредоточились на фреймворках JavaScript с глупыми именами и сложными шаблонами. Не понимая, что…
ТочкаДалее
71 мин
Станислав Флусов
В истории, которую ведет автор, рассказывается о крупных энтерпрайз-приложениях с MS SQL на PostgreSQL, которые не останавливались ни на одну минуту в ходе этого процесса. Естественно на этом становлении пу…
ТочкаДалее
60 мин
Кевин Госс
Нет ничего проще, чем отладить асинхронный код — когда про это рассказывают два профессионала WinDbg и другие инструменты. Времена изменились. Многоядерные процессоры стали нормой, а многопоточность…
ТочкаДалее
61 мин
Раффаэле Риальди
ТочкаДалее
60 мин
Никита Цуканов
Забудем об ужасах C++/CLI и рассмотрим альтернативу. При всей простоте использования технологий P/Invoke, она, увы, пригодна лишь для использования библиотек, производящих функции в стиле C. Объектно…
ТочкаДалее
71 мин
Михаил Кузнецов
Массовый переход от монолитов к микросервисам решает одни проблемы, но создает другие — взаимодействие сервисов существенно сложнее и чем взаимодействие объектов в памяти. Частично упрощен…
ТочкаДалее
56 мин
Конрад Кокоса
ТочкаДалее
60 мин
Дино Эспозито
ТочкаДалее
71 мин
Павел Тупицын
Код на экране вряд ли привлечет к вам легионы кричащих фанатов, в отличие от отвратительного гитарного соло. Если только вы не Сэм Аарон, конечно. Он создатель Sonic Pi, живого языка программирования для создания музыки. Он создал проект с открытым исходным кодом, который создает музыку из кода в режиме реального времени
Вы видели эти списки вакансий, которые ищут «рок-звезду JavaScript», и, вероятно, закатывали глаза. Глупо думать, что какие бы навыки программирования у вас ни были, вы попадете в Rolling Stone. Кроме того, код на экране вряд ли привлечет к вам легионы кричащих фанатов, как отвратительное гитарное соло.
То есть, если вы не Сэм Аарон. Он создатель Sonic Pi, живого языка программирования для создания музыки. Он создал проект с открытым исходным кодом, который создает музыку из кода в режиме реального времени. Музыкальный мир обращает на это внимание: Rolling Stone описал его как «превосходящего настоящее», когда он выступал на том же фестивале, что и Граймс.
Sonic Pi работает с простыми циклами кода. Вы вводите несколько команд, которые указывают биты, мелодии и сэмплы для воспроизведения. Эти команды обрабатываются через серверную часть синтезатора, называемую SuperCollider. Суть его в зацикливании и повторении, но если вы меняете код во время исполнения, меняется и музыка. Это простой и действенный способ научить любого работать с электронной музыкой или базовыми понятиями программирования.
"Если вы программист и ничего не смыслите в музыке, Sonic Pi может вам в этом помочь", – сказал Аарон. «Если вы музыкант и ничего не смыслите в программировании, Sonic Pi может вам в этом помочь. И если вы ничего не знаете ни о том, ни о другом, вас ждет веселое и увлекательное путешествие».
На первый взгляд, это восхитительно просто. Настолько простой, что с ним справится даже 10-летний ребенок. Под капотом есть несколько удивительных технических проблем, чтобы заставить такой язык работать.
Начало
До Sonic Pi Аарон и его друг Джефф Роуз создали Overtone, еще один живой язык программирования, встроенный в Clojure. Этот проект развил его интерес к предметно-ориентированным языкам, который стал предметом его докторской диссертации в Университете Ньюкасла. Он продолжал работать над Overtone в качестве исследователя в Кембриджском университете. Однако деньги на эту должность заканчивались, поэтому Аарон знал, что ему придется найти другое занятие.
Именно тогда он наткнулся на трехмесячный проект от Broadcom Foundation — разработчиков чипа Raspberry Pi — по созданию чего-то, что могло бы привлечь детей к программированию. «Я поднял руку и сказал: я думаю, что могу что-то с этим сделать. Возможно, я могу взять Overtone и сделать его легче, проще и уменьшить функциональность, но сфокусировать его специально на детях».
Эта идея оказалась более амбициозной, чем он думал. Первоначально он предполагал, что трехмесячный проект будет заключаться в создании прототипа. Но на первой встрече выяснилось, что им нужен прототип, учитель, школа, планы уроков и прогон в этом классе с его помощью. Это означало, что это должна быть полностью функционирующая, проверенная в боевых условиях система, готовая к использованию в классе, полном детей.
Raspberry Pi версии 1 был разработан, чтобы быть недорогим и доступным, что также означало, что он был маломощным. Сначала Аарон попробовал прямой порт Overtone с помощью Clojure. Загрузка пространств имен заняла семь минут. «Реализация Overtone не была рассчитана на скорость при низкой мощности Raspberry Pi 1, — сказал Аарон, — но в то время у Raspberry Pi 1 была очень и очень плохая поддержка JVM. Например, числа с плавающей запятой не поддерживались аппаратно и поддерживались только программно. К счастью, с тех пор ситуация значительно улучшилась».
Аарон переключился на Ruby, который достаточно хорошо работал на оборудовании, а также был гибким. На самом деле, он настолько гибкий, что вы можете изменить сам язык в соответствии со своими потребностями. «Гибкие языки, такие как Ruby, можно встроить в ту область, в которой вы хотите работать», — сказал Ааром. «Таким образом, Sonic Pi можно рассматривать как взяв Ruby как кусок глины и превратив его в музыкальный инструмент».
Создать прототип оказалось несложно. На создание кода первой ранней версии ушло две недели. Графический интерфейс, язык, время выполнения — все было сделано быстро. «Это была очень, очень, очень простая система, — сказал Аарон. «Все, что он сделал, это издал звуковой сигнал».
Когда настоящие дети получили прототип, они поняли, как он работает, и захотели большего. «Что меня действительно удивило на занятиях, так это то, что дети говорили: «О, это классный барабанный ритм или это классная басовая партия», — сказал Аарон. «И они говорили: «Как мне играть на барабанах одновременно с басом?» Система не была предназначена для этого. Этого нет в британской программе информатики. Но это был такой общий вопрос. Я подумал, что давайте просто добавим его».
С параллелизмом возникла большая внутренняя сложность. Это выявило некоторые фундаментальные трудности, с которыми компьютеры сталкиваются с точным временем. Как только он вводил несколько потоков, они быстро рассинхронизировались.
Все просто
Изначально Аарон использовал POSIX Sleep для управления временем. Но, как и большинство запрограммированных операций перехода в спящий режим, эта операция заставляла компьютер переходить в спящий режим на минимум время T, а затем выполнять следующую операцию, когда внутренний языковой планировщик активирует ее. «Компьютеры в настоящее время ориентированы только на пропускную способность, а не на задержку и время», — сказал Аарон. Каждая задержка приводила к тому, что по ходу песни все ухудшалось и ухудшалось время.
Аарон решил встроить эту внутреннюю задержку в команды сна. Каждый раз, когда вы вызываете команду сна, она отслеживает, сколько времени требуется для восстановления. Вместо того, чтобы спать в течение времени T, он бездействует в течение T минус любое дополнительное время, которое потребовалось для предыдущих вычислений. Он автоматически компенсирует дрейф. SuperCollider, синтезатор, который фактически воспроизводил звуки, мог принимать метки времени. Это означало, что язык будет немного опережать звуки, которые он производит. «Это не управление временем, — сказал Аарон, — это управление идеей времени, когда что-то должно произойти, а затем установка их немного раньше времени, чтобы синтезатор затем соблюдал эти тайминги, насколько это возможно».
Вся кропотливая работа по созданию этого тайминга практически незаметна для конечного пользователя. Для них это простой набор живых циклов, понятных каждому. «Первоначальные ограничения или проблема, — сказал Аарон, — которая заключалась в том, чтобы построить что-то, что могло бы привлечь 10-летних детей к уроку информатики, — это невероятный набор проектных ограничений, подходящих не только для этой среды, но и для ночных клубов.Упрощение обучения Sonic Pi в классе также упрощает работу после того, как вы выпьете пива и будете на сцене в 2 часа ночи в ночном клубе».
Этот образ мышления закрепился у него в паре других сложных функций. Вдохновленный драм-н-бейсом 80-х и 90-х, Аарон хотел иметь возможность сделать паузу и разделить ее на отдельные сэмплы ударных. Он начал с решения, которое занимает шесть строк кода, но в течение следующего года переосмысливает его и использует всего четыре символа. «Это действительно простая идея, — сказал Аарон. «Это одна из тех вещей, когда, как только вы это понимаете, вы понимаете: «Ах, я должен был сделать это все время», и это означает рассматривать брейк барабана как список барабанных ударов». Теперь вы можете сделать перерыв в Amen, быстро обработать его и обращаться с ним как с массивом.
Другим прорывом стала система, упрощающая применение таких эффектов, как реверберация или дисторшн. Как гитарист, я должен купить педаль или педальный блок, проложить кучу проводов и жить со своим выбором. В Sonic Pi я просто заключаю блок with_fx: реверберация или любой другой эффект, который я хочу. «Каждый раз, когда он видит эту команду реверберации, — сказал Аарон, — он идет и покупает новую педаль, устанавливает этот эффект или кодирует его в памяти, а затем выполняет его, автоматически выполняя все подключения». Система выясняет, когда вы закончили с эффектом, собирает его в мусор. Вам не нужно беспокоиться об ограничениях, использовании памяти или ее освобождении.
"Это очень весело, но мыслительные процессы и усилия, необходимые для того, чтобы превратить сложную идею в простую форму, требуют усилий", – сказал Аарон. «Но как только вы добились этого, у вас есть что-то, что не только просто объяснить, поддерживать и использовать, но что вы можете использовать, чтобы придумывать новые идеи и создавать новые вещи гораздо эффективнее, чем вы. мог со старыми вещами».
Бит продолжается
Фонд Raspberry Pi поддерживал Аарона в течение нескольких лет, и за это время он смог добавить множество функций, а также поработать над основами. «Я использую Ruby, который, как известно, не является самым эффективным языком», — сказал Аарон. Много усилий было потрачено на кэширование повторяющихся сообщений и обеспечение очень эффективной базовой связи с SuperCollider, синтезатором и MIDI-движком в рамках ограничений Ruby. Но даже с кэшированием синтезатор с активными MIDI-часами может завалить систему большим количеством сообщений о времени.
Есть ограничения, поэтому сейчас он перестраивает основу низкого уровня в Rust. Благодаря более высокой пропускной способности, которую обеспечивает Rust, Аарон видит возможность промежуточного языка в Sonic Pi, чего пользователи никогда не видят, но в который компилируются любые инструменты, ориентированные на пользователя. «Это означает, что Sonic Pi может стать целевой платформой для других экспериментальных языков», — сказал Аарон.
Он работал с Тором Магнуссоном из Университета Сассекса, создателем Ixi lang, еще одного живого языка программирования для музыки, над интерфейсом для Sonic Pi. «Она очень минимальна по объему, но очень быстра в мастерской, чтобы заставить людей создавать мелодии и ритмы», — сказал Аарон. «Очень мало нажатий клавиш. Мы создали минимальную версию Икси Ланга, которая будет в следующей версии Sonic Pi».
Укрепляя фундамент, Аарон видит возможность создания более высокоуровневых библиотек на его основе, даже таких диких вещей, как цепочка Маркова и помощь ИИ. Укрепление основ тайминга и событий, гарантирующих, что один и тот же код каждый раз воспроизводит одну и ту же музыку, означает, что высокоуровневые функции останутся простыми и понятными. «Если я создам слишком много вещей на высоком уровне, все просто рухнет», — сказал Аарон. Это важно, потому что в будущем Аарон планирует добавить распределенный джем, чтобы вы и ваш друг могли программировать в разных почтовых индексах и играть под одну музыку.
Музыка++
Многие люди использовали Sonic Pi для создания очень впечатляющих музыкальных проектов. В Японии существует целая сцена создания музыки в VR-пространствах с помощью Sonic Pi. Женщина из Индии создает на нем традиционную музыку. Женщина в Канаде сделала целую оперу. А один парень из Финляндии пишет невероятно хэви-метал, используя точное время для рока с двойными педалями бочки и сумасшедшим тактовым размером.
Сам Аарон тоже довольно много выступает, как на музыкальных фестивалях, так и на конференциях по программированию. Поскольку финансирование Raspberry Pi Foundation закончилось, это стало одним из его основных источников поддержки для продолжения разработки Sonic Pi. Он даже выступал в Королевском Альберт-Холле вместе с оркестром и вокалистами. «Быть признанным на таком же уровне — это настоящее достижение для меня», — сказал Аарон. «Мне всегда казалось очень странным, что когда я приходил в школу, учителя информатики были очень взволнованы и говорили: «Да! Это инструмент, которому мы можем обучить наших детей». В то время как учителя музыки часто говорили: «О, это не настоящий музыкальный инструмент».
Даже Аарон сомневался, что это может стать настоящим творческим выходом, заменив его основной инструмент, Обертон. Он был создан для детей и, возможно, не такой мощный, но входной барьер был намного ниже. «Хотя в техническом смысле он был намного менее мощным, — сказал Аарон, — это был намного более мощный инструмент, потому что было намного проще перейти от идей в моей голове к коду на экране, музыке из динамиков. На это ушли минуты, а на Overtone — недели».
Если вы хотите попробовать его, перейдите на веб-сайт Sonic Pi. Там есть активное сообщество, и Аарон проделал большую работу, чтобы сделать учебные пособия эффективными и действенными. Если вам нравится то, что он делает, подумайте о том, чтобы сделать пожертвование его Патреону или нанять его для вашей конференции. И если вы хотите сделать несколько сладких джемов в своей спальне, скачайте, сочините и поделитесь своими мелодиями в комментариях.
Подкаст Stack Overflow – это еженедельная беседа о работе в области разработки программного обеспечения, обучении программированию, а также об искусстве и культуре компьютерного программирования.
Связанные
подкаст от 29 октября 2021 г.
Время от времени появляются новые языки программирования, но есть кое-что нестандартное — музыкальный автомат, если быть точным! Если вы когда-нибудь надевали (или хотя бы думали об этом) кожаные колготки, кожаную куртку, с топором на шее, распевая свои любимые номера, вам, вероятно, это понравится!
Кто-то… нет, не Nickelback создал язык, предназначенный для создания компьютерных программ с использованием текстов песен! На языке это называется… задержи дыхание… Рок-звезда!
Скажи, что?? Ты шутишь, что ли? Это какая-то шутка/фейковые новости?
Нет, это не так. Это так же реально, как Курт пишет те песни, которые она пела в Hole! 😉 Rockstar находится под сильным влиянием лирических условностей хард-рока и пауэр-баллад 1980-х годов. И кто-то, кто создал его, — Дилан Битти, Microsoft MVP для Visual Studio и технологий разработки. Неудивительно, что Дилан сам музыкант. Rockstar уже набирает популярность! Вы посмотрите на рост на Github и обсуждения на Reddit?
Вы спрашиваете, зачем Дилану это делать? Потому что, как сказал бы Ван Хален, «все хотят немного»! Ну, он подумал, что было бы здорово иметь такой язык, где вы можете использовать свои любимые тексты песен, чтобы свести с ума свой компьютер и рекрутеров! В основном это часть движения, направленного на то, чтобы заставить рекрутеров использовать термин «программисты Rockstar». Я сказал движение?
Rockstar поддерживает уникальную функцию, известную как поэтические литералы, которые позволяют программистам одновременно инициализировать переменную и выражать свое сокровенное беспокойство. Уверен, Билли Джо Армстронг и Эксл Роуз это обязательно оценят!
Вот как выглядит пример кода Rockstar, решающий проблему fizzbuzz:
Начнем с минималистичной версии:
А теперь то же самое в идиоматическом коде Rockstar:
О да, я упоминал, что Rockstar наплевать на отступы. Кроме того, это препятствует использованию комментариев. Почему? Потому что это рок-н-ролл, детка! Пусть тот, кто хочет узнать смысл, откроет его самостоятельно! Вот это хардкор!
Чтобы объявить переменную в Rockstar, вы просто используете обычное слово, такое как "a, an, the, my or your" в качестве предисловия и любое уникальное имя (например, "Suzanne").
Для типов можно использовать такие слова, как "таинственный", означающий, что значение не присвоено, или "ничего/нигде/никто" для нулевого значения. Вы можете назвать свою переменную «em», чтобы увеличить ее, вы бы использовали «построить их», а чтобы уменьшить, вы бы использовали «сбить их». Теперь, если это не круто, вы скажите мне, что это такое! Как и в Ruby или Python, переменные имеют динамический тип, и вам не нужно объявлять их перед использованием.
Это еще не все! Для ввода-вывода вы можете использовать такие слова, как «слушать» или «кричать», «шептать» или «кричать». Пару дней назад кому-то довелось проверить возможности обработки ошибок Rockstar: если вы случайно ввели «!love» в качестве свойства, оно вернет «вы даете !love дурное имя».
Интересно, что было бы, если бы мы просто напечатали текст Sweet Child o’ Mine. Тем не менее, Github (Стреляющие) Звезды растут как сорняк (каламбур) 😉 Я предлагаю вам не переставать верить в это и проверить этот язык! И не забудьте рассказать нам в комментариях, как это Rock(ed) You Like a Hurricane или еще лучше, Shook Me You All Night Long! 😉
В основе того, что отличает разработку программного обеспечения от других форм разработки, лежит контроль версий. В реальном крафте нет резервных копий. В программном обеспечении очень легко создать рабочую среду, в которой почти каждое ваше решение обратимо.
Если вы понимаете, что потратили весь день на создание неправильного продукта, потому что владелец продукта забыл упомянуть, что экспорт данных будет быть XML, а не CSV, ничего страшного; вы можете вернуться к более ранней фиксации, удалить файлы и заполнить новые.
Но представьте на секунду, что написание программного обеспечения похоже на сборку гитар. Вы не можете использовать backspace, вы не можете «отменить», нет контроля версий и нет резервных копий. Каждая вещь, которую вы делаете, каждое решение, является постоянным. Если вы идете компилировать свое решение и там есть ошибка, вам нужно снова написать ее по памяти. Что это звучит не очень весело.
Стань героем Git! Имея под рукой наглядный график коммитов GitKraken, вы станете рок-звездой своей команды разработчиков.
Спектр рабочих процессов
Вы можете представить все это как спектр рабочих процессов. На одном конце этого спектра находится полностью цифровой неразрушающий рабочий процесс. Если у вас достаточно места на жестком диске, вы можете сохранить каждую версию каждого отдельного элемента проекта. Каждое решение можно отменить.
С другой стороны, вы собираете гитары из ограниченного количества древесины. Если вы допустили ошибку, вы провалили весь проект.
Есть целые отрасли, которые переместились из одного конца спектра в другой. 30 лет назад создание фильма было чем-то вроде изготовления гитары. Фильмы снимались на пленку. Кинопленка продавалась стопами, так что каждая минута вашего фильма занимала около 90 футов пленки. Вы должны были выяснить, сколько метров отснятого материала вам нужно, прежде чем вы начнете снимать. Через пару недель съемок у вас были бы все эти канистры с пленкой без резервных копий. Монтаж фильма был разрушительным процессом, когда вы находили нужную сцену, разрезали пленку лезвием бритвы и прикрепляли ее к концу предыдущего кадра с помощью скотча. Это невероятно тонкая и кропотливая работа. Сегодня некоторые режиссеры по-прежнему настаивают на съемке на пленку, но даже в этом случае пленку обычно оцифровывают перед тем, как приступить к монтажу.
Однако подавляющее большинство кино- и телепродукции перешли на другой уровень и теперь снимаются в цифровом формате. Весь процесс является нелинейным и неразрушающим. Музыка почти такая же. MacBook за тысячу долларов сегодня имеет больше возможностей для редактирования, чем студия Abbey Road в 1970-х годах.
Этот цифровой конец спектра дает вам свободу. Это дает вам возможность пробовать разные вещи, экспериментируя с идеями. А если не понравится, то можно просто откатиться. Когда вы учитесь, эта способность исследовать и экспериментировать просто фантастична.
Время до Git
До изобретения Git у вас было несколько вариантов управления версиями. У вас была система параллельных версий, CVS и такие инструменты, как Microsoft Visual SourceSafe. Эти подходы не могли справиться с конфликтами слияния Git, поэтому он избегал их, гарантируя, что только один человек в каждый момент времени может редактировать файл. Чтобы отредактировать файл в одной из этих систем, вы должны были извлечь его, и никто другой не мог работать с ним, пока вы его извлекали. Были некоторые коммерческие решения, такие как BitKeeper и Perforce, которые изначально пытались решить эти проблемы.
У вас также была Subversion. Разработчики определенного поколения впервые столкнулись с такими понятиями, как ветки, слияния и теги, в Subversion. Это принесло совершенно новую модель сотрудничества, но имело два действительно существенных недостатка. Во-первых, время от времени вы сталкиваетесь с чем-то, что называется «конфликтом дерева», когда одна из ваших ветвей расходится так далеко от ствола, что Subversion больше не может решить, как собрать их вместе. Другим случайным разочарованием в Subversion было странное утверждение, что история должна происходить в хронологическом порядке. Оказывается, переписывать историю на самом деле очень полезно.
Застряли в старых временах SVN? Ознакомьтесь с этими пошаговыми инструкциями по переходу на Git из SVN.
Путешествие во времени с Git
Возможность путешествовать во времени или работать нелинейно — одно из главных преимуществ Git.Свобода вносить изменения в несколько ветвей, а затем применять эти изменения в порядке, который имеет смысл, чрезвычайно убедительна. Разработка программного обеспечения — это процесс открытия; к тому времени, как вы закончите что-то внедрять, вы часто узнаете целую кучу вещей, которые вы хотели бы знать, когда начинали.
Ошибки в Git неизбежны, но с помощью волшебной кнопки "Отменить/Повторить" в GitKraken вы можете отменить такие действия, как фиксация, проверка и т. д., всего одним щелчком мыши.
Git и язык программирования Rockstar
Прочитав это, вы можете задаться вопросом, делает ли язык программирования Rockstar что-то особенно интересное с Git. Это причудливый эзотерический язык, на котором все ваши программы также являются песнями в стиле хэви-метал, что позволяет вам писать код, который также относится к 80-м годам, хэви-металу, пауэр-балладам, текстам песен.
Хотя язык программирования Rockstar сам по себе довольно странный, кодовая база представляет собой просто проект JavaScript с документацией в уценке. Однако есть кое-что, что Rockstar делает немного необычно. Rockstar — это на самом деле два репозитория; оба размещены на GitHub и имеют открытый исходный код. Одним из таких репозиториев является основной репозиторий языка программирования Rockstar, который включает в себя спецификацию языка, интерпретатор и набор тестов.
Но есть и другие способы повторного использования кода в нескольких местах. Было бы сделать это с помощью ветвей, ветвей-долгожителей. Вы можете подумать, что это несколько спорно, и есть люди, которые думают, что ветки функций должны существовать только пару часов, а есть люди, которые думают, что у вас вообще не должно быть никаких веток!
В Git есть несколько стратегий ветвления Git на выбор, поэтому убедитесь, что вы нашли рабочий процесс, который лучше всего подходит для вас и вашей команды.
Кейс для долгоживущих веток Git
Есть сценарий, в котором можно рассмотреть возможность использования веток Git довольно необычным способом: проведение семинара по программированию. За два дня практического кодирования студенты создают такие вещи, как распределенные системы или компоненты JavaScript. Во время семинара вы должны уметь запускать, объяснять и обосновывать каждую строку примера кода.
Код семинара в идеале должен работать на машинах, с которыми вы никогда раньше не сталкивались. Код мастерской сложен, потому что у него нет выпускных версий, а вместо этого он должен существовать в нескольких состояниях одновременно. В каждом репозитории семинара есть полдюжины ветвей, которые представляют состояние кода в определенный момент в течение двухдневного семинара.
Представьте себе двухдневный семинар. Если во время этого семинара вам нужно обновить ссылку или исправить ошибку, это нельзя просто исправить в финальной версии проекта. Его нужно исправить везде, где это актуально. Ветки здесь не действуют как ветки функций, которые в конечном итоге будут объединены обратно в `main`. Каждая ветвь — это долгоживущее окно в последнюю версию возможного будущего, поскольку код развивается и развивается в ходе семинара. Git делает это возможным даже концептуально.
Создавайте произведения искусства с помощью Git
Git не просто дает вам новый способ делать что-то, он дает вам новый способ думать о вещах. Как только вы по-настоящему вникнете и начнете использовать то, что Git действительно может вам позволить, вы обнаружите, что удивляетесь, как раньше писали код без него.
Читайте также: