মূল লেখায় যান

Examples and recipes

Beans repo-র সাথে অনেকগুলো উদাহরণ প্রোগ্রাম আসে, examples/ ফোল্ডারের ভেতরে। প্রতিটাই আসল, চালানো যায় এমন .b ফাইল, আর একেকটা ভাষার একেকটা অংশ দেখায়। এই পেজে দেখানো হলো এগুলো কীভাবে চালানো যায়, আর কোনগুলো পড়ে দেখা দরকার।

একটা উদাহরণ কীভাবে চালাবে

“একটা উদাহরণ কীভাবে চালাবে” সেকশন

beansc run-এর পরে একটা ফাইলের নাম দিন:

Terminal window
beansc run examples/hello.b

বেশিরভাগ উদাহরণই দুইভাবে কাজ করে — beansc run (interpreter) দিয়েও, আর beansc build (native binary) দিয়েও। দুইভাবেই একই output পাওয়া যায়।

multi-package উদাহরণটা একটা পুরো project, তাই সেটা তার main.b থেকে চালাতে হয়:

Terminal window
beansc run examples/shop/main.b

কিছু উদাহরণ আবার target-gated — এগুলোর জন্য বিশেষ target বা CPU লাগে, সাধারণ desktop build-এ চলবে না। এমনগুলো নিচে আলাদা করে চিহ্নিত করা আছে।

উদাহরণকী দেখায়চালানো যায়?
hello.bHello world আর string interpolationহ্যাঁ
tour.bএক ফাইলে ভাষার সব আইডিয়ার একটা ট্যুরহ্যাঁ

বিস্তারিত দেখুন Hello আর ট্যুর পেজে।

উদাহরণকী দেখায়চালানো যায়?
oop_classes.bpriv method আর field, static field, abstract method, interface, আর একটা singletonহ্যাঁ
generic_structs.bGeneric struct, default, read method, inout fn, আর static factoryহ্যাঁ

বিস্তারিত দেখুন OOP class আর value type পেজে।

উদাহরণকী দেখায়চালানো যায়?
threads.bOS thread, generic, enum, Option/Result, decimalহ্যাঁ
atomics.bTyped Atomic<T>, সাথে explicit MemoryOrderহ্যাঁ
wide_concurrency.bchannel-এর মধ্য দিয়ে struct আর enum value পাঠানোহ্যাঁ
wide_sync.bMutex-এর মধ্য দিয়ে struct আর enum valueহ্যাঁ

বিস্তারিত দেখুন Thread আর channel আর Atomics পেজে।

উদাহরণকী দেখায়চালানো যায়?
files.bFile/Dir static, positional I/O, errorহ্যাঁ
reader.bBuffered করে লাইন পড়াহ্যাঁ
kv.bAppend-only key-value store, সাথে durable commitহ্যাঁ
locks.bAdvisory file lock (flock), single-writer প্যাটার্নহ্যাঁ
mmap.bপুরো ফাইলকে memory-তে map করাহ্যাঁ
shared_memory.bPOSIX shared memory-কে MMap হিসেবেহ্যাঁ

বিস্তারিত দেখুন File আর একটা KV store পেজে।

উদাহরণকী দেখায়চালানো যায়?
net.bএক process-এই loopback-এর উপর TCP আর UDPহ্যাঁ
poller.bঅনেক descriptor-এর জন্য একসাথে wait করা (epoll/kqueue)হ্যাঁ
signals.bpoller দিয়ে signal-কে data হিসেবে ধরাহ্যাঁ

বিস্তারিত দেখুন Networking পেজে।

উদাহরণকী দেখায়চালানো যায়?
ffi.blibc-তে extern "C" call, unsafe-এর ভেতরে RawPtrহ্যাঁ
c_layout_structs.bextern "C" struct layoutহ্যাঁ
c_layout_unions.bextern "C" union layoutহ্যাঁ
dynamic_library.bচলতে চলতে একটা shared library load করা, একটা address-এ call করাহ্যাঁ (load করার মতো একটা library লাগবে)
packed.bpacked আর align(N)হ্যাঁ
layout.bsize_of / align_of / offset_ofহ্যাঁ
raw_slices.bSlice<T>হ্যাঁ
unsafe_raw.bRawPtr null / alloc / offset / read / writeহ্যাঁ

বিস্তারিত দেখুন C interop (FFI) পেজে।

উদাহরণকী দেখায়চালানো যায়?
box.bGeneric move-only handleহ্যাঁ
arena.bGeneric move-only handleহ্যাঁ
shared_weak.bShared আর Weakহ্যাঁ
ordered_map.bOrderedMapহ্যাঁ
cycles.bcollector যেভাবে reference cycle free করেহ্যাঁ
ctors.binit / deinit চুক্তিহ্যাঁ
generic_deinit.bdeinit আর একটা closure factory সহ একটা generic classহ্যাঁ

Process, সময়, আর মেশিন

“Process, সময়, আর মেশিন” সেকশন
উদাহরণকী দেখায়চালানো যায়?
child_process.bCommand.start(), যেটা একটা Child ফেরত দেয় (async ব্যবহার করে)হ্যাঁ
processes.bCommand.run()হ্যাঁ
clocks_random.bসময় আর randomহ্যাঁ
cpu_dispatch.bcpu.has আর একটা feature-gated functionহ্যাঁ (feature-gated কোডের জন্য ওই CPU feature লাগবে)
intrinsics.bstd.intrinsicহ্যাঁ
inline_asm.bstd.asmহ্যাঁ
target_info.bstd.targetহ্যাঁ
উদাহরণকী দেখায়চালানো যায়?
simd.bSimd4f32 fused multiply-addহ্যাঁ (কিছু SIMD-এর জন্য CPU feature লাগে)
simd_families.bSIMD family-র নামকরণ, width আর feature নিয়মহ্যাঁ (কিছু SIMD-এর জন্য CPU feature লাগে)
উদাহরণকী দেখায়চালানো যায়?
fmt.bstd.fmtহ্যাঁ
strings.bString নিয়ে কাজহ্যাঁ
bytes.bBytes নিয়ে কাজহ্যাঁ
containers.bCollectionহ্যাঁ
stdlib_beans.bstdlib-র একটা ট্যুরহ্যাঁ

এই ট্যুরগুলোর কিছু কিছু ইচ্ছা করেই একটা panic দিয়ে শেষ হয়। এটা এদের test হিসেবে কাজ করারই একটা অংশ, ভয়ের কিছু নেই।

উদাহরণকী দেখায়চালানো যায়?
shop/তিনটা package, package পেরিয়ে interface আর genericহ্যাঁ, examples/shop/main.b দিয়ে

বিস্তারিত দেখুন একটা local-package project পেজে।

এগুলোর জন্য নির্দিষ্ট target বা runtime লাগে, সাধারণ desktop build-এ চলবে না:

উদাহরণকী লাগবে
embedded.bএকটা 32-bit no-OS target (সেখানে decimal চলবে না)
freestanding.b--runtime freestanding

language guide-এ সব feature একের পর এক আছে, আর builtin referencestandard library reference রয়েছে — কিছু খুঁজতে চাইলে সেখানে দেখে নেওয়া যায়।