10

هل تعتبر نفسك مبرمجاً محترفاً ؟ إذا هل تستطيع أن ... ؟

هل تعتبر نفسك مبرمجاً محترفاً ؟

هل أنت ممن يعتبر أن إحتراف لغة برمجة شيء مهم حتى تصبح مبرمج محترف ؟

إذا هل تستطيع أن تبرمج أحد البرامج التالية دون استخدام مكتبات جاهزة وباللغة التي تبرمج بها حاليا ؟ (وهنا لا أتحدث عن إمكانيات اللغة ، بل إمكانياتك أنت)

وإذا كان الجواب نعم فكيف ستفعل ذلك وماذا سوف تستخدم ؟

برنامج معالجة الصور ، أو برنامج تحرير الأصوات أو الفيديو

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

15

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

مثلا خوارزميات معالجة الصور وتحرير الفيديو تتطلب معرفة بالـ Linear optimization و المصفوفات, كما تتطلب معرفة بعض ابجديات تحليل الاشارات والمصفوفات.

مثلا لوطلبت من المبرمج برنامج لايجاد الحواف في صورة. ممكن للمبرمج ان يتخيل حلا, لكن الحل الأفضل يكون باستعمال بعض قوانين التعامل مع المصفوفات وال Linear optimization.

لكن لا ينفي أن المبرمج غير محترف. فمن جانب هيكلة البرنامج وبرمجة الكائنات وال Design patterns, ... إلخ ربما يكون محترف, لكن ليس له المعرفة الكاملة في مجال الرياضيات أو الاحصاء التي تسمح له بتصميم أحسن حل.

إضافة:

لهذا السبب توجد حزم تقوم بهذه الاشياء طُورت من طرف ناس مختصين في المجال, لذلك إذا كان تطوير هذه الخوازميات هو هدف المشروع فلا داعي للمبرمج ان يلم بكل هذه التفاصيل, فقط يستعمل الحزمة من اجل تحقيق المشروع.

كل الإحترام لك أخي ،، هذا الرد الذي كنت أنتظره :)

برنامج معالجة الصور ، أو برنامج تحرير الأصوات أو الفيديو

عندما كان عمري 14 سنة كتبت أول لعبة لي وتطلب الموضوع عمل مكتبة رسومية خاصة بي. لاحقا عملت برنامج لتعريف بطاقة الصوت في دوس ولاحقا ربما عندما كان عمري 20 سنة عملت مكتبة رسومية ثلاثية الأبعاد من الصفر تعمل في dos وكان المثال هو نموذج لطائرة ميغ ثلاثي الأبعاد. أظن أن عمل ما سبق في نظيم تشغيل بدائي لا يوفر مكتبات مثل دايركت إكس يعتبر شيء ما. ويجيب على سؤال.

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

بالنسبة لسؤالك عليك اخي ان تعلم ان المبرمج وجد لحل المشاكل , فلو طلب عميل برنامج تحرير صور او فيديو ولم يكن هنالك بديل او مكتبات جاهزة استخدمها فهذه بحد ذاتها مشكلة فمن واجبي كمبرمج ان احل تلك المشكلة , ومن برمج تلك التقنيات ليس اذكى مني ولا يتفوق علي بشيء الا العلم ربما , فساحاول التعلم لاصل لحل لهذه المشكلة , كمبرمجين دائما نواجه المشاكل ولعلمك هذا ممتع بالنسبة لي والامتع من ذلك هو حل تلك المشكلة , شخصياً لو بدأ ببرمجة برنامج معين وانتهيت بدون مشاكل اشعر بان هنالك نقص ولا اشعر بالارتياح

كلامك جميل وسليم أخي .

الفكرة التي اريد ايصالها ، ما هي الطريق التي سوف تتجهها للحل ؟ أو ما هو العلم الذي يفيدك في الحل ؟ هل الدور الأكبر على لغة البرمجة ؟

تقريباً نعم وتقريباً لا , (جواب متناقض صحيح؟)

كلنا نعلم ان لغة البرمجة ما هي الا وسيله لبلوغ الغاية وانا من يطوعها لتلبي استخداماتي , ولكن من غير المنطقي برمجة محرر فيديو ب oracle فهذه ليست وظيفتها !!!!!

ولكن هذا لا يعني الاستحالة , ولكن من الاسهل استخدام لغة مثل java او c# , هنا احدد اللغة المناسبة .

ابدأ بحل المشكلة على ورق , ستظهر مجموعة من المشاكل (اقصد بالمشاكل اني وجدت بالتحليل اني بحاجة لعمل شيء معين ولا اعلم كيف انجزه ) فابحث عن طريقة الحل

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

كلام جميل أخي ، ولكن ما هي طبيعة التجارب التي ستقوم بعملها ؟ هل هي مبنية على اساس علمي (نظريات ورياضيات) أم عشوائي ؟

احتراف لغة البرمجة شيء واحتراف البرمجة شيء آخر. و احتراف البرمجة هي اﻷصعب. والدليل أنه تجد من صمم لغات برمجة أو شارك في تصميمها لا يستطيع عمل أشياء كثيرة بها، مثلاً ربما لا يُجيد كتابة خوارزميات التشفير فهي تحتاج لأشخاص لهم فهم رياضي في هذا المجال. كذلك تصميم محركات قواعد بيانات بهذه اللغة، تحتاج لشخص لديه خبرة في تصميم قواعد البيانات، أيضاً المبرمج المحترف في لغة برمجة ربما لا يستطيع كتابة برامج لعلم الفلك مثلاً.

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

اعتقد ان المبرمج المحترف هو الذى يستوعب ال general programming concept و ليس ال xxx lang programming concept

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

بالنسبة للمكبات الجاهزة تستطيع تسريع العمل و لها دور فية جيد و لاكنها لان تسطيع ان تؤدى دورها بشكل افضل بدون ان يكون المطور مستعوب لكيفية عملها بشكل يتعدى ال 90% لانة سوف يعدل عليها و ليس تعديل برمجيا اقصد الكود لابد لة ايضا ان يعدل فى المنطق التى تتعامل بة هذة المكتبة مع البيانات

فى بعض الاحيان تعمل لغة برمجة ما تساعد على فهم العنى الحقيقى لل programming concept لاكن لا تعطية كلة ولا تفهمة كلها فهنا يحدث الاختلاط على الشخص ان تعمل لغة يجعلة محترف برمجة

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

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

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

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

لدي صديق يدرس اختصاص الذكاء الاصتناعي و برنامج التخرج الخاص به يقوم بمعالجة الصور و تحديد حركة جسم الانسان و أشياء أخرى كثيرة و قد قام باستعمال لغة الجافا لانشاء برنامجه و واجهته بعض المشاكل فأعاد كتابة كل البرنامج بلغة السي شارب في مدة اسبوع مع العلم أنه لا يعرف أي شيئ عن لغة السي شارب يعني أنه قام بتعلم اللغة و كتابة البرنامج في مدة أسيوع مع العلم أن برنامجا مثل هذا النوع ليس بالهين .

وهذا يعني أن لغة البرمجة غير مهمة اذا كنت تجيد الخوارزميات.

كلام سليم أخي

انا شايف إن الاحترافية ف البرمجة مش شرط صنع برامج كبيرة ومعقدة.

ممكن تكون محترف لإن اكوادك نظيفة وتعتمد على أبسط الطرق وأقلها إستهلاك للوقت والجهد والمتصفح أيضاً

البحث عن جوهر أو التعريف الحقيقى لكلمة مبرمج محترف يقتدى سؤال ما هو دليل الأحتراف والسؤال يتحدث فى هذا الأتجاه

ولا أعتقد أن المبرمج المحترف هو من يقدم منتج يطلبة العميل فقط

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

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

حسب نوع اللغة البرمجية، مثلا PHP لا تستطيع تحرير الفيديو إلا عبر مكتبات تعتمد على لغات برمجية أخرى

قِس على هذا وستفهم وجهة نظري.

طيب لو أفترضنا أنك تعرف أيضا لغة كالـ C++ فمن خلالها تسطيع عمل تطبيقات لتحرير الفيديو ؟

فهل تعلمك لهذه اللغة كافي ؟ أم هناك حلقة مفقودة تبقى في الوسط ؟

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

لأن فقدانها جعل مبرمجيها يبرمجونها

في اللغات الضخمة دائما تجد توجهات حتى وإن كنت تجيد اللغة

فلو مثلا أردت تحرير الفيديو بلغة C أو ++C فسيكون عليك معرفة أمور أخرى -برمجيا- مثل ما هو الفيديو وكيفية تحزيمه بصيغة وكيف تعمل الصيغ المعروفة وهل عليك تحزيمه بصيغة خاصة بك بما أنك لا تريد الاعتماد على المكتبات الجاهزة وبالتالي برمجة قارئ خاص لصيغتك ... هذا سـ/قد يأخذ من حياتك وقتا لا بأس به لدرجة قد تجعلك تتراجع عن قرارك :)

هنا الحلقة المفقودة أخي ، هي كيف برمجت هذه المكتابات ؟ كيف سيقوم البرنامج بعمل التأثيرات على الصور ؟ وكيف سيقوم بتحليل الأصوات وإزالة التشويش ؟ ما هو اللغز المستخدم لحل هذه المشكلات ؟

لغة البرمجة هي وسيلة لمخاطبة الحاسوب ، ووسيلة لتطبيق الفكرة والحل ؟ ولكن ما هو الحل ؟

المبرمج المحترف هو محترف بتطوير او برمجة برامج او تطبيقات احترافية، ويستخدم المكتبات الخارجية بذكاء .. ولكن لو لم يكن هنالك مكتبات خارجية ..؟

بالنسبة لي واجهت مشكلة من قبل عبر تطويري لتطبيق أوقات الصلاة لنظام الويندوز، بالبداية بحثت عن مكتبات ولم اصل لأي شيء اقنعني .. بعدها قرأت مقالات عديدة عن طريقة حساب أوقات الصلاة وقمت ببرمجة كلاس كامل لأحصل على أوقات الصلاة بدقة :-) ..

ولكن بالنسبة لتحرير صور او فيديو فأظن ان الأمر أصعب بقليل ولكن ليس مستحيل ..

الخلاصة :

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

و هل برمجة تطبيق chat صعب يا أخي....!

لماذا وجدت المكتبات المتخصصة مثل مكتبات التشفير ؟

لأن المبرمج أساساً لا يمكن ان يدرس كل العلوم ويدخلها في البرمجة. هل ستذهب وتدرس الرياضيات بعمق + امن المعلومات بعمق + بروتوكولات الشبكات بعمق !


أنت تحدد مجال معين وتنظر المهارات والمعلومات اللازمة له وتدرسها.

هل هذا منطق تطرح تطبيق محرر صور او فيديو لمبرمج متخصص في برمجة TCP/IP ثم تقيس مستواه؟؟

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

أقل ما فيها مهما كان المجال الذي سوف تختص به ستحتاج للخوارزميات وكتابتها بأفضل طريقة واسرع وقت وهذا له ارتباط بالرياضيات

أولا لا يوجد شي اسمه مبرمج محترف

ثانيا لا توجد شركة برمجيات في العالم لا تستخدم مكتبات جاهزة لعمل برامجهم على سبيل المثال معالجة الصور غالبا ستحتاج تستخدم OpenGL او ما شابهها وهي في الاساس ليست سوى مكتبات جاهزة لمختلف لغات البرمجة، غير كذا ستحتاج أن تقوم بكتابة مكتبتك الخاصة المشابهة ب OpenGL

و أيضا ASP.NET ليست لغة برمجة ولكنها مكتبة جاهزة من مايكروسوفت تقوم باستخدامها مع C# أو VB.NET

وايضا مكتبة JQuery بدونها ستكتب سطور عديدة على JavaScript لتقوم بمهمة تاخذ عدد اقل من الاسطر لكتابتها ب JQuery فكل المواقع والشركات الكبيرة تستخدمها.

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

أخيرا جوابا على سؤالك سيكون هكذا

المبرمج المحترف (بالشروط التي ذكرتها) هو من يعمل على 0 و 1 فقط ليقوم بعمل المشروع كاملا ;)

أولا : لماذا لا يوجد شيء اسمه مبرمج محترف ؟؟

ثانياً : لا توجد شركة برمجيات في العالم لا تستخدم مكتبات جاهزة ، لا أنفي ولا أثبت ذلك ولا أعلم .

ثالثا : هل من كتب OpenGL استخدم مكتبات جاهزة أو برمجة بالـ 0 و 1 ؟؟؟؟ أعتقد لا

الموضوع الذي ذكرته لا يحتاج لمن يبرمج بالـ 0 و 1 إقرأ رد الأخ نذير ففيه الجواب الشافي

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

لكن الغرض من ردي ذكرته أنه تطوير المشاريع الكبيرة تكون ضمن فريق عمل مما يعني حتى (المبرمج المحترف) لن يعمل لوحده في تطوير هذا المشروع

أما استخدامي المكتبات الجاهزة لا تقلل من خبرة المبرمج المحترف ولكن يدل على إلمامه بكل ما هو جديد في البرمجة (بحسب المكتبة التي سيستخدمها)

فالمكتبات الجاهزة الغرض منها تسهيل كتابة الأكواد مرة أخرى أذكر JQuery هذه مكتبة تسهل كتابة اكواد JavaScript وليست لغة برمجة ولكنها مكتبة ضخمة

فعندما أقول مثلا أنا محترف في JQuery لا يعني أني مجترف في JavaScript و العكس صحيح أيضا.

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

أما موضوع 0 و 1 كانت مجرد مزحة فقط

لم أقصد من سؤالي أخي الكريم أن المبرمج المحترف هو من يعرف المواضيع أعلاه ، وليس من لا يستخدم المكتبات الجاهزة ، بل عدم استخدامها في كثير من الأحيان هو مضيعة للوقت وإعادة لصنع العجلة

ولكن قصدي أن انقد فكرة (إحترف لغة البرمجة) وأن احتراف اللغة لا يقدم من الشخص ولا يجعله محترفا ، بل الاساسات الرياضية واساسيات علم الحاسوب هي التي تساعد في الابداع البرمجي وعمل ما تريد دون الحاجة للمكتبات الجاهزة .

-1

هل الغاية من الموضوع انك تريد برمجة مثل هذه البرامج, وتحاول استفزازنا للاجابة على سؤالك واعطائك الوصفة السحرية لها ؟

ههههههه لا يا أخي أنا أعرف الإجابة ، الهدف من السؤال هو فتح نقاش يقودنا لمفتاح علوم الحاسب ، وللإجابة عن سؤال دائما يطرح في هذا المجتمع وغيره وتكون إجابه فقط ( إذا كنت تريد برمجة الألعاب فتلزمك ) ;)