חזרה

למה Janet? מסה על דיאלקט הליספ הקטן
SiTech AI Team2 דק׳ קריאה

למה Janet? מסה על דיאלקט הליספ הקטן

המתכנת איאן הנרי מסביר במסה מדוע דיאלקט הליספ הקטן Janet הפך לשפת העבודה שלו בפרויקטי צד: ליבה של שמונה הוראות בלבד, סביבת הרצה קטנה ב-C שאפשר להטמיע וקובצי הרצה עצמאיים בלי התקנות.

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

שפה קטנה שאפשר ללמוד בערב אחד

Janet היא שפה אימפרטיבית עם פונקציות כערכים ממדרגה ראשונה, מרחב שמות יחיד למזהים וסקופ בלוקים לקסיקלי. הליבה שלה היא שמונה הוראות בלבד — do,‏ def,‏ var,‏ set,‏ if,‏ while,‏ break ו-fn — והמאקרוים מספקים מעליהן בקרת זרימה מתקדמת. הנרי מתאר את סמנטיקת ההרצה כמוכרת: "תחשבו על JavaScript, ועוד טיפוסי ערך, בלי כל המוזרויות". כל ספריית התקן נכנסת לעמוד אחד.

מבייטקוד לקובצי הרצה עצמאיים

Janet מהדרת את עצמה לבייטקוד, כותבת אותו לקובץ C שמפעיל גם את סביבת ההרצה של Janet, ואז מהדרת את הקובץ במהדר ה-C של המערכת. התוצאה: התוכניות נשלחות כקובצי הרצה מקוריים בלי צורך להתקין דבר. קובץ hello world שוקל פחות ממגה-בייט — 784K ל-Janet 1.27.0 על aarch64 macOS — כולל סביבת ההרצה, אוסף הזבל ומהדר הבייטקוד, כך שתוכניות יכולות להריץ קוד Janet בזמן ריצה. סביבת ההרצה היא ספריית C קטנה שקל להטמיע, אפילו באתרים.

PEG, סקריפטים של מעטפת ואוספים

במקום ביטויים רגולריים, עיבוד הטקסט ב-Janet מבוסס על דקדוקי ביטויי ניתוח (PEG), שהנרי מתאר כפשוטים, חזקים וצפויים יותר, ומסוגלים לנתח HTML, JSON ופורמטים בינאריים עם בייטים אפסיים. ספרייה חיצונית בשם sh מוסיפה DSL לסקריפטים של מעטפת עם צינורות והפניות. האוספים מגיעים בשתי צורות — ניתנים לשינוי ובלתי ניתנים לשינוי: לקבעים יש סמנטיקת ערך, והמשתנים, כמו טבלאות גיבוב, מושווים לפי זהות.

מאקרוים וערכים מזמן ההידור

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

SiTech

SiTech — פיתוח אתרים בכוח ה-AI

אנחנו בונים אתרים מהירים ומודרניים ומשלבים AI בתהליכי עבודה אמיתיים. יש לכם פרויקט או שאלה? נשמח לעזור.