ICPC — это соревнование по программированию, которое проводится каждый год для университетов всего мира. В этом году изобретатель C ++ Бьярн Стоуструп дал интервью о пригодности этого языка для целей конкурса.
Международное студенческое соревнование по программированию ACM — большое дело, если вы студент университета, изучающий информатику. Идея, спонсируемая IBM, заключается в том, что команды решают множество проблем, а команда, которая решает больше всего, выигрывает.
Если вы посмотрите на историю соревнований, похоже, что США доминируют с 18 победами по сравнению со следующим лучшим, Россия с 8 победами. Однако при этом не учитывается тот факт, что первые десять лет существования соревнования проводились в основном среди команд из США и Канады. Когда вы замечаете, что США не выигрывали с 1997 года, тогда 8 побед России, включая 2013 год, заставляют соревнование выглядеть немного более открытым.
Характер соревнования — примерно 8 задач, которые необходимо решить с помощью одного компьютера, совместно используемого командой из трех человек, — заставляет участников сохранять спокойствие и использовать понятный язык.
Бьярн, хорошо известный своим мнением о том, что C ++ — лучший язык для обучения информатике, также явно придерживается мнения, что C ++ является лучшим для таких жестких соревнований. Послушайте, что он говорит:
Кто бы мог поспорить:
«Если вы используете простой C, вы получите что-то немного слишком низкое».
«Java просто уводит вас слишком далеко от машины … слишком много косвенных указаний, слишком много запутанного мышления».
Кажется, C ++ как раз подходит — язык Златовласки.
В этом много правды. Поскольку C ++ содержит C, вы можете работать на более низком уровне, где становится видимым оборудование машины. Поскольку это объектно-ориентированный язык, вы также можете использовать большие академические идеи организации программ.
Однако есть много не упомянутых проблем с C ++. Он достаточно гибкий, чтобы вы могли писать полностью непрозрачный код. Разработка с его использованием также замедляется из-за необходимости скомпилировать его, прежде чем вы сможете увидеть, что он делает. Я лично выбрал бы Python для конкурса, но подойдет любой динамический язык, Ruby или даже JavaScript.
Наконец, кто бы мог поспорить с мнением, что код не скучный:
«Код — это место, где резина попадает в путь».