انجمن انفورماتیک ایران انجمن انفورماتیک ایران انجمن انفورماتیک ایران
گزارش کامپیوتر شماره 234, ویژه مرداد و شهریور ماه 96 منتشر شد. دوشنبه  ٢٩/٠٨/١٣٩٦ ساعت ٠٧:٢٥
 

15 فناوری که کار برنامه‌نویسان را دگرگون ساخته‌اند

ترجمۀ: ابراهیم نقیب‌زاده مشایخ
پست الکترونیکی:mashayekh@isi.org.ir

 


 

مدت‌ها پیش، برنامه‌نویسان به زبان همگذاری (اسمبلی) برنامه می‌نوشتند که بسیار سریع اجرا می‌شد. اگر به قدر کافی پول داشتند می‌توانستند کسی را استخدام کنند که برایشان کلیدهای جلوی رایانه را خاموش و روشن کند و برنامه‌شان را وارد حافظۀ ماشین کند. وگرنه باید خودشان این کار را انجام می‌دادند. زندگی ساده بود: نرم‌افزار، داده‌ها را از حافظه می‌گرفت، تعدادی عمل محاسباتی انجام می‌داد و نتیجه را به حافظه باز می‌گرداند. این همۀ کاری بود که انجام می‌شد.
امروز برنامه‌نویسان باید در قالب یک تیم با برنامه‌نویسانی از دیگر کشورها، با زبان‌های مختلف، مجموعۀ نویسه‌های متفاوت و حتی بااستفاده از نسخه‌های متفاوت برنامۀ مترجم ، کار کنند. بخشی از کد برنامه ممکن است جدید باشد و بخشی دیگر ممکن است متعلّق به کتابخانه‌ای با ده‌ها سال قدمت و حتی بدون کد مبدأ باشد. این وضعیتِ برنامه‌نویسی امروز است.
دنیای برنامه‌نوسی دائماً در حال تغییر است و آنچه امروز صورت می‌گیرد حتی با پنج سال پیش نیز تفاوت چشمگیری دارد. برنامه‌نویسی که هنوز بخواهد با همان روش‌های ده سال پیش برنامه‌نویسی کند دیگر نخواهد توانست در دنیای رایانش امروز حرفی برای گفتن داشته باشد. همه چیز، سریع‌تر از هر زمان دیگر، در حال تغییر است.
15 فناوری که طبیعت برنامه‌نویسی را دگرگون ساخته‌اند، در زیر توضیح داده شده‌اند. این فناوری‌ها نحوۀ کارکردن ما با برنامه‌نویسان همکارمان، نحوۀ تعامل با مشتریانمان و نحوۀ برنامه‌نویسی‌مان را تغییر داده‌اند.

ابزار برنامه‌نویسی شمارۀ 1: یکپارچه‌سازی مداوم
پیش از این، هنگامی که کدی را در مخزن قرار می‌دادید فرصت کافی داشتید تا نفسی تازه کنید، یک فنجان قهوه بنوشید و حتی برای صرف ناهار بیرون بروید. امّا دیگر چنین نیست. اکنون مخزن‌های کد به سامانه‌های یکپارچه‌سازی مداوم پیوند خورده‌اند (در مهندسی نرم‌افزار، یکپارچه‌سازی مداوم به عمل یکپارچه‌سازی کد جدید یا اصلاح شدۀ یک نفر با کدهای موجود در مخزن گفته می‌شود. مترجم) و به سرعت کد شما را ترجمه می‌کنند، معماری شما را مورد بررسی و ارزیابی قرار می‌دهند، صدها آزمایش انجام می‌دهند و خطاهای احتمالی کار شما را اعلام می‌کنند. شما هنوز چندگام از میزتان دور نشده، یک پیام متنی یا نامۀ الکترونیکی جدید دریافت می‌کنید که به شما می‌گوید چه چیزی را باید اصلاح کنید. باید به کار باز گردید چون سامانۀ یکپارچه‌سازی مداوم، کار تازه‌ای برایتان ایجاد کرده است.

ابزار برنامه‌نویسی شمارۀ 2: چارچوب‌ها
باز به کارگیری کار دیگران، ایدۀ تازه‌ای نیست، امّا به نظر می‌رسد که هیچگاه چون امروز غالب نبوده است. این روزها بسیار به ندرت اتفاق می‌افتد که کار برنامه‌نویسی از نقطۀ صفر آغاز گردد. رویکرد جاری، عبارت است از انتخاب یک چارچوب مناسب، جستجو برای رابط برنامۀ کاربردی (API ) و نوشتن کدهایی برای پیوند دادن بخش‌های API مناسب به هم. دیگر صفحات وب از HTML یا CSS ساخته نمی‌شوند بلکه برنامه‌نویسی با Ext JS (چارچوب کاربردی جاوا اسکریپت برای ساخت کاربردهای تعاملی وب. مترجم)، Express JS (چارچوب برنامه‌های کاربردی Node.js که برای ساخت برنامه‌های کاربردی تک صفحه‌ای، چند صفحه‌ای و مختلط وب طراحی شده است. مترجم) یا مجموعه کدهای دیگری که به صورت یک چارچوب و قالب عمل کنند، آغاز می‌گردد.
شما مطمئناً می‌توانید همه چیز را خودتان از نقطۀ صفر دوباره بنا کنید امّا این کار به منزلۀ خودکشی است. هیچ راهی برای رسیدن به تمام کارهایی که دیگران انجام داده‌اند نیست. اگر در فکر این هستید که خودتان بنویسید، بهتر است دست نگهدارید و به دنبال چارچوبی بگردید که آن کار را قبلاً انجام داده است.

ابزار برنامه‌نویسی شمارۀ 3: کتابخانه‌ها
برادر دوقلوی چارچوب‌ها، کتابخانه‌ها هستند. مجموعه‌ای از روال‌های متداول و فراگیر که برنامه‌نویسان دیگر بدون آن‌ها نمی‌توانند زندگی کنند. آیا نوشتن کد برای مرورگر بدون استفاده از jQuery (کتابخانۀ جاوا اسکریپت برای ساده‌کردن کدنویسی طرف کارخواه HTML ، 60% از 000/10 وبگاهی که بیشترین بازدید کننده را دارند از jQuery استفاده کرده‌اند. مترجم) امکانپذیر است؟ آیا کسی به یاد می‌آورد که تابع توکاری به نام Get ElementByID وجود داشت؟ اکنون کتابخانه‌هایی مانند jQuery در همه جا حکمرانی می‌کنند.
برنامه‌نویسان دربارۀ زبان برنامه‌نویسی مورد علاقه‌شان حرف می‌زنند امّا این صحبت‌ها اطلاعات چندانی دربارۀ این که آن‌ها چگونه برنامه‌نویسی می‌کنند، نمی‌دهد. اگر به دنبال استخدام برنامه‌نویس هستید، باید از آگاهی و دانش آن‌ها دربارۀ کتابخانه‌ها پرسش کنید. مثلاً یک برنامه‌نویس بازی‌های رایانه‌ای ممکن است از C++ استفاده کند امّا پرسش اصلی این است که تا چه حدّ با Allegro ، Unity ، Corona (کتابخانه‌های برنامه‌نویسی بازی‌ها. مترجم) یا کتابخانه‌های مشابه دیگر آشنایی دارد. آگاهی از کتابخانه‌ها به همان اهمیت آگاهی از ویژگی‌های خود زبان است.

ابزار برنامه‌نویسی شمارۀ 4: رابط‌های برنامۀ کاربردی
در روزگار قدیم، برنامه‌نویسان نگران ساختمان داده‌ها بودند. آن‌ها تمام اطلاعاتشان را در بلوک‌هایی از بایت‌ها جا می‌دادند، بایت‌ها را یکی‌یکی می‌شمردند و سپس مطمئن می‌شدند که مقادیر در فاصلۀ درستی از اشاره‌گر قرار گرفته‌اند. خوشبختانه اکنون بیشتر این کارها را برنامۀ مترجم خودش انجام می‌دهد.
این روزها ما از طریق یک رابط بسیار دقیق‌تر به نام رابط برنامۀ کاربردی (API ) کار می‌کنیم. آن‌ها غالباً بر روی ماشین دیگری قرار دارند و ممکن است مجبور باشیم برای هر بار فراخوانی‌شان کمی پول بپردازیم. می‌خواهید نشانی و کدپستی را به طول و عرض جغرافیایی تبدیل کنید؟ برای آن API وجود دارد و برای یافتن هر پاسخ باید چند سنت بپردازید.
در اغلب موارد، نیازی نیست که داده‌ها به هم فشرده شده باشند. بازی قدیمی شمارش بایت‌ها با ساختمان داده‌های تجزیه‌پذیری چون JSON یا XML جایگزین شده است.

 

ابزار برنامه‌نویسی شمارۀ 5: بُن‌سازه به عنوان خدمت
چه کسی دیگر برای خودش وبگاه درست می‌کند؟ به جای آن می‌توانید حسابی بر روی وبگاه یک نفر دیگر ایجاد کنید و آن را مناسب‌سازی کنید. چند حوزه در یک فرم وب قرار می‌دهید و وبگاه جدیدتان هر کاری که می‌خواهید را انجام می‌دهد. شبیه یک فیلم ویدیویی در یوتیوب است. البته این کمی اغراق‌آمیز است. بسیاری از گزینه‌های بُن‌سازه به عنوان خدمت (PaaS ) امروزه نیازمند مهارت برنامه‌نویسان در مورد این که چه چیزی را در هر فرم وب قرار دهند می‌باشد. برای نمونه، آزور مایکروسافت از شما می‌خواهد که چند تابع جاوا اسکریپت را که نحوۀ پاسخگویی وبگاه را مشخص می‌کنند تعریف کنید. سپس آزور آن‌ها را با روال‌های کتابخانه‌ای مناسب می‌پوشاند و اجرای آن‌ها را در Node.js آغاز می‌کند.

ابزار برنامه‌نویسی شمارۀ 6: مرورگرها
روزگاری بود که مردم برای رایانه‌های رومیزی، برای کارسازها ، و برای دستگاه‌ها نرم‌افزار می‌نوشتند و همۀ این نرم‌افزارها با هم تفاوت داشتند. هر یک شیوۀ خاص خود را برای ارتباط با کاربر داشتند. اکنون همه چیز از طریق مرورگر انجام می‌شود. هنگامی که می‌خواهم یک کارساز پرونده در خانه برای نگهداری موسیقی بنا کنم، به یک URL می‌روم و با یک وبگاه کار می‌کنم. سال‌هاست که ویجت‌ها به جاوا اسکریپت و HTML برای رایانه‌های رومیزی اپل نوشته شده‌اند. (ویجت عنصری از رابط گرافیکی کاربر، مانند یک دکمه یا یک فضای متنی است که اطلاعات را نمایش می‌دهد و توسط کاربر قابل واردکردن یا تغییر دادن است. مترجم) بسیاری از برنامه‌های کاربردی تلفن‌های همراه نیز به صورت HTML و جاوا اسکریپت شروع شده‌اند که با کوردوای آپاچی (مجموعه‌ای از APIها که برنامه‌نویس برنامه‌های کاربردی تلفن‌های همراه را قادر می‌سازد برنامه‌هایش را به جای اتکاء بر APIهای مخصوص بُن‌سازه، شبیه آنچه در iOS و اندروید هست، با استفاده از جاوا اسکریپت، HTML5 و CSS3 بنویسد. مترجم) یکپارچه گردیده‌اند.
البته مقاومت‌هایی وجود دارد و هنوز بیشترین کاری که می‌شود مناسب‌سازی است که به مرورگر نیازی ندارد. امّا این وضعیت در حال تغییر است. برای مثال، بازی ویدیویی پرنده‌های خشمگین در پنجرۀ مرورگر اجرا می‌شود.

ابزار برنامه‌نویسی شمارۀ 7: دربردارندۀ برنامۀ کاربردی
پیش از این، بنا کردن کارساز کار سختی بود. برنامه‌نویسان باید برنامه‌هایشان را بر روی رایانۀ خودشان اجرا می‌کردند، سپس یادداشتی برای متصدیان کارساز می‌فرستادند تا نرم‌افزار مناسب را نصب کنند. بعضی وقت‌ها آن‌ها کتابخانه‌های مناسب را داشتند و گاهی هم نداشتند، امّا بالاخره چیزی پیدا می‌شد که برنامۀ ما با آن کار کند.
اکنون دربردارنده‌های برنامه‌های کاربردی مانند داکر با یک اشاره، تمام کتابخانه‌های مناسب را در اختیار ما قرار می‌دهند. اگر آن‌ها بر روی ماشین آزمایشی ما اجرا شوند، مطمئناً بر روی کارساز هم اجرا خواهند شد. همه چیز در یک جا بسته‌بندی شده است و اغلب ناسازگاری‌ها بین رایانۀ رومیزی ما و کارساز از بین رفته است.
ابزار برنامه‌نویسی شمارۀ 8: زیرساخت به‌عنوان خدمت
پیش از این دربارۀ متصدیان کارساز صحبت کردیم. این افراد معمولاً در وقت ناهار یا بعد از ساعت کار در دسترس نبودند. اما اکنون این‌گونه خدمات در ابر قرار داده شده است. هنوز برنامه‌نویسان اندکی نیاز دارند که از تیم زیرساخت بخواهند که برایشان کارساز جدیدی برای یک پروژۀ تازه بنا کنند. آن‌ها برای این کار به سادگی وارد یک وبگاه می‌شوند، بر روی دکمه‌ای کلیک می‌کنند و ماشینی را برای اجرای برنامه‌هایشان به دست می‌آورند.

ابزار برنامه‌نویسی شمارۀ 9: Noda.js و جاوا اسکریپت
پیش از آن که بعضی از شما به دنیا آمده باشید، کارسازهای وب با HTML ایستا کار می‌کردند. بعد یک نفر کشف کرد که چگونه کارسازهای پویا ایجاد کند که بتوانند با دادگان‌ها تعامل داشته باشند. هر تیمی به یک نفر برای برنامه‌نویسی دادگان به SQL ، یک نفر برای نوشتن برنامۀ کارساز به PHP یا جاوا و یک نفر برای طراحی الگوها و قالب‌های HTML نیاز داشت.
اکنون همۀ این‌ها در جاوا اسکریپت انجام گرفته است. البته مرورگر هنوز به جاوا اسکریپت صحبت می‌کند امّا لایۀ کارساز (Noda.js ) و لایۀ دادگان (MongoDB و CouchDB ) هم همین طور. حتی HTML نیز غالباً با کد جاوا اسکریپت برای چارچوب‌هایی مانند Ext JS یا jQueryMobile که کد HTML در طرف کارخواه تولید می‌کنند، مشخص می‌شود.

ابزار برنامه‌نویسی شمارۀ 10: بازارهای دست دوم
اگر در حال ساخت یک بازی رایانه‌ای هستید، می‌توانید هنرمندانی را برای خودتان استخدام کنید تا مجموعه‌ای از مدل‌های جذاب را به وجود آورند. همچنین می‌توانید چند برنامه‌نویس استخدام کنید تا جلوه‌های ویژۀ تصویری را به بازی بیفزایند. و یا می‌توانید به بازارهای دست دومی مانند Unity Asset Store مراجعه کنید و تمام قطعات مورد نیازتان را بخرید. در این بازارها شما می‌توانید قطعات لازم برای بازی‌های مختلف را به قیمتی بسیار ارزانتر از استخدام کارمند به دست آورید.
بازارهای دیگری نیز برای وصل‌شدنی‌ها ، کتابخانه‌ها و سایر افزایه‌ها وجود دارند. با کتابخانه‌ها و چارچوب‌هایی که وجود دارد، دیگر کسی نیاز ندارد برنامه‌نویسی چندانی انجام دهد و فقط کافیست قطعات مناسب را خریداری کند.

ابزار برنامه‌نویسی شمارۀ 11: ماشین‌های مجازی
روزهای کدنویسی برای ماشین‌های واقعی عمدتاً سپری شده است. بیشتر کدهایی که امروز نوشته می‌شوند بر روی ماشین‌های مجازی اجرا می‌گردند که دستورالعمل‌های شما را به چیز قابل درکی توسط تراشه ترجمه می‌کنند. ماشین مجازی جاوا، ماشین مجازی C#/.Net و اکنون موتورهای جاوا اسکریپت ، هدف اصلی برای برنامه‌نویسی شده‌اند.
محبوبیت ماشین مجازی، همۀ چیزهای دیگر را در خود جذب کرده است. در گذشته، اگر می‌خواستید زبان جدیدی به وجود آورید، باید تمام کارها از پیش‌پرداز تا تخصیص دهندۀ ثبات را خودتان انجام می‌دادید. امّا امروز، زبان‌های جدید بر روی ماشین‌های مجازی قدیمی می‌نشینند. زبان‌های Clojure ، اسکالا، Jython و JRuby همگی بر دوش ماشین مجازی سوار شده‌اند.
روال مشابهی هم در دنیای مرورگرها پدید آمده است. شما می‌توانید مرورگر و زبان خودتان را درست کنید و یا می‌توانید کاری کنید که در جاوا اسکریپت تقلید شوند. کسانی که ابزارهایی نظیر کافی اسکریپت را ساختند نیز همین کار را کردند. ابزارگان GWT گوگل، جاوا را به جاوا اسکریپت تبدیل می‌کند.

ابزار برنامه‌نویسی شمارۀ 12: درگاه‌های رسانه‌های اجتماعی
در نخستین روزهای اینترنت، شما وبگاه خودتان را بنا می‌کردید و امیدوار بودید که مردم آن را پیدا کنند. و هنگامی که این چنین می‌شد، آن‌ها باید URL شما را به خاطر می‌سپردند.
افسوس که بخش‌های بیشتر و بیشتری از وب جذب غول‌هایی چون فیسبوک و سیلزفورس شده‌اند و همۀ کاربران اینترنت به سراغ این‌گونه وبگاه‌ها می‌روند و وبگاه شخصی افراد و سازمان‌ها بی‌مشتری مانده است.
راه حل این است که یک برنامۀ کاربردی فیسبوک یا سیلزفورس بسازید. آن‌ها شما را به داخل راه می‌دهند و اجازه می‌دهند با بُن‌سازۀ آن‌ها یکپارچه شوید. البته در انتها، برنامۀ کاربردی شما یک چیز اضافی است که ممکن است محدود شود یا با اشاره انگشتی کنار گذاشته شود. امّا چه گزینۀ دیگری دارید؟ یا باید در زیر سایۀ درگاه‌های بزرگ قرار بگیرید یا قید بازدیدکننده را بزنید.

ابزار برنامه‌نویسی شمارۀ 13: ابزارهای تولید و اجرا
در روزگار گذشته، ما نرم‌افزارهایمان را بر روی یک رایانۀ کارساز نصب می‌کردیم. امّا اکنون ما کارسازها را به صورت انبوه، ده‌ها، صدها یا حتی هزارها ماشین، اجاره می‌کنیم که پر هستند از نرم‌افزاهای تازه و از آن‌ها بر حسب تقاضا استفاده می‌کنیم. واضح است که این کار دیگر نمی‌تواند به صورت دستی به نحو مؤثری مدیریت شود.
اگر به ابزارهای تولید و اجرا روی آورید، ابزارهایی مانند شِف و پاپت برای ارائۀ این خدمات به شما طراحی گردیده‌اند. نرم‌افزار جدیدی را در ابر قرار دهید و این ابزارها مدیریت اجرای همان کد توسط تمام رایانه‌ها را برای شما انجام می‌دهند. آن‌ها کاری که ما پیش از این به صورت دستی برای یک ماشین انجام می‌دادیم را به صورت خودکار انجام می‌دهند.
برخی خدمات مانند موتور برنامۀ کاربردی گوگل هم اکنون این کار را به صورت داخلی انجام می‌دهند. تنها کاری که نیاز است شما انجام دهید این است که برنامۀ کاربردی‌تان را می‌دهید و بقیۀ کارها به صورت خودکار انجام می‌شود. شما حتی نمی‌دانید که در پشت صحنه چه می‌گذرد، فقط صورت‌حساب مقدار CPU را دریافت می‌کنید.

ابزاربرنامه‌نویسی شمارۀ 14: اشتراک کد
وبگاه‌های اشتراک کد، عالی‌ترین جلوۀ مشارکت در دنیای متن باز است. پیش از آن که خدماتی نظیر SourceForge به وجود آید، نرم‌افزار چیزی بود که شما خودتان آن را تولید می‌کردید و خودتان با هر کس می‌خواستید به اشتراک می‌گذاشتید. اگر کسی یک نسخه از کد شما را می‌خواست باید با شما تماس می‌گرفت.
اما اکنون اشتراک کد از طریق یک شبکۀ اجتماعی صورت می‌گیرد. وبگاه‌هایی نظیر SourceForge و GitHub تمام کدها را برای همه می‌فرستند تا آن‌ها را ببینند و اصلاح کنند. آن‌ها فرایندهای نگهداری، اشتراک و توضیح‌گذاری بر روی کد را در یک جا به نحو ساده‌ای ادغام کرده‌اند. شما می‌توانید کد را بخوانید و تغییراتی را پیشنهاد کنید. همۀ این کارها از طریق یک رابط کاربری یکسان انجام می‌گیرد. در مدل سابق چنین کاری امکان‌پذیر نبود.
این مدل اکنون به قدری جا افتاده است که اغلب پروژه‌های اختصاصی نیز از آن پیروی می‌کنند. وبگاه‌هایی نظیر GitHub و BitBucket برای تأمین هزینه‌های خود، این خدمت را برای مشتریان به صورت غیرعمومی و با اجازۀ دستیابی محدود ارائه می‌کنند.

ابزار برنامه‌نویسی شمارۀ 15: پایش عملکرد
در گذشته، سنجش عملکرد و کارایی کد آسان بود. زمانی که اجرای برنامه شروع می‌شد و زمانی که اجرای آن خاتمه می‌یافت را چاپ می‌کردید و این دو عدد را از هم کم می‌کردید.
این کار را دیگر نمی‌توان انجام داد. برنامه‌ها امروز بر روی شبکه‌ای از رایانه‌ها اجرا می‌شوند. ابزارهای مدرن، عملکرد تک‌تک پودمان‌ها بر روی شبکه را ردگیری و محاسبه می‌کنند. این تنها راه سنجش عملکرد کد است.

منبع
* 15 Technologies Changing How Developers Work, Peter Wayner, InfoWorld August 11, 2014