צעדים ראשונים בהקס!

guide
programming

(מיכאל שלמה) #1

ברוכים הבאים להקס!

אז החלטתם להתחיל עם הקס? (אל תדאגו היא זורמת :wink:) מגניב! אבל מאיפה מתחילים? מההתקנה כמובן!

הורדה

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

בפנינו עומדות 2 אפשרויות:

  1. הורדת אשף (Wizard) - פשוט מורידים ומתקינים.
  2. קובץ בינארי - זהו בעצם קובץ ZIP שבתוכו דחוסה רק המחלקה הבסיסית[להוסיף קישור לדף שמסביר מהי המחלקה הבסיסית], בצורת התקנה זו לא יוגדרו משתנים סביבתיים (Enviroment Variables) ולא תוגדר תקייה לספיריות, כמו כן קובץ ה-ZIP לא מכיל את קבצי התיעוד.

נבחר בסוג ההורדה הרצויה ע"פ מערכת ההפעלה, במקרה שלי windows:


התקנה

נפתח את קובץ ההתקנה ונבחר את פרטי ההתקנה:

פשוט תלחצו Next

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

בחלון הזה בחרו את הספרייה שבה תותקן הקס:

ו…זהו, האשף (Wizard/Installer) יעשה את השאר.

כעת נוודא שהכל הותקן כהלכה ואנחנו יכולים להתחיל לתכנת בהקס בהמחשב שלנו!
בשביל לבדוק זאת נפתח את שורת הפקודה (cmd) ונכתוב:

haxe -version

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


עורכי קוד

ישנם מגוון רחב של עורכי קוד התומכים בהקס והם שונים אחד מהשני בהרבה מובנים כך שכל אחד יכול לכתוב בסביבה שנוחה לו.
אני התנסתי עם FlashDvevelop בלבד אז אסקור רק אותו, אך כל סקירה של עורכים נוספים או הערות/הארות על הסקירה שלי יתקבו בברכה :smile:

FlashDevelop

FlashDevelop הינו עורך קוד ומנפה שגיאות (Debugger) משובח. במקור, יועד לכתיבת ActionScript לדורותיה
ולמפתחי Flash בעיקר אך בשנים האחרונות עובר בהדרגה הסבה להקס.
FD עשיר בתכונות ואפשרויות שהופכות אותו לעורך קוד מצויין! קל משקל, מהיר, תומך במגוון רב של שפות וכמובן קוד פתוח וחינמי. :smiley:
FD ניתן להרחבה בקלות כך שכבר כיום יש הרבה תוספים שמרחיבים ומעצימים אותו, כמו כן, ל-FD יש קהילה חזקה ותומכת וכנראה לא תשארו ללא מענה במקרה ותתקלו בבעיות.
FD תומך בהשלמה אוטמאטית מלאה להקס שמתבססת על המהדר(compiler) של הקס, אך עדיין לא מספק ניפוי שגיאות לכלל היעדים (targets) של הקס.
החיסרון היחידי של FD הוא שהוא נבנה ב-C# על .net ולכן אינו תומך באופן מושלם במערכות הפעלה אחרות, יש תמיכה דרך crossover.

Sublime Text

סקירה על Sublime Text

IntelliJ IDEA

סקירה על IntelliJ IDEA

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


Haxelib

אחד ממכפילי הכח של שפת הקס (ושפות קוד פתוח בכלל) זה הקלות והפשטות של שיתוף ספריות וקטעי קוד שיצרתם וקלות השימוש בספריות שאחרים יצרו. כאשר אתם ניגשים לבנות פרוייקט מורכב הוא כנראה בנוי מכמה שכבות שחלקן ספציפיות לפרוייקט שלכן וחלקן כלליות ויכולות להתאים לכל פרוייקט דומה, המשמעות היא שכאשר אתם ניגשים לבנות פרוייקט חדש אתם יכולים פשוט להוריד ולהשתמש בשכבות שמפתחי הקס אחרים כבר פיתחו! קהילת הקס הינה קהילה מאוד שיתופית ובאתר הרשמי ישנן מאות ספריות!!! כמעט כל מה שאתם יכולים לחשוב עליו.
אז איך אני ניגש לכל הטוב הזה? Haxelib הינה תוכנית קטנה שהתקנתם יחד עם הקס ודרכה אתם מנהלים את הספריות שלכם, דרכה אתם יכולים להתקין, לעדכן, למחוק ולעשות עוד פעולות רבות על ספריות הקס, נסקור כאן את הבסיסיות:
ל-Haxelib ניגשים דרך שורת הפקודה (Cmd)

בשביל להוריד ספרייה נכתוב:

haxelib install myLib

הרבה פעמים מפתחי ספריות מעדכנים את הספריות שלהם, ולכן, בשביל לעדכן ספרייה נכתוב:

haxelib update myLib

ואם אנחנו רוצים לעדכן את כל הספריות ביחד:

haxelib upgrade

למחוק ספרייה:

haxelib remove myLib

כמובן שישנן עוד פקודות רבות נוספות שאותם אתם יכולים לראות ע"י הקשת haxelib בשורת הפקודה, כמו כן, אתם מוזמנים להיכנס לאתר הרשמי להסבר נוסף.


שלום עולם! - !Hello World

אי אפשר לסיים מדריך היכרות עם שפת תיכנות ללא יצירת פרוייקט “שלום עולם” ראוי לשמו! אז קדימה!


  1. צור קובץ חדש וקרא לו HelloWorld.hx
  2. פתח אותו באמצעות עורך קוד כלשהוא וכתוב את קוד ההקס הבא:
    class HelloWorld {
      static public function main():Void {
        trace("Hello World");
      }
    }
  1. פתח את שורת הפקודה ונווט (ע"י הפקודה cd) אל התקייה בה יצרת את הקובץ HelloWorld.hx

  2. בשורת הפקודה הרץ את הקודה הבאה:

    haxe -main HelloWorld --interp

ותקבלו:


(עמי חניא) #2

איך ממשיכים? מה השלב הבא?


(מיכאל שלמה) #3

היי מה קורה עמי? אני מקווה שאני לא טועה אבל אתה עושה מופעי אש נכון? פעם אספת אותי לטרמפ ל"מפגאשו", טוב לשמוע ממך!
ולעניין, כמה שזה ישמע קלישאתי מכאן אתה יכול להמשיך לאן שאתה רוצה! הקס יכולה לייצא ל9 שפות שונות! היעדים היותר “משופשפים” הם php,neko , js, cpp וכמובן as3 אבל כולם עובדים בצורה מאוד טובה!
היות ואני יודע שאתה מגיע מעולם הפלאש אני מאמין שיהיה לך הכי נוח להתחיל עם openfl שזה בעצם ספריית הקס שמחקה את ה api של פלאש באופן כמעט מושלם.(כן, יש לך שם מוביקליפים, ספרייטים, ביטמפים,בדיוק כמו שאתה כבר מכיר)
בשביל להתקין את הספרייה פשוט תרשום בcmd

haxelib install openfl

ולאחר שזה יסיים להתקין את openfl תריץ גם:

haxelib run openfl setup

כמו כן, אני ממליץ לך מאוד להשתמש בflashdevelop משום שיש לו כבר טמפלייט מוכן שיקל עליך להתחיל לעבוד עם openfl
וכמובן, הסוכריה: במידה ואתה עובד עם openfl אתה יכול לייצא לכל פלטפורמה בלי לשנות כלום(או כמעט כלום) בקוד שלך!
אם אתה רוצה מעט להשתפשף עם openfl אתה מוזמן ליצור את המשחק הראשון שלך

אם יש לך שאלות נוספות אשמח לענות!


(עמי חניא) #4

אכן זה אני www.mofash.com
קצת חסר לי רקע והבנה מה בדיוק ה-הקס עושה, מה עומד מאחוריו לאיך הוא עושה את זה.
ואם לדוגמא אני כותב משחק לפלאש למה לכתוב אותו ב-הקס ולא ב-as3 קלאסי?
אני עובד עם פלאש דיוולפ ותמיד ה-הקס קופץ שם לעין כשאני מתחיל פרוייקט חדש אבל לא הצלחתי להבין איפה הוא מחדש לי.


(Itzik Arzoni) #5

הי עמי, הייתרון הטוב ביותר של הקס על פני פלאש, הוא האפשרות לקמפל ולארוז לכל פלטפורמה, מאותו הקוד.
זה הולך ככה:
אתה יכול להשתמש בספריית פלאש של הקס, אבל אז באמת לא יהיה הבדל בין תכנות הקס לתכנות as3. כי הספרייה הבסיסית של הקס לפלאש יכולה ליצור רק תוצרים של פלאש.
אבל, על בסיס הספרייה הזו יצרו את OpenFl. זוהי יותר מסתם ספריה, זה sdk שלם, שגם התכנות בו כמעט זהה לפיתוח פלאש, אבל אתה יכול ליצור כל תוצר שאתה רוצה מאותו הקוד, וכל זה בשינוי של ערך בפלאשדבלופ. ז"א שם מחר תרצה לעשות את המשחק פלאש שלך לאנדרואיד, זה בלחיצת כפתור. כמובן שלאנדרואיד יש גם יכולות כמו מסך מגע וחיישני תנועה, שתוכל להשתמש בהם אם תרצה.
זה עובד באותה הצורה גם עם html5.

דבר נוסף הוא, שהספרייה OpenFl תמיד מתחדשת, ותמיד משפרים אותה, מבחינת ביצועים ותאימות ונוחות.

מיכאל נתן לך לינק לטוטוריאל בהודעה למעלה. אתה מוזמן לנסות. אם תיתקל בבעיות אנחנו תמיד נשמח לעזור :blush:


(מיכאל שלמה) #6

מה הקס עושה? במילה:

המטרה העיקרית של הקס היא ליצור מבסיס קוד אחד לכמה שפות שנות.
זה בעצם מאפשר לעשות דברים מגניבים (ומצילי חיים :smile:) כמו פיתוח של צד השרת(php) והקליינט(js) מאותו קוד, כפי שכבר הבנת ייצוא לכל הפלטפורמות מאותו בסיס קוד ועוד…

מה עומד מאחוריו?

כשאומרים הקס מתכוונים בעצם לשלושת השכבות העיקריות מהן הקס, הטכנולוגיה, בנויה:

  • שפת הקס - שפת תיכנות מודרנית וקשיחת-טיפוס (Strictly typed).
  • הספרייה הבסיסית - ספריית קוד הכתובה בשפת הקס וניתן לייצא בעזרתה, נכון להיום, ל-9 שפות שונות!
  • מהדר (Compiler) הקס

שלושת הרכיבים הללו יחד מאפשרים לפתח בצורה נוחה לשלל שפות ופלטפורמות.

איך הוא עושה את זה?

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

  • ספריה הבסיסית שבעצם מרכזת את האלמנטים שחוזרים על עצמם ברוב השפות כמו טיפוסים ומבני נתונים, מחלקות, יחידות בדיקה ועוד - חלקים אלה יכולים להתקמפל לכל שפה וכך בעצם יש לך את האפשרות “לשתף קוד” בין שפות, לתכנת JS OOP וכו’…
  • ספריית sys - מכילה יכולות המשותפות לשפות צד שרת כמו תקשורת עם db, מניפולציות על קבצים וכו’ -במידה ואתה עושה שימוש בספרייה זו אתה יכול לקמפל את הקוד שלך “רק” ל: cpp, java, macro, neko, php
  • ספרייה ספציפית לכל פלטפורמה - בסופו של דבר, Flash נועדה ליצירות אפליקציות עשירות ו-php היא שפת שרת, ולכן הקס מספקת לך ספרייה מיוחדת לכל שפה שבה מרוכזות כל היכולות שספציפיות לאותה שפה - במידה ואתה משתמש בספריות ספציפיות אתה יכול לקמפל את הקוד שלך רק לשפה זו. אבל (תמיד יש אבל :smile:) הקס מספקת לך את הכלים המאפשרים לשלב כמה שפות בביס קוד אחד ולתקשר ביניהם, זה מתבצע בעזרת Conditional Compilation וספריית Remote.

איך הקס מייצאת לפלטפורמות שונות?

הקס עצמה מאפשרת לייצא רק לשפות ולא לפלטפורמות, על גבי הקס נבנו ספריות כמו openFl, Kha, Snowkit ועוד שבעצם מאפשרות לנו ליצור לפי פלטפורמות ולא לפי שפות, מה שיפה שגם כאן יש גישות שונות (OpenFl מייצאת את הקס ל-cpp ואז מקמפלת לנייטיב של הפלטפורמה, Kha מייצאת לנייטיב של הפלטפורמה ובעצם יוצרת לך פרוייקט של אנדרואיד, פקוייקט של יוניטי וכו’…) מה שבעצם מאפשר לך לתכנת לפי צורכי האפליקציה והנוחיות שלך.

לדעתי, להקס יש יתרון מוחלט על פני AS3, בכל תחום(אולי חוץ מ-IDE וגם זה אני בספק…) הקס מקמפלת ל-SWF יותר מהר מאשר הכלים של אדובי(לא תוכל יותר לשתות קפה בין קימפולים :slight_smile: ) - ה-SWF עצמו יותר מהיר, הקס מאפשרת לך לגשת למשאבים שבפלאש נגישים לך רק דרך Alchemy, להקס(השפה) יש יכולות של -AS3 אין כמו Abstract(הרחבת טיפוסים), Enum, Pattern Matching ועוד שבעצם מאפשרים לך ליצור קוד חכם יותר וטוב יותר! ויש עוד… :smiley:


אז למה לתכנת הקס?