Быстрый старт | Преимущества | Почему? | Цели | Статус проекта | Раздор | Дискуссии GitHub | Github Assues | Внося
Bitloops Language (BL)-это высокопроизводительный язык, специфичный для домена (DSL), который помогает вам сосредоточиться на бизнес-логике вашего приложения, что действительно имеет значение.
Он включает в себя лучшие методы разработки программного обеспечения и методологии проектирования, такие как DDD, BDD и многослойная/шестигранная архитектура.
BitLoops Language Guides и дает возможность любому разработчику программного обеспечения писать чистый код и создать высококачественное и хорошо разработанное программное обеспечение. Это особенно актуально для программного обеспечения для приложений сервера, которое имеет сложное, и часто меняет бизнес -требования. С помощью BL разработчики могут создавать программное обеспечение, используя такие принципы, как разделение проблем, свободная связь, высокая сплоченность и сегрегация ответственности командных запросов (CQRS), которые обеспечивают более легкие системы, поддержание и изменение.
С языком BitLoops разработчики могут:
По сути, разработчики программного обеспечения могут сосредоточиться на том, что они делают лучше всего: решение проблем! С разработчиками языка BitLoops пишут код, который позволит другим разработчикам (и даже через 6 месяцев) легко понимать и строить на вершине этого кода.
️ Пожалуйста, имейте в виду, что язык Bitloops находится на ранних стадиях и при очень активном развитии. Ожидайте ошибки и ограничения. Любая обратная совместимость не гарантируется до достижения v1.0.0.
Лучший и самый быстрый способ понять, как язык BitLoops помогает вам писать чистый код и отличное программное обеспечение - это следовать приведенным ниже инструкциям. С помощью этого урока вы запустите и выполните приложение BitLoops Todo, узнаете, как работает BitLoops, и увидеть выходные файлы в TypeScript и оцените, как работает язык BitLoops.
Если вы столкнетесь с любыми проблемами (особенно с Windows), проверьте раздел «Общие проблемы» ниже.
Bitloops по -прежнему не создал двоичные файлы, поэтому лучший способ установить и запустить транспилеру, - это установить языковой CLI BitLoops в качестве глобального пакета 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 и означает перевод кода с одного языка программирования на другой.
macos / linux
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Хорошо, теперь у вас есть вся ваша бизнес -логика, красиво транспилированная в хорошо структурированный код типографии ???!
Объем языка Bitloops заканчивается здесь, но используя BitLoops, вы можете автоматически генерировать все остальное, используя Bitloops Magic и AI! Bitloops генерирует для вас проект nest.js и все необходимые инфраструктуры (контроллеры GRPC или REST, адаптеры репозитория для PostgreSQL или Mongo и т. Д.), А также файлы Docker или K8S для развертывания вашей системы. Чтобы узнать больше об автоматическом процессе BitLoops [нажмите здесь].
В качестве альтернативы, вы можете использовать любую структуру, которая вам нравится, или просто сервер Express или Fastify Server и т. Д.
Set-ExecutionPolicy -ExecutionPolicy RemoteSignedСуществует множество отличных языков программирования с огромными и растущими кодовыми базами и инвестициями. Тем не менее, наиболее распространенной проблемой, с которой сталкиваются организации, которые строят и поддерживают системы, когда над ними работают команды разработчиков, является хорошей архитектурой и разработкой взаимосвязанной системы услуг;
Проектирование сложной системы, чтобы она могла длиться во времени и позволить разработчикам (существующим и новым столярам) работать над своей кодовой базой с устойчивым (или, надеюсь,) повышением производительности, очень сложно.
Хорошее тестирование является дополнительным основным требованием длительных продуктов, которое также стало возможным благодаря хорошей архитектуре и дизайну. К сожалению, не хватает знающих и опытных старших инженеров по всему миру, чтобы построить и поддерживать отличные системы для всех, кто в них нуждается. Даже когда компании посчастливится иметь некоторые, она не может нанимать больше инженеров -младших, чем старшие могут пересмотреть свою работу и руководство, чтобы убедиться, что система не разлагается со временем из -за плохих проектных решений.
Язык Bitloops-это первый язык программирования, который направлен на решение этих проблем, упрощая применение важных принципов и моделей разработки программного обеспечения, таких как дизайн, управляемый доменом и разработка, не требуя многолетнего опыта для достижения успеха. В результате работа старших инженеров может быть дальше, и вклад младших инженеров значительно увеличился.
У каждого инженера -программиста общая цель: мы хотим написать лучший код и создать лучшее программное обеспечение, и мы хотим сделать это быстрее!
Тем не менее, это может быть достигнуто только при значительной и непрерывной преданности, обучении и опыте, что занимает много времени. Bitloops хочет значительно сократить время, необходимое для разработчика, чтобы начать создавать высококачественное программное обеспечение, и мы создали язык Bitloops, который уже включает в себя многие из лучших практик разработки программного обеспечения и методологий проектирования.
В конечном счете, цели BL -:
Язык Bitloops стремится определить и сохранить упрощенный синтаксис, который будет как можно ближе к человеческому языку и бизнес -логике, который станет вне времени, помогая принять и использовать повсеместный язык в каждом модуле или ограниченный контекст. Тогда работа BL-перенести в современный и актуальный синтаксис вашего целевого языка.
Создание языка Bitloops транспилированным языком было основным решением достичь именно этого. Позволяя ораганизациям писать свою бизнес -логику на вневременном языке, который может быть перенесен на мощные, но и изменяет целевые языки, не обременяя пользователей языка Bitloops с помощью этой задачи. Язык Bitloops обеспечит его передачу оптимизированного кода релевантных, актуальных и правых языков.
Язык Bitloops в настоящее время находится на ранних стадиях. Его транспорист был создан в качестве доказательства концепции и не предназначен для того, чтобы охватить весь спектр творческого написания разработчиков на данном этапе.
Мы хотим лучше понять, можем ли мы построить язык, который отвечает вашим потребностям, и можем ли мы собрать критическую массу интереса в сообществе DDD и за его пределами.
Есть много вещей, которые мы хотим добавить в будущем, включая
Если вы заинтересованы в соревнованиях, мы хотели бы вашей помощи!
Если вы уже знаете о концепциях DDD (агрегаты, объекты значения, варианты использования, контроллер и т. Д.) И знаете, как кодировать на любом современном языке программирования, должно быть действительно легко поднять язык BitLoops. Он построен из постоянного набора языковых конструкций, которые должны чувствовать себя знакомыми и быть легко читать и понимать.
В то время как BitLoops является объектно -ориентированным языком, у него нет общего класса. Конкретные классы BitLoops вписываются следующим образом: ValueObject, Entity, Root Entity, Commandler, CommandHandler, запрос, QueryHandler, DTO, реквизит, OK, ApplicationError, DomainError, ошибка и т. Д.
Bitloops Language Code, подобный этому (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 Language имеет общую публичную лицензию GNU V3.0. См. Файл лицензии для получения информации о лицензии.
Bitloops всегда ищет замечательных людей, чтобы внести свой вклад в язык и платформу BitLoops. Если вы заинтересованы в присоединении к команде, которая хочет радикально улучшить то, как программное обеспечение создается в будущем, отправьте свое сопроводительное письмо CV + (очень важно) + GitHub Profile по адресу: [email protected]