أهم أقسام المدونة

الصفحات

الأربعاء، 9 مارس 2022

فيجوال بيزيك 17 وسي شارب 10

 

فيجوال بيزيك 17 وسي شارب 10

طريقك المختصر للانتقال من إحدى اللغتين إلى الأخرى

 


لتفاصل أكثر عن مجموعة كتب سي شارب وفيجوال بيزيك دوت نت اضغط هنا 

عدد الصفحات: 424

سعر الكتاب: 150 جنيها مصريا أو 10 دولار من خارج مصر.

الحصول على الكتاب: متاح كنسخة الكترونية فقط 

مقدمة الكتاب

لمن هذا الكتاب:

هذا الكتاب موجّه إلى أربعة أنواع مختلفة من المبرمجين:

1. مبرمج سي شارب الذي يريد تعلم فيجوال بيسك، لأن كثيرا من الشركات لديها إرث ضخم من المشاريع المكتوبة بفيجوال بيزيك أو تستخدم الكثير من أكواد VB عبر مكتبات dll في مشاريع سي شارب الجديدة، ومن العبث إنفاق ملايين الدولارات لتحويل كل هذا الكود إلى C# دون أي اختلاف في أداء البرامج أو مكتبات الكود، لهذا تحتاج هذه الشركات دائما إلى مبرمجين يجيدون فيجوال بيزيك لصيانة المشاريع ومكتبات الكود القديمة وتطويرها إذا دعت الحاجة.

2. مبرمج فيجوال بيزيك الذي يريد الانتقال إلى سي شارب لأنها تقدم دعما أكبر لتطبيقات الويب والمحمول، والطلب عليها أعلى في سوق العمل خارج نطاق تطبيقات سطح المكتب.

3. مبرمج فيجوال بيزيك الذي يتمنى أن يواصل العمل بلغته المفضلة، لكنه يشعر أن C# صارت أقوى وتفعل أشياء لا تستطيع VB فعلها.. المفاجأة أن هذا الكتاب سيثبت له عمليا أن VB قادرة على فعل كل ما تفعله سي شارب (باستثناء ref return و stackalloc)!.. لكني رغم هذا أنصحه بتعلم C#، فقد صارت معظم الكتب والشروح والفيديوهات والأمثلة والمشاريع مفتوحة المصدر مكتوبة بها، لهذا صارت C# بالنسبة لمبرمجي VB أشبه باللغة الإنجليزية بالنسبة للشعوب غير الناطقة بها، لا غنى عن تعلمها للتواصل مع العالم!.. لهذا يجب على كل مبرمجي VB تعلم C# حتى لو لم يكتبوا بها المشاريع، لأن المصادر المتاحة بها ستسهل عليهم عملهم في فيجوال بيزيك.

4. مبرمج يفهم البرمجة بأي لغة أخرى مثل C++ و Java وVB6 و Python وغيرها.. هذا الكتاب سيجعله يتعلم قواعد اللغتين معا بسرعة واختصار!

الحصول على الكتاب: متاح كنسخة الكترونية فقط

 

لماذا لا أستخدم برامج الترجمة بين اللغتين وكفى؟

توجد الكثير من المواقع والبرامج التي تترجم الكود من سي شارب إلى فيجوال بيزيك أو العكس، منها على سبيل المثال https://converter.telerik.com.

ولعلك تسأل نفسك: لماذا أحتاج لهذا الكتاب وهذه المواقع موجودة؟

أولا: لا يوجد برنامج يستطيع تحويل الكود كاملا بين اللغتين بدون أخطاء في الصياغة Syntax لأن بعض اختلافات الصياغة تسبب مشاكل في الكود الناتج وتجعله غير صالح في اللغة الأخرى، مثل حدوث تضارب في أسماء المتغيرات والخصائص في فيجوال بيزيك بسبب تجاهل حالة الأحرف Case-Insensitive.

ثانيا: أخطاء الصياغة ليست المشكلة الحقيقية، فالأسوأ هو أن بعض الأكواد تترجم بشكل يبدو صحيحا، لكن عند تشغيلها تعطيك نتائج مختلفة، لأن طريقة فهم الكود تختلف بين اللغتين!.. أبسط مثال على هذا، اختلاف طريقة معالجة اللغتين لتجاوز سعة المتغير الرقمي Overflow، فلغة C# لا تعطي خطأ وإنما تهمل الخانات الثنائية Bits الزائدة وهذا يؤدي إلى تدوير قيمة العدد، بينما تطلق VB خطأ، لهذا لا تتعجب لو وجدت نفس الكود يعمل في C# بينما يطلق خطأ في VB!.. هذا الكتاب سيلفت انتباهك إلى كثير من مواطن اختلاف الدلالة Semantic بين اللغتين.

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

 

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

الحصول على الكتاب: متاح كنسخة الكترونية فقط

 

هل هذا مجرد كتاب يقارن بين اللغتين؟

هذا كتاب عزيز عليّ لأنه أول كتاب طبعته في حياتي وصدر في معرض الكتاب في يناير عام 2008، وكانت طبعته الأولى صغيرة وتركز على فروق الصياغة بين اللغتين.

ثم طورت الكتاب في الطبعة الثانية عام 2010، ثم الثالثة عام 2017، وأضفت الكثير من الملاحظات من خبراتي العملية، وما استجد من فروق بين اللغتين عبر الإصدارات الجديدة.

وتأتي هذه الطبعة في مارس 2022 بعد 14 عاما من الطبعة الأولى، في ضِعف الحجم، لتتناول أدق الفروق بين اللغتين، وفد استفدت في هذا من احتكاكي ببعض مبرمجي ميكروسوفت من فريق VB وC# وبعض الأعضاء النشطين في مجتمعي اللغتين على GitHub، وهناك بعض الفروق الدقيقة جدا بين اللغتين أضفتها في هذه النسخة، لم أكن لأنتبه لها لولا أن لفت النظر إليها أنتوني جرين في منشور على مدونته الشخصية، وهو أحد مديري فريق VB السابقين في ميكروسوفت.

الحصول على الكتاب: متاح كنسخة الكترونية فقط

 

من أجل فيجوال بيزيك:

لا أذيع سرا حينما أقول إن هذه النسخة من الكتاب موجهة في الأساس لدعم مبرمج فيجوال بيزيك وتعزيز ثقته بلغته المفضلة، فقد أعلنتُ منذ ثلاث سنوات أنني سأعمل كل ما في وسعي لإنقاذ هذه اللغة الرائعة الحبيبة إلى قلبي، ومن أجل هذا أنشأت عدة مشاريع على حسابي في GitHub لدعم VB، ومنها لغة البرمجة التي أسميتها Small Visual Basic التي طورتها لجعل لغة MS Small Basic أسهل وأكثر جاذبية للأطفال والمبتدئين (وشرحتها في سلسلة دروس مرئية)، لكن الأهم من هذا أن لغة سمول فيجوال بيزيك مكتوبة بـ VB.NET، لتدريب مبرمجي فيجوال بيزيك على التعامل مع مفاهيم مترجمات الكود Compilers بُغية أن نصل يوما إلى محاولة تطوير لغة VB.NET بأنفسنا، حيث إن كودها مفتوح المصدر وهو جزء من مشروع Roslyn المنشور على GitHub!

غير هذا، هناك عدة مشروعات هامة أنشأتها لجعل VB تقفز الحواجز التي وضعتها ميكروسوفت بينها وبين C#، وعلى رأسها:

 * مشروع Vazor الذي يتيح لك إنشاء مشاريع ASP.NET Core بفيجوال بيزيك.

 * ومشروع RecGen لتوليد مسجلات البيانات Records في فيجوال بيزيك!

وأنا أضع بين يديك في هذا الكتاب جهد ثلاث سنوات غُصْتُ فيها في التفاصيل الدقيقة لفيجوال بيزيك وسي شارب ليس كمطور تطبيقات فحسب بل أيضا كمطور لغات برمجة يسعى لسبر أغوار كل من C# و VB لتضييق الفجوة بينهما!

لهذا جهز نفسك للمفاجآت المذهلة التي ستستقبلك في هذا الكتاب، فستكتشف وأنت تقرأه أشياء كثيرة تستطيع فعلها بفيجوال بيزيك كنت تظن أنها مستحيلة، مثل:

* إنشاء مشاريع ASP .NET Core وتصميم صفحات Razor بفيجوال بيزيك.

* إنشاء مشاريع Blazor بفيجوال بيزيك.

* إنشاء سجلات مرجعية ref Structures في فيجوال بيزيك، وكسر الحجر المفروض على فيجوال بيزيك الذي يمنعها من استخدام السجلات المرجعية الهامة الموجودة في منصة دوت نت مثل Span(Of T).

* استخدام معالجات النص التعويضيInterpolated String Handlers .

* إنشاء فئة بيانات Record Class وسجل بيانات Record Structure وسجل للقراءة فقط ReadOnly Structure في فيجوال بيزيك، وبتحكم أكبر مما في سي شارب!

* تعريف مكرر غير متزامن Async Iterator واستخدام Async ForEach للمرور عبر كل عناصره.

* استخدام الفهرس Index ونطاق الخانات Range.

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

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

* كيف يستخدم مكتبة دوال فيجوال بيزيك.

* وكيف يستدعي نفس الأكواد التي يستخدمها مبرمج VB عبر الكائن My.

* وكيف يستخدم إطار عمل التطبيق Application Framework لجعل تطبيقات نماذج الويندوز وحيدة النسخة Single Instance وعرض شاشة ترحيب Splash Screen في بداية تشغيلها.

* وكيف يكتب كودا مناظرا لتعبيرات XML Literals الخاصة بفيجوال بيزيك!

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

الحصول على الكتاب: متاح كنسخة الكترونية فقط

 

متطلبات أساسية قبل قراءة الكتاب:

هذا الكتاب يفترض أنّك تجيد إحدى اللغتين وتجهل الأخرى.. لو كان هذا هو الحال فسيكون الكتاب وافيا كافيا بالنسبة لك بإذن الله، لكن لو كنت ما زلت تخطو أولى خطواتك في البرمجة بفيجوال ستديو دوت نت، فليس هذا هو الكتاب الذي تتوقع منه أن يأخذ بيدك.. في هذه الحالة ننصحك بقراءة أحد كتابينا:

1- المدخل العملي السريع إلى فيجوال بيزيك دوت نت.

2- المدخل العملي السريع إلى سي شارب دوت نت.

لتعلم إحدى اللغتين أولا، ثم استخدام هذا الكتاب للانتقال إلى اللغة الأخرى.

أو يمكنك أن تغرق في التفاصيل الكاملة لأي من اللغتين، مع مجموعة كتب "من الصفر إلى الاحتراف" التي تتناول أساسيات اللغة والتفكير البرمجي، ومنصة دوت نت، ونماذج الويندوز، وقواعد البيانات، وأساسيات WPF، في كل من اللغتين.

الحصول على الكتاب: متاح كنسخة الكترونية فقط

 

فهرس الكتاب

 

-1-

بعض فروق الصياغة Syntax Differences

 

كود المستوى الأعلى Top Level Code

13

التعليقات Comments

15

نهاية الأمر

17

حالة الأحرف Case Sensitivity

21

إيقاف تنفيذ البرنامج عند سطر معين

24

 

-2-

تعريف المتغيرات Variable Declaration

 

قواعد تعريف المتغيرات

25

وضع القيم الابتدائية للمتغيرات Variable Initialization

28

استنتاج النوع Type Inference

30

التجاهلات Discards

32

أنواع المتغيرات

34

صياغة التعبيرات الحرفية Literals Syntax

35

تمثيل التاريخ في اللغتين

37

علامة التنصيص الذكية Smart Quote

39

الاختصارات المحدّدة للأنواع Data Type Identifiers

40

تعريف كائن جديد New Object

41

العدم null / Nothing

42

الأنواع المنعدمة Nullable Types

42

مقارنة الأنواع المنعدمة

44

زيادة وإنقاص قيمة متغير

50

تضييق الكسور

54

العمليات الحسابية

56

تشبيك النصوص

57

تجاوز سعة المتغيرات الرقمية

58

-3-

المصفوفات Arrays

 

تعريف المصفوفة

60

تغيير عدد خانات المصفوفة

63

المصفوفات متعددة الأبعاد Multidimensional Arrays

65

وضع القيم الابتدائية للمجموعات Collections

67

 

-4-

الفهرس Index ونطاق الخانات Range

 

صيغة الفهرس وصيغة النطاق

69

استخدام الفهرس مع المصفوفة

71

استخدام النطاق مع المصفوفة

72

محاكاة الفهرس والنطاق في فيجوال بيزيك

75

استخدام الفهرس والنطاق مع النص

77

استخدام الفهرس Index في تعريف مفهرس Indexer

78

استخدام النطاق Range في تعريف مفهرس Indexer

79

 


-5-

الثوابت Constants ومسمَّيات الأرقام Enumerations

 

تعريف الثوابت

80

ثوابت أحرف التحكم Control Characters

81

مسمَّيات الأرقام (المرقمات) Enumerations

86

 

-6-

جمل الشرط

 

جملة الشرط If Statement

89

مقارنة النصوص

91

التعبير الشرطي Conditional Expression

93

جملة التحويل / اختيار الحالة switch \ Select Statement

95

تعبير التحويل switch expression

101

أمر الانتقال الفوري goto

104

 

-7-

حلقات التكرار Loops

 

حلقة التكرار "من إلى" For Loop

107

حلقة التكرار "لكل عنصر" For Each

111

حلقة التكرار "بينما" While

112

حلقة التكرار Do

112

أوامر الخروج وإنهاء التنفيذ

115

 

-8-

الدوال Functions

 

تعريف الدوال Functions

118

المتغير الموضعي الثابت Static Local Variable

120

معاملات الدوال Function Parameters

122

إرسال القيم Arguments إلى معاملات الدوال

124

المعاملات الاختيارية Optional Parameters

127

قوائم المعاملات Parameter Lists

129

الدوال التي تعيد قيما مرجعية ref Returns

129

الدوال عامة النوع Generic Type Functions

134

الدوال الفورية Lambda Expressions

137

الدوال الموضعية Local Functions

141

دوال API

144

 


-9-

المندوب Delegate والأحداث Events

 

المندوب Delegate

146

الأحداث Events

150

معالج الحدث Event Handler

152

الأحداث المخصصة Custom Events

156

 

-10-

الخصائص Properties والمفهرسات Indexers

 

الخصائص Properties

159

الخاصية الافتراضية Default Property أو المفهرس Indexer

165

الخصائص التي يمكن إعدادها فقط Init-Only Properties

167

 

-11-

الفئات Classes والسجلات Structures

 

الفئات Classes

169

منشئ الفئة Constructor

169

السجلات Structures

170

السجلات والفئات عامة النوع Generic Type

173

وضع القيود Constraints على الأنواع العامة

174

الفئات والسجلات الجزئية Partial

176

وضع القيم الابتدائية للكائنات

177

وضع القيم الابتدائية لحقول الفئة

179

قوالب الكود Modules

180

الوسائل الإضافية Extension Methods

182

معدِّلات الوصول Access Modifiers

184

النوع المجهول Anonymous Type

185

صف القيم ValueTuple

186

مفكّك الفئة Class Destructor

189

نطاق الأسماء Namespace

190

نطاق الاسم الرئيسي ونطاق الاسم الافتراضي

195

الربط المتأخر Late Binding

198

معالجة الأخطاء Handling Exceptions

201

 

-12-

مقارنة الأنواع والتحويل بينها

 

التحويل بين الأنواع

204

دوال التحويل في فيجوال بيزيك

207

تحويل النصوص إلى أعداد

208

التحويل بين الحروف والنصوص

209

تحويل ترميز ASCII إلى حرف والعكس

211

تحويل الأنواع المفرّغة من الكائنات Unboxed Types

213

معرفة نوع الكائن

214

فحص تساوي كائنين

215

فحص إن كان الكائن منعدما Null Object

216

استبدال المعامل Operator Overriding

218

 

-13-

البرمجة الموجهة بالكائنات

Object-Oriented Programming (OOP)

 

الوراثة Inheritance

221

تعدد تعريفات الوسائل Method Overloading

222

حدث إنشاء الفئة Class Constructor

224

إخفاء وسائل الفئة الأم

225

استبدال الوسائل Overriding Methods

228

التحكم في استدعاء الدوال المستبدلة Overridden Functions

230

التحكم في الفئات الموروثة Inherited Classes

231

استخدام السمات Attributes

233

السمة عامة النوع Generic Attribute

237

 

-14-

الواجهة Interface

 

تعريف الواجهة

238

تمثيل الواجهات Implementing Interfaces

239

التمثيل الافتراضي للواجهة Default Interface Implementation

244

تداخل تأثير التمثيل Implementation والوراثة Inheritance

246

المكررات Iterators

151

مقطع الاستخدام Using Statement

253

 

-15-

مطابقة الأنماط Pattern Matching

 

مطابقة أنماط الأنواع Pattern Matching

255

مطابقة أنماط الخصائص Property Pattern Matching

263

أنماط صف القيم والمفكك Tuple and Decostructor Patterns

267

مطابقة الأنماط المتداخلة

272

 

-16-

الاستعلام المتكامل مع اللغة LinQ

 

الفقرة "من" From Clause

275

فقرة التحديد Select Clause

278

الفقرة Let

280

فقرة التجاوزSkip Clause

280

الفقرة "تجاوز بينما" Skip While Clause

281

الفقرة "خذ" Take Clause

281

الفقرة "خذ بينما" Take While Clause

282

فقرة الترتيب

283

الفقرة "مستقل" Distinct Clause

284

ضم البيانات Joining Data

284

فقرة التجميع Group By Clause

287

فقرة التجميعات Aggregate Clause

290

 

-17-

ميزات خاصة بفيجـوال بيزيك دوت نت

 

مكتبة دوال فيجوال بيزيك

293

الكائن My

296

إطار عمل التطبيق Application Framework

298

 

-18-

تعبيرات XML Literals

 

كتابة كود XML في فيجوال بيزيك وما يناظره في سي شارب

302

إنشاء مشاريع ASP .NET Core في فيجوال بيزيك

309

المتجر الالكتروني مشروع ويب كامل بفيجوال بيزيك

321

استخدام تعبيرات XML مع Blazor

322

إنشاء تطبيقات Xamarin في فيجوال بيزيك

326

تطبيقات لا تنتهي لتعبيرات XML

327

 

-19-

ميزات خاصة بسي شارب

 

الأنواع المرجعية المنعدمة Nullable Reference Types

328

السجلات المرجعية ref structs

331

حجز مساحة في الرصة stackalloc

339

 

-20-

المهام غير المتزامنة Async Tasks

 

عدم التزامن والانتظار Async Await

340

الدالة الرئيسية غير المتزامنة Async Main

341

القابلية للإفناء المتزامن Asynchronous Disposable

342

الفيض غير المتزامن Async Stream

343

 


-21-

مسجلات البيانات Records

 

مولد مسجلات البيانات RecGen في فيجوال بيزيك

353

فئة البيانات Record Class

357

الصيغة الموضعية Positional Syntax

358

إضافة سمات Attributes للصيغة الموضعية

364

كتابة تعليقات XML للصيغة الموضعية

366

صيغة التعريف المختلطة

366

وراثة فئة البيانات Record Class Inheritance

371

تمثيل الواجهات في الصيغة الموضعية

375

فئة البيانات عامة النوع Generic Record Class

382

سجلات للقراءة فقط ReadOnly Structures

383

سجل البيانات Record Structure

386

دوال للقراءة فقط Read Only Functions

389

 

-22-

معالجات النص التعويضي

Interpolated String Handlers

 

النصوص التعويضية Interpolated Strings

394

التعويض عن الثوابت النصية

395

معالج النص التعويضي Interpolated String Handler

396

إنشاء معالج خاص للنص التعويضي في فيجوال بيزيك

401

 

الفهرس

408

عن الكاتب

422

 

الحصول على الكتاب: متاح كنسخة الكترونية فقط

 

 

هناك 4 تعليقات:

  1. كنت اريد شراء بعض الكتب، لكن ياريت يكون هناك حل وسط...

    ردحذف
  2. السلام عليكم يا باشمهندس انا اشتريت منك مجموعة لتعلم فيجوال دوت نت و سى شارب تقريبا كانت ايام حظر الكورونا - و إلى الان لم انتهى من الكتاب الاول و ذلك لظروف الحياة و العمل - عايز اسأل حضرتك هل لغة الفيجوال دوت نت انتهى عصرها و استبدلت ب سى شارب - و لا هيكون لها مستقبل و تحديثات

    ردحذف
    الردود
    1. وعليكم السلام
      ميكروسوفت أوقفت تطوير لغة فيجوال بيزيك على مستوى صياغة الكود Syntax لكن اللغة مدعومة في أدوات فيجوال ستديو وتستخدم الجديد في منصة دوت نت.
      المشكلة أن اللغة غير مدعومة في التقنيات الحديثة في مجال الويب والموبايل، وإن كنت أثبت أنا وآخرون أن هناك طرق لاستخدام هذه التقنيات في فيجوال بيزيك.. فمثلا في مجال الويب:
      https://github.com/VBAndCs/Vazor
      كما أن اللغة قادرة على إنشاء أي تقنيات حديثة.. أنا أستخدمها حاليا في تطوير لغة البرمجية Small Visual Basic وأطور محرر الكود حاليا ليمنح إمكانيات شبيهة بفيجوال ستديو.. كل هذا بلغة فيجوال بيزيك:
      https://github.com/VBAndCs/sVB-Small-Visual-Basic
      فالحقيقة أن فيجوال بيزيك (وحتى سي شارب) لا تحتاج إلى اي كود جديد، فكل الصيغ الجديدة التي تضيفها ميكروسوفت إلى سي شارب تترجم إلى الصيغ القديمة المألوفة في سي شارب.. هي مجرد تسهيلات وأحيانا تجعل الكود أعقد في فهمه، وكثير منها أتجنب استخدامه.
      فالخلاصة: تعلم من الكتب التي معك، فالفكر البرمجي واحد، ومكتبة فئات دوت نت واحدة، ومن السهل أن تنتقل إلى سي شارب بعد هذا بسرعة وبساطة فالفرق سيكون في تعلم طريقة صياغة الكود فقط.

      حذف
  3. حسين العبدلي22 مايو 2023 في 1:02 م

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

    Hussain_hsa@hotmail.com

    ردحذف

ملحوظة: يمكن لأعضاء المدونة فقط إرسال تعليق.