در برنامهنویسی کامپیوتر، بیسیک (به انگلیسی: 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-265 mainframe که دارای چند ترمینال بود به کار گرفته شد. بر خلاف باورعمومی، بیسیک در زمان معرفی یک زبان کامپایل شده بود. بیسیک همچنین در غلبه بر FORTAN || و ALGOL ۶۰ در محاسبه ۲۶۵ محسبه ریاضی کاملاً مؤثر بود.
طراحان زبان تصمیم گرفتند برای اینکه زبان گسترده شود، کامپایلرهای رایگان برای آن تهیه کنند. آنها همچنین آن را در دبیرستانهای ناحیهٔ Dartmouth فراهم کردند و همچنین میزان قایل ملاحظهای تلاش درجهت ارتقاء این زبان کردند؛ و در نتیجه دانش بیسیک بصورت نسبی همه جا گسترش یافت (به عنوان یک زبان برنامهنویسی) و بیسیک توسط تعدادی از سازندگان پیادهسازی شد، و روی مینی کامپیوترهای جدید مانند سریهای DEC PDP و Data General Nov عمومی شد. همچنین زبان بیسیک بر روی سیستمهای اشتراک زمانی HP در اواخر دههٔ ۱۹۶۰و اوایل دههٔ ۱۹۷۰ گسترش یافت. در این نمونهها، زبان تمایل داشت به جای کامپایلربا مفسر اجرا شود.
چند سال پس از انتشارآن، افراد حرفهای در کامپیوتر، به ویژه Edsger W. Dijkstra، اظهار کردند که استفاده از دستور GOTO، که در بسیاری از زبانهای برنامهنویسی مانند بیسیک وجود دارد، روشهای برنامهنویسی ضعیف را ترفیع میدهد.[۴] برخی از بیسیک انتقاد کردند که خیلی کند است (بیشتر نسخههای دارای مفسر از دارای کامپایلر کندتر هستند) یا این انتقاد را کردند که بیسیک خیلی سادهاست (بسیاری ازنسخهها به ویژه برای کامپیوترهای کوچک، ویژگیها و قابلیتهای مهم را رها کردند).
رشد خیره کننده: دورهٔ کامپیوترهای خانگی[ویرایش]
بااینکه زبانها بر روی مینی کامپیوترهای زیادی استفاده میشوند ولی معرفی مینی کامپیوتر MITS Altair kit "8800" در سال ۱۹۷۵ راه جهانی شدن را به روی بیسیک گشود. بیشتر زبانهای برنامهنویسی به فضای حافظه بیشتری نسبت به آنچه بر روی کامپیوترهای کوچکی که بیشتر کاربران استطاعت خرید آن را داشتند، نیاز داشتند. همچنین میکروکامپییوترهای اولیه دارای دسترسی کند به حافظه که از نوارهای صدا فراهم میشد و نیز فقدان ویرایشگر مناسب متن بودند. یک زبان مانند بیسیک، با وجود تمام این محدودیتها پاسخگوی نیاز کاربران بود.
بیسیک همچنین دارای این مزیت بود که در بین طراحان جوان و علاقهمندان در زمینهٔ کامپیوتر که عموماً در صنایع الکترونیکی آن روزگار کار میکردند بصورت نسبتاً خوبی شناخته شده بود. ابتکار 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 8-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 تا امروز عرضه میشوند. مایکروسافت نسخهای از بیسیک را که در محیط گرافیکی بود با نام AmigaBASIC منتشر نمود (اواخر سال ۱۹۸۵ و اوایل سال ۱۹۸۶)، اگرچه این محصول دارای نشان ماکروسافت نبود.
این زبانها الحاقات زیادی را به کامپیوترهای خانگی بیسیک اضافه نمودند. مانند: بهبود کار با رشتهها و پشتیبانی گرافیکی و دسترسی به سیستم فایل و نوع دادههای اضافی. مهمتر از همه امکاناتبرنامهنویسی ساخت یافته بود. ازجمله ساختارهای کنترلی و رویهها که از متغیرهای محلی پشتیبانی میکردند.
به هر حال اواخر دههٔ ۱۹۸۰ کامپیوترهای جدید با توانایی بیشتر و ابتکارات نو در همین زمان کامپیوترها ترقی کردند از سرگرمی مورد علاقه به یک وسیله که عمدتاً برای فعالیتهایی که توسط دیگران نوشته میشد، استفاده میشدند. برنامهنویسی اهمیت کمتری برای بیشتر کاربران پیدا کرد. بیسیک شروع به پس رفتن در اهمیت کرد، اما نسخههای بیشماری از آن باقیماند. بیسیک کامپایل شده با 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 نسبت به از دست رفتن همهگیری بیسیک اظهار تاسف میکند.