Куинче на Python

Наскоро си ходих по улицата и си спомних за едно предизвикателство от детството ми – да напиша програма, която принтира кода си. Не знам дали на вас ви се случва да ви хрумват такива неща, докато си ходите по улиците. Или да си спомняте такива предизвикателства от детството си. Аз обаче съм от този тип хора. Та, ето какво съчиних… Continue reading

Необмислена генерализация

Щастлив ден. Открих че поредният мой дразнител в менталния модел на повечето програмисти си има име – premature generalization. Случвало ли ви се е колегите / приятелите / семейството да ви вкарват в неописуемо дълбока абстракция, която после ви излиза през носа със своята сложност. Да загубите 30 часа за да имплементирате въпросната генерализация и още 30 да я използвате по предназначение, когато е могло да стане много по-лесно за 25?. Наричат го още Turing Tar-Pit.

Поуката? Не генерализирайте излишно. Целта ни е да ограничаваме колкото можем, а не обратното. You Ain’t Gonna Need It.

Реджиналд Брейтуейт

Напоследък се зачитам в един много, много интересен блог, който Петьо ми препоръча. Това е един човек, който се занимава от доста време със занаята и посвещава част от свободното си време да си споделя програмистката мъдрост с нас, младите и зелените. На сайта му ще намерите много есета на програмистска тематика, покриващи най-различни насоки като красив код, добри практити, мениджмент и прочее. Материалите които е изписал от 2004 досега определено си заслужават да бъдат пакетирани в книжка. Четете и се учете.

Десет „яки“ неща в PHP

Попаднах на тази статия. Заглавието тайно нашепваше за невероятни разкирия, готови да отворят скептично мижящите ми очи към една нова, красива земя на „PHP якост“. Отворих статията и със затаен дъх потеглих на пътешествие, което можеше да открие пред мен нови програмистки хоризонти.

Continue reading

Practices of an Agile Developer

Наскоро ми препоръчаха тази книжка. Прочетох я и съм много доволен от акъла в нея. Покрива теми от идеите на гъвкавите методологии (итерации, unit тестове, продължителна интеграция), както и сравнително общи принципи (писане на качествен код, кохезия, защитно програмиране). От първото ще разберете както и основната идея на гъвкавата методология и защо може да ви е полезна, както и някои от тънкостите в прилагането ѝ. От второто ще намерите най-добрите неща от Code Complete, описани по-накратко (и по-достъпно, поне по мнението на двама колеги, които не харесват Code Complete, но харесаха тази книга). Особено ми хареса една секция, която говореше за добри практики за работа в екип – stand-up meetings, brown-bag lunches и разни други забавни и интересни неща. Определено научих доста от нея. Препоръчвам ви я и на вас.

Понятия

Наскоро ми разказаха за едно островно племе, което няма в езика си думи за числа. Когато им показвали снимки с по пет и с по седем камъка, те не правели разлика – за тях купчините представлявали едно и също. Във френския език има две различни думи за стол и стол с облегалки за ръце. Ако един французин ви дойде на гости, има много по-големи шансове да запомни какви са били столовете в къщата ви. Все симптоми на един интересен факт – думитете с които боравим моделират начина ни на мислене и на възприемане на света. А когато става въпрос за софтуерно разработване, моделират и начина ни на работа… Continue reading

Java, MIT 6.170

Наскоро си припомних материала, който Мило водеше на курса „Разработване на приложения с Java“. Това е доста лошо име за този курс, тъй като обекта му е съвсем различен. В оригинала си е нещо от рода на „лаборатория по разработване на софтуер“. От него може да научите доста интересни хавици. Като цяло фокуса му е ООП, но се говори за по-концептуални неща като абстракция, предствяне, „договор“ (contract), интерфейси и редица „теоритични“ неща, които на мен поне ми бяха от ползва в практиката. Базирано е на една хавица от MIT, в която университетските мозъци са наляли много мъдрост. Всичко е много добре написано и се разбира идеално. Горещо ви препоръчвам да му хвърлите един стабилен поглед, дори да се чувствате най-опитните в тази вода. Най-готината селекция от лекции е от есента на 2004-та – от нея научих доста за „концептуалните“ неща и смятам че си струва да им отделите времето. И понеже линк трудно се намира, ето ви го.

Ruby On Rails на практика

Миналия уикенд Петьо изнесе една презентация за Ruby On Rails на една конференция на RIABG.org и linux-bg.org. Интересното беше, че вместо да говори за писане на код той говореше за неговия сблъсък с RoR и изводите, които си е извадил. Можете да намерите видео от конференцията тук. За нещастие, звукът е далеч от идеален, но се разбира, ако се заслушате. Препоръчвам ви да му хвърлите един поглед, ако се интересувате от тая технология.

Птичките, пчеличките и Perl

Вчера едни колеги от университета ме открехнаха на един perl модул. По принцип не харесвам толкова много този език от както открих Ruby, но продължавам супер много да се кефя на обществото около него. Не само има култови образи (като Larry Wall), но и в CPAN-а могат да се намерят много свежи неща. Тоя модул е пример за нещо такова. Не просто е хипер кретенски, но и версията му е 0.69 и датата на качване е 1ви Април. Не са хора пърладжиите и това е.

Себичен питон

Метакласовете в Python са много яко нещо. Макар все още да не ми се е наложило да напиша дори един такъв за работата си, са много полезен източник на забавления. Сега ще ви покажа как с малко остроумие може да дефинирате класове по следния интересен начин:

class Person(object):
    __metaclass__ = selfless
    def __init__(name, age):
        self.name = name
        self.age = age

    def __repr__():
        return "Person(%s, %d)" % (repr(self.name), self.age)

    def sayHi():
        print "Hello, I’m %s and I’m %d years old" % (self.name, self.age)

    def rename(newName):
        self.name = newName

Интересното? Въобще не ви се налага да пишете self пред имената на методите.

Continue reading