Информатически портал ИнфоМан

http://infoman.musala.com/resources/main_bg_papers.html

 

Програмиране = ++Алгоритми

от П.Добриков и Пр.Наков

Top Team, 2003

 

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

www.algoplus.org

 

 

PC Magazine

http://www.sagabg.net/PCMagazine/articles.php3?unit_id=23&issue_id=98

 

Ако сте избрали програмирането за своя професия, то “Програмиране = ++ алгоритми;” (около 700 стр., Преслав Наков и Панайот Добриков) е задължително четиво за вас. Книгата, която се появи на книжния пазар в края на април, е сходна по тематика с “Основи на компютърните алгоритми” от Преслав Наков (400 стр., претърпяла 3 издания).

Целта на авторите е да запознаят читателите с най-разпространените техники на програмиране. Наред с представянето на широкоизвестни методи за решаване на алгоритмични задачи (и анализ на техните свойства, приложения, предимства и недостатъци), се разглеждат и стотици конкретни алгоритмични проблеми, обръща се внимание на анализа на алгоритмичната сложност на предложените решения, прави се сравнение между различни подходи. Засегнат е широк спектър от теми както в теоретичен, така и в чисто приложен аспект. Материалът е ориентиран по-скоро към приложната страна и реализацията на разглежданите алгоритми за сметка на чисто теоретични изследвания и доказателства за коректност (като се обхващат в някаква степен най-актуалните съвременни научни резултати в съответната област)

 

Предговор от научния редактор

 

С настоящата книга се продължава уникалното явление в нашата учебна и научна лите­ра­тура (а, може би и в световната) — студенти да пишат оригинални учебници за компютърната ин­фор­матика на изклю­чи­тел­но високо ниво, новаторски съчетавайки практика и теория. Първата кни­га, започнала този стил, беше "Ос­но­ви на компютърните алгоритми" на Преслав Наков. Сега ав­торът й заедно с Панайот Добриков правят след­ва­ща стъпка, като предлагат на читателя зна­чи­тел­но разширен и видоизменен труд, който по качества се до­бли­жа­ва до такава основна книга за съставители на алгоритми, каквато е "библията" Introduction to Algorithms от Cormen, Leiserson и Rivest, но притежаващ и много свои специфични черти.

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

Оттук следва и основното предназначение на книгата — да бъде учебник за състезатели — ученици и студенти. Разбира се, това никак не изключва възможността тя да бъде ползвана от професионални про­гра­мис­ти, на които е възложено или им се е наложило да програмират нещо, което надхвърля леймърското ниво (за "леймър" — виж въведението на авторите) — т.е. нещо, за което се изисква да се помисли предварително и да се потърси теория, преди да се започне с програмирането.

Книгата може да служи и като превъзходен университетски курс за въведение в алго­рит­ми­те и струк­ту­рите от данни. Може да се каже, че научното и педагогическото й ниво е значително. Всъщ­ност тя е екс­пе­ри­ментирана от авторите й именно за такъв курс, защото са я ползвали, когато е била в още незавършения си  вид, за да преподават по нея. Така предложеният учебник има дос­тойн­ствата, че споделя едновременно опита на доскорошни активни състезатели по информатика с по-новия им опит да преподават на студенти основите на компютърната информатика. Авторите са водили курса си "Проектиране и анализ на компютърни алго­рит­ми", когато самите те са били студенти и по всеобщо признание този курс, който е тясно свързан с настоящата кни­га, е оценен много високо.

В книгата са застъпени няколкото основни линии, по които могат да се разглеждат и пре­по­дават ал­го­рит­ми. Въпреки, че е трудно да се правят методологически класификации, може да при­емем най-общо, че две­те възможни гледни точки са — от позицията на предмета и от по­зи­ци­я­та на  метода. Традиционно към предмета, върху който работят алгоритмите, се причисляват обек­ти като числа,  множества и по-общи струк­ту­ри от данни, графи и т.н., а към предмета на самите ал­горитми могат да бъдат отнесени темите за сортиране и търсене, компресиране, получаване на ком­бинаторни конфигурации и т.н., докато методите за съставяне на ал­горитми са рекурсия и ите­рация, търсене с връщане, разделяй и владей, динамично оптимиране, евристични алгоритми и др.

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

Книгата е оригинално българско творение, неотстъпващо от световното ниво в раз­глежданата бързо раз­­виваща се съвременна област на компютърната информатика. Тя съчетава програмистка практика с теория, из­­градена върху математически методи, което допринася за по-добро разбиране и прилагане на мно­го­брой­ни­те алгоритми, съдържащи се в нея. Предназначена е за читатели, които биха оценили този синтез — ученици и тех­ните учители, студенти и техните преподаватели, професионални програмисти и техните ръководители и раз­бира се, тя е за всички любители.

 

                                                                                      Емил Келеведжиев

Институт по математика и информатика

Българска академия на науките

 

Review

 

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

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

Разбира се, никое издание, колкото и обемисто да е то, не може да обхване абсолютно всичко, което е направено от човечеството в областта на алгоритмите, но работата, която двамата автори са свършили, е чудесна.

 

доц. Красимир Манев

Факултет по Математика и Информатика, СУ  “Св. Климент Охридски”

Американски университет - Благоевград

 

Review

 

Неслучайно авторите на книгата са поставили за нейно заглавие “Програмиране = ++Алгоритми;". Макар такова опростяване все повече да губи своята актуалност в съвременното програмиране, изборът на алгоритми (и структури от данни) продължава да оказва значително влияние върху ефективноста на почти всяка програма.

Основният акцент в настоящата книга е поставен върху проектирането и анализа на ком­пю­тър­ни алгоритми, независимо от конкретния език за програмиране, макар за реализацията им да е избран Си. Предложено е задълбочено и изчерпателно изложение, което се възприема лесно от читателя ¾ едно наистина рядко съчетание.

Не може да не се подчертае, че авторите са сред най-изявените състезатели по про­гра­ми­ра­не у нас и, макар и млади, имат значителен практически опит във водещи софтуерни фирми. С та­зи книга на читателя се дава възможност да се запознае с важни и фини програмистки техники.

доц. Асен Рахнев
Пловдивски Университет