2022年5月4日水曜日

في المستقبل ، يجب أن نطور لغة برمجة هجينة تسمى Python ، والتي تبدو مثل Python ، تحتوي على لغة V عالية السرعة ، وهي لغة PV بمواصفات لا تسبب مشاكل أمنية مثل الثغرات الأمنية. لغة V + Wasm. أعتقد أن لغة V + إطار العمل وما إلى ذلك ممتازة. ومع ذلك ، في الوقت الحالي ، أعتقد أنه من الجيد تطوير مواقع الويب والشبكات الداخلية وأدوات الويب وما إلى ذلك باستخدام GraphQL و AI (التعلم الآلي) وما إلى ذلك في لغة Go ، والتي تشبه لغة V. تعد لغة Go & V مناسبة لسرعة تطوير النظام دون أي مشكلة ، كما أنها مناسبة لتطوير الفريق بما في ذلك تحليل الكود المصدري الذي يكتبه الآخرون. بالمناسبة ، لدى Ruby on Rails سرعة تطوير سريعة ، لكن من الصعب جدًا تحليل الكود المصدري للآخرين ، وهو غير مناسب لتطوير الفريق أو صيانته من قبل الآخرين. كنظام شركة ، يمكن القول أن النظام في Ruby هو سبب إفلاس الشركة بسبب الديون والديون الكبيرة. تعمل لغة Go و V بشكل أسرع من PHP و Ruby ، ​​لذا فهي مناسبة لتطوير مواقع ويب واسعة النطاق تتمتع بقدر كبير من الوصول من جميع أنحاء العالم. الصدأ صعب التعلم وعديم الفائدة> تحتوي جميع الكتب التمهيدية على حوالي 600 صفحة! اعتبارًا من 2022/05/04.

JAPANESE
https://neovisionconsulting.blogspot.com/2022/05/vwasmvvgographqlaiwebwebtool20220504.html
ー-----------
ENGLISH
https://neovisionconsulting.blogspot.com/2022/05/in-future-v-wasm-v-frameworks-etc-would.html

ー-----------------
ARABIC 

لغة WASM V.





لغة GraphQL Go


الذكاء الاصطناعي (التعلم الآلي) Go Language


Go language - سهلة الكتابة - سهلة التعلم حتى للمبتدئين. سهلة الفهم ، القواعد النحوية بسيطة وسهلة الفهم
https://www.google.com/search؟q=Go٪E8٪A8٪80٪E8٪AA٪9E٪E3٪80٪80٪E6٪9B٪B8٪E3٪81٪8D٪E3٪82٪ 84٪ E3٪ 81٪ 99٪ E3٪ 81٪ 84٪ E3٪ 80٪ 80٪ E5٪ 88٪ 9D٪ E5٪ BF٪ 83٪ E8٪ 80٪ 85٪ E3٪ 81٪ A7٪ E3٪ 82٪ 82٪ E3٪ 80٪ 80٪ E5٪ AD٪ A6٪ E3٪ 81٪ B3٪ E3٪ 82٪ 84٪ E3٪ 81٪ 99٪ E3٪ 81٪ 84٪ E3٪ 80٪ 80٪ E7٪ 90٪ 86٪ E8٪ A7٪ A3٪ E3٪ 81٪ 97٪ E3٪ 82٪ 84٪ E3٪ 81٪ 99٪ E3٪ 81٪ 84٪ E3٪ 80٪ 80٪ E6٪ 96٪ 87٪ E6٪ B3٪ 95٪ E3٪ 81٪ 8C٪ E3٪ 82٪ B7٪ E3٪ 83٪ B3٪ E3٪ 83٪ 97٪ E3٪ 83٪ AB٪ E3٪ 80٪ 80٪ E5٪ 88٪ 86٪ E3٪ 81٪ 8B٪ E3٪ 82٪ 8A٪ إي 3٪ 82٪ 84٪oq = Go٪ E8٪ A8٪ 80٪ E8٪ AA٪ 9E٪ E3٪ 80٪ 80٪ E6٪ 9B٪ B8٪ E3٪ 81٪ 8D٪ E3٪ 82٪ 84٪ E3٪ 81٪ 99٪ E3٪ 81٪ 84٪ E3٪ 80٪ 80٪ E5٪ 88٪ 9D٪ E5٪ BF٪ 83٪ E8٪ 80٪ 85٪ E3٪ 81٪ A7٪ E3٪ 82٪ 82٪ E3٪ 80٪ 80٪ E5٪ AD٪ A6٪ E3٪ 81٪ B3٪ E3٪ 82٪ 84٪ E3٪ 81٪ 99٪ E3٪ 81٪ 84٪ E3٪ 80٪ 80٪ E7٪ 90٪ 86٪ E8٪ A7٪ A3٪ E3٪ 81٪ 97٪ E3٪ 82٪ 84٪ E3٪ 81٪ 99٪ E3٪ 81٪ 84٪ E3٪ 80٪ 80٪ E6٪ 96٪ 87٪ E6٪ B3٪ 95٪ E3٪ 81٪ 8C٪ E3٪ 82٪ B7٪ E3٪ 83٪ B3٪ E3٪ 83٪ 97٪ E3٪ 83٪ AB٪ E3٪ 80٪ 80٪ E5٪ 88٪ 86٪ E3٪ 81٪ 8B٪ E3٪ 82٪ 8A٪ E3٪ 82٪ 84٪ E3٪ 81٪ 99٪ E3٪ 81٪ 84 & gs_lcp = Cgdnd3Mtd2l6EAM6BwgAEEcQsANKBAhBGABKBAhGGABQzwRYjhJgvRNoAXABeAGAAZ8BiAHGB5IBAzkuMpgBAKABAcgBCsABAQ & sclient =


لا تحتوي لغة Go على فئة ، ولكن لها وظيفة بديلة.

نقطة:

الجمع بين عدة متغيرات في مجموعة واحدة (متغيرات الأعضاء)
تحديد الوظائف التي يمكن تشغيلها من خلال ربطها ببعضها البعض (وظيفة العضو)

--------

مذكرة (فئة / وراثة) كنت مدمنًا عليها في لغة Go

          

لقد بدأت جولانج.

كما شعرت في البداية ، تم تصميم Golang لإبقاء القواعد بسيطة قدر الإمكان والرمز بسيط قدر الإمكان.

ومن أجل ذلك ، لدى Golang بعض القواعد اللغوية الصعبة.

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

هنا ، عندما بدأت شركة Golang ، أود تقديم مذكرة عن الإدمان الشخصي وسوء الفهم حسب الموضوع.

هذه المرة ، إنها مذكرة حول الطبقات والميراث في جولانج.

لا توجد فصول في Golang

يقال أن جولانج ليس لديها فصول دراسية ، لكن هذا صحيح.

ومع ذلك ، هناك شيء قريب من الفصل.

في المقام الأول ، الأشياء الرئيسية التي أريد القيام بها في الفصل هي كما يلي.

  • الجمع بين عدة متغيرات في مجموعة واحدة (متغيرات الأعضاء)
  • تحديد الوظائف التي يمكن تشغيلها من خلال ربطها ببعضها البعض (وظيفة العضو)

في Golang ، تُستخدم "البنية" لدمج متغيرات متعددة في مجموعة واحدة ، ويمكن للوظيفة التي تشغل المجموعة تحديد وظيفة خاصة مرتبطة بالبنية. لقد أدركت ذلك.

على سبيل المثال ، يمكن إنشاء فئة تشبه فئة مع متغيري الأعضاء "x" و "y" ووظيفة العضو "test ()" للحصول على القيمة الإجمالية لها على النحو التالي.

الحزمة الرئيسية

استيراد  "fmt"

// تجميع المتغيرات في هيكل 
نوع myStruct Structure {
    x int 
    y int
}

// الوظيفة التي تتلاعب في البنية 
func (p * myStruct) test () int {
     return px + py التي يطلق عليها "." عامل تشغيل الهيكل
}

func main () {
     var a myStruct
    الفأس = 1 
    ay = 2 
    fmt.Println (a.test ())   // 3
}

الوظيفة "test ()" غير مألوفة بعض الشيء ، لكنها .وظيفة عضو يتم استدعاؤها من عامل التشغيل "" في الهيكل.

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

الحزمة الرئيسية

استيراد  "fmt"

اكتب هيكل myStruct {
    x int 
    y int
}

// خذ بنية كوسيطة وقم بتشغيل اختبار 
func للهيكل (p * myStruct) int {
     return px + py
}

func main () {
     var a myStruct
    الفأس = 1 
    ay = 2 
    fmt.Println (اختبار (& أ))   // 3
}

ومع ذلك ، حتى في البنية ، هناك طريقة خاصة لكتابة دالة يمكن استدعاؤها .بواسطة عامل التشغيل "" ، تمامًا كما يمكنك كتابة وظائف العملية هذه باستخدام عامل التشغيل "" مثل فئة..

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

في الواقع ، أنا أتعامل مع دالة عن طريق تمرير بنية (أو مؤشر إلى الهيكل) ، لكنها فئة في Golang تجعل من الممكن الكتابة مثل وظيفة عضو في بنية.

ميراث

كما ذكرنا سابقًا ، لا توجد فئة في Golang ، إنها "وظيفة تشغيل هيكل + هيكل = فئة تشبه".

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

يمكن لـ Golang القيام بهذه الميراث أيضًا.

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

من الصعب فهم ما إذا كنت تكتبه في جمل ، لذلك إذا قمت بكتابته في رمز ، فسيبدو كما يلي.

الحزمة الرئيسية

استيراد  "fmt"

// 
نوع البنية الأصل رئيسي
    x int 
    y int
}

// دالة بنية الأصل 
func (p * parentStruct) testParent () {
    fmt.Println ( "الأصل" ، px، py)
}

// 
نوع البنية الفرعية childStruct structure {
    z int 
    parentStruct   // الهيكل الأصل
}


// func وظيفة البنية الفرعية (p * childStruct) testChild () {
     // متغير الوصول إلى البنية الرئيسية 
    fmt.Println ( "Child" ، p.parentStruct.x، p.parentStruct.y، pz)  
}

func main () {
     var a childStruct
    a.parentStruct.x = 1   // الوصول إلى المتغير الأصل 
    a.parentStruct.y = 2   // الوصول إلى المتغير الأصل 
    az = 3   // الوصول إلى المتغير 
    الفرعي a.parentStruct.testParent () // Parent 1 2 الوصول إلى الوظيفة الأصل 
    a.testChild ()                // الطفل 1 2 3 الوصول إلى وظيفة الطفل
}

ميراث

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

ومع ذلك ، هنا هو المفتاح.

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

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

الحزمة الرئيسية

استيراد  "fmt"

// 
نوع البنية الأصل رئيسي
    x int 
    y int
}

// دالة بنية الأصل 
func (p * parentStruct) testParent () {
    fmt.Println ( "الأصل" ، px، py)
}

// 
نوع البنية الفرعية childStruct structure {
    z int
    الوالد
}

// وظيفة الهيكل الفرعي 
func (p * childStruct) testChild () {
     // الوصول إلى متغير البنية الأم 
    fmt.Println ( "Child" ، px، py، pz)   // يمكنك حذف تعديل البنية الأم.
}

func main () {
     var a childStruct
    ax = 1   // الوصول إلى المتغير الأصل 
    ay = 2   // الوصول إلى البنية الأصلية يمكنك حذف تعديل البنية الأصلية 
    az = 3 
    a.testParent () // Parent 1 2 Parent يمكنك حذف تعديل البنية الأصل 
    a.testChild ()   // طفل 1 2 3
}

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

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

ماذا لو تم تغطية أسماء العناصر والوظائف؟

ماذا لو قمت بتعريف عنصر أو وظيفة في بنية فرعية لها نفس اسم الهيكل الأصلي؟

في هذه الحالة ، يتم استخدام عناصر / وظائف البنية الفرعية. نظرًا لعدم وجود خيار سوى الوصول إلى عناصر ووظائف الهيكل الأصلي ، حدد اسم الهيكل الأصلي كما هو موضح في البداية.

الحزمة الرئيسية

استيراد  "fmt"

اكتب بنية الأصل _
    x int 
    y int
}

func (p * parentStruct) test () {
    fmt.Println ( "الأصل" ، px، py)
}

اكتب childStruct بنية {
    س كثافة العمليات
    الوالد
}

func (p * childStruct) test () {
     // نظرًا لتكرار x ، للوصول إلى x للبنية الرئيسية ، حدد البنية الرئيسية 
    fmt.Println ( "Child" ، p.parentStruct.x ، py ، px) 
}

func main () يتم تكرار {
     var a childStruct
      // x ، لذلك للوصول إلى x في البنية الأصلية ، حدد البنية الرئيسية 
    a.parentStruct.x = 1 
    ay = 2 
    ax = 3 
    // test () مكررة ، لذلك الوصول إلى اختبار الهيكل الأصلي () ، حدد الهيكل الأصلي 
    a.parentStruct.test ()   // Parent 1 2   
    a.test ()               // الطفل 1 2 3
}

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

استعمال الميراث

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

على سبيل المثال ، افترض أنك تريد توسيع بنية http.Clinet لإجراء بحث في Google والاحتفاظ بالنتائج.

الحزمة الرئيسية

استيراد (
     "fmt" 
    "io / ioutil" 
    "net / http"
)


// اكتب هيكل googleSearch الذي يرث بنية بوظائف جديدة {سلسلة   
    النتائج // النتيجة 
    * http.Client    // المؤشر إلى الهيكل الموروث
}

// Add search () function حفظ نتائج البحث في نتيجة 
func (p * googleSearch) search (q string ) {
    Resp، err: = p.Get (fmt.Sprintf ( "https://www.google.com؟q=٪s" ، q))
     إذا أخطأ! = لا شيء {
         إرجاع
    }
    تأجيل الراحة. الجسم. إغلاق ()

    body ، يخطئ: = ioutil.ReadAll (resp.Body)
    إذا أخطأت! = لا شيء {
         عودة
    }
    p.result = سلسلة (نص)
}

func main () {
    ج: = & http.Client {}
    g: = googleSearch {Client: c} // Inherit http.Client وإضافة عناصر / وظائف جديدة 
    g.search ( "test" )
    fmt.Println (نتيجة g)
}

هناك العديد من الحالات التي يتم فيها الحصول على بنية بمؤشر ، وفي مثل هذه الحالات ، تكون النقطة هي تلقي البنية الأصلية بمؤشر.

عند إنشاء بنية ممتدة ، قم بتعيين المؤشر المكتسب إلى مؤشر الهيكل الأصلي.

بعد ذلك ، يمكنك الوصول إلى عناصر / وظائف الهيكل الأصلي مباشرة من الهيكل الفرعي.

الانطباعات وما إلى ذلك.

نظرًا لأن تعريف الهيكل ووظيفة التشغيل الخاصة به مستقل في أماكن مختلفة ، فمن الصعب معرفة نوع وظيفة التشغيل التي قارنها الهيكل بالفئة.

في الواقع ، الهياكل عبارة عن هياكل ، والوظائف مستقلة عن الوظائف ، ويقوم المترجم فقط بربطها في الترميز ، وتشارك الهياكل دائمًا في وظائف أعضائها.

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

قواعد Golang بدائية ، ولكن يمكن كتابتها بطرق مختلفة وحذفها ، بحيث يمكن كتابتها بنفس طريقة اللغة عالية الأداء.

أمم. غولانغ لغة منطقية ومثيرة للاهتمام.

0 コメント:

コメントを投稿