למה פייתון נהייתה כל כך פופולארית?

Lucifer LightBringer

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

בייחוד כשאני נזכר בוידאו הזה:

זה מה שצריך ללמד בשנה א':
 

vinney

Well-known member
היה לנו תת דיון על זה לא מזמן באחד השרשורים שקשורים להשכלה.

יש כמה שפות פופולריות, ופייתון היא אחת מהן. אחרות הן JAVA, פסקל, C, סקאלה, מאטלב, וJAVASCRIPT.

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

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

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

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

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

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

Be1n

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

C# נתונה לחסדיה של מיקרוסופט.

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

vinney

Well-known member
זה ממש לא נכון, יש מספיק שפות עיליות עם תקנים פתוחים (לזה התכוונת, נכון?), וגם קומפיילרים חופשיים (הGCC למשל תומך בהרבה מהן).
 

Be1n

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

בתקנים אתה מתכוון לרישיונות שימוש חינמיים כדוגמת הopenjdk?

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

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

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

vinney

Well-known member
נכון, זה מה שסיכמתי בהודעה שלי למעלה.

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

user32

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

Be1n

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

מעניין מה אתם חושבים על שפות אחרות..
 

choo

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

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

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

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

Be1n

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

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

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

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

אילו שפות וטכנולוגיות היית ממליץ לסטודנט ללמוד אם הוא לא משתמש בהן בעבודה?.
 

Lucifer LightBringer

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

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

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

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

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