Programmēšana

Funkcionālās valodas: kas tās ir, kurp dodas

Pat ja daži apgalvo, kas tieši tas ir, funkcionālā programmēšana arvien piesaista izstrādātājus. Trīs populārākās funkcionālās valodas - Clojure, F # un Scala - ir pieejamas, lai uzlabotu.

Funkcionāla programmēšana dažiem izstrādātājiem ir galvenā pievilcība, saka Scala dibinātājs Martins Oderskis: "Šī segmenta programmētājiem patīk funkcionāla programmēšana, jo tas padara kodu skaidrāku, labāk strukturētu un novērš daudzas kļūdu klases." Bet daži apgalvo, ka funkcionāla programmēšana noved pie mazāk efektīvas programmatūras.

Funkcionālai programmēšanai ir jādomā arī par programmēšanu jaunā veidā, saka Deivids Stefens, Microsoft programmu vadītājs .Net un F # pārstāvis. Abstrakcijas var būt problēma: "Kad jūs padarāt kodu abstraktāku, kad jūs attālināties no manipulēšanas ar bitiem un skaidri iet cauri cilpām, šo abstrakciju izpratne var aizņemt vairāk laika."

Kas tieši ir funkcionālā valoda?

Funkcionālā programmēšana visbūtiskākajā nozīmē attiecas uz skaitļošanas uzskatīšanu par matemātiskām funkcijām. Papildus valodām, par kurām jau no paša sākuma tiek iekasēta maksa par funkcionālu, Java un C # simpātijas ir kļuvušas funkcionālākas, pievienojot atbalstu lambda izteiksmēm.

Bet precīzu funkcionālās programmēšanas definīciju var būt grūti noteikt. Clojurefun emuārs min vairākas definīcijas, kuras, pēc tās domām, ir nepareizas, tostarp definējot funkcionālo programmēšanu kā funkcionāla stila iespējošanu ar augstākas pakāpes funkcijām vai valodu, kas atbalsta lambdas. Tajā teikts, ka pareizā definīcija ir valoda, kas uzsver funkcijas un nemaināmus datus.

Bet Clojure emuāra vēlamā definīcija ne vienmēr ir pareiza, saka citi. "Autors izvēlas vienu, kas, starp citu, vislabāk atbilst Clojure - nav brīnums, ka šis ir Clojure emuārs," saka Scala's Odersky. "Man ir interpretācija, kas ir tuvu viņam, bet nav vienāda."

Funkcija, pēc Odersky teiktā, ir koda gabals, kas kartē ieejas un izejas, un tam nav citu efektu. "Tā ir funkcijas matemātiskā definīcija, kuru mēs šeit izmantojam. Dažreiz šīs funkcijas sauc par" tīrām ", lai atšķirtu tās no, teiksim, funkcijām C." Funkcionālā valoda koncentrējas uz programmēšanu ar tīrām funkcijām, padarot to viegli un jaudīgi, saka Oderskis, kurš nodibināja Typesafe, kas ir Typesafe JVM lietojumprogrammu izstrādes platformas nodrošinātājs.

Funkcionālo programmēšanu var apvienot ar citām paradigmām, viņš atzīmē. "Piemēram, funkcionāls ļoti labi sader ar objektorientētu. Scala šajā ziņā ir funkcionāla valoda. Es piekrītu, ka tikai ar lambdas valodu valoda nedarbojas; tā ir nepieciešama, bet nepietiekama."

Clojure izstrādātājs Rich Hickey, kurš ir arī CTO pie sistēmu izstrādātāja Cognitect, piekrīt Clojure emuāra galvenajam apgalvojumam. "Rakstā pareizi norādīts, ka pirmās klases vai augstākas pakāpes funkcijas nav tas, kas ir funkcionālā programmēšana. Funkcionālā programmēšana ir padarīt programmēšanu vairāk līdzīgu matemātikai," viņš saka. Tas nozīmē, ka joprojām ir funkcionālu programmēšanas definīciju spektrs, saka Hikijs.

Microsoft Stephens uzskata, ka funkcionālās iespējas sniedzas pāri valodām. "Vispopulārākā funkcionālā programmēšanas valoda pasaulē ir Excel," viņš saka. Vienkāršā Excel darblapā var būt kolonna ar virkni vērtību, piemēram, A1 X 2. "Tā ir tīra A1 funkcija, un A1 nemainās, tāpēc jūs aprēķināt vērtības no šiem esošajiem datiem."

Viņš saka, ka Microsoft valodas integrētā vaicājuma (Linq) tehnoloģija nodrošina arī funkcionālu programmēšanu. "Gandrīz katra programmēšanas valoda tagad pārņem funkcijas no funkcionālajām valodām."

Stefens citē nemaināmus datus kā kritiskus funkcionālajai programmēšanai. Vienlaicīgums - programmas ar vairākiem pavedieniem, kas vienlaikus darbojas ar datiem, arī gūst labumu no nemainīgiem datiem, viņš atzīmē. "Mēs saucam [F #] par funkcionāli pirmo valodu, jo tā nāk no citu valodu mantojuma." Tas arī atbalsta objektorientētu programmēšanu un darbojas ar C # un Visual Basic, viņš saka.

Clojure's Hickey funkcionālo valodu ieviešanu uztver kā atbildi uz pieaugošo spiedienu, ar kuru saskaras izstrādātāji, kuriem šajās dienās ir jāuzņemas lielākas problēmas. "Lai to izdarītu, viņiem jāsamazina nejauša savu programmu sarežģītība. Tagad ir plaši atzīts, ka visaptverošs stāvoklis un blakusparādības ir galvenais sarežģītības un kļūdu avots programmās," saka Hikijs. "Kaut arī ir iespējams samazināt stāvokļa daudzumu programmās, kas rakstītas nefunkcionālās valodās, to ir dramatiski vieglāk un ātrāk izdarīt valodā, kas funkcionālo programmēšanu padara idiomātu un noklusējumu."

Kas notiks pēc trim galvenajām funkcionālajām valodām

13 gadus vecā Scala ir primārā valoda datu zinātnē, saka Scala dibinātājs Oderskis. Tiek lēsts, ka JVM tiek atbalstīts no 400 000 līdz 500 000 lietotāju. Īstermiņa plāni prasa tā optimizēšanu Java 8, kurā jaunākā standarta Java jaunināšanas baitkoda instrukcijas ļautu Scala ģenerēt efektīvāku kodu.

Ilgtermiņā Scala iegūs sakopta tipa sistēmu, drošākus makro un lielāku platformas atbalstu, apsverot LLVM kompilatora aizmuguri. Tiek plānoti turpmāki uzlabojumi, lai uzlabotu Scala.js lietojamību, lai apkopotu Scala JavaScript.

Deviņus gadus vecais Clojure, kura pamatā ir arī JVM, ir izmantots finanšu, mazumtirdzniecības, programmatūras un izklaides jomā, stāsta Hikijs. "Tas ir izmantots dažādās lietojumprogrammu jomās, piemēram, darījumu apstrādē un analīzē, lielajos datos, tīkla operācijās, prognozēšanas analīzē, meklēšanā, drošībā un patērētāju piedāvājumos."

11 gadus veco F # dibināja Microsoft Research, ko veicis Dons Šīms, un to pārrauga F # fonds. Tas tiek izmantots plašā lietojumprogrammu diapazonā un darbojas operētājsistēmās Linux, OS X, Android, iOS, Windows un pārlūkprogrammās. "Tas, pie kā mēs tagad strādājam, ir tā, lai tas darbotos ar .Net Core," .Net Framework atvērtā koda, starpplatformu modulārā versija, saka Stefens. Virkņu interpolācija, kas atvieglo virkņu rakstīšanu, atrodas uz rasēšanas dēļa.

$config[zx-auto] not found$config[zx-overlay] not found