19 април, 2024

През октомври 2020 г. ще се проведе второто издание на Tuesday Afternoon Club – серията от технологични беседи на алгоритмична тематика, включваща презентатори с най-висока компетентност по темата и участници със специфични интереси и професионални ангажименти.

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

Цикълът от срещи се провежда pro bono, в онлайн формат.

Ние от DevStyleR с удоволствие се присъединихме към инициативата и в следващите редове проф. Красимир Манев и доц. Бойко Банчев, двама от инициаторите на Tuesday Afternoon Club, ще отговорят на няколко наши практически въпроса.

Можем ли да кажем, че при решаването на задачи по-сложните алгоритми са по-правилни, защото навлизат в повече детайли? Или пък е по-правилно да заложим на известния Бръснач на Окам, т.е. най-простият вариант е най-правилният?

КМ: Алгоритмите са процедури, които решават задачи, определени математически и такива, че имат едно решение или няколко различни, но равностойни решения. Затова не може да има „по-правилни“ и „по-неправилни“ алгоритми. Ако процедурата намира решение, тя е алгоритмична, а ако не намира – не е.

С понятието сложност в Теорията на алгоритмите обозначаваме оценката за използвания от алгоритъма ресурс – процесорно време или обема използвана памет. Затова можем да различаваме бърз от бавен алгоритъм, решаващ една и съща задача. И съвсем очевидно всеки би предпочел по-бързия.

ББ: Колкото до сложността, тя може да има обективен източник. Дадена задача може да няма просто решение. А може да има по-прост алгоритъм за по-прост вариант на задачата. От друга страна, някой може да направи излишно сложно решението-алгоритъм, защото не е съобразил как да го направи по-просто – тогава сложността има субективни причини.

Бръсначът на Окам се отнася до това, оправдано ли е включването на едни или други същности, т.е. понятия. Това е философски принцип с доста общ смисъл и за приложимостта му към въпроса едва ли можем да кажем нещо определено.

Кои са най-правилните подходи в разработването на специализирани алгоритми, обслужващи специфични задачи за дадена организация например? Има ли универсални решения, които са задължителни за старта на процеса, независимо от дейността на организацията и решението, от което има нужда?

КМ: Не може да има такива алгоритми, защото управлението на сложна система не е задача, а комплекс от различни задачи – в началото, в средата или в края, няма значение. За да се използват алгоритми в управлението, заинтересуваните трябва да поставят на програмиста задача или да опишат проблем, от който програмистът да формулира задача.

Можете ли да определите какво е значението на написването на „псевдокод“ за създаването на една добра програма?

ББ: Това е подход, който може да е полезен за много малки по размер програми, от няколко до 20-25 команди. Организацията на по-големи програми изисква други изразни средства. Дали наистина помага за малки програми – по-скоро да, защото дава възможност алгоритъмът да се изрази по-абстрактно, отколкото на конкретен език за програмиране. Впрочем, за абстрактното изразяване на по-големи програми има други средства.

А като казвам по-горе „команди“, обръщам внимание и че псевдокодът е средство за изразяване именно в императивен (команден) стил. В програмирането има и други стилове – функционален, съпоставителен и пр., за които като че ли няма добър аналог на псевдокодов език.

КМ: „Псевдокод“ е начин да се опише алгоритъм. Когато алгоритъмът е сложничък, а програмистът не много опитен, смятаме, че едно описание в псевдокод или друг такъв механизъм би улеснило написването на кода. Опитен програмист рядко би седнал да прави такава “скица”.

Смятате ли, че математическите науки някак са се превърнали в демоде като основа за ИТ кариера и развитие и че програмистите залагат по-скоро директно на ученето на конкретен език или технология?

КМ: Математическите науки не са и никога няма да са демоде. Създаването на сериозен софтуер винаги ще изисква някакво математическо моделиране на проблема. Хората, лансиращи такава теза, оправдават по този начин нежеланието си да учат математика.

ББ: Такова залагане би направил човек с посредствено мислене за професията си. Но понеже днес програмирането е относително масова професия, естествено нараства и броят на посредствените програмисти. Нарастването на посредствеността е неизбежно последствие дори в интелектуалните сфери на труда.

Имате ли златни правила в преподаването на математически науки?

КМ: Златните правила при преподаване на математиката са от векове:

    • Преподавай смислени и полезни математически знания – няма нищо по-практично от добре изградена теория;
    • Накарай учениците си да вникнат в теорията, за да я използват, като се наложи – не е задължително важността на теорията да е видима още в клас. Не знаеш каква задача ще срещнеш в работата си и кое от ученото ще ти помогне да се справиш с нея.

Сесиите от Tuesday Afternoon Club 2.0 ще се провеждат онлайн всеки октомврийски вторник, от 18.30 ч.

Пълната програма и форма за регистрация ще намерите тук.

За организацията на инициативата се грижи екипът на MNKnowledge.

Тагове: , , , , , , , , , , ,