مطالب مفید

مقدمه:
 

در این بخش از سایت گروه طراحی سایت آژانس تبلیغاتی تکین پرداز تبریز قصد داره که آموزش یکی از بزرگترین و سریعترین زبان های برنامه نویسی دنیا به نام Ruby on Rails رو براتون بزاره. بنده و دوستان عزیز در بخش طراحی سایت قصد داریم ترجمه های مفیدی رو برای این مبحث براتون بزاریم که امیدواریم براتون مفید و بدرد بخور باشه.این ترجمه صرفا فقط یک مقدمه بر آموزش اصلی خواهد بود که در آینده به یاری خدا تمام مواردی که برای کار با روبی براتون لازم باشه رو هم میزاریم.
 

 

چرا روبی؟
 

 

 

روبی یه زبان برنامه نویسی کامپیوتریه.شما احتمالا با Basic, Java , C++ و زبان های دیگه آشنا باشید.در کل همه اینا یه کار انجام میدن.همشون راه هایی برای شما بوجود میارن که بتونین ساختاری در سیستم ایجاد کنید.هر زبان برنامه نویسی بیانگر راه های متفاوت برای ایجاد ساختار با دقت بالا و یکپارچه سازی شیوه هاست.
 

چی باعث میشه روبی تا این حد از زبان های برنامه نویسی دیگه متفاوت باشه؟ در چه شرایطی روبی توسعه سریع (agile development) رو پشتیبانی میکنه؟
 

و اینم جوابش:
 

روبی بصور دینامیکی نوشته میشه، تفسیر شدست ، بازتاب سریعش قابل لمسه ،و شی گراست.جواب خوبی بود،اما یعنی چی اینا؟
 

روبی دینامیکی تایپ میشه
 

تو خیلی از زبان های برنامه نویسی شما باید هر نوع متغیری رو declare (اعلام) کنین.
 

مینویسین
 

int date;

date = 25092006;


لاین اول به سیستم میگه که زمان (date ) باید تو عدد صحیح (integer ) ذخیره بشه- همه اعداد-عددی بدون بازه ده دهی(decimal)- عددی مثل 25092006؛ که ممکنه توی برنامتون یه چیزی مثل اینم بنویسید.


date = “September 25, 2006”;


اما سیستم این لاین جدید کد رو قبول نمیکنه.سیستم این لاینو با پیام ایراد (error) نشون میده.مقدار “September 25, 2006” یک مقدار عدد صحیح نیست (اصلا “September 25, 2006” کلا یه عدد نیست).و دقیقا بخاطر int date; زبان غیر روبی انتظار داره زمان رو بصورت عدد صحیح ثبت کنه.

کلمه int دلالت میکنه به یک ارزش خاص.تو زبان استاتیک برنامه نویسی، متغیرها اصلا تغییری نمی کنن.

بر خلاف اون روبی بصورت دینامیکی کار میکنه، اینجوری بگم که

date = 25092006

date = “September 25, 2006”


متغیرهای روبی میتونه از متغیر اعشاری به ده دهی به سرعت تغییر کنه، و فوری رشته ها (srings) یا آرایه ها (arrays) شروع بشه. اونا فوری بدون تکنیک های برنامه نویسی سخت تغییر میکنن.این انعطاف پذیری کمک میکنه روبی به یه زبان کامل برای توسعه سریع تبدیل بشه.
 

روبی تفسیر شدست(interpreted)
 

خیلی از زبان های برنامه نویسی دنیا کمپایل شده هستن. وقتی کامپیوتر یه برنامه رو کمپایل میکنه اونو بصورت چیدمانی از ساختاری کاملا با جزییات تبدیل میکنه.(یه ساختاری با جزییات خیلی بیشتر از چیزی که برنامه نویس اضافه کرده).
 

خودتونو در حال تولید برنامه ای که کاملا کمپایل شده تصور کنین.اول شما کد رو مینویسین،بعدش بازم کد هارو کمپایل میکنین، بعدش کدهارو اجرا میکنین.بعدش کد اونجوری که شما میخواستید کار نمیکنه.بعدش شما شروع میکنین کد رو تغییر دادن و بازم کدهارو کمپایل میکنین.این چرخه ممکنه صدبار تو یه روز اتفاق بیفته."کد رو تغییر بده، کمپیل کن ، اجرا کن."و در آخر شما ذهنتون از این همه تکرار خسته میشه.
 

بر خلاف زبان های کمپایل شده، روبی کلا تفسیر شدست. یه زبان تفسیر شده بر اساس مراحل کمپایل کردن کار میکنه. همین که کد رو مینویسین اونو اجرا هم میکنین.احتمالا شما این نتیجه رو خوشتون نیاد و اونو تغییر میدینو کارتونو ادامه میدید. این چرخه همونطور که متوجه شدید خیلی کوتاه تر شده.یه قسمت از نرم افزار ( ruby interpreter) بدون وقفه کد رو بررسی و اجرا میکنه.
 

کدومش بهتره – کد کمپایل شده یا تفسیر شده؟باور کنین یا نه جوابش مستقیم برمیگرده به نقطه نظر شما.کامپیوتر کد کامپایل شده رو سریعتر از کد تفسیر شده اجرا میکنه و لی اینم بگم که وقتی سرعت سیستم به هر دلیلی کم بشه این برتری با کد تفسیر شدست.
 

پس سرعت اجرا رو بیخیال شید و به سرعت تولید فکر کنین.با یه زبان کمپایل شده، سه مرحله تغییر-کمپایل-اجرا باید هر بار اتفاق بیفته.در مقابل با یه زبان تفسیر شده مثل روبی فقط دو مرحله تغییر-اجرا باقی میمونه.حالا مشکل چیه؟ مگه مرحله کامپایل کردن چقدر میتونه طول بکشه؟
 

جوابش اینه که کامپایل کردن میتونه سرعتتونو کم کنه.کامپایل کردن میتونه زمانبر باشه مخصوصا وقتی پروژه پیچیده ای که حجمشم خیلی زیاد باشه و باید انجام بدید، حتی کامپایل کردن دو ثانیه ای هم میتونه تبدیل به مصیبت بشه اگه اینکارو چندصد بار تو یه روز انجام بدید.
 

اگه عامل زمان رو کنار بزاریم، کامپایل کردن یه مرحله ست که برنامه نویس رو از رسیدن به مرحله اجرا دور میکنه.برنامه نویسی تو یه زبان کامپایل شده مثل C++ رو تصورکنین، که کامپیوتر برنامتونو کامپایل میکنه که چیدمان با ساختار بیشتر براش درست کنه.این ساختار جدید با برنامه ای که شما نوشتید الان دیگه خیلی متفاوته.این ترجمه از چیزیه که شما نوشته بودید.پس به جای اجرای دستور شما ترجمه ای از اون چیزی که نوشته بودید رو ارایه میده.
 

پس باز اصلاح این ساختار سختتر میشه ولی همین چرخه دو مرحله ای باعث میشه دیگه در اصلاح دچار مشکل و اعصاب کشی نشید.
 

روبی بازتاب داره(reflective)
 

برنامه روبی میتونه کد خودشو نشون بده، مثل یه فیلسوف که عقیده خودشو بیان میکنه.اگه بخوایم با جزییات بیشتر بگیم، برنامه روبی میتونه رشته هارو تبدیل به یه سری کاراکترهای با قابلیت اجرایی تبدیل کنه و جالب اینجاست این نتایج رو در حال اجرای برنامه ارایه میده.به مثال زیر توجه کنین
 

Listing 1-1: Defining a Database Table print

“Enter some text: “

STDOUT.flush

text_input = gets

puts

print “You entered: “

print text_input

puts

print “Maybe you entered some Ruby code!\n”

print “I’ll try to execute the text that you entered.\n”

print “The result of executing your text is “

eval text_input



ارقام 1-1 و 2-1 دوتا اجرای کد متفاوت تو listing 1-1 رو نشون میده.هر دور کد که اضافه میشه پیشنهادایی از طرف خود زبان بصورت یک سری text ارایه میشه.

  • روبی نوشته رو نشون میده( نوشته رو با یک ثانیه اختلاف نشون میده)
  • روبی متن شما رو به عنوان کد روبی تفسیر میکنه و در صورت لزوم براتون اجراش میکنه.



قدم دوم (تفسیر مجدد کد بصورت کد) تو زبان های برنامه نویسی دیگه سختتره. روبی تفسیر مجدد متن بصورت کد رو آسون کرده و این حرکت زندگی برنامه نویسا رو بهتر کرده.

روبی شی گراست
 

در آینده بحث شیگرایی(OOP) رو کامل براتون توضیح میدیم.البته برای اینکه یه دید کوتاه از موضوع داشته باشیم براتون یه توضیح مختصر اینجا میدیم. زبان های شیگرا حول اسامی کار میکنند نه حول افعال.هر حساب بانکی یه گردش داره، و هر مشتری؛یک اسم، یک آدرس ، و یک یا چند حساب دارد.
 

بعد از مشخص شدن اسم شما شروع به اضافه کردن فعل ها به آن می کنید.یک حساب جدید برای یک مشتری خاص ایجاد کنید.و شروع کنید گردشو چیزای دیگه درباره مشتری تعریف کردن.
 

تقریبا از اواخر سال 1980 بیشتر زبان های برنامه نویسی تولید شده شی گرا تولید شدند.پس نمیشه گفت روبی در این زمینه خاص و تنهاست.اما اینو میشه گفت نوع شیگرایی روبی با نوع های دیگه تفاوت عمده داره که باز هم در مبحث های دیگه کامل توضیح میدیم در این مورد.
 

اصلا rails چیه؟
 

Rails یک افزونه هستش که به زبان روبی نصب میشه.این افزونه یک کتابخانه از تمام کدهای روبی رو شامل میشه، و اسکریپت هایی رو برای تولید نرم افزار ارایه میده و خیلی چیزای دیگه.
 

از سال 2000 تیم های برنامه نویسی جاوا از چهارچوبی به اسم Struts استفاده میکردن. Struts تعریفی بود به بیشتر مشکلاتی که تا اینجا توضیح مثل توسعه وب، پایگاه های داده و مسایل دیگه.در کل اصلاح Struts(ستون) یه اصطلاحیه که در صنعت ساخت و ساز استفاده میشه.( Struts یه پایه عمودیه که ساختمان بر روی اون وایساده).
 

در مورد اسم Ruby on Rails شما نمیتونی روبی رو روی ریل حرکت بدید و این که فریم ورک rails یک افزونه بر روی زبان روبی هستش.
 

این مورد ممکنه که اصلا شما رو در کل سورپرایز نکنه. اما چیزی که Rails رو از Struts و فریم ورک های دیگه جدا میکنه سرعت عمل Rails هستش. حل مشکل وب/دیتابیس بسیار سخت و طاقت فرساست.توسعه تو این فریم ورک ها خیلی کند و رسمی پیش میره.در مقایسه با اونا Rails خیلی سبک و جالبتره.
 

Curt Hibbs نویسنده و متخصص اینگونه درک کرده و در مورد Rails نوشته که" یک دهم زمان لازم برای کار با فریم ورک های دیگه برای انجام همون کار با Rails کافیه." و در ادامه هم میگه:"روبی بر روی دو اصل بنا شده:کنوانسیون(جمع شدن) بر روی پیکربندی، و اینکه خودتو تکرار نکن (DRY).
 

کنوانسیون(جمع شدن) بر روی پیکربندی
 

یک اپلیکیشن وب شامل بخش های متعدده و اگه بخواید اینارو بهم متصل کنین شدیدا کلافه میشید.یه مثال کوچیک بزنیم.شما یه متغیر به اسم picture تو برنامه کامپیوترتون دارید و توی دیتابیس یه ستون به اسم image رو table دارید. برنامه کامپیوتر اطلاعات رو از ستون میز image انتخاب میکنه و این اطلاعات رو روی متغیر picture ذخیره میکنه. بعدش سیستم با داده های متغیر picture شروع به کار مکینه.(برای مثال برنامه شروع میکنه به نمایش بیت های اون عکس روی صفحه وب)
 

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

Rails در نهایت اسامی رو بصورت مجموع پیکربندی میکنه.در ریلز ، یک متغیری به اسم image بصورت خودکار با ستونی همنام در میز دیتابیس مچ میکنه.یک متغیر به اسم photo بصورت خودکار با ستونی در تیبل دیتا بیس به اسم photo مچ میشه.و یه متغیر به اسم person بصورت خودکار با ستونی در تیبل دیتا بیس به اسم people مچ میشه.(دقیقا، Rails معنی جمع(plurals) رو درک میکنه).
 

تو Rails بیشتر پیکربندی های فایل ها که استفاده میشه کلا استفاده نمیشه.شما میتونید ساختارهای اطلاعاتی بسازید البته در صورتی که naming conventions روبی رو کنار بزارید که البته این مورد خیلی به ندرت به دردتون میخوره.
 

خودتو تکرار نکن (DRY)
 

وظیفه دیگه روبی اینه که مانع دوباره اضافه شدن اطلاعات بشه.سیستم های قدیمی برنامه ها شامل انباشت کدهای توضیحی توی میزهای دیتابیس بود.این کدها به بخش های دیگه برنامه در مورد نحوه ساختار میزهای دیتابیس توضیح میداد.فقط بعد از حضور این کد توضیحی بود که برنامه قادر به خوندن اطلاعات از میز دیتابیس میشد.
 

نسبت به دیدگاه دیگه توضیحات اضافی دیتابیس یه کار زائده.یک برنامه میتونه دیتابیس رو بررسی کنه و بصورت خودکار ساختار دیتابیس رو نتیجه گیری کنه. هر کد توضیحی اضافی دایما یک چیز تکراری رو تکرار میکنه.خب پس جدیدش چیه؟
 

در برنامه نویسی کامپیوتر تکرار کردن چیز خوشایندی نیست.تکرار دایمی در باره یک چیز نهایتا باعث میشه ارور بوجود بیاد. اگه یک توضیح در مورد دیتابیس دقیق و درست نباشه، سیستم شروع به ایجاد اشکال میکنه.
 

اگه از ریسک ارور بگذریم ، تکرار مجدد کد یعنی کار بیشتر برای همه. با روش برنامه نویسی سنتی، شما باید هر شرایطی که میخواستید رو با دقت اجرا میکردید.اگه میخواستید یه ستون به دیتابیستون اضافه کنید باید آدرس کد رو هم بروزرسانی میکردید. قطعا که آپدیت کردن کار زمانبریه و قطعا سرعت عمل رو پایین میاره. اینم بگم که هر تغییر تو دیتابیس باعث میشه شما مجبور شید تا اعماق کد پیش برید که این باعث میشه علاقتونو به تغییر اون کد از دست بدید و به مشتریاتون گاها بگید که همچین تغییراتی دیگه برای سایتتون لازم نیست.
 

 

ترجمه شده به سفارش : آژانس تبلیغاتی تکین پرداز تبریز
 

مترجم:
 

تاریخ انتشار: