Scala (ծրագրավորման լեզու)

Վիքիպեդիայից՝ ազատ հանրագիտարանից
Jump to navigation Jump to search
Scala
Изображение логотипа
Տեսակօբյեկտ կողմնորոշված ծրագրավորման լեզու, ֆունկցիոնալ ծրագրավորման լեզու, բազմահարացուցային ծրագրավորման լեզու, JVM language? և ծրագրավորման լեզու
Առաջացել էհունվարի 20, 2004
ՍտեղծողMartin Odersky? և Լոզանի դաշնային պոլիտեխնիկական դպրոց
ՆախագծողMartin Odersky?
Ընդլայնումներ.scala և .sc
Ներշնչվել էML[1], Ջավա[1], Erlang[1], Haskell[1], Smalltalk, Standard ML, OCaml?, Common Lisp, Eiffel, Oz?, Pizza? և Scheme
ԱրտոնագիրBSD արտոնագիր և Apache License 2.0[2]
Կայքscala-lang.org(անգլ.)
Աղբյուր կոդgithub.com/scala/scala

Scala, ծրագրավորման բազմաբնույթ պարադիգմային լեզու, որը նախատեսված է հակիրճ և տիպային անվտանգ լինելու համար՝ բաղադրիչ ծրագրային ապահովման հեշտ և արագ ստեղծման համար՝ համատեղելով ֆունկցիոնալ և օբյեկտին ուղղված ծրագրավորման հնարավորությունները։ Լեզվի առաջին տարբերակները ստեղծվել են 2003 թվականին Լոզանի դաշնային պոլիտեխնիկական դպրոցի ծրագրավորման մեթոդների լաբորատորիայի թիմի կողմից՝ Մարտին Օդերսկու ղեկավարությամբ, լեզուն ներդրված է Java և JavaScript հարթակների համար։ Ըստ Ջեյմս Ստրախանի ՝ Groovy[3] ծրագրավորման լեզվի ստեղծողի, Scala-ն կարող է դառնալ Java լեզվի ժառանգորդը ։

Պատմություն[խմբագրել | խմբագրել կոդը]

Լեզուն ստեղծվել է 2001-2004 թվականներին EPFL[4] ծրագրավորման մեթոդների լաբորատորիայում։ Այն հետազոտության արդյունք էր, որն ուղղված էր բաղադրիչ ծրագրային ապահովման համար բարելավված լեզվական աջակցության մշակմանը։ Լեզվի զարգացումը հիմնված էր երկու գաղափարի վրա։

1.Բաղադրիչ ծրագրային ապահովման ծրագրավորման լեզուն պետք է լինի մասշտաբային այն առումով, որ պետք է հնարավոր լինի նկարագրել ինչպես փոքր, այնպես էլ մեծ մասերը՝ օգտագործելով նույն հասկացությունները։ Հետևաբար, ուշադրությունը կենտրոնացվել է աբստրակցիայի, բաղադրության և տարրալուծման մեխանիզմների վրա՝ մեծ թվով պարզունակների ներդրման փոխարեն, որոնք կարող են օգտակար լինել միայն մեկ մակարդակի մասշտաբով։

2.Մասշտաբային բաղադրիչի աջակցությունը կարող է տրամադրվել ծրագրավորման լեզվով, որը միավորում և ընդհանրացնում է օբյեկտի վրա հիմնված և ֆունկցիոնալ ծրագրավորումը։ Scala- ի հիմնական տեխնիկական նորամուծությունները հասկացություններ են, որոնք միաձուլում են ծրագրավորման այս հարացույցները։ Ստատիկ տպագրված լեզուներում, ինչպիսին է Scala-ն, այս պարադիգմները մինչ այժմ գրեթե ամբողջությամբ առանձին են եղել։

Լեզուն ընդհանուր օգտագործման համար թողարկվել է JVM [5]հարթակում 2004 թվականի հունվարին և .NET[6] հարթակում ՝ 2004 թվականի հունիսին, 2016 թվականին ստեղծվել է LLVM կոմպիլյատորը (Scala Native)[7]:

Դիզայնի ծագումը[խմբագրել | խմբագրել կոդը]

Լեզվի ձևավորման վրա ազդել են բազմաթիվ լեզուներ և հետազոտական ​​աշխատանքներ:Առաջին հերթին լեզուն կլանել է Java և C # հասկացությունների և շարահյուսական կոնվենցիաների զգալի քանակություն։ Հատկությունների արտահայտման եղանակը հիմնականում փոխառված է Սաթերից։ Միասնական օբյեկտի մոդելի հայեցակարգը վերցված է Smalltalk-ից։ BETA[8]-ից ծագեց այն գաղափարը, որ ամեն ինչ, ներառյալ դասերը, պետք է լինեն բույն։ Scala-ի վերացական տեսակները շատ նման են SML[9]-ի և OCaml[10]-ի աբստրակտ ստորագրության տեսակներին, որոնք ընդհանուր են ամբողջական բաղադրիչների համատեքստում։

Ինչ-որ առումով Scala-ն Pizza-[11]ի աշխատանքի շարունակությունն է ։ Ինչպես Pizza-ն, Scala-ն էլ հավաքում է Java VM-ի համար՝ ավելացնելով ավելի բարձր կարգի ֆունկցիաներ, օրինաչափությունների համապատասխանեցում, կոնստրուկտներ, որոնք ի սկզբանե ստեղծվել են ֆունկցիոնալ ծրագրավորման համայնքում։ Թեև Pizza-ն հետամնաց համատեղելի է Java-ի հետ, Scala-ի նպատակը պարզապես փոխգործունակությունն է, ուստի այն դիզայնի մեջ ավելի շատ ազատություն ունի։ Scala-ի մեկ այլ նպատակն է ապահովել առաջադեմ կոնստրուկցիաներ բաղադրիչների աբստրակցիայի և բաղադրության համար՝ ի տարբերություն մի քանի վերջին հետազոտական ​​մշակումների։

Լեզվի հիմնական ասպեկտները[խմբագրել | խմբագրել կոդը]

Scala ծրագրերը շատ նման են Java ծրագրերին, և նրանք ազատ են փոխազդելու Java կոդի հետ։ Լեզուն ներառում է միատեսակ օբյեկտի մոդել՝ այն իմաստով, որ ցանկացած արժեք օբյեկտ է, իսկ ցանկացած գործողություն՝ մեթոդի կանչ։ Միևնույն ժամանակ, այն նաև ֆունկցիոնալ լեզու է այն առումով, որ գործառույթները լիարժեք արժեքներ են։

Scala-ն ներառում է հզոր և հետևողական աբստրակցիոն հասկացություններ ինչպես տեսակների, այնպես էլ արժեքների համար։ Մասնավորապես, լեզուն պարունակում է ճկուն սիմետրիկ միքսին կոնստրուկտներ դասի և հատկանիշի կազմի համար։ Հնարավոր է թույլ է տալիս տարրալուծել առարկաները՝ համեմատելով օրինաչափության հետ; Կաղապարներն ու արտահայտությունները ընդհանրացվել են՝ աջակցելու XML փաստաթղթերի բնական մշակմանը։ Ընդհանուր առմամբ, այս կոնստրուկցիաները հեշտացնում են ինքնուրույն բաղադրիչների արտահայտումը Scala գրադարանների միջոցով՝ առանց հատուկ լեզվական կոնստրուկտների օգտագործման։

Լեզուն թույլ է տալիս բաղադրիչների արտաքին ընդլայնումներ՝ օգտագործելով դիտումները։ Ընդհանուր ծրագրավորման հնարավորություններն իրականացվում են ջեներիկների աջակցությամբ, ներառյալ ավելի բարձր տեսակի ջեներիկները։ Ի լրումն դասական կառուցվածքային տվյալների տարբեր տեսակների, լեզուն ներառում է էկզիստենցիալ տեսակների աջակցություն։

Ֆունկցիոնալ լեզու[խմբագրել | խմբագրել կոդը]

Յուրաքանչյուր ֆունկցիա արժեք է։ Լեզուն ապահովում է թեթև շարահյուսություն՝ անանուն և որոշակի գործառույթներ սահմանելու համար։ Յուրաքանչյուր կառուցվածք վերադարձնում է արժեք։ Կաղապարների համընկնումը բնականաբար կիրառվում է XML մշակման համար կանոնավոր արտահայտություններով։

Օգտագործում[խմբագրել | խմբագրել կոդը]

Scala-ում գրված հիմնական վեբ շրջանակներն են - Play, Lift: Դրանց թվում նշվում են մի շարք խոշոր ծառայություններ, մասնավորապես, Play-ն օգտագործում է Gilt-ը և Coursera-ն , իսկ Foursquare-ը՝ Lift-ը ։

Սոցիալական LinkedIn[12]-ը օգտագործում է Scalatra միկրոշրջանակը՝ աջակցելու իր Signal API-ին։

2009 թվականի ապրիլին Twitter-ը հայտարարեց, որ ինքը թարգմանել է իր սերվերի կոդի մեծ մասը Ruby-ից Scala, իսկ մնացածը պատրաստվում է թարգմանել ։ 2011 թվականի ապրիլին The Guardian-ի առցանց տարբերակը Java-ից թարգմանվեց Scala:

Apache Spark-ը, Apache Ignite-ը (GridGain-ի հիմնական արտադրանքի անվճար տարբերակը) և Apache Kafka-ն հիմնականում գրված են Scala-ում։

Լեզվի ակտիվ օգտագործողներից է նաև UBS բանկը ։

Scala-ի զարգացման ենթակառուցվածքի կարևոր մասը՝ Sbt-ի ավտոմատ կառուցման գործիքը, նույնպես գրված է Scala-ում։

Գրականություն[խմբագրել | խմբագրել կոդը]

Անգլերեն[խմբագրել | խմբագրել կոդը]

  • Joshua D. Suereth. Scala in Depth[13]. — Manning Publications , 2012. — С. 225. — ISBN 978-1-935182-70-2.
  • Gregory Meredith. Monadic Design Patterns for the Web[14] . — 1st. — 2011. — С. 300.
  • Nilanjan Raychaudhuri. Scala in Action . — 1st. — Manning. — С. 525. — ISBN 978-1-935182-75-7.
  • Dean Wampler, Alex Payne. Programming Scala: Scalability = Functional Programming + Objects [15]. — 1st. — O’Reilly Media, 2009. — P. 448. — ISBN 0-596-15595-6.
  • Martin Odersky, Lex Spoon, Bill Venners. Programming in Scala: A Comprehensive Step-by-step Guide[16] . — 2nd. — Artima Inc, 2010. — P. 883/852. — ISBN 978-0-9815316-4-9.
  • David Pollak. Beginning Scala[17] . — 1st. — Apress, 2009. — С. 776. — ISBN 1-4302-1989-0. Архивная копия от 5 декабря 2010 на Wayback Machine
  • Perrett, Tim. Lift in Action . — 1st. — Manning, 2011. — С. 450. — ISBN 978-1-935182-80-1.
  • Christos Loverdos, Apostolos Syropoulos. Steps in Scala: An Introduction to Object-Functional Programming. — 1st. — Cambridge University Press, 2010. — P. xviii + 485. — ISBN 978-0-521-74758-5.
  • Venkat Subramaniam. Programming Scala: Tackle Multi-Core Complexity on the Java Virtual Machine[18]. — 1st. — Pragmatic Bookshelf ., 2009. — P. 250. — ISBN 1-934356-31-X.
  • Cay Horstmann. Scala for the Impatient[19] . — 1st. — Addison-Wesley Professional, 2012. — С. 360. — ISBN 0-321-77409-4.

Ռուսերեն[խմբագրել | խմբագրել կոդը]

  • Хорстман К. Scala для нетерпеливых. — ДМК пресс, 2013. — 408 с. — ISBN 978-5-94074-920-2, 978-0-321-77409-5.
  • Одерски М., Спун Л., Веннерс Б. Scala. Профессиональное программирование = Programming in Scala: Updated for Scala 2.12. — Питер, 2018. — 688 с. — ISBN 978-5-496-02951-3.
  • Прокопец А. Конкурентное программирование на SCALA. — ДМК пресс, 2017. — 342 с. — ISBN 978-5-97060-572-1.
  • Scala в примерах, перевод руководства Мартина Одерски в викиучебнике
  • Scala Школа! и Эффективная Scala — русские версии открытых учебников от Twitter
  • Путеводитель по Scala: серия статей на сайте IBM developerWorks

Ծանոթագրություններ[խմբագրել | խմբագրել կոդը]

  1. 1,0 1,1 1,2 1,3 http://www.artima.com/pins1ed/a-scalable-language.html#1.4
  2. https://www.scala-lang.org/news/2.12.8
  3. «Groovy» (ռուսերեն)։ 2021-09-25 
  4. «Федеральная политехническая школа Лозанны» (ռուսերեն)։ 2021-03-14 
  5. «Java Virtual Machine» (ռուսերեն)։ 2021-05-14 
  6. «.NET Framework» (ռուսերեն)։ 2021-10-09 
  7. «Scala (язык программирования)» (ռուսերեն)։ 2021-01-24 
  8. «BETA» (ռուսերեն)։ 2021-01-30 
  9. «Standard ML» (ռուսերեն)։ 2021-06-19 
  10. «OCaml» (ռուսերեն)։ 2021-10-28 
  11. «Pizza (programming language)» (անգլերեն)։ 2021-03-26 
  12. «LinkedIn» (ռուսերեն)։ 2021-09-09 
  13. Suereth Joshua D. (2012)։ Scala in depth։ Library Genesis։ Shelter Island, NY : Manning։ ISBN 978-1-935182-70-2 
  14. Meredith, Lucius (2021-07-16), leithaus/XTrace, https://github.com/leithaus/XTrace/blob/8498f3294c8e8e52fe526d6dc53956bc18237b7a/src/main/book/content/monadic.pdf, վերցված է 2021-11-02 
  15. «Programming Scala [Book]»։ www.oreilly.com (անգլերեն)։ Վերցված է 2021-11-02 
  16. «Programming in Scala, Fourth Edition»։ www.artima.com։ Վերցված է 2021-11-02 
  17. «APRESS.COM : Beginning Scala : 9781430219897»։ web.archive.org։ 2010-12-05։ Արխիվացված է օրիգինալից 2010-12-05-ին։ Վերցված է 2021-11-02 
  18. «Pragmatic Bookshelf: By Developers, For Developers»։ pragprog.com։ Վերցված է 2021-11-02 
  19. Horstmann Cay S. (2012-03-06)։ Scala for the Impatient (1st ed.)։ Addison-Wesley Professional.։ ISBN 978-0-321-77409-5 

Արտաքին հղումներ[խմբագրել | խմբագրել կոդը]