23 сентября этого года лучшие программисты страны сразятся друг с другом в финальном раунде российского чемпионата по спортивному программированию, Russian Code Cup 2013 (RCC). Это будет уже третий финал организованной Mail.Ru Group олимпиады, призванной не только поддержать престиж российских программистов в мире, но и популяризировать программирование как таковое.
В преддверии третьего финала мы решили взять интервью у спикеров RCC 2013 — Дмитрия Склярова, Эдварда Йордона и Кена Голдберга. Но сначала давайте вспомним об основателях языков программирования, благодаря которым сегодняшнее программное обеспечение является именно таким, каким мы его знаем.
Кен Томпсон и Деннис Ритчи, разработчики языка С и ОС Unix
Деннис Ритчи
Кен Томпсон
Этих двоих можно без преувеличения назвать гениями, столпами программирования. В 1969 году они, будучи специалистами в исследовательском подразделении компании Bell Labs, создали операционную систему Unix. Позднее, в 70-х, они разработали язык С. Это была не первая их разработка языка программирования, поскольку С был создан ими как дальнейшее развитие языка В, детища Томпсона. Наверное, нет нужды говорить о роли Unix и С в развитии современных компьютерных технологий. Язык С до сих пор является одним из наиболее популярных. ОС 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:
ссылка на оригинал статьи http://habrahabr.ru/company/mailru/blog/194214/
Добавить комментарий