چندوقت پیش به فروم رسمی زبان سوییفت سر زدم و به طور خیلی شفاف تر دنیای زیبای متن باز و مزایای اون رو حس کردم.
قضیه این بود که یکی از کاربرای فروم و همکار های توسعه (Contributer)، ایده پیاده سازی یک تابع برای داده های دیکشنری رو داده بود تا مقادیر خالی رو فیلتر کنه. مثلا اینجوری:
["1" : "1", "2" : nil, "3" : "3"].compactMapValues({ $0 })
// ["1": "1", "3": "3"]
و این شروع یک ماجراجویی زیبا بود!
همیشه معرفی یک ویژگی جدید در پروژه های متن باز همینجوری شروع میشه، مشکل رو بیان میکنی و میگی که چه فکری داری برای راه حلش، یا راه حل رو با بقیه به اشتراک میزاری یا با کمک بقیه به راه حل میرسی.
من نمیخوام روی نکات فنی یا مراحل پیاده سازی ریز بشم، بیشتر میخوام درس ها و نکته هایی که از دیدن این مطلب رو فروم یاد گرفتم رو بیان کنم.
۱. همین موضوع ساده معرفی یک تابع نه چندان مهم و فقط مخصوص یک نوع داده خاص، بیش از ۵ هزار بازدید کننده داشته و ۹ نفر مستقیم روی اون کار کردند.
۲. اگر مورد مهم یا کاربردی باشه، اصولا یک یا دو نفر از برنامه نویس های رسمی از سمت شرکت اپل وارد بحث میشوند تا نظرات و تاییدیه های خودشون رو اعلام کنند.
۳. هر موردی که به نتیجه میرسه، در لیست پروپزال های Swift Evolution قرار میگیره، پروپزال باید قالب اصلی که معرفی شده رو رعایت کنه، مثلا باید برای عنوانش از یک کلمه کلیدی استفاده کرد که خیلی ساده متوجه موضوع بشیم، برای مثال: پیاده سازی، حذف، دیباگ، معرفی
۴. هر پیاده سازی، با بنچمارک هایی که متخصصای اپل آمادش میکنند، بررسی میشه و به طور شگفت انگیزی با توابع نزدیک و هم خوانوادش مقایسه میشه و باید دلیل خوبی برای اضافه شدنش به زبان سوییفت داشته باشه!
۵. بعد از مقایسه و بررسی نهایی، دوباره تابع رو به بنچمارک های کلی و ثابت خودشون میفرستند تا کلی گزارش باحال آماده کنه، خیلی جالبه که برای اینکار یک بات در github دارند و با فرا خواندنش فایل ها رو میگیره و بنچمارک انجام میده! اینجوری صداش کردند:
@swift-ci Please smoke benchmark
و نتایجی که دریافت میشه بسیار قابل تامل و جذاب هستند. تو این نتایج اعلام میشه که این پیاده سازی، سربار چه استاندارهاییشون رو بیشتر کرده، سرعت چه مواردی بیشتر کرده و چه مواردی رو تغییر نداده:
خیلی جذابه!
۶. و در نهایت با مجوز متخصصای اپل این تابع به پروژه اصلی اضافه میشه تا در ورژن های بعدی، هر کاربری در هرکجای دنیا بتونه براحتی ازش استفاده کنه...
این فقط یک مورد بسیار ساده از شیرینی و لذت شریک شدن در دنیای متن بازه، البته من فقط ناظر بودم، بهتره بگم این شیرینی تماشای کارهای مهندسی و باصبرو حوصلشونه.
نکات پایانی:
- دانشگاه، دانشگاه، دانشگاه: استفاده از ابزارهای کهنه و اشتباه برای آشنایی دروس و آینده کاری (فقط همین صفحه ای که من مرورش کردم، کاربرد مستقیم چندتا از درس ها رو بهم نشون داد.)
- صبر، حوصله و دقت فراوان برای خلق کردن محصولی با کمترین اشتباه و بهترین عملکرد
- عطش اشتراک گذاری دانش و حامی شدن در پروژه های متن باز: هیچ ترسی برای کمک به همدیگه ندارند، نگران این نیستند که قرار دانششون دزدیده بشه یا با این کار عقب می افتند، خیلی خالصانه کار میکنند، از اون چند ۱۰۰ هزار نفری که یک روزی از این تابع استفاده میکنند، چند نفرشون این داستان و این اسامی رو میدونند؟
در انتها باید بگم که هرروز سعی میکنم بیشتر واژه مهندسی رو درک کنم. مهندسی زیباست، مهندسی رو باید در این پروژه ها جستجو کرد و یاد گرفت، مهندسی چیزی فراتر از کدنویسی هست، به نظر من مهندسی یک نوع سبک زندگی برای علم تلقی میشه.