برنامهنویسان در انجمن Stack Overflow بیشتر چه سؤالهایی میکنند؟
در این مقاله با موضوعاتی بیشتر آشنا خواهید شد که در انجمن Stack Overflow، برنامهنویسان دربارهی زبانهای برنامهنویسی میپرسند.
انجمن Stack Overflow از زمان تأسیس در سال ۲۰۰۸، برنامهنویسان بسیاری را از سردرگمی نجات داده است. از آن زمان بهبعد، توسعهدهندگان میلیونها سؤال مختلف در تمام زمینههای برنامهنویسی کردهاند. بااینحال، چه سؤالهایی توسعهدهندگان را وادار میکند تا به انجمن Stack Overflow سر بزنند؟
در این مقاله، ۱۱ زبان از زبانهای برنامهنویسی محبوب را براساس فراوانی برچسبهای موجود در Stack Overflow انتخاب کردهایم که برای کشف شباهتها و تفاوتهای این سؤالها روی آنها مطالعه شده است. قبل از اینکه به این موضوع بپردازیم، اجازه بدهید نکاهی کلی به ۱۱ زبان برنامهنویسی انتخابشده بیندازیم.
ازلحاظ حجم خام سؤالهای مطرحشده، جاوااسکریپت بیشترین تعداد سؤالها را از زمان تأسیس این وبسایت ازآنِ خود کرده است. این امر احتمالا بهدلیل کاربرد فراوان جاوااسکریپت در تعداد زیادی از اپلیکیشنها و سرویسها است. اگر به هر نحوی با اینترنت سروکار دارید، باید حداقل اندکی از جاوااسکریپت سر در بیاورد. جاوااسکریپت در صدر فهرست تعداد سؤالهای مطرحشده قرار دارد؛ اما اگر دادههای موجود را از زمان سپریشده جدا کنیم، متوجه پادشاه جدیدی در این عرصه میشویم.
در سال ۲۰۱۱، مجلهی Harvard Business Review شغل دانشمند داده را جذابترین شغل قرن بیستویکم نامگذاری کرد. ازآنپس، پایتون، یکی از زبانهای برنامهنویسی محبوب برای دانشمندان داده، محبوبیت بیشتری پیدا کرد؛ تاحدیکه در سال ۲۰۱۹، بهعنوان بیشترین زبان برنامهنویسی سؤالشده در Stack Overflow، جایگزین جاوااسکریپت شد.
بنابراین، یا پایتون درحالتبدیل به محبوبترین زبان برنامهنویسی است یا تعداد بیشتری برنامهنویس جدید درمقایسهبا سایر زبانهای برنامهنویسی دارد.
توسعهدهندگان دقیقا چه سؤالهایی میکنند؟ بیشترین فریمورکها، پکیجها، توابع و متدهای سؤالشده کداماند؟ کدامیک از انواع دادهها بیشتر مشکلساز بودهاند؟ میزان تفاوت این مشکلات پرسیدهشده در میان زبانهای مختلف چقدر است؟
برای جمعآوری جواب این سؤالها، کارهای زیر انجام شده است:
۱. هزار سؤال با بیشترین تعداد رأی مثبت برای هریک از ۱۱ زبان برنامهنویسی منتخب از Stack Overflow استخراج شده است.
۲. تعدادی از دادههای مربوطبه پایتون پاکسازی شده است.
۳. تمام این سؤالها به الگوریتم ابرکلمهی جاوااسکریپت داده شده تا دیدی کلی از مشکلاتی بهدست آید که در زبانهای برنامهنویسی مختلف برای توسعهدهندگان رخ میدهد.
نتایج این تحقیق بهشرح زیر است:
جاوااسکریپت
جاوااسکریپت ۲۳ ساله و استک اُوِرفِلو ۱۱ ساله است. در این ۱۱ سال، جیکوئری (jquery) بیشترین فریمورک سؤالشدهی جاوااسکریپت بوده است.
پایتون
پایتون تقریبا ۶ سال از جاوااسکریپت مسنتر است. این زبان را که اولینبار گیدو ونراسوم در سال ۱۹۹۰ بهوجود آورد، به یکی از زبانهای اصلی منتخب دانشمندان داده تبدیل شده است. طبیعتا برخی از سؤالهای مطرحشدهی این زبان به کتابخانههای پردازش داده مرتبط است؛ ازجملهی آنها میتوان به پانداس (Pandas) و دیتافریم (Dataframe) اشاره کرد. درهرصورت، پایتون بهصورت عمومی و در دامنهی وسیعی از فناوریها بهکار برده میشود و این موضوع میتواند دلیل پرسشهای مکرر دربارهی فریمورک توسعهی وب django را توضیح دهد.
R
شاید دومین زبان برنامهنویسی منتخب دانشمندان داده اندکی درمقایسهبا پایتون متفاوت باشد؛ زیرا تقریبا بهصورت انحصاری درزمینهی علوم داده بهکار میرود. مفاهیم خاص پردازش داده مانند Datafram و Datatable و Matrix برای برنامهنویسان R مشکلساز بهنظر میرسند. پایتون و R هر دو کتابخانههای منحصربهفردی درزمینهی پردازش داده دارند؛ اما وقتی از ترسیم دادهها صحبت میشود، برخی عقیده دارند R دراینزمینه از پایتون برتر است. باتوجهبه این موضوع، کتابخانهی ترسیم دادهی ggplot ازجمله مفهومهای پُرسؤال در زبان برنامهنویسی R است. بنابراین، شاید توسعهدهندگان پایتون کتابخانهی matplotlib را راحتتر بدانند.
روبی
این زبان در اواسط دههی ۱۹۹۰ پدیدار شد و اکنون، فریمورک سمت سرور آن با نام ruby-on-rails بیشترین پرسشهای این زبان برنامهنویسی است.
سی شارپ
در سال ۲۰۰۰، سی شارپ بیشتر بهدلیل فریمورک داتنت آن بهوسیلهی مایکروسافت توسعه یافت. کلمهی net بیشترین آمار پرسش را در این زبان برنامهنویسی ازآنِ خود کرده است.
سی پلاس پلاس
در سال ۱۹۸۵، این زبان توسعه یافت و تاکنون، به زبانی محبوب برای سازندگان بازیهای ویدئویی تبدیل شده است. بخش پایهای تصویری تشکیلدهندهی بازیهای سهبعدی Polygon است و بلوک پایهای سازندهی Polygon نیز Vector است.
جاوا
جاوا در سال ۱۹۹۵، بهعنوان زبانی برای اهداف عمومی توسعه داده شد. این زبان در اواخر دههی ۱۹۹۰ و اولین روزهای شبکهی جهانی وب محبوبیت پیدا کرد و بهعنوان نیروی محرک بسیاری از اپلیکیشنهای ویندوز بود. بااینحال، اخیرا بهمنظور توسعهی اپلیکیشنهای اندروید بهکار میرود. بنابراین، بیشترین پرسش مطرحشده درزمینهی جاوا با Android ارتباط دارد.
آبجکتیوسی
یکی از زبانهای برنامهنویسی قدیمی در این تحقیق، یعنی آبجکتیوسی، زبان برنامهنویسی غالبی بود که اپل برای سیستمعامل OSX از آن پشتیبانی میکرد. این زبان اخیرا برای نوشتن اپلیکیشنهای سیستمعامل آیاواس در گوشیهای آیفون بهکار میرود.
سوئیفت
سوئیفت اولینبار در سال ۲۰۱۴ بهوجود آمد و اخیرا برای توسعهی اپلیکیشنهای iOS جایگزین آبجکتیوسی شده است. شاید میزان تکرار کلمه Objective-C در پرسشهای انجمن Stack Overflow که تگ #swift را با خود بههمراه دارند، نشاندهندهی این باشد که هزاران توسعهدهندهی آیاواس برای بهروزرسانی دانش خود به انجمن Stack Overflow سر میزنند.
پیاچپی
پی اچپی در سال ۱۹۹۰ بهعنوان زبان اسکریپتی سمت سرور برای توسعهی وب طراحی شد. اکنون نیز بههمینمنظور بهکار میرود و شواهد این ادعا را میتوان در میزان تکرار سؤالهای مربوطبه فریمورک Laravel مشاهده کرد.
اسکیوال
اسکیوال برخلاف سایر زبانهای برنامهنویسی ذکرشده در این تحقیق، زبان برنامهنویسی با امکانات کاملی نیست؛ بلکه بهطورویژه برای دستکاری داده طراحی شده است. بنابراین بهدلیل همین ویژگی، بیشترین سؤالهای مطرحشده برای برنامهنویسان همگی دربارهی دسترسی به پایگاه داده است؛ بنابراین Sever ،Mysql و Database ،Query ،Select ازجمله بیشترین واژههای پرسیدهشده دراینزمینه هستند.
هریک از زبانهای برنامهنویسی در طول زمان، برای اهداف ویژهای درزمینهی فناوری طراحی شدهاند. زبان R در علوم داده و سوئیفت برای توسعهی اپلیکیشنهای iOS و سیپلاسپلاس برای ساخت بازیهای ویدئویی بهکار میروند. این موضوع تفاوت در نوع مشکلاتی را توضیح میدهد که ممکن است در زبانهای مختلف پیش بیاید و روشن میسازد مثلا چرا واژهی Database مفهوم پرسیدهشدهی رایجی در زبان اسکیوال است؛ اما مثلا در آبجکتیوسی چنین پرسشی رایج نیست.
با وجود این تفاوتهای آشکار، این تصویرسازی واژگان چندین شباهت پایهای را در دامنههای مختلف نمایان میکند. انواع داده سطح پایه مانند رشتهها و آرایهها ازجمله مشکلاتی هستند که برنامهنویسان را وادار میکند برای طرح پرسش خود دراینباره به Stack Overflow بروند.
در پایان نیز، ابرکلمهی استخراجشده از ۱۱,۰۰۰ پرسش مطرحشده در Stack Overflow را مشاهده کنید.
دیدگاه شما دربارهی تحقیقات انجامشده چیست؟ شما نیز در انجام Stack Overflow فعال هستید؟ برای رفع چه نیازهایی در برنامهنویسی به این سرویس مراجعه کردهاید؟