3 poin oleh GN⁺ 2024-10-25 | 1 komentar | Bagikan ke WhatsApp
  • Pretty C adalah bahasa scripting baru yang kompatibel dengan C, dan menyediakan fitur seperti dynamic typing, iterasi generik, serta pelacakan resource
  • Tetap menjaga backward compatibility dengan C dan semua library-nya
  • Terinspirasi dari Lua, Python, JavaScript, dan Lisp

Tujuan

  • Memberikan banyak sugar sintaksis kepada pengembang C agar C lebih mudah digunakan
  • Memposisikan diri sebagai bahasa scripting pamungkas yang dapat menggantikan berbagai bahasa seperti Lua, Python, JavaScript, dan Ruby
  • Mengubah seluruh codebase menjadi lebih ramah bagi pemula hanya dengan menyertakan satu file header

Memulai

  • Bisa digunakan dengan meng-clone repositori GitHub atau menyalin file pretty.h

Fitur kemudahan yang disediakan

Header standar yang disertakan

  • stdbool.h menyediakan true, false, bool
  • stdint.h menyediakan tipe integer fixed-width
  • iso646.h menyediakan alternatif operator yang lebih mudah dibaca

Makro sederhana

  • Menyediakan makro seperti max, min, len, default, limit, between, divisible

Tipe baru

  • Menyediakan type alias seperti string, byte, bytes, any
  • Menyediakan bentuk singkat integer seperti uchar, ushort, uint, ulong

Alias baru

  • Menyediakan alias operator seperti eq, is, bitnot, bitxor
  • Menyediakan operator perbandingan seperti below, above, upto, downto
  • Menyediakan predikat angka/data seperti even, odd, positive, negative, zero, empty
  • Menyediakan alias seperti nil, until, elif, ifnt, repeat, done~/~finish, pass

Type inference (GCC, Clang, atau C23+)

  • Bisa melakukan type inference dengan kata kunci var, let, local

Output generik (C11+)

  • Dapat mencetak data dari berbagai tipe dengan print, println

Kesetaraan generik (C11+)

  • Dapat membandingkan data dari berbagai tipe dengan equal

Operator ternary yang lebih rapi

  • Dapat menggunakan operator ternary yang lebih mudah dibaca dengan kata kunci seperti when, then, other, otherwise, only, otherwhen

Makro for

  • Menyediakan berbagai pola iterasi dengan makro seperti foreach, forthese, fortimes, forrange, forrangeby

Makro alokasi

  • Memungkinkan alokasi dan dealokasi memori sederhana dengan makro seperti new, vector, delete

Utilitas blok

  • Menyediakan utilitas blok seperti lambda, with, defer, try, catch

Ringkasan GN⁺

Pretty C adalah proyek yang menambahkan berbagai sugar sintaksis ke bahasa C agar pengembang dapat menulis kode dengan lebih mudah. Secara khusus, proyek ini tetap mempertahankan backward compatibility dengan C sambil menghadirkan beragam fitur yang terinspirasi dari bahasa seperti Lua, Python, dan JavaScript. Fitur-fitur ini dapat membantu pengembang C menulis kode yang lebih ringkas dan lebih mudah dibaca. Proyek dengan fungsi serupa antara lain Zig dan Nim.

1 komentar

 
GN⁺ 2024-10-25
Komentar Hacker News
  • Tradisi membuat DSL di dalam C sudah lama ada. Stephen Bourne menggunakan preprocessor C untuk mencoba menulis shell yang mirip ALGOL
  • Tidak jelas apakah ini lelucon atau penulisnya memang bingung. Ini bukan scripting, dan mengklaim memperkenalkan strong typing, tetapi sebenarnya tidak melakukan apa pun terkait tipe. Ini memperkenalkan alias operator yang dimodelkan dari Lua dan Lisp, tetapi tidak ada di kedua bahasa tersebut
  • Mengklaim sebagai bahasa scripting, tetapi programnya harus dikompilasi. Dengan menambahkan CINT, Anda bisa mendapatkan eksekusi instan dan REPL
  • Memberikan begitu banyak syntactic sugar hingga bisa membuat developer C kena serangan jantung diabetik. Lucu
  • Mengulangi kesalahan seperti Python 2. String dan byte bukan tipe yang sama dan tidak boleh diperlakukan demikian
  • Jika ini terasa menarik, Anda mungkin juga akan menyukai libcello.h
  • Saya ingat pernah meninjau codebase C++ yang tampak seperti ditulis dengan Java. Semua hal diberi nama dalam camelCase, ada getter dan setter untuk setiap variabel kelas, dan interface ada di mana-mana
  • Ada beberapa hal yang perlu ditambahkan ke CNoEvil dan ogw. Rasanya setiap kali proyek ini muncul lagi setiap beberapa bulan, selalu ada lebih banyak hal seperti ini
  • unless lebih mudah dibaca daripada ifnt
  • Penasaran apakah Readme bisa ditenun menjadi pretty.h. Apakah code block di orgfile cukup komprehensif. Saya suka cara Readme menjelaskan alur pemikirannya