БНТУ – Новости, наука, люди и факультеты - сайт собирает в себе самые интересные материалы Белорусского национального технического университета.

«Программирование схоже игре на музыкальном инструменте»

1458 
0
08 января в 07:00
«Программирование схоже игре на музыкальном инструменте»

1 декабря в Санкт-Петербурге подвели итоги полуфинальных соревнований Международной студенческой олимпиады по программированию ICPC 2019-2020 (International Collegiate Programming Contest). Всего в соревнованиях приняли участие 310 университетских команд из 11 стран. Северо-Евразийский регион считается самым сильным регионом Чемпионата. В его состав входят Азербайджан, Армения, Беларусь, Грузия, Казахстан, Киргизия, Латвия, Литва, Россия, Таджикистан, Узбекистан. Команда БНТУ поднялась на 22 место и впервые пробилась в финал, получив право представить университет на итоговых состязаниях в Москве.

В состав команды «FITR BNTU #1: Great team» вошли Шефтелевич Павел, Василевский Виктор и Зданович Дмитрий. Мы встретились с участниками, чтобы познакомиться с ними поближе.

Сегодня молодые люди учатся на 1-ом курсе магистратуры на факультете информационных технологий и робототехники, получают образование по специальности «Системный анализ, управление и обработка информации». Знакомы друг с другом далеко не первый год: учились в одном классе средней школы №41 города Минска, а после вместе поступили в БГУ на специальность «Информатика» факультета прикладной математики и информатики.

— Почему решили поступать в БНТУ?

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

— Объясните, что представляет собой программирование и кто такой программист? Чем обычное программирование отличается от спортивного?

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

— Спортивное программирование сильно отличается от обычного, - продолжает Павел. - Например, на работе ты создаешь конкретный продукт или разрабатываешь систему на протяжении недель и даже месяцев. Написанный тобой код «живет» годами, его постоянно развивают, поддерживают, разработчики могут меняться. На соревновании за определенное время нужно решить как можно больше задач. Здесь ты можешь написать код за 20-30 минут, его качество при этом никто не оценивает. Да и сам ты его больше никогда в жизни не увидишь, использоваться он не будет. Главное, чтобы код работал.

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

— Как и когда вы заинтересовались программированием?

— Начиная еще со школы, с 8 класса, я занимался программированием на факультативных занятиях. Тем, кто был заинтересован, всячески помогали, - говорит Павел. - Основательно готовиться к олимпиадам по программированию я стал в лицее БГУ, куда поступил по окончании 9-и классов.

Виктор и Дмитрий, в свою очередь, больше увлекались математикой, также участвовали в олимпиадах, программирование заинтересовало молодых людей ближе к поступлению в вуз.

— Нужна ли математика в программировании?

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

На сегодняшний день Дмитрий работает в компании Itransition, его область – виртуальные машины. Виктор и Павел работали в таких компаниях, как Яндекс и Wargaming.net в Минске, проходили стажировку в компании Google в Польше и Швейцарии. На сегодняшний день молодые люди работают вместе в небольшой компании, название которой решили не называть.

На вопрос о желаемом месте работы парни дали довольно неожиданные ответы. Виктор хотел бы работать с животными, Дмитрий мечтает стать футболистом или банкиром, а Павел и вовсе большую часть времени хотел бы тратить на различные хобби, например, играть в профессиональный настольный футбол. Но, как отметил Дмитрий, звезды сложились по-другому.

— Давайте поговорим о Чемпионате. Как проходила подготовка?

— Финал международной студенческой олимпиады по программированию ICPC – самый престижный этап самого лучшего чемпионата для студентов, достижение, к которому стремятся все участники олимпиад, - говорит Павел. - Подготовка проходила в том же формате, что и сами соревнования. В этом году на полуфинале необходимо было решить 12 задач за 5 часов. Мы создавали для себя подобные условия: собирались и за определенное время решали задания прошлых лет: четвертьфиналы, полуфиналы, финалы Америки, Европы, Польши и других регионов. Затем читали разборы задач, анализировали свои ошибки, делали выводы о том, что необходимо изучить, какие подходы опробовать, по-отдельности решали задачи, которые вызвали особые трудности. Так мы работали на протяжении двух месяцев каждые выходные.

— Как именно вы работаете: распределяете задания между собой или решаете их вместе?

— По правилам соревнований на троих участников предоставляется только один компьютер. Задачи обычно распределяем. В начале соревнования кто-нибудь говорит: «У меня легкая задача», садится за компьютер, пишет код, отсылает в систему и берется за новую задачу. За компьютер садится следующий. Если все идет хорошо, примерно через два часа работы в таком темпе мы решаем 5-6 задач. Остаются задания, алгоритм решения которых сразу непонятен. Над такими задачами мы думаем вдвоем или даже втроем, экспериментируем, проверяем гипотезы.

Ребята признались, что во время подготовки к соревнованиям времени не хватало буквально ни на что, кроме основной работы и непосредственно самой подготовки. Все остальное переносилось «на потом». Тем не менее, это был интересный период для каждого из участников команды. Молодые люди поделились, что обстановка на Чемпионате была теплой и дружественной: многие знают друг друга, ведь из года в год встречаются на подобных соревнованиях. 

— Достаточно ли знаний, которые дают в университете, чтобы занимать места на чемпионатах такого уровня?

— Знаний только университета – нет, не достаточно. Много нужно работать самостоятельно, - говорит Павел. В программе вуза нет такого предмета, как «олимпиада по программированию», но есть и довольно важные дисциплины, связанные, естественно, с программированием, с алгоритмами, с дискретной математикой. Для соревнований порой нужно изучать такие вещи, которые больше нигде не пригодятся.

— Если вы будете самостоятельно изучать базу и регулярно разбирать сложные задачи, у вас все получится и без университета, - добавляет Виктор. - Бывает, в таких чемпионатах принимают участие и первокурсники, настолько хорошую базу им дали в школе.

На вопрос «Рассчитываете ли на победу?» парни почему-то заулыбались. Говорят, конкуренты сильные, но они будут тренироваться и сделают все, что от них зависит. Магистранты также рассказали, что помимо морального удовлетворения и медалей победители Чемпионата получают возможность быть приглашенными на работу в крупные технические компании.

Так же как художник рад законченной картине, или музыкант – мелодичному сочетанию нот, программист получает удовольствие, когда написанная им программа работает.      

— Как считаете, есть ли в программировании место творчеству?

— Конечно, - отвечает Виктор. Программирование схоже игре на музыкальном инструменте. Здесь есть своя эстетика: хочется, чтобы код не только хорошо работал, но и выглядел красиво.

— Во многом это зависит от проекта, - продолжает Павел. - Бывают, конечно, рутинные задачи, но попадаются и интересные.

— Что такое язык программирования и как его выбрать?

— Язык программирования – своеобразная инструкция для компьютера. Ты пишешь слово, оно переводится в машинный код, и компьютер выполняет то, что тебе нужно, - отвечает Виктор. - Нет какого-то универсального способа выбрать язык, да и нужды в этом нет. Человек, который профессионально занимается программированием, то есть разработчик высокого уровня, чаще всего знает несколько основных языков, таких как C++, Java, Python, JavaScript, а выучить новый уже не составит особого труда.

— Язык – это только инструмент, - дополняет Павел, - и при устройстве на работу учитываются твои навыки в целом. Если вы хороший специалист, работодатель поймет, что вам потребуется немного времени на изучение нового языка.

В свободное от программирования время ребята занимаются спортом, проводят время с друзьями, читают книги. Дмитрий также увлекается японскими шашками Го – игра наподобие наших «точек», Павел любит путешествовать и кататься на лыжах, Виктор играет на гитаре.

— Какими чертами характера должен обладать хороший программист?

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

— Программист должен быть трудолюбивым, усердным и терпеливым, - продолжает Виктор. – Я считаю, что программированием может заниматься только тот человек, у которого хватит терпения часами или даже днями решать одну проблему.

— Что бы посоветовали начинающему программисту?

— Не бросать и не лениться. Итог будет неплох, – ответил Виктор, товарищи были с ним солидарны.


Контент доступен под лицензией Creative Commons Attribution 4.0 License.

Обсуждение
Для того, чтобы добавлять комментарии вам необходимо авторизироваться на сайте
Если у вас нету аккаунта – зарегистрируйте его!
Есть ошибка в тексте?
© times.bntu.by – 2017. Для использования материалов свяжитесь с нами через форму обратной связи
Нашли ошибку?
Ctrl/Cmd + Enter