زبان اسنوبول

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

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

این زبان یکی از بیشمار زبان کاراکتر گراست که بین سالهای ۱۹۵۰تا۱۹۶۰ توسعه پیدا کرده است این درحالی است که بقیه زبانها دارای پردازنده کاراکتر تریس یا کامیت می‌بودند.
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۴ با بسیاری از انواع داده‌های اضافی و ویژگی‌هایی براساس یک ماشین مجازی که اجازه می‌دهد تا برنامه قابل حمل شود.
مترجم زبان SNOBOL۴ در زبان اسمبلی نوشته شده است. با این حال ویژگی‌های ماکرودر اسمبلراستفاده شد تا دستورالعملهای ماشین مجازی که مربوط به پیاده سازی زبان SNOBOL می‌بود استفاده شد. این ویژگی قابل حمل بودن در زبان را ارتقاء داد.

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

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

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

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

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

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

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

برنامه سلام دنیا:
         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»، ویکی‌پدیای انگلیسی، دانشنامهٔ آزاد (بازیابی در ۲۷ آذر ۱۳۹۲).