في منتديات البرمجة ترى الصراعات عن الأدوات المفضلة: ما هي افضل لغة برمجة,و ما هو اقوى نظام تشغيل, و ما إلى ذلك.
و حين يتطرق الأمر الي لغات البرمجة بالذات, يأتي دائما ذكر كيف ان Microsoft قامت بسرقة افكار ال Java ووضعتها في ال #C.
السؤال هو: ما المشكلة في هذا؟ هل هناك سبب حقيقي يجعل استفادة مايكروسوفت من الأفكار الموجودة في ال Java شيئا سيئا؟
لابد ان نتذكر ان هدف هذه الشركات ليس الفوز في مسابقات إبداعية ولكن انتاج برامج مفيدة لعملائهم (و بالتالي مربحة لهم). حين اتأخر في تسليم مشروعي بسبب ضعف ادوات البرمجة لن يعزيني ان الشركة التي صنعت لغة البرمجة مبدعة. و حين اتم مشروعي بكفاءة بسبب جودة لغة البرمجة فلن اتساءل امبدعة تلك الشركة صانعة لغة البرمجة ام هي مقتبسة.
ال#C قد اقتبست من ال Java في بداية الأمر, لكنها بعد ذلك اضافت الكثير الي عالم المبرمجين في سوق البرمجيات,بداية من ال automatic boxing مرورا بالمساعدة في نشر استخدام ال closures و وصولا الي الأفكار الكبيرة مثل ال LINQ. اذا كان ثمن هذا هو الأقتباس من ال Java في البداية فليكن.
ال Java نفسها مر عليها سنوات و لم نر فيها الجديد. هي تقريبا نفس اللغة منذ ظهرت في منتصف التسعينات. نعم تطورت الLibraries و الIDE's الي حد يفوق ال #C في احيان كثيرة, و لكن اللغة نفسها صارت اشبه بعائق في طريق المبرمج اكثر منها اداة يستخدمها.
و مع ذلك فإن ال Java كانت قوية و مبتكرة حين ظهرت في بدايتها, و كانت بمثابة نفحة من الهواء النقي بالنسبة للمبرمجين وقتها. اتدرون ماذا كانت Sun تفعل في تلك الفترة؟ كانوا يقتبسون!
نظر مبتكروا Java الي لغات كثيرة بينما كانوا يقومون بتصميم اللغة الجديدة, مثل ال C و Mesa و Smalltalk و Objective C .لم يكن هذا عيبا في حق Sun. بل ربما كان ضروريا.
كلمة "سرقة الأفكار" لا تُفهم بالمعنى الحرفي, فالذي ينظر للبرامج الأخرى و هو يصمم برنامجه اقرب الي الصحفي الذي يتابع الأخبار ليعرف اهتمامات المجتمع او المؤلف الذي يقرأ كتب التاريخ بحثا عن ملحمة يروي عنها. هذا اطلاع و تأمل اكثر منه سرقة.
هل معني هذا انه لا يوجد ابداع حقيقي, و ان كل ما يفعله المبتكرون هو الأخذ من بعضهم البعض؟
بالطبع لا, فهناك الكثير من اللغات و البرامج التي ظهرت بأمكانيات مستقلة بدون النظر الى غيرها, ولكن حتى هذه الأبداعات تتضاعف فائدتها وتظهر قوتها الحقيقية حين تختلط بإمكانات اللغات الأخرى.
ليس معني الأبداع الأنغلاق. بل كلما نظرت إلى اعمال غيرك صار لديك مورد اكبر لأفكارك. بل و يفيدك أيضا التأمل في العلوم غير البرمجية ولو كان مشروعك برمجيا. لهذا يدرس مصممي ال User Interface علم النفس. و لهذا يفتخر Larry Wall مخترع لغة ال PERL بأنه درس اللغات الطبيعية البشرية, و لولا هذا ما ظهرت لغة مثل ال LISP مبنية على الأسس الرياضية التي يضمها ال Lambda Calculus.
و بمناسبة أقتباس الأفكار, لعلك تقرأ في الصحف المصرية الكثير من النداءات لتشديد قوانين براءات الاختراع و أن هذا هو السبيل الوحيد للحاق بركب التقدم.
كلا لا اصدق هذا. العلم كله مبني على بعضه البعض, و لا ارى ان تقييد حرية الأستفادة من افكار الغير يؤدي حقا الى التطور. تخيل لو كانت هناك براءات اختراع على ال Hashtable او ال Linked List او خوارزمية ال Binary Search او أي من هذه الأساسيات.
كان هذا سيقيد حرية التطوير الى حد ساحق و ربما ماكان سيظهر لنا Windows ولا Linux ولا Java ولا #C !
و حين يتطرق الأمر الي لغات البرمجة بالذات, يأتي دائما ذكر كيف ان Microsoft قامت بسرقة افكار ال Java ووضعتها في ال #C.
السؤال هو: ما المشكلة في هذا؟ هل هناك سبب حقيقي يجعل استفادة مايكروسوفت من الأفكار الموجودة في ال Java شيئا سيئا؟
لابد ان نتذكر ان هدف هذه الشركات ليس الفوز في مسابقات إبداعية ولكن انتاج برامج مفيدة لعملائهم (و بالتالي مربحة لهم). حين اتأخر في تسليم مشروعي بسبب ضعف ادوات البرمجة لن يعزيني ان الشركة التي صنعت لغة البرمجة مبدعة. و حين اتم مشروعي بكفاءة بسبب جودة لغة البرمجة فلن اتساءل امبدعة تلك الشركة صانعة لغة البرمجة ام هي مقتبسة.
ال#C قد اقتبست من ال Java في بداية الأمر, لكنها بعد ذلك اضافت الكثير الي عالم المبرمجين في سوق البرمجيات,بداية من ال automatic boxing مرورا بالمساعدة في نشر استخدام ال closures و وصولا الي الأفكار الكبيرة مثل ال LINQ. اذا كان ثمن هذا هو الأقتباس من ال Java في البداية فليكن.
ال Java نفسها مر عليها سنوات و لم نر فيها الجديد. هي تقريبا نفس اللغة منذ ظهرت في منتصف التسعينات. نعم تطورت الLibraries و الIDE's الي حد يفوق ال #C في احيان كثيرة, و لكن اللغة نفسها صارت اشبه بعائق في طريق المبرمج اكثر منها اداة يستخدمها.
و مع ذلك فإن ال Java كانت قوية و مبتكرة حين ظهرت في بدايتها, و كانت بمثابة نفحة من الهواء النقي بالنسبة للمبرمجين وقتها. اتدرون ماذا كانت Sun تفعل في تلك الفترة؟ كانوا يقتبسون!
نظر مبتكروا Java الي لغات كثيرة بينما كانوا يقومون بتصميم اللغة الجديدة, مثل ال C و Mesa و Smalltalk و Objective C .لم يكن هذا عيبا في حق Sun. بل ربما كان ضروريا.
كلمة "سرقة الأفكار" لا تُفهم بالمعنى الحرفي, فالذي ينظر للبرامج الأخرى و هو يصمم برنامجه اقرب الي الصحفي الذي يتابع الأخبار ليعرف اهتمامات المجتمع او المؤلف الذي يقرأ كتب التاريخ بحثا عن ملحمة يروي عنها. هذا اطلاع و تأمل اكثر منه سرقة.
هل معني هذا انه لا يوجد ابداع حقيقي, و ان كل ما يفعله المبتكرون هو الأخذ من بعضهم البعض؟
بالطبع لا, فهناك الكثير من اللغات و البرامج التي ظهرت بأمكانيات مستقلة بدون النظر الى غيرها, ولكن حتى هذه الأبداعات تتضاعف فائدتها وتظهر قوتها الحقيقية حين تختلط بإمكانات اللغات الأخرى.
ليس معني الأبداع الأنغلاق. بل كلما نظرت إلى اعمال غيرك صار لديك مورد اكبر لأفكارك. بل و يفيدك أيضا التأمل في العلوم غير البرمجية ولو كان مشروعك برمجيا. لهذا يدرس مصممي ال User Interface علم النفس. و لهذا يفتخر Larry Wall مخترع لغة ال PERL بأنه درس اللغات الطبيعية البشرية, و لولا هذا ما ظهرت لغة مثل ال LISP مبنية على الأسس الرياضية التي يضمها ال Lambda Calculus.
و بمناسبة أقتباس الأفكار, لعلك تقرأ في الصحف المصرية الكثير من النداءات لتشديد قوانين براءات الاختراع و أن هذا هو السبيل الوحيد للحاق بركب التقدم.
كلا لا اصدق هذا. العلم كله مبني على بعضه البعض, و لا ارى ان تقييد حرية الأستفادة من افكار الغير يؤدي حقا الى التطور. تخيل لو كانت هناك براءات اختراع على ال Hashtable او ال Linked List او خوارزمية ال Binary Search او أي من هذه الأساسيات.
كان هذا سيقيد حرية التطوير الى حد ساحق و ربما ماكان سيظهر لنا Windows ولا Linux ولا Java ولا #C !
هناك تعليقان (2):
Nice post! The last part is the one I like most :]
Allow me to quote a book I read long time ago:
"Computer languages do not exist in a void. Rather, they relate to one another, with each new language influenced in one form or another by the ones that came before. In a process akin to cross-pollination, features from one language are adapted by another, a new innovation is integrated into an existing context, or an older construct is removed. In this way, languages evolve and the art of programming advances. C# is no exception."
Keep it up, looking forward to read more :]
thanx alot dr for the post
& thanx to metal :d
إرسال تعليق