הייתה איזו כתבה שלינוס טורבלדס קורא להפסיק להשתמש ב-C וב-C++.

vinney

Well-known member
זה לא חדש, זה יצא כבר בפברואר.

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

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

(אני רק תוהה מי חשב שלינוס טורבלדס קורא להפסיק להשתמש ב-סי. הוא מאז ומתמיד היה נגד ספ"פ, אבל לא מסיבות של בטיחות)
 

דיברגנט חדש

Well-known member
באמת? בדיקה קצרה:

תל אביב - פייתון.
פתוחה - Java.
העברית - פייתון.
בן גוריון - Java.

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

Be1n

Member
באמת? בדיקה קצרה:

תל אביב - פייתון.
פתוחה - Java.
העברית - פייתון.
בן גוריון - Java.

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

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

אין שם באמת כימוס או חוקים נוקשים בדומה לשפות מקומפלות.

נראה לי מוזר ללמד אותה בקורס מבוא.
 

vinney

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

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

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

בסטנפורד (אוניברסיטה טובה לכל הדעות) משתמשים בJavascript. רק אומר.
בתור מי שלמדה לתואר ממש בסוף התקופה שבה לימדו פסקל כשפת תרגול והכירה את התלונות האלו - אני מסכימה ולא מסכימה עם הצורך בשפה ״פרקטית״ בתואר.

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

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

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

מעבר לזה, תחומים כמו design patterns ו clean code והעקרונות של SOLID נלמדים תמיד במקום העבודה, למרות שהם בעצם מבוססים על מחקרים אקדמאים, אני לא רואה שום סיבה שהאקדמיה לא תלמד את הנושאים האלו.
 

vinney

Well-known member
מעבר לזה, תחומים כמו design patterns ו clean code והעקרונות של SOLID נלמדים תמיד במקום העבודה, למרות שהם בעצם מבוססים על מחקרים אקדמאים, אני לא רואה שום סיבה שהאקדמיה לא תלמד את הנושאים האלו.
בקורסי מבוא? מסכנים הסטודנטים.

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

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

vinney

Well-known member
כי זאת שפה יחסית נוחה ללימוד. אולי Java גם הייתה מתאימה, זה גם תלוי במי שמריץ את הקורס ומה נוח להם :). בגדול התשובה היא אותה תשובה כמו עם פסקל - השפה צריכה לשמש דוגמא נוחה למימוש הנושאים הנלמדים.
 

דיברגנט חדש

Well-known member
המבוא הוא למדעי המחשב, שפת תכנות בקורס הזה היא כלי להכרת ותרגול המושגים התיאורטיים.
ניהול זיכרון, התעסקות במחוונים נותן בסיס חזק.
לכן אוניברסיטאות מלמדות בקורס מבוא C ובקורס המתקדם לאחר שכבר יותר את הבסיס טוב, מלמדים ג'אווה ולא ++C, למרות שיש כאלו שנשארים ב-++C, בעיקר הנדסות.
פייתון זאת שפה שיחסית קל להתחיל איתה, כך שזאת לא בחירה כזאת יוצאת דופן. בעבר השתמשו בפסקל שבכלל נועדה לזה (היא הומצאה בכוונה כדי לשמש שפת תרגול),
לדעתי, פסקל היא יותר קשה מ-C ודורשת הבנה רבה יותר, בפונקציות יש 3 אפשרויות להעברת פרמטרים ועוד.
אבל אנשים התרעמו שזה ״לא מכין אותם לתעשיה״, אז האוניברסיטאות מנסות להשתמש בשפות שמשתמשים בהן בתעשיה.
אכן, פרט לנייס שהמשיכה לעבוד בפסקל מונחה עצמים (דלפי), רוב החברות עברו ל-++C ולג'אווה.
בסטנפורד (אוניברסיטה טובה לכל הדעות) משתמשים בJavascript. רק אומר.
שים לב, שלעתים באוניברסיטאות במחלקות שונות מלמדים שפות שונות, לדוג' ++C ילמדו בהנדסה, ג'אווה במדמ"ח ופייתון במתמטיקה.
 

vinney

Well-known member
ניהול זיכרון, התעסקות במחוונים נותן בסיס חזק.
לכן אוניברסיטאות מלמדות בקורס מבוא C ובקורס המתקדם לאחר שכבר יותר את הבסיס טוב, מלמדים ג'אווה ולא ++C, למרות שיש כאלו שנשארים ב-++C, בעיקר הנדסות.

מה זה "מחוונים"? פוינטרים? בחיים לא שמעתי מישהו משתמש במילה הזאת, אם כבר "מצביעים" אולי?

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

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

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

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

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

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

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

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

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

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


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


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

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

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

vinney

Well-known member
השאלה פה היא איך אתה מגדיר ניהול זכרון - כי רוב מבני הנתונים כן דורשים הבנה בסיסית מאוד בנושא. רשימות מקושרות ועצים לא יכולים להתקיים בלי הקצאת זכרון דינאמית, שדורשת הבנה בסיסית בניהול זכרון.
כן, אבל אין שום צורך למתכנת לנהל את דינמיקה הזאת. שפות כמו JAVA או פייתון מסתירות את זה וכולם יכולים לממש בהן רשימות מקושרות בלי שום בעיה. יש לזה גם חסרונות, אבל אין שום סיבה להכנס לזה בקורסי מבוא. אם אני רוצה ללמד מישהו איך עושים רשימה מקושרת - אני לא רוצה לבזבז את הזמן שלי על ללמד אותם על איך עושים הקצאות ושחרורים. אפילו ב++C כבר אימצו מודלים של מצביעים אוטומטיים שמשחררים את המתכנת מהעול הזה.


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

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

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

max256

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