PDA

View Full Version : سوال: کشف رفتار نرم افزار



Sorn01
دوشنبه 11 دی 1391, 18:49 عصر
سلام بچه ها

چطور میتونم با استفاده از هوش مصنوعی رفتار یه نرم افزار رو کنترل و کشف و بر اساس رفتار پاسخی نشون بدم ؟
آیا همچین کاری ممکنه ؟
میشه همچین کاری با زبان C++ انجام داد ؟

مثلا میشه بدون اینکه حتی نرم افزار رو بشناسیم بدونمیم چه قابلیت هایی داره و چه کار هایی میکنه و ...

Sorn01
سه شنبه 12 دی 1391, 09:55 صبح
کسی نیست جواب بده ... ؟
لطفا اگه کسی اطلاعی در این مورد داره به من کمک کنه ...

FastCode
سه شنبه 12 دی 1391, 14:16 عصر
همه چیز ممکنه
مهم وقت و هزینه ای هست که بابتش میدین

Sorn01
چهارشنبه 13 دی 1391, 13:18 عصر
همه چیز ممکنه
مهم وقت و هزینه ای هست که بابتش میدین

بله میدونم همه چیز ممکنه ومهم وقت و هزینشه ولی من به جای فکر کردن به وقت و هزینه دوست دارم این کار رو بکنم
فقط نمیدونم باید از کجا شروع کنم و چه الگوریتمی به کار ببرم ... میشه کمکم کنید ؟

اوبالیت به بو
پنج شنبه 14 دی 1391, 13:31 عصر
درود بر شما


همه چیز ممکنه
مهم وقت و هزینه ای هست که بابتش میدین
از کی تا به حال؟

بله میدونم همه چیز ممکنه ومهم وقت و هزینشه ولی من به جای فکر کردن به وقت و هزینه دوست دارم این کار رو بکنم
فقط نمیدونم باید از کجا شروع کنم و چه الگوریتمی به کار ببرم ... میشه کمکم کنید ؟


این موردی که شما می خواید بهش بپردازید به مساله توقف مشهور هست که ذاتا یک مساله غیر قابل حل است. شما هیچ وقت نمی تونید رفتار یک نرم افزار رو پیش بینی کنید چون نمی دونید نرم افزار چه زمانی به اتمام می رسه. مساله توقف این رو می گه که فرض کنید یک برنامه به زبان C دارید و یک کاری انجام می ده مثلا محاسبه یک ماتریس یا کنترل موجودی یک انبار. شما یک برنامه دیگری می خواهید بنویسید که برنامه نوشته شده به زبان C رو کنترل کنه یا مدیریت کند... مثلا برنامه کنترل کننده به مدت 3 سال بدون وقفه در حال کار است و می خواهد به قول شما رفتار برنامه اول را تشخیص دهد... این امر هیچ وقت میسر نخواهد بود... شما هیچ وقت نخواهید توانست چنین برنامه ای رو بنویسید چون نقطه پایان برنامه مورد نظر (برنامه اولیه) مشخص نیست.
اگر چنین برنامه ای نوشته شود دیگه هیچ برنامه ای دارای باگ نخواهد بود. اصلا خطا، استثنا و تله معنی نخواهد داشت چون یک نرم افزار نگهبان وجود داره و ایرادات برنامه های نوشته شده رو خواهد گفت. به شما خواهد گفت حلقه ی x در یک چرخه بینهایت گرفتار می شود. دستور if مورد نظر دارای خطا خواهد بود و .... شما هیچ وقت نمی تونید تشخیص بدید که یک برنامه در تله گرفتار شده است یا خیر. آیا در حلقه بینهایت گرفتار شده است یا خیر؟ از روی چه معیاری؟

اما چه برنامه ای پایان پذیر است:
یک کامپایلر تهیه کنید.
تمام حلقه ها و دستورات کنترلی و توابع درون آن را حذف کنید.
برنامه را اجرا کنید.

مثال:



void main(){
int i;
i=0
}

FastCode
شنبه 16 دی 1391, 08:33 صبح
برنامه های ضد ویروس heuristic همین کار رو انجام میدن
من منظور شما رو کامل متوجه نشدم ولی شاید بتونید از valgrind توی یه جاهایی الهام بگیرید.