أخي العزيز mad921 ..
حقيقة لا أعرف عن دورة محددة في هذين المجالين، لكن الطريق نحو JSP طويل ومعقد نوعا ما، وحتى تفهمها جيدا يجب أن تتقن لغة Java وتقنية JavaServlets والكثير من الأمور الأخرى التي قد تكون على بعد دالة واحدة فقط منك في لغة PHP.
بالنسبة لي، تعلمت معظم الأمور عن PHP عن طريق دليل الاستخدام الرسمي لها:
http://www.php.net/manual/
أما JSP فأنا أبعد ما أكون عن احتراف هذه التقنية، ولا يزال أمامي الكثير لأتعلمه، خاصة وأنني لست متفرغ جدا لها، لكنني أقرأ حاليا في هذا المجال الكتب التالية:
Learning Java
Java Servlet Programming
Database Programming with JDBC and Java
Java & XML
Professional JSP
وكلها كتب من oreilley ما عدى الأخير، وكلها كتب ممتازة ما عدى الأخر.. أنصحك بالبحث عن كتاب مماثل عن تقنية JSP تحديدا غير هذا الكتاب.
بالنسبة للكتابات الثاني والثالث ( حول JDBC و XML ) فهي ليست ضرورية أبدا لتعلم JSP لكنك لن تستطيع إدعاء الاحتراف دون أن تكون لديك خبرة في استخدام هاتين التقنيتين عبر Java.
أخي العزيز almuslet ..
أهلا وسهلا ومرحبا ..
أدعو الله أن أكون عند حسن ظنك بي ..
وعقبال جميع المبرمجين المثابرين
( 1 )
بالنسبة للغات التي أبرمج بها فهي كثيرة، لكن عمليا يمكن القول اللغات التالية:
PHP .. أسهل لغة للبرمجة جهة الويب.
C .. للأمور الصعبة وعادة أستخدمها لعمل الخوارزميات التي أطورها في وقت الفراغ ( كأن عندي وقت فراغ ! ).
Python .. أحلى لغة للـ scripting وعمل الأمور السريعة وخاصة لما أريد عمل برنامج يتطلب الاتصال الشبكي.
أما الباقية فهي مجرد لغات تعلمتها ولم أعد أستخدمها أو لم أبدأ باستخدامها علميا بعد ( مثل C++ و Java ).
( 2 )
بما أنك جديد على البرمجة فأنصحك بلغة PHP، كما قلت قبل عدة أشهر في أحد المواضيع، لغة JSP قد تكون متفوقة على PHP في العديد من المجالات (وهو أمر متوقع من آخر بنات Java)، لكن مزايا JSP لا تلبي الغرض بالنظر إلى صعوبة تطوير البرامج بها، معظم برامج الويب ومعظم البيئات تكون فيها PHP كافية وزيادة، فإذا كنت تعتزم عمل النسخة القادمة من Yahoo فأنصحك بالبدأ بتعلم JSP !
( 3 )
جميع المعلومات التي لدي أحصل عليها إما من الكتب أو مواقع الإنترنت، فأنا للأسف لا أمتلك الوقت الكافي للاشتراك بأحد المعاهد بسبب دراستي الجامعية الصعبة ..
أما بالنسبة للندرة على المستوى العربي فهنالك حل واحد للتغلب عليها هو تعلم اللغة الإنجليزية، لأن جهود الترجمة كلها لن تستطيع اللحاق بالركب، فهنالك عدد هائل ويومي من الأبحاث والمقالات التي تنشر باللغة الإنلجيزية، وفي عالم سريع التغير مثل الكمبيوتر .. الترجمة التي تأتينا بالمعلومات بلغتنا العربية الأصيلة التي نعتز بها .. بعد مرور ثلاثة أشهر من نشر هذه المعلومات.. أمر غير مقبول، ولكن تبقى البرمجة هي الحل الأكثر عملية للهواة الذين لا يمتلكون الرغبة في احتراف مجالات الكمبيوتر.
أخي العزيز albaity ..
أهلا وسهلا بك
- بالنسبة لسؤالك الأول ..
المساحة التي يحتلها سكريبت JSP في الذاكرة طوال الوقت تعتمد على الكثير من الأمور، أولا كما تفضلت أنت هو طول البرنامج نفسه ومدى تعقيده، وهنالك أيضا مقدار المعلومات التي يخزنها برنامجك في الذاكرة، وهو أمر تتحكم فيه أنت، وهي الإمكانية الناقصة من PHP ..
الإمكانية هذه تدعى persistent data ..
وهي بصورة مبسطة .. ميزة تتيح لك الاحتفاظ ببعض المتغيرات في مكان عام من ذاكرة المزود، بحيث أن هذه البيانات لا تضيع عند الانتقال من صفحة إلى صفحة أخرى، يعني الآن لما تطور صفحة PHP، وتريد عمل برنامج مثلا يحسب عدد الزوار، يجب أن تقوم بحفظ هذه البيانات في مكان ما ما يضيع بعد الانتهاء من عرض الصفحة، مثلا في قاعدة بيانات، أو في ملف نصي، ومع كل زيارة جديدة للموقع تقوم بفتح هذا الملف النصي وزيادة قيمته بالمقدار واحد وطباعة القيمة الجديدة التي تمثل عدد الزيارات ..
ولكن إذا كانت لديك هذه الميزة، ستتمكن من وضع المتغيرة التي تحتوي على العداد في مكان عام في الذاكرة، بحيث أن الزائر الأول عندما يطلب الصفحة، يتم زيادة المتغيرة بالمقدار واحد، والزيارة التي بعدها تزيدها أيضا بمقدار واحد، وكما تلاحظ فإن المتغيرة موجودة كما هي ولا تضيع بانتهاء تنفيذ الصفحة وعرضها على الزائر، وهذه الطريقة في المثال هذا توفر علينا الكثير من الموارد بدلا من الحاجة لفتح ملف نصي في كل مرة والقراءة منه ثم الكتابة إليه ..
ويمكن تطبيق هذه الفكرة على مستويات أعلى ..
لكن كما تلاحظ، إذا كانت الكمية التي قررت وضعها في الذاكرة كبيرة، فقد يحدث ضعف في الأداء بسبب امتلاء الذاكرة بمعلومات لا تحتاج إليها كثيرا، وهي قد تكون ميزة في JSP وقد تكون عيبا وهذا يعتمد على طبيعة الموقع وكمية الذاكرة المتاحة وعدد الزيارات المتكررة وطريقة تصميم البرنامج ..
يعني أن JSP تعطيك المزيد من الإمكانيات، ولكنك ستكون مسؤولا عن التصرف بصورة صحيحة بهذه الإمكانيات والموارد ..
وهذه الميزة هي التي تحدثت عن أنها ستضاف إلى المترجم، وأعتقد بأن المشروع كان اسمه Shared Resources Manager ( RSM )، وكان يطوره اثنان من الناشطين في تطوير المترجم PHP، وكانت هنالك نتائج جيدة حسبما سمعت، لكنني كما قلت لم أتابع ذلك المشروع منذ مدة، الفكرة كانت أن تطرح هذه الميزة كوحدة إضافية على PHP بترخيص يتيح لهما استخدامه تجاريا، وفي نفس الوقت يظل مشروعا مفتوح المصدر، ولا أتذكر تفاصيله، لكنه كان سيظهر على الأرجح لو كان قد تخطى مراحل التطوير والتجربة الأولية ..
سمعت إشاعة أيضا بأن العمل جار (وبسرية) على مترجم PHP 5، لكنني للأسف منشغل جدا عن العاملين على المشروع، ولم أتمكن من مراسلتهم للتأكد من أي شيء بهذا الخصوص، لكنني كنت أفكر بأن من الممكن أن يكون هذا المشروع قد تأجل لحين النسخة المرتقبة، ولكن هنالك الكثير من الأشخاص الذين يحبون المزاح على الـ irc، وقد تكون قصة PHP 5 برمتها مجرد إشاعة، لكن مشروع RSM ليش إشاعة بالتأكيد
بالنسبة للـ multithreading فمن المستبعد أن تضاف في أي وقت من الأوقات إلى لغة PHP، هذه الميزة موجودة ومستغلة في الواقع في مترجم PHP المكتوب بلغة C، لكن الفرق هو أن لغة C نفسها لغة بسيطة ومحدودة، أما JSP فهي مجرد واجهة أبسط للتعامل مع لغة Java المتقدمة، ودعم multithreading جزأ من لغة Java المتقدمة، ولا أعتقد بأن من المناسب أو أنه سيكون ذي فائدة لـ PHP، الفوائد الوحيدة لهذا الأسلوب هي إمكانية عمل متغيرات تخزن في ذاكرة عامة على جميع الطلبات اللاحقة كما وضحت قبل قليل ويمكن حلها في PHP بتوفير ميزة مشابهة، والميزة الأخرى هي عدم الحاجة إلى تكرار معالجة الملف مرة تلو الأخرى، وقد وضحت الحل لها في PHP أيضا وهو استخدام برنامح يقوم بعمل cache لتخزين الصفحات الجاهزة والمعالجة واستخدامها بدلا من إعادة معالجة الصفحة مع كل طلب ..
أي أن الـ multithreading بحد ذاته لا يعتبر ميزة إضافية تحتاج إليها في بيئة برامج الويب.
بالنسبة لسؤالك الأخير حول الأمور الموجودة في PHP والغير موجودة في JSP، فـ JSP تحتوي على كل ما تحتويه PHP وأكثر، ولكن استخدام PHP أسهل بكثير، فمن ناحية السهولة لا يوجد أدنى مجال للمقارنة و PHP هي الرابحة بعلامات عالية، وكما قلت، الأمور الموجودة في JSP وغير موجودة في PHP ليست من الضروريات، كما أن PHP تتطور بصورة مستمرة محافظة على بنيتها الصلبة وأفكارها التي تجمع بين الجمال والسهولة في نفس الوقت.
أما بالنسبة للمقارنة، فأعتقد بأنني ذكرت معظمها في الإجابة على الأسئلة، وسأحاول أن أقول المزيد في الموضوع لاحقا في حاول كانت هنالك أسئلة أو استفسارات![]()