PDA

View Full Version : مقاله: مقاله درباره برنامه نويسي F#



hassanf
چهارشنبه 01 اردیبهشت 1389, 12:26 عصر
با سلام
چند وقت پيس مقاله اي درباره F# نوشتم، گفتم بقيه هم استفاده كنند بد نيست.

r00tkit
جمعه 03 اردیبهشت 1389, 16:32 عصر
سلام

با تشکر از شما دوست عزیز

ولی یه نکته ی کوچیک

F# for Scientists (http://www.amazon.com/F-Scientists-Jon-Harrop/dp/0470242116/ref=sr_1_1?ie=UTF8&s=books&qid=1272024786&sr=8-1) برای apress نیست برای Wiley-Interscience هستش


Publisher: Wiley-Interscience (August 4, 2008)

و بعلاوه بر کتاب های نام برده توسط شما کتاب های دیگری نیز برای F# چاپ شده

Programming F#: A comprehensive guide for writing simple code to solve complex problems (Animal Guide) (http://www.amazon.com/Programming-comprehensive-writing-complex-problems/dp/0596153643/ref=sr_1_1?ie=UTF8&s=books&qid=1272025598&sr=1-1)


Programming F# (The Definitive Guide) (http://www.amazon.com/Programming-Definitive-Guide-Don-Syme/dp/1430224312/ref=sr_1_3?ie=UTF8&s=books&qid=1272025598&sr=1-3)

Real World Functional Programming: With Examples in F# and C# (http://www.amazon.com/Real-World-Functional-Programming-Examples/dp/1933988924/ref=sr_1_6?ie=UTF8&s=books&qid=1272025598&sr=1-6)

Beginning F# (http://www.amazon.com/Beginning-F-Robert-Pickering/dp/1430223898/ref=sr_1_4?ie=UTF8&s=books&qid=1272025598&sr=1-4)

Mehdi Asgari
چهارشنبه 08 اردیبهشت 1389, 18:05 عصر
متاسفانه مقالۀ فوق پر از اشتباهه
اگر نیاز احساس شد ، لیست کاملی از غلط های فنی مقاله رو لیست می کنم

r00tkit
پنج شنبه 09 اردیبهشت 1389, 01:37 صبح
ساعت 2:05 شب
من یه باراین مقاله رو به صورت روز نامه وار خوندم و درست هستش کمی اشکال داشت

(حالا اگه مهدی به من هم گیر نده)
مثلا :
در تعریف curried functions
در تعریف Side effect
یا جمله ی " از بازگشتی برای حلقه ها به جای تکرار استفاده می کنند"

اینم نگرفتم " برنامه نویسی تابعی بهترین راه حل برای حل مسئله های پیچیده کامپیوتر می باشد. اما برنامه نویسی تابعی خالص برای برنامه نویسی همه منظوره(general purpose) مناسب نیست. بنا بر این زبان های تابعی برخی از جنبه های دستوری وشی گرا را نیز شامل می شود"
و
" اغلب زبان های تابعی محبوب مانند Haskell ,Ocaml ,Lisp ,Scheme برای محیط های خاص توسعه یافته اند" یا " رانتایم همه منظوره "
و جمله ای در مورد CLR
و....
بی خیال میرم ادامه ی فیلم سه گانه ی red blue white کیشلوفسکی رو ببینم

hassanf
جمعه 10 اردیبهشت 1389, 00:50 صبح
با سلام

متاسفانه مقالۀ فوق پر از اشتباهه
تمامی مطالب این مقاله از مراجع ذکر شده در انتهای مقاله آورده شده و هیچ نتیجه گیری جدید توسط بنده انجام نشده(حتی اکثرا ترجمه عین مطلب هست). البته قبول دارم به علت کمبود وقت برخی اصطلاحات ممکنه درست ترجمه نشده باشه یا به علت نگاه کلی مقاله به اکثر ویژگی های F# و خلاصه بیش از حد در برخی جاها مطالب گفته شده مبهم به نظر بیاد.


اگر نیاز احساس شد ، لیست کاملی از غلط های فنی مقاله رو لیست می کنم
خوش حال می شم.

hassanf
جمعه 10 اردیبهشت 1389, 01:34 صبح
از بازگشتی برای حلقه ها به جای تکرار استفاده می کنند
چون F# یک زبان برنامه نویسی خالص (Pure functional programing) نیست، شما میتوانید حلقه ها را به هر دو فرم دستوری و تابعی بنویسید. در فرم تابعی تغییر حالت(State) نداریم یعنی هر چیزی که شما تعریف می کنید ثابت (Constant) بوده وا مکان تعریف متغییر (Variable) وجود ندارد و باید از بازگشتی استفاده کنید(با rec).


برنامه نویسی تابعی بهترین راه حل برای حل مسئله های پیچیده کامپیوتر می باشد. اما برنامه نویسی تابعی خالص برای برنامه نویسی همه منظوره(general purpose) مناسب نیست. بنا بر این زبان های تابعی برخی از جنبه های دستوری وشی گرا را نیز شامل می شود
در برنامه نویسی برای سیستم های تجاری بیشتر از زبان های دستوری و شی گرا استفاده می شود چون مفاهیم این زبان ها از مفاهیم موجود در جهان گرفته شده است و مدل سازی به راحتی انجام میشود. در برنامه نویسی آکادمیک یا علمی این نوع زبان ها به علل مختلف از جمله اثرات جانب (Side effect) کارایی مناسبی ندارد و یکی از جایگزین ها زبان های تابعی می باشند. برای مثال در حوزه سیستم های هوشمند از اینگونه زبان ها استفاده می شود.


اغلب زبان های تابعی محبوب مانند Haskell ,Ocaml ,Lisp ,Scheme برای محیط های خاص توسعه یافته اند
برای مثال زبان LISP که برای کار با رشته ها در هوش مصنوعی استفاده می شود یک زبان برای محیط خاص است، در حالی که F# مدعی است که یک زبان General برای استفاده در کاربرد های مختلف می باشد. یعنی یسته به نیاز شما هر نوع برنامه نویسی(تابعی، دستوری، شی گرا) را با F# می توانید انجام دهید.


در تعریف curried functions
http://en.wikipedia.org/wiki/Currying

Mehdi Asgari
جمعه 10 اردیبهشت 1389, 14:39 عصر
1-
چکیده: F# آخرین زبان برنامه نویسی مایکروسافت است.
اگر منظورتون زبان تجاری و پشتیبانی شده باشه ، کاملا درسته؛ بهتره اشاره کنم که زبان های دیگری هم بعد از F# در مایکروسافت ارائه شدن (مثل Small Basic و Axum) اما هنوز تجاری نشدن
2-
چکیده: ... اما تا کنون فقط به صورت زبان های تحقیقات و اکادمیک باقی مانده است
Erlang بیش از دو دهه است که در صنعت مخابرات (توسط شرکت اریکسون) استفاده میشه. همینطور OCaml در Lexifi و Intel و Microsoft و Wink و Jane Street و ....
و LISP در ITA و NASA و ...
3-
چکیده: ... با ارائه این زبان و ترکیب آن با ویژگی های C# و Visual Basic ...
F# بیشتر پیاده سازی ای از OCaml روی .NET هست و اگر هم چیزی اضافه کرده مثل Units Of Measure یا Asynchronous Workflows ، یا ابداع خود Syme بوده یا از زبان های دیگری مثل Haskell ارث گرفته شده (فقط مدل شی اش ، مدل شی دات نت هست)
ترجمه تون از کتاب Pickering ایراد داره (یا با متن اصلی فرق داره. مثلا اون پاراگراف که با "با وجود قدرت و پیوستگی زبان های ...." شروع میشه)
4-
از متن: اغلب زبان های تابعی محبوب مانند Haskell، OCaml، Lisp ، Scheme برای محیط های خاص توسعه یافته اند

برای مثال زبان LISP که برای کار با رشته ها در هوش مصنوعی استفاده می شود یک زبان برای محیط خاص است، در حالی که F# مدعی است که یک زبان General برای استفاده در کاربرد های مختلف می باشد.
کاملا غلطه. LISP ، Erlang ، OCaml سال هاست در شرکت های مختلف برای منظور های مختلف مورد استفاده قرار می گیرن (بالاتر اشاره کردم. قبلا هم در فروم در موردش صحبت کردم. خواستید بیشتر بحث می کنیم) حالا این که F# و Scala و Clojure روی پلتفرم های مشهوری مثل جاوا و دات نت اجرا میشن دلیل نمیشه زبان های تابعی قدیمی تر رو همه منظوره ندونیم.
5-
F# جنریک را بدون هیچ گونه تغییر پشتیبانی می کند و حتی آن را برای IL Code فراهم می کند.
در مورد Inline IL ظاهرا فقط قراره در کتابخانه های F# استفاده بشه و الان deprecated هست. نوامبر 2008 در این مورد از Syme پرسیدم که این متن جوابشه:


A final decision has not yet been made, but it currently marked for “library use only” and a warning is given
6-
"به عبارت دیگر F# فقط محدود به ویندوز نیست...."
عملا فقط ویندوزه. رانتایم مونو مشکلاتی داره که مانع از اجرای درست و حسابی F# بر روی اون میشه. (Jon Harrop چندین بار در فروم های مختلف و وبلاگ خودش در این زمینه صحبت کرده.البته نمی دونم الان وضع مونو چطوره)
7- در مورد FSLIB و MLLIB هم چیزی نشنیدم و نمی دونم (شاید در نسخه های خیلی قدیمی تر F# وجود داشتن)
در آخر بگم که قصدم فقط غلط گیری نبود ؛ ولی توجه کن که اولا برای ترجمۀ درست متنی باید مفاهیمش رو اول مسلط باشی و ثانیا فکر نکن هر چی تو کتابا نوشتن کاملا درسته

r00tkit
جمعه 10 اردیبهشت 1389, 20:56 عصر
http://en.wikipedia.org/wiki/Currying
من فکر می کردم Currying با curried functions فرق داره؟؟؟

با توجه به این ها
Currying vs Partial Function Application (http://mikehadlow.blogspot.com/2010/04/currying-vs-partial-function.html)

Foundations of F#:



F# also supports the idea of the partial application of functions (these are sometimes called
partial or curried functions

Beginning F#




F# supports the partial application of functions (these are sometimes called partial or curried functions).
This means you don’t need to pass all the arguments to a function at once


اینم بخونید:
Beginning F#



Because a function is just a value, if it doesn’t receive all its arguments at once, it returns a value that
is a new function waiting for the rest of the argument

و این:Programming F# OReilly



Another aspect of functional programming is partial function application, also known
as currying

تو همین کتاب



Currying and partial function application may not look particularly powerful, but they
can dramatically improve the elegance of your code

F# for Scientists


Curried function any function that returns a function as its result
مثال :
این برای curried functions



let add a b = a + b
let addFour = add 4
let result = addFour 4

اینم برای Currying



let add x y = x + y
let add10 x = add x 10
let x = add 10 20
let y = add10 20



. Because a function is just a value, if it doesn’t receive all its arguments at once, it returns a
value that is a new function waiting for the rest of the arguments.

حالا در کل بازم فکر می کنم این ها با هم فرق دارن(فرقشونو نمی گم شاید غلط باشه)
یعنی Currying # partial application=curried functions

دوستان اگه کمک کم تا این ابهام رفع شه لطف کردن

# یعنی فرق داشتن

biostar
شنبه 30 دی 1391, 16:10 عصر
دانلود نمیشه...

shopingserver
چهارشنبه 30 اسفند 1391, 19:32 عصر
با سلام خدمت شما
من این مقاله را میخوام دانلود کنم نمیشه
لطفا لینک دانلود را برسی کنید
با تشکر
اسماعیل فعال