بداية سريعة | فوائد | لماذا؟ | الأهداف | حالة المشروع | خلاف | مناقشات جيثب | قضايا جيثب | المساهمة
لغة Bitloops (BL) هي لغة خاصة بالمنتجة ، وهي لغة خاصة بالمجال (DSL) تساعدك على التركيز على منطق العمل الخاص بتطبيقك وهو ما يهم حقًا.
إنه يشتمل على أفضل الممارسات لتطوير البرمجيات ومنهجيات التصميم مثل الهندسة المعمارية DDD و BDD و Layered/Hexagonal.
تقوم لغة BitLoops بتركيز أي مطور برامج على كتابة التعليمات البرمجية النظيفة وبناء برامج عالية الجودة ومصممة بشكل جيد. هذا وثيق الصلة بشكل خاص ببرامج تطبيق الخادم التي لها معقدة ، وتغيير متطلبات العمل بشكل متكرر. مع BL ، يمكن للمطورين إنشاء برامج باستخدام مبادئ مثل فصل المخاوف ، والاقتران الفضفاض ، والتماسك العالي وفصل مسؤولية استعلام القيادة (CQRS) ، والتي تضمن أن الأنظمة أسهل في فهمها وصيانتها وتغييرها.
مع لغة Bitloops ، يمكن للمطورين:
في جوهرها ، يمكن لمطوري البرامج التركيز على ما يفعلونه بشكل أفضل: حل المشكلات! من خلال Bitloops Language Presentorers يكتبون رمزًا يسمح للمطورين الآخرين (وحتى أنفسهم بعد 6 أشهر) بفهم بسهولة هذا الرمز.
️ يرجى مراعاة أن لغة Bitloops في مراحلها المبكرة وتحت تطور نشط للغاية. توقع الحشرات والقيود. لا يتم ضمان أي توافق متخلف قبل الوصول إلى V1.0.0.
أفضل وأسرع طريقة لفهم كيف تساعدك لغة Bitloops في كتابة التعليمات البرمجية النظيفة والبرامج الرائعة هي اتباع الإرشادات أدناه. باستخدام هذا البرنامج التعليمي ، ستقوم بتشغيل وتنفيذ تطبيق BitLoops TODO ، وتعلم كيفية عمل BitLoops ، وترى ملفات الإخراج في TypeScript وقدر كيفية عمل لغة BitLoops.
إذا واجهت أي مشكلات (خاصة مع Windows) ، تحقق من قسم المشكلات المشتركة أدناه.
لا يزال Bitloops لم ينشئ ثنائيات ، وبالتالي فإن أفضل طريقة لتثبيت وتشغيل Transpiler هي تثبيت Language Language CLI كحزمة NPM عالمية. انسخ ما يلي وقم بتشغيله في IDE الخاص بك:
npm install -g @bitloops/bitloops-language-cliبدلاً من ذلك ، يمكنك استخدام الغزل:
yarn global add @bitloops/bitloops-language-cliتطبيق Bitloops TODO متاح بسهولة للاستنساخ. يمكنك استخراج الملفات التي تتبع الرابط أو استنساخه باستخدام الأمر أدناه:
git clone https://github.com/bitloops/bitloops-language.gitوالخطوة التالية هي نقل رمز تطبيق TODO من رمز لغة Bitloops إلى رمز TypeScript. يأتي Transpile من كلمة transcompile ، ويعني ترجمة الكود من لغة برمجة إلى أخرى.
ماكوس / لينكس
bl transpile -s bitloops-language/examples/todo/bl-source/ -t outputالنوافذ
bl transpile -s bitloops-languageexamplestodobl-source -t outputأو
bitloops-language transpileهذا كل شيء! يمكنك الآن تشغيل ما يلي لمعرفة عدد خطوط التعليمات البرمجية التي قمت بحفظها بنفسك (تنبيه المفسد: 77 ٪ أو 2141 LOC!)
bl analyze-lines -bl bitloops-languageexamplestodobl-source -ts ./outputحسنًا ، لديك الآن كل منطق عملك يتم نقله بشكل جميل إلى رمز TypeScript منظم جيدًا ؟؟؟!
ينتهي نطاق لغة Bitloops هنا ولكن باستخدام BitLoops ، يمكنك توليد كل شيء آخر تلقائيًا باستخدام Bitloops Magic و AI! ستقوم BitLoops بإنشاء مشروع Nest.js وجميع البنية التحتية المطلوبة (GRPC أو وحدات التحكم في REST ، ومحولات المستودعات لـ Postgresql أو Mongo وما إلى ذلك) بالإضافة إلى ملفات Docker أو K8S لنشر نظامك. لمعرفة المزيد حول عملية Bitloops التلقائية [انقر هنا].
بدلاً من ذلك ، أنت حر في استخدام أي إطار تريده أو مجرد خادم صريح أو خادم سريع وما إلى ذلك.
Set-ExecutionPolicy -ExecutionPolicy RemoteSignedهناك العديد من لغات البرمجة الرائعة التي تحتوي على قواعد كود واستثمارات ضخمة ومتنامية. ومع ذلك ، فإن المشكلة الأكثر شيوعًا التي تواجه المنظمات التي تبني وأنظمة ، مع فرق من المطورين الذين يعملون عليها ، هي الهندسة المعمارية والتصميم الجيد لنظام الخدمات المترابطة ؛
إن تصميم نظام معقد بحيث يمكن أن يستمر عبر الزمن وسيسمح للمطورين (النجارين الحاليين والجدد) بالعمل على قاعدة بيانات الكود الخاصة به مع زيادة الإنتاجية الثابتة (أو المأمول) أمر صعب للغاية.
يعد الاختبار الجيد مطلبًا رئيسيًا إضافيًا للمنتجات الطويلة الأمد التي أصبحت ممكنة أيضًا من خلال الهندسة المعمارية والتصميم الجيد. لسوء الحظ ، لا يوجد ما يكفي من كبار المهندسين على دراية وذوي الخبرة في جميع أنحاء العالم لبناء والحفاظ على أنظمة رائعة لجميع الذين يحتاجون إليها. حتى عندما تكون الشركة محظوظة بما فيه الكفاية للحصول على البعض ، فإنها غير قادرة على توظيف المزيد من المهندسين المبتدئين أكثر من المبتدئين الذين يمكنهم مراجعة عملهم ودليلهم للتأكد من أن النظام لا يتحلل بمرور الوقت بسبب قرارات التصميم السيئة.
لغة BitLoops هي أول لغة برمجة تهدف إلى معالجة هذه القضايا من خلال تسهيل تبني مبادئ وأنماط هندسة البرمجيات المهمة مثل التصميم القائم على المجال والتنمية التي تعتمد على السلوك ، دون الحاجة إلى سنوات عديدة من الخبرة في القيام بذلك بنجاح. ونتيجة لذلك ، يمكن الاستفادة من عمل كبار المهندسين بشكل إضافي وتعزيز مساهمات المهندسين الصغار بشكل كبير.
كل مهندس برمجيات له هدف مشترك: نريد كتابة رمز أفضل وإنشاء برامج أفضل ، ونريد أن نفعل ذلك بشكل أسرع!
ومع ذلك ، لا يمكن تحقيق ذلك إلا من خلال التفاني والتعلم والخبرة المستمر والمستمر ، والذي يستغرق الكثير من الوقت. يريد Bitloops تقليل الوقت بشكل كبير في الوقت الذي يستغرقه المطور لبدء بناء برامج عالية الجودة ، وقمنا ببناء لغة BitLoops التي تضم بالفعل العديد من أفضل الممارسات لتطوير البرمجيات ومنهجيات التصميم.
في النهاية ، أهداف BL هي:
تهدف لغة BitLoops إلى تحديد بناء جملة مبسطة والاحتفاظ بها قريبة من اللغة البشرية ومنطق الأعمال قدر الإمكان والتي ستصبح خالدة ، مما يساعد على تبني لغة في كل مكان داخل كل وحدة أو سياق محدد. عندها يتم نقل مهمة BL إلى بناء جملة حديثة وحديثة لغتك المستهدفة.
كان جعل لغة Bitloops لغة تنقل قرارًا أساسيًا لتحقيق ذلك بالضبط. من خلال السماح لعمليات الزراعة في كتابة منطق أعمالهم بلغة خالدة يمكن نقلها إلى لغات قوية ولكنها أيضًا تغيير اللغات المستهدفة دون أن تنفجر مستخدمي لغة Bitloops بهذه المهمة. سوف تتأكد لغة BitLoops من نقلها إلى تحسين الكود من لغات الصلة ، والمحدثة ، واليمين مقابل المهام.
لغة Bitloops هي حاليا في المراحل المبكرة. تم إنشاء جهاز Transpiler كدليل على المفهوم وليس المقصود منه تغطية النطاق الكامل لكتابة التعليمات البرمجية الإبداعية للمطورين في هذه المرحلة.
نريد أن نفهم بشكل أفضل ما إذا كان بإمكاننا بناء لغة تلبي احتياجاتك ، وما إذا كان بإمكاننا جمع كتلة مهمة من الاهتمام داخل مجتمع DDD وخارجها.
هناك العديد من الأشياء التي نريد إضافتها في المستقبل بما في ذلك
إذا كنت مهتمًا بالمساهمة ، فنحن نحب مساعدتك!
إذا كنت على دراية بالفعل بمفاهيم DDD (المجاميع ، كائنات القيمة ، حالات الاستخدام ، وحدة التحكم ، وما إلى ذلك) ومعرفة كيفية الترميز في أي لغة برمجة حديثة ، فيجب أن يكون من السهل حقًا التقاط لغة Bitloops. تم بناؤه من مجموعة متسقة من البنيات اللغوية التي يجب أن تشعر بالمعرفة وأن يكون من السهل القراءة والفهم.
في حين أن Bitloops هي لغة موجهة للكائنات ، إلا أنها لا تحتوي على فئة عامة. فئات BitLoops المحددة هي بناء على النحو التالي: ValueBject ، الكيان ، كيان الجذر ، الأوامر ، الأوامر ، الاستعلام ، QueryHandler ، DTO ، الدعائم ، OK ، Applicationerror ، Domainerror ، خطأ إلخ.
رمز لغة Bitloops مثل هذا (11 سطر):
// Bitloops Language:
Rule TitleOutOfBoundsRule ( title : string ) throws DomainErrors . TitleOutOfBoundsError {
isBrokenIf ( title . length > 150 OR title . length < 4 ) ;
}
Props TitleProps {
string title ;
}
ValueObject TitleVO {
constructor ( props : TitleProps ) : ( OK ( TitleVO ) , Errors ( DomainErrors . TitleOutOfBoundsError ) ) {
applyRules ( TitleOutOfBoundsRule ( props . title ) ) ;
}
}ينقل إلى رمز TypeScript هذا (28 سطرًا):
// TypeScript:
import { Domain , Either , ok , fail } from '@bitloops/bl-boilerplate-core' ;
import { DomainErrors } from './errors' ;
export class TitleOutOfBoundsRule implements Domain . IRule {
constructor ( private title : string ) { }
public Error = new DomainErrors . TitleOutOfBounds ( this . title ) ;
public isBrokenIf ( ) : boolean {
return this . title . length > 150 || this . title . length < 4 ;
}
}
export namespace Rules {
export class TitleOutOfBounds extends TitleOutOfBoundsRule { }
}
interface TitleProps {
title: string ;
}
export class TitleVO extends Domain . ValueObject < TitleProps > {
get title ( ) : string {
return this . props . title ;
}
private constructor ( props : TitleProps ) {
super ( props ) ;
}
public static create ( props : TitleProps ) : Either < TitleVO , DomainErrors . TitleOutOfBounds > {
const res = Domain . applyRules ( [ new Rules . TitleOutOfBounds ( props . title ) ] ) ;
if ( res ) return fail ( res ) ;
return ok ( new TitleVO ( props ) ) ;
}
} للأسئلة والدعم ، يرجى استخدام قناة Discord الرسمية. لا تتردد في الانضمام إذا كنت تتطلع إلى معرفة المزيد عن أنماط تصميم تطوير البرمجيات.
نحن فريق صغير في مهمة لإضفاء الطابع الديمقراطي على رمز مصمم جيدًا وبرامج عالية الجودة ، وسنأخذ كل المساعدة التي يمكننا الحصول عليها! إذا كنت ترغب في المشاركة ، فيرجى الاطلاع على إرشادات المساهمة الخاصة بنا لتعلم كيف وأين يمكننا استخدام مساعدتك. نحن نهدف إلى تحديد القضايا الجيدة حتى تتمكن من البدء بسرعة في المساهمة والتعلم.
يرجى التأكد من قراءة إرشادات مشكلات التقارير الخاصة بنا قبل فتح مشكلة. قد يتم إغلاق القضايا التي لا تتوافق مع الإرشادات على الفور.
للحصول على مساعدة عامة باستخدام لغة BitLoops ، يرجى استخدام إحدى هذه القنوات:
لغة Bitloops لديها رخصة GNU العامة V3.0. راجع ملف الترخيص للحصول على معلومات الترخيص.
تبحث Bitloops دائمًا عن أشخاص رائعين للمساهمة في لغة ومنصة Bitloops. إذا كنت حريصًا على الانضمام إلى فريق يرغب في تحسين كيفية بناء البرامج بشكل جذري ، فأرسل خطاب تغطية CV + (مهم جدًا) + github ملف تعريف: [email protected]