מה יותר טוב? ++C או JAVA?

vinney

Well-known member
ניסית בבוני אתרים?

EXPLORER ידוע כלא חובב JS במיוחד.... אבל אם FIREFOX אוכל את זה - זה בסדר, בעיה באקספלורר. תשאל בוני אתרים, בטוח שיש להם פתרונות.
 

selalerer

New member
אתה כל הזמן עובד בקוד לא סטנדרטי.

חבל, אתה בונה דפים שיעבדו רק בדפדפן אחד, ובלי סיבה טובה (כמו ניצול איזה תכונה נוחה של IE שאין באחרים). במקום document.all.X תשתמש ב(document.getElementById(X, את eval כבר הוציאו מהתקן, אז תפסיק להשתמש בו, וכמות האפשרויות שיש בקומבובוקס זה כבר נמצא בתוך האלמנט, אתה לא צריך להעביר את זה לפונקציה. הנה קוד מתוקן (לפחות לתקן):
html> <head> <script language="javascript"> function chkSelected(comboName) { var comboElement=document.getElementById(comboName); if(!comboElement) return; var comboLength=comboElement.options.length; while(comboLength>0) { var len=comboLength-1; theOption=comboElement.options[len]; if (theOption.selected==true) { alert (theOption.innerText); return; } comboLength--; } } </script> <title>Untitled Document</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <select id="rr" onClick="chkSelected('rr');"> <option>e</option> <option>h</option> <option>z</option> <option>e</option> <option>h</option> <option>z</option> </select> </body> </html>​
 

yair24

Member
תבדוק גם את זה

לא הסתכלתי אם הקוד שלך תקני או לא רק דיחקתי עם זה קצת עד שזה עבד...
<html> <head> <script language="javascript"> function chkSelected(comboName,comboLength) { while(comboLength>0) { len=comboLength-1; theOption=eval("document.all."+comboName+".options["+len+"]"); if (theOption.selected==true) { alert (theOption.innerText); return; } comboLength--; } } function a() { alert("ehud"); } </script> <title>Untitled Document</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <select id="rr" onChange="javascript:a();"> <option>e</option> <option>h</option> <option>z</option> <option>e</option> <option>h</option> <option>z</option> </select> </body> </html>​
 

demultiplexer

New member
לא פתרתם לי כלום

עדיין אני לא יודע איך עושים שכשאהני לוחץ על אחת מהאפשרויות בקומבו זה מפעיל לי פונקציה. את onclick ו onchange בתג select עצמו הכרתי. זה לא מה שאני צריך אני צריך שלפי האפשרות בקומבו שאני לוחץ הוא יפעיל פונקציה אחרת.
 

DadleFish

New member
סליחה,

אבל אני לא מבין מה קשור לכאן התואר. התואר במדעי המחשב לא מלמד אותך להיות תוכניתן.
 
התואר מלמד אותך *גם* להיות תוכניתן

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

DadleFish

New member
ובכן...

ראשית, לא לומדים שפה מורכבת כמו ++C, או JAVA, או #C, ביום וחצי. הסינטקס ייקח יומיים שלושה, עם כל מיני ניואנסים - ואז אתה יכול לספר שאתה יודע את ה"שפה", אבל לא שאתה יודע לתכנת על הפלטפורמה. מה שכן, JAVA ו-#C הן קוהרנטיות הרבה יותר מ-++C ולכן קל יותר לאתר בהן את הנדרש, כשהוא נדרש, כמו שתיכף אני אדגים בשרשור נפרד... אבל להיות ספץ ב-JAVA או ב-#C בכל מקרה לוקח זמן ונסיון, לא פחות מכל שפה/סביבה אחרת. מחשבים זה עניין מורכב. אז נכון, ויני מגזימן. ולגבי היכולות והדקויות של NET. - נכון, כמו כל פלטפורמה גדולה. עכשיו לתואר. לא, אני מאוד מצטער, אבל מי שרק למד תואר ראשון, ואין לו נסיון בתכנות (ואפילו כתיבה להנאתך בתיכון זה נסיון), לא יוצא תוכניתן וגם לא קרוב לזה. תואר במדעי המחשב - וגם בהנדסת תוכנה לצורך העניין - משתמש בתכנות בתור כלי לבדיקת התיאוריות, ולא בתור משהו פרקטי. המוסד שבו למדתי נחשב ליותר פרקטי ופחות תיאורטי באופן יחסי, ועדיין לא הייתי בשום קורס שמלמד כתיבה נכונה של קוד, או את עקרונות השימוש ב-DEBUGGER, או איך פותרים באגים. קורס מבוא ב-C זורק על התלמידים כמה פקודות ושולח אותם לכתוב קוד. אחת התופעות הנפוצות שנתקלתי בהן היתה סטודנטים שכותבים תוכנית של 500 שורות מההתחלה ועד הסוף, מקמפלים עד שאין טעויות קומפילציה, מריצים ולא מבינים למה זה לא עובד להם. אז לא - אני לחלוטין לא מסכים, התואר לא מלמד אותך להיות תוכניתן. קורס תכנות בממר"מ (למשל) מלמד אותך להיות תוכניתן. משם אתה יוצא עם יכולות לימוד שפה תוך כמה שעות, ועם היכולת לאתר תשובות לשאלות - אולי הדבר החשוב ביותר לתוכניתן.
 
אחלה רעיון לקורס "דיבוג ושבירת ראש"

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

vinney

Well-known member
זהו שלא

זה שאתה יודע שקיימים אלגוריתמים ויכול לשלב אותם בפתרון הבעיות שלך, לא אומר שאתה יודע לקודד את זה, ויחי ההבדל הקטן.
 
../images/Emo41.gifזהו שלא

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

vinney

Well-known member
הקטע הוא

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

vinney

Well-known member
אוקי, אני אתקן את עצמי

לפני שתירה בי
במקום "בלי נסיון - לא", שים "בלי נסיון - לא באותה איכות מהירות ויעילות". שזה, תסכים איתי, בתעשייה מהווה שתי טענות שקולות.
 

DadleFish

New member
אה, אבל זה ההבדל,

תוכניתן טוב יקודד אותם. מי שעשה את התואר יבין אותם.
 

vinney

Well-known member
בדיוק

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