שיחה:C (שפת תכנות)

תוכן הדף אינו נתמך בשפות אחרות.
מתוך ויקיפדיה, האנציקלופדיה החופשית

מושגים בתכנות, בפרט "זבל"[עריכת קוד מקור]

הפרק: מושגים בשפת C דורש שיפור מהותי. רוב המושגים אינם מושגים בשפת C אלה מושגים כלליים בתכנות, חלקם גם זה לא (למשל זבל, שהוא מושג בתחום האשפה ושמירת הסביבה). מה כדאי לעשות? למחוק את כל הסעיף? להעביר אותו למקום אחר ולעשות שיפוצים? אבינעם 22:04, 10 מרץ 2005 (UTC)

אני חולק עלייך - כל המושגים אינם מושגים בשפת C אלא מושגים כלליים בתכנות. העניין הוא שלא כל מושג כללי בתכנות מופיע גם בשפת C (תכנות מונחה עצמים, למשל) ולכן טוב לראות איזה מושגים כלליים כן שייכים לשפת C, ואיך הם באים לידי ביטוי בה (למשל, איך נכתבת מחרוזת). אולי צריך לעשות קצת יותר ספסיפיקציה למושגים (מה הסינטקס של פונקציה, וכו') אבל אין שום סיבה למחוק או להעביר משהו. כמובן שערך של "מושגים כלליים בתכנות" יתקבל בברכה. אם תהיה בו חזרה על מושגים, לא נורא, זה לא כאילו ערכי ההיסטוריה אינם חופפים (או שעדיף שלא יחפפו). "זבל" הוא מושג מקובל בתכנות. להגיד שזה מושג בתחום האשפה ושמירת איכות הסביבה ולכן זה לא מושג בתכנות זה כמו לומר שחוג זה מושג מתחום המתנ"סים ולכן הוא לא צריך להיות בערך שעוסק במתמטיקה. גדי אלכסנדרוביץ' 06:16, 11 מרץ 2005 (UTC)
מתוך הסכמה עם גישתו של גדי שיניתי את שם הסעיף ל"מושגים בתכנות ומימושם בשפת C" וערכתי אותו. דוד שי 13:30, 11 מרץ 2005 (UTC)
אינני מסכים עם גדי אלכסנדרוביץ'. יש הבדל מהותי בין חוג שהוא מונח ידוע ומוכר ומופיע במילון האקדמיה (ולא רק בענייני מתנ"סים), ובין "זבל" שהוא מינוח נפוץ בז'רגון של מתכנתים, אך לא ראוי להיות מונח אנציקלופדי. שיניתי את המושג לאיתחול משתנה שנראה לי ראוי יותר. אם טעיתי - אפשר לשחזר... :-) אבינעם 23:12, 12 מרץ 2005 (UTC)
במקרה הזה אני נוטה להסכים אתך, אך אל תשכח ש- Garbage Collection הוא מושג חשוב במדעי המחשב. דוד שי 23:14, 12 מרץ 2005 (UTC)
אני בהחלט לא מסכים. מדובר במושג שיש לו אותה חשיבות כמו "מצביע" או "ערימה", שגם הם שמות שלא הומצאו בצורה יעודית אלא מושאלים ממקור אחר. לי נראה שסתם יש לך בעיה עם המילה "זבל" (שהיא תיאור מדוייק של הערך הלא מאותחל שהמשתנה מכיל). אני לא בקיא מספיק בקומפיילרים של סי כדי לדעת האם השכתוב שלך בסדר: אני לא מכיר קומפיילר שנותן ערך התחלתי כלשהו למשתנים (וחמור יותר - עד כמה שידוע לי, ערך התחלתי למשתנים אינו חלק מהתקן של שפת סי ולכן מתכנת שרוצה לכתוב קוד פורטבילי לא יכול "לבנות" על קומפיילר ספציפי שיתן ערך התחלתי). אגב, מהם הקריטריונים שלך לפיהם מונח "ראוי" להיות אנציקלופדי? תזכור שאנחנו בויקיפדיה. גדי אלכסנדרוביץ' 05:10, 13 מרץ 2005 (UTC)
בהקשר התכנותי, "זבל" הוא ביטוי סלנג לתיאור משתנה שלא אותחל. המילים "מצביע" ו"ערימה" הן חלק מהשפה התקנית. הבדל זה מצדיק את גישתו של אבינעם - אנחנו כותבים אנציקלופדיה, ולא סלנגופדיה. דוד שי 06:08, 13 מרץ 2005 (UTC)
די תמוה לנסות ולעשות הפרדה מלאכותית שכזו בין "שפה תקנית" של תכנות ו"סלנג". הרי בעצמך ציינת ש-Garbage collection הוא ביטוי תקני. אולי גם נציע להמנע מלכתוב Junk DNA כי זה "סלנג"? או "דואר זבל"? המטרה העיקרית של אנציקלופדיה היא לספק לאנשים מידע על מושגים. אם מישהו שומע על "זבל" בתכנות ולא מצליח להבין מה זה כי האנציקלופדיה לא יורדת לרמה של התעסקות בביטויים כאלה, הרי שנכשלנו. גדי אלכסנדרוביץ' 08:05, 13 מרץ 2005 (UTC)
לא ברור לי על מה יוצא הקצף. אבינעם הותיר בגוף הערך הסבר למלה "זבל" בהקשרה התכנותי, ורק הבהיר שאין זה הביטוי התקני, ושיש ביטוי תקני "משתנה לא מאותחל". המילה "זבל" אינה מילה גסה, ואין איסור על השימוש בה, ולכן מוצאים אותה גם בביטוי התקני Garbage collection. ההפרדה בין סלנג לשפה תקנית אינה מלאכותית, ויש לה חשיבות. ללא הפרדה זו ייווצרו משפטים כמו "יש לי הסבר חבל על הזמן לעניין זה, אבל לא נעסוק בו כאן כי חבל על הזמן". ניתן להרחיב בנושא בערך [[סלנג], כאן מיצינו אותו, לטעמי. דוד שי 10:29, 13 מרץ 2005 (UTC)

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

  1. קומפיילר GCC הידוע והמוכר מאפס את המשתנים כשמקמפלים במוד debug, (עם דגל g-) ונותן ערכי זבל במוד רגיל (כפי שהוסיף טרול רפאים בערך). שימו לב שגם אני משתמש במילה זבל (ואפילו לא הסרתי אותה מן הערך). לא כתבתי שזה תיקני או פורטבילי או טוב - זה אפילו רע מאוד, אבל זו המציאות.
  2. כפי שדוד העיר יש מושג של Garbage Collection, ויש לו אפילו ערך איסוף זבל, והזבל שם שונה מן הזבל כאן בתכלית, כך שעדיף לא לערבב זבל בזבל. שבוע טוב! אבינעם 22:29, 19 מרץ 2005 (UTC)
יש כמובן קשר בין שני סוגי הזבלים צריך את אוסף הזבל בשביל להפוך את התוכן של התא לזבל מבחינת המשמעות שלו, אחרת מישהו עלול להתייחס אליו. טרול רפאים 22:36, 19 מרץ 2005 (UTC)
לא מדוייק: הזבל באיסוף זבל הוא אובייקט המוקצה באופן דינמי, שאין אליו אף הצבעה - הערכים שם יכולים להיות ערכים טובים או לא. אוסף הזבל חייב לשחרר את האיזורים הללו, אחרת תהיה זליגת זיכרון.

לעומת זאת, כאן כשמדברים על ערכי זבל מדובר על חוסר איתחול. המשתנים לא חייבים להיות מוקצים באופן דינמי. לילה טוב. אבינעם 22:49, 19 מרץ 2005 (UTC)

ראשית, תודה, לא הכרתי את התכונה הזו של gcc (אם כי יותר מעניין אותי אם קיים קומפיילר שמאתחל משתנים "על דעת עצמו"). שנית, עדיף גם לא לערבב ערמה בערמה (כשמדברים על הערמה שממנה לוקחים זיכרון בהקצאה דינמית אל מול מבנה הנתונים) אבל דווקא כדי לא לבלבל רצוי ששני המושגים יוסברו בפירוט כדי שההבדל יהיה ברור. שלישית, אני מסכים עם השכתוב שעשית (אחרת אולי הייתה פורצת כאן מלחמת עריכה), ועיקר הקצף שלי יצא על האמירה (העוקצנית?) שלך ש"זבל" הוא מושג ששייך לתחום איכות הסביבה ולכן אינו מושג בתכנות. גדי אלכסנדרוביץ' 05:16, 20 מרץ 2005 (UTC)
תיקון טעות שלי: כתבתי את מה שזכרתי, אולם בדקתי שוב, ומסתבר שההתנהגות מעט שונה: GCC מאפס משתנים סטטיים, ולא מאתחל משתנים אוטומטיים. (ללא תלות במוד הקומפילציה). משתנה שלא מוכרז כסטטי, מקבל באיתחול ערך זבל. לגבי האמירה שלי - כנראה נסחפתי קצת בלהט הכתיבה. אני מקווה שההדורים יושרו. אבינעם 07:28, 20 מרץ 2005 (UTC)
אין ספק ש-VC++ עושה את ההתנהגות הזאת, לגבי gcc אני לא יודע. טרול רפאים 13:51, 20 מרץ 2005 (UTC)
לפי מה שאני יודע, משתנים אוטומטיים צריכים להיות לא מאותחלים, ואילו משתנים סטטיים ומשתנים גלובליים מאותחלים אוטומטית לאפס.--87.69.230.16 16:12, 6 בדצמבר 2006 (IST)[תגובה]

העברית במסמך[עריכת קוד מקור]

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

תוקן--מ. שלום 19:57, 25 ביולי 2007 (IDT)[תגובה]

רשומה/מבנה[עריכת קוד מקור]

הייתי מציע לבדוק אם הקישור "רשומה" באמת צריך להוביל לערך "מסד נתונים". בעיניי יש הבדל בין רשומה של מסד נתונים למבנה/רשומה של תוכנית (גם אם קיים דמיון למראית עין). 23:07, 17 בינואר 2007 (IST)

דורש תיקוני טעויות, דוגמת הטענה ששתי השורות המתייחסות למחרוזות שקולות. הן לא. אני מניח שכאן אפשר ללמוד עוד על הנושא. פרט משמעותי לדוגמה שחסר ושמתי לב אליו הוא היעדרם של מצביעים-לפונקציות מרשימת סוגי המשתנים. מישהו צריך לבדוק את זה טוב-טוב. המתעתקשיחה 02:57, 6 במאי 2007 (IDT)[תגובה]

אתה יכול להסביר לי למה מחקת את העריכה שלי?[עריכת קוד מקור]

הועבר משיחת משתמש:טרול רפאים

מחקת את העריכה שלי בערך שפת C הייתי שמח לקבל הסבר, בעיקר למה כתבת "מכניס טעיות" בתקציר? נינצ'ה 12:39, 3 ביולי 2007 (IDT)[תגובה]

כי כל מה שכתבת פשוט לא נכון:
  1. C איננה מזוהה עם חלונות - אם כבר דווקא עם Unix
  2. ל-C אין שלוש רמות של קומפילציה, זה תלוי מאוד במהדר (לנוכח השינוי הקודם אני סבור שאתה מתייחס ל-Visual C). למיטב זכרוני ל-gcc יש 9 לפחות (תלוי בגרסה) ולאחרים יש רמות שונות (למיטב ידיעתי למהדר הראשון הייתה רק אחת)
שאר השינויים הם סתם טכניים וגם הם שגויים או לפחות תמוהים (מחיקת קישור - למה?). טרול רפאים 12:45, 3 ביולי 2007 (IDT)[תגובה]
ובכן כיום לכל שהגרסאות של c על סוגיהן יש לפחות שלוש רמות, אתה צודק שיש כאלו אם יותר. בדבר הוינדוז אני סבור שאתה טועה אבל לא אתווקח. באופן כללי אני לא אשנה שום דבר, אם אתה סבור שטעיתי אז בסדר. ייתכן שאתה מבין בזה יותר ממני, ואתה בהחלט מבין בויקיפדיה יותר ממני. אם בכל זאת משהו מהשינויים שעשיתי יראה לך כאילו הוא שווה הסתכלות (למשל רמות קומפילציה) אז אולי עוד יצא משהו מעריכתי, אם לא אדז לא. שיהיה לך יום מוצלח וסליחה על הבלאגן, נינצ'ה 12:50, 3 ביולי 2007 (IDT)[תגובה]
הוא צודק בקשר ליוניקס. 132.72.44.125 (שיחה | תרומות | מונה) לא חתם 00:00, 10 בינואר 2000 (IST)[תגובה]
אם יורשה לי להתערב, כמהנדס תוכנה אני יודע שטרול רפאים צודק לחלוטין. רמות אופטימיזציה (ולא קומפילציה) הן לא חלק מהגדרת השפה, מקסימום אפשר להגיד שקומפיילרים מסויימים כוללים אותן. ולהגיד ש-C מזוהה עם חלונות זה בערך כמו להגיד שאבי נמני מזוהה עם הפועל תל-אביב. ‎Shambler12:58, 3 ביולי 2007 (IDT)[תגובה]
אני לא התייחסתי לעניין כאל השחתה אלא בתור טעות - כולנו טועים לפעמים. בנושא רמות האופטימיזציה נראה מה ניתן להוציא מהעניין, אני לא בטוח שניתן אכן לכתוב משהו כללי. טרול רפאים 13:00, 3 ביולי 2007 (IDT)[תגובה]

כפי שנאמר, C איננה מזוהה עם חלונות. להפך, יש קשר הדוק בין C, יוניקס וPOSIX. לשפה עצמה אין רמות אופטימיזציה. O1,(O3 ו-O3 הם ארגומטים של שורת פקודה ל-GCC שאכן מייצגים שלוש רמות אופטימיזציה שונות (אך לא את כולן, מה עם Os לדוגמה?). המושג "פקודות בינאריות" די חסר משמעות, בעוד שהגרסה הקודמת - "שפת מכונה" היא דווקא הנכונה. המתעתקשיחה 13:06, 3 ביולי 2007 (IDT)[תגובה]

למה לא תעברו לדף השיחה של הערך? קומולוסשיחה 18:35, 9 ביולי 2007 (IDT)[תגובה]

תבנית עריכה[עריכת קוד מקור]

לפני למעלה משנה הושמה תבנית {{עריכה}} בערך, בנימוק "דורש השלמה ותיקון טעויות". האם עדיין יש צורך בתבנית? בתודה, אבינעם - שיחה 01:18, 3 באוגוסט 2008 (IDT)[תגובה]

sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) זה מה שמובטח כאן Shannen - שיחה 15:06, 12 ביוני 2009 (IDT)[תגובה]

עיינתי במקור ושחזרתי את עריכתך. הטענה המצוטטת אכן הופיעה שם, אך היא מעין תנאי הכרחי, אך לא מספיק. באותו הקטע תוכל לראות ש-int חייב להיות בגודל של 16 ביט לפחות וזה מתרגם לשני בתים. שרשרשיחה 17:55, 12 ביוני 2009 (IDT)[תגובה]
לא מדויק שהדרישה המפורשת היא ש-int חייב להיות בגודל של 16 ביט לפחות אפילו אם זה מה שרשום שם. זו התוצאה, אך לא הדרישה. יותר מדויק שהשפה מכתיבה, או אולי כך היה בעבר, נדמה לי שב limits.h, את ערכי המקסימום והמינימום ש int צריך להכיל. אז אם זה משהו כמו 32767 המינימלי למקסימום, זה יוצר אילוץ על מספר הסיביות המינימלי. משהו מעין זה. אני מסכים ששלבתי עובדות ונפנופי ידים. אין לי סבלנות לחפש את המקורות המדויקים, אז מי שהדבר מטריד אותו מוזמן לעשות זאת, וגם לפרסם כאן מראי מקום.
לא ברור מה רצית לטעון? Shannen - שיחה 08:19, 6 באפריל 2019 (IDT)[תגובה]

ככל הידוע לי, ההנחה שמקור השם הוא קידום אות אחת משמה של שפת B הוא טעות נפוצה. השפה פותחה אחרי B משפת BCPL, ולכן קבלה את השם של האות שאחרי B במילה. צריך להוסיף את זה לערך, לפחות כפירוש נוסף, אם אין הסכמה או מקור חד משמעי בנוגע לכך. אלעזר - שיחה 17:46, 3 בספטמבר 2010 (IDT)[תגובה]

פיסקת "שונות"[עריכת קוד מקור]

הסעיפים שתחת הכותרת "שונות" כתובים ברישול ולדעתי גם לא מאוד רלוונטיים לשפה. ביתר פירוט:

סוגי קבצים: חוץ מזה שמה שכתוב איננו נכון (אומנם בחלונות מוסיפים את התו b לפעולת הפתיחה, אבל לא קיים ביוניקס/לינוקס), מה הקשר של הסעיף העילג הזה לשפת C?

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

הערה: אולי הסעיף הכי אינפורמטיבי ומדויק ב"שונות" - דווקא בו אולי אין סיבה לגעת.

שגיאת ריצה: שוב, 14 מילים שלא אומרות כלום. או שמפרטים ונותנים דוגמאות או שמוותרים על הכתוב.

אשמח להערות לפני שאני מתחיל בפעולת שכתוב. Abununim - שיחה 10:35, 2 בפברואר 2011 (IST)[תגובה]

שמעתי שיצא כבר תקן חדש יותר מ-C99, שהוא C1X. עדכנו! --77.126.249.18 08:46, 26 בדצמבר 2011 (IST)[תגובה]

משוב מ-22 באוקטובר 2012[עריכת קוד מקור]

כותבים שתי שדות ולא שני שדות 212.199.69.1 10:05, 22 באוקטובר 2012 (IST)[תגובה]

שדה אחד שני שדות. החבלןשיחהמועדון החלל הוויקיפדי 12:28, 22 באוקטובר 2012 (IST)[תגובה]