سكالا (لغة برمجة)
Paradigm | Multi-paradigm: concurrent, functional, imperative, object-oriented |
---|---|
Designed by | Martin Odersky |
Developer | Programming Methods Laboratory of École polytechnique fédérale de Lausanne |
First appeared | 20 يناير 2004 |
الإصدار المستقر | 2.13.4
/ 19 نوفمبر 2020 |
Typing discipline | Inferred, static, strong, structural |
Implementation language | Scala |
Platform |
|
License | Apache License 2.0[2] |
Filename extensions | .scala, .sc |
Website | www |
Influenced by | |
Common Lisp,[3] Eiffel, Erlang, Haskell,[4] Java,[5] OCaml,[5] Oz, Pizza,[6] Scheme,[5] Smalltalk, Standard ML[5] | |
Influenced | |
Ceylon, Fantom, F#, Kotlin, Lasso, Red | |
|
سكالا Scala ( /ˈskɑːlɑː/ SKAH-lah)[7] هي لغة برمجة للأغراض العامة توفر الدعم لكل من البرمجة كائنية التوجه و البرمجة الوظيفية. اللغة لديها نوع كتابة ثابتة. مصممة لتكون موجزة،[8] تهدف العديد من قرارات تصميم سكالا إلى معالجة انتقادات جاڤا.[6]
الغرض من شيفرة مصدر سكالا أن يتم تجميعها إلى جاڤا بايت كود، بحيث يتم تشغيل الكود القابل للتنفيذ الناتج على آلة جاڤا الافتراضية. توفر سكالا التوافق اللغوي مع جاڤا، بحيث يمكن الإشارة إلى المكتبات المكتوبة بأي من اللغتين مباشرةً في رمز سكالا أو جاڤا.[9] مثل جاڤا، فإن سكالا هي كائنية التوجه، وتستخدم بناء قوس مجعد تذكرنا بـ لغة البرمجة سي. بخلاف جاڤا، تتمتع سكالا بالعديد من ميزات البرمجة الوظيفية مثل المخطط و ML المعيارية و هاسكل، بما في ذلك الكاري، الثبات، التقييم حسب الحاجة، ومطابقة النمط. كما أن لديها نظام نوع متقدم يدعم نوع البيانات الجبرية، التباين والتناقض، أنواع عالية المستوى (ولكن ليس أنواع عالية المستوى) و نوع مجهول. تشمل الميزات الأخرى لـ سكالا غير الموجودة في جاڤا التحميل الزائد للمشغل، والپارامترات الاختيارية، و الپارامتر المحدد، و السلسلة الأولية. على العكس من ذلك، فإن ميزة جاڤا غير الموجودة في سكالا هي الاستثناء المحدد، والتي ثبت أنها مثيرة للجدل.[10]
اسم سكالا هو عبارة عن مجموعة من التحجيم و اللغة، مما يدل على أنها مصممة للنمو مع متطلبات مستخدميها.[11]
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
تاريخ
بدأ تصميم سكالا في عام 2001 في المعهد الاتحادي للتكنولوجيا في لوزان (EPFL) (في لوزان، سويسرا) بواسطة مارتن أودرسكي. يتبع ذلك من العمل على فَنل، وهي لغة برمجة تجمع بين الأفكار من البرمجة الوظيفية و شبكة پتري.[12] عمل أودرسكي سابقاً على جاڤا عامة، و جاڤا سي، مترجم جاڤا الخاص بشركة sun سن.[12]
الإصدارات
النسخة | الإصدار | الميزات |
---|---|---|
1.0.0-b2[13] | 8 ديسمبر 2003 | _ |
1.1.0-b1[13] | 19 فبراير 2004 |
|
1.1.1[13] | 23 مارس 2004 |
|
1.2.0[13] | 9 يونيو 2004 |
|
1.3.0[13] | 16 سبتمبر 2004 |
|
1.4.0[13] | 20 يونيو 2005 |
|
2.0[14] | 12 مارس 2006 |
|
2.1.0[13] | 17 مارس 2006 |
|
2.1.8[15] | 23 أغسطس 2006 |
|
2.3.0[16] | 23 نوفمبر 2006 |
|
2.4.0[17] | 9 مارس 2007 |
|
2.5.0[18] | 2 مايو 2007 |
|
2.6.0[19] | 27 يوليو 2007 |
|
2.7.0[20] | 07 فبراير 2008 |
|
2.8.0[21] | 14 يوليو 2010 |
|
2.9.0[22] | 12 مايو 2011 |
|
2.10[23] | 4 يناير 2013 |
الميزات التجريبية |
2.10.2[33] | 6 يونيو 2013 | _ |
2.10.3[34] | 1 أكتوبر 2013 | _ |
2.10.4[35] | 18 مارس 2014 | _ |
2.10.5[36] | 5 مارس 2015 | _ |
2.11.0[37] | 21 أبريل 2014 |
|
2.11.1[38] | 20 مايو 2014 | _ |
2.11.2[39] | 22 يوليو 2014 | _ |
2.11.4[40] | 31 أكتوبر 2014 | _ |
2.11.5[41] | 8 يناير 2015 | _ |
2.11.6[42] | 5 مارس 2015 | _ |
2.11.7[43] | 23 يونيو 2015 | _ |
2.11.8[44] | 8 مارس 2016 | _ |
2.11.11[45] | 18 أبريل 2017 | _ |
2.11.12[46] | 13 نوفمبر 2017 | _ |
2.12.0[47] | 3 نوفمبر 2016 |
|
2.12.1[48] | 5 ديسمبر 2016 | _ |
2.12.2[49] | 18 أبريل 2017 | _ |
2.12.3[50] | 26 يوليو 2017 | _ |
2.12.4[51] | 17 أكتوبر 2017 | _ |
2.12.5[52] | 15 مارس 2018 | _ |
2.12.6[53] | 27 أبريل 2018 | _ |
2.12.7[54] | 27 سبتمبر 2018 | _ |
2.12.8[55] | 4 ديسمبر 2018 |
|
2.12.9[56] | 5 أغسطس 2019 | _ |
2.12.10[57] | 10 سبتمبر 2019 | _ |
2.12.11[58] | 16 مارس 2020 | _ |
2.12.12[59] | 13 يوليو 2020 | _ |
2.12.13[60] | 12 يناير 2021 | _ |
2.13.0[61] | 11 يونيو 2019 |
|
2.13.1[62] | 18 سبتمبر 2019 | _ |
2.13.2[63] | 22 أبريل 2020 | _ |
2.13.3[64] | 25 يونيو 2020 | _ |
2.13.4[65] | 19 نوفمبر 2020 | _ |
النقد
في مارس 2015، صرح نائب الرئيس السابق لمجموعة هندسة المنصات في تويتر رافي كركوريان، أنه لم يكن ليختار سكالا في عام 2011 بسبب منحنى التعلم.[66]في الشهر نفسه، صرح نائب الرئيس الأول في لنكد إن كڤن سكوت بقرارهم "تقليل [اعتمادهم] على سكالا".[67] في نوفمبر 2011، انتقل يامر بعيداً عن سكالا لأسباب تضمنت منحنى التعلم لأعضاء الفريق الجدد وعدم التوافق من إصدار واحد من مترجم سكالا إلى الإصدار التالي.[68]
انظر أيضاً
- sbt, a widely used build tool for Scala projects
- Play!, an open-source Web application framework that supports Scala
- Akka, an open-source toolkit for building concurrent and distributed applications
- Chisel, an open-source language built upon Scala that is used for hardware design and generation.[69]
المراجع
- ^ "Scala 2.13.4 is now available!". 2020-11-19. Retrieved 2020-11-19.
- ^ "NOTICE file". 2019-01-24. Retrieved 2019-12-04 – via GitHub.
- ^ "Scala Macros".
- ^ Fogus, Michael (6 August 2010). "MartinOdersky take(5) toList". Send More Paramedics. Retrieved 2012-02-09.
- ^ أ ب ت ث Odersky, Martin (11 January 2006). "The Scala Experiment - Can We Provide Better Language Support for Component Systems?" (PDF). Retrieved 2016-06-22.
- ^ أ ب Odersky, Martin; et al. (2006). "An Overview of the Scala Programming Language" (PDF) (2nd ed.). École Polytechnique Fédérale de Lausanne (EPFL). Archived (PDF) from the original on 2020-07-09.
- ^ Odersky, Martin (2008). Programming in Scala. Mountain View, California: Artima. p. 3. ISBN 9780981531601. Retrieved 12 June 2014.
- ^ Potvin, Pascal; Bonja, Mario (24 September 2015). An IMS DSL Developed at Ericsson. Lecture Notes in Computer Science. Vol. 7916. arXiv:1509.07326. doi:10.1007/978-3-642-38911-5. ISBN 978-3-642-38910-8. S2CID 1214469.
- ^ "Frequently Asked Questions - Java Interoperability". scala-lang.org. Retrieved 2015-02-06.
- ^ Friesen, Jeff (16 November 2016). "Are checked exceptions good or bad?". JavaWorld. Retrieved 28 August 2018.
- ^ Loverdo, Christos (2010). Steps in Scala: An Introduction to Object-Functional Programming. Cambridge University Press. p. xiii. ISBN 9781139490948. Retrieved 31 July 2014.
- ^ أ ب Martin Odersky, "A Brief History of Scala", Artima.com weblogs, 9 June 2006
- ^ أ ب ت ث ج ح خ "Scala Change History". scala-lang.org. Archived from the original on 2007-10-09.
- ^ "Changes in Version 2.0 (12-Mar-2006)". scala-lang.org. 2006-03-12. Retrieved 2014-11-07.
- ^ "Changes in Version 2.1.8 (23-Aug-2006)". scala-lang.org. 2006-08-23. Retrieved 2014-11-07.
- ^ "Changes in Version 2.3.0 (23-Nov-2006)". scala-lang.org. 2006-11-23. Retrieved 2014-11-07.
- ^ "Changes in Version 2.4.0 (09-Mar-2007)". scala-lang.org. 2007-03-09. Retrieved 2014-11-07.
- ^ "Changes in Version 2.5 (02-May-2007)". scala-lang.org. 2007-05-02. Retrieved 2014-11-07.
- ^ "Changes in Version 2.6 (27-Jul-2007)". scala-lang.org. 2007-06-27. Retrieved 2014-11-07.
- ^ "Changes in Version 2.7.0 (07-Feb-2008)". scala-lang.org. 2008-02-07. Retrieved 2014-11-07.
- ^ "Changes in Version 2.8.0 (14-Jul-2010)". scala-lang.org. 2010-07-10. Retrieved 2014-11-07.
- ^ "Changes in Version 2.9.0 (12-May-2011)". scala-lang.org. 2011-05-12. Retrieved 2014-11-07.
- ^ "Changes in Version 2.10.0". scala-lang.org. 2013-01-04. Retrieved 2014-11-07.
- ^ Harrah, Mark. "Value Classes and Universal Traits". scala-lang.org. Retrieved 2014-11-07.
- ^ Suereth, Josh. "SIP-13 - Implicit classes". scala-lang.org. Retrieved 2014-11-07.
- ^ Suereth, Josh. "String Interpolation". scala-lang.org. Retrieved 2014-11-07.
- ^ Haller, Philipp; Prokopec, Aleksandar. "Futures and Promises". scala-lang.org. Retrieved 2014-11-07.
- ^ "SIP-17 - Type Dynamic". scala-lang.org. Retrieved 2014-11-07.
- ^ "SIP-18 - Modularizing Language Features". scala-lang.org. Retrieved 2014-11-07.
- ^ Prokopec, Aleksandar; Miller, Heather. "Parallel Collections". scala-lang.org. Retrieved 2014-11-07.
- ^ Miller, Heather; Burmako, Eugene. "Reflection Overview". scala-lang.org. Retrieved 2014-11-07.
- ^ Burmako, Eugene. "Def Macros". scala-lang.org. Retrieved 2014-11-07.
- ^ "Scala 2.10.2 is now available!". scala-lang.org. 2013-06-06. Archived from the original on 2014-11-08. Retrieved 2014-11-07.
- ^ "Scala 2.10.3 is now available!". scala-lang.org. 2013-10-01. Archived from the original on 2014-11-08. Retrieved 2014-11-07.
- ^ "Scala 2.10.4 is now available!". scala-lang.org. 2014-03-18. Retrieved 2015-01-07.
- ^ "Scala 2.10.5 is now available!". scala-lang.org. 2015-03-04. Retrieved 2015-03-23.
- ^ "Scala 2.11.0 is now available!". scala-lang.org. 2014-04-21. Retrieved 2014-11-07.
- ^ "Scala 2.11.1 is now available!". scala-lang.org. 2014-05-20. Retrieved 2014-11-07.
- ^ "Scala 2.11.2 is now available!". scala-lang.org. 2014-07-22. Retrieved 2014-11-07.
- ^ "Scala 2.11.4 is now available!". scala-lang.org. 2014-10-30. Retrieved 2014-11-07.
- ^ "Scala 2.11.5 is now available!". scala-lang.org. 2015-01-08. Retrieved 2015-01-22.
- ^ "Scala 2.11.6 is now available!". scala-lang.org. 2015-03-05. Retrieved 2015-03-12.
- ^ "Scala 2.11.7 is now available!". scala-lang.org. 2015-06-23. Retrieved 2015-07-03.
- ^ "Scala 2.11.8 is now available!". scala-lang.org. 2016-03-08. Retrieved 2016-03-09.
- ^ "Three new releases and more GitHub goodness!". scala-lang.org. 2017-04-18. Retrieved 2017-04-19.
- ^ "Security update: 2.12.4, 2.11.12, 2.10.7 (CVE-2017-15288)". scala-lang.org. 2017-11-13. Retrieved 2018-05-04.
- ^ "Scala 2.12.0 is now available!". scala-lang.org. 2016-11-03. Retrieved 2017-01-08.
- ^ "Scala 2.12.1 is now available!". scala-lang.org. 2016-12-05. Retrieved 2017-01-08.
- ^ "Three new releases and more GitHub goodness!". scala-lang.org. 2017-04-18. Retrieved 2017-04-19.
- ^ "SCALA 2.12.3 IS NOW AVAILABLE!". scala-lang.org. 2017-07-26. Retrieved 2017-08-16.
- ^ "SCALA 2.12.4 IS NOW AVAILABLE!". scala-lang.org. 2017-10-18. Retrieved 2017-10-26.
- ^ "SCALA 2.12.5 IS NOW AVAILABLE!". scala-lang.org. 2018-03-15. Retrieved 2018-03-20.
- ^ "Scala 2.12.6 is now available!". scala-lang.org. 2018-04-27. Retrieved 2018-05-04.
- ^ "Scala 2.12.7 is now available!". scala-lang.org. 2018-09-27. Retrieved 2018-10-09.
- ^ "Scala 2.12.8 is now available!". scala-lang.org. 2018-12-04. Retrieved 2018-12-09.
- ^ "Scala 2.12.9 is now available!". scala-lang.org. 2019-08-05. Retrieved 2021-01-20.
- ^ "Scala 2.12.10 is now available!". scala-lang.org. 2019-09-10. Retrieved 2021-01-20.
- ^ "Scala 2.12.11 is now available!". scala-lang.org. 2020-03-16. Retrieved 2021-01-20.
- ^ "Scala 2.12.12 is now available!". scala-lang.org. 2020-07-13. Retrieved 2021-01-20.
- ^ "Scala 2.12.13 is now available!". scala-lang.org. 2021-01-12. Retrieved 2021-01-20.
- ^ "Scala 2.13.0 is now available!". scala-lang.org. 2019-06-11. Retrieved 2018-06-17.
- ^ "Scala 2.13.1 is now available!". scala-lang.org. 2019-09-18. Retrieved 2021-01-20.
- ^ "Scala 2.13.2 is now available!". scala-lang.org. 2020-04-22. Retrieved 2021-01-20.
- ^ "Scala 2.13.3 is now available!". scala-lang.org. 2020-06-25. Retrieved 2021-01-20.
- ^ "Scala 2.13.4 is now available!". scala-lang.org. 2020-11-19. Retrieved 2021-01-20.
- ^ Krikorian, Raffi (17 March 2015). O'Reilly Software Architecture Conference 2015 Complete Video Compilation: Re-Architecting on the Fly - Raffi Krikorian - Part 3 (video). O'Reilly Media. Event occurs at 4:57. Retrieved 8 March 2016.
What I would have done differently four years ago is use Java and not used Scala as part of this rewrite. [...] it would take an engineer two months before they're fully productive and writing Scala code.
- ^ Scott, Kevin (11 Mar 2015). "Is LinkedIn getting rid of Scala?". quora.com. Retrieved 25 January 2016.
- ^ Hale, Coda (29 November 2011). "The Rest of the Story". codahale.com. Retrieved 7 November 2013.
- ^ "Chisel: Constructing Hardware in a Scala Embedded Language | ASPIRE". UC Berkeley APSIRE. Retrieved 27 May 2020.
للاستزادة
- Odersky, Martin; Spoon, Lex; Venners, Bill (15 December 2019). Programming in Scala: A Comprehensive Step-by-step Guide (4th ed.). Artima Inc. p. 896. ISBN 978-0-9815316-1-8.
- Horstmann, Cay (15 December 2016). Scala for the Impatient (2nd ed.). Addison-Wesley Professional. p. 384. ISBN 978-0-134-54056-6.
- Wampler, Dean; Payne, Alex (14 December 2014). Programming Scala: Scalability = Functional Programming + Objects (2nd ed.). O'Reilly Media. p. 583. ISBN 978-1-491-94985-6.
- Suereth, Joshua D. (Spring 2011). Scala in Depth. Manning Publications. p. 225. ISBN 978-1-935182-70-2.
- Meredith, Gregory (2011). Monadic Design Patterns for the Web (PDF) (1st ed.). p. 300.
- Odersky, Martin; Spoon, Lex; Venners, Bill (10 December 2008). Programming in Scala, First Edition, eBook (1st ed.). Artima Inc.
- Short description is different from Wikidata
- Scala (programming language)
- لغات برمجة
- Articles with example code
- لغات البرمجة المتزامنة
- Free software programmed in Scala
- لغات وظيفية
- عائلة لغة برمجة جاڤا
- JVM programming languages
- لغات البرمجة كائنية التوجه
- Pattern matching programming languages
- Programming languages created in 2003
- Scripting languages
- Software using the Apache license
- Statically typed programming languages
- 2003 software
- Cross-platform free software
- Free compilers and interpreters
- Source-to-source compilers