3 puan yazan GN⁺ 2024-10-25 | 1 yorum | WhatsApp'ta paylaş
  • Pretty C, C ile uyumlu yeni bir script dili olup dinamik tipleme, jenerik yineleme, kaynak takibi gibi özellikler sunuyor
  • C ve tüm kütüphanelerle geriye dönük uyumluluğu koruyor
  • Lua, Python, JavaScript ve Lisp'ten ilham almış

Hedefler

  • C geliştiricilerine bol miktarda sözdizimsel sugar sunarak C'yi daha kolay kullanılır hale getirmek
  • Lua, Python, JavaScript, Ruby gibi çeşitli dillerin yerini alabilecek nihai script dili olarak konumlanmak
  • Yalnızca tek bir header dosyası ekleyerek tüm kod tabanlarını yeni başlayanlar için daha erişilebilir hale getirmek

Başlarken

  • GitHub deposunu klonlayabilir veya pretty.h dosyasını kopyalayarak kullanabilirsiniz

Sunulan kolaylıklar

Dahil edilen standart header'lar

  • stdbool.h ile true, false, bool sağlanır
  • stdint.h ile sabit genişlikli tamsayı türleri sağlanır
  • iso646.h ile daha okunaklı alternatif operatörler sağlanır

Basit makrolar

  • max, min, len, default, limit, between, divisible gibi makrolar sunulur

Yeni türler

  • string, byte, bytes, any gibi tür takma adları sunulur
  • uchar, ushort, uint, ulong gibi tamsayı kısaltmaları sunulur

Yeni takma adlar

  • eq, is, bitnot, bitxor gibi operatör takma adları sunulur
  • below, above, upto, downto gibi karşılaştırma operatörleri sunulur
  • even, odd, positive, negative, zero, empty gibi sayı/veri predicate'leri sunulur
  • nil, until, elif, ifnt, repeat, done~/~finish, pass gibi takma adlar sunulur

Tür çıkarımı (GCC, Clang veya C23+)

  • var, let, local anahtar sözcükleri kullanılarak tür çıkarımı yapılabilir

Jenerik çıktı (C11+)

  • print, println ile farklı türlerde veriler yazdırılabilir

Jenerik eşitlik (C11+)

  • equal ile farklı türlerde veriler karşılaştırılabilir

Daha okunaklı üçlü operatör

  • when, then, other, otherwise, only, otherwhen gibi anahtar sözcüklerle okunaklı bir üçlü operatör kullanılabilir

for makroları

  • foreach, forthese, fortimes, forrange, forrangeby gibi makrolarla çeşitli yineleme kalıpları sunulur

Atama makroları

  • new, vector, delete gibi makrolarla basit bellek ayırma ve serbest bırakma işlemleri yapılabilir

Blok yardımcıları

  • lambda, with, defer, try, catch gibi blok yardımcıları sunulur

GN⁺ Özeti

Pretty C, C diline çeşitli sözdizimsel sugar ekleyerek geliştiricilerin daha kolay kod yazmasına yardımcı olan bir proje. Özellikle C ile geriye dönük uyumluluğu korurken Lua, Python, JavaScript gibi dillerden ilham alan çeşitli özellikler sunuyor. Bu özellikler, C geliştiricilerinin daha kısa ve daha okunaklı kod yazmasına yardımcı olabilir. Benzer işlevler sunan projeler arasında Zig ve Nim bulunuyor.

1 yorum

 
GN⁺ 2024-10-25
Hacker News görüşleri
  • C içinde DSL oluşturma geleneği eskidir. Stephen Bourne, C önişlemcisini kullanarak ALGOL benzeri bir shell yazmak istemişti
  • Bunun bir şaka mı olduğu yoksa yazarın kafasının mı karışık olduğu net değil. Bu scripting değil ve güçlü tipler getirdiğini iddia ediyor ama aslında tiplerle ilgili hiçbir şey yapmıyor. Lua ve Lisp'ten esinlenilmiş operatör takma adları getiriyor ama bunlar iki dilde de yok
  • Kendini bir scripting dili olarak tanıtıyor ama programı derlemeniz gerekiyor. CINT eklerseniz anında çalıştırma ve REPL kullanabilirsiniz
  • C geliştiricilerine şeker komasına sokacak kadar çok syntax sugar sunuyor. Eğlenceli
  • Python 2 ile aynı hatayı yapıyor. String ve byte aynı tip değildir ve öyle ele alınmamalıdır
  • Bu ilginizi çektiyse libcello.h da hoşunuza gidebilir
  • Java ile yazılmış gibi görünen bir C++ kod tabanını incelediğimi hatırlıyorum. Her şey camelCase ile adlandırılmıştı, tüm sınıf değişkenleri için getter ve setter vardı ve her yerde interface bulunuyordu
  • CNoEvil ve ogw'ye eklenmesi gereken birkaç şey var. Bu proje birkaç ayda bir yeniden ortaya çıktığında sanki hep daha fazlası oluyor
  • ifnt, unless kadar okunaklı değil
  • Readme'nin pretty.h içine örülüp örülemeyeceğini merak ediyorum. orgfile içindeki kod bloklarının ne kadar kapsamlı olduğu da ayrı bir konu. Readme'de düşünce sürecini açıklayış biçimini beğendim