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

لماذا اخترت لغة الجافا من بين باقي اللغات ؟

رائج
بدأه docesam في 28 أغسطس 2009 · 63 رد · 5,007 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#26

انا انصح بالكتاب دا

http://programming-fr34ks.net/strikytutori...afts/pfpybook2/

غيره يبقة learning python 3rd, core python 2

(map share people)

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

#27

بعد نظرتي المبدئية على اللغة و على بعض الأكواد الخاصة وجدت أنها :

لغة جميلة وبسيطة.

سهلة التعلم حيث أنها تشبه كود الجافا و السي لحد ليس بقليل.

لكن أحد الأكواد الذي لفت انتباهي هو التالي :

574090995.jpg

كما نشاهد في الكود السابق , أنه تم انشاء دالة اسمها func() , لكن الغريب انني لم اعرف اين نهاية هذه الدالة , وكيف يتمكن المفسر من معرفة نهاية هذا القالب من الشفيرة البرمجية و تمييزيه عن باقي الشيفرة, بمعنى اين تقفل هذه الدالة حتى اتمكن بعد ذلك من استدعائها , لذلك بادر إلى ذهني السؤال التالي :

هذل تعتمد لغة البايثون في تحديد نهاية الدوال أو أي بلوك معين في الكود على المسافات البادئة للأسطر , وهل هذا هو سبب أن يقال عنها أنها لغة تجبر المبرمجين على ترتيب الكود؟؟؟!!!!

663001246.jpg

تم تعديل هذه المشاركة بواسطة MKSoft في 30 أغسطس 2009 في 17:48

#28

python تستعمل الTAB لتحديد كل bloc، على ما أظن، وليس المعقوفات مثل الجافا

#29

ايوه python بتعتمد على ال indentations لتحديد السياق

(map share people)

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

#31
اقتباس
وأجد في سرعة إنتاجيتها عائقاً كبيراً في فهم المكتوب

على العكس تماماً أختلف معك في هذا الأمر, هل تفهم السطر التالي أما لا ؟

changed_list = [int(f) if f.isdigit() else f for f in original_list]

هذا السطر يقوم بتحويل كل عنصر نصي في original_list إلى عدد و يضعه في changed_list, و إذا لم يكن عدداً يترك النص كما هو... اللغات الـ functional قوية جداً و معبرة... أنا لي خبرة بسيطة جداً مع Scheme و لن تندم أبداً على تعلم إحداها,

كيف تكتب هذا الشيء بهذا الوضوح في Java ؟ :P

تم تعديل هذه المشاركة بواسطة Khaled.Alshaya في 30 أغسطس 2009 في 20:40

#32

Salam alaycom brothers

sorry for writing in english

just commenting on the idea of *slow scripting languages*, please follow this project

http://code.google.com/p/unladen-swallow/

اقتباس
Goals

We want to make Python faster, but we also want to make it easy for large, well-established applications to switch to Unladen Swallow.

1. Produce a version of Python at least 5x faster than CPython.

2. Python application performance should be stable.

3. Maintain source-level compatibility with CPython applications.

4. Maintain source-level compatibility with CPython extension modules.

5. We do not want to maintain a Python implementation forever; we view our work as a branch, not a fork.

سبحانك اللهم و بحمدك ، أشهد أن لا إله إلا أنت ، أستغفرك ربي و أتوب إليك

مدونتي

http://www.facebook.com/brmjt

#33
محمد سمير كتب:
Salam alaycom brothers

sorry for writing in english

just commenting on the idea of *slow scripting languages*, please follow this project

http://code.google.com/p/unladen-swallow/

هذا من فضل ربي

#34

Java

اقتباس
و #C يشابهان C و ++C من خلال الـ syntax لا أكثر. في الحقيقة قد تفاجئ, و لكن ++C يجمعهما الكثير مع Python لو نظرت نظرة شاملة, لرأيت أن ++C و Python لغات mutliparadigm بشكل حقيقي عكس Java و #C.

وأنا أقصد من حيث الساينتاكس وصحيح أنها ليست بنفس قوة السي++ ولكنها أمرن منها بكثيييييير وبنفس الوقت تتيحلك إمكانية إستخدام مكاتب مبنية بالسي والسي++

ولما تقول لي الساينتاكس تبعها مفهوم بذمتك أي شخص يقرأ هذا الرمز "_" قبل الدالة بيفهم ان معناها برايفت؟

ولا حقها الـconstructor اللي مدري وش هدفه من الحياه :

 def __init__(self, data):
		self.data = data
		self.index = len(data)

بالله قول لي ايش الداعي انك ترسل ريفرينس من الكلاس لدالة البناء؟ وهذا مثلما لاحظته إجباري وليس إختياري وثانياً ايش الهدف من الشرطات اللي قبله وبعده وهذا مثلما لاحظته لازم ينكتب في دوال البناء ودالة الـmain

إذا جيت للسهوله عندك الocaml أسهل منها بكثييييييير وأقرب للغة الإنسان من البايثون وبورتابل مثلها مثل البايثون والجافا ولو أنها عندها مشكلة في الأقواس مثل البايثون بس أشوفها أسهل

هذا من وجهة نظري والله أعلم

كود بالocaml:

for x = 0 to 639 do
		let r = 4.0 *. (float_of_int x) /. 640.0 in
		for i = 0 to 39 do
				let x_init = Random.float 1.0 in
				let x_final = iterate r x_init 500 in
				let y = int_of_float (x_final *. 480.) in
				Graphics.plot x y
		done
done;;

ولمن أراد الإطلاع أكثر على هذه اللغة يدعس هنا http://www.ocaml-tutorial.org وبالهنا والشفاء :)

تم تعديل هذه المشاركة بواسطة M.Allaw في 31 أغسطس 2009 في 17:58


HeartOutputStream myHeart;
OutputStream myHeartOutStream;

myHeartOutStream = MAllaw.getHeart().getOutputStream();
myHeart = new HeartOutputStream(myHeartOutStream);

while(myHeart.isStillBeating())
myHeart.write("I ♥ Java");

#35

Actually بايثون مش فيها private variables

/index.ph...st&p=992412

وبايثون مش فيها main التنفيذ بيبدأ من اول سطر فى السورس

بخصوص ال __init__ فهى اللى بيتعمل فيه ال initialization لل data fields

وليه مسبوقة ومنتهية بأندر سكورز؟ لأنها magic method

http://docs.python.org/reference/datamodel.html

بخصوص self

اقتباس
بإختصار self بتشير للكائن ال object الحالى اللى فى السياق زى مابتكتب فى لغات تانية this عشان توصل لل ميثودز والصفات الخاصة بكائن معين . وهنا هو وضحها بطريقة ظريفة ان مثلا لما تستدعى

كود:

MyObject.method(arg1, arg2)

بيتم تحويلها ل

كود:

MyClass.method(MyObject, arg1, arg2

*استخدمها دائما ب self لا me ولا this ولاغيرهم

ودا كلام GvR عن self

http://neopythonic.blogspot.com/2008/10/wh...as-to-stay.html

syntax بايثون اسهل طبعا بمراحل مع انها مقارنة مش فى محلها المفروض مثلا لو هتدخل OCAML فى الكلام يبقة قصاد Haskell مثلا !

(map share people)

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

#36

يا ناس البايثون حرام عليكم، أنتم جايين تعملوا إعلانات للغتكم وتسرقوا مننا الزبائن :lol:

وبلاش يتقلب الموضوع لنقاش حول ما هي اللغة الأفضل، لأن كل لغة لها مميزاتها وأيضا سلبياتها

بالنسبة لthis فلا نقوم بتمريرها للmethods الموجودة داخل الكلاس، لأن المترجم هو الذي يتكفل بذلك

#37
اقتباس
على العكس تماماً أختلف معك في هذا الأمر, هل تفهم السطر التالي أما لا ؟

changed_list = [int(f) if f.isdigit() else f for f in original_list]

هذا السطر يقوم بتحويل كل عنصر نصي في original_list إلى عدد و يضعه في changed_list, و إذا لم يكن عدداً يترك النص كما هو... اللغات الـ functional قوية جداً و معبرة... أنا لي خبرة بسيطة جداً مع Scheme و لن تندم أبداً على تعلم إحداها,

كيف تكتب هذا الشيء بهذا الوضوح في Java ؟

لا يمكن ذلك لا في جافا ولا حتى في سي++ :) .. لأنه على حسب كلامك هذا يعني أن changed_list سوف تحتوي على عناصر نصية string وعناصر عددية integer في نفس اللحظة !!

عن نفسي أفضل Syntax الجافا فهو مقروء بشكل جيد ،، وحتى لو كان طويل مثل هذا :

 

[color= #000000; font-weight: bold;]public [color= #000000; font-weight: bold;]static [color= #000066; font-weight: bold;]void main [color= #009900;]([color= #003399;]String[color= #009900;][[color= #009900;]] args[color= #009900;]) [color= #009900;]{  

		[color= #003399;]String[color= #009900;][[color= #009900;]] list [color= #339933;]= [color= #000000; font-weight: bold;]new [color= #003399;]String[color= #009900;][[color= #cc66cc;]5[color= #009900;]] [color= #339933;]; 

		list[color= #009900;][[color= #cc66cc;]0[color= #009900;]] [color= #339933;]= [color= #0000ff;]"this is string" [color= #339933;]; 

		list[color= #009900;][[color= #cc66cc;]1[color= #009900;]] [color= #339933;]= [color= #0000ff;]"100" [color= #339933;]; 

		list[color= #009900;][[color= #cc66cc;]2[color= #009900;]] [color= #339933;]= [color= #0000ff;]"44" [color= #339933;]; 

		list[color= #009900;][[color= #cc66cc;]3[color= #009900;]] [color= #339933;]= [color= #0000ff;]"not number" [color= #339933;]; 

		list[color= #009900;][[color= #cc66cc;]4[color= #009900;]] [color= #339933;]= [color= #0000ff;]"20" [color= #339933;]; 

  

		[color= #003399;]System.[color= #006633;]out.[color= #006633;]println[color= #009900;]( [color= #003399;]Arrays.[color= #006633;]toString[color= #009900;](list[color= #009900;]) [color= #009900;]) [color= #339933;]; 

  

		ArrayList[color= #339933;]<Integer[color= #339933;]> inList [color= #339933;]= [color= #000000; font-weight: bold;]new ArrayList[color= #339933;]<Integer[color= #339933;]>[color= #009900;]([color= #009900;]) [color= #339933;];

		ArrayList[color= #339933;]<String[color= #339933;]>  stList [color= #339933;]= [color= #000000; font-weight: bold;]new ArrayList[color= #339933;]<String[color= #339933;]> [color= #009900;]([color= #009900;]) [color= #339933;];

  

		[color= #000000; font-weight: bold;]for [color= #009900;]([color= #003399;]String s [color= #339933;]: list [color= #009900;]) [color= #009900;]{ 

			[color= #000000; font-weight: bold;]try [color= #009900;]{ 

				inList.[color= #006633;]add[color= #009900;]( [color= #003399;]Integer.[color= #006633;]parseInt[color= #009900;](s[color= #009900;]) [color= #009900;]) [color= #339933;]; 

			[color= #009900;]} 

			[color= #000000; font-weight: bold;]catch [color= #009900;]( [color= #003399;]NumberFormatException e[color= #009900;]) [color= #009900;]{  

				stList.[color= #006633;]add[color= #009900;]( s [color= #009900;]) [color= #339933;]; 	[color= #666666; font-style: italic;]// add string 

			[color= #009900;]} 

		[color= #009900;]}

   

		[color= #666666; font-style: italic;]// print number list  

		[color= #003399;]Integer[color= #009900;][[color= #009900;]] x [color= #339933;]= [color= #000000; font-weight: bold;]new [color= #003399;]Integer[color= #009900;][ inList.[color= #006633;]size[color= #009900;]([color= #009900;]) [color= #009900;]] [color= #339933;]; 

		inList.[color= #006633;]toArray[color= #009900;](x[color= #009900;])[color= #339933;]; 

		[color= #003399;]System.[color= #006633;]out.[color= #006633;]println[color= #009900;]( [color= #003399;]Arrays.[color= #006633;]toString[color= #009900;](x[color= #009900;]) [color= #009900;]) [color= #339933;];

  

	[color= #009900;]}

B)

وان شاء الله سألقى نظرة على المدعوة بايثون فيما بعد ،،

بالتوفيق :) .

تم تعديل هذه المشاركة بواسطة Wajdy Essam في 31 أغسطس 2009 في 21:03 — السبب: اضافة Coool :-)

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

#38

ياعزيزي أنا عارف أن self ترمز لنفس الكلاس مثل this بس سؤالي كان ليش لازم أمرر Referance من الكلاس إلى دالة الـconstructor ؟ لاحظت في جميع الأمثلة انه لازم أمرر لها ريفيرنس

أما بالنسبة لدالة الـmain فهذه شفتها في أحد الأمثلة ومادري عن حقها الـstructure بالضبط بس أنا مريت عليها مرور الكرام


HeartOutputStream myHeart;
OutputStream myHeartOutStream;

myHeartOutStream = MAllaw.getHeart().getOutputStream();
myHeart = new HeartOutputStream(myHeartOutStream);

while(myHeart.isStillBeating())
myHeart.write("I ♥ Java");

#39

تمرير self لكل الميثودز طالما مش staticmethod او classmethod

شوف فى المثال اللى كتبته فى البوست اللى فات ايه اللى بيحصل ل فى النهاية --ال transformation-

اقرا السبب بالتفصيل فى مقالة gvr اللى بردو لينكها فى البوست اللى فات

بخصوص main فأحيانا بنعمل function بنسميها main او main_console او غيرها

وبننفذها فى حال اذا كانت الmodule الحاوية ليها هى ال module الأساسية فى البرنامج ودا عن طريق اذا كان قيمة __name__ بتساوى "__main__" ودى قيمة خاصة معناها ان دى هى الوحدة الرئيسية فى البرنامج

how it works

http://programming-fr34ks.net/smf/articles...ging-a-battery/

(map share people)

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

#40
اقتباس
لا يمكن ذلك لا في جافا ولا حتى في سي++

شو يا وجدي , لا تقل لي أن Boost ممنوعة رجاءً :P

typedef variant<int, string> var;

int main()
{
	vector<var> list;

	list += 1, "khaled", 2, "wajdy", 3, "moha";

	for(size_t i = 0; i < list.size(); i++)
	{
		std::cout << list << endl;
	}
}
#41

نعم ممنوعه :lol:

أول مرة أشوف الvariant لكنها جيدة، على العموم يبدوا أن boost تحمل الكثير ،،

اقتباس
وان شاء الله سألقى نظرة على المدعوة بايثون فيما بعد ،،

أيضا سألقى نظره على boost فيما بعد :lol:

herch الحق على زباينك :P

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

#42

اقتباس
لا يمكن ذلك لا في جافا ولا حتى في سي++ :) .. لأنه على حسب كلامك هذا يعني أن changed_list سوف تحتوي على عناصر نصية string وعناصر عددية integer في نفس اللحظة !!

ممكن إذا كانت مكونات الجدول من صنف Object وبالتالي فهو يقبل أي صنف، بما أن Object هي الكلاس الأم للكل



public class IntStringArray {
public static void main(String[] args) {
ArrayList array = new ArrayList();
array.add(1);
array.add("me");
array.add(2);
array.add("you");
array.add(3);
array.add("no one else");
for (Object o : array) {
System.out.println(o);
}
}
}
 import java.util.ArrayList;

في الأول كانت python والآن C++، يا ترى ما هي اللغة القادمة التي ستشرفنا في منتدى الجافا... :lol:

#43
اقتباس
في الأول كانت python والآن C++، يا ترى ما هي اللغة القادمة التي ستشرفنا في منتدى الجافا...

وصلت الرسالة :D

أنا تعلمت Java, و برمجت بها على مدى سبع أو ثمان شهور. مدة قصيرة جداً, و لكن حصل لدي ردة فعل منها...

هناك أمور لم أستطع هضمها على الإطلاق, هل تريد بعض الأمثلة في اللغة فقط دون المكتبات ؟

لماذا لا يوجد operators overloading. هذا يجعلني أكره نفسي عندما أبرمج بـ Java. جرب استخدام BigInteger و ستعرف عن ماذا أتحدث!

لماذا لايوجد function pointers! أكيد تستطيع عمل implementation لـ interface تمررها مكان مؤشر الدالة, كما في الـ ActionListener. بالطبع نسخ-لصق على كيف كيفك.

لماذا لم يتم معاملة الـ primitive-types على أنها كائنات, بدلاً من عمليات الـ boxing و unboxing في كل مكان, و التي لم يتم حلها إلا بترقيعة في النسخة القبل أخيرة في Java حسبما أعتقد.

و أخيراً! أود رؤية دالة swap في Java للأنواع الـ primitive, بصراحة لم يحصل لي الشرف أن قابلتها من قبل!

تحياتي ...

تم تعديل هذه المشاركة بواسطة Khaled.Alshaya في 31 أغسطس 2009 في 23:54

#44
اقتباس
لماذا لا يوجد operators overloading. هذا يجعلني أكره نفسي عندما أبرمج بـ Java. جرب استخدام BigInteger و ستعرف عن ماذا أتحدث!

هناك ناس لا يحبون الoperators overloading، ولا أعتبره شيئا ضروريا، لا مانع لدي من أن أكتب دالة add بدل الoperator "+"

اقتباس
لماذا لايوجد function pointers! أكيد تستطيع عمل implementation لـ interface تمررها مكان مؤشر الدالة, كما في الـ ActionListener. بالطبع نسخ-لصق على كيف كيفك.

كم من مرة في الأكواد التي تكتبها تستعمل الfunction pointers؟؟

اقتباس
لماذا لم يتم معاملة الـ primitive-types على أنها كائنات, بدلاً من عمليات الـ boxing و unboxing في كل مكان, و التي لم يتم حلها إلا بترقيعة في النسخة القبل أخيرة في Java حسبما أعتقد.

إسمه الauto-boxing :wink: ، يعني كله أوتوماتيك

اقتباس
و أخيراً! أود رؤية دالة swap في Java للأنواع الـ primitive, بصراحة لم يحصل لي الشرف أن قابلتها من قبل!

يعني ما تقدرش تعملها بنفسك :blink:

وعلى العموم لا وجود للغة كاملة، وهناك خاصيات ممكن البعض يحبها والبعض الآخر لا، وبلاش كل واحد يتعصب للغة التي يستعملها، لأننا بالنهاية كلنا هدفنا واحد، نعمل برامج تشتغل، وكل واحد يبرمج باللغة التي يفضل، أو اللغة التي يفرضها المشغل

#45

الآن نعود للموضوع الرئيسي

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

ما رأيكم يا مبرمجي الجافا : ما المميزات في الجافا التي تحبونها ، وما هي المساوئ التي تكرهونها ؟

#46

انا في رأيي الشخصي .. أي شخص يريد أن يصبح مالك لعالم البرمجة من جميع جوانبه فيتقن لغتي برمجة و هما :

C/C++ & Java Platform

#47

كما يقال، الحب أعمى، لذلك شخصيا لا أستطيع أن أقول لك مساوئ الجافا :D

لكن أكثر ما أحبه وأول ما جدبني لها هو الSwing والإمكانيات الهائلة التي يوفرها والتي لا يستطبع المرء أن يلم بها كلها ولو بعد سنين

ولكن تظل مسألة المساوئ هذه مسألة نسبية، فالشيء السيء عندك ممكن يكون ميزة عند شخص آخر

تم تعديل هذه المشاركة بواسطة herch في 1 سبتمبر 2009 في 02:19

#48
اقتباس
لماذا لا يوجد operators overloading. هذا يجعلني أكره نفسي عندما أبرمج بـ Java. جرب استخدام BigInteger و ستعرف عن ماذا أتحدث!

فعلا الoperator overloading تسهل في التعامل ولكن عدم وجودها ليس عيب في اللغه ..اضافة الى أن مصمم اللغه وفر طرق مساواة الكائنات عن طريق الدالة equals ووفر أيضا طريقة لأخذ نسخه من الكائن Clone ..

اقتباس
لماذا لايوجد function pointers! أكيد تستطيع عمل implementation لـ interface تمررها مكان مؤشر الدالة, كما في الـ ActionListener. بالطبع نسخ-لصق على كيف كيفك.

طبعا مصمم اللغه رأى أن الCallback باستخدام الinterface أسهل بكثير ،، لكنه وفر طريقة من أول نسخ في الجافا 1.1 لعمل الMethod Pointers وذلك باستخدام دوال الReflection ، شاهد المثال :

import java.lang.reflect.*;

/**
* This program shows how to invoke methods through reflection.
*/
public class MethodPointerTest
{
	public static void main(String[] args) throws Exception
	{
		// get method pointers to the square and sqrt methods
		Method square = MethodPointerTest.class.getMethod("square", double.class);
		Method sqrt = Math.class.getMethod("sqrt", double.class);

		// print tables of x- and y-values

		printTable(1, 10, 10, square);
		printTable(1, 10, 10, sqrt);
	}

	/**
	* Returns the square of a number
	* @param x a number
	* @return x squared
	*/
	public static double square(double x)
	{
		return x * x;
	}

	/**
	* Prints a table with x- and y-values for a method
	* @param from the lower bound for the x-values
	* @param to the upper bound for the x-values
	* @param n the number of rows in the table
	* @param f a method with a double parameter and double return value
	*/
	public static void printTable(double from, double to, int n, Method f)
	{
		// print out the method as table header
		System.out.println(f);

		double dx = (to - from) / (n - 1);

		for (double x = from; x <= to; x += dx)
		{
			try
			{
				double y = (Double) f.invoke(null, x);
				System.out.printf("%10.4f | %10.4f%n", x, y);
			}
			catch (Exception e)
			{
				e.printStackTrace();
			}
		}
	} 
}

اقتباس
و أخيراً! أود رؤية دالة swap في Java للأنواع الـ primitive, بصراحة لم يحصل لي الشرف أن قابلتها من قبل!

الدالة swap يجب أن ينساها تماما أي مبرمج جافا :) ، لأن التمرير دائما بالقيمة ، سواء لمتغير عادي primitive أو لمؤشر لكائن reference .. لذلك لا توجد أي طريقة مباشره لذلك ..

لكن ممكن أعمل كلاس مساعد Wrapper Class يحتوي على متغير int وأرسل كائنين من الكلاس وأستبدل كل من هذه المتغيرين وتتم عملية الswap في تلك الحالة بشكل صحيح .. (لن نستطيع أيضا تغيير الكائن Integer لأنه من الأساس لا توجد فيه دالة للتغيير no setter method أو الإسم العلمي immutable ) .

وأخيرا كما قال أخي herch لكل لغه هدفها ومساؤها وميزاتها ،، وجافا من الأساس صممت على أن تتجاوز من الأمور المعقدة في سي++ مثل المؤشرات والوراثة المتعددة وغيرها .. لذلك لا ينبغي المطالبة بهكذا اشياء في جافا ويجب استخدام البدائل المتوفرة ..

بالتوفيق :) ..

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

#49
اقتباس
لماذا لايوجد function pointers! أكيد تستطيع عمل implementation لـ interface تمررها مكان مؤشر الدالة, كما في الـ ActionListener. بالطبع نسخ-لصق على كيف كيفك.

أستاذي العزيز خالد عارف انه بصفتي مبتدئ مايجوزلي أجادل أكبر مني لكن بصراحه كلامك على الجافا أحسه يحرق ويفحط داخل قلبي 005.gif

أولاً من قال لك ان function point/style_images/ip.boardpr/folder_editor_images/rte-emo-button.pngers ميزة؟ إذا كان قصدك على حسب مافهمت أنها امكانية تمرير ريفرينس دالة معينه لدالة أخرى مثلما في الـc# وباقي لغات الدوت نت فهذه ألعن مافيها لأني ماقدرت أستوعب كيفية إرسالها ولا إستقبالها داخل الداله

مثلاً لو قمت بعمل ثريد معين تقوم ترسل له أسم الداله (اللي بيقوم الثريد بتنفيذها عند تشغيله مثلما عندنا دالة الـrun) كـparameter وهو يقوم بتنفيذها , طيب كيف يستلمها كلاس الثريد؟ وكيف يعرفها عنده وكيف يقوم بإستدعائها من داخل الدالة اللي تشغل الثريد مثل دالة start() عندنا؟

يعني تتوهك إذا كنت تحب تعرف كيف تتم الأمور بشكل منطقي

فأحلى ميزة في الجافا أنها منطقية وتقدر تفهم منها كل شئ بسلاسة ولأنها مفتوحة المصدر تقدر تتبعها على كلاس كلاس لما توصل لأدم الله يرحمه 36_6_5.gif

تم تعديل هذه المشاركة بواسطة M.Allaw في 1 سبتمبر 2009 في 07:18


HeartOutputStream myHeart;
OutputStream myHeartOutStream;

myHeartOutStream = MAllaw.getHeart().getOutputStream();
myHeart = new HeartOutputStream(myHeartOutStream);

while(myHeart.isStillBeating())
myHeart.write("I ♥ Java");

#50

بالنسبة لموضوع أكثر من نوع في القائمة الواحدة

ممكن التحايل عليه باستخدام تعدد الأشكال polymorphism

وجدي بالنسبة لموضوع call by value و call by reference

يوجد النوعين في الجافا

بالنسبة للكائنات يتم تمريرها للدوال بالمؤشر

أما بالنسبة للبيانات الأساسية يتم تمريرها للدوال بالقيمة

بالمناسبة ما هي function pointers؟

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…