E3 Установка Linux и базовые навыки работы
Установите операционную систему Linux
Мы повторно используем содержимое хендаута PA. Пожалуйста, установите операционную систему Linux в соответствии с PA0.
Получите код фреймворка «One Student One Chip».
Когда вы будете читать хендаут PA0 и дойдёте до раздела о получении кода фреймворка PA, там появится информационный блок с просьбой вернуться к этому разделу хендаута.
Сначала, пожалуйста, добавьте SSH-ключ к своему аккаунту GitHub. За подробными инструкциями — STFW. Затем используйте следующую команду, чтобы клонировать код фреймворка «One Student One Chip»:
git clone -b master git@github.com:OSCPU/ysyx-workbench.git
После того как вы клонируете репозиторий, вы можете вернуться к соответствующему разделу хендаута PA и продолжить чтение. Однако обратите внимание на следующие моменты:
- Считайте
ysyx-workbenchкаталогом проекта, о котором говорится в хендауте PA — другими словами, воспринимайте ics2022 в хендауте PA как заменённый наysyx-workbench - При изменении номера студента и имени в
ysyx-workbench/Makefileвы можете оставить номер студента неизменным до тех пор, пока не завершите подготовительный этап. Эта туда-обратная возня может показаться неудобной, но мы делаем это намеренно, потому что хотим управлять документацией так же, как кодом. Другими словами, хендаут «One Student One Chip» должен ссылаться на хендаут PA, поэтому мы сводим к минимуму упоминания «One Student One Chip» в хендауте PA и помещаем весь связанный материал в хендаут «One Student One Chip». Несоблюдение этого принципа не только затрудняет для нас поддержку хендаутов, но и затрудняет для людей понимание того, где искать нужный материал при чтении хендаутов.
Установка ОС — самая простая тренировка самостоятельного решения проблем
Если вы устанавливаете и используете Linux впервые, у вас может возникнуть немало проблем. Не волнуйтесь: поскольку Linux используется по всему миру, с высокой вероятностью проблемы, с которыми вы столкнулись, уже встречались другим людям, и поиск по ключевым словам в интернете, скорее всего, приведёт вас к решению.
Примите правильный настрой и извлеките максимум пользы из упражнения.
На самом деле вы всегда можете обойти эти упражнения, проявив немного изобретательности, например:
- Используя чужой образ виртуальной машины или скрипт установки и настройки в один клик, чтобы мгновенно выполнить задания этого раздела.
- Найдя в интернете так называемый «гайд по PA» и радуясь, что вам не нужно разбираться самостоятельно.
- Раздобыв у кого-то основной код или код предыдущего набора «One Student One Chip» и называя это учёбой.
Некоторые студенты подумают: «Почему мне нельзя воспользоваться чужими гайдами и кодом? Я же знаю, что делаю!» Но с точки зрения тренировки «понимание» и «самостоятельное выполнение» — это очень разные вещи: знаете ли вы, почему мастера поступают именно так, а не иначе? В сколько ловушек уже попадали мастера и понимаете ли вы, в чём смысл этих ловушек? Вам стоит задуматься о том, что вы теряете, просто копируя чужое решение, по сравнению с тем, что вы могли бы приобрести. Представление о том, что «скопировать правильное решение — это хорошо», — лишь способ занизить собственные ожидания, и оно не соответствует ценностям, которые мы продвигаем.
На самом деле, если вы новичок, эти маленькие хитрости могут нанести разрушительный урон вашей подготовке:
- Вы обращаетесь к материалам, к которым не должны обращаться на этом этапе, и они становятся верхней границей вашего обучения, потому что вы едва ли осознаёте, что в них не так, из-за чего вам почти невозможно сделать лучше, чем они.
- Кроме того, это создаёт у вас иллюзию, что «я хорошо учусь, у меня хорошо получается учиться», из-за чего вы перестаёте стараться и не узнаёте, как сделать лучше.
- Хуже того, вы не получаете нужную вам сейчас подготовку, а в будущем вам постоянно будут встречаться новые задачи, для которых не будет ни шпаргалки, ни готового кода, и вы не сможете их решить.
Но, честно говоря, у команды TA почти нет эффективного способа запретить людям хитрить. На самом деле это скорее вопрос того, чтобы осознать это и добровольно придерживаться этого от всего сердца: когда вы находите какие-нибудь так называемые шпаргалки, вам следует сказать себе, что «чтение их снизит эффективность тренировки», а затем добровольно отвергнуть этот соблазн и настоять на самостоятельном выполнении экспериментов. Это похоже на то, как мы все воспринимаем академическую честность: вы знаете, что списывать на экзамене — плохо, и поэтому берёте на себя обязательство сдать экзамен самостоятельно.
Действительно, академическая честность выходит далеко за рамки простого несписывания на экзаменах, и мы рекомендуем прочитать трактовку академической честности от MIT, особенно раздел «Академическая честность при написании кода». Здесь мы приводим несколько примеров формулировок.
- Когда в хендауте просят «реализовать X», вы должны реализовать X самостоятельно, не используя повторно никакие внешние материалы.
- Делиться кодом и обмениваться тестовыми примерами — недопустимо.
Вам может показаться, что эти требования чрезмерны, но в конечном счёте эти рекомендации призваны привести вас к тому результату, которого вы хотите: не забывайте, что вы учитесь, чтобы становиться лучше, а не сдаёте готовую программу. Если вы будете придерживаться этого, вы сможете стать настоящим профессионалом.
Можно ли использовать другой дистрибутив Linux?
Мы не требуем обязательного использования конкретного дистрибутива Linux, поэтому нам часто задают вопросы вроде «повлияет ли использование дистрибутива xxx на мои эксперименты». Прежде всего, пожалуйста, прочитайте советы по дистрибутивам в PA0. Помимо этого, мы, вероятно, не сможем дать однозначный ответ, потому что мы, вероятно, его не использовали.
На самом деле, если вы решите использовать другой дистрибутив, вам стоит быть готовыми самостоятельно решать новые проблемы.
Изучите базовые навыки работы с Linux
Мы настоятельно рекомендуем серию учебных материалов MIT по инструментам Linux — The Missing Semester of Your CS Education. Изучив эти курсы, вы узнаете, как эффективно выполнять различные задачи с помощью инструментов Linux, что значительно повысит вашу продуктивность.
Обязательные темы:
- Course overview and the shell
- Shell Tools and Scripting
- Editors (Vim)
- Data Wrangling
- Command-line Environment
- Version Control(Git)
Сюда входит чтение конспектов лекций и выполнение упражнений. Кроме того, видеозаписи лекций доступны на Bilibili для вашего ознакомления.
Дополнительные материалы для изучения Linux
- The Art of Command Line — эта статья обобщает многие часто используемые инструменты командной строки и стоит того, чтобы её прочитать.
- Linux101, написанный Ассоциацией пользователей Linux Университета науки и технологии Китая. Вы можете выбрать интересующие вас разделы для чтения.
Онлайн-сайт Compiler Explorer отлично подходит для разработки программ с одним файлом исходного кода, но становится неудобным при разработке программ с несколькими файлами исходного кода или при необходимости координировать несколько программ для выполнения более сложных задач. После установки системы Linux мы перенесём среду разработки на Linux и будем использовать некоторые полезные инструменты, доступные в Linux, чтобы помочь в углублённом изучении языка C, закладывая основу для настройки среды разработки для последующих заданий.
Углублённое изучение языка C в Linux:
В Linux выполните упражнения 0–22, 24–25 и 27–33 из Learn C the Hard Way. Вам нужно скопировать пример кода в Linux, скомпилировать и запустить его, а также, опираясь на текст, применить RTFSC, чтобы разобраться в примере кода, и выполнить соответствующие дополнительные вопросы.
Обратите внимание, что упомянутые выше упражнения являются частью защиты допуска. Если вы застряли на каких-то вопросах, вы можете воспользоваться STFW или задать вопрос в групповом чате подготовительного этапа.
Хотя темы по языку C в этом учебнике похожи на темы из предыдущего учебника «One-stop Learning for Linux C Programming», он также включает знакомство с различными инструментами, такими как Makefile и Valgrind, а также некоторые концепции программирования, которые стоит изучить. Всё это будет очень полезно всем в дальнейшей работе над проектом, и определённо стоит попрактиковаться в этом на Linux. На самом деле, если ваши базовые знания C достаточно прочны, вам не стоит тратить слишком много времени на чтение кода; напротив, если при чтении кода у вас возникает много трудностей, вам стоит оценить эту возможность как способ выявить пробелы в вашем понимании.
