@А40 възрастта ти не е толкова от значение. Обаче бих те посъветвал да завършиш нещо от сорта на Софтуни, Софтакад или подобно, за да е сигурно, че имаш необходимото знание, за да започнеш работа. Все пак внимавай, какво записваш. Не всички „академии“ стават за нещо и сертификатите им имат някаква стойност.
Иначе следваш правилният начин. Програмиране всеки ден и по много е начина. И разбира се, не просто да преписваш някакви примерчета, ами да се опиташ да ги разбереш. Това най-лесно става, като се опиташ да ги модифицираш. Например: този цикъл ми вади всички четни числа в поредицата от едно до сто, аз ще я променя да ми дава всяко трето четно число в обхвата от 500 до 1 000. А какво ще стане да го пренапиша от „за“ (for) на докато (while)? Малки стъпки, малки промени, мислене. И си ти човека.
За Телерик си закъснял с нещо като две години, примерно. Те отдавна не растат толкова агресивно и не наемат завършилите академията им. Освен това и въпросната академия силно свива и редуцира дейността си.
@rwk все повече ме радваш. Все повече в теб виждам себе си преди двадесет години да речем, с малката разлика, че тогава бях комуняга, грешките на растежа, хи-хи. Иска ми се да си бях запазил тази невинност и оптимизъм.
Примера даден от Гейт е просто гениален, защото такъв е и той, но опасявам се, може да бъде разбран само от човек, който вече знае, за какво става въпрос. Но не се безпокой. На твоето ниво са и хората, които срещу милиони пишат държавните портали.
Отказ от отговорност — Така. Ще се опитам да те „светна“. Ще повторя някои неща, които вече очевидно знаеш, но са ми необходими да навържа логиката. Ще прескоча множество важни въпроси като комуникационни канали и протоколи, за да не натоварвам обяснението. Също така няма да е много очевидна разликата между приложно, програмно обезпечение (software) и апаратна част (hardware). Надявам се осъзнаваш разделението между тях.
При паяжината има две страни. Едната подава съдържание, която ще наричаме служител (server), а другата го получава и нея наричаме клиент (client). Тези две неща са специален вид машини, компютри. Следва уточнението, че разните умнофони и планшети също са компютри, само че скапани.
Клиента има нужда от програма, която да разбира това, което изпраща служителя. Тази програма се нарича интернет-навигатор (browser). На нея можеш да гледаш като на нещо като например преглеждачка за pdf например Adobe (Acrobat) Reader или μpdf. Сиреч програмата, която е твоята страна, интернет-навигатора може само да интерпретира (прочете) подаденото му съдържание и да покаже резултата на екрана. Този въпрос ще има допълнително разяснение.
Самият документ, който получава е написан на специализиран (dsl), декларативен език за програмиране, който се казва html(в приблизителен превод: език за обозначение на разширен текст). Обаче, много по-лесно е да гледаш на него като документен формат например odf или doc. И този въпрос ще претърпи развитие.
Демек служителят подава документ, който ти виждаш при теб. В самото начало (1991-ва) това е било точно така. Но след няколко години хората взели да се питат — добре де, има ли вариант да не пишем всеки път едно и също форматиране, а само да сменяме текста? Това било зародиша на шаблонните системи, това, което вече познаваш. Но питайки се подобен въпрос и търсейки възможни решения, стигнали и до нов — хубаво де, а не може ли цялата работа да стане програмируема и въобще цялото съдържание да се образува (generaite) в движение? Последвал и нов — а може ли различните части на документа да идват от различни места и да се сглобяват при поискване (on demand)? Тези два въпроса оформили новата (към днес вехта) концепция за динамичното съдържание.
Това е и новото за теб. Системите за шаблонизиране никак не са достатъчни днес, съдържанието все повече се образува и обслужва динамично. Това е нещо, което най-често се случва на служителя. Той извършва работата и изпраща към клиента готов отговор във форма разбиераема за него. Това е непрестанен процес, който ти не виждаш. И няма как да видиш, не се случва при теб.
Обаче това не е края. Около и малко преди да започнат да се питат дали не могат да шаблонизират съдържанието, хората взели да се питат, не могат ли в интернет-навигатора да положат нещо повече от заявления (декларативният език) и да имат нещо по-процедурно (imperative). Сиреч не само да заповядват какво да се прави, а да казват точният начин, по който да бъде изпълнено.
Този въпрос е от огромна важност и заслужава да спрем за момент развитието на основната тема. Защо им е било необходимо нещо такова на пръв поглед абсурдно? Така де, всеки иска да е шеф, никой не ще да е хамал. Въпроса е, че е било необходимо да се внесе човечност в сивия, машинен свят. Ще ти го демонстрирам нагледно. Изключи си композицията и размърдай прозореца. Какъв е ефекта? Някаква мега дървения, грозно та не се трае. Включи го пак и тръсни праните гащи. Какво се случи? Стана ти драго на душата. С други думи „луд на шаренко се радва“.
Ако се позамислиш, такова поведение съвсем не е изолирано. В средата на документните процесори също има процедурно програмиране, така наречените макроси, които в действителност не са точно макроси. Нали сравнихме html с документен формат? Въпроса е в това, че декларативният (заповеднически) стил на програмиране е лесен и разбираем, но с ограничения. Преди да наредиш нещо, някой преди това трябва да е обучил машината, как точно да го стори. А това в настоящето може да стане само чрез съставяне на процедура.
Аналогията е напълно покриваща реалността. Един работник може да копае. Обаче как този работник, който може да копае, можеш да го накараш да прекопае лозе? Ами съставяш му алгоритъм — минаваш с мотичка да извадиш плевелите. Не трябва да ги копваш през стъблото, а малко по-настрани, за да се извади корена. Когато започнеш да обръщаш на правата лопата пък, копваш по-дълбоко, за да се образуват падове около лозниците, за да може да се оттича към тях влага от дъждовете. (Примера не е пълен) Същото е.
Понеже идеята тръгва като „луд на шаренко се радва“ да направим средата по-атрактивна, то времето било малко, само две седмици, а на всичкото отгоре изпълнителя не схванал, какво искат от него. Трябва да подчертаем, че нещата се развиват през деветдесет и шеста, времето, когато Гай Стийл е тогавашният кумир, какъвто е сегашният Андерс Хелсберг, а пък Sicp е библията. Та пича всъщност не създава чист процедурен език, а по-скоро функционален. Прави толкова оригинално нещо, че опровергава ботаниците в компютърните науки. Но е спра до тук, защото може книга да се напише по този интересен казус.
Това, което ни интересува е, че в пясъчника наречен интернет-навигатор се оказваме с почти процедурен език. Освен това обещахме едно разяснение. Интернет-навигатора може да е програма за преглед на специален вид документи, но далеч не е само това. Тя например е още телефон. Да. Понеже не всичко се случва локално на машината, а има отдалечена такава, то ние трябва да сме в състояние да се свържем с нея и да си говорим. Сиреч представи си го като skype, viber, whatsapp.
Можем да изпълняваме конкретни инструкции, можем да получаваме и изпращаме заявки, какво следва? Превръщаме html от език за програмиране в контейнер. Но има проблем. Той не е подходящ за това. Какво правим? Продължаваме да вкарваме ново съдържание, което да е възможно да се подкачва локално и начини да си говорим с ОС. Почваш да се губиш? Спокойно, всички се губим.
Ще се опитаме да обобщим. Класическата схема е (обикновено отдалечен) служител и (обикновено локален) клиент. Служителя ни дава отговори на заявки от клиента, които са във вид разбираем за него. Обаче клиента не знае, какво се случва при служителя и как точно се стига до този отговор. Чисто технически обаче това не е напълно вярно днес. Не само клиента може да отправя заявки към служителя. Вече и служителя може да отправя такива към клиента и то по поне десетина различни начина. Заявките и отговорите пък може да са разпръснати на малки частички, които пристигат по различно време. Може да се променя документа и локално, не само да се получава в цялост. Не целият код се изпълнява при служителя. Вече има множество код, който се изпълнява и при клиента. Нещо повече множество действия се повтарят и на двете места.
Скучен пример — имаш тривиален формуляр за регистрация в някаква услуга. Обаче служителят е наложил ограничение потребителското ти име да не е по-малко от пет знака. Това един път се проверява в интернет-навигатора и втори път при служителя, защото той не може да е сигурен в отговора. Първото може да се изпусне, но е удобно един път потребителят да е уведомен предварително, втори път, за да не се изпълняват заявки, за които знайно ще доведат до грешка и следователно напразно изпълнение. Ако се пише за държавата, може да се изпусне второто
Уф, омръзна ми, дано си разбрал. Ако не, питай!