company_banner

Russian Code Cup 2013: настраиваемся на хардворкинг!



    23 сентября этого года лучшие программисты страны сразятся друг с другом в финальном раунде российского чемпионата по спортивному программированию, Russian Code Cup 2013 (RCC). Это будет уже третий финал организованной Mail.Ru Group олимпиады, призванной не только поддержать престиж российских программистов в мире, но и популяризировать программирование как таковое.

    В преддверии третьего финала мы решили взять интервью у спикеров RCC 2013 — Дмитрия Склярова, Эдварда Йордона и Кена Голдберга. Но сначала давайте вспомним об основателях языков программирования, благодаря которым сегодняшнее программное обеспечение является именно таким, каким мы его знаем.



    Кен Томпсон и Деннис Ритчи, разработчики языка С и ОС Unix


    Деннис Ритчи


    Кен Томпсон


    Брайн Керниган

    Керниган был соавтором Ричи по культовой книге «Язык программирования С».

    Тим Бернерс-Ли, один из разработчиков HTML



    Этот человек в 1989 году отправил своему руководителю предложение о создании системы для управления информацией. Он назвал её World Wide Web. Для своей системы Бернерс-Ли с несколькими помощниками создали первую версию языка гипертекстовой разметки HTML и разработали протокол HTTP. Бернерсу-Ли принадлежит авторство в создании первых в мире веб-сайта, веб-сервера и гипертекстового веб-браузера. Позднее Бернерс-Ли основал и возглавил организацию, которая ответственна за разработку всех стандартов построения всемирной сети — World Wide Web Consortium, W3C. Фактически благодаря этому человеку безликая текстовая сеть превратилась из инструмента для техногиков в интернет «с человеческим лицом».

    Расмус Лердорф, разработчик языка PHP



    Усложнение и колоссальный рост объёма информации, размещённой в интернете, привели к необходимости разработки динамических генерируемых страниц. Это стало возможным благодаря языку PHP, который сегодня является одним из наиболее популярных языков веб-программирования. PHP разработал датчанин Расмус Лердорф в 1995 году. Начиналось всё со скрипта, который был предназначен для обработки HTML-страниц. Будучи горячим сторонником идеи открытого кода, Лердорф с самого начала активно прислушивался к отзывам пользователей, постоянно совершенствуя свой скрипт, расширяя и улучшая его возможности, что в результате привело к созданию отдельного языка программирования.

    Джеймс Гослинг, разработчик языка Java



    Названный в честь одноимённого сорта кофе, объектно-ориентированный язык Java изначально разрабатывался Гослингом, работавшим в то время в SUN, для использования в бытовой технике. Однако потом его начали применять для создания клиентских приложений. Особенность языка состоит в том, что написанные на нём приложения могут выполняться на любой компьютерной платформе, на которой установлена программа-интерпретатор. Этот язык сегодня используется для написания программ под ОС Android. Технологии на основе Java использованы в создании миллионов веб-сайтов, из которых наиболее известны eBay, Amazon и Yahoo. Гослинг проработал в SUN течение 26 лет, после чего, недолго поработав в Google, занялся разработкой ПО для подводных роботов.

    Томас Курц и Джон Кемени, разработчики языка Basic


    Эти двое были талантливыми математиками. Ещё будучи студентом, Джон Кемени внёс вклад в создание в США атомного оружия, поработав в Манхэттенском проекте. Там он работал с такими мало кому известными личностями, как фон Нейман и Эйнштейн. В конце 50-х Кемени и Курц устроились преподавателями на факультет математики в Дартмутском колледже. Для своих математических нужд им необходимо было использование ЭВМ. Однако из-за примитивности и крайней неэффективности тогдашних вычислительных систем на составление программ, поиск ошибок и получение результата тратилось много времени. Будучи преподавателями, Кемени и Курц вынашивали идею обучения программированию всех студентов. Но по тем временам это было сродни лозунгу «Каждую домохозяйку — за штурвал Боинга!»: обучение программированию было сложным и трудоёмким, под силу немногим. Для массового обучения существующие средства и языки программирования совершенно не годились. И, спустя несколько лет работы над своим проектом, в 1964 году Кемени и Курц создали первый вариант языка Basic. По тем временам многие заложенные в него идеи и особенности стали инновационными.
    Позднее, в 70-80-х годах Basiс обрёл широчайшую популярность, было создано множество его разновидностей, которые использовались как основной или единственный язык во всевозможных компьютерных системах. Сегодня этот язык эволюционировал в Microsoft Visual Basic, уже очень далёкий от своего предка по структуре.

    Эдвард Йордон, Кен Голдберг и Дмитрий Скляров — о мотивации, концентрации и саморазвитии



    23 сентября в Москве пройдёт финальное состязание олимпиады по спортивному программированию Russian Code Cup. Закончить этот пост мы хотели бы мини-интервью выступающих на RCC IT-гуру, которые они специально дали для Хабра. Представим наших гостей:



    Эдвард Йордон (Edward Yordon), пионер в разработке методологии программирования и автор метода Йордона, член Компьютерного зала славы и автор бестселлеров по практике программирования, в числе которых культовый «Путь камикадзе»
    Кен Голдберг (Ken Goldberg), изобретатель первого в мире робота с web-интерфейсом, профессор Школы информатики Калифорнийского университета в Беркли
    Дмитрий Скляров, разработчик алгоритма программы Advanced eBook Processor

    Вопрос: Как, по вашему мнению, будут развиваться языки программирования?


    Скляров: Примерно год назад читал книгу «Пионеры программирования». Сколько людей — столько мнений. И у каждого свои основания наделять язык теми или иными особенностями. Новые гении (или наоборот — безумцы?) придумают новые языки. Большинство из них канут в Лету, но некоторые найдут своих ценителей. И этот процесс непредсказуем. А целенаправленно сделать «самый хороший» язык, кажется, еще никому не удавалось…

    Йордон: Не думаю, что удивлю кого-нибудь мнением, что языки программирования продолжат «специализироваться» по различным технологиям. И если некоторые из популярных ныне языков (например, С++, Java), вероятно, не будут заменены другими, то в будущем мы увидим куда более мощные визуальные среды разработки, которые станут оказывать очень большую помощь программистам в разработке, создании и тестировании программ.
    Есть ещё один важный момент, о котором нужно помнить: новые языки являются развитием языков существующих, старые языки преобразятся и обретут новую жизнь. Например, в прошлом году самым популярным языком для разработки бизнес-приложений был COBOL.

    Голдберг: Языки программирования вроде Python, Scala и Spark в основном используются для взаимодействия с облаками/интернетом, включая SaaS (Software as a Service) и облачные кластерные вычисления по запросу (например, Amazon's Elastic Cloud). Также эти языки зачастую применяются в приложениях нового поколения, которые динамически распределяют вычисления между локальными и сетевыми устройствами в зависимости от времени и пропускной способности канала. Для робототехники трендом является open-source, наподобие Robot Operating System (ROS).

    Вопрос: Какие личности вдохновляют вас на подвиги?


    Скляров: А для подвигов разве нужно вдохновение? Гораздо удобнее, как у «того самого Мюнхгаузена», по расписанию: «с восьми до десяти — ПОДВИГ».

    Йордон: Техническое совершенство, глубокое понимание языков программирования и разработки приложений, «железных» и сетевых/мобильных технологий является ключевым и продолжит оставаться таковым в будущем. Но как нам показали на своих примерах Билл Гейтс и Стив Джобс, всё это должно быть объединено со страстью, амбициями, «видением» будущего продукта и превосходными деловыми качествами. Только тогда можно добиться успеха.
    И если это не совмещено в одном человеке, то также крайне важно оказаться «в правильном месте в правильное время». К сожалению, дорога к успеху вымощена неудачами тех, у кого были прекрасные идеи, но они предложили их рынку слишком рано или после того, как посредственная технология уже заняла прочные позиции и покупатели просто не пожелали покупать или не поняли преимуществ нового предложения.

    Голдберг: Человек, который меня всегда вдохновлял, это Андрей Андреевич Марков (1856-1922), математик, заложивший основы цепей Маркова и марковских процессов, на которых базируются многие алгоритмы в современных научных вычислениях, робототехнике и машинном обучении.

    Вопрос: Как вы считаете, что эффективнее для развития в себе скиллов программиста — личное самосовершенствование или работа в команде?


    Скляров: Вряд ли работа в команде может из «просто программиста» магическим образом сделать «очень хорошего программиста». Программист должен учиться и практиковаться, и только тогда он будет расти.
    Но хорошая команда — прекрасный катализатор для профессионального роста. В команде проще развиваться.

    Йордон: По моему опыту, работа в команде более эффективна для повышения мастерства программирования. Для этого нужны сторонние инспекции, парное программирование и наставники, которые будут читать и комментировать каждую строчку кода, написанного молодыми программистами. А молодые программисты должны построчно изучать код, написанный опытными коллегами.

    Голдберг: Оба способа необходимы, но иногда они могут быть несовместимы: человек, который крайне самомотивирован, может легко стать нетерпимым к другим членам команды, менее вовлечённым или продуктивным. Лучшим способом является воспитание в себе и поддержание самомотивации наравне с обретением навыка вести за собой и мотивировать других людей (а также быть терпимым, когда они разочаровывают тебя). Я также рекомендую развивать свои коммуникативные навыки, учиться эффективно писать документацию и доносить до широкой аудитории то, над чем вы сейчас работаете. Например, через веб: goldberg.berkeley.edu.

    Вопрос: Какие лайфхак-фишки и способности помогают вам концентрировать свое внимание на поставленной задаче?


    Скляров: Задача должна быть интересна. Если нет — надо взять другую задачу.

    Йордон: Это сугубо индивидуально, но я всегда считал, что полноценный ночной сон и сытый желудок необходимы для концентрации на текущих ментальных задачах. Не так-то просто сосредоточиться, если вы не спали 26 часов подряд и не ели последние 12 часов.

    Голдберг: Кофе. Почти каждое утро в 6 часов я пью две чашки очень крепкого кофе. Это даёт мне продуктивности на два часа до того, как проснутся мои жена и дочери… Также я рекомендую всегда выделять один день в неделю на отдых от работы и монитора.

    Вопрос: Участвовали ли вы в «играх программистов»?


    Скляров: Лет 25 назад меня восхитило описание правил Core War (Бой_в_памяти), но поиграть так ни разу не довелось. Играл в Colobot. С удовольствием участвую в CTF.

    Йордон: Я не участвовал в таких играх как «конкурсант», но зато был координатором на нескольких из них в США и Австралии.

    Голдберг: Нет, и я не был бы достойным соперником!

    Вопрос: На каких самых экзотических языках программирования приходилось писать?


    Скляров: Пару раз в рамках CTF имел дело с вариациями BrainFuck, хотя это уже почти и не экзотика. Недавно пришлось написать пару десятков строк на VBA (Visual Basic for Applications). Воистину экзотический язык!

    Йордон: Я не припоминаю, чтобы мне доводилось программировать на нетрадиционных языках в реальных проектах. Уверен, такие языки важны и полезны, но в моей карьере было программирование только на «традиционных» языках.

    Голдберг: Я учился программированию на Ассемблере, Фортране, С и APL. В аспирантуре я написал свою диссертацию (геометрические и стохастические алгоритмы в робототехнике) на Lisp. Также сделал несколько проектов на Forth. Сегодня моя дочь учится программированию на визуальном языке Scratch от MIT.
    Кстати, рекомендую прочитать статью Fabio Cevasco «10 языков программирования, к которым стоит присмотреться».

    P.S. Кстати, одним из самых ярких выступлений на Russian Code Cup 2013 станет шоу digital-иллюзионистов Саймона Пьеро и Марко Темпеста. Регистрируйтесь!

    Марко Темпест на конференции TED:


    UPD Спасибо Aidjek за найденную ошибку!
    Mail.ru Group
    1083,00
    Строим Интернет
    Поделиться публикацией

    Комментарии 12

      +6
      что такое «хардворкинг»?
        +1
        Если вас смущают такие слова, то в краудсорсинговом комьюнити Хабрахабр вам видимо очень дискомфортно находится :)

        Если же серъезно, то меня конечно тоже смущает это слово но если писать «Готовьтесь к тяжелой работе» согласитесь будет читаться по-другому. А на RCC не получиться просто посидеть и потупить :)
        +5
        Экскурс по создателям языков притянут за уши конечно в этом посте.
          0
          Ну почему же. RCC это соревнование прежде всего с самим собой. И мы хотели показать в этом посте, как важна роль личности, конкретного человека, вдохновить участников интересными примерами, которые со временем забываются.
            –2
            как думаете, получилось?
              0
              Надеемся. Но если у вас предложения чем дополнить, давайте? Вставлю в пост :)
          0
          На фотографии подписанной как Кен Томпсон изображен почему-то Брайн Керниган, кстати тоже значимая персона в жизни языка С :)

          Пруф
            0
            Когда должно быть начало Russian Design Cup?
              0
              Уточнила у Alisher — сказал, что скоро будет известно :) Мы анонсируем на Хабре обязательно.
              0
              Минуту наверное втуплял, почему Деннис Ритчи написано. И билась одна только мысль «Он же Керниган!..»
                0
                Благодаря внимательности Aidjek — поправили!
                  0
                  Да я немного не об этом. Просто фраза «Керниган Ритчи» так вбилась в голову, что первая часть уже воспринимается как имя, а вторая — как фамилия :)

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

              Самое читаемое