ЗА СБИРКАТА  b-collect

Настоящата сбирка съдържа софтуер и материали за четене по информатика. За пръв път за нея бе оповестено и тя започна да се разпространява през пролетта на 2005 г. Сега (януари 2006 г.) сбирката е подобрена и допълнена в сравнение с първоначалния си вид, макар структурата в общи линии – основните дялове и тяхното съдържание – да са запазени. За удобство на цитирането реших да дам на сбирката името b-collect.

Погледнато в най-общ план, сбирката съдържа djgpp и множество четива на различни теми. djgpp e среда за програмиране в 32-разреден DOS, която съдържа компилатор за езиците C, C++ и Objective-C, а също доста на брой други програми. Компилаторът е DOS-версия на gcc, а останалите програми, документация, директорна структура и т. н. са много сходни или идентични с тези в GNU/Linux. Сбирката съдържа и програми, които не са част от комплекта djgpp, но могат да бъдат използвани заедно с него; за целта съм ги приспособил към начина на разполагане на djgpp и описал на подходящите места.

Подробно съдържанието на сбирката е описано в contents.html и във файловете, към които има препратки оттам.

Защо има смисъл да ползваме djgpp?

Струва ли си да се обръща сериозно внимание на програми, които работят в DOS? Какво ценно или интересно може да има в софтуер, предназначен за операционна система, на която е „минало времето“?

Една причина е gcc: това е изключително качествен компилатор, основен инструмент за програмиране в GNU/Linux и множество други операционни системи. Използването на djgpp и в частност на gcc осигурява известна степен на преносимост на програми между DOS и останалите системи.

Чрез gcc, освен на споменатите по-горе три езика, може да се създават програми на Fortran и Ada. Необходимите за целта допълнителни пакети са налице в сбирката, макар и в неинсталиран вид (вж. тук).

Цялото останало, много богато на разнообразие и функционалност програмно обкръжение от djgpp е само по себе си аргумент в полза на тази развойна среда. С помощта на djgpp, както е комплектована в тази сбирка, може да се програмира на 13 езика! Освен петте споменати дотук, това са Perl, awk, Lua, Python, Rexx, Ruby, Scheme и „неувяхващият класик“ Algol 60, за когото Ч. Хоър беше казал, че е значително подобрение на мнозина от наследниците си. Разбира се, djgpp включва и всички по-важни „малки езици“ и инструментални средства, характерни за Unix (Linux): bash, lex, yacc, sed, grep, find, sort, diff, m4, pic, grap, grn, gnuplot и ред други. Това са десетки интерпретатори, програми за търсене в и за преобразуване на текст, за извличане на информация от текстове на програми, за форматиране и за „трансформатиране“ на структуриран текст. За подробности вижте тук и особено тук.

djgpp е активно поддържана и използвана среда. Нови версии на gcc се появяват на всеки няколко месеца. Другите части на djgpp се обновяват по-рядко, но редовно. Съществува активна дискусионна група за потребители на djgpp, където при нужда може да се получи допълнителна информация.

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

djgpp и по-специално gcc се използва, наред с другото, за провеждане на състезания по програмиране. Една от основните причини за създаването на сбирката беше именно осигуряването на пълноценна използваема среда, заедно с материали по програмиране и алгоритмика, която учениците и учителите им да имат на разположение при подготовка за тези състезания.

От настоящата 2006 г. Международната олимпиада по информатика ще използва като среда за провеждане на състезанията единствено GNU/Linux. За нас ще бъде трудно да направим подобен преход при националните състезания, а още повече – при подготовката за тях, тъй като за голяма беда и средното, и висшето образование в страната ни са изключително и изглежда доста трайно обвързани с продуктите (и интересите) на фирмата Майкрософт. В това отношение все пак djgpp и gcc ще имат положителната роля на компромисен вариант – имитация на GNU/Linux в DOS.

Какво още съдържа b-collect?

Материалите за четене в сбирката са от няколко вида. Част от тях са за изучаване на трите основни езика на gcc: C, C++ и Objective-C. Тук ще намерите някои класически книги, удобни справочници, стандартите на езиците и съвети върху стила на писане. Други са посветени на алгоритмиката. Това са множество книги по алгоритми, структури от данни и сродни области, както и статии по отделни алгоритми или програмни структури. Някои от текстовете са вече отдавна класика в областта, други са не много известни, но твърде ценни, а трети са съвсем нови. Има също книги и други четива по използване на Unix и GNU/Linux, по устройството и принципите на тези системи и програмирането в тях, както и по идеологията на отворения и свободен софтуер.

„Сивият файл“ съдържа препратки към многобройни полезни източници в Мрежата заедно с кратки описания на съдържанието им.

Един дял на сбирката е посветен на редактора Vim – изключително мощен и ефективен текстов редактор, вероятно най-добрия текстов редактор за програмисти.

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

Повечето материали за четене в сбирката са на английски език. Тъй като те са най-вече от вида на т. нар. техническа литература, четенето им не изисква твърде задълбочени познания по езика. Информатици, програмисти, студенти и дори повечето добри ученици се справят без затруднения с такава литература. Друга значителна част от четивата са на руски език. Сред тях се срещат такива, които и не могат да бъдат намерени в друг вид. В последните години у нас за съжаление много малко се изучава руски език и това може да бъде спънка за ползването на част от литературата. Е, нищо не пречи на всекиго, който иска, все пак да научи руски език (не само за да чете информатика :-)). От всичко написано съвсем малка част е на български.

Как може да се използва сбирката?

Поради естеството и разнообразието на материалите в нея сбирката b-collect може да бъде използвана по различни начини. Ето основните:

Като среда за програмиране на C, C++ или Objective-C
Това предвижда сравнително ограничено използване на сбирката, а именно gcc и съпровождащите го програми, различните приложни библиотеки, както и учебници, справочници и други четива по дадените езици.
Интересен особен случай е този с езика Objective-C. Този език е перспективен и вероятно ще се използва повече в бъдеще, но у нас е малко познат. gcc заедно с четивата по Objective-C в сбирката дават удобна възможност за опознаване на езика.
Като библиотека по алгоритмика и програмиране
В това отношение сбирката предлага изключителен по обхват и качество набор от заглавия, някои от които е изобщо трудно да бъдат намерени другаде.
Много ценна е също анотираната сбирка от препратки към източници, свързани с изучаване на информатика, комбинаторика и други близки дялове на математиката: „сивият файл“.
Като среда за изучаване на GNU/Linux
Сред най-силните черти на о. с. от тип Unix е богатият набор от команди и възможността те удобно да се комбинират за създаване на нови. От особено голямо значение са командите за анализ и преобразуване на текст. Всички те са налице и в djgpp, а конкретно в настоящата сбирка има и немалко програми, които не непременно присъстват в типична инсталация на GNU/Linux.
Трябва да отбележа и това, че т. нар. „зелен файл“ прави сбирката уникална по удобство на ползване. Подобен анотиран справочник за всички програми, който чрез препратките в него осигурява и централизиран достъп до системната документация няма нито в GNU/Linux, нито поначало в djgpp.
Част от наличната в сбирката литература по Unix и GNU/Linux е посветена на системното програмиране в тях. Това разбира се е неприложимо в djgpp, но събраните книги и ръководства са сред най-добрите в областта и определено са от полза за всеки потребител на сбирката, който е потребител и на GNU/Linux.
Като „заместител“ на GNU/Linux
Става дума за заместване от гледна точка на споменатия по-горе набор от команди и средства за текстообработване. Наистина грамадно множество дейности могат да се извършват по характерния за Unix начин с помощта на тези средства. Иначе, разбира се, като операционна система изобщо GNU/Linux е много над DOS.
Като среда за изучаване и използване на някои класически и множество модерни езици за програмиране
В това отношение потребителят може да се възползва от присъствието не само на съответните компилатори и интерпретатори, но и на учебници, справочници и други четива, които ги придружават.

Искам да подчертая, че сбирката с успех може да се ползва и за разнообразяване на учебния материал по информатика в училище, стига преподавателят, потребител на сбирката, да прояви интерес към подобно нещо. При това има няколко възможности. Например за начално преподаване на програмиране вместо C или C++ (или Pascal, който все още се преподава у нас, но не сметнах за нужно да включвам по какъвто и да е начин в сбирката) би могло да се избере някой от „сценарните“ езици, да речем awk, Lua, Rexx или Ruby. Всеки от тези езици позволява да се стигне до съставяне на далеч по-съдържателни и интересни програми, отколкото със C или C++ за същото учебно време. Това е така поради по-високото семантично равнище на тези езици и по-голямата непосредственост на използването им (интерпретиране вместо компилиране и т. н.).

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

Имам намерение в бъдещите издания на сбирката да включа примери на такива задачи.

Промени, настъпили в новата редакция

За тези, които познават сбирката от по-раншния и вид, ето накратко по-важните промени в нея.

Как се съставя, поддържа и разпространява b-collect?

Представената тук сбирка се съставя, комплектова и разпространява лично от мен. Като професионален информатик аз програмирам, преподавам информатика (на студенти в два университета и ученици в СМГ), а също понякога пиша за/по информатика на различни места. Причината да се ангажирам с работа по сбирката е желанието ми да правя повече за развитието на информатиката в страната ни, и особено – да помогна на търсещите знания ученици, техните учители, студентите, професионалните информатици и всички, за които информатиката и програмирането са страст или поне увлечение.

Разпространението на сбирката е безплатно. За да се сдобиете с нея е нужно да направите едно от следните неща: (а) да ме потърсите и си уредите среща с мен; (б) да ми съобщите адреса си, за да мога да ви изпратя компактдиск със сбирката; (в) да потърсите някого, у когото вече има екземпляр от сбирката, и да го помолите да ви услужи с него.

Макар сбирката да е безплатна за потребителите, направата и е свързана с много работа и отнема значително време. (Освен това е нужна известна компетентност от страна на съставителя, за дълбочината и обхвата на която скромно ще премълча ;-).) Работата ми по сбирката отнема много, много дни за издирване, четене, подбор, организиране, техническо преработване или поправки, тестване, писане на съпровождащи текстове и др. В настоящото издание има десетки страници написан от мен текст. Ще намерите и два по-дълги, подготвени за печат, но непубликувани мои текста: единият е доста изчерпателен материал по геометрични преобразования, а другият – подробен обзор на езика за програмиране Rexx.

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


За оформяне на това издание на сбирката помощ оказаха Красен Давидов от гр. Добрич и Антон Петров – през 2005/6 г. ученик от 11 кл. в СМГ. Благодарение на първия в нея се появиха няколко нови книги, а вторият помогна да се уточнят препратките в „зеления файл“ в дела на сбирката, посветен на djgpp. С удоволствие им благодаря.

Бойко Банчев
София, януари 2006