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

Վիքիպեդիայից՝ ազատ հանրագիտարանից
Jump to navigation Jump to search
Scala
Изображение логотипа
Տեսակօբյեկտ կողմնորոշված ծրագրավորման լեզու, ֆունկցիոնալ ծրագրավորման լեզու, բազմահարացուցային ծրագրավորման լեզու, JVM language? և ծրագրավորման լեզու
Առաջացել էհունվարի 20, 2004
ՍտեղծողMartin Odersky? և École polytechnique fédérale de Lausanne?
Նախագծող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։ Վերցված է 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 

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