• نسخه زبان برنامه نویسی فرترن. اولین زبان های برنامه نویسی سطح بالا

    • ترجمه
    من نمی دانم زبان برنامه نویسی در سال 2000 چگونه خواهد بود، اما می دانم که نام آن FORTRAN خواهد بود.
    - چارلز آنتونی ریچارد هور، ج. 1982

    در صنعت، Fortran امروزه به ندرت استفاده می شود - در یکی از لیست های زبان های محبوب، در جایگاه 28 قرار داشت. اما فرترن هنوز زبان اصلی برای شبیه‌سازی‌های مقیاس بزرگ سیستم‌های فیزیکی است - یعنی برای چیزهایی مانند مدل‌سازی اخترفیزیکی ستارگان و کهکشان‌ها (مانند فلش)، دینامیک مولکولی در مقیاس بزرگ، کدهای شمارش ساختارهای الکترونیکی (SIESTA)، مدل‌های آب و هوا، و غیره در زمینه محاسبات با کارایی بالا، که شبیه‌سازی عددی در مقیاس بزرگ زیرمجموعه آن است، امروزه تنها از دو زبان C/C++ و «فرترن مدرن» (Fortran 90/95/03/08) استفاده می‌شود. کتابخانه های محبوب Open MPI برای موازی سازی کد برای این دو زبان ایجاد شده است. به طور کلی، اگر به کد سریعی نیاز دارید که روی چندین پردازنده اجرا شود، تنها دو گزینه دارید. در فرترن مدرن، قابلیتی به عنوان "همراهی" وجود دارد که به شما امکان می دهد مستقیماً در زبان با برنامه نویسی موازی کار کنید. Coarrays در افزونه Fortran 95 ظاهر شد و بعداً در Fortran 2008 گنجانده شد.

    استفاده فعال فیزیکدانان فرترناغلب دانشمندان کامپیوتر و سایر افرادی را که با این رشته مرتبط نیستند، که فکر می کنند فرترن یک نابهنگاری تاریخی است، گیج می کند.

    من می خواهم توضیح دهم که چرا فرترن هنوز مفید است. من دانشجویان فیزیک را تشویق به یادگیری فرترن نمی‌کنم - از آنجایی که اکثر آنها در حال انجام تحقیقات هستند، بهتر است C/C++ را یاد بگیرند (یا به Matlab/Octave/Python پایبند باشند). من می خواهم توضیح دهم که چرا فرترن هنوز در حال استفاده است و ثابت کنم که این فقط به این دلیل نیست که فیزیکدانان "قدیمی" هستند (اگرچه گاهی اوقات آنها قدیمی هستند - سال گذشته یک دانشجوی فیزیک را دیدم که با کد فرترن 77 کار می کرد و نه او و نه او رئیس در مورد Fortran 90 شنیده بود). دانشمندان کامپیوتر باید تسلط فرترن بر محاسبات عددی را یک چالش ببینند.

    قبل از اینکه به موضوع بپردازم، می‌خواهم درباره تاریخچه بحث کنم، زیرا وقتی مردم کلمه «فرترن» را می‌شنوند، بلافاصله به کارت‌های پانچ شده و کدهایی با خطوط شماره‌دار فکر می‌کنند. اولین مشخصات فرترن در سال 1954 نوشته شد. فرترن اولیه (سپس املا حروف بزرگ, FORTRAN) طبق استانداردهای امروزی، یک زبان جهنمی بود، اما گامی باورنکردنی به جلو نسبت به برنامه نویسی به زبان اسمبلی قبلی بود. همانطور که پروفسور میریام فورمن از دانشگاه استونی بروک با خوشحالی به یاد می آورد، فرترن اغلب با کارت های پانچ برنامه ریزی می شد. فرترن نسخه های زیادی داشته است که معروف ترین آنها استانداردهای 66، 77، 90، 95، 03 و 08 است.

    اغلب گفته می شود که فورترن به دلیل سرعت آن هنوز هم استفاده می شود. اما آیا سریعترین است؟ Benchmarksgame.alioth.debian.org مقایسه C و Fortran را در چندین معیار در بسیاری از زبان ها دارد. در بیشتر موارد، Fortran و C/C++ سریعترین هستند. پایتون، مورد علاقه برنامه نویسان، اغلب از نظر سرعت 100 برابر عقب است، اما این برای دوره کدهای تفسیر شده برابر است. پایتون برای محاسبات عددی پیچیده مناسب نیست، اما برای محاسبات دیگر مناسب است. جالب اینجاست که C/C++ در همه آزمایش‌ها به جز دو تست بهتر از Fortran عمل می‌کند، اگرچه در کل از نظر نتایج تفاوت کمی دارند. تست‌هایی که فرترن برنده می‌شود «فیزیکی‌ترین» هستند - این شبیه‌سازی سیستمی از n جسم و محاسبه طیف است. نتایج به تعداد هسته های پردازنده بستگی دارد، به عنوان مثال، Fortran کمی از C/C++ در چهار هسته عقب است. تست‌هایی که در آن‌ها Fortran به مراتب از C/C++ عقب‌تر است، بیشتر اوقات خواندن و نوشتن داده‌ها هستند، و Fortran از این نظر کند شناخته شده است.

    بنابراین، C/C++ به سرعت Fortran است و گاهی اوقات کمی سریعتر است. ما به این موضوع علاقه مندیم که "چرا اساتید فیزیک مدام به دانشجویان خود می گویند که به جای C/C++ از Fortran استفاده کنند؟"

    فرترن دارای کدهای قدیمی است

    به لطف تاریخ طولانی فرترن، جای تعجب نیست که کوه هایی از کدهای فیزیک در آن نوشته شده است. فیزیکدانان سعی می کنند زمان برنامه نویسی را به حداقل برسانند، بنابراین اگر کد قبلی را پیدا کنند، از آن استفاده خواهند کرد. حتی اگر کد قدیمی غیرقابل خواندن، مستند ضعیف و کارآمدترین کد نباشد، استفاده از کد قدیمی اثبات شده بیشتر از نوشتن کد جدید رایج است. وظیفه فیزیکدانان نوشتن کد نیست، آنها در تلاش برای درک ماهیت واقعیت هستند. اساتید همیشه کد میراثی را در دست دارند (اغلب خودشان این کد را چندین دهه پیش نوشته اند) و آن را به دانشجویان خود منتقل می کنند. این باعث صرفه جویی در زمان آنها می شود و عدم اطمینان را از روند عیب یابی حذف می کند.

    دانش‌آموزان فیزیک یادگیری Fortran را آسان‌تر از C/C++ می‌دانند

    من فکر می کنم یادگیری Fortran راحت تر از C/C++ است. Fortran 90 و C بسیار شبیه به هم هستند، اما Fortran نوشتن آسان تر است. C یک زبان نسبتا ابتدایی است، بنابراین فیزیکدانانی که C/C++ را انتخاب می کنند، برنامه نویسی شی گرا انجام می دهند. OOP می تواند مفید باشد، به خصوص در پروژه های نرم افزاری بزرگ، اما یادگیری آن زمان بسیار بیشتری می برد. شما باید انتزاعی هایی مانند کلاس ها و ارث را مطالعه کنید. پارادایم OOP بسیار متفاوت از رویه ای است که در Fortran استفاده می شود. Fortran بر اساس یک الگوی رویه ای ساده است که به آنچه در زیر کاپوت کامپیوتر اتفاق می افتد نزدیک تر است. وقتی کد را برای سرعت بهینه‌سازی/بردار می‌کنید، کار با پارادایم رویه‌ای آسان‌تر است. فیزیکدانان به طور کلی درک می کنند که کامپیوترها چگونه کار می کنند و بر اساس آن فکر می کنند فرآیندهای فیزیکیبه عنوان مثال، انتقال داده ها از دیسک به RAM و از RAM به حافظه نهان پردازنده. آنها با ریاضیدانانی که ترجیح می دهند بر اساس توابع انتزاعی و منطق فکر کنند متفاوت هستند. همچنین این تفکر با شی گرایی متفاوت است. بهینه سازی کد OOP از دیدگاه من دشوارتر از رویه ای است. اشیاء در مقایسه با ساختارهای داده مورد علاقه فیزیکدانان: آرایه ها، ساختارهای بسیار سختی هستند.

    سهولت اول: کار فرترن با آرایه ها

    آرایه‌ها یا به قول فیزیکدانان ماتریس‌ها در قلب همه محاسبات فیزیکی قرار دارند. در Fortran 90+، می‌توانید ویژگی‌های زیادی را برای کار با آنها پیدا کنید، مانند APL و Matlab/Octave. آرایه ها را می توان کپی کرد، با یک اسکالر ضرب کرد، و به روشی بسیار شهودی در بین خود ضرب کرد:

    A = B A = 3.24 * B C = A * B B = exp(A) norm = sqrt(جمع (A**2))
    در اینجا، A، B، C آرایه هایی با ابعادی هستند (مثلاً 10x10x10). اگر اندازه A و B یکسان باشد، C = A*B، ضرب ماتریس بر حسب عنصر را به ما می دهد. برای ضرب ماتریس، از C = matmul(A,B) استفاده کنید. تقریباً تمام توابع داخلی فرترن (Sin()، Exp()، Abs()، Floor() و غیره) آرایه هایی را به عنوان آرگومان می گیرند که در نتیجه کد ساده و تمیزی ایجاد می شود. به سادگی هیچ کد مشابهی در C/C++ وجود ندارد. در یک پیاده سازی پایه C/C++، کپی کردن یک آرایه به یک اجرا نیاز دارد برای حلقه هاروی همه عناصر یا فراخوانی یک تابع کتابخانه. اگر یک آرایه را به تابع کتابخانه اشتباه در C تغذیه کنید، خطایی رخ می دهد. نیاز به استفاده از کتابخانه ها به جای داخلی به این معنی است که کد حاصل تمیز و قابل حمل نخواهد بود یا یادگیری آن آسان نخواهد بود.

    در فرترن، دسترسی به عناصر آرایه از طریق یک نحو ساده A کار می کند، در حالی که در C/C++ باید A[x][y][z] بنویسید. عناصر آرایه از 1 شروع می شوند که با تصورات فیزیکدانان در مورد ماتریس ها مطابقت دارد و در آرایه های C/C++ شماره گذاری از صفر شروع می شود. در اینجا چند توابع دیگر برای کار با آرایه ها در فرترن آورده شده است.

    A = (/ i، i = 1100 /) B = A(1:100:10) C(10:) = B
    ابتدا، بردار A از طریق یک حلقه do ضمنی، که به عنوان سازنده آرایه نیز شناخته می شود، ایجاد می شود. سپس یک بردار B ایجاد می شود که از هر دهمین عنصر A با گام 10 تشکیل شده است. و در نهایت آرایه B از عنصر دهم در آرایه C کپی می شود. فرترن از اعلان های آرایه با شاخص های صفر یا منفی پشتیبانی می کند:

    دقت دوگانه، ابعاد (-1:10) :: myArray
    یک شاخص منفی در ابتدا احمقانه به نظر می رسد، اما من در مورد مفید بودن آنها شنیده ام - برای مثال، تصور کنید که این یک منطقه اضافی برای ارسال هر توضیحی است. فرترن از شاخص های برداری نیز پشتیبانی می کند. به عنوان مثال، می توانید عناصر 1،5 و 7 را از یک آرایه N x 1 A به یک آرایه 3 x 1 B منتقل کنید:

    زیرنویس ها = (/ 1، 5، 7 /) B = A (مشترک ها)
    فرترن از ماسک های آرایه در تمام عملکردهای داخلی پشتیبانی می کند. برای مثال، اگر لازم باشد لگاریتم تمام عناصر ماتریس بزرگتر از صفر را محاسبه کنیم، از موارد زیر استفاده می کنیم:

    Log_of_A = log (A, mask= A .gt. 0)
    یا می توانیم تمام عناصر منفی آرایه را در یک خط صفر کنیم:

    Where(my_array .lt. 0.0) my_array = 0.0
    در فرترن، تخصیص و تخصیص پویا آرایه ها آسان است. به عنوان مثال، برای تخصیص یک آرایه دو بعدی:

    Real, dimension(:,:), allocatable:: name_of_array allocate(name_of_array(xdim, ydim))
    در C/C++، این به ورودی زیر نیاز دارد:

    int **آرایه; آرایه = malloc(nrows * sizeof(double *)); برای (i = 0; i< nrows; i++){ array[i] = malloc(ncolumns * sizeof(double)); }
    برای آزاد کردن یک آرایه در فرترن

    Deallocate(نام_آرایه)
    در C/C++ برای این

    برای (i = 0; i< nrows; i++){ free(array[i]); } free(array);

    سهولت دو: نیازی به نگرانی در مورد اشاره گرها و تخصیص حافظه نیست

    در زبان‌هایی مانند C/C++، همه متغیرها به جز آرایه‌هایی که با مرجع ارسال می‌شوند، با مقدار ارسال می‌شوند. اما در بسیاری از موارد، ارسال یک آرایه بر اساس مقدار منطقی تر است. به عنوان مثال، اجازه دهید داده ها از موقعیت 100 مولکول در دوره های زمانی مختلف تشکیل شده باشد. ما باید حرکت یک مولکول را تجزیه و تحلیل کنیم. برش آرایه ای (زیرآرایه) مربوط به مختصات اتم های این مولکول را می گیریم و به تابع منتقل می کنیم. در آن به تحلیل پیچیده زیرآرایه منتقل شده می پردازیم. اگر آن را با مرجع ارسال می کردیم، داده های ارسال شده پشت سر هم در حافظه قرار نمی گرفتند. با توجه به ویژگی های دسترسی به حافظه، کار با چنین آرایه ای کند خواهد بود. اگر آن را با مقدار عبور دهیم، یک آرایه جدید در حافظه ایجاد خواهیم کرد که در یک ردیف مرتب شده اند. برای خوشحالی فیزیکدانان، کامپایلر تمام کارهای کثیف بهینه سازی حافظه را انجام می دهد.

    در فرترن، متغیرها معمولاً با مرجع ارسال می شوند، نه با مقدار. در زیر هود، کامپایلر Fortran به طور خودکار انتقال آنها را برای کارایی بهینه می کند. از دید یک استاد بهینه سازی حافظه به یک کامپایلر بیشتر از یک دانشجو باید اعتماد کرد! در نتیجه، فیزیکدانان به ندرت از نشانگرها استفاده می کنند، اگرچه Fortran-90+ این کار را می کند.

    چند نمونه دیگر از تفاوت‌های بین Fortran و C

    Fortran چندین گزینه برای کنترل کامپایلر برای باگ ها و بهینه سازی ها دارد. خطاهای کد را می توان در زمان کامپایل یافت نه در زمان اجرا. به عنوان مثال، هر متغیری را می توان به عنوان یک پارامتر، یعنی یک ثابت اعلام کرد.

    دقت دو برابر، پارامتر:: hbar = 6.63e-34
    اگر پارامتر در کد تغییر کند، کامپایلر یک خطا برمی گرداند. در C به آن const می گویند

    دو برابر hbar = 6.63e-34
    مشکل این است که const real با واقعی ساده متفاوت است. اگر تابعی که real می گیرد، const real شود، یک خطا برمی گرداند. به راحتی می توان دید که چگونه این امر می تواند منجر به مشکلات قابلیت همکاری در کد شود.

    فرترن همچنین دارای یک مشخصات intent است که به کامپایلر می گوید که آیا آرگومان ارسال شده به یک تابع یک ورودی، یک خروجی یا هر دو ورودی و خروجی است. این به کامپایلر کمک می کند تا کد را بهینه کند و خوانایی و قابلیت اطمینان آن را افزایش می دهد.

    ویژگی های دیگری در فرترن وجود دارد که با فرکانس های مختلف استفاده می شود. به عنوان مثال، Fortran 95 این قابلیت را دارد که توابع را با اصلاح کننده خالص اعلام کند. چنین تابعی عوارض جانبی ندارد - فقط آرگومان های خود را تغییر می دهد و متغیرهای جهانی را تغییر نمی دهد. یک مورد خاص از چنین تابعی تابع عنصری است که اسکالرها را می پذیرد و برمی گرداند. برای پردازش عناصر یک آرایه استفاده می شود. دانستن اینکه یک تابع خالص یا عنصری است به کامپایلر اجازه می دهد تا بهینه سازی های اضافی را انجام دهد، به خصوص هنگام موازی سازی کد.

    در آینده چه انتظاری باید داشت؟

    در محاسبات علمی، فرترن زبان اصلی باقی می ماند و قرار نیست در آینده نزدیک ناپدید شود. در یک نظرسنجی از شرکت کنندگان در کنوانسیون ابرکامپیوتر در سال 2014 که از این زبان استفاده می کردند، 100٪ گفتند که قرار است در 5 سال آینده از آن استفاده کنند. این نظرسنجی همچنین نشان می‌دهد که 90 درصد از ترکیبی از Fortran و C استفاده می‌کنند. با پیش‌بینی افزایش ترکیب این زبان‌ها، سازندگان مشخصات Fortran 2015 ویژگی‌های بیشتری را برای قابلیت همکاری کدها در نظر گرفته‌اند. کد فرترن به طور فزاینده ای از کد پایتون فراخوانی می شود. دانشمندان کامپیوتری که استفاده از فرترن را مورد انتقاد قرار می‌دهند متوجه نمی‌شوند که این زبان به‌طور منحصربه‌فردی برای چیزی که نامش بر آن گذاشته شده است مناسب است - ترجمه فرمول، ترجمه فرمول، یعنی تبدیل فرمول‌های فیزیکی به کد. بسیاری از آنها متوجه نیستند که زبان در حال تکامل است و دائماً ویژگی های جدید و بیشتری را شامل می شود.

    قدیمی نامیدن Fortran 90+ مدرن مانند فراخوانی C ++ قدیمی است زیرا C در سال 1973 توسعه یافته است. از طرف دیگر، حتی جدیدترین استاندارد Fortran 2008 با Fortran 77 و بیشتر Fortran 66 سازگار است. بنابراین، توسعه یک زبان بسیار دشوار است. با مشکلات خاص اخیراً، محققان MIT تصمیم گرفتند با ایجاد زبانی برای HPC به نام Julia که اولین بار در سال 2012 منتشر شد، بر این مشکلات غلبه کنند. باید دید که آیا جولیا جای فرترن را می گیرد یا خیر. در هر صورت، من گمان می کنم که این کار خیلی طول بکشد.

    برچسب ها:

    • فوترن
    • برنامه ریزی علمی
    افزودن برچسب

    از من خواسته شد تا اولین پست خود را اینجا بنویسم، جایی که vt4a2h استفاده از C ++ را برای یادگیری پیشنهاد می کند. بله، روشن است این موضوعبسیاری از نسخه ها شکسته شد.

    من، احتمالاً مانند اکثر دانش آموزان در وسعت سرزمین مادری ما، شروع به درک اصول اولیه از طریق صفحه آبی، اما نه مرگ، بلکه Turbo Pascal 7.0. البته Basic نیز وجود داشت که من برای اولین بار با آن برخورد کردم سن پیش دبستانیدر رایانه شوروی "الکترونیک". سپس به نظر یک ویرایشگر متن عجیب به نظر می رسید، زیرا رایانه، از چشم یک کودک، برای بازی ساخته شده است. با این حال ، قبلاً در مؤسسه ، با زبان فرترن آشنا شدم ، با یادگیری آن ، هنوز در تعجبم که چرا از آن برای تدریس استفاده نمی شود.

    بله، بسیاری خواهند گفت که زبان مرده است، مطابقت ندارد واقعیت های مدرن، و کتاب های درسی با نام، مانند تصویر، فقط باعث لبخند می شوند. من سعی خواهم کرد توضیح دهم که چرا این زبان بسیار قابل توجه است و چرا آن را به عنوان زبان اول توصیه می کنم. اگر علاقه مند هستید، under cat خوش آمدید.

    من معتقدم که اساس اصول برنامه نویسی را باید در سال های تحصیلی، حداقل در دبیرستان، گذاشت. حتی اگر در زندگی از رایانه فقط برای تایپ در Word "e" یا برای برقراری ارتباط استفاده شود در شبکه های اجتماعی، حداقل دانش از چیستی یک الگوریتم و نحوه ساختار دهی دنباله ای از اقدامات به منظور بدست آوردن نتیجه مطلوب، حداقل آنها در بزرگسالی به پسر جوان آسیب نمی رسانند، اما به احتمال زیاد به شکل گیری یک طرز فکر خاص کمک می کنند.

    برای اینکه درس های علوم کامپیوتر یک شادی باشد و نه یک کابوس، دانش آموز باید بفهمد که چه کاری انجام می دهد، چگونه این کار را انجام می دهد و چرا این کار به این صورت انجام می شود نه غیر از این. از این گذشته ، در واقع ، شما باید اطلاعات مربوط به چرخه و عملگر شرطی را به درستی منتقل کنید تا شخص بتواند به تنهایی برنامه بنویسد. در عین حال، هر چه نحو زبان ساده‌تر باشد، درک منطق نوشتن کد آسان‌تر است. اگر انسان ساختن را یاد بگیرد الگوریتم صحیح، سپس برای برنامه نویسی در زبان های دیگر فقط باید نحو این زبان را بداند و اساس آن از قبل گذاشته خواهد شد.

    چرا فرترن اینقدر قابل توجه است؟

    اجازه دهید به تاریخچه ایجاد این زبان بپردازیم. در دهه 50 قرن گذشته ظاهر شد، زمانی که کامپیوترها هنوز بزرگ بودند، برنامه نویسان کمی وجود داشت و علوم کامپیوتر در مدرسه تدریس نمی شد و عموماً به عنوان شبه علم در نظر گرفته می شد. به زبان ساده‌ای نیاز بود که به مهندسان و دانشمندان کمک کند تا فرمول‌های نوشته شده روی کاغذ را حتی از طریق کارت‌های پانچ شده به رایانه‌ها برسانند.

    از این رو نام خود زبان: برایملا تراناسلاتور یا «مترجم فرمول». آن ها در ابتدا، زبان بر روی افراد بدون آموزش خاص متمرکز بود، به این معنی که باید تا حد امکان ساده باشد.

    خب، سازندگان در سادگی موفق شدند. اولین برنامه کلاسیک به این صورت است:

    برنامه hw write(*,*) "سلام، دنیا!" پایان
    نحو حتی کمی ساده تر از پاسکال است، نیازی به قرار دادن در انتهای خط نیست. ; " یا " : "در مقابل علامت مساوی. علاوه بر این، افرادی با حداقل دانش به انگلیسی، معنی را درک کنید ساده ترین برنامهسخت نخواهد بود

    در اینجا می خواهم توجه داشته باشم که فرترن چندین تجدید نظر در استانداردها دارد که اصلی ترین آنها 77 و 90 هستند (با حفظ تداوم). 77 فرترن واقعا قدیمی است، برای طول خط محدودیتی وجود دارد، و باید در ابتدای خط فرورفتگی کرد، که می تواند برای یک نامزد برنامه نویس جوان شوک فرهنگی ایجاد کند. جای تعجب نیست که برنامه های نوشته شده در فرترن 77 از زبان دوست من نام بزرگ "کد برژنف" را دریافت کردند. بنابراین تمام متن من به استاندارد زبان 90 و جدیدتر اشاره دارد.

    به عنوان مثال، در اینجا یک کد برای محاسبه مجموع اعداد صحیح غیر منفی از 1 تا n، وارد شده از صفحه کلید، توسط دانشجوی فارغ التحصیل من در هنگام آموزش برنامه نویسی از ابتدا نوشته شده است. بر روی آن بود که آموزش Fortran را به عنوان زبان اول تجربه کردم. امیدوارم که به نفع او بوده باشد و آزمایش من موفقیت آمیز بود. حداقل او اصول اولیه را در یکی دو کلاس یاد گرفت که اولین آن یک سخنرانی در مورد زبان بود.

    برنامه chisla ضمنی هیچ ! متغیرهای عدد صحیح n,i,s ! بدنه chisla s=0 بنویسید (*,*) "n را وارد کنید" بخوانید (*,*) n اگر (n.le.0) سپس بنویسید (*,*) "منفی یا صفر" وگرنه i=1,n s انجام دهید =s+i پایان بنویسید (*,*) "Sum=", s end if end
    به راحتی می توان فهمید که روشی که ما فکر می کنیم، نحوه نوشتن کد است. اصولاً هیچ مشکلی نمی تواند برای دانش آموز پیش بیاید. مطمئناً یک خواننده با دقت می‌پرسد که هیچکدام ضمنی و دو ستاره درون پرانتز که با کاما از هم جدا شده‌اند، برای چیست. هیچکدام ضمنی به ما می گوید که ما به صراحت نوع متغیرها را مشخص می کنیم، در حالی که بدون این ورودی، کامپایلر خود نوع را حدس می زند. ستاره اول به این معنی است که ورودی و خروجی روی صفحه هستند و دومی نشان می دهد که فرمت ورودی / خروجی به طور خودکار تعیین می شود. در واقع، برنامه های فرترن پیچیده تر از کد نوشته شده در بالا به نظر نمی رسند.

    در مورد محیط نرم افزار چطور؟

    در مدارس، و در واقع در هر مؤسسه ایالتی، این سؤال اغلب در مورد نرم افزار، به ویژه در مورد مجوز آن مطرح می شود. زیرا برای این نیازها پول اختصاص داده نمی شود. حداقل در زمان من این مشکل وجود داشت، شاید الان شرایط به سمت بهتر شدن تغییر کرده است.

    برای نوشتن برنامه در فرترن، هر ویرایشگر متن. اگر می‌خواهید نحو برجسته شود، می‌توانید از Notepad++ (فقط از نحو استاندارد ۷۷ پشتیبانی می‌کند) یا SublimeText استفاده کنید. ما برنامه را نوشتیم، با چه چیزی کامپایل خواهیم کرد؟ همه چیز در اینجا ساده است، می توانید از گنو فوتران رایگان استفاده کنید. اگر استفاده غیرتجاری برنامه ریزی شده باشد، می توان از کامپایلر اینتل که به خوبی برای پردازنده هایی با همین نام بهینه شده است و با حداقل IDE مورد نیاز عرضه می شود، حرکت کرد. آن ها آستانه ورود بسیار مطلوب است.

    به گفته بسیاری از کاربران، بهترین محیط توسعه فرترن، Compaq Visual Fortran 6.6 است که آخرین نسخه آن در اوایل دهه 2000 منتشر شد. چرا چنین اتفاقی افتاد که یک محیط بر اساس استودیوی تصویری 6.0 که بدون رقص با تنبور، حداکثر در ویندوز XP 32 بیتی راه اندازی می شود و محدودیتی در حافظه استفاده شده دارد، در بین توسعه دهندگان فرترن محبوبیت زیادی پیدا کرده است. پاسخ در شکل زیر نشان داده شده است.

    این Compaq Array Visualizer است که ابزار بسیار مفیدی برای تجسم آرایه های 1، 2 و 3 بعدی در حین اشکال زدایی یک برنامه به طور مستقیم از دیباگر است. به قول معروف، یک بار امتحانش کردید، همین الان بخورید. واقعیت این است که فرترن اکنون عمدتاً در علم (که بعداً مورد بحث قرار خواهد گرفت) استفاده می شود، به ویژه در حوزه ای که من با آن سروکار دارم، یعنی در فیزیک جو. هنگام اشکال زدایی برنامه ها، آرایه ها حوزه های مختلف هواشناسی مانند دما، فشار، سرعت باد را نشان می دهند. یافتن خطا در فیلدهای گرافیکی بسیار ساده تر از مجموعه ای از اعداد است، به خصوص از آنجایی که معمولاً مشخص است که فیلد چگونه باید باشد، بنابراین خطاهای آشکار فورا قطع می شوند.

    متأسفانه، تمام پیشرفت‌ها در کامپایلر از Compaq به اینتل منتقل شد. اینتل در ابتدا از Array Visualizer پشتیبانی می کرد، با این حال، آن نسخه ها قبلاً انعکاسی کم رنگ از محصول Compaq بودند، کار کردن با آنها مانند قبل راحت نبود، اما حداقل عملکرد حداقل حفظ شد. متأسفانه، اینتل توسعه نسخه های جدید Array Visualizer را متوقف کرده است و به این امر پایان داده است ابزار مفید. به همین دلیل است که انجمن فرترن در اکثر موارد برنامه ها را می نویسد و آنها را تحت Compaq Visual Fortran در ویندوز اشکال زدایی می کند و محاسبات رزمی را روی سرورهای تحت لینوکس با استفاده از کامپایلرهای اینتل راه اندازی می کند. اینتل، لطفاً درخواست های کاربران را بشنوید، یک ابزار تجسم آرایه معمولی را به دیباگر خود برگردانید!

    جایگاه فرترن در دنیای مدرن

    و اکنون به موضوعی می‌رسیم که معمولاً با همکارانم که از Matlab استفاده می‌کنند، بحث‌های داغی ایجاد می‌کند، آنها استدلال می‌کنند که زبان نادری که در این پست توضیح داده شده است برای هیچ چیز مفید نیست. در اینجا من با آنها مخالفم. واقعیت این است که فرترن در طول تاریخ در محاسبات مهندسی یا علمی مورد استفاده قرار گرفته است و به همین دلیل به مرور زمان کتابخانه ها و کدهای آماده بسیاری برای برنامه های حل یک مشکل خاص به دست آورده است.

    کد به معنای واقعی کلمه از نسلی به نسل دیگر منتقل می شود و به خوبی مستند شده است. شما می توانید بسیاری از راه حل های آماده برای معادلات فیزیک ریاضی پیدا کنید، جبر خطی(در اینجا باید به اجرای موفقیت آمیز کار با ماتریس ها اشاره کرد)، انتگرال و معادلات دیفرانسیلو خیلی خیلی بیشتر احتمالاً یافتن مسئله ای از رشته علوم فیزیکی و ریاضی که الگوریتمی در زبان فرترن برای آن پیاده سازی نشود، دشوار است. و اگر بهینه سازی عالی کامپایلرهای اینتل برای پردازنده های اینتل، پشتیبانی از محاسبات موازی در خوشه های با کارایی بالا را در نظر بگیریم، مشخص می شود که چرا این زبان جایگاه اول شایسته ای را در جامعه علمی به خود اختصاص می دهد. من فکر می کنم می توانید یک کامپایلر Fortran را روی هر ابرکامپیوتری نصب شده پیدا کنید.

    اکثر مدل های جدی، حداقل از حوزه فیزیک جو، در فرترن نوشته شده اند. بله، بله، پیش بینی آب و هوا که هر از چند گاهی به آن علاقه مند هستند، طی محاسبات مدل های نوشته شده به این زبان به دست می آید. علاوه بر این، زبان در رکود نیست، بلکه دائماً در حال بهبود است. بنابراین، پس از استانداردهای 77 و 90 که قبلا توضیح داده شده بود، نسخه های جدید 95، 2003، 2008 ظاهر شدند که پشتیبانی از آنها در کامپایلرهای فعلی پیاده سازی شده است. آخرین نسخه های فرترن تا حدودی زبان قدیمی تست شده را تازه کرده است، پشتیبانی از سبک مدرن را اضافه کرده، برنامه نویسی شی گرا را اضافه کرده است که نبود آن تقریباً برگ برنده اصلی مخالفان این زبان بود. علاوه بر این، گروه پورتلند کامپایلر PGI CUDA Fortran را منتشر کرده است که امکان محاسبات بسیار موازی روی کارت‌های ویدئویی را فراهم می‌کند. بنابراین، بیمار بیش از زنده است، به این معنی که برنامه نویسان فرترن هنوز مورد تقاضا هستند.

    به جای حرف آخر

    و اکنون می خواهم به مبحثی که در ابتدا مطرح شد، آموزش برنامه نویسی برگردم و سعی کنم مزایای اصلی فرترن را در انتخاب آن به عنوان زبان اول خلاصه کنم.
    • یادگیری Fortran بسیار آسان است، نحو برای یک فرد ناآماده واضح است. با یادگیری اصول اولیه، یادگیری مجدد هر زبان دیگری آسان است.
    • مجموعه رایگان ابزارها به شما این امکان را می دهد که سوالات غیر ضروری از صاحبان حق چاپ دریافت نکنید.
    • این زبان برای معلمان آشنا است، زیرا برای مدت طولانی وجود داشته است و معلمان ما عمدتاً نمایندگان نسل قدیمی هستند.
    • این به طور گسترده در سراسر جهان توزیع شده است و گنجینه ای از کتابخانه های مختلف است.
    • استاندارد، کراس پلتفرم و سازگار با نسخه های قبلی.
    • به دلیل تمرکز بر محاسبات علمی و مهندسی برای دانشجویان رشته های فنی و به ویژه فیزیکی و ریاضی مفید است.
    • مرتبط و مورد تقاضا تا به امروز.
    پس چرا فرترن نیست؟

    از من خواسته شد تا اولین پست خود را اینجا بنویسم، جایی که پیشنهاد می کند از C ++ برای یادگیری استفاده کنید. بله، نسخه های زیادی در این موضوع شکسته شده است.

    من، احتمالاً مانند اکثر دانش‌آموزان در وسعت سرزمین مادری ما، شروع به درک اصول اولیه از طریق یک صفحه آبی کردم، اما نه مرگ، بلکه Turbo Pascal 7.0. البته Basic نیز وجود داشت که من برای اولین بار در سنین پیش دبستانی در رایانه شوروی "الکترونیک" با آن روبرو شدم. سپس به نظر یک ویرایشگر متن عجیب به نظر می رسید، زیرا رایانه، از چشم یک کودک، برای بازی ساخته شده است. با این حال ، قبلاً در مؤسسه ، با زبان فرترن آشنا شدم ، با یادگیری آن ، هنوز در تعجبم که چرا از آن برای تدریس استفاده نمی شود.

    بله، بسیاری خواهند گفت که زبان مرده است، با واقعیت های مدرن مطابقت ندارد و کتاب های درسی با نام، مانند تصویر، فقط باعث لبخند می شوند. من سعی خواهم کرد توضیح دهم که چرا این زبان بسیار قابل توجه است و چرا آن را به عنوان زبان اول توصیه می کنم. اگر علاقه مند هستید، under cat خوش آمدید.

    من معتقدم که اساس اصول برنامه نویسی را باید در سال های تحصیلی، حداقل در دبیرستان، گذاشت. حتی اگر در زندگی از رایانه فقط برای تایپ در Word "e" یا برای برقراری ارتباط در شبکه های اجتماعی استفاده شود، حداقل دانش در مورد چیستی یک الگوریتم و نحوه ساختاردهی دنباله ای از اقدامات برای به دست آوردن نتیجه مطلوب حداقل نخواهد بود. به پسر جوان در بزرگسالی آسیب برساند.

    برای اینکه درس های علوم کامپیوتر یک شادی باشد و نه یک کابوس، دانش آموز باید بفهمد که چه کاری انجام می دهد، چگونه این کار را انجام می دهد و چرا این کار به این صورت انجام می شود نه غیر از این. از این گذشته ، در واقع ، شما باید اطلاعات مربوط به چرخه و عملگر شرطی را به درستی منتقل کنید تا شخص بتواند به تنهایی برنامه بنویسد. در عین حال، هر چه نحو زبان ساده‌تر باشد، درک منطق نوشتن کد آسان‌تر است. اگر شخصی یاد بگیرد که الگوریتم درستی بنویسد، برای برنامه نویسی به زبان های دیگر، فقط باید نحو این زبان را بداند و اساس آن از قبل گذاشته شده است.

    چرا فرترن اینقدر قابل توجه است؟

    اجازه دهید به تاریخچه ایجاد این زبان بپردازیم. در دهه 50 قرن گذشته ظاهر شد، زمانی که کامپیوترها هنوز بزرگ بودند، برنامه نویسان کمی وجود داشت و علوم کامپیوتر در مدرسه تدریس نمی شد و عموماً به عنوان شبه علم در نظر گرفته می شد. به زبان ساده‌ای نیاز بود که به مهندسان و دانشمندان کمک کند تا فرمول‌های نوشته شده روی کاغذ را حتی از طریق کارت‌های پانچ شده به رایانه‌ها برسانند.

    از این رو نام خود زبان: برایملا تراناسلاتور یا «مترجم فرمول». آن ها در ابتدا، زبان بر روی افراد بدون آموزش خاص متمرکز بود، به این معنی که باید تا حد امکان ساده باشد.

    خب، سازندگان در سادگی موفق شدند. اولین برنامه کلاسیک به این صورت است:

    برنامه hw write(*,*) "سلام، دنیا!" پایان
    نحو حتی کمی ساده تر از پاسکال است، نیازی به قرار دادن در انتهای خط نیست. ; " یا " : "در مقابل علامت مساوی. علاوه بر این، افرادی که حداقل دانش زبان انگلیسی را دارند درک معنای ساده ترین برنامه دشوار نخواهد بود.

    در اینجا می خواهم توجه داشته باشم که فرترن چندین تجدید نظر در استانداردها دارد که اصلی ترین آنها 77 و 90 هستند (با حفظ تداوم). 77 فرترن واقعا قدیمی است، برای طول خط محدودیتی وجود دارد، و باید در ابتدای خط فرورفتگی کرد، که می تواند برای یک نامزد برنامه نویس جوان شوک فرهنگی ایجاد کند. جای تعجب نیست که برنامه های نوشته شده در فرترن 77 از زبان دوست من نام بزرگ "کد برژنف" را دریافت کردند. بنابراین تمام متن من به استاندارد زبان 90 و جدیدتر اشاره دارد.

    به عنوان مثال، در اینجا یک کد برای محاسبه مجموع اعداد صحیح غیر منفی از 1 تا n، وارد شده از صفحه کلید، توسط دانشجوی فارغ التحصیل من در هنگام آموزش برنامه نویسی از ابتدا نوشته شده است. بر روی آن بود که آموزش Fortran را به عنوان زبان اول تجربه کردم. امیدوارم که به نفع او بوده باشد و آزمایش من موفقیت آمیز بود. حداقل او اصول اولیه را در یکی دو کلاس یاد گرفت که اولین آن یک سخنرانی در مورد زبان بود.

    برنامه chisla ضمنی هیچ ! متغیرهای عدد صحیح n,i,s ! بدنه chisla s=0 بنویسید (*,*) "n را وارد کنید" بخوانید (*,*) n اگر (n.le.0) سپس بنویسید (*,*) "منفی یا صفر" وگرنه i=1,n s انجام دهید =s+i پایان بنویسید (*,*) "Sum=", s end if end
    به راحتی می توان فهمید که روشی که ما فکر می کنیم، نحوه نوشتن کد است. اصولاً هیچ مشکلی نمی تواند برای دانش آموز پیش بیاید. مطمئناً یک خواننده با دقت می‌پرسد که هیچکدام ضمنی و دو ستاره درون پرانتز که با کاما از هم جدا شده‌اند، برای چیست. هیچکدام ضمنی به ما می گوید که ما به صراحت نوع متغیرها را مشخص می کنیم، در حالی که بدون این ورودی، کامپایلر خود نوع را حدس می زند. ستاره اول به این معنی است که ورودی و خروجی روی صفحه هستند و دومی نشان می دهد که فرمت ورودی / خروجی به طور خودکار تعیین می شود. در واقع، برنامه های فرترن پیچیده تر از کد نوشته شده در بالا به نظر نمی رسند.

    در مورد محیط نرم افزار چطور؟

    در مدارس، و در واقع در هر مؤسسه ایالتی، این سؤال اغلب در مورد نرم افزار، به ویژه در مورد مجوز آن مطرح می شود. زیرا برای این نیازها پول اختصاص داده نمی شود. حداقل در زمان من این مشکل وجود داشت، شاید الان شرایط به سمت بهتر شدن تغییر کرده است.

    هر ویرایشگر متنی برای نوشتن برنامه در فرترن مناسب است. اگر می‌خواهید نحو برجسته شود، می‌توانید از Notepad++ (فقط از نحو استاندارد ۷۷ پشتیبانی می‌کند) یا SublimeText استفاده کنید. ما برنامه را نوشتیم، با چه چیزی کامپایل خواهیم کرد؟ همه چیز در اینجا ساده است، می توانید از گنو فوتران رایگان استفاده کنید. اگر استفاده غیرتجاری برنامه ریزی شده باشد، می توان از کامپایلر اینتل که به خوبی برای پردازنده هایی با همین نام بهینه شده است و با حداقل IDE مورد نیاز عرضه می شود، حرکت کرد. آن ها آستانه ورود بسیار مطلوب است.

    به گفته بسیاری از کاربران، بهترین محیط توسعه فرترن، Compaq Visual Fortran 6.6 است که آخرین نسخه آن در اوایل دهه 2000 منتشر شد. چرا محیطی مبتنی بر ویژوال استودیو 6.0 که بدون رقص با تنبور، حداکثر روی ویندوز XP 32 بیتی راه اندازی می شود و محدودیتی در حافظه استفاده شده دارد، در بین توسعه دهندگان فرترن محبوبیت زیادی پیدا کرده است. پاسخ در شکل زیر نشان داده شده است.

    این Compaq Array Visualizer است که ابزار بسیار مفیدی برای تجسم آرایه های 1، 2 و 3 بعدی در حین اشکال زدایی یک برنامه به طور مستقیم از دیباگر است. به قول معروف، یک بار امتحانش کردید، همین الان بخورید. واقعیت این است که فرترن اکنون عمدتاً در علم (که بعداً مورد بحث قرار خواهد گرفت) استفاده می شود، به ویژه در حوزه ای که من با آن سروکار دارم، یعنی در فیزیک جو. هنگام اشکال زدایی برنامه ها، آرایه ها حوزه های مختلف هواشناسی مانند دما، فشار، سرعت باد را نشان می دهند. یافتن خطا در فیلدهای گرافیکی بسیار ساده تر از مجموعه ای از اعداد است، به خصوص از آنجایی که معمولاً مشخص است که فیلد چگونه باید باشد، بنابراین خطاهای آشکار فورا قطع می شوند.

    متأسفانه، تمام پیشرفت‌ها در کامپایلر از Compaq به اینتل منتقل شد. اینتل در ابتدا از Array Visualizer پشتیبانی می کرد، با این حال، آن نسخه ها قبلاً انعکاسی کم رنگ از محصول Compaq بودند، کار کردن با آنها مانند قبل راحت نبود، اما حداقل عملکرد حداقل حفظ شد. متأسفانه، اینتل توسعه نسخه‌های جدید Array Visualizer را متوقف کرد و به این راحت‌ترین ابزار پایان داد. به همین دلیل است که انجمن فرترن در بیشتر موارد برنامه‌ها را می‌نویسد و آنها را تحت Compaq Visual Fortran در ویندوز اشکال زدایی می‌کند و محاسبات رزمی را روی سرورهای تحت لینوکس راه‌اندازی می‌کند. با استفاده از کامپایلرهای اینتل اینتل، لطفاً درخواست های کاربران را بشنوید، یک ابزار تجسم آرایه معمولی را به دیباگر خود برگردانید!

    جایگاه فرترن در دنیای مدرن

    و اکنون به موضوعی می‌رسیم که معمولاً با همکارانم که از Matlab استفاده می‌کنند، بحث‌های داغی ایجاد می‌کند، آنها استدلال می‌کنند که زبان نادری که در این پست توضیح داده شده است برای هیچ چیز مفید نیست. در اینجا من با آنها مخالفم. واقعیت این است که فرترن در طول تاریخ در محاسبات مهندسی یا علمی مورد استفاده قرار گرفته است و به همین دلیل به مرور زمان کتابخانه ها و کدهای آماده بسیاری برای برنامه های حل یک مشکل خاص به دست آورده است.

    کد به معنای واقعی کلمه از نسلی به نسل دیگر منتقل می شود و به خوبی مستند شده است. شما می توانید بسیاری از راه حل های آماده برای معادلات فیزیک ریاضی، جبر خطی (در اینجا باید به اجرای موفقیت آمیز کار با ماتریس ها اشاره کرد)، معادلات انتگرال و دیفرانسیل، و خیلی، خیلی بیشتر پیدا کنید. احتمالاً یافتن مسئله ای از رشته علوم فیزیکی و ریاضی که الگوریتمی در زبان فرترن برای آن پیاده سازی نشود، دشوار است. و اگر بهینه سازی عالی کامپایلرهای اینتل برای پردازنده های اینتل، پشتیبانی از محاسبات موازی در خوشه های با کارایی بالا را در نظر بگیریم، مشخص می شود که چرا این زبان جایگاه اول شایسته ای را در جامعه علمی به خود اختصاص می دهد. من فکر می کنم می توانید یک کامپایلر Fortran را روی هر ابرکامپیوتری نصب شده پیدا کنید.

    اکثر مدل های جدی، حداقل از حوزه فیزیک جو، در فرترن نوشته شده اند. بله، بله، پیش بینی آب و هوا که هر از چند گاهی به آن علاقه مند هستند، طی محاسبات مدل های نوشته شده به این زبان به دست می آید. علاوه بر این، زبان در رکود نیست، بلکه دائماً در حال بهبود است. بنابراین، پس از استانداردهای 77 و 90 که قبلا توضیح داده شده بود، نسخه های جدید 95، 2003، 2008 ظاهر شدند که پشتیبانی از آنها در کامپایلرهای فعلی پیاده سازی شده است. آخرین نسخه های فرترن تا حدودی زبان قدیمی تست شده را تازه کرده است، پشتیبانی از سبک مدرن را اضافه کرده، برنامه نویسی شی گرا را اضافه کرده است که نبود آن تقریباً برگ برنده اصلی مخالفان این زبان بود. علاوه بر این، گروه پورتلند کامپایلر PGI CUDA Fortran را منتشر کرده است که امکان محاسبات بسیار موازی روی کارت‌های ویدئویی را فراهم می‌کند. بنابراین، بیمار بیش از زنده است، به این معنی که برنامه نویسان فرترن هنوز مورد تقاضا هستند.

    به جای حرف آخر

    و اکنون می خواهم به مبحثی که در ابتدا مطرح شد، آموزش برنامه نویسی برگردم و سعی کنم مزایای اصلی فرترن را در انتخاب آن به عنوان زبان اول خلاصه کنم.
    • یادگیری Fortran بسیار آسان است، نحو برای یک فرد ناآماده واضح است. با یادگیری اصول اولیه، یادگیری مجدد هر زبان دیگری آسان است.
    • مجموعه رایگان ابزارها به شما این امکان را می دهد که سوالات غیر ضروری از صاحبان حق چاپ دریافت نکنید.
    • این زبان برای معلمان آشنا است، زیرا برای مدت طولانی وجود داشته است و معلمان ما عمدتاً نمایندگان نسل قدیمی هستند.
    • این به طور گسترده در سراسر جهان توزیع شده است و گنجینه ای از کتابخانه های مختلف است.
    • استاندارد، کراس پلتفرم و سازگار با نسخه های قبلی.
    • به دلیل تمرکز بر محاسبات علمی و مهندسی برای دانشجویان رشته های فنی و به ویژه فیزیکی و ریاضی مفید است.
    • مرتبط و مورد تقاضا تا به امروز.
    پس چرا فرترن نیست؟

    مثلاً در بین دانشمندان چنین ضرب المثلی وجود دارد که هر مسئله ریاضیدر حال حاضر یک راه حل در فرترن دارد، و در واقع، می توان در میان هزاران بسته فرترن، هم بسته ای برای ضرب ماتریس، و هم بسته ای برای حل معادلات انتگرال پیچیده، و بسیاری دیگر را پیدا کرد. تعدادی از این بسته ها در طول دهه ها ایجاد شده اند و هنوز در جامعه علمی تا به امروز محبوب هستند، به عنوان مثال - IMSL ( انگلیسی).

    اکثر این کتابخانه ها در واقع دارایی بشر هستند: آنها به صورت کد منبع در دسترس هستند، به خوبی مستند شده، اشکال زدایی شده و بسیار مؤثر هستند. بنابراین، تغییر آن پرهزینه است، چه رسد به بازنویسی آنها در سایر زبان های برنامه نویسی، علیرغم این واقعیت که به طور منظم تلاش می شود تا کد فرترن به طور خودکار به زبان های برنامه نویسی مدرن تبدیل شود.

    فرترن مدرن (Fortran 95 و Fortran 2003) ویژگی های لازم برای برنامه نویسی موثربرای معماری های محاسباتی جدید، به شما امکان می دهد از فناوری های برنامه نویسی مدرن، به ویژه OOP استفاده کنید.

    تکامل استانداردهای زبان

    Fortran یک زبان بسیار استاندارد است، به همین دلیل است که به راحتی برای پلتفرم های مختلف قابل حمل است. استانداردهای زبان جدید تا حد زیادی با استانداردهای قدیمی تر تداوم دارند، که امکان استفاده از کدهای برنامه های نوشته شده قبلی و اصلاح آنها را فراهم می کند.

    FORTRAN 66 (1972) بر اساس استاندارد IBM فرترن IV FORTRAN 77 (1980) بسیاری از پیشرفت ها معرفی شدند: فرترن 90 (1991) استاندارد زبان به طور قابل توجهی تجدید نظر شده است. فرترن 95 (1997) تصحیح استاندارد قبلی. عملگر و ساختار FORALL معرفی شده‌اند که به انعطاف‌پذیری بیشتری نسبت به عملگر و ساختار WHERE برای اختصاص آرایه‌ها و جایگزینی حلقه‌های دست و پاگیر اجازه می‌دهد. FORALL به شما این امکان را می دهد که هر انتساب یا عملگر بخش را جایگزین کنید و به ویژه عبارت WHERE دسترسی به مورب یک ماتریس را فراهم می کند. این اپراتوردر محاسبات موازی امیدوارکننده در نظر گرفته می‌شود و اجرای کارآمدتر موازی‌سازی را نسبت به حلقه‌ها تسهیل می‌کند. Fortran 2003 (2004) پیشرفتهای بعدیپشتیبانی OOP در زبان. اثر متقابل سیستم عامل. ویژگی های زیر نیز اضافه شده است: Fortran 2008 (2010) استاندارد پشتیبانی از زبان محاسباتی موازی (Co-Arrays Fortran) را فرض می کند. همچنین برنامه ریزی شده است که حداکثر بعد آرایه ها به 15 افزایش یابد، توابع ریاضی ویژه داخلی و غیره اضافه شود.

    کامپایلرها

    از زمان توسعه اولیه این زبان، کامپایلرهای فرترن توسط IBM ساخته شده اند. IBM در حال حاضر کامپایلر بهینه‌سازی VS Fortran را برای رایانه‌های مرکزی IBM System z، تاریخچه توسعه عرضه می‌کند. نسخه های مختلفکه به سال 1964 برمی گردد، و همچنین کامپایلر XL Fortran برای پلتفرم های مبتنی بر معماری PowerPC - AIX، Linux و ابررایانه Blue Gene (نسخه ای برای Mac OS X نیز وجود داشت که رایانه های Macintosh از پردازنده های PowerPC استفاده می کردند). هر دوی این کامپایلرها حاوی بهینه سازهای بسیار پیچیده ای هستند که حاصل نیم قرن کار علمی مداوم متخصصان IBM است. Absoft، یک شریک تجاری IBM، بر اساس کامپایلر IBM Fortran XL، کامپایلر Absoft Pro Fortran را برای سیستم‌های مبتنی بر پردازنده‌های PowerPC (Linux، Mac OS X) و Intel (Linux، Mac OS X، Windows) ایجاد و عرضه کرده است. .

    بنیاد نرم‌افزار آزاد گنو یک کامپایلر متن‌باز Fortran 77 به نام g77 را منتشر کرد که تقریباً برای هر پلتفرمی موجود است و کاملاً با GCC سازگار است. اکنون کامپایلر GFortran جایگزین آن شده است که تقریباً تمام ساختارهای استاندارد Fortran-95 و بسیاری از ساختارهای استاندارد Fortran-2003 و Fortran-2008 را اجرا می کند. همچنین به طور کامل با Fortran-77 سازگار است. همچنین یک پروژه مستقل g95 برای ایجاد یک کامپایلر Fortran-95 بر اساس GCC وجود دارد.

    ویژگی ها و ساختار برنامه

    Fortran دارای یک مجموعه نسبتاً بزرگ داخلی است توابع ریاضی، از اعداد صحیح، واقعی و مختلط با دقت بالا پشتیبانی می کند. ابزار بیانی این زبان در ابتدا بسیار ضعیف بود، زیرا فرترن یکی از اولین زبان های سطح بالا بود. بعدها ساختارهای واژگانی زیادی به فرترن اضافه شد که مشخصه برنامه نویسی ساختاری، عملکردی و حتی شی گرا است.

    کارت پانچ شده با علامت ستون برای Fortran.

    ساختار برنامه ها در ابتدا بر ورودی کارت های پانچ متمرکز بود و دارای تعدادی ویژگی بود که برای این مورد خاص مناسب بود. بنابراین، ستون 1 برای علامت گذاری متن به عنوان نظر (با علامت سی) از 1 تا 5 قسمت برچسب و از 7 تا 72 متن واقعی اپراتور یا نظر وجود داشت. ستون‌های 73 تا 80 می‌توانند برای شماره‌گذاری کارت (برای بازگرداندن عرشه‌ای که تصادفاً پراکنده شده) یا برای یک نظر کوتاه، توسط مترجم نادیده گرفته شوند. اگر متن اپراتور در فضای اختصاص داده شده (از ستون هفتم تا هفتاد و دوم) قرار نمی گرفت، علامت ادامه در ستون ششم کارت بعدی قرار می گرفت و سپس اپراتور روی آن ادامه می داد. قرار دادن دو یا چند اپراتور در یک خط (نقشه) غیرممکن بود. هنگامی که کارت های پانچ به تاریخ تبدیل شد، این مزیت ها به ناراحتی های جدی تبدیل شد.

    به همین دلیل است که استاندارد فرترن که با فرترن 90 شروع می شود، علاوه بر فرمت ثابت متن منبع، دارای یک قالب رایگان است که موقعیت خط را تنظیم نمی کند و همچنین به شما امکان می دهد در هر خط بیش از یک اپراتور بنویسید. معرفی یک فرمت رایگان این امکان را فراهم کرده است که کدی را ایجاد کنید که به اندازه کدهای ایجاد شده با دیگر خوانا و واضح باشد. زبان های مدرنبرنامه نویسی مانند یا جاوا .

    نوعی "کارت تلفن" فرترن قدیمی تعداد زیادی برچسب است که هم در عملگرهای پرش بدون قید و شرط GOTO و هم در عملگرهای حلقه و هم در عملگرهای توصیف ورودی / خروجی فرمت FORMAT استفاده می شود. تعداد زیاد برچسب ها و عبارات GOTO اغلب درک برنامه های فرترن را دشوار می کرد.

    همین تجربه منفی است که دلیل این شده است که در تعدادی از زبان های برنامه نویسی مدرن (مثلاً جاوا) برچسب ها و عملگرهای پرش بدون قید و شرط مرتبط با آنها تا حد زیادی اصلاح شده است.

    با این حال، فرترن مدرن با معرفی عملگرهایی مانند DO ... END DO، DO WHILE، SELECT CASE از شر مازاد برچسب ها خلاص شد. علاوه بر این، در استانداردهای زبان مدرن، تنها اپراتور کلاسیک GOTO که تا به امروز در بسیاری از زبان ها استفاده می شود، باقی مانده است. عبارت GOTO محاسبه‌شده و همچنین ساختار ENTRY - ورود چندگانه به رویه‌ها، حذف شدند.

    همچنین ویژگی های مثبت فرترن مدرن عبارتند از تعداد زیادی ازعملیات آرایه داخلی و پشتیبانی انعطاف پذیر برای آرایه هایی با نمایه سازی غیر معمول. مثال:

    بعد واقعی (: ,: ) :: V ... تخصیص (V(- 2 : 2 ,0 : 10 ) ) ! تخصیص حافظه برای آرایه ای که شاخص های آن می توانند ! از 2- تا 2 متغیر است (شاخص اول) ! و از 0 تا 10 - دوم... V (2 ,2 : 3 ) = V(- 1 : 0 ,1 ) ! یک برش از یک آرایه را بچرخانید write(* ,* ) V(1 ,: ) ! تمام عناصر آرایه V را که اولین شاخص آن 1 است چاپ کنید.معامله (V)

    سلام دنیا!

    فرمت ثابت (فضاهای موجود در موقعیت های ردیف 1 تا 6 با کاراکترهای "␣" مشخص شده اند):

    ␣␣␣␣␣␣برنامه سلام ␣␣␣␣␣␣PRINT*، "سلام، دنیا!" ␣␣␣␣␣␣ پایان

    فرمت رایگان:

    برنامه hello print * , "Hello, World!" پایان

    ملاحظات.

    • عبارت PROGRAM اختیاری است. به طور دقیق، تنها عبارت مورد نیاز در برنامه فرترن عبارت END است.
    • انتخاب حروف بزرگ یا کوچک برای نوشتن دستورات برنامه دلخواه است. از نظر استانداردهای زبان فرترن مدرن، بسیاری از حروف بزرگ و بسیاری از حروف کوچک هنگام نوشتن عملگرهای زبان یکسان هستند.

    تعامل با زبان های دیگر

    بسیاری از سیستم های برنامه نویسی به شما امکان می دهند فایل های شی به دست آمده در نتیجه ترجمه یک برنامه فرترن را با فایل های شی به دست آمده از کامپایلرهای زبان های دیگر پیوند دهید، که به شما امکان می دهد انعطاف پذیرتر و انعطاف پذیرتر ایجاد کنید. برنامه های کاربردی چند منظوره. تعداد زیادی کتابخانه نیز برای زبان فرترن موجود است که شامل هر دو زیرروال برای حل مسائل محاسباتی کلاسیک (LAPACK، IMSL، BLAS)، وظایف سازمان‌دهی محاسبات توزیع‌شده (MPI، pvm)، و وظایف برای ساختن است. رابط های گرافیکی(Quickwin، FORTRAN/TK) یا دسترسی به DBMS (Oracle).

    Fortran در اتحاد جماهیر شوروی

    یادداشت

    1. به عنوان مثال نگاه کنید به: مخزن Netlib در UTK و ORNL
    2. A. M. Gorelik. تکامل زبان برنامه نویسی Fortran (1957-2007) و چشم انداز توسعه آن // روش های محاسباتی و برنامه نویسی، 2008، جلد 9، ص. 53-71
    3. بارتنیف O.V.فرترن مدرن - M.: Dialogue MEPhI، 2005. - ISBN 5-86404-113-0
    4. A. M. Gorelik. برنامه نویسی شی گرا در فرترن مدرن
    5. S. D. Algazin، V. V. Kondratiev.برنامه نویسی در ویژوال فرترن - M .: "MEPhI Dialogue"، 2008. - 448 p. - شابک 5-8243-0759-8
    6. اخبار گورلیک A. M
    7. در مقابل فرترن
    8. XL Fortran برای لینوکس
    9. Absoft Pro Fortran Compiler Suites مرور کلی
    10. Sun Studio - معیارها
    11. مقاله ای از الکساندر راستورگویف در مورد ظهور فرترن در دوبنا
    12. تاریخچه گرافیک کامپیوتری در روسیه

    ادبیات

    • فرترن راهنمای مرجع برنامه نویس سیستم کدگذاری خودکار فرترن برای IBM 704 EDPM - IBM Corp., 1956. - 51 p.
    • ISO/IEC 1539-2:2000 فناوری اطلاعات - زبان های برنامه نویسی - فورترن - قسمت 2: رشته های کاراکتر با طول های مختلف
    • رابرت دبلیو سبستا. 2.3. کامپیوتر IBM 704 و زبان فرترن // مفاهیم اساسی زبان های برنامه نویسی \u003d مفاهیم زبان های برنامه نویسی / Per. از انگلیسی. - ویرایش پنجم - M.: ویلیامز، 2001. - S. 63-69. - 672 ص. - 5000 نسخه. - ISBN 5-8459-0192-8 (روسی)، ISBN 0-201-75295-6 (انگلیسی)

    پیوندها

    • gfortran - کامپایلر Fortran 95/2003/2008، بخشی از مجموعه کامپایلر گنو
    • در Progopedia - دایره المعارف زبان های برنامه نویسی (روسی)

    فرترن(همچنین FORTRAN) است زبان برنامه نویسی، در اوایل دهه 1950 توسعه یافت و هنوز هم استفاده می شود. این نام کوتاه شده برای "FORmula Translator" است. نسخه‌های اولیه این زبان با نام FORTRAN شناخته می‌شدند، اما حروف از Fortran 90 دیگر بزرگ نبودند. استانداردهای زبان رسمی اکنون به این زبان به عنوان "FORTRAN" اشاره می‌کنند.

    > Fortran عمدتا برای محاسبات علمی و تجزیه و تحلیل عددی استفاده می شود. اگرچه در ابتدا زبان رویه ای بود، اما در آخرین نسخه ها Fortran برخی از ویژگی ها را برای پشتیبانی از برنامه نویسی شی گرا برای مبتدیان در نظر گرفته است.

    اولین کامپایلر FORTRAN برای IBM 704 در سال های 1954-1957 توسط یک تیم IBM به رهبری John W. Backus توسعه یافت. این یک کامپایلر بهینه‌سازی بود، زیرا نویسندگان استدلال می‌کردند که هیچ‌کس از این زبان استفاده نمی‌کند، حتی در هنگام یادگیری برنامه‌نویسی برای ساختگی‌ها، مگر اینکه عملکرد آن با اسمبلر قابل مقایسه باشد.

    این زبان در میان دانشمندان رایج شد و برای نوشتن برنامه هایی با عملیات عددی فشرده استفاده شد، که سازندگان کامپایلرهای فرترن را مجبور کرد تا با پشتکار کد کامپایلرها را بازنویسی کنند تا کدهای سریع تری تولید کنند. امروزه فروشندگان زیادی از کامپایلرهای فرترن با کارایی بالا وجود دارد. بسیاری از پیشرفت‌ها در تئوری و طراحی کامپایلر به دلیل نیاز به تولید بوده است کد خوببرای برنامه های فرترن همانطور که برای برنامه نویسی پایه باید باشد.

    چندین نسخه از این زبان شناخته شده است، از جمله معروف FORTRAN IV (همچنین به عنوان FORTRAN 66 شناخته می شود)، Fortran 77، و Fortran 90. آخرین استاندارد رسمی برای این زبان، که در سال 1997 منتشر شد، به نام Fortran 95 شناخته می شود. نسخه های IBM از این زبان هرگز تا این حد محبوب نبوده است، مانند زبان های توسعه یافته توسط شرکت های دیگر، و این امر به ویژه در مورد FORTRAN IV صادق است - WATFOR، نسخه FORTRAN IV که در دانشگاه واترلو در کانادا توسعه یافته بود، بیشترین درخواست را داشت، زیرا بهترین خروجی را داشت. پیام های خطای کامپایلر مشابه، نرم افزاربرای تولید خودکار فلوچارت ها از برنامه های FORTRAN خارج از IBM توسعه داده شد

    در ابتدا، این زبان بر قالب بندی دقیق کد منبع و استفاده زیاد از حالت های عددی و عبارت GOTO متکی بود. این ویژگی‌ها از نسخه‌های جدید زبان حذف شده‌اند. نسخه های بعدی نیز مفاهیم برنامه نویسی "مدرن" مانند نظرات را معرفی کردند کد منبعو خروجی متن، عبارات IF-THEN-ELSE (در FORTRAN 77)، بازگشت (در فرترن 90)، و محاسبات موازی در حالی که سعی در حفظ نمایه و عملکرد بالای فرترن دارید. در میان محبوب ترین ها بر اساس زبان های فرترنمی‌توانیم SAS را که برای دریافت گزارش‌های آماری طراحی شده است و SIMSCRIPT را برای مدل‌سازی فرآیندهای صف‌بندی جدا کنیم.

    فروشندگان کامپیوتر علمی با کارایی بالا (Burroughs, CDC, Cray, IBM, Texas Instruments) افزونه هایی را به Fortran اضافه کرده اند تا امکان استفاده از ویژگی های سخت افزاری خاص مانند حافظه پنهان دستورالعمل ها، پردازنده های اتصالات لوله، آرایه های برداری و غیره را فراهم کنند. به عنوان مثال، یکی از The کامپایلرهای IBM Fortran (H Extended IUP) حاوی یک لایه بهینه سازی بود که باعث می شد دستورالعمل های کد ماشین چندین بلوک حسابی داخلی را همیشه مشغول نگه دارد. مثال دیگر CFD است، یک "نوع" ویژه از Fortran که به طور خاص برای ابررایانه ILLIAC IV در مرکز تحقیقات Ames ناسا طراحی شده است. این الحاقات یا در طول زمان ناپدید شده اند یا این عناصر در استاندارد اصلی گنجانده شده اند. پسوند اصلی OpenMP است که یک افزونه چند پلتفرمی برای دسترسی به حافظه مشترک است. یکی دیگر از برنامه های افزودنی جدید، CoArray Fortran، با هدف ترویج توسعه برنامه نویسی موازی و .

    اولین تلاش یک مبتدی در توسعه Erlang می تواند بسیار خسته کننده باشد زیرا نحو این زبان توسط بسیاری از برنامه نویسانی که با زبان های مدرن شروع کرده اند رمزنگاری شده است. نوشتن یک تحلیلگر واژگانی زمانی که فقط یک کاراکتر اشتباه می تواند منجر به خطای زمان اجرا به جای خطای تلفیقی شود، اگر ساختارهای مشخص شده استفاده نشود، دشوار است. در برخی از نسخه های اولیه، هیچ شی (OOP) وجود نداشت، که ویژگی های مفید برنامه نویسی در نظر گرفته می شود. شرایط مدرن، یا مثلاً تخصیص حافظه پویا وجود نداشت. در همان زمان، نحو فرترن قابل اجرا بود کار علمیو محاسبات مربوط به عملیات روی اعداد و بسیاری از کاستی های آن در نسخه های بعدی برطرف شد. مثلا فرترن 95 خیلی دستورات کوتاهبرای انجام عملیات ریاضی بر روی ماتریس ها و آرایه ها، که نه تنها خوانایی برنامه را تا حد زیادی بهبود می بخشد، بلکه می دهد اطلاعات مفیدبرای اینکه کامپایلر بتواند عملیات را بردارید. به این دلایل، فرترن اغلب خارج از محاسبات علمی و مهندسی مورد استفاده قرار نمی گیرد؛ این زبان همچنان زبان محاسبات عددی با کارایی بالا است.