لقد كنت دائمًا مهتمًا بأفكار مختلفة حول تعلم البرمجة. ربما هذا لأنني ما زلت طالبًا أبديًا في هذا المجال. لكنني تعرفت اليوم على
فكرة واحدة غير متوقعة بالنسبة لي - لبدء التعلم باستخدام Java. ولم أستطع الصمت.
لست متخصصًا كبيرًا في علم أصول التدريس - ربما في علوم الكمبيوتر ، من المعتاد إلقاء الطلاب في الماء ، واختيار مكان أعمق ، وهناك - أولئك الذين يُقدر لهم أن يأتوا. لكن لا يزال يبدو لي أن التدريب سيكون أكثر فاعلية إذا قام المعلم بتعريف الطالب بمفاهيم البرمجة المختلفة واحدًا تلو الآخر ، مع زيادة التعقيد. وبالتالي ، فإن الشرط الرئيسي للحصول على "تدريب" PL هو القدرة على استخدام ميزاتك بمعزل عن غيرها ، بدءًا من الميزات الأساسية.
مرة أخرى ، في رأيي الهواة ، من السهل التحقق مما إذا كانت لغة البرمجة تفي بهذا المطلب. فقط افتح
قسم "Hello World" على Rosetta Code .
دعونا نحاول سرد المفاهيم اللازمة لفهم هذه البرامج الابتدائية.
وتستكمل بناءً على طلب مستمعي الراديو. Brainfuck ، PHP ، C ، جوليا.
بيثون 2
print 'Hello world!'
عند تحليل هذا الرمز ، يجب على المعلم أن يشرح لطلابه على الأقل باختصار
الكلمات الرئيسية والمشغلين ونوع بيانات السلسلة . بالطبع ، حتى بدون هذا التفسير ، يمكن لبعض الطلاب (ولكن ليس جميعهم!) تطوير فهم سريع لهذه الميزات بسرعة. ومع ذلك ، فمن الأفضل أن تحقق على الفور اليقين.
روثون 3
print('Hello world!')
يضاف مفهوم
الوظيفة إلى الكلمات الرئيسية والخطوط . نعم ، وظيفة
print
هي إضافة لبيثون 3 كلغة صناعية. ولكن في الوقت نفسه ، تعتبر الوظيفة ميزة ذات مستوى أعلى من عامل التشغيل ، وهذا يعقد دراسة Python 3 كأول رر. نعم ، يمكنك كمدرس تأجيل توضيح الحاجة إلى استخدام الأقواس لأحد الفصول التالية ، ولكن هذا سيظل ألمًا في أدمغة طلابك.
جوليا
println("Hello world!")
نفس المفاهيم الأساسية كما في حالة Python 3. لكن Julia عبارة عن Java ديناميكي عالي الأداء تم تجميعه في كود أصلي. برافو!
الأساسية
10 PRINT "Hello world!"
الكلمات الأساسية ،
سلسلة AP ،
عوامل التشغيل ،
ترقيم أسطر التعليمات البرمجية. يعد ترقيم الأسطر في Basic مفهومًا منخفض المستوى معقدًا يحاكي جهاز الذاكرة الفعلية لجهاز الكمبيوتر. يمكن أن تصبح حجر عثرة للطالب إذا لم يهتم بها المعلم.
في اللهجات اللاحقة ، مثل VisualBasic ، تصبح أسطر التعليمات البرمجية
علامات بسيطة وغير قابلة للحساب. في البرنامج الأول ، ليست هناك حاجة العلامات. اللغة ، وبالتالي ، يصبح أسهل للتعلم الابتدائي.
محدة ضغط
program HelloWorld(output); begin writeln('Hello, World!'); end.
الكلمات الرئيسية وسلسلة TD والمشغلين والوظائف وماذا؟ نظرًا لأن البرنامج يأخذ عدة سطور أو
كتل أو
محددات (أو
أطراف النهاية ؟ أخلط بينها دائمًا) وتضاف
المسافات البادئة إلى المفاهيم الأولى. وبيان
program
ليس بهذه البساطة ... يبدو أن صداقة باسكال مبالغ فيها إلى حد ما.
C
#include <stdlib.h> #include <stdio.h> int main(void) { printf("Hello world!\n"); return EXIT_SUCCESS; }
الكلمات الأساسية وسلسلة APs والعوامل والوظائف والكتل والمحددات والمسافة البادئة وكذلك
توجيهات ما قبل المعالجة ووحدات الماكرو . كان من الممكن الاستغناء عن وحدات الماكرو في هذا المثال ، ولكن
return EXIT_SUCCESS
في هذه الحالة يعد مؤشراً للغاية: C لغة برمجة نظام تقليدية ، لذا يُنصح بدراستها على أساس فهم جيد
لتشغيل أنظمة التشغيل وبهدف
قابلية الحمل . خلاف ذلك ، يبدو هذا PL أكثر تعقيدًا قليلاً من Pascal.
PHP
<?php echo "Hello world!\n"; ?>
بالإضافة إلى فهم
الكلمات الأساسية وسلسلة APs والمشغلين والمحددات (أو الأطراف
النهائية ؟) ، لا يمكن تعلم هذا المثال دون فهم أساسي لتقنيات الويب المحددة مثل
لغات الترميز (HTML)
ومحركات القوالب . في الواقع ، PHP هي لغة القالب ، وهي نوع من DSL. نتيجة لذلك ، تعد لغة PHP لغة تعليمية رائعة للبائع الذي يرغب في الخوض في تقنية الواجهة الخلفية. لكن تعلم PHP من الصفر أمر صعب للغاية.
C ++
#include <iostream> int main () { std::cout << "Hello world!" << std::endl; }
الكلمات الأساسية وسلسلة AP والمشغلين والوظائف والكتل والمحددات والمسافة البادئة ، بالإضافة إلى
المعالج المسبق بتوجيهاته
ونطاقه وتدفق المدخلات / المخرجات ... Ugh ، هل هذا كل شيء؟
جافا
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello world!"); } }
الكلمات الرئيسية ،
السلسلة AP (حتى سلسلة APs من السلسلتين ، لكن يمكنك أن تظل هادئًا) ،
AP فارغة ،
المصفوفات ،
الكتل ،
المحددات والمسافة البادئة ، بالإضافة إلى
الفئات والكائنات (ضمنيًا ، لكنك لن تشرح
static
خلاف ذلك) ،
السمات ،
الطرق ،
المعدلات وصول ... الله ، أنا بالفعل أريد أن أرى كل هذا! بعد كل شيء ، أردت فقط أن أكتب وزارة الدفاع لماين كرافت!
C #
namespace HelloWorld { class Program { static void Main(string[] args) { System.Console.WriteLine("Hello world!"); } } }
نفس جافا ، ناقص
معدلات الوصول ، بالإضافة إلى
مساحات الأسماء . لا شيء مثير للاهتمام ، ونحن نمر بها.
Brainfuck
لا أريد أن أذكر هنا - إنه ضخم للغاية ورتيب. سأذكر فقط المفاهيم الأساسية التي يجب تعلمها لفهم هذا المثال:
الكلمات الأساسية ،
العوامل ،
المتغيرات ،
المؤشرات ،
الشروط ،
الحلقات ،
التمثيل الرقمي للحروف (جدول ASCII). نعم ، Brainfuck ليست هي اللغة الأكثر سهولة بالنسبة للمبتدئين.
استنتاج
بالطبع ، بالإضافة إلى "الدخول السريع" (سهولة فهم البرامج الابتدائية) ، هناك عدد من العوامل التي تؤثر على اختيار PL للتدريب. هذا هو توفر بيئات وأدوات مناسبة للترميز ، وجودة الوثائق ، وأخيراً قابلية التطبيق العملي. ولكن إذا كانت الخطوات الأولى في التعلم مرتبطة بالألم وسوء الفهم ، فقد يفوق ذلك جميع الحجج الأخرى. بشكل عام ، تعلم بسهولة ولا تهتم!