Где новичку в программировании найти упражнения и идеи для проектов?

Обложка: Где новичку в программировании найти упражнения и идеи для проектов?
Главное из статьи:
- Начинать стоит с общих платформ задач: Project Euler (500+ математических задач), Code Abbey (сертификат за 125 решений), Codingbat (Java и Python)
- Для тех, кто хочет соревноваться, подойдут олимпиадные платформы: TopCoder, CodeForces, UVa Online Judge
- Для конкретных языков есть специализированные ресурсы: Python Challenge, 4Clojure, P-99 для Prolog/Lisp
- Идеи для собственных проектов можно искать в списках клонов игр, а также на Idea Machine и The Internet Wishlist
- Серьёзная проработка даже одного ресурса заметно повысит уровень навыков

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

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

Хотите создать что-то новое? Посмотрите Idea Machine и The Internet Wishlist, где люди публикуют свои пожелания по программам, которые они хотели бы увидеть.

Если хотите практических упражнений, то пройдитесь по данному списку сайтов/ресурсов:

Общие упражнения

  • Project Euler содержит более 500 математических задач (на теорию чисел, числовых систем и пр.), которые нужно решить, используя программирование (на любом языке).
  • Code Abbey хранит более 200 задач по программированию. За решения 125 из них выдают сертификат, чем мотивируют многих студентов.
  • Rosalind — это ещё один сайт наподобие Project Euler, который предоставляет на выбор более 200 задач по биоинформатике.
  • Codingbat.com дарит упражнения по Java и Python, как для новичков, так и для продвинутых программистов.
  • codegolf.stackexchange.com — сайт, на котором публикуют и обсуждают программистские головоломки.
  • Ruby Quiz — серия головоломок, в которых вас просят написать короткие программы различной сложности. Исходные решения описаны на Ruby, но их можно реализовать на любом языке.
  • Задачи с IT-собеседований — подборка задач на логику и программирование, к каждой есть подробный разбор решения.

Задачи из олимпиад по программированию

  • UVa Online Judge — коллекция из сотен задач с олимпиад по программированию, с онлайн-системой проверки решений.
  • TopCoder содержит сложные задачи на алгоритмы, собранные годами с разных соревнований. Также несколько раз в месяц проводит олимпиады по программированию.
  • CodeForces похож на TopCoder, но содержит больше задач на соревнованиях и несколько особых фишек, включая «виртуальные соревнования».
  • Timus — то же, что и UVA. Содержит задачи с последних соревнований (мирового и регионального уровня).
  • USACO содержит несколько задач на алгоритмы с руководством по их решению.

Под определённые языки

  • Для Prolog, Lisp и подобных языков посетите P-99 и L-99, наборы из 99 задач для повышения вашей эффективности в данных языках.
  • Python Challenge — объединяет загадки и головоломки, которые помогут вам серьёзно прокачаться в Python.
  • 4Clojure — набор упражнений по программированию, специально разработанных под Clojure, Lisp-подобный язык.

Также можете посмотреть подборку 28 сайтов с задачами по программированию.

Итак, вам на выбор дан список ресурсов для оттачивания своих навыков программирования. Для начала этого более чем достаточно. Если вы серьёзно проработаете хотя бы один из них, то это уже сделает из вас если не матёрого, то вполне крепкого разработчика, способного уверенно принимать серьёзные вызовы в программировании.

Часто задаваемые вопросы

С какого ресурса лучше начать новичку?

Если вы только начинаете, попробуйте Codingbat для Java или Python — там есть простые задачи с мгновенной проверкой. Для математически настроенных подойдёт Project Euler.

Можно ли решать задачи на любом языке программирования?

На большинстве платформ из списка — да. Project Euler, Code Abbey, CodeForces и TopCoder принимают решения на разных языках. Исключение — языково-специфичные ресурсы вроде Python Challenge или 4Clojure.

Что лучше — решать задачи или делать свои проекты?

Оптимально совмещать оба подхода. Задачи развивают алгоритмическое мышление и знание стандартной библиотеки, а собственные проекты учат работать с реальными инструментами, архитектурой и доведением продукта до конца.