Кариерата ми претърпя много обрати през годините. Преди да се „пенсионирам“ преди няколко години, бях изпълнявал повечето от професиите в света на софтуера: програмист (няколко пребивавания), дизайн, разработка на база данни, системен архитект, технически директор и главен изпълнителен директор сред тях. В началото започнах наистина да се интересувам от изучаването на езици за програмиране, които бяха от неясната страна на нещата. Едно старо списание, наречено „Dr. Dobbs Journal” — който приключи 38-годишно издание през 2014 г. — използваше статия в повечето броеве на някакъв език, за който никога не бях чувал.

Щях да изоставя това, което правех и да прекарам няколко часа или няколко дни - а в няколко случая дори седмици - в изследване на потенциала на тези малко познати, често нововъзникващи езици и среди за програмиране. Беше страхотно забавно.

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

Но откакто го срещнах за първи път, имах любим. Написах три книги за това в началото на 90-те години. Винаги, когато имам свободата да избирам езика за даден проект, първо се обръщам към него. Често го използвам за прототипиране на приложения с невероятна скорост, дори ако ще внедрявам на някакъв по-традиционен език.

И този език е Smalltalk.

Имам много от това, което смятам за страхотни причини за този избор, но не съм толкова потънал в езика, нито съм артикулиран в негова защита, както е „Ричард Кенет Енг“, чийто запален читател съм станал.

Моето намерение в тази статия не е да рекламирам Smalltalk; това ще дойде с времето. Засега искам да споделя една представа, която имах в историята на езика, която може да се окаже полезна за тези, които се интересуват от по-мащабните движения, случващи се в света на софтуера.

Започва като революция

В духовните и религиозните движения нещата се променят по начини, които обикновено са доста предвидими. Една (обикновено) малка група последователи на определен път получава още една идея за Истината, която се различава от тези на повечето привърженици. Това „семенно движение“ започва като вътрешно фокусирана реформа, която има за цел не да създаде нов път, а да пренасочи традиционния.

Онези движения на семена, които оцеляват, правят това чрез:

  • разширяване, така че да са по-големи от „ортодоксалните” последователи;
  • изчезване пред лицето на твърдата опозиция от страна на православните;
  • постепенно избледняват, тъй като техните нови идеи се поглъщат или влияят на ортодоксалното мислене до степен, в която и „новостартите“, и „традиционалистите“ са щастливи

За да вземем два примера от света на духовността, нека разгледаме накратко християнството като резултат от юдаизма и съвременните християнски адаптации на някои от ключовите учения на така нареченото движение на Новата мисъл.

Изненадващо е колко често виждам изумление да се появява по лицата на моите духовни ученици, когато им напомням, че всички ранни фигури в християнското движение (с много малко изключителни „езичници“) са били евреи. И все пак през първите 100-200 години християнските мисловни школи бяха школи на еврейската мисъл, които включваха известна степен на разбиране на Исус Христос като Месия.

Дойде време, когато това вътрешно движение – което всъщност се състоеше от най-малко седем такива „училища“ – се прекъсна (след като бяха изгонени от еврейските синагоги за ерес. В този случай разцеплението беше почти пълно. Християнското движение не остави след себе си нищо забележимо доказателства, че са повлияли по някакъв смислен начин на продължаващото развитие на юдаизма.

Преминавайки към по-съвременни времена, така нареченото движение на Новата мисъл в християнството започва по подобен начин. Практикуващите християни започнаха да виждат Исус Христос по различни начини: лечител, учител, свят човек (но в по-голямата си част не човешко същество с известна степен на божественост). Тези групи обикновено започват като събирания на членове на църквата, които желаят да изследват други измерения на Исус извън тези ортодоксални възгледи на основните църкви.

С течение на времето тези групи оказват влияние върху ортодоксалните възгледи на християнството, докато се отделят организационно от основната маса вярващи. Скоро дискусионните групи в сряда вечер поискаха собствена църковна идентичност и отделните църковни движения възникнаха, така да се каже, спонтанно. Днес масовото християнство - с може би единственото изключение на евангелското крило - е включило някои от ученията и практиките на Новата мисъл в собствения си поток от учения. Медитация, вяра в Единството на всичко, което е, силно приобщаващ социален и духовен ред, разчитане на основни духовни принципи, а не на конкретни човешки учения... всичко това е пример за това развитие.

Ако Новата мисъл трябваше да изчезне за една нощ, тя все още щеше да окаже значително влияние върху основното християнство.

Тогава Новата мисъл се превръща в „семенно движение“ в християнството. Неговият растеж или изчезване едва ли би означавало, че не е присъствал в съвременната църква.

И така с Smalltalk

Smalltalk е разработен в средата на 70-те години от екип на Xerox, ръководен от Алън Кей. Това беше напълно отцепваща се технология за програмиране, защото беше:

  • първата изцяло обектно-ориентирана езикова реализация от самото начало
  • първата среда за програмиране на живо, в която програмистът манипулира обекти в реално време
  • първата изцяло самостоятелна IDE (интегрирана среда за разработка) с тясно взаимосвързани браузъри, редактори, програми за отстраняване на грешки и дузина други инструменти на едно и също място

През годините Smalltalk имаше малко, но яростно лоялни последователи от хора, които понякога бяха възприемани като фанатици от връстниците си. Езикът също беше засегнат от проблеми от реалния свят като:

  • невъзможността да се доставят добре опаковани и лесно инсталирани самостоятелни приложения
  • огромността на набора от библиотеки на класове, дефинирани в основните версии на технологията
  • проблемът с кокошката и яйцето с липсата на достатъчно програмисти, за да посрещнат значително търсене, което попречи на търсенето да стане значително
  • напълно странно изглеждащият синтаксис, който направи езика толкова подходящ за експресивен дизайн и последваща лекота на четене от програмисти по поддръжка и студенти

Smalltalk никога не се е превърнал в широко популярен език в света на разработването на корпоративни продукти (въпреки че е много по-голям от всеки друг, но тези, които следят съдбата му отблизо, нямат представа). В този смисъл периодичното извиване на ръце от тези, които искат да разберат защо „Smalltalk се провали“, е често срещано явление на места, където се мотаят езикови наркомани.

Но факт е, че когато се погледне през призмата на „семенното движение“, Smalltalk е невероятно успешен. Той легитимира използването на чисто обектно-ориентирано програмиране (OOP), което, макар и почти никога да не се постига чрез последващо развитие на езика, е повлияло силно на огромното мнозинство от съвременните езици, включително най-вече C++, Objective-C, C#, Java, Python, Ruby , JavaScript и PHP. Без смелото пионерство, направено от Smalltalk — и някои от големите успехи, които неговите привърженици могат да посочат с гордост — не е ясно, че ООП ще заеме почетното място, което има в днешния свят на кодиране. (Признавам, че това споразумение не е универсално и че има хора, които се отвращават от ООП и го виждат като зло свиня на паметта и твърде бавно за „истинска работа“. Просто ще трябва да се съгласим да не сме съгласни.)

Така че където и да се намирате в спектъра от чувства към Smalltalk – от любов до омраза, от невежество до дълбока признателност, от объркване до майсторство – поне трябва да признаете неговата основна роля в историята на програмирането.

Това само по себе си, разбира се, не е причина да го приемете като език по ваш избор. Ще продължа да изследвам случая за Smalltalk на високо ниво на разбиране на процесите и езиците на програмиране в продължение на тази публикация.

Надявам се, че ще ме следвате и ще коментирате тези парчета, за да можем да се възползваме от различния си опит.