1

Тема: Застосунки для ефективнішого вивчення складних штук

Вітаю українських націоналістів (космополітів для втікачів не вітаю).

Нещодавно я наштовхнувся на складну проблєму - треба було роздуплитись, як працює велика купа недокументованого коду.

Спершу я спробував як завше - дивитись на той код очима, доки воно саме по собі не складеться в моїй голові до купи. Але той код був настільки заплутаним, що в мене нічого не вийшло.

Я почав думати - а шо робить в таких ситуаціях? І придумав, шо треба таки уважно дивитись на той код, аби краще розуміти, шо там робиться. І потім я згадав про застосунок Obsidian.

Ідея Obsidian в тому, шо за допомогою простого markdown мона робити нотатки, які пов'язані між собою, як от сторінки в вікіпедії. А потім можна дивитись на граф цих зв'язків, і бачити, які нотатки посилаються на які.
При цьому не обов'язково безпосередньо створювати сторінку для якоїсь штуки, можна просто написати якесь слово в подвійних квадратних дужках, і слово в цих дужках буде показуватись на графі, навіть якшо воно не асоційоване з якоюсь сторінкою.

Поки шо мені це подобається, і ніби допомагає краще розуміти взаємозв'язки між файлами, але я думаю про те, як краще описувати складні файли.
Зараз я роблю так:
Створив нотатку з файлом. В ньому список функцій в файлах. Кожна функція - це нотатка з описом, шо робе ця функція, та посиланнями на інші функції, якшо вони використовуються.
Я також робив ледь не порядковий опис функцій (з описом розгалужень if), але це по суті той самий код функції, але іншими словами, тому я думаю, шо краше описувати той результат, який ми хочемо отримати в результаті роботи функції.

Шо думаєте?

Подякували: Tarpan871

2

Re: Застосунки для ефективнішого вивчення складних штук

А що за код/мова/завдання, це може бути важливим?!

"З нуля" мені здається що це неефективно.
Графи повільні, часто складні структури. А от дерева кращі - ти з вершини покроково спускається по різних гілках аж до низу.
Вся перевага в тому що е одна точка входу, а це якби намікає - запусти/продебаж.
Але є дійсно складні коди, багатопотокові, асинхронні.. а це на два порядки складніше представлення чим ви намагаєтесь зробити. Функції/методи це все здається не так складно - лінійно пересуваєшся по дереву. ООП(патерни проектування) - це складніше( вмісто того щоб в який раз іх знову вчити я тут ховаюсь, не все розумію, потрібна практика) ось їх краще вивчити + ЮМЛ діаграму класів(от вона не складна). Ну і правильно робите що запитуєте ради в інших.
Так от, гадаю що ось ці вищенаведені дії і є ефективним рішенням проблеми. Це фабрика по рішення, побудувавши/освоївши її один раз буде простіше з іншими, ви не будете потіти над кожною проблемою з нуля.

3 Востаннє редагувалося leofun01 (27.08.2023 14:08:30)

Re: Застосунки для ефективнішого вивчення складних штук

офтоп
vitek написав:

А що за код/мова/завдання, це може бути важливим?!

"З нуля" мені здається що це неефективно.
Графи повільні, часто складні структури. А от дерева кращі - ти з вершини покроково спускається по різних гілках аж до низу.
Вся перевага в тому що е одна точка входу, а це якби намікає - запусти/продебаж.
Але є дійсно складні коди, багатопотокові, асинхронні.. а це на два порядки складніше представлення чим ви намагаєтесь зробити. Функції/методи це все здається не так складно - лінійно пересуваєшся по дереву. ООП(патерни проектування) - це складніше( вмісто того щоб в який раз іх знову вчити я тут ховаюсь, не все розумію, потрібна практика) ось їх краще вивчити + ЮМЛ діаграму класів(от вона не складна). Ну і правильно робите що запитуєте ради в інших.
Так от, гадаю що ось ці вищенаведені дії і є ефективним рішенням проблеми. Це фабрика по рішення, побудувавши/освоївши її один раз буде простіше з іншими, ви не будете потіти над кожною проблемою з нуля.

Може ви б спершу довели те, шо ви український націоналіст? Бо мене не цікавить думка аби кого.

4

Re: Застосунки для ефективнішого вивчення складних штук

FakiNyan написав:

зрозуміти як працює велика купа недокументованого коду

Спробуйте ChatGPT? цей ШІ вміє добре пояснювати будь-який код.

FakiNyan написав:

Шо думаєте?

Цікаво, вам ці графи зв'язків якось допомагають чи достатьньо було текстових файлів? Також було б цікаво побачити приклад такого "заплутаного" коду, якщо є можливість. Вірю в те що код повинен бути самодокументований завдяки своїй простоті, і коли так не вдається - швидше за все цей код поганої якості.

5

Re: Застосунки для ефективнішого вивчення складних штук

ostap34PHP написав:
FakiNyan написав:

зрозуміти як працює велика купа недокументованого коду

Спробуйте ChatGPT? цей ШІ вміє добре пояснювати будь-який код.

Не варто таке робити. Компанія може зазнати збитків, якщо її працівники будуть зливати код невідомо кому.

Подякували: ostap34PHP1

6

Re: Застосунки для ефективнішого вивчення складних штук

ostap34PHP написав:
FakiNyan написав:

зрозуміти як працює велика купа недокументованого коду

Спробуйте ChatGPT? цей ШІ вміє добре пояснювати будь-який код.

FakiNyan написав:

Шо думаєте?

Цікаво, вам ці графи зв'язків якось допомагають чи достатьньо було текстових файлів? Також було б цікаво побачити приклад такого "заплутаного" коду, якщо є можливість. Вірю в те що код повинен бути самодокументований завдяки своїй простоті, і коли так не вдається - швидше за все цей код поганої якості.

залежить від того, як то все описати і поєднати. Воно може показувати як граф залежностей, так і потік виконання певного сценарію.
Відразу видно, шо на великих стартапах ви ніколи не працювали, якшо "вірите" в простий, самодокументований кід

7

Re: Застосунки для ефективнішого вивчення складних штук

дивіться, я вирішив зробити нотатки деяких розмов з анонімами в тирнеті, і додав до нотаток метатеги, як от

  • автор

  • теги

  • тип

а потім можна скористатись розширенням dataview, і написати ось такий кід

```dataview
TABLE type, tags
```

і отримати таку табличку

Прихований текст

https://i.imgur.com/FaCqzy9.png

тобто, якшо ви кожного дня шось записуєте туди, або не кожного дня, а просто логуєте якісь дані, то потім можете побудувати собі табличку з тих даних, або граф, який показуватиме прогрес/регрес і т.д.

Також можете створювати свої дошки з завданнями, як то робиться в усіляких джирах і т.д., і працювати над якимось проєктом
https://github.com/mgmeyers/obsidian-kanban

Подякували: leofun011