تي سي إل

**تي سي أل** هي اختصار لأداة التحكم باللغة ولكن أصبح الناس يقول لها تي سي أل لتسهيل الكلام تلفظ ككلمة (تكل)أو تلفظ **تي سي إل** هذه هي لغة برمجية متعددة الاستخدام أنشأها جون أوستورهوت. في الأصل «ولدت من الإحباط» وفقا للمؤلف، مع وضع المبرمجين الخاصة بها (نوعية رديئة) لغات يقصد به أن يكون جزءا لا يتجزأ من داخل التطبيقات التي سي إل حظيت بالقبول من تلقاء نفسها. التي سي إل يستخدم عادة للنماذج السريعة، التطبيقات النصية، وواجهة المستخدم الرسومية والاختبار.تس سي إل يستخدم لمنصات الأنظمة المطمورة، سواء في شكله الكامل أو في إصدارات سمول برينتر أخرى التي سي إل يستخدم أيضا في برمجة المدخل العمومي لأجهزة التوصيل.

## التاريخ

لغة البرمجة للتي سي إل أخترعت في ربيع سنة 1988 من قبل جون أوستورهوت عندما كان يعمل في جامعة كاليفورنيا، بيريكيلي.

في شهر 1 من سنة 1990 : أعلن التي سي أل في جامعة بيريكلي (شتاء مجموعة مستخدمي اليونيكس)

في شهر 6 من سنة 1990:توقع إعلان (صيف مستخدمي يونيكس)

في شهر 1 من سنة 1990 : أول إعلان للتي كي (شتاء مستخدمي يونيكس)

في شهر 6 من سنة 1993 : أول مؤتمر لتي كي وتي سي أل في بيريكلي.

في شهر 9 من سنة 2002: تاسع اجتماع لتي سي أل وتي كي في فانكوفر الإعلان عن نظام التغليف ستاركيت

مقالات تي سي أل عقدت في أمريكا وأوروبا

## ملامح

ملامح التي سي إل تضم:
* جميع العمليات هي اوامر بما في ذلك قواعد اللغة وهي مكتوبة في تدوين البادئة
* الأوامر هي بالعادة مبرمجة
* كل شيء يمكن ان يعمل إعادة تعريف ديناميكية وجاوز
* يمكن التلاعب بجميع أنواع البيانات مثل الآلات الوترية.بما في ذلك الكود
* جميع الاوامر تعرف بالتي سي إل ومن تلقاء نفسها تظهر رسائل خطأ في استخدام غير صحيح
* التي سي إل قابل للمد، بواسطة السي والسي بلص بلص والجافا والتي سي إل
* ترجمة اللغة بواسطة الباي كود
* دعم اليوني كود الكامل (3.1) ,أول ظهور لها في 1999
* برامج مستقلة: وين32، يونيكس، لينوكس، ماك إلى اخره
* اغلاق كامل مع نوافذ واجهة المستخدم الرسومية تي سي

التي سي إل لم تدعم من وجوه المنحى بناء الجملة قبل 8.6 (8.6 تزود ال نظام الاوه أو في جوهر التي سي إل إذا وظائف الاوه أو زودت بواسطة علب الامتداد. حتى الاوه أو المكتوب بنقاء علب.

## أمثلة

* عامل (في أسلوب البرمجة الوظيفية):

```tcl
proc ! x {expr {$x<2? 1: $x*[! [incr x -1]]}}
```

* حساب قائمة من الأرقام
باستعمال الدالة foreach:

```tcl
set nombres {10 9 8 7 6 5 4 3 2 1}
set somme 0
foreach i $nombres { 
   set somme [expr {$somme + $i}]
}
```

أو أكثر إحكاما باستخدام الأمر join:


```tcl
set somme [expr [join $nombres +]]
```

* استبدال الحروف في جدول باستعمال الأمر string:


```tcl
set sequence "ACGTATTACGGTCCATGAACGAATTGGGATATCGACCATGATGGAATTCTG"
puts [string map {GA R TC Y GT K AC M GC S AT W} $sequence]
```

* تحميل صفحة HTML:


```tcl
package require http
puts [http::data [http::geturl http://mini.net/tcl/540]]
```

* إعطاء الوقت عن طريق الخطاب الصوتي على أندرويد:


```tcl
package require android
set android [android new]
set time [clock format [clock seconds] -format "%I %M %p on %A, %B %e %Y."]
android speak $time
```


## كلمات محجوزة


```tcl
after		 exec		list		read		tm
append		 exit		llength		refchan		trace
apply		 expr		lmap		regexp		trap
array		 fblocked	load		registry *	try
auto_execok	 fconfigure	lrange		regsub		unknown
auto_import	 fcopy		lrepeat		rename		unload
auto_load	 file		lreplace	return		unset
auto_mkindex	 fileevent	lreverse	scan		update
auto_mkindex_old filename	lsearch		seek		uplevel
auto_qualify	 finally	lset		set		upvar
auto_reset	 flush		lsort		socket		variable
bgerror		 for		mathfunc	source		vwait
binary		 foreach	mathop		split		while
break		 format		memory		string		yield
catch		 gets		msgcat		subst		yieldto
cd		 glob		namespace	switch		zlib
chan		 global		open		tailcall
clock		 history	package		tcl_endOfWord
close		 http		parray		tcl_findLibrary
concat		 if		pid		tcl_startOfNextWord
continue	 incr		pkg::create	tcl_startOfPreviousWord
coroutine	 info		pkg_mkIndex	tcl_wordBreakAfter
dde *		 interp		platform	tcl_wordBreakBefore
dict		 join		platform::shell	tcltest
encoding	 lappend	proc		tclvars
eof		 lassign	puts		tell
error		 lindex		pwd		throw
eval		 linsert	re_syntax	time
```

(*): مخصصة لمنصة ويندوز

## المصادر

## وصلات خارجية

* الموقع الرسمي
* ويكي Tcl
* مكتبة «تي سي إل القياسية

تصنيف:اختراعات أمريكية
تصنيف:برمجيات تسخدم رخصة بي إس دي
تصنيف:برمجيات حرة بلغة سي
تصنيف:برمجيات حرة متعددة المنصات
تصنيف:برمجيات متعددة المنصات
تصنيف:لغات برمجة أنشئت في 1988
تصنيف:لغات برمجة إجرائية
تصنيف:لغات برمجة ديناميكية النمط
تصنيف:لغات برمجة عالية المستوى
تصنيف:لغات برمجة كائنية التوجه
تصنيف:لغات برمجة نصية