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