<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های مصطفی حسین زاده</title>
        <link>https://virgool.io/feed/@mostafa.hosseinzadeh</link>
        <description>مهندس نرم افزار، توسعه دهنده جاوا، لینوکسی و فقط Open Source، ورزشکار و طبیعت دوست، در کل ساده بخوام بگم یه برنامه نویس دون پایه :)</description>
        <language>fa</language>
        <pubDate>2026-06-07 12:52:56</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/7659/avatar/yVsIAM.png?height=120&amp;width=120</url>
            <title>مصطفی حسین زاده</title>
            <link>https://virgool.io/@mostafa.hosseinzadeh</link>
        </image>

                    <item>
                <title>زبان برنامه نویسی اسکالا(Scala)</title>
                <link>https://virgool.io/Software/scala-programing-language-nd70leyutrkv</link>
                <description>اسکالا یک زبان برنامه‌نویسی شیءگرا و تابعی است. نام اسکالا آمیزه‌ای است از &quot;scalable&quot; و &quot;language&quot; به معنی زبان مقایس‌پذیر، از اهداف اصلی ایجاد زبان اسکالا، ارائه زبانی است برای تولید نرم‌افزار مقیاس‌پذیر به روشی چابک و سریع، و به دور از مشکلات مرسوم. اسکالا تلفیق زبان‌های شی‌گرا همچون روبی و جاوا با زبان‌های تابعی همچون Haskell و Erlang است. از دیدگاه چابکی و کارایی، عده‌ای اسکالا را جمع دو دنیای زبان‌های پویا (Dynamic-Type) و ایستا (Static-Type) می‌دانند. یکی از دلایل دیگری که باعث مقبولیت و همچنین کارایی بالای این زبان می‌شود، دستور زبان (Syntax) منعطف آن است.  اسکالا توسط پروفسور مارتین اودرسکی که خالق Genericهای جاوا و از برترین توسعه دهندگان کامپایلر Javac می‌باشد، در سال ۲۰۰۳ طراحی و به مرور توسط ایشان و جامعه اسکالا بهبود و توسعه داده شده‌است.جیمز استراچن (James Strachan) سازندهٔ زبان برنامه‌نویسی Groovy در توصیفی اسکالا را ادامه‌دهندهٔ احتمالی جاوا دانسته است.تاریخچه:طراحی این زبان در سال ۲۰۰۱ در سوئیس توسط موسسه تحقیقاتی و دانشگاهی در سوئیس در شهر لوزان به نام (École polytechnique fédérale de Lausanne (EPFL)) توسط مارتین ادسکی  شروع شد. انتشار داخلی اسکالا در ۲۰۰۳ بود اما انتشار عمومی آن بر روی پلتفرم جاوا در سال ۲۰۰۴ است.ویژگی ها و دلیل استفاده گسترده از اسکالا: ورود و پیشرفت زبان اسکالا در صنعت نرم‌افزار فقط به دلیل کم بودن تعداد خط های کد و راحتی برنامه‌نویس و انعطاف در آن نیست. طبق قانون مور  تعداد ترانزیستورهای یک پردازنده، هر دو سال، دو برابر می‌شوند. به عبارت  دیگر ابعاد ترانزیستورها در حال نصف شدن است و این روند در سال ۲۰۲۰ متوقف  خواهد شد. هم اکنون نیز کند شدن این روند قابل مشاهده است و به جای اینکه  سرعت پردازنده‌ها زیاد شود، تعداد هسته‌های آن‌ها بیشتر می‌شود. شاهد این  امر تلفن‌های هوشمند و تبلت‌ها هستند؛ آن‌ها از پردازنده‌های چند هسته‌ای  بهره می‌برند ولی بازه سرعت پردازنده‌ها چند سالی است که تغییر شگرفی نکرده  است. به همین دلیل برنامه‌هایی با قابلیت اجرای همروند (Concurrent) و  توزیع شده (Distributed) بیش از پیش مورد توجه قرار گرفتند. با افزایش  کاربران و تقاضا و نزدیک شدن به اتمام قانون مور، روز به روز تقاضا برای  تولید چنین نرم‌افزارهایی افزایش می‌یابد. زبان اسکالا دارای ویژگی‌هایی  است که مختص چنین تقاضاهایی طراحی شده‌است. از آن جمله می‌توان به  Functional Programming، Pattern Matching، Immutables اشاره کرد. علاوه بر  این، اسکالا حاصل جمع ویژگی‌های بسیاری از زبان‌های موجود در بازار است.  در حال حاضر زبان اسکالا دارای خصایص زیر می‌باشد: رایگان و متن بازاستاتیک و چک زمان کامپایل (Type-safe)شی گرا (Object Oriented)تابعی (Functional)کد مختصر و  منعطفدارای طیف وسیعی از کتابخانه‌هاکامل و دارای ابزارهای توسعه گوناگونهیچ‌یک از زبان‌های Ruby، Java، Go، C, JavaScript و اکو سیستم‌های آن‌ها، دارای همه ویژگی‌های بالا نیستند. اسکالا پدری به نام Haskell دارد. همچنین تشابهات زیادی با Erlang و #F دارا می‌باشد. سی شارپ و پایتون نیز دارای قابلیت‌هایی کم و بیش نزدیک به اسکالا می‌باشند ولی شرایط اجرای متفاوتی دارند. طی سال‌های اخیر توجه شرکت‌ها و مؤسسات بیشتری به سمت اسکالا جذب  شده‌است. بلوغ اسکالا باعث شده تا نه تنها شرکت‌های پیشرو در صنعت IT  (همچون Twitter، LinkedIn و ...) بلکه شرکت‌های ریز و درشت بسیاری که تنها  مصرف کنندگان محصولات فناوری هستند نیز به استفاده از این زبان و بستر  منحصر به فرد آن رو بیاورند. ابزارهای Build و Test، کتابخانه و چارچوب‌های  منحصر به فردی همچون Scalaz، Play، Akka و ... در کنار دسترسی به طیف  گستردهٔ کتابخانه‌های جاوا، اسکالا را به یکی از بهترین گزینه‌ها برای  تولید انواع محصولات نرم‌افزاری تبدیل کرده. هم اینک اسکالا در بسیاری از  شرکت‌ها/مؤسسات به‌طور گسترده‌ای استفاده می‌شود؛ WalMart (شعبهٔ  کانادایی)، خبرگزاری Guardian، سایت خبری سرگرمی HuffingPost، سایت  Coursera ،WhitePages و ... از نام آشناترین مؤسساتی هستند که می‌توان نام  برد. برخی از شرکت‌ها/مؤسسات نام برده تمام یا بخشی از نرم‌افزارهای موجود  خود را که با PHP، Ruby ، ... و حتی Java بود، با نمونهٔ بازنویسی شده با  اسکلا جایگزین کردند. سرعت و کاراییبه لطف JVM، برنامه‌های نوشته شده با اسکالا از کارایی بسیار بالایی برخودارند، بالاخص هنگامی که JVM به واسطهٔ قابلیت JIT به حداکثر توان محاسباتی سیستم دست پیدا می‌کند . شرکت WhitePages با بازنویسی بخشی از سرویس‌های Backend خود با اسکالا (که پیشتر، با Ruby و Perl نوشته شده بودند) توانست بیش از ۹۰٪ در هزینه‌های سخت افزای خود صرفه جویی کند. سرعت اجرای یک زبان برنامه‌نویسی هرچند مهم است، اما مهم‌تر از آن قابلیت‌های زبان در همروندی (Concurrency) و توزیع شدگی (Distribution) است. اسکالا به لطف ابزارها و چارچوب‌هایی همچون Akka، این کار را نه تنها راحت بلکه بسیار جذاب‌تر نیز کرده‌است. جامعه باز و آزاد اسکالاشرکت Typesafe به علت اهداف بلند مدتی که دارد مقداری از ارائه نوآوری و تغییرات در اسکالا کاسته و در عوض بر روی استحکام و پایداری آن تمرکز کرده، مطمئناً برخی از اعضای جامعه اسکالا با این استراتژی موافق نبوده و علاقه‌مند به ادامه روند نوآوری در اکو سیستم و زبان اسکالا هستند. از آنجایی که این زبان متن باز است این افراد دست به ایجاد یک انشعاب به نام Typelevel زدن تا نسخه‌ای از اسکالا با قابلیت‌های جدید و مدرن به همراه اکو سیستمی که با این نو آوری‌ها همسان باشد را تولید و نگهداری کنند.نکته مهم اینکه مارتین اودرسکی (رئیس هیأت مدیره Typesafe) از این حرکت به شدت استقبال و حمایت کرد و اعلام کرد نوآوری‌هایی که در Typelevel پیاده‌سازی شود و قابل قبول جامعه باشد در نسخه اصلی Typesafe نیز ادغام خواهد شد و این باعث بهبود کل اکو سیستم خواهد بود.جایگاه زبان :در حال حاضر این زبان در جایگاه هشتم از دیدگاه سایت IEEE قرار دارد. نمونه کد:object HelloWorld extends App {
   println(&quot;Hello, World!&quot;)
 }مقایسه تعداد خط کد :جاوا:// Java:
public class Point {
  private final double x, y;

  public Point(final double x, final double y) {
    this.x = x;
    this.y = y;
  }

  public Point(final double x, final double y,final boolean addToGrid ) {
    this(x, y);
    if (addToGrid)
      grid.add(this);
  }

  public Point() {
    this(0.0, 0.0);
  }

  public double getX() {
    return x;
  }

  public double getY() {
    return y;
  }

  double distanceToPoint(final Point other) {
    return distanceBetweenPoints(x, y,
      other.x, other.y);
  }

  private static Grid grid = new Grid();

  static double distanceBetweenPoints(
      final double x1, final double y1,
      final double x2, final double y2
  ) {
    return Math.hypot(x1 - x2, y1 - y2);
  }
}
اسکالا:// Scala
class Point(
    val x: Double, val y: Double,
    addToGrid: Boolean = false
) {
  import Point._

  if (addToGrid)
    grid.add(this)

  def this() = this(0.0, 0.0)

  def distanceToPoint(other: Point) =
    distanceBetweenPoints(x, y, other.x, other.y)
}

object Point {
  privateval grid = new Grid()

  def distanceBetweenPoints(x1: Double, y1: Double,
      x2: Double, y2: Double) = {
    math.hypot(x1 - x2, y1 - y2)
  }
}منابع:ویکی پدیاسایت IEEE</description>
                <category>مصطفی حسین زاده</category>
                <author>مصطفی حسین زاده</author>
                <pubDate>Sat, 26 May 2018 09:16:16 +0430</pubDate>
            </item>
                    <item>
                <title>زبان برنامه نویسی کاتلین(Kotlin)</title>
                <link>https://virgool.io/@mostafa.hosseinzadeh/kotlin-programing-language-fdxcd85dkkvg</link>
                <description>زبان کاتلین یک زبان ایستا که توسط برنامه نویسان مستقر در روسیه توسعه داده شده است. کاتلین این قابلیت را دارد تا بر روی ماشین مجازی جاوا اجرا شود. و همینطور می توان به زبان جاوا اسکریپت نیز آن را کامپایل نمود.کاتلین در سال ۲۰۱۱ توسط کمپانی Jetbrains معرفی شد و اولین ورژن پایدار(Stable) آن در سال ۲۰۱۶ به نام ورژن 1.0 ارائه شد.سرپرست تیم توسعه دهندگان کاتلین Andrey Breslav بیان داشته که کاتلین یک زبان قدرتمند و شیءگرا است که قصد دارد از جاوا بهتر عمل کند و به برنامه نویسان جاوا اجازه مهاجرت تدریجی به این زبان را بدهد.در سال ۲۰۱۷ گوگل رسما این زبان را به عنوان زبان دوم برنامه نویسی برای اندروید معرفی کرد.چرا کاتلین ؟کاتلین بر روی پلتفرم های مختلفی اجرا و پیاده سازی می شود. از جمله سرور یا اندروید یا به صورت محلی(Native) که توسط کامپایلر LLVM کامپایل می شود و قابل پیاده سازی بر روی Windows (x86_64 only at the moment)Linux (x86_64, arm32, MIPS, MIPS little endian)MacOS (x86_64)IOS (arm64 only)Android (arm32 and arm64)WebAssembly (wasm32 only)می باشد.استفاده از کاتلین برای توسعه اندروید Android:از سال ۲۰۱۷ گوگل رسما کاتلین را به عنوان زبان دوم توسعه اندروید معرفی کرده است. و برای توسعه اپلیکیشن های اندروید کاتلین یک انتخاب بسیار عالی است.ویژگی ها :  سازگاری: کاتلین با نسخه JDK6 سازگاری بالا دارد و به طور کامل توسط اندروید استودیو پشتیبانی می شود.کارایی(Performance): کاتلین با سرعت بیشتری نسبت به جاوا اجرا می شود به خاطر استفاده از بایت کدهای ساده تر از جاوا. کاتلین از Inline function ها و Lambda پیشتیبانی می کند و Lambda اغلب از جاوا خام سرعت بیشتری دارد(البته در خود جاوا همین قضیه صادقه یعنی شما از Lambda که استفاده می کنی سرعت بالاتری داری).ویژگی Footprint:  کاتلین دارای کتابخانه Runtime بسیار کم حجم است که می تواند از طریق استفاده از ProGuard نیز کاهش یابد. زمان  کامپایل:  معمولا زمان کاپایل سریعتر از جاواست.پشتیبانی:توسط Android Studio پشتیبانی می شود. استفاده از کاتلین برای توسعه سمت سرور:کاتلین برای توسعه سمت سرور مناسب است. زیرا با کد مختصر و حفظ سازگاری و قدرت بیان با استفاده از کتابخانه های مبتنی بر جاوا به امکانات زیر دست پیدا می کنید:وضوح  مقیاس پذیری هماهنگی و سازگاری با کتابخانه های جاواابزار های زیاد مثل پشتیبانی IDE های مختلف و ..فریمورک های سمت سرور :فریمورک Spring: یکی از فریمورک های قدرتمند جاوا  که برای توسعه سمت سرور است و ابزارها و کتابخانه های بیشماری در اختیار توسعه دهندگان قرار می دهد.فریمورک Vert.x: یک فریمورک قدرتمند برای توسعه وب اپلیکیشن ها به صورت واکنش پذیر(reactive) که بر روی JVM اجرا می شودفریمورک Ktor: یک فریمورک مخصوص خود کاتلین می باشد که توسط کمپانی JetBrains توسعه داده شده است برای وب اپلیکیشن های با مقیاس پذیری بالا  ابزار Kotlinx.html: برای ساختن کد های HTML توسط وب اپلیکیشن مثل JSPبرای کار با پایگاه داده نیز دسترسی های مثل JDBC و JPA فراهم شده است و برای NoSQL هم می توان از کتابخانه های جاوا استفاده نمود.نکته: وب اپلیکیشن های نوشته شده با کاتلین بر روی تمام وب سرورهایی که جاوا بر روی آن ها اجرا می شود قابل نصب می باشند.استفاده از کاتلین در جاوا اسکریپت:کد کاتلین به کدهای جاوا اسکریپت نیز کامپایل می شود.در حال حاضر کدهای کاتلین به خروجی ECMAScript 5.1 تبدیل می شود.تمام کدهای استفاده شده در کاتلین به جاوا اسکریپت تبدیل می شود. اگر از کتابخانه هایی غیر از کاتلین استفاده شود به کد جاوا اسکریپت تبدیل نمی شود. در واقع فقط کد های کاتلین به جاوا اسکریپت تبدیل می شود.خروجی کدهای جاوا اسکریپت دارای ویژگی های زیر می باشد:خروجی کدها بهینه شده می باشد.کدهای خروجی خوانایی بالایی دارند.خروجی کد با کتابخانه های موجود همکاری دارد.خروجی کدها به صورت استاندارد زبان برنامه نویسی می باشد.چگونه می توان از آن استفاده کرد:تبدیل به کدهای سمت کاربر:   تعامل با  DOM Element: کاتلین اینترفیس هایی برای کار با Document Object Element فراهم می کند که می توان این المنت ها را ایجاد و بروزرسانی کند.   تعامل با کتابخانه های گرافیکی مثل WebGLتبدیل به کدهای سمت سرور:با تکنولوژی های سمت سرور مثل Node.js تعامل دارد کاتلین می تواند همراه با کتابخانه ها و فریمورک های موجود مانند JQuery یا React استفاده شود. برای  دسترسی به این چارچوب ها با یک API بسیار قوی، می توان کدهای  TypeScript را به Kotlin با استفاده از  ابزار ts2kt تبدیل کرد. کمپانی JetBrains  چندین ابزار مخصوص را برای جامعه React توسعه و نگهداری می کند.همچنین کاتلین با ماژول های CommonJS, AMD and UMD سازگاری کامل دارد.استفاده از کاتلین به صورت محلیKotlin/Native:تکنولوژی Kotlin/Native به شما این امکان را می دهد که بدون استفاده از ماشین مجازی خاص کدهای کاتلین را به کدهای باینری تبدیل کنیم و اجرا کنیم.کاتلین را به وسیله کامپایلر        LLVM (Low Level Virtual Machine)می توان کامپایل کرد.این تکنولوژی برای جاهایی که امکان اجرای هیچ VM امکانپذیر نیست طراحی شده است مثل IOS یا Embedded system یا هر جایی که یک توسعه دهنده نیاز به اجرای یک برنامه مستقل با اندازه مناسب و نیاز به اجرای سریع دارد. تکنولوژی Kotlin/Native به طور کامل با کد بومی یک سیستم عامل همکاری دارد .همچنین با کتابخانه های مختلفی همکاری دارد. میتوان کدهای کاتلین را به زبان C خروجی گرفت که با تمام پلتفرم هایی که از این زبان پشتیبانی می کنند اجرا می شود.همچنین قابلیت همکاری با کد Objective-C را نیز دارا می باشد.پلتفرم هایی که پشتیبانی می شوند:Kotlin/Native currently supports the following platforms:Windows (x86_64 only at the moment)Linux (x86_64, arm32, MIPS, MIPS little endian)MacOS (x86_64)IOS (arm64 only)Android (arm32 and arm64)WebAssembly (wasm32 only)ساختار کد:مشابه با Pascal, Haxe, PL/SQL, F#, Go و اسکالا (بی شباهت به نحو C و زبان‌های مشتق از ان مانند نیست C++, Java, C# و زبان D)، اعلامات متغیر کاتلین و پارامتر لیست‌ها دارای نوع هستند که بعد از نام متغیر می‌آید (با جدا کنندهٔ کالن). مانند دیگر زبان‌های مدرن مانند اسکالا و Groovy، سمی کالن‌ها به عنوان عبارت خاتمه دهنده اختیاری هستند. در بیشتر اوقات یک خط جدید برای کامپایلر کافی است تا بتواند استنباط کند که عبارت به پایان رسیده است. نوشتن آن به صورت تابعی(Functional) : package hello
 fun main(args: Array&lt;String&gt;) {
       println(&quot;Hello World&quot;)
 }یک نمونه کد به صورت شیءگرا:class Greeter(val name: String) {
   fun greet() { 
       println(&quot;Hello, $name&quot;)
      }
   }
fun main(args: Array&lt;String&gt;) {
    Greeter(args[0]).greet()
}  یک نمونه کد برای اندروید:import kotlinx.android.synthetic.main.activity_main.fab
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
            fab.setListener {
                    toast(&quot;Hello!&quot;)
            }     
      }
 }ساخت کدهای HTML:val data = mapOf(1 to &quot;one&quot;, 2 to &quot;two&quot;)
createHTML().table {
    for ((num, string) in data) {
            tr {
                       td { +&quot;$num&quot; } 
                       td { +string }
               }
           }
    }منابع آموزشی کاتلین:Tutorials PointKotlin LangJavatpointKotlin Androidمنابع :سایت کاتلینویکی پدیا</description>
                <category>مصطفی حسین زاده</category>
                <author>مصطفی حسین زاده</author>
                <pubDate>Sat, 19 May 2018 09:14:39 +0430</pubDate>
            </item>
                    <item>
                <title>زبان برنامه نویسی روبی(Ruby)</title>
                <link>https://virgool.io/ruby-lang/ruby-programing-language-a1qvyjls5p3j</link>
                <description>یک زبان برنامه نویسی انعطاف پذیر و متن باز با تمرکز بر سادگی و بهره وری و شیء گرا است. روبی ویژگی‌های نگارشی پرل و شی گرایی اسمال‌تاک را با هم در خود دارد. زبان روبی در سال‌های میانی دهه ۱۹۹۰ توسط یوکیهیرو ماتسوموتو در ژاپن اختراع شد. ویژگی‌های گوناگون زبان‌های پرل، لیسپ، اسمال‌تاک و آیفل الهام‌بخش ماتسوموتو در ساخت روبی بودند.زبان برنامه نویسی روبی از پارادایم های(شیوه های) مختلف برنامه نویسی از جمله تابعی و شیءگرا و بازتابی پشتیبانی می کند.روبی یک زبان متن باز و رایگان است نه تنها رایگان، بلکه رایگان برای استفاده، کپی، تغییر و توزیع است.روبی در میان ۱۰ زبان برنامه نویسی برتر از دید شاخص های اندازه گیری مثل TIOBE است.ساختار کد(Syntax)ساختار کد در روبی بسیار شبیه Syntax پرل و پایتون است. اعلان کلاسها و متدها توسط کلمات کلیدی انجام می‌شود. در مقایسه با پرل متغیرها الزاماً با یک علامت خاص شروع نمی‌شوند. (وقتی از چنین علائمی استفاده شود علامت حوزه دید متغیر را تغییر می‌دهد) بارزترین تفاوت روبی از C و Perl آنست که کلمات کلیدی (بجای براکت) برای تعریف بلوکهای کد استفاده می‌شوند. سطر جدید به‌عنوان پایان یک جمله بکار برده می‌شود در عین حال که برای اینکار می‌توان از یک سمی کالون (;) نیز استفاده کرد. تورفتگیها معنی خاصی ندارند (برعکس پایتون). نمونه‌هایی از Syntax روبی:مثال کلاسیک Hello world:  puts &quot;Hello World!&quot;مقداری کد اساسی روبی: # Everything, including a literal, is an object, so this works:
 -199.abs                                       # 199
 &quot;ruby is cool&quot;.length                          # 12
 &quot;Rick&quot;.index(&quot;c&quot;)                              # 2
 &quot;Nice Day Isn&#039;t It?&quot;.split(//).uniq.sort.join  # &quot; &#039;?DINaceinsty&quot;
Collectionsایجاد و استفاده از یک آرایه: a = [1, &#039;hi&#039;, 3.14, 1, 2, [4, 5]]

 a[2]                      # 3.14
 a.reverse                 # [[4, 5], 2, 1, 3.14, &#039;hi&#039;, 1]
 a.flatten.uniq            # [1, &#039;hi&#039;, 3.14, 2, 4, 5]
ایجاد و استفاده از یک هش: hash = {:water =&gt; &#039;wet&#039;, :fire =&gt; &#039;hot&#039;}
 puts hash[:fire]                  # Prints:  hot

 hash.each_pair do |key, value|    # Or:  hash.each do |key, value|
   puts &quot;#{key} is #{value}&quot;
 end

 # Prints:  water is wet
 #          fire is hot

 hash.delete_if {|key, value| key == water}  
 ساخت یک کلاس:class Numeric
  def plus(x)
    self.+(x)
  end
end

y = 5.plus 6پیاده‌سازی‌هاروبی  پیاده‌سازی های مختلفی دارد: MRI (&quot;Matz’s Ruby Interpreter&quot;)
CRuby (since it is written in C)
JRuby (is Ruby atop the JVM (Java Virtual Machine))
MacRuby (is a Ruby that’s tightly integrated with Apple’s Cocoa libraries for Mac OS X)
Rubinius (Built on top of LLVM)
mruby (for embedded System)
IronRuby (is an implementation “tightly integrated with the .NET Framework)
MagLev is “a fast, stable, Ruby implementation with integrated object persistence and  distributed shared cache”.
Cardinal is a “Ruby compiler for Parrot Virtual Machine” (Perl 6).ویژگی ها:   روبی دارای ویژگی های مدیریت استثناءها مانند Java یا Python است تا بتواند کنترل خطاها را آسان کند.    روبی دارای یک جمع کننده زباله(garbage collector) برای همه اشیاء Ruby است.   بوسیله روبی نوشتن اکستنشن ها برای زبان C ساده تر از پرل یا پایتون است.    روبی بسیار قابل حمل است: بیشتر در گنو / لینوکس توسعه یافته است، اما در بسیاری از انواع UNIX، Mac OS X، ویندوز، DOS، BeOS، OS / 2 و غیره کار می کند.فریمورک‌ها۱-روبی آن ریلز فریمورک محبوب و مورد علاقه ی اکثر برنامه نویسان روبی است که در سال ۲۰۰۵ توسط آقای David Heinemeier Hansson یا به احتصار DHH بنیان‌گذاری شد ، به‌طور دیگر میتوان گفت اکثر برنامه نویسان توسط ریلز به روبی کشیده شده‌اند ! نام‌های «روبی» و «روبی آن ریلز» آنقدر با هم استفاده شده‌اند که برای بسیاری شاید تفاوت این دو روشن نباشد.۲-سیناترا یکی دیگر از فریمورک‌های قدرتمند روبی می‌باشد که ساختار بسیار سبک تری نسبت به روبی آن ریلز دارد و ساختار پایه‌ای آن شامل مدیریت کردن مسیرها می‌باشد ( نکته : اما در صورت نیاز میتوان پکیج‌های روبی آن ریلز را در آن وارد کرد ) ، سیناترا توسط Blake Mizerany و از معماری MVC برخوردار است.۳-پادرینو یک فریمورک کوچک با helper‌های بسیار کربردی است یکی از مهم‌ترین مزایای پادرینو داشتن generator می‌باشد که به توسعه نرم‌افزار کمک شایانی می کند .جامعه آماری(Community) و بررسی وب سایت های معروف:بررسی سایت TIOBEتعداد پروژه های گیت هابدرآمد ماهیانه سایت Indeed.com البته بیشتر سمت کانادا و آمریکاست آمارهاشدرآمد ماهیانه سایت StackOverflowجستجوی گوگلمنابع : سایت زبان برنامه نویسی روبیویکی پدیا</description>
                <category>مصطفی حسین زاده</category>
                <author>مصطفی حسین زاده</author>
                <pubDate>Sun, 13 May 2018 20:21:53 +0430</pubDate>
            </item>
            </channel>
</rss>