Бывшие канадские ангелы мы (fearless_cat) wrote,
Бывшие канадские ангелы мы
fearless_cat

  • Mood:

И все-таки она вертится! или История одной программы

Точнее, все-таки он летает! Глайдер! Я написала глайдер!

По порядку. Есть такая игра, называется "Жизнь". Кто не знает - википедьте, вам понравится. Я на Хабре статью про нее нашла, когда искала что-то совсем другое. Почитала, поиграла, мне понравилось, но мысли писать что-то подобное к моей голове и не приближались даже.
Поэтому, когда Дима месяц назад предложил мне написать свой вариант "Life", я сначала только отмахнулась. "Жизнь" писать - это для взрослых, куда мне! Дима снизил обороты и сказал: "Ну хорошо, напиши сначала просто глайдер. Ты его за два часа напишешь". Я, по (не)доброй традиции начала ковырять ему мозг на тему "я не могу, я даже не знаю, как это сделать, это дико сложно, мне страшно, я не умею...". Мы даже поспорили, напишу я за 2 часа или не напишу. Конечно, за 2 часа я не написала. Написала за месяц. Но, ептваюмать, как это было! От лихорадочного возбуждения "я знаю, как это написать!" к "черт, какого хрена оно не работает?" От "Йес, получилось! Я гений и офигенно крута!" к "Я бездарь, я два часа пробую и так и эдак, а оно никак и вообще я понятия не имею, как это закодить". Та статья на Хабре стала моей Библией, я ее наизусть, наверно, выучила. Но там все было куда как более усложненно, поэтому до конца в коде я так и не разобралась.
Разумеется, без помощи не обошлось. Во-первых, с парой функций пришлось разбираться с помощью Димы (кстати, разбивку на подзадачи тоже он мне сделал, иначе я бы до сих пор ныла, что не могу). Самое забавное было на последней функции. У меня уже есть функция, которая получает старый массив и возвращает новый. У меня есть функция, которая этот массив печатает. Мне нужно было всего лишь объединить их в одну в цикле. Но меня, что называется "заклинило". Я час смотрела на собственный код, как баран на новые ворота и не могла понять, что у меня там происходит (Предпоследнюю функцию с возвратом массива Дима практически написал за меня, поэтому назвать ее "своим" кодом, я по-честному не могу. Вот именно на нее я и глазела). В итоге пришел Дима, за 5 минут написал последнюю функцию - и глайдер полетел!
Там еще нет графической составляющей, там еще не тороидальный мир, там еще нет возможности ввода для пользователя - там есть только глайдер. Но это все равно офигенно.
Подводя итоги - 4 функции написаны мной полностью самостоятельно, без подсказок. Еще одну - с помощью друга (archaicos, огромное спасибо! Мне эта функция по подсчету соседей во сне снилась несколько раз, зато я теперь ее понимаю просто шкурой, как дважды два :)), который потратил суммарно часов 5, наверное, пытаясь заставить меня правильно думать и при этом не подсказать больше, чем требовалось. Адский труд, я думаю :)
Две последние фактически написаны Димой в моем присутствии, а еще одна написана мной, но с его пинками в в правильном направлении.
Чувство двойственное. С одной стороны вроде как achievement, с другой - ну не полностью же сама! Но приключение, конечно, было то еще!

Зато вот от чего точно испытываю удовлетворение - так это от того, что Дима понял одну вещь, которую я ему пыталась донести несколько месяцев. "Я от тебя требую креативности, чтобы ты пробовала разное, а у тебя еще нет паттернов, багажа, ты просто еще не знаешь, что пробовать" Аллилуйя! Делаем шаг назад, замедляемся и теперь меня ждут простые задачки с постепенным усложнением, ура! А то "пиши код, пиши код блять"... Я бы и рада, но как? Можно подумать, мне не хочется писать код и испытывать тот кайф, когда программа запускается и все правильно выполняет. Дают, понимаешь, пятикласснику интегралы и удивляются - чего это он задачу не решает? А как, если он еще про степени понятия не имеет. Вот и я так же.
А "Жизнь" я все равно когда-нибудь допишу. Когда подучусь немножко.
Tags: программерское
Subscribe
  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 19 comments