Scratch

Scratch היא סביבת פיתוח המיועדת להוראת תכנות בעיקר ילדים בגיל שמונה עד 16. בסביבת פיתוח זו יוצרים ממשק משתמש גרפי (GUI) הנעזר בדמויות ובלוגיקה. בסביבה לא כותבים קוד אלא גוררים ומשחררים באופן חזותי "בלוקים", צורות ובהן בדרך כלל הוראה לדמות, ומסדרים אותם זה אחר זה, וכך יוצרים תסריט לדמות. כל בלוק מייצג פקודה או מספר פקודות בתכנות.

סביבת הפיתוח כוללת את האפשרויות לקבל עזרה בנוגע לכל הוראה או פעולה באנגלית, להוסיף הערה ולהצמיד אותה להוראה כלשהי, לצייר, להקליט או לייבא מהמחשב דמות, רקע או צליל באמצעות כלי ציור בסיסיים או מיקרופון, לשנות את הרקע תוך כדי הפעלת התוכנית בעזרת תסריטים, ולשנות את שמות הדמויות. לסביבת הפיתוח עצמה מתלווים גם קובצי תמונות של דמויות ורקעים וגם צלילים.

תסריטים
תסריטים מיוצגים בסביבת העבודה על ידי בלוקים שמזכירים במידת מה תרשים זרימה. גם פסוקיות בשפה מיוצגות בצורה חזותית.

צורות של בלוקים
ישנן מספר צורות של בלוקים, ולכל צורה יש משמעות. אלו הצורות (הקווים התחתיים מסמלים מקום בו בוחרים אפשרות מתוך מאגר אפשרויות מתאים או כותבים באופן חופשי):

 מלבן מפעיל (מלבן שבצלעו העליונה יש צורת גל) - כל הוראה בצורה זו היא התחלה של תסריט וגורמת לו לפעול. לדוגמה: "כאשר נלחץ מקש __".
 מלבן פקודה - כל הוראה רגילה. לדוגמה: "זוז __ צעדים" (בתוכנה זו, צעד הוא כמות כלשהי של פיקסלים במסך המחשב).
 לולאות (מעין צורה של האות כ) - כל סוג של לולאה, כלומר חזרה על הפעולות שבתוך הצורה. לדוגמה: "לעולמים".
 ערכים (אליפסה) - ערך מספרי או מילולי. לדוגמה: "מיקום על ציר Y".
 תנאים (משושה) - תנאי ששמים במקום המיועד לכך בתוך צורה אחרת. יכול להוציא נכון (True) או לא נכון (False). לדוגמה: "מיקרופון רועש?".

קבוצות של בלוקים
הבלוקים מחולקים ל-9 קבוצות. כל בלוק מותאם בצבעו לקבוצה לה הוא שייך. להלן הקבוצות וצבען:

 תנועה: בקבוצה זו נמצאים כל הבלוקים הקשורים לנקודה בה נמצאת הדמות והכיוון אליו הוא פונה. לדוגמה: "הסתובב __ מעלות נגד כיוון השעון". את קבוצה זו מייצג הצבע כחול.
 מראה: בקבוצה זו נמצאים כל הבלוקים הקשורים למראה הדמות, למה שהוא חושב או אומר ולגודלו. לדוגמה: "אמור __ למשך __ שניות". את קבוצה זו מייצג הצבע סגול.
 צלילים: בקבוצה זו נמצאים כל הבלוקים הקשורים לצלילים המופקים עקב פעולה כלשהי של הדמות. לדוגמה: "הפסק את כל הצלילים". את קבוצה זו מייצג הצבע ורוד.
 משתנים: בקבוצה זו נמצאים כל הבלוקים הקשורים למשתנים או רשימות המשתתפים בתוכנית. צריך ליצור משתנה או רשימה וגם את ההגדרות שלה. לדוגמה: "קבע __ ל-__" (במקרה זה הקו התחתי הראשון מייצג שם של משתנה). את קבוצה זו מייצג הצבע כתום. את הרשימות מייצג הצבע בורדו.
 אירועים: תבניות התחלה שצורתן מלבן שבקצהו העליון גל, כמו "כאשר לוחצים על הדגל". את הקבוצה הזאת מייצג צבע חום.
 בקרה: בקבוצה זו נמצאים כל הבלוקים שקשה לשייך לקבוצות אחרות. לדוגמה: "חכה __ שניות" (הקו התחתי מייצג ערך מספרי או מילולי שכותבים בתוך המקום). את קבוצה זו מייצג הצבע צהוב.
 חיישנים: בקבוצה זו נמצאים כל הבלוקים הקשורים לקבלת מידע ממפעיל התוכנית, וכל הבלוקים הקשורים למגע ולמרחק בין הדמות לדבר מה. לדוגמה: "המרחק אל __" (בתור ערך מספרי). את קבוצה זו מייצג הצבע תכלת.
 מפעילים: בקבוצה זו נמצאים כל הבלוקים הקשורים לערכים מספריים שאינם קשורים לקבוצה אחרת. לדוגמה: "__ + __" (בתור ערך מספרי). את קבוצה זו מייצג הצבע ירוק בהיר.
 לבנים: בקבוצה הזאת יוצרים בלוקים חדשים שצורתם מלבן בלבד. כשיוצרים לבנה אפשר להכניס בה מקום לערך מספרי או מקבוצת מפעילים. את ההגדרות של הלבנה מקבלים בצד בלוק שלמעלה גל שבתוכו הפקודה של הגל. דומה לנעלמים באלגברה. את הקבוצה הזאת מסמל צבע סגול כהה.

מבנה 
במסך העריכה יש 4 חלקים.

 אזור שבו הבלוקים נמצאים ומשם יש לגרור אותם
 אזור שבו בונים את הקוד
 אזור שבו רואים את המסך
 אזור הדמויות והרקעים

ישנן 9 קטגוריות של בלוקים:

הרחבות 
בגרסה 3.0 נוסף אפשרות להרחבות המאפשרות להוסיף חיישן מצלמה, טקסט לדיבור ועוד.

כל התוספים בצבע ירוק כהה.

scratch lab מאפשר לכל הציבור להשתמש בפקודות נסיניות של סקראץ'. כיום יש 3 קטגריות בscratch leb.

התוכנה 
סקראץ' נכתבה בעזרת Squeak (מימוש של שפת התכנות Smalltalk). עד שנת 2012 קוד המקור שלה היה זמין, אך ברישיון (Scratch Source Code License) שהגביל שינויים. החל ממרץ 2012 התוכנה זמינה גם לפי תנאי רישיון ה-GPL (גרסה 2).

צנזורה בסין 
באגוסט 2020 ממשלת סין חסמה את הגישה לאתר סקראץ', באותה תקופה מעל שלוש מיליון אנשים בסין השתמשו בסקראץ'.

סקראץ' ג'וניור 

סקראץ' ג'וניור היא תוכנה דומה לסקראץ' שמאפשרת גם למי שלא יודע לקרוא לתכנת.

קישורים חיצוניים

הערות שוליים 

שפות תכנות
תוכנות שהושקו ב-2003