לימוד תכנות - היכן להתחיל? - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

לימוד תכנות - היכן להתחיל?


Myrath

Recommended Posts

שלום לכולם,

 

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

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

 

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

 

אני משתמש כרגע באפליקצה של ENKI וגם בLEARN PYTHON - אשמח לדעת אם יש אתר חינמי או מקור יעיל יותר ללמוד ממנו. 

 

אשמח לדעת עד כמה זה אפשרי ואיך כדאי להתחיל...

 

תודה :)

קישור לתוכן
שתף באתרים אחרים

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

 

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

 

תוספים לדפדפן כותבים לרוב בכלי web כמו HTML, CSS, Javascript. לאנדרואיד כותבים בJava (באפליקציות low-level לפעמים גם יורדים לרמת הC, אבל ברובן לא צריך את זה), ובאפליקציות למחשב מגוון האפשרויות כמעט בלתי מוגבל, החל מ++C/C הותיקות, ועד לשפות יותר עיליות כמו Java, Python וכו'. בWindows אפשר גם להשתמש ב#C, ויש גם מלא שפות שהן יותר שפות "נישה" שמתאימות לדברים ספציפיים.

 

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

 

אפשר להתחיל משפות low-level - שזה ++C/C. זה יהיה הרבה יותר קשה וייקח יותר זמן, אבל תסיים עם הבנה הרבה יותר מעמיקה של איך דברים עובדים. אפשר להתחיל משפות יותר פשוטות כמו Python או סתם שפות "מנוהלות" כמו #C או Java, ששם אתה לא צריך להתעסק עם הברזלים - ככה יהיה לך יותר קל לפחות עד הפעם הראשונה שתיתקל באיזו משימה שתדרוש תכנות low-level.

 

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

 

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

 

פיתוח תוספים לכרום

https://developer.chrome.com/extensions/getstarted

 

אפליקציות לאנדרואיד

https://developer.android.com/training/basics/firstapp/

קישור לתוכן
שתף באתרים אחרים

ציטוט של QttP

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

 

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

 

תוספים לדפדפן כותבים לרוב בכלי web כמו HTML, CSS, Javascript. אפליקציות לאנדרואיד כותבים בJava (באפליקציות low-level לפעמים גם יורדים לרמת הC, אבל ברובן לא צריך את זה), ובאפליקציות למחשב מגוון האפשרויות כמעט בלתי מוגבל, החל מ++C/C הותיקות, ועד לשפות יותר עיליות כמו Java, Python וכו'. בWindows אפשר גם להשתמש ב#C, ויש גם מלא שפות שהן יותר שפות "נישה" שמתאימות לדברים ספציפיים.

 

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

 

אפשר להתחיל משפות low-level - שזה ++C/C. זה יהיה הרבה יותר קשה וייקח יותר זמן, אבל תסיים עם הבנה הרבה יותר מעמיקה של איך דברים עובדים. אפשר להתחיל משפות יותר פשוטות כמו Python או סתם שפות "מנוהלות" כמו #C או Java, ששם אתה לא צריך להתעסק עם הברזלים - ככה יהיה לך יותר קל לפחות עד הפעם הראשונה שתיתקל באיזו משימה שתדרוש תכנות low-level.

 

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

 

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

 

פיתוח תוספים לכרום

https://developer.chrome.com/extensions/getstarted

 

אפליקציות לאנדרואיד

https://developer.android.com/training/basics/firstapp/

 

היי,

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

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

נתת תשובה מאוד מפורטת - תודה על ההשקעה.

ברשותך, אשמח אם בכל זאת תוכל למקד אותי ברמה הפרקטית:

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

 

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

אתן לך דוגמא:

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

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

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

במקרה הזה המפתח השיב שהוא עובד בדיוק על זה כרגע.

 

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

אז לפי מה שאתה יודע על התחום הזה ועל הקושי ליצור תוספים או תוכנות או פיצ'רים מהסוג שציינתי - כדאי לי בכלל להתחיל? 

 

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

קישור לתוכן
שתף באתרים אחרים

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

 

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

 

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

 

מהיכרותי עם עולם התוכנה (גילוי נאות: זה המקצוע שלי), אני יכול לומר שמה שמאפיין את רוב הדברים שתיארת הוא:

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

לדוגמה - אם אני הייתי רוצה לממש משהו מהרעיונות שלך, הייתי צריך:

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

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

 

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

 

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

קישור לתוכן
שתף באתרים אחרים

ציטוט של QttP

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

 

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

 

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

 

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

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

לדוגמה - אם אני הייתי רוצה לממש משהו מהרעיונות שלך, הייתי צריך:

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

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

 

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

 

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

 

היי, שוב תודה רבה על התגובה המפורטת.

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

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

 

שוב תודה רבה על הפירוט והעזרה!

קישור לתוכן
שתף באתרים אחרים

ציטוט של QttP

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

 

היי,

 

 

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

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

 

רציתי, אם אפשר, להטריד אותך רק בשאלה  כללית אחת נוספת - האם כדאי ללמוד תוכנה מסויימת או קורס מסויים (למשל QA) כ"תכנית ב'" למקצוע הנוכחי שלי? כלומר, משהו שאפשר ללמוד דרך כמו "enki" או "learn python" ושיועיל בשוק העבודה?

אולי קורס או אפילו לימודי תעודה?

 

[מציין שאני חלש בתחום הריאלי הן מבחינת הישגים והן מבחינת כישורים]

 

תודה!

קישור לתוכן
שתף באתרים אחרים

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

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

 

עדיין, הדרך העדיפה היא ללמוד לתואר.

קישור לתוכן
שתף באתרים אחרים

ציטוט של Jabberwock

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

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

 

עדיין, הדרך העדיפה היא ללמוד לתואר.

 

היי, תודה על העצה.

אני חושב על זה כגיבוי על כל מקרה וכיו"ב, ולא כמסלול קריירה (שהרי אני כבר כרגע נמצא בעיצומו).

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

לכל הפחות - אין לימודי תעודה, קורס מקיף?

 

תודה,

 

דן

קישור לתוכן
שתף באתרים אחרים

אני לא בטוח שהבנתי את השאלה במלואה אבל אנסה לענות.

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

קורסים תמיד יהיו. גם ינסו להסביר לך Design Patterns אבל הבנות היסוד שלך יהיו חלשות.

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

קישור לתוכן
שתף באתרים אחרים

ציטוט של Jabberwock

אני לא בטוח שהבנתי את השאלה במלואה אבל אנסה לענות.

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

קורסים תמיד יהיו. גם ינסו להסביר לך Design Patterns אבל הבנות היסוד שלך יהיו חלשות.

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

 

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

 

תודה לכם :)

קישור לתוכן
שתף באתרים אחרים

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

קישור לתוכן
שתף באתרים אחרים

סליחה שאני מתפרץ לדיון הממוקד,

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

קישור לתוכן
שתף באתרים אחרים

ציטוט של QttP

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

 

בדיוק נזכרתי בסיבה השניה שציינת, שהתחום שלכם משתנה במהירות.

תודה :)

קישור לתוכן
שתף באתרים אחרים

  • 1 חודש מאוחר יותר...

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...