-
@davidnead אמר בתכנות | איך להתחיל?:
יודע מה? אתגר: תן לי קוד JS שעושה מה שביקשתי. ותתאר אחר כך איך הגעת לפתרון וכמה זמן לקח לך. זאת, אחרי שכבר יש לנו חצי תשובה.
אחרי כמה ניסיונות חיפוש בגוגל החיפוש "factorial sort all options of arrays"
הניב לי את התוצאה בPHP
ומתוך זה למדתי מילה חדשה permutations
מה השלב הבא?
לחפש "permutations js" -
@dovid
לא באמת הבנתי, אבל הבנתי שיש פה קונספט נוסף שאני לא מודע לו,
ושאני יוכל לדון עליו רק אחרי שהבנתי את הקונספט.
אין לי מספיק סיפוק מלפתור בעיות מתמטיות או אתגרי תכנות המופעים באתרים שונים
אז כנראה שאני באמת לא יצליח להבין את הנקודה (כנראה גם אם הייתי הולך למכללה) -
@dovid אמר בתכנות | איך להתחיל?:
@davidnead אמר בתכנות | איך להתחיל?:
הצגתי בעיה פשוטה ומעשית, שכמוה אפשר להיתקל הרבה, ידע מסודר במתמטיקה בסיסית פותר אותה מהר ובקלות
לדעתי ידע "מסודר" במתמטיקה בסיסית לא יעזור כמעט כלום לכאלה בעיות, מניסיון.
צריך להיות אחד שהמון פעמים חשב על בעיות מתמטיות ואהב את הפתרונות שלהם, בלי זה מחר אתה שוב בבעיה. ואכן גוגל מאוד טוב בעניין עם אנגלית בסיסית.
לעומת זאת אלגוריתמיקה עבורי איננה אוסף פתרונות אלא שיטות חשיבה והיכרות עם בעיות מפורסמות ופתרונות מפורסמים, זה מקנה לדעתי ייתרון גדול בתכנון בעיקר אבל גם בכל שלב בפיתוח, גוגל פה לא רלוונטי בכלל.צודק, פשוט עירבתי בין המושגים. אלגוריתמיקה היא העיקר. למשל, בספר שהבאת ישנם שורה של אלוגריתמים בסיסיים מאוד, שלרובם יש פונקציות מובנות בכל שפה שהיא ולכן אנו אף פעם לא טורחים להקדיש להם מחשבה (כמו sum, sort, reverse, max, min ועוד). אבל זה דומה למי שעושה כל פעולה חישובית שהיא עם מחשבון ובחיים לא טרח לחשב תרגיל בראש - נראה שאפשר להסתדר עם מחשבון, אבל בסוף, הוא לא למד איך להתמודד עם חישובים וזה יתנקם בו בחיים האמיתיים.
אני משוכנע שמי שחרש מספיק טוב תבניות בסיסיות ומוכרות, חוסך לעצמו הרבה קוד לא יעיל ופותר הרבה יותר בקלות בעיות שהוא נתקל בהן, ועוד יותר חשוב - יודע לזהות ולהבדיל בין בעיות ואתגרים אמיתיים לסתם חוסר מחשבה.
-
@nigun אמר בתכנות | איך להתחיל?:
@dovid
לא באמת הבנתי, אבל הבנתי שיש פה קונספט נוסף שאני לא מודע לו,
ושאני יוכל לדון עליו רק אחרי שהבנתי את הקונספט.
אין לי מספיק סיפוק מלפתור בעיות מתמטיות או אתגרי תכנות המופעים באתרים שונים
אז כנראה שאני באמת לא יצליח להבין את הנקודה (כנראה גם אם הייתי הולך למכללה)הבעיה שלי שאתגרים אלו דוקא בגלל פשטותם משעממים אותי ולכן אין לי כוח לשבור את הראש עליהם. אבל האמת שמה שדרוש זה דוקא ללעוס היטב עד דק את הדברים הפשוטים (לפחות, והמוסיף הרי זה משובח), כדי לחיות חשיבה אלוגריתמית נכונה.
ובשביל לימודים משעממים כאלו, לפחות אנשים כמוני, צריכים כנראה את הדרבון של סביבת למידה. -
רוצה עוד דוגמה, מכיוון אחר? אינדקסים.
מי שעבד עם כמויות גדולות של נתונים, יודע שאינדוקס נכון יכול להיות הבדל שמים וארץ בתפקוד התכנה. בלי שום גוזמה. פעולה יכולה לקחת שבריר שניה במקום כמה דקות במצבים מסוימים.
אז אפשר לשבור את הראש הרבה, ואפשר פשוט להכיר את האלוגריתמים הקלאסיים של אינדוקס.
אני מכיר 2-3 ששינו לי את החיים. אולי מישהו שידע להפנות אותי לרפרנס מתאים או עדיף יותר - להסביר לי מהר וקל את כל הקלאסיים, אולי בשעה אחת אוכל לרכוש את הידע הקריטי הזה. עוד דוגמה לחומר שאולי לא קשה, אך למידה מסודרת תחסוך לך המון שבירת ראש כשאינך יודע מה חסר לך.כמובן, אפשר להשתמש באינדוקס המובנה של השפה (בJS זה יותר מאחורי הקלעים, בSQL אני מכירים את זה בפרונט), אבל זה שוב, כמו שימוש במחשבון, וכשאתה מגיע למצבים מתקדמים יותר הדורשים פתרון מותאם אישית - זה כבר לא עוזר.
-
@davidnead
שוב דוגמה לפינה שנצרכת רק לתחומים מסוימים.
וכשמגיעים לזה זה ברור כשמש שצריך לחפש בגוגל.לפני כמה חודשים @רחמים העלה אתגר בעניין לפרוג
ומשום מה כל בוגרי המכללות המדופלמים לא פתרו את זה.אני חשבתי בטעות שהוא באמת מסתבך והוא צריך עזרה, אז נכנסתי לעניין
והתחלתי ללמוד את הנושא, קראתי מדריכים, הקשבתי להרצאות, והתחלתי
להכיר את האלוגריתמים הקלאסיים של אינדוקס.
אבל ברגע שהבנתי שזה רק אתגר, אז המשכתי לעניינים יותר חשובים
והשארתי כמה סימניות, וכשאני יגיע לצומת הזו שוב, אני ימשיך בשמחה
זה אכן נושא מעניין, אבל כשאין לי מטרה מסויימת, אני מעדיף ללמוד קוברנטיס..... -
@dovid
לא הבנתי את הלולאהממ"נ, אם אתה מעוניין להשתכנע שכן,
כן, אני מעוניין להשתכנע.
יכולת מייד להאמין לאחר וללמוד על זה יותר מכח הרצון הזה ללא אף שכנוע.
לא הצלחתי להשתכנע, ולא מאמין לאנשים שמציגים טיעון שאני לא מבין
גם כשאני מעוניין לשמוע אותם (זה בעיה ידוע אצלי, אבל זה המצב כרגע)ואם אתה מעוניין שלא, אז מניסיון רב שנים אני אומר לך - אין הוכחה שמצליחה על מישהו שלא רוצה.
כאמור, אני מעוניין להשתכנע.
בטח תענה, מה פתאום, אני מעוניין! אבל למה שאשקיע בלי לראות איפה זה עוזר לי? אז תתחיל לקרוא שוב בwhile את ההודעה הזו עד שתבין אותי, או שתכפה יציאה מהנושא...
אני קרוא שוב ושוב, ולא קולט את הנקודה.
-
@nigun אמר בתכנות | איך להתחיל?:
@dovid
לא הבנתי את הלולאהממ"נ, אם אתה מעוניין להשתכנע שכן,
כן, אני מעוניין להשתכנע.
יכולת מייד להאמין לאחר וללמוד על זה יותר מכח הרצון הזה ללא אף שכנוע.
לא הצלחתי להשתכנע, ולא מאמין לאנשים שמציגים טיעון שאני לא מבין
גם כשאני מעוניין לשמוע אותם (זה בעיה ידוע אצלי, אבל זה המצב כרגע)ואם אתה מעוניין שלא, אז מניסיון רב שנים אני אומר לך - אין הוכחה שמצליחה על מישהו שלא רוצה.
כאמור, אני מעוניין להשתכנע.
בטח תענה, מה פתאום, אני מעוניין! אבל למה שאשקיע בלי לראות איפה זה עוזר לי? אז תתחיל לקרוא שוב בwhile את ההודעה הזו עד שתבין אותי, או שתכפה יציאה מהנושא...
אני קרוא שוב ושוב, ולא קולט את הנקודה.
הסיבה נראית פשוטה, ואני אומר כי עושה רושם שאתה מצפה שנהיה כנים איתך:
נראה שאתה מחפש לעבוד "תכל'ס", יש לך את המשימות הקבועות שמעסיקות אותך, שאין לי מושג מה הן אבל הן כנאה בסגנון חוזר על עצמו. אתה לא נתקל תכופות באתגרים מיוחדים, ולא רואה צורך מיוחד להתקדם מקצועית ולהיות מסוגל להתמודד עם אתגרים שתמשיך לפגוש.
כשאתה נתקל באתגר - אתה צולח אותו איכשהו, וכשלא - טוב לך עם מה שיש לך.זה נקרא אזור נוחות, וזה לגיטימטי ומצוין. אם אתה מתפרנס בכבוד, מרגיש סיפוק בהישגים שלך וביחס השקעה מול תועלת, ויש לך בטחון (בעולם ההשתדלות) בעתיד המקצועי והתעסוקתי שלך - זה מצוין.
אני לעומת זאת מוצא את עצמי מתקדם עם השנים, נתקל באתגרים יותר גבוהים, בסביבה שמצפה ממני ליותר (כי נהייתי יותר), ובשאיפה להיות מסוגל להתמודד עם אתגרי העתיד ועם הזדמנויות שיבואו ולא להיות חסום, ברצון להיות חסכוני ותועלתי בהשקעת זמן מול תוצאה בקוד שאני כותב ובאתגרים שאני פותר. ולכן, אני מרגיש חוסר שתיארתי.
נראה שלכן לא מטריד אותך מה שמטריד אותי, אין לך את החוסר, ולפיכך באמת אין לך צורך בדברים הנ"ל.
סליחה אם טעיתי באבחנתי, רציתי לעזור.
דבר אחד בטוח, ואולי את זה דוד מתכוון לומר: אם מכל סיבה שהיא כן תרכוש את הידע הנ"ל, אתה בודאי תשמח על כך.
-
הדיון שם באתגר של רחמים הוא דוגמה מעולה. ניכר שרבים מהמשתמשםי לא הבינו בכלל את המשמעות של אלוגריתם יעיל ומה הוא יכול לתרום, ובטח לא את עולם האינדוקס. לקח זמן להבין שבכלל דרוש אינדקס.
וגם אז - ניסו להמציא תבניות של אינדקסים לבד, או לתת קישורים לרשימות של אלוגריתמים.
אני לא הייתי הולך לבנות אלוגריתם של אינדקס לבד, לפחות חלק מהסוגים הם מסוכים ואחרים כבר עשו את העבודה. אבל להבין ולהכיר אותם! עולם אחר לגמרי מהדיון שם.
וההנחה שם של מישהו שזה אתגר חריג שלא נתקלים בו בפיתוח סטנרדטי - שגויה לחלוטין. אלא אם אתה מתכוון להספתק בלהיות בודק תכנה או מפתח וורדפרס.
זה אתגר שנתקלתי בו כמה וכמה פעמים, ופתרתי אותו אחרת כל פעם, לפי הצרכים המקומיים.
-
- אני לא מרגיש סיפוק בידע שלי היום
- אני נתקל האתגרים חדשים כל הזמן, אבל לא בתחום שלך, יותר בקטע של ניהול עומסים.
- אני נהנה ללמוד מושגים חדשים כל הזמן.
- אני לא אוהב משימות קבועות, ונהנה לעבור בין תחומים.
- אני יהנה מאוד ללמוד איך לבנות אינדקס, אבל רק כשיהיה לי צורך באינדקסים
סתם ללמוד את זה בתיאוריה? חבל על הזמן.
-
@nigun אמר בתכנות | איך להתחיל?:
- אני לא מרגיש סיפוק בידע שלי היום
- אני נתקל האתגרים חדשים כל הזמן, אבל לא בתחום שלך, יותר בקטע של ניהול עומסים.
ללא ספק גם בתחום הזה יש תחומי ידע נלמדים שמעניקים הבנה מעמיקה ומקצועית יותר ונותנים לך כלי התמודדות במקום להמציא את הגלגל.
- אני נהנה ללמוד מושגים חדשים כל הזמן.
- אני לא אוהב משימות קבועות, ונהנה לעבור בין תחומים.
- אני יהנה מאוד ללמוד איך לבנות אינדקס, אבל רק כשיהיה לי צורך באינדקסים
סתם ללמוד את זה בתיאוריה? חבל על הזמן.
גם לי חבל על הזמן ללכת ללמוד עכשיו שנה במכללה, לכן אני לא עושה את זה. זה לא אומר שאני לא מרגיש את פערי הידע ומחפש למצוא דרך שמתאימה לי להשלים אותם.
-
@אינטרקום אמר בתכנות | איך להתחיל?:
סליחה שאני קוטע את ההתפלספות...
אבל אם נחזור לנושא הראשי שעבורו נפתח האשכול.
אז ראיתי שרן בר זיק ממליץ להתחיל בHTML וCSS לפני JS.
זה לעיכובא? או שזו המלצה בלבד, ולא כ"כ משנה תכל'ס מה קודם למה.צודק, שאלה מהותית. אז קצת הסבר:
HTML - זו לא בדיוק שפת תכנות, זה סוג של תחביר כדי לסדר טקסטים ואלמנטים אחרים על דף אינטרנט.
CSS - זה כבר קצת יותר מתקדם, זה תחביר להגדיר עיצובים לאלמנטים הנ"ל. זה עדין לא ממש שפת תכנות.
JS - זו שפת תכנות בסיסית (סקריפט) שניתן לשלב בדף אינטרנט כדי לעשות פעולות שונות על הHTML ועל הCSS, כמו לשנות אותם בהתאם לפעולות המשתמש, ועוד. (כמעט) כל מה שלא סטטי בדף אינטרנט - הוא ע"י JS.
עדכון קריטי על JS: התיאור הנ"ל נכון לשנת 2000, כאשר דפי אינטרנט היו פשוטים מאוד והJS עשה בהם מעט. כיום דפי אינטרנט הם אפליקציות לכל דבר במקרים רבים, וJS התפתחה בהתאם לשפה מודרנית עם יכולות רבות.
יתירה מזו, בשלב כלשהו מישהו החליט שJS היא שפה מוצלחת, ואין סיבה להגביל אותה רק לצורך טיפול בדפי אינטרנט. הוא העתיק את המנוע כך שאפשר להשתמש בו כמו כל שפת תכנות, כולל עבודה עם קבצים ומערכות הפעלה וכו'. הוא קרא לזה nodeJs.אם אתה מתחיל עם NODEJS - אז אין צורך מידי ללמוד HTML וCSS. אבל בדרך כלל זה לא המקרה, ופחות מומלץ.
אז בהנחה שאתה מתחיל עם JS רגיל (צד לקוח) - היות שמה שעושה הJS זה לשטפל בHTML והCSS אתה חייב להכיר אותם. עם זאת, אין צורך להכירם בשלמות, ואפשר ללמוד במשולב ובמקביל זה עם זה.
-
@למה אמר בתכנות | איך להתחיל?:
אני חושב שדרך מועילה היא לקחת קוד קיים (=תוכנה/אפליקציה/אתר) ו'לפרק' אותה
ולהתחיל לשחק איתה ולהבין מה עושה מה, כל מילה מה זה עושה ומה קורה ללא המילה הזאת וכו'אביא לך מהנסיון שלי. לפני שהתחלתי לתכנת קראתי המון קוד מקור והכרתי כמה שפות. אבל לא יצאתי מתכנת מקריאת קוד מקור והכרת שפות.
כיום אני מתכנת בפועל כשנה וחצי והעיסוק בתכנות בפועל זה מה שמקדם אותי.
ברור שקיבלתי תועלת מכל הידע הקודם שלי, אבל זה לא הפך אותי למתכנת.
האם אתה רוצה להיות מתכנת או להיות אחד כזה שמבין קוד? -
@yossiz אמר בתכנות | איך להתחיל?:
@למה אמר בתכנות | איך להתחיל?:
אני חושב שדרך מועילה היא לקחת קוד קיים (=תוכנה/אפליקציה/אתר) ו'לפרק' אותה
ולהתחיל לשחק איתה ולהבין מה עושה מה, כל מילה מה זה עושה ומה קורה ללא המילה הזאת וכו'אביא לך מהנסיון שלי. לפני שהתחלתי לתכנת קראתי המון קוד מקור והכרתי כמה שפות. אבל לא יצאתי מתכנת מקריאת קוד מקור והכרת שפות.
כיום אני מתכנת בפועל כשנה וחצי והעיסוק בתכנות בפועל זה מה שמקדם אותי.
ברור שקיבלתי תועלת מכל הידע הקודם שלי, אבל זה לא הפך אותי למתכנת.
האם אתה רוצה להיות מתכנת או להיות אחד כזה שמבין קוד?עד עכשיו שמרתי על שתיקה, אין לי כח וזמן להאריך אבל בקטע הזה אני כבר מתערב.
מסכים ולא מסכים
מסכים שסתם לקרוא וכו' מכניס לגדר חכמתו מרובה ממעשיו
אני לא מסכים לפסול את זה, אך כדאי מאוד שיהיה מטרה בדבר
אסביר: מאוד יעיל לקחת משהו קיים אבל במטרה לשנות אותו למשהו שלא קיים בו, כך אתה מרוויח שאתה נכנס לקוד עמוק, לומד אותו וחייב להבין אותו בכדי לשנות אותו.
לי אישית יצא שחלק מהתחומים אצלי למדתי כך