موضوع مقاله: تی‌سی‌ال | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # تی‌سی‌ال | مقدمه: در این تحقیقات، Ousterhout و دانشجویانش مجبور بودند برای هریک از این ابزارها یک زبان کنترل جداگانه طراحی کنند، اما به دلیل توجه بیشتر به خود ابزار (و نه زبان)، ابزارها عموماً دارای زبان‌های کنترل ضعیفی بودند. | ## بخش 1: تی‌سی‌ال | هدف این بود که مفسر زبان مجموعه‌ای از امکانات اولیه را (مانند متغیرها و ساختارهای کنترلی) فراهم آورد و هر یک از ابزارهای استفاده‌کننده از آن بتوانند ویژگی‌های مورد نظر خود را به آن اضافه کنند. زبان باید ساده و عمومی باشد، تا بتواند به آسانی با برنامه‌های گوناگون کار کند و امکاناتی را که این برنامه‌ها می‌توانند به زبان اضافه کنند محدود نکند. زبان باید امکانات خوبی برای ادغام داشته باشد، زیرا امکانات مهم‌تر زبان آنهایی است که توسط برنامه استفاده‌کننده به زبان افزوده شده‌است و کار اصلی زبان ادغام (integration) و پیوند دادن آن‌ها با یکدیگر است. نوآوری‌ها مهمترین نوآوریهای Tcl عبارتند از قابلیت جاسازی و آسانی تولید واسط کاربر گرافیکی. با ایجاد قابلیت جاسازی، مشکل بسیاری از افرادی که نیاز به یک زبان دارند، اما نمی‌خواهند یک زبان کامل را از ابتدا طراحی کنند حل شده است. به دلیل آسانی جاسازی Tcl در سایر برنامه‌ها، استفاده از آن در اوایل دهه ۹۰ به سرعت رشد کرد. این قابلیت نیز به امکان استفاده از Tcl برای تولید برنامه‌های بزرگتر و با واسط کاربر مناسب افزود و در کسترش استفاده از آن سهم به سزایی داشت. کاربردها برخی از کاربردهای Tcl به شرح زیر است[۱]: کاربردهای وب: از آنجا که Tcl یک زبان رشته-محور است برای برنامه‌های وبی مفید است. به علاوه کتابخانه‌های CGI برای Tcl موجود است که امکان استفاده از آن به عنوان یک زبان برنامه‌نویسی وب را فراهم می‌کند. همچنین بسته‌های wrapper ای وجود دارند که یک واسط واحد برای چند نوع پایگاه داده فراهم می‌کنند. البته می‌توان با استفاده از دستور variable اقدام به تعریف متغیر در یک فضای نام (علوم رایانه) کرد[۳]. | ## بخش 2: تی‌سی‌ال | با استفاده از دستور set می‌توان مقادیر را در متغیرها ذخیره و از آن‌ها بازیابی نمود. برای ذخیره : set x ۳۲ برای خواندن مقدار : set x برای استفاده از مقادیر یک متغیر از روش «جایگذاری متغیر» به شکل زیر استفاده می‌شود: expr $x+3 این دستور مقدار x+۳ را برمی‌گرداند. هنگامی که یک علامت دلار در عبارت ظاهر می‌شود، Tcl حروف و اعداد پس از آن را به عنوان نام متغیر تعبیر می‌کند و مقدار آن متغیر را به جای نام آن می‌گذارد[۱]. جایگذاری متغیر را می‌توان برای همه کلمه‌های یک دستور Tcl، مستقل از این که آن کلمه یک نام دستور یا یک آرگومان است، به کار برد؛ مثلاً عبارات زیر معادل عبارات قبلی است: set a expr set x ۳۲ $a $x+3 ساختارهای کنترلی Tcl مجموعه کاملی از دستورهای کنترلی شامل دستورهای اجرای شرطی، دستورهای حلقه و دستورهای زیربرنامه‌ای را دارد. دستورهای کنترلی Tcl دستورهایی عادی هستند که به عنوان آرگومان، اسکریپتهای Tcl می‌گیرند[۱]. می‌توان به وسیله توابعی که کتابخانه Tcl فراهم می‌کند، نام یک دستور و زیربرنامه اجراکنندهٔ آن (به زبان C و ++C) را به مفسر Tcl اطلاع داد. پس از این کار هر کجا که آن نام در اسکریپت Tcl ظاهر شود، مفسر همان تابع معرفی شده (به زبان C) را برای اجرای دستور فراخوانی می‌کند. به عبارت دیگر مفسر Tcl خود عبارات را ارزیابی نمی‌کند، بلکه تنها عمل دسته‌بندی آرگومانها، جایگذاری مقادیر و فراخوانی دستور را انجام می‌دهد. این دستور با عبارات ریاضی، شامل اعداد صحیح، اعشاری و مقادیر منطقی (boolean) سر و کار دارد. زبان Tcl مقادیر درون علامت نقل قول (” ”) را ارزیابی و به جای عبارات درون آن مقادیر لازم را قرار می‌دهد. رشته ها[۲] رشتهها واحد اساسی داده در Tcl هستند و به همین دلیل است که دستورهای زیادی برای کار با آن‌ها وجود دارد. | ## بخش 3: تی‌سی‌ال | برای توضیحات چند خطی می‌توان از قراردادن \ در پایان هر یک از خطوط استفاده کرد[۲]. می‌توان به اندیس به چشم کلید و به آرایه به دید مجموعه‌ای از عناصر که به وسیله کیلد قابل شناسایی هستند نگریست[۲]. قابلیت انعطاف آرایه‌ها آن‌ها را به ابزاری مهم برای برنامه‌نویسی در Tcl تبدیل می‌کند. در آغاز، Tcl دارای یک محدوده سراسری (global) برای متغیرها، محدوده‌های محلی درون زیربرنامه‌ها و یک محدوده سراسری برای زیربرنامه‌ها بود. از Tcl ۸٫۰ به بعد محدوده-نام‌ها به Tcl اضافه شد که محدوده جدیدی برای زیربرنامه‌ها و متغیرهای سراسری به وجود می‌آورد. نکته دیگر آنکه زیربرنامه‌ها و متغیرها دارای محدوده-نامهای جدا هستند بنابراین می‌توان بدون ایجاد مشکل، متغیر و زیربرنامه همنام داشت[۲]. متغیرهای تعریف شده در هر زیربرنامه، تنها در همان زیربرنامه قابل دسترسی و استفاده هستند. به علاوه متغیرهای سراسری در حالت عادی در برنامه‌ها قابل استفاده نیستند و برای استفاده از آن‌ها باید به شکل صریح (explicit) و با استفاده از دستور global آن‌ها را به سیستم معرفی کرد. همچنین متغیرهای تعریف شده در بلوکهای بالاتر نیز به حالت عادی در بلوک درونیتر قابل استفاده نیستند و باید به وسیله دستور upvar آن‌ها را به سیستم معرفی کرد[۳]. | ## جمع‌بندی | نمونه برنامه‌های کامل Tcl در زیر نمونه‌هایی از برنامه‌های کامل Tcl آورده شده‌است.