این جمله را دانشجوها در کلاسهای برنامهنویسی زیاد از من میشنوند: بعد از یادگیری دستور if ... else شما برنامهنویس به حساب میآیید و باید بتوانید هر مسألهای در عالم را حل کنید (یک جمله مهم و پرتکرار دیگر از من: برنامهنویسی، کدنویسی نیست؛ بلکه «قدرت حل مسأله است»). بعد از آن مفهوم، به switch و حلقهها و توابع و آرایهها و... میرسیم. این مفاهیم هیچ چیزی به برنامهنویسی اضافه نمیکنند؛ بلکه فقط یک چیز کم میکنند: تکرار کد.
بنابراین هر چه برنامهنویسی پیشرفت کرد، فقط یک چیز تغییر کرد: تکرار کمتر شد! همین و بس!
نتیجه اینکه: هر چه سطح شما در برنامهنویسی بالاتر میرود باید تکرار کدهایتان کمتر و کمتر شود و کدهایتان کوتاهتر شود.
حالا فعلاً بعد از ۲۰ سال برنامهنویسی، به این مرحله رسیدم: این ویدئو را ببینید:
باور میکنید در این ویدئو در کل فرمهایی که میبینید و یعنی در کل پروژه، من فقط یک بار کد یک فیلد را نوشتهام؟ مثلاً فقط یک بار در کل پروژه کد تگ input type=text نوشته شده، فقط یک بار در کل پروژه کد تگ textarea نوشته شده و هر تگ دیگری...
سیستم به طور خودکار از دیتابیس فیلدها را میخواند و برایشان فرم میسازد و همینطور لیست و ویرایش و آپلود و...
در کل پروژ فقط یک بار کد لیست و حذف نوشته شده!
ممکن است بپرسید سیستم چطور میفهمد مثلاً فیلد عنوان را باید input type=text روی فرم نشان دهد اما مثلاً فیلد شاخهها را به صورت لیستی از شاخههایی که در فلان جدول تعریف شده؟ یا فیلد شرح را به صورت textarea همراه با ادیتور و یکی را بدون ادیتور، یا یک تاریخ را فارسی نشان دهد، یکی را انگلیسی و...؟
خوب، این یک نوع طراحی ابتکاری است که من آن را DBBD یا DataBase-Based Design یا «طراحی مبتنی بر پایگاه داده» مینامم.
در این روش، شما فقط کافیست دیتابیستان را آماده کنید و کار به هیچ چیز دیگری نداشته باشید! تقریباً هیچ نوع کدنویسی از طرف شما لازم نیست! فقط دیتابیس را طراحی کنید... از طریق دیتابیس به کدنویسی میفهمانید که مثلاً فیلد شاخه باید به جدول category متصل شود... همه چیز تحت کنترل شماست. مثلاً میتوانید از طریق دیتابیس و به راحتی به سیستم بفهمانید که من میخواهم فیلد شرح در بخش افزودن باشد اما در لیست نباشد یا فقط در ویرایش باشد و بقیه جاها نباشد! حتی برچسبهای فارسی فیلدها از طریق دیتابیس مشخص میشود.
با این سبک طراحی، احتمالاً به جای زبانهای جدید، کیتهای جدید خواهند آمد! شما یک کیت برای پروژه خود انتخاب و دانلود میکنید و فقط و فقط دیتابیس آن را میسازید! همین! سیستم شما آماده است...
احتمالاً طراحان سیستمهای آینده فقط باید پایگاه داده بلد باشند و دیگر نیازی به یادگیری کدنویسی نیست!
توضیحات بیشتر نیاز دارید؟ باید صبور باشید تا این سیستمی که در حال کار هستیم آماده و منتشر شود؛ سپس احتمالاً کیت آن را هم منتشر کنیم تا شما خودتان هر سیستمی نیاز دارید، پایگاه دادهاش را طراحی کنید و کیت ما را دانلود کنید و روی سایت خود قرار دهید و سیستم را تحویل بگیرید.
و توجه کنید که اگر همه چیز خوب پیش برود، ما میتوانیم از این پس چقدر سریع سیستمهایی که سالها بود منتظر فرصت برای ایجاد بودیم را آماده و منتشر کنیم!؟
موفق باشید؛
حمید رضا نیرومند