• BASIC در علوم کامپیوتر چیست؟ مبانی برنامه نویسی به زبان پایه. تعیین هدف درس

    در جایی که از آنها استفاده می شد، آنها به گونه ای طراحی شده بودند که توسط تکنسین ها و برنامه نویسان آموزش دیده کار کنند. از آنجایی که ماشین ها گران بودند، زمان ماشین نیز گران بود - بنابراین، سرعت اجرای برنامه (سرعت شمارش) در وهله اول بود.

    با این حال، در طول دهه 1960، قیمت رایانه شروع به کاهش کرد به طوری که حتی شرکت‌های کوچک نیز می‌توانستند آن‌ها را بخرند. عملکرد آنها افزایش یافت و زمانی فرا رسید که سازماندهی کار مستقیم کارآمدتر کاربران با رایانه در حالت اشتراک زمانی امکان پذیر شد ( اشتراک وقت).

    تولد

    ارتفاع

    اگرچه این زبان قبلاً در چندین مینی رایانه استفاده می شد، اما گسترش واقعی آن با ظهور آن در میکرو رایانه Altair 8800 آغاز شد. بسیاری از زبان های برنامه نویسی آنقدر بزرگ بودند که نمی توانستند در حافظه کوچکی که کاربران چنین ماشین هایی می توانستند بپردازند، جای بگیرند. برای ماشین‌هایی با رسانه‌های آهسته مانند نوار کاغذی (بعدها کاست صوتی) و بدون ویرایشگر متن مناسب، زبان کوچکی مانند BASIC موهبتی بود.

    BASIC در برخی از مدل های ماشین حساب های قابل برنامه ریزی استفاده می شود. به عنوان مثال، در ماشین حساب MK-85 اتحاد جماهیر شوروی الکترونیک ساخته شده است.

    شرح

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

    نسخه های اولیه بیسیک (مانند BASICA، GW-BASIC) به طور قابل توجهی با گویش های مدرن متفاوت است و امروزه عملاً مورد استفاده قرار نمی گیرند.

    نسخه های اولیه

    ظاهر برنامه ها در نسخه های اولیه بیسیک تا حد زیادی با این واقعیت تعیین شد که برای یک محیط برنامه نویسی با ویرایشگر متن خطی در نظر گرفته شده بود. در چنین ویرایشگری، کاربر قادر به نمایش تمام متن روی صفحه (در پنجره)، حرکت در امتداد آن در هر جهت با استفاده از صفحه کلید و / یا ماوس نبود. در ویرایشگرهای خط، برای تغییر یک خط متن، کاربر باید دستور تغییر خط با یک عدد داده شده را بدهد، سپس متن جدید خط مشخص شده را وارد کند. برای درج یک خط جدید، باید دستور insert را بدهید که دوباره عدد را نشان می دهد. رشته های ورودی به صورت متوالی روی صفحه نمایش داده می شوند (صرف نظر از اعداد). برای مشاهده تغییرات انجام شده از دستور output text استفاده می شود که خطوط را به ترتیب صحیح (اعداد صعودی) خروجی می دهد.

    همه اینها در BASIC منعکس شده است. هر خط با یک عدد شروع می شود. هنگامی که وارد ویرایشگر شد، خط در کد منبع برنامه در موقعیت مربوط به شماره آن ظاهر شد. برای درج یک خط جدید، لازم بود یک خط با عددی اضافه شود که در محدوده بین اعداد دو خط دیگر باشد. اگر نیاز به درج یک خط جدید بین خطوط با اعداد مجاور بود، "گسترش" خطوط غیرممکن بود، باید دوباره این خطوط را با اعداد دیگر وارد کنید تا از شکاف در شماره گذاری اطمینان حاصل کنید (یا از دستور ویژه RENUM استفاده کنید، که تمام خطوط از قبل وارد شده را با یک مرحله ثابت شماره گذاری می کند و به طور همزمان همه دستورات پرش را تغییر می دهد). برای ساده کردن ویرایش آنلاین برنامه، شماره گذاری خطوط با مرحله 10 به یک تمرین تبدیل شده است - این امر تقریباً در همه موارد امکان درج خطوط جدید بدون تغییر اعداد وارد شده قبلی را فراهم می کند. به عنوان مثال، برای اضافه کردن یک خط سوم بین خطوط 20 و 30، باید خط شماره 25 را بنویسید. یک خط معمولی از یک برنامه BASIC به شکل زیر است:

    10 چاپ "سلام، جهان!"

    تغییر دستی شماره خطوط موجود ناامن بود، زیرا اعداد به عنوان برچسب برای عبارت GOTO عمل می کردند. پیش از این، BASIC فقط برچسب های عددی را برای این اپراتور مجاز می دانست و وجود یک عدد منحصر به فرد در هر خط، پرش بدون قید و شرط به هر یک از آنها را ممکن می کرد. برچسب های عددی و استفاده زیاد از GOTO ها در برنامه نویسی BASIC اجتناب ناپذیر بود، که به ساختار ضعیف کد کمک کرد و در پروژه های بزرگ، خود نویسندگان را گیج کرد. اصطلاح شوخی "برنامه نویسی پاستا" (کد اسپاگتی) حتی ابداع شد، زیرا منطق برنامه ای با انتقال مکرر GOTO شبیه یک بشقاب اسپاگتی است.

    پایان دهنده اپراتور انتهای خط بود. برای قرار دادن چندین عبارت در یک خط، باید بین آنها یک دونقطه قرار دهید (این در همه پیاده سازی های زبان مجاز نبود). نام متغیرها در اکثر گویش‌ها می‌تواند فقط از یک حرف تشکیل شده باشد که پس از آن یک رقم می‌تواند اضافه شود، که همچنین به بهبود درک کد کمکی نمی‌کند. برای ایجاد متغیر نوع رشته، باید علامت دلار ($) را بعد از نام قرار دهید. یک متغیر بدون این علامت یک متغیر عددی (میز شناور) بود. چندین اصلاح کننده دیگر مربوط به نوع عددی وجود دارد: علامت درصد (%) - یک نوع عدد صحیح، علامت تعجب (!) - دقت منظم، octothorp (#) - دقت دوگانه (برای داده های ممیز شناور، یعنی کسری) . اصلاح کننده های عددی در همه نسخه ها استفاده نشده است.

    عبارات مشابه بسیاری از زبان های برنامه نویسی رویه ای دیگر هستند، اما در اولین نسخه های BASIC مجموعه آنها نسبتا ضعیف بود.

    عملگر شرطی (IF..THEN) در ابتدا فقط یک شاخه داشت - شاخه ELSE در آن وجود نداشت و با استفاده از یک پرش بدون قید و شرط مدل شد. بنابراین، در برنامه زیر، یک عملیات ابتدایی انجام می شود - وارد کردن یک عدد و نمایش پیام "عدد منفی" یا "عدد مثبت یا صفر"، بسته به مقدار آن:

    10 INPUT I 20 IF I >= 0 سپس «عدد مثبت یا پوچ» را چاپ کنید: برو 40 30 چاپ «عدد منفی» 40 پایان

    یک عملگر پرش برچسب محاسبه شده ON..GOTO (به ارث رسیده از یک ساختار مشابه Fortran) وجود داشت - بعد از ON، یک عبارت عددی مشخص شد، و بعد از GOTO، لیستی از شماره خطوط مشخص شد. انتقال به خطی رخ داد که تعداد آن در لیست با مقدار عبارت مطابقت داشت. حلقه هایی نیز وجود دارد (یک حلقه با شمارنده FOR و یک حلقه با پیش شرط WHILE).

    استفاده از توابع تعریف شده توسط کاربر (بخش های کد، قابل استفاده مجدد) به دو صورت امکان پذیر بود: توابع تعریف شده و زیر روال.

    زیربرنامه ها مشابه عملکرد زبان هایی مانند C یا Pascal نبودند، زیرا آنها نامی نداشتند و نمی توانستند پارامترها را بپذیرند و / یا برگردانند. پارامترها و نتایج از طریق متغیرهای سراسری منتقل شدند (همه متغیرها در نسخه های اولیه بیسیک جهانی بودند). برنامه‌های فرعی معمولاً در انتهای ماژول نوشته می‌شدند، با شماره‌گذاری آشکاراً بیشتر از تعداد خطوط برنامه‌ریزی‌شده (به عنوان مثال، شماره‌گذاری یک بلوک زیربرنامه می‌تواند از ۵۰۰۰ شروع شود، حتی اگر برنامه چند صد خط داشته باشد). زیربرنامه ها هیچ سرصفحه یا نامی نداشتند و با هیچ کد دیگری تفاوتی نداشتند. زیربرنامه با استفاده از کلمه کلیدی GOSUB فراخوانی شد<метка>. این عملاً شبیه سازی GOTO است، به جز یک چیز: بازگشت به نقطه تماس به طور خودکار با رسیدن به کلمه کلیدی RETURN در زیربرنامه اتفاق می افتد. GOSUB، مانند GOTO، تنها به ساختار ضعیف کد کمک کرد، زیرا ردیابی اجرای برنامه‌ای که حاوی تعداد زیادی پرش و زیرروال بدون قید و شرط بود دشوار بود.

    ناتوانی در نامگذاری زیربرنامه ها (و انتقال کنترل بر روی آنها)، عدم امکان عبور پارامترها، عدم وجود متغیرهای محلی، استفاده از تنها برچسب های عددی در پروژه های بزرگ باعث سردرگمی در کد شده و اشکال زدایی را بسیار دشوار می کند.

    در برخی از گویش‌های BASIC، با استفاده از عبارت CHAIN، می‌توان یک فایل را با کد مستقیماً در حین اجرای برنامه بارگیری کرد (حالا بارگیری شد). این یکی از مفیدترین ویژگی های زبان بود، زیرا به شما امکان می داد یک پروژه بزرگ را به ماژول ها تقسیم کنید و آنها را به ترتیب نیاز فراخوانی کنید.

    انتقاد

    بیسیک به شدت مورد انتقاد قرار گرفته است زیرا سادگی و فقدان ساختار آن، شیوه ها و عادات برنامه نویسی بدی را تشویق می کند که ممکن است هنگام ایجاد برنامه های کوچک مناسب باشند، اما می توانند منجر به فروپاشی پروژه های بزرگ شوند.

    یکی از "کارت های تماس" ادسگر دایکسترا این بیانیه بود: دانش‌آموزانی که قبلاً بیسیک خوانده‌اند، آموزش برنامه‌نویسی خوب تقریباً غیرممکن است. به عنوان برنامه نویسان احتمالی، آنها دچار تخریب ذهنی غیرقابل برگشتی شده اند.».

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

    تولید کنندگان

    در زمان‌های مختلف، مترجم‌های BASIC توسط سازمان‌ها، شرکت‌ها، شرکت‌های مختلف تولید شدند:

    انتقالی رویه ای هدف - شی سیار

    Basic4ppc GLBasic NS Basic

    تاریخچه زبان های برنامه نویسی نمونه های زیادی از انقلاب های واقعی در برنامه نویسی را می شناسد. تاریخچه زبان برنامه نویسی بیسیک دقیقا همین است. از یک زبان کوچک و غیر معمول برای یادگیری، به یک استاندارد واقعی برای تقریبا تمام زبان های برنامه نویسی تبدیل شده است.

    زبان برنامه نویسی بیسیک توسط توماس کورتز و جان کنمی در سال 1964 با هدف آموزش اصول برنامه نویسی به دانش آموزان توسعه یافت. زبان ساده، قابل فهم و با رابط نسبتاً آسان بود. هدف توسعه دهندگان واضح بود: آنها به یک زبان برنامه نویسی ساده نیاز داشتند که در دسترس هم باشد. در اینجا مفاد اصلی است که "پدران" BASIC در نظر گرفته اند:

    1) سهولت استفاده؛

    2) شخصیت توده ای؛

    3) اطلاع رسانی

    4) زبان باید از توانایی ردیابی و رفع خطاها پشتیبانی کند.

    5) زبان نباید به دانش سخت افزاری جدی نیاز داشته باشد.

    6) زبان برنامه نویسی باید به رابط بین کاربر و سیستم عامل تبدیل شود.

    در نتیجه، در بسیاری از مؤسسات آموزشی دیگر مورد استفاده قرار گرفت. یازده سال بعد، با هجوم میلیون ها ریز رایانه جدید در جهان، زبان برنامه نویسی بیسیک توجه بیل گیتس و پل آلن، مردانی که مایکروسافت را ایجاد کردند، به خود جلب کرد. آنها بودند که با متحد کردن نیروها، نسخه BASIC را برای خود بهبود بخشیدند که حتی با 4 کیلوبایت رم (!) می توانست کار کند.

    پس از مدتی، این نسخه آنها بود که به یکی از پرکاربردترین و محبوب ترین زبان های برنامه نویسی تبدیل شد. در طول شکل گیری زبان برنامه نویسی بیسیک، آنها اغلب سعی در بستن داشتند، بسیاری می خواستند نقص هایی پیدا کنند و به لغو استفاده از این زبان دست یابند. با این حال، با ظهور بیسیک، این زبان به زبان برنامه نویسی اصلی تبدیل شد که دیگران توسط آن راهنمایی می شدند. شایان ذکر است که قبلاً GW-basic نامیده می شد. سپس توربو پایه از Borland و Quick Basic آمد. تمام نسخه هایی که بعداً توسعه یافتند لزوماً به گونه ای نوشته شده بودند که سازگاری با نسخه های قبلی را حفظ کنند. حتی آخرین نسخه این زبان برنامه نویسی با اولین نسخه با تنظیمات جزئی کار می کند.

    و سپس عصر مایکروسافت فرا رسید. اوایل دهه 90: سیستم عامل ویندوز تقریباً کل بازار نرم افزار را تسخیر کرد، همه از دیدن آن خوشحال بودند، همه به جز برنامه نویسان. زندگی آنها تبدیل به جهنم شده است. برای ایجاد معمولی‌ترین و ساده‌ترین پنجره‌ها، لازم بود دریایی از صفحات کد بنویسید، فونت‌های نوشتن را تغییر دهید و در نهایت دکمه‌های جدید را بکشید. اما باید اعتراف کرد که مزایای بسیار بیشتری نسبت به معایب داشت و در نهایت نسخه سوم این سیستم عامل به استاندارد جهانی PC تبدیل شده است.

    نیاز به اصلاح BASIC وجود داشت. به این ترتیب زبان برنامه نویسی بیسیک به مایکروسافت ویژوال بیسیک معروف شد. هنوز هیچ چیز در مورد برنامه های گسترده این شرکت شناخته نشده بود و توسعه دهندگان زبان برنامه نویسی جدید را عمدتاً بر روی افراد غیر حرفه ای متمرکز کردند. سیستم برنامه نویسی پیاده سازی شده در ویژوال بیسیک امکان دور شدن از ساختار سنگین پنجره ها و ایجاد برنامه هایی با سطح خوب را بدون داشتن بیشترین دانش فراهم کرد. آخرین میخ در تابوت، که عملاً انواع دیگر زبان های برنامه نویسی کاملاً خوب مانند فرترن و پاسکال را مدفون کرد، توسعه نوعی BASIC برای برنامه ها بود.

    در حال حاضر زبان برنامه نویسی بیسیک آنقدر محبوب است که تقریباً هر برنامه نویسی که به خود احترام می گذارد آن را می شناسد و استفاده می کند. می خواهم توجه داشته باشم که در برنامه هایی مانند Microsoft Office و Internet Explorer استفاده می شود. اما، شاید، یکی از مهم ترین زمینه های کاربردی، زبان برنامه نویسی بیسیک، هنگام توسعه و پیکربندی برنامه ها در محیط دات نت دریافت شده است. علاوه بر این، آخرین توسعه بیل گیتس، Microsoft C++، طیف وسیعی از امکانات را در اختیار کاربران قرار می دهد که همه اینها به لطف دو استاد از کالج دارتموث است.

    استفاده از بخش بسیار آسان است. در قسمت پیشنهادی کافیست کلمه مورد نظر را وارد کنید تا لیستی از معانی آن را در اختیار شما قرار دهیم. می خواهم توجه داشته باشم که سایت ما داده ها را از منابع مختلف - فرهنگ لغت های دایره المعارفی، توضیحی، واژه ساز ارائه می دهد. در اینجا می توانید با نمونه هایی از کاربرد کلمه ای که وارد کرده اید نیز آشنا شوید.

    معنی کلمه پایه

    BASIC در فرهنگ لغت متقاطع

    پایه ای

    فرهنگ لغت دایره المعارف، 1998

    پایه ای

    بیسیک (BASIC؛ از حروف اولیه کلمات انگلیسی Beginners - برای مبتدیان، همه منظوره - جهانی، نمادین - نمادین، دستورالعمل - آموزشی، کد - کد) یک زبان برنامه نویسی است که بر آموزش اصول برنامه نویسی متمرکز است. عمدتاً در برنامه نویسی روی رایانه های شخصی استفاده می شود.

    ویکیپدیا

    پایه ای

    پایه ای(از جانب پایه ای، مخفف - کد جهانی دستورالعمل های نمادین برای مبتدیان) - خانواده ای از زبان های برنامه نویسی سطح بالا.

    در سال 1964 توسط استادان کالج دارتموث توماس کورتز و جان کمنی توسعه یافت.

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

    BASIC (ابهام‌زدایی)

    پایه ای, پایه ای:

    • Basic English یک زبان مصنوعی بین المللی است که بر پایه انگلیسی است.
    • بیسیک یک زبان برنامه نویسی سطح بالا است.
    • بیسیک - کامپیوتر مصرفی شوروی در اوایل دهه 1990، شبیه سازی از طیف ZX.
    • BASIC Vilnius - پیاده سازی زبان برنامه نویسی BASIC برای رایانه های 16 بیتی با پردازنده های معماری PDP-11.

    نمونه هایی از استفاده از کلمه پایه در ادبیات.

    فضاهای موجود در رشته صرفاً برای راحتی برنامه نویس گنجانده شده است - پایه ایآنها را نادیده می گیرد.

    توجه داشته باشید که پایه ایمتغیر خود را دارد که موقعیت مکان نما را ذخیره می کند.

    اگر یک زیر روال اسمبلر اضافه کنید که موقعیت مکان نما را تغییر می دهد، پس پایه ایهنگامی که کنترل به آن بازگردانده می شود، موقعیت مکان نما جدید را نادیده می گیرد.

    توجه داشته باشید که پایه ایمعمولاً وقتی برنامه شروع به اجرا می کند مکان نما را خاموش می کند.

    از آنجا که پایه ایاجازه استفاده از اعداد باینری را نمی دهد، برای تعیین ویژگی ها نیاز به دستکاری است.

    چه زمانی پایه اییک کاراکتر را به شکل شانزدهم تبدیل می کند، سپس اگر اولین رقم صفر بود، فقط یک رقم را برمی گرداند، بنابراین صفر حذف شده باید بازیابی شود تا این روش به درستی کار کند.

    زبان های سطح بالا مانند کپک پایه ای، این مناطق را به صورت خودکار ایجاد کنید.

    پیش فرض پایه ایتعداد بافرها را 8 تنظیم می کند، اما می توانید این عدد را به هر چیزی بین 4 تا 15 تغییر دهید.

    پایه ای، کارهای مقدماتی را برای عملیات فایل به صورت خودکار انجام دهید.

    زبان های سطح بالا مانند پایه ای، این نمادها را به صورت خودکار درج کنید، در حالی که برنامه های اسمبلی باید پس از نوشتن هر متغیر در فایل مراقب درج این نمادها باشند.

    اگرچه در برخی موارد پایه ایفایل های بسته نشده را می بخشد، اما اینطور نیست.

    در فایل های دسترسی مستقیم پایه ایبا تمام متغیرها - از جمله عددی - به عنوان رشته رفتار می کند.

    با این حال، می‌توانید مدیریت خطا را به گونه‌ای تنظیم کنید که در صورت وقوع یک خطای مهلک پایه ایبه طور خودکار به رویه failover که ایجاد کردید پرید.

    هنگام انجام این روش پایه ایکنترل را از دنباله دستوراتی که برنامه را تشکیل می دهند به پایه اییعنی به مکانی که در آن دستورالعمل‌ها ذخیره می‌شوند که می‌توان آن‌ها را به دنباله‌ای از دستورالعمل‌های زبان اسمبلی رمزگشایی کرد.

    راه حل معمول برای این مشکل، قرار دادن رویه در آن آدرس های حافظه است پایه اینمی تواند دسترسی داشته باشد.

    و با راهنمایی آنها توسط تیمی از دانشجویان اجرا شد. با گذشت زمان، زمانی که گویش های دیگر ظاهر شدند، اجرای اصلی شروع به نامگذاری کرد دارتموث بیسیک.

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

    در طراحی این زبان از هشت اصل زیر استفاده شده است. زبان جدید این بود که:

    1. استفاده آسان باشد برای مبتدی ها;
    2. یک زبان برنامه نویسی باشد همه منظوره;
    3. فرصتی فراهم کند پسوندهای عملکردیدر دسترس برنامه نویسان با تجربه
    4. بودن در ارتباط بودن;
    5. ارائه پیام های خطای واضح؛
    6. به سرعت روی برنامه های کوچک کار کنید.
    7. نیازی به درک عملکرد سخت افزار ندارند.
    8. محافظت از کاربر در برابر سیستم عامل

    این زبان تا حدی بر اساس Fortran II و تا حدودی بر اساس الگول 60 بود، با افزوده‌هایی که برای کار اشتراک‌گذاری زمانی و بعداً پردازش متن و محاسبات ماتریسی مناسب می‌شد. BASIC در اصل بر روی پردازنده مرکزی GE-265 با پشتیبانی از چندین ترمینال پیاده سازی شد. برخلاف تصور رایج، در زمان پیدایش آن یک زبان کامپایل شده بود.

    ارتفاع

    اگرچه این زبان قبلاً در چندین مینی رایانه استفاده می شد، اما گسترش واقعی آن با ظهور آن در میکرو رایانه Altair 8800 آغاز شد. بسیاری از زبان های برنامه نویسی آنقدر بزرگ بودند که نمی توانستند در حافظه کوچکی که کاربران چنین ماشین هایی می توانستند بپردازند، جای بگیرند. برای ماشین‌هایی با رسانه‌های آهسته مانند نوار کاغذی (بعدها کاست صوتی) و بدون ویرایشگر متن مناسب، زبان کوچکی مانند BASIC موهبتی بود.

    بلوغ

    دوره بیشترین شکوفایی و توسعه بیسیک اصلی را می توان اواخر دهه 1970 - نیمه اول دهه 1980 در نظر گرفت. در این دوره، تقریباً همه رایانه‌های شخصی مفسر BASIC خود را داشتند که اغلب در ROM دوخته می‌شد، که در ساده‌ترین رایانه‌ها اغلب عملکردهای یک سیستم عامل را نیز انجام می‌داد. تقریباً تمام رایانه‌های قدرتمندتر دارای سیستم‌های بیسیک تعاملی بودند. مشخصاً تقریباً هیچ وجود نداشت کامپایلرها BASIC، اکثریت قریب به اتفاق اجراها ترکیبی استاندارد از یک ویرایشگر خط و یک مفسر بودند. نارضایتی از ابتدایی بودن BASIC اصلی منجر به تلاش‌هایی برای بهبود ابزارهای اساسی زبان شد که منجر به ظهور در برخی از پیاده‌سازی‌های عملگرهای انشعاب پیچیده، انواع اضافی حلقه‌ها، رویه‌های نام‌گذاری شده با پارامترها شد.

    چندین نسخه جدید از BASIC برای پلتفرم IBM PC ایجاد شد. مایکروسافت BASIC را برای MS-DOS/PC DOS، از جمله BASICA، GW-BASIC (اصلاحی از BASICA که به «سیستم‌افزار» IBM نیاز ندارد) و QuickBASIC فروخت. بورلند که در ابتدا با توربو پاسکال معروف خود وارد بازار شد، یک سیستم Turbo Basic 1.0 را بر اساس همان محیط نرم افزاری در سال 1985 منتشر کرد (جانشینان آن متعاقباً توسط شرکت دیگری به نام PowerBASIC فروخته شدند). برخی از زبان های دیگر از نحو معروف BASIC به عنوان مبنایی استفاده می کردند که یک سیستم کاملاً متفاوت بر اساس آن ساخته شد (به عنوان مثال، GRASS را ببینید). تمایل به افزایش عملکرد برنامه های بیسیک منجر به ظهور کامپایلرهای کامل (مانند توربو بیسیک فوق الذکر) و همچنین سیستم های "هیبرید" شد که در آنها با حفظ تفسیر به عنوان روش اصلی اجرای برنامه، کامپایل جزئی "در پرواز" به عنوان مثال، تلفیقی از چرخه های کوتاه اجرا شد. علاوه بر این، حداقل در پلت فرم IBM، شبه کامپایل برنامه های بیسیک گسترش یافته است، زمانی که کامپایلر برنامه بیسیک را به شبه کد (اغلب قابل برگشت) ترجمه می کند و یک برنامه اجرایی از ماژول شی مفسر و ماژول کدگذاری شده با متن برنامه تشکیل می دهد. . چنین برنامه ای مانند یک برنامه شی کامپایل شده معمولی اجرا و اجرا می شود، اگرچه اساساً تفسیر شده باقی می ماند.

    در اواسط دهه 1980، BASIC به زبان اصلی در مدل‌های پیچیده ماشین‌حساب‌های قابل برنامه‌ریزی تبدیل شد، که در این زمان به این قدرت رسیده بود که امکان استفاده از یک زبان تمام عیار سطح بالا را فراهم کند. این واقعیت که بسیاری از تولید کنندگان بدون گفتن کلمه ای، BASIC را به عنوان پایه HLL ماشین حساب ها انتخاب کردند، از همه چیز در مورد شیوع و محبوبیت این زبان در زمان مشخص شده صحبت می کند. بنابراین، BASIC در ماشین حساب الکترونیکی شوروی MK-85 و تمام مدل های بعدی آن ساخته شد. استفاده از BASIC به عنوان HLL اصلی ماشین حساب های قابل برنامه ریزی تا به امروز ادامه دارد. در حال حاضر، BASIC "ماشین حساب" است که بیشتر شبیه به نسخه اصلی دهه 1960-1980 است، برای مثال، پیاده سازی برای ماشین حساب های CITIZEN فقط شامل 14 کلمه کلیدی (بدون احتساب توابع ریاضی) است و فقط نام متغیرهای تک کاراکتری را مجاز می کند. .

    در پایان دهه 1980، رایانه‌های شخصی بسیار قدرتمندتر شدند و ویژگی‌هایی (مانند رابط کاربری گرافیکی) ارائه کردند که دیگر برای استفاده در بیسیک راحت نبود. علاوه بر این، ظاهر شدن بر روی رایانه های کلاس "آموزشی" و "خانه" مترجمان ارزان قیمت زبان های صنعتی (عمدتا پاسکال و C)، همراه با محیط های برنامه نویسی مناسب و کتابخانه های مفید (به عنوان مثال، Borland Pascal) با کتابخانه Turbo Vision) رقابت قوی برای BASIC ایجاد کرد. علیرغم این واقعیت که تعداد زیادی از نسخه های آن هنوز استفاده و فروخته می شد، BASIC شروع به از دست دادن زمین کرد. در همان زمان، یک تغییر سریع در ظاهر آن دسته از سیستم های BASIC که همچنان فعال بودند، آغاز شد. یک "راندگی" تدریجی به سمت زبان های ساختاری شناخته شده وجود داشت: واژگان و مجموعه سازه های زبان گسترش یافت، شاخه های پیچیده ظاهر شد، زیر روال ها و توابع نامگذاری شد، نام های متغیر طولانی. علاوه بر این، افزایش قابلیت‌های رایانه‌های شخصی امکان کنار گذاشتن ویژگی‌های مشخصه BASIC را فراهم کرد، که برای اطمینان از کار تعاملی مؤثر در پایانه متنی معرفی شد: علائم عددی برای هر خط و ویرایش خط به خط.

    شرح

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

    نسخه های اولیه بیسیک (مانند BASICA، GW-BASIC) به طور قابل توجهی با گویش های مدرن متفاوت است و امروزه به ندرت استفاده می شود.

    نسخه های اولیه

    ظاهر برنامه ها در نسخه های اولیه بیسیک تا حد زیادی با این واقعیت تعیین شد که برای یک محیط برنامه نویسی با ویرایشگر متن خطی در نظر گرفته شده بود. در چنین ویرایشگری، کاربر قادر به نمایش تمام متن روی صفحه (در پنجره)، حرکت در امتداد آن در هر جهت با استفاده از صفحه کلید و / یا ماوس نبود. در ویرایشگرهای خط، برای تغییر یک خط متن، کاربر باید دستور تغییر خط با یک عدد داده شده را بدهد، سپس متن جدید خط مشخص شده را وارد کند. برای درج یک خط جدید، باید دستور insert را بدهید که دوباره عدد را نشان می دهد. رشته های ورودی به صورت متوالی روی صفحه نمایش داده می شوند (صرف نظر از اعداد). برای مشاهده تغییرات انجام شده از دستور output text استفاده می شود که خطوط را به ترتیب صحیح (اعداد صعودی) خروجی می دهد.

    همه اینها در BASIC منعکس شده است. هر خط با یک عدد شروع می شود. هنگامی که وارد ویرایشگر شد، خط در کد منبع برنامه در موقعیت مربوط به شماره آن ظاهر شد. برای درج یک خط جدید، لازم بود یک خط با عددی اضافه شود که در محدوده بین اعداد دو خط دیگر باشد. اگر نیاز به درج یک خط جدید بین خطوط با اعداد مجاور بود، "گسترش" خطوط غیرممکن بود، باید دوباره این خطوط را با اعداد دیگر وارد کنید تا از شکاف در شماره گذاری اطمینان حاصل کنید (یا از دستور ویژه RENUM استفاده کنید، که تمام خطوط از قبل وارد شده را با یک مرحله ثابت شماره گذاری می کند و به طور همزمان همه دستورات پرش را تغییر می دهد). برای ساده کردن ویرایش آنلاین برنامه، شماره گذاری خطوط با مرحله 10 به یک تمرین تبدیل شده است - این امر تقریباً در همه موارد امکان درج خطوط جدید بدون تغییر اعداد وارد شده قبلی را فراهم می کند. به عنوان مثال، برای اضافه کردن یک خط سوم بین خطوط 20 و 30، باید خط شماره 25 را بنویسید. یک خط معمولی از یک برنامه BASIC به شکل زیر است:

    10 چاپ "سلام، جهان!"

    تغییر دستی شماره خطوط موجود ناامن بود، زیرا اعداد به عنوان برچسب برای عبارت GOTO عمل می کردند. پیش از این، BASIC فقط برچسب های عددی را برای این اپراتور مجاز می دانست و وجود یک عدد منحصر به فرد در هر خط، پرش بدون قید و شرط به هر یک از آنها را ممکن می کرد. برچسب های عددی و استفاده زیاد از GOTO ها در برنامه نویسی BASIC اجتناب ناپذیر بود، که به ساختار ضعیف کد کمک کرد و در پروژه های بزرگ، خود نویسندگان را گیج کرد. اصطلاح شوخی "برنامه نویسی پاستا" (کد اسپاگتی) حتی ابداع شد، زیرا منطق برنامه ای با انتقال مکرر GOTO شبیه یک بشقاب اسپاگتی است.

    پایان دهنده اپراتور انتهای خط بود. برای قرار دادن چندین عبارت در یک خط، باید بین آنها یک دونقطه قرار دهید (این در همه پیاده سازی های زبان مجاز نبود). نام متغیرها در اکثر گویش‌ها می‌تواند فقط از یک حرف تشکیل شده باشد که پس از آن یک رقم می‌تواند اضافه شود، که همچنین به بهبود درک کد کمکی نمی‌کند. برای ایجاد متغیر نوع رشته، باید علامت دلار ($) را بعد از نام قرار دهید. یک متغیر بدون این علامت یک متغیر عددی (میز شناور) بود. چندین اصلاح کننده دیگر مربوط به نوع عددی وجود داشت: علامت درصد (%) - یک نوع عدد صحیح، علامت تعجب (!) - دقت معمولی، octothorp (#) - دقت دوگانه (برای داده های ممیز شناور، یعنی کسری اعشاری). ). در برخی از نسخه ها، ممکن است اصلاح کننده های عددی اعمال نشده باشند یا همه آنها اعمال نشده باشند. در اکثریت قریب به اتفاق برنامه ها، فقط از نوع عددی پایه استفاده شده است.

    عبارات مشابه بسیاری از زبان های برنامه نویسی رویه ای دیگر هستند، اما در اولین نسخه های BASIC مجموعه آنها نسبتا ضعیف بود. در نسخه‌های اولیه، تعداد کلمات کلیدی حتی به 20 هم نمی‌رسید.

    • LIST - خروجی متن برنامه با ترتیب صحیح خطوط به مانیتور. بسته به پیاده سازی، فرمان از پارامترها پشتیبانی می کند - محدوده خطوطی که می خواهید خروجی بگیرید. گاهی اوقات نوع LLIST پشتیبانی می شد - خروجی به دستگاه چاپ.
    • RUN - برنامه فعلی را از اولین عبارت خط با کوچکترین عدد اجرا کنید. یک پارامتر می تواند پشتیبانی شود - شماره خطی که باید از آن اجرا شروع شود.
    • REM - نظر دهید. متنی که بعد از کلمه کلیدی و قبل از پایان خط قرار داشت، تاثیری در اجرای برنامه نداشت. بسیاری از مترجمان نیز از نقل قول واحد به عنوان شروع نظر پشتیبانی کردند.
    • INPUT "Prompt: ", Variable - متن "Prompt:" را نمایش دهید و منتظر بمانید تا کاربر مقداری را وارد کند و Enter را فشار دهید. پس از آن، مقدار وارد شده در متغیر نوشته می شود. در ساده‌ترین پیاده‌سازی‌ها، اعلان INPUT پشتیبانی نمی‌شد و باید در یک بیانیه PRINT جداگانه صادر می‌شد (به زیر مراجعه کنید).
    • چاپ "متن"؛ متغیر؛ متغیر؛ "متن" - خروجی به مانیتور به ترتیب اشیاء فهرست شده (متن و مقادیر متغیر). بسته به اجرا، جداکننده ها متفاوت درک می شدند: در برخی موارد، جداکننده منجر به خروجی حداقل یک فضا می شد، در برخی دیگر، مقادیر در یک ردیف نمایش داده می شدند و جداکننده ها باید به صورت دستی اضافه می شدند. حائل، جداکننده "؛" همچنین عملکرد سرکوب ترجمه به خط بعدی را انجام داد.
    • CLS - پاک کردن صفحه ترمینال. بسته به اجرا، طراحی و نحوه عملکرد ترمینال، مکان‌نمای متن به گوشه سمت چپ بالا یا پایین سمت چپ منتقل می‌شود.
    • LET - تکلیف (قالب "LET Variable = Value"). در اکثر نسخه ها، اپراتور LET پشتیبانی می شد، اما اختیاری بود - انتساب به متغیرها بدون LET نوشته می شد.
    • DIM - شرح آرایه. برخلاف متغیرهای معمولی، آرایه ها نیاز به توضیح دارند. حداکثر تعداد ابعاد آرایه تنها با پیاده سازی تعیین شد
    • DATA - مجموعه ای از داده ها که مستقیماً در متن برنامه قرار می گیرند (مشابه با یک ثابت یا یک آرایه ثابت).
    • READ - فرمان خواندن از مجموعه DATA.
    • GOTO Lbl - دستور پرش بدون قید و شرط برای برچسب زدن Lbl.
    • ON… GOTO - فرمان انتقال محاسبه شده - بعد از ON باید یک عبارت یا متغیر محاسبه شده وجود داشته باشد، و بعد از GOTO - مجموعه ای از برچسب ها که با کاما از هم جدا شده اند. مقدار عبارت نشان دهنده تعداد برچسبی است که باید به آن بروید.
    • اگر ... سپس ... - اپراتور شعبه معمولی. بعد از IF یک شرط منطقی قرار می گیرد و بعد از THEN یک دستور که در صورت درست بودن این شرط باید اجرا شود. برای کوتاه کردن رکورد، بسیاری از پیاده‌سازی‌ها از این قرارداد پشتیبانی می‌کنند - اگر THEN با یک عدد دنبال شود، این برچسبی است که باید به آن پرش کنید، یعنی شکل "IF ... THEN 150" معادل "IF ... THEN" است. GOTO 150" فرم های "IF...GOTO..." نیز می توانند پشتیبانی شوند.
    • FOR LoopVariable=StartValue TO EndValue Step Step - هدر را با مرحله حلقه کنید. حلقه ای را آغاز می کند که در آن متغیر به صورت متوالی از یک سری مقادیر از StartValue به EndValue در مرحله عبور می کند. بدنه حلقه با عنوان و کلمه کلیدی NEXT مشخص می شود. قسمت STEP را می توان حذف کرد - در این مورد گام برابر با یک بود. هنگامی که LoopVariable از محدوده های مشخص شده خارج می شود، به عبارت NEXT مناسب می پرد.
    • NEXT - تکمیل بدنه حلقه با یک مرحله. این بیانیه نشان می دهد که لازم است به سر حلقه FOR در حال اجرای فعلی پرش کنید و به کار ادامه دهید. در پیاده‌سازی‌های پیشرفته‌تر، NEXT می‌تواند شامل فهرستی از متغیرهای حلقه جدا شده با کاما باشد - این بدان معناست که در یک نقطه معین از برنامه، بدنه نه یک، بلکه چندین حلقه به پایان می‌رسد. استفاده از NEXT با یک متغیر همچنین در برابر نقض منطق برنامه تضمین می کند، زیرا اگر هنگام اجرای این دستور مشخص شود که حلقه روی متغیری که نام آن مشخص شده است فعال نیست، باعث خطای زمان اجرا می شود.
    • WHILE شرط - سرصفحه چرخه با پیش شرط. اگر شرط نادرست بود، حلقه به پایان می رسید. در این مورد، انتقالی فراتر از عبارت WEND مربوط به هدر وجود دارد.
    • WEND - انتهای بدنه حلقه WHILE. مشابه NEXT اما برای یک حلقه با پیش شرط.
    • برچسب GOSUB - پرش به زیربرنامه که با برچسب شروع می شود. بازگشت زمانی اتفاق می افتد که عبارت RETURN به دست می آید. فراخوانی رویه بازگشتی به طور کلی ممنوع بود و منجر به خطای زمان اجرا شد.
    • RETURN - عبارت بازگشتی از یک برنامه فرعی. یک پرش بدون قید و شرط به دستور GOSUB انجام می شود که به زیر روال می پرد.
    • END - پایان اجرای برنامه. سیستم وارد مفسر می شود و از کاربر خواسته می شود دستوراتی را وارد کند.
    • CHAIN ​​- بارگیری طیف وسیعی از خطوط برنامه از رسانه های خارجی.
    • OPEN - باز کردن یک فایل داده در رسانه خارجی.
    • CLOSE - بستن فایل داده در رسانه خارجی.
    • GET - خواندن متوالی مقادیر متغیرهای مشخص شده از فایل، انتقال نشانگر فایل به سمت آخرین کاراکتر خوانده شده.
    • PUT - نوشتن متوالی مقادیر متغیرهای مشخص شده در یک فایل، انتقال نشانگر فایل به فراتر از آخرین کاراکتر نوشته شده.
    • DELETE - دستور تعاملی - خط را با شماره مشخص شده حذف کنید.
    • SAVE - دستور حالت تعاملی - ذخیره برنامه فعلی در یک فایل در رسانه خارجی.
    • LOAD - فرمان حالت تعاملی - بارگذاری یک برنامه در حافظه از یک فایل در رسانه خارجی. به عنوان یک قاعده، به طور پیش فرض، منجر به از بین رفتن برنامه و داده های بارگیری شده قبلی شد.
    • RENUM - دستور حالت تعاملی - شماره گذاری مجدد همه یا یک محدوده مشخص از خطوط برنامه که از یک عدد معین با یک مرحله مشخص شروع می شود. به طور پیش فرض - تمام خطوط برنامه با یک مرحله 10 شماره گذاری می شوند.

    عملگر شرطی (IF..THEN) در ابتدا فقط یک شاخه داشت - شاخه ELSE در آن وجود نداشت و با استفاده از یک پرش بدون قید و شرط مدل شد. بنابراین، در برنامه زیر، یک عملیات ابتدایی انجام می شود - وارد کردن یک عدد و نمایش پیام "عدد منفی" یا "عدد مثبت یا صفر"، بسته به مقدار آن:

    10 INPUT I 20 IF I >= 0 سپس «عدد مثبت یا پوچ» را چاپ کنید: برو 40 30 چاپ «عدد منفی» 40 پایان

    یک عملگر پرش برچسب محاسبه شده ON..GOTO (به ارث رسیده از یک ساختار مشابه Fortran) وجود داشت - بعد از ON، یک عبارت عددی مشخص شد، و بعد از GOTO، لیستی از شماره خطوط مشخص شد. انتقال به خطی رخ داد که تعداد آن در لیست با مقدار عبارت مطابقت داشت. حلقه هایی نیز وجود دارد (یک حلقه با شمارنده FOR و یک حلقه با پیش شرط WHILE).

    استفاده از توابع تعریف شده توسط کاربر (بخش های کد، قابل استفاده مجدد) به دو صورت امکان پذیر بود: توابع تعریف شده و زیر روال.

    زیربرنامه ها مشابه عملکرد زبان هایی مانند C یا Pascal نبودند، زیرا آنها نامی نداشتند و نمی توانستند پارامترها را بپذیرند و / یا برگردانند. پارامترها و نتایج از طریق متغیرهای سراسری منتقل شدند (همه متغیرها در نسخه های اولیه بیسیک جهانی بودند). برنامه‌های فرعی معمولاً در انتهای ماژول نوشته می‌شدند، با شماره‌گذاری آشکاراً بیشتر از تعداد خطوط برنامه‌ریزی‌شده (به عنوان مثال، شماره‌گذاری یک بلوک زیربرنامه می‌تواند از ۵۰۰۰ شروع شود، حتی اگر برنامه چند صد خط داشته باشد). زیربرنامه ها هیچ سرصفحه یا نامی نداشتند و با هیچ کد دیگری تفاوتی نداشتند. زیربرنامه با استفاده از کلمه کلیدی GOSUB فراخوانی شد<метка>. این عملاً شبیه سازی GOTO است، به جز یک چیز: بازگشت به نقطه تماس به طور خودکار با رسیدن به کلمه کلیدی RETURN در زیربرنامه اتفاق می افتد. GOSUB، مانند GOTO، تنها به ساختار ضعیف کد کمک کرد، زیرا ردیابی اجرای برنامه‌ای که حاوی تعداد زیادی پرش و زیرروال بدون قید و شرط بود دشوار بود. بازگشت مجاز نبود.

    ناتوانی در نامگذاری زیربرنامه ها (و انتقال کنترل بر روی آنها)، عدم امکان عبور پارامترها، عدم وجود متغیرهای محلی، استفاده از تنها برچسب های عددی در پروژه های بزرگ باعث سردرگمی در کد شده و اشکال زدایی را بسیار دشوار می کند.

    در برخی از گویش‌های BASIC، با استفاده از عبارت CHAIN، می‌توان یک فایل را با کد مستقیماً در حین اجرای برنامه بارگیری کرد (حالا بارگیری شد). این یکی از مفیدترین ویژگی های زبان بود، زیرا به شما امکان می داد یک پروژه بزرگ را به ماژول ها تقسیم کنید و آنها را به ترتیب نیاز فراخوانی کنید.

    انتقاد

    در دوران اوج خود (1970-1980)، بیسیک به شدت مورد انتقاد قرار گرفت. علاوه بر بیان کاستی‌های آشکار زبان مرتبط با فقر نحوی نسخه‌های اولیه و فقدان بسیاری از سازه‌ها و مکانیسم‌های شناخته شده و راحت، بیسیک به دلیل این واقعیت که سادگی و بی‌ساختاری آن باعث تشویق استفاده از شیوه‌های توسعه باطل می‌شود مورد انتقاد قرار گرفته است. به توسعه عادات برنامه نویسی خطرناک کمک می کند که گاهی اوقات می تواند برای ایجاد سریع برنامه های کوچک برای نیازهای فعلی مناسب باشد، اما می تواند منجر به فروپاشی پروژه های بزرگ شود.

    آموزش برنامه نویسی اولیه مبتنی بر BASIC در همه جا مورد انتقاد شدید قرار گرفته است. یکی از "کارت های تماس" ادسگر دایکسترا این بیانیه بود:

    دانش‌آموزانی که قبلاً بیسیک خوانده‌اند، آموزش برنامه‌نویسی خوب تقریباً غیرممکن است. آنها به عنوان برنامه نویسان آینده از نظر ذهنی فلج هستند و امیدی به بهبودی ندارند.

    متن اصلی(انگلیسی)

    آموزش برنامه‌نویسی خوب به دانش‌آموزانی که قبلاً با بیسیک آشنا شده‌اند عملاً غیرممکن است: آنها به عنوان برنامه‌نویسان بالقوه بیش از امید به بازسازی، از نظر ذهنی مثله شده‌اند.

    در پاسخ به انتقاد، طرفداران BASIC خاطرنشان می کنند که منتقدان جنبه های منفی را به زبان نسبت می دهند که باید به استفاده نادرست از آن نسبت داده شود. معایب BASIC (اگر گویش های اولیه را در نظر داشته باشیم) هنگام تلاش برای توسعه حرفه ای برنامه های پیچیده و بزرگ روی آن و هنگام استفاده از آن به عنوان زبان پایه برای آموزش برنامه نویسان ظاهر می شود، اما این زبان برای هیچ یک از این برنامه ها در نظر گرفته نشده است. وظیفه اصلی آن تامین دانش آموزان بود غیر برنامه نویسانفرصت بعد از کمترینیاد بگیرید که خودتان بنویسید تک یاخته هابرنامه ها برای نیازهای خودتا حواس متخصصان را برای این کار پرت نکند. زبان برای این کار کاملاً مناسب است.

    اگر در مورد گویش های مدرن و پیاده سازی های بیسیک صحبت کنیم، آن قدر از شکل اصلی زبان دور شده اند که به سختی می توان همه موارد فوق را مرتبط با آنها دانست. گویش های مدرن بیسیک زبان های نسبتاً ساختاری هستند و از نظر قابلیت با زبان هایی مانند C، Pascal و غیره قابل مقایسه هستند.

    تولید کنندگان

    در زمان‌های مختلف، مترجم‌های BASIC توسط سازمان‌ها، شرکت‌ها، شرکت‌های مختلف تولید شدند:

    شوروی:

    • دانشگاه ویلنیوس - ویلنیوس
    • مرکز محاسبات شعبه سیبری آکادمی علوم اتحاد جماهیر شوروی - نووسیبیرسک
    • دانشگاه ایالتی نیژنی نووگورود به نام N. I. Lobachevsky - Nizhny Novgorod

    پیاده سازی ها

    • ویژوال بیسیک (VBA، VBS، دات نت)
    • Rapid-Q اساسی

    نظر خود را در مورد مقاله "پایه" بنویسید

    یادداشت

    ادبیات

    • دیاکونوف وی.، مونرمن وی.، سامویلوا تی.، یملچنکوف یئه.راهنمای انقلابی QBASIC. - Birmingham: Wrox Press Ltd, 1996. - 578 p.
    • دیاکونوف V.P.کتاب مرجع الگوریتم ها و برنامه ها در بیسیک برای کامپیوترهای شخصی. - M .: Nauka, Fizmatlit, 1987. - 240 p.
    • دیاکونوف V.P.استفاده از کامپیوترهای شخصی و برنامه نویسی در بیسیک. - م .: رادیو و ارتباطات، 1989. - 288 ص.
    • دیاکونوف V.P.ماشین حساب های خارجی مدرن - M .: SOLON-R، 2002. - 400 p.
    استانداردها
    • ANSI X3.60-1978 "FOR MINIMAL Basic"
    • ISO/IEC 6373:1984 "پردازش داده ها - زبان های برنامه نویسی - MINIMAL Basic"
    • ANSI X3.113-1987 "PROGRAMMING LANGUAGES FULL Basic"
    • زبان برنامه نویسی GOST 27787-88 BASIC (شامل ISO 6373:1984)
    • ANSI X3.113 INTERPRETATIONS-1992 "بولتن اطلاعات فنی پایه # 1 تفسیرهای ANSI 03.113-1987"

    پیوندها

    • آندری کولسوف. نسخه نویسنده. با ویرایش ادبی جزئی در مجله "علم و زندگی" شماره 10/2000، ص. 18-20.
    • پیش چاپ کالج دارتموث، 1 اکتبر 1964.
    • توماس ای. کورتز. ، 1977.
    • (انگلیسی)

    گزیده ای که از BASIC توصیف می کند

    برای ناتاشا این صدای ملایم و صمیمانه خیلی عجیب به نظر می رسید.
    - دوست من حرف نزنیم، همه چیز را به او می گویم. اما من از شما یک چیز می خواهم - من را دوست خود بدانید و اگر به کمک و نصیحت نیاز دارید ، فقط باید روح خود را به کسی بریزید - نه اکنون ، اما وقتی در روح شما روشن شود - من را به خاطر بسپارید. دستش را گرفت و بوسید. پیر خجالت کشید: "من خوشحال خواهم شد اگر بتوانم ..."
    با من اینطوری حرف نزن، من ارزشش را ندارم! ناتاشا جیغ زد و خواست از اتاق خارج شود، اما پیر او را با دست گرفت. او می دانست که به چیز دیگری نیاز دارد تا به او بگوید. اما وقتی این را گفت از حرف خودش تعجب کرد.
    او به او گفت: "ایست کن، تمام زندگیت پیش روی توست."
    - برای من؟ نه! همه چیز برای من از بین رفته است.» او با شرم و حقارت گفت.
    - همه چیز گم شده؟ او تکرار کرد. - اگر من نبودم، بلکه زیباترین، باهوش ترین و بهترین آدم دنیا بودم و آزاد بودم، همین لحظه روی زانو از تو دست و محبت می خواستم.
    ناتاشا برای اولین بار پس از چندین روز با اشک سپاسگزاری و مهربانی گریه کرد و با نگاه کردن به پیر اتاق را ترک کرد.
    پیر نیز پس از او تقریباً به جلوی اتاق دوید، در حالی که اشک های احساس و شادی را که گلویش را خرد می کردند، نگه داشت، بدون افتادن در آستین یک کت خز پوشید و وارد سورتمه شد.
    "حالا کجا میری؟" کاوشگر پرسید.
    "جایی که؟ پیر از خود پرسید. الان کجا میتونی بری؟ واقعا در باشگاه یا مهمان؟ همه مردم در مقایسه با احساس لطافت و عشقی که او تجربه کرد، بسیار رقت انگیز، بسیار فقیر به نظر می رسیدند. در مقایسه با آن نگاه نرم و سپاسگزاری که آخرین بار با اشک به او نگاه کرد.
    پیر، با وجود 10 درجه یخبندان، یک کت پوست خرس را روی سینه پهن و شادمانه‌اش باز کرد.
    هوا سرد و صاف بود. بر فراز خیابان های کثیف و نیمه تاریک، بالای سقف های سیاه، آسمان تاریک و پر ستاره ای قرار داشت. پیر، فقط به آسمان نگاه می کرد، در مقایسه با ارتفاعی که روحش در آن بود، پستی توهین آمیز همه چیز زمینی را احساس نمی کرد. در ورودی میدان آربات، فضای عظیمی از آسمان تاریک پرستاره به چشمان پیر گشوده شد. تقریباً در وسط این آسمان بر فراز بلوار پریچیستنسکی، احاطه شده، از همه طرف پر از ستارگان، اما با همه تفاوت ها در نزدیکی به زمین، نور سفید و دمی بلند، یک دنباله دار بزرگ درخشان در سال 1812 ایستاده بود، همان. دنباله‌داری که همانطور که می‌گفتند همه نوع وحشت و پایان جهان را پیش‌بینی می‌کرد. اما در پیر، این ستاره درخشان با دم دراز درخشان هیچ احساس وحشتناکی را برانگیخت. در مقابل، پیر با خوشحالی، با چشمانی خیس از اشک، به این ستاره درخشان نگاه کرد، که گویی فضاهای بی‌اندازه را در امتداد یک خط سهموی با سرعتی غیرقابل توصیف پرواز کرده بود، ناگهان مانند تیری که زمین را سوراخ می‌کند، در اینجا به یک مکان کوبید. انتخاب شد، در آسمان سیاه، و ایستاد، دم خود را به شدت بالا آورد، درخشید و با نور سفیدش در میان ستاره های چشمک زن بیشمار دیگر بازی کرد. به نظر پیر به نظر می رسید که این ستاره کاملاً مطابق با آنچه در شکوفایی او به سوی زندگی جدید بود ، روح را نرم و تشویق می کرد.

    از اواخر سال 1811، افزایش تسلیحات و تمرکز نیروها در اروپای غربی آغاز شد و در سال 1812 این نیروها - میلیون ها نفر (از جمله کسانی که ارتش را حمل می کردند و تغذیه می کردند) از غرب به شرق به مرزهای روسیه نقل مکان کردند. دقیقاً به همان ترتیب از سال 1811 ، نیروهای روسیه با هم جمع شدند. در 12 ژوئن، نیروهای اروپای غربی از مرزهای روسیه عبور کردند و جنگ آغاز شد، یعنی رویدادی خلاف عقل بشر و تمام طبیعت بشری رخ داد. میلیون ها نفر علیه یکدیگر چنین جنایات بی شماری، فریبکاری، خیانت، دزدی، جعل و انتشار اسکناس های جعلی، دزدی، آتش سوزی و قتل، مرتکب شده اند که قرن ها در تاریخ تمام دادگاه های جهان جمع آوری نخواهد شد و در این دوره زمانی به افرادی که مرتکب آنها شده بودند به عنوان جنایت نگاه نمی شد.
    چه چیزی باعث این اتفاق خارق العاده شد؟ دلایل آن چه بود؟ مورخان با قطعیت ساده لوحانه می گویند که علت این واقعه توهین به دوک اولدنبورگ، عدم رعایت نظام قاره ای، قدرت طلبی ناپلئون، قاطعیت اسکندر، اشتباهات دیپلمات ها و غیره بوده است.
    بنابراین، فقط لازم بود مترنیخ، رومیانتسف یا تالیراند، بین خروجی و پذیرایی، سخت تلاش کنند و کاغذی هوشمندانه‌تر بنویسند یا به اسکندر به ناپلئون بنویسند: Monsieur mon frere, je consens a rendre le duche au duc. "اولدنبورگ، [برادر ارباب من، موافقم که دوک نشین را به دوک اولدنبورگ برگردانم.] - و هیچ جنگی در کار نخواهد بود.
    واضح است که برای معاصران چنین بود. واضح است که به نظر ناپلئون این بود که دسیسه های انگلستان عامل جنگ بود (همانطور که او این را در جزیره سنت هلنا گفت). این قابل درک است که به نظر اعضای اتاق انگلیس، قدرت طلبی ناپلئون علت جنگ بوده است. به نظر شاهزاده اولدنبورگ علت جنگ خشونتی است که علیه او انجام شده است. به نظر بازرگانان این بود که علت جنگ سیستم قاره‌ای است که اروپا را ویران می‌کرد، به نظر سربازان و ژنرال‌های قدیمی دلیل اصلی نیاز به سر کار گذاشتن آنها بود. به مشروعه خواهان آن زمان که لازم بود les bons principes [اصول خوب] بازگردانده شوند، و به دیپلمات های آن زمان که همه چیز اتفاق افتاد زیرا اتحاد روسیه با اتریش در سال 1809 هوشمندانه از ناپلئون پنهان نبود و یک یادداشت امضا شد. به طرز ناخوشایندی برای شماره 178 نوشته شده است. واضح است که این دلایل و دلایل بی‌شماری که تعداد آنها به اختلاف دیدگاه‌های بی‌شمار بستگی دارد، برای معاصران به نظر می‌رسید. اما برای ما فرزندان که با همه حجم آن به عظمت واقعه رخ داده می اندیشیم و به معنای ساده و وحشتناک آن می پردازیم، این دلایل ناکافی به نظر می رسند. برای ما قابل درک نیست که میلیون ها مسیحی یکدیگر را کشتند و شکنجه کردند، زیرا ناپلئون تشنه قدرت بود، اسکندر محکم بود، سیاست انگلیس حیله گر بود و دوک اولدنبورگ آزرده بود. نمی توان درک کرد که این شرایط چه ارتباطی با واقعیت قتل و خشونت دارد. چرا به دلیل آزرده شدن دوک هزاران نفر از آن سوی اروپا مردم استان اسمولنسک و مسکو را کشتند و ویران کردند و به دست آنها کشته شدند.
    برای ما، نوادگانی که مورخ نیستیم، که تحت تأثیر فرآیند تحقیق قرار نمی‌گیریم و از این رو با عقل سلیم نامعلومی به این رویداد می‌اندیشیم، علل آن به تعداد بی‌شماری ظاهر می‌شود. هر چه بیشتر در جست‌وجوی علت‌ها غوطه‌ور شویم، آن‌ها بیشتر بر ما آشکار می‌شوند و هر دلیل واحد یا یک سلسله دلایل به همان اندازه به خودی خود عادلانه و به همان اندازه در بی‌اهمییتش در مقایسه با عظمت واقعه نادرست به نظر می‌رسد. و به همان اندازه نادرست در بی اعتباری آن (بدون مشارکت همه علل تصادفی دیگر) برای ایجاد یک رویداد انجام شده است. همان دلیلی که ناپلئون از عقب نشینی نیروهایش از ویستولا و پس دادن دوک نشین اولدنبورگ امتناع کرد، به نظر ما تمایل یا عدم تمایل اولین سرجوخه فرانسوی برای ورود به خدمت ثانویه است: زیرا اگر او نمی خواست به خدمت برود و دیگر نمی‌خواهد، و سومین، و یک هزارمین سرجوخه و سرباز، خیلی کمتر از مردم در ارتش ناپلئون حضور داشته باشند و جنگی در کار نباشد.
    اگر ناپلئون از تقاضای عقب نشینی در آن سوی ویستولا آزرده نمی شد و به نیروها دستور پیشروی نمی داد، جنگی رخ نمی داد. اما اگر همه گروهبان ها نمی خواستند وارد خدمت ثانویه شوند، جنگی نیز وجود نداشت. همچنین اگر دسیسه های انگلستان نبود، و شاهزاده اولدنبورگ و احساس توهین در اسکندر وجود نداشت، و هیچ قدرت استبدادی در روسیه وجود نداشت، و انقلاب فرانسه و متعاقب آن وجود نداشت، جنگی وجود نداشت. دیکتاتوری و امپراتوری، و همه چیزهایی که انقلاب فرانسه را به وجود آورد، و غیره. بدون یکی از این دلایل هیچ اتفاقی نمی افتاد. بنابراین، همه این علل - میلیاردها دلیل - برای تولید آنچه بود، همزمان شدند. و بنابراین، هیچ چیز علت انحصاری واقعه نبود، و رویداد باید فقط به این دلیل رخ می داد که باید اتفاق می افتاد. میلیون ها نفر که احساسات انسانی و ذهن خود را کنار گذاشته بودند، مجبور شدند از غرب به شرق بروند و هم نوع خود را بکشند، همانطور که چندین قرن پیش، انبوهی از مردم از شرق به غرب رفتند و هم نوع خود را کشتند.
    اقدامات ناپلئون و اسکندر، که به نظر می رسید بر اساس قول آنها این رویداد اتفاق افتاده است یا رخ نداده است، به اندازه عمل هر سربازی که به قید قرعه یا با استخدام به یک لشکرکشی می رفت، خودسرانه نبود. غیر از این نمی‌توانست باشد، زیرا برای تحقق اراده ناپلئون و اسکندر (کسانی که به نظر می‌رسید رویداد به آنها بستگی دارد) تصادف شرایط بیشماری ضروری بود که بدون یکی از آنها رویداد نمی‌توانست رخ دهد. . لازم بود میلیون ها نفری که قدرت واقعی در دستانشان بود، سربازانی که تیراندازی می کردند، آذوقه و تفنگ حمل می کردند، لازم بود که به این اراده افراد منفرد و ضعیف عمل کنند و با دلایل پیچیده و بی شماری به این امر سوق داده شوند.
    تقدیرگرایی در تاریخ برای توضیح پدیده های غیر معقول (یعنی آنهایی که عقلانیت آنها را درک نمی کنیم) اجتناب ناپذیر است. هر چه بیشتر بخواهیم این پدیده ها را در تاریخ به صورت عقلانی توضیح دهیم، برای ما نامعقول و نامفهوم تر می شوند.
    هر فردی برای خود زندگی می کند، از آزادی برای رسیدن به اهداف شخصی خود لذت می برد و با تمام وجود احساس می کند که اکنون می تواند فلان کار را انجام دهد یا نکند. اما به محض این که این کار را انجام دهد، این عمل که در یک لحظه از زمان انجام می شود، غیرقابل برگشت می شود و به مالکیت تاریخ تبدیل می شود که در آن اهمیتی نه آزاد، بلکه از پیش تعیین شده دارد.
    در هر فرد دو جنبه از زندگی وجود دارد: زندگی شخصی که هر چه آزادتر است، علایقش انتزاعی تر است، و زندگی خودجوش و ازدحام، که در آن شخص به ناچار قوانینی را که برایش مقرر شده است انجام می دهد.
    یک فرد آگاهانه برای خود زندگی می کند، اما به عنوان ابزاری ناخودآگاه برای دستیابی به اهداف تاریخی و جهانی عمل می کند. فعل کامل غیرقابل برگشت است و عمل آن همزمان با میلیون ها عمل دیگر افراد، اهمیت تاریخی پیدا می کند. هر چه انسان در نردبان اجتماعی بالاتر باشد، ارتباطش با افراد بزرگ بیشتر باشد، قدرت او بر سایر افراد بیشتر باشد، جبر و ناگزیر بودن هر عمل او آشکارتر است.
    «قلب شاه در دست خداست».
    شاه غلام تاریخ است.
    تاریخ، یعنی زندگی ناخودآگاه، عمومی و پر ازدحام بشر، هر دقیقه از زندگی پادشاهان را ابزاری برای اهداف خود می کند.
    ناپلئون، علیرغم این واقعیت که بیش از هر زمان دیگری، اکنون، در سال 1812، به نظرش می رسید که به او بستگی دارد که آیا خون مردمانش ریخته شود یا نه. آخرین نامه ای که او به او نوشت، اسکندر)، هرگز بیش از اکنون مشمول آن قوانین اجتناب ناپذیری نبود که او را وادار می کرد (آنطور که به نظرش می رسید، طبق خودسری خود در ارتباط با خودش عمل می کرد) برای هدف مشترک، برای به خاطر تاریخ، چه باید کرد.
    مردم غرب برای کشتن یکدیگر به شرق کوچ کردند. و طبق قانون تصادف علل، هزاران دلیل کوچک برای این حرکت و برای جنگ با این واقعه مصادف شد: سرزنش برای عدم رعایت نظام قاره ای و دوک اولدنبورگ و حرکت نیروها به پروس. (آنطور که ناپلئون به نظر می‌رسید) تنها برای دستیابی به صلح مسلحانه و عشق و عادت امپراتور فرانسه به جنگ، که همزمان با خلق و خوی مردمش، شیفتگی به عظمت آماده‌سازی‌ها و هزینه‌های جنگ بود. آمادگی، و نیاز به کسب چنین منافعی که این هزینه ها را بپردازد، و افتخارات گیج کننده در درسدن، و مذاکرات دیپلماتیک، که به عقیده معاصران، با میل خالصانه برای دستیابی به صلح انجام شد و تنها به غرور و غرور صدمه زد. هر دو طرف، و میلیون‌ها و میلیون‌ها دلیل دیگر که به‌عنوان رویدادی که در شرف وقوع بود جعل می‌شدند، با آن مصادف شد.
    وقتی یک سیب رسیده و می افتد، چرا می افتد؟ آیا به این دلیل است که به سمت زمین می کشد، زیرا میله خشک می شود، زیرا در آفتاب خشک می شود، زیرا سنگین تر می شود، زیرا باد آن را تکان می دهد، زیرا پسری که پایین ایستاده می خواهد آن را بخورد؟
    هیچی دلیلش نیست همه اینها فقط تصادفی از شرایطی است که در آن هر رویداد حیاتی، ارگانیک و خود به خودی رخ می دهد. و گیاه‌شناس که می‌بیند سیب به دلیل تجزیه سلولز و مانند آن می‌افتد، درست و به‌اندازه آن کودکی که پایین ایستاده است، می‌گوید سیب افتاد چون می‌خواست بخورد. او و برایش دعا کرد. آی تی. درست و نادرست هم کسی خواهد بود که بگوید ناپلئون به این دلیل به مسکو رفت که او آن را می خواست، و به این دلیل که او مرد زیرا اسکندر می خواست او بمیرد: چقدر درست و نادرست خواهد بود کسی که بگوید او به یک میلیون پوند فرو ریخته است. کوه بیرون افتاد زیرا آخرین کارگر برای آخرین بار با یک کلنگ به زیر آن زد. در وقایع تاریخی، به اصطلاح بزرگان، برچسب هایی هستند که به رویداد نام می دهند که مانند برچسب ها کمترین ارتباط را با خود واقعه دارند.
    هر یک از اعمال آنها که به نظر آنها برای خود خودسرانه می آید، به معنای تاریخی غیر ارادی است، اما در ارتباط با کل مسیر تاریخ است و برای همیشه تعیین می شود.

    در 29 مه، ناپلئون درسدن را ترک کرد و به مدت سه هفته در درباری متشکل از شاهزادگان، دوک ها، پادشاهان و حتی یک امپراتور در آنجا ماند. ناپلئون قبل از رفتن با شاهزادگان، پادشاهان و امپراتوری که شایسته آن بود رفتار کرد، شاهان و شاهزادگانی را که کاملاً از آنها راضی نبود سرزنش کرد، مرواریدها و الماس های خود را که از پادشاهان دیگر گرفته بود به امپراتور اتریش تقدیم کرد. ، همانطور که مورخ او می گوید، ملکه ماری لوئیز را با مهربانی در آغوش گرفت، او را با جدایی تلخ ترک کرد، که به نظر می رسید او - این ماری لوئیز که همسر او به حساب می آمد، با وجود اینکه همسر دیگری در پاریس باقی مانده بود - نمی توانست تحمل کند. علیرغم این واقعیت که دیپلمات ها همچنان به امکان صلح اعتقاد داشتند و در جهت این هدف مجدانه تلاش می کردند، علیرغم اینکه خود امپراتور ناپلئون نامه ای به امپراتور اسکندر نوشت و او را Monsieur mon frere [برادر حاکم] نامید و صمیمانه اطمینان داد که این کار را نمی کند. جنگ می خواهد و همیشه او را دوست دارد و به او احترام می گذارد - او به ارتش سوار شد و در هر ایستگاه دستورات جدیدی را با هدف تسریع حرکت ارتش از غرب به شرق صادر کرد. او سوار بر کالسکه ای که توسط شش نفر کشیده شده بود، که توسط صفحات، آجودان و یک اسکورت احاطه شده بود، در امتداد جاده پوزن، تورن، دانزیگ و کونیگزبرگ سوار شد. در هر یک از این شهرها هزاران نفر با هیبت و خوشحالی از او استقبال کردند.
    ارتش از غرب به شرق حرکت کرد و دنده های متغیر او را به آنجا بردند. در 10 ژوئن، او به ارتش رسید و شب را در جنگل ویلکوویس، در آپارتمانی که برای او آماده شده بود، در ملک یک کنت لهستانی گذراند.
    روز بعد، ناپلئون با سبقت گرفتن از ارتش، با یک کالسکه به سمت نمان رفت و برای بازرسی منطقه گذرگاه، لباس لهستانی را پوشید و به ساحل رفت.
    با دیدن قزاق ها (les Cosaques) و استپ های گسترده (les Steppes) که در وسط آن Moscou la ville Sainte، [مسکو، شهر مقدس،] پایتخت آن، شبیه به ایالت سکایی، قرار داشت. ، جایی که اسکندر مقدونی رفت - ناپلئون به طور غیرمنتظره برای همه و برخلاف ملاحظات استراتژیک و دیپلماتیک دستور حمله داد و روز بعد نیروهایش شروع به عبور از نمان کردند.
    در روز دوازدهم، صبح زود، او چادری را که آن روز در ساحل شیب دار چپ نمان برپا شده بود، ترک کرد و از طریق تلسکوپ به جریان‌های نیروهایش که از جنگل ویلکوویس بیرون می‌آمدند، نگاه کرد و روی سه پل ساخته شده بود. روی نمان لشکریان از حضور امپراتور باخبر شدند، با چشمان خود به دنبال او گشتند و هنگامی که در کوه روبروی چادر، چهره ای را در کت و کلاهی که از خدمه جدا شده بود، یافتند، کلاه های خود را بالا انداختند و فریاد زدند: "زنده باد امپراطور!] - و تنها برای دیگران، بدون اینکه خسته شوند، بیرون ریختند، همه از جنگل عظیمی که تا به حال آنها را پنهان کرده بود بیرون ریختند، و ناراحت از سه پل عبور کردند و به پل دیگر رفتند. سمت.
    - روی fera du chemin cette fois ci. اوه! quand il s "en mele lui meme ca chauffe... Nom de Dieu... Le voila!.. Vive l" Empereur! Les voila donc les Steppes de l "Asie! Vilain pays tout de meme. Au revoir, Beauche; je te rezerv le plus beau palais de Moscou. Au revoir! Bonne شانس… L" به عنوان tu vu، l "Empereur? Vive l" امپراطور!.. پریور! Si on me fait gouverneur aux Indes, Gerard, je te fais ministre du Cachemire, c "est arrete. Vive l" Empereur! زنده! زنده باش زنده باش Les gredins de Cosaques، comme ils filet. Vive l "Empereur! Le voila! Le vois tu? Je l" ai vu deux fois comme jete vois. Le petit caporal ... Je l "ai vu donner la croix a l" un des vieux ... Vive l "Empereur! اینجا هستند، استپ های آسیایی... اما یک کشور بد. خداحافظ بوچه. من تو را ترک می کنم. بهترین قصر مسکو خداحافظ برات آرزوی موفقیت دارم امپراطور را دیده ای هوری اگر مرا در هند فرماندار کنند تو را وزیر کشمیر می کنم... هورا!امپراتور اینجاست!ببینش؟من او را دو برابر تو دیدم سرجوخه کوچولو... دیدم چگونه صلیب را بر یکی از پیرمردها آویزان کرد... هورا، امپراطور!] - صدای پیر و جوان، از متنوع ترین شخصیت ها و موقعیت ها در همه چهره‌های این افراد در آغاز کارزار موردانتظار و شادی و ارادت به مردی با کت خاکستری که روی کوه ایستاده بود، یک ابراز مشترک از شادی داشت.
    در 13 ژوئن، به ناپلئون یک اسب کوچک اصیل عربی داده شد، و او نشست و به یکی از پل‌های روی نمان تاخت، در حالی که دائماً از فریادهای مشتاقانه گوش می‌کرد، که آشکارا فقط به این دلیل تحمل می‌کرد که نمی‌توان آنها را از ابراز عشق منع کرد. برای او با این گریه ها؛ اما این گریه ها که همه جا او را همراهی می کرد، او را سنگین کرد و از مراقبت نظامی که از زمان پیوستن به ارتش او را گرفته بود منحرف کرد. او از یکی از پل هایی که روی قایق ها می چرخید به طرف دیگر گذشت، به شدت به سمت چپ چرخید و به سمت کوونو تاخت، پیشاپیش تعقیب کنندگان مشتاق نگهبان که از خوشحالی می مردند، راه را برای نیروهایی که جلوتر از او می تاختند باز کردند. پس از نزدیک شدن به رودخانه گسترده ویلیا ، در نزدیکی هنگ uhlan لهستانی که در ساحل ایستاده بود متوقف شد.
    - ویوات! - لهستانی ها با شور و شوق فریاد زدند و جبهه را ناراحت کردند و یکدیگر را له کردند تا او را ببینند. ناپلئون رودخانه را بررسی کرد، از اسبش پیاده شد و روی کنده‌ای که در ساحل افتاده بود نشست. با علامتی بی کلام، شیپوری به او دادند، او آن را پشت صفحه ای شاد که بالا آمد، گذاشت و شروع به نگاه کردن به طرف دیگر کرد. سپس به بررسی ورق نقشه که بین سیاهه‌ها پهن شده بود را عمیق‌تر کرد. بدون اینکه سرش را بالا بیاورد چیزی گفت و دو نفر از آجودانش به سوی اهلان لهستان رفتند.
    - چی؟ چی گفت؟ - در صفوف لنسرهای لهستانی شنیده شد، زمانی که یکی از آجودان به سمت آنها تاخت.
    دستور داده شد، با یافتن یک فورد، به طرف دیگر برود. یک سرهنگ لنسر لهستانی، پیرمردی خوش تیپ، برافروخته و گیج شده از هیجان، از آجودان پرسید که آیا اجازه دارد با لنسرهای خود از رودخانه عبور کند بدون اینکه راهپیمایی پیدا کند. او با ترس آشکار از طرد شدن، مانند پسری که اجازه سوار شدن بر اسب را می خواهد، از او خواست تا در چشم امپراتور به او اجازه دهند رودخانه را شنا کند. آجودان گفت که احتمالاً امپراتور از این غیرت بیش از حد ناراضی نخواهد بود.
    به محض گفتن آجودان، یک افسر پیر سبیل با چهره ای شاد و چشمانی درخشان در حالی که شمشیر خود را بالا می برد، فریاد زد: «ویوات! - و چون به لنسرها دستور داد او را تعقیب کنند، خارها را به اسب داد و به طرف رودخانه تاخت. او با بدجنسی اسبی را که مردد بود به زیرش هل داد و به آب کوبید و به سمت تندترهای جریان رفت. صدها لنسر به دنبال او تاختند. در میانه و در تند جریان هوا سرد و وهم انگیز بود. لنسرها به هم چسبیدند، از اسب‌هایشان افتادند، برخی اسب‌ها غرق شدند، مردم غرق شدند، بقیه سعی کردند شنا کنند، برخی روی زین، برخی به یال چسبیده بودند. آنها سعی کردند به سمت آن طرف شنا کنند و با وجود اینکه یک گذرگاه نیم ورست دورتر بود، افتخار می کردند که زیر نگاه مردی که روی کنده ای نشسته و حتی نگاه نمی کند در این رودخانه شنا می کنند و غرق می شوند. در کاری که انجام می دادند هنگامی که آجودان بازگشت، با انتخاب یک لحظه مناسب، به خود اجازه داد تا توجه امپراتور را به ارادت لهستانی ها به شخص خود جلب کند، مرد کوچکی با کت خاکستری از جا برخاست و برتیه را به سمت خود خواند و شروع به راه رفتن کرد و با او در ساحل پایین آمدند، به او دستور دادند و گهگاه با ناراحتی به لنسرهای غرق شده ای که توجه او را جلب می کردند نگاه می کرد.
    برای او این باور تازگی نداشت که حضور او در تمام نقاط جهان، از آفریقا تا استپ های مسکووی، مردم را به همان اندازه شگفت زده می کند و در جنون خود فراموشی فرو می برد. دستور داد اسبی را نزد او بیاورند و به اردوگاه او سوار شوند.
    با وجود قایق هایی که برای کمک فرستاده شده بودند، حدود چهل لنسر در رودخانه غرق شدند. بیشتر آنها به این ساحل بازگشتند. سرهنگ و چند مرد از رودخانه عبور کردند و به سختی به طرف دیگر رفتند. اما به محض اینکه با لباسی خیس بیرون آمدند و در جویبارها جاری شد، فریاد زدند: "ویوات!"، با شوق به جایی که ناپلئون ایستاده بود، اما جایی که دیگر آنجا نبود، نگاه کردند و در آن لحظه خود را در نظر گرفتند. خوشحال.
    در شب، ناپلئون بین دو دستور - یکی برای تحویل اسکناس های جعلی آماده شده روسی برای واردات در اسرع وقت به روسیه، و دیگری برای شلیک به یک ساکسونی که در نامه رهگیری شده او اطلاعاتی در مورد سفارشات ارتش فرانسه یافت شد - دستور داد. دستور سوم - در مورد حساب سرهنگ لهستانی که بیهوده خود را به رودخانه انداخت تا گروه افتخار (Legion d "honneur) که ناپلئون رئیس آن بود.
    Qnos vult perdere - زوال عقل. [چه کسی را می خواهد نابود کند - عقل را محروم کند (لات.)]

    در همین حال، امپراتور روسیه بیش از یک ماه بود که در ویلنا زندگی می کرد و به بررسی و مانور می پرداخت. هیچ چیز برای جنگی که همه انتظار داشتند و در تدارک آن امپراتور از پترزبورگ آمده بود آماده نبود. هیچ برنامه عملیاتی کلی وجود نداشت. تردیدها در مورد اینکه کدام طرح، از همه طرح های پیشنهادی، باید اتخاذ شود، تنها پس از اقامت یک ماهه امپراتور در آپارتمان اصلی تشدید شد. در سه لشکر در هر یک فرمانده کل جداگانه وجود داشت، اما هیچ فرمانده مشترکی بر همه لشکرها وجود نداشت و امپراتور این عنوان را به عهده نمی گرفت.
    هر چه امپراتور بیشتر در ویلنا زندگی می کرد، آنها کمتر و کمتر برای جنگ آماده می شدند و از انتظار برای آن خسته می شدند. به نظر می‌رسید که تمام آرزوهای مردمی که حاکمیت را احاطه کرده بودند، فقط این بود که حاکمیت، در عین حال خوش، جنگ آینده را فراموش کند.
    پس از گذراندن جشن‌ها و تعطیلات فراوان با بزرگان لهستانی، با درباریان و شخص حاکم، در ماه ژوئن، یکی از ژنرال‌های آجودان لهستانی به این فکر افتاد که از طرف او شام و یک توپ به پادشاه بدهد. ژنرال های آجودان این ایده مورد استقبال همه قرار گرفت. امپراتور موافقت کرد. ژنرال آجودان با اشتراک پول جمع آوری کرد. شخصی که می توانست بیشتر از همه برای حاکم خوشایند باشد به عنوان میزبان توپ دعوت شد. کنت بنیگسن، یک مالک زمین در استان ویلنا، خانه روستایی خود را برای این تعطیلات تقدیم کرد و در 13 ژوئن یک شام، یک توپ، قایق سواری و آتش بازی در زاکرت، خانه روستایی کنت بنیگسن برنامه ریزی شد.
    درست در روزی که ناپلئون دستور عبور از نمان و سربازان پیشرفته اش را صادر کرد و قزاق ها را عقب راندند و از مرز روسیه عبور کردند، اسکندر عصر را در ویلا بنیگسن گذراند - در مراسمی که توسط آجودان ژنرال داده شد.
    این یک تعطیلات شاد و درخشان بود. کارشناسان این تجارت می گویند که این همه زیبایی به ندرت در یک مکان جمع می شوند. کنتس بزوخووا، در میان دیگر بانوان روسی که برای پادشاهی از سن پترزبورگ به ویلنا آمده بودند، در این مراسم حضور داشتند و با زیبایی سنگین و به اصطلاح روسی خود، خانم های پیچیده لهستانی را پنهان می کردند. او مورد توجه قرار گرفت و حاکم او را با رقصی تجلیل کرد.
    بوریس دروبتسکوی ، ان گارکن (مجرد) ، همانطور که گفت ، همسرش را در مسکو ترک کرده بود ، همچنین در این رقص حضور داشت و اگرچه ژنرال آجودان نبود ، اما در اشتراک توپ مشارکت زیادی داشت. بوریس اکنون مردی ثروتمند بود که از افتخارات دور افتاده بود، دیگر به دنبال حمایت نبود، اما در جایگاهی برابر با بالاترین همتایان خود ایستاده بود.
    ساعت دوازده صبح هنوز مشغول رقصیدن بودند. هلن که نجیب زاده شایسته ای نداشت، خود مازورکا را به بوریس تقدیم کرد. آنها در جفت سوم نشستند. بوریس با خونسردی به شانه های برهنه هلن نگاه می کرد که از یک لباس گاز تیره طلایی بیرون زده بود، از آشنایان قدیمی صحبت می کرد و در عین حال، به طور نامحسوس برای خود و دیگران، لحظه ای از تماشای فرمانروایی که در همان لباس بود دست برنداشت. سالن حاکم نرقصید. دم در ایستاد و با آن کلمات محبت آمیزی که به تنهایی بلد بود به زبان بیاورد، یکی را متوقف کرد.
    در ابتدای مازورکا، بوریس دید که ژنرال آجودان بالاشف، یکی از نزدیکترین افراد به حاکم، به او نزدیک شد و در دربار نزدیک حاکم، که با یک خانم لهستانی صحبت می کرد، ایستاد. پس از صحبت با خانم، امپراطور با پرسشی نگاه کرد و ظاهراً متوجه شد که بالاشف این کار را فقط به این دلیل انجام داده است که دلایل مهمی برای این کار وجود دارد، کمی به آن خانم سر تکان داد و رو به بالاشف کرد. بالاشف تازه شروع به صحبت کرده بود که تعجب در چهره حاکم نشان داده شد. او بازوی بالاشف را گرفت و با او در سالن قدم زد و ناخودآگاه در دو طرف سازه ها سه راه عریض را که در کنارش ایستاده بودند، برای خود باز کرد. بوریس متوجه چهره آشفته اراکچف شد، در حالی که حاکم با بالاشف رفت. اراکچف، در حالی که با اخم به حاکم نگاه می کرد و بینی قرمز او را بو می کشید، از میان جمعیت بیرون رفت، گویی انتظار داشت حاکم به سمت او برگردد. (بوریس متوجه شد که اراکچف نسبت به بالاشف حسادت می کند و از این واقعیت که برخی از اخبار مهم، آشکارا از طریق او به حاکمیت مخابره نمی شود، ناراضی است.)
    اما حاکم با بالاشف بدون توجه به اراکچف از درب خروجی به باغ روشن عبور کرد. اراکچف در حالی که شمشیر خود را در دست داشت و با عصبانیت به اطراف نگاه می کرد، بیست قدم پشت سر آنها راه رفت.
    تا زمانی که بوریس به ساختن پیکره های مازورکا ادامه داد، او هرگز از این فکر که چه نوع اخباری را بالاشف آورده و چگونه می تواند قبل از دیگران بفهمد، عذابش نمی دهد.
    در شکلی که او باید خانم ها را انتخاب می کرد و با هلن زمزمه می کرد که می خواهد کنتس پوتتسکایا را که به نظر می رسد به بالکن بیرون آمده است ببرد ، او در حالی که پاهایش را روی پارکت می کشد ، از در خروجی به باغ فرار کرد. و با توجه به اینکه حاکم با بالاشف وارد تراس شد، مکث کرد. امپراتور و بالاشف به سمت در می رفتند. بوریس، با عجله، انگار وقت نداشت که دور شود، با احترام خود را به لنگه فشار داد و سرش را خم کرد.
    حاکم با هیجان شخصی که شخصاً توهین شده بود، کلمات زیر را به پایان رساند:
    - بدون اعلام جنگ وارد روسیه شوید. من فقط زمانی صلح می کنم که حتی یک دشمن مسلح در سرزمین من باقی نماند.» همانطور که برای بوریس به نظر می رسید ، بیان این کلمات برای حاکم خوشایند بود: او از شکل بیان افکار خود راضی بود ، اما از این واقعیت که بوریس آنها را شنید ناراضی بود.
    - به طوری که هیچ کس چیزی نمی داند! حاکم، با اخم کردن، اضافه کرد. بوریس متوجه شد که این به او اشاره دارد و در حالی که چشمانش را بست، سرش را کمی کج کرد. امپراتور دوباره وارد سالن شد و حدود نیم ساعت در توپ ماند.
    بوریس اولین کسی بود که خبر عبور نیروهای فرانسوی از نمان را دریافت کرد و به همین دلیل او این فرصت را پیدا کرد تا به برخی از افراد مهم نشان دهد که چیزهای زیادی از دیگران برای او پنهان است و از این طریق او این فرصت را پیدا کرد که از نظر این افراد بالاتر می رود.

    خبر غیرمنتظره عبور فرانسوی ها از نمان به خصوص پس از یک ماه انتظارات برآورده نشده غیرمنتظره بود و در توپ! امپراطور در اولین دقیقه دریافت خبر، تحت تأثیر خشم و توهین، متوجه شد که بعداً مشهور شد، جمله ای که خودش آن را دوست داشت و احساسات خود را کاملاً بیان می کرد. در بازگشت از توپ به خانه، در ساعت دو بامداد، حاکم به دنبال وزیر شیشکوف فرستاد و به او دستور داد که دستوری به سربازان بنویسد و یک نسخه به فیلد مارشال شاهزاده سالتیکوف بنویسد، که در آن مطمئناً خواستار این بود که کلماتی درج شود که او نمی‌خواهد. آشتی کنید تا حداقل یک فرانسوی مسلح در خاک روسیه بماند.
    روز بعد نامه زیر به ناپلئون نوشته شد.
    مسیو مون فری. J "ai appris hier que malgre la loyaute avec laquelle j" ai maintenu mes engagement envers Votre Majeste, ses troupes ont franchis les frontieres de la Russie, et je recois a l " instant de Petersbourg une note par laquelle le comte de lauris . cette agression، annonce que votre majeste s "est consideree comme en etat de guerre avec moi des le moment ou le prince Kourakine a fait la demande de ses passeports. Les motifs sur lesquels le duc de Bassano fondait son refus de les lui delivrer، n "auraient jamais pu me faire suposer que cette demarche serirait jamais de pretexte a l" پرخاشگری. En effet cet ambassadeur n "y a Jamais ete autorise comme il l" a declare lui meme, et aussitot que j "en fus informe, je lui ai fait connaitre combien je le desapprouvais en lui donnant l" ordreester a. Si Votre Majeste n "est pas intentionnee de verser le sang de nos peuples pour un malentendu de ce genre et qu" elle consente a retirer ses troupes du territoire russe, je regarderai ce qui s "est passe comme non avenu, et un accommodement نوس سرا امکان پذیر است. Il depend encore de Votre Majeste d "eviter a l" humanite les calamites d "une nouvelle guerre.
    Je suis و غیره
    (نشانه) الکساندر.
    [«ارباب برادرم! دیروز متوجه شدم که علیرغم صراحتی که به تعهداتم در قبال اعلیحضرت امپراتوری انجام دادم، سربازان شما از مرزهای روسیه گذشتند و فقط اکنون یادداشتی از سن پترزبورگ دریافت کردند که کنت لوریستون مرا از این تهاجم مطلع می کند. که اعلیحضرت خود را از زمانی که شاهزاده کوراکین گذرنامه های خود را خواستار روابط خصمانه با من می دانید. دلایلی که دوک باسانو مبنی بر امتناع خود از صدور این گذرنامه ها را بنا نهاده بود، هرگز نمی توانست مرا به این فکر کند که اقدام سفیر من فرصتی برای حمله بوده است. و در حقيقت، چنانكه خود اعلام كرده بود، از من دستورى در اين باره نداشت; و به محض اطلاع از این موضوع، بلافاصله نارضایتی خود را به شاهزاده کوراکین ابراز کردم و به او دستور دادم وظایفی را که به او سپرده شده است مانند قبل انجام دهد. اگر اعلیحضرت به دلیل چنین سوء تفاهمی تمایلی به ریختن خون رعایای ما نداشته باشید و اگر موافقت کنید که نیروهای خود را از متصرفات روسیه خارج کنید، من تمام آنچه را که اتفاق افتاده نادیده خواهم گرفت و توافق بین ما امکان پذیر خواهد بود. در غیر این صورت، من مجبور خواهم شد حمله ای را که توسط هیچ چیزی از سوی من آغاز نشده است، دفع کنم. اعلیحضرت، شما هنوز این فرصت را دارید که بشریت را از بلای یک جنگ جدید نجات دهید.
    (امضا) اسکندر. ]

    در 13 ژوئن، در ساعت دو بامداد، حاکم، بالاشف را نزد خود فرا خواند و نامه او را به ناپلئون برای او خواند، به او دستور داد که این نامه را بگیرد و شخصاً آن را به امپراتور فرانسه تحویل دهد. با فرستادن بالاشف، حاکم دوباره این کلمات را برای او تکرار کرد که تا زمانی که حداقل یک دشمن مسلح در خاک روسیه باقی نماند، آشتی نخواهد کرد و دستور داد که این کلمات را بدون نقص به ناپلئون منتقل کنند. حاکم این کلمات را در نامه ننوشت، زیرا با درایت خود احساس می کرد که بیان این کلمات در لحظه ای که آخرین تلاش برای آشتی انجام می شد، ناخوشایند است. اما او مطمئناً به بالاشف دستور داد که آنها را شخصاً به ناپلئون تحویل دهد.
    در شب 13-14 ژوئن، بالاشف با همراهی یک ترومپتوز و دو قزاق در سپیده دم به روستای ریکونتی، در پاسگاه های فرانسوی در این طرف نمان رسید. او توسط نگهبانان سواره نظام فرانسوی متوقف شد.
    یک درجه دار فرانسوی هوسر با لباس سرمه ای و کلاه کرکی بر سر بالاشف که نزدیک می شد فریاد زد و به او دستور توقف داد. بالاشف بلافاصله متوقف نشد، اما با سرعت در امتداد جاده حرکت کرد.
    افسر درجه دار در حالی که اخم می کرد و نوعی نفرین می کرد، با سینه اسب روی بالاشف پیش رفت، شمشیر را برداشت و با وقاحت بر سر ژنرال روسی فریاد زد و از او پرسید: آیا او ناشنوا است که نمی شنود به او چه می گویند. . بالاشف نام خود را گذاشت. درجه افسر سربازی را نزد افسر فرستاد.
    افسر درجه دار بدون توجه به بالاشف شروع به صحبت با رفقای خود در مورد امور هنگ خود کرد و به ژنرال روسی نگاه نکرد.
    برای بالاشف، پس از نزدیک شدن به بالاترین قدرت و توان، پس از گفتگوی سه ساعت پیش با حاکم و عموماً عادت به افتخارات در خدمت او، فوق العاده عجیب بود که اینجا، در خاک روسیه، این خصمانه و از همه مهمتر، نگرش توهین آمیز نیروی وحشیانه نسبت به خودش.
    خورشید تازه از پشت ابرها شروع به طلوع کرده بود. هوا تازه و شبنم بود. در راه گله را از روستا بیرون کردند. در مزارع، یکی یکی، مثل حباب های آب، لنج ها با خنده می ترکند.
    بالاشف به اطراف خود نگاه کرد و منتظر آمدن افسری از روستا بود. قزاق های روسی و شیپور ساز و هوسرهای فرانسوی هر از گاهی در سکوت به یکدیگر نگاه می کردند.
    یک سرهنگ هوسر فرانسوی که ظاهراً تازه از رختخواب بیرون آمده بود، سوار بر یک اسب خاکستری خوش تیپ و خوش‌تغذیه و با همراهی دو هوسر از دهکده خارج شد. روی افسر، روی سربازان و اسب‌هایشان قناعت و دلسوزی بود.
    این اولین بار از کارزار بود، زمانی که سربازان هنوز در نظم خوبی بودند، تقریباً برابر با یک مراقبه و فعالیت صلح‌آمیز، تنها با یک لحن ستیزه جوی ظریف در لباس و با یک لمس اخلاقی از آن سرگرمی و فعالیتی که همیشه همراه با مردم است. آغاز کمپین ها
    سرهنگ فرانسوی به سختی می توانست جلوی خمیازه را بگیرد، اما مودب بود و ظاهراً اهمیت بالاشف را کاملاً درک می کرد. او را با زنجیر از کنار سربازانش رد کرد و به او اطلاع داد که آرزوی او برای ارائه به امپراتور احتمالاً بلافاصله برآورده می شود، زیرا آپارتمان امپراتوری، تا آنجا که او می دانست، دور نیست.
    آنها از دهکده ریکونتی گذشتند، از کنار هوسرهای فرانسوی که به ایستگاه‌ها می‌چسبیدند، نگهبانان و سربازانی که به سرهنگ خود سلام می‌کردند و لباس روسی را با کنجکاوی بررسی می‌کردند، به طرف دیگر روستا رفتند. به گفته سرهنگ، رئیس لشکر دو کیلومتر دورتر بود که بالاشف را پذیرفت و تا مقصد اسکورت کرد.
    خورشید از قبل طلوع کرده بود و با شادی بر فضای سبز روشن تابیده بود.
    تازه میخانه روی کوه را پشت سر گذاشته بودند که گروهی از سوارکاران از زیر کوه به دیدارشان آمدند که جلوی آن‌ها سوار بر اسبی سیاه با تسمه‌ای که در آفتاب می‌درخشید، مردی بلند قامت کلاه‌دار را سوار کرد. پرها و موهای سیاه تا شانه‌ها، با مانتوی قرمز و با پاهای بلند بیرون زده به سمت جلو، هنگام سواری فرانسوی. این مرد به سمت بالاشف تاخت و در آفتاب درخشان ژوئن با پرها، سنگ ها و گالن های طلای خود می درخشید و بال می زد.
    بالاشف قبلاً در فاصله دو اسب از سواری بود که با چهره ای نمایشی با دستبند، پر، گردنبند و طلا به سمت او می تاخت، که یولنر، سرهنگ فرانسوی، با احترام زمزمه کرد: "Le roi de Naples". [پادشاه ناپل.] در واقع، این مورات بود که اکنون پادشاه ناپل نامیده می شود. اگرچه کاملاً غیرقابل درک بود که چرا او یک پادشاه ناپل است، اما او را چنین می نامیدند و خود او نیز به این امر متقاعد شده بود و بنابراین هوای موقرتر و مهمتر از قبل داشت. او آنقدر مطمئن بود که واقعاً پادشاه ناپل است که در آستانه خروج از ناپل، در حین پیاده روی با همسرش در خیابان های ناپل، چندین ایتالیایی به او فریاد زدند: "Viva il re!"، [زنده باد! پادشاه! (ایتالیایی)] با لبخندی غمگین رو به همسرش کرد و گفت: «Les malheureux, ils ne savent pas que je les quitte demain! [متأسفانه، آنها نمی دانند که من فردا آنها را ترک می کنم!]
    اما علیرغم این واقعیت که او اعتقاد راسخ داشت که یک پادشاه ناپل است و از غم و اندوه رعایای خود که او را ترک می‌کردند پشیمان بود، اما در چند وقت اخیر پس از دستور دوباره وارد شدن به خدمت و به ویژه پس از ملاقات با ناپلئون. در دانزیگ، هنگامی که برادرشوهرش به او گفت: «Je vous ai fait Roi pour regner a maniere, mais pas a la votre»، [من تو را پادشاه کردم تا نه بر اساس من، بلکه بر اساس پادشاهی. به من.] - او با خوشحالی شروع به تجارتی کرد که برای او آشنا بود و مانند اسبی سرخ شده، اما نه چاق، مناسب برای خدمت، خود را در بند حس می کرد، در شفت ها بازی می کرد و تا جایی که ممکن بود رنگارنگ و گران قیمت تخلیه شد. ، شاد و راضی ، تاخت ، نمی دانست کجا و چرا ، در امتداد جاده ها لهستان.
    با دیدن ژنرال روسی، با قاطعیت، سرش را با موهایی که روی شانه هایش حلقه کرده بود، به عقب پرت کرد و با پرسش به سرهنگ فرانسوی نگاه کرد. سرهنگ با احترام معنی بالاشف را که نمی توانست نامش را تلفظ کند به اعلیحضرت منتقل کرد.

    زبان برنامه نویسی بیسیک -خانواده ای از زبان های برنامه نویسی سطح بالا است. این ابزار در ابتدا به عنوان یک ابزار آموزشی توسعه یافت، در دهه 1980 در میکروکامپیوترهای خانگی رایج شد و تا به امروز در لهجه ای که به شدت متمایز شده است محبوب است. برنامه نویسی برای مبتدیان.
    نام زبان برنامه نویسی بیسیک در سنت های کلاسیک علوم کامپیوتر ابداع شد، که منجر به کوتاه شدن نام، کد دستورالعمل نمادین همه منظوره مبتدی (کد دستورالعمل نمادین چند منظوره برای مبتدیان) شد. این نام با عنوان اثری منتشر نشده توسط مخترع این زبان، توماس کورتز. برخی از منتقدان با بازیگوشی آن را تلاش زبانی بیل برای به دست گرفتن کنترل صنعت در پاسخ به سیاست مترجم BASIC مایکروسافت می نامند، که در تمام محموله های رایانه های شخصی سازگار با IBM اولیه گنجانده شده بود. برنامه نویسی برای Dummies.

    داستان

    قبل از ظهور
    تا اواسط دهه 1960، رایانه ها ابزارهای بسیار گران قیمتی بودند که فقط برای کارهای خاص مورد استفاده قرار می گرفتند، در آن زمان آنها فقط می توانستند یک "کار" را انجام دهند. با این حال، از اواسط دهه 1960، کامپیوترها شروع به کاهش قیمت کردند، تا جایی که حتی شرکت‌های کوچک هم می‌توانستند آن‌ها را بخرند، و سرعت اجرای دستورالعمل‌ها به حدی افزایش یافت که کامپیوترها به دلیل نداشتن کار کافی برای انجام دادن، بیکار شدند. که بعداً در مبانی برنامه نویسی مورد بحث قرار گرفت.
    زبان های برنامه نویسی آن دوران عموماً با قابلیت های رایانه و برای اهداف خاصی مانند پردازش علمی فرمول ها توسعه یافتند. رایانه هایی که فقط می توانستند یک «کار» را انجام دهند گران بودند و مهم ترین مشخصه آن سرعت اجرای دستورالعمل ها بود. به طور کلی، استفاده از آنها دشوار بود، و حتی می توان گفت، کمی "زشت".
    در این زمان بود که مفهوم اشتراک زمانی توسط سیستم عامل رایج شد. در چنین سیستمی، رایانه زمان پردازش اصلی را به قطعات "برش" می داد و هر کاربر مقدار کمی از زمان را در یک توالی خاص دریافت می کرد. ماشین‌ها از قبل به اندازه‌ای سریع بودند که اکثر کاربران تصور می‌کردند که استفاده انحصاری از کل رایانه دارند، فریب خورده بودند. در تئوری اشتراک زمانی، کاهش زمان محاسبات بسیار مهم است، زیرا صدها کاربر می توانند حداقل در تئوری روی یک کامپیوتر کار کنند.

    تولد و سالهای اولیه
    زبان برنامه نویسی بیسیک در سال 1964 توسط جان جورج کمنی (93-1926) و توماس یوجین کورتز (1928-) در کالج دارتموث اختراع شد. در سال‌های بعد، پس از ظهور بسیاری از تغییرات بیسیک، توضیحات کمنی و کورتز از بیسیک اصلی منتشر شد و نام بیسیک اصلی را «دارتموث بیسیک» گذاشت.
    زبان برنامه نویسی بیسیک به گونه ای طراحی شده است که دانش آموزان را قادر می سازد تا برنامه ها را با استفاده از پایانه های کامپیوتری به روش اشتراک زمانی بنویسند. بیسیک برای حل مسائل پیچیده ای طراحی شده است که توسط نسل قبلی زبان ها حل شده اند. به طور خاص برای دسته جدیدی از کاربران طراحی شده است که ایده استفاده از اشتراک گذاری زمان را پذیرفته اند، یعنی برای کاربر "ساده" که چندان به سرعت و سهولت استفاده از رایانه علاقه مند نیست. طراحان این زبان همچنین می خواستند این زبان در حوزه عمومی باشد که به گسترش آن کمک می کند.
    هشت اصل ساخت بیسیک:

    1. برای مبتدیان آسان باشید
    2. یک زبان عمومی باشید
    3. به ویژگی‌های پیشرفته اجازه دهید پیشرفت‌های شما را برای کارشناسان اضافه کنند (در حالی که زبان را برای مبتدیان ساده نگه می‌دارد)
    4. تعاملی باشید
    5. پیام های خطای واضح و دوستانه ایجاد کنید
    6. به برنامه های کوچک به سرعت پاسخ دهید
    7. بدون نیاز به دانش سخت افزار کامپیوتر
    8. محافظت از کاربر در برابر سیستم عامل

    بر اساس بخشی از Fortran II و بخشی بر روی Algol 60، با افزودنی هایی که برای اشتراک گذاری زمانی و محاسبات ماتریسی مناسب است، BASIC برای اولین بار بر روی فریم های انسانی GE-265 که از ترمینال های متعدد پشتیبانی می کردند، پیاده سازی شد. بر خلاف تصور رایج، در زمان ایجاد آن یک زبان تالیفی بود. تقریباً بلافاصله پس از انتشار، BASIC شروع به تمسخر توسط دانشمندان رایانه به عنوان خیلی کند و خیلی ساده کرد. از آنجایی که نخبه گرایی زبان یک موضوع ثابت در صنعت کامپیوتر است.
    با این حال، BASIC در حال گسترش به تعداد زیادی از ماشین‌ها است و در رایانه‌های کوچک جدیدتر مانند سری DEC PDP و Data General Nova بسیار محبوب می‌شود. در این موارد، زبان بسته به نیاز، تمایل دارد به عنوان مترجم عمل کند تا کامپایلر، یا برعکس.

    رشد انفجاری
    با این حال، تنها با ظهور میکروکامپیوتر Altair 8800 در سال 1975، BASIC توزیع انبوه آن را آغاز کرد. بیشتر زبان‌های برنامه‌نویسی آنقدر بزرگ بودند که در حافظه کوچک رایانه‌هایی که اکثر کاربران توانایی خرید آن را دارند جای بگیرند، و اگر در نظر داشته باشید که خواندن از طریق نوار کاغذی آهسته (یا نسخه‌های بعدی کاست صوتی) انجام می‌شد و مناسب نبود. ویراستارهای متن، سپس الزامات کوچک زبان BASIC به خوبی این الزامات را برآورده می کند. یکی از اولین کسانی که در این دستگاه ظاهر شد Tiny BASIC بود، یک پیاده‌سازی ساده از بیسیک که در ابتدا توسط دکتر لی وانگ چن نوشته شد و بعداً توسط دنیس الیسون به درخواست باب آلبرشت (که بعداً مجله دکتر دابز را تأسیس کرد به Altair منتقل شد). - DDJ). طرح Tiny BASIC و کد منبع کامل در سال 1976 توسط DDJ منتشر شد.
    در سال 1977، مایکروسافت (در آن زمان فقط دو نفر بودند - گیتس و آلن) Altair BASIC را منتشر کرد. سپس نسخه‌ها تحت مجوز روی پلتفرم‌های دیگر ظاهر شدند و میلیون‌ها نسخه و نسخه به زودی مورد استفاده قرار گرفتند، این زبان به یکی از زبان‌های استاندارد Apple II تبدیل شد. تا سال 1979، مایکروسافت در حال مذاکره با چندین فروشنده میکروکامپیوتر از جمله IBM بود تا مجوز یک مترجم BASIC برای این کامپیوترها را صادر کند. این نسخه به تراشه‌های رایانه شخصی آی‌بی‌ام در رام سیم‌کشی شد و برای رایانه‌های شخصی بدون دیسک، وقتی برق روشن شد، BASIC به‌طور خودکار قابل بوت‌پذیر شد.
    با ظهور شرکت های جدید، بسیاری از آنها سعی کردند موفقیت های Altair را تکرار کنند، مانند IMSAI، Polaris و Apple، و به این ترتیب انقلاب کامپیوترهای خانگی آغاز شد و BASIC به یک ویژگی استاندارد در رایانه های خانگی آن زمان تبدیل شد. اکثر آنها با یک مترجم BASIC در ROM (ویژگی که برای اولین بار در Commodore PET در سال 1977 معرفی شد) عرضه شد. به زودی میلیون ها دستگاه بیسیک در سرتاسر جهان وجود داشت که احتمالاً بسیار بیشتر از تعداد کل کاربران همه زبان های دیگر است. بسیاری از برنامه ها، به ویژه برنامه های Apple II و IBM PC، به مترجم BASIC مایکروسافت وابسته شدند و بدون آن کار نمی کنند. بنابراین مایکروسافت از مجوز کپی رایت کامپایلر BASIC برای به دست آوردن اهرمی در مذاکرات با فروشندگان رایانه استفاده کرد.

    بلوغ
    در این بازه زمانی، نسخه های جدید و قدرتمندتری از BASIC ایجاد شد. مایکروسافت چندین نسخه از BASIC را برای MS-DOS/PCDOS فروخت، از جمله BASICA، GW-BASIC (نسخه سازگار با BASICA که نیازی به ROM IBM نداشت) و Quick Basic. Borland (توسعه دهنده Turbo Pascal) Turbo Basic 1.0 را در سال 1985 منتشر کرد (جانشین این نسخه هنوز با نام PowerBASIC توسط یک شرکت دیگر فروخته می شود). برنامه های افزودنی مختلفی برای کامپیوتر خانگی وجود داشت که BASIC از آن ها پشتیبانی می کرد، مانند گرافیک، صدا و دستورات DOS، و همچنین ابزارهایی برای برنامه نویسی ساخت یافته. زبان های برنامه نویسی دیگر از نحو معروف BASIC به عنوان مبنایی برای انتقال به سایر سیستم عامل ها استفاده کرده اند که GRASS نمونه ای از آن است.
    با این حال، در نیمه دوم دهه 1980، کامپیوترهای جدید بسیار پیچیده‌تر بودند و دارای ویژگی‌های بسیاری (مانند رابط‌های گرافیکی کاربر) بودند که باعث شد BASIC کمتر و کمتر برای برنامه‌نویسی مناسب باشد. در عین حال، رایانه ها از ابزار آماتورها به ابزار حرفه ای ها در حال پیشرفت هستند. استفاده از رایانه های شخصی در درجه اول برای اجرای برنامه های نوشته شده توسط افراد دیگر آغاز شده است و برنامه نویسی به طور کلی برای تعداد زیادی از کاربران عادی که به سرعت در حال رشد هستند، کمتر مشکل می شود. BASIC شروع به ناپدید شدن کرد، اگرچه نسخه های متعددی در دسترس باقی ماندند.
    وضعیت اسفبار بیسیک با ظهور ویژوال بیسیک مایکروسافت تغییر می کند. اگرچه تشخیص بیسیک کلاسیک در این زبان در حال حاضر بسیار دشوار است (علی رغم استفاده از کلمات بیسیک آشنا در نام)، این زبان جدید به یکی از پرکاربردترین زبان ها در پلتفرم ویندوز تبدیل شده است. فراموش نکنیم که برنامه های نوشته شده به این زبان تقریباً 70 تا 80 درصد از کل برنامه های تجاری را تشکیل می دهند. Visual Basic for Applications (VBA) در سال 1993 به مایکروسافت اکسل 5.0 اضافه شد و در سال 1997 با کل خط تولید مایکروسافت آفیس گنجانده شد. ویندوز 98 مترجم VBScript را معرفی کرد. آخرین نسخه ویژوال بیسیک VB.NET نام دارد. مجموعه OpenOffice شامل یک نوع BASIC کمتر از همتای MS خود است.

    نحو
    عملگر خاتمه خط منطقی یک خط جدید است، مگر اینکه با استفاده از یک کاراکتر ادامه خط، با اپراتور انتقال خط منطقی به خط بعدی مواجه شویم. نحو اولیه BASIC: دستورات LET، PRINT، IF و GOTO. مفسری که برنامه‌ای را با این حداقل نحو اجرا می‌کند، نیازی به پشته ندارد، زیرا برخی از پیاده‌سازی‌های اولیه میکروکامپیوتر بسیار ساده بودند. اگر یک پشته اضافه شود، حلقه ها و دستورات GoSub می توانند اضافه شوند. مفسر BASIC برای کار با این توابع نیاز به کد شماره خط دارد.
    شماره خطوط مشخصه بارز BASIC کلاسیک برای رایانه خانگی بود. افسوس، استفاده از اعداد خط یک اشکال بزرگ دارد، که نیاز به برنامه نویس دارد که متوجه شود چند خط در برنامه خواهد بود، زیرا دستورات اصلی پرش به یک شماره خط خاص بود. و اگر تغییرات یا اضافاتی در نسخه های بعدی برنامه ایجاد می شد، تعداد این خطوط شروع به تغییر می کرد که منجر به نیاز به تغییر تقریباً کل برنامه شد. برای حل این مشکل از ترفندهای حیله‌ای استفاده شد که مثلاً می‌گفتند خطوط باید با حاشیه شماره‌گذاری شوند و مرحله +10 باشد. اما با این حال، در صورت تغییرات جدی برنامه، این ذخیره نشد. برای حل این مشکل با مترجمان اولیه بیسیک، کاربران پیشرفته به زودی ابزارهای خود را برای شماره گذاری مجدد خطوط کد منبع برنامه نوشتند. برخی از مترجم‌های BASIC که بعداً وارد شدند، یک فرمان داخلی برای تغییر شماره خطوط داشتند، در نتیجه مشکل فعلی شماره خطوط را از بین می‌بردند.
    گویش‌های مدرن بیسیک شماره خطوط را کنار گذاشته‌اند و بیشتر پیاده‌سازی‌ها از دستورات کنترل ساختاری پشتیبانی می‌کنند که در زبان‌های معروفی مانند C یا Pascal و همچنین زبان‌های دیگر مانند C و Pascal استفاده می‌شوند (اگرچه نسخه‌هایی باقی مانده است که ترکیب کنترل ساختاری و شماره گذاری خطوط):

    • do-loop-while-until-exit
    • در x goto / gosub (سوئیچ و کیس)

    انواع اخیر مانند ویژوال بیسیک امکان برنامه نویسی شی گرا و حتی ارث بری را در آخرین نسخه ارائه کرده است. مدیریت حافظه در آخرین پیاده سازی بسیار ساده تر از بسیاری از زبان های برنامه نویسی رویه ای دیگر است، زیرا معمولاً یک جمع کننده زباله (که حافظه را پاک می کند و داده های غیر ضروری را حذف می کند) در آن گنجانده شده است.
    تنوع گونه‌های زبانی نشان می‌دهد که زبان دارای ویژگی «ارگانیک» است و این زبان را می‌توان به‌عنوان خرده‌فرهنگی در دنیای رایانه در نظر گرفت، نه مجموعه‌ای ثابت از قواعد نحوی. همین امر در مورد سایر زبان های برنامه نویسی "قدیمی" مانند COBOL و FORTRAN نیز صدق می کند. تعداد زیادی از متخصصان صنعت IT که بیسیک را می‌شناسند را می‌توان با این واقعیت توضیح داد که اکثریت آنها در دهه 80، یعنی سال‌های محبوبیت بیسیک، در برنامه‌نویسی دندان‌های خود را تیز کردند.

    رویه ها و کنترل جریان
    Basic مانند زبان های دیگر مانند C، کتابخانه های خارجی استاندارد ندارد. در عوض، مترجم (یا کامپایلر) شامل یک کتابخانه داخلی گسترده از رویه های بومی است. این رویه‌ها شامل اکثر ابزارهایی است که یک برنامه‌نویس باید برنامه‌نویسی و نوشتن برنامه‌های کاربردی ساده را یاد بگیرد، از جمله توابع ریاضی، ورودی و خروجی رشته به کنسول، گرافیک و مدیریت فایل.
    برخی از گویش های بیسیک به برنامه نویسان اجازه نمی دهند تا روال های خود را بنویسند. برنامه نویسان باید در عوض برنامه های خود را با بیانیه های شاخه GOTO بیشتری بنویسند. این می تواند منجر به کد منبع بسیار گیج کننده شود که معمولاً به آن کد اسپاگتی می گویند. GoSub انواع ساده زیر روال ها را بدون پارامتر یا متغیرهای محلی اعلام می کند. اکثر نسخه های مدرن بیسیک، مانند مایکروسافت QuickBASIC، پشتیبانی از زیر روال ها و توابع کامل را اضافه کرده اند. این یکی دیگر از زمینه هایی است که این زبان با بسیاری از زبان های برنامه نویسی دیگر تفاوت دارد. BASIC، مانند پاسکال، بین رویه‌ای که مقداری را برمی‌گرداند (به نام زیرروال) و رویه‌هایی که مقداری را برمی‌گردانند (به نام تابع) تمایز قائل می‌شود. بسیاری از زبان های دیگر (به ویژه C) هیچ تمایزی قائل نمی شوند و همه چیز را توابع می نامند (اگرچه برخی از توابع مقادیر "خالی" را برمی گردانند و رویه های زیر روال هستند).

    انواع داده ها
    BASIC به دلیل عملکرد عالی پردازش خط خود شناخته شده است. قبلاً در گویش‌های اول، بسیاری از توابع اساسی (LEFT$، MID$، RIGHT$) برای پردازش رشته ساده وجود داشت. از آنجایی که رشته ها اغلب در برنامه های روزمره استفاده می شوند، این یک مزیت قابل توجه نسبت به زبان های دیگر در زمان معرفی زبان بود.
    Dartmouth BASIC اصلی فقط از انواع داده های عددی و رشته ای پشتیبانی می کند. این زبان نوع داده عدد صحیح نداشت، در عوض قرار بود همه اعداد را با استفاده از متغیرهای ممیز شناور (نوع واقعی) توصیف کند. طول خطوط پویا بود. آرایه ها و همچنین ماتریس ها (آرایه های دو بعدی) پشتیبانی شدند.
    هر گویش مدرن بیسیک حداقل دارای انواع داده های عدد صحیح و رشته ای است. انواع داده‌ها معمولاً در موارد زیر متفاوت هستند: شناسه‌های رشته‌ای به $ ختم می‌شوند، اما اعداد صحیح نه. در برخی از لهجه‌ها، متغیرها باید قبل از اولین استفاده اعلام شوند، در گویش‌های دیگر نیازی به آن ندارند، اما می‌توان با استفاده از دستورالعمل‌هایی مانند Option Explicit بررسی کرد که از این قانون پیروی می‌کند. بسیاری از گویش ها از انواع اضافی مانند اعداد صحیح 16 و 32 بیتی و اعداد ممیز شناور نیز پشتیبانی می کنند. علاوه بر این، برخی به شما اجازه می‌دهند تا انواع داده‌های سفارشی، شبیه به «سوابق» پاسکال یا «ساختارهای C» را تعریف کنید.
    اکثر گویش های اصلی آرایه هایی از اعداد صحیح یا انواع دیگر را نیز پشتیبانی می کنند. در برخی، آرایه ها باید قبل از استفاده از پیش تعریف شده باشند (با دستور DIM). پشتیبانی از آرایه های دو و چند بعدی و همچنین آرایه هایی از انواع غیر صحیح رایج است.
    DIM myIntArray (100) به عنوان عدد صحیح
    DIM myNameList (50) به عنوان STRING
    بسته به گویش BASIC و استفاده از Option Base، مقادیر می توانند از myIntArray (0) تا myIntArr (100)، از myIntArr (1) تا myIntArr (100) یا از myIntArray (LowInteger) تا myIntArray (HighInteger) متغیر باشند. ) به عبارت دیگر عدد The first element می تواند از صفر یا از یک شروع شود.

    عملگرهای رابطه ای و منطقی
    = برابر
    <= меньше или равно
    نه نفی منطقی
    <>نا برابر
    >= بزرگتر یا مساوی
    و ضرب بولی
    < Меньше
    یا اضافه منطقی
    > بیشتر
    (توجه داشته باشید که هیچ تفاوت لغوی بین عملگر برابر و عملگر انتساب در بیسیک وجود ندارد - این علامت "=" است)

    در دسترس بودن و گزینه های گویش
    Basic تقریباً برای هر پلتفرم ریزپردازنده ای در دسترس است. یک مترجم زبان سازگار با استانداردهای رایگان و یک پلتفرم بین پلتفرمی Bywater BASIC (bwBASIC) وجود دارد. مفسر به زبان C نوشته شده است و تحت مجوز گنو مجوز دارد. این برای یک کنسول برنامه مبتنی بر متن در نظر گرفته شده است، و به این ترتیب شامل ابزارهایی برای ایجاد رابط کاربری گرافیکی (GUI) نمی شود. بیسیک رایگان که شامل GUI Builder نمی‌شود، شبیه به ویژوال بیسیک است و روی ویندوز و لینوکس اجرا می‌شود - این فینیکس Object Basic است.
    شناخته شده ترین نسخه ها نسخه کامپایل شده Microsoft Quick BASIC و نسخه QBASIC هستند که برنامه های مستقل ایجاد نمی کند. برخی از نسخه های ویژوال بیسیک نیز می توانند به کد بومی کامپایل شوند. مایکروسافت ویژوال بیسیک را حتی با نسخه های قبلی به حداقل رساند.
    نسخه های دیگر شامل زبان برنامه نویسی PowerBASIC از PowerBASIC و True BASIC از True BASIC هستند که با آخرین استانداردهای رسمی بیسیک سازگار هستند. True BASIC توسط یکی از بنیانگذاران Dartmouth BASIC تاسیس شد.
    REALbasic یک نسخه برای مکینتاش اپل است که همچنین فایل های اجرایی را برای مایکروسافت ویندوز ایجاد می کند. PureBasic یک نوع با نحو ساده است اما فایل های اجرایی سریع و کوچکی را برای ویندوز و لینوکس تولید می کند. SmallBASIC یک گویش است که بر روی بسیاری از پلتفرم ها (Win32، DOS، Linux و PalmOS) اجرا می شود و تحت مجوز GNU GPL است.