Tcl – הבדלי גרסאות

תוכן שנמחק תוכן שנוסף
EmausBot (שיחה | תרומות)
מ r2.6.4) (בוט משנה: nl:Tcl (programmeertaal)
Matanyabot (שיחה | תרומות)
מ בוט: שינויים קוסמטיים
שורה 1:
{{שפת תכנות
| שם = Tcl
| לוגו = [[תמונהקובץ:Tcl.svg|70px]]
| פרדיגמה = [[פרדיגמת תכנות|מרובת פרדיגמות]]: [[תכנות מונחה עצמים|מונחית עצמים]], [[תכנות פונקציונלי|פונקציונלית]], [[תכנות פרוצדורלי|פרוצדורלית]], [[תכנות מונחה אירועים|מונחית אירועים]]
| שנה = 1988
שורה 17:
'''TCL''' (ראשי תיבות של "'''Tool Command Language'''"; את השם TCL מבטאים "טיקל") היא [[שפת תסריט]] שפותחה על ידי ג'ון אוסטרווט. TCL נמצאת בשימוש נרחב ב-[[Common Gateway Interface|CGI]], ב[[בדיקות תוכנה]] וביצירת [[GUI|ממשקים גרפיים]]. ב-TCL כל דבר הוא פקודה, אפילו מבני שפה בסיסיים כמו [[פקודת if|if]] ו-[[פקודת for|for]]. למרות זאת, התחביר של TCL דומה מאוד לזה של [[C++|++C]] ושפות תסריט מקבילות. ל-TCL אינספור הרחבות וקהילה גדולה של מפתחים המתחזקים אותה, מה שעושה את השפה לחזקה מאוד ובעלת מגוון של יכולות. השילוב בין TCL להרחבה שלה התומכת בממשקים גרפיים (TK GUI Toolkit) מאוד נפוץ ושמו TCL/TK (מבוטא "טיקל-טוק"). עד גרסה 8.5, TCL תמכה בתכנות מונחה עצמים אך ורק באמצעות הרחבות כדוגמת IncrTCL. החל מגרסה 8.6, TCL תומכת בתכנות מונחה עצמים באופן טבעי.
 
== תכונות ==
* TCL היא שפה מפורשת, ז"א שכדי להריץ קוד יש צורך ב[[מפרש (תוכנה)|מפרש]].
* כל דבר הוא פקודה, אפילו מבני שפה.
* ניתן ליצור פקודות עם מספר משתנה של ארגומנטים.
* כל המשתנים הם [[מחרוזת (תכנות)|מחרוזות]], או שניתן לבטא אותם בקלות כמחרוזות.
* ניתנת בקלות להרחבה באמצעות השפות [[C (שפת תכנות)|C]], {{כ}}[[C++‎]] ו-[[Java]].
* פועלת על כל פלטפורמה או [[מערכת הפעלה]] ידועה.
 
== תחביר ==
תוכנת TCL מורכבת מאוסף פקודות לביצוע. קריאה לפקודה היא רשימה של מילים המופרדת ברווחים. המילה הראשונה היא שם הפקודה ושאר המילים הם הארגומנטים לפקודה:
<div style="direction: ltr;">
שורה 46:
a הוא [[משתנה]] והוספנו לו את האופרטור $ כדי לקבל את ערכו. אם לא נוסיף לו $, a פשוט יחשב מחרוזת.
 
== משתנים ו[[משתנה (תכנות)#טווח הכרה|טווח הכרה]] ==
כדי להשתמש במשתנים אנו זקוקים קודם כל לפקודה set כדי לשים ערכים לתוכם. כמו כן אין צורך להכריז עליהם או על סוגם בשום מקום.
<source lang="tcl">
שורה 54:
ב-TCL כל המשתנים הם בעצם ייחוסים למידע האמיתי שנמצא בזיכרון. כאשר שמים ערך לתוך משתנה באמצעות set, הוא רק מקצה מיקום חדש בזיכרון וה-GC אחר כך מוחק את הערך הקודם. בגישה רגילה למשתנים, ניתן לגשת אך ורק לאלו שנמצאים בטווח ההכרה (הסקופ) הנוכחי או בסקופ הגלובלי כמו ב-java או ב-C++, כל זה ע"פ שיטת הסקופ הסטטי. ב-TCL יש אפשרות לסקופ דינאמי: ניתן באמצעות הפקודה upvar ליצור ייחוס למשתנה הנמצא במקום כלשהו במחסנית הקריאות. לצורך זה יש לספק את שם המשתנה ואת הרמה בשרשרת הדינאמית (במחסנית) בה הוא נמצא.
 
== ניהול זיכרון ==
TCL זקוקה לניהול זיכרון מפני שהיא תומכת ביצירת אובייקטים ומפני שהמשתנים הם בסך הכל ייחוסים. דוגמה לאובייקט היא רשימה שבתוכה מופיעה רשימה אחרת באמצעות ייחוס.
ל-TCL יש [[אוסף זבל]] (Garbage Collector) הפועל בשיטת [[איסוף זבל#מניית התייחסויות|מניית התייחסויות]].
שורה 60:
נגיד ש-a מצביע ל-b. כעת נרצה לכוון את b ל-a, לא נוכל לעשות זאת משום שכשננסה לשנות את b, יווצר מיקום חדש בזיכרון ש-b יצביע אליו. עכשיו, למרות ש-b מצביע על a, a מצביע למיקום אחר בזיכרון. כך לא יווצרו הצבעות מעגליות.
 
== הרחבות ==
ל-TCL אינספור הרחבות שניתן להתקין, כל הרחבה כזאת מסודרת במה שנקרא packages. ה-TCL/TK היא הרחבה שמאפשרת בניית [[GUI]] באופן פשוט מאוד. ל-TK בעצמה יש הרחבות שימושיות כגון וידג'טים מיוחדים או ספריות גרפיות. TK הותאמה גם לשפות תסריט אחרות כמו [[פייתון (שפת תכנות)|פייתון]] ו-[[Perl]]. הרחבת ה-Expect היא גם כן הרחבה נפוצה מאוד המאפשרת אוטומציה ובדיקה של תוכנות בסביבת [[UNIX]]. ספריית ה-TCLLIB מאגדת בתוכה מספר עצום של סקריפטים המסייעים לעובדה עם TCL.
 
== גרסאות של המפרש ==
ה"מפרש" מופץ בקוד פתוח תחת רישיון מבוסס על BSD-licence. כמו כן ישנה גרסה מהודרת נפוצה של ActiveState.
 
שורה 70:
* [http://wiki.tcl.tk/ ויקי של השפה]
* [http://www.activestate.com/ActiveTcl הפצת TCL של ActiveState]
 
 
[[קטגוריה:שפות תכנות]]
אוחזר מתוך "https://he.wikipedia.org/wiki/Tcl"