25

مقارنة منطقية بين لغة php و Ruby بعيدا عن السؤال المتكرر (ما هي أفضل لغة برمجة)

السلام عليكم

أرجو أن أكون وفقت في أختيار العنوان لأني لا أريد أن يحمل العنوان على أنه السؤال المتكرر من بعض المبتدئين عن ما هي أفضل لغة برمجة أو ماهي أسهل لغة برمجة .

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

وشي آخر أنا مقتنع تمام أن نسبة كبيرة من سرعة أو بطء البرنامج تعتمد على المبرمج وأسلوبه في البرمجة

ولكن هذا لا يعني أن أغفل عن عيوب لغة php وقصورها وحدودها وإمكانيتها أو حتى معرفة تفوق بعض اللغات عليها

لذلك أريد منكم مناقشة بعض الجوانب والمقارنات المنطقية بين لغة php و Ruby وقد حددت النقاط التالية لتكون نقطة إنطلاق ولكم خيار إضافة المزيد :-

  1. متى تكون php خيار غير مناسب أو إلى مدى تكون خيار مناسب

  2. ماهي نقاط ضعف لغة php

  3. ماهي نقاط قوة لغة php

  4. ما الجديد في لغة Ruby

  5. في تويتر ما هو الشي الذي عجزت عنه php ووجدته ميسرا في Ruby

  6. مقارنة بين Ruby وphp من جيث إستهلاك المعالج او الزاكرة

  7. متى تكون php أسرع ومتى تكون Ryby أسرع

  8. نمازج لمشاريع تمت برمجتها عن طريق php ومشاريع تمت برمجتها عن طريق Ruby .

  9. مشاريع ت تخلت عن php وما هي الأسباب وإلى أي لغة إنتقلت وما هي الأسباب

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

23

إن كنا سنضيف بايثون فلعلنا نضيف nodejs.

ما هو الشيء الذي تقدمه php وتفتقده كل الأخريات؟

الجواب هو أن PHP تعزل كل طلب داخل مفسر محصور فيما يشبه الصندوق الرملي. حصر المبرمج وتربيط يديه على خادمه بالتأكيد فكرة سيئة لكن بما أنه يستقبل طلبات من أطراف غير موثوقة وبما أن مبرمجي PHP هم غير محترفين (من وجهة نظر مصصمي اللغة) فإنه من الأفضل منع كل شيء إلا ما يصرح بالسماح له. فمثلا أقصى حجم لاستهلاك الذاكرة ومثل عدم وجود دوال لعمل threads. وكل طلب يفتح اتصال جديد لقاعدة البيانات (وليس اتصال موحد لكل الطلبات) وعند عمل regex دائما يتم عمل compile و cache ويتم تحرير كل شيء بعد الانتهاء من الطلب.

ليس مهما إن كان هناك تسرب في الذاكرة أو في عدد الملفات المفتوحة ... بمجرد انتهاء الطلب سيتم تحرير كل شيء وكأنك تعمل آلة افتراضية لكل طلب بشكل منفصل وعند انتهاء الطلب تقتل الآلة الافتراضية وتحرر كل شيء.

بل أكثر من ذلك إن لم تثق بالبرمج أكثر يمكنك إزالة دوال معينة من PHP أو إزالة ميزة من دالة معينة مثلا منع الدالة file_get_contents من جلب محتويات من الشابكة.

طبعا PHP معيبة بالوراثة بخلط التقديم/القالب مع المنطق... لأنها بدأت كلغة قوالب. لكن باستعمال أطر الويب الحديثة مثل Yii يمكن تخطي هذا العيب.

في جافا وبايثون واللغات الأخرى يتم تشغيل نسخة واحدة من البرنامج لكل الطلبات (يمكن تشغيلها أيضا على أكثر من process أو thread أو green thread ...إلخ وأنت تتحكم في الرقم) وفي روبي ونود هناك أكثر من thread.

في nodejs وبايثون وروبي يمكنك استعمال socket.io لعمل اتصال ثنائي الاتجاه وهو يجنك تقنية السحب الدور pull من الخادم.

لنتخيل برنامج دردشة بسيط. في PHP سيرسل كل متصفح طلب كل ثانية مثلا وتقول هل جاء شيء جديد لي؟ هذا الطلب سيكون في اتصال tcp/ip جديد بكافة مراحله وفي HTTP جديد ويحتوي كل الترويسات وال cookies وقد يكون حجمه 1 كيلو مثلا.

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

في المقابل في حالة socket.io يكون هناك مفسر واحد للغة في الذاكرة ونسخة واحدة من البرنامج... كل متصفح يعمل طلب واحد ويترقى من بروتوكول HTTP إلى websocket ويفتح اتصال واحد ثنائي الإتجاه يظل هذا الاتصال مفتوحا ويتم كل شيء لاحق من خلال نفس هذا الاتصال. يتم إعلام أي من الطرفين بوجود حدث (من خلال select أو epoll أو ما يكافؤها). فإن كتب أحمد رسالة في غرفة الأنصار يعمل الخادم أن الإتصال بينه وبين أحمد به حدث ويعالج الحدث وهو في حالتني قدوم رسالة وذلك بأن يتم إرسالها إلى كل أعضاء الغرفة مباشرة.

السلام عليكم

معلومة صغيرة فقط بالنسبة لموضوع socket فهو متوفر أيضاً في php

http://www.php.net/manual/e...

ال sockets شيء و ال web sockets أو socket.io شيء آخر.

انظر قائمة اللغات

وستجد أنها منفذة في

ولا أظن أنه يمكنك أن تصل فيها إلى أي مكان

هنالك web sockets لل php

socketo.me

https://code.google.com/p/p...

يمكنك أن تعمل نجار وتكون أداتك سكين مطبخ. كما قلت ستجد أنها منفذة لكنك لن تصل فيها إلى أي مكان.

اتفق معك في عدم بساطتها ، وصدقا لم أجرب التعامل معها فلا يحق لي الحديث عنها و لكن هل إحتجت لها ؟! لا ، و كذلك الحال مع معظم لغات البرمجة ، مثال الnodeJS و الmongoDB نعم هما الأكثر شهره حاليا و لكن ما الثمن و لماذا ؟ ، الثمن قواعد بيانات ليس بها constrains أو commit transactions و لاحتى المقدرة على تفيذ إستعلامات تضم مجموعة من الجداول أو كما يسمونها collections غير التكرار في البيانات redunduncy نعم يمكنهم إستخدام قواعد البانات العلائقية و لكن الأمر غير بسيط و يخالف "معتقداتهم"!!! ومن ناحية اللغة javascript و nodeJS فأبسط الأشياء كالsessions تعتبر مهمة معقدة ناهيك عن أن الevents والتي تعتبر مصدر قوة سلاح ذو حدين حيث أن فشل عملية واحدة يؤثر على كل المستخدمين و قد يحجب عنهم الخدمه! و لكن هنالك حلول لها وهم يستخدمونها وإن كانت "غير بسيطة" كسكين النجار!!! ، لكل لغة مهام تبرع بها و لكن أن أردت أن تصمم و تطور تطبيقا قويا في وقت وجيز نسبيا فالphp الحل المناسب لأغلب المشاريع فبالنهاية ماحاجة أغلبنا و أغلب مشاريعنا للnon blocking IO و بدرجة أقل الsockets . أما روبي و بايثون فبما إنهما لغتين للإستخدام العام و ليستا للويب فهما يعتمدان على قريموركس لايمكنهم الخروج منها ولا حتى بناء غيرها مندون مشقة كبيره! . أخيرا ، أن تقلع أهم من أن تقضي وقتك في بناء مدرج متكامل! done is better than perfect

ناقشت ذلك مسبقا في هذا التعليق https://arabia.io/go/6543/2...

17
  • أولا لغة ال php لغة موجهة للويب فقط (هناك من سوف يتحجج ويقول هناك مكتبة gtk مخصصة لتصميم تطبيقات مكتبية بال php لكنها مكتبة ميتة). على عكس لغة ruby و python فبستطاعتك برمجة جميع أنواع البرامج (web, cli , desktop )

  • لغة ruby هي لغة كائنية 100% (OOP) على عكس php (ليس بمستوى ruby أو python 3)

-- هذا رد أحد المهندسين في spotify على شخص طرح سؤال شبيه بهذا:

Short answer: Learn anything but PHP. You'll be stuck doing Wordpress/Magento customizations for cheap companies, while other developers will be creating stuff like Quora or Square, using other technologies, because they have not stood still the last 7 years.

Longer answer:

The premise of this question (PHP is awesome for web development) is incorrect. PHP was awesome for web developent in 2003-2005, when Facebook, Wordpress, Digg, Wikipedia started out with it.

Since then, PHP has, unfortunately, not moved forward as a language. PHP is NOT awesome now. It's 2005-awesome.

http://www.quora.com/Scala/...

17

في البدء، لي صديق لديه شركه ناشئة و فريق عمل رائع و تم قبوله بإحدي الحاضنات الخاصة بالمشاريع التقنية المميزة ، ضمن فريق عمله مبرمج محترف على node.js و سابقا على ال php ، عندما سألته عن سبب تحوله من الphp و sql إلى الnode.js و ال non sql database رد بمتطلبات المستقبل و عندما غرقنا بتفاصيل معينة كالevents , sessions و الdatabase transactions , و ال constraints وغيرها صدمت من ردوده و صعوبة أو عدم إمكانية تطبيقها!!! فحمدت الله على الphp . أي أن أغلب المبرمجين يتبعون العامه و مع الموج أينما ذهب . فحتى تويتر كتب بالروبي ريلز و الآن يستخدمها بجانب الnodeJS و Scala و حلول أخرى .

للأسف لن تجد جوابا كافيا لسببين أولهما بسيط : فكل بما لديهم فرحون و الثاني مقيت : كل من يتحدث عن الphp يتحدث عن الماضي البعيد أي النسخة 4 و ماقبلها ، فهم لاعلم لهم بتطور الphp ، فمنذ فترة و هي تدعم الoop تماما و يمكنك إستخدام ال namespace , closures ، و يوجد لها قواعد psr و package manager و يمكنك إستخدام أدوات كا Artisan و phpunit و غيرهم الكثير .

الأجوبة "حسب رأيي" :-

  • هي خيار مناسب دائما إلى أن يستقبل تطبيقك آلاف الطلبات بالثانيه على خادم واحد محدود الموارد ، توجد حلول ولكنها غير ناضجة

2 - المبرمجين غير المحترفين

3 - سهولة الإعدادات ،مدعومه من أغلب إن لم يكن كل مزويدي خدمات الإستضافة ، مجتمع متفاعل و هو الأكبر على الشبكه "إنظر ترتيب اللغه و عمرها مع الأخذ بعين الإعتبار بأنها لغة مصممه للوب فقط" ، في تطور مستمر ، لك الحرية بإستخدام أي فريموورك أو تطوير الخاص بك أو إستخدام كودك عكس الريلز و الجانقو ، أنت حر

4 - ؟؟؟؟

5 - ؟؟؟؟

6 - إستخدم ngnix بدل الأباتشي

7 - ؟؟؟؟

8 - معظم النت :) أغلب المدونات و مواقع التجاره الالكترونيه و المنتديات و الجرائد ... أمثلة

facebook

wikipedia

yahoo

apple

wordpress

baidu

flickr

forbes

Nike

sony music

زيد عليهم souq.com , namshi.com :) و الغالبية العظمى من الجرائد و المنتديات و المدونات الي مرت عليك تقريبا!!!! و الكثير غيرهم! أما عن روبي أون ريلز فلاعلم لي بغير twitter

9 - لاتحضرني أمثله و لكن كان دائما السبب الرئيسي هو non blocking io و لكن هنالك حلول الآن و إن لم تكن ناضجة بما فيه الكفاية و لكن الأمر ينطبق على الكل ماعدا node.js

أخيرا ، لكل لغة إيجابيات و سلبيات .

16

قبل أن يبدأ الإخوة في النقاش..

أود أن تضم إلى النقاش، لغة البايثون أيضا

لأنها إحدى ثلاث لغات رائدة حاليا في عالم برمجة الويب

إقتراح موفق

يمكن أيضا توضع في مقارنة مع php بنفس نقاط المقارنة السابقة

طرح رائع جدا

واسئلة في محلها؟

تم حفظ الصفحة في المفضلة حتى انتهاء الحوار والنقاش

نقاش مثمر و مفيد .. و ان شاء الله تكون كل النقاشات بهذا المستوى

شكرا للجميع