3 पॉइंट द्वारा GN⁺ 2024-10-25 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Pretty C, C के साथ compatible एक नई scripting भाषा है, जो dynamic typing, generic iteration, resource tracking जैसी सुविधाएँ प्रदान करती है
  • यह C और सभी libraries के साथ backward compatibility बनाए रखती है
  • यह Lua, Python, JavaScript, Lisp से प्रेरित है

लक्ष्य

  • C developers को भरपूर syntactic sugar देकर C को और आसान बनाना
  • Lua, Python, JavaScript, Ruby जैसी कई भाषाओं की जगह लेने वाली अंतिम scripting भाषा के रूप में स्थापित होना
  • सिर्फ एक header file शामिल करके किसी भी codebase को beginner-friendly बनाना

शुरू करना

  • GitHub repository को clone करें या pretty.h फ़ाइल को कॉपी करके उपयोग कर सकते हैं

दी जाने वाली सुविधाजनक विशेषताएँ

शामिल standard headers

  • stdbool.h के जरिए true, false, bool उपलब्ध
  • stdint.h के जरिए fixed-width integer types उपलब्ध
  • iso646.h के जरिए अधिक readable operator alternatives उपलब्ध

सरल macros

  • max, min, len, default, limit, between, divisible जैसे macros उपलब्ध

नए types

  • string, byte, bytes, any जैसे type aliases उपलब्ध
  • uchar, ushort, uint, ulong जैसे integer shorthands उपलब्ध

नए aliases

  • eq, is, bitnot, bitxor जैसे operator aliases उपलब्ध
  • below, above, upto, downto जैसे comparison operators उपलब्ध
  • even, odd, positive, negative, zero, empty जैसे numeric/data predicates उपलब्ध
  • nil, until, elif, ifnt, repeat, done~/~finish, pass जैसे aliases उपलब्ध

type inference (GCC, Clang, या C23+)

  • var, let, local keywords का उपयोग करके type inference संभव

generic output (C11+)

  • print, println से विभिन्न types का data output किया जा सकता है

generic equality (C11+)

  • equal से विभिन्न types के data की तुलना की जा सकती है

सुंदर ternary operator

  • when, then, other, otherwise, only, otherwhen जैसे keywords के साथ अधिक readable ternary operator का उपयोग संभव

for macros

  • foreach, forthese, fortimes, forrange, forrangeby जैसे macros से विभिन्न iteration patterns उपलब्ध

assignment macros

  • new, vector, delete जैसे macros से आसान memory allocation और deallocation संभव

block utilities

  • lambda, with, defer, try, catch जैसी block utilities उपलब्ध

GN⁺ का सार

Pretty C, C भाषा में विभिन्न syntactic sugar जोड़ने वाला एक project है, जो developers को कोड अधिक आसानी से लिखने में मदद करता है। खास तौर पर, यह C की backward compatibility बनाए रखते हुए Lua, Python, JavaScript जैसी भाषाओं से प्रेरित कई सुविधाएँ प्रदान करता है। ये सुविधाएँ C developers को अधिक संक्षिप्त और readable code लिखने में मदद कर सकती हैं। समान प्रकार की सुविधाएँ देने वाले projects में Zig, Nim शामिल हैं।

1 टिप्पणियां

 
GN⁺ 2024-10-25
Hacker News की राय
  • C के भीतर DSL बनाने की परंपरा काफ़ी पुरानी है। Stephen Bourne ने C preprocessor का उपयोग करके ALGOL जैसी shell लिखने की कोशिश की थी
  • यह स्पष्ट नहीं है कि यह मज़ाक है या लेखक खुद भ्रमित है। यह scripting नहीं है, और यह strong typing लाने का दावा करता है, लेकिन वास्तव में type के बारे में कुछ भी नहीं करता। यह Lua और Lisp पर आधारित operator alias जोड़ता है, लेकिन वे दोनों भाषाओं में मौजूद ही नहीं हैं
  • यह खुद को scripting language बताता है, लेकिन program को compile करना पड़ता है। अगर CINT जोड़ दिया जाए तो तुरंत execution और REPL इस्तेमाल किया जा सकता है
  • यह C developers को diabetes पैदा करने वाले heart attack तक दिला देने लायक syntax sugar देता है। मज़ेदार है
  • यह Python 2 जैसी गलती करता है। string और byte एक ही type नहीं हैं, और इनके साथ वैसा व्यवहार नहीं किया जाना चाहिए
  • अगर यह दिलचस्प लगा, तो libcello.h भी पसंद आ सकता है
  • याद आता है कि मैंने एक बार ऐसा C++ codebase देखा था जो Java में लिखा हुआ लगता था। हर चीज़ camelCase में named थी, हर class variable के लिए getter और setter थे, और हर जगह interface थे
  • CNoEvil और ogw में जोड़ने के लिए यहाँ कुछ चीज़ें हैं। यह project हर कुछ महीनों में फिर सामने आता है, और हर बार लगता है कि इसमें और भी ज़्यादा चीज़ें हैं
  • "ifnt" की तुलना में "unless" पढ़ने में ज़्यादा आसान है
  • सोच रहा हूँ कि क्या Readme को pretty.h में weave किया जा सकता है। orgfile के code block कितने comprehensive हैं, यह भी सवाल है। Readme में जिस तरह thought process समझाई गई है, वह पसंद आई