VIP برنامه نویسی Client Side

وضعیت
موضوع بسته شده است.

☾♔TALAYEH_A♔☽

کاربر نگاه دانلود
کاربر نگاه دانلود
عضویت
2017/05/18
ارسالی ها
35,488
امتیاز واکنش
104,218
امتیاز
1,376
روبی ۲٫۴٫۰ در کریسمس سال ۲۰۱۶ منتشر شد و تغییرات قابل توجه عبارتند از:

  • اتصال #irb: شروع یک جلسه REPL مشابه اتصال .pry
  • یکی کردن Fixnum و Bignum به کلاس عدد صحیح(Integer)
  • String supports Unicode case mappings, not just ASCII
  • a new method, Regexp#match?, which is a faster boolean version of Regexp#match
  • Thread deadlock detection now shows threads with their backtrace and dependency
شاخه ۲٫۴ همچنین شامل بهبود عملکرد هش جدول، آرایه#حداکثر، آرایه#دقیقه و به عنوان مثال دسترسی متغیرها است.
 
  • پیشنهادات
  • ☾♔TALAYEH_A♔☽

    کاربر نگاه دانلود
    کاربر نگاه دانلود
    عضویت
    2017/05/18
    ارسالی ها
    35,488
    امتیاز واکنش
    104,218
    امتیاز
    1,376
    جدول نسخه‌ها
    نسخه آخرین نسخه کوچک تاریخ انتشار اولیه پایان مرحله پشتیبانی پایان فاز نگهداری امنیتی
    ۱٫۸ ۱٫۸٫۷-پی۳۷۵[۱۶] ۱۳۸۲٫۰۵٫۱۳[۱۷] ۱۳۹۱٫۰۴٫۱۰[۱۸] ۱۳۹۳٫۰۴٫۱۰[۱۹]
    ۱٫۹ ۱٫۹٫۳-پی۵۵۱[۲۰] ۱۳۸۶٫۱۰٫۰۴[۲۱] ۱۳۹۲٫۱۲٫۰۴[۲۲] ۱۳۹۳٫۱۲٫۰۴[۲۳]
    ۲٫۰ ۲٫۰٫۰-پی۶۴۸[۲۴] ۱۳۹۱٫۱۲٫۰۶[۲۵] ۱۳۹۳٫۱۲٫۰۵[۲۴] ۱۳۹۴٫۱۲٫۰۵[۲۴]
    ۲٫۱ ۲٫۱٫۱۰[۲۶] ۱۳۹۲٫۱۰٫۰۴[۲۷] ۱۳۹۵٫۰۱٫۱۱[۲۸][۲۹] ۱۳۹۶٫۰۱٫۱۰[۳۰]
    ۲٫۲ ۲٫۲٫۶[۳۱] ۱۳۹۳٫۱۰٫۰۴[۳۲] ۱۳۹۶٫۰۱٫۰۸[۳۳] ۱۳۹۷٫۰۱٫۱۱[۳۴]
    ۲٫۳ ۲٫۳٫۳[۳۵] ۱۳۹۴٫۱۰٫۰۴[۳۶] اطلاعی در دسترس نیست اطلاعی در دسترس نیست
    ۲٫۴ ۲٫۴٫۲[۳۷] ۱۳۹۵٫۱۰٫۰۵[۳۸] اطلاعی در دسترس نیست اطلاعی در دسترس نیست
    ۲٫۵ ۲٫۵٫۰[۳۹] ۱۳۹۶/۱۰/۰۴[۴۰] اطلاعی در دسترس نیست اطلاعی در دسترس نیست
    ۲٫۶
    ۱۳۹۷/۱۰/۰۴[۴۱] اطلاعی در دسترس نیست اطلاعی در دسترس نیست
    ۳٫۰
    ۲۰۲۰[۴۲][۴۳]

    ایجاز:
    نگارش قدیمی
    نگارش قدیمی‌تر، هنوز پشتیبانی می‌شود
    نگارش پایدار جاری
    آخرین نگارش پیش‌نمایش
    انتشار آتی
     

    ☾♔TALAYEH_A♔☽

    کاربر نگاه دانلود
    کاربر نگاه دانلود
    عضویت
    2017/05/18
    ارسالی ها
    35,488
    امتیاز واکنش
    104,218
    امتیاز
    1,376
    فلسفه
    سازنده زبان روبی یوکیهیرو ماتسوموتو می‌گوید روبی برای افزایش توان تولید و تفریح برنامه‌نویسان طراحی شده‌است و از اصل رابط کاربری خوب پیروی می‌کند. او تأکید می‌کند که طراحی سامانه‌ها باید بیشتر روی نیاز انسان‌ها متمرکز باشد تا رایانه‌ها. اغلب مردم، به ویژه برنامه‌نویسان، روی ماشین‌ها تمرکز می‌کنند. آن‌ها فکر می‌کنند "با انجام این کار ماشین‌ها سریعتر می‌شوند، ماشین‌ها در اجرا موثرتر می‌باشند و ..." آن‌ها بر ماشین تمرکز می‌کنند، اما در حقیقت ما نیاز داریم که به انسان‌ها توجه کنیم، اینکه چگونه آن‌ها به برنامه‌نویسی توجه دارند یا چگونه به اجرای برنامه‌های ماشین دقت می‌کنند. روبی برای تعقیب هدف کمترین غافلگیری بیان شدبه این معنی که زبان باید طوری رفتار کند که کمترین گیج‌کنندگی را برای استفاده‌کننده‌های آن داشته باشد. ماتسوموتو همچنین اظهار می‌دارد که هدف اولین طراحی او درست کردن زبانی که خودش از آن لـ*ـذت ببرد بود. این کار با کم کردن کار برنامه‌نویس و ابهامات منطقی می‌باشد. اما کمترین غافلگیری هنوز خیلی به بیان زبان برنامه‌نویسی روبی نزدیک است. افراد ناشی شاید این را به این معنا تعبیر کنند که رفتارهای روبی سعی در متصل کردن اشتراکات رفتارهای دیگر زبان‌ها را دارد. در بحث ماه مه ۲۰۰۵ در روزنامه "کامپ. لنگ. روبی" ماکسوموتو تلاش کرد که روبی را از حداقل غافلگیری دور کند. توضیح اینکه هر شانس طراحی بعضی‌ها را متعجب می‌کند. او از استاندارد خود برای ارزیابی غافلگیری استفاده کرد. ماتسوموتو این را در یک گزارش مطرح ساخت. "همه یک پیشینه شخصی دارند، بعضی‌ها از جانب پایتون می‌آیند بعضی‌های دیگر از پرل و آن‌ها ممکن است از بعضی از جنبه‌های متفاوت زبان غافلگیر شوند. سپس آن‌ها به من می‌گویند ما از بعضی از جنبه‌های زبان غافلگیر شدیم، بنابرین روبی قانون کمترین غافلگیری را زیر پا گذاشته است. صبر کنید... هدف کمترین غافلگیری فقط برای شما نیست. این هدف به معنای کمترین غافلگیری ممکن برای بیان من می‌باشد. این به معنای کمترین غافلگیری بعد از آموزش کامل زبان است. برای مثال من قبل از اینکه روبی را طراحی کنم یک برنامه‌نویس سی پلاس پلاس بودم. من منحصراً دو، سه سال در سی پلاس پلاس برنامه نوشتم و بعد از دو سال برنامه‌نویسی با آن، هنوز مرا متعجب می‌کرد."
     

    ☾♔TALAYEH_A♔☽

    کاربر نگاه دانلود
    کاربر نگاه دانلود
    عضویت
    2017/05/18
    ارسالی ها
    35,488
    امتیاز واکنش
    104,218
    امتیاز
    1,376
    معنی‌شناسی
    روبی شی گراست: همه انواع داده شی هستند، از جمله کلاس‌ها و خیلی از انواع داده‌ای که به‌طور معمول در بقیه زبان‌ها نیز هست مانند داده صحیح، دودویی و ... . تابع به صورت متد می‌باشد. روبی ارث بری را با فرستادن پویا و متدهای یکتا پشتیبانی می‌کند (متعلق به، تعریف شده برای، یک نمونه تک به جای تعریف شدن در کلاس) همچنین روبی از ارث بری چندگانه پشتیبانی می‌کند. نحو رویه‌ای پشتیبانی می‌شود، اما همهٔ متدها که خارج از حوزه یک شی خاص تعریف می‌شوند همه آن در حقیقت متدهای شی یک کلاس هستند. تا زمانی که این کلاس والد کلاس دیگر است تغییرات برای همه کلاس‌ها و شی‌ها ممکن است. روبی به عنوان یک زبان برنامه‌نویسی چند مدلی تشریح شده. در روبی اجازهٔ برنامه‌نویسی رویه‌ای، شیءگرا و تابعی داده شده. بر طبق سوالات متداول روبی «اگر تو به پرل علاقه‌مند باشی روبی را هم دوست خواهی داشت و می‌توانی از نحو آن استفاده کنی. اگر اسمالتالک را دوست داری روبی را هم دوست خواهی داشت و می‌توانی از معنای آن لـ*ـذت ببری و اگر طرفدار پایتون هستی تو ممکن است تفاوت عمده‌ای بین پایتون و روبی پیدا کنی یا که نه.»
     

    ☾♔TALAYEH_A♔☽

    کاربر نگاه دانلود
    کاربر نگاه دانلود
    عضویت
    2017/05/18
    ارسالی ها
    35,488
    امتیاز واکنش
    104,218
    امتیاز
    1,376
    امکانات
    • کاملاً شی گرا
    • داینامیک
    • نحو کوتاه و انعطاف‌پذیر
    • چهار سطح از حوزه دید متغیر شامل: global, class ,instance ,local
    • مدیریت استثناء
    • پشتیبانی از iterators و closures (بر اساس تبادل بلوکهای کد)
    • پشتیبانی محلی از regular expressions (شبیه پرل) در سطح زبان
    • سربارگزاری عملگرها
    • جمع‌آوری زباله خودکار
    • قابلیت حمل بالا
    • در همه سیستم‌عامل اصلی پیاده‌سازی
    • پردازش استثناء
    • سربار اپراتور
    • پشتیبانی شراکتی از multi-threading در تمام پلتفرمهای با استفاده از green threads
    • پشتیبانی کامل از یونیکد و رمزنگاریهای شخصیت چند گانه (از نسخه ۱٫۹)
    • کتابخانه‌های اشتراکی/DLL در اکثر پلتفرمها
    • introspection, reflection و meta-programming
    • اتصال بومی APIها در C
    • پوسته تعاملی روبی (REPL)
    • بسته مدیریت متمرکز از طریق RubyGems
    • کتابخانه استاندارد بزرگ
    • پشتیبانی از تزریق نیازمندی
    • continuations و generators
     

    ☾♔TALAYEH_A♔☽

    کاربر نگاه دانلود
    کاربر نگاه دانلود
    عضویت
    2017/05/18
    ارسالی ها
    35,488
    امتیاز واکنش
    104,218
    امتیاز
    1,376
    تعامل
    توزیع استاندارد روبی دارای یک مفسر تعاملی خط فرمان بنام irb است که می‌تواند برای آزمایش سریع کد بکار رود. یک نشست با این برنامه تعاملی به صورت زیر است:

    $ irb
    irb(main):001:0> puts "Hello, World"
    Hello, World
    => nil
    irb(main):002:0> 1+2
    => 3
     

    ☾♔TALAYEH_A♔☽

    کاربر نگاه دانلود
    کاربر نگاه دانلود
    عضویت
    2017/05/18
    ارسالی ها
    35,488
    امتیاز واکنش
    104,218
    امتیاز
    1,376
    همچنین وجود ماژول readline به کاربر امکان استفاده از shellهای مختلف را با پشتیبانی از تاریخچه تغییرات می‌دهد.

    Readline.readline('', true) # param true means ~ "enable history"
     

    ☾♔TALAYEH_A♔☽

    کاربر نگاه دانلود
    کاربر نگاه دانلود
    عضویت
    2017/05/18
    ارسالی ها
    35,488
    امتیاز واکنش
    104,218
    امتیاز
    1,376
    سینتکس
    سینتکس روبی بسیار شبیه سینتکس پرل و پایتون است. اعلان کلاسها و متدها توسط کلمات کلیدی انجام می‌شود. در مقایسه با پرل متغیرها الزاماً با یک علامت خاص شروع نمی‌شوند. (وقتی از چنین علائمی استفاده شود علامت حوزه دید متغیر را تغییر می‌دهد) بارزترین تفاوت روبی از سی و پرل آنست که کلمات کلیدی (بجای براکت) برای تعریف بلوکهای کد استفاده می‌شوند. سطر جدید به‌عنوان پایان یک جمله بکار بـرده می‌شود در عین حال که برای اینکار می‌توان از یک سمی کالون (;) نیز استفاده کرد. تورفتگیها معنی خاصی ندارند (برعکس پایتون). نمونه‌هایی از سینتکس روبی را می‌توانید در بخش مثال‌ها ببینید.
     

    ☾♔TALAYEH_A♔☽

    کاربر نگاه دانلود
    کاربر نگاه دانلود
    عضویت
    2017/05/18
    ارسالی ها
    35,488
    امتیاز واکنش
    104,218
    امتیاز
    1,376
    چیزهای غافلگیرکننده
    با وجود اینکه طراحی روبی بر اصل عدم غافلگیری استوار است، بطور طبیعی برخی امکانات آن از زبان‌هایی مانند سی و پرل متفاوت است:

    • نام‌هایی که با حرف بزرگ شروع می‌شوند به عنوان ثابت (constant) در نظر گرفته می‌شوند، بنابراین متغیرهای محلی بایستی با حروف کوچک آغاز شوند.
    • به منظور وضوح مقادیر اعشاری (float)، بایستی با یک صفر بعد از نقطه مشخص شوند (۹۹٫۰) یا اینکه از یک تبدیل صریح (99.to_f) استفاده شود. تنها اضافه کردن یک نقطه بعد از عدد (.۹۹) کافی نیست زیرا در این حالت اعداد مستعد پذیرش به‌عنوان یک متد هستند.
    • مقادیر بولین اطلاعات غیر بولین سخت گیرانه هستند: ۰، “” و [] برابر با true هستند. در سی عبارت ۰: ۱ ? ۰ برابر با صفر (همان false) است در حالیکه در روبی نتیجه آن ۱ است زیرا تمام اعداد برابر true هستند و فقط nil و false برابر false هستند. یک نتیجه فرعی از این عمل آنست که در روبی متدها بر طبق قرارداد -- برای مثال یک جستجوی regular-expression – در صورت موفقیت اعداد، رشته‌ها، لیستها یا سایر مقادیر غیر false را بر می‌گردانند، و در صورت شکست nil برمی‌گردانند. این قرارداد در اسمال‌تاک هم بکار می‌رود که تنها اشیاء مخصوص true و false می‌توانند در عبارات بولین استفاده شوند.
    • در نسخه‌های ماقبل از ۱٫۹ عدم وجود نوع داده کاراکتر (در مقایسه با سی که نوع داده char را برای کاراکترها داراست) ممکن غافلگیرکننده باشد. در هنگام بریدن رشته‌ها [۰]“abc” مقدار ۹۷ را برمی‌گرداند (یک integer که شماره کد اسکی اولین حرف رشته است)، برای بدست آوردن “a” باید از [۰٬۱]“abc” (یک زیر رشته بطول ۱) یا "abc"[0].chr استفاده کرد.
    در ضمن برخی مسائل در مورد خود زبان برجسته است:

    • در مورد سرعت، عملکرد روبی در قیاس با بسیاری از زبان‌های کامپایل شده پایین‌تر است (همانند هر زبان تفسیر شده دیگر) و همچنین در قیاس با زبان‌های اسکریپت‌نویسی اصلی مانند پرل و پایتون همین حالت وجود دارد. هرچند که در نسخه‌های آینده روبی به صورت بایت کد (bytecode) کامپایل خواهد شد و بر روی YARV (خلاصه Yet Another Ruby VM) اجرا خواهد شد. در حال حاضر حافظه بکار رفته در برنامه‌های نوشته شده در روبی کمتر از حافظه بکار رفته در همان برنامه‌ها که با پرل و پایتون نوشته شده‌اند، است.
    • حذف پرانتزهای متدها در روبی ممکن است به نتایج غیرمنتظره‌ای در متدهایی با چند آرگومان منتج شود. توجه کنید که توسعه دهندگان روبی اشاره کرده‌اند که حذف پرانتزها در متدهایی با چند آرگومان در آینده ممنوع خواهد شد. در هر صورت حذف پرانتزها در متدهای تک آرگومان توصیه می‌شود.
     

    ☾♔TALAYEH_A♔☽

    کاربر نگاه دانلود
    کاربر نگاه دانلود
    عضویت
    2017/05/18
    ارسالی ها
    35,488
    امتیاز واکنش
    104,218
    امتیاز
    1,376
    مثال‌ها
    مثال کلاسیک Hello world:

    puts "Hello World!"

    مقداری کد اساسی روبی:

    # Everything, including a literal, is an object, so this works:
    -199.abs # 199
    "ruby is cool".length # 12
    "Rick".index("c") # 2
    "Nice Day Isn't It?".split(//).uniq.sort.join # " '?DINaceinsty"
     
    وضعیت
    موضوع بسته شده است.

    برخی موضوعات مشابه

    بالا