اقتباسبالمناسبة ما هي function pointers؟
Technical Lead Developer
اللهم قنى شر الجهل و الجهلاء
( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}
اقتباسبالمناسبة ما هي function pointers؟
Technical Lead Developer
اللهم قنى شر الجهل و الجهلاء
( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}
MKSoft كتب:انا في رأيي الشخصي .. أي شخص يريد أن يصبح مالك لعالم البرمجة من جميع جوانبه فيتقن لغتي برمجة و هما :C/C++ & Java Platform
c++ أوكي
الجافا ليش؟ :D
تنفيذ ال Callbacks
مثلاً فى ال .Net نستخدم ال Delegate عند صناعة الاحداث Events و استدعاء دوال ال Callbacks و نطلق على ال Delegate اسم Safe Function Pointer
Technical Lead Developer
اللهم قنى شر الجهل و الجهلاء
( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}
docesam كتب:c++ أوكيالجافا ليش؟ :D
كل هذه الإمكانيات , ماذا تحتاج بعد ذلك؟؟؟
اهااا فهمت النقطة
تقصد أن هذه الدوال تحل محل Events في جافا
والفكرة في الموضوع توفير الوقت اللازم لعملية إنشاء كائن جديد
هل فهمي صحييح؟
تحياتي
اقتباسما الفائدة التي أجنيها من وضع مؤشر على دالة معينة؟؟
لنفترض انك تقوم بنداء دالة ولكن داخل الدالة مرة ستسخدم جمع متغيرين ومرة اخرى ستسعمل حاصل ضربهم ومرة ستسخدم طرحهم
ستنشى دالتك المرادة وستجعلها تستقبل parameter وهو pointer function وفى كل مرة تريد اجراء الدالة بشكل معين (تريد ان مرة ارسال دالة الجمع للجمع ومرة دالة الطرح للطرح والخ) سترسل الفانكشن المرادة.
او فى حالة اخرى تريد ان يحمل هذا الرفرنس فانكشن معينة فى حالة تحقق شرط (if مثلا ) وان يحمل فانكشن اخرى فى حالة تحقق شرط اخر
هذا وصف مبداى وقد يكون هناك استخدامات افضل
+
اقتباسولكن تظل مسألة المساوئ هذه مسألة نسبية، فالشيء السيء عندك ممكن يكون ميزة عند شخص آخر
اريد ان اسال هل هناك دوال dynamic memory allocation فى الجافا او السى #
اذا كانت الاجابة بلا . فكيف يكون الimmplemtion الخاص بستركشر مثل linked list و binary tree وخاصة ان تلك الستراكشر لابد ان تتمتع بالامتدادية
الموضوع ليس لتفضيل لغة على اخرى ولكن الموضوع يتميز بتبادل الافكار . وبعد عامان سادرس الجافا بشكل اكاديمى :) ولكن حاليا اطمح فى python + c/c++
تم تعديل هذه المشاركة بواسطة apex في 2 سبتمبر 2009 في 01:47
اقتباستنفيذ ال Callbacksمثلاً فى ال .Net نستخدم ال Delegate عند صناعة الاحداث Events و استدعاء دوال ال Callbacks و نطلق على ال Delegate اسم Safe Function Pointer
قد قلت أكيد إنك تستخدم الدوت نت , لكن هل توجد هذه الخاصيه في البورلاند سي++؟ لأني لاحظت ان بينهم إختلافات كثيرة وما أعتقد ان هذه موجوده فيها لأني عمري ماقد شفتها والله أعلم
اقتباسلان الجافا ممكن أن يقال عنها أكثر من أنها مجرد لغة برمجة يكتبها أي شخص, فمثلا الجافا تتمثل في شهرتها الكبيرة لدى كبرى المؤسسات العالمية وعلى رأسهم شركة Oracle الشركة العالمية الأولى المنتجة للأنظمة المؤسساتية
نسيت تذكر الأكبر من أوراكل , شركة IBM بكلها معتمدة عليها ومن أكبر مطوريها B)
وشركة عملاقة مثل هذه مستحيل أنها تختار اي شئ بشكل عشوائي ولو كانت البايثون أكفأ لكانت أستخدمتها وطورتها من زماااان
أما البايثون ماعندها غير وكالة ناسا وجوجل اللي تستخدمها وهذا بسبب قدرتها على التعامل مع المسائل الرياضية الكبيرة والتعامل مع الجرافكس (هذا ماسمعته عنها) وهذا الشئ لاتفتقر إليه الجافا :)
اقتباسأستاذي العزيز خالد عارف انه بصفتي مبتدئ مايجوزلي أجادل أكبر مني لكن بصراحه كلامك على الجافا أحسه يحرق ويفحط داخل قلبي
يا أخي لا أدري لماذا يقولون لي أستاذ مع أني أصغر من أخي وجدي :D
مهما انتقدت Java أو غيرها, في النهاية أنا أجلس وراء شاشتي, Java أو أي لغة برمجة أكبر من أن نحكم عليها بـ أبيض أو أسود :)
Java لها ميزات كثيرة, و ليس شرطاً في اللغة نفسها, ميزاتها تبدأ بمكتبتها الشاملة, و إنتهاءً بسهولتها و ووجود أحد أكبر المجتمعات البرمجية حولها و وجود ملايين الأسطر التي تعمل دون مشاكل و التي كتبت بها. لذلك هذه المناقشة ليست عن Java كـ مستقبل مبرمج :)
و إنما عن Java اللغة, أي ما لاحظته حول اللغة نفسها...
جاء دور أخي herch الآن :D
اقتباسهناك ناس لا يحبون الoperators overloading، ولا أعتبره شيئا ضروريا، لا مانع لدي من أن أكتب دالة add بدل الoperator "+"
الـ operators overloading عبارة عن syntactic sugar. ليس ضرورياً على الإطلاق لبناء لغة برمجة. و لكنه عملي بشكل لا يصدق!
مثله مثل أي أداة أخرى في لغات البرمجة يمكن أن يساء استخدامه, و لكنه فعال جداً في حالات كثيرة خصوصاً في المجالات العلمية, لاحظ مثلاً الكود التالي:
complex<double> a(2, 3), b(5, 6); complex<double> c = a * b;
مع الإضافات الجديدة لـ ++C سيصبح بإمكانك كتابة التالي دون أدنى تعديل للغة, عبارة عن operators overloading مع ميزات أخرى في ++C الجديدة:
complex<double> a = 2 + 3i, b = 5 + 6i; complex<double> c = a * b;
و قس على ذلك العمليات على المصفوفات و غير ذلك الكثير و الكثير حيث من المنطقي أن تكون العملية بين كائنين عبارة عن operator بدلاً من method:
complex<double> a(2, 3), b(5, 6); complex<double> c(a.multiply(b));
اقتباسإسمه الauto-boxing
مهما كان اسمه, هو عبارة عن نقص في اللغة تم ترقيع اللغة لتفادي هذا النقص. عندما أريد ArrayList مكونة من مجموعة int فأنا أحصل على مجموعة Integer بدلاً من ذلك!
اقتباسيعني ما تقدرش تعملها بنفسك
هذا كان مثال لا أكثر, و في الحقيقة لاتوجد طريقة على الإطلاق في Java لفعل هذا الشيء! عندما تكون اللغة قاصرة عن ذلك فعليك أن تتخيل الباقي :)
اقتباسكم من مرة في الأكواد التي تكتبها تستعمل الfunction pointers؟؟
أول مرة فهمت الفائدة من وراء الـ functional decomposition كانت عندما تعلمت Scheme. و هي طريقة ثورية في البرمجة!
لاحظ معي التالي:
عندما يكون لديك كود مكرر ماذا تفعل ؟
نقوم بكتابة دالة و استدعائها مكان التكرار!
عندما يكون لدينا مجموعة دوال, الفرق بين تلك الدوال عبارة تغير في تصرف الدوال بناءً على حالة معينة أو أكثر, نقوم ببناء دالة عامة, و نقوم دالة تحدد تصرف الدالة العامة!
من الصعب فهم الموضوع دون تجربة :)
تخيل لو أن دالة الترتيب في Java لم تكن تستقبل ICompareable. كم دالة ترتيب مختلفة تحتاج؟
أنت قمت بإزالة التكرار عن طريق فصل عملية الترتيب نفسها في دالة منفصلة, و لكن دالة الترتيب نفسها, ترتب الكائنات بناءً على شرط معين. هذا الشرط هو الدالة التي نقوم بتمريرها إلى دالة الترتيب.
بمجرد أن تفهم هذه الفكرة, ستجد أن STL و Boost أكثر المكتبات متعة في التعامل. يمكنك تخصيص كل شيء بمرونة فائقة جداً.
هل تريد مثالاً ؟
template <class Function>
double integrate(Function f, double a, double b, unsigned int intervals)
{
double delta = (b - a) / intervals, sum = 0.0;
while(a < b)
{
sum += f(a) * delta;
a += delta;
}
return sum;
}كل ما عليك التركيز عليه هو أول شيء نمرره للدالة, و هو الدالة التي نريد أن نكاملها ضمن فترة محددة!
بالمناسبة, مخترع Java نفسه, قال بأن الـ closures و هي مصطلح مرادف لما نتكلم عنه, لم تضف إلى Java لصعوبة عمل Implementation في بداية حياة Java و ليس لسبب آخر!
و هناك نقاش محتدم بين كبار مبرمجي Java حول إضافتها إلى Java 7. أتمنى أن تضاف, فهي طريقة رائعة و مرنة جداً :)
أتمنى أن لا أكون أطلت الحديث :)
تحياتي ...
تم تعديل هذه المشاركة بواسطة Khaled.Alshaya في 2 سبتمبر 2009 في 02:44
MKSoft كتب:
- لان الجافا ممكن أن يقال عنها أكثر من أنها مجرد لغة برمجة يكتبها أي شخص, فمثلا الجافا تتمثل في شهرتها الكبيرة لدى كبرى المؤسسات العالمية وعلى رأسهم شركة Oracle الشركة العالمية الأولى المنتجة للأنظمة المؤسساتية
- سهولتها وسحرها الكبير في جذب المبرمجين , وذلك لانها تشبه لحد كبير جدا اللغة العالمية الأولى و هي c++
- قوتها الكبيرة في مجال الأنظمة الموزعة و إمكانياتها الهائلة في ذلك ,,
- إمكانياتها المميزة في الإنترنت , ويتمثل ذلك في البرامج المعروفة بـ Applets لدرجة أنه لا يخلو موقع خدماتي على النترنت من هذه التقنية و على رأسهم موقع FaceBook .
- تعمل هذه اللغة بمبدأ " أكتب مرة و احدة ... وشغل البرنامج في أي مكان " أي أنك قادر على تصميم برامج تعمل على أي نظام تشغيل solaris - linux - windows ..etc
- الإمكانية الهائلة في تصميم مواقع الويب العملاقة مثل المواقع التجارية و الخدماتية , ويتمثل ذلك في لغة JSP و أيضا ما يعرف بـ Servlets .
- قوة هذه اللغة في التعامل مع قواعد البيانات , وربطها مع أي قاعدة بيانات سواء كان ذلك SQL Server - Oracle - MYSql - Access....etc وذلك من خلال JDBC
- لغة مفتوحة المصدر جعلها من أكثر اللغات نموا و انتشارا , وإبداعا من قبل المبرمجين , حيث أن العديد من المكتبات الرائعة تم تصميمها من قبل مبرمجين هواة ليس لهم علاقة بشركة جافا الأم
- تكامل هذه اللغة لحد كبير مع لغة C++ , وإمكانية استخدام قوة C++ داخل كود الجافا من خلال تقنية تعرف بـ JNI , وهكذا أصبح للجافا نصيب كبير في برمجة العتاد المادي للحاسوب.
- واخر صيحات هذه المنصة الرائعة , تطوير ما يسمى بـ JavaFX , وهي تقنية تشبه Adobe Flash , حيث تتيح للمبرمج بناء تطبيقات تفاعلية جذابة للناس , فضلا عن العديد من الميزات التي تمتلمكها هذه البيئة .
- طبعا لا ننسى قوة الجافا المتعلقة في برمجة الأنظمة المتنقلة , الاسلكية , حيث أنها اللغة العالمية اللأولى في هذا المجال , مثل برمجة أجهزة الموبايل , أنظمة البلوتوث و غيرها.
كل هذه الإمكانيات , ماذا تحتاج بعد ذلك؟؟؟
جميل جداً :clapping: لا احتاج اكثر من ذلك لكن اذا استثنينا حجم مجتمع الجافا وكذلك javaFX (والتي استطيع الاستعاضة عنها بالفلاش) فإن البايثون تمتلك كل باقي المواصفات وتزيد عن الجافا بالإنتاجية العالية
يا فرحتي بلغة الجافا ذات الإمكانيات العالية في حين أنه يوجد لغة أخرى بنفس الإمكانيات وذات إنتاجية أعلى بكثير ، هذه هي وجهة نظري
اقتباسجميل جداً 015.gif لا احتاج اكثر من ذلك لكن اذا استثنينا حجم مجتمع الجافا وكذلك javaFX (والتي استطيع الاستعاضة عنها بالفلاش) فإن البايثون تمتلك كل باقي المواصفات وتزيد عن الجافا بالإنتاجية العالية
فإذا كنت تري ذلك, فتوكل على الله و إحترف لغة البايثون, و دعك من الجافا و من كل ما يقال عنها, فإن كثرة النقاش في مثل هذه المواضيع لا تفيد, بل تضر.
اقتباسيا فرحتي بلغة الجافا ذات الإمكانيات العالية في حين أنه يوجد لغة أخرى بنفس الإمكانيات وذات إنتاجية أعلى بكثير ، هذه هي وجهة نظري
بما أنك مقتنع تمام الإقتناع بلغة بايثون, فلا تتخلي عنها أبدا, حتي تجد ما هو أحسن منها.
هل هناك ما يمنع أن تتعلم اللغتين جميعهما ؟ أنا لا أظن ذلك, فلغات البرمجه صنعت لنتعلمها و نبرمج بها, لا لنقارنهاز
جزاك الله خيرا
أخي الكريم
شديتني كثير لهذه اللغة السهلة python
أتمنى أن تحدثنا أكثر عنها إن أمكن ؟
ولك كل تقديري
المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…