30 юли 2008

Learning python 3-rd edition

Learning python 3-rd edition е най добрата книга за начинаещи python програмисти. Аз имам 2-рото издание което е по стара версия, но за сметка на тове е на български. С него и започнах да уча python по сериозно. Преди него прочетох няколко онлайн туториъла само за да да добия някъква представа за езика, туториълите може да намерите с помощта на гуугоол. Прочетох я за нула време и още не преминал половината книга можех да пиша доста готини скриптчета. Когато започнах, около нова година 07/08 да се занимавам с програмиране имах само повърхностни познания по c++ от даскало(разбирате защо са били повърхностни). За отрицателно време схванах доста сложни неща които така и не разбирах в c++(не съм се и напъвал де).

Сега чета 3-тото издание, което е ъпдейтнато за сегашната версия на python 2.5, 2-рото издание на книгата е за 2.2. Чета по диагонал защото е на английски, и защото е на монитора ми и не обичам да чета дълги текстове на монитора си, а и също така тази книга е за начинаещи, а аз съм вече горе долу в средната категория програмисти и повечето неща ги знам, вече преминах през първите 200 страници от близо 750(дебелите книги са готини, може да убиваш паяци с тях, но pdf-овете са безполезни) Разбира се заради бързото ми и диагонално четене и пропускане на скучните части очаквам да премина през нещата които съм чел доста бързо. Чакам да стигна до по интересните части които са за напреднали.

Имам основни познания по обектно ориентирано програмиране от 2-рото издание, но не съм се задълбочавал, и то с добри мотиви. Не искам да превръщам този пост в анти-ООП, защото това е NOT COOL, но обектно ориентираното програмиране по моето мнение е начин хората с по скапани езици да заобикалят ограниченията си. Python е доста мощен език и ООП не е особено нужно за да се преодоляват ограниченията му, защото повечето смъртни нямат нужда да ги преодоляват :D Смятам обаче да науча добре тази парадигма и да го използвам при нужда, вече овладях някой доста интересни техники с функционалното програмиране. Обектно ориентираното програмиране има някой допирни точки с него и със сигурност може да се правят много готини неща ако се смесват.

Като цяло това е причината да почна да чета книгата отново, ООП. Python вече има много мощни структури от данни, за разлика от по слабите езици, и няма нужда да си ги дефинирам със класове, вече разполага със много библиотеки с класове и функции, за да не е нужно да се пишат на ново, също така разполага с много мощни синтактични конструкции, цикли, и различни оператори върху вградените типове, както и мощни функции. Всичко това означава че ако не правите GUI или симулации, най вероятно ООП ще ви трябва по малко от колкото в други по слаби езици, които няма да назовавам буквално, просто ще кажа че имената им са смешни и единия звучи като герой от междузвездни войни, а другия просто не мога да му измисля метафора :D

Също така реших да науча ООП по подробно и защото трябваше да забавя работата си. Преди известно време започнах да чета The Django Book . Страхотната книга за уеб фреймуъркът Django, писана от самите създатели. Книгата е обаче за версията 0.96 и тази версия все още има проблеми с обратната съвместимост, въпреки че се използва активно, чакам версия 1.0 когато по думите на разработчиците няма да има проблеми с обратната съвместимост и ще има стабилно API, което няма да се променя активно както сега. Тъй като не обичам да си губя времето в четене на документация и търсене на причините поради които кодът ми не работи както очаквам, реших да изчакам да излезе новата версия, както и документацията за нея, за да мога да науча по ефективно как да разработвам с Django.

Също така и искам да науча python наистина добре, казвам наистина наистина добре, искам да знам всички малки детайли относно ядрото на езика за да мога да го използвам ефективно, искам да знам хитрите трикчета и как да правя нещата по ефективно. Не се задоволявам с повърхностни познания, причината поради която почнах да уча scheme беше не защото исках да науча толкова много scheme, а защото исках да науча как да пиша добър функционален код в python, поради тази причина ще науча и smalltalk, за да науча как да пиша добър ООП код в python, поради тази причина и няма да уча, хмм, езика с междузвездното име :D от него може да прихвана някой лоши практики. Като например нещата за които говори този по умен от мен човек:

http://dirtsimple.org/2004/12/python-is-not-java.html

Няма коментари: