لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 07/12/16 في كل الموقع
-
الإصدار 1.0.0
20396 تنزيل
رافقت زيادة استخدام شبكة الإنترنت زيادةً كبيرةً في عدد الحواسيب التي تعمل مخدماتٍ لمختلف الخدمات الشائعة، كمواقع الويب والبريد الإلكتروني والمراسلة الفورية وخواديم الملفات وخلافه؛ وقد أثبت لينُكس تفوقه في مجال الخواديم، وخصوصًا بعد الانتشار الواسع لتوزيعة أوبنتو الخاصة بالخواديم؛ الذي يُعنى هذا الدليل بشرح طرق تثبيت وضبط مختلف خدماتها. آمل أن يكون هذا الكتاب إضافةً مفيدةً للمكتبة العربية؛ وأن يفيد القارئ العربي في تعلم إدارة أشهر نظام لتشغيل الخواديم. والله وليُّ التوفيق.1 نقطة -
يمكنك تنفيذ البرامج الموجودة ضمن هذه السلسلة (كما وسبق أن ذكرنا في المقدّمة) بطريقتين مختلفتين: الأولى هي تحميل وتنصيب بيئة التطوير المجّانيّة Visual Studio 2015 Community من مايكروسوفت. توفّر هذه البيئة خدمات عظيمة للمطوّر وتسهّل عمليّة كتابة البرامج إلى حدّ كبير. ويمكنك الاستفادة من مزايا تنقيح الأخطاء debugging المتقدّمة التي يوفّرها المنقّح debugger المرفق ضمن هذه البيئة. يمكنك تحميل نسختك المجّانيّة من هنا. الطريقة الثانية هي في استخدام الموقع NET Fiddle. الذي يوفّر مزيّة تنفيذ البرامج التي تكتبها على خادم خاص به، ومن ثمّ يعرض لك خرج البرنامج، بدون أن تمتلك نظام تشغيل ويندوز حتى. البرنامج الأول سنبدأ بمثال عمليّ لنسبر سريعًا أغوار هذه اللغة. شغّل برنامج Visual Studio 2015 Community ثم من القائمة File اختر الأمر New > Project. من نافذة مشروع جديد New Project، اختر من القسم الأيسر #Visual C ومن القسم الأيمن اختر Console Application. اكتب HelloWorld ضمن حقل الاسم Name في القسم السفلي، ثم اضغط زر OK. انظر الشكل التوضيحي التالي: قد تبدو الصورة مختلفة بعض الشيء لديك بحسب إعدادات الإظهار التي اخترتها. سيعمل Visual Studio على إنشاء هذا التطبيق وفتح ملف مُجهّز خصيصًا لك اسمه Program.cs. امسح محتويات هذا الملف بالكامل ثم انسخ الشيفرة التالية ضمنه: 1 using System; 2 3 namespace HelloWorld 4 { 5 class Program 6 { 7 static void Main(string[] args) 8 { 9 Console.WriteLine("Hello World!"); 10 } 11 } 12 } اضغط المفتاحين Ctrl+F5 معًا لتبدأ عملية بناء build البرنامج وتنفيذه لتحصل على العبارة Hello World! في خرج البرنامج (أو من القائمة Debug > Start Without Debugging). رغم أنّ البرنامج السابق بسيط جدًّا إلًا أنّه يحتوي على الكثير من المفاهيم الجديدة التي سنتناولها تباعًا في هذه السلسلة. يبدأ هذا البرنامج بتعريف نطاق اسم namespace (السطر 3) اسمه HelloWorld وهو نفس الاسم الذي زوّدناه للبرنامج، سنتكلّم عن نطاقات الأسماء في درس لاحق، ولكن يكفيك أن تعرف الآن أنّ نطاقات الأسماء هي وسيلة لتنظيم الأصناف ضمن مجموعات مترابطة منطقيًّا. يأتي بعد ذلك تعريف صنف class جديد اسمه Program (السطر 5). يحتاج أيّ برنامج مكتوب بالسي شارب إلى نقطة دخول entry point لكي يبدأ تنفيذه. نقطة الدخول يجب أن تكون عبارة عن تابع method اسمه Main (السطر 7)، تكون التوابع عادةً ضمن الأصناف، يكفيك الآن أن تفهم التابع على أنّه شبيه بالدّالة function في لغات البرمجة الأخرى. أي هو جزء من الشيفرة يمكن استدعاؤه لتنفيذ ناحية وظيفيّة مُحدّدة في البرنامج وقد يُرجع قيمة ما أو لا يُرجع أيّ شيء. العبارة الموجودة في السطر 9 هي عبارة برمجّية قياسيّة في لغة سي شارب. وظيفة هذه العبارة استدعاء التابع WriteLine من الصنف Console وتمرير النص "!Hello World" له لكي يُظهر النص !Hello World في خرج البرنامج. أيّ عبارة برمجيّة في سي شارب يجب أن تنتهي بفاصلة منقوطة (;)، وقد تكون العبارة البرمجيّة مجرّد استدعاء تابع أو أن تكون عمليّة إسناد إلى متغيّر، أو قد تكون مزيجًا بينهما. إذا كانت لديك معرفة سابقة بلغات برمجة مثل C أو ++C أو Java ستلاحظ أنّ الصيغة النحويّة syntax للغة سي شارب تشبه إلى حدٍّ كبير الصيغة النحويّة لهذه اللّغات. حيث تُستخدم الحاضنات { } مثلًا لتحديد البداية والنهاية للتابع method وللصنف class ولنطاق الاسم namespace. وحتى أنّهما يشكّلان حدود أيّ بنية برمجيّة في لغة سي شارب مثل العبارات التكراريّة. انظر على سبيل المثال إلى السطر 6 لتجد الحاضنة "{" الخاصّة بالصنف Program وإلى السطر 12 لتجد حاضنة الإغلاق "}" له. كما ينبغي التنبّه أيضًا إلى كون لغة سي شارب حسّاسة لحالة الأحرف كما هو الحال في لغات البرمجة C و ++C و Java. ملاحظة يمكن استخدام المفتاح F6 في بيئة Visual Studio (أو من القائمة Build > Build Solution) لبناء البرنامج دون تشغيله (تنفيذه) وذلك اعتبارًا من الشيفرة والحصول على ملف تنفيذي منه له الامتداد exe في حال كان البرنامج لا يحتوي على أيّ خطأ. برنامج بسيط لجمع عددين صحيحين لنعمل الآن على برنامج عمليّ أكثر. سنكتب برنامج يعمل على جمع عددين صحيحين وإظهار النتيجة للمستخدم. اتبع نفس الخطوات التي أجريناها في البرنامج السابق لإنشاء برنامج جديد باسم SumTwoNumbers، انسخ محتويات الشيفرة التالية إلى الملف Program.cs: 1 using System; 2 3 namespace SumTwoNumbers 4 { 5 class Program 6 { 7 static void Main(string[] args) 8 { 9 int a; 10 int b; 11 int c; 12 13 a = 3; 14 b = 4; 15 16 c = a + b; 17 18 Console.WriteLine("3 plus 4 equals: " + c.ToString()); 19 20 } 21 } 22 } يُقدّم هذا البرنامج البسيط مفهوم التصريح عن المتغيّرات والتعامل معها. صرّحنا في الأسطر من 9 إلى 11 عن ثلاثة متغيّرات a و b و c من النوع int. يجب التصريح في لغة سي شارب عن كل متغيّر قبل استخدامه في البرنامج. لاحظ أنّ التصريح عن متغيّر يتمّ بذكر نوعه ومن ثمّ اسمه. يستطيع المتغيّر من النوع int استيعاب أي عدد صحيح (دون فاصلة عشريّة) يقع بين 2,147,483,648- و 2,147,483,647. لاحظ أنّه قد أسندنا القيمتين 3 و 4 إلى المتغيّرين a و b على الترتيب، وذلك في السطرين 13 و14. نجري عملية الجمع والإسناد إلى المتغيّر c في السطر 16. وفي السطر 18 نعرض رسالة للمستخدم. يمكن إسناد قيمة للمتغيّر مباشرةً عند التصريح عنه. فمن الممكن مثلًا إسناد القيمتين 3 و 4 للمتغيّرين a و b على الترتيب عند التصريح عنهما وذلك بالشكل التالي: int a = 3; int b = 4; كما يمكن استخدام عبارة تصريح واحدة للتصريح عن عدّة متغيّرات بنفس الوقت. فمثلًا كان من الممكن التصريح عن المتغيّرات a و b و c السابقة بعبارة برمجيّة واحدة على الشكل التالي: int a, b, c; في الواقع هناك شكلان من أنواع المتغيّرات تدعمهما منصّة دوت نت. أنواع القيمة value types والأنواع المرجعيّة reference types. سنتحدّث عنهما لاحقًا. يُعتبر النوع int نوع قيمة. يجب إجراء عمليّة إسناد واحدة على الأقل إلى متغيّر قيمة قبل القراءة منه. وإلّا سنحصل على خطأ. جرّب حذف العبارة البرمجيّة الموجودة في السطر 16 والمسؤولة عن إسناد قيمة المجموع إلى المتغيّر c. نفّذ البرنامج وستحصل على الخطأ التالي: Use of unassigned local variable 'c' سبب ذلك أنّنا حاولنا قراءة المتغيّر c في السطر 18 دون أن نُسند أيّ قيمة له. العبارة البرمجيّة الموجودة في السطر 18 مسؤولة عن عرض الرسالة إلى المستخدم كما أسلفنا. ستلاحظ أنّنا مرّرنا التعبير expression التالي إلى التابع WriteLine: "3 plus 4 equals: " + c.ToString() التعبير البرمجي هو مفهوم موجود في جميع لغات البرمجة تقريبًا، وهو ببساطة ناتج عمليّة برمجيّة باستخدام عامل operator واحد أو أكثر، أو استدعاء إلى تابع أو مزيج بينهما. نسمّي عمليّة معالجة التعبير بتقييم التعبير expression evaluation. العامل المُستخدم هنا هو عامل ضمّ النصوص (+)، ولعلّك تستغرب لماذا أدعوه بعامل ضمّ النصوص رغم أنّه يشبه عامل الجمع العادي الذي يجمع عددين مع بعضهما (انظر السطر 16). يعود السبب في ذلك إلى نوع المُعامِلَين operands الموجودين على طرفيه. يمكنك أن تلاحظ بسهولة أنّ المعامل الأيسر هو النص: "3 plus 4 equals: " أمّا المعامل الأيمن فهو: c.ToString() وهو أيضًا نص ويعود سبب ذلك إلى استدعاء التابع ToString من المتغيّر c المعرّف أصلًا أنّه متغيّر من نوع int. ولكنّ استدعاء هذا التابع من المتغيّر c يؤدّي إلى الحصول على التمثيل النصّي للقيمة العددية الموجودة ضمنه أصلًا. فإذا كان المتغيّر c يحمل القيمة العددية 7، فإنّ التابع ToString سيُرجع النص "7"، الذي يعمل عامل الضم + على ضمّه مع النص الذي يسبقه لتكون نتيجة التعبير ككل هي: "3 plus 4 equals: 7" سيُمرّر هذا النص إلى التابع WriteLine لعرضه للمستخدم. أعتقد أنّك قد بدأت بفهم طريقة الوصول إلى التوابع واستدعائها في لغة سي شارب. فنحن نستخدم اسم الصنف (أو الكائن object كما سنرى لاحقًا) الذي يحوي التابع المراد استدعاؤه متبوعًا بنقطة ثم باسم التابع المطلوب، وبعد ذلك قوسين هلاليّين نمرّر بينهما الوسائط التي يطلبها التابع إذا اقتضت الضرورة لذلك. برنامج محسن أكثر لجمع عددين لقد تعلّمنا العديد من المفاهيم الجديدة من خلال البرنامجين السابقين. ولكن لعلّك قد لاحظت من برنامج جمع العددين السابق أنّ البرنامج جامد بعض الشيء. فهو يجمع عدّدين مُحدّدين سلفاً. سنعمل في هذه النسخة المطوّرة من البرنامج على استقبال العددين المراد جمعهما من المستخدم ومن ثمّ إجراء عمليّة الجمع عليهما وعرض النتيجة على المستخدم، مع بعض التحسينات الإضافيّة الأخرى. أنشئ مشروعًا جديدًا باسم EnhancedSumTwoNumbers ثمّ استبدل محتويات الملف Program.cs بالشيفرة التالية: 1 using System; 2 3 namespace EnhancedSumTwoNumbers 4 { 5 class Program 6 { 7 static void Main(string[] args) 8 { 9 string str1, str2, result; 10 double num1, num2, sum; 11 12 //prompt user to get input for first value. 13 Console.Write("Input first number: "); 14 str1 = Console.ReadLine(); 15 16 //prompt user to get input for second value. 17 Console.Write("Input second number: "); 18 str2 = Console.ReadLine(); 19 20 //convert the input values to double numbers. 21 num1 = double.Parse(str1); 22 num2 = double.Parse(str2); 23 24 //perform sum operation. 25 sum = num1 + num2; 26 27 /*concatenate strings to form output 28 message which contains the result.*/ 29 result = num1.ToString() + " + " + num2.ToString() + " = " + sum.ToString(); 30 31 Console.WriteLine(result); 32 33 } 34 } 35 } نفّذ البرنامج بضغط المفتاحين Ctrl+F5 معًا. سيطلب منك البرنامج في البداية إدخال قيمة العدد الأوّل. أدخل القيمة المرغوبة ثم اضغط مفتاح الإدخال Enter. بعد ذلك سيطلب منك البرنامج إدخال قيمة العدد الثاني. أدخلها واضغط Enter. سيعرض البرنامج بعد ذلك النتيجة المطلوبة على شكل رسالة مناسبة. تحتوي هذه النسخة من برنامج جمع الأعداد على عدّة تحسينات: أصبح برنامجنا يدعم جمع أعداد تقبل فاصلة عشرية من خلال التصريح عن متغيّرات من النوع double (انظر السطر 10). والنوع double هو النوع الذي يقبل أعدادًا ذات فاصلة عائمة مزدوجة الدقّة. مجال الأعداد التي يقبلها يقع بين ±5.0*10-324 حتى ±1.7*10308. أصبح بإمكان مستخدم البرنامج أن يُدخل الأعداد المراد جمعها مباشرة من لوحة المفاتيح، وذلك من خلال التابع ReadLine من الصنف Console (انظر السطرين 13 و 16) يُوقف هذا التابع تنفيذ البرنامج وينتظر المستخدم أن يُدخل قيمة ما ويضغط مفتاح الإدخال Enter ليتابع البرنامج التنفيذ. أضفنا تعليقات توضيحيّة ضمن البرنامج. هذه التعليقات لا يكترث بها المترجم، ووظيفتها هي جعل الشيفرة البرمجيّة مقروءةً وسهلة الفهم والتعديل لاحقًا. في الحقيقة تُعتبر عمليّة كتابة التعليقات البرمجيّة فنًّا بحد ذاته، وأنصح أن يمارسها كلّ مبرمج بأيّ لغة برمجة كانت. في الواقع ليس مطلوبًا كتابة التعليقات البرمجيّة قبل كلّ عبارة برمجيّة، فعلى المرء أن يكون حكيمًا في استخدامها بالشكل الذي يحافظ فيه على التوازن بين جعل الشيفرة واضحة ومقروءة، وعدم الإفراط في كتابة التعليقات بدون ضرورة. تدعم لغة سي شارب نوعين من التعليقات: التعليقات على مستوى السطر، حيث يتجاهل المترجم compiler كلّ ما يقع على يمين الرمزين//. والتعليقات التي تمتد على عدّة أسطر، حيث يتجاهل المترجم المحتوى الموجود بين الرمزين /* والرمزين */. انظر الأسطر 12 و 16 و 20 و 24 من أجل التعليقات على مستوى السطر، والسطرين 27 و 28 من أجل التعليقات التي تمتدّ على عدّة أسطر. استخدمنا التابع Write بدلًا من التابع WriteLine (انظر السطرين 13 و 17)، والسبب في ذلك هو أنّنا نريد أن يطلب البرنامج من المستخدم إدخال القيمة على نفس السطر الذي تُعرَض فيه الرسالة وليس على سطرٍ منفصل. فالتابع Write يعرض النص المُمرّر إليه ولا يُحدِث سطرًا جديدًا. في حين يسلك التابع WriteLine نفس سلوك التابع Write ولكن ينتقل إلى سطر جديد بعد عرض النص. يمكنك أن تجرّب استبدال التابع WriteLine بالتابع Write لترى الفرق. جعلنا عمليّة تشكيل النص الذي سيُعرض على المستخدم ضمن سطر منفصل (السطر 29) وأسندنا هذا النص إلى المتغيّر result من النوع string. الهدف من هذا الأمر هو جعل الشيفرة نظيفة وواضحة وسهلة للقراءة. النوع string هو من الأنواع المرجعيّة reference types ويُستخدم للتعبير عن النصوص. ولكن تبقى هناك بعض العيوب التي لم نعالجها والتي قد تسبّب توقّف البرنامج عن العمل: تُعتبر القيم التي يدخلها المستخدم بواسطة التابع ReadLine أنّها قيم نصيّة. وحتى نستطيع التعامل معها كأعداد تقبل فاصلة عشريّة يجب تحويلها إلى قيم عددية من النوع double. نستطيع ذلك بسهولة من خلال التابع Parse من الصنف double. يقبل هذا التابع أن نُمرّر إليه قيمة نصيّة ليعيد إلينا التمثيل العددي لها من النوع double. ولكنّ السؤال هنا أنّه ماذا لو أدخل المستخدم بشكل غير مقصود (أو مقصود) القيمة النصيّة التالية "abc" للعدد الأوّل؟ عندما يصل تنفيذ البرنامج إلى السطر 21 سيعمل التابع Parse على تحويل القيمة "abc" إلى التمثيل العددي من النوع double وهذا ما لا يمكن حدوثه بالطبع، لذلك فسيرمي التابع Parse استثناءً Exception سيؤدّي إلى توقّف البرنامج عن العمل فورًا! سنتحدّث عن الاستثناءات في درس لاحق. وعلى أيّة حال يمكن حلّ هذه المشكلة بطريقتين مختلفتين سنتحدّث عنهما لاحقًا في هذه السلسلة. ولكنّ المغزى هنا هو أنّه لا تثق بمدخلات المستخدم مطلقًا. تُعتبر عملية ضم النصوص التي أجريناها في السطر 29 غير عمليّة وعادة برمجيّة غير جيّدة. يتعلّق هذا الأمر بالحقيقة طريقة تعامل سي شارب مع النصوص، سأترك الحديث عن هذه المشكلة وطرق حلّها عندما نتحدّث عن النصوص والتعامل معها في الدرس السادس. تمارين داعمة تمرين 1 اكتب برنامجًا يطبع العبارات التالية كما يلي على الشاشة: Today is Sunday. Tomorrow is Monday. Yesterday is Saturday. تمرين 2 اكتب برنامجًا يطلب من المستخدم إدخال قيمتين عدديتين، ومن ثمّ يوجد حاصل الضرب لهما (استخدام العامل *) وبعرض النتيجة على الشاشة. يجب أن يدعم البرنامج الأعداد ذات الفاصلة العشرية. الخلاصة تعرّفنا في هذا الدرس على الشكل الأساسيّ لأيّ تطبيق مكتوب بلغة سي شارب. كما تعاملنا مع ثلاثة برامج بسيطة للغاية وضّحت مبادئ كتابة برنامج باستخدام سي شارب. سنتناول في الدرس القادم موضوع المتغيّرات وأنواعها والعوامل والتعابير expressions بتفصيل أكبر.1 نقطة
-
وردتني الكثير من الرسائل اﻹلكترونية خلال اﻷشهر القليلة الماضية من قبل مبرمجين تعلّموا البرمجة بأنفسهم، وهم يرغبون في الانطلاق في مسيرتهم المهنية كمبرمجين مستقلين، وقد تضمنت هذه الرسائل الكثير من الأسئلة مثل كيف أبدأ العمل كمستقل... وغيرها من اﻷسئلة التي تعكس ما مررت به عندما بدأت العمل كمبرمجة مستقلّة. كنت أسأل نفسي دائمًا فيما إذا كنت مستعدة للعمل كمستقلة، وهل سيطلب منّي أحد ما أن أبرمج له مقابل أجر ماديّ. لم أكن أعرف كيف أتحول من مبرمجة مبتدئة إلى مطوّرة حقيقية، وكيف أدخل ميدان العمل الحرّ بشكل صحيح. كنت مصدومة بمقدار الخوف والقلق الذي كان يقف في طريقي: الخوف من المجهول. الخوف من تضييع شهور أو حتى سنوات في تعلّم شيء قد لا يجدي نفعًا. الخوف من أن أصبح معروفة بكوني شخصًا فاقدًا للتركيز. الخوف من العودة إلى نقطة البداية. وباﻹضافة إلى هذه المخاوف، كانت تراودني العديد من اﻷسئلة، مثل: أشعر بأنّي لا أستطيع تعلّم البرمجة، وأنّي لا أتطور فيها بسرعة كافية. هل أمتلك الخبرة الكافية لكي أحصل على عمل مقابل أجر مادي. أرغب في أن أعمل كمستقلّة، ولكني لا أعرف كيفية الحصول على عميلي اﻷول. وقد دفعني كل ما سبق إلى وضع هذا الدليل الشامل للإجابة عن هذه التساؤلات والتغلب على تلك المخاوف، لتتمكّن من تحديد الوقت والطريقة التي تبدأ فيها بالتحول إلى مبرمج مستقلّ والدخول في مضمار العمل الحرّ، لتشعر بالحرية والمرونة في العمل في كل يوم. ستجد في هذا المقال أفضل الخطط التي يمكن اتباعها لمعرفة: كيف تجد الوقت للبرمجة، وكيف تستثمر هذا الوقت بفعّالية. ما هي اللغات التي يجب التركيز عليها وما هي المصادر التي يجب اﻻستعانة بها. متى وكيف تبدأ عملية التحول إلى العمل الحر. كذلك ستجد خططًا واضحة ومحددة تساعدك في اتخاذ الخطوات المناسبة منذ البداية لتتجنّب المفاجئات في المستقبل. كما يمكنك الاستفادة من هذا المقال حتى لو كنت موظّفًا يعمل بدوام كامل. لقد استعنت بخبرتي الشخصية في كتابة هذا المقال، إضافة إلى أنّني أجريت بحثًا موسّعًا جدًّا، واعتمدت على مصادر مُختلفة، ما يعني أنّك لست بحاجة إلى تضييع وقتك في البحث عن اﻹجابات؛ ﻷنّك ستجدها مجتمعة في هذا المقال. حسنًا، أعتقد بأننّي قد تحدّثت كثيرًا، وقد حان الوقت للدخول إلى صلب الموضوع. لنتفق على أمر واحد: نعم، أنت مبرمج "حقيقي" هل تبدو هذه العبارة مألوفة لك: أسمع هذه العبارة بشكل دائم، سواء من قبل أشخاص مبتدئين أو من قبل الذين يبرمجون منذ عام أو يزيد. يسمّي Anthony Gold حالة الخوف هذه بـمتلازمة المحتال Imposter Syndrome، وتشيع هذه المتلازمة بين اﻷشخاص الذين يحقّقون النجاحات الكبيرة، وقد عانى من هذه المتلازمة كل من Denzel Washington و Tina Fey و Sheryl Sandberg و Meryl Streep وذلك في بداية حياتهم المهنية. وليزيد الطين بلّة، فإن المبرمجين الشباب يقابلون بكثير من الكراهية، إذ يكره الناس مقابلة اﻷشخاص الذين يلقّبون أنفسهم بألقاب مثل مطور برامج، أو مطور ويب، أو مطور "أي شيء". فلا عجب إذًا في أن ينتابك شعور بانعدام الثقة عندما تسمّي نفسك مطوّرًا، وأعني بـ "المطور" هنا ذلك الشخص الذي يكتب الشيفرات البرمجية ويحلّ المشاكل ويبني البرامج"، وسأستخدم مصطلح "المطوّر" هنا بشكل فضفاض، حيث سيشمل المصطلح المبرمجين (Programmers) والمُبرمجين الخارقين (Hackers) ومختبري البرمجيات (Coders) وعلماء الحاسوب (Computer Scientists). ولا أقصد بهذا الاستخدام الموسّع أن أشير إلى تشابه هذه التخصصات مع بعضها البعض، فهي ليست كذلك، بل الغرض من ذلك هو تسهيل النقاش إضافة إلى تداخل هذه التخصّصات مع بعضها البعض. ولا أقصد من هذه النقطة التركيز على المعنى اللغوي لهذه المصطلحات، أو الدخول في مناظرة لتحديد الفرق بين تخصّص وآخر، بل ما أقصده هنا هو وجود سبب يدفعك إلى تعلم البرمجة، سواء أكان الهدف إصلاح اﻷشياء أو بنائها أو تحسينها. ولكي نحسم اﻷمر بشكل نهائي نقول: إن كنت قادرًا على كتابة الشيفرات البرمجية وبناء أو تحسين اﻷشياء باستخدام الشيفرة، فأنت إذًا مُبرمج حقيقي. وفي المرة القادمة، عندما تسأل نفسك هذا السؤال تذكّر Anne Cahalan والتي لم تبدأ البرمجة منذ نعومة أظفارها، ودخلت إلى عالم البرمجة عن طريق الصدفة وتعلّمت البرمجة من خلال ورش التدريب. تتساءل Anne عن مدى أهمية أن يكون المطوّر مطوّرًا "حقيقيًا"؟ وما هو تعريف كلمة "حقيقي" وكيف يتم تحديد هذه الصفة، ولماذا لا نستطيع تحديدها بأنفسنا؟ بدلًا من التفكير في كونك مطوّرًا "حقيقيًّا" أم لا، يستحسن بك الخوض في التحديات، واكتشاف أشياء جديدة، وتعلم المزيد. فأنت وحدك من يقرر إذا ما كنت مطوّرًا "حقيقيًّا" أم لا، وبدلًا من التركيز على اتّصافك بهذه الصفة من عدمه، اجعل تركيزك منصبًّا على أن تكون مطوّرًا كبيرًا. يقدّم لنا Scott Hanselman و هو متحدّث ومدوّن ويدير بودكاست ومطوّر في Microsoft عددًا من النصائح التي تساعد في شحذ الهمّة وتطوير المهارات، وذلك في مقالته التي كتبها تحت عنوان "هل أنا مطوّر أم مجرّد شخص يُتقن البحث على Google ؟"، ومن جملة هذا النصائح: تذكّر أنك لست وحيدًا، ومن الجيد أن تشعر بمثل هذا الشعور، فهذا يعني أنّك قد خرجت من منطقة الراحة. تمرّن، ثم تمرّن، ثم تمرّن. حاول البرمجة دون اللجوء إلى محرك البحث Google لمدة يوم واحد، ثم بعد جرب ذلك لمدة يومين، ثم بعدها لمدة أسبوع. انسخ اﻷنماط بدلًا من نسخ الشيفرة. انخرط في المجموعات التي تضمّ أشخاصًا يقاسمونك نفس الشعور تجاه البرمجة والتكنولوجيا وتنمية الذات. الدرس اﻷول: لا تقلق بشأن كونك مطوّرًا "حقيقيًّا" أم لا، وركزّ بدلًا من ذلك على التمرين، وانسخ نمط كتابة الشيفرة بدلًا من نسخ الشيفرة ذاتها، والخروج من أفكارك ومن منزلك أيضًا، للمشاركة في الملتقيات، والبحث عن اﻷشخاص الذين يقاسمون نفس الشعور تجاه التكنولوجيا وشؤونها. كيف تجد الوقت الكافي للبرمجة حين تمتلك وظيفة بدوام كامل وحياة مليئة بالمشاغل إيجاد الوقت الكافي للبرمجة من المشاكل التي تواجه الكثيرين ممن يعملون بوظائف ذات دوام كامل ويعيشون حياة مليئة بالمشاغل. إليك هذه المعلومة عن الوقت: لا تستطيع الحصول على الوقت، بل عليك صنعه. إن أفضل ما قرأته بخصوص صناعة الوقت اللازم لتعلم البرمجة هو ما كتبه J Wynia في Stack Exchange: وأرى أنّ تسجيل نشاطاتي اليومية بشكل دقيق ولمدة أسبوع أو أكثر تساعدني في تحديد الفترة التي يمكن من خلالها اقتطاع الوقت المطلوب. وهذا ينطبق تمامًا على جميع اﻷشخاص الذين شاركوني هذه التجربة. قد تستهلك مشاهدة التلفاز، ومتابعة الأخبار الرياضية، واﻷفلام، والنوم الزائد في نهاية اﻷسبوع، أو النوم الزائد خلال أيام اﻷسبوع، أو تنظيف منزلك أو جزّ العشب في حديقتك بدلًا من أن توكل هذه المهمة إلى أحد اﻷشخاص نيابة عنك مقابل أجر مادّي، قد يستهلك كل ذلك الكثير من الوقت والذي قد تعتبر أنه أكثر أهمية من المشاريع الشخصية. وقد توجّهت بهذا السؤال إلى عدد من اﻷشخاص الذين يتمتعون بنشاط كبير، وأصدقك القول بأنّي أشعر بتواضع كبير أمام التضحيات التي يقدّمها هؤلاء اﻷشخاص للحصول على ساعة أو أقل في اليوم. وفي بعض الأحيان قد تؤدي هذه التضحيات إلى إصابتهم بالضرر، فقد يحرمون أنفسهم من ممارسة التمارين الرياضية، أو يكون لديهم أصدقاء قلائل وعلاقات اجتماعية ضعيفة، أو … الخ. بالنسبة إلي، فإنّ السبب وراء إنتاجيتي المرتفعة سواء في تعلّم أشياء جديدة، أو العمل على مشاريعي الخاصة، يكمن في أنّي لا أشاهد التلفاز أو اﻷفلام دون أن أعمل على حاسوبي المحمول، وغالبًا ما أكتفي بالاستماع إلى التلفاز وقضاء الوقت في القراءة أو في كتابة الشيفرة." لقد أصاب J Wynia في كلامه هذا كبد الحقيقة لسببين: إن التعرف بشكل دقيق على النشاطات التي تستهلك وقتك (وذلك عن طريق تسجيل نشاطاتك اليومية لبضعة أيام) سيسهّل عليك إجراء التغييرات اللازمة للحصول على المزيد من الوقت الذي يمكن قضاؤه في تعلم البرمجة. قد تكون الاستعانة بالآخرين في إنجاز النشاطات، أو التوقف عن إنجازها، أمرًا ضروريًا إن كنت جادًّا في مسألة تعلم البرمجة. هنالك طرق أخرى يمكنك الاستعانة بها في صنع الوقت المطلوب: استيقظ قبل ساعتين من موعد استيقاظك اليومي، وستحصل بذلك على شهر كامل من الوقت المثمر خلال سنة كاملة. ﻻ تشاهد التلفاز بعد اﻵن. أقرّ بأنّني من مدمني خدمة Netflix، ولكن هل تعلم بأنّه يمكنك توفير يوم كامل و 22 ساعة ونصف بمجرد التخلص من اﻹعلانات. اكتب اسم الفيلم أو المسلسل المفضل لديك في هذا الموقع، لتكتشف مدّة العرض الحقيقية. توقف عن العمل بشكل مكثّف، واترك لنفسك متّسعًا من الوقت للقيام بأشياء أخرى في حياتك، مثل تعلم البرمجة. تشير Pam Selle أحد المنظمين لملتقى مطوّري Javascript في فيلادلفي إلى أن اﻷشخاص الذي يعملون كثيرًا لا يؤدّون عملهم بشكل أفضل، بل هم يؤدّونه بجودة أقل، أو سيشعرون باﻹرهاق؛ لذا، أدّ عملك، واذهب إلى المنزل، واصنع الوقت الذي تحتاجه للقيام بما ترغب به خارج العمل. الدرس الثاني: يجب أن تصنع الوقت اللازم لتعلم البرمجة، سواء أكان ذلك عن طريق التوقف عن مشاهدة التلفاز أو الاستيقاظ قبل ساعتين من موعد الاستيقاظ اليومي. كيف تستفيد من الوقت الذي صنعته بفعالية لا تكون المشكلة في بعض اﻷحيان مرتبطة بصناعة الوقت، بل باستخدامه بشكل فعّال. هل سمعت من قبل بمبدأ باريتو Pareto principle أو ما يعرف كذلك بمبدأ 80/20؟ يلخّص John Schnettgoecke هذا المبدأ بشكل رائع وكما يلي: فكرة هذا المبدأ هي كيفية الحصول على إنجازات كبيرة جدًّا في أقل فترة زمنية ممكنة، وذلك من خلال التركيز على النشاطات ذات الأثر الكبير، بدلًا من إجراء التعديلات البسيطة أو إعادة العمل مرارًا وتكرارًا توخّيًا للكمال. يقدم Joel Runyon شرحًا مفصّلًا ورائعًا عن هذا المفهوم في موقع Impossible HQ، حيث يعطي Joel أمثلة عملية عن طريقة عمل مبدأ 80/20 في أنظمة الحمية، واللياقة البدنية، والمشاريع التجارية، والدخل، والثروة. ويشدّد Joel على أهمية الخروج من دائرة البحث عن الكمال، وذلك بالتركيز على الوصول إلى فهم جيد، ثم الانتقال إلى الخطوة التالية، ولا يتم ذلك إلا بتجاوز التفاصيل الصغيرة. قد يكون هذا صعبًا عند تعلّم البرمجة، حيث يمكن لمشكلة تافهة أن تأخذ 45 دقيقة من وقتك لحلها وأنت لا تملك سوى 60 دقيقة لتعلم البرمجة في اليوم الواحد، ومع ذلك، حاول تذكّر هذا المبدأ ما أمكن ذلك. قد تشعر بأنّك لم تنجز شيئًا في هذه الدقائق الخمسة واﻷربعين، ولكن الواقع يقول عكس ذلك، ﻷنّك قد حصلت على خبرة لا تقدّر بثمن، لقد تعلّمت الصبر على حل المشاكل، وصقلت موهبتك عندما تمكّنت من تجاوز العقبات التي تقف في طريقك. إليك بعض النصائح التي يمكنك الاستفادة منها في استغلال وقتك بفعّالية أكبر: ابحث عن الساعات التي تكون فيها أكثر إنتاجًا، ولا تساوم عليها مهما حصل. على سبيل المثال، أنا أعلم أن إنتاجيتي تبلغ ذروتها في ساعات الصباح الباكر؛ لذا فإني أمتنع عن القيام بأي شيء سوى العمل على مشاريعي من الساعة السادسة وحتى الساعة الثامنة صباحًا من كل يوم. جرب استخدام تقنيات زيادة اﻹنتاجية لمعرفة ما يناسبك منها. يتحدّث Chris Winfield في إحدى مقالاته عن كيفية إنجازه لعمل يحتاج إلى40 ساعة في 16.7 ساعة فقط بالاستعانة بتقنية البومودورو. الدرس الثالث: اكتف بما هو جيّد ولا تبحث عن الكمال. ابحث عن الأوقات التي تبلغ فيها إنتاجيتك أوجها، وﻻ تساوم عليها مهما كلّف اﻷمر. جرّب استخدام تقنيات زيادة اﻹنتاجية واستفد من التقنيات التي تناسبك لبناء نظام عمل فعّال. كيف تتجاوز عقبة التحول من مرحلة تلقي المفاهيم ﻷول مرة إلى مرحلة فهم اﻷمور بسرعة وفعالية يرافق تعلم مهارة جديدة ـ خصوصًا إن كانت مهارة معقدة كتعلم البرمجة ـ صعوبة التحول من متعلّم مبتدئ للمفاهيم الجديدة والتي يتعرف عليها ﻷول مرة إلى مرحلة فهم اﻷمور بشكل سريع وفعّال. أعتقد أن أفضل من تكلّم في هذا الموضوع هو Erik Trautman وذلك في مقالته التي كتبها تحت عنوان "لماذا يكون تعلم البرمجة أمرًا صعبًا للغاية". يغطي المقال جميع المراحل التي يمرّ بها متعلّم البرمجة في رحلته هذه، بدءًا بـ "شهر العسل" حيث يكون اللقاء اﻷول، مرورًا بـ "تل الحيرة والالتباس" والذي تتلوه "صحراء القنوط واليأس" وما وراءها. يقدّم Erick في هذا المقال صورة دقيقة لما ستؤول إليه اﻷمور عندما تقرر تعلم البرمجة ذاتيًا. يمكن ﻷي شخص يتعلم البرمجة وفي أي مرحلة من المراحل أن يستفيد من قراءة هذا المقال، فمعرفة ما عليك توقعه سيساعدك في تجاوز العقبات بشكل أسرع. ما الذي يمكن أن يساعدك أيضًا في تجاوز هذه العقبة؟ حافظ على تركيزك تجاه تعلّم البرمجة وتطوير مهاراتك فيها، وﻻ تتوقف عن طرح اﻷسئلة. حفّز نفسك وكن إيجابيًا على الدوام، وذلك بالبحث والتقصّي عن الحلول، بدلًا من الركود والشعور بالإحباط وخيبة اﻷمل، حاول اكتشاف سبب حدوث المشكلة، وما الذي يمكنك القيام به لحلّها، وما هي الحلول الناجعة وغير الناجعة؟ يدعو Carol Dweck هذه المبادئ بمبادئ النمو، وقد بيّنت الدراسات أن اﻷشخاص الذي يمتلكون عقلية النمو (growth mindset)، يكونون أكثر تحفيزًا ويمتلكون ذاكرة أقوى ويحصلون على نتائج أفضل. وعلى الجانب اﻵخر تمامًا يقف أصحاب "العقليات الجامدة"، حيث يصبح الفشل هويتهم (أنا فاشل) بدلًا من أن يكون الفشل مجرّد فعل (أنا فشلت). إن تحول الفشل إلى هوية يجعل من تغيير حال اﻹنسان أمرًا صعبًا للغاية؛ ذلك ﻷنّه يصبح مقتنعًا بأنّه غير قادر على تغيير حاله على اﻹطلاق. لهذا؛ بدلًا من أن تؤطّر ذاتك وسعادتك في إطار هذه الهوية، ابذل ما في وسعك لتطوير فهمك للأمور وابذل كل ما في وُسعك لتحقيق ذلك، وحينها ستشعر بتحسّن كبير، وستتعلم بسرعة أكبر، وستحافظ على ما تعلّمته بشكل أفضل. الدرس الرابع: معرفة ما عليك توقعه سيساعدك في تجاوز العقبات بشكل أسرع. كن فضوليًّا ومحبًّا للاستطلاع، واطرح اﻷسئلة، وركّز على تحسين قدراتك وتطويرها. كيف تشعر بالرضا حول عملية تعلمك حتى ولو كانت بطيئة من هي الشخصية المفضّلة لديك والتي تمتلك قصّة نجاح سريع؟ بالنسبة إلي، إنّها Selena Soo. Selena خبيرة في بناء العلاقات والتواصل مع الأشخاص المؤثرين، وهذا أمر يجب على كل مستقلّ أو صاحب مشروع تجاري إتقانه، وسنتكلم عن هذا الموضوع ﻻحقًا. ولكن لماذا تعدّ Selena صاحبة قصّة النجاح السريع المفضّلة لدي؟ حقّقت Selena في عملها كمدربة لأصحاب المشاريع التجارية في عامها اﻷول مبلغًا يصل إلى 157 ألف دولار أمريكي بعد أن بدأت من الصفر. وقد تضمّن موقعها اﻹلكتروني منذ اليوم اﻷول لإطلاقه على شهادات تزكية من محررين في مجلات مثل O، و Oprah Magazine، و Forbes. وقد تلقت Selena العديد من اﻷسئلة، ومن ضمنها: "كيف فعلتِ ذلك؟ يبدو اﻷمر وكأنّكِ قد ظهرتِ من العدم، ليتحدّث عنكِ الجميع وبشكل مفاجئ". قد يكون التركيز على نجاح Selena السريع أمرًا سهلًا، ولكنّي أرغب بدلًا من ذلك في التفكير في جميع العوامل التي ساهمت في تحقيقها لهذا النجاح. أعني، جميع الخطط واﻷساليب التي تعلمتها وتمرّنت عليها ونفّذتها. جميع النشاطات المملة التي قامت بها، مثل الكتابة في اﻷيام التي لا تشعر فيها بأنّ لديها رغبة في الكتابة. التفكير في أنّها لم تحصل على 157 ألف دولار أمريكي في حسابها المصرفي بين ليلة وضحاها، بل أنّ ذلك كان ثمرة الجهود التي بذلتها خلال أسابيع، أو أشهر بل وربما سنوات خلت. أرى أنّه يجب علي التفكير بنجاح Selena بهذه الطريقة، ذلك ﻷنّي إن فكّرت فقط في أنّها حققت هذا النجاح بين ليلة وضحاها، فلن أبرح مكاني ولن أتقدّم إلى اﻹمام قيد أنملة. إن خرافة النّجاح ما بين عشية وضحاها تؤدي إلى تحوّل قصة النجاح المفاجئ إلى عامل تثبيط كبير جدًّا، وتنشّط كذلك اﻷفكار غير المنتجة مثل "لن أتمكن من تحقيق ذلك" و "لا أمتلك مقومات النجاح"، ويشعر المرء بأنّ هناك قوة تشدّه إلى اﻷسفل عندما يرى أن مسار التعلم قد أصبح بطيئًا. من وجهة نظري الشخصية، أرى أنّ عدم تعلّم البرمجة ليوم واحد لا يخرجك عن مسار التعلّم، إذ أنّه مجرد يوم واحد، ومن المؤكّد أنّك تحتاج إلى الراحة بين فترة وأخرى. لا بدّ أن Selena قد مرّت في بدايات مشروعها التجاري بأيّام لم تكن تعمل فيها على مشروعها مطلقًا، ولكنّها مع ذلك حقّقت نجاحًا كبيرًا. ولكن لا تسمح لهذه الاستراحة بأن تستمرّ لعدّة أيام متتالية. ﻻ تفقد الزخم الذي تتمتّع به، ففقدان الزخم يجعل العودة إلى العمل أمرًا صعبًا، ولكن لا ضير في أن تأخذ يومًا أو يومين كعطلة، فهذا لن يؤثّر بكل تأكيد على نجاحك المستقبلي في العمل الحرّ. وبخصوص ما إذا كنت تستوعب ما تتعلّمه في البرمجة بالسرعة الكافية أم لا، فيكفيك أن تستوعب والسرعة هنا ليست بذات أهمية. الدرس الخامس: لا تسمح لخرافة النّجاح السّريع بأن تسيطر عليك، واصل الحركة، واستمر في تطوير نفسك، واكسب المزيد من الزخم ولا تفقده على اﻹطلاق. كيف تعرف ما يجب التركيز عليه مع وجود كم هائل من المصادر التعليمية تتوفّر في أيامنا هذه الكثير والكثير من لغات البرمجة ومصادر تعلّمها بشكل ذاتي، وهذه الكثرة تؤدي في بعض اﻷحيان إلى الشعور بالارتباك، وتصبح عملية الاختيار صعبة للغاية. يلخّص Martin S. هذه الفكرة بشكل جميل فيقول: درس عالم النفس الأمريكي Barry Schwartz العلاقة بين الاختيارات والسعادة، وبشكل أدقّ، إلى أي مدى يمكن للاختيارات أن تؤثّر على سعادة اﻹنسان. وقد وجد بأنّ كثرة الاختيارات يدفع الناس إلى التشكيك في قراراتهم حتى قبل اتّخاذها، وقد يصابون نتيجة لذلك بالعجز عن اتخاذ القرارات إضافة إلى التوتر والإجهاد. ما هي اللغة التي ستختارها عندما تبدأ في تعلم البرمجة؟ هل ستختار روبي؟ بايثون؟ جافا سكربت؟ أم جافا؟ يلخّص Sean McCabe اﻹجابة بشكل جميل: اختر لغة ما واستمر في تعلمها، هكذا تختار ما تريد. وعندما تتّخذ قرارك بشأن نقطة البداية، تبقى أمامك مسألة اختيار المصادر التعليمية التي ستستفيد منها في تعلم اللغة؛ لذا أنصحك بزيارة قسم البرمجة على أكاديمية حسوب واختر أي لغة واشرع في تعلّمها. الدرس السادس: إن شعرت بالارتباك لكثرة الخيارات، اختر واحدًا والتزم به، وﻻ يكن اختيارك عشوائيًا بل بعد الاطلاع والبحث البعيدين عن المبالغة. اختر نقطة البداية وانطلق ولا تبق ثابتًا في مكانك. واصل قراءة الجزء الثاني من هنا: دليلك الشامل للتحضير للعمل كمستقل عندما تكون مبرمجًا تعلّم البرمجة بنفسه – الجزء الثاني ترجمة -وبتصرّف- للمقال The Ultimate Guide For Getting Freelance-Ready When You’re A Self-Taught Coder لصاحبته Joyce Akiko. حقوق الصورة البارزة: Designed by Freepik.1 نقطة
-
السلام عليكم ورحمة الله وبركاته قمت بتسجيل مقطع من التلفاز عن طريق الريسفر والفيديو الناتج من التسجيل كان بصيغة ts كما ان حجمه حوالي ال 500 ميغا لمقطع مدته حوالي 25 دقيقة) أرغب بتحويله إلى صيغة أخرى ذات حجم اقل مع المحافظة على جودة الفيديو ما هي أفضل صيغة تحقق لي هذه المطالب؟1 نقطة
-
على الرغم من انني استخدم خدمة feedly الا ان هذه الطريقة لم تخطر لي .. شكرا لك1 نقطة
-
أجل أخي الكريم مركز البرمجيات لن يجد ولا تطبيق لأن الإصدارة مُنتهية الدعم، يعني لا يوجد لها مستودعات أو برامج، للأسف لا يوجد خيار سوى إعادة تثبيت الإصدار الحديث.1 نقطة
-
إذا قام شخص بإرسال إيميل لي ولعدّة أشخاص آخرين فكيف أقوم بمعرفة إيميلات هؤلاء الأشخاص الذين تلقوا نفس الرسالة؟1 نقطة
-
أهلًا صديقي لو كانت الرسالة مُرسلة عبر الجيميل، سيتمكن جميع الأشخاص الذين أُدرجت عناوينهم في حقول "إلى" أو "نسخة إلى" من رؤية كل من أرسلت إليه هذه الرسالة بخلافه. إذا قام هذا الشخص بأخذ الحيطة، وأضف الأشخاص إلى حقل "نسخة مخفية الوجهة" لكي لا يستطيع أحد رؤية من تلقى هذه الرسالة غيرهم.1 نقطة
-
انت مذهل يارجل اشكرك من الاعماق افدتني كثيراً و الطريقة فعاله شكرا ,, الله يسعدك1 نقطة
-
صحيح اخي لذلك طلبت منك رابط المدونة .. اذن الان كل ماعليك هو اضافة الكود التالي وستعمل بطريقة تلقائية <style> article .post-body img:nth-child(1) { display: none; } </style>1 نقطة
-
أخي المشكل لا يكمن في عدد الساعات التي تقضيها أمام الحاسوب بل في ما تستغل ذلك العدد من الساعات وأنصحك أخي بتقليل هذه المدة لكي لا تتجاوز الساعتين يوميا (كحد أقصى). وباقي الوقت استغله في أمور أهم فالحياة ليست كلها مجرد حاسوب واتصال وإنترنت. 1. في البداية قم باختيار المجال الذي تريد اتباعه (في حالتي انا مثلا اخترت برمجة الويب) وركز على هذا المجال فقط يعني لا تتعلم اكثر من لغة برمجة في نفس الوقت بل حتى لا تتابع اكثر من كورس واحد في نفس الوقت فمازال يوجد متسع كبير من الوقت ... ومن ثم أبحث عن هذه اللغة وأبدأ بدراستها اما بالعربية او الانجليزية (أفضلها لك نظرا لكثرة المحتوى الانجليزي) اما اذا كنت ستعتمد على العربية فأنصحك بان تكون أكاديمية حسوب مصدرك الاول 2. بالنسبة لي هذه تجربتي في تعلم اللغة الانجليزية : في البداية كنت اتعلم في المدرسة (المعهد ... ) ومن ثم أصبحت ابحث على الانترنات بنفسي وفي كل مرة يتطور فهمي للغة وبالطبع في حال لم اعرف كلمة أبحث عنها في جوجل وهكذا ستزيد خبرتك في كل مرة 3. بعض النصائح 'البرمجة والحواسيب ليست كل شئ في حياتك' ، 'مازال امامك الكثير من الوقت' ، 'ركز على مجال واحد لاغير وتخصص أكثر في المجال الذي تختاره لتكون محترفا فيه' إضافات أنصحك باستخدامها : web timer تحدد لك المدة التي قضيتها على الانترنات وفيما قضيتها Take a Break إضافة تنبهك لاخذ راحة في كل مدة زمنية معينة لكي تحمي جسدك Grammarly اضافة ستساعدك كثيرا في الكتابة بالانجليزية1 نقطة
-
أخي أنا قد قدمت موضوع كامل حول تعلم لغات البرمجة تستطيع إلقاء نظرة عليه يجب أن تحدد هدفك من تعلم لغات البرمجة ،لأن لغات البرمجة تختلف في الأغراض التي أنشئت من أجلها وكل لغة لها ميدان معين تكون أقوى فيه من البقية وأنسب وأسهل بالطبع هناك لغات عامة يستطيع المحترف فيها أن يؤدي أي مهمة معينة أو مخصصة ولكن أيضا كل لغة لها خصوصيتها في مجالها وتوفر على المبرمج الكثير من الجهد في مجال عملها او الميدان الذي اشتهرت فيه . مثلا إذا كنت تريد تعلم البرمجة لكي تنشى مواقع وتطبيقات إنترنت يجب عليك أن تتعلم لغة ال html .والسي اس اس Css أولا وربما الجافاسكربت فيما بعد لتضيف التفاعلية الى اكوادك ومواقعك وربما لاحقا لغة متقدمة للبرمجة علي الويب يجب عليك تعملها قد تكون البي اتش بي او الاي اس بي اما اذا كنت تريد دخول عالم البرمجة من اجل انشاء تطبيقات تعمل على الهواتف الذكية ومنصات الاندرويد واجهزه الايفون فيجب عليك تعلم لغة اوبجكتف سي Objective-C لبرمجة تطبيقات أجهزة ابل والجافا لتطبيقات الاندرويد اذا كنت تريد تعلم البرمجة لإنشاء تطبيقات سطح المكتب والأنظمة الإدارية وإنشاء أنظمة معلومات يجب عليك أن تتعلم لغة متقدمة مخصصة للتعامل مع قواعد البيانات كالسي شارب او الجافا أو الدلفي وبجانبها يجب ان تتقن تقنية قواعد البيانات ولغة الاسكيو ال للتعامل مع قواعد البيانات وتطبيق ادارة قواعد البيانات كميكروسوفت اسكيوال سرفر او الاكسس كبداية وكيف تتعامل معه من داخل الكود وتتصل بقواعد البيانات وتقوم بعمليات البحث والاسترجاع والحذف والاظافة والتعديل اما اذا كان غرضك ان تقتحم عالم البرمجة بشكل عام وتكون مطور محترف فالبداية قد تكون من لغات أصيلة تعلمك مفاهيم وأسس البرمجة بشكل عام ومنها تتعلم كيفيه عمل البرنامج وما طرق خزن البيانات فيه والتعامل مع الذاكرة وإدارتها وأكثر لغة مناسبة لهذا الشي هي أم اللغات كما اسميها وهي السي فلغة السي : تعلمك كيف تكتب كود منظم وفعال لغة الجافا : اكثر لغات البرمجة عملية وانتاجا لغة البايثون : جديدة سهلة التعلم وممتعة لغة الجافاسكربت : لإنشاء تطبيقات تفاعلية علي الويب في الأخير أعرف أني طولت في الموضوع لكن المهم الفائدة بالنهاية سوا كان غرضك من تعلم البرمجة هو للهواية او للوظيفة او للاحتراف فانه من المفيد ان افصل لك لغات البرمجة من حيث مجالات استخدمها واجمعها في قوالب مشتركة حسب الميادين التي تخدم فيها وتناسبها اكثر لبرمجة تطبيقات الويب والتعامل مع قواعد البيانات او ما يسمي الباك ايند هناك لغات خاصه بهذا المجال وهي البايثون , الروبي , الدوت نت , البي اتش بي php , asp.net , Python , Ruby لبرمجة واجهات تطبيقات الويب وإنشاء الصفحات وتنسيقها وغيره من المهام المتعلقة بتصميم الواجهات الخاصة بالمواقع هنا لديك ال اتش تي ام ال والسي اس اس وكذلك الجافا سكربت html , css , javascript لبرمجة تطبيقات الموبايل والهواتف الذكية لديك ال اوبجت سي والجافا Objective-C Java (for Android) لبرمجة الالعاب وتطبيقات الفيديو والانميشن لديك السي والسي بلس والجافا C/C++, OpenGL, java برمجة تطبيقات قواعد البيانات ونظم المعلومات لديك في هذا المجال لغات مثل السي شارب والفيجول بيزك دوت نت الدلفي والجافا ايضا . VB , C# , Java في الأخير نأتي للإجابة على سؤالك: 1- مادام أنك استطعت أن تجيد css3 اذا قم بإكمال دراسة html5 لأنه يوجد تناسق بين هذين اللغتين 2- من ناحية التصميم الاحترافي تستطيع أن تكمل أيضا دراسة javascript لان بها اكواد رائعة 3- يجب وعليك أن تعلم php لأنها لغة تطوير المواقع ويتم برمجة الموقع كاملا بناءا عليها 4- ثم تنتقل إلى دراسة إنشاء قاعدة بيانات sql 5- استعمل برنامج notepad ++ للتطبيق فهو رائع جدا ويصحح لك الأخطاء البرمجية 6- برنامج dreamwiver هو البرنامج الأكثر من رائع ويساعدك بكثرة لبناء موقع متكامل في النهاية لا يوجد شيء صعب تحل بالصبر فقط1 نقطة
-
<connectionStrings> <add name="DefaultConnection" connectionString="Data Source=wsrv\sqlexpress;Initial Catalog=aspnet-dvk_iktatas;User ID=ttr_owner;Password:PASSWORD" providerName="System.Data.SqlClient"/> <add name="CSdvk_iktatas" connectionString="Data Source=wsrv\sqlexpress;Initial Catalog=ttr;User ID=ttr_owner;Password:PASSWORD" providerName="System.Data.SqlClient" /> </connectionStrings> Is that an exact copy from your web.config? In a connection string the key/values are assigned by the equal sign =, like for "User ID=ttr_owner", but for the "Password" parameter you used the colon : instead.1 نقطة