الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مالذي يحجز مبرمجي دوت نت عن لغة F# ؟

بدأه ahmed_youssef في 17 فبراير 2013 · 7 رد · 2,498 مشاهدة · في الأخبار والنقاشات التقنية
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السؤال بالعنوان

 

http://fsharp.org/

2
(map share people)

فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader

#2

السلام عليكم ورحمة الله وبركاته

لأ أخفيك أخي أحمد

بعد عبارتك في أحد الردود

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

/index.php/topic/275471-%D9%88%D9%8A%D8%A8-%D8%B4%D8%A7%D8%B1%D8%A8%D8%B1-w-websharper-%D8%A8%D9%8A%D8%A6%D8%A9-%D9%84%D9%83%D8%AA%D8%A7%D8%A8%D8%A9-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-%D8%A7%D9%84%D9%88%D9%8A%D8%A8-html5js-%D9%85%D9%86-%D8%AE%D9%84%D8%A7%D9%84/

بصراحة أعزو قلة الاهتمام لقلة شعبيتها وقلة مصادرها وأمثلتها ومشاريعها مقارنة مع السي شارب

إلى أن هذا لا يعني أنها لغة ضعيفة وإنما لغة قوية غفل عن كنزها الكثيرون وأنا منهم :)

ما أقبـح المعصية ، تذهب لذتها ويبقى إثمها ... ومأ أحسن الطاعة ، تذهب مشقتها ويبقى ثوابها

كل نعيم دون الجنة غرور ... وكـل شقـاء دون النـار سرور

الدورة التطبيقية لتعليم التصميم بالإليستريتور

#3

ببساطه لانه طلب عليها بمجتمعنا شبه معدوم من قبل شركات 

ايضا لايوجد لديها دعم فعلي بمجتمعنا العربي 

وفي بيئه لينكس ايضا تعمل ولكن من خلال مشروع mono ومقارنه بالبيئه التي تنتجها مايكرسوفت دوت نت يعتبر عقيم 

على عكس البايثون والجافا 

ياريت اخي احمد تخبرنا مالذي شدك لهذه لغه مالذي تقدمه ولاتقدمه سي شارب 

جزاك الله خير 

::::: لـــــكـــــي الله ياســـوريا :::::

#4

لماذا ينتقل المبرمجون الى #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!


صورةmsrgb1485.gif ocajavase7programmerclr.gif

#5

شكرا لتفاعلكم

 

يبدو أن السؤال يتحول إلى ولماذا أستخدم 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 "أفضل مافي العالمين"

 

 

 

موضوع سابق: /index.php/topic/196127-%D9%87%D9%84-%D9%85%D9%86-%D8%A7%D9%87%D8%AA%D9%85%D8%A7%D9%85-%D8%B9%D8%B1%D8%A8%D9%8A-%D8%A8%D8%A7%D9%84%D9%84%D8%BA%D8%A7%D8%AA-%D8%A7%D9%84-functional-%D8%9F/page-1

تم تعديل هذه المشاركة بواسطة ahmed_youssef في 17 فبراير 2013 في 15:26

(map share people)

فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader

#6

حسنا الــ 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!


صورةmsrgb1485.gif ocajavase7programmerclr.gif

#7

ليس شرطا أنه عندما أتعلم F# يعني أن ألغي ما أتقنه وأتحول عنه نهائيا

نحن نعلم أن من أكبر إيجابيات الدوت نت أنك تستطيع بأي لغة دوت نت أن تستخدم مكتبات تم بناؤها بلغة دوت نت أخرى

وبالتالي ما الذي يمنع أنه عند بناء مشروع بلغة سي شارب ويوجد جزئية من الأفضل بناؤها بلغة إجرائية (كأن يكون البرنامج متعلق بأمور أكاديمية أو علمية أو غيرها ) أن ابنيها بلغة مثل F# ومن ثم استخدمها كمكتبة ضمن مشروعي

ما أقبـح المعصية ، تذهب لذتها ويبقى إثمها ... ومأ أحسن الطاعة ، تذهب مشقتها ويبقى ثوابها

كل نعيم دون الجنة غرور ... وكـل شقـاء دون النـار سرور

الدورة التطبيقية لتعليم التصميم بالإليستريتور

#8
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

مواضيع مشابهة