ספריית תוכנה
הוצג| English | משמעות |
|---|---|
| program library/ˈprəʊɡræm ˈlaɪbrəri/ | ספריית תוכנה |
| subroutines/ˈsʌbruːtiːnz/ | תת-תוכניות |
| library routines/ˈlaɪbrəri ruːˈtiːnz/ | פרוצדורות ספרייה |
| static library/ˈstætɪk ˈlaɪbrəri/ | ספריית קבועה |
| executable/ɪɡˈzekjʊtəbl/ | קובץ תוכנית ביצוע |
| dynamic library/daɪˈnæmɪk ˈlaɪbrəri/ | ספריית דינמית |
שמונה עשר שורות ששברו את האינטרנט
- במרץ 2016 מחק מתכנן ספריית קוד קטנה בשם
left-padממאגר ציבורי. היא הורכבה משמונה עשר שורות: היא הייתה מוסיפה רווחים בתחילת מחרוזת טקסט. - תוך שעות, תהליכי הבנייה נכשלו בחברות בכל העולם. אלפי תוכניות לעולם לא כתבו את שמונה עשר השורות הללו. הן כולן השתמשו בהן, וההשאלה הייתה בלתי נראית עד הרגע שהדבר הפסיק לעבוד.
- כך נוצרת תוכנות מודרניות. ספריית קוד היא ההשאלה, הנעשית בכוונה, והערכה הזו מראה מה היא נותנת למתכנן, מה היא עולה, ושתי הדרכים בהן היא יכולה להיות מצורכת לתוכנית.
מהי ספריית קוד
- ספריית קוד היא אוסף של תת-תוכניות, מחלקות ומודולים שנכתבו ובוצעו מראש, אותן תוכנית יכולה להשתמש במקום לכתוב את משל עצמה.
- ספריית מתמטיקה, ספריית גרפיקה, ספריית רשת, ספריית מציאת מסלול, ספריית דחיסה: כל אחת פותרת אזור בעיות אחד, עבור כל תוכנית שזקוקה לכך.
- תוכנה בפיתוח נבנית בדרך כלל מתוך תת-תוכניות ספרייה כאלה plus הקוד הספציפי לתוכנית החדשה.

הקוד החדש הוא החלק הקטן; הקוד המצומד הוא החלק הגדול
מעבדת מושגי מחשוב
סווג דוגמאות מلموسة לפי הרעיון המחשובי שהן מדגימות.
ספריית תוכנה היא:
Difficulty 1/5 · 100 coins + a small bonus on first completion today
ספריות מספקות קוד מוכן ומנוסח (מתמטיקה, גרפיקה, רשת...) שתוכנית יכולה לקרוא במקום לכתוב קוד משל עצמה.
אוסף של קוד מוכן מראש, ניתן לשימוש חוזר ומנוסח הוא ספריית תוכנה ______.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
ספריות חוסכות זמן ומצמצות שגיאות.
היתרונות למפתח
- הרutinות כבר נכתבו ונבדקו, ולכן הפיתוח מהיר וזול יותר.
- הן אמינות: משתמש בהן תוכניות רבות, ולכן הן חסרות טעויות כמעט לחלוטין.
- למפתח אין צורך במומחיות בתחום זה (גרפיקה, הצפנה, מציאת מסלול), והוא יכול להקדיש את הזמן לתכונות הייחודיות של התוכנית.
- התוכנית קלה לתחזוקה יותר, מכיוון שקוד כללי ממוקם במקום אחד, ומספר צוות יכול לעבוד בו-זמנית, כאשר כל חבר משתמש באותן Routine.
יתרון בשימוש בספרייה הוא שהקוד הוא:
Difficulty 1/5 · 100 coins + a small bonus on first completion today
קוד בספרייה נבדק, משמש באופן נרחב ומונח – שימוש חוזר בו חוסך זמן ומשפר את האמינות.
איזה מהבאים הם יתרונים למפתח הבונה תוכנה מתוך שגרת ספרייה? סמן את כולם החלים.
Difficulty 2/5 · 140 coins + a small bonus on first completion today
תוכניות נבדקות, אין צורך במומחיות, תחזוקה קלה יותר. הקוד של התוכנית עצמה עדיין חייב להיבדק.
החסרונות
- הרoutine עשויה לא להתאים בדיוק לצורך הספציפי, והמפתח אינו יכול לשנות אותה, ולכן עליו להתגבר על מגבלותיה.
- התוכנית תלויה בספרייה: תקלה, עדכון חסר או ספרייה שנשחררה (כמו ב
left-pad) הופכים לבעיה של התוכנית. - הרישיון של הספרייה עשוי להגביל כיצד ניתן למכור או לשתף את התוכנית, ו-Routine שלא שימשו יכולות להגדיל את גודל התוכנית.
דוגמה פותרת: רובוט המסעדה
- צוות שכותב תוכנה לרובוט מסעדה משתמש בספריית תוכנות הכוללת Routine למציאת המסלול הקצר ביותר בין שולחנות. הסבר שני יתרונות וחסר אחד עבור הצוות.
- יתרון: ה-Routine נכתבה ונבדקה כבר, ולכן הצוות חוסך זמן ויכול לסמוך על התוצאות. יתרון: הצוות לא צריך להבין את אלגוריתמי מציאת המסלול עצמם ויכול להקדיש זמן לתכונות הייחודיות של הרובוט.
- חסר: ה-Routine עשויה לא להתמודד עם הצרכים הספציפיים של המסעדה (הזזת כיסאות, מעברים חד-כיווניים), והצוות אינו יכול לשנות אותה, ולכן ייתכן שהוא יצטרך להתגבר על מגבלותיה.
- קשר כל נקודה לצוות זה ול-Routine זו. ביטוי כללי כמו "חוסך זמן" מקבל נקודות פחות מאשר "חוסך את זמן הכתיבה והבדיקה של אלגוריתם מציאת מסלול".
מהו חיסרון עבור צוות הרובוט בשימוש בתוכנית מציאת מסלול ממספריית קוד?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
לצוות אין אפשרות לשנות את קוד הספרייה, ולכן כל אי-התאמה לצרכיהם חייבת להיות פותרת באופן מקפי. העובדה שאין צורך להבין את האלגוריתם היא יתרון, ולא חיסרון.
ספרייות סטטיות
- ספרייה סטטית מועתקת לתוך הקובץ הניתן לביצוע כאשר התוכנית מווקמת ומקושרת.
- התוכנית עומדת לבדה לאחר מכן: היא אינה זקוקה לקובץ אחר כדי להפעיל.
- העלות: לכל תוכנית יש גרסה משלה, ולכן הקבצים הניתנים לביצוע גדולים יותר, ועדכון לספרייה מחייב בנייה מחדש של כל התוכניות שמשתמשות בה.
ספרייה סטטית שונה מספרייה דינמית מכיוון שהיא:
Difficulty 1/5 · 100 coins + a small bonus on first completion today
ספרייה סטטית מובנית לתוך הקובץ הניתן לביצוע; ספרייה דינמית נטענת בזמן הרצאה ומשותפת בין תוכניות.
ספרייות דינמיות וקבצי DLL
- ספריית דינמית, Dynamic Link Library (DLL) על Windows או קובץ
.soעל Linux, נותר כקובץ נפרד ונטען לזיכרון רק כאשר תוכנית קוראת אותה, ב-זמן ריצה. - הקבצים הניתנים לביצוע הם קטנים יותר; מספר תוכניות פועלות המשתפות עותק אחד בזיכרון; ו-DLL יכול להיערך פעם אחת, תיקון באג או התקנה של מכשיר חדש, ללא צורך בהרכבה מחדש של התוכניות שמשתמשות בו.
- הזיכרון משמש רק כל עוד הספרייה נדרשת. העלות: התוכנית לא תופעל אם חסר ה-DLL או אם הגרסה שגויה.

הועתק בזמן הרכיבה, או נטען ומשותף בזמן ריצה
ספרייה דינמית יכולה להיות משותפת על ידי תוכניות רבות ומעודכנת פעם אחת עבור כולן.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
מכיוון שהיא נטענת בזמן הרצאה, ספרייה דינמית משותפת אחת משרתת תוכניות רבות; עדכון שלה מתקן את כולן מבלי לבצע rebuild לכל אחת.
התאם כל מאפיין לספרייה סטטית או דינמית.
Difficulty 2/5 · 140 coins + a small bonus on first completion today
קישור סטטי מעתיק קוד לתוך הקובץ המבוצע (גדול, עצמאי); קישור דינמי טוען ספרייה משותפת בזמן הביצוע (קטן, ניתן לעדכון פעם אחת לכל).
סדר את אירועי התוכנית המשתמשת בשיטה של DLL.
Difficulty 3/5 · 200 coins + a small bonus on first completion today
הטעינה מתרחשת בזמן הביצוע, בהתקראת הראשונה, ועתיקה אחת שומרת על כל התוכניות.
דוגמה מפורטת: יתרונות קבצי DLL
- מתפתח תוכנות משתמש בקבצי DLL. תאר את היתרונות. [4]
- קובץ התוכנית הניתן לביצוע הוא קטן יותר, מכיוון שקוד הספרייה אינו מועתף אליו.
- עותק אחד של ה-DLL בזיכרון משותף לכל תוכנית הפועלת שמשתמשת בו, וחוסך זיכרון.
- ניתן לעדכן את ה-DLL כדי לתקן באג או לתמוך במכשיר חדש ללא הרצאה מחדש או התקנה מחדש של התוכניות הקוראות אותו.
- הספרייה נטענת רק כאשר היא נדרשת, ולכן הזיכרון משמש רק כל עוד פונקציה בשימוש.
בחירת סטטית או דינמית
- התוכנית חייבת לפעול במכונה שבה אין להתקין דבר אחר, במכונת embedded או בתוך קובץ הורדה יחיד: סטטית, מכיוון שהתוכנית הניתנת לביצוע היא עצמאית.
- תוכניות רבות במערכת משתפות באותן פונקציות, או שהפונקציות משתנות לעיתים קרובות: דינמית, מכיוון שעותק משותף אחד הוא קטן יותר ועדכון פעם אחת מספיק לכולם.
- יש לנסח עם ההתאמה בין תועלות: עצמאי אך גדול ודורש הרצאה מחדש עבור עדכון, או קטן ומשותף אך תלוי בנוכחות הקובץ.
תוכנית שצריכה להתבצע מקובץ יחיד במכשיר שאין בו אפשרות להתקנת דברים אחרים צריכה להשתמש בספרייה דינמית.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
ספרייה דינמית היא קובץ נפרד שחייב להיות קיים. ספרייה סטטית מועתקת לתוך הקובץ המבוצע, וזה בדיוק מה שתוכנית עצמאית זקוקה לה.
סימונים נופלים מהיד
- ה-DLL נטען ב-זמן ריצה, ולא בזמן רכיבה. ביטוי זה בלבד הוא הנקודה המרכזית.
- היתרונות הם עבור המתפתח: כתובה ומנוסחת כבר, אין צורך במומחיות, תחזוקה קלה יותר. "התוכנית פועלת מהר יותר" אינו מוציא ברשימה זו.
- ספרייה היא קוד, ולא כלי. ה-IDE הוא הכלי; הספרייה היא מה שהתוכנית קוראת.
- חיסרון חייב להיות חיסרון של שימוש בספרייה: אי אפשר לשנות אותה, עשויה שלא להתאים, תלות. "זה עולה כסף" נדירות הנושא.
הבנתך מושלמת
- ספריית תוכנות היא קוד שנכתב מראש, נבדק, אותו תוכנית קוראת במקום לכתוב את משלו.
- יתרונות: פיתוח מהיר וזול יותר, קבוצות פעילות אמינות, אין צורך בידע מומחה בתחום זה, תחזוקה קלה יותר, עבודה מקבילה של צוותים; חסרונות: עשוי לא להתאים, אי אפשר לשנות אותו, תלות
- סטטי: מועתק לקובץ הניתן לביצוע בזמן הה compilation, עצמאי אך גדול יותר ומצריך rebuild כדי לעדכן
- דינמי (DLL): קובץ נפרד שנטעם בזמן הריצה, קטן יותר, משותף לרבים מתוכניות, מעודכן פעם אחת עבור כולם