Démarrage rapide | Avantages | Pourquoi? | Objectifs | État du projet | Discorde | Discussions GitHub | Problèmes de github | Contributif
Bitloops Language (BL) est un langage (DSL) de grande productivité et spécifique au domaine qui vous aide à vous concentrer sur la logique métier de votre application, ce qui est vraiment important.
Il intègre les meilleures pratiques de développement logiciel et les méthodologies de conception telles que DDD, BDD et architecture en couches / hexagonaux.
La langue Bitloops guide et permet à tout développeur de logiciels d'écrire du code propre et de créer des logiciels de haute qualité et bien conçus. Ceci est particulièrement pertinent pour les logiciels d'applications serveur qui ont des exigences commerciales complexes et qui changent fréquemment. Avec BL, les développeurs peuvent créer des logiciels en utilisant des principes tels que la séparation des préoccupations, le couplage lâche, la cohésion élevée et la ségrégation de la responsabilité des requêtes de commande (CQRS), qui garantissent que les systèmes sont plus faciles à comprendre, à maintenir et à changer.
Avec la langue Bitloops, les développeurs sont capables de:
Essentiellement, les développeurs de logiciels peuvent se concentrer sur ce qu'ils font le mieux: résoudre des problèmes! Avec les développeurs de langue Bitloops, écrivez du code qui permettra à d'autres développeurs (et même après 6 mois) de comprendre et de construire facilement ce code.
️ Veuillez garder à l'esprit que la langue Bitloops en est à ses débuts et sous un développement très actif. Attendez-vous à des bugs et des limitations. Toute compatibilité arrière n'est pas garantie avant d'atteindre la v1.0.0.
Le moyen le meilleur et le plus rapide de comprendre comment la langue Bitloops vous aide à écrire du code propre et un excellent logiciel est de suivre les instructions ci-dessous. Avec ce didacticiel, vous exécuterez et exécuterez une application Bitloops TODO, apprenez comment fonctionne Bitloops et verrez les fichiers de sortie dans TypeScript et appréciez le fonctionnement de la langue Bitloops.
Si vous rencontrez des problèmes (en particulier avec Windows), vérifiez la section des problèmes communs ci-dessous.
Bitloops n'a toujours pas créé de binaires, donc la meilleure façon d'installer et d'exécuter le transpiler est d'installer la CLI de langue Bitloops en tant que package NPM global. Copiez ce qui suit et exécutez-le dans votre IDE:
npm install -g @bitloops/bitloops-language-cliAlternativement, vous pouvez utiliser du fil:
yarn global add @bitloops/bitloops-language-cliL'application Bitloops Todo est facilement disponible pour le clonage. Vous pouvez extraire les fichiers en suivant le lien ou le cloner à l'aide de la commande ci-dessous:
git clone https://github.com/bitloops/bitloops-language.gitL'étape suivante consiste à transpiler le code d'application TODO du code de la langue Bitloops dans le code TypeScript. Transpile vient du mot transcompile et signifie la traduction du code d'un langage de programmation à un autre.
macOS / Linux
bl transpile -s bitloops-language/examples/todo/bl-source/ -t outputFenêtre
bl transpile -s bitloops-languageexamplestodobl-source -t outputou
bitloops-language transpileC'est ça! Vous pouvez maintenant exécuter ce qui suit pour voir combien de lignes de code vous avez enregistrées vous-même (alerte de spoiler: 77% ou 2141 LOC!)
bl analyze-lines -bl bitloops-languageexamplestodobl-source -ts ./outputOk maintenant, vous avez toute votre logique commerciale magnifiquement transpirée en code de type bien structuré ???!
La portée de la langue Bitloops se termine ici, mais en utilisant Bitloops, vous pouvez générer automatiquement tout le reste en utilisant Bitloops Magic et Ai! Bitloops générera pour vous un projet Nest.js et toute l'infrastructure requise (contrôleurs GRPC ou REST, les adaptateurs de référentiel pour PostgreSQL ou Mongo, etc.) ainsi que les fichiers Docker ou K8S pour déployer votre système. Pour en savoir plus sur le processus Bitloops automatique [Cliquez ici].
Alternativement, vous êtes libre d'utiliser n'importe quel framework que vous aimez ou simplement un serveur express ou de agrandir le serveur, etc.
Set-ExecutionPolicy -ExecutionPolicy RemoteSignedIl existe de nombreux grands langages de programmation avec des bases et des investissements de code massifs et croissants. Cependant, le problème le plus courant auxquels sont confrontés les organisations qui construisent et maintiennent des systèmes, avec des équipes de développeurs qui y travaillent, est une bonne architecture et la conception d'un système de services interconnecté;
La conception d'un système complexe afin qu'il puisse durer dans le temps et permettra aux développeurs (menuiseurs existants et nouveaux) de travailler sur sa base de code avec une productivité croissante (ou, espérons-le), est très difficile.
De bons tests sont une exigence majeure supplémentaire de produits durables qui sont également rendus possibles par une bonne architecture et une bonne conception. Malheureusement, il n'y a pas assez d'ingénieurs supérieurs et expérimentés du monde entier pour construire et maintenir de grands systèmes pour tous ceux qui en ont besoin. Même lorsqu'une entreprise a la chance d'en avoir, il n'est pas en mesure d'embaucher plus d'ingénieurs juniors que les seniors ne peuvent consulter leur travail et leur guide afin de s'assurer que le système ne se dégrade pas au fil du temps en raison de mauvaises décisions de conception.
Le langage Bitloops est le premier langage de programmation qui vise à résoudre ces problèmes en facilitant beaucoup d'adoption de principes d'ingénierie logicielle importants et de modèles tels que la conception axée sur le domaine et le développement axé sur le comportement, sans nécessiter de nombreuses années d'expérience pour le faire avec succès. En conséquence, le travail des ingénieurs seniors peut être davantage exploité et les contributions des ingénieurs juniors ont considérablement augmenté.
Chaque ingénieur logiciel a un objectif commun: nous voulons écrire un meilleur code et créer de meilleurs logiciels, et nous voulons le faire plus rapidement!
Cependant, cela ne peut être réalisé qu'avec un dévouement, un apprentissage et une expérience significatifs, ce qui prend beaucoup de temps. Bitloops veut réduire considérablement le temps qu'il faut à un développeur pour commencer à construire des logiciels de haute qualité, et nous avons construit le langage Bitloops qui intègre déjà de nombreuses meilleures pratiques de développement logiciel et méthodologies de conception.
En fin de compte, les objectifs de BL sont de:
La langue Bitloops vise à définir et à conserver une syntaxe simpliste qui sera aussi proche du langage humain et de la logique métier qui deviendra intemporelle, aidant à adopter et à utiliser un langage omniprésent dans chaque module ou un contexte délimité. Il est alors du travail de BL de transformer en syntaxe moderne et à jour de votre langue cible.
Faire de la langue Bitloops une langue transpirée était une décision de base pour y parvenir exactement. En permettant aux oraganisations d'écrire leur logique commerciale dans une langue intemporelle qui peut être transpirée à des langues cibles puissantes mais également modifiées sans relancer les utilisateurs de la langue Bitloops avec cette tâche. La langue Bitloops s'assurera qu'elle transpire vers un code optimisé de langues pertinentes, à jour et droit pour la tâche.
La langue Bitloops est actuellement en début de stades. Son transpiler a été créé comme une preuve de concept et n'est pas destiné à couvrir toute la gamme de l'écriture du code créatif du développeur à ce stade.
Nous voulons mieux comprendre si nous pouvons construire une langue qui répond à vos besoins et si nous pouvons rassembler une masse critique d'intérêt au sein de la communauté DDD et en dehors de celle-ci.
Il y a beaucoup de choses que nous voulons ajouter à l'avenir, notamment
Si vous êtes intéressé à contribuer, nous aimerions votre aide!
Si vous êtes déjà conscient des concepts DDD (agrégats, objets de valeur, cas d'utilisation, contrôleur, etc.) et savoir coder dans n'importe quel langage de programmation moderne, il devrait être très facile de prendre la langue Bitloops. Il est construit à partir d'un ensemble cohérent de constructions de langage qui devraient se sentir familiers et être faciles à lire et à comprendre.
Bien que Bitloops soit un langage orienté objet, il n'a pas de classe générique. Les classes de bitloops spécifiques sont intégrées comme suit: ValueObject, Entity, Root Entity, Command, CommandHandler, Query, QueryHandler, DTO, accessoires, OK, ApplicationError, DomainError, Error, etc.
Bitloops Language Code comme celui-ci (11 lignes):
// 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 ) ) ;
}
}Transpliles à ce code de type (28 lignes):
// 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 ) ) ;
}
} Pour les questions et le soutien, veuillez utiliser notre canal Discord officiel. N'hésitez pas à rejoindre si vous cherchez à en savoir plus sur les modèles de conception de développement de logiciels.
Nous sommes une petite équipe en mission pour démocratiser le code bien conçu et les logiciels de haute qualité, et nous prendrons toute l'aide que nous pouvons obtenir! Si vous souhaitez vous impliquer, veuillez consulter nos directives de contribution pour savoir comment et où nous pourrions utiliser votre aide. Nous visons à identifier les bons problèmes afin que vous puissiez rapidement commencer à contribuer et à apprendre.
Veuillez vous assurer de lire nos directives sur les problèmes de rapport avant d'ouvrir un problème. Les problèmes qui ne se conforment pas aux directives peuvent être fermés immédiatement.
Pour une aide générale en utilisant la langue Bitloops, veuillez utiliser l'un de ces canaux:
La langue Bitloops a une licence publique générale GNU v3.0. Voir le fichier de licence pour les informations sur l'octroi de licences.
Bitloops est toujours à la recherche de personnes formidables pour contribuer à la langue et à la plate-forme Bitloops. Si vous souhaitez rejoindre une équipe qui souhaite radicalement améliorer la façon dont les logiciels sont construits à l'avenir, envoyez votre lettre de motivation CV + (très important) + GitHub Profil à: [email protected]