חווה סקריפט

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

main
בכל מקום שיופיע קוד חווה סקריפט באתר, אאפשר לערוך את הקוד ולבקש שאריץ אותו. הקוד ירוץ בדפדפן שלכם ע״י המרתו ל-JavaScript תחילה, ולאחר מכן שערוך של הקוד אשר נוצר. את תוצאת ההמרה תוכלו לראות משמאל, ואת הפלט לממשק הבקרה (בלעז: console) תוכלו לראות מימין.

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

תוכן עניינים

משתנים

בחווה סקריפט ניתן להצהיר על משתנים ב-3 אופנים, בדומה ל-JavaScript, ע״י שימוש במילות המפתח משתנה, יהי ו- קבוע אשר אמיר ל- var, let ו- const בהתאמה.

variables
שימו לב לקריאה בקרה.תעד אשר ממומרת ל- console.log, את המנגנון שמנחה אותי בזמן התרגום אסביר בהמשך העמוד.

יכולות

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

functions
שימו לב ליכולת לדבר2, זוהי יכולת משונה (בלעז variadic function), הציצו על תוצאה ההמרה משמאל על מנת להבין את קוד ה-JavaScript שנוצר.

ביטויי הגיון

ביטויי הגיון בחווה סקריפט מתבססים על מילות המפתח אמת, שקר, אם ו- אחרת.

ifs

לולאות

בחווה סקריפט 3 סוגי לולאות, לולאת עבור (for), לולאת כאשר (while) ולולאת עשי (do).
לולאת עבור יכולה להתבצע גם על מפתחות עצם ע״י שימוש ב- מתוך (in), או על ערכי העצם ע״י שימוש ב- של (of).
מתוך גוף לולאות ניתן להנחות אותי לקפוץ החוצה מגוף הלולאה ע״י שימוש ב- שברי (break), או לקפוץ לחזרה הבאה ע״י שימוש ב- המשיכי (continue).

loops

החלפת מקרה

ביטויי החלפת מקרה בחווה סקריפט מתבססים על מילות המפתח החליפי, מקרה, שברי, ו- ברירתמחדל.

switches

טיפול בשגיאות

ביטויי טיפול בשגיאות בחווה סקריפט מתבססים על מילות המפתח נסי, תפסי, ולבסוף, ו- זרקי.

errors
שימו לב לביטויי הלמבדה (בלעז: lambda expressions), בתחתית הקוד, אשר מאפשרים להגדיר יכולת חסרת שם.

תכנות מונחה עצמים

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

oop1

ניתן להגדיר ירושה בין מחלקות ע״י שימוש במילה מרחיבה (extends), מתוך גוף המחלקה היורשת ניתן לגשת למאפיינים ושיטות של מחלקת האם ע״י שימוש במילה אמא (super).

oop2
ניתן לתת למשתנה ערך ריק ע״י שימוש במילה כלום (null), לבדוק מחלקה של עצם ע״י שימוש ב- מסוג (instanceof) ולהגדיר מאפיינים ושיטות נייחות ע״י שימוש במילה נייח (static).

את רשימת מילות המפתח המלאה ניתן למצוא בעמוד התיעוד


הערות

comments

תרגום שמות משתנים

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

dictionary1

משתנים פומביים נוספים אשר כדאי להכיר הם תוהו - undefined, לאמספר - NaN, חשבון - Math, הבטחה - promise ו- פנחס פענוח נתונים חווה סקריפט - JSON קיצור עבור JavaScript Object Notation.

dictionary2

שיטות ומאפיינים של משתנים פומביים מתורגמים אף הם. לדוגמא חשבון.רצפה אשר מתורגם ל- Math.floor, הבטחה.הפר אשר מתורגם ל- Promise.reject ושיטות ומאפייני מערך אורך, מפה ו- צמצם, אשר מתורגים ל- length, map ו- reduce בהתאמה.

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

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