איך לומדים לבנות תוכנה
-
@nigun כתב באיך לומדים לבנות תוכנה:
בעבר התחלתי לכתוב ספר על איך מחשבים עובדים וכו' אבל צריך מוטיבציה+זמן
אולי אם תתן פידבק זה יתן לי את המוטיבציה.
הפרק הראשון נמצא כאן וכל אחד יכול להציע הצעות עריכה (אבל דורש קצת ידע בגיט שזה תוכנה לניהול גרסאות בקוד)
https://github.com/ynigun/open-bookהתחלת שם בצורה יפה מאוד
נהנתי לקרוא ואני רוצה לתת לך את כל הפידבק שבעולם (חבל שאפשר לתת רק לייק אחד)כבר הוספתי לך שם משהו (את הר"ת של RAM) מצאתי את זה די בקלות בויקיפדיה
-
@יעקב-מ-פינס
מצויין.
כל הרעיון של הספר שכל אחד ירגיש בנח לכתוב את מה שהוא יודע גם אם המידע חלקי ושאחר כך יגיע מישהו אחר וישלים את המידע.עכשיו הוספתי עוד קטע קטן על אסמבלי כשאני יודע שהמידע לא מדוייק ובהמשך אני או מישהו אחר יערוך את הקטע וידייק את הנתונים ויערוך אותו לשונית, וכן הלאה.
-
@nigun כתב באיך לומדים לבנות תוכנה:
@יעקב-מ-פינס
אפשר להתחיל ללמוד כתיבת תוכנה מהתאוריה איך זה עובד מתחת למכסה מנוע
או פשוט לקרוא מדריך שמסביר איך לפתוח עורך טקסט ולכתוב כמה פקודות ולהפעיל עם תוכנה כל שהיא והנה הקוד רץ.
למתחילים לרוב ממליצים לקחת את המדריך שיביא אותם למשהו שעובד בדרך הכי מהירה, למשל להריץ JS בדפדפן זה קל ולא דורש להתקין הרבה תוכנות בשביל לכתוב "שלום עולם".
לפעמים יש הרגשה מעצבנת שלא מבינים איך זה עובד מתחת למכסה מנוע וזה הרגשה בריאה, כי אלו שלא מנסים לחשוב נשארים רדודים, הבעיה היא שהחומר המעמיק הוא בעיקר באנגלית, אבל אחרי שאתה יודע איך לכתוב תוכנה פשוטה בלי להבין מה קורה באמת יותר קל ללמוד אחר כך את הנושא לעומק.בעבר התחלתי לכתוב ספר על איך מחשבים עובדים וכו' אבל צריך מוטיבציה+זמן
אולי אם תתן פידבק זה יתן לי את המוטיבציה.
הפרק הראשון נמצא כאן וכל אחד יכול להציע הצעות עריכה (אבל דורש קצת ידע בגיט שזה תוכנה לניהול גרסאות בקוד)
https://github.com/ynigun/open-bookמדהים! תמשיך עוד!!!
-
אני חולק על כל מי שחושב שכדאי להתחיל מjavascript בתור שפת תכנות ראשונה.
השפת תכנות הראשונה צריכה להיות שפה שתתרום לך להכיר את הקונספטים של תכנות הכי טוב, javascript מציעה יותר מדי פי'צרים ייחודיים (המילה this מחליפה תפקיד לפי הקונטקסט, כל הOOP מבוסס על prototype בשונה משפות OOP אחרות, דינאמיות דינאמית מדי).כשלומדים שפה ראשונה, זה אמור להיות הבסיס גם להמשך הדרך, ומי שיתחיל מjavascript ומחר יגידו לו שצריך קוד בשפה מקומפלת כלשהי עם טיפוסיות חזקה, הוא יצטרך להשלים הרבה חומר וזה אחרי שהראש שלו כבר התרגל לצורת עבודה מסוימת, מה שיקשה עליו.
הרשימה שלי של שפות שכדאי להתחיל מהן, לפי סדר קצרות דעתי הקטנה והשפלה בלי עין הרע כן תרבה:
- C#
- TypeScript
- Kotlin
- go
ואלו השפות שקצרות דעתי הרחבה חושבת שאפשר ללמוד אחרי שכבר יש הבנה טובה של אחת מהשפות דלעיל:
- javascript
- python
- ><>
- apl
ויש את השפות שאף אחד לא צריך, אבל תורמות מאוד לידע:
- C
- Pharo
- Haskell
- Assembly
אין להסיק מדבריי כלל את השקפותיי לגבי שפות שלא נכתבו באחת הרשימות כאן.
-
@חגי כתב באיך לומדים לבנות תוכנה:
javascript מציעה יותר מדי פי'צרים ייחודיים (המילה this מחליפה תפקיד לפי הקונטקסט, כל הOOP מבוסס על prototype בשונה משפות OOP אחרות, דינאמיות דינאמית מדי).
אם ככה, למה typescript נמצא שני ברשימה של המועדפים? כל זה קיים גם שם, וגם ב-JS יש מעטפה של קלאסים רגילים על גבי הקלאסים המוזרים, אין הבדל בזה בין JS ל-TS
הפתרון הנפוץ זה ללמוד רק את Javascript: The Good Parts
JS מודרני הוא הרבה פחות גרוע מהישן אם מתעלמים מהשגעונות
ומכיון שכך אני חולק עליך לגבי העדפת הלימוד של TS כשפה ראשונה בניגוד ל-JS
אגב, TS היא "שפה" מאוד מסובכת אם מתעמקים. היא גם בכלל לא שפה
אני ממליץ לאנשים ללמוד TS אחרי שהם חוו את הכאב של חוסר הבדיקות של JS, אחרת הם לא יבינו למה צריך כל הפרוצודורהלגבי #C: יש אנשים רבים שמתחילים ונשארים בעולם הווב כל חייהם, להם נראה לי שיותר כדאי JS מ-#C
כנ" קוטלין וגו (שגם פחות נפוצים ופחות יאפשרו למצוא עבודה)
אני גם לא כל כך בטוח שגו אמור להיות ברשימה זו><>
אני מקווה שזה ברור לאנשים שזה בדיחה
apl
זה אמור להיות בתחתית הרשימה השלישית
יש מקום גדול לדון להוסיף לרשימה השלישית גם LISP -
@חגי כתב באיך לומדים לבנות תוכנה:
לפי סדר קצרות דעתי הקטנה והשפלה בלי עין הרע כן תרבה
לגופם של דברים,
אני בעד שאנשים יתחילו מC#, ההודעה שלי מתאימה לפותח הנושא ולאנשים (והרוב כאלו)
שרוצים למשש מייד בהתחלה את התועלת הפרקטית שבקוד.
בHTML+JS אפשר מייד לכתוב דף שבונה קישור שותפים למוצר באמזון,
אבל בC# חוץ משלום עולם בקונסולה לוקח זמן לעשות דברים אפקטיביים עם ממשק וכולי. -
@חגי כתב באיך לומדים לבנות תוכנה:
כשלומדים שפה ראשונה, זה אמור להיות הבסיס גם להמשך הדרך, ומי שיתחיל מjavascript ומחר יגידו לו שצריך קוד בשפה מקומפלת כלשהי עם טיפוסיות חזקה, הוא יצטרך להשלים הרבה חומר וזה אחרי שהראש שלו כבר התרגל לצורת עבודה מסוימת, מה שיקשה עליו.
אתה יוצא מנקודת הנחה שהשפה הראשונה מקבעת את הבן אדם לתבנית מסויימת.
זה בעיה בכל שפה גם בשפות "טובות" (למשל אתה חושב משום מה שC# היא בראש הרשימה וזה לא בגלל שאתה מכיר את כל החלופות לעומק והגעת למסקנה החכמה שC# הכי טוב).לכן העצה אמורה להיות "אל תתקבע לשפה הראשונה שלך" ואל תלמד רק שפה אחת.
אני מודה שגם אני חוטא בזה כי אני עד היום לא למדתי JS או python (וגם לא מתכנן ללמוד בעתיד הקרוב)
אבל אני חושב שזה יותר גרוע ללמוד JS/C#/python/PHP ולחשוב ששם נגמר העולם, ושאין מספיק ספריות בשפות אחרות, ושמי שכותב בשפות אחרות פשוט מובטל מחוסר ביקוש (שלפעמים זה דווקא הפוך).אני חושב שטוב להתחיל משפה כמו V, כי אין סיכוי למצוא בזה עבודה, אבל זו שפה שעובדת למעט כמה באגים שלא מפריעים למתחילים
והעקרונות שבה קיימים ברוב השפות, ואחרי שבונים "שלום עולם" ועוד כמה דברים חמודים אין ברירה וחייבים לעבור לשפה שאפשר להשתמש בה בעולם האמיתי. -
@nigun
אני לא מכיר את החלופות לעומק (בעצם כל מה שכתבתי מלבד C#), אבל אני מודע אליהן.ואני מסכים עם הטענה שאסור להתקבע לשפה הראשונה, אבל יש קונספטים שחוזרים על עצמם בהרבה שפות, ואם אתה לוקח שפה שמשמיטה משהו חשוב כמו טיפוסיות חזקה, אז כשתתקל בהם אתה תלך לאיבוד, ותאלץ לשבור את הראש או לחלופין להתייאש.
הסיבה שכתבתי את go ברשימה היא בגלל שהיא מספיק יציבה בשביל להיות השפה היחידה של מתכנת (בשילוב עם wasm)
לגבי V, אני חושב שהיא יכולה גם להיות שפה יחידה, יש בה הכל, הסיבה שלא כתבתי אותה בראש הרשימה הראשונה היא בגלל שהשפה עדיין תחת פיתוח ראשוני, וכל minor version שיוצא שובר את הקוד הקודם, אבל זאת השפה הכי מרשימה על הנייר שקיימת (שוב, לפי קוצר דעתי בלה בלה)
נראה לי שמי שיחשף מעט ל-V לא ירצה לעזוב אותה, עד שהוא יגלה שחלק מהפיצ'רים בתיעוד לא קיימים בגלל שהם בפיתוח.
-
@חגי כתב באיך לומדים לבנות תוכנה:
ואני מסכים עם הטענה שאסור להתקבע לשפה הראשונה, אבל יש קונספטים שחוזרים על עצמם בהרבה שפות, ואם אתה לוקח שפה שמשמיטה משהו חשוב כמו טיפוסיות חזקה, אז כשתתקל בהם אתה תלך לאיבוד, ותאלץ לשבור את הראש או לחלופין להתייאש.
אני עברתי מPHP לgo ולא הרגשתי שאני שובר את הראש כל כך על טיפוסיות (אפילו שלא היה תמיכה בגנריות בזמנו)
זה היה נראה לי די סביר שאני צריך להגדיר מראש מה סוג המשתנה מראש.
(נראה לי שדווקא די התלהבתי מכך שזה חוסך לי באגים מעצבנים).
אני דווקא מאבד את הראש כשאני מריח OOP, כי בPHP לא הספקתי להשתמש בOOP.נראה לי שמי שיחשף מעט ל-V לא ירצה לעזוב אותה, עד שהוא יגלה שחלק מהפיצ'רים בתיעוד לא קיימים בגלל שהם בפיתוח.
עד שהוא יגלה שהוא לא יכול לכתוב איתה שום תוכנה משמעותית בעולם האמיתי (לפחות בשנים הקרובות)
ולא יהיה ברירה לעבור לשפה יותר בשלה (אם כי הוא כנראה יתגעגע לפיצ'רים שV מבטיח)הסיבה שכתבתי את go ברשימה היא בגלל שהיא מספיק יציבה בשביל להיות השפה היחידה של מתכנת (בשילוב עם wasm)
זה דווקא חיסרון כי כאמור זה בעייתי להתקבע בשפה אחת.
בפועל לא חושב שתראה הרבה מפתחי פרונט אנד שכותבים wasm עם go, כי מכיוון שזה מגיע ביחד עם הGC זה לא יעיל כל כך ולכן גם לא יהיו פריימרוקים ושאר כלים שיתמכו בgo+wasm
(נראה לי שלzig יש יותר פוטנציאל) -
@nigun כתב באיך לומדים לבנות תוכנה:
עד שהוא יגלה שהוא לא יכול לכתוב איתה שום תוכנה משמעותית בעולם האמיתי (לפחות בשנים הקרובות)
הcore features כבר קיימים, החיסרון הוא שגם בהם יכולים פתאום להחליף לך שמות טיפוסים וכד' (בגירסה האחרונה הם שינו את השם של byte ל-u8, ואת ustring ל-[]rune), אבל מי שבונה לעצמו משהו, זה אמור להספיק לו.
רק הkiiler features של V עדיין WIP, אז זה עוד לא הופך אותה לדבר הכי מדהים שקיים עלי אדמות. -
@nigun כתב באיך לומדים לבנות תוכנה:
אני עברתי מPHP לgo ולא הרגשתי שאני שובר את הראש כל כך על טיפוסיות (אפילו שלא היה תמיכה בגנריות בזמנו)
גם אני מצטרף
@nigun כתב באיך לומדים לבנות תוכנה:
אני דווקא מאבד את הראש כשאני מריח OOP, כי בPHP לא הספקתי להשתמש בOOP.
לא הבנתי, בGO אין בכלל OOP [זה אחד החידושים שלה]
-
@יעקב-מ-פינס קראתי בריפרוף מהיר (אין לי הרבה זמן..)
אבל בתור אחד שלמד ככה, אני חושב שאכן חשוב ללכת בהתחלה על שפה שתנחיל לך את המושגים ודרך החשיבה של מתכנת כדברי @חגי
מצד שני יש צדק במה שכתב @dovid לגבי הענין שלא יהיה לך הרבה מה לעשות במשך הרבה זמן אם תתחיל מהדברים הכבדים...
לכן, אציע את מה שאני עשיתי, התחלתי עם js+html+css (שתי האחרונות לא ממש שפות אני יודע..) ואני מדגיש את השילוב, כי נהנתי והתפתחתי ממשחק בעיצוב ובF12 של אתרים והשילוב בין השלושה נתן לי המון על בניית ואיך עובדים אתרי אינטרנט...
במקביל ממש כתבתי סקריפטים לאוטומציה בpython שזה שפה ממש קלה לדעתי, ומצד שני קצת יותר מעצבנת ודורשת הבנה של ממש במה אתה בדיוק כותב.. וגם יש בה את השימוש המיידי האמיתי יותר מjs, עם שימוש בשלל הספריות אפשר לעשות עולם ומלואו..
אחרי שאתה מרגיש טוב עם 2 אלה, הגיע הזמן שתלמד משהו שבאמת תוכל לכתוב איתו תוכנות "אמיתיות" ולדעתי כדאי שתלך על C#...
(אישית אני נדפקתי עכשיו עם איזה פרויקט בVB.NET ולדעתי לשם אל תלך מרצון אא"כ אתה רוצה להתעסק עם אקסס וVBA... (גם את זה לא כדאי לעשות 🤪))
-
@dovid כתב באיך לומדים לבנות תוכנה:
(הכלי שמייד תצטרך זה VSCODE,
מאוד לא מיד, הקונסולה מצויינת בשביל סקריפטים בודדים באורך של עד מאות שורות – ויקח לו הרבה זמן עד שהוא יתקדם משם. והרי
@dovid כתב באיך לומדים לבנות תוכנה:
ההודעה שלי מתאימה לפותח הנושא ולאנשים (והרוב כאלו)
שרוצים למשש מייד בהתחלה את התועלת הפרקטית שבקוד. -
@אביי כתב באיך לומדים לבנות תוכנה:
וגם יש בה את השימוש המיידי האמיתי יותר מjs
אפשר דוגמא? (א"צ בקוד).
-
@שלום-עולם-0 כתב באיך לומדים לבנות תוכנה:
@אביי כתב באיך לומדים לבנות תוכנה:
וגם יש בה את השימוש המיידי האמיתי יותר מjs
אפשר דוגמא (א"צ בקוד)?
הוא מתכוון שבפייתון אפשר לעשות מה שרוצים (לעבד את כל התמונות בתיקיה במחשב)
לעומת JS שזה שפה דפדפנית שאין הרבה מה לעשות עם זה בשלב ההתחלה.
יש בזה קצת חוסר דיוק כי JS בהקשר של נוד זהה מבחינת יכולות, אבל בפועל הוא צודק כי בפייתון הדברים האלה הרבה יותר זמינים ומזמינים.סליחה על הבורות.
מיותר.
-
@יעקב-מ-פינס אני הייתי ממליץ דוקא על שפת באטש ושורת הפקודה. מבחינת ניידות אין נוחה ממנה והיא פשוטה מאוד לשימוש.
ובהתאם להצעת החברים כאן, שהעיקר זה ללמוד את הרעיון שמאחורי התכנות בשלב הראשון - ולאו דוקא תכנות שימושי, שורת הפקודה בהחלט מתאימה לזה - ניתן ללמוד ממנה היטב איך עובד תכנות.
בנוסף, ניתן ליצור ממנה דברים ממשיים שמטפלים בקבצים (ולא רק מדפיסים "hello world") כבר בשלב ממש ראשוני -
@NH-LOCAL כתב באיך לומדים לבנות תוכנה:
בנוסף, ניתן ליצור ממנה דברים ממשיים שמטפלים בקבצים (ולא רק מדפיסים "hello world") כבר בשלב ממש ראשוני
אני הייתי מוסיף דיסקליימר שצריך להיות בטוח שיודעים מה עושים אם אתה לא רוצה לדפוק לעצמך את המחשב