مهووسو جنو Gnu Geeks
2.94K subscribers
418 photos
11 videos
15 files
222 links
أبرز المشاريع و التطبيقات و التلميحات المفيدة لمستخدمي المصادر المفتوحة (الحرة)

لطرح أية تساؤلات تخطر ببالكم بمجال المصادر المفتوحة اشترك بمجموعتنا
https://t.me/gnugeeksgroup
Download Telegram
تعلم رست وغو ببضعة ساعات مع مقارنة سريعة مع بايثون وسي بلس بلس

لطالما قرأت عن لغة #رست وعن سرعة أدائها وسهولة الكتابة بها وبأنها موازية بالأداء لـC++ وبسهولة بايثون.
الحقيقة أنني لم أنجذب إليها كثيراً لأنه صار عندي مناعة من ثقافة الـ Trend وبالذات من كل شيء جديد، لذلك دائماً أترك التقنيات لفترة حتى تتضح محاسنها من مساؤئها.

منذ بضعة أشهر وبإحدى عطلي الأسبوعية عزمت تعلم لغتين، لغة رست و #غو.

قد تكون طريقة تعلمي غريبة نوعاً ما لكنها ناسبتني لحد بعيد حيث اتبعت المنهجية التالية:
1. بدأت بصفحة ويكيبيديا بكلتا اللغتين للإطلاع على نحوية Syntax كلا اللغتين (ويكي غو - ويكي ر ست)
2. دخلت للموقع الرسمي لكلتا اللغتين وبدأت بكتابة تطبيق بسيط من متصفح الإنترنت (ملعب رست - ملعب غو)
3. بعدما أشبعت ذروة فضولي بدأت بتجهيز الأدوات اللازمة لتبيت اللغتين على حاسوبي وفقاً للتعليمات من الموقعين الرسميين (تعليمات رست - تعليمات غو).
4. بعد الإنتهاء من عملية التثبيت كتبت ثلاثة تطبيقات بلغة C++ ورست وغو (منشورة أدناه) لاختبار أداء اللغات بشكل سطحي جداً

التجربة كانت ممتعة، استطعت تعلم أسياسيات رست وغو خلال ساعتين، شفرة رست وغو كلتاهما سهلتا التعلم بالمقارنة بالـ C++ لكن غو أكثر أناقة وبساطة حتى أنني وجدت أنها أسهل من بايثون من ناحية التنظيم وعدد الأسطر.
بحسب التطبيق الذي جربته باللغات الثلاثة كانت نتيجة سرعة الأداء كالآتي بالترتيب (الزمن بالثانية):
1. Go: 0m2.249s
2. Rust: 0m3.512s
3. C++: 0m8.359s
4. Python: 4m35.354s
النتيجة صادمة أليس كذلك؟
طبعاً من كان ليتوقع أن تكون #سي بلس بلس أبطأ من غو ورست، أما بايثون فكانت بأداء مخز للغاية (أكثر من 4 دقائق)!!!
الحقيقة أن هذا الإختبار بسيط جداً ولا يمكن أن يعوّل عليه بإتخاذ القرارات لكن من خلاله استطعت الحصول على لمحة لقدرات لغة تعلمتها بأقل من يوم. لكن هنالك حقيقة جوهرية وهي أن الأداء المخزي للبايثون حقيقي لأن بايثون لم تصمم أساساً للأداء العالي وبالتالي من الخطأ وضعها بنفس سوية اللغات الثلاث مع ذلك وضعتها كونها من اللغات المحبوبة والتي لها جمهورها.
الحقيقة أن مقارنة الأداء العملية والعلمية تستطيعون الحصول عليها من مؤشر Benchmarks Game الرائع والذي يزودنا بنتيجة واضحة لأداء اللغات الأربع حيث يظهر جلياً أن C++ على القمة بلا ريب لذلك أزودكم بنتيجة الاختبار الحقيقية للأداء (قيمة CPU أقل يعني الأداء الأفضل):
1. #C++
2. Rust vs C++
3. Go vs C++
4. Python vs C++
نأتي لنقطة مهمة واجهتها عندما خضت هذه التجربة وهي أن النظام البيئي Eco System لغو متفوق بأشواط عن رست والسبب واضح وهو أن سهولة نحوية غو زادت من شعبيتها بالرغم من أنه عن طريق رست تستطيعون الوصول لميزات متقدمة يصعب الحصول عليها بواسطة غو. لذلك ستجد أن غو منتشرة بشكل واسع بمجال تطوير الويب والشبكات في حين تستعمل #رست ببرمجة الأنظمة أكثر بالرغم من أن العديد من الشركات تستعملها بتطوير الويب والشبكات.

غو ورست رائعتان وكلتاهما متفوقتان على #بايثون ومرشحتان لأن تكونا بايثون المستقبل لأن كلتاهما توازنان ما بين البساطة والأداء العالي على عكس تعقيد سي بلس بلس وضعف الأداء في بايثون.

قبل الختام يجدر بي الإشارة إلى ثلاثة مواقع مهمة لغو ورست للحصول على أي مكتبة تريدونها بأي اختصاص يخطر ببالكم:
Go Packages
Aِwesome Go
Rust Package Registry

أدناه تجدون التطبيق بأربعة لغات مع طريقة قياس زمن التنفيذ في لينكس 👇

ملاحظة جانبية: أول لغة برمجة تعلمتها هي C++ ودائماً كنت ومازلت أستغرب سبب تقييم المطورين الجدد لها بأنها صعبة، مع ذلك لغة البرمجة مجرد أداة للوصول للهدف النهائي وهو الحصول على التطبيق الرائع الذي سيدر عليكم مليون دولار 😜
لذلك معيار الصعوبة أمر نسبي ومرتبط بعوامل عديدة والتعصب للغة ما عبارة عن سطحية بالغة لحقيقة مغايرة بالكامل لذلك التعصب.

#cpp #c #python #rust #google #go
لتوليد أية مستندات بصيغة #PDF أرشح لكم مكتبة #سي #شارب QuestPDF لمطوري التطبيقات باستعمال إطار العمل #دوت #نت

مكتبة QuestPDF متخصّصة بإنشاء المستندات من شفرة C# مباشرة دون الحاجة لاستعمال مصمم للتقارير وحتى دون الحاجة للحفظ اليدوي كونها توفر ميزة التحميل التلقائي Hot Reload وبالتالي يمكن مراجعة التعديلات مباشرة وبسرعة.

المكتبة تدعم اللغة العربية بشكل كامل و هي متوفرة بترخيص MIT ويساهم بتطويرها العديد من المطورين بشكل نشط كذلك هي متوفره بمخزن الحزم #NuGet وتدعم كل أنظمة التشغيل المدعومة بالدوت نت ( #لينكس #ويندوز #ماكنتوش… إلخ)

- رابط المكتبة:
https://www.questpdf.com/
- رابط المشروع:
https://github.com/QuestPDF/QuestPDF


#QuestPDF #C #net #dotnet