تي سي ال
| نموذج | متعدد النماذج : مدفوع بالأحداث ، وظيفي ، إلزامي ، موجه نحو الكائنات |
|---|---|
| صمم بواسطة | جون أوسترهوت |
| المطور | فريق Tcl الأساسي [1] |
| ظهرت لأول مرة | 1988 |
| إصدار مستقر | 9.0.0 [2]
/ 26 سبتمبر 2024 |
| الانضباط في الطباعة | الكتابة الديناميكية ، كل شيء عبارة عن سلسلة |
| رخصة | نمط BSD [3] |
| ملحقات اسم الملف | .tcl، .tbc [4] |
| موقع إلكتروني | www.tcl-lang.org www.tcl.tk |
| التنفيذات الرئيسية | |
| ActiveTcl أندرويش | |
| اللهجات | |
| جيم، النسر | |
| متأثر بـ | |
| AWK ، ليسب | |
| متأثر | |
| PHP ، [5] PowerShell ، [6] Tea ، TH1 [7] | |
Tcl (تُلفظ " تيكيل " أو كحرف أولي [8] ) هي لغة برمجة ديناميكية عالية المستوى ومفسرة ومتعددة الأغراض . وقد صُممت بهدف أن تكون بسيطة للغاية ولكنها قوية. [9] تُلقي Tcl كل شيء في قالب الأمر ، حتى هياكل البرمجة مثل تعيين المتغيرات وتعريف الإجراءات. [10] تدعم Tcl أنماط برمجة متعددة ، بما في ذلك الأنماط الموجهة للكائنات ، والإلزامية ، والوظيفية ، والإجرائية .
تُستخدم عادةً مضمنة في تطبيقات C ، [11] للنماذج الأولية السريعة والتطبيقات النصية وواجهات المستخدم الرسومية والاختبار. [12] تتوفر مفسرات Tcl للعديد من أنظمة التشغيل ، مما يسمح بتشغيل كود Tcl على مجموعة متنوعة من الأنظمة. نظرًا لأن Tcl لغة مضغوطة للغاية، يتم استخدامها على منصات الأنظمة المضمنة ، سواء في شكلها الكامل أو في العديد من الإصدارات الأخرى ذات البصمة الصغيرة. [13]
يُشار إلى التركيبة الشائعة بين Tcl وامتداد Tk باسم Tcl/Tk (تُلفظ "tickle teak" أو كحرف أولي ) وتتيح بناء واجهة مستخدم رسومية (GUI) بشكل أصلي في Tcl. يتم تضمين Tcl/Tk في تثبيت Python القياسي في هيئة Tkinter .
تاريخ
تم إنشاء لغة برمجة Tcl في ربيع عام 1988 بواسطة جون أوسترهوت أثناء عمله في جامعة كاليفورنيا، بيركلي . [14] [15] وفقًا للمؤلف، "ولدت في الأصل من الإحباط"، [11] حيث ابتكر المبرمجون لغاتهم الخاصة لتوسيع برامج أتمتة التصميم الإلكتروني (EDA)، وبشكل أكثر تحديدًا، أداة تصميم VLSI Magic ، والتي كانت محورًا احترافيًا لجون في ذلك الوقت. [16] في وقت لاحق، اكتسبت Tcl القبول بمفردها. حصل أوسترهوت على جائزة نظام برمجيات ACM في عام 1997 عن Tcl/Tk. [17]
الاسم يأتي في الأصل من لغة الأوامر ، ولكن يتم كتابته تقليديًا Tcl بدلاً من TCL . [ 18]
| تاريخ | حدث |
|---|---|
| يناير 1990 | أعلنت شركة Tcl عن إطلاقها خارج بيركلي (Winter USENIX ). |
| يونيو 1990 | توقع الإعلان عن (صيف USENIX). |
| يناير 1991 | الإعلان الأول عن Tk (Winter USENIX). |
| يونيو 1993 | أول مؤتمر Tcl/Tk (بيركلي). تم الإعلان هناك عن مدير هندسة [الجدول] (سلف [الشبكة])، [incr Tcl] ، وTclDP، وGroupkit. |
| أغسطس 1997 | قدمت Tcl 8.0 مُجمِّع البايت كود. [19] |
| ابريل 1999 | يقدم Tcl 8.1 دعمًا كاملاً لـ Unicode [20] وتعبيرات منتظمة متقدمة . [21] |
| أغسطس 1999 | يقدم Tcl 8.2 بنية توسعة Tcl (TEA) [22] |
| أغسطس 2000 | تم تشكيل فريق Tcl الأساسي، مما أدى إلى انتقال Tcl إلى نموذج تطوير أكثر توجهاً نحو المجتمع. [1] |
| سبتمبر 2002 | المؤتمر التاسع لشركة Tcl/Tk (فانكوفر). الإعلان عن نظام التعبئة والتغليف starkit. إصدار Tcl 8.4.0. [23] |
| ديسمبر 2007 | أضافت Tcl 8.5 أنواع بيانات جديدة، ومستودع توسعة جديد، و bignums ، [24] وlambdas . [25] [26] |
| ديسمبر 2012 | أضافت Tcl 8.6 نظام كائنات ديناميكي مدمج، TclOO، وتقييم بدون تكديس. [27] |
| سبتمبر 2024 | أضافت Tcl 9.0 إمكانيات 64 بت، ودعم نطاق نقاط رمز Unicode الكامل، واستخدام epoll و kqueue [28] |
تُعقد مؤتمرات وورش عمل Tcl في كل من الولايات المتحدة وأوروبا. [29] تستخدم العديد من الشركات، بما في ذلك FlightAware [30] Tcl كجزء من منتجاتها.
سمات

تتضمن ميزات Tcl ما يلي
- جميع العمليات عبارة عن أوامر ، بما في ذلك هياكل اللغة. وهي مكتوبة في صيغة البادئة .
- تقبل الأوامر عادةً عددًا متغيرًا من الوسائط ( متغيرة ).
- يمكن إعادة تعريف كل شيء وتجاوزه ديناميكيًا. في الواقع، لا توجد كلمات رئيسية، لذا يمكن إضافة هياكل التحكم أو تغييرها، على الرغم من أن هذا غير مستحسن.
- يمكن التعامل مع جميع أنواع البيانات كسلاسل ، بما في ذلك الكود المصدر . داخليًا، تحتوي المتغيرات على أنواع مثل integer وdouble، ولكن التحويل يتم تلقائيًا تمامًا.
- لا يتم إعلان المتغيرات، بل يتم تعيينها. يؤدي استخدام متغير غير محدد إلى حدوث خطأ.
- نظام كائنات ديناميكي بالكامل، قائم على الفئة ، TclOO، بما في ذلك الميزات المتقدمة مثل الفئات الفوقية، والمرشحات، والمزيجات . [ 31]
- واجهة تعتمد على الأحداث للمنافذ والملفات . كما أن الأحداث المحددة من قبل المستخدم والمستندة إلى الوقت ممكنة أيضًا.
- يتم تقييد رؤية المتغير على النطاق المعجمي (الثابت) بشكل افتراضي، ولكن
uplevelيسمحupvarللإجراءات بالتفاعل مع نطاقات الوظائف المحيطة. - إن كافة الأوامر التي تم تعريفها بواسطة Tcl نفسها تولد رسائل خطأ في حالة الاستخدام غير الصحيح.
- إمكانية التوسعة عبر لغات C و C++ و Java وPython وTcl.
- اللغة المفسرة باستخدام البايت كود
- دعم كامل لـUnicode (3.1 في البداية، يتم تحديثه بانتظام)، تم إصداره لأول مرة عام 1999.
- التعبيرات العادية [21]
- متعدد المنصات : Windows API ؛ Unix ، Linux ، Macintosh وما إلى ذلك.
- إغلاق التكامل عبر الأنظمة الأساسية مع واجهة المستخدم الرسومية ( GUI ) Tk .
- توجد آليات توزيع متعددة:
- إصدار التطوير الكامل (لنظام Windows مثل ActiveState Tcl، راجع [1])
- Tclkits (ملف قابل للتنفيذ فردي يحتوي على وقت تشغيل نصي كامل، بحجم حوالي 4 ميغابايت فقط)، وStarkits (آلية تغليف لتقديم تطبيق بطريقة مستقلة وخالية من التثبيت وقابلة للنقل بدرجة كبيرة) وStarpacks (دمج Starkit مع Tclkit لإنتاج Starpack - ملف قابل للتنفيذ خاص بمنصة واحدة، مثالي للنشر السهل)
- مترجم جيم، تطبيق صغير الحجم من إنتاج Tcl
- كود مصدر قابل للتوزيع بحرية بموجب ترخيص BSD . [32]
سيف تي سي ال
Safe-Tcl هي مجموعة فرعية من Tcl لها ميزات مقيدة بحيث لا يمكن لنصوص Tcl إلحاق الضرر بجهاز الاستضافة أو التطبيق. [33] الوصول إلى نظام الملفات محدود ويتم منع تنفيذ أوامر النظام التعسفية. يستخدم نموذج المترجم المزدوج مع تشغيل المترجم غير الموثوق به للكود في نص غير موثوق به. تم تصميمه بواسطة Nathaniel Borenstein و Marshall Rose لتضمين الرسائل النشطة في البريد الإلكتروني. يمكن تضمين Safe-Tcl في البريد الإلكتروني عندما يتم دعم application/safe-tcl و multipart/enabled-mail . تم دمج وظائف Safe-Tcl منذ ذلك الحين كجزء من إصدارات Tcl/Tk القياسية. [34] [35]
بناء الجملة والدلالات الأساسية
يتم تغطية بناء الجملة والدلالات في Tcl من خلال اثني عشر قاعدة [36] تُعرف باسم Dodekalogue. [37]
يتكون نص Tcl من سلسلة من استدعاءات الأوامر. استدعاء الأمر عبارة عن قائمة من الكلمات مفصولة بمسافة بيضاء وينتهي بسطر جديد أو فاصلة منقوطة. الكلمة الأولى هي اسم الأمر، والذي قد يكون مدمجًا في اللغة، أو موجودًا في مكتبة متاحة ، أو محددًا في النص نفسه. تعمل الكلمات التالية كحجج للأمر:
اسم الأمر argument1 argument2 ... argumentN
يستخدم المثال التالي الأمر puts (اختصار لـ "put string") لعرض سلسلة نصية على وحدة التحكم المضيفة:
يضع "مرحبا بالعالم!"
يؤدي هذا إلى إرسال السلسلة "Hello, World!" إلى جهاز الإخراج القياسي مع إضافة حرف سطر جديد.
يمكن استبدال المتغيرات ونتائج الأوامر الأخرى في سلاسل، كما في هذا المثال الذي يستخدم الأوامر set و expr لتخزين نتيجة حساب في متغير (لاحظ أن Tcl لا يستخدم =كعامل تعيين)، ثم يستخدم puts لطباعة النتيجة مع بعض النص التوضيحي:
# يقوم expr بتقييم سلسلة النص كمجموعة تعبيرات sum [expr 1 + 2 + 3 + 4 + 5 ] يضع "مجموع الأرقام 1..5 هو $sum."
#تقدم الشخصية تعليقًا . يمكن أن تظهر التعليقات في أي مكان يتوقع فيه المترجم اسم الأمر.
# باستخدام الأقواس المتعرجة، يتم إجراء استبدال المتغير بواسطة expr
set x 1 set sum [expr { $x + 2 + 3 + 4 + 5 }]; # لا يتم استبدال $x قبل تمرير المعلمة إلى expr؛ # يستبدل expr 1 بـ $x أثناء تقييم التعبير puts "مجموع الأرقام 1..5 هو $sum." ; # المجموع هو 15
# بدون أقواس متعرجة، يحدث استبدال المتغير في موقع التعريف (النطاق المعجمي)
set x 2 set op * set y 3 set res [expr $x$op$y ]; # يتم استبدال $x و$op و$y، ويتم تقييم التعبير إلى 6 puts "$x $op $y is $res." ; # يتم استبدال $x و$op و$y و$res وتقييمها كسلاسل
كما هو موضح في هذه الأمثلة، هناك بنية أساسية واحدة في اللغة: الأمر. تحدد آليات الاقتباس وقواعد الاستبدال كيفية معالجة الوسائط لكل أمر.
يحدث استبدال خاص قبل تحليل أي أوامر أو حجج. إذا كان الحرف الأخير في السطر (أي قبل السطر الجديد مباشرة) عبارة عن شرطة مائلة عكسية، فسيتم استبدال تركيبة الشرطة المائلة العكسية والسطر الجديد (وأي مسافات أو علامات تبويب بعد السطر الجديد مباشرة) بمسافة واحدة. يوفر هذا آلية استمرار السطر ، حيث يمكن لف الأسطر الطويلة في الكود المصدر إلى السطر التالي لراحة القراء.
بالاستمرار في معالجة الحجج العادية، فإن الكلمة التي تبدأ بعلامة اقتباس مزدوجة ( ") تمتد إلى علامة الاقتباس المزدوجة التالية. وبالتالي يمكن أن تحتوي هذه الكلمة على مسافات بيضاء وفاصلات منقوطة دون تفسير هذه الأحرف على أنها تحمل أي معنى خاص (أي يتم التعامل معها كأحرف نص عادية). الكلمة التي تبدأ بعلامة قوس متعرج افتتاحية ( {) تمتد إلى علامة قوس متعرج إغلاقية تالية ( }). داخل الأقواس المتعرجة يتم قمع جميع أشكال الاستبدال باستثناء إزالة الشرطة المائلة العكسية والسطر الجديد المذكور سابقًا. تُعرف الكلمات غير المحاطة بأي من البنيتين بالكلمات المجردة.
في الكلمات المجردة والمزدوجة الاقتباس، قد تحدث ثلاثة أنواع من الاستبدال:
- يؤدي استبدال الأمر إلى استبدال محتويات الأقواس المربعة المتوازنة بنتيجة تقييم النص الموجود بداخلها. على سبيل المثال،
[expr 1+2+3]يتم استبداله بنتيجة تقييم التعبير الموجود (في هذه الحالة 6). - يستبدل استبدال المتغير اسم المتغير الذي يسبقه علامة الدولار بمحتويات (أو قيمة) المتغير. على سبيل المثال،
$fooيتم استبداله بمحتويات المتغير المسمى "foo". يمكن أن يكون اسم المتغير محاطًا بأقواس متعرجة لفصله عن النص اللاحق في الحالات الغامضة (على سبيل المثال،${foo}ing). - يؤدي استبدال الشرطة المائلة العكسية إلى استبدال الشرطة المائلة العكسية التي تليها حرف بحرف آخر. على سبيل المثال،
\nيتم استبدالها بسطر جديد.
تتم عملية الاستبدال من اليسار إلى اليمين في مسح واحد لكل كلمة. لن يتم مسح أي نص بديل مرة أخرى للبحث عن بدائل أخرى محتملة. ومع ذلك، يمكن أن يظهر أي عدد من البدائل في كلمة واحدة.
من Tcl 8.5 فصاعدًا، يمكن وضع البادئة ، لأي كلمة {*}، مما يتسبب في تقسيم الكلمة إلى الكلمات الفرعية المكونة لها لأغراض بناء استدعاء الأمر (على غرار تسلسل ,@ميزة شبه الاقتباس في Lisp ).
نتيجة لهذه القواعد، يمكن استخدام نتيجة أي أمر كحجة لأي أمر آخر. لاحظ أنه على عكس ما يحدث في غلاف أوامر يونكس ، لا يقوم Tcl بإعادة تحليل أي سلسلة ما لم يتم توجيهه صراحةً للقيام بذلك، مما يجعل الاستخدام التفاعلي أكثر صعوبة، ولكن الاستخدام النصي أكثر قابلية للتنبؤ (على سبيل المثال، لا يسبب وجود مسافات في أسماء الملفات صعوبات).
لا تلعب علامة المساواة المفردة ( =) أي دور خاص في اللغة على الإطلاق. أما علامة المساواة المزدوجة ( ==) فهي اختبار المساواة الذي يُستخدم في سياقات التعبير مثل exprالأمر وفي الحجة الأولى لـ if. (كلا الأمرين جزء من المكتبة القياسية؛ ولا يوجد لهما مكان خاص في المكتبة ويمكن استبدالهما إذا رغبت في ذلك.)
معظم أوامر Tcl، وخاصة في المكتبة القياسية، هي متغيرات ، و proc(المنشئ لإجراءات الأوامر النصية) يسمح لك بتحديد قيم افتراضية للحجج غير المحددة وحجج شاملة للسماح للكود بمعالجة أعداد عشوائية من الحجج.
لا يتم كتابة Tcl بشكل ثابت: يمكن أن يحتوي كل متغير على أعداد صحيحة أو أعداد عشرية أو سلاسل أو قوائم أو أسماء أوامر أو قواميس أو أي قيمة أخرى؛ يتم إعادة تفسير القيم (وفقًا للقيود النحوية) كأنواع أخرى عند الطلب. ومع ذلك، فإن القيم غير قابلة للتغيير والعمليات التي يبدو أنها تغيرها في الواقع تعيد قيمة جديدة بدلاً من ذلك.
الأوامر الأساسية
أهم الأوامر التي تتعلق بتنفيذ البرامج وعمليات البيانات هي:
setيكتب قيمة جديدة إلى متغير (ينشئ متغيرًا إذا لم يكن موجودًا). إذا تم استخدامه مع وسيطة واحدة فقط، فإنه يعيد قيمة المتغير المحدد (يجب أن يكون موجودًا في هذه الحالة).procيعرف أمرًا جديدًا، يؤدي تنفيذه إلى تنفيذ نص Tcl معين، مكتوبًا كمجموعة من الأوامر.returnيمكن استخدامه لإعادة التحكم على الفور إلى المتصل.
أوامر التحكم في التنفيذ المعتادة هي:
ifيتم تنفيذ نص البرنامج النصي المحدد (الوسيطة الثانية)، إذا تم استيفاء الشرط (الوسيطة الأولى). ويمكن أن يتبع ذلك حجج إضافية تبدأ منelseifالشرط البديل والنص، أوelseمن الكتلة التكميلية.whileيكرر تنفيذ نص البرنامج النصي المحدد، طالما ظل الشرط (الحجة الأولى) مُستوفىforeachيتم تنفيذ النص المحدد حيث يتم تعيين عناصر القائمة للمتغير التحكمي واحدًا تلو الآخر.forاختصار لتهيئة متغير التحكم والشرط (كما فيwhile) وعبارة "التكرار التالي" الإضافية (الأمر الذي يتم تنفيذه بعد تنفيذ النص)
يمكن التحكم في أوامر التكرار المذكورة أعلاه أيضًا باستخدام الأوامر التالية:
breakيقاطع تنفيذ الجسم ويعود من أمر التكرارcontinueيقاطع تنفيذ النص، ولكن لا يزال يتم إرجاع التحكم إلى أمر التكرار. بالنسبة إلىwhileهذا يعني تكرارًا مرة أخرى، بالنسبة إلىforوforeach، التقط التكرار التالي.returnيقوم بمقاطعة تنفيذ الجسم الحالي بغض النظر عن مدى عمقه داخل الإجراء، حتى الوصول إلى حدود الإجراء، ويعيد القيمة المعطاة للمتصل.
الأوامر المتقدمة
exprيقوم بتمرير الوسيطة إلى مفسّر تعبير منفصل ويعيد القيمة المقيمة. لاحظ أن نفس المفسّر يُستخدم أيضًا للتعبير "الشرطي"ifوأوامر التكرار.listيقوم بإنشاء قائمة تتضمن كل الحجج، أو سلسلة فارغة إذا لم يتم تحديد أي حجج.lindexيمكن استخدام الأمر على النتيجة لإعادة استخراج الحجج الأصلية.arrayيتعامل مع متغيرات المصفوفة .dictيقوم بالتلاعب بالقاموس (منذ 8.5)، وهو عبارة عن قوائم تحتوي على عدد زوجي من العناصر حيث يتم تفسير كل عنصرين كزوج مفتاح/قيمة.regexpيطابق تعبيرًا عاديًا مع سلسلة.regsubينفذ عمليات الاستبدال بناءً على مطابقة نمط التعبير العادي.uplevelهو أمر يسمح بتنفيذ نص الأمر في نطاق مختلف عن النطاق الداخلي الحالي في المكدس.upvarينشئ رابطًا إلى متغير في إطار مكدس مختلف.namespaceيتيح لك إنشاء سياقات منفصلة للأوامر والمتغيرات والوصول إليها وتدميرها.applyيطبق وظيفة مجهولة (منذ 8.5).coroutine،yield،yieldtoوإنشاء وإنتاج القيم من الروتينات الفرعية (منذ 8.6).tryيتيح لك اكتشاف الأخطاء والاستثناءات ومعالجتها.catchيتيح لك الحصول على عوائد استثنائية.zlibيوفر الوصول إلى مرافق الضغط والتحقق التجميعي لمكتبة Zlib (منذ 8.6).
المستوى الأعلى
uplevelيسمح بتنفيذ نص الأوامر في نطاق مختلف عن النطاق الداخلي الحالي في المكدس. نظرًا لأن نص الأوامر قد يستدعي بنفسه إجراءات تستخدم الأمر uplevel ، فإن هذا له التأثير الصافي المتمثل في تحويل مكدس النداءات إلى شجرة نداءات. [38]
تم تنفيذه في الأصل للسماح لإجراءات Tcl بإعادة تنفيذ الأوامر المضمنة (مثل for أو if أو while ) مع الاحتفاظ بالقدرة على معالجة المتغيرات المحلية . على سبيل المثال، البرنامج النصي Tcl التالي هو إعادة تنفيذ لأمر for (مع حذف معالجة الاستثناءات ):
إجراء لـ { initCmd testExpr advanceCmd bodyScript } { المستوى الأعلى 1 $initCmd تعيين testCmd [ قائمة expr $testExpr ] بينما {[ المستوى الأعلى 1 $testCmd ]} { المستوى الأعلى 1 $bodyScript المستوى الأعلى 1 $advanceCmd } }
أبفار
upvarيقوم الأمر upvar بترتيب واحد أو أكثر من المتغيرات المحلية في الإجراء الحالي للإشارة إلى المتغيرات في استدعاء إجراء محيط أو إلى متغيرات عالمية . يبسط الأمر upvar تنفيذ استدعاء إجراء بالاسم ويجعل أيضًا من الأسهل إنشاء هياكل تحكم جديدة كإجراءات Tcl. [39]
أمر decr يعمل مثل الأمر المضمن incrإلا أنه يطرح القيمة من المتغير بدلاً من إضافتها:
proc decr { varName { decrement 1 }} { upvar 1 $varName var
incr var [expr { -$decrement }] }
موجه نحو الكائنات
أضافت Tcl 8.6 نظام كائنات ديناميكي مدمج، TclOO، في عام 2012. [31] ويتضمن ميزات مثل:
- نظام كائنات قائم على الفئة. هذا ما يتوقعه معظم المبرمجين من نظام الكائنات الموجهة.
- يسمح بالتخصيص لكل كائن وإعادة تعريف الفئات بشكل ديناميكي.
- الفئات الفوقية
- المرشحات
- مزيجات
- نظام لتنفيذ الأساليب بطرق مخصصة، بحيث يمكن لمؤلفي الحزم الذين يريدون طرقًا مختلفة بشكل كبير لتنفيذ الطريقة القيام بذلك ببساطة إلى حد ما.
oo :: class create fruit { method eat {} { puts "yummy!" } } oo :: class create banana { superclass fruit
buildor {} { my variable peeled
set peeled 0 } method peel {} { my variable peeled
set peeled 1 puts "skin now off" } method edible ? {} { my variable peeled
return $peeled } method eat {} { if { ! [ my edible ? ]} { my peel
} next } } set b [ banana new ] $b eat → يطبع "skin now off" و "yummy!" fruit destroy
$b eat → error "unknown command"
لم يكن لدى Tcl قواعد نحوية موجهة للكائنات (OO) حتى عام 2012، [31] لذا ظهرت حزم توسعة مختلفة لتمكين البرمجة الموجهة للكائنات. وهي منتشرة على نطاق واسع في كود مصدر Tcl الحالي. تشمل الامتدادات الشائعة ما يلي:
- إنكر تي سي إل
- إكس أو تي سي إل
- إتك
- سنيت
- انحنى
لم تتم إضافة TclOO لبناء نظام قوي موجه للكائنات فحسب، بل وأيضًا لتمكين حزم التوسعة من بناء تجريدات موجهة للكائنات باستخدامها كأساس. بعد إصدار TclOO، تم تحديث incr Tcl لاستخدام TclOO كأساس له. [27]
تطوير تطبيقات الويب
خادم الويب Tcl هو تنفيذ Tcl خالص لخادم بروتوكول HTTP. يتم تشغيله كبرنامج نصي أعلى مفسّر Tcl العادي.
Apache Rivet هو نظام برمجة مفتوح المصدر لخادم Apache HTTP الذي يسمح للمطورين باستخدام Tcl كلغة برمجة لإنشاء تطبيقات ويب ديناميكية. Rivet مشابه لـ PHP و ASP و JSP . تم تطوير Rivet في الأساس بواسطة Damon Courtney و David Welton و Massimo Manghi و Harald Oehlmann و Karl Lehenbauer . يمكن لـ Rivet استخدام أي من آلاف حزم Tcl المتاحة للجمهور والتي تقدم ميزات لا حصر لها مثل التفاعل مع قواعد البيانات (Oracle و PostgreSQL و MySQL و SQLite وما إلى ذلك) أو واجهات للتطبيقات الشائعة مثل مكتبة GD Graphics Library .
التفاعل مع اللغات الأخرى
تتفاعل Tcl بشكل أصلي مع لغة C. [40] وذلك لأنها كُتبت في الأصل لتكون إطار عمل لتوفير واجهة أمامية نحوية للأوامر المكتوبة بلغة C، ويتم تنفيذ جميع الأوامر في اللغة (بما في ذلك الأشياء التي قد تكون كلمات رئيسية ، مثل ifأو ) بهذه الطريقة. يتم تمرير مجموعة من القيم التي تصف الوسائط (المستبدلة بالفعل) للأمر إلى كل دالة تنفيذ أمر، وهي حرة في تفسير هذه القيم كما تراه مناسبًا.
while
غالبًا ما تتضمن محاكيات المنطق الرقمية واجهة برمجة نصية Tcl لمحاكاة لغات الأجهزة Verilog و VHDL و SystemVerilog .
توجد أدوات (على سبيل المثال SWIG وFfidl) لتوليد الكود اللازم تلقائيًا لتوصيل وظائف C التعسفية ووقت تشغيل Tcl، ويقوم Critcl بالعكس، مما يسمح بتضمين كود C تعسفي داخل البرنامج النصي Tcl وتجميعه في وقت التشغيل في DLL .
حزم التمديد
لقد سمحت لغة Tcl دائمًا بحزم التوسعة، والتي توفر وظائف إضافية، مثل واجهة المستخدم الرسومية، وأتمتة التطبيقات القائمة على المحطة الطرفية، والوصول إلى قاعدة البيانات، وما إلى ذلك. تشمل الامتدادات المستخدمة بشكل شائع ما يلي:
- تك
- أكثر ملحقات Tcl شيوعًا هي مجموعة أدوات Tk ، التي توفر مكتبة واجهة مستخدم رسومية لمجموعة متنوعة من أنظمة التشغيل . تتكون كل واجهة مستخدم رسومية من إطار واحد أو أكثر . يحتوي كل إطار على مدير تخطيط.
- يتوقع
- أحد ملحقات Tcl الأخرى الأكثر شهرة هو ملحق Expect . كانت العلاقة الوثيقة المبكرة بين Expect وTcl مسؤولة إلى حد كبير عن شعبية Tcl في مجالات الاستخدام الكثيرة مثل اختبار Unix، حيث تم استخدام Expect (ولا يزال يستخدم اليوم) بنجاح كبير لأتمتة جلسات telnet وssh والتسلسلية لأداء العديد من المهام المتكررة (على سبيل المثال، برمجة تطبيقات كانت تفاعلية فقط سابقًا). كان Tcl هو الطريقة الوحيدة لتشغيل Expect، لذا أصبح Tcl شائعًا جدًا في هذه المجالات من الصناعة.
- بلاط/تك
- Tile/Ttk [41] عبارة عن مجموعة أدوات واجهة مستخدم للأنماط والموضوعات يمكنها استبدال معظم الأدوات في Tk بمتغيرات أصلية حقًا للمنصة من خلال استدعاءات واجهة برمجة التطبيقات لنظام التشغيل . الموضوعات التي يتم تغطيتها بهذه الطريقة هي Windows XP وWindows Classic و Qt (التي تتصل بمكتبات بيئة X11 KDE ) و Aqua (Mac OS X). يمكن أيضًا إنشاء موضوع بدون هذه الاستدعاءات باستخدام تعريفات الأدوات المكملة بخرائط الصور النقطية . الموضوعات التي تم إنشاؤها بهذه الطريقة تشمل Classic Tk وStep وAlt/Revitalized وPlastik وKeramik. تحت Tcl 8.4، تُعرف هذه الحزمة باسم Tile، بينما في Tcl 8.5 تم طيها في التوزيع الأساسي لـ Tk (مثل Ttk).
- تيكس
- Tix، ملحق واجهة Tk، عبارة عن مجموعة من مكونات واجهة المستخدم التي تعمل على توسيع قدرات تطبيقات Tcl/Tk وPython. وهي عبارة عن حزمة برامج مفتوحة المصدر يتم صيانتها بواسطة متطوعين في Tix Project Group ويتم إصدارها بموجب ترخيص على غرار BSD. [42]
- إي تي سي إل/إنكر تي سي إل
- Itcl هو نظام كائنات لـ Tcl، ويتم تسميته عادةً باسم [incr Tcl] (وهي الطريقة لزيادة Tcl، وهي مشابهة في الأسلوب لاسم C++).
- تكليب
- Tcllib عبارة عن مجموعة من الحزم النصية لـ Tcl والتي يمكن استخدامها بدون خطوات تجميع.
- تكِليب
- Tklib عبارة عن مجموعة من وحدات المرافق لـ Tk، وهي رفيقة لـ Tcllib.
- tDOM
- tDOM هو امتداد Tcl لتحليل XML، استنادًا إلى محلل Expat
- تي سي ال تي ال اس
- TclTLS هو امتداد OpenSSL لـ Tcl.
- تي سي إل يو دي بي
- يوفر امتداد TclUDP [43] مكتبة بسيطة لدعم مآخذ بروتوكول بيانات المستخدم (UDP) في Tcl.
- توابي
- TWAPI (Tcl Windows API) هو امتداد لـ Tcl يوفر روابط لـ Windows API.
- قواعد البيانات
- تعد Tcl Database Connectivity (TDBC)، وهي جزء من Tcl 8.6، واجهة وصول مشتركة لقاعدة البيانات لبرامج Tcl النصية. وهي تدعم حاليًا برامج التشغيل للوصول إلى قواعد بيانات MySQL و ODBC و PostgreSQL و SQLite . ومن المخطط إضافة المزيد في المستقبل. كما يتم دعم الوصول إلى قواعد البيانات من خلال ملحقات خاصة بقاعدة البيانات، والتي يتوفر منها العديد. [44]
انظر أيضا
- بيضة
- يتوقع
- تي سي ال اكس
- تك ديسك
- مقارنة بيئات التطوير المتكاملة لشركة Tcl
- مقارنة بين لغات البرمجة
- قائمة لغات البرمجة
- وحدات البيئة
مراجع
- ^ ab "Tcl/Tk Core Development". Tcl Developer Xchange . تم الاسترجاع في 2016-11-01 .
- ^ "[TCLCORE] تم إصدار Tcl 9.0.0". 26 سبتمبر 2024. تم الاسترجاع 26 سبتمبر 2024 .
- ^ "شروط ترخيص Tcl/Tk". Tcl Developer Xchange . تم الاسترجاع في 2016-11-02 .
- ^ "Tcl Dev Kit – Compiler". ActiveState Docs . تم الاسترجاع في 2016-11-02 .
- ^ Lerdorf, Rasmus (2007-04-26). "PHP on Hormones – history of PHP presentation by Rasmus Lerdorf given at the MySQL Conference in Santa Clara, California". The Conversations Network . تم الاسترجاع في 2009-12-11 .
- ^ "PowerShell وWPF: WTF". مدونة Windows PowerShell . Microsoft. مؤرشف من الأصل في 25 ديسمبر 2008. تم الاسترجاع في 3 أبريل 2019 .
- ^ "نصوص TH1". الأحفوري.
- ^ كيني، كيفن (4 يوليو 2005). "رد: شهادة TCL". مجموعة الأخبار : comp.lang.tcl.
- ^ "اللغة". Tcl Developer Xchange . تم الاسترجاع في 2016-11-02 .
- ^ أساسيات Tcl ، الفصل الأول في البرمجة العملية في Tcl وTk ، ISBN 0-13-038560-3
- ^ من الغلاف الداخلي لكتاب Tcl and the Tk Toolkit ، رقم ISBN 0-201-63337-X
- ^ "استخدامات Tcl/Tk". Tcl Developer Xchange . تم الاسترجاع في 2016-11-02 .
- ^ "دليل تكوين Cisco IOS Scripting باستخدام TCL". Cisco Support . تم الاسترجاع في 2016-11-02 .
- ^ جون أوسترهوت. "تاريخ تي سي إل". الصفحات الشخصية . جامعة ستانفورد . تم الاسترجاع في 2011-08-09 .
- ^ "تاريخ Tcl". Tcl Developer Xchange . تم الاسترجاع في 2016-11-02 .
- ^ "EDA". wiki.tcl-lang.org . تم الاسترجاع في 2022-04-27 .
- ^ "John K Ousterhout – Award Winner". جوائز ACM . تم الاسترجاع في 2016-11-04 .
- ^ من ويكي Tcler Tcl مقابل TCL
- ^ "إعلان عن إصدار Tcl/Tk 8.0". Tcl Developer Xchange . تم الاسترجاع في 2014-07-01 .
- ^ "إعلان عن إصدار Tcl/Tk 8.1". Tcl Developer Xchange . تم الاسترجاع في 2014-07-01 .
- ^ ab "ميزات جديدة للتعبير العادي في Tcl 8.1". Tcl Developer Xchange . تم الاسترجاع في 2016-11-02 .
- ^ "إعلان عن إصدار Tcl/Tk 8.2". Tcl Developer Xchange . 1999-08-18 . تم الاسترجاع في 2014-07-01 .
- ^ "إعلان عن إصدار Tcl/Tk 8.4". Tcl Developer Xchange . 2013-06-01 . تم الاسترجاع في 2014-07-01 .
- ^ "نصيحة رقم 237: الأعداد الصحيحة ذات الدقة التعسفية لـ Tcl". Tcl Developer Xchange . تم الاسترجاع في 2016-11-01 .
- ^ "نصيحة رقم 194: نصيحة رقم 194: الإجراءات كقيم عبر التطبيق". Tcl Developer Xchange . تم الاسترجاع في 2016-11-01 .
- ^ "إعلان عن إصدار Tcl/Tk 8.5". Tcl Developer Xchange . 2013-09-18 . تم الاسترجاع في 2014-07-01 .
- ^ "إعلان عن إصدار Tcl/Tk 8.6". Tcl Developer Xchange . 2013-09-20 . تم الاسترجاع في 2014-07-01 .
- ^ "إعلان عن إصدار Tcl/Tk 9.0". Tcl Developer Xchange . 2024-09-26 . تم الاسترجاع في 2024-09-26 .
- ^ "مؤتمرات Tcl/Tk". Tcl Developer Xchange . تم الاسترجاع في 2016-11-01 .
- ^ "FlightAware". GitHub . تم الاسترجاع في 2024-10-02 .
- ^ abc "نصيحة رقم 257: توجيه الكائنات لـ Tcl". Tcl Developer Xchange . تم الاسترجاع في 2016-11-01 .
- ^ "تنزيل مصادر Tcl/Tk". Tcl Developer Xchange . تم الاسترجاع في 2016-11-01 .
- ^ "Tcl آمن". Tcl Developer Xchange . تم الاسترجاع في 2016-11-01 .
- ^ براون، لوري (18-20 سبتمبر 1996). "أمان الكود المحمول". في بوسوماير، تيري؛ شوب، لوسي (المحرران). وقائع المؤتمر المشترك الثاني، AUUG '96 وAsia-Pacific WWW '96 . ملبورن، أستراليا. ص. 50. تم الاسترجاع في 2011-03-22 .
- ^ Welch, Brent B.; Jones, Ken; Hobbs, Jeffrey (2003). Practical programming in Tcl and Tk . المجلد 1 (الطبعة الرابعة). Prentice Hall PTR. ص 291. ISBN 0-13-038560-3.
- ^ "صفحة دليل Tcl – أوامر Tcl المضمنة". Tcl Developer Xchange . تم الاسترجاع في 2014-06-14 .
- ^ “دوديكالوج”. ويكي تيكلير . تم الاسترجاع 2014/06/14 .(يحتوي أيضًا على نسخة أقصر من "Octalogue" للقواعد.)
- ^ "صفحة دليل المستوى الأعلى – الأوامر المضمنة". Tcl Developer Xchange . تم الاسترجاع في 2016-06-14 .
- ^ "صفحة دليل upvar – الأوامر المضمنة". Tcl Developer Xchange . تم الاسترجاع في 2016-06-14 .
- ^ "Tcl C API". tcl.tk . تم الاسترجاع في 2016-11-02 .
- ^ "Tile: محرك تحسين السمات لـ Tk". SourceForge . تم الاسترجاع في 7 أغسطس 2016 .
- ^ "Tix License". SourceForge . تم الاسترجاع في 7 أغسطس 2012 .
- ^ "TclUDP". ويكيبيديا Tcl'ers . تم الاسترجاع في 7 أغسطس 2012 .
- ^ "TDBC". ويكيبيديا Tcl'ers . تم الاسترجاع في 7 أغسطس 2012 .
قراءة إضافية
- أوسترهوت، جون ك .؛ جونز، كين (2009). Tcl ومجموعة أدوات Tk (الطبعة الثانية). أديسون ويسلي. رقم ISBN 978-0-321-33633-0تم الاسترجاع بتاريخ 4 نوفمبر 2012 .
- فوستر جونسون، إريك (1997). التطبيقات الرسومية باستخدام Tcl وTk (الطبعة الثانية). نيويورك، نيويورك: كتب M&T. رقم ISBN 1-55851-569-0تم الاسترجاع بتاريخ 4 نوفمبر 2012 .
- برنت ب. ويلش، البرمجة العملية في Tcl وTk ، برنتيس هول ، أبر سادل ريفر، نيوجيرسي، الولايات المتحدة الأمريكية، ISBN 0-13-038560-3 ، 2003
- جيه أدريان زيمر، Tcl/Tk للمبرمجين ، جمعية الحاسبات IEEE ، توزيع جون وايلي وأولاده، ISBN 0-8186-8515-8 ، 1998
- مارك هاريسون ومايكل ماكلينان، البرمجة الفعالة لـ Tcl/Tk ، أديسون ويسلي ، ريدنج، ماساتشوستس، الولايات المتحدة الأمريكية، ISBN 0-201-63474-0 ، 1998
- Bert Wheeler, Tcl/Tk 8.5 Programming Cookbook , Packt Publishing , برمنغهام، إنجلترا، المملكة المتحدة، ISBN 1849512981 ، 2011
- فويتشخ كوكجان، بيوتر بيلتوفسكي TCL 8.5 برمجة الشبكات ، نشر الحزم ، ISBN 1849510962 ، 2010
- كليف فلينت Tcl/Tk، الطبعة الثالثة: دليل المطور ، ISBN 0123847176 ، 2012
- أشوك ب. نادكارني لغة برمجة Tcl ، رقم ISBN 154867964X ، 2017
روابط خارجية
- الموقع الرسمي
- مصادر Tcl، موقع تنزيل الكود المصدري الرئيسي لـ Tcl وTk
- ويكي تكلير
- تي كيه دوكس
