لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 12/26/15 في كل الموقع
-
بعد أن تعرّفنا في الدّرس السّابق على طريقة تنصيب بايثون وكيفيّة العمل معها، سنكمل في هذا الدّرس مشوار تعلّم هذه اللغة بتعلّم كيفيّة التّعامل مع البيانات مثل المُتغيّرات وأنواعها كالأرقام وإسناد القيم. ولكن قبل ذلك عليك أن تتعرّف على طريقة دعم اللغة العربيّة، ويجب عليك أن تفهم بعض المُصطلحات المتداولة في مجال البرمجة (والتّي اعتَمدتُ عليها في هذا الدّرس). تذكير: نقوم بتنفيذ الأسطر البرمجيّة مُباشرة من مُفسّر بايثون، لمزيد من المعلومات عن المُفسّر راجع الدّرس السّابق. وللتوسع في لغة بايثون وتعلمها أكاديميًا، ننصحك بالانضمام إلى دورة تطوير تطبيقات باستخدام لغة بايثون التي تقدمها أكاديمية حسوب. دعم اللغة العربية في بايثون قد تواجه خطأ إذا حاولت تنفيذ أمر طباعة جملة "مرحبا بالعالم" مُستخدما حروفا عربية، لذلك يجب عليك أن تكتب السّطر التّالي، قبل كتابة أي أمر يحتوي على كلمات عربية: # -*- coding: utf-8 -*- المصطلحات مخرج Output: تعني الجواب أو النّتيجة الذي يُقدّمها مُفسّر بايثون، فمثلا إذا طلبت من مُفسّر بايثون طباعة كلمة Hello، فستستخدم السّطر التّالي: >>> print "Hello" Hello هنا نُسمّي Hello المُخرج الذي يُرجعه البرنامج (أي نتيجة الأمر). مُتغيّر: وهو الاسم الذي نُطلقه على حرف أو “كلمة” تحمل قيمة مُعيّنة، مثلا: >>> name = "abdelhadi" هنا قُمنا بإنشاء مُتغيّر name وأسندنا له القيمة abdelhadi. وإذا أردنا إظهار القيمة abdelhadi فيكفي أن نكتب اسم المُتغيّر في مُفسّر بايثون: >>> print name كما يُمكن أن نضيف تحّية على الشّكل التّالي: >>> print "Hello " + name تُفسّر الشيفرة أعلاه وتكون مُخرجاتها: Hello Abdelhadi يُمكن أن يحمل المُتغيّر عدّة أنواع من القيم، كالأرقام والنّصوص والأحرف… تعيين القيم يُعتبر تعيين قيمة لاسم معيّن من أهمّ أساسيّات البرمجة، وهذا الاسم معروف في البرمجة بالمُتغيّر، وإليك مثالا على ذلك: >>> x = 4 >>> x * x 16 قمنا في المثال أعلاه بوضع القيمة 4 للمتغيّر x، بعبارة أخرى المُتغيّر x يحمل القيمة 4. بحيث يُمكننا استعمال x عوضا عن 4 في باقي الأسطر في برنامجنا. وبعدها قمنا بالعمليّة الحسابيّة x * x أي 4 * 4 وحصلنا على 16 كنتيجة. إذا حاولت أن تستخدم مُتغيّرًا لم يُعرّف من قبل في برنامجك، فستحصل على خطأ كالتّالي: >>> foo Traceback (most recent call last): File "<stdin>", line 1, in ? NameError: name 'foo' is not defined >>> foo = 4 >>> foo 4 حاولنا أعلاه أن نقوم باستخدام المُتغيّر foo الذي لم نعرّفه أساساً، فحصلنا على رسالة من مُفسّر بايثون مفادها بأنّ المُتغيّر foo ليس موجودا. وبعد تعريفه وتعيين القيمة "4" له أصبح بإمكاننا استدعاؤه بدون أي مشكلة. إذا وضعت قيمة مُغايرة لمتغيّر يحمل مُسبقاً قيمة ما، فالقيمة القديمة تُستَبدَل بالقيمة الجديدة، بحيث يحمل المتغيّر القيمة الجديدة. >>> x = 4 >>> x 4 >>> x = 'hello' >>> x 'hello' في المثال أعلاه، قمنا بتحديد القيمة "4" للمتغيّر x ثمّ بعد ذلك قمنا بتحديد "hello" لنفس المُتغيّر فأصبح x يحمل القيمة hello في نهاية المطاف. ويُمكنك تعيين أكثر من قيمة لأكثر من مُتغيّر في آن واحد. >>> a, b = 1, 2 >>> a 1 >>> b 2 >>> a + b 3 ومُبادلة قيمتي مُتغيّرين (بحيث يحمل المُتغيّر قيمة الآخر) سهل جدّا في لغة بايثون: >>> a, b = 1, 2 >>> a, b = b, a >>> a 2 >>> b 1 عند تعيينِ قيمة في بايثون، تكون الأهميّة للجانب الأيمن قبل الأيسر، بحيث يقوم بايثون بالتّعرّف على القيّم في الجانب الأيمن ثمّ يقوم بتعيينها للمتغيّرات في الجانب الأيسر لعلامة = . إذ ما يقع على يسار علامة = هو المُتغير وما يقع على يمينها هو القيمة. التعليقات تُستعمل التّعليقات في البرمجة لشرح وظيفة سطر معين أو لإعطاء فكرة عن برنامجك لمن يقرأ شيفرته، وتكون التّعليقات مسبوقة بعلامة # إما في سطر مستقل أو في نفس سطر الشّيفرة، وتتميّز بأنّها لا تؤثّر على عمل البرنامج إذ يتجاهلها المُفسّر ولا تُنفّذ، وهي عموما اختيارية، لذا فأنت لست مُجبرا على كتابتها، وإليك مثالاً على التّعليقات: >>> # السّطر التّالي عبارة عن تعيين قيمة لمتغيّر >>> x = 'hello' # هذا السّطر عبارة عن تعيين قيمة لمتغيّر الأرقام لقد تعرّفنا من قبل حول كيفيّة التّعامل مع الأرقام بشكل بسيط. >>> 42 42 >>> 4 + 2 6 تدعم بايثون الأعداد العشريّة كذلك. >>> 4.2 4.2 >>> 4.2 + 2.3 6.5 وتدعم العمليّات المُختلفة مثل الإضافة والفرق وغيرهما من العمليّات الحسابيّة: + إضافة - الفرق * الضّرب / القسمة ** الأس (القوة) % باقي القسمة لنجرّب هذه العمليّات على الأعداد الصّحيحة: # عمليّة إضافة >>> 7 + 2 9 # عمليّة فرق >>> 7 - 2 5 # عمليّة ضرب >>> 7 * 2 14 # عمليّة قسمة >>> 7 / 2 3 # الأس >>> 7 ** 2 49 # باقي القسمة >>> 7 % 2 1 إذا تمعّنت في النّظر ستجد أنّ ناتج قسمة 7 على 2 يُساوي 3 وليس 3.5 وهذا لأنّ الرّمز / يُرجع الأرقام الصحيحة فقط عندما يعمل معها، لننظر مالذي سيحدث إذا جرّبنا نفس الأمر لكن بأعداد عشريّة هذه المرّة: >>> 7.0 / 2.0 3.5 >>> 7.0 / 2 3.5 >>> 7 / 2.0 3.5 يُمكن القيّام بالعمليّات الحسابيّة بالاعتماد على أكثر من عامل: >>> 7 + 2 + 5 - 3 11 >>> 2 * 3 + 4 10 هذا مهمّ جدّا وذلك لفهم كيفيّة تعامل لغة بايثون مع العمليّات الحسابيّة، حيث هناك أولويّات للعمليّات وذلك كالقائمة التّالية، من الأقل أولويّة إلى الأه: + - * / % ** ولفهم ذلك أكثر، إليك هذا المثال: عند تنفيذ العمليّة 2 + 3 * 4 في بايثون فالعمليّة الأولى التّي تُنفّذ هي 3 * 4 ، لأن العامل * أكثر أولويّة من عامل +، وبعد ذلك تضاف القيمة إلى 2. >>> 2 + 3 * 4 14 يُمكننا أن نعتمد على الأقواس () لتحديد أولويّات العمليّات، انظر المثال التّالي: >>> (2 + 3) * 4 20 في المثال أعلاه، قمنا بوضع العمليّة 2+3 بين قوسين لإخبار مُفسّر بايثون بأنّ لهذه العملية الأولويّة ويجب حسابها أوّلا، فإن لم نقم بوضع القوسين لقام المُفسّر بحساب العمليّة 4*3 ثم إضافة العدد 2. جميع العمليّات باستثناء ** يبدأ تطبيقها من اليسار ثمّ اليمين. 1 + 2 + 3 * 4 + 5 ↓ 3 + 3 * 4 + 5 ↓ 3 + 12 + 5 ↓ 15 + 5 ↓ 20 تمارين تمرين 1 ما هي مُخرجات (القيّم التّي سيطبعها) البرنامج التّالي: x = 4 y = x + 1 x = 2 print x, y تمرين 2 ما هي مُخرجات (نتيجة) البرنامج التّالي: x, y = 2, 6 x, y = y, x + 2 print x, y تمرين 3 ما هي مُخرجات البرنامج التّالي: a, b = 2, 3 c, b = a, c + 1 print a, b, c ترجمة -وبتصرف- للكتاب Python Practice Book لصاحبه Anand Chitipothu.1 نقطة
-
حكاية تتكرّر دائما. عادة ما نُشاهد تلك الفرق المكوّنة من شابّين أحدهما يمتلك ذلك النشاط والعزم الكبيرين واﻵخر خبير في الشؤون التقنية، يسعيان معًا إلى تأسيس شركة ناشئة، ليناضلا بعدها لتحقيق حلمهما في الوصول إلى مصافّ الشركات العملاقة مثل Google و Facebook. يتقلّد الشاب النشيط منصب المدير التنفيذي CEO بينما يتقلّد الشاب الخبير بالشؤون التقنية منصب المدير التنفيذي التقني CTO، لا مشكلة في ذلك لحدّ اﻵن أليس كذلك؟ حسنًا، ﻻ يبدو ذلك صحيحًا، إذ يعلم الكثير من الذين أصبحوا مدراء تنفيذيين في شركة ناشئة لأول مرة أنه سيأتي يوم في المستقبل سيضطرون فيه إلى اتخاذ قرار حاسم، فإما أن يكون غنيًا أو يكون ملكًا في شركته، وقد يؤدي ذلك إلى التنحّي عن هذا المنصب والاستعانة بشخص آخر لديه خبرة أكبر في هذا المجال. يتعلم المدير التنفيذي ذلك عندما يسأله المستثمرون إن كان يودّ البقاء في هذا المنصب إلى اﻷبد. ولكن ماذا بشأن المدير التنفيذي التقني؟ قد تكون اﻷمور مختلفة قليلًا ولكن هناك بعض أوجه الشبه، ولنكتشف ذلك معًا. ما هي وظيفة المدير التنفيذي التقني في الشركات الناشئة الاعتياديةلمّا كان هذا الشخص هو الأكثر خبرة في المجال التكنولوجي في هذا الفريق المكوّن من شخصين، فإنه يعدّ مسؤولًا عن جميع اﻷمور ذات الطبيعة التقنية، وهذا يعني بالتأكيد البرمجة ، ويعني كذلك اختيار البنية التحتية المضيّفة والتي سيعمل عليها البرنامج، والحزمة الضمنية للبرنامج Underlying stack، والمعمارية التقنية، وأدوات إدارة الشيفرة المصدرية، الخ، ولا غرابة في ذلك. ماذا عن إنشاء الموقع اﻹلكتروني الخاص بالشركة، وإدارة الراوتر اللاسلكي في المكتب، وتقديم المساعدة للمدير التنفيذي عندما يصاب حاسبه المحمول بالفيروسات، وإدارة خادوم البريد اﻹلكتروني الخاص بالشركة؟ نعم، يقوم المدير التقني بكلّ ذلك، إضافة إلى كنس أرضية البيت الذي يعمل فيه، وإحضار الرسائل من صندوق البريد المحلي. نعم، يؤدي المؤسسون الكثير من اﻷعمال، وهذا طبيعي جدًّا. النمو والنجاح هما سبب المعضلةتبرز المعضلة عندما تبدأ الشركة بالنمو لتجلب المزيد من الخبراء في المجال التقني، وستوكل الكثير من المهام التي كان يؤديها المدير التنفيذي التقني في اﻷيام اﻷولى إلى أشخاص آخرين، وفي نهاية المطاف سيدرك المدير التنفيذي وفريق اﻹدارة ضرورة وجود شخص يعمل على مراقبة عمليات التطوير يومًا بيوم (سواء من من ناحية العتاد أو البرمجيات) وآخر يكون هو المسؤول عن وضع اﻷفكار التقنية إضافة إلى كونه المتحدث الرسمي للشركة في الشؤون التقنية، وفي هذه الحالة ستحتاج الشركة إلى وجود منصبين اﻷول هو نائب الرئيس للهندسة VP of Engineering (أو أي عنوان مشابه) والمدير التنفيذي التقني. ولكن ما هو المنصب اﻷفضل بالنسبة للمدير التنفيذي التقني المؤسّس للشركة استنادًا إلى المهارات والطموحات المستقبلية؟ إن كانت اﻹجابة هي المراقبة اليومية لعمليات التطوير فلا يمكن حينها اﻹبقاء على لقب "المدير"، وقد يكون هناك احتمال ﻹنقاص الرتبة عندما تصبح المهمّتان أساسيتين في تحقيق نجاح الشركة وضمان استمرارية نموها. يمكن "رفع" اللقب إلى النائب الأول للرئيس Senior VP ولكن إن كانت الشركة مكوّنة من 30 موظّفًا فقط فإن وجود عدد من النواب الأوائل يبدو أمرًا سخيفًا، ولكن بالمقابل فإن أيّ لقب لا يحتوي على كلمة "مدير" (Chief) سيبدو كإنقاص لمرتبة الشخص الذي كان يحمل هذا اللقب سابقًا. استباق المعضلةعادة ما أنصح مؤسسي الشركات الناشئة بمناقشة هذا اﻷمر في وقت مبكّر جدًا. إذ يجب أن يعي من يرغب في تقلّد منصب المدير التنفيذي التقني منذ البداية أنّه سيأتي يوم في المستقبل حيث تتوزّع المهام التي يتحمل مسؤوليتها على عدد من اﻷشخاص، ما يعني أنه قد يفقد هذا اللقب في يوم من اﻷيام. ولكن يجب أن يعي هذا الشخص أيضًا أن التغيير لا يعني تخفيضًا للمرتبة، بل هو مناسبة للاحتفال باﻹنجاز الذي حقّقته الشركة في تجاوزها لمرحلة إثبات البقاء إلى مرحلة النموّ إلى درجة تظهر فيها الحاجة إلى تقسيم اﻷدوار. وإن كان الشخص الذي يدير هذا الحوار هو المدير التنفيذي المؤسس، فإنّ بإمكانه الاستعانة بما ذكرته في المقدّمة عن إمكانية استبدال المدير التنفيذي بشخص آخر ذي خبرة أكبر. يتفادى بعض مؤسسي الشركات الناشئة استخدام جميع اﻷلقاب السابقة (المدير التنفيذي والمدير التنفيذي التقني) لمدة عام أو أكثر على بداية المشروع، وتحتوي بطاقات العمل الخاصة بهم على عبارة (المؤسس الشريك Co-Founder) فقط، أو عبارة "الشّؤون التّجارية" (Everything Business) و "الشّؤون التّقنية” (Everything Technical) المبالغة في استخدام لقب "المدير"تُثار حفيظتي عندما أسمع بشركة ناشئة مكوّنة من 5 أشخاص يأخذ كل واحد منهم لقب (المدير). أنا لا أرى أن هناك حاجة لاستخدام هذه اﻷلقاب حتى من قِبَل 5 مؤسسين لهم خبرة كبيرة في هذا المجال. لذا يمكنك أن تتخيّل ردّة فعلي عندما أرى شركة ناشئة مكوّنة من 5 موظّفين يمتلكون خبرة تراكمية لا تتجاوز 10 سنوات وهم يحملون ألقاب مثل مدير التسويق، ومدير العائدات المالية، ومدير الشؤون المالية، ومدير المنتجات، وما إلى ذلك. ترجمة –وبتصرّف– للمقال The Dilemma of the Startup CTO Title لصاحبه Gordon Daugherty. حقوق الصورة البارزة: Designed by Freepik.1 نقطة
-
كيف أستفيد فعلا من الكورسات والدورات التكوينية؟ أحيانا نشاهد ونتابع دورات وكورسات مجانية ومدفوعة لكن من دون نتائج؟ هل المشكل فينا؟ أم في هذه الدورات؟1 نقطة
-
5 سنوات ليست مستقبل بعيد، الرؤية تتحدث هنا عن 50 سنة على الأقل، هناك شركات مرت عليها 100 سنة ولاتزال رؤيتها صالحة ولاحاجة لتعديلها ببساطة الرؤية هي حالة مستقبلية نريد أن نحققها، تكتب بكلمات عامة غير محددة لكن متعلقة بمجال الشركة بدون تحديده بدقة أكبر الهدف يكون محدد بقاعدة SMART الشهيرة وهناك أهداف قصيرة المدى ( يومية) وأبعد قليلاً ( شهرية) خاصة فيما يتعلق بالانتاج أما الأهداف الأكبر كالسنوية والتي تتعلق بالخطط أيضاً يجب أن تكون محددة بالقاعدة سالفة الذكر1 نقطة