מהו קובץ ICI?
שפת תכנות לשימוש כללי המתפרשת ומכילה מספר תכונות כגון הקלדה דינמית יחד עם סוגי הנתונים הגמישים ידועה בשם ICI (לא ראשי תיבות). היא נחשבת לדומה לשפת Perl. שפת ICI זו כוללת מבני בקרת זרימה ומכילה גם כמה אופרטורים של שפת C. זו אינה שפה מונחה עצמים אך ניתן להשיג חלק מהתכונות של OOP באמצעות שיטת ירושה ספציפית המכונה מבני-על. בדומה ל-C, לשפת התכנות הזו של ICI יש ממשק מערכת זהה וספרייה סטנדרטית לפונקציות מובנות.
היסטוריה קצרה
בסוף שנות ה-80 היא פותחה על ידי טים לונג כשפת תכנות מפורשת למטרות כלליות. רוב התכונות של שפה זו דומות ל-C והיא יכולה גם להשיג חלק מהתכונות על ידי יישום כמה שיטות מיוחדות. שפה זו נמצאת בבעלותו כנחלת הכלל וזמינה כשפה הניתנת למכירה חוזרת ואף אחד לא חייב לציין מאיפה הוא השיג את קוד המקור. התיעוד של ICI הוא תחת זכויות היוצרים של Canon Information System Research Australia.
מפרט טכני
ישנם שני סוגי נתונים שונים בשימוש בשפה זו. שני אלה הם סוגי נתונים פרימיטיביים ומצטברים. שני אלו כוללים ביטויים שונים לפי הרכבם המוגדר מראש בשפה. מודולים שונים כגון מקוננות ותתי שגרות נתמכים על ידי שפה זו. מכיוון שחלק מהמאפיינים שלו דומים לפרל יש לו אינטגרציה קפדנית עם הביטויים הרגולריים.
קבוצות מוגבלות להיות הטרוגניות ומקוננות. ערכות אלו מספקות תמיכה עבור פעולות סט נפוצות כגון Union ו-Intersection וכו’. היא משמשת בעיקר כשפה לצורך יישום ליבה של יישומים בבעלות ארגונים רב לאומיים.
ניתן לכתוב כמעט את כל סוגי התוכנות בשפה זו ובעיקר התוכנות הספציפיות הכוללות מבני נתונים מורכבים נכתבות בשפת התכנות ICI. יישומים יכולים לכלול את הטמעת ICI באופן שהם צריכים להיכתב בו. ניתן ליישם חלקים פונקציונליים של היישום על ידי המודולים של ICI. השפה של ICI דומה במקצת לשפת C אבל מודל הנתונים של ICI הוא ברמה גבוהה למדי ושונה עם סוגים כמו מילונים (struct), סטים, מערכים דינמיים, ביטויים רגולריים ומיתרים (אמיתיים).
דוגמה לפורמט קובץ ICI
printf("Hello world.\n");
s = [set 200, 300, "a string"];
if (s[200])
printf("200 is in the set\n");
if (s[400])
printf("400 is in the set\n");
if (s["a string"])
printf("\"a string\" is in the set\n");
s[200] = 0;
if (s[200])
printf("200 is in the set\n");
forall (colour in [array "red", "green", "blue"])
printf("%s\n", colour);