LINUX.ORG.RU

Борьба со сложностью в программировании.

 , , ,


4

2

Подскажите пожалуйста, какие вообще бывают способы для борьбы со сложностью разрабатываемой системы?

  • ООП?
  • Шаблоны проектирования?
  • Декларативный подход?
  • Когда стоит применять конечные автоматы?
  • Когда стоит применять метапрограммирование?
  • Когда стоит применят композицию?
  • и т.д.

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


Ответ на: комментарий от WitcherGeralt

Мне кстати очень интересно, почему вы все думаете, что iron_bug - девочка? Опять знакомая модераторов или она фото тут демонстрировала?

Liz812
()
Ответ на: комментарий от anonymous

Здоровое ЧСВ я бы сказал. Что за жизнь вообще если ты не крутой и не особенный?

Вон, если Лизка поймёт, что она лишь малолетняя неумёха, а не скрытый пророк, у неё сердце разобьётся.

WitcherGeralt ★★
()
Ответ на: комментарий от WitcherGeralt

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

Liz812
()
Ответ на: комментарий от Liz812

Рабочий который сделал 10 тысяч гаек не может учить инженера

Может и должен.

burato ★★★★★
()
Ответ на: комментарий от mag1ck

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

WitcherGeralt ★★
()
Ответ на: комментарий от Liz812

Ни ухом ни рылом, но так уж вышло, что я её разрабатываю.

А ты только теоритизируешь.

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

WitcherGeralt ★★
()
Ответ на: комментарий от Liz812

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

WitcherGeralt ★★
()
Ответ на: комментарий от Liz812

Рабочий который сделал 10 тысяч гаек не может учить инженера.

Инженер знает, что он не может учиться у рабочего?

Инженер знает, что он принадлежит к касте неприкасаемых?

anonymous
()
Ответ на: комментарий от anonymous

Нет. Она абсолютно нормальная. Сам иногда в шоке от того, как она здесь загоняется.

Не стоит судить о ком-то по разрозненным сообщениям на форуме, в личной беседе то же самое это может и совсем иначе звучать. Тот же франктал, я уверен, в жизни нормальный мужик.

WitcherGeralt ★★
()
Ответ на: комментарий от anonymous

А инженер учится 5 лет всякой инженерной науке. А рабочий не знает всего этого, поэтому его советы непрофессиональны. Это учить врача как правильно лечить.

Liz812
()
Ответ на: комментарий от Liz812

В отличие от тебя я получаю высшее образование по этой области.

Угу. Вот пойдешь в свой геймдев, мобильные дрочильни клепать. Будет тебе там и TOGAF и SOLID.

anonymous
()
Ответ на: комментарий от Liz812

Некорректное сравнение. Программист сам себе архитектор, он на это и учился тащем-то, язык в этом смысле — дело прикладное. У меня был опыт работы в конторе с дедикейтед архитекторами, это полное дно. Должность даёт им авторитет и неприкасаемость, люди в итоге деградировали (а может и сразу такими были). На мой вкус самый правильный вариант принятия глобальных архитектурных решений — митинги с более или менее равными весами голосов всех инженеров, но для этого уровень компетенции команды в целом должен быть достаточно высок.

anonymous
()

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

Nibbler
()

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

Nibbler
()
Ответ на: комментарий от WitcherGeralt

Откуда у тебя столько сил, энергии и времени, чтобы спорить на серьезных щах со студенткой и что-то доказывать?

Nibbler
()

Борьба со сложностью

Java

Лол.

anonymous
()
Ответ на: комментарий от Nibbler

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

Что, впрочем, никак не помешает мне залипать в ЛОР. Сублимирую Твиттер.

WitcherGeralt ★★
()

какие вообще бывают способы для борьбы со сложностью разрабатываемой системы?

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

Уже не один десяток лет этот процесс пытаются «рационализировать», но я сомневаюсь, что творчество, а это безусловно творческий процесс, можно как-то загнать в прокрустово ложе каких-то четко определенных методов или методик. Забавно вспоминать сейчас, как на рубеже нулевых все прямо-таки «писали кипятком» от UML. Ну, и где этот UML теперь?

dave ★★★★★
()
Ответ на: комментарий от anonymous

митинги с более или менее равными весами голосов всех инженеров

А если их 100 человек? Кто отвечать за результат будет?

Liz812
()
Ответ на: комментарий от Nibbler

студенткой

Есть сомнения, что студентка и что оно вообще женского пола. Этот персонаж не до конца выдерживает «троллинг глупостью» и регулярно прокалывается.

anonymous
()
Ответ на: комментарий от Liz812

а вот это пять. мадам, вам - прямая дорога в архитекторы ))

Vinill ★★
()
Последнее исправление: Vinill (всего исправлений: 1)
Ответ на: комментарий от anonymous

Ты разве не знаешь что Шаман07 меня уже разоблачил?

Liz812
()
Ответ на: комментарий от Liz812

Немного меньше.

Никому не интересно жить с тем, кто всё время спит, жрёт, тренируется и работает. А мне не интересно, когда меня отвлекают от моих дел.

WitcherGeralt ★★
()
Ответ на: комментарий от WitcherGeralt

Странно что тебя это не беспокоит. У меня есть знакомый с реальной проблемой а он только и думает как о девушках.

Liz812
()
Ответ на: комментарий от WitcherGeralt

Зависит. Во-первых большинство таких решений локальны для проекта, над которой работает одна команда, это редко больше десяти человек. В случае взаимодействия двух команд, может быть достаточно по одному-двух человек из каждой из них, это то, что ты назвал рабочей группой. В случае product-wise инженерных решений, хороший тон — позвать всех инженеров, менеджеров и product owner-ов. Из ста придёт человек 70, базара не будет, потому что большинство придёт послушать (у них нет достаточной экспертизы на таком уровне, чтобы активно говорить). Потом эта компания естественным образом разобьётся на группы по интересам и продолжат обсуждать детали.

anonymous
()
Ответ на: комментарий от mag1ck

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

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

Iron_Bug ★★★★★
()
Ответ на: комментарий от mag1ck

Декомпозиция на составные части.

нет, это не то.

anonymous
()
Ответ на: комментарий от Liz812

А что есть лучше uml?

Если бы кто знал! Может быть, и хорошо, что никто не знает [и не может знать, в принципе]?

З.Ы. В свое время книга Гради Буча была для меня как откровение, но это было давно.

dave ★★★★★
()
Ответ на: комментарий от Liz812

Я просто спросила «зачем нужны паттерны»? А вас разнесло на несколько страниц

Зачем нужны паттерны, написано в википедии. Если ты пришел_а сюда, значит, тебе нужно было что-то другое.

в голове отложилось «не нужно».

Вот оно, просветление %)

Nervous ★★★★★
()
Ответ на: комментарий от mag1ck

Декомпозиция на составные части.

Декомпозиция проблемы на простые составные части и композиция решения из простых составных частей. О! Осталось понять, как это применять на практике %)

Nervous ★★★★★
()
Ответ на: комментарий от Liz812

Не ЛОР-е всё ненужно. И именно слитно, без пробела.

peregrine ★★★★★
()

как построить простую архитектуру программы, чтобы потом она меня не сожрала свой сложностью

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

Nervous ★★★★★
()
Ответ на: комментарий от Liz812

Так у меня с ними проблем нет. Для получения желаемого, не обязательно жертвовать личной свободой.

WitcherGeralt ★★
()
Ответ на: комментарий от Liz812

почему вы все думаете, что iron_bug - девочка

Она предъявляла груди фотки. С крокодилом.

Nervous ★★★★★
()
Ответ на: комментарий от Liz812

Да хоть несколько.

Вот пошла ты устраиваться на работу, скажем, холодильники делать, а точнее их прошивку. Приходишь, а там 1,5 человека этим занимаются. Да, обмазались каким-то специфическим софтом, один работает 24/7, ему некогда тобой заниматься, второй - начальник, он на работе бывает через день, а тебе даст бумагу, что надо сделать (без объяснения как естественно) и вперёд и с песней. Такова жизнь железячников в 95% случаев.

Рассмотрим другой пример, ты приходишь в контору, а там веб-макаки сидят или питонисты, или (подставь сюда любой коллектив компании заточенной на разработку софта, где IT отдел самый важный и большой). Все заняты, все работают, вроде и время есть тебе что-то объяснить, но тебе дают какую-то задачу и рядом не сидит дяденька архитектор, не смотрит через твоё плечо и не подсказывает, что и как делать. Он просто дал тебе задание сделать модуль/библиотеку/класс/интерфейс, а то как сделать это уже твоя проблема и ты сама себе архитектор на минималках.

Про замечательные вещи во время учебы, я вообще умолчу, диплом там, курсовая. Никто за тебя не будет их архитектурой заниматься, а делать придётся.

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 1)

Подскажите пожалуйста, какие вообще бывают способы для борьбы со сложностью разрабатываемой системы?

Способ всего один: KISS.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.