CSharp Vs Java Vs Cpp

amiramdil

New member
CSharp Vs Java Vs Cpp

מוזר לי לצפות במלחמות הדת האלה... 1. Cpp 2. Java 3. Csharp כולם שלבים בתהליך אבולוציוני ברור וכן (ללא קשר ל: SUN, MS או כל תאגיד אחר) וכן כל אחת טובה בהרבה מו השניה (לפי הסדר). Csharp עצמה היא שפה נפלאה בעלת סינטקס טבעי, מהודק וברור הרבה יותר מ: JAVA. C עצמה הינה שפה מחורבנת (סליחה על הביטוי בפורום המכובד) שגדודי (יותר נכון דיויזיות) של מתכנתים נלחמו איתה ללא כל צורך (ראה malloc, alloc וכ"ו). אין שום קשר בין CPP ו: C מלבד השם והסינטקס. CPP מפירה 8 פעמים בשורת קוד את הכלל החשוב ביותר בפיתוח תכנה פ ש ט ו ת.
 

amiramdil

New member
CPP לא פשוט? לאא.

CPP היא שפה פשוטה אם ורק אם המפתח יודע להשתמש בה ככזו. בדרך כלל זה אומר לבנות מודל אוביקטים נבון, טבעי ושימושי המסתיר את הסיבוכיות של שאר העץ. בפועל 90% מתכניות ה-CPP אינם אלה תכנית C בתחפושת (.CPP + כמה NEW) CPP אינה מעודדת ובטח לא מכריחה פיתוח "נכון" יוצא מכך שרק אנשים מאוד מנוסים ומאוד טובים ישתמשו ב CPP כמו שצריך (מה שקורה בפועל). לעומת זו בJAVA ויותר מזה ב: C# קשה יותר לכתוב קוד גרוע משום שיש להם מתודולוגיה ברורה (OOD) שקשה מאוד לעקוף (מי אמר STATIC METHODS).
 

DNile

New member
חחחחחחח

ושוב פעם - חחחחח. נשמע כאילו אתה מצטט כל מיני ביטויים שהחברה בSun / microsoft ניסו להטמיע בך. "CPP היא שפה פשוטה אם ורק אם המפתח יודע להשתמש בה ככזו." הרשה לי לציין שבשלב הזה נקרעתי, כמעט נפלתי מהכסא... איך אתה מצפה לכתוב כמו שצריך בשפה שבה אתה לא יודע להשתמש? אם הפתרון שלך למניעת קוד לא נכון זה להגביל את המתכנת - כמובן, אתה צודק. אני לפחות תוהה עד מתי אני אצטרך לשבת ולעשות ANDים וORים בגלל שבJava אין כזה דבר מספרים מסומנים ולא מסומנים. הבעיה איננה בשפה, ממש לא. הבעיה היא שכל חמור שישב חודשיים ללמוד שפה חושב שהוא יהפך בין לילה למתכנת, ואם זה לא קורה, משהו דפוק בשפה. העובדות הפשוטות הן שגם אחרי 5 שנות נסיון בתכנות, לעזאזל, גם 10 שנה אחרי שכתבת את שורת הקוד הראשונה שלך, יש לך עוד המון המון מה ללמוד, והמון המון איפה לשפר את הקוד שלך. כוח = אחריות ידידי. מה שאתה אומר זה שהרבה מפתחים לא יודעים להשתמש נכונה בכוח שמעניקים להם. אתה צודק. השאלה היא האם הבחירה הנכונה היא לומר לאותו צעיר שרוצה להיות ג'די - לא, הכוח חזק מדי, אתה לא תוכל להשתמש בו, עזוב אותך מלייט-סייברים, קח חרב מפלסטיק, או שאתה מלמד אותו איך לנצל נכונה את הכוח, ונותן לו לעשות דברים נפלאים עם אותו כוח. וסתם ככה אנקדוטה על הפשטות שבJava - קרא לי טיפש, קרא לי לא מנוסה, אבל אני יושב כבר לא מעט ימים על להיאבק מאבק אימתני מול הJava Swing(מישהו פה אמר "Swing sucks"?), וכל זה למה? כי רציתי ליצור לעצמי GUI נורמלי??
 

voguemaster

New member
מוזר..

יש לך בעיות עם SWING ?? זה קל ביותר לפתח איתו GUI. אתה בטוח שאתה יודע מה שאתה עושה ?
 

amiramdil

New member
כוח מול פשטות ושפות טבעיות

ידידי היקרים, אף אחד לא הטמיע מי שום ביטוי. - שפת תיכנות טובה וכלי פיתוח תכנה בכלל, אמורות להסתיר מן המשתמש את הסיבוכיות ה ט כ נ י ת שבתיכנות ולהשאיר את הזמן לפיתרון בעיות לוגיות / מתמטיות ובעיקר אפליקטביות. מתכנת טוב ובודאי מתכנת מנוסה ביותר (10-15 שנים?) לא אמור מזמן להתעסק בשטויות כאלו כמו הקצעת זכרון, ואפילו לו עבודה עם DBs. (למי אכפת איך ה-persistance מתבצע, מצידי שהנתונים ישמרו בירח השלישי של מאדים) מספר דוגמאות: - כן ל Java אין Unsigned ו: Signed int (תגידו כל התירגומים השל מושגים ברורים באנגלית למילים בלתי-ברורות בעברית זה trend - טרנד חדש או שאני פשוט זקן מדי-:) ולא סתם, ממש לא מעניין אותך אם מספר הוא signed או unsigned אשר לORים וANDים תמצא פתרון אחר יש בשפע.) - ל Java גם אין "הורשה מרובה" (שוב עם העברית הזו) - האם זה אומר שהיא פחות חזקה מ CPP ? ממש לאאא. מתכנני JAVA פשוט הבינו שהורשה מרובה היא רעיון גרוע והשכילו להגיד: "אם מישהו רוצה לכתוב תכנה בצורה גרועה אז בבקשה לא אצלנו. - ובכלל מזה כל הסיפור של GC ב-Managed code. הרבה יותר מעניין לעשות את זה לבד ולנהל את הזכרון בצורה יותר יעילה כן ... זהו שלאאא אבל ממש לא! כמות ה memory leak שנוצרו בתכניות C יכולה לסתום את הגרעון הממשלתי בחצי כדור הארץ. המעבר משפות "חזקות" (אולי נכתוב כולנו בASM שהיא שפה ממש חשזקה) לשפות 'פשוטות', 'נכונות' 'וטבעיות' הוא ההתפתחות האמיתית של תעשיית התוכנה שבניגוד למה שאתם אולי חושבים לא זזה הרבה מאז ימי ה-קובול והפורטרן). מה הופך שפה לטבעית, נכונה ופשוטה ??? די קשה להסביר ובכלל זה קצת יותר פילוסופי ופחות טכניות וחורג מהפורום הזה.
 

stac

New member
בעיקרון....

מסכים אם כמה דברים צריך שפת תכנות לפתור בעיות... בל לא כל תוכנה שעושים היא לניהול מחסנים או מה שלא היה כמובן לא נכתוב בJAVA תוכנה להנחיית טלים right?
 

voguemaster

New member
אמממ

"לא אמור מזמן להתעסק בשטויות כאלו כמו הקצעת זכרון" מלבד הטעות כתיב (ניחא
, אני סתם צוחק
) יש לך טעות בסיסית בהנחה הזו. תשמע, ככל שאתה נותן יותר פעולות ואחריות לאוטומציה ואבסטרקציה אתה מאבד כוח ויעילות, זה בלתי נמנע. ע"ע ה-GC של ג'אווה ושפות אחרות. לא הכניסו GC ל- ++C בדיוק בגלל הנושא הזה, זה בעיניהם עולה יותר מדי ולוקח כוח מהמתכנת. מה גם שניהול זיכרון ב ++C הוא קליל מאוד גם אם אתה לא עובד עם smart pointers. "מתכנני JAVA פשוט הבינו שהורשה מרובה היא רעיון גרוע" זה נכון חלקית. בכל מקרה ג'אווה תומכת ב-interfaces שזה כמעט כמו הורשה מרובה, דגש על הכמעט. ישנם שני הבדלים משמעותיים. בכל מקרה מי שיודע לעשות DESIGN נכון לקוד ++C יודע שיש רק מקרים מאוד ספציפיים שבהם צריך הורשה מרובה וכל שימוש לרעה בהורשה מרובה זו טעות DESIGN. הקיום של הורשה מרובה לא בהכרח מצביע על תכנות גרוע, בחייך.. "הרבה יותר מעניין לעשות את זה לבד ולנהל את הזכרון בצורה יותר יעילה כן ... זהו שלאאא אבל ממש לא!" כמו שאמרתי - GC עולה לך בביצועים, וגם קצת בגמישות. אין מה לעשות, זו רמת אבסטרקציה מעל. זה טוב, אבל לא תמיד וזה בטח לא נחוץ. את העבודה אפשר לעשות באותה קלות גם ב ++C.
 

amiramdil

New member
נכון אבל ...

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

אלדד28

New member
הנה לך סוד:

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

voguemaster

New member
תלוי

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

אלדד28

New member
נו, טוב.

אז ההגדרות שלך קצת מעוותות לטעמי. וכן, הטמעת יפה את תורת MS. אתה מאולף עכשיו
ועכשיו, בוא נראה מה אמרת, מילה במילה. "שפת תיכנות טובה וכלי פיתוח תכנה בכלל, אמורות להסתיר מן המשתמש את הסיבוכיות ה ט כ נ י ת שבתיכנות ולהשאיר את הזמן לפיתרון בעיות לוגיות / מתמטיות ובעיקר אפליקטביות." בערך נכון. זה בדיוק מה ש - ++C עושה, אבל $C ו-JAVA לא מואילות בטובן לתת לך את כוח השליטה האבסולוטי במה שקורה. "מתכנת טוב ובודאי מתכנת מנוסה ביותר (10-15 שנים?) לא אמור מזמן להתעסק בשטויות כאלו כמו הקצעת זכרון" הרשה לי לנסח אותך מחדש. קודם כל, מתכנת זה פועל. אתה מדבר על תוכניתן. הגיע הזמן שתדע איך קוראים למקצוע. שנית, מה שאתה מדבר עליו זה תוכניתן עצלן, או לחילופין תוכניתן תיאורטי. תוכניתן שלא יודע מה קורה מתחת לאף שלו הוא לחלוטין לא תוכניתן טוב, וזה לא משנה באיזו שפה הוא משתמש. במקרה של JAVA ושל $C, ספציפית, התוכניתן לא יכול לדעת מה קורה מתחת לקוד שלו - הוא יכול להעריך, הוא יכול לנחש, אבל לדעת הוא לא יידע, ו.... כל הזין בשבילו. יש מגוון רחב של אפליקציות שאסור שזה יקרה בהן. וזה ממש בידר אותי: "ולא סתם, ממש לא מעניין אותך אם מספר הוא signed או unsigned" תגיד לי, מאיפה אתה החלטת שמעניין אותו או לא מעניין אותו הסימן של המספר?!?!?! זה הפתרון שלך?! "אין את זה, אז זה לא מעניין אותך!"?! "מתכנני JAVA פשוט הבינו שהורשה מרובה היא רעיון גרוע" הורשה מרובה היא לא רעיון גרוע. הורשה מרובה נותנת לך עוד כלי. כמו בכל כלי אחר, יש בה סיכונים, וצריך להיות מודע להם. זה הכל. "ובכלל מזה כל הסיפור של GC ב-Managed code. הרבה יותר מעניין לעשות את זה לבד ולנהל את הזכרון בצורה יותר יעילה כן" יקירי, יש לי הרושם שהתוכניות שכתבת ושתיחזקת היו כל כך גרועות, שאתה כבר לא יודע מימינך ומשמאלך, ואתה לא מבין ש-GC זה חרא של דבר. לא צריך לנהל את כל הזכרון בעצמך, אבל בהחלט אפשר לעשות מספר צעדים מינוריים (כמו שימוש נכון ב-Smart pointers) שישמרו עליך מצד אחד, ויתנו לך עוצמה, דיוק ושליטה מצד שני. "מה הופך שפה לטבעית, נכונה ופשוטה ??? די קשה להסביר..." מה שנכון נכון. בהסברים אתה לא ממש חזק
בכל אופן, תמשיך לכתוב "תוכנות" ל-BLOCKBUSTER השכונתי שלך ב-VB מצידי, רק למה באת להפריע לנו כאן עם הדעות המגוחכות והבלתי מבוססות האלו שלך? יום טוב ומלא חוסר שליטה שיהיה לך
 

amiramdil

New member
שיהיה

טוב, חשבתי שאנשים בפורום כזה מסוגלים לנהל (לנהל אמרתי, טוב הגזמתי) דיון אמיתי ללא העלבות מתחת לחגורה. טוב אז חשבתי ... כל יום לומדים משהו חדש (טוב לר כולם יש כאלה שיודעים הכל). לעניננו... תכניתן או מתכנת (whatever) לא צריך ולא רוצה ללכלך את ידיו בערימת הפרטים הריחנית שאתה מתעקש לשחק עימה (זאת הסיבה דרך אגב שילדים נורא נהנים לשחק בארגז חול ומבוגרים כבר ללללללללאאאאאאאאא) אני לא רוצה לדעת מה ואיך ה- GC עושה בדיוק כל עוד אני מבין ומקבל את דרך פעולתו העקרונית בדיוק כמו שאני לא רוצה לראות את קוד המכונה שיוצר הקומפיילר. ולסיום הדיון הלא-פרודקטיבי הזה: אני מעדיף לכתוב 100 אפליקציות ב: VB עבור ניהול המלאי לחנות הקרמבו השכונתית מאשר לכתוב מערכת מידע אחת ב CPP/MFC/ATL אין שום דבר רע ב: VB אם לא משתמשים בה לצרכים הלא נכונים ויש כאלה (צרכים) מעטים ביותר.
 

אלדד28

New member
כל הזין בשבילך, שאתה נאלץ

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

amiramdil

New member
ולסיום יקירי

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

אלדד28

New member
אה, ואתה מבין ../images/Emo6.gif

תן לי לנחש, מבחינתך "מהות המקצוע" היא לעשות כמה שיותר כסף. אני נהנה מערימת החרא שאתה מדבר עליה. אולי אתה לא יכול להתמודד עם האתגר, אבל יש הרבה אחרים שיכולים.
 
peace man...../images/Emo13.gif ../images/Emo26.gif

תשמע... תראה... אתה לא יכול לבוא ולהגיד שב-java אין דברים יפים... (וגם ב C#, אם כי יש לי הרגשה מאיפה באו להם הרעיונות המקוריים...) אז כן - כבר דיסקסנו את זה, ואכן שלפת את הקלף המנצח: יעילות הקוד. OK - הקוד הסופי ש-java מוציאה יותר איטי/מנופח/לא-יעיל/חרא-בלבן. עדיין - יש לא מעט אפליקציות שזה לא מפריע שהקוד שלי רץ פי 4 יותר לאט מקוד מקביל ב-CPP... ואם מישהו מחר ימציא איזה שפת כלאיים - java plus plus לצורך העניין, שתכיל אופטימייזר מהפכני שתקרב את הביצועים לאלה של CPP (ובמיוחד בשבילך, איזו שליטה מינימלית של התוכניתן ב-GC כחלק מהסטנדרט
) - אז העקרונות הבסיסיים של java לא כאלה נוראיים... למה סתם לקטול שפה שהביאה כמה שינויים מרעננים?
 

אלדד28

New member
זה לא מה שאמרתי.

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

אלדד28

New member
ועוד הערה קטנה...

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

עידו123456

New member
ה DNA זה המצאה של מייקרוסופט? ../images/Emo12.gif

אז יש משהו טוב שיצא משם, וזה דבר שבאמת אפשר לומר עליו שהבאגים הם features...
 
למעלה