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

Произходът на персоналните компютри

1975 година бе революционна за персоналните компютри. Именно тогава излиза Altair 8800 – първият персонален компютър, който има голям търговски успех. След това се появява Altair Basic – първият език за програмиране, предназначен именно за този компютър и който е разработен от Бил Гейтс и Пол Алън.

Така изглежда работата на Altair Basic на Altair 8800 с използването на телетайп

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

Компютърните дисплеи

Революционният компютър Apple II излиза през 1977 година. Това е една много важна стъпка в историята на персоналните компютри. Apple II е крайъгълният камък на нова вълна компютри, в които данните се извеждат на графичен дисплей.

VisiCalc, работеща в Apple II

В същата година излиза VisiCalc – електронната таблица за Apple II. Според Стив Джобс именно тази програма е причината за огромния търговски успех на Apple II.

Графичните интерфейси

Първият графичен потребителски интерфейс (GUI, Graphical User Interface) е създаден от Xerox през 1973 година, а първият компютър, в който се използваше GUI с първата по рода си десктоп среда и мишка, е Xerox Alto. Този компютър оказва огромно влияние както върху компютъра Apple Macintosh, така и на операционната система Windows, които излизат съответно през 1984 и 1985 години.

Появата на графични потребителски интерфейси не само полага пътя към създаването на компютри, работата с които е интуитивно понятна, а и направи така, че тези персонални компютри могат да се използват от всеки. Благодарение на тях е възможно да видим особено интересния рекламен клип на Windows 1.01 от 1985 година.

Текстовото програмиране

Нека да се завърнем в наши дни. Ние непрекъснато взаимодействаме с компютрите и често забравяне, че преди време не е имало какъвто и да било графически потребителски интерфейс. Бихте ли могли да си представите работата с iPhone, при който вместо да стартирате приложенията с помощта на техните иконки само чрез докосване на сензорния екран, би трябвало да въвеждате команди от клавиатурата?

Всъщност доста странно е това, че програмирането на компютрите и до днес се осъществява именно по този начин – клавиатура и текст. В това отношение ние не сме се отдалечили особено много от първия Altair 8800 и от телетайпа. Ние въвеждаме инструкции в конзолата и подаваме структурирани текстови команди на компилаторите или интерпретаторите.

Какво е това? Програмиране от 1981-ва или от 2021-ва?

Много хора могат да кажат, че този подход е учудващо удобен и акуратен. И в известен смисъл това си е така. Но да си припомним, че вече сме 2021 година, а ние все още програмираме, използвайки текстови редактори, терминали и конзоли. Може би към днешен ден си струва да намерим един по-съвършен начин за създаване на програми?

Силните страни на визуализацията

Преимуществата на графичните интерфейси пред текстовете са очевидни. С тях се работи лесно, те са ефективни, красиви и дават много на потребителя.

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

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

Съвсем същото важи и при разработването на нови потребителски интерфейси.

Проблемите на визуализацията

Все пак и до днес създаваме програми и нов софтуер чрез въвеждането на текстове, както това се е правило преди цели 50 години. Това положение на нещата се нарича великата стагнация в програмирането.

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

Ако отново за малко се завърнем в миналото, то повечето съвременни no-code инструменти могат да бъдат сравнени с аркадните автомати. Тези автомати на времето са създадени за извършването на само една тясно специализирана задача. Те всъщност имат всичко, което има и в революционния Macintosh, който обаче изглеждаше като някакво вълшебство. Така например, те имат дисплей, като работата с тях е много лесна и дори малко дете без проблем можеше да ги използва. А това изключително много прилича на днешното поколение no-code инструменти.

Но на тях им липсва най-главното – универсалността. Тези устройства си имаха своите силни страни, но за тях е невъзможно да направят революция в програмирането. Източникът на революционните идеи е универсалността. Става дума за създаването на такъв софтуерен инструмент, който е интуитивно разбираем, мощен и едновременно с това даващ възможност за създаването на най-разнообразен софтуер без каквито и да било ограничения.

Как да решим тези проблеми

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

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

Брет Виктор показа няколко примера за подобни решения в своя много интересен доклад за принципите, които трябва да се спазват, и които трябва да са ръководни при една подобна дейност.

Пример за визуално редактиране на кода

Къде към днешен ден се използват визуалните инструменти за програмиране?

Към днешен ден във времената на сближаване на технологиите за визуализация и текстово програмиране има две основни категории софтуерни инструменти. Първата са инструментите за разработване на код, възможностите на които са разширени чрез различни визуални подходи като например IDE. Втората са no-code инструментите – визуални средства, даващи възможност свободно да се работи със съществуващите API и програмни библиотеки.

Инструментите за разработчици, възможностите на които са разширени чрез различни визуализации

Индустрията, която най-бързо развива идеите за визуалното програмиране, е разработването на компютърни игри. Игрите се създават от големи екипи програмисти и тяхното разработване струва големи пари. Всичко това няма как да зависи от остарелите методи за работа, които се използват от кодерите на обикновени приложения или уеб сайтове. Така например, създателите на игри не могат да разчитат на нещо от рода на създаване на дизайн на макета, който после се изпращам на разработчика с предложения ръчно да бъде описан този макет с помощта например, на CSS. Ако този разработчик работи по стария начин – ръчно и ред след ред създава сложните виртуални светове, на които се радваме в съвременните игри, то тази работа би била истински кошмар.

Кой би искал ръчно подобно на уеб разработчик, който използва CSS, да опише показаната по-горе с цена от играта? Едва ли ще има желаещи.

Необходимостта разработката на игри да бъде изведена извън пределите на това, което може да бъде направено с две ръце и клавиатура, доведе гейм индустрията към необходимостта от влагането на сериозни инвестиции във визуални инструменти, с които се работи в реално време. Много добър пример за такъв инструмент е Unreal Engine. Всеки може да пробва този енджин.

Друг много добър пример от тази сфера е новият SwiftUI в Xcode.

No-code инструментите

В сферата на традиционното писане на програми и уеб разработка се наблюдава стремителното развитие на така наречените No-code инструменти. Платформите от рода на Airtable, Zapier, Builder и Retool предлагат изключително удобни средства за визуална разработка, които генерират много добър сорс код и без проблеми използват съществуващите данни и API.

Тези платформи работят много добре, понеже са изградени на базата на вече съществуващата инфраструктура – на базата на наличните React компоненти, бази-данни и API. Освен това, те дават възможност детайлно да се задават правата за редактиране на едни или други части на общия проект.

Накъде отиваме?

Връзката между традиционните системи за програмиране и no-code средите с стечение на времето ще става все по-силна и по-здрава. Ние се намираме в самото начало на Ерата на визуалното програмиране, а днешният ден можем да сравним с времената, когато се появи Apple II. Вече си имаме съвременен вариант на Macintosh (опростени и мощни средства за визуална разработка), както и хипотетичен iPhone (нещо, което с лекота може да се използва от всеки).

Ето няколко от многобройните проекти, които към днешен ден изглеждат особено интересни: Storybook, JSX Lite, Blockly и Build.

А какво е вашето мнение относно no-code инструментите?

Вашият коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *