Боза с косми

В света на програмистите това определение се чува всеки ден, по повод някоя особено зле написана програма. Поне сред програмистите от поколението, което не разбираше от модни чепици и чалгатеки, но пък можеше да програмира… Но дори и повечето от тях не знаят откъде всъщност идва този израз, и защо е “боза с косми”, а не примерно “торта с кисело зеле”. Някои си мислят, че се има предвид, че програмата е отблъскваща… Но не е така. Или поне не само.

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

Зле написаната програма е “мътна” – в нея не виждаш кое къде е, трябва да търсиш всяко нещо едва ли не опипом. Не знаеш какво като пипнеш, какви ще са ефектите освен търсения – видимостта я няма и в това отношение. В особено тежките случаи е като обфускирана – каквото и да пипнеш, се чупят най-непредвидими неща: видимостта й клони към нулата. Като в боза… Доста мои познати програмисти, ако им вземеш RAD-средата, пишат точно такъв код. (Познайте какъв пишат там, където RAD средата не стига, и просто трябва да се дописва на ръка.)

Какво става, ако такава програма трябва да се дописва? (Или ако трябва да се дописва дори добра програма, но програмистът е некадърник?) Вместо да разбере логиката на програмата и да имплементира нещата точно където и както трябва, програмистът предпочита да ги направи отделно, и да ги лепне за програмата като някакъв израстък… С времето подобни програми буквално се покриват с подобни израстъци като с окосмяване. Оттам и “косми”.

А как се съчетават двете? Елементарно и неудържимо. Истински бозавата програма подлежи на допълване единствено чрез окосмяване. И тъй като истински бозави програми има предостатъчно, и зад някои от тях стоят кадърни маркетингови екипи (т.е. те са широко наложени на пазара, често се налага да бъдат допълвани и са познати на много програмисти), софтуерният свят е пълен с масивно окосмени бози. Оттам и изразът – популярен до степен много хора да са забравили вече всъщност какво точно значи, но да продължават да го използват.

Айде сега чао, че имам да доправям една… програма. 🙂

11 thoughts on “Боза с косми

  1. Григор Post author

    @Daggerstab: Из буйната си младост съм го изчел от кора до кора, обожавам го. Ама бая време мина оттогава, та съм го позабравил, и не направих връзката… 🙂

    Reply
  2. Данаи

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

    Reply
  3. Петър Петров

    @Григор: “Боза с косми” не съм чувал, но “торба косми” съм. И се визира откъде минава изпълнението на програмата (threads), това са космите. По-поносимо е “спагети”. А куцо долепените неща са “вързано с тел”. Когато достатъчно много неща са привързани с тел, те започват да падат под собствената си тежест.


    5 февруари. Лепихме и закрепвахме покрива. Петров казва че ще издържи, ако не завали сняг.
    7 февруари. Заваля сняг…

    “Ако програмистите строяха къщи”

    @Daggerstab: Благодаря.

    Reply
  4. ieti

    Най-бозавия кой от който ми е настръхвала косата беше на едни украинци. Те хората изглежда са искали да спазат принципите за обектно програмиране и бяха капсулирали всичко в класове. Дотук добре горе долу рядка боза. После обаче са решили да вкарат логика с…техни си ексепшъни. Хората хвърляха ексепшъни, ловяха ги 1 – 2 нива надолу, хвърляха ги отново и така до безкрай. Този код беше истински кошмар за дебъгване и за дописване. За да изкарам едно пропърти веднъж се рових 2 дни. Не боза ами…

    Боза, спагети, пълен хикс…

    Reply
  5. Виктор

    Daggerstab, и аз само като видях заглавието на Григор през RSS се сетих за черната котка. 🙂 Ама е кофти тоя разказ… Сега трябва да поясните, тия, които знаете и да програмирате, и за “Черната котка”, кой е с мустаци, дали само програмистите на тия програми, или и ние, потребителите?… То всъщност какво ли питам, ясно е. Вие хем бъркате в качето, хем го … Ох…. айде да не ми се случва…

    Reply
  6. jw

    Гадничко е да гледаш такава програма. Иде ти да я задраскаш отгоре до долу. А ако и програмистът ти обяснява каква тънка мисъл е вложил, какви хитрости е приложил, за да построи така добре опитмизирана програма, направо е страшно. В една друга област, механиката, един преподавател ни каза за такъв вид конструкции: “А си мръднал, а маймун си станал.” Буташ на едно място, то избива кой знае къде на другия край.

    Reply
  7. Scroch

    Григоре знам за какво говориш. Моят шеф има онлайн магазин за мебели, който едно време е бил на osCommerce, една не толкова лоша система. Обаче сайтът е правен през 2004-а година и тогава програмистът който е работил за шефа е добавил доста неща които биха изчезнали при един ъпдейт на CMS-а, следователно ние трябва да добавяме нови модули дърху система която е на 7 години и да оправяме бъговете на тази система, които вече са оправени от разработчиците й. Стига се до такива абсурди да имаме файлове по 4-5 хиляди реда които не са табулирани и са смесени HTML с PHP, които най-често гърмят, а поради естеството на работата ни, нямаме възможност да ги пренапишем и да работят наред. Сега пак е гръмнало нещо по сайта и ще си губя времето да търся къде, как и защо и най-вероятно пак ще ес окаже грешка на някой от нас който се е опитал да закърпи нещо.

    Reply
  8. Borko

    Това на запад му викат спагети код 🙂 http://en.wikipedia.org/wiki/Spaghetti_code . Миналата година когато прочетох тази статия видях че имало и равиоли код и спагети с кюфтета код. Години минават преди програмист да се научи да пише подреден код и трябва доста четене. Аз съм имал проблеми с това и съм си пател, но шефа двойно повече го отнасяше заради моята тогавашна некомпетентност. Слава на Хесус той е търпелив, а аз любопитен следователно ме изчака да мина една купчина лекции та да не мъ създавам толкова ядове 🙂

    П.С. Г-н Гачев, моят частичен фийд към Вас е молба да сложите plug-in за subscribtion към темите, че ми се ще да получавам отговорите на другите потребители. But of course that’s just me

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *