مؤخرا دارت نقاشات مطولة بين مطوري خدمة التويتر (Twitter) بخصوص الإنتقال إلى لغة البرمجة Scala أو البقاء على Ruby. و الصراحة أكره السماع عن أية لغة برمجة جديدة أو عن إصدار جديد للغة غير متوافق مع السابق. يكفي وجود أكثر من 140 لغة برمجة متداولة حاليا. لكن ما باليد حيلة، فقاعدة الحياة بسيطة "التطور/التأقلم أو الإنقراض".
Scala لغة برمجة حديثة (ظهرت في 2004) مفتوحة المصدر، متعددت النمادج/المستويات (multi-paradigm) صُممت خصيصا لتمزج بين البرمجة المعتمدة على الكائنات (Object-oriented programming) و البرمجة المعتمدة على الوظائف (Functional programming) و هي حاليا في إصدارها 2.7.3. كما أنها تعمل على الألة الإفتراضية للغة جافا (JVM) و متوافقة مع برامجها (من السهل إستيراد وحدات الجافا)
و هذا الصباح قضيت بعض الوقت أكتشف Scala و أقارن بينها و بين بايثون. إليكم بعض الأمثلة:
1. رسالة الترحيب بـ Scala
و مقابله بـ Python
2. حساب مجموع الأعداد التي تم إذخالها عند سطر الأوامر بـ سكالة:
و مقابله في بايثون:
3. معالجة بسيطة لمعطيات سطر الأوامر
و مقابله في بايثون:
و أثناء بحثي عن أمثلة في موقع لغة سكالة وجدت أمثلة جد متقدمة تظهر إمكانتيات هذه اللغة خصوصا تلك التي تتعلق بتطبيقات الويب. كما إتضح لي أنه من الممكن الإستفادة من الواجهة الرسومية Qt من خلال Qt-Jambi و سوف أجرب ذلك لاحقا.
عموما، أجد لغة سكالة مثيرة للإهتمام و ربما هي جافا معصرنة :). هل سأنتقل إليها يوما؟ ربما سأجربها لحقا في برامج صغيرة لأرى هل تسرع من وقت البرمجة أم لا.
Scala لغة برمجة حديثة (ظهرت في 2004) مفتوحة المصدر، متعددت النمادج/المستويات (multi-paradigm) صُممت خصيصا لتمزج بين البرمجة المعتمدة على الكائنات (Object-oriented programming) و البرمجة المعتمدة على الوظائف (Functional programming) و هي حاليا في إصدارها 2.7.3. كما أنها تعمل على الألة الإفتراضية للغة جافا (JVM) و متوافقة مع برامجها (من السهل إستيراد وحدات الجافا)
و هذا الصباح قضيت بعض الوقت أكتشف Scala و أقارن بينها و بين بايثون. إليكم بعض الأمثلة:
1. رسالة الترحيب بـ Scala
object HelloWorld { def main(args: Array[String]) { println("Hello, world!") } } HelloWorld.main(null)
و مقابله بـ Python
class HelloWorld(): def main(self): print "Hello, World!\n" x = HelloWorld() x.main()
2. حساب مجموع الأعداد التي تم إذخالها عند سطر الأوامر بـ سكالة:
object Main { def main(args: Array[String]) { try { val elems = args map Integer.parseInt println("The sum of my arguments is: " + elems.foldRight(0) (_ + _)) } catch { case e: NumberFormatException => println("Usage: scala Main> <n1 < > n2 ) } } } Main.main(Array[String]("1", "2", "3")) ... "
و مقابله في بايثون:
import sys class Main(): def main(self, args = sys.argv[1:]): try: elems = 0 for x in args: elems += int(x) print "The sum of my arguments is:", elems,\n " except ValueError: print "Usage: python 08.py " < > n1 <n2> ..\n x = Main() x.main(["2", "3"]) "
3. معالجة بسيطة لمعطيات سطر الأوامر
/** Basic command line parsing. */ object Main { var verbose = false def main(args: Array[String]) { for (a <- args) a match { case "-h" | "-help" => println("Usage: scala Main [-help|-verbose]") case "-v" | "-verbose" => verbose = true case x => println("Unknown option: '" + x + "'") } if (verbose) println("How are you today?") } } Main.main(Array[String]("-v"))
و مقابله في بايثون:
# Basic command line parsing. import sys class Main(): verbose = False def main(self, args = sys.argv): for a in args: if a in ["-h", "-help"]: print "Usage: python 06.py [-help|-verbose]\n" elif a in ["-v", "-verbose"]: self.verbose = True else: print "Unknown option: '" + a + "'\n" if self.verbose: print "How are you today?\n" M = Main() M.main(["-v"])
و أثناء بحثي عن أمثلة في موقع لغة سكالة وجدت أمثلة جد متقدمة تظهر إمكانتيات هذه اللغة خصوصا تلك التي تتعلق بتطبيقات الويب. كما إتضح لي أنه من الممكن الإستفادة من الواجهة الرسومية Qt من خلال Qt-Jambi و سوف أجرب ذلك لاحقا.
عموما، أجد لغة سكالة مثيرة للإهتمام و ربما هي جافا معصرنة :). هل سأنتقل إليها يوما؟ ربما سأجربها لحقا في برامج صغيرة لأرى هل تسرع من وقت البرمجة أم لا.
جافا راحت عليها مش فى احسن من انك تستخدم لغات بتسمحلك بالوصول على الوحدات زى JRuby و Groovy او Scala اوحتى Clojure ومن المريح جدا وجود plugin ل netbeans
ردحذفtwitter on Scala
http://www.artima.com/scalazine/articles/twitter_on_scala.html
اشجعك تطلع على http://clojure.org/
لأول مرة أسمع فيها عن Clojure. و بعد أن اطلعت عليه ثلاثة مرات اليوم و قراتي لخصائصه و أمثلته و حتى مشاهدتي لبعض الدروس المرئية (http://clojure.blip.tv/#1319826)، أعتقد أنه لا يناسبني في الوقت الراهن.
ردحذفبالمناسبة، أتتبع منتداك الخاص بالبرمجة (http://programming-fr34ks.net/smf) بإستمرار و يعجبني ما تنجزه من برامج :)
كما سأبقي عيني على Clojure و أتتبع أخباره ;)
ردحذفههههههههه على فكرة اول مرة جيت اجرب lisp قلت كدا وكل مرة كنت بحاول فيهابردو كان نفس ردى ..بس يمكن لحد ماتكتبها بنفسك :D
ردحذفوربنا يخليك ياجميل سعيد جدا ان الموقع بيأدى هدفه