Подтвердить что ты не робот

Как вы находите интересные проблемы для решения?

Как вы находите интересные проблемы для решения?

Я часто хочу изучать новые языки программирования. Тем не менее, я чувствую, что, чтобы понять это, я должен написать что-то, что есть:

  • Реальный - он должен решить некоторую проблему реального мира. Эта проблема не должна быть новой (на самом деле, иметь ссылочное решение может быть хорошей идеей), но это должно быть чем-то, что заставляет меня выдумывать грязные детали. Я не хочу решать математические задачи или реализовывать алгоритмы и структуры данных, потому что это только учит меня решать проблемы математики (или A & DS) в 'new-language.

  • Что-то, чему я могу увлечься - требуется время, изучая все новые и новые языки программирования. Это означает, что я должен положить в это время. Чтобы помочь мне оставаться мотивированным, я хочу решить проблемы, которые нравятся мне на определенном уровне. Я думаю, что эта часть является самой трудной, по крайней мере для меня, судя по всем моим полузавершенным проектам; это также самая важная часть. Независимо от того, насколько реальна проблема, если вы не работаете над ней, вы не учитесь на ней.

  • Готовый к подключению к страстному аспекту, я хочу что-то, что я уверен, что могу привести в состояние shippable, когда я работаю только в свободное время. Хотя "компилятор C" - очень реальный мир, и мне очень нравятся компиляторы, это несколько большой глоток. Даже простой оценщик выражений - это то, что вы можете перепроектировать, отлаживать и оптимизировать много раз, когда вы не знакомы с идиомами определенного языка.

Итак, как вы (или не могли бы вы) решить проблему поиска чего-то интересного для работы?

Особые решения, то есть проблемы для работы, будут очень признательны, но (помилуй высокомерие) они просто "глупые знания". На что меня больше всего порадуют новые способы мышления и атаки на проблему (то есть алгоритмы → данные: D).

EDIT: победителями пока являются "сделать игру" и "исправить что-то, что вас раздражает (программирование | с использованием comptuers)".

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

"Исправить что-то раздражающее" имеет встроенную страсть и реальность, но для этого я не избалован тем, что все работает, и что исправление не изменяет какую-либо программу, не написанную на языке Я хочу учиться.

(Вы оба заработали надпись. Принятие может быть в пути)

4b9b3361

Ответ 1

Чтобы генерировать идеи, мне всегда полезно спросить "что меня беспокоит в программировании" и "что меня беспокоит в работе на компьютере".

Готовые вещи - это еще одна история. Завершить вещи очень сложно. Я думаю, вы будете счастливее, если примете, что у вас будет портфель проектов, многие из которых остаются незавершенными. Если вы все закончите, у вас будет возможность изучить гораздо меньше идей и технологий.

Выберите тщательно, какие проекты вы хотите закончить, и помните слова Пит Хейн:

Встаньте в место
где легко увидеть загадочное предостережение

T. T. T.

Когда вы чувствуете, как угнетающе медленно поднимаешься,
хорошо помнить, что

Things Take Time.

Ответ 2

Сделайте игру. Вы узнаете тонну о любом языке. Это не должно быть фантазией. Сделайте сканирование подземелий или что-то еще.

Ответ 4

Я собрал эту "стандартную" проблему, которую я использовал несколько раз, чтобы изучить новый язык.

http://homepage.mac.com/s_lott/books/oodesign.html

Это реально. Он имеет некоторую осязаемую ценность. Это приемлемо.

Ответ 5

Найдите в своей жизни "проблему", которую вы можете решить с помощью программирования. Хотя это проще сказать, чем сделать, я приведу вам пример. Я получил один из этих календарей со словом, который на нем наваливался каждый день в году (настоящий). Мне нравятся головоломки и такие (страсть), и в то время, когда я хотел, чтобы проект погрузился в python. Поэтому я создал простую командную строку script, чтобы решить jumbles с помощью sqlite-бэкенда, и с тех пор я довольно много разбираюсь в python. Проект завершен так, как я хочу, я все еще добавляю в него вещи и продолжаю улучшать и добавлять к нему, но он служил своей цели в качестве стартового проекта для меня. Поэтому я действительно думаю, что трюк заключается в том, чтобы найти то, над чем вы можете работать, что легко и напрямую связано с вашей повседневной жизнью.

Ответ 7

Каждый раз, когда я вижу, что что-то делается снова и снова, я вижу возможность создать какой-то кусок многоразового кода. Это было то, что с моим DAL и многими другими проектами, над которыми я работал.

Ответ 8

Я не ищу проблем, в коде или иначе. Вместо этого я стараюсь как можно больше открывать глаза, чтобы не пропустить вдохновение для более простых решений старых проблем:)

Иногда я просто смотрю, как люди становятся людьми.. или тараканом, занимающимся повседневной деятельностью.

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

Ответ 9

Другим источником "вдохновения" для разработки программ (или просто изучения того, как работает технология) является то, что "почему он не справляется с этим?" или "Это должно сработать!" моменты. У меня было несколько таких моментов с такими вещами, как генерация кода из XSD.

Другим источником являются те, "Должен быть более элегантный способ сделать это!" моменты. Простые мелочи, такие как С# "if (x is typea) do_a else if (x is type_b) bo_b else....". Начните меня думать о лучших способах делать вещи.

Другим источником, о котором некоторые упоминали ранее, является "Могу ли я написать систему для этого?" момент (или риторический вопрос). Я знаю программистов, которые возились с системой ISAM в течение года, настраивая здесь и там только потому, что играла с ним. Не знаю даже завершить проект, просто играя с различными идеями и реализациями.

Ответ 10

Хотя это, по-видимому, не реальность, у меня была идея для хорошего источника проектов, которые, по крайней мере, закончены, и, вероятно, вы должны мотивировать вас делать (тогда опять вы должны порешать каждый день: p).

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

  • реализовать библиотеку автоматов с конечным состоянием, с тестированием членства в языках, построением продукта и минимизацией brzozowski.
  • реализовать максимальный поток, минимальный расход и линейный программный решатель.
  • реализует сокращения между выборами NP-полных задач, приближениями полиномиального времени и решателями грубой силы.
  • написать собственную реализацию криптографических алгоритмов (но не использовать их: D)

IIRC, mona - это машина конечного состояния, используемая для проверки правильности электрической цепи; ISTR мой лектор рассказывал о приложениях линейного программирования в экономике, а gcc регистрирует распределение (которое является графическим оформлением, которое является NP-полным). Crypto, конечно же, защищает все операции с кредитными картами в режиме онлайн. Так что это не совсем нереальный мир:)

Ответ 11

Я слишком поздно? здесь есть "субреальная" проблема. Так как вам понравилась игра. Проверьте Java4K, вы должны сделать игру только в 4096 байт. Вы узнаете много о Java, много оптимизируете код и наверняка, как мыслить просто.

И в конце дня у вас будет новая игра:)

Ответ 12

Обычно я обнаруживаю, что уже есть проблема, с которой я сталкиваюсь, что легче сделать на другом языке. Пример: работа с PDF файлами на нескольких языках.

Ответ 13

Хм. Если это ваша цель, то вы можете попробовать ее в два этапа... для сторонников алгоритмов, я бы предложил предложить некоторые из задач программирования там, и делать это в сочетании с чтением книги Skeina Проблемы программирования. Он дает много теорий о том, как обращаться к задачам с точки зрения алгоритмов и структуры данных, а затем указывает на кучу примеров вопросов, в которых вы можете попытаться воплотить эти идеи в действие самостоятельно. Это очень определенно положит вас через умственный отрыв, очень хорошим способом. Очень похож на Project Euler, но для жестких алгоритмов и данных - структуры людей, а не математики.

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

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

Ответ 14

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

Ответ 15

Вы можете попробовать кодировать решение для реальной проблемы, которую может найти друг или член семьи на компьютере. Это может быть особенно хорошим способом практиковать кодирование, если вы создаете решение для кого-то, кто не имеет опыта работы с компьютерами - эти люди зададут вам вопросы, которые другой кодер никогда не захочет. Этими реальными вопросами о вашем решении могут быть такие вещи, как "Почему это появляется в черном окне со всем этим письмом?" - в отношении script, выполняемого из командной строки DOS. Когда вы сталкиваетесь с подобными вопросами, вам необходимо твердо понять свое понимание языка и должно быть в состоянии ответить на непрофессионалы, чтобы иметь возможность ответить на них.

Сейчас я изучаю perl, и я использую его для создания системы управления имуществом для члена семьи, который управляет квартирным комплексом.

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