PDA

View Full Version : گفتگو: رابطه پایداری برنامه و زبان برنامه نویسی



MIDOSE
چهارشنبه 30 اردیبهشت 1388, 23:37 عصر
مدتی پیش با یکی از دوستان صحبت می کردم که بحث پایداری برنامه را در طولانی مدت به میان اورد خواستم در این بخش با دوستان بحثی در این مورد داشته باشم و ببینیم که ایا پایداری و زبان برنامه نویسی به هم ربطی دارند یا نه مربوط به خود برنامه نویس می شه.
نکته: منظور از پایداری اینه که برنامه باید شبانه روز روی یک کامپیوتر فعالیت کنه
با تشکر

Nima NT
پنج شنبه 31 اردیبهشت 1388, 00:27 صبح
نمیدونم فاکتور بیان شده تاثیری داره یا نه ولی اگر فرض کنیم این فاکتور ( زبان برنامه نویسی ) تاثیر گذار هست میتونیم با اطمینان بگیم که درصد کمی رو به خودش اختصاص میده و بخش اعظم این ماجرا به خود برنامه نویس و نحوه برنامه نویسی اون برمیگرده.

MIDOSE
پنج شنبه 31 اردیبهشت 1388, 02:53 صبح
این قسمت بحث نسبتا جالبیه لینک (http://barnamenevis.org/forum/showthread.php?t=141634&page=3)
دوستانی که در این مورد اطلاعاتی دارند خواهشمندم وارد بحث شوند چون بر فرض مثال فکر کنم افراد خاصی با قضیه ی زبان های تابعی اشنایی دارند البته کاربردشون من به شخصه قبلن از طریق همین تایپیک موضوع را بطور کامل فهمیدم وگرنه زبان های تابعی را همه می دونیم سال هاست وجود دارند

MIDOSE
پنج شنبه 31 اردیبهشت 1388, 03:13 صبح
نمیدونم فاکتور بیان شده تاثیری داره یا نه ولی اگر فرض کنیم این فاکتور ( زبان برنامه نویسی ) تاثیر گذار هست میتونیم با اطمینان بگیم که درصد کمی رو به خودش اختصاص میده و بخش اعظم این ماجرا به خود برنامه نویس و نحوه برنامه نویسی اون برمیگرده
.
خوب یه برنامه نویس چطوری می تونه برنامه ای پایدار درست کنه؟از چه لحاظ می تونه تاثیر بذاره می شه مثالی بزنید.

Nima NT
پنج شنبه 31 اردیبهشت 1388, 13:40 عصر
مثال بارز در زمینه پایگاه داده موجود هست , فرض کنید شما قراره کارهای A تا D رو در روز به میزان X بار تکرار کنید , برای انجام این کار باید به پایگاه داده وصل شده , کوئری گرفته و اتصال را قطع کنید , اتصال پی در پی میتونه سربار زیادی رو به سرور تحمیل کنه , به همین علت شما باید دنبال الگوریتمی باشی که این مشکل رو حل کنید.
راه حل هم در مواردی میتونه استفاده از روال های ذخیره شده باشه که میتونه کار رو راحت کنه و رفتارهای کلیشه ای که قراره انجام بشه تو سرور انجام بشه و شما با حداکثر دو بار اتصال گزارش رو دریافت کنید.

govaleshgar2
شنبه 02 خرداد 1388, 12:11 عصر
نمیدونم فاکتور بیان شده تاثیری داره یا نه ولی اگر فرض کنیم این فاکتور ( زبان برنامه نویسی ) تاثیر گذار هست میتونیم با اطمینان بگیم که درصد کمی رو به خودش اختصاص میده و بخش اعظم این ماجرا به خود برنامه نویس و نحوه برنامه نویسی اون برمیگرده.
درسته، تاثیر مستقیم نمیتونه داشته باشه، اما تاثیر غیرمستقیم داره. اگر نوشتن کدی که هدف A را تامین میکند در زبانی ساده تر باشد، بهتر یاد گرفته شود و بکار برده شود پس برنامه نویس میدونه چه جوری هدف A را با تسهیلات اون زبان دنبال کند و میتواند این کار را انجام دهد. مثالش اینه که شما میدونید که resource هایی مثل فونت را باید رها کنید، در دات نت باید متودی به نام Dispose در اشیای این resource ها صدا زده شود باید دقت شود که حتماً در صورت بروز exception هم آن resouce آزاد شود پس در زبانی مثل C# باید یک try/catch استفاده شود اما برای اینکه این مهم ساده تر باشد دستور using در نظر گرفته شده. چون دستور using ساده تر برنامه نویس رغبت بیشتری برای استفاده از اون داره و استفاده میکنه، شاید حتی خیلی ها ندوند که دستور using همان try/catch است که در قسمت catch متود Dispose شی resource صدا زده میشود.

نمونه دیگر garbage collection در دات نت است که منجر به این شده است که زبانهای دات نت دستوری برای delete نداشته باشند این ویژگیها باعث میشوند که در اثر غفلت برنامه نویس مصرف حافظه رو به افزایش نگذارد و حافظه ای که برنامه لازم ندارد خود به خود آزاد شود.

MIDOSE
یک شنبه 03 خرداد 1388, 21:43 عصر
ممنون از شما دوستان عزیز که نظراتتون را بیان کردید ولی برای من جای تعجبه که 110 نفر تایپیک را دیدند و تا حالا 2 نفر نظر دادند؟!

Itist82
یک شنبه 03 خرداد 1388, 23:45 عصر
ممنون از شما دوستان عزیز که نظراتتون را بیان کردید ولی برای من جای تعجبه که 110 نفر تایپیک را دیدند و تا حالا 2 نفر نظر دادند؟!




آخه دوست عزیز نظر دادن در این مورد کار راحتی نیست! یه عالمه تجربه می خواد و دانش. آدم ترجیح می ده از نظر پیشکسوت تر ها استفاده کنه و چیزی نگه.

Nima NT
دوشنبه 04 خرداد 1388, 00:40 صبح
منظورتون از نظر چیه ؟!
خوب هر چی به نظرمون میومد که گفتیم ؛ مابقی بر میگیرده به خودتون.
این مطلب پروژه به پروژه و حتی مساله به مساله متفاوته , نمیشه یه نسخه برای همه حالت ها پیچید.

electrocomp
چهارشنبه 06 خرداد 1388, 20:41 عصر
لازمه ذکر کنم که پایداری برنامه هیچ ربطی به زبان برنامه سازی که از آن استفاده می کنید نداره، بلکه به کامپایلری ربط داره که برنامه نویس از اون استفاده می کنه. اگر داخل کامپایلر باگ وجود داشته باشه، روی برنامه تأثیر می ذاره، در غیراینصورت از نظر زبان برنامه سازی هیچ خطری برنامه نویس و برنامه اون را تهدید نمی کنه.

نکته دوم اینکه برنامه ها طول عمر اجرا دارند. منظور از طول عمر اینه که یک برنامه چه مدت می تونه بدون اشکال در حال اجرا باشه و فعل و انفعالات داخل اون، اون را به انحطاط نکشونه! یک نمونه بسیار بارز از این مسئله که بهتر متوجه بشین تفاوت پایداری بیین ویندوز و لینوکس هست. بطور مثال در ویندوز به مدت طولانی (مثلاً چندین روز) کار کنید، کم کم به هم میریزه و مجبور به راه اندازی دوباره می شید، اما لینوکس اینگونه نیست. چون اگر بسیاری از برنامه های عادی را که از جاهای خیلی معتبر نیستند آزمایش کنید می بینید که حتی شاید پس از چند ساعت کار کردن (بسته به پیچیدگی نرم افزار) کم کم به هم میریزند، اما با بستن و دوباره باز کردن (Initialization دوباره) مثل اول درست کار می کنند.

amin_alexi
یک شنبه 10 خرداد 1388, 15:06 عصر
من فکر میکنم پایداری برنامه شامل یک فرایند منظمه !
1 - تحلیل و آنالیز
2- طراحی و پیاده سازی
3- تست و آزمایش
4- نگهداری و پشتیبانی
به نظر من تمام این مراحل در پایداری سیستم دخالت دارند ...
سیستم ها و نرم افزارهایی که بعد از یک مدت از کار می افتند و یا بلا استفاده باقی می مونند به خاطر عدم درک صحصح در فاز اولیه و یا عدم طراحی مناسب و یا عدم تست و آزمایش صحیح ...
و خیلی از سیستم ها هم به خاطر عدم پشتیبانی و نگهداری صحیح به هیچ عنوان به پایداری نمی رسند !

استفاده از یک متدولوژی می تونه این پایداری رو افزایش بده ...

MIDOSE
یک شنبه 10 خرداد 1388, 19:16 عصر
پایداری برنامه هیچ ربطی به زبان برنامه سازی که از آن استفاده می کنید نداره، بلکه به کامپایلری ربط داره که برنامه نویس از اون استفاده می کنه
می شه در این مورد کمی توضیح بدین و این که واقعا ایا خودتون به نتیجه ای در این مورد رسیدید


سیستم ها و نرم افزارهایی که بعد از یک مدت از کار می افتند و یا بلا استفاده باقی می مونند به خاطر عدم درک صحصح در فاز اولیه و یا عدم طراحی مناسب و یا عدم تست و آزمایش صحیح ...
و خیلی از سیستم ها هم به خاطر عدم پشتیبانی و نگهداری صحیح به هیچ عنوان به پایداری نمی رسند !

پس یعنی اغلب نرم افزار های تجاری به این علت در مدت های طولانی دچار مشکل می شوند؟
من کم گیج شدم:گیج: شاید یکم بیشتر از کمی:لبخند: