C:
ইয়ামেল নিয়ে কাজ করা
কিভাবে:
C তে YAML এর সাথে কাজ করতে একটি লাইব্রেরির প্রয়োজন, কারণ স্ট্যান্ডার্ড C লাইব্রেরি YAML পার্সিং বা সিরিয়ালাইজেশনের জন্য সরাসরি সাপোর্ট প্রদান করে না। C এর জন্য সবচেয়ে জনপ্রিয় YAML লাইব্রেরিগুলির একটি হল libyaml
, যা YAML পার্স করা এবং ইমিট করার জন্য নিম্ন-স্তর এবং উচ্চ-স্তরের ইন্টারফেস উভয়ই প্রদান করে। নিম্নে libyaml
ব্যবহার করে একটি সাধারণ YAML ফাইল পার্স করার উদাহরণ দেওয়া হল:
প্রথমে, libyaml
লাইব্রেরি ইনস্টল করা প্রয়োজন। যদি আপনি একটি Unix-এর মত সিস্টেমে আছেন, তবে সাধারণত আপনি আপনার প্যাকেজ ম্যানেজারের মাধ্যমে এটি ইনস্টল করতে পারেন। উদাহরণস্বরূপ, উবুন্টুতে:
sudo apt-get install libyaml-dev
এরপর, একটি সাধারণ YAML ফাইলের কথা ভাবুন যা config.yaml
নামে পরিচিত:
name: John Doe
age: 29
married: false
এখানে C তে এই YAML ফাইল পার্স করার একটি মৌলিক উদাহরণ দেওয়া হল:
#include <yaml.h>
#include <stdio.h>
#include <stdlib.h>
void process_yaml_file(const char *filename) {
FILE *fh = fopen(filename, "rb");
yaml_parser_t parser;
yaml_event_t event;
if (!yaml_parser_initialize(&parser))
fputs("Failed to initialize YAML parser!\n", stderr);
if (fh == NULL)
fputs("Failed to open file!\n", stderr);
yaml_parser_set_input_file(&parser, fh);
while (1) {
if (!yaml_parser_parse(&parser, &event))
break;
if (event.type == YAML_SCALAR_EVENT) {
printf("Value: %s\n", event.data.scalar.value);
}
if (event.type == YAML_STREAM_END_EVENT)
break;
yaml_event_delete(&event);
}
yaml_parser_delete(&parser);
fclose(fh);
}
int main() {
process_yaml_file("config.yaml");
return 0;
}
এই সরল প্রোগ্রামটি একটি YAML ফাইল খুলে, YAML পার্সার আরম্ভ করে এবং ফাইলটি পড়ে, স্কেলার মানগুলি প্রিন্ট করে (এই উদাহরণে, আমাদের সাধারণ YAML এর ক্ষেত্রগুলি)। লক্ষ্য করুন যে এই সরল উদাহরণে ভুল চেকিং সামান্য এবং প্রোডাকশন কোডে আরও দৃঢ় হওয়া উচিত।
config.yaml
এর সাথে প্রোগ্রাম চালানো হলে আউটপুট হবে:
Value: John Doe
Value: 29
Value: false
গভীর ডুব
YAML ২০০১ সালে প্রথম চালু হয়েছিল এবং এটি XML বা JSON এর মত অন্যান্য ডেটা সিরিয়ালাইজেশন ফর্ম্যাটের তুলনায় আরও পড়াযোগ্য এবং ব্যবহারকারী-বান্ধব হওয়ার ডিজাইনে C, Perl, এবং Python এর মত ভাষাগুলি থেকে উদ্ধৃতি নিয়েছিল। এর পঠনীয়তা এবং মানবসৃষ্ট পরিবর্তনের সুবিধার সুবাদে YAML অনেক সুবিধা সত্ত্বেও, এর ইন্ডেন্টেশনের ওপর নির্ভরতা এবং রেফারেন্স এবং কাস্টম টাইপ সহ এর বিস্তৃত ফিচার সেটের কারণে প্রোগ্রামেটিকভাবে পার্স করা জটিল হতে পারে।
libyaml
C তে YAML পার্স করা এবং ইমিট করার জন্য দৃঢ়, নিম্ন-স্তরের অ্যাক্সেস প্রদান করে, তবে এর বাক্বিস্তৃত API এর কারণে সাধারণ কাজের জন্য এটি ব্যবহার করা কষ্টসাধ্য হতে পারে। এই কারণগুলির জন্য, কিছু প্রোগ্রামার C তে কাজ করার সময় JSON এর মত অন্যান্য ডেটা সিরিয়ালাইজেশন ফর্ম্যাট বা উচ্চ-স্তরের লাইব্রেরিগুলি ব্যবহার করতে পছন্দ করেন, বিশেষ করে যখন নূন্যতম কোড ওভারহেডের সাথে কার্যকর পার্সিং অগ্রাধিকার। তবে, YAML কনফিগারেশন ফাইল এবং মানুষের পঠনীয়তার জন্য একটি জনপ্রিয় পছন্দ হিসেবে অব্যাহত থাকে। নির্দিষ্ট অ্যাপ্লিকেশনের জন্য আরও সুবিধা প্রদান করতে TinyYAML বা উচ্চ-স্তরের ইন্টারপ্রেটার এম্বেড করা (যেমন, Python বা Lua এম্বেড করা) ব্যবহারের মাধ্যমে ব্যবহারের সুবিধা এবং পারফরম্যান্সের প্রয়োজনের মধ্যে একটি ভারসাম্য তৈরি করতে পারে।