מה ההבדל בין ++C לבין ++Visual c ?

ihovav

New member
זה מאוד פשוט :

CPP זו שפת תכנות מונחת עצמים שבבסיס שלה היא אנסי - כלומר שכל קוד שתכתוב (בכפוף לזה שהקוד יהיה תואם קוד אנסי) יוכל להתקמפל ולעבוד על כל פלטפורמה (מאק או פי סי, ווינדוז או יוניקס). חשוב לציין שלכל מערכת הפעלה יש פונקציות אותן היא מספקת - והאנסי יוצר מצב שכל פונקציה (לדוגמא ב C או CPP) שיש לה מטרה מסויימת - תבצע את המטרה - בשקיפות לגבי מה קורה מאחורי הקלעים - אם יש לך פונקציה שפותחת קובץ - לא משנה מבחינתך איזו פונקציה של מערכת ההפעלה נקראת - זה קוד שעובד בכל פלטפורמה - מה שמאפשר לימוד "כללי" של שפה מבלי להתייחס למערכות ספציפיות וויזואל CPP זה למעשה תכנות ב CPP (או C ב API) כשיש לך אפשרות לקרוא לפונקציות מערכת של ווינדוז(API) או להשתמש ב CLASSES שמכילים את התכונות של ווינדוז (MFC) - ובעזרתם לממש תכנות חלונאי - כולל הוויזואליות, ההתנהגות, התפריטים וכ"ו. תכנות כזה הוא ממש לא "אנסי" ולא יתקמפל או יעבוד בשום מערכת מלבד ווינדוז - וגם שם צריך לשים לב לגרסאות - כי קוד של NT לא בהכרח יעבוד על 9X ולהיפך...
 

matliv

New member
ראשית, תודה על הפירוט

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

The_Mighty_Perr

New member
אני חייב להגיד משהוא...

בס"ד כן...יופי...יש ANSI CPP...רק שהוא לא קובע הרבה דברים... כמו גודל של משתנים, כל ש-LONG הוא לפעמים 32, לפעמים 64 ולפעמים 80 ביט, תלוי במחשב, ואותו הדבר לגבי שאר המשתנים. ANSI CPP גם לא אומר מה לעשות במקרים מוזרים כמו:
//function f declarded somewhere f(++*p)​
או משהוא כזה... זה הוזכר בספר 85 עצות של stroustrup, נדמה לי. לא ממש מובן לי המונח "C בAPI", מדובר ב-CPP, לא ב-C... גם ב-CPP "רגיל" אפשר לקרוא ל-API. CPP מאפשרת גישה לפונקציות בספריות מקושרות דינמית, בלי קשר לסביבת העבודה, או המהדר... גם ב-Quick C/MS C/Borlnad C אפר לגשת ל-API לא לשכוח ATL... MS ממש התלהבו מכל זה, יש הרבה דברים בקשר ל-ACTIVEX/COM... כמובן... הרי אם משתמשים ב-API של ווינדוס, כמובן שהקוד לא יפעל על מערכת הפעלה אחרת. NT/2000 הם לא כמו 9X/ME, המערכות פשוט שונות. NT/2000 יותר מוגנות(תהליך שנופל לא גורר את כל הווינדוס לעזאזל לדוגמא...), הן יותר לעבודה/עסקים מאשר לעבודה ביתית, וכל הדברים כמו הדרייברים שונים, והפיתוח שלהם שונה... בברכה...
 

ihovav

New member
כמה דברים :

אפשר לכתוב כמה דפים טובים על אנסי CPP ולא להקיף את כל הנושא הרעיון היה להסביר לבחור הנחמד הזה מה ההבדל בין תכנות גנרי ב CPP לבין תכנות ב VCPP לגבי ה API - הכוונה היתה שלמרות שקוראים לסביבת הפיתוח וויזואל סי פלוס פלוס - ניתן לתכנות גם ב סי תו"כ שימוש ב API לגבי ההבדלים בין WIN 9X ובין מערכות NT : לא באתי להגיד שיש איזה שהוא דמיון בניהם - אלא שקוד שנכתב במערכת אחת - לא בהכרח יעבוד בשניה - והכונה לא היתה לקוד מקומפל - כי אם יש לך נסיון בנושא (ואני יודע שיש לך) אז אתה יודע שיש קוד שיכתב על מערכת 9X ויעבור קומפילציה וגם יעבוד כמו שצריך על NT, ולהיפך - כמו גם הרבה מקרים שלא יעבור קומפילציה ולא יעבוד... אתה צריך לצאת מהקונספט של "אני יודע הכל" וכ"ו, זו לא תחרות ידע אם יש לך דברים רלוונטיים לנושא ולהודעה|סהדגש| - תגיב, ובמקרה הזה ההערות שלך לא תורמות כלום במקרה הטוב, ומבלבלות במקרה הפחות טוב, תזכור שבסך הכל הבחור מנסה לקבל פרספקטיבה על הנושא ולא לעבור קורס שלם עליו...
 

The_Mighty_Perr

New member
אוקיי...

בס"ד אבל אל תנטע בו תקוות שאו, כי הוא יחזור וישאל למה הקוד לא פועל על לינוקס, ווינדוס, ודוס? בנוגע להערה על C ו-APן, לא הבנתי מה אמרת, תודה שהבהרת את זה. כן, אני מבין שהכוונה הייתה לא לקוד מקומפל, ונכון, לפעמים זה יפעל... העניין החשוב היה, שלא כל המהדרים מצייתים ל-ANSI CPP, והסטנדרט גם לא מגדיר מספר דברים, העולם לא מושלם
בברכה...
 

חובבן

New member
לצערנו הרב אין היום קומפיילר בשוק

שתומך ב 100% בסטנדרט של ++C משנת 98. למייטב ידיעתי מי שהכי מתקרב לכך הוא ה gcc של gnu (החינמי!!!). הקומפיילר של מיקרוסופט נחשב לאחד המפגרים ביותר, בעיקר בתמיכה ב templates.
 

ihovav

New member
עד היום לא נתקלתי בבעיות ענקיות

בתכנות TEMPLATES ב VCPP
 

חובבן

New member
יש לך מזל...

מנסיוני יש בעיות קשות ב partial implementation. אבל למה לסמוך עלי? הנה ציטוט מהמומחה מספר אחד במיקרוסופט ל ++C, בובי שמידט: As have many of you, I long ago dismissed Visual C++ as a serious Standard C++ compiler.
 
CPP זאת שפת תכנות

visual cpp זאת סביבת עבודה שיצרה מיקרוסופט כדי לכתוב ולקמפל תוכנות בשפות c,CPP ועוד. גם ב CPP ניתן לכתוב תוכנות לחלונות גם בלי סביבת העבודה visual cpp!! אפשר לכתוב יופי של תוכנות לסביבת חלונות בסביבת העבודה של בורלנד בעזרת ה windows API.
 
למעלה