هاسكل بالعربي – الجزء الاول

البوست ده بداية لشوية بوستات عن ال Functional Programming و استخداماتها و طرق تصميم النظم بيها، هبدأ من تحت الارض من اول ال computational models اصلا اللي ورا الموضوع، و ربنا يسهل نشوف هنوصل فين.. الكلام ها هنا هيكون مناسب لأي لغة functional او لغة فيها شوية خواص functional (زي بايثون) ، بس هطبق اي حاجة فيه بHaskell لأنها من اكثر اللغات احتراما للFunctional Programming هجمعهم في هاشتاج #هاسكل_بالعربي و هحطهم عالبلوج بتاعتي 🙂

——

موضوع الكمبيوترات و الComputations بدأ زمان ايام الفراعنة و الاغريق، كان الناس كلها لما تيجي تحل مسائل او اثباتات او غيره كانت بتكتب ده عالورق بطريقة declarative ، يعني 1+1=2 منغير ما ابص لتعريف الجمع و علامة المساواة و غيره لأنه ده خارج نطاق الموضوع،بس بعمل عملية حسابية فبوصف العملية الحسابية، لما الاغريق اخترعوا اول الات حاسبة، كان لازم يحولوا العملية دي لحاجة ميكانيكا، فبقوا بيوصفوا ازاي هيحصل الجمع بالتروس مثلا و ده الطريقة ال imperative للحساب

بعدين لما الموضوع تطور بقي فيه دوال مثلثية و غيره، فبقي فيه مستويين من الرياضة، مستوي declarative بيقول ان ان مثلا دالة ال Sine بتاخد حاجة و تجيب جيب الزاوية بتاعها، و نحسب بده و هعيش عادي، او ان دالة التفاضل بتاخد دالة و تحسب تفاضلها، و نوع رياضة تاني اعمق imperative بتاع اثباتات و غيره، بيقولك ازاي ال sine بتتحقق بمتسلسلة تيلور، و ازاي التفاضل بيتعمل هندسيا او تحليليا… و بقت لما الناس بتشتغل بأيديها بتستعمل الستايل الdeclarative و لما تيجي تعمل مكن يحسب حسابات تدور ورا المعادلات عالمعني ال imperative.

فضل الموضوع ده كده لحد ما طلعت اول كمبيوترات للكوكب، claude shanon صاحب الboolean circuits قالك لو هتعمل كمبيوتر، انا هقوله يعمل ازاي العملية بتاعة الجمع او الطرح و اوصف ده بدايرة، و من مجموعة عمليات بدائية هعمل عمليات اعقد…و في وقت مشابه alan turing طلع واحدة من اول ال universal computational machines ، يعني ايه؟ يعني الة حاسبة تقدر تحسب اي خوارزمية في الكون بنفس الهاردوير (مش اوي بس دعنا نفترض) و بشكل ميكانكيكي حلو كده، انا هخليك تلعب بالمكنة بتاعتي و تضبط اعدادتها و تطلع اي خوارزمية، و الاعدادات دي اسمها برنامج، بتخلي المكنة تتحرك ميكانيكيا (بعد كده بقت ترانزستور) عشان تعمل العملية.

بس في الوقت ده كان فيه راجل روش علي جنب اسمه Alonzo Church، عم الوزنو ده كان بيدور في اساسيات الرياضيات و المنطق بعيد عن الكمبيوتر عن طريقة لتوصيف كل الرياضيات و جذروها من فرع او مجموعة عمليات موحدة، زي حاجة جينرال يطلع منها كل الرياضيات و تحديدا المنطق و الرياضيات المتقطعة (Discrete Maths) ف-راح طلع حاجة اسمها Lambda Calculus ، و دي طريقة بتحسب اي خوارزمية في العالم، بس بشكل غير ميكانيكي، شكل abstract رياضي كده، بس المفاجأة، انها موازية و مكافئة تماما، لأي عملية تتعمل عالمكنة بتاعة turing، اصلها هي كمان universal computational machine زي اختها 🤔

———-

بس بقي في اللقطة دي ظهر فريقين من العلماء و اختلفوا ، نصمم كمبيوتراتنا ازاي؟ بطريقة تيورنج ولا تشرش؟

فحصل انقسام ادي لظهور لغات برمجة بتطبق مفاهيم ال lambda calculus زي ML, Lisp, OCaml, Haskell.. دول دلوقتي من احفادهم في السوق JavaScript, Elixir, Erlang, Scala, Scheme

و لغات تانية بتطبق مفاهيم تيورينج و ال turing machines زي Algol, Fortran , Pascal االي احفادهم بقوا Java, C, Python, Ruby

و لسا بينهم صراع حتي الان – نوع تعايش اكتر

و ظهر عيلتين كمبيوترات بسبب ده عيلة ال LISP Machines اللي بتحاول تعمل هاردوير يطبق موديل ال Lambda و فشلت (هنتكلم ليه بعدين – مفشلتش اوي باي ذا واي) و عيلة كمبيوترات تانية مبنية علي طريقة Turing و دي اللي بندرسها في الكلية و بيتعمل البروسيسور اللي عالجهاز اللي كتب البوست ده

البوستين الجايين هتكلم عن مقدمة لل Automata Theory و لغات البرمجة ، و ايه الفرق بين موديل تيورنج و موديل تشرش، و ازاي رياضيا مكافئين لبعض مع امثلة عالاتتين و بعدها نخش علي ليه اصلا نستعمل سوفتوير مبني بالFunctional Programming كطريقة يعني 🤔

#هاسكل_بالعربي

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

Blog at WordPress.com.

Up ↑

Create your website at WordPress.com
Get started
%d bloggers like this: