بیسیک

این متن دربارهٔ برنامه نویسی است.

در برنامه نویسی کامپیوتر، بیسیک {انگلیسی|BASIC، سرنام Beginners All-Purpose Symbolic Instruction} یکی از زبانهای برنامه‌نویسی سطح بالاست. اولین بار بیسیک در سال ۱۹۶۴ توسط جان جورج کمنی {انگلیسی|John George Kemeny} و توماس یوجین کرتز {انگلیسی|Thomas Eugene Kurtz} در دانشگاه دارتموث در نیوهمپشر امریکا، به منظور دسترسی دانشجویان به کامپیوتر طراحی شد. در آن زمان استفاده از کامپیوترها نیاز به نوشتن تکه‌برنامه‌هایی داشت که تنها دانشمندان و ریاضی‌دانان می‌توانستند آنها را بنویسند. بیسیک وانواع مختلف آن تا دههٔ ۱۹۷۰ و ۱۹۸۰، به طور گسترده در میکروکامپیوترها گسترش یافت و تا امروز نیز پر طرفدار باقی مانده و بعنوان نسخهٔ خاصی از یک زبان کامپیوتر مفید و اصلاح شده و زبانهای جدیدی مانند مایکروسافت ویژوال بیسیک بر مبنای بیسیک ساخته شده‌اند. تا سال ۲۰۰۶، ٪۵۹ برنامه نویسان محیط دات‌نت از ویژوال بیسیک به عنوان تنها زبان خود استفاده می‌کردند.

== تاریخچه ==

=== پیش زمینه ===

تا قبل از اواسط دههٔ ۱۹۶۰، کامپیوترها بسیار گران بودند و فقط برای وظایفی که هدف خاصی را داشتند مورد استفاده قرار می‌گرفتند. یک دسته پردازشهای مرتب ساده، هر کدام بعنوان یک کار در هر لحظه یکی پس از دیگری اجرا می‌شدند. اما در دههٔ ۱۹۶۰، کامپیوترهای سریعتر و تواناتر با قدرت پردازشی بیشتر ساخته شدند، کامپیوترها می‌توانستند لحظاتی بدون کار باشند، بدون فعالیتی برای اجرا کردن.

زبانهای برنامه‌نویسی مانند ماشینهایی که آنها را اجرا می‌کردتد باید طوری طراحی می‌شدند که برای اهداف مشخصی مانند محاسبهٔ فرمول علمی یا پردازش داده‌های تجاری یا مثلا ویرایش یک متن مفید باشند. از آنجایی که حتی کامپوترهای جدید و ارزانتر هنوز به سرمایه زیادی احتیاج داشت، تمایل شدیدی برای در نظر گرفتن کارایی به عنوان مهمترین ویژگی زبان وجود داشت. بطور کلی استفاده از این زبان‌های تخصصی شده مشکل بود و سینتکسهای مختلف زیادی برای آنها وجود داشت.

هنگامی که کامپیوترها قیمتشان کاهش یافت، این امکان به وجود امد که دسترسی به کامپیوتر از انحصار ازمایشگاه‌های تحقیقاتی خارج شود و وارد استفادهٔ تجاری شود. کامپیوترهای جدید از سیستم اشتراک زمانی پشتیبانی می‌کنند که این امکان را برای چند پردازش یا کاربر فراهم می‌کند که بطور همزمان از پردازنده و حافظه استفاده کنند. در چنین سیستمهایی، سیستم‌عامل بین پردازشهای در حال اجرا بطور متناوب به هر کدام از آنها زمانی برای اجرا بر روی پردازنده می‌دهد، قبل از این که بر روی فعالیت دیگری برود. ماشینها به حدی سریع شدند که بیشتر کاربران می‌توانستند احساس کنند که تمام ماشین در خدمت آنهاست. اشتراک زمانی هزینهٔ محاسبات را بطور فاحشی کاهش داد. یک ماشین می‌توانست بین حتی صدها کاربر به اشتراک گذاشته شود.

=== سالهای نخست: دورهٔ مینی کامپیوترها ===

بیسیک اولیه در سال ۱۹۶۳ توسط John George Kemeny و Thomas Eugene Kurtz طراحی شد و و توسط یک تیم از دانشجویان Dartmouth و زیر نظر آنها پیاده­سازی شد. در این طراحی سعی شده بود که موضوعات پیچیدهٔ زبانهای قدیمی با یک زبان جدید برای رده جدیدی از کاربران که سییتمهای اشتراک زمانی اجازه می‌داد که دارای اطلاعات تکنیکی کمتر و دارای پیش­زمینه ریاضی ضعیف­تری از کاربران قدیمی­تر بودند استفاده شود. امکان استفاده از کامپیوتر در آموزش و تحقیق در آن زمان یک چیز کاملا جدید بود.در سالهای بعدی که نسخه‌های جدیدی از بیسیک ساخته شد، بیسیک اولیه که توسط John George Kemeny و Thomas Eugene Kurtz ساخته شد، تحت عنوان بیسیک Dartmouth شناخته شد.

هشت اصل در طراحی بیسیک عبارتند از:

# استفاده آن برای مبتدیان آسان باشد.
# یک زبان برنامه نویسی با اهداف عمومی باشد.
# امکان اضافه شدن ویژگی‌های پیشرفته برای متخصصین را بدهد (در حالی که سادگی زبان برای مبتدیان حفظ شود).
# تعاملی باشد.
# پیغام‌های خطای واضح داشته باشد.
# برای برنامه‌های کوچک، سریع پاسخ دهد.
# نیازی به اشنایی و دانستن سخت‌افزار نباشد.
# از کاربر در برابر سیستم‌عامل حفاظت کند.

بخشی از این زبان بر مبنای فرترن ۲ و بخشی از آن بر مبنای الگول۶۰ بود به اضافهٔ این مزیت که آنرا برای اشتراک زمانی مناسب می‌کرد.(ویژگی اشتراک زمانی از دیگر زبانها مانند JOSS وCORC و به میزان کمتری از زبان LISP، نیز در نظر گرفته شد.) این زبان از آزمایشهای آموزش زبان دیگر در Dartmouth مانند DARSIMCO (۱۹۵۶) و DOPE (پیاده­سازی شده در سال ۱۹۶۲SAP و (۱۹۶۳) DART که ساده شدهٔ فرترن۲ بود( پیشی گرفت. نخستین بار بیسیک بر روی کارهای سر راست ریاضی تمرکز داده شد، با پشتیبانی محاسبهٔ ماتریس ازپیاده­سازی اولیه آن بعنوان یک زبان دسته­ای و امکانات کامل کار با رشته به آن در سال ۱۹۶۵ اضافه شد. در سال ۱۹۶۵ بیسیک نخستین بار بر روی GE-۲۶۵ mainframe که دارای چند ترمینال بود به کار گرفته شد. بر خلاف باورعمومی، بیسیک در زمان معرفی یک زبان کامپایل شده بود. بیسیک همچنین درغلبه بر FORTAN || و ALGOL ۶۰ در محاسبه ۲۶۵ محسبه ریاضی کاملا موثر بود.

طراحان زبان تصمیم گرفتند برای اینکه زبان گسترده شود، کامپایلرهای رایگان برای آن تهیه کنند.آنها همچنین آن را در دبیرستانهای ناحیهٔ Dartmouth فراهم کردند و همچنین میزان قایل ملاحظه‌ای تلاش درجهت ارتقاء این زبان کردند. و در نتیجه دانش بیسیک بصورت نسبی همه جا گسترش یافت (به عنوان یک زبان برنامه نویسی) و بیسیک توسط تعدادی از سازندگان پیاده­سازی شد، و روی مینی کامپیوترهای جدید مانند سریهای DEC PDP و Data General Nov عمومی شد.همچنین زبان بیسیک بر روی سیستم‌های اشتراک زمانی HP در اواخر دههٔ ۱۹۶۰و اوایل دههٔ ۱۹۷۰ گسترش یافت. در این نمونه‌ها، زبان تمایل داشت به جای کامپایلربا مفسر اجرا شود.

چند سال پس از انتشارآن، افراد حرفه‌ای در کامپیوتر، به ویژه Edsger W. Dijkstra، اظهار کردند که استفاده از دستور GOTO، که در بسیاری از زبانهای برنامه نویسی مانند بیسیک وجود دارد، روشهای برنامه نویسی ضعیف را ترفیع می‌دهد. برخی از بیسیک انتقاد کردند که خیلی کند است (بیشتر نسخه­های دارای مفسر از دارای کامپایلر کندتر هستند) یا این انتقاد را کردند که بیسیک خیلی ساده‌است (بسیاری ازنسخه­ها به ویژه برای کامپیوترهای کوچک، ویژگی‌ها و قابلیت‌های مهم را رها کردند).

=== رشد خیره کننده: دورهٔ کامپیوترهای خانگی ===

بااینکه زبانها بر روی مینی کامپیوترها ی زیادی استفاده می‌شوند ولی این معرفی مینی کامپیوتر MITS Altair ۸۸۰۰ “kit” در سال ۱۹۷۵ راه جهانی شدن را به روی بیسیک گشود. بیشتر زبانهای برنامه نویسی به فضای حافظه بیشتری نسبت به آنچه بر روی کامپیوترهای کوچکی که بیشتر کاربران استطاعت خرید آن را داشتند، نیاز داشتند. همچنین میکروکامپییوترهای اولیه دارای دسترسی کند به حافظه که از نوارهای صدا فراهم می‌شد و نیز فقدان ویرایشگر مناسب متن بودند. یک زبان مانند بیسیک با که با وجود این محدودیت‌ها کار می‌کرد.

بیسیک همچنین دارای این مزیت بود که در بین طراحان جوان و علاقمندان در زمینهٔ کامپیوتر که عموما در صنایع الکترونیکی آن روزگار کارمیکردند بصورت نسبتا خوبی شناخته شده بود. ابتکار Kemeny and Kurtz’s به اندازهٔ درخور مورد توجه قرار گرفت که تعدادی از مجلات کامپیوتر در آن زمان، مطالبی در بارهٔ زبان نوشتند یا بر روی مقایسهٔ یک نسخه با دیگر نسخه‌ها تمرکز کردند.

یکی از اولین نسخه­هایی که برای ماشین ۸۰۸۰ مانند Altair به وجود آمد Tiny BASIC بود. یک اجرای ساده از بیسیک که در اصل توسط Dr. Li-Chen Wang نوشته شده بود و سپس به Altair برده شد توسط Dennis Allison به درخواست Bob Albrecht (که قبلا مجلهٔ Dr. Dobb’s را تاسیس کرده بود). طراحی و تمام کد منبع آن در سال ۱۹۷۶ درDJJ منتشر شد.

در سال ۱۹۷۵، MITS نسخهAltair BASIC را که توسط دانشجوی ترک تحصیل کرده، Bill Gates و Paul Allen به عنوان شرکت Micro-Soft (که بعدها شرکت عظیم مایکروسافت نام گرفت) منتشر کرد. نخستین نسخه از Altair توسط Gates، Allen وMonte Davidoff نوشته شد.نسخه‌های مایکروسافت بیسیک که بعداً بعنوان M BASIC یا MBASIC شناخته شدند، به زودی با کامپیوترهای بر مبنای فلاپی دیسک که در فعالیت‌های کوچک تجاری استفاده می‌شد رایج شد. چون محبوبیت بیسیک در CP/M گسترش یافت، طراحان کامپیوترهای جدید نیز نسخهٔ خودشان از زبان معرفی کردند و یا Micro-Soft نسخه خود را به محیط آنها برد.

هنگامی که سه کامپیوتر اصلی جدید در مجلهٔ Byte که قبلا ۱۹۷۷ Trinity نامیده می‌شد معرفی شدند، هر سه آنها بیسیک را بعنوان زبان اصلی و محیط عملکردی دارا بودند. Commodore PET لیسانس یک نسخه از مایکروسافت بیسیک را که به MOS ۶۵۰۲ برده شده بود را بدست آورد. و Apple II و TRS-۸۰ هر دو نسخه‌های جدیدی از زبان را معرفی کردند که خیلی شبیه به هم بودند. همان طور که کمپانی‌های جدید وارد عرصه می‌شدند، نسخه‌های جدیدی اضافه می‌شدند که به دقت خانوادهٔ بیسیک را تغییر می‌دادند. خانوادهٔ Atari ۸-bit نسخه Atari BASIC خود را داشت که برای کارتریج ۸ kB ROM مناسب شده بود. بی بی سی، BBC BASIC را منتشر کرد که توسط Acorn Computers Ltd برای آنها ساخته شده بود که دارای کلمات ساختاری زیادی بود. بیشتر کامپیوترهای خانگی دههٔ ۱۹۸۰ یک ROM مفسر بیسیک داشتند، که به ماشین اجازه می‌داد مستقیما در بیسیک بوت شود. بیسیک بیش از هر زبان دیگری دارای گونه­های مختلف است.

در طول این دورهٔ رشد برای بیسیک، مجلات بسیاری منتشر شدند مانند مجله یCreative Computing که شامل کد منبع کامل بازی‌ها و نرم­افزارهای سودمند بود. این کار ساده‌ای بود که کدها را از مجله نوشته شوند و اجرا شود. مجلات مختلفی منتشر می‌شدند که برنامه‌ها را برای کامپیوترهای بخصوصی نشان می‌دادند گرچه بعضی از برنامه‌های بیسیک جهانی بودند و می‌توانستند بر روی هر ماشین استفاده کننده از بیسیک، اجرا شوند. یک راه منطقی دیگر ایده به کتاب درآوردن این کد منبع­ها بود که به طور مثال می‌توان به سری کتابهای بازیهای کامپیوتری David Ahl اشاره نمود.

=== بلوغ : دورهٔ کامپیوترهای شخصی ===

سال ۱۹۷۹ میکروسافت با IBMبرای ساختن یک نسخه بیسیک به نام BASIC C)) که در BIOS این کامپیوترها قرار می‌گرفت در مذاکره بود. مایکروسافت نسخه­ های زیادی از بیسیک را برای MS-DOS/PC-DOS فروخت که شامل BASIC D، BASIC A، BASICA، GW-BASIC(یک نسخه سازگار با BASIC A که احتیاج به رم IBMنداشت)، QBASIC می­شد. توربو پاسکال، منتشر کنندهٔ بورلند، توربو بیسیک ۱٫۰ را در سال ۱۹۸۵ منتشر کرد. نسخه‌های بعدی با نام نویسنده اصلی آن تحت نام POWERBASIC تا امروز عرضه می‌شوند. ماکروسافت نسخه­ای از بیسیک را که در محیط گرافیکی بود با نام AmigaBABSIC منتشر نمود(اواخر سال ۱۹۸۵ و اوایل سال ۱۹۸۶)، اگرچه این محصول دارای نشان ماکروسافت نبود.

این زبانها الحاقات زیادی را به کامپیوترهای خانگی بیسیک اضافه نمودند. مانند: بهبود کاربا رشته­ ها و پشتیبانی گرافیکی و دسترسی به سیستم فایل و نوع داده ­های اضافی. مهمتر از همه امکانات برنامه نویسی ساخت یافته بود. ازجمله ساختارهای کنترلی و رویه­ها که از متغیرهای محلی پشتیبانی می‌کردند.

به هر حال اواخر دههٔ ۱۹۸۰ کامپیوترهای جدید با توانایی بیشتر و ابتکارات نو در همین زمان کامپیوترها ترقی کردند از سرگرمی مورد علاقه به یک وسیله که عمدتا برای فعالییت هایی که توسط دیگران نوشته می‌شد، استفاده می‌شدند. برنامه نویسی اهمییت کمتری برای بیشتر کاربران پیدا کرد. بیسیک شروع به پس رفتن در اهمیت کرد، اما نسخه­ های بیشماری ازآن باقی ماند. بیسیک کامپایل شده با CBASIC هنوز در سیستم‌عامل IBM ۴۶۹۰ استفاده می­شود.

شانس بیسیک یک بار دیگر با معرفی ویژوال بیسیک که توسط مایکروسافت عرضه شد باقی ماند.سخت است که این زبان را بیسیک در نظر بگیریم چون زبان تبدیل به یک زبان شی گرا و رویدادی شده بود. تنها چیز مهمی که شبیه به بیسیک قدیمی بود، سینتکس آن بود. سینتک به خودی خود زمان را به طور کامل تعریف نمی­کند، از آنجایی که بیشتر برنامه نویسان برای استفاده از اشایی مانند button و یا scrollbar از تکنیک drag and drop استفاده می‌کنند و مستقیما درگیر تمام کد نمی­شوند، در حالی که این می‌توانست بعنوان یک تحول برای زبان در نظر گرفته شود، بعضی از ویژگی‌های ممتاز Dartmouth BASIC مانند شماره‌های خط و کلمهٔ کلیدی INPUT باقی ماند(گرچه هنوز هم ویژوال بیسیک از INPUT برای خواندن اطلاعات از فایل استفاده می‌کند و کلمه کلیدی INPUTBOX برای ورودی مستقیم از کاربرموجود است. line numbers نیز می‌تواند بصورت اختیاری د رتمام نسخه‌های VB مورد استفاده قرار گیرد حتی VB.NET. گرچه آنها نمی‌توانند در بعضی مکان های خاص مورد استفاده قرار گیرند مانند قبل از SUB).

ایراد گرفته شده از بیسیک به این عنوان که بیسیک زبانی ابتدایی است و ظاهرا باعث تعجب بسیار زیادی شد که مایکروسافت هنوز ویژوال بیسیک را بعنوان یک زبان برای علاقه مندان می‌داند، این زبان به طور وسیعی برای فعالییتهای تجاری کوچک به مدت کوتاهی پس از عرضه شدن نسخهٔ ۳ از VB مورد استفاده قرار گرفت. که عموما به عنوان نخستین نسخهٔ پایدار در نظر گرفته شد. در حالی که بسیاری از برنامه نویسان حرفه‌ای استفاده از بیسیک را مورد تمسخر قرار می‌دهند، VBنیازهای تجاری کوچک را در جاهایی که سرعت پردازش نسبت به تولید آسان اهمیت کمتری داشت به طور موثری برآورده کرد.((در ان زمان کامپیوترها Windows ۳٫۱ را اجرا می‌کردند که به اندازه‌ای سریع شده بودند که فعالیتهای مربوط به تجارت را می‌توانستند در یک چشم به هم زدن انجام دهند). خیلی از صاحبان کسب و کار کوچک فهمیدند که می‌توانند در چند بعد ظهر برنامه­ای کارا برای رفع نیازهایشان بنویسند. سر انجام در طول عمر VB۳ دانش ویژوال بیسیک به یک مهارت قابل عرضه در بازار تبدیل شد.

خیلی از نسخه‌های زبان بیسیک در چند سال اخیر ظاهر شده‌اند از جمله Bywater BASIC و True BASIC (جانشین اصلی بیسیک Dartmouth از شرکتی به هدایت Krutz). یک نسخه برجسته RealBasic می­باشد، که اولین بار در سال ۱۹۹۸ برای کامپیوترهای مکینتاش منتشر شد، که از سال ۲۰۰۵ در برنامه­ های ویندوز ماکروسافت، Mac OS X و لینوکس ۳۲ و ۶۴ بیت استفاده می‌شود. برنامه­ های کامپایل شده RealBasic ممکن است به صورت طبیعی در این محیط‌ها به عنوان سرویس کار کنند. خیلی از دیگر انواع بیسیک، توسط علاقمندان نوشته شد. این زبان بطور نسبی برای مترجم آسان است. یک مثال از یک مترجم open source، به زبانC، MiniBasic می­باشد. وجود مفسرهای بیسیک روی تمام کامپیوترهای خانگی، دانشجویان را تشویق می‌کند که مفاهیم ریاضی و محاسباتی در کلاس یا خانه بر روی کامپیوتر تجربه کنند. و در آخر اینکه آقای David Brin در مقاله Salon نسبت به از دست رفتن همه­گیری بیسیک اظهار تاسف می­کند.

== مثالها ==

=== برنامه نویسی ساخت نیافته ===

=== بیسیک ساخت یافته ===

=== یسیک با ویژگیهای شی گرا ===

سومین نسل از زبان بیسیک مانند Visual Basic، StarOffice Basic، REALbasic، BlitzMax ویژگی‌هایی را برای پشتیبانی برنامه نویسی شی گرا و رویدادی معرفی کردند. بیشتر توابع و رویه­های به عنوان متد­های استاندارد اشیاء نشان داده می‌شدند تا عمگرها.

SuperStrict ‘ Use very strict coding rules (no loose assumptions).

Framework brl.blitz ‘ Base BlitzMax module (Framework is the same as Import, except ‘ in that it stops automatic Imports of official modules). Import brl.standardio ‘ Import BRL’s StandardIO module (contains Print and Input). Import brl.random

‘ Run our function! TNumberGuessingGame.Main

‘ Non-instance based type (trying to mimic the flow of VB)… Type TNumberGuessingGame ‘ NOTE: The ‘T’ before the the Type/Class’ name is ‘ a typical naming convention used, and is not necessary.

Function Main Local number:Int, guess:Int, quit:Int = False

Repeat number = Rand(۱, ۱۰) Print(«Guess a number! (one to ten)»)

guess = Int(Input(«>»)) If guess = number Print(«Correct!!») Else If guess ۱۰ Print(«That’s more than ten!!») Else Print(«Incorrect! The number was» + number + «.») End If

Print(“”) ‘ Print always appends a newline character at the end of the message. If Input(«Do you want to continue playing? (y/n)»).ToLower = “n” quit = True End If

Until quit = True

End Function

End Type

== توجه ==

== منابع ==

=== استانداردها ===

* ANSI/ISO/IEC Standard for Minimal BASIC:
* ANSI X۳٫۶۰-۱۹۷۸ «FOR MINIMAL BASIC»
* ISO/IEC ۶۳۷۳:۱۹۸۴ «DATA PROCESSING – PROGRAMMING LANGUAGES – MINIMAL BASIC»
* ANSI/ISO/IEC Standard for Full BASIC:
* ANSI X۳٫۱۱۳-۱۹۸۷ «PROGRAMMING LANGUAGES FULL BASIC»
* INCITS/ISO/IEC ۱۰۲۷۹-۱۹۹۱ (R۲۰۰۵) «Information Technology – Programming Languages – Full BASIC»
* ANSI/ISO/IEC Addendum Defining Modules:
* ANSI X۳٫۱۱۳ INTERPRETATIONS-۱۹۹۲ «BASIC TECHNICAL INFORMATION BULLETIN # ۱ INTERPRETATIONS OF ANSI ۰۳٫۱۱۳-۱۹۸۷»
* ISO/IEC ۱۰۲۷۹:۱۹۹۱/ Amd ۱:۱۹۹۴ «MODULES AND SINGLE CHARACTER INPUT ENHANCEMENT»
* ECMA-۱۱۶ BASIC (withdrawn, similar to ANSI X۳٫۱۱۳-۱۹۸۷)

درج دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *