PHP - Python - Ruby
- talalalaita
- 2015-01-29T18:21:49+00:00
السلام عليكم ..
أنا متقن لـ HTML - Css وأساسيات JS
أريد البدء بتعلم لغة برمجة
هل أتعلم PHP أم Ruby أم Python ولماذا
أم أتوجه لـ إحدى اللغات الجديدة مثل Go
وبالنسلة لقواعد البيانات أيها أفضل Oracle أم Sql ولماذا
أريد تفاصيل كاملة أرجوكم والفروق الفوائد والأضرار لكل تفصيل :] ..
في الغالب أنصح ب PHP لانها سهلة، ومخصصة للويب بشكل أكبر من اللغتين،
فلتعلم بايثون للويب او الروبي عليك ان تدرسها قبل التوجه الى أطر عمل الويب،
لكن اينما وجدت راحتك ، فكل اللغات تؤدي أعمالا رائعة، فبإمكانك برمجة شبكات اجتماعية، مواقع ، مجتمعات كأرابيا (هذا الموقع مبرمج بالروبي، وهناك نسخة PHP برمجها أحد الاعضاء)
بالنسبة لقواعد البيانات فأوراكل تكون غالبا مع الجافا، لكن اذا اخترت PHP ف Mysql هي الافضل ،
اما روبي فلم اجربها لكن الاغلبية تستخدم MongoDB او MariaDB
بالتوفيق :)
كونك مبتدأ أنصحك أن تبدأ لغة بسيطة وذات دعم كبير من المجتمع لتتعلمها بسرعة وتبدأ بانتاج مواقع بسرعة. بعد أن تكون قد فهمت البرمجة بشكل جيد وفهمت كيف تعمل المواقع، تستطيع بعدها اختيار اللغة المناسبة لمشاريعك وتعلمها بسرعة (أسبوعين بالكثير، مع استخدام إطار عمل) كون معظم اللغات متشابهة في العديد من الأمور، وكون إطارات العمل تعمل بنفس الطريقة، لن تواجه مشكلة في الانتقال من لغة إلى أخرى حسب الحاجة
يبدو أني نسيت أن أقول اسم اللغة (مع أنها كانت واضحة) PHP
نعم فهمت .. شكرا لك :]
اللغة ليست مهمة يمكنك الذهاب مع php في إطار مثل yii أو بايثون في إطار django.
عنق الزجاجة ليس في اللغة. لغة php "قذرة" (وتدفعك نحو كتابة برامج سيئة) حاول أن تختار إطار عمل نظيف.
ابتعد عن روبي فهي تبدد موارد الجهاز والرام (رأي شخصي عن خبرة)
أم أتوجه لـ إحدى اللغات الجديدة مثل Go
لغة ممتازة وتعطي برامج سريعة جدا مثل لغة سي. اعتبرها مثل إعادة كتابة سي++ بطريقة حديثة. أفضل أن تؤجلها حتى تكتسب خبرة أكبر.
وبالنسلة لقواعد البيانات أيها أفضل Oracle أم Sql ولماذا
تعلم أساسيات sql من خلال sqlite و sqlite manager بعد ذلك كل ال sql ستكون متشابهة بالنسبة لك.
شكرا لك
لكن غالب الأخوة نصحوني بالـ PHP لماذا نَعَتَها بالـ "قذرة"
وإذا كانت تدفعني نحو كتابة برامج سيئة وروبي تبدد موارد الجهاز فهل أتوجه إلى Python أم إلى لغة مثل ASP.NET
كما أن مجتمع Arabia تمت برمجته بالروبي .. أجده جيد
هل تقصد أنها تبدد موارد الجهاز والرام عند استخدامها مكتبياً أم لكل شخص يتصفح موقع تمت برمجته بها ؟
وبالنسبة للأخ بلال سامحك الله. ولن أرد عليك.
يا طلال أنا أيضا نصحتكك بها أيضا لكني حذرتك من عيبها. هناك لغات مثل بيرل و php من المتعارف عليه أنها قذرة. ها ليس رأي شخصي هذا حقيقة. مثلا يكون هناك أكثر من طريقة للقيام بالشيء (لأنه لا يوجد تخطيط) هناك أشياء تتم من وراء ظهرك (أشياء ضمنية أو متغيرات عامة مثل $_ و $_GET وهناك مليون احتمال مثلا قيمة ال mbstring.func_overload في php.ini وقيمة error_reporting وقيمة display_errors .... كل هذا ليس جزء من الكود الذي يعيش في git عندما تحدث مشكلة عليك أن تتصيد مليون شيء وتعايره ...) كذلك هناك غباء في تصميم ال OOP وهناك غباء في ال memory management بل إن صاحب لغة php يجاهر علنا بأنه جاهل بهذه الأشياء.
لغة php جيدة لأنها مخدومة (هناك مليون حل خارجي لمشاكلها الداخلية) مثلا موضوع تسريب الذاكرة يمكنك إعداد أباتشي أن تقتل مفسر php بعد 500 معالجة طلب مثلا (فلو كان هناك 500 كيلوبايت تسريب في الذاكرة لكل طلب فإن معالجة 500 طلب تستهلك 250 ميغا كانت ستتظل تتراكم حتى يقضى على النظام لكن عوضا عن حل جذر المشكلة بإنهاء التسريب يتم قتل مفسر php لتحرير الذاكرة وتشغيل واحد جديد) هذا النوع منتشر لكل مشاكل php لأنها لغة قديمة وكل مشاكلها معروفة مدروسة ولها حلول خارجية. بمعنى وإن كنت أنصحك في لغة php هذا لا يعني أني أقر بأنها لغة حسنة التصميم بل هي من تصميم شخص لا يفهم شيء عن البرمجة باعترافه.
بخصوص روبي هي تعاني من مشاكل في ال scalability. لزيادة قدرة روبي على معالجة الطلبات المتزامنة عليك زيادة عدد الخوادم وزيادة الذاكرة. لا يمكن معالجة المزيد من الطلبات بتوزيعها على threads. وهذا كلام موثق سواء من مستخدمي روبي الكبار مثل github ومن مصنعي خوادم روبي ومن خبرتي العملية في أكثر من مشروع يستخدم روبي.
في الكثير من الأحيان تشغيل 30 سيرفر إضافي ليتم توزيع الحمل عليها أسهل وأقل كلفة من إعادة تصنيع المنتج بلغة أخرى. وهذا ما فعلته github. ودعني أخبرك كيف تعمل github. حيث كان هناك سؤال على quora.com عن بنية github وأجاب رئيس لا أذكر ماذا فيه بأن github يتمحور حول الملفات (التي يديرها git) بكلمات أخرى لا يوجد الكثير من الحمل على تطبيق الويب (العمل الحقيقي مثل الفرق بين الملف القديم والجديد ومن عدل ماذا ومتى ... لا يتم في تطبيق الويب بل في git على خوادم الملفات) لكن مع ذلك كان عنق الزجاجة عندهم في خوادم روبي (رابط كورا ليس معي لكن يمكن قراءة ).
ruby و python ليدهم نفس المشكلة .. Global Interpreter Lock
بخصوص '' لا يمكن معالجة المزيد من الطلبات بتوزيعها على threads ''
https://wiki.python.org/moi...
كلامك صحيح ruby تستحدم الذاكرة بشكل اكبر .. لاكن باخر الاصدارات يوجد محاولات لحل المشاكل الذاكرة. بعد اصدار 2.0
وما تتحدث عنه هو المشكلة صحيح لكن ليس لمطور عادي
السؤال الاهم راحة المبرمج انا تعلمت python بالجامعة لكن بعدها لم اكتب شئ. المشكلة ليست باللغة. انا لم ارتح بها :)
نصحية لصحاب الموضوع .. ابحث عن لغتك المفظلة .. وليس على ما يحبه المطورين الاخرين. انت الذي ستكتبت الكود البرمجي وليس هم :).
لا أتحدث عن GIL. يا رجل لا يوجد threading في rails ما قبل 4 بمعنى كل طل طلب في process وبكامل حجم الذاكرة (يبدو أن هناك shared state تمنع من استخدام ال threads). دعني أقتبس http://uwsgi-docs.readthedo...
Starting from 4.0, Rails support multiple threads (only for ruby 2.0):
فيما يتعلق ب GIL هي موجودة في cpython فقط وغير موجودة في jython و pypy (وهو ال JIT compiler) وهو موجود في الأول لأنه أسرع وهو ليس عنق الزجاجة.
بايثون تدعم مليون حل يمكنك من معالجة أشياء متعددة في نفس ال thread و ال process منها gevents و eventlets و asyncio و tulip. والجميل أن جزء كبير يتم دون أي تغيير في كود التطبيق (مثلا من خلال ال monkey patching)
أما روبي فيوجد فايبر fiber ولا يبدو لي أنه يعمل كخيار مجرد زر أضغطه فيتحول برنامجي إلى برنامج async
نصحية لصحاب الموضوع .. ابحث عن لغتك المفظلة .. وليس على ما يحبه المطورين الاخرين. انت الذي ستكتبت الكود البرمجي وليس هم :)
أتفق تماما معك لذا أقول دائما اختيار اللغة ليس عنق الزجاجة.
فيما يتعلق ب GIL هي موجودة في cpython فقط وغير موجودة في jython و pypy (وهو ال JIT compiler) وهو موجود في الأول لأنه أسرع وهو ليس عنق الزجاجة.
ruby لديها ايضا jruby وغيرها بدون GIL
Starting from 4.0, Rails support multiple threads (only for ruby 2.0):
http://tenderlovemaking.com...
بعد الاصدار 4 اصبح يدعم concurrent بشكل افتراضي قبل ذلك يجب عليك تغير الاعدادت.
threading في rails ما قبل 4 بمعنى كل طل طلب في process وبكامل حجم الذاكرة
راجع ايضا thin
gevents و eventlets و asyncio و tulip
eventmachine
وغيرها الكثير ابحث ستجدهم :)
عموما بايثون اجده مدعوم اكثر حتى في النطاق الاكاديمي ... لاكن هذا لا يقلل من شان Ruby
اعتذر لم اشرح شئ ... لدي اختبارات بالجامعة :]
ruby لديها ايضا jruby وغيرها بدون GIL
أنا لم أتحدث عن GIL فهي ليس عائق. هي مجرد "اختيار" عند تصميم اللغة. وفي بايثون تم تجربة عمل CPython بدون GIL ونجحت التجربة لكن كان المفسر أبطأ
بعد الاصدار 4 اصبح يدعم concurrent بشكل افتراضي قبل ذلك يجب عليك تغير الاعدادت.
نعم أنا ذكرت ذلك حرفيا لكن بكلمات اخرى حيث قلت قبل الإصدار الرابع لم يكن هناك threads. لحظة لحظة. كلا أخي الحبيب قبل ذلك لم تكن موضوع إعدادات. روبي 1.8 وريلز قبل 4 لا تدعم ال threads وتفعيله يؤدي إلى مشاكل قولا واحدا.
أقتبس
Starting from 3.0, Rails is fully Rack compliant
Starting from 4.0, Rails support multiple threads (only for ruby 2.0):
بمعنى قبل هذا الإصدار هناك shared state ولا يمكن أن تخديمه في خادم متعدد threads العلة ليست في الخدام فحتى لو دعم puma تعدد الخوادم فإن rails لن تدعمه.
في بايثون هناك شيء اسمه WSGI وهو الشيء الموجود في كل أطر العمل ويمكن كتابة تطبيق ويزجي في سطرين بمجرد أن يدعم أي إطار عمل مثل جانغو ويزجي يمكنك أن تخدمه دون تعديل بأي طريقة تشاء سواء threads أو async io أو green threads ... دون أن يترتب على ذلك تغير في الكود. يمعنى لا نقول جانغو الإصدار الكذا يدعم gevents أما قبل ذلك فلا يدعمه. يمكن تشغيل إصدارات قديمة من جانغو بخوادم تستخدم تقنيات حديثة لم تكن عندما صدر ذلك الإصدار القديم.
بمعنى قبل هذا الإصدار هناك shared state
المشكلة ليست باطار العمل المشكلة بالاضافات التي طورت بدون مراعاة multithreading
بعدها اجبرتهم rails بمراعاة ذلك. اعتقد هنا عقدة النقاش
php جيدة، فحسب كتابتك للغة هي ما تكون قذرة أو لا ،
اطر العمل تسهل العمل - Yii - او Laravel -او CakePHP ا و CodeIgniter
كيف تدفعك php لكتابه برامج سيئة ؟
و هل تري ان yii هي اطار العمل المناسب للمبتدئين ؟!
شكرا .. لكن هل تقصد أنني إذا تعلمت Python لن أواجه أي مشاكل في PHP
وهل ضروري أن اتعلمها لأدخل PHP أم أنها نصيحة لزيادة الخبرة فقط ..
سوف انقل لك رئيي بالترتيب
python : هي لغة مشهورة و من اكثر اللغات المستخدمه لدي الشركات الكبري في العالم و سهله جدا في التعلم لكن ليس لها مجال كبير في المجتمع العربي
node.js : هو خادم ممتيز بالكثير من الاشياء تكتب بداخله لغة js و اظن ان لها مستقبل جيد جدا
php : هي اللغة الاكثر انتشارا و تطويرها سريع جدا و هناك الكثير من الشرح لها و اطارات العمل الرائعة و اري ان افضلهم الان laravel عند تعلمها لن تحب الانتقال لاي لغة اخري فهي تقوم بكل ما تريد
شكرا لك صديقي :)
نصيحه تعلم PHP
php : قوية ، منتشرة ، اغلبية السيرفرات تدعمها ، سهلة .......... و هناك المزيد
ruby : لم اجربها لكني سمعت ان بها مشاكل .
python : تصلح للويب و للتطبيقات لكني لا اعرف اي شخص استخدمها في بناء موقع .
في حال انك اخترت php فبالتاكيد sql هو ستكون مرافقة لك .
و في النهاية المبرمج هو الاساس فلغة البرمجة مهما كانت قوية تظل اداة
مقالة مفيدة نوعا ما .. شكرا لك
اعتقد اذا عندك اسايات js لاتذهب بعيدا استخدمها مع خادم nodejs واطار عمل expressjs او meteorjs
الافضل ان تستخدم ماتعلمته وقم ببناء تطبيقات صغيره تتعلم خلالها حاجات كثيرة عن الويب ..
اعتقد ليس هناك الافضل او تكون عالقا مع لغة و اطار عمل الافضل اولا تبدأ سريعا الدخول في المجال والاستمرار في التعلم ومن بعد اذا لديك مشروع ابحث عن التقنيه المناسبه لها
أنصحك php لأنها تعتبر من أفضل لغات البرمجة على الإطلاق .
و سهلة المعرفة و منتشرة و طرق تعلمها متوفرة جدا و أيضا يمكنك برمجة أي موقع بها بدون مشاكل .
و ايضا لفة sql لأنها مدعوم في جميع الاستضافات و ايضا متوافقة مع الphp .
و اتمنى لك التوفيق :) .
مجتمع للمبرمجين من جميع المستويات لتبادل المعرفة والخبرات. ناقش لغات البرمجة المختلفة، الحلول البرمجية، والمشاريع.