في هذه المقالة سوف نتحدث عن
دورة "لغات برمجة الويب" ، التي يتم تدريسها في قسم "أنظمة وشبكات الكمبيوتر" (IU-6) MSTU. N.E. بومان. أمثلة على روبي ، والدورة نفسها هي 16 محاضرات فيديو متاحة مجانًا على قناة
Technostream . في Baumanka ، يتم تدريس الدورة التدريبية لطلاب السنة الثانية الذين يعرفون بالفعل لغات البرمجة عالية المستوى مثل Pascal أو C ++ أو Java. ينصب التركيز الرئيسي على الفهم المنتظم للتقنيات المستخدمة في برمجة الويب ، وليس على عمق تطوير تقنيات Ruby. لذلك ، ستكون الدورة مفيدة أيضًا للطلاب الذين لديهم معرفة سطحية بتقنيات الويب بأي لغة.
المحتويات
- حول الدورة "لغات برمجة الويب"
- محتوى المحاضرة
- كيفية إنشاء دورة للجامعة
- لماذا روبي؟
- لماذا روبي ليست مشهورة؟
- الملخص
لغات برمجة الويب
لماذا تسمى الدورة لغات برمجة الويب؟ الجواب بسيط جدا. كما كان الأمر قبل 30 عامًا ، عندما كانت الإنترنت تظهر للتو ، فلا توجد طريقة الآن لاستخدام لغة برمجة واحدة.
- لغات الترميز هي HTML و CSS.
- لغات التكوين وتبادل البيانات - JSON و XML و YAML.
- برمجة المتصفح - جافا سكريبت (Typescript، Coffeescript ...).
- برمجة الخادم - روبي ، PHP ، بيرل ، جافا ، جافا سكريبت ...
لفهم برمجة الويب حتى بأقل قدر ، تحتاج إلى معرفة لغات الترميز والبرمجة 4-5 (على الرغم من أن الحدود بينهما غير واضحة الآن).
الغرض من الدورة
الهدف الرئيسي من الدورة هو وضع فهم للتقنيات اللازمة لتطوير الويب ، لأن معظم المشاريع الحديثة تتعلق بطريقة ما بتطوير الويب. يتم ترتيب الدورة بطريقة تعطي الطلاب بشكل موجز الأسس التي يمكن استخدامها كإطار للدراسة المتعمقة.
يعمل الطلاب على مهارات معينة بشكل مستقل أثناء التدريب ، وتعتمد درجة التطور على ما إذا كنت تنوي الانغماس في تطوير الويب في المستقبل.
مؤلف الدورة
المطور الرئيسي للدورة هو مرشح للعلوم التقنية ، أستاذ مشارك في كرسي "أنظمة الكمبيوتر والشبكات" من MSTU سميت بعد N.E. Bauman Samarev Roman Romanisislavovich. عمل مبرمج بأكثر من 20 عامًا من الخبرة (C ++ و C و Java و Perl و PHP و Ruby وآخرون لأنظمة Windows و Linux و Embedded Linux و MacOS) ، ورئيس تطوير البرامج ، وباحث في مجال DBMS ومعالجة البيانات والبيانات الضخمة. في روسيا وألمانيا والولايات المتحدة الأمريكية.
المدة والتنسيق
تتضمن الدورة الكاملة 192 ساعة أكاديمية: 16 محاضرة لمدة ساعتين ، 8 حلقات دراسية لمدة ساعتين ، 48 ساعة لـ 12 أعمال مختبرية. يتم تخصيص ما تبقى من الوقت للدراسة الذاتية. تتضمن مواد الفيديو جزء المحاضرة فقط. أولئك الذين يرغبون في الخوض في موضوع الدورة بشكل أعمق ، يجب أن تتعلم مواد العمل المختبري والندوات بشكل مستقل. يمكن توجيه جميع الأسئلة إلى المعلم:
samarev@acm.org .
النتائج
كجزء من الدورة التدريبية ، نقوم بتشكيل فهم الطلاب ليس فقط لتقنيات الويب المحددة التي يتم تنفيذها في لغة برمجة Ruby ، ولكن ، بدلاً من ذلك ، تصور كلي للمشكلات التي تنشأ عند إنشاء تطبيقات الويب وكل ما يصاحبها ، باستخدام Ruby كتوضيح جيد جدًا. تعد لغة روبي نفسها إضافة مفيدة للطلاب ، والتي يمكن استخدامها على نطاق واسع خارج الدورة.
محتوى الدورة
محاضرات 1-2. مقدمة- مقدمة لبرمجة الويب من حيث العمارة الأساسية.
- الحد الأدنى من المعلومات حول لغات الترميز وأوراق الأنماط.
- مقدمة بسيطة لجافا سكريبت.
ربما كان يجب أن تخصص جافا سكريبت المزيد من الوقت ، ولكن نظرًا لأن برمجة الويب المستندة إلى المستعرض ليست الهدف الرئيسي للدورة التدريبية ، ولم يتم بعد إنشاء تقنيات البرمجة من جانب الخادم في جافا سكريبت ، فإن المواد المتاحة كافية للفهم الأولي.
محاضرات 3-5. روبيالمحاضرات الثلاث التالية مخصصة لروبي ، حيث أن التقنيات في لغة روبي هذه هي التي تكمن وراء الدورة. تشمل المحاضرات:
- أساسيات لغة روبي.
- المعلومات المطلوبة حول هيكل النوع ونموذج الكائن.
- أسلوب وظيفي.
المحاضرة 6. مبادئ بناء تطبيقات الويبسيقول شخص ما أن هذا المعيار غير ذي صلة ، ولكنه يمثل أساس جميع برمجة الويب الحديثة. لذلك ، فإن أي مبرمج ويب ملزم ببساطة بمعرفة ما هو عليه ، ويجب أن يفهم أن أبسط تطبيق ويب هو مجرد وضع "Hello World".
المحاضرة 7. الرف- الرف هو طبقة وسيطة لمعظم أطر عمل Ruby للويب.
- سيناترا هو إطار مشترك لإنشاء تطبيقات بسيطة.
- مثال على إنشاء تطبيق.
محاضرة 8. مقدمة عن القضبان- الجوانب الرئيسية لتطبيق ريلز.
روبي أون ريلز هو الإطار الذي جعل روبي مشهورًا وأصبح تقريبًا مرادفه. هذا أحد الأمثلة على إطار عمل Model-View-Controller الذي تم تطويره بعمق والذي عمل كنموذج أولي للعديد من أطر الويب الأخرى ، بما في ذلك Grails و Django. لاحظ أن مفهوم ريلز هو إنشاء أكبر قدر ممكن من التعليمات البرمجية باستخدام المولدات الآلية وكتابة أقل يدويًا.
المحاضرة 9. التفاعل غير المتزامنتستخدم معظم تطبيقات الويب الحديثة الطريقة غير المتزامنة ، أي أن طلبات الخادم تختفي في الخلفية للمستخدم. يتم عمل الإجابات في مكان ما بعمق في المتصفح. ماذا تريد ان تعرف هنا؟
- تنسيقات التبادل - XML و JSON.
- تشغيل طلب غير متزامن من Javascript.
- مفهوم جافا سكريبت غير بارز كما يطبق على القضبان.
المحاضرة 10. الاختباريجب تغطية أي برامج حديثة بالاختبارات التلقائية. ينطوي روبي على استخدام اختبارات الوحدة. وبالطبع ، يقترح ريلز أنه يجب تغطية أي إجراء في الاختبارات. تتضمن المحاضرة الموضوعات التالية:
- اختبار الجوانب المختلفة لتطبيقات الويب.
- مقدمة إلى لغات المجال (نظرًا لأن RSpec و Cucumber هما أمثلة على "الإنسانية" في الاختبارات: يجب أن يكون برنامج الاختبار مفهومًا ليس فقط للمبرمج "المصمم" للغة المستخدمة ، ولكن أيضًا للشخص العادي). لاحظ أن النهج المستخدم في كل من RSpec و Cucumber يتم الآن نسخه على نطاق واسع في أدوات الاختبار للعديد من لغات البرمجة الأخرى.
- أدوات مثل SikuliX و Selenium ، والتي يمكن استخدامها لاختبار البرامج مع واجهة رسومية ومتصفحات ، على التوالي.
محاضرة 11. تقنيات XML- لغات الاستعلام مثل Xpath و Xquery.
- XSL و XSLT.
يبدو ، ما علاقة كل ذلك ببرمجة الويب؟ لكن XML هي جوهر تقنية الويب. حقيقة أننا لا نستخدم XML كتنسيق تبادل الآن لا يضمن أننا لن نبدأ في القيام بذلك مرة أخرى بعد 5 سنوات. لا يوجد حتى الآن نهج موحد للتحقق من البيانات بتنسيق JSON. وفي حالة XML ، يتم وضع نظام الترميز بواسطة اللغة نفسها.
إن لغة الاستعلام Xpath هي في الواقع لغة استعلام نقاط الطريق العالمية التي يمكن استخدامها للبحث عن أي عناصر من هياكل البيانات الشبيهة بالشجرة ، والتي تتضمن JSON.
تعد تحويلات XSLT أيضًا طريقة أخرى لتحويل مستندات XML ، والتي تسمح معرفتها للطلاب بعدم إعادة اختراع العجلة في المستقبل عندما يواجهون ETL.
المحاضرة 12. ORM (رسم خرائط الكائنات العلائقية)تقريبا أي إطار عمل برمجة ويب حديث يوفر أي وسيلة للتحول بين الكائنات العلائقية. يحتاج الطلاب إلى فهم:
- سبب الحاجة إلى مثل هذه الآلية ؛
- ما هي حدوده؟
- كيفية استخدامه عمليا.
في هذه الحالة ، يتم النظر في كل شيء في سياق روبي أون ريلز.
المحاضرة 13. الجلسات والأمن وكل ما يتعلق بها.- طريقة تخزين حالة قائمة على ملفات تعريف الارتباط.
- طرق المصادقة النموذجية.
- مثال على إضافة التفويض في ريلز.
- اعتبارات الأمان لتطبيقات الويب في حد ذاتها.
محاضرة 14. الخدمات- الجوانب التاريخية.
- توصيات محددة حول تطوير ونشر خدماتهم الخاصة للويب.
المحاضرة 15. CMS (أنظمة إدارة المحتوى)في برمجة الويب ، من المهم ليس فقط أن تكون قادرًا على كتابة تطبيق ، ولكن أيضًا لفهم ما إذا كنت بحاجة إلى كتابته. تمثل هذه المحاضرة عرضًا للأنواع الرئيسية من تطبيقات الويب التي تم إنشاؤها بالفعل والتي يمكن تخصيصها لمتطلبات عميل معين ، وإذا لزم الأمر ، يتم إنهاؤها.
- التأكيد على أدوات روبي.
- أكثر أنظمة إدارة المحتوى شيوعًا مكتوبة بلغة PHP.
محاضرة 16. استضافة تطبيقات ويب روبي على الإنترنتتعتبر الأيديولوجية العامة لخدمات الويب. يتم شرح أصول هذه البنية مع تنسيق XML التبادلي وتعديلها الإضافي في Web-API مع JSON و REST أو GraphQL.
- خوادم الويب
- طرق المحاكاة الافتراضية.
- طرق استضافة التطبيق على الإنترنت.
كيفية إنشاء دورة للجامعة
من الصعب إنشاء دورات تدريبية حول الموضوعات المتعلقة بالبرمجة ، حيث تتغير التكنولوجيا كل 5-10 سنوات. عند إنشاء دورة دراسية للجامعة ، من الضروري الموازنة بين تكوين المهارات العملية بلغات برمجة محددة وتقديم الأسس النظرية اللازمة لفهم التقنيات على هذا النحو. بالإضافة إلى ذلك ، يكمن الفرق بين التعليم الجامعي والدورات التدريبية في العرض المنهجي للمواد ، والذي يفرض أيضًا قيودًا على وقت وحجم المواد التي يمكن تقديمها.
في السنوات الأخيرة ، كان هناك ميل لتسجيل محاضرات جامعية على الفيديو وإنشاء دورات فيديو.
دورة "لغات برمجة الويب" هي أول محاولة رسمية من قبل جامعتنا. واستناداً إلى التعليقات ، سنقرر كيف وبأي شكل نقوم بعمل إدخالات جديدة.
قبل 10 سنوات ، كان من الضروري تحديث المناهج بشكل جذري ، من خلال إدخال ، من بين أمور أخرى ، برمجة الويب. في قسم أنظمة وشبكات الكمبيوتر ، يتم تخصيص ساعات التدريب نفسها تقريبًا للدورات المتعلقة بالإلكترونيات وتصميم الكمبيوتر مثل البرمجة. علاوة على ذلك ، تتضمن دورات البرمجة تدريبًا خوارزميًا في اللغات عالية المستوى Pascal ، C ، C ++ / Qt ، التدريب في المجمعات المختلفة ، بالإضافة إلى نظرية لغات البرمجة والمجمعين. وحتى لغات البرمجة لـ FPGAs وأجهزة معينة. أي أن القسم يعد متخصصين عالميين يختارون في المستقبل تخصصهم.
نحن بحاجة إلى تحديد تقنيات الويب الواعدة التي يمكن إتقانها في فصل دراسي ، ومن المستحسن أن يتم عرض هذه التقنيات في لغات برمجة أخرى.
لماذا روبي؟
لماذا تم اختيار روبي؟ اختيار لغات برمجة الويب غني للغاية. بالإضافة إلى Ruby ، هذه هي PHP و Perl و Javascript و Java و Go وغيرها. إذا اقتربنا من منظور تطبيقات الويب المحملة بشدة ، ثم أرسلنا
مقاييس تشكك في
Web Framework ، فإننا نرى في المقدمة C ++ و Java و Rust و Ur و Go وما إلى ذلك. روبي ليست الأكثر شعبية لتطوير الويب ، ولا الأسرع حلول محملة للغاية. ومع ذلك ، فإن روبي لديها مجموعة من الفضائل الأخرى التي تجعلها لغة برمجة ، والتي يجب أن يدركها أي مبرمج متعلم.
احتفلت روبي مؤخرًا بعيدها الخامس والعشرين ، مما يعني أنها لغة ناضجة إلى حد ما. على الرغم من حقيقة أن معظم اللغات المذكورة قد تخطت أيضًا أو أصبحت قريبة من هذا العمر (Rust ، Dart ، Go لا تزال "خضراء" بالمقارنة معها) ، فإن Ruby هي واحدة من اللغات القليلة التي حافظت على التوافق مع الإصدارات السابقة على مر السنين.
في عالم روبي ، يمكننا القول أنه لم تكن هناك ثورات وأي تغييرات جذرية. يشير في البداية إلى لغات جيدة التصميم ، والتي بقيت مفاهيمها الأساسية حتى يومنا هذا دون تغيير. مطالبات الأداء المتعلقة بالإصدارات القديمة قبل 1.8.7 ، والتي تم إيقافها قبل 10 سنوات. تُظهر الإصدارات الحديثة كل عام زيادة متعددة في الإنتاجية. الادعاءات بأن هذه اللغة ليست شائعة جدًا هي صحيحة فقط لبلدنا. لسوء الحظ ، الشركات الكبيرة في بلدنا تتفوق عليه حقًا.
لماذا روبي جيد للتعليم الجامعي؟ هذه لغة كائن نقية. وبما أنها ديناميكية ، يمكن إعادة تعريف كل شيء تقريبًا. لا توجد أنواع بسيطة في نموذجه (لن نفكر في تطبيق النظام هنا ، نحن نتحدث فقط عن نموذج). أي بيانات هي كائن. الرمز كائن. أي أن روبي تجعل من السهل تعلم مبادئ البرمجة الشيئية. بالإضافة إلى ذلك ، فإن بنية اللغة بسيطة للغاية وليس لها استثناءات تقريبًا. يجب تنفيذ أي رمز مكتوب في البرنامج مرة واحدة ، ولا يهم مكان كتابة هذا الرمز - داخل إعلان الفصل أو خارجه. كل ما هو مكتوب سيتم تحقيقه. إن بنية Ruby مرنة للغاية ، مما يجعلها ملائمة للغاية لكتابة اللغات الخاصة بالمجال (DSL / DSEL). بالإضافة إلى ذلك ، فإن مفهوم روبي الأساسي - الكتلة - هو وظيفة مجهولة. يسمح إتقان هذه المبادئ للطلاب بإتقان البرمجة الوظيفية بسهولة في لغات البرمجة الوظيفية الخالصة.
وبدلاً من ذلك ، الجدارة الزخرفية لروبي - لا حاجة لإضاعة الوقت في شرح التنسيق الإلزامي للشفرة مع المسافة البادئة. يتم تمييز البرنامج بشكل واضح على أي حال. سيوفر التنسيق تلقائيًا rubocop ، وسيتعلم الطلاب الكتابة بشكل صحيح بمرور الوقت.
لماذا روبي ليست مشهورة؟
لماذا لا تزال روبي ، بمثل هذه المزايا ، غير شائعة وتشير إلى لغات ذات عتبة دخول عالية؟
أول شيء يجب أن تفهمه: روبي ليست مجرد لغة برمجة ضرورية أخرى يمكنك أن تبدأ البرمجة في المساء ، ولكنها تستوعب تمامًا في غضون أسبوع. هذه لغة مختلفة بفلسفة مختلفة.
المبدأ الأول لروبي: يجب أن يُنظر إلى نص البرنامج على أنه نص بلغة طبيعية. أي أن روبي هي لغة للمبرمج الذي هو شخص ، وليست لغة تحتاج إلى العثور على المبرمج المناسب لها. لسوء الحظ ، فإن معظم لغات البرمجة الحديثة تتبع مبدأ "المبرمج سوف يتحمل" ، ويتم النظر إلى التراجع بالفعل بصعوبة.
غالبًا ما يتم انتقاد روبي لفعلها الشيء نفسه بعشرات الطرق. ولكن في اللغة الطبيعية لدينا عدد كبير من المرادفات ، واختيار المرادف الصحيح هو الذي يجعل خطابنا غنيًا. لذلك هو في روبي. إلى جانب حقيقة أنه يمكن تنفيذ نفس الإجراءات بطرق مختلفة ، هناك العديد من المرادفات المرتبطة بنفس الأساليب المرتبطة بالطرق الخاصة
alias_method
alias
و
alias_method
.
مثال بسيط على قيود معظم لغات البرمجة الأخرى. افترض أن هناك مجموعة من المنتجات ، وتريد تحديد أنها ليست فارغة. في معظم اللغات ، سنكتب شيئًا مثل
if (products.size() > 0
) .... ولكن ، بعد أن أتيت إلى المتجر ، لا نسأل البائع: "إذا كان لديك أكثر من صفر من هذا المنتج ومثل هذا المنتج؟" نسأل سؤالًا بسيطًا: "هل لديك مثل هذا المنتج؟". في روبي ، تحتاج إلى استخدام الأساليب التي تعبر عن معنى العمل. نعم ، يمكننا استخدام الاختيار "أكبر من الصفر" ، ولكن الطريقة الطبيعية هي السؤال
if products.any
. هذا حرفيا: هل هناك منتجات؟ لاحظ أن Ruby يعمل بشكل جيد مع Unicode ، لذلك إذا لزم الأمر ، وبناءً على هذه اللغة ، يمكنك إنشاء لغات متخصصة مع التكيف الإقليمي. على سبيل المثال ، إذا كنت تريد إعادة تعريف جميع أسماء الفئات والأساليب باللغة الروسية.
مثال مثير للاهتمام ، وإن لم يكن مباشرًا تمامًا ، مثال:
Bato: A Ruby port for Filipinos .
حول موضوعية اللغة: يميز روبي بوضوح بين المتغيرات / الثوابت والأشياء. بسبب الطبيعة الديناميكية للغة ، "تعيش" البيانات حياتها كأشياء. أي معرف هو ثابت أو متغير يشير فقط إلى كائن. يؤدي سوء فهم هذا المبدأ إلى مفاجآت:
str1 = "Test" str2 = str1 str1.sub! "Te", "La" puts str2
هنا استخدمنا للتو طريقة تعديل الكائن ، والمراجع التي تم تخزينها بواسطة متغيرين. ألاحظ أن هذه ليست طريقة تقليدية لروبي للتغيير. عادة ، تبقى الكائنات بدون تغيير ، وتؤدي التغييرات إلى كائنات جديدة. أيضا ، الطريقة
sub!
المستخدمة هنا يحتوي على لاحقة - علامة تعجب - وهو نظام التسمية المقبول لروبي للطرق التي تعدل الكائن نفسه. بدون هذا الرمز ، تفرز الطريقة ببساطة كائنًا جديدًا.
ميزة أخرى لـ Ruby ، والتي غالبًا ما تحير المطورين الذين يأتون من لغات برمجة أخرى: مفهوم "block". من الناحية النحوية ، تبدو الكتلة كما هي في لغات البرمجة الأخرى ، وفي نسختين في وقت واحد:
{…}
و
do..end
(لا تنس أن روبي تم إنشاؤه للبشر ، لذلك نختار الأقواس إذا كان التعبير أحادي السطر والكلمات إذا كان هناك الكثير من الخطوط). جوهر الكتلة في روبي هو رمز يتم تخزينه ككائن ويمكن تنشيطه عن طريق استدعاء
yield
. النظير المباشر في C و C ++ هي وظائف رد الاتصال. في Javascript ، دالة مجهولة مثل
some_func('on_element_click', function(event) {…}
).
بفضل هذا المفهوم ، تعد روبي واحدة من أكثر لغات البرمجة اختصارًا وتعبيرًا. على سبيل المثال ، سيبدو تحويل عناصر المصفوفة وفقًا لوظيفة التربيع كما يلي:
(1..5).map { |x| x * x }
حيث
{ |x| x * x }
{ |x| x * x }
- كتلة بمتغير محلي معلن
x
، أي وظيفة لتحويل عناصر المصفوفة. والطريقة التي تنتقل إليها تسمى ببساطة خريطة (أي "خريطة"). ولا تحتاج إلى كتابة كلمة
return
، على الرغم من أن هذا ممكن ، لأن كل شيء واضح بالفعل (في Ruby ، تكون نتيجة العملية الأخيرة دائمًا هي القيمة المرتجعة). علاوة على ذلك ، فإن رمز الكتلة هو رمز يسمى بشكل مستقل لكل عنصر من عناصر المصفوفة. هذا هو السبب في أنه ليس من المنطقي محاولة بدء المتغيرات داخل الكتلة ونأمل أن يتم الحفاظ على قيمتها أثناء معالجة العنصر التالي. الكتلة هي وظيفة معالجة مخزنة ، ولا أكثر.
إذا أردنا تحليل سلسلة بأرقام تم إدخالها من لوحة المفاتيح ، فما عليك سوى كتابة:
gets.chomp.split.map(&:to_i)
أي قراءة السلسلة (يحصل) ، والتخلص من أي القمامة مثل أحرف
chomp
السطر (
chomp
) ، وتقسيمها إلى كلمات (
split
) ، واستدعاء التحويل باستخدام الدالة
to_i
(بشكل صارم ، طريقة كائنات من النوع "سلسلة"). ولا أكثر. يعرف سبليت أنه في اللغة البشرية العادية ، يعني "كسر السطر" فصله بالكلمات ، حيث تكون المحددات عبارة عن مسافات وعلامات ترقيم. يمكن استخدام الخريطة في مثل هذا النموذج القصير مع اسم الطريقة التي سيتم أخذها من الكائن. على الرغم من أنه سيكون من الممكن كتابة
map { |x| x.to_i }
النموذج الكاملة
map { |x| x.to_i }
map { |x| x.to_i }
، أو حتى
{ |x| return x.to_i }
{ |x| return x.to_i }
. ولكن هذا لا يحسن إمكانية القراءة ، لذا يمكنك ترك
map(&:to_i)
فقط
map(&:to_i)
.
ألاحظ أن مفهوم الكتلة يتغلغل بصراحة في روبي. حتى رمز العرض
class HelloWorld (1..3).each { puts 'Hi from class declaration!' } def hi puts 'Hello World!' end end HelloWorld.new.hi
يعرض على الشاشة:
Hi from class declaration!
Hi from class declaration!
Hi from class declaration!
Hello World!
ما قد يبدو غير متوقع هنا؟ الحلقة داخل إعلان الفئة طبعت الرسائل. ثم تلقينا رسالة من طريقة مثيل لهذه الفئة. والسر بسيط جدا. روبي هي لغة ذات نموذج برمجة منتظم. طريقة نموذجية لاستدعاء أي طريقة مع كتلة:
method_with_block(args) do ... end
الكلمات
class
و
def
في المثال هي في الأساس أسماء الطرق التي يتم تمرير الوسيطات إليها
HelloWorld
،
hi
. ستصبح حجة
HelloWorld
بالنسبة لنا الاسم الثابت للفئة ، وسيصبح
hi
هو اسم الطريقة. ما تبقى من
end
الكلمة كتلة. ويتم تنشيط رمز الكتلة عن طريق استدعاء العائد ، وبعد ذلك يتم تنفيذ كل شيء بالتسلسل. أي أنه حتى هنا لا يوجد فرق عمليًا بين استدعاء طريقة منتظمة وإعلان الطرق والفئات والوحدات.
انتبه أيضًا إلى إنشاء التنشيط
HelloWorld.new.hi
. يشير
HelloWorld
- ثابت - إلى كائن من النوع
Class
. هذا الكائن له طريقة
new
. نتيجة استدعاء
new
هي كائن تم إنشاؤه من نوع
HelloWorld
، والذي نسميه منه أسلوب
hi
. وحتى هنا يتجلى انتظام روبي. نحن لا نكتب
something = new HelloWorld
، ولكن ببساطة نسمي طريقة كائن معين (
Class
المشار إليها بواسطة
HelloWorld
) ، والتي تولد كائنًا من نوع
HelloWorld
.
يتم تسهيل عدم فهم اللغة أيضًا عن طريق سلاسل طويلة من المكالمات:

إذا كنت تعرف جافا سكريبت أو jQuery ، فلا ترى أي شيء فظيع هنا. قد يتم الخلط بين أولئك الذين جاءوا من C و C ++ حول عدد النقاط. يستخدم روبي تحويل كائن وظيفي. أي أن هذه السلسلة بأكملها هي عملية تحويل سلسلة ، والتي تتكون من اختيار الكلمات ، وتحويلها إلى أرقام ، واختيار الكلمات فقط ، والتربيع وإضافة النتيجة.
تنشئ أي طريقة في Ruby كائن قيمة. لا توجد استثناءات. حتى النيل شيء. نظرًا لأن Ruby هي لغة ديناميكية بها جامع قمامة تلقائي ، فلا حاجة إلى إنشاء متغيرات جديدة. سيتم حذف الكائنات الوسيطة. بمعنى ، يمكن تحليل التعبير الطويل بسهولة في سلسلة من تعيين القيم للمتغيرات المحلية ، التي تستدعي على التوالي الأساليب المقابلة. ولكن لماذا ، إذا كان كل شيء واضحًا بالفعل؟
في برامج Ruby ، من النادر جدًا رؤية حلقات مثل ،
while
،
loop
. يتم توفيرها في بناء الجملة ، ولكن لا يتم استخدامها تقريبًا. لماذا؟ نعم ، لأنهم لا يحملون حمولة دلالية.
مثال: في مجموعة من السلع تحتاج إلى العثور على "كعكة مع بذور الخشخاش". بالنسبة إلى لغات البرمجة التقليدية ، يمكننا استخدام رمز Ruby التالي تقريبًا:
products…
في هذه الحالة ، يبدو رمز Ruby العادي كما يلي:
products…
أي أننا نكتب حرفيا في سطر واحد: ابحث عن المنتج بالاسم. هذا كل ما في الأمر. لأنه في الواقع نحن مهتمون فقط باختيار السلع ، وليس على الإطلاق بمؤشرات السلع وليس كميتها.
مثال على الحياة: أتيت إلى المتجر وسألت البائع المؤسف بطريقتين: الأولى - "
بالنسبة لجميع السلع من صفر إلى 15143 ، إذا كان اسم المنتج يساوي كعكة مع بذور الخشخاش ، فاعطيها لي " ؛ والثاني - "
أعطني كعكة مع بذور الخشخاش ." يبدو أن كلا الخيارين صحيحان من الناحية اللغوية ، لكن الخيار الثاني طبيعي. لسبب ما ، يعتبر معظم المبرمجين أن الخيار الأول طبيعي. والمبرمجين روبي هم الثاني. وطريقة
find
هنا ليست سوى واحدة من بدائل الحلقة. أود أن ألفت الانتباه إلى ذلك ، متوقعًا التعليقات التي تحتوي على لغات أخرى أيضًا للبحث في الصفيف مع وظيفة التحديد.
لذلك ، على الرغم من وجود
each_index
each_with_index
for
، في
while
loop
في Ruby ، إلا أنه لا أحد يستخدمها تقريبًا نظرًا لوجود طرق محددة:
each
،
each
،
each
، مع
each
each_index
each_with_index
select
،
select
،
map
،
reduce
،
find
،
detect
والعديد من الآخرين يعبرون عن معنى محدد - لكل فهرس ، لكل عنصر
array.each_index
، حدد ، تحويل ، طي ، بحث ، إلخ. وإذا احتجنا للحصول على فهارس ، سوف نستخدم
array.each_index
. وإذا كنت بحاجة إلى تحديد العناصر ، استخدم
select
. التأكيد على الطبيعة. نسأل فقط ما يجب فعله حقا. لا حاجة إلى فهرس - لا حاجة لطلبه. راجع
وثائق الوحدة القابلة للتعداد لمزيد من التفاصيل.
الملخص
روبي هي لغة بسيطة من الناحية النحوية ولكنها مرنة مع نموذج كائن متطور ، يتم التركيز بشكل رئيسي على رمز موجز ولكنه جيد الإدراك يركز على الشخص الحي. روبي موجود بشكل افتراضي في حزمة أي نظام تشغيل حديث (أو يمكن تثبيته على Windows). تمت كتابة عدد كبير من البرامج بهذه اللغة ، وهناك مجتمعات مستقرة مستعدة للمساعدة في تقديم المشورة أو العمل. برامج Ruby هي نصوص إدارية أساسية لنظامي Linux و MacOS (OpenSuSE / SuSE و brew.io على التوالي) ، وهذا هو
التعلم الآلي والرياضي ، وهذه اختبارات (Rspec ، Cucumber ، Capybara ...) ، هذا هو نشر التطبيق (Puppet ، Chef) وغير ذلك الكثير.
إذا كان الطلاب سيعرفون روبي ، فإن ذلك سيوسع آفاقهم بشكل كبير ، وسيسمح لهم بإلقاء نظرة مختلفة تمامًا على الأشياء المألوفة. بالإضافة إلى ذلك ، من السهل جدًا تعلم لغات برمجة نصية أخرى بعد Ruby ، ولكن السؤال هو ما إذا كنت تريد استخدامها.