@aleksey-popryaduhin

Как научиться реализовывать алгоритмы?

Я довольно давно работаю программистом, но так и не научился реализовывать алгоритмы. Например, у меня есть какое-то описание алгоритма на естественном языке и нужно реализовать его, скажем, на Java. Обычно я реализую довольно громоздкую конструкцию, которая не является простой и изящной, а умения отделять главное от второстепенного и раскладывать по полочкам у меня нет. В итоге, получается очень сложный винегрет.
Посоветуйте чем мне вправить мозги. :)
  • Вопрос задан
  • 2109 просмотров
Решения вопроса 2
@private_tm
JAVA dev
1.Описуешь алгоритм кидаешь сюда свой вариант с просьбой покритиковать и так же можешь попросить колег(codereview)

2.Можешь еще скинуть буржуям codereview.stackexchange.com с просьбой покритиковать)

3. Фиксишь с учетом отзывов.
4. Повторяешь по новой.

И так с каждым алгоритмом. Может по началу и упадет самооценка но потом проблем с этим не будет.

А если по сути в современном програмирование особо изящного кода и нет. И что ты пишешь громоздкии конструкции в 90% ничего плохого если это не явный говнокод конечно
Ответ написан
@aleksey-popryaduhin Автор вопроса
Отвечаю на свой же вопрос: "Это нормально"

Я сделал такой вывод когда читал эту книгу: Экстремальное программирование. Разработка через т...

Даже из простой алгоритм можно реализовать сложным языком и потом думать как такая сложнотень пришла мне в голову. А надо было всего лишь в начале осмыслить какой-то простой кусочек, написать к нему тест, сделать тест выполнимым и от рефакторить.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 13
@evgeniy_lm
Утверждение "Я довольно давно работаю программистом, но так и не научился реализовывать алгоритмы." противоречиво. Программист это тот кто умеет реализовывать алгоритмы, ему деньги платят именно за это. Т.е. какая-то из частей этого утверждения неверна (возможно обе)
Но ваша беда не в этом. Сам по себе "реализованный алгоритм" чисто теоретическая, бессмысленная субстанция, примерно то же самое, что "сферический конь в вакууме". Этим занимаются школьники на уроках информатики. В реале программисту деньги платит заказчик (работодатель) за решение своих проблем. Т.е. программист должен изучить проблему и расчленить эту проблему на последовательность алгоритмов. То что получится в итоге называется программа, а процесс называется программирование
В вашем случае получается что вы не решаете проблему (не пишете программу), вы в нее даже не вникаете, а пытаетесь писать бесполезный, ни кому ненужный код.
Ответ написан
Комментировать
sim3x
@sim3x
Практикуйся
Ответ написан
Комментировать
@FoxInSox
Напрягитесь.
Ответ написан
Комментировать
@fireSparrow
0. Практика.
1. Читай про ООП и паттерны проектирования.
2. Изучай чужие хорошие архитектурные решения.
3. Изучай приёмы рефакторинга и практикуйся рефакторить свой и чужой код.
Например, очень ясно и подробно про рефакторинг написано здесь:
https://refactoring.guru/ru/refactoring/what-is-re...
Ответ написан
@frozen_coder
Java-developer
Читайте книги по алгоритмам, по чистоте кода (Чистый код Мартина как библия), изучайте чужой код - старших коллег и openSorce сообщества, практикуйтесь - реализуйте простые алгоритмы, у Мартина прочитайте что такое ката, возвращайтесь к своему коду и думайте как его улучшить. Довольно давно - это сколько? 10 тыс. часов программирования преодолели?
Ответ написан
Комментировать
@cap_nemo
Нужно налить зеленого чаю с юго-востока Индии, собранного в середине марта 19-летними индийскими девственницами в ясную ночь на 3/4 луны.

Пить этот чай каждый день в течении 3-х лет. После чего нужно забить гвоздь 50 мм в доску, развернуть острием вверх и сесть на эту доску. Доска должна быть обязательно из сандала. Если озарение как программировать не придет сам собой, то предлагаю задуматься над следующим:

  • 80% программистов пишут говнокод и не волнуются, даже не потеют. Смысл волноваться именно Вам?
  • Иногда камень в руках перед злой собакой, лучше чем красивый перочинный нож на антресоли в гараже. Так ли важно качество кода, если код решает проблему?
  • Если вам надоел винегрет, начните делать оливье. Может стоить немного сменить подход?


А если вам действительно интересно программировать, то рекомендую заметить для себя:

  • Нет предела к совершенству. Обращайте внимание на достигнутые вами результаты. Может их можно улучшить?
  • Всегда появляется новая методология или парадигма. Что мешает вам придумать свою? Естественным языкам тысячи лет, а то и более. А синтетические (для "реального" программирования) не старше 70 лет. Пока языки программирования достигнут необходимой гибкости, у многих программистов мозг закостенеет от конструкций вида GOTO ;-)
Ответ написан
Комментировать
Ni55aN
@Ni55aN
А как на счет графического представления?
Например, нарисовать входные данные и ожидаемый результат, и изобразить несколько вариантов решения задачи, а после исследовать: проверить сколько шагов необходимо выполнить, какие из них дополняют друг друга, на сколько это интуитивно понятно
Ответ написан
Комментировать
dio4
@dio4
team leader, system engineer, master of sports
Ответ написан
Комментировать
@otetsgoogla
Codewars.com шикарный сайт, сначала выполняешь сам, потом смотришь как другие выполнили
Ответ написан
Комментировать
@utyfua
Если выходит винигрет то стоит разбивать на более мелкие подзадачки и их уже решать по отдельности.
По идее так все должно быть на своих местах если все нормально делать.
Главное не увлекаться ибо будет одна функция одну функцию вызывать и возвращать ее результат..
Ответ написан
Комментировать
lxsmkv
@lxsmkv
Test automation engineer
Те же сорсы стандартных библиотек Java читать. Разбирать строчка по строчке и думать почему так.
Ответ написан
Комментировать
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Рисуйте схему зависимостей объектов.
Затем - сами поймёте.
Ответ написан
Комментировать
@syrov
пишу программы до 99 строк
То что вы описали скорее подходит под депрессию, а не проблемы с вашим кодом для алгоритма. Иначе попробуйте взять свой код для алгоритма и описать конкретно, что с ним не так. Он медленный (почему)? Недостаток знания Java (вы его дали кому-то
на отзыв)? Плохой стиль (как слишком сложная функция которую трудно читать самому через нескорое время).
Наверное главное для хорошего кодирования алгоритмов, это любить это (программировать). Может вас просто задрала скучная для Вас тема?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы