السؤال بالعنوان
(map share people)
فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader
السلام عليكم ورحمة الله وبركاته
لأ أخفيك أخي أحمد
بعد عبارتك في أحد الردود
ahmed_youssef كتب:فمثلا أنا أرى أن لغة F# في ال .net هي من يستحق الإهتمام :)
أصبحت فعلا مهتم بها خصوصا بعد أن اطلعت على أنواع البرمجة التي تضمها من خلال هذا التعريف
http://en.wikipedia.org/wiki/F_Sharp_%28programming_language%29
Imperative Programming
Object Programming
Asynchronous Programming
Parallel Programming
Units of Measure
Meta Programming
Information Rich Programming
Agent Programming
Web Programming
Analytical Programming
Scripting
Open Source Community
حتى أني وجدت استخدام قوي لها من خلال بناء بيئة لتحويل F# إلى HTML5/JS
بصراحة أعزو قلة الاهتمام لقلة شعبيتها وقلة مصادرها وأمثلتها ومشاريعها مقارنة مع السي شارب
إلى أن هذا لا يعني أنها لغة ضعيفة وإنما لغة قوية غفل عن كنزها الكثيرون وأنا منهم :)
ما أقبـح المعصية ، تذهب لذتها ويبقى إثمها ... ومأ أحسن الطاعة ، تذهب مشقتها ويبقى ثوابها
كل نعيم دون الجنة غرور ... وكـل شقـاء دون النـار سرور
ببساطه لانه طلب عليها بمجتمعنا شبه معدوم من قبل شركات
ايضا لايوجد لديها دعم فعلي بمجتمعنا العربي
وفي بيئه لينكس ايضا تعمل ولكن من خلال مشروع mono ومقارنه بالبيئه التي تنتجها مايكرسوفت دوت نت يعتبر عقيم
على عكس البايثون والجافا
ياريت اخي احمد تخبرنا مالذي شدك لهذه لغه مالذي تقدمه ولاتقدمه سي شارب
جزاك الله خير
::::: لـــــكـــــي الله ياســـوريا :::::
لماذا ينتقل المبرمجون الى #F و هم يستطيعون تطبيق كل ما يريدونه باستخدام #C و حتى الوظائف التي يمكن كتابتها بطريقه افضل باستخدام functional programming paradigm يمكنهم عملها بالاستفاده من LINQ المستوحاه من Haskell . ما هو الشيئ المغري في اللغه؟ مالجديد فيها؟ بالنسبة لي لا تعدو اكثر من محاولة استقطاب مبرمجين Haskell, LISP الى بيئة NET. كما فعلت ميكروسوفت مؤخرا باستقطاب مبرمجين الويب باضافة HTML/JS الى Windows Store Apps.
تحياتي
No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!

شكرا لتفاعلكم
يبدو أن السؤال يتحول إلى ولماذا أستخدم F# إذا صارت C# تدعم بعض سمات ال Functional Languages ؟
دعونا ننظر إلى كيف تقوم C# ببعض الأمور الوظيفية "بعد التسهيل" في مقابل F#
الأمثلة من صفحة مشروع Functional C#
http://functionalcsharp.codeplex.com/
var Op = new Dictionary<ExpressionType, string> { { ExpressionType.Add, "+" } };
Expression<Func<int,int,int>> add = (x,y) => x + y;
Func<Expression, string> toString = null;
toString = exp =>
exp.Match()
.With<LambdaExpression>(l => toString(l.Body))
.With<ParameterExpression>(p => p.Name)
.With<BinaryExpression>(b => String.Format("{0} {1} {2}", toString(b.Left), Op[b.NodeType], toString(b.Right)))
.Return<string>();في مقابل ل F#
let operator x = match x with
| ExpressionType.Add -> "+"
let rec toString exp = match exp with
| LambdaExpression(args, body) -> toString(body)
| ParameterExpression(name) -> name
| BinaryExpression(op,l,r) -> sprintf "%s %s %s" (toString l) (operator op) (toString r)
Func<Func<char, char>, Func<IEnumerable<char>, IEnumerable<char>>> map = null;
map = f => s => s.Match()
.List((x, xs) => f(x).Cons(map(f)(xs)))
.Any(() => s)
.Return<IEnumerable<char>>();
var toUpper = map(Char.ToUpper);
في مقابل ل F#
let rec map f xs = match xs with
| x::xs -> f(x)::(map f xs)
| _ -> xs;;
let toUpper = map System.Char.ToUpper
*كم مرة زغللت عينيك من كود ال C# ؟ :)
فلغة C# لم تصمم من الأساس لتكون Functional حتى لو تمت بعض السمكرة لها كل حين والآخر
بينما F# تجمع ال syntax السلس من Ocaml + مكتبات ال .NET "أفضل مافي العالمين"
تم تعديل هذه المشاركة بواسطة ahmed_youssef في 17 فبراير 2013 في 15:26
(map share people)
فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader
حسنا الــ syntax جميل ، قد ابدأ انا او غيري من المبرمجين بالبرمجة بــ #F ولكن الامر سيقتصر على الاستخدام الشخصي لا ارى نفسي اقرر ان اعمل مشروع ما باستخدام #F ويظل سؤال ، طالما ان #C موجوده ويعرفها اغلب المبرمجين ومطورين البرمجيات وليس هناك شيئ يمكن عمله بــ #F لا يمكن عمله بــ #C لماذا قد اغير من اللغة الاكثر استخداما، لماذا قد استثمر وقتي في تعلم syntax جديد واحاول اتقانه؟ اعطني سبب وجيه! اليس من الافضل ان اتعلم شيئ ليس مقيد بشركة ميكروسوفت كــ ++C مثلا؟ ولقد اثبت لنا التاريخ ان استثمار الوقت في تقنيات تتبع شركات معينه يعد مغامرة.
No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!

ليس شرطا أنه عندما أتعلم F# يعني أن ألغي ما أتقنه وأتحول عنه نهائيا
نحن نعلم أن من أكبر إيجابيات الدوت نت أنك تستطيع بأي لغة دوت نت أن تستخدم مكتبات تم بناؤها بلغة دوت نت أخرى
وبالتالي ما الذي يمنع أنه عند بناء مشروع بلغة سي شارب ويوجد جزئية من الأفضل بناؤها بلغة إجرائية (كأن يكون البرنامج متعلق بأمور أكاديمية أو علمية أو غيرها ) أن ابنيها بلغة مثل F# ومن ثم استخدمها كمكتبة ضمن مشروعي
ما أقبـح المعصية ، تذهب لذتها ويبقى إثمها ... ومأ أحسن الطاعة ، تذهب مشقتها ويبقى ثوابها
كل نعيم دون الجنة غرور ... وكـل شقـاء دون النـار سرور
mental-driller كتب:حسنا الــ syntax جميل ، قد ابدأ انا او غيري من المبرمجين بالبرمجة بــ #F ولكن الامر سيقتصر على الاستخدام الشخصي لا ارى نفسي اقرر ان اعمل مشروع ما باستخدام #F ويظل سؤال ، طالما ان #C موجوده ويعرفها اغلب المبرمجين ومطورين البرمجيات وليس هناك شيئ يمكن عمله بــ #F لا يمكن عمله بــ #C لماذا قد اغير من اللغة الاكثر استخداما، لماذا قد استثمر وقتي في تعلم syntax جديد واحاول اتقانه؟ اعطني سبب وجيه! اليس من الافضل ان اتعلم شيئ ليس مقيد بشركة ميكروسوفت كــ ++C مثلا؟ ولقد اثبت لنا التاريخ ان استثمار الوقت في تقنيات تتبع شركات معينه يعد مغامرة.
تخيل المقارنة بين كتابة مشروع مثل Compiler ب F# و C# ... مع F# أو اللغات الوظيفية عموما إنتاجيتك تكون أعلى والمجهود المبذول أقل -هذه حقيقة-
كون C# لغة أكثر إستخداما مقارنة بغيرها (في إطار الدوت نت) لايعني وجوب إستخدامها وسمكرتها لتناسب الصرعة الحديثة -القديمة- وهي البرمجة الوظيفية! فإذا الناس تريد البرمجة بالطريقة الوظيفية فلتستخدم لغة وظيفية حقيقية!
أنظر لترى الفارق في هياكل البيانات
http://en.wikibooks.org/wiki/F_Sharp_Programming/Advanced_Data_Structures
*في النهاية تستطيع إستخدام أكثر من لغة في مشروعك
إذا أردت التحرر من قيد ميكروسوفت فلديك أشياء أخرى مثل Haskell, Clojure, Scala, Ocaml, Racket وغيرها
اقتباسنحن نعلم أن من أكبر إيجابيات الدوت نت أنك تستطيع بأي لغة دوت نت أن تستخدم مكتبات تم بناؤها بلغة دوت نت أخرى
وبالتالي ما الذي يمنع أنه عند بناء مشروع بلغة سي شارب ويوجد جزئية من الأفضل بناؤها بلغة إجرائية (كأن يكون البرنامج متعلق بأمور أكاديمية أو علمية أو غيرها ) أن ابنيها بلغة مثل F# ومن ثم استخدمها كمكتبة ضمن مشروعي
هذا الأنسب .. أينما كان هناك في مشروعك لحاجة لل concurrency او عمليات حسابية او DSL فربما الأفضل كتابة تلك الجزئيات بلغة وظيفية..
ليست إجرائية بل وظيفية
Functional not Procedural :)
تم تعديل هذه المشاركة بواسطة ahmed_youssef في 18 فبراير 2013 في 01:20
(map share people)
فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader