انجمن‌های فارسی اوبونتو

کمک و پشتیبانی => برنامه‌سازی => نویسنده: کیان در 10 دی 1391، 03:47 ب‌ظ

عنوان: نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: کیان در 10 دی 1391، 03:47 ب‌ظ
چه زبان برنامه نویسی برای دانشجوهای علوم پایه بهترینه؟ تو دانشکده مون (ریاضی) زیاد دیدم ارشدی ها فورترن فورترن میکنند.

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

1. C رو تا سطح پیشرفته برم جلو؟
تغییر مسیر بدم به زبانی مثل فورترن؟ پایتون، پرل و... چطورند؟
تو انجمن دیدم بچه خیلی از Go‌ تعریف میکنم، منم وسوسه شدم یاد بگیرم؟ ;D‌ این زبان به درد توضیحاتی که دادم  میخوره؟
2. در موسسات تحقیقاتی بزرگ علمی چه زبانهایی مطرح ترند؟
3. برنامه هایی مثل متلب (R) و متمتیکا (ماکسیما) زبان برنامه نویسی اند؟
4. جمع بندی: برم دنبال یاد گرفتن یک زبان برنامه نویسی یا روی ماکسیما وقت بذارم؟



(برنامه نویسی هم کار کردم. html و C‌ بلدم. نگید خودش C ‌بلده اومده وقتمون رو بگیره. C رو بلدم ولی نمیدونم کجا کاربرد داره. سطح بالا و سطح پایین نمی فهمم. بلدم تمرین های کتاب رو بعد از حل ریاضی مسئله پیاده سازی کنم.)
عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: alend در 10 دی 1391، 05:08 ب‌ظ
fortran:
برای جبر خطی می گن خیلی مناسب است به کمک کتابخانه lapacه k.
کد به صورت اتوماتیک به میزان زیادی بهینه می شود.
gcc براش زیاد مناسب نیست و کامپایلر اینتل را براش توصبه می کنند.
اگر با زبانهایی که شبیه c هستند کار کردی به نظرم یاد گرفتنش یکم سخت می شود.

1- من ++C به علت شی گرایی بر C ترجیه می دهم.
2- توی موسسات تحقیقاتی fortran, c++/c, R,scilab,sas,matlab,...
3- R زبان برنامه نویسی است ولی در مورد متمتیکا اطلاع ندارم.
4- یک زبان میانی مثل ++C و یک زبان سطح بالا مثل R یاد بگیری بهتر است.

 R از توانایی هایی رو که لازم داری این ها رو دارد:
انتگرال،ماتریسها و مدل سازی شکل های فضایی

سرعت R هم بستگی به تجربه دارد.

تانسور هم نمی دونم چی هست که بگم داره یا نه :)

در مورد matlab, scilab , ... اطلاعی ندارم.

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

وجود ide و debuger و profiler هم برای زبان مورد نطر (که نیاز به توضیح ندارد).
عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: سلمان م. در 10 دی 1391، 05:30 ب‌ظ
برای چه کاری می‌خوای؟
میخوای باهاش برای خودت مساله‌ها تو حل کنی یعنی library داشته باشی یا یه برنامه می‌خوای بنویسی که GUI داره.
اگه برای مقاله دادن می‌خوای فکر کنم که برنامه‌هایی مثل Scilab , GNU Octave و ... کارت رو راه بندازن.
ولی اگه می‌خوای بری تو مراکز تحقیقاتی باید سی یا سی++ حتما بلد باشی.
چونکه سی بلدی، بنظر من سی رو برو جلو. وقتت رو حروم نکن با یاد گرفتن یه زبون دیگه.

* برای کارای عادی = C + GSL (GNU Scientific Library
     http://en.wikipedia.org/wiki/GNU_Scientific_Library
     توسط بچه‌های Los Alamos نوشته شده :) البته یا کمک دیگران.
     http://en.wikipedia.org/wiki/Los_Alamos_National_Laboratory

* برنامه‌نویسی موازی = C + OpenMP
     http://en.wikipedia.org/wiki/OpenMP
عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: alend در 10 دی 1391، 05:34 ب‌ظ
در تکمیل حرف سلمان اگر می خواهی پردازش موازی با cuda انجام بدی c , ++c بر fortran برتری دارد.
عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: majidkamali1370 در 10 دی 1391، 06:03 ب‌ظ
matlab بسیار برنامه خوبیه. کلی toolbox داره که کار آدم رو راه میندازه.
ولی اگه یه زبون برنامه نویسی خالص میخوای سی++ بهترینه چون همه جا میشه ازش استفاده کرد. سرعتش هم که عالیه.
عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: امید توانا در 10 دی 1391، 06:19 ب‌ظ
چه زبان برنامه نویسی برای دانشجوهای علوم پایه بهترینه؟ تو دانشکده مون (ریاضی) زیاد دیدم ارشدی ها فورترن فورترن میکنند.

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

1. C رو تا سطح پیشرفته برم جلو؟
تغییر مسیر بدم به زبانی مثل فورترن؟ پایتون، پرل و... چطورند؟
تو انجمن دیدم بچه خیلی از Go‌ تعریف میکنم، منم وسوسه شدم یاد بگیرم؟ ;D‌ این زبان به درد توضیحاتی که دادم  میخوره؟
2. در موسسات تحقیقاتی بزرگ علمی چه زبانهایی مطرح ترند؟
3. برنامه هایی مثل متلب (R) و متمتیکا (ماکسیما) زبان برنامه نویسی اند؟
4. جمع بندی: برم دنبال یاد گرفتن یک زبان برنامه نویسی یا روی ماکسیما وقت بذارم؟



(برنامه نویسی هم کار کردم. html و C‌ بلدم. نگید خودش C ‌بلده اومده وقتمون رو بگیره. C رو بلدم ولی نمیدونم کجا کاربرد داره. سطح بالا و سطح پایین نمی فهمم. بلدم تمرین های کتاب رو بعد از حل ریاضی مسئله پیاده سازی کنم.)
اول سه نرم‌افزار تجاری رو بررسی می‌کنم. ولی قطعیت کامل نداره و باید ببینی در کجا و چه شاخه خاصی قراره کار بکنی.
۱- Maple: بیشتر برای ریاضیات کاربردی
۲- Matlab: بیشتر برای رشته‌های مهندسی
۳- Mathematica: بیشتر برای ترکیبیات و ریاضی محض
در بین این سه‌تا هیچکدوم در مجموع به قدرت و تکامل Mathematica نیست. رابط کاربری اون برحسب Qt است و طبق اینجا (http://en.wikipedia.org/wiki/Comparison_of_computer_algebra_systems) (قسمت functionality) کارایی هیچکدام دیگه به اندازه Mathematica نیست. امکان چسباندن کد از زبان‌هایی مثل C++ به هسته‌اش رو داره و همچنین فراخوانی هسته آن از اکثر زبانها و نرم‌افزارهای دیگه وجود داره.

ولی کلا بهتره همون C++ رو در حد اعلا یاد بگیرید و به فرترن و ... نپردازید. دلیل اینکه بعضی از دانشگاه‌ها روی زبانی مثل فرترن فعالیت می‌کنند اینه که استادی اونجا هست که سالها پیش فقط این زبان رو یاد گرفته و الان اصلا قابلیت به‌روز رسانی خودش رو نداره. (کاشکی با یه دستور ساده می‌شد استادها رو هم به روز کرد. البته شوخی کردم. همین استادها هم خیلی زحمت می‌کشند که تو این شرایط سخت، باز هم به دنبال تحقیق، هرچند جزیی، هستند که تو کل عمرشون به اندازه یه سال یه بازیکن فوتبال تیم‌های باشگاهی ایران هم پول گیرشون نمیاد. ](*,))
عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: AmirrezaGhaderi در 10 دی 1391، 08:22 ب‌ظ
کار یک زبان برنامه نویسی پردازش محاسبات هستش. تمام زبان های برنامه نویسی
به درد توضیحاتی که شما دادید می خورند.
عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: کیان در 10 دی 1391، 08:57 ب‌ظ
در بین این سه‌تا هیچکدوم در مجموع به قدرت و تکامل Mathematica نیست.
متیمتیکا نسخه لینوکسی نداره! ماکسیما معادلشه. به همون قدرت متمتیکا هست؟

R از توانایی هایی رو که لازم داری این ها رو دارد:
انتگرال،ماتریسها و مدل سازی شکل های فضایی

سرعت R هم بستگی به تجربه دارد.
درباره R‌ یک کنفرانسی تو دانشگاه بود استاده همش مثالهای آمار و عددی میزد.

برای چه کاری می‌خوای؟
بله باید این رو خوب توضیح می دادم. پاسخ واقعیش اینه که نمی دونم برای چی میخوام  :-X
ترم قبل یک درس 4 واحدی مبانی کامپیوتر داشتم و استاده کل وقت کلاس رو گذاشت روی زبان C‌ و از وسطش هم شروع کرد (دو هفته وقت داد خودمون رو برسونیم به سطحی که میخواد - قبل از حذف و اضافه  :o). این شد برنامه نویسی رو شروع کردم. تابستونی HTML‌ کار کردم.
رشتم ریاضی و می دونم که توی مقاطع بالاتر باید برنامه نویسی بلد باشم ولی نمی دونم از کجا و با چی شروع کنم! میدونم که از همین الان باید برنامه نویسی رو شروع کنم. دیرم شده (نیمه راه دوره کارشناسی ریاضی)
دید کلی در مورد برنامه نویسی ندارم. سر درنمیارم چرا خیلیا همش دنبال IDE ای هستید. ولی من نمی تونم ازش استفاده کنم. زاید میاد بنظر. میخوام بگم که ذهنیتم از برنامه نویسی شکل نگرفته هنوز.


کار یک زبان برنامه نویسی پردازش محاسبات هستش. تمام زبان های برنامه نویسی
به درد توضیحاتی که شما دادید می خورند.
بله. ولی با یک زبان برنامه نویسی میشه یک معادله رو در یک خط حل کرد و در 4 ثانیه جواب گرفت با یکی دیگه هزار تا کتابخونه و ... هم بکار بگیری به نتیجه دلخواه نمیرسی.
اون زبانی که بدرد یک دانشجوی ریاضی بخوره چیه؟
برنامه نویسی برای دلم نمیخوام یاد بگیرم بدرد رشته م بخوره :D

عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: AmirrezaGhaderi در 10 دی 1391، 09:12 ب‌ظ
واقعیش اینه که نمی دونم برای چی میخوام

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


چرا خیلیا همش دنبال IDE ای هستید. ولی من نمی تونم ازش استفاده کنم. زاید میاد بنظر.

نگران نباش، از نظر و من خیلی های دیگه هم زاید به نظر میان!

اون زبانی که بدرد یک دانشجوی ریاضی بخوره چیه؟
برنامه نویسی برای دلم نمیخوام یاد بگیرم بدرد رشته م بخوره :D

زبان های Functional نزدیک ترین منطق فکری رو به علوم ریاضایت دارن. یکی از اون ها رو یاد بگیر.
عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: سلمان م. در 10 دی 1391، 09:22 ب‌ظ
متیمتیکا نسخه لینوکسی نداره! ماکسیما معادلشه. به همون قدرت متمتیکا هست؟
عزیزم داره
http://www.wolfram.com/mathematica/features/system-requirements.html#Linux

سایلب scilab هم عالی هست، خیلی از مراکر تحقیقاتی بزرگ ازش استفاده می‌کنن. البته کارای عددی می‌کنه و برای کارای closed-form (فارسیش یادم رفته یعنی همون غیرعددی :) )میتونه با maxima قاطی بشه :)
عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: alend در 11 دی 1391، 06:47 ق‌ظ
یک مشکل R اینه که بیش از ۴۰۰۰ پکیج دارد و هر روز هم حدود ۱۰ تابهشون اضافه می شود!
امروز ۴۲۰۴ بسته فقط در cran داشت و ۶۰۸ تا هم در bioconductor.
عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: کیان در 12 دی 1391، 08:52 ب‌ظ
ممکنه چیزی که الآن میخوای و داری از ما سوال میکنی، چیزی باشه که برات مناسب نیست
و خودت هم ازش خبر نداشته باشی! باید مقداری به خودت وقت بدی تا هدفت رو بهتر مشخص کنی.
وقت زیاد ندارم. از الان تا تابستون وقت دارم. از تابستون 92 تا اردیبهشت 93 که هیچی چون درگیر کنکور ارشد آزاد و سراسری و پروژه میشم.) دوباره از تابستون 93 تا اول مهر بشرطی ارشد قبول بشم وقت دارم. با شروع ارشد باید زبان برنامه نویسی بلد باشم. کمتر از یکسال تایم دارم.


ویکی پدیا قدمت زبان سطح بالای لیسپ (http://en.wikipedia.org/wiki/Lisp_%28programming_language%29) رو با فرترن یکی دونسته: 1958-1957 این زبان چه وضعی داره؟ بیشتر کاربردش کجاست این زبانهای مدرن از این زبانهای قذیمی بهترن؟
عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: Midgårdsormen در 12 دی 1391، 09:15 ب‌ظ
دوستان معمولا به این بی‌محلی میکنن:

http://www.sagemath.org
عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: علی نعمت اللهی در 12 دی 1391، 11:32 ب‌ظ
1- من ++C به علت شی گرایی بر C ترجیه می دهم.
چه بسیارند افرادی که شی گرایی را نمی پسندند. یکیشون آقا استالمن

راجب به go هم اطلاع ندارم ولی به طور کلی توسیه می کنم زبانی یاد بگیری که منابع زیاد داشته باشد و وابسته به شرکت خاصی نباشد. ممکن یک زبان بسار عالی باشد ولی به دلیل عدم وجود منابع کافی یادگیری و رفع ایرادات برنامه نویسی مشکل باشد.
منابع رو نمیدونم ولی go به شرکتی وابسطه نیست. اگه منظورتون گوگله باید بگم اصلا اینطور نیست مثلا شما در وب go هیچ نشانی از گوگل نمی بینید.
اگه به انگلیسی مسلطید خیلی زیاد پیشنهاد میکنم یاد بگیرید.
عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: alend در 13 دی 1391، 11:06 ق‌ظ
اگر خواستی R کار کنی مطمن شو که تمام چیز های که در آینده لازم داری دارد.

اگر رشته آمار باشی که هیچ شکی نیست  R  همه نیازهاتو بر طرف می کند.


عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: کیان در 13 دی 1391، 11:24 ق‌ظ
ببخشید پاسکال چه زبانیه؟ نسبت به گزینه به C‌ و c++ ارزشی نداره که اسمی ازش نبردید؟ از پایتون و Go‌ هم صحبتی نشد.

این لینک رو برانداز کنید: http://en.wikipedia.org/wiki/List_of_programming_languages_by_category
باورم نمیشد اینقدر زبان داریم.

نقل‌قول
زبان های Functional نزدیک ترین منطق فکری رو به علوم ریاضایت دارن. یکی از اون ها رو یاد بگیر.
متیکا؟ http://amath.colorado.edu/computing/mmm/funcproc.html خیلی قیمتش بالاست  ](*,)
زبان J؟ http://www.cs.trinity.edu/~jhowland/math-talk/functional1/
فانکشنالها خیلی زیادن http://en.wikipedia.org/wiki/Category:Functional_languages کدوم یکی؟
ماکسیما به پای متمتیکا میرسه؟

اگر خواستی R کار کنی مطمن شو که تمام چیز های که در آینده لازم داری دارد.

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

دوستان معمولا به این بی‌محلی میکنن:

http://www.sagemath.org
تو لینک زیر نه اسم sage هست نه اسم maxima نه octave ‌و نه scilab. ولی اسم matlab و mathematica‌ اومده ???
http://en.wikipedia.org/wiki/List_of_programming_languages
عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: alend در 13 دی 1391، 11:44 ق‌ظ
اگر خواستی R کار کنی مطمن شو که تمام چیز های که در آینده لازم داری دارد.

اگر رشته آمار باشی که هیچ شکی نیست  R  همه نیازهاتو بر طرف می کند.
رشته ریاضی ام. تحلیلی بیشتر سروکار داریم تا عددی

من از رشته ریاضی زیاد اطلاعی ندارم.
عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: مجتبی باغبان در 13 دی 1391، 12:32 ب‌ظ
من خودم ریاضی کاربردی می‌خونم یعنی می‌خوندم و اگه بخوام الگوریتم‌های
انالیز عددی یا تحقیق در عملیات رو پیاده‌سازی کنم این کار رو با c++ انجام میدم.
هر چند که الگوریتمی رو که واسه پایان نامم بود از اونجا که توش از الگوریتم یه مقاله دیگه هم استفاده شده بود که نویسنده مقاله اون رو با فرترن نوشته بود منم مجبور شدم  بقیه الگوریتم رو با فرترن بنویسم. ولی در حالت کلی برای پیاده‌سازی الگوریتم از ابتدا  C++ رو ترجیح میدم ولی در صورتی که بخوام از توابعی که از قبل پیاده‌سازی شده فقط استفاده کنم رو به اکتاو یا سایلب یا ماکسیما می‌آرم. با R هم تا حالا کار نکردم.
عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: مجتبی باغبان در 13 دی 1391، 12:43 ب‌ظ
نقل قول از سلمان‌العلما شیرازی:
نقل‌قول
برای اینکه ببینیم چه زبان بیشتر از همه کاربرد داره باید بریم ببینیم که نرم‌افزارهای بزرگ (تو هر زمینه) با چی نوشته شدن. موتور محاسباتی (analysis engine) تمام نرم‌افزارهای محاسباتی غول دنیا که بررسی کردم، یا سی بوده، یا سی++ یا فورترن.
عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: AmirrezaGhaderi در 13 دی 1391، 02:07 ب‌ظ
با چیزهایی که خودت داری میگی، من برداشتم از حرفات اینه:
- یه زبان می خوای که توی کار با اعداد خوب باشه ---> (همه ی زبان ها اینطوری هستن!)
- زبانت قراره تو درسای دانشگاهیت کمکت کنه، نه یه پروژه برای مراکز نظامی امریکا! ---> (پس هرچه ساده تر بهتر)
- زبانت باید آسون باشه که راحت یاد بگیریش چون خیلی وقت نداری. ---> (زبان های دینامیک)
- موقع کار با زبان بتونی به الگوریتم توجه کنی، نه به خود زبان. ---> (زبان های دینامیک... c و ++c و java و go و این ها رو بیخیال شو)
- زبانت باید اجتماع بزرگی داشته باشه که اگه سوالی چیزی داشتی لنگ جواب نمونی (PHP, RUBY, PYTHON)
- زبانت در حدی باشه که برای کارهای روزمره (به غیر ریاضی) هم به دردت بخوره. ---> (فقط از روی تجربه ی شخصی : Python)

واقعا می خواستی کار ریاضی با C انجام بدی؟ یه محاسبه ی ۴ خطی بخوای حل کنی شونصد جا باید با حافظه و پوینتر
ها سر و کله بزنی... اینجوری تقریبا ۹۹٪ باگ هات مربوط میشه به ساختارهای خود زبان، نه به غلط بودن احتمالی الگوریتمت.

یه زبان ساده مثل Python‌ رو یاد بگیر که بتونی روی الگوریتمت تمرکز کنی. توکه نمی خوای برای شرکت های بزرگ
برنامه بنویسی، برای کارهای شخصی خودت میخوای. Python‌ هم کلی برات زیادیه. تازه پایتون پکیج Numpy رو هم داره.
یه سرچ کوچیک بزنی میفهمی که این پکیج توی کارهای ریاضی حرف نداره (حتی بین زبان های دیگه).

کلا اینکه زیاد خودت رو خسته نکن، سعی کن اونی که از همه آسون تره رو یاد بگیری.
عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: alend در 13 دی 1391، 06:30 ب‌ظ
با چیزهایی که خودت داری میگی، من برداشتم از حرفات اینه:
- یه زبان می خوای که توی کار با اعداد خوب باشه ---> (همه ی زبان ها اینطوری هستن!)
- زبانت قراره تو درسای دانشگاهیت کمکت کنه، نه یه پروژه برای مراکز نظامی امریکا! ---> (پس هرچه ساده تر بهتر)
- زبانت باید آسون باشه که راحت یاد بگیریش چون خیلی وقت نداری. ---> (زبان های دینامیک)
- موقع کار با زبان بتونی به الگوریتم توجه کنی، نه به خود زبان. ---> (زبان های دینامیک... c و ++c و java و go و این ها رو بیخیال شو)
- زبانت باید اجتماع بزرگی داشته باشه که اگه سوالی چیزی داشتی لنگ جواب نمونی (PHP, RUBY, PYTHON)
- زبانت در حدی باشه که برای کارهای روزمره (به غیر ریاضی) هم به دردت بخوره. ---> (فقط از روی تجربه ی شخصی : Python)

واقعا می خواستی کار ریاضی با C انجام بدی؟ یه محاسبه ی ۴ خطی بخوای حل کنی شونصد جا باید با حافظه و پوینتر
ها سر و کله بزنی... اینجوری تقریبا ۹۹٪ باگ هات مربوط میشه به ساختارهای خود زبان، نه به غلط بودن احتمالی الگوریتمت.

یه زبان ساده مثل Python‌ رو یاد بگیر که بتونی روی الگوریتمت تمرکز کنی. توکه نمی خوای برای شرکت های بزرگ
برنامه بنویسی، برای کارهای شخصی خودت میخوای. Python‌ هم کلی برات زیادیه. تازه پایتون پکیج Numpy رو هم داره.
یه سرچ کوچیک بزنی میفهمی که این پکیج توی کارهای ریاضی حرف نداره (حتی بین زبان های دیگه).

کلا اینکه زیاد خودت رو خسته نکن، سعی کن اونی که از همه آسون تره رو یاد بگیری.


فقط یک مورد مهم است، آخرین محدودیت که با هر زبان برنامه نویسی با اون روبرو میشی سرعت انجام مخاسبات است. python زبان خوبی است در صورتی که سرعت محاسبات و حافظه مورد استفاده برات مهم نباشد.
من با basic شروع کردم بعد pascal، C#, perl و در نهایت C/C++ به علاوه R همه نیاز هامو برطرف کرد. اگر الگوریتمی قبلا نوشته شده باشد که خوب می شود ۱ یا ۲ خط R اگر الگوریتم نوشته نشده باشد یک    package برای R با C/C++ می نویسم. الیته یک محدودیت R برای داده های حجیم محدودیت حافظه است.
معمولا اول با اسکریپت BASH اول یک آنالیز اولیه انجام می دم بعد آنالیز نهایی را با R انجام می دهم.

حالا چرا اینها رو گفتم!
اگر من روز اول مسیر درست رو می دونستم وقتم صرف pascal، C#, perl نمی کردم.
من از رشته ریاضی اطلاع ندارم ولی شاید بهتر باشه از کسی اطلاعات کامل رو بگیری که این مسیر رو طی کرده و الان راضی است.
بسته به علاقت مقالاتی مرتبط با رشته ات رو که چاپ شده پیدا کن ببین که نرم افزارهایی که جهت آنالیز دادها و توسعه الکوریتم بیشتر استفاده شده چی هستند.
 
براساس تجربه شخصی اگر الگریتمی کند باشد و جدید انو بایک زبان مثل C یا fortran می نویسند. معمولا اول الگوریتم با یک زبان سطح بالا می نویسند و برسی می کنند که آیا جواب می دهد با نه اگر جواب داد انو را با یک زبان می نوسند که حداکثر سرعت اجرا را داشته باشد.
عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: mrmrn در 13 دی 1391، 06:56 ب‌ظ
با چیزهایی که خودت داری میگی، من برداشتم از حرفات اینه:
- یه زبان می خوای که توی کار با اعداد خوب باشه ---> (همه ی زبان ها اینطوری هستن!)
- زبانت قراره تو درسای دانشگاهیت کمکت کنه، نه یه پروژه برای مراکز نظامی امریکا! ---> (پس هرچه ساده تر بهتر)
- زبانت باید آسون باشه که راحت یاد بگیریش چون خیلی وقت نداری. ---> (زبان های دینامیک)
- موقع کار با زبان بتونی به الگوریتم توجه کنی، نه به خود زبان. ---> (زبان های دینامیک... c و ++c و java و go و این ها رو بیخیال شو)
- زبانت باید اجتماع بزرگی داشته باشه که اگه سوالی چیزی داشتی لنگ جواب نمونی (PHP, RUBY, PYTHON)
- زبانت در حدی باشه که برای کارهای روزمره (به غیر ریاضی) هم به دردت بخوره. ---> (فقط از روی تجربه ی شخصی : Python)

واقعا می خواستی کار ریاضی با C انجام بدی؟ یه محاسبه ی ۴ خطی بخوای حل کنی شونصد جا باید با حافظه و پوینتر
ها سر و کله بزنی... اینجوری تقریبا ۹۹٪ باگ هات مربوط میشه به ساختارهای خود زبان، نه به غلط بودن احتمالی الگوریتمت.

یه زبان ساده مثل Python‌ رو یاد بگیر که بتونی روی الگوریتمت تمرکز کنی. توکه نمی خوای برای شرکت های بزرگ
برنامه بنویسی، برای کارهای شخصی خودت میخوای. Python‌ هم کلی برات زیادیه. تازه پایتون پکیج Numpy رو هم داره.
یه سرچ کوچیک بزنی میفهمی که این پکیج توی کارهای ریاضی حرف نداره (حتی بین زبان های دیگه).

کلا اینکه زیاد خودت رو خسته نکن، سعی کن اونی که از همه آسون تره رو یاد بگیری.
بسیار عالی بود.+۱۰
حالا کدوم از همه راحت تره؟ پایتون؟
واینکه میشه در مورد اون numpy بیشتر بگین؟
--- کسی با sage کار نکرده؟شنیدم شبیه پایتونه.
عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: AmirrezaGhaderi در 13 دی 1391، 07:28 ب‌ظ
واینکه میشه در مورد اون numpy بیشتر بگین؟

Numpy یکی از پکیج های معروف پایتونه، که شامل توابع ریاضی و امکاناتی هست که در محاسبات
عددی به درد می خورن. و چون کدهای اصلیش با C‌ نوشته شدن پکیج بسیار پر سرعتی هست. در واقع
نه تنها در پایتون معروفه، کلا بین بقیه زبان های برنامه نویسی هم اسم و رسم داره. مثل
Rails که با اینکه برای Ruby هست اما همه میشناسنش تو هر زبانی...
عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: doomhammer65ir در 13 دی 1391، 07:38 ب‌ظ
شما چند نمونه ساده از الگوریتم هایی که میخوای همانند سازی کنی رو بگو
دوستان هم میتونن نمونه کد بهت بدن
هم بگن کدوم زبون برای اینکار بهتره
هم میتونی ببینی چه شکلی تو هر زبون نوشته میشه
عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: mrmrn در 13 دی 1391، 08:59 ب‌ظ
 من یه سری ماتریس میخوام قطری کنم.
این کار رو تو فرترن و در ویندزد یا با کتابخانه های IMSL که همراه با compaq visual fortran ارائه میشن انجام میدن یا با زیرروالهای آماده ای که تو numerical recipies هست!
از اولیش که نمیشه استفاده کرد.
دومیش رو هم با کمی ویرایش میشه تو لینوکس استفاده کرد.
حالا ما ازچی استفاده کنیم تو لینوکس برامون بهتره؟
من فرترن بلدم.البته sage و numpy رو تعریفشون رو شنیدم.
الان این numpy یجوری انگار با یه دستور میزنه قطری میکنه بی دردسر مثل همون compaq fortran دیگه؟آره؟
عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: doomhammer65ir در 13 دی 1391، 11:36 ب‌ظ
حالا یکی برای ما بگه قطری کردن یعنی چی ؟
عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: کیان در 13 دی 1391، 11:57 ب‌ظ
حالا یکی برای ما بگه قطری کردن یعنی چی ؟
صفر کردن همه آرایه های ماتریس مربعی بجز قطر اصلی
عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: سید مسعود امامیان در 14 دی 1391، 01:08 ق‌ظ
حالا یکی برای ما بگه قطری کردن یعنی چی ؟
صفر کردن همه آرایه های ماتریس مربعی بجز قطر اصلی

باید تمام مقادیر رو کاربر وارد کنه بعدش به غیراز قطر اصلی همه رو صفر کنه یا کاربر فقط مقادیر روی
قطر اصلی رو باید وارد کنه ؟

ساده ترین کد کلی همین !‌ فقط باید با توجه به دستور (if(i==j که مقادیر رو روی قطر اصلی مشخص می کنن را بکار ببریم!

مثلا :

#include <iostream>

using namespace std;

int main()
{
    int a[5][5];

    cout << "Plz enter Nbr : \n" ;
    int n , d = 0;
    cin >> n ;

    for (int i = 1 ; i <= n ; i++)
    {
        for(int j=1 ; j<=n ; j++)

            cin >>a[i][j] ;
    }

    for(int i=1 ; i<=n ; i++)
    {
        for (int j = 1 ; j<=n ; j++ )
        {
            cout << a[i][j] << " " ;

        }
        cout << "\n" ;
    }
    cout << d ;
    cin.get();

    return 0;
}
عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: doomhammer65ir در 14 دی 1391، 03:29 ق‌ظ
یا همین نمونه با سی پلاس
کاربر باید در پرونده ی input.txt در خط نخست اندازه ی ماتریس مربعی رو وارد کنه
سپس در خط های پس از اون هر رج ( سطر ) رو به ترتیب وارد کنه . هر درایه باید با tab از درایه ی پیشین جدا شه  . سطر ها با enter از سطر پیشین  جدا شه . برآیند ( خروجی ) در output.txt انبار خواهد شد .

#include <cstdlib>
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
#include <vector>
#include <cctype>
using namespace std;

int main()
{
  fstream input_handle ;
  input_handle.open ("./input.txt",fstream::in);
 
  string temp_str;
 
  if(input_handle.is_open ())
    {
      getline(input_handle,temp_str);
    }
 
  int size_matrix;
  stringstream temp_ss(temp_str);
  temp_ss>>size_matrix;
 
  vector< vector <int> > matrix (size_matrix); // two_dimensional vector . vector is dynamic array ;
 
  for(int i=0;i<size_matrix;i++)
    {
      getline(input_handle,temp_str);
      istringstream iss(temp_str);
     
      for(int j=0  ;j<size_matrix && iss >> temp_str ;j++)
        {
          stringstream temp_ss(temp_str);
          int temp_int;
          temp_ss >> temp_int;
          matrix[i][j]=temp_int ;
        }
    }
 
  input_handle.close();
 
  for(int i=0;i<size_matrix;i++) // inja qotri mikoneh.
    {
      for(int j=0;j<size_matrix;j++)
        {
          if(i!=j)
            {
              matrix[i][j]=0;
            }
        }
    }
  fstream output_handle;
  output_handle.open ("./output.txt",fstream::out);
 
  output_handle <<"size of Matrix="<<size_matrix<<endl;
  for(int i=0;i<size_matrix;i++)
    {
      for (int j=0;j<size_matrix;j++)
        {
          output_handle <<matrix[i][j]<<"\t";
        }
      output_handle<<endl;
    }
  output_handle.close ();
  return 0;
}


تنها چیزی که در این کد کمی سخت هست کار با فایل ها و تبدیل یک خط خوانده شده به چند عدد جداگانه هستش . یکبار که این کار رو انجام بدید دستتون میاد .
کل کاری که میخواید رو اینجا انجام میده :
for(int i=0;i<size_matrix;i++) 
    {
      for(int j=0;j<size_matrix;j++)
        {
          if(i!=j)
            {
              matrix[i][j]=0;
            }
        }
    }
عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: alend در 14 دی 1391، 08:34 ق‌ظ
این پست در پست های آتی ویرایش شد.
عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: امید توانا در 14 دی 1391، 10:15 ق‌ظ
حالا یکی برای ما بگه قطری کردن یعنی چی ؟
ماتریس مربعی رو قطری‌شدنی (diagonizable) می‌نامیم اگر پایه‌ای برای فضای برداری وجود داشته باشه که نمایش ماتریس در اون پایه یک ماتریس قطری باشه. به عباریت دیگه ماتریس A رو قطری‌شدنی می‌نامیم هرگاه ماتریس وارون‌پذیر P و ماتریس قطری D وجود داشته باشه که D=P^(-1) A P. خود ماتریس قطری یعنی ماتریسی که همه درایه‌هایی که روی قطری اصلی نیستند صفر باشند. قطری کردن ماتریس به این سادگی‌ها نیست که یک ماتریس رو بگیری و از اون ماتریسی جدید بسازی که فقط درایه‌های غیر قطر اصلی رو توش صفر کرده باشی. یعنی دوستان فکر می‌کنن که واقعا یک کتابخانه تو فورترن یا هر زیان دیگه می‌نویسن تا این کار رو انجام بده ](*,).
برگشت به سوال اصلی این پست، اول اینکه من خودم رشته ریاضی هستم و استخون تو این راه خورد کردم. راهنمایی هم کردم در مورد زبانهای مفید این رشته. توصیه کلی اینه که الگوریتم نویسی رو یاد بگیری اول و بعد هر زبانی رو که احتیاج داشتی در عرض ۲ هفته کامل یادمی‌گیری. توصیه دوم که در اثر مطالعه زبان D به مدت ۲ هفته دستم اومده: بسیار زبان خوبی برای همه رشته‌ها به خصوص رشته ریاضی است. نگاهی به کتابخانه‌های std.algorithm و std.array  و std.range بیندازید تا متوجه شوید.
عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: alend در 14 دی 1391، 10:23 ق‌ظ
حالا یکی برای ما بگه قطری کردن یعنی چی ؟
ماتریس مربعی رو قطری‌شدنی (diagonizable) می‌نامیم اگر پایه‌ای برای فضای برداری وجود داشته باشه که نمایش ماتریس در اون پایه یک ماتریس قطری باشه. به عباریت دیگه ماتریس A رو قطری‌شدنی می‌نامیم هرگاه ماتریس وارون‌پذیر P و ماتریس قطری D وجود داشته باشه که D=P^(-1) A P. خود ماتریس قطری یعنی ماتریسی که همه درایه‌هایی که روی قطری اصلی نیستند صفر باشند. قطری کردن ماتریس به این سادگی‌ها نیست که یک ماتریس رو بگیری و از اون ماتریسی جدید بسازی که فقط درایه‌های غیر قطر اصلی رو توش صفر کرده باشی. یعنی دوستان فکر می‌کنن که واقعا یک کتابخانه تو فورترن یا هر زیان دیگه می‌نویسن تا این کار رو انجام بده ](*,).
برگشت به سوال اصلی این پست، اول اینکه من خودم رشته ریاضی هستم و استخون تو این راه خورد کردم. راهنمایی هم کردم در مورد زبانهای مفید این رشته. توصیه کلی اینه که الگوریتم نویسی رو یاد بگیری اول و بعد هر زبانی رو که احتیاج داشتی در عرض ۲ هفته کامل یادمی‌گیری. توصیه دوم که در اثر مطالعه زبان D به مدت ۲ هفته دستم اومده: بسیار زبان خوبی برای همه رشته‌ها به خصوص رشته ریاضی است. نگاهی به کتابخانه‌های std.algorithm و std.array  و std.range بیندازید تا متوجه شوید.
ربطی به svd دارد؟
عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: alend در 14 دی 1391، 10:30 ق‌ظ
آره مثل اینکه دارد!

کد تصحیح شده در زبان R (امید وارم این بار درست باشد!)
> A=matrix(1:4,2)
> A
     [,1] [,2]
[1,]    1    3
[2,]    2    4
> diag(diag(A)) # Just keep the diag
     [,1] [,2]
[1,]    1    0
[2,]    0    4
> result=svd(A)
> result
$d
[1] 5.4649857 0.3659662

$u
           [,1]       [,2]
[1,] -0.5760484 -0.8174156
[2,] -0.8174156  0.5760484

$v
           [,1]       [,2]
[1,] -0.4045536  0.9145143
[2,] -0.9145143 -0.4045536

> diag(result$d)
    [,1]      [,2]
[1,] 5.464986 0.0000000
[2,] 0.000000 0.3659662
 
البته با eigen(A) هم میشه مستقیم مقادیر eigen را بدست آورد.
واقعیتش من حتی دوره دبیرستان هم رشتم ریاضی نبوده ولی حدس می زدم یک جای کار مشکل داره!

عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: سید مسعود امامیان در 14 دی 1391، 12:04 ب‌ظ
حالا یکی برای ما بگه قطری کردن یعنی چی ؟
توصیه کلی اینه که الگوریتم نویسی رو یاد بگیری اول و بعد هر زبانی رو که احتیاج داشتی در عرض ۲ هفته کامل یادمی‌گیری.

چه کتاب هایی رو برای الگوریتم نویسی پیشنهاد می کنید؟
عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: alend در 14 دی 1391، 12:13 ب‌ظ
http://www.amazon.com/s?ie=UTF8&field-keywords=r&index=blended&link_code=qs&sourceid=Mozilla-search&tag=wwwcanoniccom-20
عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: کیان در 14 دی 1391، 01:20 ب‌ظ
صفر کردن همه آرایه های ماتریس مربعی بجز قطر اصلی

باید تمام مقادیر رو کاربر وارد کنه بعدش به غیراز قطر اصلی همه رو صفر کنه یا کاربر فقط مقادیر روی
قطر اصلی رو باید وارد کنه ؟
نه اینکه آرایه رو دستی صفر کنیم!
معمولا یک همبستگی ماتریسی داریم. مجموعه ای از ماتریسها که محصول یک دستگاه هستند. یکی از این ماتریس ها رو به عنوان پایه انتخاب میکنیم. معمولا به پایه خصوصیاتی نسبت میدن که یکی اش قطری بودنه. با یک سری محاسبات در صورت وجود یک سری شرایط که آقای امید توانا در بالا گفتند پایه رو قطری میکنیم و بقیه ماتریسها رو با داشتن پایه دوباره حساب میکنیم. یک روش اینطوریه که آرایه های ماتریس هدف رو a b c d ...‌ میذارند و شروع میکنند به حل معادلات مجهولی که وجود داره. هر چی ماتریس چگالتر باشه (صفر کمتری داشته باشه) محاسبه زمانبرتر میشه. حالا شما یک ماتریس 30000ٓx30000 در نظر بگیر‌ که چه قدر محاسبه میبره.

نقل‌قول
توصیه دوم که در اثر مطالعه زبان D به مدت ۲ هفته دستم اومده: بسیار زبان خوبی برای همه رشته‌ها به خصوص رشته ریاضی است. نگاهی به کتابخانه‌های std.algorithm و std.array  و std.range بیندازید تا متوجه شوید.
منابع فارسی داره؟
عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: alend در 14 دی 1391، 01:42 ب‌ظ
اگر مظورت محاسبه عدد ایگن باشد:

system.time(rs<-eigen(data))
   user  system elapsed
209.674 115.278 132.577

برای ماتریکس 3000*3000 و ۲.۸GH cpu، ماتریس دنس و اعداد اعشاری با دقت مضاعف

یک سری کتایخانه فعال نبود بعد از فعال سازی بیشتر آنالیز به صورت موازی انجام شد:
user  system elapsed
183.139   0.344  43.325
عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: doomhammer65ir در 14 دی 1391، 01:49 ب‌ظ
خوب ببینید این کار یک چیزی هست مایه های کاری که من نوشتم . یعنی بخش خواندن از فایل و ساختن آرایه های دو بعدی ( ماتریس ) باید اونجوری که نوشتم انجام بشه . چه 10 درایه داشته باشه چه 100000 درایه . دسترسی به درایه های آرایه دو بعدی رو هم که در سی پلاس دیدید ( البته روش های دیگه ای هم هست لاکن اون روش آسون تریته ) .
خوب می بینید که بخش انجام قطری کردن در R   همه خودکار انجام میشه . لاکن سی پلاس زبان رویه ای هست و باید بهش بگید چی کار کنه . در سی پلاس این محاسبات روی ماتریس پایه و ماتریس های دیگه رو باید دستی انجام بدید
اگر هدفتون زودتر رسیدن به پاسخ هست خوب R بهتره . اگر هدفتون پیاده کردن الگوریتم و روشن تر شدن الگوریتم برای خودتون هست سی پلاس بهتره .
عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: r_m1232002 در 14 دی 1391، 01:50 ب‌ظ
تا اینجا سایر دوستان مطالب مفیدی رو مطرح کردن اما جای یک نگاه از بالا به این مطلب رو خالی دیدم که سعی دارم در حد توان خود در این رابطه توضیح بدم. در آغاز هم متذکر بشم که رشته بنده مهندسی کامپیوتر هست اگرچه تمام تلاش خود رو می کنم تا از دید شما به قضیه نگاه کنم.

هدف از زبان های برنامه نویسی حل مسایل با استفاده از راه حل هایی ست که خود ما آنها را می دانیم با این تفاوت که کامپیوتر ها منابع بیشتری نسبت به ما در دنبال کردن راه حل های ما دارند و می توانند نسبت به ما با سرعت بیشتر و بدون خستگی به پاسخ برسند.
به این ترتیب از این دیدگاه کل فرایند برنامه نویسی را می توان عمل شرح راه حل مساله به شکلی قابل فهم برای کامپیوتر دانست. و این «شکل قابل فهم برای کامپیوتر» دقیقا همان چیزی است که وجه تمایز زبان های برنامه نویسی است.

به طور کلی «شکل قابل فهم راه حل مساله» برای ما انسان ها و کامپیوتر ها بسیار متفاوت است و عمل برنامه نویسی تلاشی است برای تبدیل یک «شکل قابل فهم» به «شکل قابل فهم» دیگر.
فاصله ی میان این دو «شکل قابل فهم» متناسب با میزان تلاشی است که ما باید در حین فرایند برنامه نویسی متحمل شویم. به این ترتیب هرچه این فاصبه کمتر باشد ما نیاز به تلاش کمتری برای رسیدن به مقصود خود داریم.

بیایید ابتدا به «شکل قابل فهم» انسانی نگاهی بیاندازیم. آنچه به عنوان فرمول ها و روابط ریاضی جهت حل مساله بر روی کاغذ نوشته می شوند به تنهایی کافی نیستند. همان طور که بارها به تجربه دیده اید برای فهم یک راه حل ریاضی ما به توضیحات متنی هم نیاز داریم. این توضیحات به همراه روابط ریاضی مدلی را در ذهن ما می سازند که ما را قادر به درک راه حل مساله می سازد. به این ترتیب نهایتا هدف ایجاد یک مدل از شیوه حل مساله در ذهن ما است.

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

خوب ظاهرا تا اینجا مقاله طولانی نوشتم اما هنوز بحث تموم نشده و مجبورم ادامه بدم. امیدوارم خسته نشده باشید و بتونید تا پایان من رو همراهی کنید.

سه مورد از پارادیگم های متداول برنامه نویسی رو به عنوان مترجمی بین مفاهیم قابل درک بین انسان و ماشین به طور مختصر (!) شرح دادم. اما باید بدونید مشکلی که در پارادیگم اول مطرح شد در خصوص نیاز به توضیح مساله به ساده ترین شکل در مورد سایر پارادیگم ها نیز برقرار است. بنابراین همچنان نیاز هست تا تلاش قابل توجهی برای حل این مشکل صرف بشه. اما خوب این موضوع به این معنی نیست که شما کسی هستید که باید این تلاش رو صرف کنید بلکه این امکان هست که از تلاش های دیگران نیز استفاده کنید!
با توجه به این که شرح یک مفهوم برای کامپیوتر توسط یک زبان برنامه نویسی تنها برای یکبار کافی است متخصصین زمینه های مختلف تصمیم گرفتند تا هر کدام در زمینه کاری خود و با توجه به نیازهایی که دارند اقدام به شرح مفاهیم پرکاربرد کنند تا بعد از آن خود و دیگران صرفا از این تعاریف استفاده کنند. این موضوع موجب شد تا دو حرکت مختلف در زمینه علوم کامپیوتر شکل بگیره. نخست بحث کتابخانه های زبان های برنامه نویسی و دوم بحث زبان های برنامه نویسی زمینه-محور.
کتابخانه یک زبان برنامه نویسی به مجموعه ای از برنامه های خاص آن زبان گفته می شود که به شرح و تعریف مفاهیم مشخصی از طریق آن زبان می پردازند و قابلیت استفاده مجدد را دارا می باشند. به طور مثال شما می توانید تعریف یک شی ماتریس را در یک زبان شی گرا در یک برنامه انجام دهید و آن را ذخیره کنید. پس از آن در برنامه های آتی خود می توانید در صورت نیاز از همان تعریف قبلی به واسطه برنامه ای که نوشته بودید استفاده کنید. به این شکل کتابخانه های بسیاری در زمینه های مختلف چون ریاضیات ، فیزیک ، زیست شناسی ، جامعه شناسی و ... طراحی شدند که بسیاری از زحمات برنامه نویسان را کاهش قابل توجهی دادند. اما نکته قابل توجه در این زمینه این است که شما در هنگام استفاده از کتابخانه ها همچنان از همان طرز فکری استفاده می کنید که زبان برنامه نویسی شما مطابق آن طراحی شده است و دقیقا با همان مزایا و معایب مواجه هستید. نکته دیگر اینکه در این مورد شما منحصر به کتابخانه های موجود هستید و میزان کتابخانه هایی که برای زبان شما طراحی شده اند و پشتیبانی که از آنها صورت می گیرد موضوع بسیار مهمی محسوب می شود.
زبان های برنامه نویسی زمینه -محور ( البته این اصلاح رو من خودم اینجا استفاده کردم و اصطلاح انگلیسی متداول اون Field-Specific Programming Languages هست)روش دیگری بودند که مورد توجه قرار گرفتند. تا پیش از این زمان زبان های برنامه نویسی با هدف حل تمامی مسایل و کاربرد عمومی طراحی می شدند اما زبان های زمینه-محور صرفا جهت استفاده در یک زمینه خاص طراحی شدند. در هر زمینه مفاهیم ، مدل ها و شیوه های کاری خاصی وجود دارد که مختص نیازهای آن به وجود آمده است. زبان های زمینه-محور زبان های هستند که به طور خاص این مفاهیم و شیوه ها را پشتیبانی می کنند و فکر کردن به این شکل را بسیار ساده تر می کنند. به طور مثال اگر شما نیاز به استفاده از ماتریس دارید که یکی از مفاهیم معمول ریاضیات است چندین راه در مقابل خود پیش رو دارید: می توانید مفهوم ماتریس را توسط یک زبان عمومی شخصا پیاده سازی کنید یا می توانید از یک کتابخانه ریاضیات که از مفهوم ماتریس پشتیبانی می کند برای زبان خود استفاده کنید و یا می توانید از یک زبان زمینه-محور که در زمینه ریاضیات طراحی شده است استفاده کنید. چنین زبانی در خود مفهوم ماتریس را دارد و فقط کافی است شما از آن استفاده کنید بی آنکه نیاز به پیاده سازی آن یا استفاده از یک کتابخانه جانبی باشد.
بعد از تمامی این صحبت ها بهتر است یک نتیجه گیری کنیم. نظر شخصی بنده این است که شما احتمالا در زمینه کاری خود با دو نوع نیاز مواجه هستید. دسته اول مربوط به مسایل متداولی است که شما اغلب در زمینه کاری خود با آنها برخورد می کنید. در این خصوص بهتر است شما تحقیق کنید و ببینید سایر فعالان تخصص شما از چه زبان برنامه نویسی زمینه-محور ی استفاده می کنند ، مقالاتی که در این خصوص چاپ می شوند بیشتر چه زبان برنامه نویسی را مورد استفاده قرار داده اند و در دانشگاه و محل کار خود نیازمند چه زبان زمینه-محوری هستید. به این ترتیب یک زبان را انتخاب کنید و اغلب فعالیت های خود را توسط آن به انجام برسانید. خوبی دیگر این کار این خواهد بود که حاصل کار شما نیز برای سایر همکارانتان قابل تعامل خواهد بود.
دسته دوم مربوط به مسایلی است که شما اغلب در یک فرایند تحقیقاتی و به عنوان اولین نفر با آنها برخورد می کنید و هنوز هیچ پشتیبانی از آنها در زبان زمینه-محور مورد نظر شما وجود ندارد و یا اینکه نیازهای شما به سطحی رسیده که زبان زمینه-محور شما قادر به پاسخگویی نمی باشد. در این مورد بهتر است یک زبان با کاربرد عمومی را که سطح بالایی نیز داشته باشد انتخاب کنید و کار خود را توسط آن به انجام رسانید. قاعدتا در انتخاب این زبان فاکتورهایی هستند که نقش مهمی را بازی می کنند از قبیل سادگی کار با زبان، قدرت کافی آن برای انجام امور و وجود کاربرانی با تخصص مشابه شما و به تبع آن وجود کتابخانه های مختص زمینه فعالیت شما برای آن زبان.
دسته اول نیازمند تحقیق بیشتری از سوی شما است و چون بنده تخصصی در این زمینه ندارم نمی توانم نظر مفیدی دهم اما در خصوص دسته دوم به خود اجازه می دهم تا زبان پایتون را به شما پیشنهاد دهم. این زبان  سطح بالایی دارد و کار با آن بسیار ساده تر از بسیاری زبان های دیگر است و به شما اجازه می دهد بیشتر بر مساله تمرکز کنید تا مسایل مربوط به ساختار کامپیوتر. در عین حال قابلیت استفاده از برنامه های زبان سی را نیز دارد و به همین دلیل می توان در صورتی که سرعت خوبی در اجرای برنامه ها بدست نیامد با استفاده از زبان سی سرعت را بسیار بالا برد. کتابخانه ریاضی و جامعه کاربری بسیار خوبی هم دارد.
خوب امیدوارم صحبتهایم مفید واقع شود. در صورتی که باز هم سوالی داشتید و در توانم بود خوشحال خواهم شد پاسخ دهم.
عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: alend در 14 دی 1391، 02:22 ب‌ظ
اگر دوستان لطف کنند و محاسبه عدد ایگن رو برای ماتریکس ۳۰۰۰*۳۰۰۰، اعداد  duoble و توزیع uniform distribution  در سایر نرم افزار ها انجام بدهند شاید بتوان بهتر مقایسه کرد.
عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: majidkamali1370 در 14 دی 1391، 02:32 ب‌ظ
با تشکر از آقا/خانم r_m1232002
خیلی مفید بود. ممنون.
عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: doomhammer65ir در 14 دی 1391، 02:48 ب‌ظ
اینجور که بنده برداشت کردم زبان زمینه محور در ریاضی میشه R و فورترن . زبان سطح بالا هم سی پلاس و پیتون و سی شارپ و اینها میتونه باشه .
====================================
نقل‌قول
http://eigen.tuxfamily.org/dox/index.html
عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: alend در 14 دی 1391، 03:06 ب‌ظ
کتابخانه های ریاضی برای C++:
Armadillo که می تواند از Intel MKL, AMD ACML, OpenBLAS, GotoBLAS استفاده کند.
http://arma.sourceforge.net/
eigen:
http://eigen.tuxfamily.org
boost:
http://www.boost.org/


عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: امیر شهریاری در 15 دی 1391، 07:12 ب‌ظ
1+
r_m1232002
عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: کیان در 21 دی 1391، 12:33 ق‌ظ
پس پایتون؛
(یک بایت از پایتون رو شروع کردم)
عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: کیان در 21 دی 1391، 12:36 ق‌ظ
بهترین کتاب پایتون فارس (چاپی)؟
عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: سلمان م. در 21 دی 1391، 09:56 ق‌ظ
من چندتا کتاب پایتون (انگلیسی) خوندم. ولی خداییش هیچی این نمی‌شد: A Byte of Python
http://www.swaroopch.com/notes/python تحت لایسنس آزاد هم هست. توصیه‌ی من اینه که حتما اینو بخون، خیلی مفید و مختصر توضیح داده.
اگه با فایل پی‌دی‌اف هم مشکل داری پرینتش کن، ارزششو داره.
عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: کیان در 21 دی 1391، 01:09 ب‌ظ
ممنون. دارم فارسیش رو میخونم: http://forum.ubuntu.ir/index.php/topic,52932.msg422772.html#msg422772
عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: سلمان م. در 21 دی 1391، 01:52 ب‌ظ
خواهش می‌کنم ولی
اگه می‌تونی انگلیسیش رو بخون. چون ویرایش جدیدش، ۳ دسامبر ۲۰۱۲ اومده بیرون. احتمالا اونی که شما می‌خونی ویرایش ۲۰۰۸ هست.
عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: کیان در 21 دی 1391، 07:33 ب‌ظ
فعلا دارم اینرو میخونم
http://libooks.ir/Libooks%20Files/Persian/Programming-DataBase/A-Byte-Of%20-Python.tar.bz2
عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: کیان در 21 دی 1391، 07:35 ب‌ظ
انگلیسی برای بعد ازامتحانها ;)
http://files.swaroopch.com/python/byte_of_python.pdf
عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: کیان در 26 دی 1391، 04:14 ب‌ظ
(http://upload.wikimedia.org/wikipedia/commons/thumb/b/b6/Gnome-mime-application-pdf.svg/60px-Gnome-mime-application-pdf.svg.png)
کتاب رایگان «الگوریتم»: http://upload.wikimedia.org/wikipedia/commons/8/81/Algorithms.pdf
برنامه نویسی شل: http://upload.wikimedia.org/wikipedia/commons/0/09/Bourne_Shell_Scripting.pdf
راهنمای پایتون 2.6 برای تازه کارها: http://upload.wikimedia.org/wikipedia/commons/6/69/Non-Programmer%27s_Tutorial_for_Python_2.6.pdf

برنامه نویسی سی:‌ http://upload.wikimedia.org/wikipedia/commons/0/07/C_Programming.pdf
C برای تازه کارها:‌ http://en.wikibooks.org/wiki/Wikibooks:Collections/A_Little_C_Primer
برنامه نویسی تی سی ال: http://en.wikibooks.org/wiki/Tcl_Programming/Print_version
عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: سید مسعود امامیان در 26 دی 1391، 06:44 ب‌ظ
نخواستم تاپیک جدا بازکنم :
آیا کتابی هست که هدرهای مختلف سی ++ رو توضیح داده باشه ؟‌همراه با مثال ؟
مثل Assistant Qt که مثال های کاربردی فراوان داره .
عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: doomhammer65ir در 27 دی 1391، 03:07 ق‌ظ
http://www.cplusplus.com/reference/
عنوان: آشنایی با زبان برنامه نویسی Haskell
ارسال شده توسط: کیان در 07 فروردین 1392، 01:52 ق‌ظ
کتاب یادگیری Haskell:
http://upload.wikimedia.org/wikipedia/commons/2/26/Haskell.pdf

معرفی برنامه نویسی فانکشنال:
http://www.mnzadeh.com/1392/01/beginning-functional-programming/

منابع آموزشی بیشتر: http://forum.ubuntu.ir/index.php?topic=60747.msg496917#msg496917
عنوان: پاسخ : آشنایی با زبان برنامه نویسی Haskell
ارسال شده توسط: محمدرضا ح. در 08 فروردین 1392، 10:38 ب‌ظ
کتاب یادگیری Haskell:
http://upload.wikimedia.org/wikipedia/commons/2/26/Haskell.pdf

معرفی برنامه نویسی فانکشنال:
http://www.mnzadeh.com/1392/01/beginning-functional-programming/

ایول :) خیلی از سینتکسش خوشم اومد.
عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: کیان در 10 فروردین 1392، 11:38 ق‌ظ
ویدیوهای آموزشی هسکل: http://www.haskell.org/haskellwiki/Video_presentations

ویکیپدیای فارسی: http://fa.wikipedia.org/wiki/%D9%87%D8%B3%DA%A9%D9%84_%28%D8%B2%D8%A8%D8%A7%D9%86_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87%E2%80%8C%D9%86%D9%88%DB%8C%D8%B3%DB%8C%29

یکی درباره هسکل می نویسه:‌ http://pl.pooya.me
عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: محمدرضا ح. در 10 فروردین 1392، 12:44 ب‌ظ
ویدیوهای آموزشی هسکل: http://www.haskell.org/haskellwiki/Video_presentations

ویکیپدیای فارسی: http://fa.wikipedia.org/wiki/%D9%87%D8%B3%DA%A9%D9%84_%28%D8%B2%D8%A8%D8%A7%D9%86_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87%E2%80%8C%D9%86%D9%88%DB%8C%D8%B3%DB%8C%29

یکی درباره هسکل می نویسه:‌ http://pl.pooya.me

دقت کنی منم یه تاپیک در موردش زدم :D
عنوان: پاسخ : نزدیکترین زبان برنامه نویسی به زبان علم؟
ارسال شده توسط: کیان در 15 امرداد 1392، 10:45 ب‌ظ
R از توانایی هایی رو که لازم داری این ها رو دارد:
انتگرال،ماتریسها و مدل سازی شکل های فضایی

سرعت R هم بستگی به تجربه دارد.
لیندا courseی به نام Up and Running with R (http://www.lynda.com/R-tutorials/Up-Running-R/120612-2.html?srchtrk=index%3a0%0alinktypeid%3a2%0aq%3a%22Up+and+Running+with+r%0apage%3a1%0as%3arelevance%0asa%3atrue%0aproducttypeid%3a2) داره، اگر کاربری لینک دانلودش رو داره یا پیدا کرد به من هم پیام بده :)