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

guide

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

שלום וברוכים הבאים!! :smiley:

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

#ממריאים

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

##למה לתכנת בהקס?

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

מעבר לריבוי השפות יש גם ריבוי של מכשירים טכנולוגיים שאיתם אנחנו צריכים לדבר בשפה שהם מכירים כך שאם אני יודע Java אני יכול לדבר עם Android אבל לא בהכרח עם Windows Phone.

בעיית ריבוי השפות והמכשירים מעלה בעיות רבות כגון:

  • איך להפיץ מוצרים לכמה פלטפורמות? קיימות וכאלה שעתידות להגיע.

  • איך להחליף מידע בין שפות?

  • איך לתחזק קוד מרובה פלטפורמות?

  • שינוי מהיר ומתמיד של שפות קיימות והיווצרות שפות חדשות.

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

מה אפשר לעשות בעזרת הקס?
נכון להיום הקס מתקמפלת ל-8 שפות שונות - C#, Java, Python, As3, Neko, PHP, C++, JavaScript כמו כן, ניתן לקמפל ישירות ל - (SWF(Flash.
המשמעות היא שהקס יכולה להפיק את התוצרים של כל אחת מהשפות הללו (מנועי משחק ומשחקים, אתרי אינטרנט, שרתים, אפליקציות מובייל, תלת מימד וכו’).

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

  1. שפת הקס - שפת תיכנות מודרנית וקשיחת-טיפוס (Strictly typed).
    שפת הקס הינה שפת OOP חזקה וחכמה המציעה מגוון כלים כמו טיפוסים מופשטים, התאמת תבניות, אלמנטים גנריים, מאקרו ועוד! כמובן שכל זאת תוך התאמת השפה לעבודה עם מספר שפות במקביל, התחביר של הקס דומה לשפות ECMAScript.

  2. API - ספריית קוד הכתובה בשפת הקס וניתן לייצא בעזרתה, נכון להיום, ל-9 יעדים שונים!
    לכל שפה יש API שבעצם מקנה אפשרויות בסיסיות כך גם להקס. ה-API של הקס מורכב מ-3 שכבות:

  3. הסיפרייה הבסיסית – שבעצם מרכזת את האלמנטים שאפשר למצוא ברוב השפות כמו טיפוסים ומבני נתונים, מחלקות, יחידות בדיקה ועוד - חלקים אלה יכולים להתקמפל לכל שפה בה הקס תומכת ותתמוך כך בעצם יש לנו את האפשרות “לשתף קוד” בין שפות, לתכנת JS OOP ועוד!

  4. ספריית sys - מכילה יכולות המשותפות לשפות צד שרת כמו תקשורת עם db, מניפולציות על קבצים וכו’ -במידה ועושים שימוש בספרייה זו ניתן לקמפל את הקוד “רק” ל: cpp, java, macro, neko, php

  5. ספרייה ספציפית לכל פלטפורמה - בסופו של דבר, Flash נועדה ליצירות אפליקציות עשירות ו-php היא שפת שרת, ולכן הקס מספקת לך ספרייה מיוחדת לכל שפה שבה מרוכזות כל היכולות שספציפיות לאותה שפה – במידה ונשתמש בספריות ספציפיות ניתן יהיה לקמפל את הקוד רק לשפה זו. אך הקס מספקת לנו את הכלים המאפשרים לשלב כמה שפות בביס קוד אחד ולתקשר ביניהם, זה מתבצע בעזרת Conditional Compilation וספריית Remote. - חשוב לציין, כי הקס לא באה כאן להמציא את הגלגל מחדש והספריות הללו מאוד דומות ל-API המקורי, כך שאם אתם מכירים כבר את השפה אתם תרגישו בבית :smiley:

  6. מהדר (Compiler) הקס - נכתב ב oCamel
    כאן מתבצע הקסם! המהדר של הקס הוא מאוד חכם ניתן להזין אליו משתנים והגדרות ובכך להשפיע על הקוד הסופי, הוא יודע לזהות קוד מיותר ולהשמיט אותו ועוד הרבה יכולות נוספות, כמו כן, הוא מאוד מאוד מהיר! אז חסל סדר קפה בין הידורים (קימפולים).


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

אנחנו נוחתים, נא להדק חגורות

יתרונות

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

חסרונות

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

##מי משתמש בהקס?
הקס אומנם שפה יחסית לא מוכרת, אבל זה לא מונע משמות גדולים כמו דיסני, ניקולודיאון, Tivo, קוקה קולה ועוד להשתמש בה! לאחרונה הסתבר גם כי ה-FBI משתמש בהקס :smiley:; כמו כן, אלפי מתכנתים מרחבי העולם נהנים מהיתרונות של הקס ויחד יוצרים קהילה מיוחדת במינה!

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

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

איך מתקדמים?


(Itzik Arzoni) #2

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

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

כתבתי על זה עוד כאן.