زبان اسنوبول

از ویکی‌پدیا، دانشنامهٔ آزاد
پرش به: ناوبری، جستجو

اسنوبول (یک زبان سمبلیک و کاراکترگرا) در واقع تلفیقی از مجموعه زبانهای برنامه نویسی که بین سالهای ۱۹۶۲ تا ۱۹۶۷ درآزماشگاه بل توسط افرادی نظیردیوید فاربر، رالف گریسولد و ایوان پلونسکی توسعه پیدا کرده‌اند می‌باشد که این کار در زبان اسنوبول۴ به اوج خودش رسید

این زبان یکی از بیشمار زبان کاراکتر گراست که بین سالهای ۱۹۵۰تا۱۹۶۰ توسعه پیدا کرده است این درحالی است که بقیه زبانها دارای پردازنده کاراکتر تریس یا کامیت می‌بودند.
SNOBOL۴ جدا از اکثر زبان‌های برنامه نویسی با داشتن الگوهای به عنوان یک نوع داده کلاس اول (به عنوان مثال یک نوع داده است که ارزش‌ها را می‌توان در تمام روش‌های مجاز به هر نوع داده دیگر در زبان برنامه نویسی دستکاری کرد) و با فراهم آوردن اپراتورها برای الحاق الگو و تناوب می‌ایستد. رشته تولید شده در طول اجرا می‌توانند به عنوان برنامهای اجرایی عمل کنند.

SNOBOL۴ کاملاً به طور گسترده‌ای در دانشگاههای بزرگ آمریکا در اواخر ۱۹۶۰s و ۱۹۷۰s زود آموزش داده شد و به طور گسترده‌ای در ۱۹۷۰s و ۱۹۸۰s به عنوان یک زبان دستکاری متن در علوم انسانی مورد استفاده قرار گرفت.

در سال‌های اخیر استفاده از آن به عنوان زبان جدیدتری مانند AWK و پرل پژمرده دستکاری رشته با استفاده از عبارات منظم مد روز ساخته شده‌اند. الگوهای SNOBOL۴ خانواده را شامل گرامرهای BNF، که معادل دستور زبان مستقل از متن و قوی تر از عبارات منظم است " عبارات منظم " در نسخه‌های فعلی از AWK و پرل در واقع پسوند عبارات منظم در معنای سنتی است، اما به طور منظم. عبارات، بر خلاف الگوهای SNOBOL۴، نمی‌تواند است بازگشتی، می‌دهد که یک مزیت محاسباتی مجزا به الگوهای SNOBOL4. با این حال، از پرل ۵٫۱۰ (در دسامبر ۲۰۰۷ منتشر شد)، پرل از عبارات منظم می‌تواند بازگشتی.

یکی از طراحان SNOBOL، رالف Griswold، جانشینان طراحی شده برای SNOBOL۴ به نام SL۵ و icon، که ترکیب backtracking الگوی SNOBOL۴ تطبیق با استاندارد الگول است که شبیه ساختار ALGOL، و همچنین اضافه کردن برخی از ویژگی‌های خود را دارند

توسعه زبان[ویرایش]

زبان SNOBOL اولیه به عنوان یک ابزار توسط نویسنده آن مورد استفاده قرار گرفت و برای استفاده ی نمادین چندجمله ای ایجاد شده است. این کاربرد در زبان اسمبلی برای IBM ۷۰۹۰ استفاده شده است. این یک گرامر ساده، فقط یک نوع داده، رشته، بدون توابع، و هیچ اعلامیه‌ها و کنترل خطا بسیار کم است. با این حال با وجود سادگی آن و طبیعت "شخصی" آن استفاده ی این زبان را زیاد کرده است، و باعث شروع به گسترش به گروه‌های دیگرشد. به عنوان مثال یکی از نویسندگان تصمیم گرفت تا آن را گسترش دهد و به صورت مرتب آن را به گسترش بدهد. وآن را بازنویسی کرد وچندین توابع به آن افزود، از هر دو استاندارد و تعریف شده توسط کاربر، و در نتیجه به عنوان SNOBOL۳ منتشر شد. در SNOBOL۲ قابلیت تعریف توابع توسط کاربر وجود نداست به همین دلیل محبوب نشد.و بدلیل اینکه در SNOBOL۳ قابلیت تعریف توابع وجود داشت به سرعت بین برنامه نویسان محبوب شد و برای دیگر کامپیوترها از IBM ۷۰۹۰ توسط دیگر برنامه نویسان بازنویسی شد. در نتیجه چند گویش ناسازگار به وجود آمد.

نویسندگان زبان SNOBOL درخواست بیشتر و بیشتر از جانب برنامه نویسان برای گسترش زبان را دریافت کردند. آنها همچنین شروع به دریافت شکایات در مورد ناسازگاری‌ها و اشکالات در نسخه‌هایی که برای آنها نوشته نشده بود دریافت کردند. برای پرداختن به این مشکلات و برای استفاده از کامپیوترهای جدید که در اواخر ۱۹۶۰s معرفی شده بود ، تصمیم به توسعه SNOBOL۴ که شامل بسیاری از انواع داده‌ های اضافی و ویژگی‌هایی براساس یک ماشین مجازی که اجازه می‌دهد تا برنامه قابل حمل (Portable) شود.

مترجم زبان SNOBOL۴ در زبان اسمبلی نوشته شده است. با این حال ویژگی‌های ماکرودر اسمبلر استفاده شد تا دستورالعملهای ماشین مجازی که مربوط به پیاده سازی زبان SNOBOL می‌بود استفاده شود.که این ویژگی قابل حمل بودن در زبان را ارتقاء داد.

ویژگی های زبان[ویرایش]

SNOBOL۴: از تعدادی از انواع داده‌ها، مانند اعداد صحیح و اعداد دقت محدود واقعی، رشته‌ها، الگوها، آرایه‌ها، و جدول (آرایه‌های انجمنی)، و همچنین به برنامه نویس اجازه تعریف انواع داده‌های اضافی و توابع جدید را میدهد.

همه خطوط دستور SNOBOL فرم Label۱ موضوع الگوی = شیء: (رفتن به Label2) هر یک از این پنج بخش اختیاری است. اگر جسم حاضر است، هر بخشی همسان از طریق قوانین برای جایگزینی جایگزین شده است. goto می‌تواند یک پرش مطلق و یا مشروط در موفقیت یا شکست در ارزیابی یک موضوع، ارزیابی الگوی، بازی الگو، ارزیابی شیو یا انتساب نهایی باشد.

الگوی SNOBOL می‌تواند بسیار ساده و یا بسیار پیچیده باشد. یک الگوی ساده تنها یک رشته متن (مثلاً " ABCD ") است، اما الگوی پیچیده ممکن است یک ساختار بزرگ توصیف، به عنوان مثال، دستور زبان کامل از زبان کامپیوتر باشد. ممکن است یک مترجم زبان در SNOBOL تقریباً به طور مستقیم از یک عبارت به صورت Backus - Naur با چند تغییرپیاده سازی میشود. ایجاد یک اسمبلر ماکرو و یک مترجم برای یک قطعه به طور کاملاً نظری از سخت افزار که چند صد خط است،میتواند با یک دستور جدید که با یک خط نوشته شده اضافه گردد.

SNOBOL متغیرها، رشته‌ها و ساختارهای داده‌رادر یک HEAP ذخیره میکند.

SNOBOL رقبای APL برای تمایز خود را در قالب و سبک‌های برنامه نویسی، در هر دو، اساساً برخلاف چند زبان رویه ای "استاندارد" مانند BASIC، فرترن، یا C.

برای خاتمه دادن در این زبان از دستور CTRL+Z یا END استفاده می کنیم.

مثال(برنامه نمونه)[ویرایش]

برنامه سلام دنیا:
         OUTPUT = "Hello world"
END

مثال دوم:

         OUTPUT = "What is your name?"
         Username = INPUT
         OUTPUT = "Thank you, " Username
END

مثال سوم

          OUTPUT = "What is your name?"
          Username = INPUT
          Username "J"                                             :S(LOVE)
          Username "K"                                             :S(HATE)
MEH       OUTPUT = "Hi, " Username                                 :(END)
LOVE      OUTPUT = "How nice to meet you, " Username               :(END)
HATE      OUTPUT = "Oh. It's you, " Username
END

مثال چهارم

          OUTPUT = "This program will ask you for personal names"
          OUTPUT = "until you press return without giving it one"
          NameCount = 0                                            :(GETINPUT)"
AGAIN     NameCount = NameCount + 1
          OUTPUT = "Name " NameCount ": " PersonalName
GETINPUT  OUTPUT = "Please give me name " NameCount + 1 
          PersonalName = INPUT
          PersonalName LEN(1)                                      :S(AGAIN)
          OUTPUT = "Finished. " NameCount " names requested."
END

منابع[ویرایش]

  • مشارکت‌کنندگان ویکی‌پدیا، «SNOBOL»، ویکی‌پدیای انگلیسی، دانشنامهٔ آزاد (بازیابی در ۲۷ آذر ۱۳۹۲).