Skip to content

// turn the page

hackers_smПреди време се увличах от програмиране. Беше ми нещо като хоби – не прекалено сериозно, но и доста над ниво “Hello world”. После химията ме дръпна и от години (няма да кажа колко) не съм писал нито ред код. Сега разглеждам свои стари сорсове, опитвам да ги разгадая и разбирам защо е трябвало да включвам поне малко коментари в тях. Това което днес ти се струва очевидно, след години може да изглежда неразбираемо и като че ли писано от съвършено различен човек. Мислех да направя скромен принос към издателското увлечение на адаша с някои примерни сорсове на прогамки с химична насоченост, но май първо трябва да добавя коментарите които някога съм пропуснал.

Ето, например, тази рекурсивна функция от програма за изчисляване на молекулни маси по зададена формула (низ) с произволно ниво на влагане на скоби:

float MMass(char *s) {

   static int err= 0;
   static byte i = 0;
          float m= 0.0;
          TSymRec sym;

      while (s[i]) {
         sym = ResolveSym(s, i);
         if (!(strncmp(sym.s, "(", strlen(sym.s)))) {
            ++err;
            m += MMass(s);
         } else if (!(strncmp(sym.s, ")", strlen(sym.s)))) {
                   --err;
                   if (err>=0) return m*sym.n;
                          else return -1.0;
                } else
                  m += massof(sym.s)*sym.n;
      }
      if (err) return -1.0;
          else return m;
}

Доста дивене падна докато разгадая собствените си някогашни мисли. Започвам да се разколебвам дали наистина трябва да предлагам подобни неща с образователна цел … и въобще, не е ли по-добре тази страница от увлеченията ми да си остане затворена?

float MMass(char *s) {

static int err= 0;

static byte i = 0;

float m= 0.0;

TSymRec sym;

while (s[i]) {

sym = ResolveSym(s, i);

if (!(strncmp(sym.s, “(“, strlen(sym.s)))) {

++err;

m += MMass(s);

} else if (!(strncmp(sym.s, “)”, strlen(sym.s)))) {

–err;

if (err>=0) return m*sym.n;

else return -1.0;

} else

m += massof(sym.s)*sym.n;

}

if (err) return -1.0;

else return m;

}

4 Comments

  1. ksx wrote:

    Ами то всичко това е част от образованието според мен. Стига да можеш да предадеш разбираемо каква задача си си поставил, през к’ви чуденки си минал и как си я решил накрая… или поне ми се струва доста по-полезно отколкото класическите университетски курсове за предаване на знание.

    Sunday, August 16, 2009 at 11:44 am | Permalink
  2. angelov wrote:

    Тук се сещам за Оги с неговото изказване: “Едно е да знаеш, друго е да можеш, а трето и четвърто да го преподаваш”. 😉
    А иначе, въпроса в поста беше по-скоро риторичен и ако има някаква поука в него то тя е: “пишете коментари и разяснения в сорс кода си!”
    Относно уни-курсовете – нека не отъждествяваме “класически” с “посредствени”.

    Sunday, September 13, 2009 at 10:40 am | Permalink
  3. jana wrote:

    mnogo mi e interesno purvo tazi programa nqkoga proraboti li i vtoro razbra li kakvo si napisal :)))

    Friday, June 11, 2010 at 3:48 pm | Permalink
  4. Пламен Ангелов wrote:

    и на двата въпроса отговорът е да

    Monday, June 14, 2010 at 7:13 pm | Permalink

Post a Comment

Your email is never published nor shared. Required fields are marked *
*
*