HeadlinesBriefing favicon HeadlinesBriefing.com

বেন্ড ২ এবং ভাইব-কোডিং পাঁctal ব্যাখ্যা

Hacker News •
×

১৮ সেপ্টেম্বর, ২০২৬ বেন্ড আমার ভাইব-কোডিং সম্পর্কে সাধারণ বিন্দুর জন্য একটি উপযোগী উদাহরণ, কারণ এটি हाल का, উচ্চ-প্রোফাইল, এবং এর মধ্যে ऐसे অংশ রয়েছে যা এটি উদাহরণ হিসেবে ব্যবহার করা সহজ করে তোলে। আমি লেখকের ভাষা ডিজাইনের ইতিহাসে কিছুই জানি না, বা তারা নিম্নলিখিত ট্রেডঅফগুলোতে ভাবেছিল কি না এবং আমি মনে করি তারা একটি খराब পছন্দ নিয়েছে। আপনি নিম্নলিখিত “লেখক” শব্দটি “একটি假设的 লেখক” দিয়ে প্রতিস্থাপন করতে পারেন যিনি একই জিনিসটি তৈরি করতে পারতেন। স্পষ্টভাবে, আমি বেন্ডে নেওয়া ডিজাইন সিদ্ধান্তগুলো পছন্দ করি না এবং আমি তা দেখাতে চেয়েছিলাম, কিন্তু তা আমার নিম্নলিখিত মূল বিন্দুর সাথে অতিরিক্তভাবে মিশ্রিত হয়ে গেছে। আমি এখন এটি সম্পাদনা করতে চাই না যাতে কোনো বিদ্যমান মন্তব্য অতিরিক্তভাবে কঠোর মনে পায়, তাই আমি মনে করি সবচেয়ে ভালো সমাধান হলো আমি যখন এই লিখিত করছিলাম তখন আমার মনের মডেল কেমন ছিল তা ব্যাখ্যা করা। এখানে বেন্ডের লেখকের একটি মন্তব্য দেওয়া হল। বেন্ড ২কে AI কোডিং যুগের জন্য একটি ভাষা হিসেবে প্রচার করা হচ্ছে: মানব “আইন” লিখে, AI বাস্তবায়ন এবং প্রমাণ লিখে, এবং কম্পাইলার যাচাই করে যে প্রমাণগুলো সঠিক। এটা খুবই প্রভাবশালী মনে হচ্ছে এবং আমি বুঝতে পারি যে কেন কেউ এমন একটি ভাষা চাইবে। তবে এই ধারণায় কিছু বড় সমস্যা আছে; কিন্তু এই লেখার বিষয় এই নয়। বরং, আমি চাই যে বেন্ড নিজেই কিভাবে ভাইব-কোডিং এর একটি সাধারণ পাঁctal में ফँসেছে তা বলা যায়, যা অনেকের দ্বারা উল্লেখ না করা হয়। আসুন বেসলাইন থেকে শুরু করি যে বেন্ড তার হোম পেজ ডেমো জন্য ডেভেলপারকে কি লিখতে দরকার:https://github.com/bendlang/bend/blob/main/demos/app_win_is_bug_2d/LAWS.bend আমি এখানে এটি পুনরাবৃত্তি করব না কারণ কোডটি খুবই গুরুত্বপূর্ণ নয়। এই নিবন্ধের জন্য গুরুত্বপূর্ণ হলো যে এটা খুব বেশি কোড। শুধুমাত্র 플레이어가 ফ্ল্যাগকে ছুঁই না পায় বা জেতে না পায় তা বলতে ৫৮ লাইনের কোড দরকার। এছাড়াও, অন্যান্য সমস্যা আছে যে LLM গেম সাবপ্রোগ্রামগুলোকে যে কোনো কাজ করার জন্য পুনর্নির্ধারণ করতে পারে; কিন্তু এটি নিবন্ধের মূল বিষয় নয়। পরবর্তী, আসুন দেখি যে এই প্রোগ্রামের জন্য কোড লিখছে LLM কে “আইন”-গুলো সাবूत দিতে কি লিখতে দরকার:https://github.com/bendlang/bend/blob/main/demos/app_win_is_bug_2d/PROOF.bend এটা খুব বেশি। সেই সহজ গুণগুলোকে সাবूत দিতে ৪৪২ লাইনের কোড লাগে। তাহলে আমার এই সমস্যা কি? আমি কেন এটি ভাইব-কোডিং পাঁctal বলছি? সমস্যা হলো যে ভাইব-কোডিং এর মাধ্যমে কোনো সমস্যা সম্পর্কে যথেষ্ট বুঝার আগেই যে একটি অনেক ভালো সমাধান আছে তা বুঝার আগেই একটি বড় সমাধান তৈরি করা সম্ভব। একজন ডেভেলপার একটি পূর্ণ ভাষা এবং কম্পাইলার তৈরি করতে পারে যখন তারা একটি ক্ষেত্রের পরিচিতি সার্ভে দ্বারা সরাসরি তাদের সামনে রাখা উচিত এমন পদ্ধতিটি বুঝে না। আমাদের যে ক্ষেত্রের কথা বলছি তা হলো ফর্মাল ভেরিফিকেশন। এটি উল্লেখযোগ্য যে এই দুটি শব্দ — “ফর্মাল ভেরিফিকেশন” — বেন্ডের ওয়েবপেজ বা এর কোডবেসে কখনো দেখায়নি। ডেভেলপারটি একটি ক্ষেত্রের চার ओर একটি পূর্ণ ভাষা তৈরি করেছে, যতক্ষণ না তারা বুঝেছে যে সেই ক্ষেত্রটি আসলে বিদ্যমান আছে। এই সমস্যা কেন একটি সমস্যা তা স্পষ্টভাবে দেখানোর জন্য, আমরা SPARK-এ বেন্ড যে ডেমোকে ব্যবহার করে তা পুনরায় তৈরি করব, যা ফর্মাল ভেরিফিকেশনের জন্য একটি ওপেন-সোর্স ভাষা এবং কম্পাইলার। বেন্ডের সাথে ন্যায়সঙ্গত থাকতে, আমি নিজেই এইটিকে ভাইব-কোড করেছি — আমি শুধু একটি LLMকে বলেছি যে SPARK-এ এই ডেমোকে পুনরায় তৈরি করো, কোনো অতিরিক্ত নির্দেশনা ছাড়াই:package Game with SPARK_Mode issubtype Column is Integer range 0 .. 11;subtype Row is Integer range 0 .. 7;type State is record X : Column; Y : Row; Won : Boolean;end record; Start : constant State := (8, 5, False);function Wall (X : Column; Y : Row) return Boolean is(((X = 3 or X = 11) and Y <= 3)or ((Y = 3 or Y = 7) and X <= 3));function Cell (X : Column; Y : Row) return Character is(if Wall (X, Y) then '#' elsif X = 1 and Y = 1 then 'F' else '.');-- Inductive invariant: outside the sealed room, off walls, not won.function Safe (G : State) return Boolean is((G. X > 2 or G. Y > 2) and not Wall (G.

X, G. Y) and not G. Won)with Ghost;procedure Step (G : in out State; Key : Character)with Post => (if Safe (G'Old) then Safe (G));-- Both Bend laws, including the actual cell drawn by the terminal.function Replay (Keys : St...