أكمل على تعلم البايثون أم أحول إلى C++ أو Java ؟ (متعلم جديد)
banner
2017-03-12 , 10:40 صباحاً
Hajime No Ippo’s Avatar
Hajime No Ippo

مبدع

المشاركات:2366
التسجيل:Jan 2014
Hajime No Ippo
السلام عليكم


أدري إن هناك إجابة نموذجية و اللي هي حسب استخدامك و توجهك
أنا ما لي توجه حالي و لكني شخص أبي أتعلم أفضل لغة (تجاوزوا عن عدم دقة هذي الكلمة "أفضل") لأني أريد فهم البنية الداخلية لنظم المعلومات Information Systems
أنا حاليا مهتم بنظم المعلومات الإدارية و أريد أن أتمكن من التعامل معها إداريا و علميا ، تقنيا من حيث الهاردوير و السوفتوير
قاعد أدرس كورس تحليل النظم باستخدام منهجية Object Orient
و سبق أني قبل فترة بدأت في تعلم البايثون
لكن لما بدأت بدراسة تحليل النظم ، شعرت بأن لغة البايثون أقل من مستوى هذي المادة و أن لغة C++ أو الجافا أعلى مستوى منها ، و أريد أربط بين دراستي لتحليل النظم و التمكن من لغة برمجة توازي هذا اللي أدرسه
تصوري عن البايثون أنها لغة للمبتدئين ، و رغم أني أعرف أن لها تطبيقات مختلفة لكن أعتقد أن لغتي الـ C++ أو الجافا أوسع منها و أشمل
و حتى عند الشركات ، مهارة التمكن من لغة C++ أو جافا أهم (بحسب تصوري و أرجو التصحيح إذا كان تصوري غلط)


فما رأيكم ؟
Enlarged Image
2017-03-12 , 10:40 صباحاً
2017-03-12 , 10:07 مساءً
devil xp’s Avatar
devil xp

مشارك

المشاركات:217
التسجيل:Jun 2008
devil xp
كل الي تقدر تسويه ببايثون تقدر تسويه بجافا وC++ والعكس صحيح، كلها لغات عامة الغرض الغرض ماهي لغات DSL متخصصة بشيء معين، كون لغة معينة شائعة في مجال معين يعني أنها مناسبة أو سهلة لهذا المجال، لكن مايعني أنها مصممة له، إذا أنت مرررة فاضي تقدر تبني مثلاً تطبيق ويب بـC++ :mrgreen:.

بايثون لغة كائنية مثل جافا و C++، لكن الفارق بينهم هو نظام أنواع البيانات typing، بايثون لغة ديناميكية dynamically typed يعني نوع بيانات المتغير تحدد أثناء التشغيل، بينما C++ و جافا لغات ستاتيكية statically typed نوع البيانات يحدد لحظة الترجمة، وأعتقد أن معظم المراجع في هندسة البرمجيات والتصميم الكائني تفترض لغة ستاتيكية لأنها تقريباً الأكثر استخدام في بناء الأنظمة المعقدة.

اللغات الديناميكة (بايثون، جافاسكربت، php، إلخ) أسهل وأسرع أنك تطور عليها في البداية، لكنها صعب تبني فيها مشاريع كبيرة، فصعب جداً (عكس مايدعي الكثير) أنك تقرأ برامجها، فلو حصلت متغير مثل foo ممكن يكون أي شيء! ، كثير من الأخطاء تتأخر وتظهر أثناء التشغيل بسبب ديناميكيتها، مزعج لما يشتغل برنامج وبعد كذا يوم يظهر أنك نسيت تكتب متغير صح، كونها لغات ديناميكية تحصل دعم بيئات وأدوات التطوير لها محدود، بيئة التطوير الجيدة تعمل static code analysis معقد عشان تساعدك، لكنه يبقى محدود جداً، فمثلاً هنا:

[code]def foo():
print(n + 1)[/code]بيئة التطوير الجيدة ممكن تعطيك تحذير أن المتغير n قد يكون غير موجود، لكن ماتقدر تجزم 100% أن المتغير n غير موجود، أو أن نوعه يدعم العملية + مع عدد صحيح، هذا شيء يحدد أثناء التشغيل، لكن تبقى مثلاً ميزة أنك ماتحتاج لإعادة ترجمة التطبيق مع كل تعديل*، فقط عدل وشغل، لكن هذي الميزة ممكن كانت تهم أيام ماكانت الكمبيوترات بطيئة والي ظهرت اللغات الديناميكية مثل lisp بسببها، لكن أعتقد ماهي مشكلة حالياً خصوصاً أن فوائد التحقق من النوع أثناء الترجمة أكبر بكثير.

اللغات الستاتيكية مثل C++ وجافا و C# مصممة* بحيث أن نوع البيانات والقيم الي يأخذها المتغير تحدد أثناء الترجمة، هذي ميزة مهمة منها أن معظم الأخطاء البسيطة (والكثيرة) تكتشف أثناء الترجمة، تبقى الأخطاء المنطقية والأخطاء مثل الـnull referencing هذي صعب أن أداة تساعدك فيها، برضو تعقيد استخدام اللغة الستاتيكية هو المترجم، بينما بئية التشغيل أخف وأبسط بكثير أو حتى مايكون لها بيئة تشغيل مثل C/C++ (عشان كذا تستخدم في بناء أنظمة التشغيل، لأن نظام التشغيل أول مايقلع النظام مافيه نظام تشغيل يدعم البرنامج فضلاً عن بئية تشغيل)، بينما اللغات الديناميكية تحصل بيئة التشغيل معقدة وهذا له تكلفته على أداء برامجها.

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

حجة البعض ضد اللغة الستاتيكية أنك دائماً تحتاج تعرف النوع مسبقاً، لكن معظم اللغات الحديثة أضافت ميزة الـtype inference (وصلت حتى لـC++، جافا للأسف باقي ما وصلتها :26:)، مثلاً في C# تقدر تكتب:

[code]var foo = new MyFreakingVeryLongClassName();[/code]بدلاً من:

[code]MyFreakingVeryLongClassName foo = new MyFreakingVeryLongClassName();[/code]والمترجم يقدر بسهولة لحظة الترجمة أن المتغير foo رايح يحتوي على متغير من النوع الطويل ذاك. فما عادت الحجة ذي لها معنى، برضوا وقت الترجمة ماهو مشكلة كبيرة، فمثل ماقلت الكمبيوترات حالياً أسرع بكثير، وعادةً المترجمات مع أدوات البناء تترجم الجزء الي تعدل من الكود والأجزاء الي تتأثر بهذا التعديل.

من ناحية هندسية، زي ماقلت ماتفرق اللغة، لكن فيه لغات تحط حدود تجبرك تلتزم فيها، فحتى لو كنت مبرمج جيد وتكتب كود نظيف، ماتضمن غيرك في نفس الفريق يسوي مثلك، برضو البرامج مهما كانت تحتاج تختبر زين عن طريق اختبار الوحدات unit testing واختبارات الـintegration، عشان تتأكد أنها تشتغل صح، فسهل أنك تصمم نظام وتكتب كود مفقع بأي لغة :d.

من ناحية الشركات والوظائف، C++ شائعة جداً في الدول الصناعية لكن عندنا ماتوكل عيش :1:، بتحصلها في اعلانات الوظائف، لكن كلها من طخة صديقنا في هذا الفديو:

عندنا بايثون لها وجودها بسبب أنظمة الـERP المجانية المكتوبة فيها، جافا و حالياً عائلة .NET خصوصاً C# هي المسيطرة.

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

* على فكرة لاتخلط بين ديناميكية أو ستاتيكية اللغة وكون الطريقة الي تشتغل فيها، اللغة مجرد قواعد ومواصفات تصف معنى هذي القواعد ومكتبات اللغة، التطبيق مختلف، البرنامج الرسمي الي يستخدم لتشغيل برامج بايثون CPython "يترجم" برامج بايثون لحظة التشغيل لـbytecode ثم يشغلها، pypy مترجم ثاني يترجم برامج بايثون لكود آلة machine code يشتغل مباشرة على المعالج (مثل C/C++)،، معظم محركات جافاسكربت مثل V8 (مستخدم في كروم) و SpiderMonkey (مستخدم في فايرفوكس) تترجم جافا سكربت لكود آلة، قليل تحصل هذي الأيام لغة مفسرة، برضو مايشترط أن لغة ستاتيكية أنها تكون مترجمة، فيه مفسر لـC اسمه tcc، وقدر تبني مفسر لـC++ و جافا، لكن معظمها ماتتعدى تجارب ولاهي شيء جدي.
2017-03-12 , 10:07 مساءً
2017-03-13 , 02:28 صباحاً
Njoudii’s Avatar
Njoudii

مشارك

المشاركات:47
التسجيل:Apr 2014
Njoudii
تعلم C#
thank me later
2017-03-13 , 02:28 صباحاً
2017-03-13 , 06:37 مساءً
NAIF221’s Avatar
NAIF221

مبدع

المشاركات:2440
التسجيل:Aug 2012
NAIF221
من رأيي , ان كان عندك المقدرة , توجه لعائله الـ C ,( جافا , سي شارب و ++C) حاول تتعلمها , راح تعطيك مفاهيم اقوى من البايثون , و اذا احتجت تشتغل بالبايثون راح تقدر تكتب كود بكل سهوله .
بالامس احتجت سكربت لموقع , حملت البايثون , اخذت ساعتين اتعلم الاساسيات و طلعت بالكود هذا

Image

مع العلم ان مستواي بالجافا ممتاز و بالـ C++ ضعيف .
2017-03-13 , 06:37 مساءً
2017-03-13 , 07:40 مساءً
mody alharbi’s Avatar
mody alharbi

بارز

المشاركات:1773
التسجيل:Sep 2012
mody alharbi
شخصيا انا شخص غير متخصص بالبرمجة

ولكني احتاجها في بعض مجالات عملي

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

لعمل تطبيقات معينة في مجال عملي بكل دقة وجودة خلال فقط ثلاثة اشهر

وايضا تعلمت لغة الاسمبلي لعمل تطبيقات ابسط وايضا في مجال عملي مدة التعلم مقاربة للسي بلس بلس

الحكمة هنا ان تعلمي للغة السي جعل من السهل علي تعلم الاسمبلي مع الفرق الكبير جدا بينهم

والسبب اني بتعلمي لغة السي اصبح عندي منطق البرمجة العام واستطعت ان افكر كمبرمج

وهذا الشي ساعدني بتعلمي للاسمبلي فاصبحت اتعلم فقط الاوامر وبمعرفتي لكل امر

اجد ان له مقابل او مشابه في اللغة الاخرى وبكذا سهل علي تعلمها بشكل كبير

نصيحتي الان لك هي تعلم اللغة الاقرب لك حاليا ومع تمكنك منها سيصبح تعلم اللغات

الاخرى شي سهل بالنسبة لك
2017-03-13 , 07:40 مساءً
2017-03-20 , 03:25 مساءً
Hajime No Ippo’s Avatar
Hajime No Ippo

مبدع

المشاركات:2366
التسجيل:Jan 2014
Hajime No Ippo
devil xp كتب:
كل الي تقدر تسويه ببايثون تقدر تسويه بجافا وC++ والعكس صحيح، كلها لغات عامة الغرض الغرض ماهي لغات DSL متخصصة بشيء معين، كون لغة معينة شائعة في مجال معين يعني أنها مناسبة أو سهلة لهذا المجال، لكن مايعني أنها مصممة له، إذا أنت مرررة فاضي تقدر تبني مثلاً تطبيق ويب بـC++ :mrgreen:.

بايثون لغة كائنية مثل جافا و C++، لكن الفارق بينهم هو نظام أنواع البيانات typing، بايثون لغة ديناميكية dynamically typed يعني نوع بيانات المتغير تحدد أثناء التشغيل، بينما C++ و جافا لغات ستاتيكية statically typed نوع البيانات يحدد لحظة الترجمة، وأعتقد أن معظم المراجع في هندسة البرمجيات والتصميم الكائني تفترض لغة ستاتيكية لأنها تقريباً الأكثر استخدام في بناء الأنظمة المعقدة.

اللغات الديناميكة (بايثون، جافاسكربت، php، إلخ) أسهل وأسرع أنك تطور عليها في البداية، لكنها صعب تبني فيها مشاريع كبيرة، فصعب جداً (عكس مايدعي الكثير) أنك تقرأ برامجها، فلو حصلت متغير مثل foo ممكن يكون أي شيء! ، كثير من الأخطاء تتأخر وتظهر أثناء التشغيل بسبب ديناميكيتها، مزعج لما يشتغل برنامج وبعد كذا يوم يظهر أنك نسيت تكتب متغير صح، كونها لغات ديناميكية تحصل دعم بيئات وأدوات التطوير لها محدود، بيئة التطوير الجيدة تعمل static code analysis معقد عشان تساعدك، لكنه يبقى محدود جداً، فمثلاً هنا:

[code]def foo():
print(n + 1)[/code]بيئة التطوير الجيدة ممكن تعطيك تحذير أن المتغير n قد يكون غير موجود، لكن ماتقدر تجزم 100% أن المتغير n غير موجود، أو أن نوعه يدعم العملية + مع عدد صحيح، هذا شيء يحدد أثناء التشغيل، لكن تبقى مثلاً ميزة أنك ماتحتاج لإعادة ترجمة التطبيق مع كل تعديل*، فقط عدل وشغل، لكن هذي الميزة ممكن كانت تهم أيام ماكانت الكمبيوترات بطيئة والي ظهرت اللغات الديناميكية مثل lisp بسببها، لكن أعتقد ماهي مشكلة حالياً خصوصاً أن فوائد التحقق من النوع أثناء الترجمة أكبر بكثير.

اللغات الستاتيكية مثل C++ وجافا و C# مصممة* بحيث أن نوع البيانات والقيم الي يأخذها المتغير تحدد أثناء الترجمة، هذي ميزة مهمة منها أن معظم الأخطاء البسيطة (والكثيرة) تكتشف أثناء الترجمة، تبقى الأخطاء المنطقية والأخطاء مثل الـnull referencing هذي صعب أن أداة تساعدك فيها، برضو تعقيد استخدام اللغة الستاتيكية هو المترجم، بينما بئية التشغيل أخف وأبسط بكثير أو حتى مايكون لها بيئة تشغيل مثل C/C++ (عشان كذا تستخدم في بناء أنظمة التشغيل، لأن نظام التشغيل أول مايقلع النظام مافيه نظام تشغيل يدعم البرنامج فضلاً عن بئية تشغيل)، بينما اللغات الديناميكية تحصل بيئة التشغيل معقدة وهذا له تكلفته على أداء برامجها.

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

حجة البعض ضد اللغة الستاتيكية أنك دائماً تحتاج تعرف النوع مسبقاً، لكن معظم اللغات الحديثة أضافت ميزة الـtype inference (وصلت حتى لـC++، جافا للأسف باقي ما وصلتها :26:)، مثلاً في C# تقدر تكتب:

[code]var foo = new MyFreakingVeryLongClassName();[/code]بدلاً من:

[code]MyFreakingVeryLongClassName foo = new MyFreakingVeryLongClassName();[/code]والمترجم يقدر بسهولة لحظة الترجمة أن المتغير foo رايح يحتوي على متغير من النوع الطويل ذاك. فما عادت الحجة ذي لها معنى، برضوا وقت الترجمة ماهو مشكلة كبيرة، فمثل ماقلت الكمبيوترات حالياً أسرع بكثير، وعادةً المترجمات مع أدوات البناء تترجم الجزء الي تعدل من الكود والأجزاء الي تتأثر بهذا التعديل.

من ناحية هندسية، زي ماقلت ماتفرق اللغة، لكن فيه لغات تحط حدود تجبرك تلتزم فيها، فحتى لو كنت مبرمج جيد وتكتب كود نظيف، ماتضمن غيرك في نفس الفريق يسوي مثلك، برضو البرامج مهما كانت تحتاج تختبر زين عن طريق اختبار الوحدات unit testing واختبارات الـintegration، عشان تتأكد أنها تشتغل صح، فسهل أنك تصمم نظام وتكتب كود مفقع بأي لغة :d.

من ناحية الشركات والوظائف، C++ شائعة جداً في الدول الصناعية لكن عندنا ماتوكل عيش :1:، بتحصلها في اعلانات الوظائف، لكن كلها من طخة صديقنا في هذا الفديو:

عندنا بايثون لها وجودها بسبب أنظمة الـERP المجانية المكتوبة فيها، جافا و حالياً عائلة .NET خصوصاً C# هي المسيطرة.

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

* على فكرة لاتخلط بين ديناميكية أو ستاتيكية اللغة وكون الطريقة الي تشتغل فيها، اللغة مجرد قواعد ومواصفات تصف معنى هذي القواعد ومكتبات اللغة، التطبيق مختلف، البرنامج الرسمي الي يستخدم لتشغيل برامج بايثون CPython "يترجم" برامج بايثون لحظة التشغيل لـbytecode ثم يشغلها، pypy مترجم ثاني يترجم برامج بايثون لكود آلة machine code يشتغل مباشرة على المعالج (مثل C/C++)،، معظم محركات جافاسكربت مثل V8 (مستخدم في كروم) و SpiderMonkey (مستخدم في فايرفوكس) تترجم جافا سكربت لكود آلة، قليل تحصل هذي الأيام لغة مفسرة، برضو مايشترط أن لغة ستاتيكية أنها تكون مترجمة، فيه مفسر لـC اسمه tcc، وقدر تبني مفسر لـC++ و جافا، لكن معظمها ماتتعدى تجارب ولاهي شيء جدي.




شكرا أخوي devil xp على المشاركة الثرية
بأعتبرها نقطة مرجعية لي و من خلالها أقرا أكثر عشان أفهم تماما كل كلمة صعب علي فهمها


يعني .. فهمت بعض المفاهيم اللي ذكرتها هنا ، و بالمجمل بايثون و سي بلس بلس و جافا لغات ممكن إلى مستوى معين تؤدي نفس الغرض . طبعا فيه فروقات جوهرية و فهمتها بالمجمل ، و اللي أستنتجه أنه حسب غرضي من تعلم اللغة ، يتحدد هل أنا مهتم بهي التفاصيل أم لا.



بالنسبة للـ ERP ، أنا قرأت كتاب في الـ ERP و لقيته يذكر أن الجافا مستخدمة في الإنتيقريشن (أو يمكن فهمي غلط )
من كتاب Enterprise Systems for Management
[RIGHT]
devil xp كتب:
كل الي تقدر تسويه ببايثون تقدر تسويه بجافا وC++ والعكس صحيح، كلها لغات عامة الغرض الغرض ماهي لغات DSL متخصصة بشيء معين، كون لغة معينة شائعة في مجال معين يعني أنها مناسبة أو سهلة لهذا المجال، لكن مايعني أنها مصممة له، إذا أنت مرررة فاضي تقدر تبني مثلاً تطبيق ويب بـC++ :mrgreen:.

بايثون لغة كائنية مثل جافا و C++، لكن الفارق بينهم هو نظام أنواع البيانات typing، بايثون لغة ديناميكية dynamically typed يعني نوع بيانات المتغير تحدد أثناء التشغيل، بينما C++ و جافا لغات ستاتيكية statically typed نوع البيانات يحدد لحظة الترجمة، وأعتقد أن معظم المراجع في هندسة البرمجيات والتصميم الكائني تفترض لغة ستاتيكية لأنها تقريباً الأكثر استخدام في بناء الأنظمة المعقدة.

اللغات الديناميكة (بايثون، جافاسكربت، php، إلخ) أسهل وأسرع أنك تطور عليها في البداية، لكنها صعب تبني فيها مشاريع كبيرة، فصعب جداً (عكس مايدعي الكثير) أنك تقرأ برامجها، فلو حصلت متغير مثل foo ممكن يكون أي شيء! ، كثير من الأخطاء تتأخر وتظهر أثناء التشغيل بسبب ديناميكيتها، مزعج لما يشتغل برنامج وبعد كذا يوم يظهر أنك نسيت تكتب متغير صح، كونها لغات ديناميكية تحصل دعم بيئات وأدوات التطوير لها محدود، بيئة التطوير الجيدة تعمل static code analysis معقد عشان تساعدك، لكنه يبقى محدود جداً، فمثلاً هنا:

[code]def foo():
print(n + 1)[/code]بيئة التطوير الجيدة ممكن تعطيك تحذير أن المتغير n قد يكون غير موجود، لكن ماتقدر تجزم 100% أن المتغير n غير موجود، أو أن نوعه يدعم العملية + مع عدد صحيح، هذا شيء يحدد أثناء التشغيل، لكن تبقى مثلاً ميزة أنك ماتحتاج لإعادة ترجمة التطبيق مع كل تعديل*، فقط عدل وشغل، لكن هذي الميزة ممكن كانت تهم أيام ماكانت الكمبيوترات بطيئة والي ظهرت اللغات الديناميكية مثل lisp بسببها، لكن أعتقد ماهي مشكلة حالياً خصوصاً أن فوائد التحقق من النوع أثناء الترجمة أكبر بكثير.

اللغات الستاتيكية مثل C++ وجافا و C# مصممة* بحيث أن نوع البيانات والقيم الي يأخذها المتغير تحدد أثناء الترجمة، هذي ميزة مهمة منها أن معظم الأخطاء البسيطة (والكثيرة) تكتشف أثناء الترجمة، تبقى الأخطاء المنطقية والأخطاء مثل الـnull referencing هذي صعب أن أداة تساعدك فيها، برضو تعقيد استخدام اللغة الستاتيكية هو المترجم، بينما بئية التشغيل أخف وأبسط بكثير أو حتى مايكون لها بيئة تشغيل مثل C/C++ (عشان كذا تستخدم في بناء أنظمة التشغيل، لأن نظام التشغيل أول مايقلع النظام مافيه نظام تشغيل يدعم البرنامج فضلاً عن بئية تشغيل)، بينما اللغات الديناميكية تحصل بيئة التشغيل معقدة وهذا له تكلفته على أداء برامجها.

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

حجة البعض ضد اللغة الستاتيكية أنك دائماً تحتاج تعرف النوع مسبقاً، لكن معظم اللغات الحديثة أضافت ميزة الـtype inference (وصلت حتى لـC++، جافا للأسف باقي ما وصلتها :26:)، مثلاً في C# تقدر تكتب:

[code]var foo = new MyFreakingVeryLongClassName();[/code]بدلاً من:

[code]MyFreakingVeryLongClassName foo = new MyFreakingVeryLongClassName();[/code]والمترجم يقدر بسهولة لحظة الترجمة أن المتغير foo رايح يحتوي على متغير من النوع الطويل ذاك. فما عادت الحجة ذي لها معنى، برضوا وقت الترجمة ماهو مشكلة كبيرة، فمثل ماقلت الكمبيوترات حالياً أسرع بكثير، وعادةً المترجمات مع أدوات البناء تترجم الجزء الي تعدل من الكود والأجزاء الي تتأثر بهذا التعديل.

من ناحية هندسية، زي ماقلت ماتفرق اللغة، لكن فيه لغات تحط حدود تجبرك تلتزم فيها، فحتى لو كنت مبرمج جيد وتكتب كود نظيف، ماتضمن غيرك في نفس الفريق يسوي مثلك، برضو البرامج مهما كانت تحتاج تختبر زين عن طريق اختبار الوحدات unit testing واختبارات الـintegration، عشان تتأكد أنها تشتغل صح، فسهل أنك تصمم نظام وتكتب كود مفقع بأي لغة :d.

من ناحية الشركات والوظائف، C++ شائعة جداً في الدول الصناعية لكن عندنا ماتوكل عيش :1:، بتحصلها في اعلانات الوظائف، لكن كلها من طخة صديقنا في هذا الفديو:

عندنا بايثون لها وجودها بسبب أنظمة الـERP المجانية المكتوبة فيها، جافا و حالياً عائلة .NET خصوصاً C# هي المسيطرة.

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

* على فكرة لاتخلط بين ديناميكية أو ستاتيكية اللغة وكون الطريقة الي تشتغل فيها، اللغة مجرد قواعد ومواصفات تصف معنى هذي القواعد ومكتبات اللغة، التطبيق مختلف، البرنامج الرسمي الي يستخدم لتشغيل برامج بايثون CPython "يترجم" برامج بايثون لحظة التشغيل لـbytecode ثم يشغلها، pypy مترجم ثاني يترجم برامج بايثون لكود آلة machine code يشتغل مباشرة على المعالج (مثل C/C++)،، معظم محركات جافاسكربت مثل V8 (مستخدم في كروم) و SpiderMonkey (مستخدم في فايرفوكس) تترجم جافا سكربت لكود آلة، قليل تحصل هذي الأيام لغة مفسرة، برضو مايشترط أن لغة ستاتيكية أنها تكون مترجمة، فيه مفسر لـC اسمه tcc، وقدر تبني مفسر لـC++ و جافا، لكن معظمها ماتتعدى تجارب ولاهي شيء جدي.




شكرا أخوي devil xp على المشاركة الثرية
بأعتبرها نقطة مرجعية لي و من خلالها أقرا أكثر عشان أفهم تماما كل كلمة صعب علي فهمها


يعني .. فهمت بعض المفاهيم اللي ذكرتها هنا ، و بالمجمل بايثون و سي بلس بلس و جافا لغات ممكن إلى مستوى معين تؤدي نفس الغرض . طبعا فيه فروقات جوهرية و فهمتها بالمجمل ، و اللي أستنتجه أنه حسب غرضي من تعلم اللغة ، يتحدد هل أنا مهتم بهي التفاصيل أم لا.



بالنسبة للـ ERP ، أنا قرأت كتاب في الـ ERP و لقيته يذكر أن الجافا مستخدمة في الإنتيقريشن (أو يمكن فهمي غلط )
من كتاب Enterprise Systems for Management











[/RIGHT]
2017-03-20 , 03:25 مساءً
2017-03-20 , 03:33 مساءً
Hajime No Ippo’s Avatar
Hajime No Ippo

مبدع

المشاركات:2366
التسجيل:Jan 2014
Hajime No Ippo
ما قدرت انسخ صورة من الكتاب ، يبي لها شغلانة
هذا النص المكتوب :


SAP continues to be a leader in many of the global organizations that promote the use of a common language such as the Organization for the Advancement of Structures Information Standards (OASIS) and the Java Community Process (JCP). Standards have been developed to help reduce the cost of integration and expedite the process.
2017-03-20 , 03:33 مساءً
2017-03-20 , 03:36 مساءً
Hajime No Ippo’s Avatar
Hajime No Ippo

مبدع

المشاركات:2366
التسجيل:Jan 2014
Hajime No Ippo
Njoudii كتب:
تعلم C#
thank me later




كأني فهمت أن الاستخدام الكامل لمميزات C# موجهة لتطبيقات ميكروسوفت





2017-03-20 , 03:36 مساءً
2017-03-20 , 03:36 مساءً
Hajime No Ippo’s Avatar
Hajime No Ippo

مبدع

المشاركات:2366
التسجيل:Jan 2014
Hajime No Ippo
شكرا لك Njoudi
2017-03-20 , 03:36 مساءً
2017-03-20 , 03:37 مساءً
Hajime No Ippo’s Avatar
Hajime No Ippo

مبدع

المشاركات:2366
التسجيل:Jan 2014
Hajime No Ippo
NAIF221 كتب:
من رأيي , ان كان عندك المقدرة , توجه لعائله الـ C ,( جافا , سي شارب و ++C) حاول تتعلمها , راح تعطيك مفاهيم اقوى من البايثون , و اذا احتجت تشتغل بالبايثون راح تقدر تكتب كود بكل سهوله .
بالامس احتجت سكربت لموقع , حملت البايثون , اخذت ساعتين اتعلم الاساسيات و طلعت بالكود هذا



مع العلم ان مستواي بالجافا ممتاز و بالـ C++ ضعيف .


شكرا لك يا نايف

2017-03-20 , 03:37 مساءً
2017-03-20 , 03:38 مساءً
Hajime No Ippo’s Avatar
Hajime No Ippo

مبدع

المشاركات:2366
التسجيل:Jan 2014
Hajime No Ippo
mody alharbi كتب:
شخصيا انا شخص غير متخصص بالبرمجة

ولكني احتاجها في بعض مجالات عملي

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

لعمل تطبيقات معينة في مجال عملي بكل دقة وجودة خلال فقط ثلاثة اشهر

وايضا تعلمت لغة الاسمبلي لعمل تطبيقات ابسط وايضا في مجال عملي مدة التعلم مقاربة للسي بلس بلس

الحكمة هنا ان تعلمي للغة السي جعل من السهل علي تعلم الاسمبلي مع الفرق الكبير جدا بينهم

والسبب اني بتعلمي لغة السي اصبح عندي منطق البرمجة العام واستطعت ان افكر كمبرمج

وهذا الشي ساعدني بتعلمي للاسمبلي فاصبحت اتعلم فقط الاوامر وبمعرفتي لكل امر

اجد ان له مقابل او مشابه في اللغة الاخرى وبكذا سهل علي تعلمها بشكل كبير

نصيحتي الان لك هي تعلم اللغة الاقرب لك حاليا ومع تمكنك منها سيصبح تعلم اللغات

الاخرى شي سهل بالنسبة لك



شكرا لك mody alharbi

2017-03-20 , 03:38 مساءً
2017-03-21 , 12:56 مساءً
devil xp’s Avatar
devil xp

مشارك

المشاركات:217
التسجيل:Jun 2008
devil xp
Hajime No Ippo كتب:

[RIGHT] بالنسبة للـ ERP ، أنا قرأت كتاب في الـ ERP و لقيته يذكر أن الجافا مستخدمة في الإنتيقريشن (أو يمكن فهمي غلط )
من كتاب Enterprise Systems for Management

[/RIGHT]
[RIGHT]

[/RIGHT]

Hajime No Ippo كتب:
ما قدرت انسخ صورة من الكتاب ، يبي لها شغلانة
هذا النص المكتوب :


SAP continues to be a leader in many of the global organizations that promote the use of a common language such as the Organization for the Advancement of Structures Information Standards (OASIS) and the Java Community Process (JCP). Standards have been developed to help reduce the cost of integration and expedite the process.



المقطع دعائي يتكلم عن دور SAP في المساهمة في المعايير مع جهات مثل OASIS و JCP (هذي مجموعة إجراءات لابد من المرور فيها لأي جهة تبي تضيف أي شيء ويصير جزء من جافا أو تبي توحد شيء مثل المكتبات).

لكن ERP اسم لنوع من أنواع الأنظمة (وليس اسم منتج معين)، أنظمة الـERP ممكن تكتب بأي لغة مثلها مثل أي نوع من الأنظمة، هذي قائمة لأنظمة ERP منها المجاني ومنها التجاري.
2017-03-21 , 12:56 مساءً
2017-03-26 , 09:33 مساءً
the leagnd’s Avatar
the leagnd

فعال

المشاركات:1483
التسجيل:Jan 2011
the leagnd
مادام أنك مهتم ب Infotmation system, فحاول تتعلم لغه SQL
2017-03-26 , 09:33 مساءً
2017-04-14 , 04:35 مساءً
booge.ksa’s Avatar
booge.ksa

بارز

المشاركات:1976
التسجيل:Apr 2009
booge.ksa


احد يعلمني ما علاقة لغة البرمجه بل الهكر

وهل تنصحوني بتعلمها ؟؟؟
2017-04-14 , 04:35 مساءً
2017-04-15 , 08:34 صباحاً
NAIF221’s Avatar
NAIF221

مبدع

المشاركات:2440
التسجيل:Aug 2012
NAIF221
booge.ksa كتب:


احد يعلمني ما علاقة لغة البرمجه بل الهكر

وهل تنصحوني بتعلمها ؟؟؟



لغات البرمجة هي الاساس , تقدر تكتب برامج مفيدة او تكتب برامج ضارة و يندرج تحت الضار التهكير و غيره .
هل ننصحك ؟
لا , لأن التهكير ما له فايدة غير السرقة و التخريب , غير ذلك تعلم البرمجة شيئ طيب
2017-04-15 , 08:34 صباحاً
2017-04-29 , 07:25 مساءً
هذرلوجيا’s Avatar
هذرلوجيا

مشارك

المشاركات:121
التسجيل:Aug 2009
هذرلوجيا
شف وانا اخوك انا قد اشتغلت على نظام تشغيل وكنت ماسك جزئية الميموري منجمنت

السي او السي ++ هي الاساس راح تعلمك فهم نظام التشغيل كيف يتعامل مع البيانات لكنها صعبه لان كل شي راح تسويه انت
بينما الجافا والبايثون كل شي جاهز المسأله مسألة تريب فقط
ف نصيحه اذا بتحترف وتفهم كيف الهارد وير يتعامل مع البيانات روح سي بيعطيك تصور ممتاز والتغير الى لغه اخرى اذا كنت قوي بالسي ما ياخذ منك اي جهد
2017-04-29 , 07:25 مساءً
2017-05-12 , 07:21 صباحاً
mhagr5’s Avatar
mhagr5

مشارك

المشاركات:517
التسجيل:Mar 2008
mhagr5
Hajime No Ippo كتب:
السلام عليكم


أدري إن هناك إجابة نموذجية و اللي هي حسب استخدامك و توجهك
أنا ما لي توجه حالي و لكني شخص أبي أتعلم أفضل لغة (تجاوزوا عن عدم دقة هذي الكلمة "أفضل") لأني أريد فهم البنية الداخلية لنظم المعلومات Information Systems
أنا حاليا مهتم بنظم المعلومات الإدارية و أريد أن أتمكن من التعامل معها إداريا و علميا ، تقنيا من حيث الهاردوير و السوفتوير
قاعد أدرس كورس تحليل النظم باستخدام منهجية Object Orient
و سبق أني قبل فترة بدأت في تعلم البايثون
لكن لما بدأت بدراسة تحليل النظم ، شعرت بأن لغة البايثون أقل من مستوى هذي المادة و أن لغة C++ أو الجافا أعلى مستوى منها ، و أريد أربط بين دراستي لتحليل النظم و التمكن من لغة برمجة توازي هذا اللي أدرسه
تصوري عن البايثون أنها لغة للمبتدئين ، و رغم أني أعرف أن لها تطبيقات مختلفة لكن أعتقد أن لغتي الـ C++ أو الجافا أوسع منها و أشمل
و حتى عند الشركات ، مهارة التمكن من لغة C++ أو جافا أهم (بحسب تصوري و أرجو التصحيح إذا كان تصوري غلط)


فما رأيكم ؟



لغة الباثون ماتقل عن اي لغة ثانية. لكن البايثون استخدامها كثير ف ال big data و الاختراقات اكثر من اي لغة ثانية. الجافا لغة برمجية بحته.
2017-05-12 , 07:21 صباحاً
2017-05-26 , 10:48 صباحاً
HexNAND’s Avatar
HexNAND

عضو جديد

المشاركات:30
التسجيل:Jan 2017
HexNAND
شوف باختصار,,

اغلب اللغات متقاربة
اللي يفرق انه الشركات احياناً تستثمر في لغة معينة وتطلب موظفين يتقنون اللغة هذي عشان ما تضطر تضييع الفلوس على نظام جديد بلغة مختلفة...
لكن ابسطها لك...

تبي تتعلم اساسيات البرمجة وكيف الجهاز يحول الإشارات الكهربائية الى اوامر وينفذها
Assembly Language
تعلم هاللغة غير حياتي حرفياً


تبي تبرمج انظمة تتحكم بالشبكات وتديرها,, خلك على البايثن او شوف لغة Go جديدة

تبي للآيقون,, شوف سويفت برضه توها جديدة مالها ظ£ سنين ولا السي#

تبي للآند رويد الجافا ولا السي#

تبي للوندوز اخف لغة الآن xaml + سي#

انترنت الأشياء,, برضه الجافا والسي#

تبي تبرمج للكلاود تعلم json

تبي تبرمج للإحصائيات وتحليلها R واعقد منها Haskell ,, لاكن بالنسبة لك انت متعلم بايثن,, ماراح تواجه صعوبة كبيرة..

حط باعتبارك ان الوندوز ظ،ظ  آخر نظام للعميل,, لان العالم كله الآن متوجه للكلاود وانترنت الأشياء


وزي ماقلت لك,, اللغات متقاربة,, اقدر اكتب لك دالة بعشر لغات لله الحمد,, تؤدي نفس الوظيفة,, لكن اللي يقيد المبرمج الــــframework
كل شركه تتوسع في مجالها على حسب مايناسبها,,,,,
2017-05-26 , 10:48 صباحاً
2017-05-26 , 01:16 مساءً
tony power’s Avatar
tony power

متميز

المشاركات:6335
التسجيل:Jun 2013
tony power
تعلم اكثر من لغة مافي شيء يمنع هو ليس طريق واحد على شان تحول لتعلم لغة أخرى

في مشاريع بلغات مختلفة مثلا جزء تطبيق موبايل بالجافا يتصل بسرفر ويب وصفحات php وينفذ بالخلفية سكربت بايثون على السرفر ويرجع النتيجة للتطبيق
2017-05-26 , 01:16 مساءً
2017-06-02 , 02:19 صباحاً
Hajime No Ippo’s Avatar
Hajime No Ippo

مبدع

المشاركات:2366
التسجيل:Jan 2014
Hajime No Ippo
أحسنتم ، بارك الله فيكم
معلومات متنوعة و ثرية
شكرا لكم فردا فردا
و تقبل الله صيامكم و قيامكم
2017-06-02 , 02:19 صباحاً