‏إظهار الرسائل ذات التسميات لغة البرمجة Programming Language. إظهار كافة الرسائل
‏إظهار الرسائل ذات التسميات لغة البرمجة Programming Language. إظهار كافة الرسائل

يناير 05، 2010

نظرة على QtJambi من خلال Scala، JRuby و Jython

تدوينة اليوم ستكون طويلة و الصراحة لا أدري من أين سأبدئها، و عموما  سأتطرق فيها إلى البرمجة. حسننا اعتقد أنني سأبدأ بالحديث عن منصة جنو/لينوكس كأفضل منصة برمجية.

في الفترة الاخيرة إستخدمت منصة ويندوز Windows و منصة Mac OS X بشكل مطول للقيام ببعض الأعمال البرمجية، و تلك كانت المناسبة للنظر إليهما من جديد من منظور مبرمج. لن أدعي أن هتين المنصتين لا يصلحن لشيء و أنهما من شركتين احتكاريتين ووو (كما يتصور بعض المتعصبون)، بل بالعكس الأدوات المتاحة على هتين المنصتين جذابة و متميزة و يكفي أن أغلب البرامج المسوقة موجهة لهتين المنصتين، لكن ثم لكن :) لم أنجذب إليهما و لم أشعر بنفس الغنى البرمجي الذي تتيحه منصة جنو/لينوكس و في النهاية زاد إحساسي بالسعادة لأنني اخترت الإنتقال إلى منصة جنو/لينوكس يوما. نعم يمكنني القول بان منصة جنو/لينوكس هي أفضل منصة برمجية لكن لا ينطبق نفس الأمر بالنسبة للإستخدام المكتبي اليومي، ليس لأنها تعاني من خصاص ما بل لأنها ستدفعك و أحيانا ستفرض عليك تعلم أشياء جديدة أنت (من منظورك كمستخدم) في غنى عنها و هدا ما لا يقبله البعض ممن يحملون شعار "لا تجعلني أفكر!" أو "don't make me think!"

قبل أن انتقل إلى نقطة أخرى لذي ملاحظتين: الاولى ويندوز7 أفضل بكثير من Vista و أفضل من XP. و الثانية محرر Eclipse أفضل من TextMate و يعوضه في كل شيء بالنسبة لمستخدمي Mac OS X. و الملاحظة الثالثة :) خط monaco يناسب البرمجة للوضوح معالم حروفه.

أبريل 09، 2009

لغة البرمجة Scala

مؤخرا دارت نقاشات مطولة بين مطوري خدمة التويتر (Twitter) بخصوص الإنتقال إلى لغة البرمجة Scala أو البقاء على Ruby. و الصراحة أكره السماع عن أية لغة برمجة جديدة أو عن إصدار جديد للغة غير متوافق مع السابق. يكفي وجود أكثر من 140 لغة برمجة متداولة حاليا. لكن ما باليد حيلة، فقاعدة الحياة بسيطة "التطور/التأقلم أو الإنقراض".

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 و سوف أجرب ذلك لاحقا.

عموما، أجد لغة سكالة مثيرة للإهتمام و ربما هي جافا معصرنة :). هل سأنتقل إليها يوما؟ ربما سأجربها لحقا في برامج صغيرة لأرى هل تسرع من وقت البرمجة أم لا.

نوفمبر 24، 2008

موقع ShowMeDo التعليمي للغات البرمجة المفتوحة المصدر

حان الوقت لتعلم لغات البرمجة المفتوحة المصدر بشكل جدي. سأبدء ب بايثون Python ثم سأرى كيف يمكن أن أستفيد من أدوات الوجهة ل كيوت Qt من خلال PyQt و بعدها من إطار العمل دجانغوا Django Framework.

و سأعتمد في تحقيق هذا الهدف على مجموعة من الموارد من بينها موقع ShowMeDo التعليمي بالصوت و الصورة. يحتوي هذا الموقع على فيديوات تعليمة في ميدان البرمجة و التطوير، منصة جنو/لينوكس، البرامج المكتبية و التصميم و الرسومات. (رابط بفيديوات لتعلم بايثون)

يمكن مشاهدة هذه الفيديوات في الموقع أو تحميلها على جهازك للمشاهدة في وقت أخر مناسب.

بالنسبة للراغبين في تعلم بايثون Python باللغة العربية يمكنهم فعل ذلك من خلال كتاب خطوة على طريق بايثون. و كذلك بالنسبة ل جنو/لينوكس من خلال كتاب لينكس الشامل.

توقعوا أن أرى العالم كله من خلال بايثون و لا حديث إلا عنه :)




ملاحظة: صوة الأفعى تعود ل نجاة صاحبة المدونة laughing purple goldfish designs.

Topics: Python, Django, Qt, PyQt.