اف (زبان برنامه‌نویسی)
زبان برنامه‌نویسی اف یک زبان برنامه‌نویسی ماژول گرا، کامپایلری و محاسبه‌کننده عددی است. زبان F برای برنامه نویسی علمی و محاسبات علمی طراحی شده‌است. این زبان در شرکت فرترن و به عنوان یک فورترن جدید توسعه یافت که آن را زیرمجموعه‌ای از زبان برنامه‌نویسی Fortran95 وFortran90 کرده‌است. F ویژگی‌های عددی و انتزاع داده ها در این زبان‌ها را با هم ترکیب کرده‌است. F با زبان‌های قدیمی تر نیز سازگاری دارد، یعنی اجازه می‌دهد برنامه‌ای به زبان Fortran77 فراخوانی شود. زبان برنامه‌نویسی اف از کامپایلر مشابه Fortran95 استفاده می‌کند (g95). به کامپایلرهای F در ویندوز و سیستم‌های عامل متعدد لینوکس به صورت رایگان یا به عنوان یک بسته نرم افزاری از Fortran Store می‌توان دسترسی پیدا کرد.
زبان اف با زبان برنامه‌نویسی اف شارپ نباید اشتباه گرفته شود.
F برنامه نمویسی ماژول گرایانه را ترغیب می‌کند. کد کردن و فهمیدن یک واحد از F ساده است. در مقایسه با برنامه‌نویسی شی گرایانه، برنامه‌نویسی ماژول گرایانه امکان استفاده مجدد بدون هیچ سوء استفاده‌ای را فراهم می‌کند. F یک زیرمجموعه از جدیدترین نسخه فورترن که قدرتمندترین زبان عددی جهان و با دقت و مهارت است، می‌باشد. یادگیری F دو فایده مهم دارد: به دلیل اینکه تنها یک راه برای نوشتن کدها وجود دارد، F یک زبان مجاز نیست. همه کلمات کلیدی و و نام‌های توابع، کلمات رزرو شده در F هستند؛ بنابراین نام‌ها نمی توانند مشابه هیچ کلمه کلیدی باشند. F با بیش از صد روند ذاتی که برای آن ساخته شده‌است، تجهیز شده‌است، به همین دلیل نیازی به کتابخانه‌ها یا ماژول‌های استاندارد اضافه ندارد. کلمات کلیدی زبان و نام‌های توابع ذاتی کلمات کلیدی رزرو شده در F هستند و هیچ اسم دیگری نمی تواند دقیقاً این فرم‌ها را داشته باشد. مجموعه کاراکترهای مشابه با Fortran90/95 با محدودیت 132 کاراکتر را شامل می‌شود. کلمات رزرو شده همیشه به صورت حروف کوچک نوشته می‌شوند. هر حرف بزرگ ممکن است در یک ثابت کاراکتری ظاهر گردد. نام متغرها محدودیتی در کاراکترهای کوچک و بزرگ ندارد. علامت نقل قول به عنوان حائلی برای رشته‌های کاراکتری استفاده می‌شود. F قالب بندی را حمایت می‌کند. یک قالب بندی می‌تواند شامل * (برای قالب بندی راهنمای لیست) یا یک لیست از صفات ویرایشی، کنترل توصیف‌کننده ویراستاری یا موارد قالب بندی لیست باشد. برای جداسازی موارد قالب بندی از کاما استفاده می‌شود. بعد از آخرین پرانتز بندی راست در یک تعیین قالب بندی یا متغیر قالب بندی کاراکتر، استفاده از کاراکترها مجاز نیست. tn ، tln ، trn ، [r]/ ، : ، s ، sp ، ss توصیف‌کننده‌های کنترلی هستند. F کنترل نورد را حمایت نمی‌کند، زیرا این وابسته به فایل و سیستم عامل است. F از تعداد زیادی از عملگرهای استاندارد که در بسیاری دیگر از زبان‌ها استفاده می‌شوند حمایت می‌کند. عملگرهایی که در F حمایت می‌شوند عبارتند از: عملگر تخصیص با علامت تساوی "=" نشان داده می‌شود. علاوه بر این اشاره گر با "<=" و نظرات با "!" نمایش داده می‌شوند.
variable = expression ! assignment  pointer => target ! pointer assignment
ّF سه ساختار کنترلی را حمایت می‌کند: ساختار case ، ساختار if و ساختار do. دو بیانیه دیگر وجود دارند که می‌توانند ترتیب اجرای برنامه F را تغییر دهند که آن دو return و stop هستند. مثالی از ساختارهای کنترلی: real:: x do i = 100 end do
max : do end max stop
if (x < y) then else if ( x > y) then end if
select case (maximum): end select
یک برنامه اصلی با بیانیه program شروع شده و با بیانیه end program پایان می یابد. F رویه‌هایی که در یک واحد نباشند را نمی پذیرد. F بیشتر ماژول‌ها و رویه‌های ماژول Fortran90/95 را حمایت می‌کند. توابع و زیرروال‌ها قسمتی از رویه‌های ماژولی هستند. همه آرگومان‌های یک رویه ساختگی باید در یک بلوک رابط توصیف شوند. F رویه‌های درونی را حمایت نمی‌کند. همه رویه‌ها به یک نتیجه نیاز دارند تا مقدار تابع را بازگرداند. توابع نمی توانند مقدار آرگومان ساختگی را تغییر دهند. F بازگشتی را حمایت می‌کند.
رویه‌های ماژولی می‌توانند با جملات (بیانیه ها) فراخوانی ارجاع داده شوند. هرگاه یک رویه ذاتی به عنوان یک آرگومان استفاده شود یا با یک رویه ماژولی توسعه یابد، نام آن نیز باید در یک بیانیه ذاتی اعلام گردد. رویه‌های ذاتی، رویه‌هایی هستند که توسط F فراهم شده‌اند. بیشتر رویه‌های ذاتی Fortran90/95 در F می‌باشند. این رویه‌ها کلمات رزرو شده هستند. هم چنین رویه‌هایی وجود دارند که در Fortran90/95 بوده‌اند ولی در F حذف شده‌اند مانند : achar ، iachar ، lge ، lgt ، llt ، transfer ، dble ، dim ، dprod و mod. یک بلوک رابط، یک رویه که در F نباشد را به صورت صریح اعلام می‌کند. عملگرها و تخصیص‌هایی که توسط کاربر تعریف می گردند باید در بلوک رابط ظاهر گردند.
interface operator ( defined operator ) end interface [operator ( defined operator )] interface assignment (=) end interface [ assignment (=)]
F ورودی صفحه کلید استاندارد و نمایش و خروجی متنی استاندارد را حمایت می‌کند. هر بیانیه ورودی و خروجی باید با یک لیست کنترلی دنبال شوند. لیست کنترلی ورودی/خروجی باید شامل یک عدد واحد باشد. هم چنین می‌توانند شامل موارد انتخابی مانند fmt ، advance ، isotat ، rec و size باشند.اگر واحد یک کاراکتر باشد، ورودی/خروجی برای یک فایل داخلی است. * برای قالب بندی پیش‌فرض یا راهنمای لیست استفاده می‌شود. این به همراه بیانیه خواندن و نوشتن استفاده می گردد. F هم چنین موارد سنتی بدون قالب بندی ورودی/خروجی را نیز حمایت می‌کند. دستورالعمل بیانیه ورودی:
read (i/o control list ) [input list] read format [, variable list]
دستورالعمل بیانیه خروجی:
write (i/o control list ) [output list] print format [, output list]
مشابه Fortran اختصاص نوع از نوع، لیستی از صفات برای متغیرهای اعلان شده و لیست متغیر است. انواع ذاتی شامل اعداد صحیح ، اعداد حقیقی ، اعداد مختلط ، کاراکتری و منطقی هستند. اعلان متغیرها توسط لیستی از صفات دنبال می‌شوند. صفات مجاز پارامتر، عمومی (public) ، اختصاصی (private) ، قابل تخصیص (allocatable) ،بعد آرایه (dimension) ، اختیاری (optional) ، اشاره گر (pointer) ، ذخیره (save) و هدف (target) هستند. لیست صفات با نماد "::" دنبال می‌شود که جزئی از نحو آن هست. F هم چنین اجازه مقداردهی اولیه اختیاری به لیست اشیا را می‌دهد.
مثال اعلان نوع غیررسمی:
! type [,attribute list] :: entity declaration list real :: x, y ! declaring variables of type real x,y without an attribute list integer (kind = long), dimension (100) :: x ! declaring variable of type big integer array with the identifier x با وجود اینکه F یک زبان ماژول گرا است و کلاس‌ها را حمایت نمی‌کند، برنامه نویسان می‌توانند نوع مورد نظر خود را تعریف کنند(تعریف توسط کاربر). انواع تعریف شده توسط کاربر مانند ساختارها در C و C++ است که یک نوع به این صورت است که انواع مختلفی از متغیرها در تنها یک ساختار وجود دارند.
به عنوان مثال:
type, public :: City end type City
تمام موارد در یک لیست، خصوصیات مشابهی در یک بیانیه اعلان نوع داده شده دارند. به علاوه اعلان‌ها به جای خصوصیت محور بودن موجودیت محور هستند.