Linux-Bulgaria.org
Home Mail List Manual Mail Archive
 
 

Този Линукс учебник е създаден от членовете на групата на доброволни начала.

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

   

БГ Сайтове
 

Linux-BG

Linux Center

Linux Society

 

6. Рай за програмисти


Linux (и другите операционни системи със свободен код) са създадени от програмистите най-напред за собствено ползване, поради което изобилстват със средства за разработка - компилатори, текстови редактори, помощни програми (utility) и специални средства за осигуряване на съвместна разработка по Мрежата.


6.1 Езици за програмиране


Подобно на всяка друга UNIX-подобна ОС, единственият жизнено важен език за Linux е C. На C са написани ядрото и всички базови програми на системата, както и основните мрежови клиенти и сървери. Самите средства за разработка на C-програми - компилатор, свързващ редактор, дебъгер и пр. също са написани на C. На практика повечето базови части на Linux, с изключение на ядрото, са разработват от GNU Software Foundation от средата на 80-те години насам. Затова вместо името Linux, често се употребява по-дългото GNU/Linux.

Ако степенуваме останалите използвани в Linux езици по важността на създадените с тях програми, би се получила следната класация:

shell

perl

C++

Lisp

Pascal


6.2 Хакерската култура


За да ползвате или създавате успешно софтуер за Linux, трябва да сте наясно с правилата и нормите за поведение в областта на Свободния софтуер.

Тези правила и норми формират хакерската култура. Индивидите в тази култура са сравнително равноправни, основната морална норма е сътрудничеството, основното средство за комуникация - Мрежата.

Основната структурна единица в хакерската култура е софтуерният пакет. Той представлява програма или група програми, придружени от документация, примери, лицензна и друга информация. Пакета обикновено решава конкретна задача и има характерен жизнен цикъл:

  • Жизненият цикъл на един пакет започва, когато някой мъдър програмист създаде нова програма и я предостави за ползване в Мрежата.
  • В началната фаза пакета се поддържа от създателя си и се ползва от сравнително малка група потребители, които си комуникират със собственика на пакета най-често по email, за да съобщят за грешки или да предлагат нови идеи. Огромното мнозинство от софтуерни пакети никога не напущат тази детска фаза на развитие.
  • Ако пакета е успешен, в разработката му се включват нови програмисти. Създава се mail-list за обмен на информация. Някой поема ролята на администратор и се грижи за актуалността на архивите и maillist-а. Обикновено през тази фаза се появява по-сериозна документация, WEB-място, news група и пр. места за обмен на информация.
  • Най-успешните пакети придобиват сложна инфраструктура. Администрирането им става разпределено - такъв пакет има няколко копия в мрежата (mirror), за да се улесни изтеглянето му от голям брой потребители. Софтуерния архив се поддържа от CVS (Concurrent Versions System) - система за синхронизация на изходните текстове, броят на mail-list-овете също нараства, като те се специализират - за разработчици, за начинаещи потребители, за новини и пр. Появяват се автоматизирани срества за следене на грешките в пакета. Обикновено на тази фаза пакета е достъпен за няколко операционни системи, поддържа сложни инсталационни процедури и се предлага в различни формати за разпространение.

Болшинството хакери правят свободен софтуер за удоволоствие в свободното си време. Когато мерака им секне, създадените от тях пакетите остават без поддръжка. Ако ползвате такъв пакет, трябва да разчитате само на себе си и останалите потребители на пакета и при нужда да организирате по-нататъшното му развитие.

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

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

Колкото и малък да е Вашият принос, той ще е полезен за развитието на любимия Ви пакет и ще подобри качестото на Свободния софтуер изобщо. Това е и единствения начин да заплатите свободния софтуер, който ползвате (ако не броим прякото спонсориране на проекти, което е твърде рядко явление).

Хакерската култура освен естествените си технологични аспекти се характеризира със специфични морални, икономически и социални аспекти. Някои от основните норми в тази култура откровено се разминават с нормите на съвременните елитарни общества, което често води до конфликти.

Хакерската култура се асоциира (не без основание) със социални течения като модерния анархизъм и църковната реформацията от края на XV век, с философски школи като Даоизма (създаден през V в. пр. Хр. от Лао Дзъ в Китай), и с икономически модели близки до модела на предземеделските култури, доминирани от авторитета, а не от частната собственост и пазара.

Полезни четива по темата:


6.3 Конструиране с готови модули


Основен принцип в хакерската култура е да не се пише два пъти една и съща програма. Много услуги в Linux са реализирани като малки програми, които описват само спецификата на услугата, а същинската обработка на данните се извършва от големи и добре тествани стандартни програми.

Добра илюстрация на този принцип е големия брой съществуващи Web-услуги, които се реализират чрез CGI-програми.

Common Gateway Interface (CGI) е стандартен начин за Web сървера да предаде заявка от някой Web клиент към някоя приложна програма, както и да прати създадения от нея отговор обратно на потребителя.

Някои Web-страници съдържат форма - празни полета, пригодени за попълване от потребителя. Когато последният попълни полетата и изпрати формата, Web сърверът изпраща информацията от полетата към програма, която анализира тази информация и връща към потребителя нова страница - отговор. Тази уговорка за прехвърляне насам-натам на информация между Web-страница, разглеждана от потребителя и приложна програма, разположена на сървера се нарича именно Common Gateway Interface (CGI). Тя е част от протокола HTTP.

Ако създавате Web-услуга и искате CGI-програма да получи управлението, трябва да сервирате към клиентите HTML страница, съдържаща името на CGI-програмата в специален URL. Обикновено този URL е част от описние на форма. В примера

<FORM METHOD=POST ACTION=http://www.mybiz.com/cgi-bin/formprog.pl>

Web-сърверът, намиращ се на "mybiz.com" ще предаде управлението на CGI-програма, наречена "formprog.pl" (".pl" означава, че става дума за програма, написана на Perl, но за подобни цели могат да се използват и много други езици. Употребяват се C, C++, Perl, Pascal и др.)

Обикновено CGI-програмите са малки и за да свършат работата, която им се възлага, се обръщат към големи стандартни сървери за обработка на данни (програми за управление на бази данни като PostgreSQL и MySQL, пощенски сървери като SendMail и др.).

Типичната Web-услуга извършва прехвърляне и обработка на данни по верига от вида:

Web-клиент (Netscape) <-> Web-сървер (Apache) <-> CGI-програми <-> СУБД (PostgreSQL)

Трите големи програми в тази вериага са със свободен код и единственото, което се налага да направим, е да напишем група от CGI-програми на любимия си език за програмиране, за да опишем конкретния облик на Web-услугата.


6.4 Визуално програмиране


Обратно към началото на учебника.

    
  Hosted by Internet Group Ltd. Stara Zagora