דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. C# או NODE.JS

C# או NODE.JS

מתוזמן נעוץ נעול הועבר תכנות
51 פוסטים 9 כותבים 2.2k צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • ח מנותק
    ח מנותק
    חוקר
    כתב ב נערך לאחרונה על ידי
    #34

    לעצם הנושא עליו נפתח הדיון כאן.
    אני עובד היום עם PHP ובמקביל עם NODEJS.
    התחלתי עם PHP וכשזה לא הספיק לעומסים למדתי נוד וכבר מצאתי הרבה סיבות לעבוד איתו.
    אני עובד עם שניהם משולב על שרת אחד עם שרת nginx שזה לא מפריע לי ולא אחד על חשבון השני.
    לדעתי @שואף יהיה לך תועלת גדולה מלימוד nodejs למרות הזמן הרב שזה ידרוש ממך.
    אני עשיתי את זה מכורח המצב עבור המערכות של המצינגים שרציתי לחסוך את הבדיקה מול הAPI של צ'רידי עבור כל שיחה אלא שהמידע המתקבל יהיה נגיש לכל השיחות מאותה קריאה, והתחלתי ללא שום ידע בJS (יעידו על זה השאלות שלי כאן בפורום כשהתחלתי עם נוד), אך לאחר מכן העברתי לנוד עוד מערכות כישיבה על קברו ופתחתי עוד ועוד מערכות בנוד.
    ומצד שני לדברים קטנים אני עדיין משתמש בPHP.
    אני יכתוב מה שעולה לי בראש, ומסתבר שיש הרבה יותר.
    מהמעלות בנוד:
    תהליך שרץ בצד השרת כל הזמן, אתה שומר נתונים לאורך התהליך ללא הצבתם ושליפתם בכל קריאה מחדש, שזה אומר שנתונים קבועים וכדומה אתה שולף פעם אחת באתחול השרת והמידע נגיש לך לאורך הדרך ללא שליפתו מהד"ב לכל קריאה מחדש. אינו זולל CPU (אבל זולל ראם לפי הכמות שתאחסן בזמני), עמיד בעומסים.
    ולגבי שאילתך, יש ספריה פשוטה של תזמון משימות, אתה יכול לתזמן לפי תאריכים, לפי זמנים ודקות ועוד ולשנות את התזמון ולבטל וכו' בתוך הקוד ללא cron.
    ובכלל זה היה קפיצה טובה בשבילה לJS שכבר באה מאוד הרבה לשימוש בממשק שלי שהיא אגב פרימוורק ב PHP.
    מהחסרונות: כל שינוי דורש אתחול של השרת (כמעט שזה אינו מורגש ללקוחות, אבל עדיין מסרבל, ובעיקר שמי שרגיל לPHP זה באמת מנכסס).
    יש להזהר שלא ליצור לולאות שזוללות זיכרון או מה כי אז תוכל להפיל לעצמך את השרת (משא"כ PHP שבדר"כ מגביל את עצמו לכמות הראם שמאפשר לסקריפט לצרוך).

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

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

    תגובה 1 תגובה אחרונה
    9
    • nigunN מנותק
      nigunN מנותק
      nigun
      כתב ב נערך לאחרונה על ידי nigun
      #35

      @שואף
      הבנת מה ההבדלים בסופו של יום בין נוד לC#?
      מתי כדאי להשתמש בC# ומתי בנוד?
      אני לא בטוח שהבנתי , אולי מישהו יעשה סיכום ברור?
      (לא שאני יעבור מחר שפה, אבל מעניין אותי מה המעלות של כל שפה)

      מייל: nigun@duck.com

      dovidD תגובה 1 תגובה אחרונה
      1
      • dovidD מחובר
        dovidD מחובר
        dovid ניהול
        השיב לnigun ב נערך לאחרונה על ידי
        #36

        @nigun לא יהיה לך סיכום כי זה מידי הרבה פרמטרים.
        C# לעומת JS זה סיכום אחד,
        וNODE לעומת ASP או ASP CORE זה סיכום אחר.
        את שואף מעניין התוצאה אז ערבבנו בין השניים כדי לסכם מה הוא יעבור בכל אחד.

        מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

        בכל נושא אפשר ליצור קשר dovid@tchumim.com

        תגובה 1 תגובה אחרונה
        0
        • שואףש מנותק
          שואףש מנותק
          שואף
          כתב ב נערך לאחרונה על ידי
          #37

          די השתכנעתי להתקדם לנוד, בפרט לאור ההודעה היפה והמנומקת של הרב @חוקר. תודה לכל מי שטרח לענות.
          למעשה עברתי על המדריכים בW3SCHOOL והתחלתי כבר לתרגל, ולהתרגל לתפיסה שכל כך שונה מPHP.
          אגב, אני רואה בהרבה מקומות שמשייכים את נוד לMONGODB. יש קשר בינהם? מה רע בMYSQL ? זאת אומרת אני יודע שיש הבדלים גדולים בגישה בין MYSQL וMONGO, אבל האם זה יש סיבה שמדריכים של PHP ממשיכים עם MYSQL, ונוד עם MONGO?
          תודה

          ליצירת קשר: admin@i-call.me

          הידד! גישה למייל גם בלי מחשב ואינטרנט!

          ח yossizY 2 תגובות תגובה אחרונה
          2
          • ח מנותק
            ח מנותק
            חוקר
            השיב לשואף ב נערך לאחרונה על ידי
            #38

            @שואף
            פירסמתי פעם מחלקה mysql עם נוד כאן בפורום.
            מומלץ לך לעבוד איתו זה פשוט וקליל.

            תגובה 1 תגובה אחרונה
            3
            • yossizY מחובר
              yossizY מחובר
              yossiz
              השיב לשואף ב נערך לאחרונה על ידי yossiz
              #39

              @שואף מזל טוב ובהצלחה!

              לא היה ברור מדבריך האם אתה לומד גם שפת JS או רק נוד?

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

              אם אתה עדיין לא מכיר את שפת JS חובה להכיר אותה... בפרט את הנושא של promises ו-async/await (משום מה אני מתרשם שזה די נפוץ שמתכנתי JS לא מכירים את הנושא מספיק וחבל...).
              אני דוקא לא כל כך אוהב w3schools. לדעתי החומר ב-MDN הרבה יותר איכותי ומקיף.

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

              📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

              שואףש dovidD 2 תגובות תגובה אחרונה
              6
              • שואףש מנותק
                שואףש מנותק
                שואף
                השיב לyossiz ב נערך לאחרונה על ידי
                #40

                @yossiz אמר בC# או NODE.JS:

                אם אתה עדיין לא מכיר את שפת JS חובה להכיר אותה...

                מכיר כבר הרבה שנים.

                @yossiz אמר בC# או NODE.JS:

                בפרט את הנושא של promises ו-async/await

                אממ.. בעצם יש לי עדיין מה ללמוד. לא ברור לי עדיין לגמרי העניין של הscope בJS (איך אומרים scope בעברית?)

                תודה על העזרה.

                ליצירת קשר: admin@i-call.me

                הידד! גישה למייל גם בלי מחשב ואינטרנט!

                yossizY תגובה 1 תגובה אחרונה
                1
                • dovidD מחובר
                  dovidD מחובר
                  dovid ניהול
                  השיב לyossiz ב נערך לאחרונה על ידי dovid
                  #41

                  @yossiz אמר בC# או NODE.JS:

                  אם אתה עדיין לא מכיר את שפת JS חובה להכיר אותה... בפרט את הנושא של promises ו-async/await (משום מה אני מתרשם שזה די נפוץ שמתכנתי JS לא מכירים את הנושא מספיק וחבל...).

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

                  מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                  בכל נושא אפשר ליצור קשר dovid@tchumim.com

                  yossizY תגובה 1 תגובה אחרונה
                  5
                  • yossizY מחובר
                    yossizY מחובר
                    yossiz
                    השיב לשואף ב נערך לאחרונה על ידי yossiz
                    #42

                    @שואף אמר בC# או NODE.JS:

                    מכיר כבר הרבה שנים.

                    ה-JS שהכרת לפני הרבה שנים כבר הספיקה להתבגר...
                    (אתה מכיר פונקציות חץ? let ו-const? ‏destructuring? ‏template strings? לולאות for...of או for...in? אופרטור ה-spread [...]? לא סתם הכניסו את כל זה, הדברים מאוד שימושיים. לגבי classes, אפשר להסתדר מצויין בלי.)
                    כאשר נוד באה לעולם promises עדיין לא היו קיימים (אולי בספרייה, לא בשפה). לכן הרבה מהדברים המובנים הוא עם callback-ים. אבל שימוש ב-promises הרבה יותר נעים, ואפשר להמיר את ה-callback-ים ל-promises.

                    @שואף אמר בC# או NODE.JS:

                    ברור לי עדיין לגמרי העניין של הscope בJS

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

                    📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                    תגובה 1 תגובה אחרונה
                    6
                    • yossizY מחובר
                      yossizY מחובר
                      yossiz
                      השיב לdovid ב נערך לאחרונה על ידי yossiz
                      #43

                      @dovid אמר בC# או NODE.JS:

                      מתכנתי JS מרגישים את עצמם בג'ונגל. הם נחשבים כמתכנתים מן השורה מייד אחרי השורה הראשונה שהם כתבו

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

                      📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                      nigunN dovidD 2 תגובות תגובה אחרונה
                      4
                      • nigunN מנותק
                        nigunN מנותק
                        nigun
                        השיב לyossiz ב נערך לאחרונה על ידי nigun
                        #44

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

                        במקרה של rust אולי בגלל העקומת למידה שלה
                        ואין כל כך הרבה newbies.

                        מייל: nigun@duck.com

                        תגובה 1 תגובה אחרונה
                        0
                        • dovidD מחובר
                          dovidD מחובר
                          dovid ניהול
                          השיב לyossiz ב נערך לאחרונה על ידי dovid
                          #45

                          @yossiz לא מבין אותך, לרוב שפות התוכנה יש חברה, אתר, קהילה, וחיים תוססים.
                          אני לא מכיר שפה כ"כ אומללה מבחינת "מאין באת ולאן אתה הולך" כמו JS.
                          זה שפה כ"כ טהורה שאין לה בכלל הקשר וסביבה, אפילו console.log זה API חיצוני.
                          אני מוכרח לומר שכיום אני די נהנה בJS וגם אני חושב שזו השפה הכי שימושית בחיים נכון להיום...

                          מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                          בכל נושא אפשר ליצור קשר dovid@tchumim.com

                          yossizY תגובה 1 תגובה אחרונה
                          4
                          • י מנותק
                            י מנותק
                            יוסף בן שמעון
                            כתב ב נערך לאחרונה על ידי
                            #46

                            אחרי הרבה שעות פיתוח ב JS, היום אני מעדיף לכתוב ב typescript כל אימת שזה מתאפשר לי, המערב הפרוע של JS מערער לי את הביטחון העצמי, כתבתי קצת ב C# ואהבתי את הקשיחות אבל ההרגל החזיר אותי לJS עם העזרים של TS
                            אני חושב שהעתיד נמצא ב TS, אפילו ריהאל דיאן הפנים את זה והכניס את זה לדנו

                            תגובה 1 תגובה אחרונה
                            4
                            • yossizY מחובר
                              yossizY מחובר
                              yossiz
                              השיב לdovid ב נערך לאחרונה על ידי yossiz
                              #47

                              @dovid אמר בC# או NODE.JS:

                              לרוב שפות התוכנה יש חברה, אתר, קהילה, וחיים תוססים.

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

                              שפה כ"כ אומללה

                              האינטרנט לא כל כך מסכים לך... רוב הכתבות שמתפרסמות הם על JS.

                              זה שפה כ"כ טהורה שאין לה בכלל הקשר וסביבה,

                              כמו"כ C ו-++C. ועוד הרבה. זה הרעיון של שפה.

                              אפילו console.log זה API חיצוני.

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

                              טוב, זה סתם ויכוח לשם ויכוח בלי הרבה תועלת...

                              📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                              תגובה 1 תגובה אחרונה
                              5
                              • A מנותק
                                A מנותק
                                avr416
                                השיב לyossiz ב נערך לאחרונה על ידי
                                #48

                                @yossiz אמר בC# או NODE.JS:

                                @avr416 אמר בC# או NODE.JS:

                                אבל דווקא בדברים שצריך בהם הרבה גישה לקבצים וכדו' (I/O) מקובל לומר שזה לא הצד החזק שלו..

                                נראה לי שזה בדיוק הפוך. המודל של נוד לא טוב לקוד שצורך הרבה CPU כי הכל רץ בתוך thread אחד וה-multi-tasking הוא cooperative ולא preemtive. אבל בקוד עם הרבה I/O זה יותר חסכוני להשתמש ב-thread אחד ו-event loop במקום ב-thread pool. שלא לדבר על PHP בלי thread pool ושום דבר אלא thread (או תהליך) חדש לכל בקשה, זה הכי גרוע כי ה-I/O תוקע את ה-thread עד שהיא תסתיים.

                                צודק. טעיתי.

                                תגובה 1 תגובה אחרונה
                                1
                                • A מנותק
                                  A מנותק
                                  avr416
                                  השיב לyossiz ב נערך לאחרונה על ידי
                                  #49

                                  @yossiz אמר בC# או NODE.JS:

                                  @avr416 אמר בC# או NODE.JS:

                                  נראה לי שלטייפים סטטיים אין קשר להשפעה על הביצועים בכלל

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

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

                                  ראה פייתון.

                                  yossizY תגובה 1 תגובה אחרונה
                                  0
                                  • yossizY מחובר
                                    yossizY מחובר
                                    yossiz
                                    השיב לavr416 ב נערך לאחרונה על ידי yossiz
                                    #50

                                    @avr416 אמר בC# או NODE.JS:

                                    לא מבין למה שזה ישפיע.

                                    נקח לדוגמה את הפונקציה הזאת (פסאודו קוד) :

                                    function (int x, int y) { return x + y }
                                    

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

                                    ראה פייתון.

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

                                    📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                                    תגובה 1 תגובה אחרונה
                                    3
                                    • yossizY מחובר
                                      yossizY מחובר
                                      yossiz
                                      כתב ב נערך לאחרונה על ידי
                                      #51

                                      @avr416 אמר בC# או NODE.JS:

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

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

                                      📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                                      תגובה 1 תגובה אחרונה
                                      3

                                      • 1
                                      • 2
                                      • 3
                                      בא תתחבר לדף היומי!
                                      • התחברות

                                      • אין לך חשבון עדיין? הרשמה

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