Mulai Cepat | Manfaat | Mengapa? | Tujuan | Status Proyek | Perselisihan | Diskusi GitHub | Masalah GitHub | Berkontribusi
Bahasa Bitloops (BL) adalah produktivitas tinggi, bahasa spesifik domain (DSL) yang membantu Anda fokus pada logika bisnis aplikasi Anda yang benar-benar penting.
Ini menggabungkan praktik terbaik pengembangan perangkat lunak dan metodologi desain seperti DDD, BDD dan Arsitektur Layered/Hexagonal.
Bahasa Bitloops memandu dan memberdayakan pengembang perangkat lunak mana pun untuk menulis kode bersih dan membangun perangkat lunak berkualitas tinggi & yang dirancang dengan baik. Ini sangat relevan untuk perangkat lunak aplikasi server yang memiliki persyaratan bisnis yang kompleks, dan sering mengubah bisnis. Dengan BL, pengembang dapat membangun perangkat lunak menggunakan prinsip -prinsip seperti pemisahan kekhawatiran, kopling longgar, kohesi tinggi dan pemisahan tanggung jawab kueri perintah (CQRS), yang memastikan sistem lebih mudah dipahami, mempertahankan, dan berubah.
Dengan bahasa Bitloops, pengembang dapat:
Intinya, pengembang perangkat lunak dapat fokus pada apa yang mereka lakukan terbaik: menyelesaikan masalah! Dengan pengembang bahasa Bitloops menulis kode yang akan memungkinkan pengembang lain (dan bahkan diri mereka sendiri setelah 6 bulan) untuk dengan mudah memahami dan membangun di atas kode itu.
️ Harap diingat bahwa bahasa Bitloops sedang dalam tahap awal dan di bawah pengembangan yang sangat aktif. Harapkan bug dan keterbatasan. Kompatibilitas mundur apa pun tidak dijamin sebelum mencapai v1.0.0.
Cara terbaik dan tercepat untuk memahami bagaimana bahasa Bitloops membantu Anda menulis kode bersih dan perangkat lunak yang hebat adalah dengan mengikuti instruksi di bawah ini. Dengan tutorial ini, Anda akan menjalankan dan menjalankan aplikasi Bitloops Todo, belajar bagaimana bitloops bekerja, dan melihat file output di TypeScript dan menghargai cara kerja bahasa Bitloops.
Jika Anda menghadapi masalah apa pun (terutama dengan Windows), periksa bagian masalah umum di bawah ini.
Bitloops masih belum membuat binari, jadi cara terbaik untuk menginstal dan menjalankan transpiler adalah dengan menginstal CLI bahasa Bitloops sebagai paket NPM global. Salin yang berikut dan jalankan di IDE Anda:
npm install -g @bitloops/bitloops-language-cliAtau, Anda dapat menggunakan benang:
yarn global add @bitloops/bitloops-language-cliAplikasi Bitloops Todo sudah tersedia untuk kloning. Anda dapat mengekstrak file yang mengikuti tautan atau mengkloningnya menggunakan perintah di bawah ini:
git clone https://github.com/bitloops/bitloops-language.gitLangkah selanjutnya adalah mentranspile kode aplikasi TODO dari kode bahasa Bitloops ke kode TypeScript. Transpile berasal dari kata transompil, dan berarti terjemahan kode dari satu bahasa pemrograman ke bahasa lain.
MacOS / Linux
bl transpile -s bitloops-language/examples/todo/bl-source/ -t outputWindows
bl transpile -s bitloops-languageexamplestodobl-source -t outputatau
bitloops-language transpileItu saja! Anda sekarang dapat menjalankan yang berikut untuk melihat berapa banyak baris kode yang Anda simpan sendiri (spoiler waspada: 77% atau 2141 loc!)
bl analyze-lines -bl bitloops-languageexamplestodobl-source -ts ./outputOke sekarang Anda memiliki semua logika bisnis Anda dengan indah ditranspilasi menjadi kode naskah terstruktur dengan baik ???!
Lingkup bahasa Bitloops berakhir di sini tetapi menggunakan bitloops Anda dapat secara otomatis menghasilkan semua yang lain menggunakan Bitloops Magic dan AI! Bitloops akan menghasilkan untuk Anda proyek Nest.js dan semua infrastruktur yang diperlukan (GRPC atau pengontrol REST, adaptor repositori untuk postgresql atau mongo dll.) Serta file Docker atau K8S untuk menggunakan sistem Anda. Untuk mempelajari lebih lanjut tentang proses bitloops otomatis [klik di sini].
Atau, Anda bebas menggunakan kerangka kerja apa pun yang Anda sukai atau hanya server ekspres atau mengupas server dll.
Set-ExecutionPolicy -ExecutionPolicy RemoteSignedAda banyak bahasa pemrograman hebat di luar sana dengan basis kode dan investasi yang besar dan terus berkembang. Namun, masalah paling umum yang dihadapi oleh organisasi yang membangun dan memelihara sistem, dengan tim pengembang yang mengerjakannya, adalah arsitektur yang baik dan desain sistem layanan yang saling berhubungan;
Merancang sistem yang kompleks sehingga dapat bertahan melalui waktu dan akan memungkinkan pengembang (joiner yang ada dan baru) untuk mengerjakan basis kode dengan stabil (atau mudah -mudahan) meningkatkan produktivitas sangat sulit.
Pengujian yang baik adalah persyaratan utama tambahan dari produk jangka panjang yang juga dimungkinkan oleh arsitektur dan desain yang baik. Sayangnya, tidak ada cukup banyak insinyur senior yang berpengetahuan dan berpengalaman di seluruh dunia untuk membangun dan memelihara sistem yang hebat untuk semua yang membutuhkannya. Bahkan ketika sebuah perusahaan cukup beruntung memiliki beberapa, itu tidak dapat mempekerjakan lebih banyak insinyur junior daripada yang senior dapat meninjau pekerjaan dan memandu mereka untuk memastikan sistem tidak menurun dari waktu ke waktu karena keputusan desain yang buruk.
Bahasa Bitloops adalah bahasa pemrograman pertama yang bertujuan untuk mengatasi masalah ini dengan membuatnya lebih mudah untuk mengadopsi prinsip dan pola rekayasa perangkat lunak yang penting seperti desain yang digerakkan oleh domain dan pengembangan yang digerakkan oleh perilaku, tanpa memerlukan pengalaman bertahun-tahun untuk melakukannya dengan sukses. Akibatnya, pekerjaan insinyur senior dapat dimanfaatkan lebih lanjut dan kontribusi insinyur junior secara signifikan meningkatkan.
Setiap insinyur perangkat lunak memiliki tujuan yang sama: kami ingin menulis kode yang lebih baik dan membangun perangkat lunak yang lebih baik, dan kami ingin melakukan ini lebih cepat!
Namun, ini hanya dapat dicapai dengan dedikasi, pembelajaran, dan pengalaman yang signifikan dan berkelanjutan, yang membutuhkan banyak waktu. Bitloops ingin secara signifikan mengurangi waktu yang dibutuhkan pengembang untuk mulai membangun perangkat lunak berkualitas tinggi, dan kami telah membangun bahasa Bitloops yang sudah menggabungkan banyak praktik terbaik pengembangan perangkat lunak dan metodologi desain.
Pada akhirnya, tujuan BL adalah untuk:
Bahasa Bitloops bertujuan untuk mendefinisikan dan mempertahankan sintaksis sederhana yang akan sedekat mungkin dengan bahasa manusia dan logika bisnis yang akan menjadi abadi, membantu mengadopsi dan menggunakan bahasa di mana -mana dalam setiap modul atau konteks yang dibatasi. Maka tugas BL untuk transpile ke sintaks modern dan terkini dari bahasa target Anda.
Membuat bahasa Bitloops bahasa yang ditranspilasi adalah keputusan inti untuk mencapai hal ini. Dengan mengizinkan oraganisasi untuk menulis logika bisnis mereka dalam bahasa abadi yang dapat ditranspilasi menjadi kuat tetapi juga mengubah bahasa target tanpa membebani pengguna bahasa Bitloops dengan tugas ini. Bahasa Bitloops akan memastikan itu transpile ke kode yang dioptimalkan dari bahasa yang relevan, terkini, dan tepat untuk tugas.
Bahasa Bitloops saat ini sedang dalam tahap awal. Transpilernya telah dibuat sebagai bukti konsep dan tidak dimaksudkan untuk mencakup berbagai macam penulisan kode kreatif pengembang pada tahap ini.
Kami ingin lebih memahami apakah kami dapat membangun bahasa yang memenuhi kebutuhan Anda, dan apakah kami dapat mengumpulkan banyak minat dalam komunitas DDD dan di luarnya.
Ada banyak hal yang ingin kami tambahkan di masa depan termasuk
Jika Anda tertarik untuk berkontribusi, kami akan sangat menyukai bantuan Anda!
Jika Anda sudah mengetahui konsep DDD (agregat, objek nilai, kasus penggunaan, pengontrol, dll.) Dan tahu cara mengkode dalam bahasa pemrograman modern apa pun, harus sangat mudah untuk mengambil bahasa Bitloops. Ini dibangun dari serangkaian konstruksi bahasa yang konsisten yang harus terasa akrab dan mudah dibaca dan dipahami.
Sementara Bitloops adalah bahasa yang berorientasi objek, ia tidak memiliki kelas generik. Kelas bitloops spesifik dibangun sebagai berikut: valueObject, entitas, entitas root, perintah, commandhandler, kueri, queryhandler, dto, alat peraga, ok, applicationerror, domainerror, kesalahan dll.
Kode bahasa Bitloops seperti ini (11 baris):
// 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 ) ) ;
}
}Transpiles ke kode TypeScript ini (28 baris):
// 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 ) ) ;
}
} Untuk pertanyaan dan dukungan, silakan gunakan saluran perselisihan resmi kami. Jangan ragu untuk bergabung jika Anda ingin mempelajari lebih lanjut tentang pola desain pengembangan perangkat lunak.
Kami adalah tim kecil dalam misi untuk mendemokratisasi kode yang dirancang dengan baik dan perangkat lunak berkualitas tinggi, dan kami akan mengambil semua bantuan yang bisa kami dapatkan! Jika Anda ingin terlibat, silakan periksa pedoman kontribusi kami untuk mempelajari bagaimana dan di mana kami dapat menggunakan bantuan Anda. Kami bertujuan untuk mengidentifikasi masalah pertama yang baik sehingga Anda dapat dengan cepat mulai berkontribusi dan belajar.
Pastikan untuk membaca pedoman pelaporan masalah kami sebelum membuka masalah. Masalah yang tidak sesuai dengan pedoman dapat segera ditutup.
Untuk bantuan umum menggunakan bahasa Bitloops, silakan gunakan salah satu saluran ini:
Bahasa Bitloops memiliki Lisensi Publik Umum GNU v3.0. Lihat file lisensi untuk informasi lisensi.
Bitloops selalu mencari orang hebat untuk berkontribusi pada bahasa dan platform Bitloops. Jika Anda ingin bergabung dengan tim yang ingin secara radikal meningkatkan bagaimana perangkat lunak dibangun ke depan, maka kirim surat lamaran CV + Anda (sangat penting) + profil github ke: [email protected]