موضوع مقاله: فرترن | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # فرترن | مقدمه: این زبان در ابتدا برای برنامه‌های مهندسی و علمی در دهه ۱۹۵۰ توسط شرکت آی‌بی‌ام ایجاد شد و بیش از شش دهه است که در مسائل محاسباتی پیچیده همانند پیش‌بینی آب و هوا، تجزیه و تحلیل عناصر محدود، دینامیک سیالات محاسباتی، فیزیک محاسباتی، کریستالوگرافی و شیمی محاسباتی مورد استفاده قرار گرفته‌است. | ## بخش 1: فرترن | این زبان در محاسبات با کارایی بالا و محک و رتبه‌بندی سریعترین ابررایانه‌ها رایج است. یکی از ویژگی‌های مهم فورترن سرعت بالا در کامپایل کردن کدهای محاسباتی است و دلیل آن بهینه بودن دستورها این زبان نسبت به زبان‌های دیگر است و با توجه به کمینه بودن تعداد کاراکترهای مورد نیاز برای ایجاد یک دستور و امکانات ترجیحی و اختیاری فراوان، کدهای نوشته‌شده با این زبان از حجم کمی برخوردار هستند و در زمان کوتاه اجرا شده و نتیجه خواهد داد. نامگذاری نام نسخه‌های قبلی این زبان با حروف بزرگ بیان می‌شد و FORTRAN 77 آخرین نسخه‌ای بود که در آن استفاده از حروف کوچک در کلمات اصلی غیراستاندارد بشمار می‌رفت. تیم برنامه‌نویسان گذشته فورترن شامل ریچارد گلدبرگ، شلدون بِست، هارلان هریک، پیتر شریدان، روی نوت، رابرت نلسون، ایروینگ زیلر، هارولد استرن، لوییزهایت و دیوید سیر بود. پیشنویس مشخصات سیستم ترجمه فرمول ریاضی در نوامبر سال ۱۹۵۲ تکمیل شد و اولین کتابچه راهنمای‌آن، در اکتبر ۱۹۵۶ آماده‌شد و با اولین کامپایلر فورترن در آوریل ارائه شد. مشتریان زمانی تمایل به استفاده از زبان سطح بالا دارند که عملکرد کد تولید شده توسط کامپایلر مشابه عملکرد کداسمبلی دست‌نویس باشد. درحالی‌که برنامه نویسان در عملکرد بهتر این نوع برنامه‌نویسی نسبت به کداسمبلی دست‌نویس تردید داشتند، کاهش بالای تعداد عبارات برنامه‌نویسی توجه برنامه‌نویسان را جلب کرد. جان بکوس در طی مصاحبه ای در سال، گفت: "بخش عمده‌ای از کار من از تنبلی ناشی شده‌است. من نوشتن برنامه‌ها را دوست نداشتم، بنابراین هنگامی که در IBM 701 کار می‌کردم، برنامه‌هایی برای محاسبات می‌نوشتم. پس شروع به کار بر روی یک سیستم برنامه نویسی کردم تا نوشتن برنامه‌ها آسان‌تر شود. " دانشمندان این زبان را بسیار مناسب برای برنامه های‌فشرده عددی دانستند و نویسندگان کامپایلر را، برای نوشتن کامپایلر با سرعت و کارامدی بیشتر ترغیب کردند. گنجایش این زبان برای داده‌های عددی بسیار پیچیده، آن را برای برنامه‌های فنی به‌خصوص در مهندسی برق مناسب نموده‌است. محبوبیت روزافزون این زبان، سازندگان آن را تشویق‌کرد بطوری‌که تا سال ۱۹۶۳، بیش از ۴۰ کامپایلر فورترن دردسترس بود. توسعه فورترن به موازات سیرتکاملی کامپایلر بود و به همین دلیل بسیاری از پیشرفت‌های تئوری و طراحی کامپایلر در جهت رفع نیازهای فورترن برای ایجاد کد کارامدتر ایجادشد. جی پاساکوف در سال ۱۹۸۴ نوشت: «دانشجویان فیزیک و نجوم باید فورترن را بیاموزند و بعید به نظر می‌رسد دانشمندان به دیگر زبان‌های پاسکال، مدولا یا هر چیز دیگری روی‌آورند.» در سال ۱۹۹۳، سیسیل لیث، فورترن را «زبان مادری محاسبات علمی» خواند و افزود: «جایگزینی آن با هر زبان دیگر ممکن است یک امید فراموش شده باقی بماند.» فورترن یک زبان اولیه برای برخی کارهای حجیم در ابرکامپیوترها مانند نجوم، مدل‌سازی آب و هوا، شیمی محاسباتی، اقتصاد محاسباتی، دینامیک سیالات محاسباتی، فیزیک محاسباتی، تجزیه و تحلیل داده‌ها، مدل‌سازی هیدرولوژیکی، جبرخطی عددی و کتابخانه‌های عددی (LAPACK, IMSL و NAG)، بهینه‌سازی، شبیه‌سازی ماهواره، مهندسی سازه و پیش‌بینی وضعیت هوا است. از اوایل سال ۲۰۰۰ بسیاری از کتابخانه‌های پشتیبان مورد استفاده قرار گرفتند و ازطرفی زبان های‌دیگر مانند متلب، پایتون و آر در برخی حوزه‌های علوم محاسباتی رایج شدند. | ## بخش 2: فرترن | ویژگی‌های زبان قابلیت حمل قابلیت حمل در ابتدا با مشکلاتی همراه بود زیرا هیچ استانداردی مورد توافق قرار نمی‌گرفت. استاندارد ۱۹۹۶ یک اصطلاح مرجع و معناشناسی را ارائه می‌داد، اما مجدد به ناسازگاری ادامه دادند. بعد از استاندارد ۱۹۷۷، دفتر ملی استاندارد FIPS PUB 69 را منتشر کرد که پردازنده‌های خریداری شده توسط دولت ایالات متحده ملزم به تشخیص استاندارد بودند. اتخاذ (در حال حاضر تقریباً جهانی) استاندارد IEEE 754 برای حساب ممیزشناور باینری، این مشکل را حل کرد. دسترسی به محیط محاسبات برای مثال خط فرمان برنامه، متغیرهای محیط و غیره همچنان مشکل ایجاد می‌کرد که در سال ۲۰۰۳ برطرف شد. گونه‌های مختلف عرضه‌کنندگان کامپیوترهای علمی عملکرد بالا (مثال:باروز، شرکت داده‌های کنترل(CDC)، (به انگلیسی Cray)، هانی‌ول، آی‌بی‌ام، تگزاس اینسترومنتس، و یونی‌وک) افزونه‌های فورترن را اضافه کردند تا از قابلیت‌های سخت‌افزاری مانند حافظه نهان دستور، خط لوله‌های (به انگلیسی pipeline) واحد پردازش مرکزی، و آرایه‌های برداری بهره ببرند. برای مثال، یکی از کامپایلرهای فورترن شرکت آی‌بی‌ام، سطحی از بهینه‌سازی را داشت که ترتیب دستورهای را عوض می‌کرد تا واحدهای محاسباتی داخلی مختلف را همزمان مشغول نگه دارد. هم چنین آزمایشگاه‌های تحقیقاتی آی‌بی‌ام، یک نسخهٔ توسعه‌یافته از یک زبان مبتنی بر فورترن به نام وکترن را برای پردازش بردارها و ماتریس‌ها ایجاد کردند. فورترن شیءگرا یک افزونه شیءگرا از فورترن بود که در آن می‌توانستیم داده‌ها را در اشیاء مختلف گروه‌بندی کنیم. نمونه‌های اشیاء می‌توانستند به صورت موازی با یکدیگر ساخته شوند و توابعشان را اجرا کنند. فورترن شیءگرا برای کامپیوترهای سان، آیریس، آی‌پی‌اس‌سی و انکیوب موجود بود، اما الان دیگر پشتیبانی نمی‌شود. افزونه‌های این‌چنینی که مختص یک یا چند ماشینند یا در طول زمان از بین رفتند، یا عناصری از آنها در استانداردهای اصلی گنجانده شد. مهم‌ترین افزونهٔ باقی‌مانده اپن ام‌پی است که یک افزونهٔ چندپلتفرمه برای برنامه‌نویسی با حافظهٔ مشترک است. کواَرِی فورترن یک افزونه جدید است که برای پشتیبانی برنامه‌نویسی موازی در نظر گرفته شده. FOR TRANSIT برای ماشین آی‌بی‌ام ۶۵۰ فور ترنزیت یک نسخهٔ ساده شده از زبان فورترن ماشین آی‌بی‌ام ۷۰۴بود، که برای ماشین آی‌بی‌ام ۶۵۰ پیاده‌سازی شد. با این حال، هیچ‌کدام از این محدودیت‌ها موجب آن نمی‌شوند که یک کد منبع که برای فورترن نوشته شده‌است برای سیستم فورترن ماشین آی‌بی‌ام ۷۰۴ ناسازگار باشد. | ## بخش 3: فرترن | سه بار عبور لازم بود تا کد منبع به زبان "IT" ترجمه شود، و بعد دستورهای IT کامپایل شده و به زبان اسمبلی سوپ(SOAP) ترجمه شود، و نهایتاً برنامه به زبان مقصد (کد ماشین) تولید شود، بعد می‌توان آن را درون ماشین بارگذاری کرد تا برنامه را اجرا کند (برای داده ورودی از کارت پانچ استفاده می‌شود، نتیجه را هم روی کارت پانچ خروجی می‌دهد) زبانهای مبتنی بر فورترن قبل از فورترن ۷۷، به‌طور معمول تعدادی پیش‌پردازنده برای میسر ساختن یک زبان مناسب تر مورد استفاده قرار می‌گرفتند، با این مزیت که کد پیش پردازش شده می‌توانست روی هر ماشینی که یک کامپایلر استاندارد فورترن داشت کامپایل شود. این پیش پردازنده‌ها معمولاً از برنامه‌نویسی ساختاریافته، اسامی با طول بیش از ۶ کاراکتر برای متغیرها، نوع داده‌های اضافه، کامپایل شرطی برنامه، و حتی قابلیت‌های ماکرو پشتیبانی می‌کردند. برای مثال، رتفور و رتفیو یک زبان شبیه سی پیاده‌سازی می‌کردند و کد پیش‌پردازش‌شده را به زبان فورترن ۶۶ خروجی می‌دادند. علی‌رغم پیشرفت‌ها در زبان فورترن، پیش‌پردازنده‌ها هم چنان برای کامپایل شرطی برنامه‌ها و جایگزینی ماکروها مورد استفاده قرار می‌گیرند. یکی از افزونه‌های فورترن که برای پشتیبانی برنامه‌نویسی سیستم‌ها عرضه شد، زبان LRLTRAN در آزمایشگاه ملی لارنس برکلی و با هدف پشتیبانی از محاسبات برداری و ذخیره‌سازی پویا ایجاد شد. بسیاری از کامپایلرهای فورترن، بخش‌هایی ازپیش‌پردازندهٔ سی را در خود ادغام کرده‌اند. زبان برنامه‌نویسی F طراحی شد تا زیرمجموعه مرتبی از فورترن ۹۵ باشد که هدفش حذف کردن قابلیت‌های زائد، بدون‌ساختار و منسوخ‌شدهٔ فورترن، مثل دستور بود. اف قابلیت‌های آرایه را که در فورترن ۹۰ اضافه شده بود حفظ می‌کند و دستورهای کنترلی ای که توسط مفاهیم برنامه‌نویسی ساخت‌یافته منسوخ شده بودند را حذف می‌کند. سازندگان زبان اف آن را "یک زبان برنامه نویسی کامپایل شده و ساختاریافته برای آرایه‌ها توصیف کردند که "خصوصاً برای آموزش و محاسبات علمی مناسب است". لاهی و فوجیتسو تیم مشترک تشکیل دادند تا یک زبان فورترن برای چارچوب دات‌نت مایکروسافت خلق کنند. نمونه کد اطلاعات بیشتر در: برنامه زیر تخصیص حافظهٔ پویا و عملیات روی آرایه‌ها را شرح می‌دهد که دو قابلیت معرفی شده در فورترن ۹۰ هستند. به‌طور خاص نبود حلقه‌های و دستورهای برای تغییر دادن آرایه شایان ذکر است که در عوض عملیات ریاضی روی کل آرایه به عنوان یک موجودیت اعمال می‌شود. بعلاوه، نامگذاری متغیرها به گونه ای که نام متغیر، آن را توصیف کند، و قالب کلی کد که مطابق با شیوه برنامه‌نویسی امروزی است نیز آشکار است. این مثال، میانگین داده‌هایی که در تعامل با کاربر از ورودی گرفته می‌شود را محاسبه می‌کند. | ## جمع‌بندی | همان‌طور که نوشته شده، اگر هیچ داده‌ای موجود نباشد، صفر را به عنوان میانگین برمی‌گرداند !