سؤال

لقد كنت أعمل مع الكثير من Fortran 77 مؤخرًا ، وعلى الرغم من أنني حصلت على تحفظات في البداية ، إلا أنني أرى الآن بعض الصفات العظيمة للغة. إنها:

  • سهل التعلم (لا توجد مضاعفات برمجة موجهة نحو الكائنات أو الوظيفية)
  • سهل القراءة
  • اشتعلت بسرعة عند التخلص من الأرقام

هذه الصفات جذابة بشكل طبيعي للمهندسين والعلماء غير البرمجي الذين يريدون فقط طريقة لجعل الكمبيوتر يقدم إجابات بسرعة. لكن لديها الكثير من القيود على أساس عمرها وبعض افتراضاتها الأساسية. أنا متشكك في مدى سهولة فهم غير المبرمجين بعض القدرات المضافة للإصدارات اللاحقة من Fortran أيضًا.

هل هناك لغة حديثة واضحة مثل فورتران ، بنفس السرعة للتطبيقات الرياضية ، وأقل محدودية؟ أم الجواب Fortran 90 ، 95 ، 2003. . . ؟

هل كانت مفيدة؟

المحلول

أم الجواب Fortran 90 ، 95 ، 2003. . . ؟

نعم. Fortran 95 مدعوم من معظم المجمعين هي اللغة التي تبحث عنها. ومع ذلك ، لدى Fortran 2003 بعض التحسينات الرئيسية (إلى جانب عدم ضروري من دعم وجهة نظرك من OOP) والتي قد تكون مفيدة. دعم المترجم لمعيار Fortran 2003.

نصائح أخرى

حسنًا ، أنا مهندس غير برمجي (مهما كان هذا يعني ؛ أجمعه يعني عدم الاتصال بالكثير من دراسات علوم الكمبيوتر) و ...

جزئيًا في استمرار تعليق Jasonfruit على إجابة S. Lott:

نعم ، أضافت المعيار عددًا لا بأس به من الميزات من F90 إلى 2003. لكن "المشكلة" ، إذا كان يمكن للمرء أن يسميها مثل هذا (لا يمكنني التفكير أو الاهتمام بكلمة أكثر ملاءمة) هو أن الكثير من الأشخاص الذين يستخدمون Fortran لا يعرفون إنه ، حفظ الميزات الأساسية التي يحتاجونها. إنها نعمة ولعنة كلها ، بطريقة ما. لم يتعلموا ذلك مطلقًا ، ولم يقرؤوا كتابًا عليه أبدًا - لقد التقطوه نوعًا ما كما يسيرون. بهذه الطريقة يمكن أن تعمل بالتأكيد لبعض الوقت (إذا قمت ببنية برامجك ببساطة ، كما فعل الكثيرون منذ قرون ، ولديهم نوع من الانضباط العقلي ، يمكن أن يستمر هذا النهج مدى الحياة/حياتك المهنية بأكملها) ، ولكن بعد فترة من الوقت يبدأ لإظهار العيوب. جرب على سبيل المثال ، متابعة بعض المناقشات حول الميزات الحديثة على comp.lang.fortran لاختبار معرفتك.

لذا ، خذ كتابًا جيدًا (يوصي الكثيرون بواحد من الثلاثة للمبتدئين ؛ أ) تشابمان ج. ستيفن ب) مين ، أو ج) ميتكالف ، ريد وكوهين (المعروف باسم "كتاب MRC") - وبعد ذلك الكثير من لا تصبح ميزات "أكثر غموضًا" أكثر وضوحًا فحسب ، بل أصبحت أيضًا "واضحة" (كما هو الحال بطريقة ما ؛ هذه هي الطريقة الأفضل - لماذا فعلت ذلك بهذه الطريقة ... من قبل؟).

هذا يعتني بهذا السؤال. الآن ، السؤال الآخر - الذي سينشأ كئيبًا - هو فورتران يستحق التعلم في الوقت الحاضر؟ ((إنه دائمًا ما يفعل ، ثق بي في هذا :). لقد تم تغطية هذا عدة مرات ، لذلك سأوجه فقط منصبي الخاص بخصوص ما سبق ، و منشوري الأقدم (سيتعين عليك التمرير قليلاً) والتي تعتبر بعض المشكلات مقارنة ببعض اللانغوجات الأخرى المذكورة هنا.

آخر شيء ، وهو ما هو سبب كل هذه الأسئلة في معظم الحالات هو رأي الناس في فورتران ، مع التركيز على الرأي! بشكل عام (ويمكننا أن نأخذ هذا المنتدى كعينة جيدة لتحليلنا) هو أنه ليس جيدًا. قليلون مثل ذلك [اتبع الأسئلة التي تحمل علامة Fortran في هذا المنتدى لمدة شهر ، وستتعلم بسرعة من هم. راجع للشغل ، انطلاقًا من التردد الذي ظهر اسمك ، سرعان ما أصبحت عضوًا في النادي :)] ، معظمهم إما غير مبالين ، وبعضهم يكرهونه ، بدافع الجهل المطلق (مقارنة F66 بلغات اليوم) ، غالبًا ما يتم استخدامها) ، بعض من أسبابهم الخاصة. الآن ، إذا أخذنا هؤلاء وقمنا بمقارنتها مع عامة السكان ، من خلال حساب بسيط ، فإن النتيجة لا بد أن تخرج سيئة. إذا قابلت المهندسين التقليديين فقط ، فستكون النتائج مختلفة تمامًا.

thhhh-aaa-ttt's.

أوه ، شيء آخر - كان فورتران هو/كان ولا يزال يستهدف في المقام الأول المهندسين ، وليس علماء الرياضيات. إنه أكثر ملاءمة لحل الأنظمة الكبيرة ، ثم حساب PI إلى عشري Ka-Zi-Llionth. لا أعرف ما إذا كان هذا خطأ مطبعيًا في سؤالك أم عن قصد. بالنسبة للتطبيقات الرياضية البحتة (بالمعنى الكلاسيكي للرياضيات) ، كنت (هل كنت جزءًا من هذا المجال) ربما أختار ، لا أعرف ، Mathematica؟ أو Pascal (لا أعرف لماذا كانت دائمًا pascal ؛ لكنها تبدو شائعة بشكل رهيب مع تلك الفصول).

أنا مندهش من أن الإجماع هنا هو Fortran الحديث ، وأنا أوافق على مضض.

مهما كانت إخفاقاتها ، فإن Fortran هي اللغة الوحيدة التي يتم تصميمها بشكل صريح للبرمجة العلمية. تعد البرمجة العلمية أكثر دقة (لكل سطر) وأقل تعقيدًا (في الهيكل) من خادم الويب ، على سبيل المثال ، ويحتاج فقط إلى أدوات مختلفة. مجموعة Garbage ، على سبيل المثال ، لا تكون مفيدة تقريبًا لحل PDEs الكبيرة ثنائية الأبعاد/ثلاثية الأبعاد حيث يتم إصلاح هياكل البيانات الأساسية الخاصة بك.

أي لغة برمجة لا تحتوي حتى على صفائف متعددة D ، حيث يمكن رفض الكائنات من الدرجة الأولى على الفور للبرمجة العلمية. وهذا كل اللغات القائمة على C. أي لغة برمجة بطبيعتها بطيئة-جافا ، أنا أنظر إليك-يمكن رفضها على الفور. يمكن رفض أي لغة برمجة خاصة وتتطلب آلاف الدولارات من رسوم الترخيص - MATLAB - على الفور.

تعد Python واللغات ذات الصلة جيدة للنماذج الأولية ، والتخطيط أمرًا سهلاً ، وبمجرد أن تحصل على الأشياء ، يمكن أن تكتب النواة العددية باللغات المترجمة للسرعة ؛ لكنه يعاني مرة أخرى من نقص المصفوفات الحقيقية (Numpy جيد ، ولكنه ليس رائعًا) وهو S..L..O..W.

بالمناسبة - لا أي وقت مضى بواسطة كتب الوصفات العددية. إنها حماقة ، والخوارزميات التي يرونها هي تاريخ ، وتتراوح الكود من الفقراء إلى الخطأ. خذ دورة خوارزميات رقمية حقيقية - هناك أجهزة جيدة على الإنترنت - أو شراء كتاب خوارزميات رقمية حقيقية - ولحب الله ، لا تكتب رمزًا من كتاب للقيام بالجبر الخطي أو أي شيء آخر ؛ استخدم Zillions من مكتبات الجودة الحقيقية والمهنية هناك.

للحصول على إجابة مباشرة على سؤالك ، أعتقد ذلك كيميستوإجابة صحيحة ، مع تحديد التحذيرات بواسطة idigas.

ومع ذلك ، فقد وجدت المزيد من الكود العددي الخاص بي على اتصال بأشياء مثل FTP و Web و Mocl أكثر من الرسومات. لقد رأيت Matlab اقترح في إجابة أخرى ، لكنني كنت أكتب المزيد والمزيد من Python (مع Numpy) والاتصال بـ Fortran عندما أحتاج إلى السرعة. من المؤكد أنني لم أكن أكتب نظامًا كاملاً (على سبيل المثال نموذج تنبؤات الطقس العددي بأكمله) بهذه الطريقة ، لكنه يسمح لي أن أحصل على أفضل ما في العالمين في كثير من النواحي.

أم الجواب Fortran 90 ، 95 ، 2003. . . ؟ نعم. بالنسبة للحوسبة العلمية ، يزيل Fortran> = 90 قيود Fortran 77. تعلم كيفية استخدام المصفوفات المتخصصة للحصول على صفائف كبيرة ديناميكيًا. تعرف على كيفية استخدام الوحدات النمطية لتنظيم الإجراءات والمتغيرات الخاصة بك - وتوفير فحص الاتساق التلقائي بسهولة بين الوسائط الفعلية والمومية. بدءًا من Fortran 77 ، يمكنك تعلم Fortran 90/95/2003 تدريجياً ، باستخدام أي ميزات تبدو مفيدة لك. ليس عليك أن تتعلم ميزات OO ويمكنك تجاهل هذا الجزء من اللغة ، حتى يوفر لك يومًا ما فائدة لك.

أوصي كتاب Metcalf و Reid و Cohen.

قد تنظر إلى Matlab. يتعلم العديد من الطلاب الجامعيين المهندسين أنه من السهل على غير المبرمجين أن يتجولوا.

إذا كنت ترغب في الحصول على متشددين ، ألق نظرة على ي.

أظن فورتران 95 يجب أن يكون اختيارك يبدو أكثر حداثة ويمتد فورتران 77 بشكل كبير. لا يتم دعم معيار Fortran 2003 بالكامل من قبل معظم المترجمين. الميزة الكبرى لـ Fortran هي أن هناك روتينًا فرعيًا محسّنًا لكل مشكلة رياضية (مثل العثور على الجذر ، وضرب المصفوفة ، ومشاكل القيمة الذاتية ، إلخ). ذكر أشخاص آخرون المكتبات القديمة و Lapack هو مجرد مثال قوي للغاية. من العيوب الرئيسية لفورتران أن لا أحد يستخدمه في العالم الحقيقي.

أفضل كتاب حوله هو رأيي "Fortran 90/95 للعلماء والمهندسين".

بالطبع جميع الاقتراحات الأخرى صالحة ، لكن Matlab ليس مجانيًا بينما يكون Fortran.

بيثون مجاني ولديه دعم للعديد من التطبيقات العلمية من خلال حزم إضافية مثل Numpy و Scipy. لكن بيثون بطيء إلى حد ما عندما يتعلق الأمر بالأداء العددي. ربما يكون خيارًا جيدًا للمشاريع الصغيرة التي لا تتطلب الكثير من الطاقة الحسابية. بناء الجملة سهل الفهم.

ج بالطبع هو أيضًا خيار مجاني ولديه الكثير من المكتبات العلمية (المحدثة باستمرار) المتاحة. ومع ذلك ، عندما يتعلق الأمر بسهولة القراءة ، فإنه لا يمكن التغلب على فورتران. فورتران تم إعداده جيدًا للعمل مع المتجهات والصفائف.

C ++ هي مجموعة من C ، لذا فهي بالتأكيد خيار ممكن. ومع ذلك ، فهي لغة قد تكون معقدة للمشاكل التي تبحث عنها. عدد مكتبات C ++ العلمية محدود إلى حد ما. هناك بعض حولها لكنهم لا يستطيعون التغلب على إصدارات فورتران (أو مجرد مغلفة من هؤلاء). من المحتمل أن يكون خيارًا جيدًا للغاية للمشاريع الكبيرة جدًا ، لكن بعض البرامج الكبيرة جدًا التي تعمل على أسرع أجهزة الكمبيوتر في العالم مكتوبة في Fortran. C ++ يستحق بالتأكيد التعلم لأنه يستخدم لعدد واسع من تطبيقات العالم الحقيقي.

هناك بالطبع لغات أو أدوات أخرى ، لكنني أعتقد أن هذه هي الأكثر استخدامًا عبر التخصصات العلمية.

إذا كنت متحمسًا جدًا لاستخدام Fortran ، فقد تفكر في استخدام Fortran لـ Microsoft.net. الفكرة وراء هذا المشروع هي أنها تتيح لك استخدام Fortran لغة أثناء الاستفادة من بيئة الكود المشوهة عبر وقت تشغيل اللغة المشتركة (CLR).

@S.Lott: لا يمكن تخيل مستخدمي Fortran مثل العلماء ، واضطرابهم إلى التبديل وتفريغ جميع أعمالهم Fortran .....: S The Op يبحث عن مدخلات على ما هو جديد ...

إلى OP: هل قرأت ويكيبيديا ما هو التفاصيل التي تم إجراؤها على Fortran ، بالنسبة إلى إصدار 2003 ، تتيح قابلية التشغيل البيني مع C ، لذلك ربما يكون لدى S.Lott نقطة ، ربما ، قليلاً ، قم بتنفيذ بعض الأشياء بلطف أو كتابة غلاف في C للاتصال بوحدات Fortran؟ سأقتبس من صفحة ويكيبيديا ...

قابلية التشغيل البيني مع لغة البرمجة C.

لقد عملت مؤخرًا مع الكثير من Matlab ، ويمكنني أن أرى فوائدها اليوم. نعم هو بطيء لأنها لغة تفسير ، لكنها خوارزميات المصفوفة سريعة. وأنا أحب ذلك بالضبط بسبب هذا السلوك. يشجعك بطء الحلقات وأداء عمليات المصفوفة على التفكير بطريقة أكثر رياضية بدلاً من الالتزام بالبرمجة الموجهة نحو الحلقة. لكن يمكنني أن أوافق على أنه يمكن رفض Matlab ، لأنه غير مفتوح.

حاليا أتطلع إلى لغة جوليا. إنه مستوحى بشدة من Matlab باستثناء أنه يريد أن يكون سريعًا. كما أنه يحتوي على أنواع ثابتة وهي أيضًا ميزة كبيرة جدًا. لكن جوليا لا تزال صغيرة جدًا ، لذا لا تتوقع أن تفي بالفعل بجميع متطلباتك.

سهل التعلم (لا توجد مضاعفات برمجة موجهة نحو الكائنات أو الوظيفية)

سهل القراءة

اشتعلت بسرعة عند التخلص من الأرقام

يبدو مثل C.

شراء وصفات رقمية في C. والتي تغطي إلى حد كبير جميع القواعد بأسلوب واضح وقابل للقراءة.

http://www.amazon.com/numerical-recipes-art-scientific-computing/dp/0521431085

أفترض أنك تفكر في برامج صغيرة مخصصة مكتوبة لحل مشاكل محددة. في هذه الحالة ، إذا أزعجك تعقيد OO حقًا ، فسأكتب تطبيق C# أو Java فقط ولا أستخدم OO. يجب أن يكون Visual Basic سريعًا جدًا هذه الأيام أيضًا.

ستكون جميع اللغات المترجمة تقريبًا بسرعة رياضية هذه الأيام ، حيث تتم جميع العمليات على المعالجة المشتركة للرياضيات-لذا إلا إذا وجدت أن بعض اللغة تفتقر بشكل خاص ، فلن أترك أي لغات "سرعة الرياضيات" تزعجني كثيرًا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top