payamvha/North_RAG huggingface dataset:
غواصی برای آموزش غواصی تفریحی استفاده می‌شد و در انباری در داخل مجموعه ورزشی کشوری به انبارداری امیر رشیدی نگهداری می‌شد. شروع غواصی PADI در ایران شرکت کیتو (KITO - Kish International Tourism Organization) یک شرکت گردشگری بود که زیر نظر شرکت توسعه سیاحتی کیش فعالیت داشت. مدیران شرکت یعنی امیر وزیری، تحصیل کرده بازرگانی در انگلستان و امیر رستم بیگی، دانش‌آموخته توریسم و گردشگری در استرالیا بودند. این دو نفر با تأسیس این شرکت و چارتر کردن هتل شایان و دو پرواز شرکت آسمان به توسعه گردشگری در کیش پرداختند. شرکت
شرکت آسمان به توسعه گردشگری در کیش پرداختند. شرکت کیتو برای توسعه گردشگری اقدام به راه اندازی یک مدرسه غواصی نیز کرد. طرح و نقشه مدرسه غواصی کیش توسط یک کورس دایرکتور PADI به نام پل ال گیت که ساکن دبی و نفر برتر منطقه بود طراحی و اجرا شد و مدرسه غواصی کیش در سال ۱۳۷۶ با نام اختصاری KDS تأسیس شد. بعد از ساخت مدرسه، پل ال گیت یک مربی PADI دیگر به نام آنتوان پنتلیچ را برای توسعه غواصی PADI معرفی کرد. آنتوان پنتلیچ فردی دورگه یونانی و فرانسوی بود و در بسیاری از مناطق دنیا غواصی و فعالیت کرده بود. شرکت کیتو یک
مناطق دنیا غواصی و فعالیت کرده بود. شرکت کیتو یک قرارداد کاری با آنتوان پنتلیچ امضا کرد. و سپس مدرسه غواصی کیش را به تجهیزات مورد نیاز از جمله قایق غواصی، کمپرسور، وسایل و لوازم غواصی و تجهیزات امدادی مجهز کرد. این شرکت پس از تجهیز شروع به برگزاری دوره‌های آموزش غواصی PADI و همچنین غواصی تفریحی برای مسافران کرد. آنتوان پنتلیچ با کمک ماهیگیران محلی و صیادان مروارید به مناطقی از دریا سفر و مکان‌های غواصی را شناسایی و بررسی کرد. او با استفاده از شکل و شرایط آن محل به نام‌گذاری سایت‌های غواصی در جزیره کیش
آن محل به نام‌گذاری سایت‌های غواصی در جزیره کیش پرداخت. از دیگر اقدامات آنتوان پنتلیچ، برگزاری دوره‌های دایو مستری در ایران بود. اما بعد از مدتی در سال ۱۳۷۸ برخی از هنرجویان وی برای شرکت در دوره‌های مربیگری PADI به دبی سفر کرده و دوره‌های مربیگری خود را توسط پل ال گیت و یک مربی دیگر به اتمام رساندند. از نخستین مربیان PADI در ایران می‌توان به فراز دالایی، قاسم نرگسی، علی ستوده و علی موسوی اشاره کرد. آنتوان پنتلیچ به مدت ۴ سال در جزیره کیش حضور داشت و بعد از آن به تایلند رفت در جزیره کیش غواصی PADI همچنان
آن به تایلند رفت در جزیره کیش غواصی PADI همچنان توسط مربیان قدیمی و جدید آموزش داده می‌شود.
فورترن یک زبان برنامه‌نویسی همه-منظوره، کامپایل شونده و دستوری می‌باشد که مخصوصاً برای محاسبات عددی و علم محاسبه مناسب است. فورترن در گذشته به صورت حروف بزرگ FORTRAN نوشته می‌شده که کوته‌نوشت FORmula TRANslation می‌باشد. فورترن یک زبان برنامه‌نویسی کامپایل شونده برای محاسبات علمی و عددی است. این زبان در ابتدا برای برنامه‌های مهندسی و علمی در دهه ۱۹۵۰ توسط شرکت آی‌بی‌ام ایجاد شد و بیش از شش دهه است که در مسائل محاسباتی پیچیده همانند پیش‌بینی آب و هوا، تجزیه و تحلیل عناصر محدود، دینامیک سیالات محاسباتی، فیزیک
تحلیل عناصر محدود، دینامیک سیالات محاسباتی، فیزیک محاسباتی، کریستالوگرافی و شیمی محاسباتی مورد استفاده قرار گرفته‌است. این زبان در محاسبات با کارایی بالا و محک و رتبه‌بندی سریعترین ابررایانه‌ها رایج است. یکی از ویژگی‌های مهم فورترن سرعت بالا در کامپایل کردن کدهای محاسباتی است و دلیل آن بهینه بودن دستورها این زبان نسبت به زبان‌های دیگر است و با توجه به کمینه بودن تعداد کاراکترهای مورد نیاز برای ایجاد یک دستور و امکانات ترجیحی و اختیاری فراوان، کدهای نوشته‌شده با این زبان از حجم کمی برخوردار هستند و در زمان
با این زبان از حجم کمی برخوردار هستند و در زمان کوتاه اجرا شده و نتیجه خواهد داد. این امر به خصوص برای محاسبات عددی سنگین از اهمیت دوچندانی برخوردار است. نامگذاری. نام نسخه‌های قبلی این زبان با حروف بزرگ بیان می‌شد و FORTRAN 77 آخرین نسخه‌ای بود که در آن استفاده از حروف کوچک در کلمات اصلی غیراستاندارد بشمار می‌رفت. در نسخه‌های جدیدتر از fortran90 این استاندارد حذف شد. تاریخچه. دراواخر سال ۱۹۵۳، جان بکوس (John Backus) پیشنهادی جهت جایگزینی یک برنامه عملی‌تر برای زبان اسمبلی برنامه‌نویسی IBM 704 ارائه کرد.
برای زبان اسمبلی برنامه‌نویسی IBM 704 ارائه کرد. تیم برنامه‌نویسان گذشته فورترن شامل ریچارد گلدبرگ، شلدون بِست، هارلان هریک، پیتر شریدان، روی نوت، رابرت نلسون، ایروینگ زیلر، هارولد استرن، لوییزهایت و دیوید سیر بود. هدف اصلی ورود آسان‌تر معادلات به رایانه بود که ایده آن توسط J. Halcombe Laning توسعه یافت. پیشنویس مشخصات سیستم ترجمه فرمول ریاضی در نوامبر سال ۱۹۵۲ تکمیل شد و اولین کتابچه راهنمای‌آن، در اکتبر ۱۹۵۶ آماده‌شد و با اولین کامپایلر فورترن در آوریل ارائه شد. این اولین کامپایلر بهینه‌ساز بود. مشتریان
شد. این اولین کامپایلر بهینه‌ساز بود. مشتریان زمانی تمایل به استفاده از زبان سطح بالا دارند که عملکرد کد تولید شده توسط کامپایلر مشابه عملکرد کداسمبلی دست‌نویس باشد. درحالی‌که برنامه نویسان در عملکرد بهتر این نوع برنامه‌نویسی نسبت به کداسمبلی دست‌نویس تردید داشتند، کاهش بالای تعداد عبارات برنامه‌نویسی توجه برنامه‌نویسان را جلب کرد. جان بکوس در طی مصاحبه ای در سال، گفت: "بخش عمده‌ای از کار من از تنبلی ناشی شده‌است. من نوشتن برنامه‌ها را دوست نداشتم، بنابراین هنگامی که در IBM 701 کار می‌کردم، برنامه‌هایی
هنگامی که در IBM 701 کار می‌کردم، برنامه‌هایی برای محاسبات می‌نوشتم. پس شروع به کار بر روی یک سیستم برنامه نویسی کردم تا نوشتن برنامه‌ها آسان‌تر شود. " دانشمندان این زبان را بسیار مناسب برای برنامه های‌فشرده عددی دانستند و نویسندگان کامپایلر را، برای نوشتن کامپایلر با سرعت و کارامدی بیشتر ترغیب کردند. گنجایش این زبان برای داده‌های عددی بسیار پیچیده، آن را برای برنامه‌های فنی به‌خصوص در مهندسی برق مناسب نموده‌است. تا سال ۱۹۶۰ نسخه‌های فورترن برای رایانه‌های 1620 IBM ۱۰۹، IBM 650، IBM و 7090 IBM در دسترس
1620 IBM ۱۰۹، IBM 650، IBM و 7090 IBM در دسترس بود. محبوبیت روزافزون این زبان، سازندگان آن را تشویق‌کرد بطوری‌که تا سال ۱۹۶۳، بیش از ۴۰ کامپایلر فورترن دردسترس بود. توسعه فورترن به موازات سیرتکاملی کامپایلر بود و به همین دلیل بسیاری از پیشرفت‌های تئوری و طراحی کامپایلر در جهت رفع نیازهای فورترن برای ایجاد کد کارامدتر ایجادشد. علم و مهندسی. اگرچه نویسندگان بیسیک فورترن را قدیمی توصیف کرده بودند، اکنون چندین دهه است که این زبان مورد استفاده قرار گرفته‌است. جی پاساکوف در سال ۱۹۸۴ نوشت: «دانشجویان فیزیک و نجوم
پاساکوف در سال ۱۹۸۴ نوشت: «دانشجویان فیزیک و نجوم باید فورترن را بیاموزند و بعید به نظر می‌رسد دانشمندان به دیگر زبان‌های پاسکال، مدولا یا هر چیز دیگری روی‌آورند.» در سال ۱۹۹۳، سیسیل لیث، فورترن را «زبان مادری محاسبات علمی» خواند و افزود: «جایگزینی آن با هر زبان دیگر ممکن است یک امید فراموش شده باقی بماند.» فورترن یک زبان اولیه برای برخی کارهای حجیم در ابرکامپیوترها مانند نجوم، مدل‌سازی آب و هوا، شیمی محاسباتی، اقتصاد محاسباتی، دینامیک سیالات محاسباتی، فیزیک محاسباتی، تجزیه و تحلیل داده‌ها، مدل‌سازی
فیزیک محاسباتی، تجزیه و تحلیل داده‌ها، مدل‌سازی هیدرولوژیکی، جبرخطی عددی و کتابخانه‌های عددی (LAPACK, IMSL و NAG)، بهینه‌سازی، شبیه‌سازی ماهواره، مهندسی سازه و پیش‌بینی وضعیت هوا است. کدهای مدرن‌تر در علوم محاسباتی از کتابخانه‌ها استفاده می‌کنند، از جمله METIS برای تقسیم‌بندی نمودار، PETSc یا Trilinos برای جبر خطی و غیره که در سی نیز استفاده می‌شد. از اوایل سال ۲۰۰۰ بسیاری از کتابخانه‌های پشتیبان مورد استفاده قرار گرفتند و ازطرفی زبان های‌دیگر مانند متلب، پایتون و آر در برخی حوزه‌های علوم محاسباتی رایج
پایتون و آر در برخی حوزه‌های علوم محاسباتی رایج شدند. به همین دلیل، امکاناتی برای ارتباط سی با Fortran ۲۰۰۳ فراهم شد. ویژگی‌های زبان. قابلیت حمل. قابلیت حمل در ابتدا با مشکلاتی همراه بود زیرا هیچ استانداردی مورد توافق قرار نمی‌گرفت. استانداردها قابلیت حمل را بهبود بخشیده‌اند. استاندارد ۱۹۹۶ یک اصطلاح مرجع و معناشناسی را ارائه می‌داد، اما مجدد به ناسازگاری ادامه دادند. برنامه‌نویسان متوجه بودند، استفاده از ناسازگاری‌ها سبب بروز مشکلات در حمل می‌شود، پس از برنامه‌هایی مانند The PFORT Verifier استفاده
از برنامه‌هایی مانند The PFORT Verifier استفاده می‌کردند. بعد از استاندارد ۱۹۷۷، دفتر ملی استاندارد FIPS PUB 69 را منتشر کرد که پردازنده‌های خریداری شده توسط دولت ایالات متحده ملزم به تشخیص استاندارد بودند. ناسازگاری و عدم رعایت استاندارد تنها مشکل قابلیت حمل نبودند. برای محاسبات عددی، در نظر گرفتن ویژگی‌های حساب مهم است. اتخاذ (در حال حاضر تقریباً جهانی) استاندارد IEEE 754 برای حساب ممیزشناور باینری، این مشکل را حل کرد. دسترسی به محیط محاسبات برای مثال خط فرمان برنامه، متغیرهای محیط و غیره همچنان مشکل
خط فرمان برنامه، متغیرهای محیط و غیره همچنان مشکل ایجاد می‌کرد که در سال ۲۰۰۳ برطرف شد. در حال حاضر نوشتن یک برنامهٔ قابل حمل در فورترن امکان‌پذیر است. انواع. Fortran 5. دراواخر دهه ۱۹۷۰و اوایل دهه ۱۹۸۰، برای رایانه‌های Eclipse, MV و Nova عرضه‌شد که کامپایلر بهینه‌ساز خوبی برای کامپیوترهای زمان خود بشمار می‌رفت. FORTRAN V. درسال ۱۹۶۸در سریال 6600 CDC عرضه شد و مبتنی بر FORTRAN IV بود. Fortran 6. فورترن۶ یا Visual Fortran 2001 توسط ماکروسافت مجاز شد و رابط محیط Visual Studio 5 را برای Compaq v6 ارائه‌داد.
محیط Visual Studio 5 را برای Compaq v6 ارائه‌داد. گونه‌های مختلف. عرضه‌کنندگان کامپیوترهای علمی عملکرد بالا (مثال:، (CDC)، (به انگلیسی )، هانی‌ول، آی‌بی‌ام، تگزاس اینسترومنتس، و یونی‌وک) افزونه‌های فورترن را اضافه کردند تا از قابلیت‌های سخت‌افزاری مانند حافظه نهان دستور، خط لوله‌های (به انگلیسی ) واحد پردازش مرکزی، و آرایه‌های برداری بهره ببرند. برای مثال، یکی از کامپایلرهای فورترن شرکت آی‌بی‌ام، سطحی از بهینه‌سازی را داشت که ترتیب دستورهای را عوض می‌کرد تا واحدهای محاسباتی داخلی مختلف را همزمان مشغول نگه
واحدهای محاسباتی داخلی مختلف را همزمان مشغول نگه دارد. یک مثال دیگر CFD است، یک گونهٔ خاص از فورترن که مخصوص ابرکامپیوتر ایلیاک ۴ (به انگلیسی ) ساخته شده‌است. این کامپیوتر در مرکز تحقیقات ایمز متعلق به ناسا قرار دارد. هم چنین آزمایشگاه‌های تحقیقاتی آی‌بی‌ام، یک نسخهٔ توسعه‌یافته از یک زبان مبتنی بر فورترن به نام "وکترن" را برای پردازش بردارها و ماتریس‌ها ایجاد کردند. یک افزونه شیءگرا از فورترن بود که در آن می‌توانستیم داده‌ها را در اشیاء مختلف گروه‌بندی کنیم. نمونه‌های اشیاء می‌توانستند به صورت موازی با
نمونه‌های اشیاء می‌توانستند به صورت موازی با یکدیگر ساخته شوند و توابعشان را اجرا کنند. فورترن شیءگرا برای کامپیوترهای سان، ، و موجود بود، اما الان دیگر پشتیبانی نمی‌شود. افزونه‌های این‌چنینی که مختص یک یا چند ماشینند یا در طول زمان از بین رفتند، یا عناصری از آنها در استانداردهای اصلی گنجانده شد. مهم‌ترین افزونهٔ باقی‌مانده اپن ام‌پی است که یک افزونهٔ چندپلتفرمه برای برنامه‌نویسی با حافظهٔ مشترک است. یک افزونه جدید است که برای پشتیبانی برنامه‌نویسی موازی در نظر گرفته شده. FOR TRANSIT برای ماشین آی‌بی‌ام
در نظر گرفته شده. FOR TRANSIT برای ماشین آی‌بی‌ام ۶۵۰. یک نسخهٔ ساده شده از زبان فورترن ماشین بود، که برای ماشین آی‌بی‌ام ۶۵۰ پیاده‌سازی شد. برای این کار از یک برنامهٔ مترجم ساخت دهه ۱۹۵۰ دانشگاه کارنگی استفاده شد. توضیح زیر در راهنمای مرجع آی‌بی‌ام آمده‌است سیستم فورترن برای ماشینی پیچیده‌تر از ماشین آی‌بی‌ام ۶۵۰ ساخته شده بود، و بنابراین بعضی از ۳۲ دستور موجود در راهنمای برنامه‌نویسان فورترن برای سیستم فور ترنزیت مورد قبول نیستند. بعلاوه، برخی محدودیت‌ها به زبان فورترن اضافه شده‌اند. با این حال، هیچ‌کدام
زبان فورترن اضافه شده‌اند. با این حال، هیچ‌کدام از این محدودیت‌ها موجب آن نمی‌شوند که یک کد منبع که برای فورترن نوشته شده‌است برای سیستم فورترن ماشین ناسازگار باشد. دستورهای مجاز این‌ها بودند: در هر برنامه استفاده از حداکثر ۱۰ رویه (زیرروال) ممکن بود. دستورهای FOR TRANSIT به ستون ۷ تا ۵۶ کارت پانچ (به انگلیسی ) محدود می‌شدند. کارت پانچ‌ها به عنوان ورودی و خروجی آی‌بی‌ام ۶۵۰ استفاده می‌شدند. سه بار عبور لازم بود تا کد منبع به زبان "IT" ترجمه شود، و بعد دستورهای IT کامپایل شده و به زبان اسمبلی سوپ(SOAP)
IT کامپایل شده و به زبان اسمبلی سوپ(SOAP) ترجمه شود، و نهایتاً برنامه به زبان مقصد (کد ماشین) تولید شود، بعد می‌توان آن را درون ماشین بارگذاری کرد تا برنامه را اجرا کند (برای داده ورودی از کارت پانچ استفاده می‌شود، نتیجه را هم روی کارت پانچ خروجی می‌دهد) زبانهای مبتنی بر فورترن. قبل از فورترن ۷۷، به‌طور معمول تعدادی پیش‌پردازنده برای میسر ساختن یک زبان مناسب تر مورد استفاده قرار می‌گرفتند، با این مزیت که کد پیش پردازش شده می‌توانست روی هر ماشینی که یک کامپایلر استاندارد فورترن داشت کامپایل شود. این پیش
استاندارد فورترن داشت کامپایل شود. این پیش پردازنده‌ها معمولاً از برنامه‌نویسی ساختاریافته، اسامی با طول بیش از ۶ کاراکتر برای متغیرها، نوع داده‌های اضافه، کامپایل شرطی برنامه، و حتی قابلیت‌های ماکرو پشتیبانی می‌کردند. پیش‌پردازنده‌های متداول شامل , ، ، SFtran, S-Fortran, رتفور و می‌شدند. برای مثال، رتفور و رتفیو یک زبان شبیه سی پیاده‌سازی می‌کردند و کد پیش‌پردازش‌شده را به زبان فورترن ۶۶ خروجی می‌دادند. علی‌رغم پیشرفت‌ها در زبان فورترن، پیش‌پردازنده‌ها هم چنان برای کامپایل شرطی برنامه‌ها و جایگزینی
هم چنان برای کامپایل شرطی برنامه‌ها و جایگزینی ماکروها مورد استفاده قرار می‌گیرند. یکی از افزونه‌های فورترن که برای پشتیبانی برنامه‌نویسی سیستم‌ها عرضه شد، زبان LRLTRAN در آزمایشگاه ملی لارنس برکلی و با هدف پشتیبانی از محاسبات برداری و ذخیره‌سازی پویا ایجاد شد. این توزیع، سیستم عامل LTSS را شامل می‌شد. بسیاری از کامپایلرهای فورترن، بخش‌هایی از را در خود ادغام کرده‌اند. یک پیش‌پردازندهٔ فورترن مخصوص کاربردهای خاص برای مدلسازی و شبیه‌سازی سیستم‌های گسسته (به انگلیسی ) بزرگ است. زبان برنامه‌نویسی F طراحی شد
انگلیسی ) بزرگ است. زبان برنامه‌نویسی F طراحی شد تا زیرمجموعه مرتبی از فورترن ۹۵ باشد که هدفش حذف کردن قابلیت‌های زائد، بدون‌ساختار و منسوخ‌شدهٔ فورترن، مثل دستور بود. اف قابلیت‌های آرایه را که در فورترن ۹۰ اضافه شده بود حفظ می‌کند و دستورهای کنترلی ای که توسط مفاهیم برنامه‌نویسی ساخت‌یافته منسوخ شده بودند را حذف می‌کند. این دستورهای هم به فورترن ۷۷ اضافه شده بودند هم به فورترن ۹۰. سازندگان زبان اف آن را "یک زبان برنامه نویسی کامپایل شده و ساختاریافته برای آرایه‌ها توصیف کردند که "خصوصاً برای آموزش و
برای آرایه‌ها توصیف کردند که "خصوصاً برای آموزش و محاسبات علمی مناسب است". لاهی و فوجیتسو تیم مشترک تشکیل دادند تا یک زبان فورترن برای چارچوب دات‌نت مایکروسافت خلق کنند. زبان Silverfrost FTN95 هم توانایی ایجاد کد دات‌نت را دارد. نمونه کد. اطلاعات بیشتر در: برنامه زیر تخصیص حافظهٔ پویا و عملیات روی آرایه‌ها را شرح می‌دهد که دو قابلیت معرفی شده در فورترن ۹۰ هستند. به‌طور خاص نبود حلقه‌های و دستورهای برای تغییر دادن آرایه شایان ذکر است که در عوض عملیات ریاضی روی کل آرایه به عنوان یک موجودیت اعمال می‌شود.
روی کل آرایه به عنوان یک موجودیت اعمال می‌شود. بعلاوه، نامگذاری متغیرها به گونه ای که نام متغیر، آن را توصیف کند، و قالب کلی کد که مطابق با شیوه برنامه‌نویسی امروزی است نیز آشکار است. این مثال، میانگین داده‌هایی که در تعامل با کاربر از ورودی گرفته می‌شود را محاسبه می‌کند. program average ! تعدادی عدد را از ورودی می‌خواند و میانگینش را می‌دهد ! همان‌طور که نوشته شده، اگر هیچ داده‌ای موجود نباشد، صفر را به عنوان میانگین برمی‌گرداند ! ممکن است در آن حالت برگرداندن میانگین صفر رفتار مطلوب برنامه نباشد، اما این
میانگین صفر رفتار مطلوب برنامه نباشد، اما این کار باعث سادگی برنامه می‌شود implicit none real, dimension(:), allocatable :: points integer :: number_of_points=0.0 real :: average_points=0., positive_average=0., negative_average=0. ! تعداد اعداد را از ورودی دریافت می‌کند و در متغیر number_of_points می‌ریزد write (*,*) "Input number of points to average:" read (*,*) number_of_points allocate (points(number_of_points)) write (*,*) "Enter the points to average:" read (*,*) points ! با بدست آوردن مجموع اعداد و
read (*,*) points ! با بدست آوردن مجموع اعداد و تقسیم آن بر تعدادشان، میانگینشان را به دست می‌آورد if (number_of_points &gt; 0) average_points = sum(points) / number_of_points ! مجموع اعداد بزرگتر از صفر را پیدا می‌کند و تقسیم بر تعدادشان می‌کند که می‌شود میانگین اعداد مثبت if (count(points &gt; 0.) &gt; 0) then positive_average = sum(points, points &gt; 0.) / count(points &gt; 0.) end if ! مجموع اعداد کوچکتر از صفر را پیدا می‌کند و تقسیم بر تعدادشان می‌کند که می‌شود میانگین اعداد منفی if (count(points
که می‌شود میانگین اعداد منفی if (count(points &lt; 0.) &gt; 0) then negative_average = sum(points, points &lt; 0.) / count(points &lt; 0.) end if deallocate (points) ! حالا نتیجه رادر خروجی چاپ می‌کند write (*,'(a,g12.4)') 'Average = ', average_points write (*,'(a,g12.4)') 'Average of positive points = ', positive_average write (*,'(a,g12.4)') 'Average of negative points = ', negative_average end program average
زبان Tcl (مخفف Tool Command Language - زبان کنترل ابزار) حاصل تحقیقات John Ousterhout روی ابزارهای رایانه‌ای طراحی مدارهای الکتریکی در دانشگاه برکلی است. در این تحقیقات، Ousterhout و دانشجویانش مجبور بودند برای هریک از این ابزارها یک زبان کنترل جداگانه طراحی کنند، اما به دلیل توجه بیشتر به خود ابزار (و نه زبان)، ابزارها عموماً دارای زبان‌های کنترل ضعیفی بودند. در پاییز سال ۱۹۸۷، در آزمایشگاه شرکت DEC، این ایده به ذهن Ousterhout رسید که یک زبان فرمان قابل جاسازی(Emdeddable Command Language) طراحی کند. یک
جاسازی(Emdeddable Command Language) طراحی کند. یک زبان مفسری (Interpreted) خوب که بتواند به عنوان یک بسته کتابخانه‌ای در برنامه‌های گوناگون استفاده شود. هدف این بود که مفسر زبان مجموعه‌ای از امکانات اولیه را (مانند متغیرها و ساختارهای کنترلی) فراهم آورد و هر یک از ابزارهای استفاده‌کننده از آن بتوانند ویژگی‌های مورد نظر خود را به آن اضافه کنند. Ousterhout در سال ۱۹۸۸ پس از بازگشت از آزمایشگاه DEC، کار بر روی Tcl را شروع کرد و نخستین نسخه آن را در یک متن پرداز (Text Editor) گرافیکی به کار گرفت. در ابتدا این
(Text Editor) گرافیکی به کار گرفت. در ابتدا این کار فقط جنبه تحقیقاتی داشت و Ousterhout گمان نمی‌کرد دیگران هم به استفاده از آن علاقه‌مند باشند. فلسفه زبان. نیاز به امکان جاسازی (Embeddability) قابلیت ویژه زبان Tcl است و به گفته Ousterhout باعث می‌شود که اهداف زیر برای زبان در نظر گرفته شود: نوآوری‌ها. مهمترین نوآوریهای Tcl عبارتند از قابلیت جاسازی و آسانی تولید واسط کاربر گرافیکی. با ایجاد قابلیت جاسازی، مشکل بسیاری از افرادی که نیاز به یک زبان دارند، اما نمی‌خواهند یک زبان کامل را از ابتدا طراحی کنند حل
نمی‌خواهند یک زبان کامل را از ابتدا طراحی کنند حل شده است. به دلیل آسانی جاسازی Tcl در سایر برنامه‌ها، استفاده از آن در اوایل دهه ۹۰ به سرعت رشد کرد. قابلیت دیگر Tcl، مجموعه ابزار Tk است که به عنوان گسترشی بر Tcl تولید شد و امکان ایجاد واسط کاربر گرافیکی با استفاده از ادغام مؤلفه(component)ها را به وسیله Tcl فراهم آورد. این قابلیت نیز به امکان استفاده از Tcl برای تولید برنامه‌های بزرگتر و با واسط کاربر مناسب افزود و در کسترش استفاده از آن سهم به سزایی داشت. کاربردها. برخی از کاربردهای Tcl به شرح زیر
داشت. کاربردها. برخی از کاربردهای Tcl به شرح زیر است[۱]: علاوه بر کابردهای فوق، کاربردهای دیگر تحقیقاتی از Tcl نیز مشاهده شده‌است. به عنوان مثال در سیستم‌های رباتیک از زبان Tcl استفاده شده‌است[۴]. همچنین این زبان در توسعه سریع نرم‌افزار (Rapid Application Development) نیز استفاده شده‌است[۵]. بررسی زبان شناختی (ساختار و نحو زبان). برنامه‌های Tcl تشکیل شده‌اند از دستورهایی که با semicolon یا با رفتن به خط جدید (newline) از هم جدا شده‌اند. هر دستور از تعدادی کلمه تشکیل شده‌است که با فاصله از هم جدا شده‌اند.
کلمه تشکیل شده‌است که با فاصله از هم جدا شده‌اند. همهٔ دستورهای Tcl مقدار برمی‌گردانند. اگر برگرداندن مقدار برای دستوری معنا نداشته باشد، یک رشتهٔ تهی برمی‌گرداند. متغیرها. در Tcl نیازی به تعریف متغیر نیست. هر متغیری در اولین دفعه استفاده آن، تعریف می‌شود. همچنین متغیرها در Tcl دارای نوع نیستند. هر متغیری می‌تواند هر مقداری بگیرد[۱]. البته می‌توان با استفاده از دستور variable اقدام به تعریف متغیر در یک فضای نام (علوم رایانه) کرد[۳]. با استفاده از دستور set می‌توان مقادیر را در متغیرها ذخیره و از آن‌ها
set می‌توان مقادیر را در متغیرها ذخیره و از آن‌ها بازیابی نمود. برای ذخیره : set x ۳۲ برای خواندن مقدار : set x برای استفاده از مقادیر یک متغیر از روش «جایگذاری متغیر» به شکل زیر استفاده می‌شود: expr $x+3 این دستور مقدار x+۳ را برمی‌گرداند. هنگامی که یک علامت دلار در عبارت ظاهر می‌شود، Tcl حروف و اعداد پس از آن را به عنوان نام متغیر تعبیر می‌کند و مقدار آن متغیر را به جای نام آن می‌گذارد[۱]. جایگذاری متغیر را می‌توان برای همه کلمه‌های یک دستور Tcl، مستقل از این که آن کلمه یک نام دستور یا یک آرگومان است، به
این که آن کلمه یک نام دستور یا یک آرگومان است، به کار برد؛ مثلاً عبارات زیر معادل عبارات قبلی است: set a expr set x ۳۲ $a $x+3 ساختارهای کنترلی. Tcl مجموعه کاملی از دستورهای کنترلی شامل دستورهای اجرای شرطی، دستورهای حلقه و دستورهای زیربرنامه‌ای را دارد. دستورهای کنترلی Tcl دستورهایی عادی هستند که به عنوان آرگومان، اسکریپتهای Tcl می‌گیرند[۱]. به عنوان مثال دستور proc که برای تعریف زیربرنامه به کار می‌رود، سه آرگومان می‌گیرد: نام زیربرنامه، لیست نام پارامترهای آن، و بدنه زیربرنامه که یک اسکریپت Tcl است: proc
آن، و بدنه زیربرنامه که یک اسکریپت Tcl است: proc power {base p} { set result 1 while {$p&gt; ۰} { set result [expr $result * $base] set p [expr $p - 1] return $result مشابها دستور while که در بالا مشاهده می‌شود، یک دستور Tcl است که دو آرگومان می‌گیرد: یک عبارت که همان عبارت شرط است و یک بدنه که یک اسکریپت Tcl است. از این زیربرنامه می‌توان به شکل زیر استفاده کرد: power 2 6 power 1.15 5 دستورها و عبارت‌ها. همهی امکانات اساسی Tcl به وسیله دستورها نمایش داده می‌شوند. حتی عبارات نیز به وسیله اجرای دستورهای و به
حتی عبارات نیز به وسیله اجرای دستورهای و به عنوان خروجی آن‌ها محاسبه می‌شوند. قالب معمول دستورهای Tcl به شکل زیر است [۲]: command arg1 arg2 arg۳ …... دستورهای Tcl به سه دسته تقسیم می‌شوند [۱]: چنان‌که گفته شد عبارات در Tcl به وسیله اجرای دستور ارزیابی می‌شوند. به عبارت دیگر مفسر Tcl خود عبارات را ارزیابی نمی‌کند، بلکه تنها عمل دسته‌بندی آرگومانها، جایگذاری مقادیر و فراخوانی دستور را انجام می‌دهد. به همین دلیل در Tcl از دستور expr برای ارزیابی عبارات ریاضی استفاده می‌شود[۲]. دستور expr با آرگومانهای خود به
می‌شود[۲]. دستور expr با آرگومانهای خود به شکل عبارت ریاضی برخورد می‌کند[۱]. این دستور با عبارات ریاضی، شامل اعداد صحیح، اعشاری و مقادیر منطقی (boolean) سر و کار دارد. قواعد حاکم بر عبارات expr همان است که بر عبارات در زبانC حاکم است[۲]. به علاوه دستور expr برخی توابع اولیه ریاضی را نیز پشتیبانی می‌کند. به عنوان مثال [۲]: set len [expr [string length foobar] ] که مقدار طول رشته foobar را (که برابر با۶ است) محاسبه می‌کند و: set pi [expr {۲*asin(1.0)}] که مقدار عدد pi را محاسبه می‌کند. زبان Tcl مقادیر درون
عدد pi را محاسبه می‌کند. زبان Tcl مقادیر درون علامت نقل قول (” ”) را ارزیابی و به جای عبارات درون آن مقادیر لازم را قرار می‌دهد. به قراردادن یک عبارت در آکولاد ({ }) می‌توان از این کار جلوگیری کرد: set name Ali ”My name is $name” دستور دوم مقدار My name is Ali را برمی‌گرداند در حالی که دستور سوم مقدار My name is $name را برمی‌گرداند. رشته ها[۲]. رشتهها واحد اساسی داده در Tcl هستند و به همین دلیل است که دستورهای زیادی برای کار با آن‌ها وجود دارد. دستور string مجموعه‌ای است از عملیات قابل انجام بر روی
string مجموعه‌ای است از عملیات قابل انجام بر روی رشته‌ها. نمونه‌ای از این عمل را در مثال بالا در بحث عبارتها مشاهده می‌کنیم. اولین آرگومان این دستور نام عملی است که باید انجام گیرد. برخی از اعمال مجاز عبارتند از: bytelength, compare, equal, first, index, is, last, length, map, match, range, repeat, replace, tolower, totitle, toupper, trim, trimleft, trimright, wordend, wordstart Tcl امکاناتی را برای کار با اندیسها در رشته‌ها فراهم می‌کند. کاراکترها در رشته از ۰ شمرده می‌شوند. به عنوان مثال دستور زیر
رشته از ۰ شمرده می‌شوند. به عنوان مثال دستور زیر کاراکترهای سوم تا آخر رشته با نام name را برمی‌گرداند؛ مثلاً اگر name حاوی مقدار ahmadi باشد: string range $name 3 end مقدار adi را برمی‌گرداند. برخی از اندیسهای قابل استفاده در این دستورهای عبارتند از: first, last, wordstart, wordend همچنین دستور string امکاناتی را برای بررسی تطابق یک رشته با یک رشته دیگر و نیز تعلق یک رشته به یک کلاس خاص (مثلاً عدد بودن محتویات یک رشته) فراهم می‌کند. Tcl همچنین دستورهایی مانند append, scan, format, binary را برای عملیات
مانند append, scan, format, binary را برای عملیات پیشرفته روی رشته‌ها فراهم می‌کند. توضیحات (Comments). در زبان Tcl از علامت # برای مشخص کردن توضیحات برنامه استفاده می‌شود. هر توضیح یک خط را اشغال می‌کند. برای توضیحات چند خطی می‌توان از قراردادن \ در پایان هر یک از خطوط استفاده کرد[۲]. در زیر مثال‌هایی از توضیحات Tcl مشاهده می‌شود. and here is the rest of the line above لیست‌ها. یکی از قابلیتها در زبان Tcl، امکان کار با لیستهاست. برخی از دستورهای کار با لیستها عبارتند از[۲] : list, lindex, llength, lrange,
عبارتند از[۲] : list, lindex, llength, lrange, lappend, linsert, lsearch, lreplace, … لیستها در Tcl دارای دو کاربرد عمده هستند [۳]: البته لیستها وسیله مناسبی برای ساخت دادهساختارهای پیچیده در Tcl نیستند و برای چنین کاری استفاده از آرایه‌ها مناسبتر است [۲]. یک نمونه از کاربرد دستورهای لیست در Tcl در زیر آمده‌است[۳]: Bob Carol ٪ set c۲ [list Ted Alice] Ted Alice ٪ set Party1 [list $c۱ $c2] ٪ set Party2 [concat $c۱ $c2] Bob Carol Ted Alice ٪ linsert $Party1 1 Richard آرایه‌ها. آرایه یک متغیر Tcl با اندیسهای
Richard آرایه‌ها. آرایه یک متغیر Tcl با اندیسهای رشته‌ای است. می‌توان به اندیس به چشم کلید و به آرایه به دید مجموعه‌ای از عناصر که به وسیله کیلد قابل شناسایی هستند نگریست[۲]. از این نظر، می‌توان گفت آرایه‌های Tcl مانند Hashها در زبان Perl هستند [۳]. قابلیت انعطاف آرایه‌ها آن‌ها را به ابزاری مهم برای برنامه‌نویسی در Tcl تبدیل می‌کند. یکی از استفاده‌های مهم آرایه‌ها در Tcl ایجاد دادهساختارهای پیچیده‌است که در زبان‌هایی مثل C و Pascal به وسیله مفاهیمی مانند struct و record تعریف می‌شوند[۲]. در زیر نمونهای از
و record تعریف می‌شوند[۲]. در زیر نمونهای از کاربرد آرایه‌ها در Tcl دیده می‌شود[۳]: ٪ set People(friend) Tom Tom ٪ set People(spouse) Marcia Marcia ٪ set People(boss) Jack Jack ٪ array names People friend boss spouse ٪ set Person $People(friend) Tom ٪ array get People friend Tom boss Jack spouse Marcia ٪ set People(friend) \ [concat $People(friend) Bob] Tom Bob ٪ set Person $People(friend) Tom Bob زیربرنامه‌ها و محدوده‌ها. چنان‌که گفته شد زیربرنامه‌ها امکان کپسولهسازی (encapsulation) دستورهای در قالب یک