- PVSM.RU - https://www.pvsm.ru -
23 сентября этого года лучшие программисты страны сразятся друг с другом в финальном раунде российского чемпионата по спортивному программированию, Russian Code Cup 2013 (RCC) [1]. Это будет уже третий финал организованной Mail.Ru Group олимпиады [2], призванной не только поддержать престиж российских программистов в мире, но и популяризировать программирование как таковое.
В преддверии третьего финала мы решили взять интервью у спикеров RCC 2013 — Дмитрия Склярова, Эдварда Йордона и Кена Голдберга. Но сначала давайте вспомним об основателях языков программирования, благодаря которым сегодняшнее программное обеспечение является именно таким, каким мы его знаем.
Деннис Ритчи
Кен Томпсон
Этих двоих можно без преувеличения назвать гениями, столпами программирования. В 1969 году они, будучи специалистами в исследовательском подразделении компании Bell Labs, создали операционную систему Unix. Позднее, в 70-х, они разработали язык С. Это была не первая их разработка языка программирования, поскольку С был создан ими как дальнейшее развитие языка В, детища Томпсона. Наверное, нет нужды говорить о роли Unix и С в развитии современных компьютерных технологий. Язык С до сих пор является одним из наиболее популярных. ОС Unix фактически сформировала основополагающие идеи и принципы построения операционных систем.
Этот человек в 1989 году отправил своему руководителю предложение о создании системы для управления информацией. Он назвал её World Wide Web. Для своей системы Бернерс-Ли с несколькими помощниками создали первую версию языка гипертекстовой разметки HTML и разработали протокол HTTP. Бернерсу-Ли принадлежит авторство в создании первых в мире веб-сайта, веб-сервера и гипертекстового веб-браузера. Позднее Бернерс-Ли основал и возглавил организацию, которая ответственна за разработку всех стандартов построения всемирной сети — World Wide Web Consortium, W3C. Фактически благодаря этому человеку безликая текстовая сеть превратилась из инструмента для техногиков в интернет «с человеческим лицом».
Усложнение и колоссальный рост объёма информации, размещённой в интернете, привели к необходимости разработки динамических генерируемых страниц. Это стало возможным благодаря языку PHP, который сегодня является одним из наиболее популярных языков веб-программирования. PHP разработал датчанин Расмус Лердорф в 1995 году. Начиналось всё со скрипта, который был предназначен для обработки HTML-страниц. Будучи горячим сторонником идеи открытого кода, Лердорф с самого начала активно прислушивался к отзывам пользователей, постоянно совершенствуя свой скрипт, расширяя и улучшая его возможности, что в результате привело к созданию отдельного языка программирования.
Названный в честь одноимённого сорта кофе, объектно-ориентированный язык Java изначально разрабатывался Гослингом, работавшим в то время в SUN, для использования в бытовой технике. Однако потом его начали применять для создания клиентских приложений. Особенность языка состоит в том, что написанные на нём приложения могут выполняться на любой компьютерной платформе, на которой установлена программа-интерпретатор. Этот язык сегодня используется для написания программ под ОС Android. Технологии на основе Java использованы в создании миллионов веб-сайтов, из которых наиболее известны eBay, Amazon и Yahoo. Гослинг проработал в SUN течение 26 лет, после чего, недолго поработав в Google, занялся разработкой ПО для подводных роботов.
Эти двое были талантливыми математиками. Ещё будучи студентом, Джон Кемени внёс вклад в создание в США атомного оружия, поработав в Манхэттенском проекте. Там он работал с такими мало кому известными личностями, как фон Нейман и Эйнштейн. В конце 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/ [3].
Скляров: Задача должна быть интересна. Если нет — надо взять другую задачу.
Йордон: Это сугубо индивидуально, но я всегда считал, что полноценный ночной сон и сытый желудок необходимы для концентрации на текущих ментальных задачах. Не так-то просто сосредоточиться, если вы не спали 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 [1] станет шоу digital-иллюзионистов Саймона Пьеро [4] и Марко Темпеста [5]. Регистрируйтесь! [1]
Марко Темпест на конференции TED:
Автор: media_magnit
Источник [6]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/programmirovanie/43643
Ссылки в тексте:
[1] Image: http://russiancodecup.ru/signup_guest/
[2] третий финал организованной Mail.Ru Group олимпиады: http://corp.mail.ru/blog/o-finale-russian-code-cup/#more-2524
[3] goldberg.berkeley.edu/: http://goldberg.berkeley.edu/
[4] Саймона Пьеро: http://www.simonpierro.com/
[5] Марко Темпеста: http://www.marcotempest.com/
[6] Источник: http://habrahabr.ru/post/194214/
Нажмите здесь для печати.