Как я могу лучше понять, как решить конкретную проблему? - PullRequest
4 голосов
/ 04 февраля 2009

Сейчас я довольно свободно владею несколькими языками, но мне, кажется, трудно понять, как лучше решить конкретные проблемы. Какие есть способы добиться улучшения в решении реальных задач программирования?

Ответы [ 17 ]

10 голосов
/ 04 февраля 2009

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

4 голосов
/ 04 февраля 2009

Когда у вас есть только молоток, все начинает выглядеть как гвоздь.

Итак, убедитесь, что вы хорошо разбираетесь в алгоритмах и структурах данных. Когда вы их изучаете, задумайтесь о том, для каких целей нужен конкретный алгоритм.

4 голосов
/ 04 февраля 2009

В основном "просто сделай это". Когда вам нужно сделать выбор, просто сделайте любой выбор (кроме подбрасывания монеты).

Если у вас есть что-то, что работает, то откиньтесь на спинку стула и почесайте голову, что вы сделали неправильно и как это сделать лучше.

Если вы абсолютно не представляете, как это сделать, просто полностью решите часть проблемы и продолжайте.

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

2 голосов
/ 04 февраля 2009
  • Спросите кого-нибудь еще. Кто-то в вашем офисе, в Твиттере или на SO, или даже ваша жена. Люди без технических знаний часто предлагают более простые решения.

Если вы должны решить ее самостоятельно, попробуйте выполнить одно из следующих действий:

  • Сделайте быстрый поиск другого человека или проекта, который пытался решить вашу проблему. Если у них есть блог, документация или исходный код, вы можете узнать об их реализации.

  • Придумайте хотя бы ДВА решения и выберите лучшее.

  • Представьте, что у вас есть 15 минут, чтобы решить проблему, прежде чем цивилизованный мир будет разрушен ядерной войной / Скайнетом / Постоянными бесконечными повторениями Сайнфельда, вы можете подумать о чем-то гораздо более простом, который выполняет 99% работы .

2 голосов
/ 04 февраля 2009

alt text

Книга представляет собой набор эвристик, которые нужно пройти при решении проблемы. Читайте об этом в Википедии . Купить его на Amazon .

1 голос
/ 04 февраля 2009
  • Гугл за ответ. Скорее всего, кто-то еще решил ту же проблему или подобную проблему раньше.
  • Спросите ТАК. :)
  • Прочтите некоторые учебники или онлайн-статьи о шаблонах проектирования.
  • Проблемы могут иметь много решений, некоторые из которых проще, а некоторые - сложнее. Не зацикливайтесь на мысли, что есть только одно решение. Просто воспользуйтесь самым простым решением, которое наиболее целесообразно в контексте вашего приложения.
  • После многолетнего опыта вы сможете придумывать собственные решения большинства проблем. :)
1 голос
/ 04 февраля 2009

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

1 голос
/ 04 февраля 2009

Опыт.

Учеба действительно заходит так далеко. Найди что-нибудь веселое и маленькое. Сделай это.

1 голос
/ 04 февраля 2009

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

1 голос
/ 04 февраля 2009

Исследование Алгоритмы !

Поиск и получение как можно больше примеров, книг по предметному программированию и т. Д. И т. Д.

Навыки решения проблем можно улучшить, играя в тактические игры.

Это заставило меня наслаждаться решением проблем и становиться лучше (не обязательно хорошим) в решении проблем:

Шахматы и Иго

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...