برنامه نویسی
react native چیست
اغلب برنامه نویس ها دوست دارند که با یادگیری یک زبان برنامه نویسی برنامه هایی بنویسیم که بر روی پلتفرم های مختلف قابل اجرا باشه. گرچه برنامه های زیادی تو این زمینه تولید شده ولی هیچکدوم چنگی به دل نزد.تا اینکه فیسبوک در سال ۲۰۱۳ اولین نسخه stable از یک کتابخونه جاوا اسکریپت رو بصورت open-source در GitHub منتشر کرد.
اسم این کتابخونه ReactJs بود که برای توسعه وب اپلیکیشن ها مورد استفاده قرار میگرفت. این کتابخونه سرعت بسیار بالا و سادگی خاصی داشت که باعث شد خیلی سریع مورد توجه قرار بگیره. اواخر مارچ ۲۰۱۵ بود که فیسبوک یک فریم ورک جدید به اسم React Native منتشر کرد که بهت اجازه میداد فقط با استفاده از جاوا اسکریپت و کتابخونه React اپلیکیشن موبایل برای ios بسازی. فیسبوک شش ماه بعد گام اصلی و محکم رو با انتشار React Native برای Android برداشت.
توسعه دهنده ها دیگه مجبور به نوشتن کدهای جداگونه برای سیستم عامل های مختلف نبودن و استارتاپ ها و صاحبان کسب کار به توسعه دهنده هایی دسترسی پیدا کردند که برای هر دو سیستم عامل َAndroid و IOS اپلیکیشن طراحی میکردند.
با React Native یک “mobile web app” ، ” HTML5 app” یا “Hybridapp” نمیسازی بلکه یک اپلیکیشن واقعی موبایل میسازی که از یک برنامه ساخته شده با Objective-c یا Java قابل تشخیص نیست یعنی برنامه شما بصورت Native خواهد بود و تفاوتی ندارد.
از ویژگی های مهم کار با React Native اینه که برای طراحی UI جای مانور بیشتری داری و با سرعت بالایی میتونی اپلیکیشن هایی با ظاهر زیبا و جذاب طراحی کنی مثل اپلیکیشن Instagram که با همین فریمورک نوشته شده. تازه با استفاده از Node میتونی سمت سرور برنامه نویسی کنی. حالا فکرشو بکن تو داری فقط با استفاده از جاوا اسکریپت اپلیکیشن Native طراحی میکنی که روی Android و IOS اجرا میشه.
Open-source بودن React Native و اینکه توسط فیسبوک پشتیبانی میشه ، باعث میشه ادم وسوسه شه که بره سمتش که اگه برید سمتش شما هم مثل من بهش علاقمند میشید.
پس در جواب اینکه react native چیست میتوان گفت : یک فریمورک بر پایه react که با استفاده از زبان جاوا اسکریپت ، اپلیکیشن نیتیو ایجاد میکند.
در معرفی ریکت نیتیو باید به ویژگی های React Native نیز اشاره کرد:
- کامپوننتی بودن و امکان استفاده از کامپوننت ها در پروژه های دیگر و همچنین استفاده از کامپوننت های دیگر افراد که هم باعث سادگی میشه و هم سریعتر شدن کار.
- ساخت بسیار راحتتر رابط کاربری های زیبا برای اپلیکیشن (به دلیل وجود استایل css مانند و jsx) که میبینید که skype هم تجدیدنظر کرد و به ریکت نیتیو پیوست به تازگی.
- هیچ محدودیتی برای شما نداره . شما میتونید هرموقع خواستید توی ریکت نیتیو کدهای java , swift بنویسید تا کامپوننت های نیتیو خودتونو به وجود بیارید. پس از این بابت هم نگرانی ای نمیزاره (البته که هر کامپوننتی نیاز داشته باشید ایجاد شده ولی این مورد محض اطمینان هست).
- یه فرانت اند کار خوب میتونه با گذاشتن تایم کمی ریکت نیتیو رو به خوبی فرا بگیره و همچنین برنامه نویس های اندروید و Ios هم که تا الان نیتیو کار میکردند با یادگرفتن پایه های وب سمت ریکت نیتیو بیان.
- بدون اینکه از زبان های نیتیو هم سردر بیارید میتونید کار بکنید باهاش و فقط باید قواعد اپلیکیشن و تفاوتش با وب رو فرا بگیرید.
- نیازی نیست برای توسعه اپ اندرویدتون از اندروید استودیو و برای ios از xcode استفاده کنید و آزادانه میتونید از هر ادیتوری استفاده بکنید و لذت ببرید.
۸ سایت معروف که از Node.js استفاده می کنند
در این مقاله می خواهیم در مورد ۸ وبسایت معروفی که از Node.js در سیستمشون استفاده می کنند, صحبت کنیم.
Paypal & eBay

PayPal یک پردازشگر پرداختی هست. درسال ۲۰۱۵ نزدیک به ۴ بیلیون معامله و ۱۷۹ میلیون اکانت پی پال وجود داشت. پی پال به سمت NodeJS حرکت کرد چون به شدت فرایند توسعه رو ساده کرده. اون ها میتونند یک تیم ترکیب شده برای وب داشته باشند بجای اینکه مثل قبل یک تیم مجزا برای مرورگر و یک تیم برای اپلیکیشن بدارند. برنامه نویسان جاوا یاد گرفتند با Nodejs کار کنند و متوجه شدند این راه بهتری هست.
کمپانی زیرشاخه پی پال که eBay نام داره هم با Node نوشته شده.

LinkedIn یک شبکه بیزینسی و پلتفرم وبلاگی هست. اونها حداقل ۴۰۰ میلیون کاربر دارند و یک سوم آمریکایی ها حساب کاربری دارند. اونها Node.js رو بخاطر این انتخاب کردن که جاوا اسکریپت یک زبان برنامه نویسی ساده برای یادگیری و کدنویسی هست. اونها بخش front-end رو با Nodejs بازنویسی کردند.

Google ابتدا با سرویس جستجو شروع کرد. و سپس سراغ بخش های دیگر مثل سرویس های ایمیل, تقویم, پیام رسانی و spreedsheets رفت. تنها سرویس جستجوی گوگل ۱۰۰ بیلیون درخواست در یک ماه سال ۲۰۱۵ داشت و این باعث شده پربازدیدترین سایت جهان بشه.
Netflix

نزدیک به ۷۵ میلیون حساب کاربری در Netflix دربین بیش از ۱۰۰ کشور وجود داره. پانزده درصد از آمریکایی ها یک حساب Netflix دارند. این به کاربران اجازه میده بصورت قانونی به نمایش های مختلف در سراسر جهان دسترسی داشته باشند. یکی از دلایلی که Netflix به Node.js کوچ کرد این بود که بصورت قابل توجهی زمان ساخت رو بهبود بخشید, اون ها دیگه مجبور نبودند ۴۰ دقیقه برای کامپایل اپ صبر کنند.
Uber

Uber یک اپلیکیشن حمل و نقل هست که خدمات زنجیره ای و تاکسی رو اراده میده. اونها از Nodejs برای سیستم اعزام رانندگان و سواران استفاده می کنند.
Github

Github یک اپلیکیشن وب هست که ورژن کنترل رو برای استفاده در یک محیط گرافیکی فراهم میکنه. اونها از Node.js برای سرو دانلود های repository ها استفاده می کنند.
Medium

Medium ساخت بلاگ رو راحت کرده. این وبسایت توسط صاحت توئیتر در سال ۲۰۱۲ راه اندازی شد. این یک رابط WYSIWYC دارد و بهترین قابلیت ها رو از پلتفرم های انتشار مثل توئیتر و وردپرس ترکیب کرده. این سیستم بسرعت رشد کرد و نزدیک به ۲۵ میلیون خواننده در ماه دارد.
Trello

Trello یک سیستم مدیریت پروژه هست که کار تیم ها رو ساده می کنه. نزدیک به ۱۰ میلیون کاربر در سال ۲۰۱۵ داشت. سرور اونها توسط node ساخته شده تا امکان بروزرسانی سریع رو داشته باشند.
۹ تکنولوژی وب که باید بدانید
در طی چند سال اخیر تکنولوژیهای فرانت اند مختلفی وارد بازار شدند. با این تغییرات دنیای طراحی وب به شدت در خود تغییراتی را مشاهده کرد. حال با وجود این تغییرات شما میتوانید وبسایتها را آسانتر و با کارایی بیشتری ایجاد کنید.
من همیشه در رابطه با آخرین ابزارها و بهترین رویکردها هیجان زده هستم، به این دلیل که باور دارم ابزارهای جدید امروز میتوانند به ابزارهایی با بیشترین استفاده در فردا تبدیل شوند.
من در این مطلب قصد دارم شما را با ۹ تکنولوژی و ابزار مدرن برای توسعهدهندگان وب آشنا کنم. البته آنها برای جریان توسعه وب الزامی نیستند و برخی از آنها به صورت ویژه نیز برای تنها توسعه وب ایجاد نشده اند. اما آنها میتوانند سرعت شما را بهبود و پایههای کدنویسیتان را ارتقا دهند.
webcomponents

ممکن است اصطلاح WebComponents را شنیده باشید، اما از اینکه به جزئیات آن نگاه کرده باشید شک دارم. WebComponents در واقع استایلهای تازهای برای HTML۵ است که براساس استانداردهای موجود در W۳C ایجاد شده است.
این کامپوننتها به شما اجازه میدهد که بتوانید المنتهای سفارشی با قابلیت استفاده مجدد را در صفحات پویا داشته باشید. المانهایی مانند ویجت تبها، اسلایدرهای تصویری و منوها. دیگر نیازی نیست که از ابتدا یک منو کشویی را ایجاد کنید. شما تنها نیاز دارید که از یک تگ در این کامپوننت استفاده کنید.
در وبسایت اصلی این پروژه میتوانید مثالهای متفاوتی همراه با توضیحات بسیار مختصری را مشاهده کنید. همچنین اگر نتوانستید به خوبی با آنها ارتباط برقرار کنید میتوانید از طریق این راهنما نکات کاربردی را مشاهده کنید.
در چند سال گذشته این پروژه چندان تکمیل نیافته بود اما در حال حاضر میتوان از آن به عنوان یک ابزار بسیار مناسب در کنار کارتان استفاده کنید.
Polymer

Polymer یک کتابخانه متن باز است که توسط تیم گوگل رهبری میشود. استفاده کردن از این تکنولوژی به شما کمک میکند تا بتوانید مراحل توسعه و استفاده از APIهای مختلف و موارد دیگری که ارائه میکند بسیار آسانتر شود. در این کتابخانه المانهای داخلی نیز وجود دارد که میتوانید از آنها استفاده کنید.
در کنار این در نسخه جدید این تکنولوژی قابلیت ایجاد اپلیکیشنهای پیشرونده نیز مهیا شده که باعث میشود بتوانید بسیار سریعتر پیشرفت داشته باشید.
هدف Polymer این است که توانایی ایجاد ماژولها را داشته باشد. شما میتوانید ماژولهای خودتان را ایجاد کنید. برای خواندن اطلاعات بیشتر و موارد جدید در نسخه ۳ آن به وبسایت Polymer مراجعه کنید.
AMP

گوگل چند سال پیش تکنولوژی AMP را ایجاد کرد و هدف از این کار بهتر کردن تجربه کاربری کاربران در کاوش کردن اینترنت بود. با استفاده از پروژه AMP برگههای وبسایت شما در یک قالب با قابلیت خوانایی بالا قرار میگیرد و توانایی بارگذاری بسیار سریعی را دارد.
شما تنها نیاز دارید که کدهایی را به وبسایتتان اضافه کنید و بعد از آن گوگل بقیه کارها را انجام میدهد. اگر وبسایت شما براساس AMP بهینهسازی شود همه چیز برای کاربران موبایل سریعتر بارگذاری میشود و تجربهای شبیه به اپلیکیشنهای موبایل را پیدا خواهند کرد.
با در نظر گرفتن رشد بی اندازه کاربران موبایلی به نسبت دستگاههای دیگر به نظر میرسد که سوئیچ کردن به این پروژه ارزش بالایی دارد. استفاده از این تکنولوژی در وبسایتهایی با قابلیتهای تعاملی بسیار بالا ممکن است درست نباشد اما برای وبسایتهای خبری و وبلاگی که متن/تصویر و موارد مشابه را ارائه میدهند میتواند انقلابی در مصرف کاربران موبایل به وجود بیاورد.
Gulp

خودکارسازی یکی از کلیدیترین راهها برای کاهش زمان مصرف شده در انجام کارهای تکراری است. با استفاده از یک اجرا کننده وظایف مانند Gulp بسیار ساده است که بتوانید وظایف تکراری و آزار دهنده را به صورت خودکار انجام دهید و بتوانید روی کارهای مهم دیگری تمرکز کنید.
Gulp میتواند فایل Sass شما را به CSS تبدیل کند، هکهایی را به کدهایتان اضافه نماید، برگهها را پس از تغییرات بازسازی کند و… . شما میتوانید کارهای بسیار بیشتری را با استفاده از Gulp انجام دهید.
TypeScript

فریمورک فرانتاند AngularJS در آخرین نسخههای خود به صورت کامل از زبان اسکریپتنویسی تایپاسکریپت پشتیبانی میکند. پس اگر از طرفداران انگولار هستید باید این زبان را یاد بگیرید.
البته تایپاسکریپت به صورت کامل یک زبان جدید نیست، خود این تکنولوژی براساس جاوااسکریپت ایجاد شده است. بنابراین اگر بتوانید با جاوااسکریپت کار کنید پس یادگیری تایپاسکریپت برایتان وقتگیر نخواهد بود.
اگر قصد دارید دانش جاوااسکریپتی خود را به سطح جدیدی ببرید پیشنهاد میکنم که به سمت تایپاسکریپت بروید. مطمئنا از انتخاب این تکنولوژی پشیمان نخواهید بود.
Three.js

اگر تا به حال در دنیای طراحی وب مباحث WebGL و ۲D/۳D را دنبال کرده باشید پس مطمئنا نام Three.js را شنیدهاید. این کتابخانه یکی از قدرتمندترین موارد برای گرافیکهای مبتنی بر وب است که براساس یک موتور رندرینگ کار میکند.
این موضوع که وبسایتهای کمی نیاز به گرافیکهای سه بعدی دارند واقعیت دارند، اما با پیشرفت این تکنولوژی و رشد آن، مطمئنا یکی از موارد پر استفاده خواهد بود.
Three.js به صورت رایگان و متن باز ارائه شده و همچنین در کنار APIهای WebGL بهبود مییابد.
Docker

با یک کانتینر پلتفرم مانند داکر شما میتوانید محیطهای مجازی ایجاد کرده و وبسایتتان را روی سرورهای مختلفی به آسانی انتقال دهید. تا به حال در رابطه با داکر آموزشها و مستندات بسیار زیادی ارائه شده که میتوانید از آنها استفاده کنید.
اما داکر جزو معدود پلتفرمهایی است که با آوردن قابلیتهای مجازیسازی میتواند کل سیر توسعه شما را تغییر و بهبود دهد. اگر یک DevOps باشید مطمئنا با داکر کار کردهاید و یا کار باید بکنید.
Ionic Framework

در حقیقت این تنها تکنولوژی موجود در این لیست است که مستقیما به دنیای وب مربوط نمیشود. اما این مورد مخصوص توسعهدهندگان وب است، افرادی که قصد دارند تا با استفاده از HTML/CSS/JS اپلیکیشنهای نیتیو را ایجاد کنند.
Ionic فریمورک متن باز و رایگانی است که برای ایجاد اپلیکیشنهای آندروید و IOS ایجاد شده است. تمام اپلیکیشنهای موجود در این فریمورک براساس کدهای سازگار با دنیای وب ایجاد شده، بنابراین شما میتوانید اپلیکیشنهای جاوااسکریپتی را بنویسید که در نهایت شبیه به اپلیکیشنهای جاوا/سویفت است.
توسعهدهندگان وب بسیار به ندرت وارد دنیای برنامهنویسی اپلیکیشنهای نیتیو میشوند اما Ionic به آنها جایگزین بسیار خوبی را ارائه میدهد. تا به اینجای کار پشتیبانی نسبتا خوبی نیز از این فریمورک شده است. برای کار با این فریمورک نیاز است که دانش نسبتا خوبی در تایپاسکریپت داشته باشید.
کتابخانههای Zurb

برای چند سال من علاقه زیادی به Zurb و فریمورک قدرتمند فاوندیشن داشتم. در بروزرسانیهای اخیر این ابزار شما با کتابخانههایی همراه هستید که در نهایت میتوانید روندهای کاری را طراحی و خودکار سازی کنید. یکی از این موارد Foundation for Emails نام دارد.
یکی دیگر از موارد مناسب در این کتابخانه Motion UI نام دارد که برای ایجاد انیمیشنهای مبتنی بر وب بسیار مناسب است. شما میتوانید به صورت مستقل و یا همراه با کل پروژه فاوندیشن از این کتابخانه استفاده کنید.
تمام کتابخانههای موجود در این فریمورک به صورت متن باز ارائه میشود و تیم توسعه آن به سختی در حال کار کردن برای بهتر نمودن آن هستند.
۴ چالش برای یادگیری کدنویسی
وقتی می شنوید که هر کسی توانایی یادگیری همه چیز را دارد ممکن است علاقه پیدا کنید که به یک توسعه دهنده تبدیل شوید، اما برای این یک چیز مهم وجود دارد. اگر قصد دارید کدنویسی را یاد بگیرید، شما مجبور هستید که سخت روی آن کار کنید. کدنویسی توانایی قابل دستیابی است اما آسان نیست و تنهایی پیمودن این راه نیازمند روبرو شدن با یکسری از چالش هاست. ما به تازگی از دانشجویان خودمان پرسیدیم که برای رسیدن به توانایی کدنویسی با چه چالش هایی روبرو شدید، بعد از شنیدن حرف آن ها و نتیجه گیری تصمیم گرفتیم که ۴ مورد از این چالش ها را با شما نیز به اشتراک بگذاریم.

۱. سندرم مضر
خواه چه یک برنامهنویس تازه کار باشید و یا یک توسعه دهنده مجرب مطمئنا حضور خیره کننده سندرم مضر را در پروسه یادگیری کدنویسی مشاهده کردهاید و آن را احساس نموده اید. نبود اعتماد به نفس وقتی که اول راه هستید، چیز مشهودی است، اما صادقانه بگویم که این حالت لزوما همیشه اتفاق نمی افتد. به یاد داشته باشید که هر توسعه دهنده مجربی نیز زمانی یک فرد مبتدی بوده، پس آن ها نیز چنین وضعیتی را درک می کنند. صنعت تکنولوژی دارای جامعه پشتیبانی و کمکی خوبی است که شما در آن می توانید با افراد باتجربه دیگر که دوست دارند با شما همکاری کنند و شما را یاری نمایند، آشنا شوید. یکی از دانشجویان دوره میگفت: «برای من بزرگترین چالش و خطر در ابتدای کار ترس بود که باعث می شد من عقب نشینی کنم …آن ترس هنوز هم در من یافت می شود، ترس اینکه نکند به اندازه کافی در زمینه کدنویسی و زمینه های مرتبط با آن موفق نشوم. اما هر وقت به دام چنین فکری می افتم، بخاطر می آورم که من عاشق کدنویسی هستم و هر روز می تواند یک فرصت جدید برای این باشد که من پیشرفت کنم.»
در همین زمینه یکی از مهندسان توسعه نرم افزار می گوید: «به عنوان یک توسعه دهنده تازه وارد مقایسه کردن خود با دیگران کار آسانی است و یا اینکه نگرانی درباره اینکه آیا من در مسیر درست قرار گرفتهام چیزی عادی است. از نکات مثبت کدنویس شدن این است که یک راه کلی برای تبدیل شدن وجود ندارد و در حقیقت روند خطی در کار نیست، مهم این است که شما بتوانید مسائل را حل کنید. وقتی یاد گرفتید که چگونه مسائل را حل کنید و با آن ها برخورد کنید، کدنویسی برای شما بسیار ساده خواهد شد»
اجازه ندهید که ترس و وحشت درونتان رخنه کند. بجای آن به چالشها، حل مسائل و گذشته خود نگاه بیاندازید. در دنیای این صنعت فقط یک دسته از توسعه دهندگان وجود ندارد، بلکه فرصت های بسیاری در دنیا برای شما نیز وجود دارد که انتظارتان را میکشد. شما نیاز دارید که روی کدنویسی و یادگیری تمرکز کنید تا تواناییتان را در این زمینه بهتر و بهتر کنید.
۲. تلاش کنید تا همه چیز را درک کنید
یادگیری کدنویسی درست مانند یادگیری هر زبان دیگری است. در ابتدا ایده و مفهوم کدنویسی ممکن است غیر عملی به نظر برسد. بعد از آن که شما شروع به درک موارد پایهای کردید، احتیاج پیدا خواهید کرد که خردههای دانشتان را در کنار هم قرار دهید و شروع به فهمیدن کنید. یکی از توسعه دهندگان در این باره میگوید: «در پروسه یادگیری، ممکن است برخی از اوقات متوجه شوید که برخی چیزها واقعا درکشان سخت و دشوار است. این اتفاق بیشتر زمانی می افتد که میخواهید ایدههایتان را به اجرا دربیاورید. شما موارد پایهای را یاد گرفتید، اما ممکن است ندانید که چگونه این موارد را در کنار هم قرار دهید. در تجربه من این مورد بیشتر شبیه به آن است که من در پایین یک صخره ایستاده باشم. این درست جایی بود که من بیشترین ناامیدی را از پروسه یادگیریم دریافت کردم.»
هر زمان که با یک مانع در جریان یادگیری و انجام تمرینی روبرو شدید، به خاطر بسپارید که هر توسعه دهندهای نیز زمانی در چنین مرحلهای قرار گرفته است. در چنین مواقعی باید با ایمان و تعهد به کدنویسی کارتان را ادامه دهید. یکی دیگر از راه ها این است که تاکتیک های کدنویسی را برای ساده کردن مسائل و کار با آن ها یاد بگیرید.
در کنار تمام این موارد با انجام آزمایش و خطا می توانید به برخی دانش ها از کدنویسی دست یابید که تقریبا هیچ کس دیگری آن ها را به شما یاد نمیدهد. پس بهتر است روی کدها نیز فکر کنید.
۳. زمان را مدیریت کنید
یکی از مشکلات بسیار مرسوم در یادگیری کدنویسی درست همین مسئله زمان است، مخصوصا وقتی که شما مجبورید آن را بین زندگی شخصی، کار و خانواده تقسیم کنید. یکی از توسعه دهندگان در این زمینه میگوید: «ما در زمان سختی به سر میبریم. هزینهها بالاست، دستمزد کم است و رکورد روز به روز در حال افزایش است. میلیون ها حواس پرتی و میلیون ها دلیل برای بیرون آمدن از پروسه یادگیری وجود دارد.» اینجا جاییست که خودشناسی وارد می شود. بهتر است برای رفع چنین مسئلهای هدفتان را تعیین کنید و برای رسیدن به آن زمان بندی نمایید.
۴. ناامیدی
آخرین چالش موردی است که هر کس سراغ کدنویسی آمده باشد در دورههای زمانی مختلف با آن سر و کار داشته – ناامیدی. وقتی که یک خطا درون کدهایتان مخفی شده است، برای شما فرصتی برای یادگیری موردی جدید درست می شود. اما در این پروسه ناامیدی می تواند شما را غافلگیر کند. وقتی که چنین اتفاقی می افتد شما تنها فکر میکنید که قصد دارید از کار خارج شوید. یکی از افراد میگوید: «من در مورد خارج شدن از پروسه یادگیری فکر می کردم، من همه چیزهای اطرافم را پرت کردم و حتی یک مشت محکم به دیوار خانه زدم. من گریه کردم. من از اولین خط کدی که نوشته بودم تا به آخر برنامه را بررسی کردم، متوجه شدم که یک سیمیکولن را جا گذاشته ام. نمیتوانم برایتان تعداد بارهایی که چنین اتفاقی افتاده است را بشمارم.» در حقیقت نیز شما بسیاری از اوقات مجبور هستید با این ناامیدی ها در مسیر تبدیل شدن به یک توسعه دهنده روبرو شوید. اما هر وقت که کدهای جدیدی ایجاد میکنید، آن ها را دیباگ میکنید و مشکلات جدیدی را حل می کنید به شما کمک می کند تا از چنین ناامیدی هایی دوری کنید.
آشنایی مقدماتی با زبان برنامهنویسی روبی
روبی یک زبان برنامهنویسی شئگرا چند منظوره است که توسط Yukihiro Matsumoto -توسعهدهنده ژاپنی- توسعه داده شد. این زبان برنامهنویسی به خوبی میتواند روی تمام پلتفرمهای محبوب از جمله لینوکس، یونیکس، ویندوز و Mac Os کار بکند.
همچنین روبی را میتوانید در بین ۱۰ زبان برتر برنامهنویسی در گیتهاب مشاهده بکنید. در این مطلب کوتاه قصد داریم شما را با کلیات روبی و ویژگیهای آن به خوبی آشنا بکنیم.
روبی چیست؟
روبی یک زبان برنامهنویسی شئگرا، چند منظوره، پویا و مفسری است که در اواسط دهه ۹۰ میلادی ساخته شد. براساس گفتههای توسعهدهنده روبی این زبان از پرل، اسمالتاک، ایفل، ادا و لیسپ تاثیر گرفته است. روبی از چندین پارادیم برنامهنویسی از جمله تابعی، شئگرا و امری پشتیبانی میکند. همچنین از آنجایی که یک زبان برنامهنویسی داینامیک است، نوعهای دادهای در آن به صورت خودکار تعیین میشوند و مدیریت حافظه نیز به صورت خودکار انجام میشود.
چرا روبی ساخته شد؟

ابتدای امر بگوییم که روبی برای انجام یک وظیفه خاص و منحصر به فرد ساخته نشده است. قصد توسعهدهنده از ساختن روبی، ایجاد یک زبان مفسری و همزمان شئگرا (مانند پایتون) بوده است. بنابراین به خوبی میشود از روبی در هر دو شکل از حالتها استفاده کرد.
با این حال وجود کتابخانههای مختلف به روبی این قابلیت را داده که تقریبا برای هر کاری آماده باشد. با استفاده از روبی میشود اپلیکیشنهای آندرویدی و IOS را توسعه داد، برای Back-End کد نوشت، با آن بازی ساخت و… .
چرا نام «روبی»؟
داستانی که پشت نامگذاری این زبان برنامهنویسی وجود دارد کمی جالب است. در ابتدا دو نام یکی روبی (یاقوت) و دیگری Coral (مرجان) پیشنهاد داده شد، اما بعدا طی یک گفتگوی آنلاین بین سازنده روبی و یک توسعه دهنده ژاپنی دیگر با نام Keiju Ishitsuka تصمیم بر این شد که روبی به عنوان نام اصلی این زبان قرار بگیرد.
ویژگیهای زبان برنامهنویسی روبی

۱. رایگان و متن باز – روبی یک زبان برنامهنویسی متن باز و همچنین رایگان است. به همین دلیل قابلیت استفاده از آن برای همگان ممکن است.
۲. چند منظوره و شئگرا – روبی یک زبان چند منظوره است، بنابراین برای یک منظور خاص نوشته نشده و تقریبا میتوان در هر جایی از آن استفاده کرد. همچنین قابلیت شئگرایی یکی دیگر از موضوعات مهم است که روبی از آن پشتیبانی میکند.
۳. اتصالپذیری راحت – روبی به سادگی میتواند با بانکهای اطلاعاتی مختلف از جمله MYSQL، DB۲، Oracle و… ارتباط برقرار کند.
۴. سینتکس مشابه – روبی سینتکس چندان منحصر به فردی ندارد. به همین دلیل افرادی که با پرل و حتی سیپلاسپلاس آشنایی داشته باشند میتوانند به راحتی با روبی کدنویسی بکنند.
۵. زبان سطح بالا – روبی یک زبان برنامهنویسی سطح بالاست. بنابراین انسانها بسیار راحتتر میتوانند کار کردن با آن را یاد بگیرند و با استفاده از آن کد بنویسند.
۶. جامعه توسعهدهندگان بزرگ – مستندات با کیفیت و پر محتوای بسیار زیادی تا به حال برای روبی نوشته شده است. به همین دلیل اگر در توسعه اپلیکیشنهای مبتنی بر روبی با مشکلی مواجه شدید به سرعت میتوانید مشکلاتتان را حل نمایید.
۷. موقعیت کاری عالی – در بین زبانهای برنامهنویسی، روبی یکی از زبانهای پرطرفدار برای یادگیری است. بسیاری از وبسایتهای کاریابی معروف در حال حاضر به دنبال استخدام توسعهدهندگان روبی هستند.
کاربردهای زبان روبی

همانطور که گفته شد روبی را میتوان در اپلیکیشنهای مختلفی به کار برد. روبی یک زبان چند منظوره است و وجود اکوسیستم مناسب برای پکیجهای آن، به روبی قابلیت توسعه بسیار زیادی داده است.
- پلتفرم موبایل: همانطور که ما اشاره کردیم، با استفاده از روبی میشود برای پلتفرمهای آندروید و IOS اپلیکیشن نوشت. این قابلیتی است که چندین کتابخانه روبی برای ما فراهم میکند.
- سیستمهای تعبیه شده: روبی را میتوان به خوبی در سیستمهای تعبیه شده و در دنیای IOT استفاده کرد. Mruby یکی از مفسرهای زبان روبی است که در این مسیر استفاده میشود.
- وب اپلیکیشنها: براساس پروژههایی که تا به حال با استفاده از روبی برای توسعه وب اپلیکیشنها نوشته شده است، اینگونه میتوان نتیجه گرفت که روبی با کمک فریمورک روبی ان ریلز به شما توانایی بسیار خوبی را جهت توسعه اپلیکیشنهای وب میدهد. گیتهاب و ساوندکلاد دو نمونه خوب از اپلیکیشنهایی هستند که با روبی ان ریلز توسعه داده شدهاند.
۸ زبان برنامهنویسی برای یادگیری در سال ۲۰۱۹
یادگیری مهارتهای جدید زمان میبرد. به همین علت است که قبل از یادگیری چیزی، شما باید بدانید که یادگیری شما قرار است ارزش زمانش را داشته باشد. این مسئله به خصوص وقتی که تصمیم میگیرید چه زبان برنامهنویسیای را یاد بگیرید، صحیح است.
همینطور که ما به سال جدید نزدیک میشویم، زمان خوبی است که به اولویتهای یادگیری برتر خود در سال ۲۰۱۹ نگاهی داشته باشیم. اما چه زبانی را باید در سال ۲۰۱۹ یاد بگیریم؟
ما لیستی از برترین زبانهای برنامه نویسی برای یادگیری در سال جدید را به همراه دلایلی برای یادگیری آنها، و برخی پیشنهادات برای نحوه شروع کار آماده کردهایم. این موارد به شما کمک خواهند کرد تا قدمهایی را برای گسترش مجموعه مهارتهای خود در سال ۲۰۱۹ به گونهای بردارید که برای شما مناسب باشد.
Python
مدتی میشود که پایتون یک زبان در حال رشد بوده است و هیچ نشانهای از محو شدن بروز نمیدهد. چندین علت برای این مسئله وجود دارند، اما بزرگترین آنها جذابیت غیر قابل مقاومت هوش مصنوعی است. پس از این که پایتون را یاد گرفتید، انجام برخی عملیاتهای یادگیری نسبتا پیچیده، با توجه به اکوسیستم چشمگیر ابزاری که آن را احاطه میکنند، مانند TensorFlow نسبتا ساده میشود.
اما اهمیت پایتون فقط درباره یادگیری ماشین نیست. انعطاف آن به این معنی است که این زبان یک محدوده گسترده و متنوع از برنامهها دارد. اگر شما یک توسعه دهنده با یک پشته کامل هستید، برای مثال ممکن است پایتون را برای توسعهدهی سرویسهای backend و APIها مناسب ببینید. به طور مشابه اگر به امنیت یا SRE علاقهمند هستید، پایتون میتواند برای خودکارسازی ابعادی از زیرساختهای شما استفاده شود تا همه چیز را امن و مطمئن نگه دارید.
به زبان ساده، پایتون یک گزینه خوب برای مجموعه مهارتهای شماست.
Python را یاد بگیرید، اگر…
- شما در توسعهدهی نرمافزار تازه وارد هستید.
- میخواهید یادگیری ماشین را امتحان کنید.
- میخواهید اسکریپتهای خودکار بنویسید.
Go
Go به اندازه پایتون محبوب نیست، اما به سرعت در حال رشد است. طرافداران آن هم علت دوست داشتن آن را به این صورت بیان میکنند که: این زبان به شدت ساده بوده، اما همچنان به طور شگفتانگیزی قدرتمند است.
علت این مسئله، آفرینش آن است: این زبان در ابتدا توسط گوگل توسعه داده شده بود، که یک زبان برنامهنویسی میخواست تا بتواند پیچیدگی سیستمهایی که در حال توسعه یابی بودند را مدیریت کند، بدون این که پیچیدگیهای بیشتری در زمینههای دانش و جریانات کاری اضافه کند.
این زبان با ترکیب بهترین ابعاد برنامهنویسی تابعی و شئگرا، و همچنین یک مجموعه با ارزش از ابزار دخلی، احتمال افزایش قدرت در ۱۲ ماه بعدی را دارد.
Go را یاد بگیرید، اگر…
- شما یک توسعه دهنده backend، یا یک توسعه دهنده دارای پشته کامل هستید که به دنبال افزایش دانش زبانی خود است.
- در زمینه سیستم عاملها یا SRE کار میکنید.
- به دنبال جایگزینی برای پایتون هستید.
Rust
Rust در بررسی سالانه Stack Overflow ۲۰۱۸، به عنوان محبوبترین زبان در میان توسعه دهندگانی که از آن استفاده میکردند تعیین شد. ۸۰ درصد پاسخگویان گفتند که استفاده از آن را دوست داشتند، یا این که میخواستند از آن استفاده کنند.
حال با این که Rust سادگی پایتون و Go را کم دارد، اما کاری که برایش ساخته شده است را به خوبی انجام میدهد: برنامهنویسی سیستمها به نوعی که سریع، موثر و امن باشد.
در واقع توسعه دهندگان دوست دارند شایستگیهای Rust و Go را مورد بحث قرار دهند. به نظر میرسد که این توسعه دهندگان، ذهن توسعه دهندگان مشابه خود را مشغول میکنند. گرچه با این که آنها برخی تشابهها را با هم دارند، اما برخی تفاوتهای کلیدی هم هستند که باید تصمیم گرفتن درباره این که کدام مورد را یاد بگیریم را سادهتر کنند.
Rust در سطحی پایه، برای برنامهنویسی سطح پایینتر بهتر است، درحالیکه Go شما را قادر خواهد ساخت تا همه چیز را به سرعت به اتمام برسانید. Rust تعداد زیادی قانون دارد، که تمام آنها به شما کمک خواهند کرد تا برنامههایی با کارایی بسیار بالا را توسعه دهید، اما معنی آن این نیست که این زبان انحنای یادگیری تندتری نسبت به چیزی مانند Go دارد. در نهایت همه چیز به چیزی که میخواهید از این زبان برای آن استفاده کنید، و مقدار زمانی که برای یادگیری یک چیز جدید دارید بستگی خواهد داشت.
Rust را یاد بگیرید، اگر…
- میخواهید بدانید که چرا توسعه دهندگان Rust اینقدر آن را دوست دارند.
- برنامهنویسی سیستمی انجام میدهید.
- مقداری زمان دارید تا انحنای یادگیری آن را بگذرانید.
TypeScript
TypeScript در طی سالهای اخیر، با سکوت کامل در حال جذب محبوبیت بوده است. اما به نظر میرسد ۲۰۱۸ سالی بوده است که این زبان جهش بزرگی به سمت جلو داشت و تصورات جامعه توسعه دهندگان را به دست گرفت.
به احتمال زیاد علت آن این است که ما سعی میکنیم کارهای زیادی با JavaScript ساده انجام دهیم. ما به سادگی بدون غرق شدن در خطهای کد، نمیتوانیم برنامههایی با پیچیدگی مطلوب خود بسازیم.
TypeScript اساسا JavaScript را ارتقا میدهد و آن را برای ساخت برنامههای آینده مناسب میکند. هیچ تعجبی ندارد که TypeScript حال هسته اساسی برای فریموورکهای JavaScript است. حتی گوگل هم تصمیم گرفت که در Angular از آن استفاده کند.
TypeScript را یاد بگیرید، اگر…
- شما یک توسعه دهنده JavaScript هستید.
- شما یک توسعه دهنده Java یا C# هستید که میخواهد افقهای خود را گسترش دهد.
Scala
مدتی میشود که Scala در صحنه حضور داشته است، اما دستاوردهای کارایی آن نسبت به Java در سالهای اخیر، افزایش محبوبیت برای آن را به خود دیدهاند. این زبان از نظر یادگیری در مقایسه با زبانهای مربوط به Java دیگر مانند Kotlin سادهترین زبان نیست. Scala خیلی از اساس خود دور نشده است، و به نوعی تلاشی است برای بازنویسی کامل کتاب قوانین آن.
Scala یک زبان چندمنظوره خوب است که اصول برنامهنویسی تابعی و اصول شئگرایی که در Java پیدا میکنید را گرد هم میآورد. این زبان همچنین برای ارز طراحی شده است، که مقیاسی غیر ممکن از قدرت را در آن به شما میدهد.
یک نکته منفی درباره Scala این است که به مانند بر فرض Java، در اکوسیستم خود ثبات ندارد.
Scala را یاد بگیرید، اگر…
- به دنبال جایگزینی برای Java هستید که مقیاسپذیرتر باشد و ارز را بهتر مدیریت کند.
- با دادههای عظیم کار میکنید.
Swift
Swift زندگی خود را به عنوان جایگزینی برای Objective-C برای توسعه دهندگان iOS شروع کرد. با این که این ابزار توسط افراد حاضر در جامعه توسعه دهی Apple استفاده میشود، اما آثاری هستند که نشان میدهند Swift میتواند از نقاط شروع خود فراتر رفته و تبدیل به انتخابی برای برنامهنویسی سرور و سیستمها شود.
گروه توسعه دهی هستهای ثابت کردند که در ساخت یک زبان مناسب برای آینده، هدف دارند و نسخههای ۳ و ۴ آن آثار قابل ملاحظهای از تکامل را نشان دادند.
Swift که سریع است، یادگیریاش ساده بوده و امن میباشد، نه تنها توانسته است جایگزین بهتری برای Objective-C فراهم کند، بلکه برای بسیاری از چالشهایی که برنامهنویسان در سالهای آینده با آنها مواجه خواهند بود هم مناسب میباشد.
Swift را یاد بگیرید، اگر…
- میخواهید برنامههایی را برای محصولات Apple بسازید.
- به راه جدیدی برای نوشتن کد سرور علاقه دارید.
Kotlin
این که Kotlin از Swift پیروی کند، عاقلانه است. موازات میان این دو قابل توجه است؛ ممکن است که خام باشد، اما میتوان گفت که Kotlin در قبال Java، چیزی به مانند Swift در قبال Objective-C است.
برخی افراد هستند که حس میکنند مقایسه کردن آنها با این اتهام که یک زبان در حال کپی کردن از دیگری است، مطلوب نیست، اما شاید این تشابهات نباید زیاد تجعبآور باشند. هر دوی آنها در حال تلاش برای چیز مشابهی هستند: فراهم کردن یک جایگزین بهتر برای چیزی که از قبل وجود دارد.
با صرف نظر کردن از مناظرات، اگر شما یک توسعه دهنده Java باشید، Kotlin برایتان قانع کننده است و به خوبی کار میکند.
Kotlin را یاد بگیرید، اگر…
- شما یک توسعه دهنده هستید که میخواهد برنامههای بهتری را به صورت سریعتر بسازد.
- میخواهید بدانید که این همه سر و صدا درباره جامعه اندروید برای چیست.
C
اکثر زبانهای این لیست تقریبا جدید هستند، اما من میخواهم آن را با یک مورد کلاسیک به اتمام برسانم که نمیخواهد از میان برود.
C محبوبیتی از روی پیچیده بودن و یادگیری سخت دارد. این زبان پشته سیستم عاملها است و در پروژههای روزانهای که در خود نرمافزار را به صورت پیادهسازی شده دارند، استفاده شده است.
این دو نکته به همراه یکدیگر، یعنی این که C زبانی است که ارزش یادگیری را دارد؛ زیرا بینشی درباره نحوه کار نرمافزار بر روی ماشینها به شما میدهد. در دنیایی که چکیدگی و دسترسیپذیری به افق نرمافزار حکمرانی میکنند، وارد شدن به زیرساختهای همه چیز میتواند بسیار با ارزش باشد.
C را یاد بگیرید، اگر…
- به دنبال یک چالش جدید هستید.
- میخواهید یک درک عمیقتر از نحوه کار نرمافزار بر روی دستگاه خود داشته باشید.
- به توسعهدهی سیستمهای پیادهسازی شده و پروژههای واقعیت مجازی علاقه دارید.
