2 poin oleh GN⁺ 2025-12-14 | Belum ada komentar. | Bagikan ke WhatsApp
  • Menyelesaikan puzzle selama 12 hari di Advent of Code 2025 dengan Gleam, dan yang paling mengesankan adalah pesan error setingkat Rust serta gaya fungsional berpusat pada pipeline
  • Fungsi bawaan seperti echo, fold_until, dan list.transpose mempermudah debugging dan penyelesaian masalah kombinatorial, sementara keamanan berbasis tipe option bekerja efektif untuk menangani puzzle grid
  • Ketiadaan file IO dan fitur regex di pustaka standar, batasan pattern matching list, serta sintaks perbandingan yang eksplisit disebut sebagai hal yang terasa merepotkan saat sering digunakan
  • Karena adanya perbedaan penanganan integer antara target Erlang VM dan JavaScript, penggunaan bigi menjadi perlu, dan pada beberapa puzzle masalah diselesaikan dengan memanggil alat eksternal (glpsol)
  • Secara keseluruhan, peralihan ke pola pikir fungsional membuat penyelesaian puzzle menjadi lebih jelas, dan penulis menyatakan harapan untuk mencoba menerapkan Gleam pada proyek nyata seperti pengembangan web server

Advent of Code 2025 dan pilihan menggunakan Gleam

  • Penulis, yang setiap tahun selalu menuntaskan Advent of Code, tahun ini memilih bahasa Gleam untuk menyelesaikan puzzle selama 12 hari
    • Acara tahun ini dipangkas menjadi 12 hari alih-alih 25 hari, dan meskipun tingkat kesulitan tiap soal tinggi, strukturnya cocok untuk belajar
  • Laju puzzle yang cepat dan munculnya masalah kompleks sebelum toolset selesai dibangun menjadikannya lingkungan yang ideal untuk mempelajari bahasa baru

Kelebihan bahasa Gleam

  • Ditandai dengan sintaks yang ringkas, pesan error compiler yang berguna, dan umpan balik ramah setingkat Rust
  • Gaya fungsional yang berpusat pada operator pipe sangat cocok dengan struktur soal AoC (parsing → transformasi → fold)
  • Ekstensi Gleam untuk IntelliJ dan LSP bekerja stabil sehingga lingkungan pengembangan terasa nyaman
  • Functional programming (FP) mendorong perubahan cara berpikir dari kode imperatif menjadi cara mendeskripsikan esensi masalah

Fitur utama dan contoh penggunaan kode

  • echo: fungsi output sederhana untuk memeriksa nilai di tengah pipeline, sehingga debugging bisa dilakukan tanpa format string
    • Tidak adanya fitur interpolasi string disebut sebagai ketidaknyamanan karena pembuatan teks jadi sering memakai operator <>
  • Tipe option (dict.get): memungkinkan penelusuran tetangga pada puzzle grid secara aman tanpa pemeriksaan batas manual
  • Utilitas list
    • list.transpose: menyederhanakan struktur puzzle lewat operasi transpose matriks
    • list.combination_pairs: membuat pasangan titik 3D dalam satu baris tanpa nested loop
    • fold_until: fungsi fold yang bisa berhenti lebih awal saat kondisi terpenuhi, efisien untuk perhitungan berulang dalam puzzle

Batasan dan hal yang kurang nyaman di Gleam

  • Tidak ada file IO di pustaka standar, sehingga diganti dengan paket simplifile
  • Fitur regex juga memerlukan dependensi eksternal (gleam_regexp)
  • Batasan pattern matching list: bentuk [first, ..middle, last] tidak didukung
  • Penanganan eksplisit untuk operasi perbandingan: harus memakai tipe order, sehingga sintaks menjadi lebih panjang untuk perbandingan sederhana

Penggunaan lanjutan dan contoh per puzzle

  • bigi: digunakan untuk mencegah integer overflow saat menargetkan JavaScript
  • XOR bitmask: pada Day 10-1, masalah toggle lampu dimodelkan dengan operasi XOR agar terselesaikan secara efisien
  • Pemanggilan glpsol: pada Day 10-2, file LP dibuat lalu perintah eksternal dijalankan untuk menyelesaikan persamaan linear
  • Kunci memoization: pada Day 11-2, node dan state dipakai bersama sebagai key sehingga perhitungan langsung selesai
  • Puzzle terakhir bergantung pada asumsi input, dan diselesaikan dengan perbandingan area sederhana (heuristic_area <= max_area)

Kesimpulan dan rencana ke depan

  • Gleam menunjukkan kekuatan dalam keamanan dan daya ekspresi meski memiliki keterbatasan pustaka standar
  • Pipeline, tipe option/result, fungsi list, dan fold_until membuat penyelesaian puzzle lebih jelas
  • Ke depan, penulis berencana menerapkannya pada proyek nyata seperti pengembangan web server, dan menyatakan niat untuk terus memakai Gleam pada Advent of Code tahun berikutnya
  • Seluruh source code dipublikasikan di repositori GitHub (tymscar/Advent-Of-Code/2025/gleam/aoc/src)

Belum ada komentar.

Belum ada komentar.