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

לימוד עצמי תכנות


tnewgame
 Share

Recommended Posts

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

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

 

אני קורא את הספר python crash course וכרגע אני בשלב של הפרויקטים בספר.

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

 

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

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

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

 

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

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

לא C!!!

אלא אם כן אתה רוצה לעבוד בפיתוח מערכות הפעלה או מערות זמן אמת (אתה לא).

לצערי עדיין מלמדים C באקדמיה.

 

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

 

לגבי התואר:

@Tokadon צודק בכך שיש דברים חשובים שהתואר מלמד, כמו מבני נתונים. אבל:

יש גם הרבה דברים לא חשובים שהוא מלמד. ועוד יותר דברים חשובים שהוא לא מלמד.

בכל מקרה, ל99% מהקריירות בהייטק מעסיקים מעדיפים ניסיון על תואר.

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

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

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

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

אני לא מכיר את הספר, ממה שבדקתי את התוכן עניינים (ברפרוף, אז... 😉) הוא סוקר פייתון בסיסי עד בינוני (כולל). זה אומר שאתה (כשתסיים את הספר) בנקודה מצוינת להכין פרויקטים משלך, בסדר גודל בינוני. אבל לא תבין כל פרויקט REAL-WORLD, שבד"כ משתמש בטכניקות מתקדמות יותר (לא תמיד), וספריות (כמעט תמיד) כמו DECORATORS, METACLASSES... אני לא מספיק מכיר מקורות לימוד מתקדמים, אז אני לא יכול להמליץ לך. מה שכן, נושאים אני יכול לתת:

  • FUNCTIONAL-STYLE PROGRAMMING:
    • HIGHER ORDER FUNCTIONS
    • MAP, FILTER וREDUCE (ו COMPREHENSION)
    • OPERATOR וFUNCTOOLS (מודולים חשובים בספריה הסטנדרטית)
  • DECORATORS
  • METAPROGRAMMING - ככל הנראה לא תפגוש, אבל יש ספריות שמשתמשות בזה באופן נרחב. זה שקוף למשתמש (בספריה), אבל לא למתכנתים שלה...
  • קח את התיעוד של פייתון, ותעבור אחד-אחד על כל המודולים הבילט אין. זה יעזור לך בהמשך ברמה שאתה אפילו לא יכול לשער. אתה לא יודע כמה מבאס זה לכתוב קוד במשך חמש שעות, רק כדי לגלות שהספרייה הסטנדרטית מספקת אותו וטוב יותר...

 

בנוסף, וזה מאוד חשוב, מי שבוגר קורסים או קרא ספרים ומדריכים לא יודע איך לעבוד בעולם האמיתי. שם, מה לעשות, לא עובדים כמו בספר. TESTING, VERSION CONTROL, CI/CD... אלו דברים שכל כותב קוד צריך לדעת. המלצה שלי - תלמד GIT. מדריך מעולה (בעברית!) נמצא באתר אינטרנט ישראל בכתובת https://internet-israel.com/category/מדריכים/git/. מומלץ בחום אחרי שעבדת כמה חודשים עם גיט - להשקיע את הזמן וללמוד אותה לעומק, איך זה עובד, כל הפקודות. יש לה יותר כלים משאתה יכול לשער, והיכרות מעמיקה איתם תחסוך לך שעות של שיטוטים בSTACK OVERFLOW או, גרוע יותר, כתיבת קוד שכתבת ואיבדת.

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

 

כולם רוצים מפתחים עם ניסיון. אבל איך רוכשים ניסיון אם א"א להתקבל כי אין לי ניסיון? 😔 התשובה הטובה ביותר היא לתרום לקוד פתוח. קח פרוייקטים שאתה מכיר ואוהב (ומשתמש), ותתרום. עורך הקוד שלך, שפת התכנות שלך, .... הרבה פרוייקטים מכילים ISSUES שמסומנים GOOD FIRST ISSUE או משהו בסגנון, ותמצא מפתחים מוכשרים שישמחו מאוד להדריך אותך בנבכי הפרויקט. זו הדרך הטובה ביותר להבין תוכניות REAL WORLD - לעבוד איתן.

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

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

 

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

 

חוץ מזה, מה כל כך נורא בפיתוח מערכות הפעלה / זמן אמת? תחום כמו כל תחום אחר בערך... 🙂

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

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

 

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

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

 

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

 

אתה יודע אסמבלי? אני כן. ואני חייב לציין, שכל המתכנתי C  הגאוותנים האלה, שחושבים שהם יודעים מה הולך בקרביים... 😉 מה ההבדל בין C CALLING CONVENTION לPASCAL ומה ההבדלים בין 32 ו64? לא ענית? אפילו C אתה לא יודע! ורגע, גם מבנה המחשב צריך ללמוד, ואתה בכלל יודע איך טרנזיסטור עובד? (אני לא). אז תלמד אלקטרוניקה קודם!

 

אני מקווה שהכוונה מובנת. פעם (כמו שאמרתי, שנות ה70-80 העליזות...) באמת הייתה תועלת בידיעה מה הולך מאחורי מכסה המנוע. היום ממש לא. שפות עיליות חוסכות לנו את הצורך הזה, ומניסיון שלי - זה רק מזיק. אני למדתי C בהתחלה, והתאהבתי בה. יש לה פינה חמה בלב עד היום 🙂. אבל שנים אח"כ מצאתי את עצמי לא מסוגל להתמקד בקריאות של הקוד אם היא באה על חשבון הביצועים. הידיעה שאיפשהו מאחורי הקלעים הRUNTIME של מה-שזה-לא-יהיה מוסיף עוד 4 בתים (שלמים!!!) לכל אובייקט הנדידה (איך אומרים את זה למען השם?) את שנתי. אחרי שנים נפטרתי מזה, אבל עד היום אני נלחם עם עצמי על זה בקוד C וC++. במובן מסוים זה תוצר של תכנות של פעם, אבל זה גם תוצר של הדאגה יותר מדי לדעת מה הולך שם (ולא, לא שיניתי את התנהגותי... אני עדיין מסתכל בקוד של הקומפיילרים שלי... נו, מקרה אבוד).

 

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

 

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

 

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

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

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

 

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

 

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

 

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

 

(וגם אני אוהב מאוד את עושים היסטוריה)

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

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

 

רשתות - ובכן, אני מסכים שזה היה מרתק לשמוע על כל הבעיות בפרוטוקולים מוכרים כמו TCP ולהבין שלמען השם זה לא כזה פשוט. אבל בינינו, מתי בפעם האחרונה כתבת אפילו RAW SOCKET? 😉

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

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

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

 

ואתה צודק, לא תצליח לשכנע אותי... 😜 ולא אני אותך (אבל זה כיף להתווכח, תודה)ץ

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

  • 2 שבועות מאוחר יותר...
ציטוט של af db creid

לא C!!!

אלא אם כן אתה רוצה לעבוד בפיתוח מערכות הפעלה או מערות זמן אמת (אתה לא).

לצערי עדיין מלמדים C באקדמיה.

 

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

 

לגבי התואר:

@Tokadon צודק בכך שיש דברים חשובים שהתואר מלמד, כמו מבני נתונים. אבל:

יש גם הרבה דברים לא חשובים שהוא מלמד. ועוד יותר דברים חשובים שהוא לא מלמד.

בכל מקרה, ל99% מהקריירות בהייטק מעסיקים מעדיפים ניסיון על תואר.

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

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

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

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

אני לא מכיר את הספר, ממה שבדקתי את התוכן עניינים (ברפרוף, אז... 😉) הוא סוקר פייתון בסיסי עד בינוני (כולל). זה אומר שאתה (כשתסיים את הספר) בנקודה מצוינת להכין פרויקטים משלך, בסדר גודל בינוני. אבל לא תבין כל פרויקט REAL-WORLD, שבד"כ משתמש בטכניקות מתקדמות יותר (לא תמיד), וספריות (כמעט תמיד) כמו DECORATORS, METACLASSES... אני לא מספיק מכיר מקורות לימוד מתקדמים, אז אני לא יכול להמליץ לך. מה שכן, נושאים אני יכול לתת:

  • FUNCTIONAL-STYLE PROGRAMMING:
    • HIGHER ORDER FUNCTIONS
    • MAP, FILTER וREDUCE (ו COMPREHENSION)
    • OPERATOR וFUNCTOOLS (מודולים חשובים בספריה הסטנדרטית)
  • DECORATORS
  • METAPROGRAMMING - ככל הנראה לא תפגוש, אבל יש ספריות שמשתמשות בזה באופן נרחב. זה שקוף למשתמש (בספריה), אבל לא למתכנתים שלה...
  • קח את התיעוד של פייתון, ותעבור אחד-אחד על כל המודולים הבילט אין. זה יעזור לך בהמשך ברמה שאתה אפילו לא יכול לשער. אתה לא יודע כמה מבאס זה לכתוב קוד במשך חמש שעות, רק כדי לגלות שהספרייה הסטנדרטית מספקת אותו וטוב יותר...

 

בנוסף, וזה מאוד חשוב, מי שבוגר קורסים או קרא ספרים ומדריכים לא יודע איך לעבוד בעולם האמיתי. שם, מה לעשות, לא עובדים כמו בספר. TESTING, VERSION CONTROL, CI/CD... אלו דברים שכל כותב קוד צריך לדעת. המלצה שלי - תלמד GIT. מדריך מעולה (בעברית!) נמצא באתר אינטרנט ישראל בכתובת https://internet-israel.com/category/מדריכים/git/. מומלץ בחום אחרי שעבדת כמה חודשים עם גיט - להשקיע את הזמן וללמוד אותה לעומק, איך זה עובד, כל הפקודות. יש לה יותר כלים משאתה יכול לשער, והיכרות מעמיקה איתם תחסוך לך שעות של שיטוטים בSTACK OVERFLOW או, גרוע יותר, כתיבת קוד שכתבת ואיבדת.

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

 

כולם רוצים מפתחים עם ניסיון. אבל איך רוכשים ניסיון אם א"א להתקבל כי אין לי ניסיון? 😔 התשובה הטובה ביותר היא לתרום לקוד פתוח. קח פרוייקטים שאתה מכיר ואוהב (ומשתמש), ותתרום. עורך הקוד שלך, שפת התכנות שלך, .... הרבה פרוייקטים מכילים ISSUES שמסומנים GOOD FIRST ISSUE או משהו בסגנון, ותמצא מפתחים מוכשרים שישמחו מאוד להדריך אותך בנבכי הפרויקט. זו הדרך הטובה ביותר להבין תוכניות REAL WORLD - לעבוד איתן.

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

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

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

https://www.joelonsoftware.com/2005/12/29/the-perils-of-javaschools-2/

 

ציטוט של af db creid

אתה יודע אסמבלי? אני כן. ואני חייב לציין, שכל המתכנתי C  הגאוותנים האלה, שחושבים שהם יודעים מה הולך בקרביים... 😉 מה ההבדל בין C CALLING CONVENTION לPASCAL ומה ההבדלים בין 32 ו64? לא ענית? אפילו C אתה לא יודע! ורגע, גם מבנה המחשב צריך ללמוד, ואתה בכלל יודע איך טרנזיסטור עובד? (אני לא). אז תלמד אלקטרוניקה קודם!

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

 

אגב, לא מכיר אף אחד שלמד C כמו שצריך שלא יודע מה ההבדל בין 32ביט ל64ביט. :) 

 

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

 

ציטוט של af db creid

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

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

 

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

 

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

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

קראתי את המאמר, ואני ממש לא מסכים.

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

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

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

 2. השפות הללו מסננות את האנשים הלא נכונים. יש מאמר נפלא וחשוב (בלי קשר מומלץ לקרוא אם לא עשית את זה כבר) בשם No Silver Bullet – Essence and Accident in Software Engineering שהיה פורץ דרך.

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

לא להרבה אנשים יש כוח להתעסק עם SEGMENTATION FAULTS. אבל זה ממש לא אומר שאין להם את המוח האנליטי הדרוש בשביל לתכנת.

 

נ.ב. יש טענה אחת של הכותב איתה אני ממש מסכים: JAVA היא שפה בעייתית. הוא אומר שיפרט על זה במאמר נפרד. יש לך קישור? 😜

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

הצטרפ/י לדיון

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

אורח
הוסף תגובה

×   התוכן שהודבק הוא עם עיצוב.   הסר עיצוב

  Only 75 emoji are allowed.

×   הקישור שלך הוטמע אוטומטית.   הצג כקישור רגיל

×   התוכן הקודם שלך שוחזר אוטומטית.   נקה הכל

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
  • צור חדש...