![]() |
|
قضية كبيرة جدًا للمناقشة ... وكل المبرمجين المحترفين مدعوِّين لمناقشتها - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182) +--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183) +--- الموضوع : قضية كبيرة جدًا للمناقشة ... وكل المبرمجين المحترفين مدعوِّين لمناقشتها (/showthread.php?tid=40507) الصفحات:
1
2
|
قضية كبيرة جدًا للمناقشة ... وكل المبرمجين المحترفين مدعوِّين لمناقشتها - أبو خالد الشكري - 17-01-22 أسعد الله أوقاتكم أيها المبرمجون الأحبة في هذه المشاركة (الصغيرونه) - هذه الكلمة في لهجة أهل عُمان ؛ للتعبير عن الشيء الصغير جدًا ألاحظ أكثر المبرمجين - خصوصًا المبرمجين المحترفين - عندما يريدون وضع متغير رقمي فإنهم يختارون وبلا تفكير ، يختارون المتغير Integer وحتى لو كان الرقم الأقصى الذي يريدون الوصول إليه صغيرًا . على سبيل المثال لاحظ البرنامج الذي بالأسفل فيه Loop (صغيرون) من 1 إلى 11 ، فقد وضعوا Integer للمتغير myNumber علمًا بأن Integer يستهلك من الذاكرة 4 بايت لأنه أساسًا يستخدم للأرقام الكبيرة ( السالبة والموجبة معًا ) ومجاله هو -2,147,483,648 إلى 2,147,483,647 بينما لو استخدموا Byte فإنه يفي بالغرض تمامًا وأكثر ، ولا يستهلك الكثير من الذاكرة سوى 1 بايت فقط ومجاله هو من 0 إلى 255 أما لو كان عنده أرقامًا سالبة صغيرة ، فإن استخدام SByte يكون مناسبًا جدًا لأن مجاله هو من -128 إلى 127 وهذا الشيء المسمى SByte أيضا حجمه مثل أخيه Byte وهو 1 بايت فقط ![]() وأنا من وجهة نظري أنه عند كتابة برنامج كبير وفيه متغيرات كثيرة ، فلا نكتب المتغيرات عشوائيا ؛ حتى لا نستهلك ذاكرة الجهاز ؛ وبالتالي يكون برنامجك ثقيلا على الجهاز ، وعمله يكون بطيئا إلى حد ما . وقِس على متغير Integer بقية المتغيرات التي يكتبها المبرمجون دون مراعاة ! أخواني المبرمجين ... أترك لكم هذه القضية للمناقشة ، ولإدلاء آرائكم فيها ، كل مبرمج فيكم يكتب حسب وجهة نظره . ولكم مني خالص التحية والاحترام . كود : Dim myNumber As Integer = 0RE: قضية كبيرة جدًا للمناقشة ... وكل المبرمجين المحترفين مدعوِّين لمناقشتها - Taha Okla - 17-01-22 أسعد الله مساك ومساء الجميع .. هذه الكلام كان مهم جداً عندما كانت البرامج تصمم لنظام تشغيل دوس وما شابه ولكن في أيامنا هذه مهما كان المتغير كبيرا أو صغيراً لم يعد مهماً فأقل جهاز يحتوي على 3 جيجا رام DDR2 وأغلب الأجهزة الحالية أصبحت من 4 جيجا رام DDR3 وخلال سنتين ستجد الأغلبية سيرفع رامات جهازه ل 8 جيجا على الاقل. حيث أن أنظمة التشغيل هي من تطلب ذلك .. فأي متغير مهما كان انتيجر أو لونج أو دبل يهمل لصغره أمام هذه الرامات الضخمة.. ولكن عنايتك ببرامجك ومعرفة المتغيرات التي تريدها لبرنامك يجعل برنامجك أسرع بشكل غير ملحوظ. أغلب البرامج البطيئة لم يكن السبب فيها نوع المتغير ولكن الطريقة التي طلب بها تنفيذ البرنامج (يعني خطأ من الكود أساساً وليس المتغيرات). مثلاً : تستطيع في برنامجك أن تجعله يتصل بقاعدة البيانات ويستخرج لك نتيجة البحث مع كل طلب. وتستطيع مثلا في برنامج يوزرات أوقاعدة بيانات طلاب وتستطيع أن تخزن ما تحتاج البحث فيه في داتا جريد فيو وتبحث في فيها كلما احجتجت لذلك دون أن تجعل البرنامج يتصل بقاعدة البيانات كل الطرق متاحة ولكن أن من يختار الطريق إما المتشعب الطويل أم الطريق المختصر القصير .. RE: قضية كبيرة جدًا للمناقشة ... وكل المبرمجين المحترفين مدعوِّين لمناقشتها - أبو خالد الشكري - 17-01-22 (17-01-22, 09:05 PM)Taha Okla كتب : أسعد الله مساك ومساء الجميع .. وجهة نظرك جيدة جدًا أستاذ Taha Okla ولكن الناس الآخرون قد يستعملون برنامجك وتكون مواصفات أجهزتهم ضعيفة ! فقد تكون ذاكرة الرام مثلا أقل بكثير من 2 جيجا بايت . وإذا كان برنامجك مليء بالمتغيرات التي تلتهم الذاكرة ؛ فإن برنامجك سيعمل ببطء شديد في أجهزتهم . ولكنا على كل حال دعنا نرى آراءً أخرى من مبرمجين آخرين . ولك مني خاص الشكر والتقدير على ردك التفصيلي . RE: قضية كبيرة جدًا للمناقشة ... وكل المبرمجين المحترفين مدعوِّين لمناقشتها - ابراهيم ايبو - 17-01-22 السلام عليكم ورحمة الله وبركاته اخي الكريم كما أشار الأخ الغالي Taha انه فيما مضى كانت الذاكرة صغيرة جدا والمبرمج كان يفترض ان أغلب الأجهزة التي سيعمل برنامجه عليها راماتها صغيرة (نظرا لارتفاع أسعارها في ذلك الوقت ) حيث كان يبرمج بالمتغيرات الرقمية الصغيرة المجال والتي تم انشاؤها أيضا لنفس الأسباب وأسباب أخرى وحتى لا يتم التهام ذاكرة التشغيل .. حتى اني أتذكر اننا كنا نقوم بتحسين الذكرة (640Kb) حتى تعمل البرامج وكم عانيت يومها من تشغبل نسخة PhotoShop الإصدار 3.05 لان الرام كانت عندي 4 ميغا والويندوز 3.11 ويحتاج الى 8 ميغا ويقيت على الاصدار 2.5 المهم نأتي الى النقطة الأهم وهي السكوب الذي يتم فيه تعريف المتغير فإن كان معرف في دالة فإن هذا المتغير سينتهي بنهاية الدالة وسيتدمر اما لو تم تعريفه على مستوى المشروع ككل فهنا سيبقى في الذاكرة حتى انهاء البرنامج وان كثرت المتغيرات على مستوى المشروع هنا يمكننا اختيار المتغيرات ذات أنواع البيانات الصغيرة بالرغم من ان الامر لم يعد بالأهمية التي يجب علينا الاهتمام بها بسبب حجم الذاكرة الكبير ناحية أخرى تعودنا على تعريف المتغير في الجملة نفسها بنوع Integer بل ان الحرف الذي نضعه للمتغير هو الحرف I مأخوذ من اسم نوع البيانات وهذا ما دأب عليه اغلب المبرمجين بقي شيء مهم وهو لماذا تصبح البرامج ثقيلة ؟ الأسباب كثيرة أهمها إضافة أدوات خارجية فيها بعض المؤثرات -الإكثار من جمل التكرار عند التحميل - تحميل كل البيانات وبخاصة ان كانت السجلات كثيرة فتح اكثر من فورم في نفس الوقت - كثرة الادوات على الفورم فمثلا 20 RadioBotton يمكن الاستعاضة عنها بكومبوبوكس طريقة كتابة الاكواد وبخاصة التكرار وعدم اللجوء الى oop البرمجة الشيئية وغيرها الكثير على اية حال موضوع جميل يعيدنا الى التسعينات من القرن الماضي والى زمن كنا فيه شباب وكانت الاجهزة ضعيفة كالرجل الهرم اما الان فقد ازدادت الاجهزة شبابا ونحن هرمنا (ههههه) شكرا لك يا أبو خالد RE: قضية كبيرة جدًا للمناقشة ... وكل المبرمجين المحترفين مدعوِّين لمناقشتها - سعود - 18-01-22 فعلا الكلام صحيح لكن الطبع يغلب التطبع مدري لها دخل او لا.لكن فعلا -مرة اخرى- ,و استغرب من عدم استخدامي لغير الـ Integer. PHP كود : Dim myNumber As Byte = 0انواع البيانات البسيطة مثل هذه تناسب اي نسخة محدودة من اي برنامج [اظن فقط] باذن الله تعالى اذا لم انس ساعمل بهذه النصيحة و اذكر بها كل من يرى موضوع لي بالمنتدى. شكر الله لك وبارك فيك وكل من يقرأ هذا الكلام. RE: قضية كبيرة جدًا للمناقشة ... وكل المبرمجين المحترفين مدعوِّين لمناقشتها - أبو خالد الشكري - 18-01-22 وعليكم السلام ورحمة الله وبركاته لك الشكر الجزيل أستاذ إبراهيم على ما أفضت به علينا من معلومات ثرية والحق معك فقد كان زمانًا ( أغبرًا ) إن صح التعبير ؛ فقد كانت الأجهزة بما فيها من رامات ومعالجات كانت ضعيفة وبطيئة وبتكنولوجيا متواضعة إلى حدٍ ما .وأنا من الذين عاصروا تلك الأجهزة (التعبانة) والبرمجيات البدائية ، فما زالت في ذاكرتي أجهزة صخر MSX على سبيل المثال وسرعاتها المحدودة وبرمجياتها الصغيرة . وأذكر أيضا ويندوز 3.1 ثم تلتها ويندوز 3.11 ثم ويندوز Xp وغيرها ... أما الآن فقد تطورت التكنولوجيا كثيرًا فعلا ، وكلامك منطقي جدًا فإن المتغيرات على كثرتها لن تؤثر على سرعة الأجهزة ذات المواصفات العالية من جهة ، وكذلك لأن عمر تنفيذ المتغيرات صغير إن لم تكن على مستوى المشروع من جهة أخرى . جميل جدَا جدًا ما شاء الله ؛ كل واحد منكما أعطانا معلومات رائعة حول موضوع (المتغيرات) ! هذه هي الخبرة ( ومنكم نستفيد ) ، وعسى أن يستفيد كل قراء المنتدى من هذه المعلومات القيِّمة . خالص الشكر والتقدير لك أستاذ إبراهيم . وما زال المجال مفتوحًا لكل المبرمجين لإضافة أية معلومات جديدة . وشكرًا . (18-01-22, 12:45 AM)سعود كتب : فعلا الكلام صحيح لكن الطبع يغلب التطبع مرحبًا بك أستاذ سعود ، وتشرفنا بمشاركتك اللطيفة وفعلا المثل صحيح ( الطبع يغلب على التطبع ) ![]() فنحن تعودنا وتبرمجنا عقليًّا على استخدام Integer حتى للأعداد الصغيرة ![]() ولكن لا بأس أن نصحح أو نعدل أو نطور (برامجنا) بما هو مناسب لأجهزتنا المتطورة وللأجهزة الأخرى الأقل تطورًا ! أشكرك أستاذي على مشاركتك في موضوع ( المتغيرات) ، وبارك الله فيك . RE: قضية كبيرة جدًا للمناقشة ... وكل المبرمجين المحترفين مدعوِّين لمناقشتها - أبو خالد الشكري - 19-01-22 RE: قضية كبيرة جدًا للمناقشة ... وكل المبرمجين المحترفين مدعوِّين لمناقشتها - الماجيك مسعد - 22-01-22 ابدعت حقيقي صراحة لم يخطر علي بالي من قبل مع العلم ان معظم الاوقات كنت ابحث دائما عن افضل كود لتنفيذ المهمة التي اعمل عليها من حيث السرعة والاداء والثبات وقلة الاخطاء المحتملة ولم يخطر ببالي ذلك من قبل ما كان يخطر ببالي ان اعرف نوع المتغير الغير معلوم حتي لا يستغل من الرامات اكثر من object وطريقتك بالفعل هتفرق جدا مع البرامج كبيرة الحجم وكثيرة النوافذ والمهام ولا اعتقد انها ستفرق او ستلاحظ في البرامج الصغيرة وصراحة اتشوق لمثل هذه المواضيع والافكار التي ربما يسهي عنها بعض الاشخاص لتعودهم علي طرق اخري او لعدم التفكير بيها من قبل شكرا جزيلا لك استمر ♥ RE: قضية كبيرة جدًا للمناقشة ... وكل المبرمجين المحترفين مدعوِّين لمناقشتها - أبو خالد الشكري - 28-01-22 شكرًا جزيلا على مرورك الكريم كلنا نتعلم من بعضنا وفعلا هناك أمور صغيرة ولكنها مهمة ويجب مراعاتها عند بناء برنامج جديد تحياتي لك ، والله يوفقك . RE: قضية كبيرة جدًا للمناقشة ... وكل المبرمجين المحترفين مدعوِّين لمناقشتها - 3booody - 28-01-22 السلام عليكم ورحمة الله وبركاته ربما لا اكون من المبرمجين المحترفين حتى اناقش هذا الموضوع لكن انا أتفق مع أخي أبو خالد الشكري وللأسباب التالية: اولا: ان الفئة التي تستخدم برنامجك من الناس ليس كلهم على دراية بالحاسوب ويتفحص الضغط المسلط على ال RAM وعلى المعالج بأستمرار وهو ممكن مثبت على الوندوز كثير برامج واغلبها تعمل على المعالج بوضع الاختفاء وبعضها قام بتشغيلها ولم يطفئها وتستهلك ذاكرة صح ان الRAM ٤ جيجا هو قوي لكن ربما قد تكون لعبة او برنامج معين يستهل اكثر من نصف هذا الرقم! فنأخذ بالحسبان خفة عمل برنامجنا لتجنب الوقوع بأخطاء. ثانيا:ليس فقط المتغيرات الرقمية الكثير من المتغيرات وايضا الفئات المستخدمه اذا كانت تستهلك شيء من الذاكرة يفضل بالكود هدم عمل هذا المتغير او الفئة وخاصة البرامج التي تحتوي على تصاريح كثيرة حتى لانتسبب بتهنيج او تعليق البرنامج. ثالثا: الفرق بين ال ٤ Byte وال ١ byte وغيرها لايظهر بالمشاريع الصغيرة فأنا هنا اتحدث عن المشاريع الضخمه التي ربما تحتوي على الف متغير فبفرض بنفس الوقت الف متغير من حجم ٤ يكون ٤٠٠٠ الف بينما ١ يكون ١٠٠٠ فقط وهي ربع القيمة! وهذا عدا مايستهلكه البرنامج من الاشياء الاخرى. واخيرا انا من وجهة نظري افضل بالعمل على تقسيم البرنامج بأسلوب معين بحيث اتلاعب بحجم الذاكرة للبرنامج مثل تقسيم برنامج الى برنامجين ويتصل واحد بالثاني حتى اثناء الاستخدام يكون التأثير بالنصف على الجهاز ( المقصود هنا بعض البرامج المعينة) مجرد رأيي واتمنى ان لا اكون قد اخطأت بشي والسلام عليكم ورحمة الله وبركاته |