מבוא לתכנות של קבוצת בטא/המדריך המהיר של עופר לשפת פורטרן

מה זה זה? עריכה

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

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

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

רוצים פתרון קסם, נכון?

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


אתגרים עריכה

כי במדריך המהיר של עופר תמיד יש איזה אתגר בהתחלה, נכון? אז הנה:

 

אתגר:

אתגר Fortran 2023!

בצעו את כל אתגרי שפת C של בטא, רק בFortran 2023!

זה בלי נקודות, זה סתם כי בא לכם.

לא מעניין אתכם Fortran 2023 כי אף אחד לא באמת משתמש בה?
קמתם היום עם מצב רוח לאקסטרים?
אז יש גם אתגר אחר:


 

אתגר:

אתגר FORTRAN77!

בצעו את כל אתגרי שפת C של בטא, רק בFORTRAN77!

זה גם בלי נקודות, זה סתם כדי לבדוק כמה כוח סבל יש לכם.

כבר טחנתם את האתגרים האלו בC ולא בא לכם שוב?
טוב, אז אתגר אחר:


 

אתגר:

אתגר Fortran אחר!

היכנסו לexcercism או לcodewars, ועשו את כל האתגרים שם בFortran! לא בדקתי עדיין אם אפשר בFORTRAN77. עדכנו אותי כשתבדקו, אם תצליחו לשרוד את זה.

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

קדימה לפרה-היסטוריה.

מה הסיפור עם פורטרן 77, 2023 וכל זה? עריכה

פורטרן היא עתיקה. עתיקה כמו ב"מתקמפלת מאז 1957" וכמו בשפת התכנות העילית הראשונה. אולי היא אפילו זוכרת שהיא החליפה חיתולים לקובול. וזה אומר שהיא היתה די פרמיטיבית בהתחלה.

  • ב1966 כבר יצא סטנדרט ANSI שלה.
  • ב1977 הבינו שelse יכול להיות נחמד כתוספת לif ושלהגדיר שמשתנים שמתחילים באותיות I, J, K, L, M, או N הם שלמים וכל האחרים הם עם נקודה עשרונית זה כנראה לא רעיון כזה מוצלח, ועוד כמה תובנות מופלאות, והוציאו סטנדרט מעודכן: FORTRAN77.
  • ואז הטכנולוגיה התקדמה לועדה מהר מדי (🤦), אז לקח להם 15 שנה להוציא את סטנדרט Fortran90 (ובינתיים כל מיני קומפיילרים המציאו לעצמם הרחבות כדי שמתכנתים לא יחפשו מקצוע אחר). וכדי לא להבהיל אף אחד, Fortran90 לא פגע בשום צורה בהגדרות של FORTRAN77. מכל הסיבות האלו כולם התרגלו לFORTRAN77 ולחלקם זה לא עבר עד היום.
  • ב1995 יצא תיקון קטן לסטנדרט.
  • ב2003 יצא סטנדרט ראשון של הצורה המודרנית של Frotran, בין השאר קלטו שם שאובייקטים זה ממש פופולרי, אז למה לא. שיפורים נוספו ב2008 וב2018.
  • ביולי 2023 יצא הסטנדרט החדש ביותר: Fortran2023, שזה אחד משתי הגרסאות שלומדים כאן. אגב, אני כותב כאן במרץ 2023, אז זה למעשה בעתיד, אבל עד שתקראו את זה כנראה הסטנדרט כבר יצא ואני לא ארצה לערוך כאן הכל, אז אני כותב מראש שלומדים כאן Fortran 2023 כשבעצם זה קצת שקר כי קיים לי כאן רק Fortran2018.

למה ללמוד פורטרן? עריכה

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

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

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

למשל, 18% מscipy, ספריית הפונקציות המדעיות של פייתון, כתובה בFORTRAN77. כן, אפילו לא בFortran מודרנית. למה? כי מהירות. וכי זה עובד טוב אז מפחדים לנגוע בזה. הבנתם נכון, הפייתון שלכם עובד במהירות סבירה רק כי Fortran (וC ועוד כמה חברים) עושים בשבילו את העבודה הקשה.


 

כדאי לדעת:

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

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

למה קוראים לזה Fortran? עריכה

קיצור לFORmula TRANslator. כשאת שפת התכנות העילית הראשונה, עדיין לא צריכים להיות יצירתיים עם השמות.

שלום עולם! עריכה

שום שלום עולם.
בואו נבין קודם משהו: FOTRAN77 וFortran2023 זה שני יצורים די שונים. יש מי שטוענים שמדובר ממש בשתי שפות שונות, אבל הם מגזימים.

  • Fortran2023 (או כל גירסה מאז 2003) היא שפה מודרנית ויעילה שכמעט אף אחד לא משתמש בה בתעשיה כי היא פיספסה את הרכבת. אבל במחשבי העל של האוניברסיטאות היא חיה ובועטת.
  • FORTRAN77 היא תפלצת עתיקה עם חוקים מוזרים שהמון קוד legacy כתוב בה, ולכן הרכבת לא מעניינת לה את קצה האגודל, כי היא בת אלמוות ורכבת זה לחלשים.

אז נפריד את זה לשני מדריכים: