اسنوبول

اسنوبول (یک زبان سمبلیک و کاراکترگرا) در واقع تلفیقی از مجموعه زبانهای برنامه‌نویسی که بین سالهای ۱۹۶۲ تا ۱۹۶۷ درآزماشگاه بل توسط افرادی نظیردیوید فاربر، رالف گریسولد و ایوان پلونسکی توسعه پیدا کرده‌اند می‌باشد که این کار در زبان اسنوبول۴ به اوج خودش رسید
این زبان یکی از بیشمار زبان کاراکتر گراست که بین سالهای ۱۹۵۰تا۱۹۶۰ توسعه پیدا کرده‌است این درحالی است که بقیه زبانها دارای پردازنده کاراکتر تریس یا کامیت می‌بودند.
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. Its 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