איך מתחילים?

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

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


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




"
בראש ובראשונה חשוב לזכור את המשפט: שפת תכנות היא כלי, לא מטרה. המטרה היא לתכנת, ולכן פחות חשוב איזו שפה תלמדו, ויותר חשוב להבין ולהפנים את העקרונות התכנותיים. מתכנת טוב יידע להתמודד עם שפות חדשות בקלות, כאשר כל מה שהוא יצטרך ללמוד זה תחביר חדש של השפה. כיוון שהיכולות של השפות הפופולריות כיום הן די זהות ביכולותיהן (זה נובע מכך שהן שפות General Purpose - שפות שנועדו לכתיבת כל תכנית, ולא רק לתוכניות מסוג מסוים) השיקולים לבחירת השפה צריכים לנבוע מכמה נוח לעבוד עם השפה, כמה היא קלה ללמידה, וכמה היא מלמדת עקרונות תכנות נכונים.
ההמלצה העיקרית שלי היא להתחיל ללמוד אחת משלוש השפות: Python, Java או #C. שלושתן שפות מודרניות, מונחות עצמים עם ניהול זכרון, ועם בסיס משתמשים רחב מאוד.
Python היא שפה מאוד נוחה וקלה ללמידה עם כללי תחביר מאוד גמישים. הכללים הגמישים האלו מאפשרים ללמוד אותה במהירות והופכים אותה לשפה מאוד קריאה (כלומר, מקריאה בלבד של הקוד אפשר להבין בקלות מה הוא עושה), ומאפשרים למתכנתים להתמקד באלגוריתמיקה ולא בהתעסקות עם "ג'יפה" של מימוש. עם זאת, הגמישות הזו היא חרב פיפיות, משום שהיא יכולה גם להקנות למתכנת הרגלי תכנות לא נכונים. אני ממליץ להתחיל משפה זו למי שרוצה לקבל טעימה מעולם התכנות, ולכתוב תוכניות פשוטות במהירות וביעילות.
Java ו-#C הן שתי שפות מאוד דומות (#C שאבה השראה רבה מ-Java). שתיהן מזכירות את ++C בתחביר שלהן, אבל שם הדמיון מסתיים, והן שפות הרבה יותר נוחות וחזקות ממנה (למרות השם, אין קשר בין ++C ל-#C). בניגוד לפייתון יש להן חוקי תחביר הרבה יותר קשיחים, שלדעתי יעזרו להקנות לכם הרגלי תכנות נכונים. לשתיהן יש סביבות פיתוח חינמיות (Eclipse עבור Java, ו-Visual Studio Express עבור #C) ועשרות, אם לא מאות, מדריכים ברשת. יש לשים לב שבגלל שהשפות כל הזמן מתפתחות ומשתפרות עדיף ללמוד ממדריך עדכני, לפחות משנת 2005-6 (ליתר דיוק, לפחות מגרסה 5.0 של Java או גרסה 2.0 של #C). אישית, אני מעדיף את שפת #C ממספר סיבות - היא מכילה מספר כלים יותר חזקים מאשר Java,  כל הזמן מעדכנת ומכניסה בה שיפורים, והחבילה הסטנדרטית שלה יותר רחבה ונוחה לשימוש (לדוגמה, כתיבת ממשק גרפי - GUI - הרבה יותר קלה ב-#C מאשר ב-Java). לעומתה, Java הוא Cross-Platform (כלומר ניתן להשתמש בה בכל , ולא רק בחלונות) והיא יותר חופשית לשימוש (רוב השפה הוא קוד פתוח) ולכן היא יותר נפוצה בלימודים באוניברסיטאות.
בניגוד למה שרבים אומרים, אני ממליץ לא להתחיל מ-C או מ-++C (או רחמנא ליצלן, ללמוד C ואז "להתקדם" ל-++C). הן אמנם מלמדות יותר איך "באמת" עובד המחשב (על ידי כך שהן מתורגמות ישירות לשפת המכונה שרצה על המעבד ללא שפת ביניים, והן משתמשות בגישה ישירה לזכרון בלי שום ניהול) והן עדיין השפות הפופולריות ביותר בשוק פיתוח התוכנה, אך הן יותר קשות ללימוד ולתחזוקה, מתכנתים צריכים להתעסק הרבה ב"ג'יפה" שמסביב לתכנות, וזה ויכול בקלות מאוד להרתיע מתכנתים חדשים.
בנוסף, חשוב לציין האם אתם רוצים ללמוד שפת תכנות למטרה ספציפית. לדוגמה, אם ברצונכם ללמוד לתכנת עבור טלפונים סלולריים, אז מומלץ ללמוד דווקא Java (אשר באמצעותה כותבים למערכת Android) או Objective-C (שפה המבוססת על C, ובאמצעותה כותבים למערכת iOS). אם ברצונכם לפתח אתרי , אז תלמדו את השפות המתאימות לכך - HTML+CSS (לבנייה ועיצוב של אתרים) ולאחר מכן JavaScript ושפת צד שרת (PHP, ASP.NET וכד') בשביל לבנות אתרים דינמיים.
עוד פרט חשוב: כמו כל נושא בתחום המחשבים, חשוב לדעת אנגלית ברמה סבירה. אמנם קיימים ספרים ומדריכים ברשת בעברית המלמדים תכנות, אך בדרך כלל הרמה שלהם פחותה מזו של חבריהם באנגלית, הם לא מעודכנים, או שהם עוסקים אך ורק בנושאים הבסיסיים, ולכן הם טובים למתחילים אבל כבר לא יתאימו למתכנת שרוצה ללמוד נושאים מתקדמים יותר. "

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















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

- קנו לכם מחשב לתכנת בו.
- הורדת Visual Studio (התוכנה שכותבים בה את רוב הקוד שנלמד: שפת C, שפת ++C ושפת #C).
- הקוד הראשון שלכם - שפת C.
- שפת ++C (אחרי שסיימתם עם שפת C).
- שפת #C (אחרי שסיימתם עם שפת ++C).
- Java (מקבילה ל-#C).






אין תגובות:

הוסף רשומת תגובה