جمعه, ۱۴ اردیبهشت, ۱۴۰۳ / 3 May, 2024
مجله ویستا

داستان Basic چهل ساله


داستان Basic چهل ساله
بیش از آن که نام مایکروسافت با بیل گیتس عجین باشد این بیسیک است که هنوز بعد از ۴۰ سال برای بیل گیتس همچون فرزند دردانه ای عزیز است .
بنابر این دلایل، ما نوشتن مفسر بیسیک را ترجیح دادیم: اول اینکه بیسیک آنقدر ساده بود که ما فکر می کردیم بتوانیم آن را به علاوه برنامه های کاربر در یک محیط ۴ کیلوبایتی فشرده کنیم و دوم اینکه ما دوست داشتیم یک برنامه معنی دار تک خطی با بیسیک بنویسیم. در آن زمان در زبان های دیگر متغیرهای بسیار زیادی وجود داشت و شما برای حک کلمه «HELLO» بر روی صفحه نمایش مجبور بودید چندین خط کد بنویسید. به این ترتیب توابع مدیریت و طول متغیرها در بیسیک نسبت به بقیه زبان ها مفیدتر بود. در ابتدای ظهور بیسیک ما سازندگان اولین سری میکروکامپیوترها را متقاعد کردیم که آنها به بیسیک نیاز دارند چرا که با نصب بیسیک بر روی سیستم هایشان آنها را قابل استفاده می کردند و مردم می توانستند به راحتی از سیستم شان به دلیل نبودن سیستم عامل استفاده کنند.
در آن زمان این سیستم ها طوری طراحی شده بود که فقط می شد آنها را روشن کرد و کار زیادی از آنها ساخته نبود. در سال ۱۹۷۹ سیستم عامل پدید آمد. تا این زمان بیسیک تنها راهی بود که بیشتر مردم می توانستند از کامپیوترشان استفاده کنند. بیسیک بسیار مورد توجه مردم قرار گرفته بود. در آن زمان ما مردم را به نوشتن کتاب هایی در مورد برنامه نویسی بیسیک تشویق می کردیم چرا که می خواستیم دیگران نیز با برنامه نویسی بیسیک و لیست برنامه های مختلف آن آشنا شوند. خواهش دیگر ما از مردم این بود که با بیسیک برنامه بنویسند و سپس یا آن را بفروشند و یا به طور رایگان در اختیار دیگران بگذارند.
در آن زمان به غیر از پل آلن و من اشخاص دیگری نیز به تهیه بیسیک های مختلفی مشغول بودند: «می چن ونگ» با «Tiny BASIC»، «استیون لنینگر» با «Radio Shake Level ۱BASIC»، «استیو وزنیاک» با «Apple Integer BASIC» و «گوردون ایبانک» با « Basic and CBasic». در بین تمامی این بیسیک ها فقط بیسیک مایکروسافت بالاخره توانست در حافظه فقط خواندنی بیش از ۵۰ نوع از ماشین های آن زمان ظاهر شود و به این ترتیب عملاً استاندارد شد.
اولین بیسیک واقعاً شبیه زبان بیسیک امروزی بود. در آن بیسیک شما مجبور بودید فقط از متغیرهای یک حرفی استفاده کنید و در ضمن شما باید از شماره خط نیز استفاده می کردید. با این وجود بیسیک ثابت کرد که می تواند یک راه بسیار خوب برای ساخت برنامه های مفید باشد راهی که همیشه و همه جا قابل دسترسی است. یکی از ویژگی های آن بیسیک «بازخورد کردن» آن بود. همچنین مدیریت رشته آن نیز به شما این امکان را می داد که به آسانی برنامه های کاربردی متن گرایی را طراحی کرده و بنویسید.
از کارهای دیگر ما جاسازی افعال POKE، PEEK ، INP و OUT در آن بیسیک بود. به این ترتیب با استفاده از این افعال که از کلمات رزرو شده بیسیک بودند می توانستید منابع کد درون سیستم را جابه جا کنید و یا تغییر دهید. همچنین کاری کردیم که برنامه نویسان می توانستند از داخل بیسیک به شیوه های زبان ماشین دست پیدا کرده و قسمت های مهم برنامه شان را سریع تر اجرا کنند. مفسرها به آسانی قابل توسعه هستند بنابراین اغلب ویژگی های جدید را به آن بیسیک اضافه می کردیم. ما همچنین «زبان های کلان رشته نگاره سازی» را که از فعل های Play و Draw استفاده می کردند توسعه دادیم. ویژگی های دیگری که حاصل تجربیات ما در نوشتن مفسرها بود به طور تمام و کمال در GW BASIC که برای ماشین های ژاپنی ساخته شده بود ظاهر شد. وقتی GW BASIC در حافظه کامپیوترهای شخصی جای گرفت زبان بیسیک بسیار گسترده و بزرگ جلوه گر شد.
اگر در دیسک های فقط خواندنی IBM تغییراتی حاصل نمی شد بدون شک بیسیک با مشکل مواجه می شد ولی این چنین نشد و توانست بالاتر از سطح یک مفسر توسعه باید و بدین ترتیب بی نهایت عمومی شد. یک چیز هنوز برای من تعجب آور است و آن این که چطور درصد بالایی از کاربران PC جی دابلیو بیسیک را تجربه کردند؟! البته شاید یکی از دلایلش این باشد که آموختن و استفاده از آن بسیار ساده بود. وقتی بیسیک در دنیای بزرگ کامپیوتر PC و سازگار با آن کم آورد و دچار مشکل شد تنها راه این بود که Quick BASIC را بسازیم. در این بین کمپانی های دیگری نیز بیسیک را توسعه دادند که از آن جمله می توان خود مخترعین بیسیک یعنی «کمنی» و «کورتس» را نام برد که بیسیک جدید خود را True BASIC نامیدند.
امروزه وقتی بیسیک را به برنامه نویسان نشان می دهم نظرشان این است که بیسیک کمی شبیه «پاسکال» است. مردمی که تصور می کردند بیسیک نیز مانند «بیسیک آ» - با ساختاری ضعیف که نمی توانست یک زبان «خط گرا» باشد _ است با دیدن آن متعجب شدند. با این اوصاف بیسیک در سال ۱۹۸۳ بسیار مدرن شد و بالاخره در اواسط دهه ۸۰ ویژگی های زیر باعث بهتر شدن آن شد: به عنوان یک زبان با اضافه شدن طول متغیر و نام های برچسب، ساختارهای رکورد و ابزار بهتر ساختاری کردن بلوک، به عنوان یک محیط برنامه نویسی با ویرایشگر توکار، اشکال زدایی توکار و توانایی بسیار مهم ترجمه _ اجرا و به عنوان یک زبان ترجمه شد، با عکس العمل سریع تری در برابر دوره منظم ترجمه، اشکال زدایی، ویرایش، ترجمه و نظارت بر کدهای سطح بالا.
بیسیک همچنین برای مدیریت ساختارهای پیچیده و تعامل بهتر با نگاره سازی، توانایی اجرای شیوه های برگشتی را نیز به دست آورد. در همین زمان بیسیک بیشتر از هر زمان دیگری ساختاری منسجم یافته بود. چرا که حلقه های DO ...WHILE، WHILE...WEND،DOUNTIL، LOOP ...WHILE و LOOP UNTIL و عبارت SELECT CASE به آن اضافه شده بود. توانایی های امروز بیسیک به شما این امکان را می دهد که ساختارهای داده را به همان خوبی C یا PASCAL بسازید. در بیسیک امروزی فضای برنامه ها به ۶۴ کیلوبایت محدود نمی شود بلکه برنامه های امروزی بیسیک می توانند از فضای حافظه موجود استفاده کنند که به مراتب بیشتر از ۶۴ کیلوبایت است.
در بیسیک امروزی تنها یک آرایه مستقلاً می تواند بیش از ۶۴ کیلوبایت حافظه استفاده کند. شما همچنین می توانید از اعداد طولانی (۳۲ بیتی) نیز در برنامه هایتان استفاده کنید. ساختارهای رکورد توانایی های دیگر از جمله تعریف ساختار داده، ترکیب بعضی از انواع داده های مستقل مانند رشته ها و اعداد را در اختیار شما می گذارد. محیط برنامه نویسی بیسیک نیز دچار تغییراتی شده است برای مثال در کونیک پیک ۴ و ۵/۴ یک ویرایشگر تمام صفحه ای توکار با ترکیب ویرایش اتوماتیک، اشکال زدایی توکار و یک راهنمای وابسته به بافت مراحل ساخت برنامه ها را تا حد امکان سریع تر و آسان تر می کرد.
در همین زمان شرکت Borland نیز یک ویرایشگر تمام صفحه ای را داخل Turbo Basic جاسازی کرد. یکی از تغییرات مهم و اساسی در بیسیک برگشت مفسرها به سمت مترجم ها بود یعنی برگشت به بیسیک اولیه ای که در کالج دارتموث ساخته شد. زیرا آن هم یک کامپایلر بود. بعد از ظهور سیستم عامل با فراهم شدن حافظه ای بیشتر از ۶۴ کیلوبایت تا اندازه ای ساخت مترجم های بیسیک امکان پذیرتر شد و خیلی زود مترجم های بیسیک بر روی میکروکامپیوترها ظاهر شدند.
این مترجم ها محصولاتی از مایکروسافت و دیجیتال دیسرچ (CBASIC-۸۶) بود. بعدها بیسیک های دیگری مانند Better BASIC، Quick BASIC، True BASIC، Z Basic و Turbo Basic تولید شدند. اما در این حرکت بزرگ به سمت مترجم ها نباید ویژگی های بسیار خوب مفسرها مانند بازخورد سریع و نمایش سریع خطاها را که باعث موفقیت مفسرها شده بود، نادیده گرفت.
پیشرفت در تکنولوژی مترجم باعث تولید یک مترجم بیسیک شد که تقریباً نمایشی از یک مفسر بود. بنابراین می توان گفت این بیسیک ترکیبی از مترجم و مفسر بود. مترجم های «یک طرفه ای» که در یک مرحله قادر به ترجمه صداها و سپس قادر به ترجمه هزاران خط از کدها فقط در چند ثانیه بودند، ظاهراً شبیه عملکرد یک مفسر بود ولی در عمل سرعت اجرای برنامه را نیز افزایش می داد. بعد از مدتی طرح تلفیق ویژگی های یک مفسر و یک مترجم را در حافظه ورودی امتحان کردیم. این طرح از یک روش کدگذاری بسیار مخصوص بهره می برد به طوری که وقتی با محیطی همچون ویرایشگر کوئیک بیسیک ترکیب شود این امکان را برای شما فراهم می کند که کدهای خود را تایپ کرده، اشکال زدایی کنید و در پایان نیز تغییرات لازم را به عمل آورید، درست شبیه عملیات درون یک مفسر. پس از این مراحل شما آماده اجرای برنامه هستید. حال می توانید برنامه یا محصول خود را برای به دست آوردن حداکثر سرعت در حجمی فشرده تر در یک فایل اجرایی ترجمه کنید.
از قابلیت های دیگر ترجمه بیسیک می توان از دستیابی به شیوه های زبان های دیگر از درون بیسیک نام برد. از آنجا که مترجم قادر به تولید فایل های با توسعه OBJ میانی استاندارد است، می توانید فایل های با توسعه OBJ زبان های C یا پاسکال را با فایل های با توسعه OBJ بیسیک ترکیب کرده و شیوه های زبان های بیگانه را از داخل برنامه بیسیک فرا خوانید.
با چنین پیشرفتی در تکنولوژی مترجم شهرت چندین ساله بیسیک به عنوان زبانی با سرعت اجرایی پایین از بین رفت. امروزه بسیاری از برنامه های تجاری مشهور با زبان بیسیک نوشته شده اند. برای مثال برنامه طرح گویند، به نام Accousta CADD ، برنامه مدیر ایستگاه رادیویی به نام Music Scan و حتی برنامه مهمی برای زیست شناسان ذره ای به نام DNA Inspector . به هرحال زبان بیسیک از زبان های معروفی همچون C و PASCAL چیزی کم ندارد چرا که برنامه های ترجمه شده بیسیک می توانند به سرعت برنامه های ترجمه شده در پاسکال و C اجرا شوند. من هنوز ادعا می کنم که یکی از طرفداران پروپا قرص بیسیک هستیم.
در بیسیک بسیاری از امور به آسانی انجام می گیرد در حالی که این امر در زبان های دیگر شما را تا حدی در فشار می گذارد. بنابراین بیسیک در برنامه نویسی خلاق دست شما را بازمی گذارد.
تا به حال برنامه نویسان زیادی را برای مسابقه برنامه نویسی به هر زبانی که آنها بخواهند دعوت کرده ام و شرط می بندم همان برنامه را با کوئیک بیسیک طوری بنویسم که از برنامه آنها سریع تر و بهتر اجرا شود.
در این زمینه تاکنون از اطرافیان کنایه های محبت آمیز شنیده ام: اگر نوشتن برنامه ای مهم نیاز به یک برنامه ریزی مناسب و حساب شده دارد، کافی است آن را به بیل بسپارید تا در تعطیلات آخرهفته اش آن را به بیسیک بنویسد.
به هرحال معتقدم زبانی به قدرتمندی بیسیک وجود ندارد، هرچند که هنوز هم راه های زیادی برای کارکرد بهتر آن وجود دارد.
منبع : مرکز توسعه و تبادل دانش فناوری اطلاعات