Саме під таким (на мою думку) девізом успішно відбулась конференція Exception #07, присвячена динамічним мовам програмування. Все почалося, коли я отримав листа з повідомленням “Завтра відбудеться Exception Conference #07”, де поміж всього іншого проскочила кількість зареєстрованих осіб: 389(в дійсності ж прийшло десь 300). “Ого, скільки народу!”, — подумав я, і вже з нетерпінням почав очікувати завтрашній день. Прочитавши інформацію про проведення минулорічної конференції та задоволення організацією, я був трішки вражений “натовпом”, який зустрів мене ще до реєстрації. Мабуть, організатори просто не очікували такого ажіотажу, що і не дивно: минулого року (судячи з інфи в блогах) було десь сто чоловік. Повний перелік виступів, а також коротка інформація про авторів знаходиться на офіційному сайті конференції.
Поїхали!
І от конференція почалась! Оскільки я за кілька хвилин до початку встиг надибати ще й своїх співробітників, то вирішив лишити їх слухати доповідь про Smalltalk, а сам зайняв місце в малому залі в очікуванні майстер-класу по Python. Слід зауважити, що майстер-клас в ході даної конференції відбувався вперше, а тому Андрій Свєтлов трохи нервував, однак все пройшло вдало. Вступне слово від організатора повідомило нас про те, що “програмісти пиво не дуже люблять”, правда вже на 15 хвилині в повній тиші залу пролунав характерний “чпок”, після чого “офіційність”, яка була лиш помітна на початку конференції, завершилась.
Як показав на власному прикладі Андрій, майстер-клас є зручним, простим, досить інтерактивним способом донесення та обговорення інформації. Навіть я — людина, яка лиш знайома з Python-ом (о горе мну), зрозумів важливість, простоту і зручність, з якими можна вирішувати “рутинні” задачі, за що окреме “дякую” автору доповіді та розробникам Пітона. Так, він показав, що:
- використовуючи метакласи можна зменшити витрати на створення “однакових” та “схожих класів” в ході розробки
- в метакласах є 2 важливі методи: __new__ (виконує операції, що можуть вплинути на структуру метакласу, тобто фактично можна зробити з одного класу інший) та __init__ (виконує ініціалізацію метакласу після його створення), що дуже схоже на використання подвійної ініціалізації в тому ж C++
- всі класи в пітоні створюються на базі метакласу type (було показано створення класу звичайним методом і через нащадок type, які видали однакові результати)
- дескриптори дозволяють вирішувати деякі задачі (наприклад, ведення структурованих логів) значно ефективніше типових методів
Між іншим, саме з його вуст прозвучав той девіз, який зараз висить в заголовку цієї статті, і який ще не раз звучатиме з вуст інших доповідачів, правда у власних модифікаціях.
PEAK-Rules rules
Наступним виступав Сергій Щетинін з доповіддю про PEAK-Rules та PyProtocols. В ході доповіді він неодноразово запитував зал запитаннями “Хто знає про …”. На запитання “Хто знає про PEAK-Rules?” не знайшлося жодної людини яка б підняла руку, правда, як я дізнався пілся його доповіді, ця бібліотека увійшла в поставку Python-а за день до самої конференції 🙂 .
Сергій, описавши основні особливості Python-а, підтримку основних парадигм програмування, показав зручність використання PyProtocols для серіалізації об’єктів різних типів, їх трансформації з одного виду в інший, та ефективність подібних дій, зокрема, якщо є два шляхи переведення одного типу в інший, то вибирається найкоротший шлях. До того ж, як виявилося, дана операція вибору виконується лише один раз і надалі використовується вже отриманий результат, що значно ефективніше за купу конструкцій виду if-elif-elif-…-else.
Як було зазначено, реалізація адаптерів класу (adapters) приводять також до зручності в спільній роботі з проектом, можливості виділення окремого функціоналу для класу в окрему бібліотеку, зменшення періоду часу, коли код знаходиться в “лежачому стані” під час рефакторінгу, і ще багато важливих речей.
Як потім виявилося, всі ці задачі, і навіть більше, можна зробити набагато простіше та елегантніше за допомогою бібліотеки PEAK-Rules. Зі слів автора, всі сучасні типи програмування, як то ООП, функціональне програмування, і т.д. є лише окремими випадками використання типових функцій (generic functions), які реалізовані в PEAK-Rules. Так що девіз “PEAK-Rules rules” повністю себе виправдовує.Обидві бібліотеки є творіннями людини на ім’я Phillip J. Eby, на адресу якого Гвідо ван Россум (ідейний лідер всього проекту Python) сказав “Багато речей, які він робить, лякають мене” .
Ця доповідь зібрала обидві зали (як виявилося, Вадим Войтюк запізнювався), однак варта була ще й додаткових кілька годин для усвідомлення всіх аспектів. З усіх доповідей, ця мене вразила найбільшою конструктивністю: підготовлена купа матеріалу, розказано не багато і не мало, весь зал уважно слідкував за ходом розповіді, отримано купу відповідей, ну і не меншу купу відповідей не отримано за браком часу. Загалом, саме такою я й уявляв “правильну” комп’ютерну доповідь: розказано в такому об’ємі, щоб (обов’язково) трохи вникнувши в документацію, можна було реалізовувати набуті знання у власних проектах.
Smalltalk
Слід також сказати кілька слів про доповідь щодо Smalltalk. Хоча я не був на ній присутній, на лобі моїх співробітників було написано “надто багато букв, не осилили”. На жаль, в Україні мало людей, що знають, що це таке, і ще менше тих, які використовують.
Django і Python
Повернувшись з обіду, ми знову розділились. На цей раз я слухав доповідь про Django Олександра Кошельова, яка, чесно кажучи, не справила на мене особливо великого враження з однієї простої причини: дубляж інформації, представленої на слайдах. Як на мене, доповідь вийшла досить суха і малопрактична: за всі 15 хвилин було наведено
- важливі параметри виконання роботи для фрілансера
- переваги Django
- недоліки Django
- висновок: Django – тру, і її можна юзати.
На мою думку, замало, як для 15ти хвилин.
Grails
В той же чаз через стінку лунав веселий сміх. Як мені потім розповіли, два слухачі старанно розповідали про проблему, яку автор доповіді “Розробка Web-додатків з використанням Grails” Андрій Уваров легко парирував відповіддю “так!”. P.S. Треба буде й собі на замітку взяти.
Ліньки
Зате наступна доповідь не могла не радувати вже з перших хвилин. На місце виступаючого винесли …розкладушку! Це агументували тим, що це і є звичне робоче місце наступного доповідача — Дмитра Кожевіна. За час його виступу були підняті ледь не всі холівари, які тільки могли бути між програмістами різних мастей: Emacs vs Vim, UNIX/Linux/Windows/MacOS, і т.д., які активно роздмухував і сам Іван Пиріг. З доповіді всі отримали купу сміху, задоволення, а також дізнались:
- Треба використовувати правильні інструменти (Vim/Emacs, FreeMind карти, НЛП тощо)
- Треба працювати в правильному місці (дуже важливий притік свіжого повітря, можливість розслабитись)
- Треба працювати з правильними людьми. За словами автора, люди діляться на дві категорії:
- Достигатори — люди, які прийшли на Exception #07 🙂 Вони шукають ефективний і “лінивий” шлях до реалізації поставленої задачі
- Попоморщери — люди, що живуть за принципом “мені не треба, щоб ви зробили це, мені треба щоб ви працювали”
- Основний принцип роботи: “Повний пофігізм і 100% впевненість у собі!”
На жаль, це всі доповіді, на яких я зміг побувати. Хіба що можу додати кілька слів про розіграш призів. Розіграш проводив генератор випадкових чисел, що знаходився в контейнері типу “кульок” з купою об’єктів типу “номерки”. Пару разів випадала 404 Error — Not Found, однак всі призи знайшли своїх власників, з чим їх і поздоровляю. На момент розіграшу 2го приза (мобльний телефон LG 250 KG, який виявився не таким вже й важким 🙂 ) Іван вирішив помучити народ і сказав “номер менше 10”. Мені з моїм номером 8 стало дурно… І хоча я як завжди в таких випадках радію за інших, але я не сподівався навіть на такий хід подій 😉 Ну от поки що і все. Прийду завтра на роботу, розпитаю співробітників ще про другу частину. Дуже шкодую, що не послухав про REBOL, StrokeDB, Twisted та Viacube.
P.S. Все, що я нафотографував можна знайти на Флікрі