クイックスタート|利点|なぜ? |目標|プロジェクトステータス|不和| GitHubディスカッション| githubの問題|貢献
Bitloops Language(BL)は、高生産性のドメイン固有言語(DSL)であり、アプリケーションのビジネスロジックに集中するのに役立ちます。
ソフトウェア開発のベストプラクティスと、DDD、BDD、層状/六角形アーキテクチャなどの設計方法論が組み込まれています。
Bitloops Languageは、ソフトウェア開発者がクリーンなコードを作成し、高品質で適切に設計されたソフトウェアを構築できるようにします。これは、複雑で頻繁に変化するビジネス要件を備えたサーバーアプリケーションソフトウェアに特に関連しています。 BLを使用すると、開発者は、懸念の分離、ゆるい結合、高い結束、コマンドクエリ責任の分離(CQRS)などの原則を使用してソフトウェアを構築できます。
Bitloops Languageを使用すると、開発者は次のことができます。
本質的に、ソフトウェア開発者は自分が最善を尽くすこと、つまり問題を解決することに集中することができます! Bitloops Language Developersは、他の開発者(および6か月後にも)を許可するコードを作成し、そのコードの上に簡単に理解して構築できます。
ショ和 Bitloops言語は初期段階で非常に活発な開発中にあることに留意してください。バグと制限を期待してください。 v1.0.0に達する前に、後方互換性は保証されません。
Bitloops Languageがどのようにクリーンコードを作成するのに役立つかを理解するための最良かつ最速の方法は、以下の指示に従うことです。このチュートリアルを使用すると、Bitloops Todoアプリを実行して実行し、Bitloopsの仕組みを学び、TypeScriptの出力ファイルを表示し、Bitloops Languageの仕組みを評価します。
(特にWindowsで)問題に直面している場合は、以下の一般的な問題セクションを確認してください。
Bitloopsはまだバイナリを作成していないため、トランスピラーをインストールして実行する最良の方法は、Bitloops Language CLIをグローバルNPMパッケージとしてインストールすることです。以下をコピーして、IDEで実行します。
npm install -g @bitloops/bitloops-language-cliまたは、糸を使用できます。
yarn global add @bitloops/bitloops-language-cliBitloops Todoアプリは、クローニングに容易に利用できます。以下のコマンドを使用して、リンクに従ってファイルを抽出したり、クローンを作成したりできます。
git clone https://github.com/bitloops/bitloops-language.git次のステップは、Bitloops LanguageコードからTodoアプリコードをTypeScriptコードに透過させることです。トランスパイルは、トランスコンパイルという単語からのものであり、あるプログラミング言語から別のプログラミング言語へのコードの翻訳を意味します。
macos / linux
bl transpile -s bitloops-language/examples/todo/bl-source/ -t outputWindows
bl transpile -s bitloops-languageexamplestodobl-source -t outputまたは
bitloops-language transpileそれでおしまい!これで、次のことを実行して、自分自身を保存したコードの行の数を確認できます(ネタバレ注意:77%または2141 Loc!)
bl analyze-lines -bl bitloops-languageexamplestodobl-source -ts ./outputさて、あなたはすべてのビジネスロジックを十分に構造化されたタイプスクリプトコードに美しく依存していますか?!
Bitloops言語の範囲はここで終わりますが、Bitloopsを使用すると、Bitloops MagicとAIを使用して他のすべてを自動的に生成できます! Bitloopsは、Nest.JSプロジェクトと必要なすべてのインフラストラクチャ(PostgreSQLまたはMongoなどのGRPCまたはRESTコントローラー、リポジトリアダプター)を生成し、システムを展開するDockerまたはK8Sファイルを生成します。自動ビットループのプロセスの詳細については、ここをクリックしてください。
または、好きなフレームワーク、またはExpress ServerまたはFustify Serverなどを自由に使用できます。
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned大規模で成長しているコードベースと投資を備えた多くの優れたプログラミング言語があります。ただし、システムを構築および維持する組織が直面する最も一般的な問題は、開発者のチームがそれらに取り組んでいるため、相互接続されたサービスシステムの優れたアーキテクチャと設計です。
複雑なシステムを設計して、それが時間を経て続き、開発者(既存および新しいジョイナー)が安定した(またはできれば)生産性を高めることでコードベースで作業できるようにすることが非常に困難です。
優れたテストは、優れたアーキテクチャとデザインによっても可能になっている長持ちする製品の追加の主要な要件です。残念ながら、世界中に十分な知識豊富で経験豊富な上級エンジニアは、それらを必要とするすべての人のために優れたシステムを構築および維持するのに十分ではありません。会社がいくつかの幸運である場合でも、シニアのエンジニアが作業を確認してガイドすることができるよりも多くのジュニアエンジニアを雇うことはできません。
Bitloops Languageは、これらの問題に対処することを目的とした最初のプログラミング言語であり、ドメイン駆動型の設計や行動主導の開発などの重要なソフトウェアエンジニアリングの原則やパターンを採用することをはるかに容易にし、長年の経験を必要とすることはありません。その結果、上級エンジニアの仕事をさらに活用することができ、ジュニアエンジニアの貢献は大幅に後押しされました。
すべてのソフトウェアエンジニアには共通の目標があります。私たちはより良いコードを書き、より良いソフトウェアを構築したいと考えています。これをより速くやりたいです!
ただし、これは、多くの時間がかかる重要かつ継続的な献身、学習、経験でのみ達成できます。 Bitloopsは、開発者が高品質のソフトウェアの構築を開始するのにかかる時間を大幅に削減したいと考えており、多くのソフトウェア開発のベストプラクティスと設計方法論を既に組み込んだBitloops言語を構築しました。
最終的に、BLの目標は次のとおりです。
Bitloops Languageは、人間の言語とビジネスロジックに近いものになる単純な構文を、時代を超越し、各モジュールまたは境界のあるコンテキスト内でユビキタス言語の採用と使用を支援することを目的としています。その後、ターゲット言語の最新および最新の構文に透過することがBLの仕事です。
Bitloops言語を導入された言語にすることは、これを正確に達成するための中心的な決定でした。 Oraganisationsがビジネスロジックを時代を超越した言語で書くことを許可することにより、このタスクでBitloops言語のユーザーに負担をかけることなく、強力でありながらターゲット言語を変えることができます。 Bitloops Languageは、関連する、最新の、および右派の言語の最適化されたコードに透過することを確認します。
Bitloops言語は現在初期段階にあります。そのトランスピラーは、概念実証として作成されており、この段階での開発者クリエイティブコードの執筆をカバーすることを意図したものではありません。
私たちは、あなたのニーズを満たす言語を構築できるかどうか、そしてDDDコミュニティ内およびそれ以外の関心のある関心を集めることができるかどうかをよりよく理解したいと思います。
将来追加したいことがたくさんあります
あなたが貢献に興味があるなら、私たちはあなたの助けを愛しています!
DDDの概念(集約、値オブジェクト、ユースケース、コントローラーなど)を既に認識しており、最新のプログラミング言語でコーディングする方法を知っている場合は、Bitloops言語を手に入れるのは本当に簡単です。それは、馴染みがあり、読みやすく、理解しやすいと感じるはずの一貫した一連の言語構造から構築されています。
Bitloopsはオブジェクト指向の言語ですが、一般的なクラスはありません。特定のBitloopsクラスは、ValueObject、Entity、Root Entity、Command、CommandHandler、Query、QueryHandler、DTO、Props、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 ) ) ;
}
}このタイプスクリプトコード(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 Languageを使用する一般的なヘルプについては、これらのチャネルのいずれかを使用してください。
Bitloops LanguageにはGNU General Public License v3.0があります。ライセンス情報については、ライセンスファイルを参照してください。
Bitloopsは常に、Bitloopsの言語とプラットフォームに貢献する素晴らしい人々を探しています。ソフトウェアが今後どのように構築されているかを根本的に改善したいチームに参加することに熱心な場合は、CV +カバーレター(非常に重要) + GitHubプロファイルを[email protected]に送信します。