למה משמשת היום שפת C ? - עמוד 2 - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

למה משמשת היום שפת C ?


Vatos-Locos

Recommended Posts

ולמה משתמשים בה?

נגיד את רוצה עכשיו לא יודע להצביע לאתר שלך בטופ10

עשיתי לדוגמא בשפת סי תוכנה ש"לוחצת" על לחצן ההצבעה

מוחקת קוקיז, משנה איי פי ושוב ושוב והצבעתי לאתר של מישהו פוול פעמים

למרות שמה שעשיתי זה להקל על תהליכים במחשב

לא היית הכי ברור, אבל אם התכוונת להראות פה דוגמה לשימוש בשפת C, זה אחת מהדוגמאות הכי הזויות שראיתי (זה משהו שבשפה אחרת לוקח 2 שניות, 3 שורות ולא צריך ספריות חיצוניות)

קישור לתוכן
שתף באתרים אחרים

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

שוב יש לציין קרוב יותר לשפת מכונה = יותר יעיל אבל בעל זמן פיתוח יותר גדול.

אם אני צריך לחשב את PI עד מאה מיליון ספרות אחרי הנקודה אני לא אשתמש ב C# אלא ככל הנראה באסמבלר או מקסימום ב C.

ולא אריץ את התכנה ב או UNIX אלא במערכת זמן אמת.

אולי אפילו אכתוב איזה משהו קטן באסמבלר..

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

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

לצערי הרבה המה שכתוב פה הוא שטויות.

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

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

יש מגוון שפות חדשות שלא מלמדים באוניברסיטאות (לפחות לא ברובן) ומשתמשים בהם בהרבה מקומות. שמעת אולי על C-sharp? כנראה שמתכנתים לא כ"כ שמרנים.

אם אתה רוצה לחשב את פיי עד מאה מליון ספרות, עדיף שתחשוב על אלגוריתם יעיל ולא על שפה יעילה. אלגוריתם שיכול לרוץ באופן מבוזר ומקבילי. יש שפות יותר טובות מ-C לדברים כאלה. זה עוד מילא. אבל הקשקוש על זה שתריץ את התוכנה במערכת זמן אמת!? מה פתאום. ו-unix מתאימות יופי לתוכנות כאלה, בעוד שמערכות זמן אמת הרבה פחות נוחות. אין שום סיבה לכתוב תוכנית כזאת באסמבלר. מקסימום חלקים קטנים כמו לולאות קוד וקטורי. ועדיין עדיף שתעבוד על האלגוריתם ולא על המימוש.

כמו שהדגמתי (אני מקווה) עדיין הרבה מאוד אנשים משתמשים ב-C.

ואגב לכתוב תוכנה ב-C שעושה את ההצבעות זה אכן דוגמא למה שלא כדאי לעשות ב-C.

קישור לתוכן
שתף באתרים אחרים

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

מדובר פה ב 2 גישות שונות והרבה מאוד פעמים זה טבעי לבנות משהו עם C++ ורעיון גרוע עם C .

matteo - תראה, אני יכול להגיד הרבה מאוד טובים על C קלות עבודה זה לא אחד מהם.

עד כמה שאני יודע C זאת השפה היחידה שיש אשכרה מאמרים וספרים שלמים שמלמדים אותך

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

i & 1 == 0

השורת קוד הזאת לא תעבוד כמו שמצפים ממנה, בגלל שמסיבה מוזרה ל == יש עדיפות גבוה

יותר מל & (או מ | אבל לא מ ~ ), מה שיקרה פה זה:

i & 0

וזה לא טוב...

לגבי השימוש שהדגמת פה ב C כמו שאמרו לך זה די מפגר להשתמש ב C , במיוחד כשיש

לך שפות סקריפטים כמו AutoIt

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

הייתי משתמש ב AutoIt זה היה לוקח לי שעתיים... מסקנה: אל תכתוב סקריפטים ב C

HaEsrimVeArba - בחיים שלי לא ראיתי מתכנת לא מובטל שיודע רק שפה אחת, ואתה?

קישור לתוכן
שתף באתרים אחרים

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

לגבי מאמרים וספרים שמדברים על איך לעשות דברים נכון ולא נכון: לרוב השפות הבשלות שמשתמשים בהם לפרוייקטים אמיתיים (וגם לכאלה שלא) יש ספרים כאלה שמלמדים אותך: 1) מה חוקי לעשות. 2) מה מוסרי לעשות. 3) מה כדאי ומקובל לעשות.

דווקא C לא מאוד יוצאת דופן, למרות שהיא שפה די מבוגרת, ורוב השפות המודרניות נבנו בין השאר מהלקחים של C.

C++ היא אולי הכי גרועה מכל השפות הרב שימושיות היום בקטע הזה. ה-parser שלה מסובך. הקומפיילר שלה מסובך. חוקי הדקדוק מסובכים. הבעיה נובעת בין השאר מהיכולת לשלב feature-ים רבים ולא קשורים באופן כמעט אורתוגונלי. טיפוסים פרמטרים + פולימורפיזם? אין בעיה. ירושה מרובה יחד עם overloading ויחד עם exceptions? גם אפשר. כל הדברים הללו ביחד וגם תאימות לאחור גבוהה לקוד C? יש ויש. metaprogramming? קיים ואף חזק.

בגלל ש-C++ מאפשרת למתכנת לירות לעצמו ברגל ב-100 דרכים שונות, ו-10000 שילובים שלהן, מתכנתים מתחילים מתבלבלים ועובדים לא נכון (זה שיש operator overloading לא אומר שחייבים להשתמש בו!). לצערי ספרי הלימוד של C++ (במיוחד בעברית!) הם גרועים במיוחד ולא טורחים להסביר את הדברים הללו.

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

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

והערה אחרונה, לגבי קדימות אופרטורים ב-C יש שתי גישות:

1) מתכנת גבר-גבר: אם אתה לא יודע את קדימות האופרטורים ב-C אתה לא צריך לתכנת בה. זה קל ללמוד בעל פה ונהיה אוטומטי.

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

קישור לתוכן
שתף באתרים אחרים

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

ב C99 אחד מהשינויים שהכניסו זה אפשרות להגדיר משתנים איפה שאתה רוצה כמו ב C++. גם ל C++ עכשיו מוציאים גרסא חדשה בשם C++0x.

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...