×
🌤️ А вот и итоги! Лето подходит к концу, а вместе с ним завершился и наш первый большой ивент — победители определены, результаты уже опубликованы.

Готовый перевод Summer Rain Autumn Glow Winter Snow Night Cold / Летний дождь и осенний туман: Взаимное спасение: Глава 4

(Ctrl + влево) Предыдущая глава   |    Оглавление    |   Следующая глава (Ctrl + вправо)

Первая неделя учебы, а в 121-й комнате уже пришли к единому мнению: курс Сяньлань по языку Си — это подземелье адского уровня.

Ранним утром в среду шестеро парней вышли из общежития, когда небо еще было серовато-синим. В Линьаньском сентябре по утрам уже чувствовалась прохлада. Е Чэньгуан был в тонкой темно-серой куртке, застегнутой до половины. Он шел позади всех, прислушиваясь к спорам соседей.

Земляк мне рассказывал, что в прошлом году из тридцати человек в их группе сорок... то есть пятнадцать завалили, — Ло Гуанпин понизил голос, и в коридоре гулко отразились шаги. — Преподавателя Чжао зовут «Алая ладонь гонит чистые волны», знаете, что это значит? Алая ладонь означает жесткую расправу, а чистые волны — что завалят всех начисто.

Гао Икай шел рядом с Ло Гуанпином и от этих слов рассмеялся: — Значит, сегодня мы идем прямиком в чертоги Ямы. — Он замолчал, с трудом сдерживая смех. — Как думаете, если нас реально завалят, хватит ли денег за пересдачу на столько походов в шашлычную?

Никто не поддержал его плоскую шутку. Цао Цицзюнь зелнул, под его глазами залегли темные круги: — Я вчера до часу ночи готовился, но эту тему с указателями так и не понял.

Указатели — это же только вторая глава, дальше еще структуры данных пойдут, — спокойно произнес Цзинь Цзяньцзюнь. Он шел с рюкзаком за плечами, шаг его был уверенным. — Но готовиться заранее все равно лучше, чем нет.

Хэ Чао шел в полушаге впереди Е Чэньгуана, обернулся и бросил: — Чэньгуан, а ты что думаешь?

Е Чэньгуан машинально коснулся большим пальцем ремешка электронных часов на левом запястье. Услышав вопрос, он поднял взгляд, и его глаза упали на утренний свет, пробивавшийся в конец коридора.

— Завалить нельзя, — ответил он. Голос прозвучал тихо, но отчетливо.

Хэ Чао кивнул и больше ничего не спрашивал.

Шестеро парней пересекли площадку перед корпусом общежития и по узкой дорожке направились к новому учебному корпусу. Листья камфорных деревьев по обочинам еще зеленели, но в воздухе уже чувствовалась сухая осень.

Е Чэньгуан смотрел на спины идущих впереди соседей. Свойственное началу учебы в университете напряженное ощущение отчужденности, после той поездки на шашлыки и лодках на озере Циншаньху, уже немного отступило. Но сейчас на него давило другое, гораздо более практичное чувство срочности.

Ему нельзя завалить предмет, нужно обязательно получить стипендию.

Занятие по языку Си проходило в большой аудитории на третьем этаже нового корпуса. Большинство мест уже были заняты студентами, в воздухе стоял запах типографской краски от новеньких учебников и легкий гул голосов. Шестеро из 121-й комнаты заняли места ближе к середине, ближе к проходу.

Е Чэньгуан сел у прохода, положив на стол учебник и тетрадь. Толстый «Язык программирования Си» в черной обложке лежал перед ним. Он открыл оглавление, и его взгляд скользнул по названиям глав: типы данных, операторы, управление потоком, массивы, указатели, структуры, работа с файлами... Каждая глава казалась хранилищем неизведанных испытаний.

Ровно в восемь дверь аудитории отворилась.

Вошел преподаватель средних лет, ступая уверенно и твердо. Он был в темно-синей рубашке с закатанными до локтей рукавами, в руке он держал черный портфель. Лицо строгое, в уголках глаз — сеточка мелких морщин. Стоило его взгляду обвести аудиторию, как прежний гомон мгновенно стих.

Чжао Хунбо поставил портфель на кафедру и не стал говорить сразу. Он окинул аудиторию взглядом, задерживаясь на лицах некоторых студентов. Е Чэньгуан почувствовал, как этот взгляд скользнул по нему, и машинально опустил глаза на раскрытый учебник.

— Я Чжао Хунбо, в этом семестре веду у вас язык Си, — его голос был негромким, но каждое слово звучало отчетливо, неся в себе неизбежный авторитет. — Учебная программа и критерии оценивания уже выложены в чат, кто не читал — читайте сейчас.

По аудитории прокатился шелест доставаемых телефонов.

— Сложный ли этот предмет? — Чжао Хунбо сделал паузу, дожидаясь, пока стихнет шум. — Сложный. В прошлом году процент заваливших составил сорок восемь процентов, почти половина. Почему сложно? Потому что язык Си — это основа, но основа не значит простота. Если не понять до конца указатели, управление памятью и структуры данных, это отразится на всех последующих профильных предметах.

Он говорил без лишних эмоций, просто и спокойно констатируя факты. Но именно эта невозмутимость делала атмосферу в аудитории еще более тяжелой.

У меня есть три правила, — Чжао Хунбо поднял три пальца. — Первое: никаких опозданий. Три опоздания — и все баллы за посещаемость сгорают. Второе: задания выполняются самостоятельно, за списывание оба варианта получают ноль. Третье: на вопросы в классе нужно отвечать обязательно. Не знаете — так и говорите, что не знаете, не тратьте чужое время.

Он опустил руку и включил проектор: — Начинаем занятие.

Е Чэньгуан открыл тетрадь и на первой странице вывел дату и слова: «Язык Си — Чжао Хунбо». Кончик ручки зашуршал по бумаге, он писал медленно, каждая буква была аккуратной. Это движение немного успокоило его изнутри.

Манера преподавания Чжао Хунбо соответствовала его характеру — прямолинейно и эффективно. Никаких лишних предисловий, никаких шуток для разрядки атмосферы, только четкое объяснение понятий и примеры кода на доске. Он писал быстро, мел постукивал по доске, выбивая дробь, и строки белого кода разворачивались одна за другой, подобно какому-то строгому ритуалу.

Переменная — это участок памяти, используемый для хранения данных, — Чжао Хунбо повернулся и постучал мелом по доске. — Но имя переменной — это лишь ярлык для данного участка, а сами данные хранятся по адресу в памяти. В этом и заключается смысл указателей.

Он остановился и посмотрел в зал: — Это понятие крайне важно, без понимания указателей можно считать, что язык Си вы не учили.

В аудитории стояла тишина, был слышен лишь шелест ручек по бумаге. Е Чэньгуан набросал в тетради простую схему: переменная, адрес памяти, указатель. Его почерк был разборчивым, линии чистыми, рядом шла краткая поясняющая сноска.

Чжао Хунбо продолжил объяснять базовые операции с указателями: присваивание, взятие адреса, разыменование. Он говорил быстро, но логика была прозрачной, Е Чэньгуан успевал следить за ходом мысли. С понятием указателей он столкнулся еще в старшей школе, когда самостоятельно учил программирование: пусть и поверхностно, но чужим оно для него не было.

А теперь взгляните на этот пример, — Чжао Хунбо написал на доске кусок кода. — Объявим целочисленный указатель p, укажем ему на переменную a. Затем через p изменим значение a. Кто может сказать, каким станет значение a после выполнения этого кода?

Он окинул взглядом аудиторию, задерживаясь на лицах студентов.

Е Чэньгуан опустил голову, избегая прямого зрительного контакта с преподавателем. Эта привычка появилась у него с детства: выступая перед публикой, он всегда смотрел в определенную точку, а не прямо на того, кто задал вопрос. Бабушка говорила, что это некрасиво, но побороть себя он не мог. Прямой взгляд в глаза другим людям вызывал у него странное чувство незащищенности.

— Е Чэньгуан.

При звуке своего имени Е Чэньгуан чуть сильнее сжал пальцами корпус ручки. Все взгляды в аудитории сошлись на нем, и он физически ощутил тяжесть этих устремленных на него глаз. Он встал, двигаясь плавно, и устремил взгляд на коробочку с мелом у края кафедры.

Отвечай, — голос Чжао Хунбо звучал абсолютно ровно.

Е Чэньгуан промолчал секунд две-три.

В аудитории стояла такая тишина, что было слышно, как ветер за окном шевелит листья. Он быстро припомнил код с доски, в голове уже прокрутился процесс выполнения: переменная a инициализирована десяткой, указатель p указывает на ее адрес, через p значение меняется на дватцать, так что в итоге a равна двадцати.

Но как только он собрался заговорить, Чжао Хунбо добавил: — А если после этого кода я определю еще один указатель q, заставлю q тоже указывать на a, а затем снова изменю значение через q, к каким проблемам это приведет?

Задача изменилась. Это был уже не просто результат выполнения кода, а потенциальная проблема при обращении нескольких указателей к одному и тому же участку памяти.

Ло Гуанпин внизу тихо ахнул, звук был совсем слабым, но Е Чэньгуан услышал.

Большой палец Е Чэньгуана снова нервно дернул ремешок часов.

Этот вопрос выходил за рамки текущей темы, Чжао Хунбо еще не дошел до ситуации с множественными указателями. Но Е Чэньгуан знал ответ, вернее, знал возможные варианты ответа.

Возникнет проблема согласованности данных, — заговорил Е Чэньгуан. Голос был негромким, но отчетливым. — Если и p, и q указывают на a, и мы меняем значение через один из указателей, то при разыменовании другого мы получим уже измененное значение, и само по себе это проблемой не является.

Он сделал паузу, собираясь с мыслями: — Но если p и q находятся в разных функциях или разных потоках и пытаются одновременно изменять один и тот же адрес памяти, может возникнуть состояние гонки. Впрочем, это тема более продвинутая, многопоточность мы пока не проходили.

В аудитории стало еще тише.

Е Чэньгуан чувствовал, что все взгляды пригвоздили его к месту, включая взгляд Чжао Хунбо. Он по-прежнему не поднимал головы и просто продолжал: — К тому же, если указатели используются небрежно — например, после освобождения памяти указатель не обнуляется, — другие указатели могут стать висячими. Доступ к недопустимой памяти приведет к аварийному завершению программы.

Он закончил.

Лаконично, прямо, без лишних пояснений. Обо всем этом он читал в обсуждениях на форумах, когда учился программировать сам: с практикой он не сталкивался, но концепция была ясна.

На лице Чжао Хунбо не отразилось ни малейшего одобрения. Он лишь кивнул — едва заметным движением.

Садись, — сказал он и повернулся обратно к доске, продолжая писать. — О проблемах, упомянутых этим студентом, мы подробно поговорим в следующих главах, а пока вернемся к основам.

Садясь на место, Е Чэньгуан почувствовал, что спина слегка вспотела. Не от напряжения, а от отходняка после предельной концентрации. Хэ Чао украдку показал ему большой палец — быстро, так что почти никто не заметил. Цзинь Цзяньцзюнь споро записывал что-то в тетрадь, кончик его ручки двигался с бешеной скоростью.

Чжао Хунбо продолжал лекцию так, будто заданный вопрос был лишь дежурной проверкой. Но Е Чэньгуан заметил, что, разбирая следующий пример, Чжао Хунбо снова бросил на него короткий, острый взгляд.

Этот взгляд не был знаком одобрения, скорее он походил на подтверждение какой-то догадки.

Оставшуюся часть пары Е Чэньгуан слушал еще внимательнее. Темп преподавателя был высоким, плотность информации зашкаливала — стоило чуть отвлечься, и потеряешь нить. Он заставлял себя концентрироваться, конспект пестрил записями, рядом с ключевыми терминами красовались звездочки.

Указатели, адреса, распределение памяти... Благодаря объяснениям Чжао Хунбо эти понятия постепенно прояснялись. Е Чэньгуан понял, что, при всей своей суровости, преподавать этот человек действительно умел. Он мастерски разбивал сложные концепции на простые шаги, логическая цепочка была цельной, без досадных провалов.

Когда зазвонил звонок на перемену, Чжао Хунбо как раз закончил последний пример. Он захлопнул учебник, подхватил портфель — движения были быстрыми и четкими.

Домашнее задание уже выложено в чате, сдадите в следующую среду, — бросил он и ушел с портфелем, больше ни на кого не взглянув.

После трех академических часов под большим давлением воздух в аудитории словно разом отпустило.

Студенты принялись собирать вещи, смешались звуки голосов, скрип отодвигаемых стульев, треск молний на рюкзаках.

Парни из 121-й комнаты окружили Е Чэньгуана.

— Ну ты выдал, Чэньгуан! — Ло Гуанпин хлопнул его по плечу с изрядной силой. — Я от одного этого вопроса чуть не обалдел: какие-то висячие указатели, состояния гонки... Ты где нахватался?

Е Чэньгуан чуть подался в сторону, уворачиваясь от чужой руки. Он не привык к телесным контактам, но ничего не сказал, только покачал головой: — Раньше кое-что читал.

Теперь «Алая ладонь» точно тебя запомнил, — с улыбкой сказал Гао Икай, хотя в его глазах читалось искреннее уважение. — Я слышал, преподаватель Чжао частенько отбирает студентов с хорошими навыками программирования на олимпиады, у тебя точно есть шанс.

Е Чэньгуан замер с раскрытым рюкзаком в руках. Олимпиада? Он об этом не думал. Но если это правда...

Не заглядывай так далеко, — вставил Хэ Чао спокойным тоном. — Это всего лишь первая лекция, хотя Чэньгуан сегодня и впрямь был на высоте.

Цзинь Цзяньцзюнь захлопнул тетрадь и поправил очки: — У тебя очень четкий ход рассуждений, я себе зафиксировал, вечером еще раз разберу.

Цао Цицзюнь зевнул: — Пошли, пошли, я жутко голоден, если пойдем в столовку сейчас, удастся ли отхватить нормальной еды?

Шестеро влились в поток студентов, покидавших аудиторию.

Коридор был забит возвращающимися с пар учащимися, гул голосов гулял под потолком. Е Чэньгуан шел посередине, слушал болтовню соседей и изредка вставлял короткие реплики. Он бросил взгляд на электронные часы на левом запястье: одиннадцать сорок, самое время идти в столовую.

Внутреннее напряжение от вопросов на уроке понемногу отпускало. Но в голове всплывала другая мысль — что все-таки означал тот самый последний взгляд Чжао Хунбо?

В столовой «Ицзинь» уже выстроились очереди.

Шестеро друзей из 121-й заняли длинный стол, бросили рюкзаки на стулья, чтобы забить места, и разошлись по раздачам. Е Чэньгуан взял порцию тушеных овощей, свинину в соусе и рис. Когда он вернулся к столу с подносом, остальные тоже подтянулись один за другим.

Какие у вас планы на выходные? — Цао Цицзюнь закинул в рот ложку риса и невнятно пробормотал: — Земляк говорил, возле школы открылся новый компьютерный клуб, компы мощные, не сходить ли?

Хэ Чао покачал головой: — Учеба только началась, лучше пока привыкнуть к ритму. Заданий по Си полно, а еще высшая математика, английский...

Да ладно, всего на вечер выберемся, — отмахнулся Цао Цицзюнь. — Труд должен чередоваться с отдыхом.

Ло Гуанпин подцепил палочками кусок мяса: — Мне на выходных надо звонить маме, она наверняка станет расспрашивать, как тут учеба. Кстати, вы слышали? Говорят, Чжао Хунбо раньше гонял студентов на Всекитайскую студенческую олимпиаду по программированию, они даже призовые места брали.

Гао Икай кивнул: — Я тоже слышал. Только для таких олимпиад нужна команда, по три человека, придется искать надежных людей.

Е Чэньгуан молча ел, тщательно пережевывая зелень. Он слушал болтовню соседей, а сам смотрел на рис в тарелке. Всекитайская олимпиада по программированию... Это название он слышал, вещь весомая и престижная. Если удастся поучаствовать, это определенно поможет в получении стипендии.

Но команда? Он машинально нахмурился. Он не умел работать в коллективе, а тем более — сам кого-то искать и предлагать объединиться. Когда он участвовал в олимпиадах по математике в школе, то всегда готовился в одиночку и сдавал все сам.

Чэньгуан, а ты бы хотел поучаствовать? — неожиданно спросил Хэ Чао.

Е Чэньгуан поднял голову и обнаружил, что остальные пятеро смотрят на него. Он отложил палочки, подумал немного и ответил: — Посмотрим по обстоятельствам.

Если ты пойдешь, точно справишься, — заявил Ло Гуанпин. — Сегодняшнюю задачку Чжао в нашей группе мало кто вообще с места сдвинул бы.

Е Чэньгуан промолчал. Он снова взял палочки и подцепил кусочек свинины. Мясо было мягким, в меру солено-сладким, но вкуса он почти не чувствовал. Мысль об олимпиаде тлела на дне души, точно скрытое под водой течение.

Стипендия — это то, что ему необходимо получить. Его отец, Е Цзяньго, работал на стройке, заработки были непостоянными, а бабушка уже старая и хворала. Четыре года учебы и жизни в университете влетали в копеечку, и стипендия помогла бы хоть немного уменьшить это бремя.

А олимпиада вполне могла стать коротким путем к цели.

Но он не был уверен в собственных силах. С заданием сегодня он справился лишь потому, что немного учил это раньше. На олимпиаде же придется состязаться с лучшими умами со всей страны, и задачи там будут куда сложнее простых вопросов с лекции.

Давайте пока не загадывать, — сказал Хэ Чао, словно разгадав мысли Е Чэньгуана. — Сначала разберемся с тем, что перед нами, будем двигаться шаг за шагом.

Е Чэньгуан кивнул. Хэ Чао всегда был таким — рассудительным, практичным, после его слов на душе становилось спокойнее.

Покончив с едой, вся шестерка отнесла подносы к пункту сбора посуды и вышла на улицу. Полуденное солнце уже припекало, белый свет слепил глаза, отражаясь от бетонных дорожек. Они побрели по тропинке назад, собираясь немного отдохнуть в общежитии перед вечерней парой по высшей математике.

Проходя мимо первого корпуса общежития, Е Чэньгуан поднял взгляд на окна третьего этажа. На сушилках качалось на ветру несколько вещей. Он не знал, кому принадлежала эта одежда и какие люди жили за этими стеклами. В этом кампусе оставалось еще так много незнакомых лиц и чужих дел.

Но по крайней мере этих пятерых из 121-й комнаты он уже начал узнавать по-настоящему.

Вернувшись в комнату, Цао Цицзюнь сразу забрался на кровать досыпать, Цзинь Цзяньцзюнь раскрыл ноутбук и принялся приводить в порядок конспекты, а Гао Икай с Ло Гуанпином принялись обсуждать преподавателя по вышмату.

Е Чэньгуан уселся за свой стол и открыл учебник по языку Си. Задание от Чжао Хунбо уже висело в чате: всего пять задач по программированию, затрагивающих пройденный материал. Он пробежал глазами условия — не сказать чтобы сложные, но требующие вдумчивости.

Он включил компьютер, и черный экран ожил, отразив его невозмутимое лицо. Палочки пальцев легли на клавиатуру, выбивая первый символ.

Ему нельзя завалить предмет, нужно обязательно получить стипендию.

http://bllate.org/book/23896/2721210

(Ctrl + влево) Предыдущая глава   |    Оглавление    |   Следующая глава (Ctrl + вправо)

Обсуждение главы:

Еще никто не написал комментариев...
Чтобы оставлять комментарии Войдите или Зарегистрируйтесь

Инструменты
Настройки

Готово:

100.00% КП = 1.0

Скачать как .txt файл
Скачать как .fb2 файл
Скачать как .docx файл
Скачать как .pdf файл
Ссылка на эту страницу
Оглавление перевода
Интерфейс перевода