מתחילים ללמוד תכנות ? C היא השפה עבורכם !

שלום לכם, אז בחרתם להתחיל ללמוד תכנות ? מעולה !

אבל אל תעשו את הטעות שרוב בני האדם שרוצים להתנסות בתכנות עושים-הולכים ללמוד בהתחלה שפה עילית (high level) כמו Python לדוגמא.

למה לא Python ?

Python היא אחת השפות הכי קלות ופשוטות להבנה.

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

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

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

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

אך, מנקודת מבטו של מתכנת בC, הוא ישר יידע להגיד שמשתנה מטיפוס מחרוזת (String) מורכב ממערך של תווים(chars) ותו NULL בסופו-הרי בשפת C אין טיפוס מחרוזת, ועל המתכנת ליצור מערך של תווים עם NULL בסוף בשביל לממש את טיפוס המחרוזת, ולכן מחרוזת(String) הוא אינו טיפוס פרמיטיבי, כי צריך לממשו (שפות high level מגיעות עם מימוש מוכן ולכן יש את הטיפוס מוכן לשימוש).

כעת כשהבנו למה לא לבחור שפות עילית בתור התחלה, אז איזו שפה כן עדיף לבחור למתכנת המתחיל ? 

שפת C היא שפה בקטגוריית שפות נמוכת (low level). שפות המשתייכות לקטגוריה זו בדרך כלל יהיו שפות סף (כמו Assembly) או שפות שמדברות ישירות עם מערכת ההפעלה וקרובות לקישור עם חומרת המחשב. יתרון משמעותי של שפות בקטגוריה שפות נמוכות(low level) הוא שהן יעילות באופן משמעותי מאשר שפות עילית(high level) ודורשות פחות משאבים בדרך כלל.

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

 האחריות לשחרר את הזיכרון היא על המתכנת בלבד !

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

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

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

מפאת זאת ששפות התכנות דומות זו לזו, כשמתחילים מהקשה לבסוף הקשה נהיה בינוני, הבינוני נהיה קל, והקל נהיה פשוט !

לכן, אני סבור בכך שבשביל המתכנת המתחיל, C זו השפה המנצחת שתוביל אותו להצלחה בתחום התכנות.

טיפים למתכנת המתחיל

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

אני אישית משתמש הרבה בתכנות בשביל להפוך פעולות שהייתי עושה באופן ידני לפעולות אוטומטיות ומהירות יותר.

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

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

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

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

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

הטיפ הכי חשוב שיש לי בשביל מתכנתים מתחילים הוא:

אם נתקעתם והינכם לא מצליחים להתקדם עקב בעיה או שגיאה - לפני ששואלים מומחה, שואלים את Google !

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

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