web application

יבגני34

New member
web application

לפיתוח אפליקציות ווב, חשבתי להשתמש בספריית WT
מישהו מכיר? או יכול להמליץ על ספריות C++?

אני לא בא מפיתוח עולם ה-UI זה נראה קצת מסובך, היות ואני מכיר יותר טוב C או C++ חשבתי לפתח דווקא בשפה הזו עם פריימוורק שכתוב ב-C++
 

pattos

New member
למה שתעשה דבר כזה?

אני לא הייתי ממליץ על דבר כזה. אפליקציות web הן דבר שרץ הרבה מאוד זמן ברצף ומקבל בקשות ומספיק שיש לך זליגת זכרון קטנה ואתה צריך לעשות restart לכל התהליך.
כמו-כן, אתה תצטרך לדאוג שהאפליקציה רצה טוב היכן שהיא הולכת לרוץ (סביר להניח, על ענן כלשהו?) וזה עוד יותר מסבך את העניינים.
&nbsp
הייתי אומר שכדאי לכתוב אפליקציית web בC/C++ רק אם אתה צריך שהיא תהיה מאוד קלה ומהירה ושתעשה משהו די תשתיתי (נניח, revere proxy וכאלה).
 

pattos

New member
לא יכולה להיות לך זליגת זכרון בלוגיקה?

מה קורה אם יש לך NPE? כל השרת שלך מת.
 

יבגני34

New member
ברור שיכולה להיות

רק ציינתי שרוב הקוד המסובך נמצא בתשתית,
האם זה יותר מהיר למשל מטכנולוגיות אחרות? שלא עושות שימוש ב- C++?
 

יבגני34

New member
אתה יכול להגיד את זה על כל דבר

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

pattos

New member
ברור שיש יתרון בביצועים של קוד שהוא 100% מקומפל לשפת מכונה

למה כתבו אותה? לא יודע, יש הרבה דברים שאנשים כותבים מרצונם החופשי, תסתכל בgithub- יש לך מלא ספריות של אותו דבר בשפות שונות.
&nbsp
למה אנשים מתחזקים דברים? כי הם אוהבים את זה, ויש לאנושות מזל שיש אנשים כ"כ רבים שתורמים מעצמם בחינם לעולם ולא מקבלים כסף בתמורה. תמיד נהגתי לומר לאנשים שיש בעולם כמות מאוד מצומצמת של אנשים שהאנושות כולה חייבת להם כמויות עצומות של דולרים.
&nbsp
אני פשוט חושב שאם אתה רוצה לכתוב אפליקציית web אז עדיף לכתוב אותה בשפה ובframework שאנשים כותבים בד"כ (תלוי מה האפליקציה עושה וכו').
&nbsp
 

rj111

New member
לא מכיר את הספריה שציינת

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

zaske

New member
אני מקווה שברור לך שיש גם זליגות זכרון ב java

בגלל "באגים" בלוגיקה.

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

מעבר לזה גם אני הייתי ממליץ לא לעבוד ב c++ אבל מסיבות אחרות, לדעתי Java , node.js וכו' פשוט יותר מתאימות.
 

nocgod

New member
אותו הדבר שבגדול יקרה לך ברוב השפות

אם יש לך NPE במקום "לא נוח" השרת יעוף...
למען האמת, יש הרבה ג'וקים מוזרים שגורמים לזליגות זיכרון. לדוגמא אם עשית register ל event ב #C (ואם אני לא טועה גם בJava) ולא עושה un-register אתה מייצר זליגת זיכרון...
בקיצור, אם יש רצון, יש יכולת... וכשאין יכולת, יש NPE...
 
לא. אתה לא מייצר שום "זליגת זכרון".

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

Miki Watts

New member
ספיציפית לגבי הרישום לאירוע ב C#

זה יקרה רק ברישום לאירוע סטטי או על מחלקה סטטית, וגם אז זה לא זליגת זכרון במובן הקלסי, אלא שרישום לאירוע מחזיק reference לאורך כל חיי האובייקט שמכיל את האירוע, אז רישום לאירוע סטטי או על מחלקה סטטית ישאר לאורך כל חיי המחלקה, גם אם המחלקה שנרשמה כבר לא בשימוש, כי בכל רגע נתון האירוע מהמחלקה הסטטית יכול להיות מופעל ולכן אי אפשר לעשות GC על המחלקה שנרשמה.
&nbsp
ברוב המקרים בשפות כמו C# או שפות אחרות שיש להן GC, קשה לגרום לדליפת זכרון קלסית במובן של C++ של הקצאה שהלכה לאיבוד לחלוטין, אלא יותר דליפות זכרון בעקבות טעויות של המתכנת, כמו לדוגמה רישום לאירוע סטטי.
 
זה לא ממש חשוב אם האירוע סטטי או לא.

בנוסף צ"ל "גם אם האובייקט שנרשם" במקום "גם אם המחלקה שנרשמה".
 

Miki Watts

New member
זה בהחלט חשוב שזה סטטי

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

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

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

Miki Watts

New member
מחלקה === אובייקט בהקשר הנוכחי

אל תתחיל להיות לי פדנט.
&nbsp
>> ואין פה "במשך הזמן" - זה בסדר גמור (אם כי עקום למדי) להרשם לאירוע סטטי, כשלעצמו אין בכך שום "דליפת זכרון".
&nbsp
על מה אתה מדבר? איפה אני אמרתי שזה לא בסדר ? אני לא אמרתי שום דבר כזה. אני אמרתי שבניגוד לרישום לאירוע לא סטטי, רישום לאירוע סטטי יש לשחרר באופן מפורש אחרת תיווצר דליפת זכרון.
לדוגמה, פתיחת Form שנרשם לאירוע סטטי במחלקת עזר כלשהו. אם לא תשחרר את האירוע במפורש בסגירת ה form, ה form אף פעם לא יעבור GC מאחר והרישום לאירוע שלו ימשיך להיות מוחזק ע"י האירוע הסטטי, ולכן תיווצר לך דליפת זכרון בכל פעם שתפתח את ה form מחדש.
דוגמה הפוכה היא רישום לאירוע TextChanged על TextBox לדוגמה. למה את הרישום הזה אתה לא תשחרר באופן מפורש ? כי בדרך כלל הרישום הוא מאובייקטים ב form עצמו, ולכן בסגירת ה form ה GC יראה שההתייחסות היא מעגלית בלבד וינקה את כל האובייקטים והרישומים שלהם ולא תיווצר דליפת זכרון.
&nbsp
>>מה שלא בסדר זה "לרשום" מתודה לא סטטית של אובייקט, לחסל את כל הרפרנסים המפורשים אליו, ולצפות שה-GC יאסוף את הזכרון שהוקצה לו.
&nbsp
מה? על מה אתה מדבר? ככה GC עובד בדיוק. ברגע שה reference האחרון יוצא מאפשרות של גישה אליו מהקוד ממקום כלשהו, מבחינת ה GC הוא מת והוא יאסוף את הזכרון שלו.
 

pattos

New member
לא זה לא...

בקוד שכתוב בC/CPP, אם יש לך NPE אז מערכת ההפעלה שולחת לך signal שהורג לך את התהליך. (אני לא זוכר אם אפשר לתפוס sigsegv או לא, אבל אני מניח שזה לא הכי מקובל, כי אין לך יותר מדי מה לעשות במקרה כזה)
&nbsp
לעומת זאת- אם יש לך שרת אפליקציה ואתה כותב קוד שרץ בו- פשוט החוט הנוכחי ימות ולא כל התהליך.
&nbsp
הדוגמא שלך עם הregister והun-register לא רלוונטית בכלל, כי את אותו הדבר אתה יכול לעשות בc/cpp, זה פאק בלוגיקה.
 

Grosseto

New member
ככל שהתוכנה דורשת עידכונים תכופים יותר

עדיף כמה שפחות קומפילציות ותלויות במ"ה, שרתי אפצי' ו IIIS למינהים,
הפיתוח והתחזוקה עלולים להתברר כסיוט
&nbsp
לכן עדיף שפות סקריפטים כמו PHP ו פייתון, ובטח לא C++ (לדעתי גם JAVA ו C# לא מתאימות)
&nbsp
 

soarci

New member
על מה אתה מדבר?

אם הקוד דורש עדכונים תכופים יותר תתחיל להכניס continuous integration ואל תברח לשפה דינמית "שלא" דורשת קימפול בגלל משהו כזה.
 
למעלה