FP (бағдарламалау тілі) - FP (programming language)

ФП
ПарадигмаФункция деңгейі
ЖобалағанДжон Бэкус
Бірінші пайда болды1977
Диалектілер
FP84
Әсер еткен
APL[1]
Әсер етті
FL, Хаскелл

ФП (қысқаша функционалды бағдарламалау)[2] Бұл бағдарламалау тілі жасалған Джон Бэкус қолдау функционалды деңгейдегі бағдарламалау[2] парадигма. Бұл атаулы айнымалыларды жоюға мүмкіндік береді. Бұл тіл Backus-тің 1977 жылы енгізілген Тюринг сыйлығы «Функционалды стиль және оның бағдарламаларының алгебрасы» деген тақырыппен «Бағдарламалауды фон Нейман Стилінен босатуға бола ма?» деген мақала. Мақала функционалды бағдарламалау зерттеулеріне қызығушылық тудырды,[3] сайып келгенде, Backus функционалды деңгей парадигмасы емес, қазіргі заманғы функционалды тілдерге әкеледі.

Тьюринг марапаттау қағазында Backus FP стилінің ламба есебіне негізделген тілдерден қалай ерекшеленетінін сипаттады:

FP жүйесі функционалды формалар деп аталатын біріктірілген формалардың бекітілген жиынтығын пайдалануға негізделген. Бұл және қарапайым анықтамалар, бұрынғылардан жаңа функциялар құрудың жалғыз құралы; олар ешқандай айнымалыларды немесе алмастырулар ережелерін қолданбайды және олар байланысты алгебраның амалдарына айналады. FP жүйесінің барлық функциялары бір типті: объектілерді объектілерге бейнелейді және әрқашан бір аргумент алады.[2]

ФП өзі ешқашан академиядан тыс жерде көп қолдана алмады.[4] 1980 жылдары Backus ізбасар тіл құрды, FL, ғылыми жоба болып қалды.

Шолу

The құндылықтар FP бағдарламалары бір-бірімен салыстырылатын а орнатылды қайсысы жабық астында реттілікті қалыптастыру:

егер х1,...,хn болып табылады құндылықтар, содан кейін жүйеліх1,...,хn〉 Сонымен қатар мәні

Бұл мәндерді кез-келген атомдар жиынтығынан құруға болады: бульдер, бүтін сандар, шындықтар, таңбалар және т. Б.:

логикалық   : {Т, F}бүтін   : {0,1,2,...,∞}кейіпкер : {'a', 'b', 'c', ...}таңба    : {х,ж,...}

болып табылады белгісіз мәні, немесе төменгі. Реттіліктер болып табылады төменгі консервант:

х1,...,,...,хn〉  =  

FP бағдарламалары функциялары f әрқайсысы жеке карта мәні х басқасына:

f:х білдіреді мәні қолдану нәтижесінде пайда болады функциясы f     дейін мәні х

Функциялар қарабайыр болып табылады (яғни FP ортасымен қамтамасыз етіледі) немесе примитивтерден құрылады бағдарламаны құру операциялары (деп те аталады функционалды).

Алғашқы функцияның мысалы болып табылады тұрақты, бұл мәнді өзгертеді х тұрақты бағаланатын функцияға . Функциялар қатаң:

f: = 

Қарапайым функцияның тағы бір мысалы - селектор функциясының отбасы, деп белгіленеді 1,2, ... қайда:

мен:〈х1,...,хn〉  =  хмен  егер 1 ≤ мен ≤ n = ⊥ әйтпесе

Функционалды

Қарапайым функциялардан айырмашылығы, функционалдар басқа функциялармен жұмыс істейді. Мысалы, кейбір функциялардың а бірлік сияқты 0 мәні қосу және 1 үшін көбейту. Функционалды бірлік осындай а шығарады мәні қолданылған кезде функция f біреуі бар:

бірлік +   =  0бірлік ×   =  1бірлік foo =  ⊥

Бұл FP негізгі функционалдары:

құрамы  fж        қайда fж:х = f:(ж:х)
құрылыс [f1,...,fn] қайда [f1,...,fn]:х =  〈f1:х,...,fn:х
жағдай (сағf;ж) қайда (сағf;ж):х   =  f:х   егер сағ:х  =  Т                                             =  ж:х   егер сағ:х  =  F                                             =      басқаша
бәріне қолдану  αf       қайда αf:〈х1,...,хn〉  = 〈f:х1,...,f:хn
оң жақ кірістіру  /f       қайда /f:〈х〉             =  х                       және     /f:〈х1,х2,...,хn〉  =  f:〈х1,/f:〈х2,...,хn>>                       және     /f:〈 〉             =  бірлік f
сол жаққа салыңыз  \f       қайда f:〈х〉             =  х                      және     f:〈х1,х2,...,хn〉  =  f:〈\f:〈х1,...,хn-1〉,хn>                      және     f:〈 〉             =  бірлік f

Теңдеу функциялары

Примитивтерден функционалдар құруға қосымша, функцияны теңдеумен рекурсивті түрде анықтауға болады, қарапайым түрі:

fEf

қайда Ef болып табылады өрнек примитивтерден, басқа анықталған функциялардан және функция белгісінен құрылған f функционалды қолдана отырып, өзі.

FP84

FP84 қосу үшін FP кеңейтімі болып табылады шексіз тізбектер, бағдарламашымен анықталған нысандарды біріктіру (Backus өзі қосқанға ұқсас FL, оның мұрагері ФП), және жалқау бағалау. FFP-ден айырмашылығы, FP84 Backus-тың FP-дегі басқа вариациялары, FP84 нысандар мен функциялардың арасындағы айырмашылықты анық көрсетеді: яғни, соңғысы енді біріншісінің тізбектерімен ұсынылмайды. FP84 кеңейтімдері тек дәйектілік құрылымына қолданылатын FP шектеулерін жою арқылы жүзеге асырылады емес-⊥ объектілері: FP84-де өрнектердің бүкіл әлемі (оның мағынасы ⊥ болатындарды қосқанда) астында жабылған дәйектілік құрылысы.

FP84 семантикасы бағдарламалардың негізгі алгебрасында жинақталған функция деңгейі бағдарламалармен айла-шарғы жасау және ой жүгірту үшін қолданылуы мүмкін теңдіктер.

Сондай-ақ қараңыз

  • FL, Backus-тің FP мұрагері
  • PLASM, FL диалектісі

Әдебиеттер тізімі

  1. ^ Бағдарламалау тілдерінің тұжырымдамасы, эволюциясы және қолданылуы Мұрағатталды 2016-03-11 Wayback Machine Пол Худак, 1989 ж
  2. ^ а б c Backus, J. (1978). «Бағдарламалауды фон Нейман стилінен босатуға бола ма? Функционалды стиль және оның алгебрасы». ACM байланысы. 21 (8): 613. дои:10.1145/359576.359579.
  3. ^ Янг, Джин (2017). «Саймон Пейтон-Джонспен сұхбат». Бағдарламалау тілдерінің адамдары.
  4. ^ Гаага, Джеймс (2007 жылғы 28 желтоқсан). «Функционалды бағдарламалау археологиясы». ХХІ ғасырдағы бағдарламалау.
  • Ыңғайлы болу үшін қарапайымдылықты құрбан ету: сызықты қайда сызасыз?, Джон Х. Уильямс және Эдвард Л. Виммерс, IBM Almaden ғылыми-зерттеу орталығы, он бесінші жылдық ACM SIGACT-SIGPLAN симпозиумының бағдарламалау тілдерінің принциптері, Сан-Диего, Калифорния, 1988 ж.

Сыртқы сілтемелер

FP бағдарламалары