PDA

View Full Version : سوال: Haskell and more...



RoRo007
جمعه 06 فروردین 1389, 11:51 صبح
سلام
سال نو مبارک!

من برای پایان نامه ام (یه چیزی تو زمینه پردازش زبان طبیعی) نیاز دارم هسکل یاد بگیرم، اما به طور کلی از زبانهای برنامه نویسی چیزی سر در نمیارم. اگر بخوام سوالهامو دسته بندی کنم به این ترتیب میشه:

1. زبانهای برنامه نویسی تابعی چی هستند و کدامند؟ (چند جایی درموردشون خوندم، اما یه چیز عامه فهم (تر) میخوام؛)
2. به نظرتون میشه یادگیری برنامه نویسی رو با هسکل شروع کرد؟ (من کمی امتحان کردم با چند تا خودآموز انگلیسی اما بدجور گیج شدم :()
3. مهمترین سوال و خواسته ام: آموزش هسکل به زبان فارسی سراغ ندارید؟
4. با توجه به وضعیت فوق، پیشنهادی دارید برای من؟

پیشاپیش از کسانی که وقتی برای این پست میگذارند ممنونم.

Mehdi Asgari
جمعه 06 فروردین 1389, 13:51 عصر
چرا باید از این زبان استفاده کنی ؟
1- قبلا کمی در این باره در سایت بحث شده. جستجو کن (منابع انگلیسی هم به اندازۀ کافی موجوده)
2- بله ؛ میشه. نه با Haskell بلکه با زبان های دیگر هم میشه. منتها Haskell یک زبان تابعی محض هست و در این زبان side effect نمی تونی داشته باشی و نگرشت رو به برنامه نویسی عوض می کنه و مدتی طول می کشه تا عادت کنی به این زبان و مدل برنامه نویسی lazy و pure functional
3- نه
4- پیشنهادم اینه که از Haskell استفاده نکنی (به دلیل predictable نبودن پرفورمنس برنامه). به جاش می تونی از OCaml یا F# یا Common LISP استفاده کنی (چون کاربردی بودن خودشون رو در صنعت و دنیای واقعی نشون دادن. Haskell بیشتر برای ارضای محقق ها خوبه تا کاربردهایی در دنیای واقعی. (لطفا کتاب Real World Haskell رو معرفی نکن بهم که مجبور میشیم وارد بحث های عمیق تری بشیم که حاصلی جز سر درد نخواهد داشت. برای یک نمونه از این سردرد ها پست های Jon Harrop در Reddit و comp.lang.functional دربارۀ مشکلات Haskell رو بخون))
اگه همچنان مصری ، Erick Meijer سیزده ویدئوی آموزشی داره تحت عنوان Functional Programming Course که در اون از Haskell استفاده شده و کتاب Programming In Haskell رو تدریس می کنه (ویدئوها به رایگان از Channel 9 مایکروسافت قابل دانلودن)

RoRo007
شنبه 07 فروردین 1389, 08:30 صبح
چرا باید از این زبان استفاده کنی ؟


به طور مستقیم به هسکل نیاز ندارم، اما قراره که یه منبع دستوری برای زبان فارسی تهیه کنم در چهارچوب گرامری ای که خودش بر پایه هسکل طراحی شده. چند وقتی سعی کردم که روی خود این زبان برنامه نویسی که multilingual و specific-purpose هست، متمرکز بشم، اما از اونجایی که در برنامه نویسی و کلا این مسائل صفر-کیلومترم نشد. پس تصمیم گرفتم کمی پایه ای تر کار کنم.
برام جالب این بود که برنامه نویس های اطرافم هیچ کدوم از هسکل و زبانهای مرتبطی که اسم بردی چیزی نمی دونستن. به من پیشنهاد شد که با یادگیری یه زبانی مثل C++‎‎ اصول اولیه برنامه نویسی رو یاد بگیرم و بعد برم سراغ هسکل یا هر چیز دیگه! من هنوز این کار رو نکردم، سوال دومم هم به همین منظور بود که ببینم چه باید کرد: با C++‎‎ شروع کنم یا یه زبان تابعی؟!



2- بله ؛ میشه. نه با Haskell بلکه با زبان های دیگر هم میشه. منتها Haskell یک زبان تابعی محض هست و در این زبان side effect نمی تونی داشته باشی و نگرشت رو به برنامه نویسی عوض می کنه و مدتی طول می کشه تا عادت کنی به این زبان و مدل برنامه نویسی lazy و pure functional


خوب من که تا به حال به زبان دیگه ای برنامه نویسی نکردم که حالا بخواد نگرشم عوض بشه! میتونم از اول یعنی به طور default از برنامه نویسی تابعی شروع کنم. احتمالا بعدش اگه بخوام برم سراغ زبانهای برنامه نویسی نوع دیگه، باید نگرش عوض کنم و دچار مشکل بشم!



4- پیشنهادم اینه که از Haskell استفاده نکنی (به دلیل predictable نبودن پرفورمنس برنامه). به جاش می تونی از OCaml یا F# یا Common LISP استفاده کنی (چون کاربردی بودن خودشون رو در صنعت و دنیای واقعی نشون دادن. Haskell بیشتر برای ارضای محقق ها خوبه تا کاربردهایی در دنیای واقعی. (لطفا کتاب Real World Haskell رو معرفی نکن بهم که مجبور میشیم وارد بحث های عمیق تری بشیم که حاصلی جز سر درد نخواهد داشت. برای یک نمونه از این سردرد ها پست های Jon Harrop در Reddit و comp.lang.functional دربارۀ مشکلات Haskell رو بخون))
اگه همچنان مصری ، Erick Meijer سیزده ویدئوی آموزشی داره تحت عنوان Functional Programming Course که در اون از Haskell استفاده شده و کتاب Programming In Haskell رو تدریس می کنه (ویدئوها به رایگان از Channel 9 مایکروسافت قابل دانلودن)

به نظرت این برنامه آموزشی به حدی پایه ای هست که من بتونم باهاش کنار بیام؟ من جزوه آموزشی Yet Another Haskell Tutorial رو دست گرفتم. با اینکه به نظرم خیلی خوب بود، ولی مسائلی توش بدیهی فرض شده که من ازشون خبر ندارم :( همینطور یه جزوه خوب دیگه هم هست که خیلی کامل و جالبه : Computational Semantics with Functional Programming، که توش از هسکل استفاده شده و باید اذعان کنم که یه جاهائیش برام سنگینه!
اما مشکل اصلی من اینه که خیلی هم عجله دارم. من دنبال کلاس یا دوره ای بودم که بتونه زود راهم بندازه، یا حتی کسی که بتونه بهم هسکل یاد بده. در این مورد می تونید کمکی بهم بکنید؟

باز هم سپاس!

Mehdi Asgari
شنبه 07 فروردین 1389, 10:52 صبح
چه باید کرد: با C++‎‎‎ شروع کنم یا یه زبان تابعی؟!
جواب غیر مغرضانه: فرقی نمی کنه
جواب شخصی: دور C++ رو خط بکش . سعی کن با زبان های دیگر شروع به یادگیری برنامه نویسی بکنی (پایتون خوبه. روبی هم. هسکل هم خوبه ولی مشکل منابع و جامعۀ کوچک برنامه نویسی خواهی داشت)

خوب من که تا به حال به زبان دیگه ای برنامه نویسی نکردم که حالا بخواد نگرشم عوض بشه
خوبه

دچار مشکل بشم!
مشکلی نیست. فقط شیب یادگیریش یه خورده برات تیز تر میشه (در هر دو حالت برای تغییر پارادایم کمی زمان باید صرف کنی)

به نظرت این برنامه آموزشی به حدی پایه ای هست که من بتونم باهاش کنار بیام؟
آره. از صفر شروع کرده

من دنبال کلاس یا دوره ای بودم که بتونه زود راهم بندازه، یا حتی کسی که بتونه بهم هسکل یاد بده. در این مورد می تونید کمکی بهم بکنید؟
کلاس یا شخصی در مورد هسکل در ایران تقریبا مساوی است با هیچ
تعداد اشخاصی که می شناسم که برنامه نویسی تابعی بلد باشن تک رقمیه. سعی کن خودت یاد بگیری و سوالاتت رو اینجا بپرس
پ ن: تابستون امسال اولین همایش و کلاس های خصوصی برنامه نویسی تابعی در ایران برگزار خواهد شد (گفتم در جریان باشی!)

RoRo007
شنبه 07 فروردین 1389, 18:21 عصر
ممنونم از اطلاعاتی که دادید و وقتی که گذاشتید. البته خیلی متاسف شدم از اینکه چرا تو برنامه نویسی تابعی اینقدر عقبیم اینجا! فکر میکردم تو یه فروم اختصاصی برنامه نویسی بیشتر از اینها عایدم بشه! به هر حال، اگر به موردی برخوردید که به دردم میخورد، ممنون میشم که با خبرم کنید.

حالا یه سوالی هم از روی کنجکاوی می پرسم: چرا احساس نیاز نشده یا رغبتی نبوده به این مدل برنامه نویسی تو ایران؟ البته پایتون هم تابعیه و مثل اینکه کار میشه؟!
برای NLP و به طور کلی Computational Linguistics از چه زبانهایی استفاده می کنند در ایران و خارج از ایران؟ یادمه از قول یه استادی تو سوئد که زمینه تخصصیش همینها بود شنیدم که می گفت که الان حتی پایتون هم داره کنار میره! و اینجا پایتون تازه داره جون میگیره! البته من فقط یه آبزرورم و قرار نیست درباره چیزی که ازش نمیدونم قضاوت کنم!

Mehdi Asgari
یک شنبه 08 فروردین 1389, 08:44 صبح
چرا احساس نیاز نشده یا رغبتی نبوده به این مدل برنامه نویسی تو ایران؟
البته ما همواره از نظر استفاده از فن آوری ها از غرب عقبیم ، ولی بحث برنامه نویسی تابعی و استفاده از اون به شکل گسترده کمتر از 7 سال هست که در جهان مطرح شده و زیاد مشکل ایران نیست. از دهۀ 70 زبان های تابعی وجود داشتن ولی زیاد در بازار و دنیای واقعی بهشون توجه نمی شد و بیشتر در زمینه های اکادمیک و تحقیقی استفاده می شدن. بیشترین دلیل استفاده از زبان های تابعی در سال های اخیر ، یکی رشد پردازنده های چند هسته ای و کلا مبحث Many-core هست.

البته پایتون هم تابعیه و مثل اینکه کار میشه؟!
پایتون یک زبان تابعی نیست ولی یه سری مباحث تابعی رو ساپورت می کنه

arsalan_designer
سه شنبه 05 اردیبهشت 1391, 17:35 عصر
ببخشید من بک قطعه کد به زبان haskel می خواستم که یه درخت رو تعریف کرده باشه نوع درخت هم فرقی نمی کنه . ممنون می شم