Шибаните хора, с шибани идеали,
шибани ченгета, с шибани морали,
шибани дебелаци, и шибани лайняри,
майната им,
шибана е тайната им,
със лопати в гъзовете,
всички просяци ще мрете!
Толкова много обичам тая шибана дума, шибано, шибано, шибано....
I can't get no sleep. The internet never sleeps.
В програмирането обикновено когато програмата стане достатъчно голяма, тя започва да се разделя на отделни модули с логика. Тези модули са отделни файлове със код. Тези същите файлове които завършват с .py. Понякога имаме нужда от допълнителни инструменти(функции и класове) и ще открием че някой вече е написал нещо което ще ни свърши работа. Вместо да пишем свои собствени инструменти, няма да е лошо ако можехме да вземем на готово чужди такива. Python идва в комплект със доста голямо количество библиотеки и модули, които можем да използваме, също така понякога ние самите ще си напишем библиотеки под формата на други модули, и ще искаме да можем използваме функциите и класовете от тях и в новата си програма. За целта ще можем да използваме конструкцията import. Нищо сложно, просто създаваме една функция, да речем от горните примери функцията square в папката ви C:\mypython\:square=lambda x: x*x
Този код го запишете в файла square.py. Отворете command prompt-а и напишете следната команда:cd c:\mypython\
С тази команда се придвижвате към директорията в която е вашия файл. След това стартирайте python като напишете следното за уйндолс:c:\python25\python.exe
А за Линукс е просто python.
Сега можете да импортирате файла си със командата import:>>>import square
Сега имаме достъп до имената във square, там има само едноименната функция:
>>>square.square(4)
16
Сега ако искаме да добавите функция във файла си, и после да я имате в интерпретатора, може да използвате функцията reload() която презарежда импортирани файлове. Да речем че добавим следната функция към файла ни:
def sumofsquares(x,y):
return square(x)+square(y)
Сега в интерпретатора пишем:>>>reload(square)
>>>square.sumofsquares(4,4)
32
Това е ок, но да речем че искаме да импортираме само една от двете функции, можем да го направим по следния начин:>>>from square import square
>>>square(4)
16
Можем също така да импортираме неща и да им даваме имена:>>>from square import square as sq
>>>sq(4)
16
Можете също така да импортирате всички имена, без да трябва по късно да осъществявате достъп до тях със операторът '.', просто пишем:
>>>from square import*
>>>square(4)
16
>>>sumofsquares(4,4)
32
Това не се препоръчва много, защото е възможно да се импортират имена, които да не искаме да импортираме, също така се замърсява глобалната среда с прекалено много имена и по късно трудно се разбира коя функция от кой модул е и четимоста на кода отива на вятъра.
Е, това е за сега, първата част приключи.
В тази глава ще ви запозная със основните неща които трябва да знаете. Вече видяхте как се изпълнява код. Сега по подробно. Кодът се изпълнява по 2 начина. Първия е като се пише директно в интерпретатора, този който започва със >>> . Другия начин е да се запишете кодът във файл, и да се отвори със Python. Файловете винаги завършат със .py. Когато пишем код директно в интерпретатора, ние ще видим резултатът веднага, но кодът няма да бъде запазен, той се губи в мига в който затворите интерпретатора. За да не се губи код, съхранявайте го във .py файлове. Стартирането е под Линукс е лесно, само отваряте интерпретатора и пишете python file.py, където file.py е вашата програма, интерпретаторът ще отвори файла, ще го изпълни и ще върне резултат. При уйнсолс нещата са малко по сложни. Вече споменах че можете да използвате IDLE. Препоръчвам ви да си направите папка директно във C:\, за да ви е лесно да я отворите. В нея ще съхранявате всичките си файлове, разбира се става и на всякъде, но аз предпочитам адреса да е кратък, за да не печатам много. Да речем, създайте папката с името mypython във C:(или ако предпочитане някоя друга папка) Сега пътят до папката е C:\mypython\ . Да речем че там сме съхранили файла от миналата глава, сега имаме файла C:\mypython\stupid.py, за да го стартираме имаме 2 избора, първия е със дясното копче на мишката да дадем edit with IDLE, след което даваме на Run->run module и би трябвало да видите изписан резултатът на екрана във другия прозорец с интерпретатора. Не е толкова трудно, сега по трудния вариант, макар и командния ред в уйндолс да е малко черна магия, всъщност нещата са доста лесни. Отворете command prompt-а от старт менюто, както виждате, той ви показва в коя директория се намирате. За да използвате командния промпт, първо трябва да добавите python към него, за целта напишете
path=c:\python25\;%path%
Това ще добави python към командния ред, и ще си спестите малко писане, сега можете да отворите файла stupid.py като напишете:
python c:\mypython\stupid.py
Готово, вече стартирахте програмата си. Малко много говорих за уйндолс, но предполагам че доста от вас ползват него. Ако искате да научите повече, поразровете се в нета.
Има още нещо което трябва да научите. Това са коментарите. Коментарът е текст, който интерпретаторът игнорира, той не се изпълнява от компютърът, а е само там за да могат програмистите да оставят малки съобщения за други програмисти, или за себе си за в бъдеще, нещо като малки бележки, например обяснение защо този код е написан така или бележка която да напомня че даден код трябва да се пренапише, или че има грешка в даден код. Ето как изглеждат коментарите:
#Този текст е коментар, той започва със знакът '#',
#всеки ред със решетка в началото си е коментар
#и се се игнорира от #интерпретаторът.
#Те могат да се разпространяват на много редове,
# но трябва всеки да започва с решетка
Има и още един вид коментари, със тройни кавички ''' '''(“““ “““ също става), който може да се простира на много редове:
'''Този коментар е на много
редове
само трябва текста да започва и завършва с тройни кавички'''
Когато събереш хората от моя клас, обикновената дискусията протича по следния начин:
Първо кратка дискусия за плесен и червеи които промиват мозъците на мравки и буболечки и ги убивах като им експлодират мозъците, или като ги принуждават да се самоубият във вода.
Дискусия за големия адронен корайдер
дискусия за теорията на струните(свързано с горното)
дискусия за квантовата физика и шанса да премина през една стена, определен от квантовата механика
дискусия за дядо коледа, дали е капиталист или социал декомкат, стигнахме до извода че е християн-демократ
дядо мраз и комунистите
северния полюс и комунистите
Дискусия за KRS One, ако не знаете кой е той, намерете си музиката му, той е философ и учител, и хардкор рапър.
Днешния блог пост е по кратък. Тъй като почва даскалото може да очакване 2 неша:
Ще ъпдейтвам по рядко, около 3 пъти седмично, може и по рядко, или по често, зависи от това колко ми е напрегната програмата, не се сърдете, няма да ви липсвам.
Ще пиша по технически неща, или най малкото една ли ще има блогове като този, или разни философски есета като предишния пост. Ако напиша нещо интересно обаче, ще го публикувам, просто няма да ми е това фокусът, блогът ми си е и винаги ще бъде технологично ориентиран.
Причините за това че ще намаля малко темпото е не само даскалото(то е дори по малката причина). Проосто искам да поработя върху някой истински проекти, да имам нещо за което да блогвам, забелязах че последните няколко дни нямам никъкви теми, всъщност това е защото когато човек само блогва, няма за какво да блогва, това е нещо като парадокс.
Перфекционизъм
Версия 4*
Причината поради която не поставах нищо вчера, беше че написах първия си опит за този пост, след това го препрочетох и осъзнах колко е скапан, след това започнах да разсъждавам и като всеки друг път когато разсъждавам върху нещо, стигнах до интересен извод. Аз се превръщам в перфекционист.
Какво е перфекционизъм? Преди време тренирах паркур. Основната идея във паркура, е че всеки може да прескочи парапет, важното е да го направиш с финес и елегантност, и да изразходваш най малко енергия. Идеята не е да правиш пируети и да се фукаш с трикчета, а да се придвижиш от точка А до точка Б най ефективно. Това е нещото което прави паркура освен спорт и изкуство. Перфекционизмът е стремежът да подобряваш това което правиш, в същото време опитът ти те кара да подобряваш самият себе си.
Започнах да се стремя към перфекционизъм от скоро, дни всъщност. Може би защото започнах да пиша повече, и забелязах че мога да се справя по добре, полагам толкова усилие. Програмиране, рисуване и блогване са 3-те ми хобита. Напоследък най много пиша, на второ място кодирам, и най малко рисувам. Преди винаги съм рисувал с химикал малки карикатури и комикси, сега рисувам с молив, и открих, че ползвам гумата доста често, очевидно стремежът към съвършенство се е пренесъл и там.
Може би коренът на този стремеж идва от програмирането. При програмирането, ако си мислиш че можеш да напишеш някаква програма перфектно от първия път, жестоко се лъжеш. И не говоря само за бъгове, а за архитектура и дизайн, тези неща почти винаги трябва са променят в последствие, програмирането е мястото където перфекционизмът е най нужен.
Не съм особено добър художник, или програмист, или писател(ър..блогер...ъ..не съм писател..) , постоянно уча нови неща и се стремя към подобрение. Ако сте чели по старите ми блог постове, повечето са УЖАСНИ, особено онези за Python, те са супер скапани, нищо чудно че вече пренаписах половината за pdf варианта на туториъла, те са просто ужасни и плачеха за редакция. Надявам се самия туториъл да стане добре, полагам доста труд.
Специално за писането, една от причините да полагам толкова труд, е може би факта че чета доста блогове, и повечето са или на моето ниво, или малко по добре, или в някой случаи супер зле. Но сред тях има няколко които са страшно добри, точно тези блогове(и не само, тук включвам есета, туториъли, документация и всякакъв друг текст публикуван в интернет) ме карат да се стремя да съм по добър, чувствам се задължен поне да опитам да пиша добре, и да ми е приятно да чета старите си писания.
Въпреки това, след няколко седмици(редакция: 1 час :D)ще отворя този документ и ше си кажа “Можех да се справя и по добре“, и все пак тази реакция е по добра от колкото сегашното “Как съм могъл да напиша това? Заслужавам анална клизма за наказание“. Това е нормално, ако нещо дори малко не те накара да искаш да го промениш, не си истински перфекционист.
*Първата версия беше половин страница, изхвърлих я напълно, втората беше 2 страници, от тези 2 страници остана само първите 2 параграфа, третата версия ми хареса и само леко я коригирах, когато я поствах, което означава че на практика това е 4-та версия. Писането общо отне 5 часа.