منو
 کاربر Online
765 کاربر online
تاریخچه ی: زبان برنامه نویسی Haskell

تفاوت با نگارش: 3

Lines: 1-58Lines: 1-69
-!زبان برنامه نویسی Haskell +||V{maketoc}||
^@#16:
!تعریف




{picture=img/daneshnameh_up/1/1e/compics039.jpg}

{*__Haskell__ ((برنامه نویسی تابعی |
زبان برنامه نویسی تابعی)) استاندارد شده با زبان شناسی غیر قطعی، بعد از ((Haskell Curry)) نام گذاری شد. این زبان با کمیته ای که در سال 1980 برای بیان هدف شناساندن این چنین زبانی شکل گرفت، ایجاد شد. آخرین استاندارد زبان نیمه رسمی __Haskell 98__ نامزد زبان آسان و سبک برای آموزش و به عنوان پایه ای برای گسترش های آینده است. زبان به تکامل خود به سرعت با ((Hugs)) و ((GHC)) که نشان دهنده ی استاندارد بالفعل جاری هستند، ادامه می دهد.
-__Haskell__ ((زبان برنامه نویسی تابعی)) استاندارد شده با زبان شناسی غیر قطعی، بعد از ((Haskell Curry)) نام گذاری شد. این زبان با کمیته ای که در سال ((1980)) برای بیان هدف شناساندن این چنین زبانی شکل گرفت، ایجاد شد. آخرین استاندارد زبان نیمه رسمی __Haskell 98__ نامزد زبان آسان و سبک برای آموزش و به عنوان پایه ای برای گسترش های آینده است. زبان به تکامل خود به سرعت با ((Hugs)) و ((GHC)) که نشان دهنده ی استاندارد بالفعل جاری هستند، ادامه می دهد.

جالب ترین جنبه Haskell شامل پشتیبانی از توابع ((بازگشتی)) و انواع داده ای، ((مطابقت با الگو))، ((درون یابی لیست))و((عبارات دفاعی)) می باشد. ترکیب این خصوصیات می تواند توابعی را بسازد که نوشتن آنها در زبان برنامه نویسی شیوه ای سخت خواهد بود ولی غالباً اجرای آن در Haskell آسان است در سال 2002، این زبان یک ((زبان تابعی)) است که اغلب تحقیقات روی آن صورت گرفته است. چندین گونه از این زبان توسعه یافته اند: نسخ همگون با ((MIT)) و ((Glasgow)) ، هر دو Haskell مشابه نامیده می شوند. نسخی که بیشتر نظیر دارند و تقسیم شده اند، Haskell تقسیم شده خوانده می شوند (سابقاً Goffin) و Eden ، نسخه ((ارزیابی نظری)) ، Haskell خواهان نامیده می شود و چندین نسخ شی گرا: Haskell ++ ، Mondrian و O' Haskell .
یک زبان مشابه Haskell نیز موجود است که روش های جدید پشتیبانی از پیشرفت ((GUI)) را ارائه می دهد که ((کاملاً همگام)) نامیده می شود. بزرگترین تفاوت این زبان با Haskell در استفاده از ((انواع یکتا)) برای ورودی به دلیل ضدیت با واحدیت است.
+جالب ترین جنبه Haskell شامل پشتیبانی از ((توابع بازگشتی)) و انواع داده ای، مطابقت با الگو، درون یابی لیست و عبارات دفاعی می باشد. ترکیب این خصوصیات می تواند توابعی را بسازد که نوشتن آنها در زبان برنامه نویسی شیوه ای سخت خواهد بود ولی غالباً اجرای آن در Haskell آسان است در سال 2002، این زبان یک زبان تابعی است که اغلب تحقیقات روی آن صورت گرفته است. چندین گونه از این زبان توسعه یافته اند: نسخ همگون با ((MIT)) و ((Glasgow)) ، هر دو Haskell مشابه نامیده می شوند. نسخی که بیشتر نظیر دارند و تقسیم شده اند، Haskell تقسیم شده خوانده می شوند (سابقاً Goffin) و Eden ، نسخه ((ارزیابی نظری)) ، Haskell خواهان نامیده می شود و چندین نسخ شی گرا: Haskell ++ ، Mondrian و O' Haskell .
یک زبان مشابه Haskell نیز موجود است که روش های جدید پشتیبانی از پیشرفت ((GUI)) را ارائه می دهد که کاملاً همگام نامیده می شود. بزرگترین تفاوت این زبان با Haskell در استفاده از انواع یکتا برای ورودی به دلیل ضدیت با واحدیت است.
 نسخه تحصیلاتتی Haskell که Gofer نامیده می شود توسط Mark Jones توسعه یافت. این نسخ توسط HUGS غصب شده است. (بخش ((پیاده سازی)) را از این مقاله ببینید). نسخه تحصیلاتتی Haskell که Gofer نامیده می شود توسط Mark Jones توسعه یافت. این نسخ توسط HUGS غصب شده است. (بخش ((پیاده سازی)) را از این مقاله ببینید).
-برای اطلاع جامع بیشتر، وب سایت haskell. org ، که در انتهای مقاله پیوست شده است را ببینید.
+برای اطلاع جامع بیشتر، وب سایت haskell. org ، که در انتهای مقاله پیوست شده است را ببینید. *}
---
 !مثال ها !مثال ها
-تعریف کلاسیک از ((تابع فاکتوریل)): +{*تعریف کلاسیک از ((تابع فاکتوریل))
 fac 0 = 1 fac 0 = 1
 fac n = n * fac ( n - 1 ) fac n = n * fac ( n - 1 )
 تعریف بامزه از تابع فاکتوریل ( با استفاده از لیست علامت گذاری، Haskell درون ساختی و تابع استاندارد product): تعریف بامزه از تابع فاکتوریل ( با استفاده از لیست علامت گذاری، Haskell درون ساختی و تابع استاندارد product):
-fac n = product [ 1 . . n ] +fac n = product {picture=img/daneshnameh_up/c/cc/compics054.jpg}1.. n {picture=img/daneshnameh_up/5/56/compics055.jpg}.
 پیاده سازی ساده از تابع که n امین عدد را در ((سری فیبونانچی)) برمی گرداند: پیاده سازی ساده از تابع که n امین عدد را در ((سری فیبونانچی)) برمی گرداند:
 fib 0 = 0 fib 0 = 0
 fib 1 = 1 fib 1 = 1
 fib n = fib ( n - 2 ) + fib ( n - 1 )  fib n = fib ( n - 2 ) + fib ( n - 1 )
 تابعی که لیست اعداد فیبونانچی را در زمان خطی باز می گرداند: تابعی که لیست اعداد فیبونانچی را در زمان خطی باز می گرداند:
 fibs@ ( - : rest ) = 0 : 1 : ( zipwith (+) fibs rest ) fibs@ ( - : rest ) = 0 : 1 : ( zipwith (+) fibs rest )
 تابع قبلی به دلیل ارزیابی کند و آهسته یک لیست محدود را تولید می کند. یکی از پیاده سازی ممکن fib عبارتست از: تابع قبلی به دلیل ارزیابی کند و آهسته یک لیست محدود را تولید می کند. یکی از پیاده سازی ممکن fib عبارتست از:
 fib n = fibs ! ! n fib n = fibs ! ! n
 ( !! ؟ است که n امین عنصر از لیست را می دهد). ( !! ؟ است که n امین عنصر از لیست را می دهد).
 الگوریتم ((مرتب سازی سریع)) می تواند به گونه ای برازنده در Haskell به کمک درون یابی لیست بیان شود. الگوریتم ((مرتب سازی سریع)) می تواند به گونه ای برازنده در Haskell به کمک درون یابی لیست بیان شود.
 qsort [] = [] qsort [] = []
 qsort ( pivot : tail ) = qsort ( pivot : tail ) =
- qsort left ++ [ pivot ] ++ qsort right
where
] left = y l y < - tail ' y < pivot ]
] right = y l y < - tail ' y >= pivot ]
( توجه کنید که کپی شدن منوط و زنجیره بودن لیست این کد بسته به پیاده سازی اش می تواند آهسته تر باشد.)
+ qsort left ++{picture=img/daneshnameh_up/c/cc/compics054.jpg} pivot {picture=img/daneshnameh_up/5/56/compics055.jpg} ++ qsort right
where
] left = y l y < - tail ' y < pivot ]
] right = y l y < - tail ' y >= pivot ]
( توجه کنید که کپی شدن منوط و زنجیره بودن لیست این کد بسته به پیاده سازی اش می تواند آهسته تر باشد.)*}
---
 !پیاده سازی !پیاده سازی
-موارد زیر خیلی یا اندکی شبیه به استانداردهای 98 Haskell هستند و تحت جوازهای ((منابع باز)) تقسیم بندی شده اند. در حال حاضر پیاده سازی تجاری Haskell موجود نیست. +{*موارد زیر خیلی یا اندکی شبیه به استانداردهای 98 Haskell هستند و تحت جوازهای ((منابع باز)) تقسیم بندی شده اند. در حال حاضر پیاده سازی تجاری Haskell موجود نیست.
-( (http://www.haskell.org/hugs) (([1))]) ((''Hugs''))* مترجم کدهای بایت است. و به سرعت برنامه ها را تلفیق و اجرا می کند. همچنین با یک کتابخانه گرافیکی ساده ظاهر شده است. Hugs برای افرادی که قصد دارند اصول پایه ای Haskell را بیاموزند مناسب است ملی به این معنی نیست که یک وسیله بازی است. Hugs سبک ترین و ساده ترین پیاده سازی Haskell است.
*( (http://www.haskell.org/ghc) (([2))]) ((''GHC'')) به کدهای نهادی از معماران متفاوتی تالیف می کند. و همچنین می تواند به C تالیف کند. شاید GHC، معروف ترین مولف Haskell باشد و چندین کتابخانه قابل استفاده که تنها با GHC کار می کنند موجود است (محدود شده به ((OpenGL)))
+1-[ http://www.haskell.org/hugs | Hugs ] مترجم کدهای بایت است. و به سرعت برنامه ها را تلفیق و اجرا می کند. همچنین با یک کتابخانه گرافیکی ساده ظاهر شده است. Hugs برای افرادی که قصد دارند اصول پایه ای Haskell را بیاموزند مناسب است ملی به این معنی نیست که یک وسیله بازی است. Hugs سبک ترین و ساده ترین پیاده سازی Haskell است.
2-[ http://www.haskell.org/ghc | GHC ]به کدهای نهادی از معماران متفاوتی تالیف می کند. و همچنین می تواند به C تالیف کند. شاید GHC، معروف ترین مولف Haskell باشد و چندین کتابخانه قابل استفاده که تنها با GHC کار می کنند موجود است (محدود شده به ((OpenGL)) )
-*((http://www.cs.york.ac.uk/fp/nhc98/) (([3))]) ((''nhc98'')) یک دیگر ار مولفان کد بایتی است، ولی عموماً کد بایتی ای که سریع تر از Hugs باشد nhc98 به حداقل رساندن استفاده از حافظه توجه کرده است و عملاً انتخاب مناسبی برای ماشین های کندتر و قدیمی تراست. +3-[ http://www.cs.york.ac.uk/fp/nhc98 | nhc98 ] یک دیگر ار مولفان کد بایتی است، ولی عموماً کد بایتی ای که سریع تر از Hugs باشد nhc98 به حداقل رساندن استفاده از حافظه توجه کرده است و عملاً انتخاب مناسبی برای ماشین های کندتر و قدیمی تراست.
   
-*((http://www.cs.chalmers.se/~aigustss/hbc/hbc.html) (([4))]) ((''HBC'')) مولف Haskell دیگری برای کدهای نهادی است. HBC به طور فعال توسعه نیافته است ولی هنوز هم قابل استفاده می باشد. +4-[ http://www.cs.chalmers.se/~aigustss/hbc/hbc.html | HBC ] مولف Haskell دیگری برای کدهای نهادی است. HBC به طور فعال توسعه نیافته است ولی هنوز هم قابل استفاده می باشد.
-*((http://www.cs.uu.nl/helium/) (([5))]) ((''Helium'')) جدیدترین گویش Haskell است. هدف اصلی آن آسان کردن یادگیری Haskell می باشد، در حال حاضر فقدان برخی از انواع کلاس ها، آنرا با برخی از برنامه های Haskell ناسازگار ساخته است. +5-[ http://www.cs.uu.nl/helium | Helium ] جدیدترین گویش Haskell است. هدف اصلی آن آسان کردن یادگیری Haskell می باشد، در حال حاضر فقدان برخی از انواع کلاس ها، آنرا با برخی از برنامه های Haskell ناسازگار ساخته است.*}
---
 !پیوندهای خارجی !پیوندهای خارجی
-* ((صفحه اصلی Haskell ))
* ((مقدمه مختصری برHaskell 98 ))
* ((تحول برنامه نویسانHaskell ))

((طبات)): ((یش هیHaskell )) | ((زبان های برنامه نویسی)) |(( زبان ای ابعی)) | ((زبان های برنامه نویسی اری))
/> /> />
+*[http://en.wikipedia.org/wiki/Haskell_programming_language ]
*[http://haskell.org/ ] />*[http://haskell.org/haskellwiki/Humor ] />*[http://haskell.org/hawiki/ ]
*[http://haskell.org/papers/NSWC/jfp.ps ] />*[http://www.willamette.edu/~fruehr/haskell/evolution.html ]
*[http://h
askell.readscheme.org/ ]
---
ین بینید />*((زبان برنامه نویسی Ada)) />*((زبان برامه نویی C)) />*((زبان برنامه نویسی ح ایین))
*((برنامه نویسی شی گرا))
#@^

تاریخ شماره نسخه کاربر توضیح اقدام
 یکشنبه 16 مهر 1385 [12:19 ]   12   زینب معزی      جاری 
 یکشنبه 16 مهر 1385 [10:31 ]   11   زینب معزی      v  c  d  s 
 یکشنبه 09 مهر 1385 [11:18 ]   10   زینب معزی      v  c  d  s 
 یکشنبه 09 مهر 1385 [11:15 ]   9   زینب معزی      v  c  d  s 
 یکشنبه 09 مهر 1385 [11:01 ]   8   زینب معزی      v  c  d  s 
 پنج شنبه 23 شهریور 1385 [11:31 ]   7   زینب معزی      v  c  d  s 
 یکشنبه 20 آذر 1384 [10:15 ]   6   مهدی سالم      v  c  d  s 
 شنبه 22 مرداد 1384 [12:25 ]   5   بابک خسروشاهی      v  c  d  s 
 شنبه 07 آذر 1383 [08:41 ]   4   حمید حسن نیا      v  c  d  s 
 شنبه 07 آذر 1383 [08:38 ]   3   حمید حسن نیا      v  c  d  s 
 شنبه 07 آذر 1383 [08:37 ]   2   حمید حسن نیا      v  c  d  s 
 چهارشنبه 15 مهر 1383 [11:26 ]   1   حمید حسن نیا      v  c  d  s 


ارسال توضیح جدید
الزامی
big grin confused جالب cry eek evil فریاد اخم خبر lol عصبانی mr green خنثی سوال razz redface rolleyes غمگین smile surprised twisted چشمک arrow



از پیوند [http://www.foo.com] یا [http://www.foo.com|شرح] برای پیوندها.
برچسب های HTML در داخل توضیحات مجاز نیستند و تمام نوشته ها ی بین علامت های > و < حذف خواهند شد..