» «
שפת תכנות
מהן שפות תכנות?



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

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

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

השפה הזו מאפשרת את קיומו של תִּכְנוּת המחשבים, אחד המקצועות המרכזיים של עידן המחשב.

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

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

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

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

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

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


הכוח והיופי שבתכנות (מתורגם):

https://youtu.be/crw_U-UgvcY


על המצאת שפת התכנות:

https://youtu.be/Wchru8alhaE


מתכנת מסביר על שפות תוכנה שונות (עברית):

https://youtu.be/7Baq_Xw4azM


שפות התכנות הפופולריות ב-50 שנה האחרונות ועד היום:

https://youtu.be/Og847HVwRSI


וקורס מלא לשפת פייתון הפופולרית, קלה ומצליחה מאוד (מתורגם):

https://youtu.be/rfscVS0vtbw?long=yes
מתכנת
איך עובד המתכנת?



מתכנתים יודעים לכתוב קוד תוכנה שמפעיל את המחשב ומבצע משימות. הם עושים. זאת באמצעות שפת תכנות שהם יודעים.

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

בעולם ההייטק בדרך כלל עובדים מתכנתים שונים על תוכנה אחת. כל אחד מהם מתכנת חלק מהקוד השלם ולבסוף מחברים את כל הקוד ומעבירים לבודקי התוכנה, כדי לוודא שכל הטעויות, שתמיד יש בקוד והם נקראים "באגים", יתוקנו.


הנה מתכנתים בחברות סטרטאפ שעובדים ביחד (עברית):

http://youtu.be/iAyfMSmxKoQ


זה פירושו של קוד תוכנה:

http://youtu.be/cKhVupvyhKk


כאן ההבדל בין תיכנות כמו שמציגים אותו בסרטים ובסדרות טלוויזיה ובין המציאות:

https://youtu.be/HluANRwPyNo


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

https://youtu.be/S5S9LIT-hdc


וכמה חשוב הוא קוד תוכנה:

http://youtu.be/QdVFvsCWXrA
באג
מהו באג במחשבים?



באג הוא השם לתקלה במחשב או בתוכנה. הכל התחיל באחד מראשוני המחשבים בעולם - מחשב "הרווארד סימן 2". כשהתגלה במחשב סוג של עש (באנגלית BUG), מעין חרק שנתקע במחשב וגרם לתקלה הוחלט לקרוא לו "באג".

העש הוסר מהמחשב והודבק לדף ההתקלות 9 בשנת 1947. בעקבות אותו באג ראשון נהוג להתייחס לתקלות במחשב ובתוכנה כבאגים ומכאן המושג "באג". יש הטוענים שהמושג הומצא כבר במאה ה-19 אבל יש על כך ויכוחים רבים וספקות רבים.


הנה הבאגים במחשבים, דרך באג המחשבים הראשון:

http://youtu.be/NUnEoouyvGY
תכנות
למה כדאי ללמוד תכנות?



תכנות (Programming) הוא כתיבת קוד לתוכנה, או למה שאנו מכנים "תוכנות". בתכנות בונה המתכנת את התוכנה. לתכנות משתמש המתכנת בשפות תוכנה שונות.

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

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

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

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


הנה מה שבתי הספר, וזה חמור - לא מלמדים ילדים:

https://youtu.be/nKIu9yen5nc


הסברים לטוב שבתכנות (בעברית):

https://youtu.be/hyCqL_lLDOQ

תכנות לילדים

Kano
איזה מחשב נוצר להרכבה?



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

בנוסף למחשב Raspberry Pi יש בחבילה של מחשב קאנו גם מארז פלסטי שקוף שאליו הוא מוכנס, מדבקות לעיצוב אישי של המחשב, חיבור WiFi שמתחבר ליציאת USB, כבלי חיבור למסך מחשב, רמקול להרכבה ומקלדת חדישה ואיכותית, עם משטח מגע כמו של מחשב נייד.

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


הנה מחשב ה-Kano לילדים (הפעילו תרגום):

http://youtu.be/n5VVNmVqF6Y


הנה הרכבת מחשב ה-Kano:

http://youtu.be/iNc6NRX2JG4


הנה אב שמעיד על השימוש במחשב הקאנו עם ילדיו:

http://youtu.be/C0-IbSEBNGU
שפת לוגו
מהי גרפיקת הצב של שפת התכנות לוגו?


שפת לוגו (LOGO) הייתה שפת תכנות שפיתח צוות בראשות סימור פפרט, במכון המדיה לאב, לצרכי הוראה לילדים. היא הייתה "שפת תכנות חינוכית".

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

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

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

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

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


הנה שפת התכנות הלימודית לוגו:

https://youtu.be/g6kmVHfMQvY


ילדי שנות השמונים "פוקדים" על הצב בתכנית בשפת לוגו:

https://youtu.be/dDc3Uhl0qXw


כך כותבים תכניות פשוטות בשפת לוגו (עברית):

https://youtu.be/uzvFNDO2lPA


והנה הרצאה על אמנות שיוצרים עם קוד, שיטת יצירה שהמרצה התאהב בה בעזרת שפת לוגו בשנות ה-80:

https://youtu.be/6avJHaC3C2U?long=yes
CodeMonkey (משחק תכנות)
מהן סביבות לימוד התכנות לילדים?



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

גם האתרים סקראץ' (Scratch) וטינקר (Tynker) מציעים סביבות תכנות לילדים והם אף קלים יותר. בהם מלמדים חשיבה תכנותית על ידי פיתוח משחקים. סביבות התכנות הללו מבוססות על אובייקטים תכנותיים, מעין חלקים של פאזל, או קוביות משחק שמהן הילד בונה את התכנית. בקוביות המשחק של התכנות בהן, יש גם משתנים, הוראות ונתונים. ה"שפות" הללו קלות ללמידה ומשום כך הן מתאימות גם לגיל הרך.

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

ממש כמו בשפת הלוגו ההיסטורית, גם כאן נכתב הקוד באנגלית בסיסית, עם הוראות דוגמת turn to, step, right, left. ניתן לכתוב מהמקלדת או לבחור מילים מהמקרא שבתחתית המסך. כך התלמיד לומד לעבוד בסביבת פיתוח שמזכירה את הסביבות של המבוגרים ועדיין מקבל סיוע, שדומים לו יש למען האמת גם בסביבות פיתוח בעולם האמיתי.


האתר קוד מונקי המיועד לגיל בית ספר יסודי, מכיתה ג' ומעלה:

https://youtu.be/fXcPjdNKJdY


ומדריך ילד שמלמד:

https://youtu.be/PZFqt3KCRdk


הנה סביבת לימוד התכנות עם האובייקטים סקרץ' (Scratch) שמתאימה גם לגיל הרך:

https://youtu.be/CCaBCMADwls


וסביבת הלימוד Tynker המתחרה בה ושולטת גם בחומרה ובשפת Java Script:

https://youtu.be/XIC9tY-zkXE
אלגוריתם
מהו אלגוריתם?



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

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

אבל רגע, מה הם אלגוריתמים בכלל?

אלגוריתם (Algorithm) הוא מתכון כללי לפתרון של בעיה כלשהי. מדובר במתכון שניתן להזין למחשב והוא יסייע לפתור אותה.

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

תכנית מחשב היא ייצוג בשפת תכנות, של אלגוריתם. היא מאפשרת להריץ את האלגוריתם על מחשב.

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

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

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

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

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


הנה סרטון שמסביר בצורה פשוטה יחסית מהו אלגוריתם (מתורגם):

http://youtu.be/6hfOvs8pY1k


האלגוריתם הוא המלך בעולם המחשבים ולכן התכנות חייב להתחיל ממנו:

https://youtu.be/MRPpYX8SOA8


אלגוריתמים לפתרון הקוביה ההונגרית:

http://youtu.be/RQo8WoHQIz8


בחיוך מסוים - מסתבר שיש אלגוריתם אפילו לתרמילאים שרוצים לשרוד:

https://youtu.be/PQKOpvypN2Y


ותכנית חינוכית על אלגוריתמים (עברית):

https://youtu.be/nMJ8R9K9EQw?long=yes


אֵאוּרִיקַה - האנציקלופדיה של הסקרנות!

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

אלפי נושאים, תמונות וסרטונים, מפתיעים, מסקרנים וממוקדים.

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

בואו לגלות, לחקור, ולקבל השראה!

אֵאוּרִיקַה - האנציקלופדיה של הסקרנות!

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