<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های Alireza The Developer</title>
        <link>https://virgool.io/feed/@alirezagoshayesh</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-06-07 10:38:22</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/201814/avatar/bFg7i0.png?height=120&amp;width=120</url>
            <title>Alireza The Developer</title>
            <link>https://virgool.io/@alirezagoshayesh</link>
        </image>

                    <item>
                <title>داکر (Docker) چیست؟</title>
                <link>https://virgool.io/@alirezagoshayesh/%D8%AF%D8%A7%DA%A9%D8%B1-docker-%DA%86%DB%8C%D8%B3%D8%AA-pkyizzvm5tod</link>
                <description> https://www.aparat.com/v/1f54E داکر یک پلتفرم نرم افزاری برای ساخت اپلیکیشن‌های مبتنی بر Container است. محیط‌های اجرایی کوچک و\ سبک که به طور مشترک از هسته سیستم عامل استفاده می‌کنند اما در عین حال در یک محیط ایزوله و کاملا جدا از هم قرار دارند. هر چند مفهوم container یا نگهدارنده از مدت‌ها قبل در حوزه IT مطرح بود اما داکر به عنوان یک پروژه متن باز در سال ۲۰۱۳ معرفی و عرضه شد. در واقع داکر باعث شد container جان تازه ای بگیرد و دوباره محبوب شود. توسعه نرم افزار به سمت استفاده از Container و میکرو سرویس‌ها رفت و بعدها به عنوان توسعه ابری یا Cloud-native Development شناخته شد. شاید بعضی از مفاهیم که تا اینجا گفته شد را نشناسید اما اصلا نگران نباشید چون تمام این موارد را تا انتهای مطلب با هم مرور خواهیم کرد و در پایان متوجه خواهیم شد که داکر چیست و چه کاربردهایی دارد.منظور ازContainer چیست؟یکی از اهدافی که سیستم‌های جدید توسعه نرم افزار دنبال می‌کنند، این است که برنامه‌ها در یک محیط، اما به صورت ایزوله و جدا از هم نگهداری شوند. به این ترتیب فعالیت آنها بر روی یکدیگر تاثیر نداشته و جدا از هم کار می‌کنند. البته اجرای این فرآیند به خاطر استفاده از پکیج ها، کتابخانه‌ها و دیگر کامپونتت‌های نرم افزاری می‌تواند پیچیده شود.یکی از راه‌های پیاده کردن این تکنولوژی استفاده از ماشین مجازی (Virtual Machine) است که برنامه‌ها را روی یک سخت افزار اما کاملا جدا از هم نگه می‌دارد. پس در این حالت کامپوننت‌های ما تداخل خاصی با هم نداشته و رقابت برای استفاده از منابع سخت افزاری هم به حداقل می‌رسد. اما ماشین‌های مجازی مشکلاتی هم دارند. اول از همه اینکه نرم افزارهای سنگینی بوده و سخت افزار نسبتا قدرتمندی می‌خواهند. همینطور هر برنامه نیاز به سیستم عامل جداگانه دارد که ممکن است این سیستم عامل‌ها حجم‌های چند گیگابایتی داشته باشند. و اینکه ممکن است نگهداری و بروزرسانی آنها دشوار شود.بررسی عمیق‌ترContainer به همراه یک مثالدر مقابلContainer قرار دارد که می‌تواند جایگزین مناسبی برای ماشین‌های مجازی باشد. Container محیط‌های اجرایی را جدا کرده و هسته سیستم عامل را به اشتراک می‌گذارد. حجم آنها معمولا به مگابایت بوده و نسبت به ماشین‌های مجازی از منابع کمتری استفاده می‌کند. همینطور برخلاف ماشین‌های مجازی که برای اجرا نیاز به زمان نسبتا زیادی دارند، Containerها بلافاصله اجرا می‌شوند.زمانی که Container را با ماشین مجازی مقایسه می‌کنیم یعنی با یک شبیه ساز طرف حساب هستیم. اما دقیقا چه چیزی را شبیه سازی می‌کنیم؟ برای درک بهتر موضوع بهتر است از یک مثال استفاده کنیم. فرض کنید در شرکتی مشغول به کار هستید و ناهار خود را هر روز در خانه درست کرده و آن را داخل یک ظرف به شرکت می‌برید تا آنجا میل بفرمایید. دیگر لازم نیست داخل شرکت شروع به پختن غذا کنید چون احتمالا زمان زیادی را از شما می‌گیرد. کار Container هم تا حدودی شبیه به این است. شما پروژه خود را (غذا) داخل Container (ظرف غذا) قرار داده و آن را هر کجا که دوست داشتید (مثلا شرکت) می‌برید.Docker چیست؟داکر یک پروژه متن باز است که اجازه می‌دهد Container یا برنامه‌های مبتنی بر Container بسازید. با اینکه داکر در شروع کار برای لینوکس ساخته شد اما امروزه به خوبی در ویندوز وMacOS هم اجرا می‌شود. برای ساخت یک برنامه با داکر باید از کامپوننت‌های مختلفی استفاده کنیم. حالا برای درک بهتر مفهوم داکر بهتر است سراغ این کامپوننت‌ها رفته و آن‌ها را بررسی کنیم:DockerfileهرContainer داکر با یک فایل داکر شروع به کار می‌کند. Dockerfile یک فایل متنی بوده که داخل آن با یک سینتکس ساده و قابل فهم دستورالعمل‌های ساخت Docker Image قرار داده شده است (کمی جلوتر این مفهوم را بررسی خواهیم کرد) این فایل اطلاعات بسیار مهمی را در برمی گیرد که برای راه اندازی داکر استفاده از آنها ضروری است. در واقع Dockerfile مشخص می‌کند که پشتContainer ما چه سیستم عاملی قرار بگیرد، همینطور از چه زبان ها، متغیرهای محلی، پورت‌های شبکه یا غیره استفاده شود. و مهم‌تر از همه اینکه مشخص کندContainer ما بعد از اینکه واقعا اجرا شد قرار است چه کاری انجام دهد.Docker imageدر واقع زمانی که کار نوشتن Dockerfile را تمام کردید، یک قابلیت به اسم Docker Build را فراخوانی می‌کنید که وظیفه دارد یک Image بر اساس محتویات Dockerfile شما بسازد. Dockerfile شامل یک سری دستورالعمل برای ساختن یکImage است، در حالی که Docker Image یک فایل قابل حمل است که شامل یک سری دستورالعمل بوده که مشخص می‌کندContainer کدام کامپوننت‌های نرم افزاری را اجرا کند و اینکه چطور آنها اجرا شوند. به احتمال زیاد Dockerfile بخواهد تعدادی فایل را از مخزن‌های مختلف (Repository) دانلود کند و اینجا باید به طور واضح مشخص کنید که کدام نسخه‌ها دریافت شوند. همینطورImage ساخته شده استاتیک می‌باشد، یعنی یک بار ساختن آن کافی بوده و نیازی به تغییر آن ندارید. همانطور که از اسم آنها می‌توانید حدس بزنید، Image یک تصویر از سیستم عامل اصلی می‌باشد.Docker runقابلیت Docker run در واقع یک دستور است کهContainer را راه اندازی می‌کند. می‌دانیم که هرContainer یک instance یا نمونه ازImage است و ماهیت Container به صورت موقتی می‌باشد. اما با این حال می‌توان آنها را متوقف (Stop) یا راه اندازی مجدد (Restart) کرد. هرImage می‌تواند تعداد زیادی Container داشته باشد (تا زمانی که هر کدام نام منحصر به فردی داشته باشند)Docker Hubهر چند ساختContainerها کار راحتی است، اما لزومی ندارد برای هرImage از اول Container بسازید. Docker Hub یک مخزنSaas برای به اشتراک گذاری و مدیریتContainerها است. در آنجا می‌توانیدImageهای رسمی داکر که معمولا به صورت متن باز هستند را پیدا کنید. همینطور عموم مردم هم پروژه‌های خود را به اینRepository اضافه می‌کنند.Docker Engineمغز متفکر و هسته اصلی داکر به حساب می‌آید. یک تکنولوژی کلاینت/سرور که Containerها را ساخته و آنها را اجرا می‌کند. در واقع اگر کسی درباره داکر صحبت کرده و منظورش شرکت داکر یا پروژه داکر نباشد، یعنی دارد درباره Docker Engine حرف می‌زند. این موتور در دو نسخه Enterprise یاCommunity عرضه می‌شود. نسخه Community به طور متن باز و کاملا رایگان قابل استفاده است در حالی که نسخه Enterprise یک سری قابلیت‌های اضافه داشته و سالانه برای هر Node نزدیک به 1500 دلار هزینه دارد.داکر چطور کار می‌کند؟تمام این نکات را گفتیم تا به این بخش رسیده و بفهمیم داکر چیست و چطور کار می‌کند. داکر را می‌توانیم یک مجازی ساز در نظر بگیریم، اما نه به شکلی که ماشین‌های مجازی کار می‌کنند. این سرویس به شما کمک می‌کند یک محیط را به چند بخش تقسیم کرده و و در هر بخش یک برنامه مجزا اجرا کنید. برای درک بهتر موضوع یک لحظه داکر را شبیه به ماشین مجازی در نظر بگیرید، می‌دانیم که ماشین‌های مجازی با Hypervisor عملیات شبیه سازی را انجام می‌دهند اما در داکر این لایه حذف شده و ما مستقیم با هسته سیستم عامل کار می‌کنیم. این کار بازدهی سیستم را بسیار بالا می‌برد.ما به جای اینکه چند سیستم عامل را داخل یک شبیه ساز نصب کنیم یک بار داکر را نصب می‌کنیم. این فرآیند را شبیه به نصب یک نرم افزار عادی در نظر بگیرید. بعد داکر محیط‌های مستقلی به نام Container ایجاد می‌کند که هر Container می‌تواند شامل بسته‌های نرم افزاری مختلفی باشد. حالا می‌توانید داخل داکرContainerهای مختلفی ایجاد کنید و پروژه‌های خود را به طور مستقل روی هر کدام اجرا نمایید.نتیجه گیریداکر یک ابزار اوپن سورس برای طراحی و ساخت برنامه‌ها به کمکContainer است. Container به برنامه نویس کمک می‌کند که پروژه خود را با تمام بخش هایی که دارد (مثل کتابخانه ها، وابستگی‌ها و غیره) به صورت یک پکیج دربیاورد. به لطف این تکنیک، برنامه نویس خیالش راحت است که برنامه او می‌تواند در سیستم‌های دیگر بدون نیاز به تنظیمات خاص یا ابزارهای جانبی اجرا شود. داکر را شبیه به ماشین مجازی در نظر بگیرید، با این تفاوت که بازدهی بسیار بالاتری دارد.</description>
                <category>Alireza The Developer</category>
                <author>Alireza The Developer</author>
                <pubDate>Sat, 30 May 2020 15:01:58 +0430</pubDate>
            </item>
                    <item>
                <title>چراغ راهنمایی و رانندگی از دید arduino</title>
                <link>https://virgool.io/@alirezagoshayesh/%DA%86%D8%B1%D8%A7%D8%BA-%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7%DB%8C%DB%8C-%D9%88-%D8%B1%D8%A7%D9%86%D9%86%D8%AF%DA%AF%DB%8C-%D8%A7%D8%B2-%D8%AF%DB%8C%D8%AF-arduino-bzygpcgtwr7g</link>
                <description> https://www.aparat.com/v/E4xl9 در این مثال بنده از میکرو برای شبیه سازی چراغ راهنمایی و رانندگی استفاده کردم.روند کار به این صورت بوده که ابتدا کتابخانه های مربوط به arduino  را به محیط شبیه ساز proteus  اضافه کردم. سپس در محیط ide کد مربوطه به زبان C++  را نوشته و خروجی hex  گرفتم. سپس فایل generate  شده را در محیط proteus  بارگذاری کرده و سپس اجرا کردم.کد مربوطه بصورت زیر میباشد://source code for Traffic Light written by Alireza Goshayesh.const int red = 0;const int yellow = 1;const int green = 2;const int a = 13;const int b = 12;const int c = 11;const int d = 10;const int e = 9;const int f = 8;const int g = 7;void setup() {pinMode(red, OUTPUT);pinMode(yellow, OUTPUT);pinMode(green, OUTPUT);pinMode(a, OUTPUT);pinMode(b, OUTPUT);pinMode(c, OUTPUT);pinMode(d, OUTPUT);pinMode(e, OUTPUT);pinMode(f, OUTPUT);pinMode(g, OUTPUT);}void loop() {makeRed();count();makeGreen();count();makeYellow();delay(1000);}void makeRed() {digitalWrite(red, HIGH);digitalWrite(yellow, LOW);digitalWrite(green, LOW);}void makeGreen() {digitalWrite(red, LOW);digitalWrite(green, HIGH);}void makeYellow() {digitalWrite(green, LOW);digitalWrite(yellow, HIGH);}void nine() {digitalWrite(a, HIGH);digitalWrite(b, HIGH);digitalWrite(c, HIGH);digitalWrite(d, HIGH);digitalWrite(e, LOW);digitalWrite(f, HIGH);digitalWrite(g, HIGH);delay(1000);}void eight() {digitalWrite(a, HIGH);digitalWrite(b, HIGH);digitalWrite(c, HIGH);digitalWrite(d, HIGH);digitalWrite(e, HIGH);digitalWrite(f, HIGH);digitalWrite(g, HIGH);delay(1000);}void seven() {digitalWrite(a, HIGH);digitalWrite(b, HIGH);digitalWrite(c, HIGH);digitalWrite(d, LOW);digitalWrite(e, LOW);digitalWrite(f, LOW);digitalWrite(g, LOW);delay(1000);}void six() {digitalWrite(a, HIGH);digitalWrite(b, LOW);digitalWrite(c, HIGH);digitalWrite(d, HIGH);digitalWrite(e, HIGH);digitalWrite(f, HIGH);digitalWrite(g, HIGH);delay(1000);}void five() {digitalWrite(a, HIGH);digitalWrite(b, LOW);digitalWrite(c, HIGH);digitalWrite(d, HIGH);digitalWrite(e, LOW);digitalWrite(f, HIGH);digitalWrite(g, HIGH);delay(1000);}void four() {digitalWrite(a, LOW);digitalWrite(b, HIGH);digitalWrite(c, HIGH);digitalWrite(d, LOW);digitalWrite(e, LOW);digitalWrite(f, HIGH);digitalWrite(g, HIGH);delay(1000);}void three() {digitalWrite(a, HIGH);digitalWrite(b, HIGH);digitalWrite(c, HIGH);digitalWrite(d, HIGH);digitalWrite(e, LOW);digitalWrite(f, LOW);digitalWrite(g, HIGH);delay(1000);}void two() {digitalWrite(a, HIGH);digitalWrite(b, HIGH);digitalWrite(c, LOW);digitalWrite(d, HIGH);digitalWrite(e, HIGH);digitalWrite(f, LOW);digitalWrite(g, HIGH);delay(1000);}void one() {digitalWrite(a, LOW);digitalWrite(b, HIGH);digitalWrite(c, HIGH);digitalWrite(d, LOW);digitalWrite(e, LOW);digitalWrite(f, LOW);digitalWrite(g, LOW);delay(1000);}void zero() {digitalWrite(a, HIGH);digitalWrite(b, HIGH);digitalWrite(c, HIGH);digitalWrite(d, HIGH);digitalWrite(e, HIGH);digitalWrite(f, HIGH);digitalWrite(g, LOW);delay(1000);}void count() {nine();eight();seven();six();five();four();three();two();one();zero();}</description>
                <category>Alireza The Developer</category>
                <author>Alireza The Developer</author>
                <pubDate>Thu, 28 May 2020 22:30:07 +0430</pubDate>
            </item>
                    <item>
                <title>کاتلین چست؟ دلیل توصیه گوگل بر این زبان چیست؟</title>
                <link>https://virgool.io/coderlife/%DA%A9%D8%A7%D8%AA%D9%84%DB%8C%D9%86-%DA%86%D8%B3%D8%AA-%D8%AF%D9%84%DB%8C%D9%84-%D8%AA%D9%88%D8%B5%DB%8C%D9%87-%DA%AF%D9%88%DA%AF%D9%84-%D8%A8%D8%B1-%D8%A7%DB%8C%D9%86-%D8%B2%D8%A8%D8%A7%D9%86-%DA%86%DB%8C%D8%B3%D8%AA-m1p0ifwlalu6</link>
                <description>ویدئو: https://www.aparat.com/v/D736F مدتی است که کاتلین به نقل محفل برنامه نویسان اندروید و Trend روز برنامه نویسان ایرانی و جهانی تبدیل شده است. در حال حاضر کمتر وب سایتی را مشاهده خواهید کرد که آموزش کاتلین و یا معرفی آن را به گونه ای پوشش نداده باشد . در این فرصت به معرفی جامعی از کاتلین و ویژگی های آن می پردازیم همچنین شرکت های معروفی که از این زبان بهره برده اند را معرفی خواهیم کرد.زبان کاتلین یک زبان ایستا که توسط برنامه نویسان مستقر در روسیه توسعه داده شده است. کاتلین این قابلیت را دارد تا بر روی ماشین مجازی جاوا اجرا شود. و همینطور می توان به زبان جاوا اسکریپت نیز آن را کامپایل نمود.جامعه توسعه‌دهندگان نرم‌افزارهای کاربردی موبایل که از زبان کاتلین استفاده می‌کنند، به سرعت در حال افزایش است. در سال ۲۰۱۷، گوگل، کاتلین را به عنوان دومین زبان رسمی خود برای توسعه اندروید معرفی کرد. از آن زمان تاکنون، رشد بسیار بزرگ و مهمی در تقاضا برای این زبان برنامه‌نویسی در میان توسعه‌دهندگان و جوامع کسب و کار به وقوع پیوسته است. گوگل در حال حاضر زبان برنامه نویسی کاتلین را به عنوان یکی از بهترین زبان‌های برنامه‌نویسی برای توسعه اپلیکیشن‌های اندرویدی اعلام کرده است. این نشان می‌دهد که آینده خوبی در انتظار این زبان برنامه‌نویسی است.تاریخچه:کاتلین در سال ۲۰۱۱ توسط کمپانی Jetbrains معرفی شد و اولین ورژن پایدار((Stable آن در سال ۲۰۱۶ به نام ورژن 1.0 ارائه شد.سرپرست تیم توسعه دهندگان کاتلینAndrey Breslav  بیان داشته که کاتلین یک زبان قدرتمند و شیءگرا است که قصد دارد از جاوا بهتر عمل کند و به برنامه نویسان جاوا اجازه مهاجرت تدریجی به این زبان را بدهد.در سال ۲۰۱۷ گوگل رسما این زبان را به عنوان زبان دوم برنامه نویسی برای اندروید معرفی کرد.کنفرانس IO17 گوگل رسما از کاتلین پشتیبانی کرد و آن را زبانی جدید برای توسعه اپلیکیشن های اندروید قرار داد، کاتلین بیشتر برای توسعه اپلیکیشن های اندروید شناخته شد. در حقیقت از این تاریخ به بعد بود کهKotlin  توجه بیشتری از برنامه نویسان به خود جلب کرد. البته این جلب توجه غیرمنتظره نبود زیرا کاتلین زبانی ذاتا کامپایل شده است و سریع تر از زبان های دیگر عمل میکند و در نتیجه اپلیکیشن هایی بهتر و قوی تری میتوان با آن تولید کرد. از همه مهم تر اینکه این زبان با زبان های پر استفاده دیگر اندروید مانند جاوا کاملا سازگار است.کاتلین یک زبان منبع باز محسوب میشود که ویژگی های برنامه نویسی شی گرا و ماژولار را با هم ترکیب کرده است  . نام کاتلین از جزیره ای به همین نام در اطراف سن پترزبورگ روسیه گرفته شده است . به این دلیل که بیشتر کارهای توسعه Kotlin  در شعبه سن پترزبورگ JetBrains انجام شد.ویژگی‌های کلیدی:· تایپ استاتیک: تایپ استاتیک یک مشخصه برنامه‌نویسی کامپیوتری است؛ بدین معنا که نوع هر متغیر و عبارت در زمان کامپایل شناخته می‌شود. با وجود اینکه کاتلین یک زبان تایپ استاتیک است، نیاز به این ندارد که نوع هر متغیر صراحتا اعلان شود.· کلاس‌های داده: در این زبان، کلاس‌های داده‌ای وجود دارد که منجر به تولید خودکار تساوی‌های قابل استفاده مجدد و بسیاری از گزینه‌های دیگر می‌شود.برای بررسی دقیق تر دو نمونه کد از زبان جاوا و کاتلین را مشاهده میکنیم که هر دو یک وظیفه را عملی میکنند./* Kotlin Code */data class Book(var title:String, var author:Author)/*  Java Code  */class Book {private String title;private Author author;public String getTitle(){return title;}public void setTitle(String title){this.title = title;}public Author getAuthor(){return author;}public void setAuthor(Author author){this.author = author;}** به سادگی تفاوت این دو زبان به چشم می خورد.· اختصار: این زبان، به طور چشم‌گیری میزان کدی که نیاز به نوشتن آن برای یک منظور خاص است را نسبت به کدهای مورد نیاز برای همان کار در دیگر زبان‌های برنامه‌نویسی شی‌گرا، کاهش می‌دهد.· امنیت: زبان برنامه نویسی کاتلین امنیت را در مواجهه با NullPointerExceptions با پشتیبانی ازNullability  به عنوان بخشی از سیستم خود، استفاده می‌کند. هر متغیری در این زبان، به طور پیش‌فرض غیر نال است.· قابل تفسیر با جاوا: کاتلین روی ماشین مجازی جاوا نیز اجرا می‌شود؛ بنابراین به طور کلی با جاوا قابل تفسیر است. می‌توان به سادگی به کد جاوا از کاتلین و از جاوا به کد کاتلین دسترسی داشت.· قابلیت‌های تابعی و شی‌گرا: کاتلین دارای غنی‌ترین مجموعه از ابزارهای کارآمد بسیاری است که شامل توابع سطح بالاتر، عبارات لامدا یا Lambda Expression، سربارگذاری عمل‌گرها، ارزیابی کندرو یا فراخوانی به هنگام نیاز و بسیاری از دیگر موارد می‌شود. تابع مرتبه بالاتر، تابعی است که تابع را به عنوان پارامتر دریافت می‌کند و یا تابع را باز می‌گرداند و یا هر دو کار را انجام می‌دهد. مثالی از تابع مرتبه بالاتر در ادامه ارائه شده است.fun myFun(company: String,product: String, fn: (String,String) -&gt; String): Unit {val result = fn(company,product)println(result)}fun main(args: Array){val fn:(String,String)-&gt;String={org,portal-&gt;&quot;$org develops $portal&quot;}myFun(&quot;JetBrains&quot;,&quot;Kotlin&quot;,fn)}خروجی بصورت:JetBrains develops Kotlin· اسمارت کَست: زبان کاتلین به طور صریح به تبدیل کردن نوع مقادیر غیر قابل تغییر می‌پردازد و مقادیر را به طور خودکار در اسمارت کَست قرار می‌دهد.· تلاش برای دسترسی داشتن به یک نوع قابل نال کردن از رشته بدون استفاده از اسمارت کَست، منجر به ایجاد خطای کامپایل می‌شود.· زمان کامپایل: کاتلین، نسبت به برخی از دیگر زبان‌ها، دارای کارایی بالاتر و زمان اجرای سریع‌تری است.· ابزارپسندی یاTool- Friendly : زبان کاتلین دارای پشتیبانی فوق‌العاده‌ای از ابزارها است. همه IDE های جاوا برای کاتلین قابل استفاده هستند. همچنین، می‌توان برنامه کاتلین را از خط فرمان اجرا کرد.· کاتلین بر روی پلتفرم های مختلفی اجرا و پیاده سازی می شود. از جمله سرور یا اندروید یا به صورت محلی یا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)می باشد.مزایا:اولین دلیلی که میتوان برای استفاده از کاتلین نام برد سازگاری کامل کاتلین با جاواست . شما در هر جای پروژه ای که با جاوا نوشته اید میتوانید از کدهای کاتلین هم استفاده کنید و نگران هیچ مشکلی مانند افت سرعت اجرای پروژه خود نباشید . از طرف دیگر شما میتوانید کدهای جاوا را به کاتلین و بالعکس تبدیل کنید. هر مقدار از پروژه ای که به زبان جاوا نوشته اید میتوانید به راحتی به زبان کاتلین تبدیل کنید و از ویژگی های زبان کاتلین به طور کامل استفاده کنید.· یادگیری آسان: مبانی آن مشابه زبان برنامه‌نویسی جاوا است. در واقع می‌توان گفت، هر کس که بتواند با جاوا کار کند، می‌تواند کاتلین را به سادگی درک کند.· کاتلین چندسکویی است: کاتلین توسط IDE‌های گوناگون جاوا پشتیبانی می‌شود، بنابراین می‌توان برنامه‌ها را به زبان کاتلین نوشتن و آن را روی هر ماشینی که JVM را پشتیبانی می‌کند اجرا کرد.· از جاوا امن‌تر است.· امکان استفاده از چارچوب جاوا و کتابخانه‌های آن را در پروژه‌های کاتلین با استفاده از چارچوب‌های پیشرفته و بدون نیاز به تغییر کل پروژه در جاوا، فراهم می‌کند.· زبان برنامه‌نویسی کاتلین دارای کامپایلر و کتابخانه‌های گوناگونی است؛ همچنین، همه ابزارهای آن کاملا رایگان و متن‌باز است و روی گیت‌هاب قرار دارد.کاربردها:از کوتلین می توانید برای هر نوع برنامه نویسی چه در سمت سرور و client و چه اندروید استفاده کنید. با کمکKotlin/Native شما می توانید از پشتیبانی مک و IOS نیز بزودی بهره مند شوید. بیشتر افراد از کوتلین برای موبایل و تحت وب استفاده می کنند و برای برنامه نویسی سمت Client از جاوا اسکریپت و جاوا Fx استفاده می شود. Data science نیز جزو گزینه های موجود است.استفاده از کاتلین برای توسعه سمت سرور:کاتلین برای توسعه سمت سرور مناسب است. زیرا با کد مختصر و حفظ سازگاری و قدرت بیان با استفاده از کتابخانه های مبتنی بر جاوا به امکانات زیر دست پیدا می کنید:وضوحمقیاس پذیریهماهنگی و سازگاری با کتابخانه      های جاواابزار های زیاد مثل پشتیبانی 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 hellofun 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.fabclass 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 }}}}برنامه‌های معتبر:تعدادی از برنامه هایی که با کاتلین نوشته شده اند:· Pinterestسرویس اجتماعی معروف اشتراک عکس تصمیم گرفت از Kotlin استفاده کند و در برنامه Android خود از جاوا بهره ببرد. آنها مزایا و معایب استفاده از Kotlin را در تولید در Droidcon NYC 2016 ارائه دادند. چیزی که ممکن است کمی عجیب باشد، این است کهKotlin در چنین برنامه محبوب با پایگاه کاربری گسترده اش حتی قبل از اینکه گوگل اولین پشتیبانی از این زبان را اعلام کند، استفاده کرد.· کورسراCoursera یک شرکت آموزشی است که دوره های آموزشی آنلاین را که توسط دانشگاه ها و موسسات برجسته مانند استنفورد و ییل برگزار می شود، ارائه می دهد. Coursera سازمان هایAndroid و iOS جداگانه ندارد. آنها فقط مفهوم تلفن همراه را دارند و به همین دلیل تصمیم گرفتند ازKotlin استفاده کنند. Kotlin شبیهSwift است، یک زبان برنامه نویسی نسبتا جدید برای توسعهiOS است که این موضوع باعث ساده تر به اشتراک گذاری دانش بین مهندسان، ارتباطات بهتر و توسعه کلی کارآمدتر می شود.· TrelloTrello یک برنامه مدیریت شناخته شده پروژه است که در حال حاضر متعلق به Atlassian است. ترلو برای برنامه ی Android خود، کد های جدید ش را درKotlin نوشته است.همکاری با Java وKotlin ممکن است به لطف قابلیت همکاری عالی بین دو زبان باشد.· EvernoteEvernote یک برنامه طراحی شده برای ضبط، سازماندهی، لیست کارها و بایگانی است. Evernote  برای مشتریان اندروید خود از زبان کاتلین بهره برده است.· Basecamp 3برنامه ای که به مدیریت کسب و کارهای کوچک در حال رشد کمک می کند. این به طور کامل در Kotlin نوشته شده است و توسعه دهندگانBasecamp ادعا می کنند که انتخاب Kotlin منجر به تفاوت های بزرگی در آسایش، کیفیت و سرعت کار آنها شد.· Twidere برای توییترمنبع باز، ۱۰۰ درصد طراحی مرورگر توییتر با material design، افزایش تجربه کاربر توییتر. همه‌ی  این ها  در کوتلین نوشته شده است، اگر چه برخی از کدهای جاوا هنوز در آن وجود دارد.· سایه هایکcross-platform با عملکرد و امنیت بالا است که ازProxy Socks5 پشتیبانی کرده و کمک می کند تا در هنگام مرور اینترنت افزایش امنیت و حریم خصوصی داشته باشید. Shadowsocks از زبان کاتلین برای مشتریان اندرویدی خود بهره برده است. Shadowsocks هر دو توسط کاربران در Google Play و سایر توسعه دهندگان قدردانی می شود.· Simple Calendarیک تقویم ساده و Open source بدون نیاز به مجوز های خاص. این برنامه، جزئی از پک کامل موبایلی Simple Mobile Tools می باشد. همه‌ی این برنامه هاOpen Source بوده و در کوتلین نوشته شدند.· برنامه KotlinConfKotlinConf یک کنفرانس توسعه دهندگان است که توسط سازندگان کوتلین JetBrains میزبانی شده است. هیچ راهی وجود ندارد که برنامه کنفرانس رسمی در یک زبان دیگر نوشته شود. واقعا جالب است این است که نه تنها برای مشتریان Android این برنامه درKotlin نوشته شده بلکه برنامه وب، سرور و IOS نیز دارد. این فقط نشان دهنده پتانسیل عالی این زبان است.· برنامه رسمی کنفرانس Driodkaigi 2018DroidKaigi 2018  یک کنفرانس برای برنامه نویسان اندرویدی است که در توکیو سازمان دهی می شود. این یکی دیگر از برنامه هایی است که توسط کوتلین نوشته شده ولی این بار کنفرانس توسط خلاقان این برنامه برگزار نمی شود. این موضوع نشان دهنده ی محبوبیت بالای کوتلین در بین اندرویدی هاست.تجربه شخصی:  بنابر تجربه شخصی بنده کاتلین از جاوا در برنامه نویسی اندروید کارامدی و آسودگی را به همراه دارد اما تنها نکته ای که توسط همکاران بنده نیز اشاره می‌شود، اختیاری بودن کنترل exeption هاست که در زبان جاوا اجباری بود. بدین معنی که در زبان کاتلین برنامه نویس مجبور به کنترل exeption  یا همان exeption handling نیست و زمان compile از او ایراد گرفته نمی شود.سوالات متداول:· کوتلین یا همان کاتلین چه چیزی را تشکیل می دهد؟هنگامی کهJVM را هدف قرار می دهد، کوتلین بایت کد های سازگار با جاوا را تولید می کند. هنگامی که جاوا اسکریپت را هدف قرار می دهد، کوتلین بهES5.1 رجوع می کند و کد را تولید می کند که سازگار با سیستم های ماژول از جمله AMD و CommonJS است. وقتی کوتلین بومی (Kotlin / Native) را هدف قرار می‌دهد، کد مخصوص پلتفرم را تولید می کند.· آیا کوتلین فقط جاوا ۶ را هدف قرار می دهد؟Kotlin به شما اجازه می دهد بین تولید کننده های Java 6 و  Java 8 کدهای سازگار با نسخه موردنظر را انتخاب کنید. اکثر کد های بهینه  ممکن است برای نسخه های بالاتر پلتفرم تولید شود.· کدام شرکت ها از KOTLIN استفاده می کنند؟شرکت های زیادی وجود دارند که از Kotlin استفاده می کنند، اما برخی از شرکت های مشهور دیگری که به طور عمومی استفاده از Kotlin اعلام کرده اند، از طریق پست های وبلاگ، مخازن GitHub یا مذاکرات شاملSquare، Pinterest یاBasecamp است.· آیا کوتلین یک جامعه دارد؟بله کوتلین جامعه بسیار پر جنب و جوش دارد. توسعه دهندگان Kotlin در انجمن هایKotlin، StackOverflow و Kotlin Slack  فعال هستند.· آیا کوتلین در رسانه های اجتماعی است؟بله فعال ترین حساب Kotlin در توییتر است. همچنین یک گروه + Google وجود دارد.منابع:· https://www.geeksforgeeks.org/introduction-to-kotlin  https://www.geeksforgeeks.org/kotlin-programming-language· https://blog.faradars.org/kotlin-programming-language· https://kotlinlang.org· https://fa.wikipedia.org/wiki/کوتلین</description>
                <category>Alireza The Developer</category>
                <author>Alireza The Developer</author>
                <pubDate>Thu, 28 May 2020 22:05:01 +0430</pubDate>
            </item>
            </channel>
</rss>