زمان کنونی: ۱۰ فروردین ۱۴۰۳, ۰۹:۴۹ ق.ظ مهمان گرامی به انجمن مانشت خوش آمدید. برای استفاده از تمامی امکانات انجمن می‌توانید عضو شوید.
گزینه‌های شما (ورودثبت نام)

تفاوت زبانهای روالی(پروسه ای) با زبانهای تابعی

ارسال:
  

ldns0098 پرسیده:

تفاوت زبانهای روالی(پروسه ای) با زبانهای تابعی

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

پ.ن: در کنکور ۸۱ علوم کامپیوتر به صورت ضمنی تفوت این دو مورد پرسش قرار گرفته
نقل قول این ارسال در یک پاسخ

۱
ارسال:
  

blackhalo1989 پاسخ داده:

RE: تفاوت زبانهای روالی(پروسه ای) با زبانهای تابعی

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

ارسال:
  

ldns0098 پاسخ داده:

RE: تفاوت زبانهای روالی(پروسه ای) با زبانهای تابعی

(۰۶ آذر ۱۳۹۳ ۱۱:۰۲ ب.ظ)blackhalo1989 نوشته شده توسط:  یه زمانی یه مطالعاتی راجع به زبان های مختلف داشتم. اینها چیزایی هست که یادم مونده. الزاما ممکنه درست نباشه البته.
ساید افکت یعنی هر زمانی یه سری ورودی خاص به یه تابع بدید یه سری خروجی خاص رو تحویل بگیرید. در یه زبان غیر تابعی، خروجی یک تابع تابعی از ورودی ها + وضعیت هست. مثلا ممکنه یه تابع داشته باشید که خروجیش به مقدار یه متغیر global وابسته باشه. در این صورت ممکنه یه ورودی خاص در زمان های مختلف خروجی های متفاوتی داشته باشه. اگر نفهدمیدید مفهوم ساید افکت رو بگید تا مثال واقعی بزنم.
وقتی ساید افکت حذف شد میتونید خیلی راحت برنامه رو concurrent کنید چون دیگه احتیاجی به رعایت انحصار متقابل نیست.

یعنی شما میگین ساید افکت تو زبانهای تابعی رخ نمیده؟!
والا اصل سوال اصن این بود که میپرسید اگه زبان روالی باشه، چه وِیژگی ای داره؟ و پاسخ این بود که هرگز ساید افکت رخ نمیده، من هم حساس شدم که چرایی این موضوعو پاسخ بدم. البته میشه حفظش کرد! ولی ترجیح میدم بفهمم چرا
یافتن تمامی ارسال‌های این کاربر
نقل قول این ارسال در یک پاسخ

ارسال:
  

blackhalo1989 پاسخ داده:

RE: تفاوت زبانهای روالی(پروسه ای) با زبانهای تابعی

(۰۷ آذر ۱۳۹۳ ۰۱:۰۸ ق.ظ)ldns0098 نوشته شده توسط:  
(06 آذر ۱۳۹۳ ۱۱:۰۲ ب.ظ)blackhalo1989 نوشته شده توسط:  یه زمانی یه مطالعاتی راجع به زبان های مختلف داشتم. اینها چیزایی هست که یادم مونده. الزاما ممکنه درست نباشه البته.
ساید افکت یعنی هر زمانی یه سری ورودی خاص به یه تابع بدید یه سری خروجی خاص رو تحویل بگیرید. در یه زبان غیر تابعی، خروجی یک تابع تابعی از ورودی ها + وضعیت هست. مثلا ممکنه یه تابع داشته باشید که خروجیش به مقدار یه متغیر global وابسته باشه. در این صورت ممکنه یه ورودی خاص در زمان های مختلف خروجی های متفاوتی داشته باشه. اگر نفهدمیدید مفهوم ساید افکت رو بگید تا مثال واقعی بزنم.
وقتی ساید افکت حذف شد میتونید خیلی راحت برنامه رو concurrent کنید چون دیگه احتیاجی به رعایت انحصار متقابل نیست.
یعنی شما میگین ساید افکت تو زبانهای تابعی رخ نمیده؟!
والا اصل سوال اصن این بود که میپرسید اگه زبان روالی باشه، چه وِیژگی ای داره؟ و پاسخ این بود که هرگز ساید افکت رخ نمیده، من هم حساس شدم که چرایی این موضوعو پاسخ بدم. البته میشه حفظش کرد! ولی ترجیح میدم بفهمم چرا
زبان هایی که تابعی خالص باشن (pure functional) ساید افکت ندارن.
زبان های روالی ساید افکت دارن.
چیزی که تو ذهنمه ولی مطمئن نیستم اینه که یه زبان تابعی خالص اصلا متغیر نداره. بنابراین اصلا نمیتونه حالت رو نگه داره پس نمیتونه ساید افکت هم داشته باشه.
حفظ کردن این مفاهیم مثل رویکرد حرفه و فن دوره راهنماییه که الان من چیزی ازش یادم نمونده. این مسایل رو باید واقعا تو عمل دید نه اینکه حفظ کرد. مثلا باید یه مدت با یه زبان تابعی خالص مثل هسکل کار کرد تا بفهمید منظور از ساید افکت و حالت چیه و چطور میشه برنامه رو همزمان کرد.
یافتن تمامی ارسال‌های این کاربر
نقل قول این ارسال در یک پاسخ

ارسال:
  

ldns0098 پاسخ داده:

RE: تفاوت زبانهای روالی(پروسه ای) با زبانهای تابعی

(۰۷ آذر ۱۳۹۳ ۰۱:۲۸ ق.ظ)blackhalo1989 نوشته شده توسط:  زبان هایی که تابعی خالص باشن (pure functional) ساید افکت ندارن.
زبان های روالی ساید افکت دارن.
این دقیقا عکس چیزیه که تو کتاب گفته.Exclamation
یافتن تمامی ارسال‌های این کاربر
نقل قول این ارسال در یک پاسخ

ارسال:
  

Ametrine پاسخ داده:

RE: تفاوت زبانهای روالی(پروسه ای) با زبانهای تابعی

(۰۷ آذر ۱۳۹۳ ۰۹:۴۹ ق.ظ)ldns0098 نوشته شده توسط:  
(07 آذر ۱۳۹۳ ۰۱:۲۸ ق.ظ)blackhalo1989 نوشته شده توسط:  زبان هایی که تابعی خالص باشن (pure functional) ساید افکت ندارن.
زبان های روالی ساید افکت دارن.
این دقیقا عکس چیزیه که تو کتاب گفته.Exclamation

مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.
یه جدول از مقایسه ی انواع مدل های زبان های برنامه سازی نوشته
برای زبان های تابعی نوشته که ساید افکت ندارن.
یافتن تمامی ارسال‌های این کاربر
نقل قول این ارسال در یک پاسخ

۰
ارسال:
  

MShariati پاسخ داده:

RE: تفاوت زبانهای روالی(پروسه ای) با زبانهای تابعی

(۰۶ آذر ۱۳۹۳ ۱۲:۳۸ ب.ظ)ldns0098 نوشته شده توسط:  ممنون میشم کسی راهنمایی کنه البته تو سایتهای خارجی مطلب زیاد بود اما خیلی تکنیکال بودن. من تفاوت بارزشون رو میخوام بدونم.

پ.ن: در کنکور ۸۱ علوم کامپیوتر به صورت ضمنی تفوت این دو مورد پرسش قرار گرفته

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

ارسال:
  

ldns0098 پاسخ داده:

RE: تفاوت زبانهای روالی(پروسه ای) با زبانهای تابعی

(۰۶ آذر ۱۳۹۳ ۰۱:۵۱ ب.ظ)MShariati نوشته شده توسط:  سلام
البته من تو این زمینه خیلی اطلاعات ندارم ولی فکر کنم جواب شما این باشه:
در زبان‌های روالی، شما باید ریز روال انجام کارها رو مشخص کنی و با متغیرها و دستکاری داده سروکار داری. مثلاً برای جابجایی مقدار دو متغیر اول یک متغیر موقت ایجاد میکنی و ...
در زبان‌های تابعی شما قدری سطح بالاتر عمل می‌کنید و با دستکاری مستقیم داده‌ها سروکار ندارید بلکه عملکردها و تابع‌ها رو بصورت تودرتو فراخوانی می‌کنید. برنامه‌نویسی با JQuery تا حدی با این نوع برنامه‌نویسی شباهت داره. در این روش از تئوری توابع بازگشتی ریاضیات استفاده می‌شه و برخلاف روش قبلی اینجا ترتیب انجام کارها چندان مهم نیست.

ممنون. بعد با توجه به این توضیح عدم وجود side effect در زبانهای رویه ای رو چطور توجیه میکنین؟
یافتن تمامی ارسال‌های این کاربر
نقل قول این ارسال در یک پاسخ

ارسال:
  

MShariati پاسخ داده:

RE: تفاوت زبانهای روالی(پروسه ای) با زبانهای تابعی

(۰۶ آذر ۱۳۹۳ ۰۲:۵۲ ب.ظ)ldns0098 نوشته شده توسط:  
(06 آذر ۱۳۹۳ ۰۱:۵۱ ب.ظ)MShariati نوشته شده توسط:  سلام
البته من تو این زمینه خیلی اطلاعات ندارم ولی فکر کنم جواب شما این باشه:
در زبان‌های روالی، شما باید ریز روال انجام کارها رو مشخص کنی و با متغیرها و دستکاری داده سروکار داری. مثلاً برای جابجایی مقدار دو متغیر اول یک متغیر موقت ایجاد میکنی و ...
در زبان‌های تابعی شما قدری سطح بالاتر عمل می‌کنید و با دستکاری مستقیم داده‌ها سروکار ندارید بلکه عملکردها و تابع‌ها رو بصورت تودرتو فراخوانی می‌کنید. برنامه‌نویسی با JQuery تا حدی با این نوع برنامه‌نویسی شباهت داره. در این روش از تئوری توابع بازگشتی ریاضیات استفاده می‌شه و برخلاف روش قبلی اینجا ترتیب انجام کارها چندان مهم نیست.

ممنون. بعد با توجه به این توضیح عدم وجود side effect در زبانهای رویه ای رو چطور توجیه میکنین؟

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



موضوع‌های مرتبط با این موضوع...
موضوع: نویسنده پاسخ: بازدید: آخرین ارسال
  تفاوت WordPress.com و WordPress.org nillshid ۰ ۸۶۳ ۰۲ بهمن ۱۴۰۰ ۱۰:۲۵ ق.ظ
آخرین ارسال: nillshid
  تفاوت classification algorithm و regression algorithm چیه؟ sajadg ۶ ۹,۰۸۴ ۱۵ خرداد ۱۴۰۰ ۰۱:۴۳ ب.ظ
آخرین ارسال: cyruskingsolomon
  تفاوت Back-endو Front-end virtual girl ۳ ۳,۷۲۱ ۰۸ مرداد ۱۳۹۹ ۰۸:۳۷ ق.ظ
آخرین ارسال: webctcir
Wink دانلود نظریه زبانهای پیتر لینز ویرایش ۵ + حل armin.sheikh ۵ ۱۱,۳۵۶ ۰۲ خرداد ۱۳۹۹ ۰۸:۲۶ ب.ظ
آخرین ارسال: gillda
  تفاوت procedural با functional با imperative در چیست؟ shervan360 ۲ ۲,۹۷۲ ۲۱ دى ۱۳۹۸ ۰۴:۳۲ ب.ظ
آخرین ارسال: marvelous
  تفاوت مقاله جورنالی و مقاله کنفرانسی در چیست؟ Br2012 ۴۴ ۷۶,۵۸۲ ۲۷ مرداد ۱۳۹۸ ۰۸:۳۱ ق.ظ
آخرین ارسال: TexteRasmi.info
  تفاوت گرایش های ارشد it saeid sharifzade ۱ ۲,۶۸۲ ۲۲ تیر ۱۳۹۸ ۰۷:۵۱ ب.ظ
آخرین ارسال: khaste2
Question تفاوت تعداد مقایسه های مورد نیاز در الگوریتم های متفاوت porseshgar ۰ ۱,۹۲۴ ۱۵ بهمن ۱۳۹۷ ۱۲:۳۳ ب.ظ
آخرین ارسال: porseshgar
  تفاوت چاپ ک z__z ۳ ۳,۰۶۸ ۲۱ مهر ۱۳۹۷ ۱۲:۲۶ ق.ظ
آخرین ارسال: z__z
  تفاوت (logn!l) با !(logn) Mr.R3ZA ۵ ۴,۰۳۷ ۰۹ تیر ۱۳۹۷ ۰۳:۰۹ ب.ظ
آخرین ارسال: somaye-z

پرش به انجمن:

Can I see some ID?

به خاطر سپاری رمز Cancel

Feeling left out?


نگران نباش، فقط روی این لینک برای ثبت نام کلیک کن. رمزت رو فراموش کردی؟ اینجا به یادت میاریم! close

رمزت رو فراموش کردی؟

Feeling left out?


نگران نباش، فقط روی این لینک برای ثبت نام کلیک کن. close