За многообразието и тенденциите в тази област вижте какво споделя Георги Ангелов, старши програмист в Astea Solutions
Георги Ангелов е старши програмист в Astea Solutions. Завършил е „Компютърни науки“ във ФМИ към СУ, където е и водил упражнения по „Увод в програмирането“, „Обектно-ориентирано програмиране” и „Структури от данни и програмиране”. Той ще бъде един от лекторите на Astea Conference. Свързахме се с него, за да ни разкаже повече за развитието на езиците за програмиране - кои са водещите тенденции и какво да очакваме в бъдеще. Ето какво сподели пред екипа на Economy.bg:
По данни на Етнолог хората по света говорят 7097 различни естествени езика. От тях 23 се говорят от над половината от населението. Наблюдава ли се подобно разнообразие и при компютърните езици и кои са най-масово използваните?
Смята се, че първите естествени езици са се зародили преди поне сто хиляди години. За не повече от 70 години, през които съществуват езици за програмиране, са се появили над 700 програмни езика. Както при естествените, малка част от тях се използват масово. Всеки от тях малко или много специализира в определена насока. Например, JavaScript води класациите за популярност, заради силния си фокус в разработката на уебсайтове и доскорошната липса на добри алтернативи в браузърите. Java все още доминира сървърната страна и големите бизнес продукти. Python набира все повече и повече популярност, изпреварвайки много от големите имена като PHP, C++ и C#. Основната причина за това развитие е не толкова самият език, колкото наличността на множество обвързани с него инструменти за машинно самообучение и анализ на данни.
С какво темпо се появяват нови езици за програмиране?
Всеки програмист може да създаде език за програмиране. Достатъчни са единствено визия и много свободно време. Изразните средства, които трябва да съдържа един език, за да бъде използваем, могат да се преброят на пръсти. За да пожъне успех обаче, трябва да дава добри причини на хората да го използват. Такива могат да бъдат силните му изразни средства, общността, зародила се около него, готовите инструменти, които предлага, или просто поддръжка на голям брой устройства. Нерядко език за програмиране се появява и като резултат от желанието за справяне с определен вид проблеми в конкретна компания. Примери за такива езици са Rust, Dart, Swift, Go, TypeScript и други. За да „узрее“ един език и да започне да се използва от голям брой хора, са необходими поне няколко години. Една от причините за това е нуждата от голям брой съпътстващи го библиотеки за различни цели. Затова и повечето набиращи популярност в момента езици са на поне няколко години.
Какви са типичните предимства на по-новите езици за програмиране?
Едни от най-важните фактори в софтуерната индустрия са времето за качествена разработка на даден проект и последващите усилия, необходими за поддръжката му. Новите езици за програмиране обикновено се базират на идеи от вече доказали се такива. Правят ги по-удобни за използване и ги структурират така, че пътят на най-малкото съпротивление да бъдат доказали се добри практики. Често дават и нови, по-силни изразни средства, които намаляват умствената енергия, необходима за решаване на все по-сложните проблеми, с които се сблъскваме в работата.
Кои от новите езици предизвикват твоя интерес и с какво?
Всеки език се базира на поне малко различни идеи, прави определени компромиси и подхожда по собствен начин към проблемната област. Освен като част от инструментариума на езика, тези идеи, макар и не винаги революционни, се оказват много полезни и извън рамките му. Пресни примери за това са управлението на паметта в Rust, структурното типизиране в TypeScript и Go, паралелизмът на Clojure, и т.н. Във всички случаи е изключително полезно човек да може да борави с много различни подходи и да се запознае с възможно най-много идеи, дори да не му се налага да ги прилага ежедневно. Винаги ще се намери ситуация, в която това е искрата просветление, която ще му помогне.
Какви смяташ, че ще са водещите тенденции при развитието на езиците за програмиране през следващите 20 години?
20 години са цяла вечност в света на технологиите. Въпреки това, освен ако не се появи качествено нова хардуерна архитектура, програмните езици ще продължат да се развиват в същата посока, която се наблюдава в момента. А именно: конкурентност - възможността за едновременна работа над повече от една задача; статична валидация - „поумняване“ на компилаторите, хващайки все повече и повече възможни проблеми; изразителност (по-добри абстракции, по-ясен и по-кратък код) и бързина.
Смяташ ли, че на даден етап хората ще могат да програмират, използвайки естествен език?
Програмирането се състои в разбиране на проблемната област и измисляне на подходящо решение. Много често дори идеолозите на даден софтуер не могат да предвидят всички възможни ситуации, в които ще бъде поставена програмата/сайтът от реални потребители. Освен правилното поведение, програмирането включва и постигането на баланс между много фактори като време за разработка, ефективност при изпълнение, както и възможността за лесно добавяне и промяна на функционалности. Конкретно писането на код в много случаи е малка част от процеса и прехвърлянето на избраната архитектура и алгоритми в код не представлява усилие за един опитен програмист. Програмните езици са оптимизирани за максимално кратка и недвусмислена комуникация на инструкции и идеи. Естествените езици не са подходящи за програмиране, заради големия брой двусмислени думи и изрази, както и многословието, с което хората се изразяват. Все пак, общувайки помежду си, не целим възможно най-кратка и точна комуникация, а такава, която изразява чувствата, желанията и настроенията ни. В този смисъл, прагът при навлизане в тази област не е научаването на език за програмиране, а научаването на идеите зад тях и промяната на начина на мислене. Никой опитен програмист не би искал да програмира на естествен език! Съществува и друга страна на въпроса - ще заменят ли компютрите програмистите? В далечното бъдеще - вероятно да. Но за да може една машина да изпълнява тази функция, тя трябва да притежава интелект и креативност. Може да се каже, че когато това се случи, компютрите ще могат да заменят хората във всяка професия. За радост или съжаление, все още сме далеч от това бъдеще.
Предстои ти да бъдеш лектор на Astea Conference: Revolutions. Какво ще научат хората от срещата с теб?
Основното послание, което се стремя да предам е, че си заслужава човек да е любознателен и да „колекционира“ идеи - особено в толкова динамичната сфера като софтуерната разработка. Всеки нов научен език и подход ни прави по-добри в това, което правим, и ни развива като професионалисти. Това е добре формулирано от Alan Perlis, пионер в работата си по езиците за програмиране и носител на първата Тюринг награда: „Език за програмиране, който не променя начина, по който мислим за програмирането, не си струва да се знае.“