Crystal adalah bahasa pemrograman yang dikompilasi ke kode mesin dengan sintaks yang menyerupai Ruby dan sistem tipe statis yang disertai inferensi tipe global. Jalur ini membahas bahasa inti, sistem tipe, konkurensi berbasis fiber dan channel, binding pustaka C, hingga stack web HTTP::Server dan Kemal. Seluruh contoh dijalankan dengan Crystal 1.22, dan setiap keluaran berasal dari eksekusi nyata. Prasyaratnya berupa terminal dan pemasangan compiler Crystal sebagaimana dijelaskan pada modul awal.
Crystal
Jalur lengkap bahasa Crystal: inferensi tipe global, union type, konkurensi fiber, binding C, dan stack web dari nol sampai proyek produksi.
0/0 selesai
Modul pembuka: identitas bahasa Crystal, penyiapan lingkungan kerja, dan perjalanan cepat pada perkakas baris perintahnya.
- Apa itu Crystal ?Perkenalan Crystal sebagai bahasa terkompilasi dengan sintaks bergaya Ruby dan sistem tipe statis berinferensi.
- PenyiapanMemasang Crystal 1.22 dan shards serta menyiapkan editor untuk pengembangan sehari-hari.
- Perkakas crystalMenggunakan perintah crystal run, build, spec, dan init pada proyek pertama.
Modul inti bahasa: nilai, kontainer, inferensi tipe global, metode, alur kendali, hingga union type sebagai fondasi pengetikan.
- Nilai dan kontainerString, array, hash, dan symbol beserta operasi dasarnya dalam Crystal.
- Inferensi tipe globalCara compiler menyimpulkan tipe seluruh program tanpa anotasi dan mengapa inferensinya global.
- MetodeMendefinisikan metode dengan argumen bernama, nilai default, dan overloading berbasis tipe.
- Alur kendaliPernyataan if, unless, while, case, dan ekspresi ternary dalam Crystal.
- Union type dan nilNil sebagai anggota union biasa yang ditegakkan saat compile dan cara bekerja dengannya.
Pemodelan data berorientasi objek: class, property, pewarisan, module, dan struct beserta konsekuensi tipenya.
- Class dan variabel instansMendefinisikan class dengan variabel instans yang tipe disimpulkan dari ekspresi initializer.
- Property dan accessorMacro property, getter, dan setter untuk membuka akses pada variabel instans.
- Pewarisan dan class abstrakDispatch subtipe dan kontrak metode abstrak pada hierarki class.
- ModuleModule sebagai namespace, mixin yang disertakan, dan sarana meniru interface.
- StructStruct sebagai tipe nilai di stack, batasannya, dan kapan lebih tepat daripada class.
Pendalaman sistem tipe: generics, pencocokan pola case dan in, pengecilan union, serta enum dan alias.
- GenericsClass generik bawaan dan class generik buatan sendiri dengan parameter tipe.
- case dan inPencocokan pola (pattern matching) dengan destructuring pada pernyataan case dan in.
- Pengecilan unionMempersempit union type dengan is_a?, responds_to?, dan pengecilan implisit compiler.
- Enum dan aliasMendefinisikan enum dengan anggotanya serta memberi nama baru pada tipe lewat alias.
Fungsi tingkat tinggi warisan Ruby: block dengan yield, proc dan lambda, penangkapan block, dan protokol Enumerable.
- Block dan yieldBlock sebagai bagian pemanggilan metode dan yield sebagai titik pemanggilannya.
- Proc dan lambdaProc dan lambda sebagai callable kelas satu beserta perbedaan semantik return-nya.
- Menangkap blockMenangkap block dengan parameter ampersand dan sintaks singkat anonimnya.
- Protokol EnumerableMembangun iterasi khusus dengan each, map, select, dan mixin Enumerable.
Strategi menghadapi kegagalan: exception, nilai balik nilable berbasis union, dan alat cast beserta risikonya.
- Exceptionraise, rescue, ensure, dan penyusunan hierarki exception khusus.
- Nilai balik nilableMemilih antara error berbasis union dan raise sebagai keputusan desain API.
- Cast dan assertionas, as?, try, dan not_nil! beserta risiko mengabaikan pemeriksaan tipe.
Konkurensi modern Crystal: fiber, channel bergaya CSP, pernyataan select, execution context sejak 1.21, dan keamanan memori bersama.
- Fiber dan spawnFiber sebagai green thread kooperatif yang ringan dan spawn untuk membuatnya.
- ChannelPengiriman pesan bertipe antar fiber dengan channel bergaya CSP.
- Pernyataan selectMenunggu banyak channel sekaligus dengan select dan opsi timeout.
- Execution contextEksekusi fiber dalam execution context yang dapat paralel sejak Crystal 1.21.
- Keamanan threadMutex dan atomic untuk melindungi memori bersama saat paralelisme diaktifkan.
Mengikat pustaka C: deklarasi lib dan fun, pertukaran struct dan pointer dua arah, serta callback dari Crystal ke C.
- lib dan funMendeklarasikan fungsi asing dengan lib, fun, dan atribut @[Link].
- Struct dan pointerMeneruskan struct dan pointer agar layout data C dapat dipakai dua arah.
- CallbackProc Crystal sebagai function pointer yang dipanggil balik oleh kode C.
Stack produksi: HTTP::Server, tur framework Kemal, akses basis data lewat crystal-db, dan pengujian dengan framework spec.
- HTTP::ServerMembangun server HTTP dengan routing handler dan middleware di pustaka standar.
- Tur KemalFramework web bergaya Sinatra: routing, parameter, JSON, dan middleware Kemal.
- Basis dataAkses basis data dengan crystal-db, driver, dan connection pooling.
- Framework specMenulis pengujian dengan describe, it, dan matcher expect.
Menuntaskan proyek nyata: memilih bentuk proyek, merancang tipe lebih dulu, membangun dengan titik kontrol spec, dan tahap performa.
- Pemilihan proyekMenimbang layanan web, alat CLI, atau binding C sebagai bentuk proyek pertama.
- Rancang tipe lebih duluMerancang signature metode dan union sebelum menulis badan kode.
- Membangun dengan titik kontrolMenjaga spec hijau pada setiap commit sebagai titik kontrol kemajuan.
- Tahap performaBuild release, profiling, dan membaca flame graph untuk mengukur performa.