שפת תכנות
שפת תכנות היא מערכת של כללים ופונקציות המאפשרים לאנשים להשתמש במחשבים, טלפונים סלולריים, טאבלטים ועוד מכשירים. שפות תכנות נועדו להקל על בני אדם לכתוב הוראות מורכבות. הם דומות לשפות של בני-אדם: יש להם דקדוק ואוצר מילים. Scratch היא שפת תכנות.
תאוריה
שפת תכנות היא שפה לכתיבת הוראות למכונה. שפת תכנות מוגדרת על ידי דקדוק.
קיימות תבניות תכנות רבות, או דרכים לתכנות, המתמקדות בהיבטי עיצוב שונים.
שפות מתוכננות כדי לתמוך בתבניות ספציפיות. תבניות כוללות:
· פקודה: תוכניות שמשתמשות בהצהרות
· פונקציונלי: תוכניות שמשתמשות בפונקציות
· הצהרתי: תוכניות שקובעות כללים של בעיות מסוימות
· תכנות מונחה עצמים: מסר העובר בין אובייקטים
· פרוצדורלי: תוכניות שמחולקות לסדרות של תהליכים
לשפות תכנות יש בדרך כלל סוגי נתונים פרימיטיביים שונים, שניתן להרחיב באמצעות תכנות מונחה עצמים:
· מספרים, שמשמשים למספרים.
· מחרוזות, שמשמשות כטקסט.
· מערכים, שהם רשימות של אלמנטים.
· אובייקטים, שהם מילונים של צמדי מפתח-ערך.
· פונקציות, שהן קטעי קוד שניתן לבצע באמצעות ארגומנטים.
למעשה, שפת תכנות מספקת מסגרת שבה ניתן לבצע פונקציה עם ארגומנטים. בדרך כלל, הדקדוק של שפה מורכב מ"הצהרות", שהן:
· הצבות: קישור ערך כלשהו לשם (משתנה).
· קריאות לפרוצדורה
· צורות מיוחדות: פרוצדורות מיוחדות מסוימות שלא ניתן ליצור באמצעות השפה עצמה, למשל, IF/ELSE . הקלט לפרוצדורות אלו אינו עם ערך מידי.
לתחביר של שפת תכנות יש כללים, איך לעשות כל אחד מהדברים שהוזכרו לעיל. לדוגמה:
· הצבות:
- Squeak: var _ val
- JavaScript: var = val
- Scheme: (SET! var val)
· קריאות לפרוצדורה:
- Squeak: obj proc: arg
- JavaScript: proc(arg)
- Scheme: (proc arg)
· צורות מיוחדות (בדוגמה כאן if ):
- Squeak: bool ifTrue: [something] ifFalse: [something].
- JavaScript: if (bool) {something;} else {something;}
- Scheme: (if bool something something)
Scratch מפשט מאוד את התכנות על ידי שימוש בבלוקים: כל הבלוקים שווים, אין צורות מיוחדות. כמובן, בלוקים מסוימים מתוכנתים באופן שונה לחלוטין כמקרים מיוחדים. לדוגמה, בלוק "אם-אז" זקוק לתכנות מיוחד כדי לבצע את תוכן בלוק C, ובלוק WAIT UNTIL זקוק לתכנות מיוחד כדי לצאת מהלולאה. הצבה נעשית גם בבלוק. בלוק "חזור עד ש..." מעריך שוב ושוב את הקלט הבוליאני שלו, ואז את הבלוק שלו, הקלט, עד שהקלט הקודם מוערך כ-true. בניגוד לבלוקים מותאמים אישית, שהקלט שלהם מוערך לפני ביצועם.
יישום
שפות תכנות בדרך כלל מתפרשות או מקומפלות, מה שאומר שהן מבוצעות ישירות או מתורגמות לשפה אחרת. לדוגמה, C מקומפל, בעוד Python ו-JavaScript מתפרשים. ג'אווה מקומפלת לתוך bytecode, המתפרש על ידי ה-Java Virtual Machine.
הערה: Java ו-JavaScript הן שתי שפות תכנות שונות לחלוטין עם דקדוקים, סמנטיקה, יצירה ושימושים שונים.
ניתן להפריד את השלבים של מהדר לקצה הקדמי והחלק האחורי. הקצה הקדמי מתרגם את שפת המקור לייצוג ביניים והקצה האחורי של מהדר מתרגם את ייצוג הביניים לשפת היעד. בדרך זו, ניתן ליצור מהדרים שונים על ידי התאמת שילובים שונים של קצוות קדמיים ואחוריים.
Scratch כשפת תכנות
Scratch היא שפת תכנות מבוססת בלוקים, מונעת על-ידי אירועים, מוקלדת דינמית ומפורשת.
הקלדה
Scratch מוקלדת באופן דינמי, כלומר, סוגי הנתונים נבדקים במהלך הפעלת התוכנית. סוגי הנתונים הפרימיטיביים של Scratch הם מספרים, מחרוזות ובוליאנים.
צורות מיוחדות
הצורות המיוחדות של Scratch הם בלוקים שלא ניתן לשכפל אותם באמצעות בלוקים מותאמים אישית. בלוקים אלה עשויים להעריך מחדש את הקלט שלהם. לדוגמה, לולאת "חזור עד ש..." מעריכה מחדש את הקלט הבולאני שלה לפני כל איטרציה, כדי לראות אם הערך של התנאי השתנה.
יישום
Scratch היא שפת תכנות מתפרשת. Scratch 3.0 משתמשת במכונה וירטואלית, שבונה עץ תחביר מופשט.
שפות תכנות רלוונטיות ל-Scratch
JavaScript
JavaScript (בקיצור: JS) היא שפת תכנות פשוטה המבוססת על ECMAScript לפיתוח אתרים. JS משמש לפיתוח Scratch 3.0 וחלק גדול מאתר Scratch. Snap! גם כתוב כמעט כולו ב-JavaScript.
Node.js
Node.js הוא סביבה עבור JavaScript, המאפשרת לקוד JavaScript לרוץ על השרת.
הוא משמש ב-Scratch בדרכים רבות כולל פרויקטים, נכסים, משתני ענן וחלקים גדולים של הקהילה.
קימפול והרצה של רוב החלקים של קוד המקור של Scratch הזמינים ב-GitHub דורשים התקנה של Node.js 12.
Python
Python היא שפת סקריפטים מתפרשת פשוטה המשמשת עבור חלק מה-back-end (קוד בצד השרת) של אתר Scratch. פלטפורמת הקידוד Django משמשת בשרת nginx. הפורומים רצים על DjangoBB, ספריית Python. Python משמש גם בהרבה כלים שלuser-created ב-Scratch, כולל Kurt.
SQL
SQL (Structured Query Language) היא שפת שאילתות מסד נתונים. השפה משמשת לאחסון מידע backend באתר, כגון משתמשים ונתוני פורום.
MongoDB
MongoDB היא מערכת מסד נתונים המשמשת לאחסון משתני ענן.
GL Shader Language
GLSL היא שפת תכנות המשמשת ב-OpenGL וב-WebGL לעיבוד קודקודים ושברים. השפה בשימוש במעבד Scratch 3.0.
PHP
PHP היא שפת תכנות אשר הייתה בשימוש בקוד צד השרת של אתר Scratch 1.x (ScratchR), ועדיין נמצאת בשימוש ב-Scratch Wiki. PHP - ראשי תיבות של "PHP: Hypertext Preprocessor" (ראשי תיבות רקורסיביים).
Flash
Adobe Flash היא חבילת תכנות של Adobe, ששימשה ליצירת Scratch 2.0. תכנות פלאש נעשה ב-ActionScript, שפה המבוססת על ECMAScript.
Squeak
Squeak שימש לתכנת Scratch 1.x. זוהי שפה פשוטה שנועדה להיות קריאה ותמציתית.
Java
Java היא שפת תכנות מונחה עצמים. Java שימשה לכתיבת נגן Java עבור Scratch.
Markup Languages – שפות סימון
HTML
HTML היא שפת סימון מבוססת אינטרנט. היא משמשת לפריסה של אתר Scratch וליצירת נגן HTML5.
Cascading Style Sheets
Cascading Style Sheets (בקיצור: CSS) זה שיטה לעיצוב מסמכי HTML. שיטה זו משמשת להוספת צבע, ולהפוך אתרים למושכים יותר מבחינה ויזואלית.
