שפות תכנות עתיקות

max256

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

program calling_func

real :: a
a = area_of_circle(2.0)

Print *, "The area of a circle with radius 2.0 is"
Print *, a

end program calling_func


function area_of_circle (r)


implicit none


real :: area_of_circle

real :: r
real :: pi

pi = 4 * atan (1.0)
area_of_circle = pi * r**2

end function area_of_circle​
 

max256

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

IDENTIFICATION DIVISION.
PROGRAM-ID. CalculateCircleArea.

DATA DIVISION.
WORKING-STORAGE SECTION.
01 Radius PIC 9(5)V9(2) VALUE 0.
01 Area PIC 9(5)V9(4) VALUE 0.
01 Pi PIC 9(5)V9(5) VALUE 3.14159.

LINKAGE SECTION.
01 L-Radius PIC 9(5)V9(2).
01 L-Pi PIC 9(5)V9(5).
01 L-Area PIC 9(5)V9(4).

PROCEDURE DIVISION.
MAIN-LOGIC.
DISPLAY "Enter the radius of the circle: " WITH NO ADVANCING.
ACCEPT Radius.

PERFORM CalculateArea USING Radius Pi Area.

DISPLAY "The area of the circle is: " Area.
STOP RUN.

CalculateArea SECTION.
USING L-Radius L-Pi L-Area.
COMPUTE L-Area = L-Pi * L-Radius * L-Radius.
EXIT.
END SECTION.​
 

vinney

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

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

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

max256

Member
הסבר מושקע ומעניין. תודה. האם עדיין משתמשים בסרטים מגנטיים (כלומר קלטות)?
יש היום גרסאות חדשות של מחשבי מיינפריים. מחשב מסדרת Z של י.ב.מ עולה בין 200 אלף דולר לאיזה 4 מיליון.
אני מעריך שבחדשים יש דיסקים רגילים ואולי אפילו SSD.
 

vinney

Well-known member
הסבר מושקע ומעניין. תודה. האם עדיין משתמשים בסרטים מגנטיים (כלומר קלטות)?
יש היום גרסאות חדשות של מחשבי מיינפריים. מחשב מסדרת Z של י.ב.מ עולה בין 200 אלף דולר לאיזה 4 מיליון.
אני מעריך שבחדשים יש דיסקים רגילים ואולי אפילו SSD.
עדיין משתמשים בסרטים מגנטיים. לא רק במיינפריימים, בתור מדיה לגיבוי סרטים מגנטיים הם מאוד יעילים ומאוד זולים, וגם מאוד אמינים.

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