Loading AI tools
שפת תכנות מוויקיפדיה, האנציקלופדיה החופשית
Tcl (ראשי תיבות של "Tool Command Language"; את השם Tcl מבטאים "טיקל") היא שפת תסריט שפותחה על ידי חוקר מדעי המחשב ג'ון אוסטרווט. Tcl נמצאת בשימוש נרחב ב-CGI, בבדיקות תוכנה וביצירת ממשקים גרפיים. ב-Tcl כל דבר הוא פקודה, אפילו מבני שפה בסיסיים כמו if ו-for. למרות זאת, התחביר של Tcl דומה מאוד לזה של ++C ושפות תסריט מקבילות. ל-Tcl הרחבות רבות וקהילה גדולה של מפתחים המתחזקים אותה, מה שעושה את השפה לחזקה מאוד ובעלת מגוון של יכולות. השילוב בין Tcl להרחבה שלה התומכת בממשקים גרפיים (TK GUI Toolkit) מאוד נפוץ ושמו Tcl/TK (מבוטא "טיקל-טוק"). עד גרסה 8.5, Tcl תמכה בתכנות מונחה עצמים אך ורק באמצעות הרחבות כדוגמת IncrTCL. החל מגרסה 8.6, Tcl תומכת בתכנות מונחה עצמים באופן טבעי.
פרדיגמות | מרובת פרדיגמות: מונחית עצמים, פונקציונלית, פרוצדורלית, מונחית אירועים |
---|---|
תאריך השקה | 1988 |
מתכנן | ג'ון אוסטרווט |
מפתח | ג'ון אוסטרווט |
מימושים | ActiveTcl |
הושפעה על ידי | AWK, LISP |
השפיעה על | Windows PowerShell |
רישיון | רישיון BSD |
סיומת | .tcl |
http://www.tcl.tk | |
תוכנת TCL מורכבת מאוסף פקודות לביצוע. קריאה לפקודה היא רשימה של מילים המופרדת ברווחים. המילה הראשונה היא שם הפקודה ושאר המילים הם הארגומנטים לפקודה:
commandName argument1 argument2 ... argumentN
דוגמה מעשית לכתיבת "Hello World" על המסך באמצעות הפקודה puts.
puts "Hello, world!"
כעת, אם נרצה לחשב ביטוי מתמטי ולהוציא אותו למסך כפלט נכתוב:
puts [expr {5+6*10}]
הפקודה expr מחשבת ביטוי מתמטי שניתן לה כארגומנט. הקפנו אותה בסוגריים מרובעים כדי לקבל את הערך שהוחזר על ידה. כעת נראה דוגמה למשפט תנאי:
if {$a==0} {
puts "a is zero"
}
a הוא משתנה והוספנו לו את האופרטור $ כדי לקבל את ערכו. אם לא נוסיף לו $, a פשוט יחשב מחרוזת.
proc name arglist body
כדי להחזיר ערך המחושב בתוך הפרוצדורה נשתמש בפקודה return
proc calc_mean {a b} {
return [expr ($a +$b)/2]
}
כדי להשתמש במשתנים אנו זקוקים קודם כל לפקודה set כדי לשים ערכים לתוכם. כמו כן אין צורך להכריז עליהם או על סוגם בשום מקום.
set a "hello"
המחרוזת "hello" תכנס למשתנה בשם a, וכדי לגשת אחר כך לערכו נוסיף $ לפניו. ב-Tcl כל המשתנים הם בעצם ייחוסים למידע האמיתי שנמצא בזיכרון. כאשר שמים ערך לתוך משתנה באמצעות set, הוא רק מקצה מיקום חדש בזיכרון והאוסף זבל מוחק לאחר מכן את הערך הקודם. בגישה רגילה למשתנים, ניתן לגשת אך ורק לאלו שנמצאים בטווח ההכרה (הסקופ) הנוכחי או בסקופ הגלובלי כמו ב-java או ב-C++, כל זה ע"פ שיטת הסקופ הסטטי. ב-TCL יש אפשרות לסקופ דינאמי: ניתן באמצעות הפקודה upvar ליצור ייחוס למשתנה הנמצא במקום כלשהו במחסנית הקריאות. לצורך זה יש לספק את שם המשתנה ואת הרמה בשרשרת הדינמית (במחסנית) בה הוא נמצא.
Tcl זקוקה לניהול זיכרון מפני שהיא תומכת ביצירת אובייקטים ומפני שהמשתנים הם בסך הכל ייחוסים. דוגמה לאובייקט היא רשימה שבתוכה מופיעה רשימה אחרת באמצעות ייחוס. ל-Tcl יש אוסף זבל (Garbage Collector) הפועל בשיטת מניית התייחסויות. השפה מתגברת על בעיית ההצבעה המעגלית (הטיפוסית לשיטה זו) בכך שכל הערכים בשפה אינם ברי שינוי (immutable). נגיד ש-a מצביע ל-b. כעת נרצה לכוון את b ל-a, לא נוכל לעשות זאת משום שכשננסה לשנות את b, ייווצר מיקום חדש בזיכרון ש-b יצביע אליו. עכשיו, אף על פי ש-b מצביע על a, a מצביע למיקום אחר בזיכרון. כך לא ייווצרו הצבעות מעגליות.
ל-Tcl הרחבות רבות שניתן להתקין, כל הרחבה כזאת מסודרת במה שנקרא packages. ה-Tcl/TK היא הרחבה שמאפשרת בניית GUI באופן פשוט מאוד. ל-TK בעצמה יש הרחבות שימושיות כגון וידג'טים מיוחדים או ספריות גרפיות. TK הותאמה גם לשפות תסריט אחרות כמו פייתון ו-Perl. הרחבת ה-Expect היא גם כן הרחבה נפוצה מאוד המאפשרת אוטומציה ובדיקה של תוכנות בסביבת UNIX. ספריית ה-TclLIB מאגדת בתוכה מספר עצום של סקריפטים המסייעים לעבודה עם Tcl.
ה"מפרש" מופץ בקוד פתוח תחת רישיון מבוסס על BSD-licence. כמו כן ישנה גרסה מהודרת נפוצה של ActiveState.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.