[Проект] Библиотека с основни алгоритми и тестове за тях на Го

  1. Здравейте!

    Знам, че не е невероятно exciting, но искам да напиша една библиотека на Go, в която да имплементирам, в идеалния случай, всички, иначе по-голямата част, от алгоритмите в следната книга: https://books.google.bg/books/about/Introduction_to_Algorithms.html?id=VK9hPgAACAAJ&hl=en&redir_esc=y . Ще гледам да направя и атрактивни тестове за тях.

    Ще ми е доста полезно, за да науча самите алгоритми, а и ще е добра базова практика, тъй като не познавам Го толкова добре все още. Ако имам време и желание, може да напиша и нещо по-завъртяно, свързано с темата.

    Има две разработки вече на тая тема:

    Първото е много начално, второто е доста добро, но смятам да надградя, и да напиша всичко отначало, като целта ще е да имам доста повече алгоритми от втората разработка. Потенциално може да направя един пач и за неговия проект, защото съм добър човек.

    Как Ви се струва тази задачка? Бих пробвал нещо по-креативно по принцип, обаче съм доста нов в езика, а и алгоритмите са нещо красиво, което ми се иска да науча малко по-добре.

  2. Няколко неща:

    1. Не мисля че успееш много от алгоритмите :) - е края на сесията нека го сложим два месеца като махнем няколко дена за празници и че едва ли ще го почнеш веднага. Което предвид количеството алгоритми ми изглежда малко вероятно :).

    2. По важно - всяка година (миналагодишната която намерих) има по (поне) една тема която е "Библиотека с алгоритми" и Canned response -а е че не виждаме как твоята нова имплементация ще бъде по добра от вече написаните и използвани такива и съответно предпочитаме ако не го правиш. Ако откриеш че има някакви алгоритми които липсват като имплементация, аз поне съм склонен да приема тяхната имплементация като проект.

    Навярно ще трябва да са повече от един-два и ще трябва да не са най не използваните и непознати такива.

  3. Така... значи, погледнах някакви проекти и говорих с разни хора:

    1. https://github.com/Workiva/go-datastructures Има ~2800 звезди в Гитхъб. Говорих с основния девелопър, който ми каза, че може да имплементирам метод за изтриване на B-trees, както и Fibonacci heap. Към това мисля да добавя и имплементация на R-trees. Всичко това ще бъде и добре unit-test-вано и бенчмаркнато. Това ми се струва вече доста работа и достатъчно за ПРОЕКТА.

    2. Може да напиша нещо по-приложно, например нещо, свързано с real-time мониторинг на стоковата борса и разни ML алгоритми в тази посока, нооо не ми се иска да пиша "приложни" неща в момента, тъй като така или иначе това мога да си го правя в свободното време и няма да помогне на никого освен на мен. Евентуално може да бъде и бизнес идея, но не и идея за курсова работа по Го във ФМИ.

    3. Може да направя дистрибутирана система, която да смята FFT, или STFT чрез FFT, или някакви такива други готини неща. Имах една идея за апликация, която кролва нета за разни MP3 музикални samples и после ги "рисува", т.е. извлича чрез STFT (Short-time Fourier transform) амплитудата и честотата на музиката във всеки един "момент", и прави графика на това в реално време. Проекта е доста голям, и не вярвам, че ще успея да го направя целия, но да речем само компонента, който прави STFT дистрибутирано, може да опитам да напиша и изтествам навреме. Да речем взима входен WAV файл, дистрибутирано го смята, и връща резултат, но всъщност трябва да бъде в реално време, тоест ще трябва да се пращат или малки рикуестчета, или да бъде направо с WebSocket, за да има минимално лейтенси. Ще погледна и идея да го направя чрез RPC с протоколни буфери, за да се бави минимално. Бих искал Юзъра да може да го вижда в реално време. Тоест в реално време да се фийдва музикалния файл и почти веднага системата да връща данните от STFT заедно с частта от оригиналния файл, върху който е била извършена операцията. (едното за ивобразяване, другото за изсвирване)

    Какво мислиш за тези нови, ревизирани 3 неща?

    Поздрави, Никола Юруков

    1. Одобрено, евентуално може на първата защита (през януари) да поискаме още нещо за имплементация, но е малко вероятно.

    2. Добре, и на мен идеята не ми допада

    3. Ако евентуално решиш да правиш това ти препоръчвам да го правиш без дистрибутивната система на първо време и чак накрая ако ти остане време да се занимаваш с това.

  4. Здравейте!

    Както обсъдихме с г-н Стойков, тъй като последните две седмици бях в Щатите и нямаше как да се явя физически на защитата, Ви изпращам линк към repo-то, не за точки, а именно с цел да ми кажете дали съм в правилната посока.

    https://github.com/nikox94/go-datastructures

    Моля погледнете къмитите ми там, и споделете мнение.

    Поздрави, Никола Юруков

Трябва да сте влезли в системата, за да може да отговаряте на теми.