Feb 07
adminبرنامه نویسی 3d engine, axiom, gaming
بنده مدتی است که مشغول کار روی موتور سه بعدی Axiom شدم و از اونجایی که مثل خیلی دیگه از پروژه های اوپن سورس این پروژه هم به شدت (بلکه خیلی بیشتر!) از نبود راهنما و داکیومنتیشن رنج می برد تصمیم گرفتم که در مسیری که با این موتور آشنا می شوم به جمع آوری و نگارش مجموعه هایی از داکیومنت ها و راهنما ها و آموزشهای مربوط بپردازم. این مطالب بسیار ساده و از ابتدایی ترین به تدریج تا مثالهای سنگین تر پیش خواهد رفت. دوستانی که علاقه مند باشند می توانند از هم اکنون در بخش documents سایت در آدرس زیر، این آموزشها را دنبال کنند. تلاش بنده تکمیل کردن بخش اعظم این آموزشها تا یک ماه آینده است.
این مطالب که اکنون در آدرس http://axiom.mohamnag.com در حال گردآوری هستند احتمالا جایگزین سایت رسمی این پروژه در آدرس http://axiom3d.net خواهند شد. البته زمان وقوع این قضیه طبق گفتگوهای انجام شده با مدیر پروژه، موکول شده به رسیدن حجم مطالب به حدی که قابل جایگزینی با سایت کنونی باشد.
مجددا قابل تذکر می دونم که از اونجایی که (مطلوب یا نامطلوب) زبان جاری علم را زبان انگلیسی می دانم تمام این آموزشها و مطالب به این زبان خواهد بود (بیشتر جنبه تذکر برای برخی دوستان داشت!)
Dec 11
adminبرنامه نویسی object oriented database
چنانچه شما قبلا در زمینه تئوری دیتابیس ها مطالعه کرده باشید حتما با انواع متداول و بعضا منسوخ شده دیتابیس ها آشنا هستید. اگر هم اینچنینی مطالعاتی نداشته باشید و صرفا کار برنامه نویسی با دیتابیس انجام داده باشید، احتمالا باید بدونید که قالب دیتابیس های موجود از مدل Relational DB هستند. البته این نکته از لحاظ اسمی چندان اهمیتی نداره اما مهم این است که شما به عنوان یک برنامه نویس چه مسیری را می پیمایید تا یک دیتابیس برای نرم افزار خود طراحی کنید.
به عنوان مثال کوتاه ترین راه، در نظر گرفتن اشیای دنیای واقعی برای ذخیره، تبدیل به ایده های معادل که عمدتا اشیا (Object) هستند به دلیل مدل مبتنی بر اشیا در زبانهای امروزی، و بعد در نظر گرفتن ساختار معادل دیتابیس و از همه مهم تر نرمالایز کردن دیتابیس و آخر سر نوشتن کدی که حداقل کار آن تبدیل مرتب اشیا از محیط نرم افزار به زبان قابل مکالمه با دیتابیس یا بلعکس می باشد. مهمترین نکته ایی که باید مد نظر قرار بگیرد دو بخش آخر یعنی طراحی دیتابیس مدل Relational DB بر اساس اشیا و تبدیل مرتب بین این دو است.
واقعیت این است که دیتابیس های مبتنی بر مدل Relational DB هر چند سالیان متمادی بهترین نمونه های خود بودند اما عمرشان به پایان نزدیک است. استفاده از مدل رابطه ایی برای دیتابیس و تبدیل بین این مدل و مدل مبتنی بر اشیا علاوه بر سربار زیادی که به سیستم ها تحمیل می کند به دلیل عدم انتباق کامل این دو روش مشکلات عمده زمان طراحی و توسعه را به همراه می آورد. به عنوان مثال اگر شئ شما تغییر کند (مثلا یک خصوصیت کم یا زیاد شود، رابطه ایی ایجاد شود و . . .) نه تنها لازم است دیتابیس تغییر کند بلکه گاهی این تغییرات ناهماهنگی هایی را بین نسخه جدید و قدیم ایجاد می کند و حتی ممکن است کار در حد عدم امکان به روزرسانی سیستم های قدیمی بیانجامد.
مشکلات عمده دیگری هم وجود دارند که همگی به نوعی منحنی تکمیل و توسعه یک نرم افزار را یه شدت طولانی و پیچیده می کنند.
در برابر همه این مشکلات طراحی مدلی مبتنی بر اشیا برای دیتابیس ها (که سالهاست از مدل معادل خود در بین زبانهای نرم افزاری عقب افتاده اند) به نظر یک ایده بسیار جالب می رسد. اینکه برنامه نویس مجبور به تعریف یا تغییر تعاریف جدوال یا هر مدل ذخیره سازی در دیتابیس به ازای هر نوع شئ نباشد، و فقط کفایت کند که از دیتابیس بخواهد این شی را برای من ذخیره کن و یا این شئ را از دیتابیس به من برگردان بدون همه سربارهای تبدیل بین انواع مدل ها، بهترین حالت ممکن برای همراهی یک سیستم مدیریت دیتابیس با زبانهای موجود مبتنی بر اشیاء می باشد.
واقعیت این است که چنین سیستم دیتابیسی طراحی شده و موجود است. مدلی به ویژه برای برنامه نویسان زبان های پیشرفته Java و C# که امروز جزو زبانهای پیشرو مبتنی بر اشیا هستند. از آنجایی که بنده هرگز قصد ترجمه یا بازگویی مواردی را که در وب وجود دارد را ندارم و این را یکی از خصوصیات بسیار لازم یک برنامه نویس می دانم که توانایی پیدا کردن جواب خود از میان موجودیات وب را داشته باشد، سعی کردم با این معرفی و تذکر برخی مشکلات سیستم های موجود دیتابیس شما را به سمت کشف و به کارگیری مدلهای جدید سوق دهم. لذا ادامه ماجرا با خودتان و db4o:
http://developer.db4o.com/