خانه توسعهدهنده تکنولوژی تاریخچه داستان آفرینش ویژوال بیسیک؛ زبانی که ساخت ویندوز را ممکن کرد
داستان آفرینش ویژوال بیسیک؛ زبانی که ساخت ویندوز را ممکن کرد
آلن کوپر، طراح نرمافزار، داستان آفرینش ویژوال بیسیک را توضیح میدهد و اینکه چرا به او لقب «پدر ویژوال بیسیک» را دادهاند.
از آنجا که شرکت طراحی تعاملی من، کوپر (Cooper)، بیش از دو سال است که صاحبان جدیدی دارد، تعجبآور نیست که ببینم برخی از پستهای شخصیتر من بیسروصدا از Cooper.com حذف شدهاند. یکی از آنها پستی بود که در سال 1995، درمورد داستان پیدایش ویژوال بیسیک نوشتم. حالا و بعد از 25 سال، این پست را با اندکی تغییر و کمی بهروزرسانی دوباره منتشر میکنم.
میچل ویت، در پیشگفتار کتابش به نام «visual basic how-to»، به من لقب «پدر ویژوال بیسیک» را داده است. به گمانم نامگذاری مناسبی است و من هم غالباً از این عبارت بهعنوان بیوگرافی تکخطی خودم استفاده میکنم.
در طول دهه 80، کار من طراحی نرمافزار و سپس فروش آن به ناشران مختلف بود. در سال 1986، من مایکروسافت ویندوز را بهعنوان پلتفرم موردنظر خود انتخاب کردم. ویندوز نهتنها همهی موارد موردانتظار برای پشتیبانی از رابط کاربری گرافیکی را انجام میداد، بلکه ویژگی منحصربهفرد و بسیار مطلوبی هم داشت: با استفاده از ویژگی کتابخانه پیوند پویا (DLL)، امکان ایجاد ابزارهایی که خود را بهصورت پویا پیکربندی کنند، وجود داشت. همان لحظهای که با این ویژگی آشنا شدم، مطمئن شدم که ویندوز آینده درخشانی خواهد داشت. البته من متوجه یک ایراد هم درمورد ویندوز شدم: برنامهی shell آن افتضاح بود!
در اوقات فراغت خودم، شروع به نوشتن برنامهی پوستهای بهتر برای ویندوز کردم و اسمش را هم «Tripod» گذاشتم. پوستهی اصلی مایکروسافت به نام MSDOS.EXE، بهشدت احمقانه و یکی از اصلیترین موانع موفقیت اولیه ویندوز بود. تریپاد قرار بود با کاربری و پیکربندی راحتتر، این مشکل را حل کند. ولی تا سال 1987، زمانی که با یک مشتری مصاحبه میکردم، استراتژی اصلی طراحی تریپاد به ذهنم خطور نکرده بود. همان طور که یک مدیر سیستمهای اطلاعاتی نیاز خود برای ایجاد و انتشار طیف گستردهای از پوستهها برای پایگاههای مختلف کاربری را برای من توضیح میداد، متوجه شدم که چیزی بهعنوان پوسته ایدهآل وجود ندارد. هر کاربر به پوستهی شخصی خودش نیاز دارد که بسته به مهارت و توانایی خودش پیکربندی شده باشد. در یک لحظه، من راهحل مشکل طراحی پوسته را پیدا کردم: یک مجموعه ساخت پوسته؛ ابزاری که در آن هر کاربر میتواند دقیقاً پوسته موردنیاز خود را برای ترکیب منحصربهفرد برنامهها و آموزش خود بسازد. بهجای آنکه من به کاربران بگویم پوستهی ایدهآل چیست، آنها میتوانند پوستهی ایدهآل و شخصیسازیشده خود را طراحی کنند.
مطلب مرتبط: تاریخچه پیدایش لاراول
زمانی که به این ایده رسیدم، باقی تکههای پازل طراحی بهراحتی کنار هم چیده شدند. یک پالت ابراز وجود خواهد داشت و کاربر میتواند فرمهای مختلفی بسازد و آنها را با ابزار و مجموعههای مختلف پر کند. این مجموعه شامل کنترلهای استاندارد مانند listboxها، push bottonها و انواع خاصی از پوسته مانند listboxهایی که بهطور خودکار محتوای یک فهرست را نشان میدهند، خواهد بود.
من شروع به کار بر روی نسخهی جدید تریپاد کردم و بعد از چند ماه یک نمونه اولیهی تقریباً کامل داشتم که کار میکرد. من منحصراً از زبان C استفاده کرده بودم. یکی از ویژگیهایی که در این دوره به وجود آمد، این ایده بود که با کشیدن و رها کردن، رابط کاملاً قابلکنترل باشد. کاربر میتوانست با کلیک راست و کشیدن از یک کنترل (من آنها را gizmo نامیدم) به دیگری، آنها را به هم متصل کند. یک پیکان گرافیکی آنها را بهطور منطقی متصل میکرد و از یک رویداد در اولین برنامه به یک متد از gizmo دوم میرفت. در نهایت، مایکروسافت پیکانها را کنار گذاشت، اما مدل رویداد/متد همچنان باقی مانده است.
از آنجایی که شغل من ساخت نرمافزار و فروش آن به ناشران بود، شروع به ارائه تریپاد به شرکتهای مختلف کردم. بسیاری از شرکتهای سیلیکون ولی تریپاد را دیدند، ولی فقط تعداد اندکی به آن علاقه جدی نشان دادند. بالاخره، در مارس 1988، من این نمونهی اولیه را به بیل گیتس نشان دادم. او بهسرعت متوجه پتانسیل بالای آن شد و گفت که محصول من بسیار عالی است و میتواند تأثیر قابلتوجهی در خط تولیدش داشته باشد. او میخواست نرمافزار من را بخرد و ما طی چند ماه آینده یک قرارداد امضا کردیم. از آنجایی که نام «تریپاد» بیش از حد مشخص بود، نام آن را به Ruby تغییر دادیم. در همان حال، من شروع به گردآوری یک تیم از برنامهنویسان ماهر کردم تا بتوانیم یک برنامهی باکیفیت بسازیم.
تیم ما شامل مارک مرکر، گری کراتکین، مارک گییری و فرانک راب بود. اولین کاری که کردیم این بود که نمونهی اولیه من را کنار گذاشتیم و همهچیز را از اول شروع کردیم. نمونه من بیش از 25 هزار خط کد C داشت و با اینکه ایدههای ارزشمند زیادی داشت، ولی حالا این کد نقش خود را بهعنوان بستر آزمون ایدههای مختلف ایفا میکرد. تیم ما بهسختی تلاش کرد و نهایتاً پس از 18 ماه، روبی آماده شد. محصول توسط تیم کنترل کیفیت مایکروسافت بررسی شد و ما این محصول طلایی را اوایل 1990 به ردموند فرستادیم.
محصول روبی پیشرفتهای چشمگیری در طراحی نرمافزار داشت، اما دو مورد از آنها فوقالعاده موفق ظاهر شدند. همان طور که اشاره کردم، قابلیت پیوند پویای ویندوز همیشه مرا مجذوب خود کرده بود، اما داشتن ابزارها و دانستن نحوه استفاده از آنها دو چیز متفاوت بود. با روبی، سرانجام دو کاربرد مفید برای پیوند پویا پیدا کردم و برنامه اصلی حاوی هر دو مورد بود. اول، این زبان هم قابلنصب بود و هم میتوانست بهصورت پویا گسترش یابد. دوم، پالت gizmoها میتوانست بهصورت پویا به آن اضافه شود.
روبی با یک زبان کوچک همراه بود؛ زبانی که فقط برای اجرای چندین دستور بسیار ساده که یک برنامه پوسته به آن نیاز دارد، مناسب بود. با این حال، این زبان بهعنوان زنجیرهای از DLLها پیادهسازی شده بود که هر تعداد از آنها میتوانستند در زمان اجرا نصب شوند. پارسر داخلی یک دستورالعمل را شناسایی میکرد و سپس آن را به زنجیرهای از DLLها انتقال میداد تا اینکه یکی از آنها تایید کند که میداند چگونه آن دستورالعمل را پردازش کند. اگر هیچ DLLای دستورالعمل را شناسایی نمیکرد، به این معنی بود که یک خطای دستوری (syntax error) وجود دارد. من و مایکروسافت از ابتدا ایده پرورش این زبان را داشتیم، حتی این ایده که آن را کاملاً با یک زبان «واقعی» جایگزین کنیم. C کاندیدایی بود که بیشتر از همه نام برده میشد، اما سرانجام، مایکروسافت با استفاده از این رابط پویا، زبان پوسته کوچک ما را کنار گذاشت و QuickBasic را جایگزین آن کرد. این ادغام زبان و ویژوال فرانت اند استاتیک و دائمی بود و اگرچه رابط پویای اصلی این اتصال را ممکن کرد، اما در طی روند ساخت از بین رفت.
من از همان اوایل مراحل طراحی، ایده پویا کردن پالت gizmo را مطرح کردم. من محصولی را پیشبینی کردم که فروشندگان دسته سوم (third party vendor) بتوانند DLLهای gizmo خود را بنویسند و کاربران بتوانند بدون نیاز به کامپایل کردن مجدد، آنها را به محصول موجود در زمینه اضافه کنند. ما رابطی را تعریف کردیم که از طریق آن Ruby با یک کوئری فایلهای اجرایی مجاور را بررسی میکرد. اگر فایل بهدرستی پاسخ میداد، روبی میدانست که این یک gizmo مشترک است و درخواست میکرد که نماد آن در پالت ابزار نمایش داده شود. این رابط سرانجام به VBX معروف شد. تا آنجا که من میدانم، این اولین استفاده عملی از امکانات پیوند دینامیکی ویندوز در خارج از سیستمعامل ویندوز بود. این یک موفقیت چشمگیر هم برای مایکروسافت بهخاطر ارائه آن و هم برای شخص من بهخاطر یافتن کاربردی مفید از این ویژگی بود.
مطلب مرتبط: 5 زبانی که احتمالاً تا سال 2030 منسوخ شدهاند
از آنجا که مایکروسافت حق انحصاری روبی را داشت، آنها میتوانستند هر کاری که میخواستند را انجام دهند. قصد اولیه این بود که با ویندوز 3.0 بهعنوان پوستهای جدید، قدرتمندتر و پیچیدهتر، درست مانند پوستهای که در نهایت با ویندوز 95 همراه شد، عرضه شود. در عوض، مایکروسافت تصمیم گرفت ویندوز 3.0 را با پوستهای بسیار شبیه به پوستهای که با سیستمعامل OS|2 ارائه شده بود، عرضه کند. دلیل به تأخیر انداختن عرضه Ruby، تبدیل آن از مجموعه ساخت پوسته برای همه کاربران ویندوز به یک زبان برنامهنویسی ویژوال برای برنامهنویسان حرفهای با افزودن QuickBasic بود. در ابتدا از این تصمیم مایکروسافت بسیار ناامید شدم و با آن مخالفت کردم. با این حال، تحتتأثیر قدرت محصول نهایی قرار گرفتم و خیلی زود به یک طرفدار پروپاقرص ویژوال بیسیک تبدیل شدم.
در تمام مدتزمانی که روی روبی کار میکردم، یک قرارداد عدم افشای اطلاعات با مایکروسافت داشتم و نمیتوانستم درمورد آن به کسی چیزی بگویم. برای مدت تقریباً چهار سال، با اینکه میدانستم روبی چشمانداز برنامهنویسی را تغییر خواهد داد، سکوت کردم. اندکی پس از انتشار VB، دوستم میچل وایت با من تماس گرفت و پرسید که آیا من کسی هستم که در بخش about برنامه ذکر شده است یا نه و من اعتراف کردم که بله خودم هستم. او مرا به صرف ناهار دعوت کرد تا بتواند داستان کامل را از نزدیک بشنود. ما در سانفرانسیسکو ملاقات کردیم و من همان داستانی را که برای شما تعریف کردم با او در میان گذاشتم. وقتی صحبتهایم تمام شد، او با تعجب به من نگاه کرد و گفت: «این یعنی تو پدر ویژوال بیسیک هستی!»
من دو پسر دارم که وقتی اولینبار این متن را مینوشتم 9 و 10 ساله بودند و اگرچه من در شکلگیری شخصیت آنها نقش اساسی داشتم و در قسمت بزرگی از زندگی آنها باقی ماندهام، ولی آنها ازلحاظ فکری افرادی کاملاً مستقل هستند. هر روز که میبینم آنها به شیوه خود رشد میکنند و درمورد زندگی خود تصمیم میگیرند، میدانم واقعاً پدر بودن به چه معناست و عبارت میچل هر روز مناسبتر به نظرم میرسد. ویژوال بیسیک برایم درست مثل اسکات و مارتی است و من مثل پدری به ویژوال بیسیک و پیشرفتش در گذر زمان افتخار میکنم.
در می 1994، در کنفرانس جهانی ویندوز در آتلانتا، جورجیا، بیل گیتس یکی از 7 جایزه پیشگامان ویندوز را بهخاطر نقشی که در ساخت ویژوال بیسیک و موفقیت ویندوز داشتم، به من اهدا کرد.