لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 09/08/16 في كل الموقع
-
في سلسلة المقالات هذه سنتعلم معًا أساسيات البرمجة بلغة Java، وأثناء ذلك سنتعلم أيضًا طرائق جديدة للتفكير، وتحليل المشكلات إلى أجزاء صغيرة، وكتابة خوارزميات وحلول منهجية لها. إن مهارة حل المشكلات هي أهم مهارة لأي طالب علوم حاسوب، وكما سنرى معًا، تعلم البرمجة سيفيد كثيرًا في تطوير هذه المهارة. ما هي البرمجة؟ البرنامج هو سلسلة من التعليمات التي تحدد كيفية تنفيذ عملية حسابية. قد تكون العملية الحسابية رياضية، مثل حل جملة معادلات أو إيجاد جذور كثير حدود. وقد تكون أيضًا معالجة رموز، مثل البحث عن نص واستبداله في مستند أو ترجمة برنامج آخر. تختلف التفاصيل بين لغة وأخرى، لكن بعض التعليمات الأساسية تظهر في جميع لغات البرمجة تقريبًا. الإدخال (input): تحصيل البيانات من لوحة المفاتيح، أو من ملف، أو من حساس، أو من جهاز آخر. الإخراج (output): عرض البيانات على الشاشة، أو إرسالها إلى ملف أو إلى جهاز آخر. الحساب (math): تنفيذ العمليات الحسابية الأساسية مثل الجمع والقسمة. اتخاذ القرارات (decisions): التحقق من شروط معينة وتنفيذ التعليمات المناسبة لكل حالة. التكرار (repetition): تنفيذ عمل ما بصورة متكررة، عادة مع وجود تغيير. صدق أو لا تصدق، هذا كل شيء تقريبًا. أيَّ برنامج استعملته من قبل، مهما كان معقدًا، بُنِيَ من تعليمات صغيرة تشبه هذه التعليمات. وهكذا يمكنك اعتبار البرمجةبأنها عملية تجزئة المهام الكبيرة والمعقدة إلى مهام جزئية أصغر وأصغر. وتستمر العملية حتى نصل إلى مهام جزئية بسيطة بما يكفي لتنفيذها بالتعليمات البسيطة التي يوفرها الحاسوب. ننصحك بالرجوع إلى مقال تعلم البرمجة لمزيد من التفاصيل حول البرمجة عمومًا وكيفية دخول المجال. ما هي علوم الحاسوب؟ أحد أهم نواحي كتابة البرامج هو تحديد طريقة حل مشكلة ما، خصوصًا إذا تعددت الحلول. مثلًا، هناك طرق عديدة لترتيب قائمة من الأرقام، ولكل طريقة مزاياها. حتى نحدد أي طريقة هي الأفضل في وضع معين، نحتاج لتقنيات لتوصيف وتحليل الحلول بشكل صيغ منتظمة. علوم الحاسوب هي علوم الخوارزميات، وتشمل تحليل الخوارزميات واكتشاف خوارزميات جديدة. الخوارزمية هي سلسلة خطوات تحدد طريقة حل مشكلة ما. بعض الخوارزميات أسرع من غيرها، وبعضها تستهلك مساحة أقل في ذاكرة الحاسوب. سوف تتعلم كيف تفكر كعالم حاسوب أثناء تعلمك كيفية تطوير خوارزميات لحل مشكلات لم تحلها من قبل. تصميم الخوارزميات وكتابة الشفرات البرمجية عمليتان صعبتان ومعرضتان للأخطاء. تدعى الأخطاء البرمجية bugs (عِلل برمجية)، وعملية تتبعها وتصحيحها تدعى debugging. ستطور مهارات جديدة في حل المشكلات أثناء تعلم تصحيح الأخطاء في البرامج التي تكتبها. عليك التفكير بإبداع عندما تواجهك أخطاء غير متوقعة. ورغم أن حل الأخطاء البرمجية قد يكون محبطًا، إلا أنه جزء مثير وفيه تحدٍ وذكاء. اكتشاف الأخطاء يشبه عمل التحري في بعض نواحيه. حيث تواجهك الأدلة، وعليك استنتاج العمليات والأحداث التي أدت إلى النتائج التي تراها. أحيانًا يقود التفكير بتصحيح البرامج وتحسين أدائها إلى اكتشاف خوارزميات جديدة. ننصح بقراءة مقال المدخل الشامل لتعلم علوم الحاسوب للمزيد من التفاصيل. لغات البرمجة إن لغة البرمجة التي ستتعلمها هي Java، وهي لغة عالية المستوى (High-level language). هناك لغات أخرى عالية المستوى لعلك سمعت بها مثل Python، أو C و C++، أو Ruby، أو Javascript. يجب ترجمة البرامج المكتوبة بلغات عالية المستوى إلى لغة منخفضة المستوى (low-level language) أو ما يدعى ”لغة الآلة“، قبل أن يستطيع الحاسوب تشغيلها. تحتاج هذه الترجمة وقتًا، لكن هذه سيئة بسيطة للغات عالية المستوى. في المقابل، للغات عالية المستوى حسنتين: كتابة البرامج بلغة عالية المستوى أسهل بكثير. كتابة البرامج تأخذ وقتًا أقل، وتكون البرامج أقصر وأسهل للقراءة، ومن المرجح أكثر أن تكون صحيحة. اللغات عالية المستوى محمولة (portable)، بمعنى أنه يمكن تنفيذ البرامج المكتوبة بها على أنواع مختلفة من الحواسيب دون أي تعديلات أو بعد عمل تعديلات قليلة. أما البرامج المكتوبة بلغة منخفضة المستوى فلا يمكنها العمل إلا على نوع واحد فقط من الحواسيب، ويجب إعادة كتابتها قبل أن نتمكن من تشغيلها على جهاز آخر. هناك نوعين من البرامج التي تترجم اللغات عالية المستوى إلى لغات منخفضة المستوى: المفسرات والمترجمات. يقرأ المفسر (interpreter) البرامج المكتوبة بلغات عالية المستوى وينفذها، أي أنه ينفذ التعليمات التي يمليها البرنامج. يعالج المفسر البرنامج في أجزاء صغيرة، حيث يقرأ بعض السطور ثم ينفذ التعليمات ويعود لقراءة سطور أخرى وهكذا. يبين الشكل 1.1 بنية المفسر. على صعيد آخر، يقرأ المترجم (compiler) البرنامج كله ويترجمه دفعة واحدة قبل بدء تنفيذ البرنامج. في هذه الحالة، يدعى البرنامج المكتوب بلغة عالية المستوىبالشفرة المصدرية (source code)، ويدعى البرنامج المترجم بالشفرة الهدف (object code) أو الملف التنفيذي (executable). بعد ترجمة البرنامج، يمكنك تنفيذه بشكل متكرر دون الحاجة لأي ترجمة أخرى. ونتيجة لذلك، تعمل البرامج المترجمة بصورة أسرع من البرامج المفسرة. لغة Java مجمّعة ومفسرة معًا. فبدلًا من ترجمة البرامج مباشرة إلى لغة الآلة، يولد مترجم Java بايت كود (byte code). شفرة بايت سهلة وسريعة التفسير مثل لغة الآلة، لكنها محمولة أيضًا، حيث يمكننا ترجمة برنامج Java على أحد الأجهزة، ثم ننقل شفرة بايت إلى جهاز آخر، ثم نشغل شفرة بايت على الجهاز الثاني. يدعى المفسر الذي ينفذ شفرة بايت "بآلة Java الافتراضية" (Java Virtual Machine أو اختصارًا JVM). يبين الشكل 1.2 مراحل هذه العملية. ورغم أن هذه العملية قد تبدو معقدة، إلا أن معظم بيئات البرمجة (أحيانًا تدعى بيئات التطوير)، تجري هذه الخطوات تلقائيًا بدلًا منك. سيكلفك الأمر عادة ضغطة زر واحدة أو طلب أمر واحد لترجمة برنامجك وتنفيذه. من جهة أخرى، من المهم أن تعرف الخطوات التي تجري وراء الستار، لكي تتمكن من معرفة سبب المشكلة في حال وقوع أي خطأ. ترجمة -وبتصرف- لجزء من الفصل الأول من كتاب Think Java: How to Think Like a Computer Scientist لكاتبيه Allen B. Downey و Chris Mayfield. اقرأ أيضًا تعلم البرمجة المدخل الشامل لتعلم علوم الحاسوب1 نقطة
-
هل تصدق أن تقنية تسعير واحدة قد غيرت مقدار المال الذي أكسبه؟ وليس ذلك فحسب، بل جعلت عملائي سعداء أيضًا!، دعني أشرح لك الأمر. في السّابق، كنت أقود سيارتي كل يوم إلى مقر عملي الذي يبعد عني نحو 45 دقيقة، وأستغل ذلك الوقت في الاستماع إلى الكتب الصوتية في السيارة. وكنت أستمع فيها إلى دروس للإسبانية وبودكاست عن الطهي وتاريخ القرون الوسطى، كما كنت أستمع إلى كتب عن إدارة الأعمال. لم أكن على استعداد ﻹنفاق 100 ألف دوﻻر في السنة للحصول على درجة ماجستير في إدارة الأعمال، ففضّلت أن أستمع إلى دورات عن إدارة الأعمال ذات عناوين مضحكة، مثل "ماجستير إدارة أعمال في يوم واحد" أو "ماجستير إدارة الأعمال الشخصي". يفترض بهذه الكتب أن تكون بديلًا عن ماجستير إدارة الأعمال الغالي جدًا، ويمكنك أن تتعلم حقًا من أمثال هذه الكتب، فمثلًا، كان أحد فصول تلك الكتب يدور حول التسعير، وأنك يجب أن تعطي عميلك ثلاثة عروض تسعير مختلفة. ماذا؟! كنت أعرف بالفعل أن هناك ثلاثة طرق لتسعير أي منتج: ارفع تسعيرك واطلب الكثير أملًا أن تحصل من عميلك على عرض بشكل أو بآخر. بع خدماتك بشكل رخيص، هذا سوف يجعل عميلك سعيدًا لكنك ستخسر في النهاية لضياع مجهودك مقابل ثمن زهيد. توصَّل إلى حل وسط بين الخيارين السابقيْن، دون أن يخسر أحدكما كثيرًا أو يكون سعيدًا للغاية أيضًا. مميزات التسعير بثلاثة خيارات مختلفة هل سمعت باسم دان أريلي من قبل؟ إنه خبير في الاقتصاد السلوكي (فرع من الاقتصاد يحلل العوامل النفسية التي تدفع الناس إلى اتخاذ قرار شراء/بيع معين أو سلوك بعينه). لقد أجرى دان بعض الأبحاث عن هذه التقنية في التسعير بعدما رأى إعلانًا في صحيفة The Economist يعرض الاشتراك في الصحيفة، إذ بدا ذلك الإعلان مريبًا إليه، وقد كان هكذا: خيار أ - اشتراك أونلاين مقابل 59$ خيار ب – اشتراك ورقي مطبوع مقابل 125$ خيار ج – اشتراك مطبوع+أونلاين مقابل 125$ هل انتبهت كيف أن الخيارين الثاني والثالث بنفس السعر؟، حاول أريلي أن يكتشف السبب الذي دفع The Economist أن تختار هذه التقنية الغريبة في التسعير، فقرر إجراء تجربة على مئة طالب في MIT، حيث طلب منهم أن يختاروا أحد الخيارات السابقة في اشتراك الصحيفة، وخرج من التجربة بما يلي: 84% من الطلاب اختاروا الخيار ج. 16% من الطلاب اختاروا الخيار أ. عدد الطلاب الذين اختاروا الخيار ب ...؟ صفر!. هذا رائع بالتأكيد بالنسبة للصحيفة، لكن لماذا لم يختر أي طالب الخيار ب؟ ربما يكون السؤال الصحيح هو لماذا قد يختار أي أحد الخيار ب، إذا كنت ستحصل على قيمة أكبر بنفس السعر من الخيار ج؟ طيب لماذا ﻻ نتخلص من الخيار ب إذا لم يكن يختاره أحد؟ أﻻ يُعَدُّ زائدًا عن الحاجة؟ .. كلا، إطلاقًا. لمّا حذف أريلي الخيار ب ووضع الطلاب أمام خيارين فقط: أ. اشتراك أونلاين مقابل 59$ ب. اشتراك أونلاين+ مطبوع مقابل 125$ كانت النتيجة أن 32% فقط من الطلاب اختاروا الخيار الأغلى، وهذه نسبة قليلة مقارنة بنسبة 84% في المرة السابقة، حيث كان الخيار ج في المرة اﻷولى مماثلًا للخيار ب في المرة الثانية، وهنا يكون السؤال الذي ينبغي أن نطرحه هو: لماذا هذا التغير؟ إن سبب التغير هنا هو الخيار اﻷوسط. لقد وجد أريلي أن الخيار الأوسط وُضِع من أجل أن يجعلنا نشعر بأننا قمنا باختيار أفضل إذا اخترنا الخيار ج، إذ أننا نحصل على قيمة أكبر مقابل نفس السعر. لقد رفعت هذه الخيارات الثلاثة ربح الصحيفة أعلى من لو كانت وضعت أمام القراء خيارين فقط. إذًا فقد علّمنا أريلي أننا ﻻ نحكم بمنطقية في هذه اﻷمور، وأهم من ذلك أنه أرانا أهمية أسلوب "مستويات التسعير الثلاثة". أسعد عملاءك إن نجاح هذه التقنية يرجع لعدة أسباب، أولهم أن الأمر نفسيّ بحت، فإن عميلك يريد أن يشعر أن القرار بيده، فقد يكون مديرًا أو صاحب شركة أو تجارة، أو حتى عاملًا مستقلًا، لكن في كل الأحوال فهو يريد أن يشعر أنه صاحب قراره، ألسنا كلنا نريد ذلك؟ وماذا يريد المدراء وأصحاب الأعمال سوى إصدار الأوامر وصناعة القرارات؟ فذرهم إذًا يختارون من الخيارات التي تعجبك. إنك إذا أعطيتهم خيارًا واحدًا -كما يفعل المستقلون عادة- دون أن يكون لديهم مساحة يختارون فيها، سيضعون تسعيرك أنت في مقارنة مع تسعير منافس لك، ربما يكون مستقلًا آخر يريد الفوز بهذا المشروع. لكن حين تعطيهم ثلاثة خيارات يختارون منها فإنهم يقارنون بين الثلاثة ثم يقع قرارهم على الذي يروْنه مناسبًا لشركتهم أو منتجهم، أي سيتخذون قرارًا يناسب ظروفًا ربما لم تكن مدركًا لها. لكن كيف أستخدم هذه التقنية في التسعير ﻷكسب مالا أكثر؟ كيف تختار مستويات التسعير؟ ماذا تضع فيها، وماذا تزيل منها؟ كيف تستغل هذه التقنية في كسب المزيد من المال؟ لنقل أن عميلًا لدي يريدني أن أصمّم له متجرًا إلكترونيًا ليبيع فيه أزياء للقطط، فإني حينها سأضع له ثلاثة مستويات تسعير على النحو التالي: خيار أ: متجر أزياء القطط اﻹلكتروني -> س$ خيار ب: خيار أ+ نسخة للهواتف المحمولة من المتجر الإلكتروني -> س$+ مبلغ إضافي من المال. خيار ج: خيار أ+ خيار ب+ تصميم لبعض أزياء القطط -> س$+مبلغ إضافي آخر. هل ﻻحظتَ ما فعلتُ لتوي؟ لقد زدت مقدار العمل على نفسي، وللعميل حرية الاختيار هنا بين أن أبني له نسخة للهواتف من متجره اﻹلكتروني أو أن أصمم له بعض التصميمات ﻷزياء القطط في متجره، كما يمكنه بالطبع أن يختار الخيار الأول، والذي راسلني بخصوصه بادئ الأمر، لكنه مرة أخرى، قد يرغب في المزيد بالفعل. ودعني أخبرك أمرًا. عملائي دائمًا يختارون الخيار الثاني أو الثالث. ترجمة -بتصرف- للمقال Awesome Pricing Technique For Writing Design Proposals لصاحبه Lior Frenkel.1 نقطة
-
شكراا لك مدون (مدون محترف ) على الرد وبإذن سأقوم بقراءة الكتب التي أوصيتني بها1 نقطة