با TOML، رقیب احتمالی JSON آشنا شوید

امتیاز: ۳۶ امیررضا قادری دوشنبه ۷ اسفند ۱۳۹۱ - ۱۶:۰۰ دیدگاه‌ها ۵ حامد رمضانیان منبع

امیررضا قادری می‌نویسد:

یکی از چیزهایی که برنامه‌نویسان علاقه‌ی زیادی به آن دارند، فرم دادن به داده‌هایشان به شکلی ساده و سبک و قابل فهم برای انسان است. روزگاری تصور می‌شد که فرمت XML جوابی است که همه منتظر آن بوده‌اند. خوشبختانه ، با معرفی فرمت جدیدی با نام JSON، زیاد طول نکشید که XML محبوبیت خود را از دست داد و JSON به عنوان فرمت محبوب برنامه‌نویسان جای خودش را در برنامه ها باز کرد.

اگر برنامه‌نویس باشید، می‌دانید که همیشه در دنیای برنامه‌نویسی پس از مدتی تکنولوژی جدیدی از راه می‌رسد و توجه همه را به خودش جلب می‌کند. در همین راستا، آقای «تام پرستون-ورنر» که او را به عنوان یکی از پدیدآورندگان سایت Github می‌شناسید، به تازگی فرمت TOML را معرفی کرده که در همین مدت کم با استقبال زیادی مواجه شده است.

هنوز نیامده، پیاده‌سازی های زیادی در زبان‌های برنامه‌نویسی مختلف برای TOML ایجاد شده! دلیل این محبوبیت؟ جدای از اینکه TOML به نسبت JSON و بقیه رقبا بسیار ساده‌تر و تمیز تر است، ساختار اصلی‌اش بر مبنای فایل‌های دوست داشتنی INI بنا شده است. درست است، همان فایل‌های قدیمی INI‌ که قالبا برای ذخیره تنظیمات برنامه‌ها استفاده می‌شد. با این حساب، احتمالا از این به بعد نام TOML‌را زیاد خواهیم شنید!


دیدگاه‌ها

avatar
حامد رمضانیان
بیش از ۴ سال قبل

شاید یکی از دلایلی که JSON معروف شد به خاطر کم حجم بودن structure آن نسبت به XML بود و این معروفش کرد.
اما این TOML فکر می‌کنم حجم بیشتری رو نسبت به JSON داره و اونم به خاطر ایندنت‌ها باشه

avatar
امیررضا قادری در جواب حامد رمضانیان
بیش از ۴ سال قبل وب‌سایت

جدای از چیزی که گفتی، یکی دیگه از دلایل معروفیت JSON به نظر من راحتی کار باهاش تو زبان های دینامیک مثل پایتون و روبی و جاوااسکریپت بود. توی C و Java و Go و بقیه زبان های استاتیک اینقدر راحت نیست کار باهاش. در مورد TOML اینطور که گفته، فاصله خالی رو حساب نمیکنه اصلا، اختیاری هستش. و مهمتر اینکه type ها باهم قاطی نمیشن. اینجوری هوای زبان های استاتیک رو هم داشته این وسط که کار برای اون ها هم راحت شه.

avatar
bijan در جواب امیررضا قادری
بیش از ۴ سال قبل

دیدگاه‌ها درباره کارایی چنین تکنیک‌هایی معمولا متفاوت و بسته به تجربه و کارایی این تکنیک برای دولوپر داره ولی باید توجه داشته باشیم که فرمت xml فرمت استانداردیه به دو دلیل مهم: اول اینکه خواناست (human readable) و دوم اینکه خوش فُرمه (well formed): یعنی شما به راحتی میتونید اگر پرونده‌ای ناقص به دستتون برسه، مثلا به دلایل مشکلات مختلف در شبکه متوجه این مشکل بشید. نقصی در تکنیک‌هایی که اشاره میکنید خیلی ضعیف پیاده شده. نتیجه: این تکنیک‌ها تا زمانی که تبدیل به اختیار برای دولوپر بشن خیلی هم خوبن ولی استاندارد شدنشون زیاد عاقلانه نیست :)

avatar
امیررضا قادری در جواب bijan
بیش از ۴ سال قبل وب‌سایت

در مورد XML و JSON : هردو human readable هستن ( به نظر من JSON خیلی خواناتره). هر دو well formed هستن. (پارسرهای های هردو خطاها رو براحتی کشف میکنن). و جالب تر اینکه هر دو استاندرد هستند! JSON زیر مجموعه استاندارد ECMA-262 هست و برای همین هم جداگانه استاندارد سازی نشد! دلایلی که برای XML ‌ذکر کردید کاملا برای JSON هم صدق میکنه. با این فرق که حجم JSON کمتره، سرعت JSON هم تقریبا در هر زبانی بیشتره و کار باهاش هم تو زبان های دینامیک آسون تره.
استاندارد شدن برای خیلی ها مهم نیست. در واقعا خیلی ها مخالف استاندارد سازی هستن! نمونه اش پایتون که نه استاندارد شده، نه اجتماعش تمایلی برای این کار دارن. برعکس استانداردهای مواد غذایی، استانداردهای کامپیوتری کیفیت چیزی رو ثابت «نمیکنن». کار استاندادرهای کامپیوتری چیز دیگه ایی هست کلا: اینکه برای پیاده‌سازی اون تکنولوژی به یه اتفاق جمعی برسن. که در ۹۰ درصد اوقات هم کسی برای خروجی کارشون اهمیتی قائل نمیشه :) نمونش C یا HTML که هنوز هم که هنوزه هرکی هرجوری دلش می‌خواد این ها رو پیاده سازی میکنه.
اما در کل با حرف شما موافقم که انتخاب بین این ها بیشتر به تصمیم شخصی خود برنامه نویس ربط داره.

avatar
bijan در جواب امیررضا قادری
بیش از ۴ سال قبل

اوه. در مورد well-formed بودن من ناخوداگاه اشتباه کردم، از تذکرتون ممنون :) در مورد زمان و پیچیدگی تفسیر داده‌ها، مطمئنا json و تا جایی که دیدم (و فکر میکنم) TOMLدر شرایط معمول بهینه‌تر هستن ولی تفاوت بین این دو در ساختار کلیدواژه:مقدار نسبت به ساختار مبتنی بر تگ هست که مزایای بیشتری/کارایی متفاوتی را بهمراه داره :) منم با استاندارد سازی همه چیز مخالفم، ولی خب استاندارد شدن ایده بدی نیست :دی در کل بیشتر صحبتتون رو قابل قبول میدونم :) موفق باشید ؛)