Језици функционалног програмирања: прошлост, садашњост и будућност

Аутор: Laura McKinney
Датум Стварања: 4 Април 2021
Ажурирати Датум: 11 Може 2024
Anonim
Sadašnjost i budućnost humanističkih znanosti u hrvatskom društvu
Видео: Sadašnjost i budućnost humanističkih znanosti u hrvatskom društvu

Садржај


Одузети:

Да бисмо боље разумели ову посебну класу програмских језика, погледаћемо дефиницију, карактеристике и историју повезану са тим.

Цлојуре, Еликир, Елм, Ф #, Хаскелл, Идрис и Сцала су сва имена која ћете вероватно видети међу препорукама за функционалне програмске језике које вреди учити. Ово су језици који се данас користе и који ће се можда користити у годинама које долазе.

Језик попут хаскелл-а одликује се најдуговјечнијим, али још новији попут Цлојуре-а заправо су укоријењени у старијим језицима који и даље обликују еволуцију функционалног програмирања (ФП). (Прочитајте директно од стручњака за програмирање: Који функцијски програмски језик је најбоље научити сада?)

Да бисмо боље разумели ову различиту класу програмских језика, погледаћемо дефиницију, карактеристике и историју повезану са тим. (Погледајте ИНФОГРАФСКИ: Историја језика програмирања.)

Зашто се то назива функционалним програмирањем?

ФП је добио име по приступу конструкцији софтвера изграђеном на стварању чистих функција. Основа свих функционалних програмских језика је Ламбда Цалцулус (такође се пише као λ-рачун). Описана је као "најмањи универзални програмски језик на свету."


Према томе, ФП је базиран на математичким функцијама које користе условне изразе и рекурзију за обављање израчуна. Садржи следеће карактеристике:

  • Подаци садржани у њему су непроменљиви.
  • Избегавају се нежељени ефекти, које су све промене стања које се дешавају изван позване функције и дељених стања.
  • ФП програмирање је лакше одржавати јер не морате бринути да ћете случајно променити било шта изван дате функције.
  • Има референтну транспарентност.
  • Модуларни дизајн омогућава мале модуле који се могу брзо кодирати и вероватније ће их бити могуће поново користити, што доприноси бржем развоју програма. Такође се модули могу засебно тестирати што може смањити време утрошено на тестирање и уклањање погрешака.

Укоријењена у математичким функцијама

Како се функционално програмирање полаже из Ламбда Цалцулуса, његова историја сеже у тридесете године двадесетог века, када га је Алонзо Цхурцх увео. Наравно, тада се није користио за рачунаре.


1960

Тек 1960. године, амерички рачунарски и когнитивни научник по имену Јохн МцЦартхи објавио је рекурзивне функције симболичких израза и њихово рачунање машином. Као резултат свог истраживања о таквој функцији, МцЦартхи је створио оно што је препознато као први функционални програмски језик: ЛИСП.

Добар резиме тога можете пронаћи у чланку Тхе Биртх оф ЛИСП - резиме оригиналног рада Јохна МцЦартхија. Језик је имао изданке, укључујући Цоммон Лисп, Сцхеме и елисп, а да не спомињемо Цлојуре, који се тренутно веома користи.

Скоро две деценије касније, следећи велики напредак догодио се на Универзитету у Единбургху, где су истраживачи дефинисали МЛ (Металангуаге). Истраживачима је био потребан језик који ће радити за њихов систем за аутоматско доказивање теорема (ЛЦФ). "

МЛ је одговарао рачуну за то, а 1978 су такође открили да би могао бити користан као општи програмски језик. Верзије укључују Стандард МЛ у Нев Јерсеију и ЦАМЛ.

Друго име повезано са 1978. годином и Единбургхом је Нада. Извор имена је Трг Хопе Парк, где је Единбургх-ово одељење за рачунарску науку (али и за параметре вишег реда и „извори вечни“ и тако даље.) “Нада се издваја као први језик који користи позиве по обрасцу.

1990. до данас: Хаскелл

Хаскелл, назван по логици Хаскелл Б. Цурри, био је производ одбора који је почео да ради на формулисању језика 1987. године, а прву верзију је објавио 1990. Најновији стандард је Хаскелл 2010, а друга верзија је предвиђена за 2020 .

Хаскелл је постао парадигма савремених функционалних језика, одликује их „карактеристике као што су функције вишег реда, закључивање типа, лењо оцењивање и кориснички одређени тип података“.

Функције вишег реда узимају друге функције као аргументе или их враћају као резултате. Омогућују апликације које би се такође могле назвати увијањем. На тај начин ће појединачно примијенити функцију на своје аргументе, а како свака апликација враћа нову функцију, тада прихваћа сљедећи аргумент.

Иако се лењост углавном сматра лошом ствари, она у сврху програмирања служи сврси. Као што је објашњено у Шта је лења процена? Супротно „стриктном оцењивању“, приступ лењо оцењивању је процењивање само оног што се захтева.

Актуелни језици функционалног програмирања

Хаскелл је најдоминантније име ове категорије, вероватно због своје дуге историје у односу на остале ФП. То је такође имало велики утицај на њихов развој. Симон Пеитон Јонес, главни истраживач Мицрософт-а и кључни сарадник Хаскелл-а, говорио је о Хаскелл-овом трајном утицају и самим собом и на начин на који је обликовао друге језике.

"Ствари попут Линк-а, упите интегрисане у језик на Ц #, то је уствари директно из Хаскелл-а. Ф # радни токови се црпе директно из ове монадичке И / О приче."

Цлојуре

Цлојуре је нови дијалект Лиспа који је створио Рицх Хицкеи. Оно што разликује Цлојуре од осталих ЛИСП дијалеката је то што се покреће на Јава платформи и компајлира у ЈВМ бајт код. Предност која нуди је његова интеграција са Јава чак и онима које нису написане у Цлојуре-у.

Како Хицкеи објашњава на Цлојуре.орг-у, "Цлојуре омогућава једноставан приступ Јава оквирима, са опционим наговештајима о типу и закључивању типа како би се осигурало да позиви на Јаву могу избећи рефлексију."

Такође се каже да је „Лиспов приступ шифрирању података и његовом макро систему још увек раздвојен“ од осталих Лиспових дијалеката, и додаје да су његове „мапе, скупови и вектори као прва класа у Цлојуреу као и листе у Лиспу . "

Хицкеи је такође поделио своје образложење за стварање Цлојуре-а као искориштавање свих предности Лиспа без неких његових недостатака. Након постављања више точака са мецима под различитим заглавима, Хицкеи то резимира на следећи начин: „Укратко, мислим да Цлојуре заузима јединствену нишу као функционални Лисп за ЈВМ са снажном подршком за истовремени рад. „

Елм

Елм ​​је назив чисто функционалног језика који је први пут дизајнирао Еван Цзаплицки 2012. Популаран је међу веб програмерима којима се свиђа због стварања корисничких интерфејса. Компајлер Елм циља ХТМЛ, ЦСС и ЈаваСцрипт. Ради са ЈаваСцрипт библиотекама на исти начин као што Цлојуре ради са Јава библиотекама.

Оно што се разликује од Елм-а је да користи статичко проверавање типа, што помаже у уклањању изузетака током извођења, јер би се грешке затекле у току компајлирања. Као што се Елм страница хвали, „НоРедИнк се пребацио на Елм пре отприлике две године, а 250к + линије касније, још увек нису морали да се брбљају да би поправили збуњујућу изузетак током производње“.

Одсуство видљивих грешака на крајњем кориснику очигледна је предност језика. То је разлог зашто се такође осећа оправданим у примени описа: „Укусни језик“ на себе.

Еликир

Као што Еликир-ово мјесто описује: „Еликир је динамичан, функционалан језик дизајниран за изградњу скалабилних и одрживих апликација.“ Еликир је усмјерен ка стварању високо доступних, ниско-латенцијских система. Ради на Ерланг ВМ-у, екосистему који Хероку, ВхатсАпп, Кларна и други користе за "дистрибуиране, отпорне на грешке апликације."

Предност за Еликир програмере је у томе што могу позивати Ерланг функцију без трошка рунтиме-а.

Ф #

Ф # је програмски језик отвореног кода, више платформски, функционално-први програмски језик. Свако се може придружити софтверској фондацији Ф #. Веб локација фондације овако сажима језик:

Ф # ради на Линуку, Мац ОС Кс, Андроиду, иОС-у, Виндовс-у, ГПУ-у и прегледачима. Бесплатно је за употребу и отворен је под лиценцом ОСИ-ом.

Ф # се користи у широком распону подручја примене и подржавају га активна отворена заједница и водеће компаније које нуде професионалне алате.

Идрис

Идрис је општи наменски функционални програмски језик који има утицаје Хаскелл-а и МЛ-а.

Као што је овде објашњено, карактеришу га зависни типови, што омогућава „типовима да се заснивају на вредностима, што значи да се неки аспекти понашања програма могу прецизирати тачно у типу.“ Такође се разликује по састављању, са жељном проценом.

ЈаваСцрипт

Иако ЈаваСцрипт није строго функционалан програмски језик јер омогућава и објектно оријентисан приступ, он има компоненту која произилази из функционалног програмирања. То укључује функције вишег реда. Такође новије верзије стандарда ЕЦМАСцрипт дају поправке за проблем изменљивости.

Котлин

Међу најновијим језицима (објављен тек у фебруару 2016.) Котлин је био пет година у изради и тестирању. Користе га компаније попут Амек, НБЦ Дигитал, Екпедиа и Градле. То није чисти функционалан језик.

Као и ЈаваСцрипт, Котлин је способан за објективно и функционалне конструкције. Поред тога, у потпуности је интероперабилан са програмским језицима Јава.

Међу предностима које нуди је и концизније од Јава програмирања. Неки мисле да је могуће исећи преко трећине линија кода. Такође нуди све предности повезане са функционалним језицима програмирања, укључујући функције вишег реда, функције проширења и ламбдас.

Његова свестраност чини га „погодним за било коју врсту развоја, било да се ради о серверу, веб страни клијента и Андроиду“, а ради на томе да постане компатибилна са Апплеовим иОС-ом.

Сцала

Сцала је још један хибрид у томе што нуди објективно и функционално програмирање.

„Сцала статички типови помажу у избегавању грешака у сложеним апликацијама, а његова ЈВМ и ЈаваСцрипт рунтимес омогућавају вам изградњу високо-перформанси система са лаким приступом огромним екосистемима библиотека“, како објашњава на својој веб локацији.

Шта смо научили

Телстра-ов велики аналитичар података Марк Марк Молонеи резимира зашто је сада време да пригрлимо функционалне језике и зашто програмери треба да размотре њихово учење:

Један мит је да је функционално програмирање тешко или превише академско. То је само још једна вештина за учење. Потребно је времена и праксе да се савлада - ништа другачије од путовања кроз које су програмери прошли да би научили објектно оријентисано програмирање крајем 80-их / раних 90-их. Технологија наставља да се развија. То је један од разлога што волим софтвер. Учење како учити једнако је важно као и оно што знате.