<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های udemyiran</title>
        <link>https://virgool.io/feed/@udemyiran</link>
        <description>یودمی‌ایران بزرگترین مرجع ویدئوهای های یودمی با دوبله فارسی</description>
        <language>fa</language>
        <pubDate>2026-06-16 18:44:16</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/928921/avatar/Vvv7qs.jpeg?height=120&amp;width=120</url>
            <title>udemyiran</title>
            <link>https://virgool.io/@udemyiran</link>
        </image>

                    <item>
                <title>14 تا از بهترین زبان های برنامه نویسی</title>
                <link>https://virgool.io/@udemyiran/14-%D8%AA%D8%A7-%D8%A7%D8%B2-%D8%A8%D9%87%D8%AA%D8%B1%DB%8C%D9%86-%D8%B2%D8%A8%D8%A7%D9%86-%D9%87%D8%A7%DB%8C-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-oqcbv3skkxib</link>
                <description>روزی روزگاری دنیای برنامه نویسی کامپیوتر مکانی اسرارآمیز و انحصاری بود.فقط تعداد معدودی از افراد برنامه نویس کامپیوتر با مهارت های کدنویسی پیشرفته در نظر گرفته می شدند .امروزه، بسیاری از مشاغل فناوری اطلاعات نیازمند درک کاملی از زبان های  برنامه نویسی هستند و البته، منظور ما دانش بیش از یک زبان است.اگر برنامه های شما برای پیشرفت شغلی یا تغییر حرفه به طور کامل مستلزم  تسلط بر یک زبان برنامه نویسی است، ممکن است در این فکر باشید که کدام یک  را یاد بگیرید.به هر حال، یادگیری زبان به زمان و هزینه نیاز دارد، بنابراین شما می خواهید انتخاب درستی داشته باشید.هنگام تصمیم‌گیری، باید چندین ملاحظات را در نظر داشته باشید، مانند سطح  دشواری که می‌خواهید با آن مقابله کنید، دانش زبان برنامه‌نویسی که قبلاً  دارید و اینکه این دانش با مهارت‌های کدنویسی موجود شما مطابقت دارد، یا  دلایل شما برای یادگیری یک زبان برنامه‌نویسی برتر چیست.چه بخواهید یک اپلیکیشن موبایل توسعه دهید، چه برای دانش برنامه نویسی  گواهینامه بگیرید یا مهارت های جدید بیاموزید، باید زبان برنامه نویسی  مناسب را یاد بگیرید.در زیر با بهترین زبان های برنامه نویسی مورد تقاضا در میان کارفرمایان  در سال 2022 آشنا خواهید شد. در مورد جزئیات هر زبان، پیچیدگی آن و نحوه  استفاده از آن توضیح داده می شود.زبان برنامه نویسی چیست؟زبان برنامه نویسی راهی برای برنامه نویسان (توسعه دهندگان) برای برقراری ارتباط با رایانه است.زبان‌های برنامه‌نویسی شامل مجموعه‌ای از قوانین هستند که اجازه  می‌دهند مقادیر رشته‌ای به روش‌های مختلف تولید کد ماشین یا در مورد  زبان‌های برنامه‌نویسی بصری، عناصر گرافیکی تبدیل شوند.به طور کلی، یک برنامه مجموعه ای از دستورالعمل ها است که به زبانی خاص  (C، C++، جاوا، پایتون) برای دستیابی به یک کار خاص نوشته شده است.بهترین و محبوب ترین زبان های برنامه نویسی برای یادگیری در سال 2022 کدامند؟JavascriptPythonGoJavaKotlinPHPC#SwiftRRubyC ,C++MatlabTypeScriptScalaجاوا اسکریپتجاوا اسکریپت یک زبان برنامه نویسی سطح بالا است که یکی از فناوری های اصلی شبکه جهانی وب را شکل می دهد.97.8 درصد از تمام وب سایت ها از این زبان برنامه نویسی سمت کلاینت استفاده می کنند.جاوا اسکریپت در ابتدا فقط برای توسعه مرورگرهای وب مورد استفاده قرار  می گرفت، اما اکنون برای استقرار وب سایت های سمت سرور و برنامه هایی غیر  مرورگر وب نیز استفاده می شود.جاوا اسکریپت در سال 1995 ایجاد شد و در ابتدا با نام LiveScript شناخته می شد.با این حال،در آن زمان جاوا یک زبان بسیار محبوب بود، بنابراین به عنوان “برادر کوچکتر” جاوا تبلیغ می شد.همانطور که در طول زمان تکامل یافت، جاوا اسکریپت به یک زبان کاملاً مستقل تبدیل شد.امروزه جاوا اسکریپت اغلب با جاوا اشتباه گرفته می شود و اگرچه شباهت هایی بین آنها وجود دارد، اما این دو زبان متمایز هستند.جاوا اسکریپت محبوب ترین زبان برنامه نویسی در جهان است و تقاضای زیادی  در بین سازمان های مختلف دارد. به طور متوسط ​​توسعه دهندگان جاوا اسکریپت  هر سال حدود 112,152 دلار درآمد دارند.آموزش جاوا اسکریپت با 30 پروژهسطح دشواری:مبتدی تا متوسطمهارت های مورد نیاز:HTML و CSS برای تعریف محتوا و طرح بندی صفحات وبپلتفرم قابل اجرا:کراس پلتفرم (رایانه رومیزی، موبایل، وب)محبوبیت در بین برنامه نویسان:محبوب ترین زبان برنامه نویسی در جهاننکات مثبت:آسان برای یادگیری و پیاده سازیدر همه جای وب استفاده می شودمی تواند بلافاصله در مرورگر سمت مشتری اجرا شودتقاضا در سرور وب سایت را کاهش می دهدنکات منفی:گاهی اوقات می تواند توسط مرورگرهای مختلف به طور متفاوت تفسیر شود که نوشتن کد بین مرورگر را دشوار می کند.میزان استفاده:به طور گسترده استفاده می شود؛ بسیار کاربردیپیش بینی حقوق سالانه:112,152 دلارپایتونPython یکی از محبوب ترین زبان های برنامه نویسی امروزی است و یادگیری آن برای مبتدیان به دلیل خوانایی آن آسان است.این یک زبان برنامه نویسی رایگان و منبع باز با ماژول های پشتیبانی  گسترده جامعه، ادغام آسان با خدمات وب، ساختارهای داده کاربر پسند و برنامه  های دسکتاپ مبتنی بر رابط کاربری گرافیکی است. این یک زبان برنامه نویسی  محبوب برای یادگیری ماشین و برنامه های یادگیری عمیق است.پایتون برای توسعه تصویربرداری دو بعدی و بسته های انیمیشن سه بعدی مانند Blender، Inkscape و Autodesk استفاده می شود.همچنین برای ایجاد بازی های ویدیویی محبوب، از جمله Civilization IV، Vegas Trike و Toontown استفاده شده است.پایتون برای برنامه های علمی و محاسباتی مانند FreeCAD و Abacus و توسط  وب سایت های محبوب مانند YouTube، Quora، Pinterest و Instagram استفاده  می شود.توسعه دهندگان پایتون به طور متوسط ​​حقوق سالانه حدود 109,092 دلار دریافت می کنند .آموزش پایتون برای زبان ماشینسطح دشواری:مبتدی – پایتون به یک مبتدی امکان می دهد تا به سرعت حرفه شودمهارت های مورد نیاز:حل مسئله، تفکر انتزاعیپلتفرم قابل اجرا:وب، دسکتاپمحبوبیت در بین برنامه نویسان:به طور مداوم محبوب تر می شودنکات مثبت:قابل انعطافبه طور طبیعی / شهودی قابل خواندنآموزش ها و مستندات رسمی بسیار مورد توجهScripted بر خلاف زبان های کامپایل شدهنکات منفی:با اصول ساده و اولیه برنامه نویسی شروع نمی شودمحبوبیت:به طور مداوم محبوب تر هم در آموزش فنی و هم در استفاده های تجاری می شودمیزان استفاده:مهارت های کدنویسی به طور گسترده استفاده می شود. هم در آموزش فنی و هم در استفاده تجاری محبوب استپیش بینی حقوق سالانه:109,092 دلارGoGo توسط گوگل در سال 2007 برای API ها و برنامه های کاربردی وب توسعه داده شد.Go اخیراً به دلیل سادگی و همچنین توانایی آن در مدیریت سیستم های چند  هسته ای و شبکه ای و پایگاه های کد عظیم به یکی از سریع ترین زبان های  برنامه نویسی در حال رشد تبدیل شده است.Go، همچنین به عنوان Golang شناخته می شود ، برای پاسخگویی به نیازهای  برنامه نویسانی که روی پروژه های بزرگ کار می کنند، ایجاد شده است.به لطف ساختار ساده و مدرن و آشنایی با سینتکس، در میان بسیاری از شرکت های بزرگ فناوری اطلاعات محبوبیت پیدا کرده است.شرکت هایی که از Go به عنوان زبان برنامه نویسی خود استفاده می کنند عبارتند از Google، Uber، Twitch، Dropbox و بسیاری دیگر.Go همچنین به دلیل سرعت و عملکردش در بین دانشمندان داده محبوبیت پیدا کرده.توسعه دهندگان Go می توانند میانگین حقوق سالانه 141,654 دلار و تا 261,000 دلار دریافت کنند.آموزش زبان Go با ساخت بازیسطح دشواری:مبتدی تا متوسطمهارت های مورد نیاز:اگر حداقل یک زبان برنامه نویسی دیگر را می دانید، یادگیری آن آسان  است. در غیر این صورت، شما فقط به صبر و تمایل به یادگیری نیاز دارید.پلتفرم قابل اجرا:کراس پلتفرم، عمدتا دسکتاپمحبوبیت در بین برنامه نویسان:به اندازه جاوا اسکریپت یا پایتون محبوب نیست، اما محبوبیت آن در حال افزایش استنکات مثبت:به طور گسترده ای یک زبان “مینیمالیستی” در نظر گرفته می شودآسان برای یادگیریکد شفافسازگارسریعنکات منفی:ژنریک در کار نیست (به این معنی که ممکن است در نهایت کد بیشتری  نسبت به زبان های دیگر بنویسید). پشتیبانی بسیار کم از کتابخانه؛ انجمن  توسعه دهندگان Go خیلی قوی یا حمایت کننده نیستمیزان استفاده:به طور گسترده استفاده می شود، به ویژه برای برنامه های Google (ایجاد شده در Google)پیش بینی حقوق سالانه:141,654 دلارجاواجاوا یکی از محبوب ترین زبان های برنامه نویسی است که امروزه مورد استفاده قرار می گیرد.این زبان برنامه نویسی همه منظوره که متعلق به شرکت Oracle است، با  ساختار شی گرا خود به استانداردی برای برنامه هایی تبدیل شده است که می  توانند بدون توجه به پلتفرم (مانند مک، ویندوز، اندروید، iOS و غیره) به  دلیل Write Once بودن آن استفاده شوند.قابلیت Run Anywhere (WORA).باعث شده جاوا به دلیل قابلیت اجرا در  پلتفرم‌ها، از مراکز داده مرکزی گرفته تا گوشی‌های هوشمند شناخته شده باشد.  امروزه بیش از 3 میلیارد دستگاه در حال اجرا برنامه های کاربردی با جاوا  هستند.جاوا به طور گسترده در توسعه وب و برنامه های کاربردی و همچنین داده های  بزرگ استفاده می شود. جاوا همچنین در پشتیبان چندین وب سایت محبوب از جمله  گوگل، آمازون، توییتر و یوتیوب استفاده می شود. همچنین به طور گسترده در  صدها برنامه کاربردی استفاده می شود. فریمورک های جدید جاوا مانند Spring،  Struts و Hibernate نیز بسیار محبوب هستند. با میلیون ها توسعه دهنده جاوا  در سراسر جهان، صدها روش برای یادگیری جاوا وجود دارد. همچنین برنامه  نویسان جاوا جامعه آنلاین گسترده ای دارند و از یکدیگر برای حل مشکلات  حمایت می کنند.جاوا زبان پیچیده تری برای یادگیری است، اما توسعه دهندگان با تجربه با  مهارت های کدنویسی جاوا تقاضای زیادی دارند. میانگین درآمد توسعه دهندگان  جاوا حدود 109,225 دلار در سال است.آموزش صفر تا صد زبان جاواسطح دشواری:متوسطمهارت های مورد نیاز:حل مسئله، دانش ساختار شی گراپلتفرم قابل اجرا:وب، موبایل، دسکتاپمحبوبیت در بین برنامه نویسان:یکی از محبوب ترین ها در جهان؛ تقاضای بالانکات مثبت:از این زبان عنوان یک شروع خوب برای یادگیری تفکر به مانند یک برنامه نویس و کسب مهارت های کدنویسی از پایه یاد می شود.شما  قادر خواهید بود به مهم ترین عملکردهای رایانه مانند سیستم فایل، گرافیک و  صدا برای هر برنامه نسبتاً پیچیده و مدرنی که می تواند بر روی هر سیستم  عاملی اجرا شود، دسترسی داشته یا آن را دستکاری کنید.نکات منفی:بسیاری از واژگان جدید برای یادگیری؛ یک زبان سطح بالاترمیزان استفاده:به طور گسترده استفاده می شود؛ بسیار کاربردیپیش بینی حقوق سالانه:109,225 دلارکاتلینKotlin یک زبان برنامه نویسی همه منظوره است که در ابتدا با نام Project  Kotlin توسط JetBrains در سال 2011 توسعه یافته و رونمایی شد.اولین نسخه به طور رسمی در سال 2016 منتشر شد. این زبان با جاوا سازگار است و از زبان های برنامه نویسی کاربردی پشتیبانی می کند.Kotlin به طور گسترده برای برنامه های اندروید، برنامه های وب، برنامه های دسکتاپ و توسعه برنامه های سمت سرور استفاده می شود.کاتلین برای بهتر بودن از جاوا ساخته شده است و افرادی که از این زبان استفاده می کنند به این امر اعتقاد دارند.اکثر برنامه های گوگل بر اساس Kotlin هستند. برخی از شرکت هایی که از  Kotlin به عنوان زبان برنامه نویسی خود استفاده می کنند عبارتند از  Coursera، Pinterest، PostMates و بسیاری دیگر.توسعه دهندگان Kotlin به طور متوسط ​​136,000 دلار در سال درآمد دارند و پتانسیل کسب درآمد تا 171,500 دلار را دارند.آموزش توسعه برنامه آندروید با کاتلینسطح دشواری:متوسط ​​تا پیشرفتهمهارت های مورد نیاز:تجربه قبلی با زبان های برنامه نویسی، به ویژه جاواپلتفرم قابل اجرا:وب، موبایل، دسکتاپ، سرورمحبوبیت در بین برنامه نویسان:به طور روزافزون محبوب تر می شود؛ برای برنامه های اندروید استفاده می شودنکات مثبت:کد کمتر نسبت به جاوا و سایر زبان ها.سازگاری کامل با جاوانکات منفی:نوسان سرعت کامپایل؛ بدون کلمات staticمیزان استفاده:به طور گسترده استفاده می شود؛ بسیار کاربردیپیش بینی حقوق سالانه:136,000 دلارPHPPHP یک زبان برنامه نویسی منبع باز است که در سال 1990 ایجاد شد.بسیاری از توسعه دهندگان وب یادگیری PHP را ضروری می دانند، زیرا از  این زبان برای ساخت بیش از 80 درصد وب سایت ها در اینترنت، از جمله سایت  های برجسته مانند فیس بوک و یاهو استفاده می شود.برنامه نویسان عمدتاً از PHP برای نوشتن اسکریپت های سمت سرور استفاده  می کنند. اما توسعه دهندگان همچنین می توانند از این زبان برای نوشتن  اسکریپت های خط فرمان استفاده کنند و برنامه نویسانی با مهارت های سطح  بالای کدنویسی PHP نیز می توانند از آن برای توسعه برنامه های دسکتاپ  استفاده کنند.PHP یک زبان نسبتا آسان برای یادگیری برای توسعه دهندگان مبتدی در نظر گرفته می شود.متخصصان پی اچ پی به چندین انجمن اختصاصی آنلاین دسترسی دارند و به راحتی دریافت پشتیبانی و پاسخ به سوالات را آسان می کنند.به طور متوسط، برنامه نویسان PHP میانگین حقوق سالانه حدود 107,409 دلار دریافت می کنند.سطح دشواری:مبتدی تا متوسطمهارت های مورد نیاز:اگر پیش زمینه زبان های برنامه نویسی دارید ساده است، اما یادگیری آن برای تازه واردان هم نسبتا آسان استپلتفرم قابل اجرا:کراس پلتفرم (رومیزی، موبایل، وب)محبوبیت در بین برنامه نویسان:تقریباً 80٪ از تمام وب سایت های فعال استفاده می کنند، بنابراین در بین توسعه دهندگان وب بسیار محبوب استنکات مثبت:منبع بازتوسعه آن آسان است و ممکن است با بسیاری از ابزارهای مختلف ادغام شودمقرون به صرفهانعطاف پذیر با اتصال به پایگاه دادهنکات منفی:خیلی ایمن نیست؛ برای کاربردهای بزرگ مناسب نیست. مدیریت ضعیف خطا؛ نمی تواند تعداد زیادی برنامه را پشتیبانی کندمیزان استفاده:در حالی که اکثریت قریب به اتفاق وب سایت ها از آن استفاده می کنند، استفاده از آن در حال کاهش استپیش بینی حقوق سالانه:107,409 دلارسی شارپسی شارپ که توسط مایکروسافت توسعه یافت، در دهه 2000 به دلیل پشتیبانی از مفاهیم برنامه نویسی شی گرا به شهرت رسید.یکی از پرکاربردترین زبان های برنامه نویسی برای فریم ورک دات نت است.  آندرس هیلسبرگ، خالق سی شارپ، می گوید این زبان بیشتر شبیه C++ است تا  جاوا.سی شارپ برای برنامه های کاربردی در ویندوز، اندروید و iOS مناسب است،  زیرا از محیط توسعه یکپارچه، Microsoft Visual C++ کمک می گیرد. سی شارپ در  قسمت پشتی چندین وب سایت محبوب مانند Bing، Dell، Visual Studio و  MarketWatch استفاده می شود. توسعه دهندگان سی شارپ حدود 111,760 دلار در  سال درآمد دارند.کاملترین آموزش سی شارپسطح دشواری:متوسطمهارت های مورد نیاز:درک اولیه از نحوه نوشتن کدپلتفرم قابل اجرا:کراس پلتفرم، از جمله برنامه های کاربردی نرم افزار موبایل و سازمانیمحبوبیت در بین برنامه نویسان:نسبتا محبوب است، اما نه به اندازه جاوا (نزدیک ترین رقیب آن)نکات مثبت:سریعساده برای استفادهشی گرامقیاس پذیر و قابل به روز رسانیقابلیت همکاری با سایر کدهامنبع بازکتابخانه گستردهنکات منفی:انعطاف پذیری آن کم است، زیرا به چارچوب Net مایکروسافت بستگی دارد.رابط کاربری گرافیکی X-Platform ضعیف استمیزان استفاده:تقریباً توسط یک سوم توسعه دهندگان نرم افزار استفاده می شود، به ویژه برای توسعه دهندگان مایکروسافتپیش بینی حقوق سالانه:111,760 دلارسویفتچند سال پیش، سوئیفت در رتبه بندی ماهانه TIOBE Index زبان های برنامه نویسی محبوب، به جمع 10 زبان برتر پیوست.اپل در سال 2014 سوئیفت را برای برنامه های لینوکس و مک توسعه داد.یک زبان برنامه نویسی منبع باز که یادگیری آن آسان است، سوئیفت تقریباً  از همه چیز از زبان برنامه نویسی Objective-C پشتیبانی می کند.Swift در مقایسه با سایر زبان‌های برنامه‌نویسی به مهارت‌های کدنویسی  کمتری نیاز دارد و می‌توان از آن با IBM Swift Sandbox و IBM Bluemix  استفاده کرد.Swift در برنامه های محبوب iOS مانند WordPress، Mozilla Firefox، SoundCloud و حتی در بازی Flappy Bird استفاده می شود.حرفه‌ای‌هایی که اپلیکیشن‌های iOS را توسعه می‌دهند، میانگین حقوق سالانه حدود 106,652 دلار را دریافت می‌کنند .کاملترین آموزش Swiftسطح دشواری:مبتدی تا متوسطمهارت های مورد نیاز:تمایل به صرف زمان برای خواندن آموزش (که به طور گسترده در دسترس هستند)؛ بدون نیاز به تجربه قبلی با زبان های برنامه نویسیپلتفرم قابل اجرا:موبایل (برنامه های اپل iOS، به طور خاص)محبوبیت در بین برنامه نویسان:محبوبیت روز افرون، به ویژه در میان توسعه دهندگان اپل iOSنکات مثبت:یادگیری آن نسبتا آسان استسیتنکس تمیزکد کمترسریعتر از زبان های برنامه نویسی قابل مقایسهنکات منفی:هنوز زبانی جوان است.قابلیت همکاری ضعیف با ابزارهای شخص ثالث؛ از نسخه های قبلی iOS پشتیبانی نمی کندمیزان استفاده:به طور گسترده برای ایجاد برنامه های iOS مورد استفاده در iPhone، iPad و Apple Watch استفاده می شودپیش بینی حقوق سالانه:109652 دلارRR یک زبان منبع باز است که در اصل نسخه متفاوتی از زبان S است. بسیاری  از کدهایی که توسعه دهندگان برای S می نویسند بدون تغییر روی R اجرا می  شوند.برنامه های ساخته شده در R برای پردازش آمار، از جمله مدل سازی خطی و غیر خطی، محاسبه، آزمایش، تجسم و تجزیه و تحلیل استفاده می شود.برنامه های کدگذاری شده با استفاده از R می توانند با تعدادی پایگاه  داده ارتباط برقرار کنند و داده های ساختاریافته و بدون ساختار را پردازش  کنند.R منحنی یادگیری متوسطی دارد و یادگیری آن برای مبتدیان به اندازه برخی از زبان های دیگر در این مقاله آسان نیست.با این حال، مانند سایر زبان های برنامه نویسی منبع باز، R دارای یک  جامعه آنلاین فعال از توسعه دهندگان است که همیشه در هنگام یادگیری مهارت  های جدید کدنویسی یک مزیت محسوب می شود.به طور متوسط، توسعه دهندگان R میانگین حقوق سالانه حدود 90,940 دلار دریافت می کنند .آموزش زبان R با مثالسطح دشواری:متوسطمهارت های مورد نیاز:اگر از قبل جاوا اسکریپت یا پایتون می‌دانید، آسان‌تر است، اما برای افرادی که درک محکمی از ریاضیات دارند توصیه می‌شود.پلتفرم قابل اجرا:عمدتا دسکتاپمحبوبیت در بین برنامه نویسان:تقریباً به اندازه گذشته محبوب نیست، عمدتاً به دلیل محبوبیت فزاینده زبان رقیب یعنی پایتوننکات مثبت:متن بازپشتیبانی عالی برای مدیریت داده هاطیف گسترده ای از بسته ها موجود استعملکرد یکسان در لینوکس، ویندوز و سیستم عامل مکایده آل برای برنامه های یادگیری ماشیننکات منفی:اشیاء در حافظه فیزیکی ذخیره می شوند که می تواند منابع را تحت فشار قرار دهد.فاقد امنیت اولیه؛ کندتر از Matlab یا Pythonمیزان استفاده:به طور گسترده برای تجزیه و تحلیل استفاده می شودپیش بینی حقوق سالانه:90,940 دلارRubyاگر می خواهید با زبانی شروع کنید که برای یادگیری نسبتاً ساده شناخته شده است، Ruby را در نظر بگیرید.این زبان که در دهه 1990 توسعه یافت، به گونه ای طراحی شد که سینتکسی  انسان پسندتر داشته باشد و در عین حال از دیدگاه معماری شی گرا که از  نمادهای برنامه نویسی رویه ای و عملکردی پشتیبانی می کند، همچنان انعطاف  پذیر باشد. یک چارچوب برنامه وب که در Ruby پیاده سازی شده است Ruby on  Rails (“RoR”) است. توسعه دهندگان روبی آن را به دلیل زبانی آسان برای  نوشتن و همچنین برای زمان نسبتاً کوتاه مورد نیاز برای یادگیری تبلیغ می  کنند. این ویژگی ها منجر به ایجاد جامعه بزرگی از توسعه دهندگان روبی و  علاقه روزافزون به این زبان در میان توسعه دهندگان مبتدی شده است. میانگین  حقوق یک توسعه دهنده روبی حدود 121,000 دلار در سال است.سطح دشواری:مبتدی – Ruby و Ruby on Rails برای توسعه دهندگان وب بسیار محبوب شده اند.مهارت های مورد نیاز:حل مسئله، تفکر انتزاعی (توانایی تجسم آنچه کاربران برنامه می خواهند ببینند)پلتفرم قابل اجرا:وبمحبوبیت در بین برنامه نویسان:در حال افزایش استنکات مثبت:قابل انعطافسینتکس آن برای خواندن و نوشتن آسان در نظر گرفته می شود (بدون “واژگان” تخصصی برای شروع)سبک برنامه نویسی خوبی را اعمال می کنددرجه استفاده:نسبت به سایر زبان ها خیلی کم استفاده می شودپیش بینی حقوق سالانه:121,070 دلارC و C++C احتمالاً قدیمی ترین و محبوب ترین زبان برنامه نویسی است و ریشه زبان های برنامه نویسی دیگر مانند C#، Java و JavaScript است.C++ یک نسخه پیشرفته از C است. امروزه بسیاری از توسعه دهندگان از  یادگیری C به تنهایی صرف نظر می کنند، در حالی که دیگران فکر می کنند  یادگیری C ابتدا پایه ای ارزشمند برای توسعه C++ فراهم می کند. هر دو زبان  به طور گسترده در علوم کامپیوتر و برنامه نویسی استفاده می شوند.توسعه‌دهندگان C و C++ می‌توانند از کامپایلرها برای پلتفرم‌های مختلف  استفاده کنند و برنامه‌های توسعه‌یافته در این زبان‌ها را تا حد زیادی قابل  اجرا در پلتفرم های مختلف کنند. هر دو زبان C و C++ به عنوان زبان هایی با  کارایی بالا در نظر گرفته می شوند. به این ترتیب، آنها به طور گسترده در  توسعه برنامه هایی استفاده می شوند که عملکرد آنها یک مسئله حیاتی است،  مانند برنامه های کاربردی مشتری/سرور، محصولات تجاری مانند فایرفاکس و  ادوبی و بازی های ویدیویی.توسعه دهندگان C و C++ هر سال به طور متوسط ​​118,366 دلار درآمد دارند .آموزش C++ برای ساخت بازیسطح دشواری:C – متوسط ​​تا پیشرفتهC++ – مبتدی تا متوسطمهارت های مورد نیاز:حل مسئله، دانش اولیه کامپیوتر. از آنجایی که C و C++ به سمت  مدیریت سطح پایین منابع کامپیوتری طراحی شده اند، دانش کلی از عملکردهای  رایانه مانند مدیریت حافظه مفید است.پلتفرم قابل اجرا:موبایل، دسکتاپمحبوبیت در بین برنامه نویسان:می توان گفت افراد زیادی از C به C++ روی آورده اندC++ یکی از محبوب ترین زبان های برنامه نویسی دنیاستنکات مثبت:از زبان C برای یادگیری کنترل برنامه در پایین ترین سطح ( سخت افزار استفاده می شود)زبان C++ کنترل بسیار بیشتری از سایر زبان ها در اختیار شما می گذارد.نکات منفی:کدنویسی در زبان C سخت است (چندان مناسب برای مبتدیان نیست) و منحنی یادگیری تندی داردزبان C++ نیز زبانی سخت برای شروع و بهره وری است( به مراتب سخت تر از جاوا)میزان استفاده:از هر دو زبان طور گسترده استفاده می شود.پیش بینی حقوق سالانه:118,366 دلارMatlabMatlab یک زبان برنامه نویسی اختصاصی است که متعلق به MathWorks است و در ابتدا در اواسط دهه 1980 منتشر شد.این زبان به طور خاص برای استفاده توسط دانشمندان و مهندسان ساخته شده است.برنامه نویسان از Matlab برای ساخت برنامه های یادگیری ماشینی و یادگیری  عمیق استفاده می کنند. برنامه های مبتنی بر Matlab به کاربران امکان تجزیه  و تحلیل داده ها، ایجاد الگوریتم ها، پردازش تصاویر و تأیید تحقیق را می  دهند.به طور کلی، یادگیری Matlab نسبت به سایر زبان های برنامه نویسی موجود  در لیست ما آسان تر است. وب سایت MathWorks دارای بخش گسترده ای است که به  پاسخگویی به سؤالات در مورد Matlab اختصاص یافته است.متوسط ​​​​توسعه دهندگان Matlab هر سال به طور متوسط ​​​​100,760 دلار حقوق دریافت می کنند .سطح دشواری:مبتدیمهارت های مورد نیاز:دانش اولیه برنامه نویسی توصیه می شود، اما لازم نیستپلتفرم قابل اجرا:بیشتر دسکتاپمحبوبیت در بین برنامه نویسان:به اندازه پایتون (نزدیک ترین رقیب آن) محبوب نیست، اما محبوبیت آن برای مهندسی سخت افزار و اجرای تجسم داده ها در حال افزایش است.نکات مثبت:می توان از آن برای اجرای آسان و تست الگوریتم ها استفاده کردبه راحتی اشکال زدایی می شودتجزیه و تحلیل و تجسم گسترده داده ها را فعال می کندیادگیری آن نسبتاً ساده استنکات منفی:به عنوان یک زبان تفسیر شده (در مقابل کامپایل شده)، نسبتا کند است. فایل های نصب حجم قابل توجهی از فضای کامپیوتر را اشغال می کنندمیزان استفاده:در خارج از حوزه های علمی و تحقیقاتی به طور گسترده استفاده نمی شودپیش بینی حقوق سالانه:100,766 دلارTypeScriptTypeScript یک تازه وارد در لیست های برتر زبان های برنامه نویسی است، اما در حال پیشرفت است.این زبان در سال 2012 توسط مایکروسافت توسعه یافت و یک نسخه تایپ شده  از جاوا اسکریپت است که برای پایه گذاری کدهای بزرگ مناسب است. TypeScript  برای ایجاد پروژه‌های مبتنی بر جاوا اسکریپت با تایپ در توسعه سمت کلاینت و  سمت سرور استفاده می‌شود که برای کشف خطاها و جلوگیری از مشکلات سیستمیک  مفید است.TypeScript در نظرسنجی وضعیت جاوا اسکریپت در سال 2021 به عنوان  «تقویت‌پذیرترین فناوری» شناخته شد . توسعه دهندگان TypeScript معمولاً به  طور متوسط ​​سالانه 75,199 دلار درآمد دارند .آموزش تایپ اسکریپت از پایهسطح دشواری:متوسط ​​تا پیشرفتهمهارت های مورد نیاز:دانش اولیه جاوا اسکریپت مورد نیاز استپلتفرم قابل اجرا:وبمحبوبیت در بین برنامه نویسان:به سرعت در بین برنامه نویسان محبوبیت پیدا کرده، به خصوص برای برنامه هایی در مقیاس بزرگ.نکات مثبت:عالی برای پروژه های بزرگدارای انجمنی با سریع ترین رشد جامعه در GitHub استتوسعه جاوا اسکریپت را کارآمدتر می کندنکات منفی:ابتدا باید جاوا اسکریپت را بدانید.میزان استفاده:توجه زیادی در بین توسعه دهندگان وب پیدا کردهپیش بینی حقوق سالانه:75,200 دلاراسکالااسکالا یک زبان ماشین مجازی جاوا همه منظوره و ایمن است که بهترین زبان  های برنامه نویسی oop و کاربردی را در یک زبان خاص با کیفیت ترکیب می کند.اسکالا برای کاهش و حذف اشکالات در برنامه های بزرگ و پیچیده ایده آل  است. هم از برنامه نویسی شی گرا و هم از برنامه نویسی کاربردی پشتیبانی می  کند.برنامه نویسان می توانند از Scala برای هر کاری که معمولاً از جاوا  استفاده می کنند استفاده کنند. اسکالا زبان پیچیده ای است، اما این پیچیدگی  به آن انعطاف پذیری زیادی می دهد. شرکت هایی که از اسکالا استفاده می کنند  عبارتند از نتفلیکس، توییتر و نیویورک تایمز.توسعه دهندگان اسکالا به طور متوسط ​​سالانه 127005 دلار درآمد دارند.تحلیل داده های بزرگ با اسکالاسطح دشواری:بسیار پیچیدهمهارت های مورد نیاز:دانش پایه جاوا، C، C++ یا پایتون توصیه می شود، اما لازم نیستپلتفرم قابل اجرا:کراس پلت فرممحبوبیت در بین برنامه نویسان:محبوبیت اسکالا، احتمالاً به دلیل پیچیدگی آن، ضربه خورده است. در زمینه داده های بزرگ و یادگیری ماشین از شهرت خوبی برخوردار است.نکات مثبت:سریعتر از پایتونایده آل برای تجزیه و تحلیل داده هابسیار کاربردینکات منفی:بسیار پیچیده استSBT و کامپایلر ناهموار هستندجامعه توسعه دهندگان محدودمیزان استفاده:استفاده گسترده در زیرساخت های مهندسی داده بسیاری از شرکت ها، به ویژه پردازش داده ها، توسعه وب و محاسبات توزیع شده.پیش بینی حقوق سالانه:127005 دلاراگرچه صدها زبان برنامه نویسی وجود دارد، تعداد بسیار کمی از آنها به لیست کوتاه زبان هایی که باید بدانید راه می یابند.مواردی که در بالا توضیح داده شد، به نظر ما بهترین گزینه های آموزش برنامه نویس هستند.اگر می خواهید شغلی را به عنوان برنامه نویس شروع کنید، یک حرکت جانبی  در زمینه دیگری انجام دهید یا از نردبان شغل فعلی خود پیش بروید، یادگیری  یکی از این زبان ها مکان بسیار خوبی برای شروع انتقال شما است.</description>
                <category>udemyiran</category>
                <author>udemyiran</author>
                <pubDate>Sat, 13 Aug 2022 03:07:14 +0430</pubDate>
            </item>
                    <item>
                <title>SolidJS رقیبی تازه برای React ؟</title>
                <link>https://virgool.io/@udemyiran/solidjs-%D8%B1%D9%82%DB%8C%D8%A8%DB%8C-%D8%AA%D8%A7%D8%B2%D9%87-%D8%A8%D8%B1%D8%A7%DB%8C-react-gcykjkiusqps</link>
                <description>این روز ها SolidJS به عنوان یک کتابخانه UI برای ساخت برنامه های وب بسیار سریع و کوچک مورد توجه قرار گرفته است.در  نگاه اول، Solid تفاوت چندانی با React ندارد. Solid هم مانند ری اکت از  JSX استفاده می کند، دارای یک API است که شبیه به React Hooks عمل می کند .  و از همان فلسفه React با جریان داده های یک طرفه، رابط های غیرقابل تغییر  و غیره پیروی می کند.اما اجازه ندهید ظاهرقضیه شما را فریب دهد زیرا Solid اساساً متفاوت  است. اول از همه، برای به روز رسانی UI از Virtual DOM استفاده نمی کند. در  عوض، Solid به پایه های واکنشی متکی است که حالت برنامه را نگه می‌دارند و  به طور خودکار وابستگی‌ها را ردیابی می‌کنند، بنابراین وقتی بخشی از داده  تغییر می‌کند، بلافاصله و دقیقاً می‌داند چه چیزی باید به‌روزرسانی شود.  این سیستم واکنش‌پذیری به Solid اجازه می‌دهد تا به طور مداوم سرعت و حافظه  را برای کتابخانه‌های UI در بالاترین معیار قرار دهد.ثانیاً، Solid یک رویکرد پیش از کامپایل را اتخاذ می کند که در آن از یک  کامپایلر برای تنظیم نمودار واکنشی و treeshaking برای کاهش اندازه بسته  استفاده می کند. به لطف این کامپایلر، برنامه های Solid در مقایسه با سایر  کتابخانه های UI ازسایز بسیار کوچکتری برخوردارند.هدف این مقاله کمک به توسعه دهندگان React است تا از دانش موجود خود برای یادگیری اصول SolidJS استفاده کنند.این مقاله موضوعات زیر را پوشش می دهد:تعریف کامپوننت ها
حالت کامپوننت 
چرخه عمر کامپوننت
ارتباط کامپوننت
Event Handling
refs کار با 
مدیریت خطا ها
استفاده مجدد از کد
نتیجه گیریتعریف کامپوننت هادر یک برنامه Solid، کامپوننت ها توابعی هستند که عناصر JSX را برمی  گردانند. باید بدانید که کامپوننت کلاس پشتیبانی نمی شوند. توجه داشته  باشید که کد JSX در توابعی کامپایل می شود که مستقیماً DOM را به روز می  کند (زیرا Solid از Virtual DOM استفاده نمی کند). برای جلوگیری از ایجاد  مجدد گره های DOM در هر به روز رسانی، Solid چندین کامپوننت برای حلقه های  شرطی ارایه می کند که باید به جای if/else و switch و Array.prototype.map  استفاده کنیممهم ترین این مولفه ها شامل Show , Switch و For می شوند.نمونه استفاده از Show:&lt;Show
  when={loggedIn()}
  fallback={&lt;button ={toggle}&gt;Log in&lt;/button&gt;}
&gt;
  &lt;button ={toggle}&gt;Log out&lt;/button&gt;
&lt;/Show&gt;نمونه استفاده از Switch:&lt;Switch fallback={&lt;p&gt;Normal temperature&lt;/p&gt;}&gt;
  &lt;Match when={temp() &gt;= 40}&gt;
    &lt;p&gt;Too hot&lt;/p&gt;
  &lt;/Match&gt;
  &lt;Match when={temp() &lt;= 10}&gt;
    &lt;p&gt;Too cold&lt;/p&gt;
  &lt;/Match&gt;
&lt;/Switch&gt;نمونه استفاده از For:&lt;For each={articles()}&gt;{(a, index) =&gt;
  &lt;li&gt;{index() + 1}: {a.title}&lt;/li&gt;
}&lt;/For&gt;به همین ترتیب، برای جلوگیری از ایجاد مجدد children nodes در هر به روز رسانی، باید از children helper استفاده کنید :function MyComponent(props) {
  const c = children(() =&gt; props.children);
  return (
    &lt;div&gt;
      {c()}
    &lt;/div&gt;
  );
}وضعیت حالت کامپوننت هابه مانند ری اکت نقطه مقابل useState و useEffect در Solid از signals و effects استفاده می شود:import { createSignal, createEffect } from &amp;quotsolid-js&quot;

function App() {
  const [count, setCount] = createSignal(0);
  createEffect(() =&gt; {
    console.log(&amp;quotCount: &amp;quot, count());
  });

  return &lt;button ={() =&gt; setCount((c) =&gt; c + 1)}&gt;{count}&lt;/button&gt;;
}اما باید بدانید که signals تفاوت عمده ای با useState hooks دارد. این تفاوت به شرح زیر است:در حالی که شما فقط می توانید useState() را از داخل یک تابع کامپوننت  فراخوانی کنید createSignal() از هر جا می تواند فراخوانی شود .از داخل یک تابع جزء یا یک قلاب سفارشی، می توانید آن را فراخوانی کنیداگر در یک کامپوننت فراخوانی شود، سیگنال وضعیت محلی آن کامپوننت را  نشان می دهد. در غیر این صورت، سیگنال یک حالت خارجی را نشان می دهد که هر  کامپوننت می تواند آن را وارد کرده و از آن برای ارائه رابط کاربری خود  استفاده کند.مهمتر از آن، سیگنال‌ها به‌طور خودکار عملکردهایی را که به  داده‌های آن بستگی دارند، ردیابی می‌کنند و هر زمان که داده‌ها تغییر  می‌کنند، این توابع را فراخوانی می‌کنند. توجه داشته باشید که اولین عنصر  در tuple که توسط createSignal() بازگردانده می شود خود داده نیست بلکه  تابع getter می باشد.به مانند useEffect در ری اکت CreateEffect() نیز یک افکت جانبی را  زمانی که signal که به آن وابسته است تغییری داشته باشد اجرا می کند . با  این حال بر خلاف ری ایکت در solid نیاز نیست که لیستی از بسته های وابسته  ارایه دهید.چرخه عمر کامپوننتبا React، هر زمان که وضعیت کامپوننت تغییر کند، تابع کامپوننت شما  دوباره اجرا می شود. در نقطه مقابل ، توابع کامپوننت Solid هرگز دوباره  اجرا نمی شوند. یک کامپوننت فقط یک بار اجرا می شود تا سیگنال ها و افکت  های لازم را ایجاد کند (کد JSX در یک افکت نیز کامپایل می شود). پس از آن  کامپوننت ناپدید می شود. این بدان معناست که ما مانند React یا کتابخانه  های دیگر به چرخه حیات رویداد های Component دسترسی نداریم.با این حال Solid دو رویداد خاص به ما ارایه می کند: onMount و onCleanuponMount به مانند جلوه ویژه ای است که یکبار بعد از اینکه کل رندر به  پایان رسید اجرا می شود . بهترین مثالی که می توان زد واکشی اطلاعات بعد از  لود صفحه است.import { createSignal, onMount } from &amp;quotsolid-js&quot;

function App() {
  const [data, setData] = createSignal();

  onMount(async () =&gt; {
    const res = await fetch(`/path/to/your/api`);
    setData(await res.json());
  });

  return (/* JSX to render UI based on data */);
}onCleanupمی تواند در داخل یک کامپوننت فرخوانی شود یا در هر scope که بخشی از  اجرای همزمان سیستم واکنشی است. onCleanup زمانی که آن scope از بین برود  یا دوبارهاجرا شود اجرا می شود .import { createSignal, createEffect, onCleanup } from &amp;quotsolid-js&quot;

function App() {
  const [counting, setCounting] = createSignal(false);
  const [count, setCount] = createSignal(0);

  createEffect(() =&gt; {
    if (counting()) {
      const c = setInterval&#40;(&#41; =&gt; setCount((val) =&gt; val + 1), 300);
      onCleanup(() =&gt; clearInterval(c));
    }
  });

  return (
    &lt;div&gt;
      &lt;button type=&amp;quotbutton&amp;quot ={() =&gt; setCounting((val) =&gt; !val)}&gt;
        {counting() ? &amp;quotStop&amp;quot : &amp;quotStart&amp;quot}
      &lt;/button&gt;
      &lt;p&gt;Counter: {count()}&lt;/p&gt;
    &lt;/div&gt;
  );
}ارتباط کامپوننت ها:از این نظر، Solid تقریباً مشابه React است. شما از props برای انتقال  داده‌ها از کامپوننت والد به فرزند (یا بازگرداندن اقدامات به والدین)  استفاده می‌کنید. از Context API برای ارسال داده به کامپوننت های نزولی  استفاده کنید.با این حال، یک هشدار وجود دارد. به طور کلی، شما نباید props را تخریب کنید.با انجام این کار، واکنش پذیری را از دست خواهید داد، به این معنی که UI  مؤلفه فرزند با تغییر مقادیر prop به روز نمی شود. برای جبران، Solid دو  کمک کننده برای کار با props ارائه می دهد:mergeProps() و splitProps() .// این کار را نکید
function Greeting({ name, greeting = &amp;quotHi&amp;quot }) {
  return &lt;h3&gt;{greeting}, {name}!&lt;/h3&gt;
}

// از mergeProps() برای مقدار دهی اولیه استفاده کنید 
function Greeting(props) {
  const merged = mergeProps({ greeting: &amp;quotHi&amp;quot }, props);
  return &lt;h3&gt;{merged.greeting}, {merged.name}!&lt;/h3&gt;
}// این کار را نکنید 
export default function Greeting(props) {
  const { greeting, name, ...others } = props;
  return &lt;h3 {...others}&gt;{greeting}, {name}!&lt;/h3&gt;
}

// از splitProps() به جای سینتکس rest استفاده کنید
function Greeting(props) {
  const [local, others] = splitProps(props, [&amp;quotgreeting&amp;quot, &amp;quotname&amp;quot]);
  return &lt;h3 {...others}&gt;{local.greeting}, {local.name}!&lt;/h3&gt;
}مقایسه حجم و مدت زمان اسکریپتینگ در ری اکت و Solid jsمدیریت رویداد ها:مانند ری اکت ،Solid فقط از جریان داده های یک طرفه پشتیبانی می کند.  هیچ مکانیزم داخلی برای اتصال ورودی وجود ندارد. با این حال، برخلاف React،  برنامه‌های Solid به‌جای رویدادهای مصنوعی، مستقیماً از رویدادهای DOM  استفاده می‌کنند.function App() {
  const [name, setName] = createSignal(&amp;quotWorld&amp;quot);

  return (
    &lt;div&gt;
      &lt;input
        type=&amp;quottext&amp;quot
        value={name()}
        ={(evt) =&gt; setName(evt.currentTarget.value)}
      /&gt;
      &lt;p&gt;Hello, {name()}!&lt;/p&gt;
    &lt;/div&gt;
  );
}کار با refsاستفاده از refs در Solid تفاوت چندانی با React ندارد. اساسا، شما می  توانید یک متغیر محلی را اعلام کرده و آن را به یک prop با نام اختصاص دهید  یا از callback استفاده کنید:// local variable
function SimpleForm() {
  let ref;
  onMount(() =&gt; ref.focus());
  return (&lt;input ref={ref} /&gt;);
}

// ref callback
function SimpleForm() {
  return (
    &lt;input ref={el =&gt; {
      onMount(() =&gt; el.focus())
    }} /&gt;
  );
}مدیریت خطا:ایده دیگری که Solid از React گرفته است اجزای مرز خطا است. با این حال،  لازم نیست آن را به صورت دستی پیاده سازی کنید چرا که ErrorBoundary یک  کامپوننت است که داخل خود solid گنجانده شده.import { ErrorBoundary } from &amp;quotsolid-js&quot;

&lt;ErrorBoundary fallback={err =&gt; {
  // report error
  console.log(err);

  // fallback UI
  return (/* JSX */)
}}&gt;
  {/* your component tree */}
&lt;/ErrorBoundary&gt;استفاده مجدد از کد:در React، شما چندین تکنیک برای استفاده مجدد از کد دارید که محبوب‌ترین  آنها کامپوننت‌های مرتبه بالاتر، رندر پروپ‌ها و هوک‌های سفارشی است. می  توانید از تکنیک های مشابه با Solid نیز استفاده کنید.نتیجهSolidJS عملکردی باورنکردنی و اندازه باندل بسیار کوچک را ارائه  می دهد در حالی که می تواند یک مدل برنامه نویسی ساده را که همه ما دوست  داریم حفظ کند.به عنوان یک کتابخانه نسبتا جدید، اکوسیستم Solid هنوز کوچک  هستند، اما ممکن است با شناخت بیشتر افراد با پتانسیل های آن تغییر کند.در  زمان نگارش این مقاله، مخزن Solid’s GitHub دارای 21 هزار ستاره است و این  پروژه توسط شرکت های معتبری مانند Cloudflare، Netlify، Vercel و… پشتیبانی  می شوداین مقاله فقط به موضوعات اساسی استفاده از SolidJS پرداخته است.  امیدوارم اگر می‌خواهید Solid را امتحان کنید، بتواند در زمان شما  صرفه‌جویی کند.</description>
                <category>udemyiran</category>
                <author>udemyiran</author>
                <pubDate>Tue, 09 Aug 2022 02:38:05 +0430</pubDate>
            </item>
                    <item>
                <title>چرا Rust زبان محبوب همه است؟</title>
                <link>https://virgool.io/@udemyiran/%DA%86%D8%B1%D8%A7-rust-%D8%B2%D8%A8%D8%A7%D9%86-%D9%85%D8%AD%D8%A8%D9%88%D8%A8-%D9%87%D9%85%D9%87-%D8%A7%D8%B3%D8%AA-ri2x8jn3oyzy</link>
                <description>اگر هنوز نشنیده اید(اگر یک برنامه نویس هستید پس تا به حال زیر سنگ زندگی می کرده اید!) ، Rust یکی از آینده دارترین و دوست داشتنی ترین زبان های برنامه نویسی است. اولین بار در موزیلا ایجاد  شد و از آن زمان توسط شرکت هایی مانند Dropbox . مایکروسافت . فیس بوک و  دیگر بزرگان بازی به کار گرفته شده. مزیت اصلی Rust این است که در عملکرد  (سرعت) مانند زبان C عمل می کند . ودر عین حال ایمنی حافظه را که هنگام کار  با زبان هایی مانند JavaScript و Python به آن عادت کرده ایم حفظ می کند.در این مقاله ، من نه شرکت بزرگ را که از Rust استفاده می کنند ، بررسی می کنم و دلایل انتخاب آنها را به طور خلاصه بیان می کنم.9 داستان موفقیت RustDropboxDropbox  برای بخش هایی از موتور همگام سازی فایلهای خود از Rust استفاده می کند.  از آنجا که این موتور نقش همزمانی سنگینی بر دوش دارد ، نوشتن ، آزمایش و  اشکال زدایی آن سخت است. بنابراین ، تیم دراپ باکس تصمیم گرفت تا آن را در  Rust بازنویسی کند. تایپ های استاتیک Rust هنگام استفاده و کمپایل آن ، در  مقایسه با زبان های پویا مانند Python ، زمانی که نیاز به بررسی پایگاه های  کد پیچیده و کدهای همزمان دارید ، مزیت بزرگی به حساب می آید.Rust  برای تیم ما به مانند چند برابر کردن نیرو بوده است و استفاده از Rust یکی  از بهترین تصمیماتی بود که ما گرفتیم.بیش از عملکرد, ارگونومی و تمرکز آن  بر صحت داده ، به ما کمک می کند تا پیچیدگی همگام سازی را راحت تر مهار  کنیم. ما می توانیم متغیرهای پیچیده ای را در سیستم داده رمزگذاری کنیم و  از کامپایلر بخواهیم آنها را برای ما بررسی کند.متن کامل مستندات را از اینجا مطالعه کنیدCourseraCoursera  از Rust برای تکالیف برنامه نویسی خود استفاده می کند . زمانی که دانش  آموزان برای حل یک تکلیف نیاز به نوشتن و اجرای یک برنامه رایانه ای دارند.  برنامه ها در ظروف Docker اجرا ، آزمایش و درجه بندی می شوند. به دلایل  امنیتی ، تیم توسعه دهنده باید از زبان سطح پایینی مانند Rust برای برخی از  کدها استفاده کند. و آنها تصمیم گرفتند که Rust از C امن تر است.اگرچه  زبان برنامه نویسی C زبان پیش فرض سطح پایین با کنترل کامل است . اما ما  در عوض Rust ، یک زبان مدرن از موزیلا را انتخاب کرده ایم. یکی از نقاط قوت  Rust ، مصونیت کامل در برابر برخی از آسیب پذیری های امنیتی است که به  دلیل سیستم قدرتمند آن ، آن را به گزینه ای عالی برای عملکردهای مهم امنیتی  تبدیل می کند.فیگماFigma  یک ابزار طراحی مبتنی بر وب برای گرافیک برداری (vector) و نمونه سازی  رابط کاربری است. آنها تصمیم گرفتند موتور همگام سازی چند نفره خود را در  Rust (قبلاً در TypeScript) بازنویسی کنند تا عملکرد را بهبود بخشد زیرا  سرور آنها نمی توانست با رشد کاربر مطابقت داشته باشد.ما  Rust را برای این بازنویسی انتخاب کردیم. زیرا بهترین سرعت در کلاس را با  استفاده از منابع کم ارایه می کند. در حالی که هنوز ایمنی زبانهای  استاندارد سمت سرور را ارائه می دهد. استفاده کم از منابع برای ما بسیار  مهم بود. زیرا برخی از مشکلات عملکرد سرور قدیمی توسط جمع کننده زباله  ایجاد شده بود.متن کامل را از اینجا مطالعه کنیدnpmnpm  یک پکیج منیجر برای جاوا اسکریپت است. تیم مهندسی آن تصمیم گرفت سرویس  اصلی خود را در Rust بازنویسی کند. زیرا دیدند که اگر این سرویس رشد  کاربران را با همین سرعت ادامه دهد عملکرد آن به زودی به یک تنگنا خواهد  رسید.آنها فن آوری هایی مانند C و++C را رد کردند زیرا در خود نمی  دیدند که بتوانند مدیریت حافظه را برای سرویس در معرض وب مدیریت کنند. جاوا  نیز رد شد زیرا باعث استقرار JVM بر روی سرورهای آنها می شد.چالش  هایی که npm با آن روبروست ، راه حل های کارآمد و مقیاس پذیر را می طلبد.  زمانی که یک سرویس وجود دارد که می تواند گماشته شود و بعد. از آن بابت  خاطر جمع بود ،این مهم باعث صرفه جویی در وقت عملیات ارزشمند می شود و به  ما اجازه می دهد تا روی مسائل دیگر تمرکز کنیم . کارکنان npm همچنین برای  داشتن یک جامعه مفید در مورد هر فناوری که استفاده می کنند ، ارزش قائل  هستند. Rust با تمام این معیارها مطابقت دارد و در حال حاضر به عنوان بخشی  از stack npm استفاده می شود.برای اطلاعات بیشتر به این لینک مراجعه کنیدمایکروسافتمایکروسافت اخیراً در حال آزمایش ادغام Rust در پایگاه های کد بزرگ ++C/C خود است.استدلال  اصلی برای پذیرش Rust در مایکروسافت ایمنی حافظه ای است که Rust ارائه می  دهد. در 12 سال گذشته . حدود 70 درصد از CVE های (Common Vulnerabilities  and Exposures ) کشف شده در مایکروسافت به ایمنی حافظه مرتبط بوده است.مایکروسافت  گزینه های مختلفی را برای حل این مشکل مانند آموزش گسترده توسعه دهندگان و  ابزارهای تجزیه و تحلیل استاتیک امتحان کرده است. با این حال ، به نظر می  رسد تنها راه نجات این است که کاری کرد تا وجود این آسیب پذیری ها از پایه  غیرممکن باشد.CloudflareCloudflare از Rust در لبه اصلی منطق خود و به عنوان جایگزینی برای C استفاده می کند ،چرا که از نظر حافظه نسبت به Rust ناامن است. GitHub آنها  18 مخزن منبع باز که از Rust استفاده می کنند را نشان می دهد . و در وبلاگ  خود ، استفاده از آن را برای Firewall Rules . ابزار فایروال بسیار سفارشی  ، توضیح می دهند.با توجه به  مجموعه ای متفاوت از الزامات عملکرد . ایمنی حافظه . استفاده کم از حافظه و  قابلیت استفاده در سایر محصولاتی که روی آنها کار می کنیم مانندSpectrum ،  راست به عنوان قوی ترین گزینه مطرح شد. (منبع)فیس بوکفیس  بوک از Rust برای بازنویسی قسمت پشتی کنترل منبع خود ، که پیش از آن در  پایتون نوشته شده بود ، استفاده کرد. آنها به دنبال یک زبان تدوین شده برای  بازنویسی آن بودند و به دلیل مزایای ایمنی Rust جذب آن شدند. از آن زمان ،  Rust توسط تیم کنترل منبع پذیرفته شده است. از جمله دلایل پذیرش این موضوع  می توان به هزینه های هنگفت bug های پایتون برای فیس بوک و سهولت حلقه های  تکرار کامپایلر بر خلاف تجزیه و تحلیل استاتیک و بررسی کد اشاره کرد .Rust  در زمان کامپایل کلاس های بزرگی از اشکالات جدی را تشخیص می دهد. هزینه  کشف یک اشکال در زمان کامپایل بسیار کمتر از زمانی است که به عرضه عموم  رسیده.آمازونAWS  از Rust برای اجزای خدمات حساس به عملکرد مانند Lambda ، EC2 و S3 استفاده  کرده است. علاوه بر این ، این شرکت به طور آشکار از توسعه این زبان و  اکوسیستم آن حمایت می کند.آمازون همچنین یک سرویس منبع باز دارد که کاملاً به زبان Rust نوشته شده است. Firecracker VMM یک ماشین مجازی برای مانیتور است که برای خدماتی مانند AWS Lambda و AWS Fargate ساخته شده است.DiscordDiscord از Rust در مکان های مختلف پایگاه کد خود استفاده می کند ، هم در سمت سرویس گیرنده و هم در سمت سرور.به عنوان مثال ، این تیم از Rust و Elixir برای مقیاس 11 میلیون کاربر همزمان از طریق استفاده از Elixir NIFs .(Native Implemented Functions). استفاده  کرد. در این مورد ، Rust آنها را قادر می سازد تا ضمن حفظ امنیت همه حافظه  ، پایگاه داده موجود در Elixir را افزایش دهند.آنها همچنین سرویس Read States خود را در Rust (قبلا در Go)  بازنویسی کرده اند. در حالی که نسخه Go سرویس بیشتر اوقات از سرعت کافی  برخوردار بود ، اما گاهی اوقات به دلیل مدل حافظه Go و جمع آوری زباله ،  تاخیر زیادی داشت.برای حل این مشکل ، Discord به Rust تغییر کرد. که  یک سیستم اختصاص حافظه منحصر به فرد را ارائه می دهد. که جمع آوری زباله  را غیر ضروری می کند.در کنار  عملکرد ، Rust دارای مزایای زیادی برای یک تیم مهندسی است. به عنوان مثال ،  type safety و borrow checker ، تغییر کد.(refactor). را بسیار آسان می  کند زیرا نیازهای محصول تغییر می کند و یا یادگیری های جدیدی در مورد زبان  کشف می شود.همچنین ، اکوسیستم و ابزار آن بسیار عالی هستند و میزان قابل توجهی حرکت رو به جلو را در آن می بینیم. ?چرازبانRustرایادبگیریم آینده Rustدر  اکثر این شرکت ها ، Rust به عنوان یک جایگزین بهتر برای C عمل می کند .  شما می توانید الگوی قابل مشاهده ای از بازنویسی های انجام شده در Rust را  برای فرار از افت عملکرد مشاهده کنید. تیم ها زمانی از آن استفاده می کنند  که نیاز به عملکرد بیشتری دارند اما می خواهند از مشکلات مربوط به حافظه  ناشی از C اجتناب کنند.اما Rust دارای مزایای بسیار بیشتری است:  برنامه نویسی در سطوح پایین را در دسترس تر می کند. پشتیبانی عالی از WASM  دارد و برای همزمانی فوق العاده است. و بهتر است درباره جامعه ای که از آن  استفاده می کنند و آن را گسترش می دهند چیزی نگویم که نیازی به تعریف نیست.</description>
                <category>udemyiran</category>
                <author>udemyiran</author>
                <pubDate>Mon, 20 Sep 2021 14:57:48 +0430</pubDate>
            </item>
                    <item>
                <title>هر چه درباره Visual Studio 2022 می دانیم</title>
                <link>https://virgool.io/@udemyiran/%D9%87%D8%B1-%DA%86%D9%87-%D8%AF%D8%B1%D8%A8%D8%A7%D8%B1%D9%87-visual-studio-2022-%D9%85%DB%8C-%D8%AF%D8%A7%D9%86%DB%8C%D9%85-jqmzynpikz4y</link>
                <description>مایکروسافت برنامه های بزرگی برای انتشار نسخه اصلی بعدی Visual Studio  IDE خود دارد . در میان پیشرفت های وعده داده شده ، ویژوال استودیو 2022  وعده 64 بیتی شدن ، سریعتر شدن ، سبک تر و کاربرپسندتر شدن را می دهد . در  این مقاله کوتاه نگاهی داریم به هر چه درباره Visual Studio 2022 می دانیم.آموزش سی شارپ مبتدی با دوبله فارسی تغییر به معماری 64 بیتیدر  اولین پیش نمایش عمومی تابستان امسال ، ویژوال استودیو 2022 برای طیف  وسیعی از کاربران از کد نویسان تازه کار گرفته تا توسعه دهندگان باتجربه که  در زمینه راه حل های مقیاس بزرگ کار می کنند در دسترس قرار گرفت . Visual  Studio 2022 یک برنامه 64 بیتی خواهد بود که دیگر فرایند اصلی devenv.exe  به حدود 4 گیگابایت در حافظه محدود نمی شود.انتقال به 64 بیت استفاده از حافظه را کاهش می دهد و طراحی 32 بیتی ویژوال استودیو را بهینه می کند.مایکروسافت  گفته که معماری 64 بیتی Visual Studio IDE در ویندوز توسعه دهندگان را  قادر می سازد برنامه هایی با مقیاس بزرگ و پیچیده را باز کرده ، ویرایش  کنند ، اجرا کرده و اشکال زدایی(debug) کنند بدون اینکه حافظه پر شود.این  شرکت افزود که تغییر به 64 بیتی باعث تغییر در نوع برنامه های کاربردی  قابل ساخت با Visual Studio نمی شود و ویژوال استودیو همچنان ابزاری برای  توسعه برنامه های 32 بیتی است.مایکروسافت نمونه ای از مقیاس پذیری  ویژوال استودیو را برای استفاده از حافظه اضافی موجود در یک فرایند 64 بیتی  نمایش داد که شامل یک solution با 1600 پروژه و حدود 300000 فایل بود.  دیگر exception های مربوط به تمام شدن حافظه را نخواهید دید.پشتیبانی از دات نتبرای  توسعه دات نت ، Visual Studio 2022 از دات نت 6 و فریم ورک یکپارچه آن  برای برنامه های وب ، سرویس گیرنده و تلفن همراه برای توسعه دهندگان ویندوز  و مک پشتیبانی می کند. این شامل چارچوب .NET Multi-platform App UI (.NET  MAUI) برای برنامه های سرویس گیرنده چند پلتفرمی در Windows ، Android ،  MacOS و iOS است. از فناوری های وب ASP.NET Blazor می توان برای نوشتن  برنامه های دسکتاپ از طریق .NET MAUI استفاده کرد. ?هرچهدربارهVisualStudio2022میدانیم برای  سی پلاس پلاس Visual Studio 2022 توسعه را با ویژگی های بهره وری ،  ابزارها و IntelliSense پشتیبانی می کند. ویژگی های جدید زبان++C مدیریت  پایگاه های بزرگ کد را ساده می کند. تشخیص پیشرفته اشکال زدایی(debug) با  الگوها و مفاهیم را آسان تر می کند. همچنین برای ++C ، مایکروسافت از  ابزارهای CMake . لینوکس و WSL .(Windows Subsystem for Linux) پشتیبانی می  کند تا ساخت و اشکال زدایی برنامه های چند پلتفرمی را آسان تر کند.  سازگاری باینری برای زمان اجرای ++C برای افرادی که به Visual Studio 2022  ارتقا می دهند و نگران سازگاری هستند ، ارائه می شود.مایکروسافت برای پیش نمایش Visual Studio 2022 Preview 1 بهبود هایی در زمینه رابط کاربری و دسترسی نیز در برنامه دارد.بهبود های دیگر در Visual Studio 2022:یک  رابط کاربری تازه به منظور حفظ توسعه دهندگان در دستور کار است. برخی  تغییرات بسیار کوچک و تزیینی هستند ، UI را مدرن تر می کنند یا شلوغی ها را  کاهش می دهند. هدف طراحان UI کاهش پیچیدگی ها و کاهش بار شناختی است.عملکرد  بهبود یافته برای اشکال زدایی اصلی . با ویژگی های اضافی مانند نمودارها  در نمایه برای تشخیص بهتر و hot paths و breakpoints برای اشکال زدایی دقیق  تر.برای همکاری در زمان واقعی .Live Share نمودارهای متنی  یکپارچه را برای مکالمات سریع در مورد کد بدون هیچ گونه تغییر زمینه معرفی  می کند. توسعه دهندگان قادر خواهند بود جلسات مکرر را که از لینک مشابه  استفاده می کنند ، برنامه ریزی کرده و همکاری را با مخاطبین تکراری ساده  کنند. سیاست های جلسات معرفی می شود که الزامات انطباق را برای همکاری مشخص  می کند.ادغام بیشتر و عمیق تری در گردش کار روزانه از طریق موتور AI IntelliCode ارائه می شود.icon های به روز شده برای افزایش وضوح ، کنتراست و خوانایی.Cascadia Code ، یک فونت با عرض ثابت برای خوانایی بهتر و پشتیبانی از ligature.تم های به روز شده و بهبود یافتهپشتیبانی از برنامه Azure cloud برای سهولت ساخت برنامه های مدرن و مبتنی بر ابر .قابلیت  های شخصی سازی ، از قابلیت سفارشی سازی جنبه های IDE تا قابلیت همگام سازی  تنظیمات در دستگاه ها برای کسانی که با چندین سیستم برای توسعه کار می  کنند.ادغام با Accessibility Insights برای تشخیص زودهنگام مسائل دسترسی.جستجوی کد بهبود یافته است.پشتیبانی جدید برای Git و GitHub ، برای همکاری ناهمزمان.نسخه مخصوص مکبرای  ویژوال استودیو برای مک ، در نظر است تا انتقال به رابط کاربری اصلی MacOS  ، برای عملکرد و قابلیت های بیشتر صورت بگیرد . هدف کلی این است که ویژوال  استودیو 2022 یک IDE .NET مدرن برای Mac ارائه دهد که تجربه ای مفید مانند  آنچه در Windows ارائه می شود ارائه دهد.</description>
                <category>udemyiran</category>
                <author>udemyiran</author>
                <pubDate>Sun, 19 Sep 2021 19:55:21 +0430</pubDate>
            </item>
                    <item>
                <title>تفاوت های JavaScript و TypeScript</title>
                <link>https://virgool.io/@udemyiran/%D8%AA%D9%81%D8%A7%D9%88%D8%AA-%D9%87%D8%A7%DB%8C-javascript-%D9%88-typescript-uhrgunahrfnl</link>
                <description>دنیای وب اساساً بر پایه ی JavaScript ، HTML و CSS اجرا می  شود. با این حال جاوا اسکریپت فاقد برخی از ویژگی ها برای کمک به توسعه  دهندگان برای استفاده در برنامه های بزرگ است . TypeScript اینجا وارد می  شود . در این مقاله نگاهی مختصر بر تفاوت های TypeScript و JavaScript می  کنیمجاوا اسکریپت چیست؟جاوا اسکریپت به عنوان  زبان برنامه نویسی برای مرورگر وب Netscape Navigator شروع به کار کرد.  Brendan Eich نمونه اولیه را در مدت زمان 10 روز در سال 1995 نوشت. نام  JavaScript اشاره ای به زبان جاوا Sun Microsystem است . با این حال این دو  زبان کاملاً متفاوت هستند و شباهت نام ها در طول سالها باعث سردرگمی قابل  توجهی شده است. جاوا اسکریپت ، که پیشرفت قابل توجهی داشته است ، اکنون در  همه مرورگرهای وب مدرن پشتیبانی می شود.معرفی JavaScript سمت کلاینت  در Netscape Navigator به سرعت با معرفی JavaScript سمت سرور در وب  سرورهای Netscape Enterprise Server و Microsoft IIS دنبال شد. حدود 13 سال  بعد ، رایان دال Node.js را به عنوان یک فریم ورک منبع باز ، چند پلتفرمی ، بر پایه ی جاوا اسکریپت معرفی کرد که مستقل از هر مرورگر یا وب سرور کارکرد دارد.زبان جاوا اسکریپتجاوا  اسکریپت یک زبان چند پارادایمی است. این زبان دارای سینتکس براکت خمیده و  سمی کالمن است .دقیقا مانند خانواده زبان C. دارای تایپ ضعیف و پویا است که  یا تفسیر می شود یا (اغلب) به صورت JIT کامپایل می شود . به طور کلی ،  جاوا اسکریپت تک رشته ای است . اگرچه API Web Workers وجود دارد که کارهای  چند رشته ای را انجام می دهد ، و رویدادها ، فراخوانی عملکردهای ناهمزمان و  callbacks وجود دارد.جاوا اسکریپت از برنامه نویسی شی گرا با  استفاده از prototypes به جای وراثت استفاده شده در ++C ، جاوا و #C  پشتیبانی می کند .اگرچه سینتکس classدر جاوا اسکریپت ES6 در سال 2015 اضافه  شد. جاوا اسکریپت همچنین از برنامه نویسی کاربردی شامل closures ، بازگشت و  لامبدا (توابع ناشناس) پشتیبانی می کند.قبل از جاوا اسکریپت ES6 ،  این زبان هیچ بهینه سازی در زمینه Tail Call نداشت. در حال حاضر این کار را  انجام می دهد ، اگرچه برای فعال کردن آن باید ( ‘use strict’) را روشن  کنید ، و اجرای آن از مرورگر به مرورگر دیگر متفاوت است.نام “ES6” از کجا می آید؟نام استاندارد زبان جاوا اسکریپت ، ECMAScript (ES) است ، که توسط  استانداردهای بین المللی ECMA ارائه شده است. ES6 ECMAScript 2015 (ES2015)  نیز نامیده می شود.به عنوان یک مثال ساده برای چشیدن طعم زبان  جاوا اسکریپت ، در اینجا چند خط کد برای تعیین روز یا عصر آورده ایم که به  طور پویا سلامی مناسب را با توجه به زمان در مرور گرد نمایش می دهدvar hour = new Date().getHours();
var greeting;
if (hour &lt; 18) {
    greeting = &amp;quotGood day&quot;
} else {
    greeting = &amp;quotGood evening&quot;
}
document.getElementById(&amp;quotdemo&amp;quot) = greeting;اکوسیستم جاوا اسکریپتAPI  های متعددی برای جاوا اسکریپت وجود دارد. برخی از آنها توسط مرورگر ارائه  می شوند . مانند documentAPI که در کد بالا نشان داده شده ، و برخی دیگر که  توسط شخص ثالث ارائه می شوند. برخی از API ها برای استفاده در سمت سرویس  گیرنده ، برخی برای استفاده در سمت سرور ، برخی برای استفاده دردسکتاپ و  برخی دیگر در بیش از یک محیط کاربرد دارند.API های مرورگر شامل document object model (DOM) و browser object model (BOM) .Geolocation,، Canvas ، WebGL، HTMLMediaElement وWebRTC (ارتباطات در زمان واقعی) است.API  های شخص ثالث فراوان است. برخی از آنها رابط کامل برنامه های کاربردی  هستند . مانند Google Maps . برخی دیگر ابزارهایی هستند که برنامه نویسی  JavaScript HTML5 و CSS را آسان تر می کنند ، مانند jQuery . برخی مانند Express ،  فریم ورکی برای اهداف خاص هستند. در Express ، هدف ایجاد سرورهای برنامه  وب و تلفن همراه در Node.js است . تعدادی چارچوب دیگر نیز بر روی Express  ساخته شده اند .تعداد زیادی ماژول جاوا اسکریپت وجود دارد به طور  تخمینی بیش از 300000. برای استفاده درست از آن ، از یک پیکیج منیجر ،  مانند npm ، که پکیج منیجر پیش فرض nodejs است استفاده می کنیم.پکیج منیجر هایکی از جایگزین های npm در صورتی که تمایل به آن نداشتید yarn است.  که از فیس بوک آمده است و ادعای نصب بدون هیچ نقض و اشکال را می کند.  ابزارهای مشابه شامل Bower (از توییتر) است که به جای ماژول های Node ،  اجزای جلویی را مدیریت می کند. Ender ، که خود را خواهر کوچکتر npm می نامد. و jspm ، که از ماژول های ES (استاندارد جدیدتر ECMA برای ماژول ها) استفاده می کند.وب پک ماژول های جاوا اسکریپت را به بسته هایی ثابت برای مرورگر تبدیل می کند.Browserify به توسعه دهندگان اجازه می دهد ماژول هایی به سبک Node.js بنویسند که برای استفاده در مرورگر کامپایل می شوند.لینترزبرای  اطمینان بیشتر از JavaScript در غیاب کامپایلیشن ، از linters استفاده می  کنیم. این اصطلاح از ابزار لینت زبان C ، که یک ابزار استاندارد یونیکس بود  ، گرفته شده است. linter های جاوا اسکریپت شامل JSLint ، JSHint و ESLint  هستند . می توانید پس از تغییر کد با استفاده از یک task runner یا IDE خود  ، اجرای linters را خودکار کنید. انتخاب بین linters بسته به نوع پروژه و  سلیقه شما باز می گردد.ترنسپایلرز به   شما امکان می دهد  برخی زبان های دیگر مانند CoffeeScript یا TypeScript را به JavaScript  ترجمه کنید و جاوا اسکریپت مدرن (مانند کد ES2015) را به جاوا اسکریپت اصلی  که تقریباً در هر مرورگری اجرا می شود ، ترجمه کنید. رایج ترین transpiler  برای جاوا اسکریپت مدرن Babel است.تایپ اسکریپت چیست؟تایپ اسکریپت یک  مجموعه بزرگ تایپ شده از JavaScript است که به جاوا اسکریپت ساده .(ES3 یا  بالاتر ؛ قابل تنظیم است) . کامپایل می شود.کامپایلر خط فرمان منبع باز  TypeScript می تواند به عنوان یک بسته Node.js نصب و راه اندازی شود .  پشتیبانی TypeScript با Visual Studio 2017 و Visual Studio 2019 ، Visual  Studio Code و WebStorm همراه است و می تواند به Sublime Text . Atom .  Eclipse . Emacs و Vim نیز اضافه شود.تفاوت های TypeScript و JavaScriptتایپ  اسکریپت optional types, classes و ماژول ها را به جاوا اسکریپت اضافه می  کند و از ابزارهای برنامه های کاربردی جاوا اسکریپت در مقیاس بزرگ برای هر  مرورگر ، برای هر میزبان و در هر سیستم عامل پشتیبانی می کند. در میان  بسیاری از نقاط قوت دیگر برای TypeScript می توان به ، فریم ورک محبوب  Angular اشاره کرده که به طور کامل از TypeScript استفاده می کند.Types  توسعه دهندگان جاوا اسکریپت را قادر می سازد تا هنگام توسعه برنامه های  کاربردی جاوا اسکریپت از ابزارها و شیوه های توسعه بسیار کار آمد مانند  static checking و code refactoring استفاده کنند.Types به شما  اجازه می دهد تا رابط های بین اجزای نرم افزار را تعریف کرده و درباره  رفتار کتابخانه های موجود جاوا اسکریپت بینش پیدا کنید.تایپ اسکریپت پشتیبانی از آخرین ویژگی های در حال تکامل جاوا اسکریپت را به همراه دارد .  مانند async functions و decorators که به ساخت تکه کدهایی بسیار قوی و  کار آمد کمک می کند.زبان TypeScriptتایپ اسکریپت زبان  جاوا اسکریپت را می پذیرد . اما گزینه های اضافی مانند: (در هنگام کامپایل)  type annotations. type checking و classes و module ها را ارائه می کند.  همه این موارد هنگامی که می خواهید نرم افزار قوی تولید کنید بسیار مفید  است. جاوا اسکریپت فقط در زمان اجرا خطا ایجاد می کند . و بعد فقط در صورتی  که برنامه شما به مسیری که خطا دارد برسد.نقطه شروع کار همان جاوا اسکریپت خالص با پسوند .ts است:function greeter(person) {
    return &amp;quotHello, &amp;quot + person;
}
let user = &amp;quotJane User&quot;
document.body.textContent = greeter(user);اگر این را کد با tsc کامپایل کنید یک فایل یکسان با پسوند .js ایجاد می کند.حال  کد را با type annotation و اضافه کردن person:string در قسمت function ،  اضافه کردن کلاس student . اضافه کردن یک interface برای person و در نهایت  compiling به شکل زیر تبدیل می شود:class Student {
    fullName: string;
    constructor(public firstName: string, public middleInitial: string, 
        public lastName: string) {
            this.fullName = firstName + &amp;quot &amp;quot + middleInitial + &amp;quot &amp;quot + lastName;
    }
}
interface Person {
    firstName: string;
    lastName: string;
}
function greeter(person: Person) {
    return &amp;quotHello, &amp;quot + person.firstName + &amp;quot &amp;quot + person.lastName;
}
let user = new Student(&amp;quotJane&amp;quot, &amp;quotM.&amp;quot, &amp;quotUser&amp;quot);
document.body.textContent = greeter(user);هنگامی که این  کد را کامپایل می کنید و به جاوا اسکریپت تولید شده نگاه می کنید . خواهید  دید که کلاس های TypeScript فقط یک شکل مختصر برای همان وراثت مبتنی بر  نمونه اولیه است . که در جاوا اسکریپت ساده ES3 استفاده می شود. توجه داشته  باشید که properties پراپرتی های person.firstName و person.lastName به  طور خودکار توسط کامپایلر زمانی که attributes public را در constructor  کلاس Student می بیند ،تولید می شود. همچنین به اینترفیس Person نیز توسعه  می یابد. یکی از بهترین مزایای type annotations در TypeScript این است که  توسط ابزارهایی مانند Visual Studio Code شناسایی می شوند:اگر  هنگام ویرایش در VS Code خطایی در کد وجود داشته باشد . پیام های خطا را  در برگه مشکلات (Problems) مشاهده خواهید کرد. به عنوان مثال اگر انتهای خط  student را حذف کنید مشاهده خواهید کرد: ?تفاوتهایTypeScriptوJavaScript تبدیل کد جاوا اسکریپت به تایپ اسکریپتاولین  و اصلی ترین مرحله برای مهاجرت از جاوا اسکریپت به TypeScript تغییر نام  فایل های .js شما به .ts در یک زمان است. (اگر فایل شما از JSX ، افزونه ای  که توسط React استفاده می شود ، استفاده می کند ، باید نام آن را به .tsx  تغییر دهید.)از جمله قدم های دیگر ، شما باید بر اساس ماژول  require()یا define()دستورات را به دستورات import TypeScript تغییر دهید. و  برای ماژول هر کتابخانه ای که استفاده می کنید فایل های اعلانات را اضافه  کنید. همچنین باید ماژول export خود را با استفاده ازعبارت export تایپ  اسکریپت بازنویسی کنید . TypeScript مانند Node.js از ماژول های CommonJS  پشتیبانی می کند.اگر در مورد تعداد اشتباه اعداد آرگومان ها خطایی  دریافت کردید . می توانید از تابع overload signatures تایپ اسکریپت  استفاده کنید. این ویژگی مهمی است که جاوا اسکریپت فاقد آن است. در نهایت ،  شما باید types را به توابع خود اضافه کنید و در صورت لزوم از interfaces  یا کلاس ها استفاده کنید.هنگامی که همه فایل های جاوا اسکریپت خود  را به TypeScript تبدیل کردید . types را تقویت کرده و خطاها را حذف کردید ،  یک پایگاه کد بسیار قوی تر خواهید داشت. به جای رفع مداوم خطاها زمان اجرا  که توسط آزمایش کنندگان یا کاربران گزارش می شود . می توانید اکثر خطاهای  رایج را به صورت استاتیک تشخیص دهید.آموزش کامل TypeScript را به رایگان از یودمی ایران دریافت کنید</description>
                <category>udemyiran</category>
                <author>udemyiran</author>
                <pubDate>Sun, 19 Sep 2021 01:35:11 +0430</pubDate>
            </item>
                    <item>
                <title>بهترین زبان های برنامه نویسی موبایل</title>
                <link>https://virgool.io/@udemyiran/%D8%A8%D9%87%D8%AA%D8%B1%DB%8C%D9%86-%D8%B2%D8%A8%D8%A7%D9%86-%D9%87%D8%A7%DB%8C-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D9%85%D9%88%D8%A8%D8%A7%DB%8C%D9%84-kqtthh6chci3</link>
                <description>امروز چه مقدار زمان را در گوشی همراه خود گذراندید؟به طور متوسط  ​​یک کاربر تلفن هوشمند در سال 2021 هر روز 5 الی 6 ساعت از وقت خود را بر  روی یک تلفن هوشمند صرف می کند. این مدت زمان بیشتری از زمان تماشای  تلویزیون یا تعامل با سایر رسانه ها است.حدود 90 درصد از این زمان  صرف استفاده از برنامه ها می شود. واضح است که برنامه های تلفن همراه  بزرگترین رسانه ای هستند. که مشتریان شما به صورت دیجیتالی با آن در تعامل  هستند.کاربران تلفن های هوشمند به طور متوسط 80 برنامه را روی تلفن خود نصب کرده اند. و حداقل 40 برنامه را هر ماه استفاده می کنند.40 برنامه در ماه بسیار عدد بزرگی است. پس شاید شما هم بتوانید برنامه ای بسازید که به این 40 برنامه برتر برسد!2021  سال خوبی برای توسعه برنامه ها بود. اما با همه گیری کووید -19 ،اینکه  مبتکرانی مانند شما برای ایجاد راه حل های دیجیتالی مانند برنامه های تلفن  همراه برای کمک به مردم و اقتصاد قدم بردارندبسیار مهمتر شده است .یک  برنامه تلفن همراه بهترین راه برای ایجاد یک کسب و کار از ابتدا . یا  افزایش تجارت موجود و ارائه یک مزیت دیجیتالی به آن است. زیرا مطالعات  بارها و بارها ثابت کرده است که مشاغلی که دارای اپلیکیشن موبایل هستند  مشتریان را بهتر جذب کرده و درآمد بیشتری را کسب می کنند.گواه صحت  این ادعا داده های App Annie است . که بیان می کند 90 درصد از مشتریانی که  از تعامل با برنامه لذت برده اند .در آینده به خرید از آن شرکت ادامه می  دهند.بنابراین اکنون که ما تمام دلایلی را که در توجیه به  تعویق انداختن و توسعه برنامه تلفن همراه دارید را مشخص کرده ایم. وقت آن  است که مشغول شوید.برای زنده کردن ایده برنامه بعدی خود ، تنها چیزی که نیاز دارید یک زبان برنامه نویسی مناسب تلفن همراه است.که  یادگیری آن آسان ، توسعه پذیر و مقیاس پذیر باشد . یک زبان برنامه نویسی  خوب برای برنامه ها باید دارای ویژگی های خاصی باشد. که نه تنها به توسعه  برنامه با کارایی بالا کمک می کند بلکه زندگی را نیز برای کدنویس به جهنم  تبدیل نمی کند .در این مقاله در مورد بهترین زبان های برنامه نویسی برای  ساخت برنامه های گوشی های هوشمند بحث می کنیم.بیش از ده ها زبان برنامه نویسی برای برنامه های تلفن همراه وجود دارد.اگر  مجبور باشید فهرستی از 30 زبان برنامه نویسی مختلف را انتخاب کنید تا یکی  را برای برنامه خود انتخاب کنید .روزها را صرف انجام تحقیقات می کنید. برای  صرفه جویی در وقت شما ، لیستی از 6 زبان برتر را تهیه کرده ایم .که هر یک  از آنها به شما در توسعه یک برنامه موبایل فوق العاده کمک می کند.علاوه  بر این ، من این لیست را بر اساس برنامه ای که می خواهید توسعه دهید – iOS  ، Android یا Hybrid . تقسیم کرده ام که انتخاب را برای شما آسان تر کرده  است. به این ترتیب ، زمان کمتری را صرف تحقیق می کنید و زمان بیشتری را صرف  توسعه برنامه خود خواهید کرد.بهترین زبان های برنامه نویسی موبایل برای توسعه برنامه اندرویدزبان های برنامه نویسی اندروید1 – جاوابا گذشت بیش از 25 سال ، جاوا همچنان محبوب ترین زبان برنامه نویسی در بین توسعه دهندگان است .و  این مهم با وجود همه افرادی است که تازه وارد برنامه نویسی شده اند. در  دنیایی که فناوری جدید به سرعت جایگزین فناوریهای قدیمی می شود ، هیچ کدام  نتوانسته اند جایگزینی برای جاوا شوند.یکی از بزرگترین دلایلی که جاوا اولین انتخاب همه توسعه دهندگان برنامه تلفن همراه است. این است که یادگیری و شروع کار  با آن بسیار آسان است و همچنین پشتیبانی گسترده ای از افراد را ارائه می  دهد. که یک کمک اضافی برای توسعه دهندگان جدید است. به مانند استادی که  همیشه در کنار شماست.اجازه ندهید که یادگیری آسان باعث اشتباه شما  شود. جاوا یک زبان برنامه نویسی قدرتمند برای برنامه های تلفن همراه است.  برخی از بهترین برنامه های Android با استفاده از جاوا توسعه داده شده اند .  از جمله Spotify ، Twitter و البته سیستم عامل Android.با توجه به اینکه خود آندروید در جاوا توسعه یافته ، می توانید پس از تسلط بر جاوا به راحتی همه برنامه های اندروید را توسعه دهید.برخی از بهترین ویژگی های جاوا عبارتند از:سینتکس  ساده و قابل فهم جاوا . بسیار خواندنی تر از پایتون و سایر زبان های  برنامه نویسی که برای توسعه برنامه های تلفن همراه استفاده می شود می باشد.از آنجا که جاوا یک زبان برنامه نویسی شی گرا است. پیچیدگی برنامه های دنیای واقعی را بهتر مدیریت می کند.با API غنی خود ، جاوا به شما امکان می دهد چیز های خیلی بیشتری را با برنامه خود ادغام کنید.پشتیبانی  غنی از جاوا به توسعه دهندگان جدید کمک می کند تا مهارتهای خود را به طور  آنی تقویت کنند .و هرگز در انتظار کمک در مشکلی گیر نکنند. پس می توانید  انتظار داشته باشید که پاسخ ها را سریع و با جزئیات کافی پیدا کنید.یکی  دیگر از چیزهایی که در جاوا دوست خواهید داشت این است که این زبان typed  شده است. این بدان معناست که اشتباهات زیادی را که به عنوان یک مبتدی انجام  می دهید ،اصلاح خواهد کرد.به طور خلاصه ، جاوا یکی از بهترین  زبان های برنامه نویسی برای توسعه برنامه است. به خصوص اگر در زمینه توسعه  برنامه شروع به کار کرده اید و نیاز به یک زبان برنامه نویسی اندرویدی  دارید. که از همه نظر پشتیبانی می شود.2- کاتلین (Kotlin)اگر  جاوا یک ماشین کوروت قدیمی است که هرگز شما را ناامید نمی کند . کاتلین  کوروت استینگری کارآمد و جدید است که تمام قابلیت های قدیمی را با مدرن  بودن ترکیب می کند.وقتی گوگل Kotlin را به عنوانیک زبان صد در صد  درجه یک برای توسعه اندروید اعلام کرد . توسعه دهندگان برنامه در سراسر  جهان بسیار خوشحال شدند.کاتلین بهترینهای جاوا را می گیرد و یک  قدم جلوتر می رود تا آن را حتی بهتر و کامل تر کند. یکی از مواردی که  توسعه دهندگان برنامه در مورد Kotlin دوست دارند سهولت استفاده و راه  اندازی آن است. منبع باز است و استفاده از آن کاملاً رایگان است .و بر روی  هر پلتفرمی کار می کند. علاوه بر این ، تقریباً از همه محیطهای توسعه  پشتیبانی می کند.به دلیل قابلیت همکاری کامل با جاوا ، اگر برخی از  کدهای خود را قبلاً در جاوا نوشته اید . می توانید به آسانی از کاتلین برای  سایر قسمتهای پروژه خود استفاده کنید بدون اینکه لطمه ای به پروژه تان  وارد شود.Kotlin می تواند یکی از ساده ترین زبان های برنامه نویسی برای شروع باشد:زیرا یکی از تمیزترین زبان های برنامه نویسی استاتیک است که برای ایجاد برنامه ها استفاده می شود.مستندات  مربوط به Kotlin بسیار آسان ، دقیق و سرگرم کننده است .که سفر شما به زبان  های برنامه نویسی موبایل را به یک تجربه یادگیری فوق العاده تبدیل می کند.جامعه  Kotlin یک جامعه بزرگ و پررونق است. با برخی از متخصصان مشهور که اغلب در  GitHub و دیگر انجمن ها در دسترس هستند .و بسیار خوشحال می شوند به سوالات  سایر توسعه دهندگان پاسخ دهند.در حقیقت ، حتی یک Kotlin Slack Group  وجود دارد که به راحتی می توانید پاسخ سوالات خود را توسط برخی از معروف  ترین توسعه دهندگان در آنجا بیابید.Jetbrains . سازندگان Kotlin  اطمینان حاصل کردند که نگرانی های توسعه دهندگان در حین ایجاد این زبان را  کاملا مد نظر داشته اند. سیستم امن Nullability ، Method references ،  Lambdas ، سیستم تغییرپذیری/تغییرپذیری داخلی و استفاده آسان از اپراتورهای  جریان تنها برخی از ویژگیهایی هستند که توسعه دهندگان همیشه می خواستند . و  همه این ها در کنار هم Kotlin را به بهترین زبان برنامه نویسی اندروید  تبدیل می کند.بهترین زبان برنامه نویسی برای توسعه برنامه iOS3- سویفت (Swift)بلافاصله  پس از انتشار در سال 2014 . محبوبیت Swift افزایش چشمگیری پیدا کرد و در  سال 2015 محبوب ترین زبان برنامه نویسی در Stack Overflow شناخته شد. در آن  زمان ، اپل گفت که هدف آنها از ایجاد Swift .”گرفتن کل دنیای برنامه نویسی  موبایل است ” .اکنون حدود هفت سال بعد ، می توانیم اپل را در حال  رسیدن به این هدف ببینیم. فروشگاه App Store نزدیک به 500،000 برنامه دارد  که تا حدی در Swift نوشته شده اند.ابتکاری که سوئیفت با آن ایجاد  کرد . “هر کسی می تواند کدنویس باشد” . واضح است که اگر به دنبال شروع  توسعه برنامه در IOS هستید ، Swift بهترین زبان برنامه نویسی برای شما است.برخی  از بهترین برنامه هایی که نامشان را حتما شنیده اید مانند Uber ، Lyft ،  Square و Airbnb از Swift به عنوان زبان برنامه نویسی اصلی خود برای iOS  استفاده می کنند.با بررسی نظرات توسعه دهندگان Stack Overflow ، برنامه نویسان Swift به طور متوسط ​​سالانه 120،000 دلار حقوق دریافت می کنند.برای  هر کسی که در مورد یادگیری کد نویسی فکر می کند ، Swift بهترین زبان  برنامه نویسی iOS است. یادگیری آن سریع و آسان است . زیرا بسیار کاربر پسند  ایجاد شده است. دارای ویژگی های طراحی داخلی است که به شما بازخورد زمان  واقعی می دهد. این به شما کمک می کند خطاها را به حداقل برسانید و کد خود  را تمیز نگه دارید.Swift همچنین به شما امکان می دهد کد را سریعتر  بنویسید. زیرا تعداد کارهای اولیه را که معمولاً کار توسعه دهندگان را کند  می کند . کاهش می دهد و کد پیچیده را به نحوی بهینه تبدیل می کند و توسعه  دهندگان را از این بابت بسیار راضی نگه می دارد.دلیل دیگری که  Swift برای توسعه دهندگان جدید کاملاً مناسب است این است که تعدادی ابزار  داخلی را ارائه می دهد که به سهولت توسعه برای شما کمک می کند.Swift  Playgrounds. برنامه ای است که اپل به طور خاص برای کمک به مبتدیان برای  یادگیری آسان کد نویسی با کمک متخصصان جامعه که مایل به آموزش هستند ،  ساخته است. می توانید از این برنامه برای یادگیری برنامه نویسی از ابتدا در  محیطی بسیار تعاملی و جذاب استفاده کنید.4- Objective-Cدر  حالی که Swift امروزه به زبان برنامه نویسی اصلی برای توسعه برنامه iOS  تبدیل شده است . خواهر یا برادر بزرگتر آن-Objective-C-هنوز برای بسیاری از  توسعه دهندگان گزینه مورد علاقه باقی مانده.Objective-C زیر مجموعه  ای از C است که اولین زبان برنامه نویسی کامپیوتر است. این باعث می شود که  با کدهای C و ++C سازگاری بالایی داشته باشد. این زبان بیش از 30 سال است  که وجود دارد و هنوز هم در بین زبان های برنامه نویسی iOS یک انتخاب برتر  است.با توجه به این مدت طولانی ، از بلوغ بی نظیری برخوردار است .  به عنوان یک زبان برنامه نویسی بسیار تأیید شده و آزمایش شده است و در پشت  صدها برنامه موفق قرار دارد.Objective-C یک زبان بسیار پویا است که به شما امکان می دهد بین تایپ ایستا و تایپ پویا یکی را انتخاب کنید.اتصال Objective-C با API های خصوصی آسان تر و سریعتر است.Objective-C  که یک زبان بسیار پویا و شی گرا است که سازگاری زیادی را در زمان اجرا به  شما ارائه می دهد. بنابراین می توانید در زمان اجرا به API های خصوصی یا  حتی اشیاء ساختگی دسترسی داشته باشید. این امر باعث می شود برنامه نویسی  بسیار سریعتر و ساده تر شود.Objective-C ، یکی از زبانهای پایدار  است که برای طیف گسترده ای از انواع پروژه ها بسیار عالی عمل می کند. کمتر  مستعد خطا است ، اشکالات کمتری دارد و نسبت به همتایان خود راحت تر کامپایل  می شود.بهترین زبان برنامه نویسی برای توسعه برنامه Cross Platform5- React NativeReact  Native به عنوان یک پروژه hackathon در فیس بوک شروع شد. و بسیار خوب عمل  کرد و بعداً تبدیل به یکی از بهترین زبان های برنامه نویسی شد که می توانست  برنامه هایی را اجرا کند که روی هر پلتفرمی اجرا می شوند.برنامه  های cross platform برنامه هایی هستند که نیازی به ساخت جداگانه برای  Android و iOS ندارند. بنابراین شما می توانید فقط یک برنامه بسازید و آن  را در هر دو سیستم عامل به کار بگیرید. کار توسعه خود را به نصف برسانید و  دسترسی خود به بازار را دو برابر افزایش دهید.ری اکت نیتیو  یک زبان برنامه نویسی قوی است. که برای توسعه برنامه استفاده می شود و فقط به یک پلتفرم محدود نمی شود. این زبان در توسعه برنامه های بسیار محبوب مانند Uber و Airbnb استفاده شده است. به دلایل مختلف می توان گفت React Native آینده برنامه های ترکیبی است .ری اکت نیتیو  به توسعه دهندگان اجازه می دهد بخش هایی از کد را بنویسند و از آنها در سیستم عامل های مختلف استفاده مجدد کنند.علاوه  بر قابلیت استفاده مجدد کد ، React Native همچنین دارای تعدادی اجزای از  پیش ساخته شده در یک کتابخانه منبع باز است. این بدان معناست که اجزایی که  قبلاً توسط سایرافراد توسعه داده شده و در کتابخانه بارگذاری شده اند به  راحتی توسط شما قابل استفاده است بنابراین سرعت توسعه را تا حد زیادی بالا  می برد.ری اکت نیتیو   یک رابط کاربری ساده با دستور پیاده سازی بسیار  مرتب شده ارائه می دهد. این باعث می شود برنامه های ساخته شده در React  Native سریعتر ، پاسخگوتر ، با بارگیری سریع تر و روانتر اجرا شوند. تعداد  زیاد کتابخانه هایی که از React Native پشتیبانی می کنند فقط کار را آسان  تر می کند .مزیت دیگر React Native پشتیبانی از افزونه شخص ثالث است.بنابراین اگر برنامه شما به پشتیبانی از تقویم نیاز دارد ، نیازی نیست که  از ابتدا یک تقویم بسازید. React Native به شما امکان می دهد تقویمی از پیش  ساخته شده برای استفاده را جستجو کنید .(تعداد زیادی وجود دارد). و به  سادگی آن را در برنامه خود ادغام کنید.معماری ماژولار ، بارگیری  زنده ، سبک کدگذاری اعلانی و… تعدادی دیگر از قابلیتها React Native را  برای توسعه برنامه بسیار مناسب می کند.ارزشمند تر از همه این ها  پشتیبانی غنی توسط جامعه و مستندات بی عیب و نقص است. روی هم رفته ، اگر به  دنبال ساختن یک برنامه چند پلتفرمی هستید که سریعتر ، ارزانتر و شگفت  انگیز است ، React Native یک زبان برنامه نویسی موبایل فوق العاده است.6- فلاتر (Flutter)فلاتر، که توسط گوگل به عنوان SDK برنامه تلفن همراه توسعه یافته است . راهی  سریع و آسان برای ایجاد برنامه های موبایل غنی و با کارایی بالا که به  راحتی در هر دو سیستم عامل قابل استفاده است ، به توسعه دهندگان ارایه می  دهدFlutter در اصل یک فریم ورک توسعه برنامه تلفن همراه است. که از  زبان برنامه نویسی Dart استفاده می کند و دارای یک کتابخانه غنی از ابزارک  ها است که به ایجاد تجربیات بسیار دیدنی و همه جانبه برنامه کمک می کند.به  لطف ویدجت های غنی ، Flutter برنامه های چند پلتفرمی را ایجاد می کند که  مانند برنامه های بومی نرم و روان به نظر می رسند. با استفاده از قابلیت  استفاده مجدد کد ، نوشتن سریعتر کد را امکان پذیر می کند. این بدان معناست  که می توانید از بخشهای وسیع کد خود همانطور که در هر دو سیستم عامل وجود  دارد استفاده کنید. تنها کاری که انجام می دهید این است که چند عنصر تعریف  کننده UI به صورت جداگانه به برنامه اضافه کنید و می توانید در نصف زمان و  با هزینه یک برنامه . یک برنامه کاملاً کاربردی کراس پلتفرم داشته باشید. ?بهترینزبانهایبرنامهنویسیموبایل یکی از دستاوردهای بزرگ فلاتر Hot Reload است:توانایی مشاهده تغییرات ایجاد شده در کد برنامه در خود برنامه به صورت آنی  . بنابراین اگر می خواهید هر قسمتی از برنامه را تغییر دهید ، ظاهر یا کار  متفاوتی را انجام دهید .می توانید کد را تغییر دهید و ببینید تغییرات در  زمان واقعی چگونه اتفاق می افتد.از آنجا که پایگاه کد برای هر دو پلتفرم کوچکتر و یکسان است . Flutter به آزمایش بسیار کمتری نسبت به همتایان بومی خود نیاز دارد.فلاتر نه تنها دارای یک کتابخانه غنی از ابزارک های رابط کاربری است که به شما  در ایجاد برنامه های بصری خیره کننده کمک می کند . بلکه به شما این امکان  را می دهد که ویدجت های خود را سفارشی کنید.نتیجهاین 6  زبان از بهترین زبان های برنامه نویسی برای توسعه برنامه های تلفن همراه  هستند. البته تعدادی زبان فوق العاده دیگر مانند Ruby ، ​​Python و HTML5  وجود دارد ، اما هنگام شروع به کار ، بهتر است به جای صرف زمان زیاد برای  تحقیق در مورد 30 زبان مختلف ، محبوب ترین آنها را انتخاب کرده و دست به  کار شوید.بسته به اینکه می خواهید برنامه های Android ، iOS یا کراس  پلتفرم بسازید ، اکنون باید یکی از دو زبان را انتخاب کنید. امیدوارم هفته  های ارزشمندی را در مطالعه و تحقیق برای شما ذخیره کرده باشیم، که آن زمان  را اکنون می توانید صرف توسعه برنامه خود کنید.مهم نیست که کدام  را با توجه به نیازتان انتخاب می کنید ، همه زبان های موجود در این لیست به  شما این امکان را می دهند که یک برنامه فوق العاده بسازید.</description>
                <category>udemyiran</category>
                <author>udemyiran</author>
                <pubDate>Wed, 11 Aug 2021 02:11:03 +0430</pubDate>
            </item>
                    <item>
                <title>جنگو چیست؟ مزایای جنگو و موارد استفاده آن</title>
                <link>https://virgool.io/@udemyiran/%D8%AC%D9%86%DA%AF%D9%88-%DA%86%DB%8C%D8%B3%D8%AA-%D9%85%D8%B2%D8%A7%DB%8C%D8%A7%DB%8C-%D8%AC%D9%86%DA%AF%D9%88-%D9%88-%D9%85%D9%88%D8%A7%D8%B1%D8%AF-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A2%D9%86-ixge6tjn3vnr</link>
                <description>امروزه بسیاری از وب سایت ها با پلتفرم ها با کشیدن و رها کردن (ِDrag  &amp; Drop) مانند Squarespace یا ابزارهای محبوب قابل تنظیم برای کاربر  مانند وردپرس ایجاد می شوند. اما مزایای پیش رو گرفتن رویکرد پیچیده تر  توسعه وب سایت در فریم ورکی مانند جنگو چیست؟پایتون امروزه یکی از محبوب ترین زبان های برنامه نویسی است و Django  ابزاری است که توسط توسعه دهندگان پایتون برای تسهیل روند توسعه وب مورد  استفاده قرار می دهند. برای یادگیری اینکه Django چگونه به توسعه دهندگان  در ایجاد وب سایت های سفارشی برای مشتریان کمک می کند ، ادامه مقاله را  بخوانید.جنگو چیست؟Django یک فریم ورک منبع باز و رایگان برای توسعه وب پایتون و ابزاری بسیار انعطاف پذیر برای توسعه  وب است .که می تواند برای ایجاد هر نوع وب سایت یا برنامه ای که لازم است  مورد استفاده قرار گیرد. فریم ورک مجموعه ای از ماژول ها است که عناصر از  پیش ساخته شده ای را فراهم می کند که کدگذاری را کارآمدتر و پایدارتر می  کند.توسعه دهندگان می دانند که غالباً اختراع مجدد چرخ ابدا ضروری نیست ،  بنابراین به جای اینکه همه چیز را از ابتدا کدنویسی کنند ، اغلب از ماژول  های تست شده و اثبات شده استفاده می کنند که عناصر استاندارد را به برنامه  ها اضافه می کند. فریم ورکی مانند جنگو این قابلیت را فراهم می کند.به عنوان مثال – یک توسعه دهنده نباید خود صفحه های ورود به سیستم را  ایجاد کند و پردازش ورود به سیستم را انجام دهد. جا های زیادی برای اشتباه  وجود دارد. فریم ورک ها این نوع موارد را فراهم می کنند. و همه مشکل را  برای شما حل می کنند.چیزی که جنگو نیستDjango مانند Java یا ++C یک زبان برنامه نویسی نیست و یک زبان برنامه  نویسی مانند HTML ، PHP یا MySQL نیز نیست. همچنین یک سیستم عامل CMS  .(سیستم مدیریت محتوا). مانند وردپرس نیست که توسط هر کسی قابل استفاده  باشد. جنگو را اغلب با این فناوری ها مقایسه می کنند. زیرا به ساده سازی  فرآیند توسعه وب با عناصر از پیش ساخته شده کمک می کند. با این حال ، جنگو  منحصر به فرد است زیرا ابزاری فقط برای توسعه دهندگانی است که به زبان  برنامه نویسی پایتون تبحر دارند.ارتباط جنگو و پایتون چگونه است؟جنگو فریم ورکی است که با کد پایتون ساخته شده است. ابزاری است که  قابلیت ها را اضافه می کند و روند کدنویسی با پایتون را تسریع می کند. جنگو  حاوی کدهای پایتون است که از قبل برای ارائه عملکردهای آماده اتصال به یک  پروژه نوشته شده است. اصطلاح “فریم ورک” در جنگو شامل مجموعه ای کاملاً  کاربردی از کلاس ها ، کتابخانه ها و ماژول ها است که به توسعه دهندگان  اجازه می دهد هر کاری را که برای ایجاد وب سایت ها و برنامه های قوی نیاز  دارند انجام دهند.یک روش معمول برای فکر کردن در مورد رابطه مانند لایه ها یا کف خانه  است. پایتون پایه و اساس است . جنگو بر روی پایتون می نشیند زیرا به زبان  پایتون نوشته شده است. وب سایت یا برنامه شما در بالای جنگو قرار دارد.برای مقایسه بهتر، وردپرس در بستر زبان PHP قرار دارد.جنگو برای چه مواردی مناسب است؟استفاده از سیستم های CMS از قبل ساخته شده مانند وردپرس با افزونه های  گسترده برای ساخت وب سایت های اصلی معمول شده است. اما برای برخی از پروژه  ها ، یک رویکرد دست ساز و متناسب با Django برای ایجاد راه حل های سفارشی ،  نوآورانه و مقیاس پذیر بهتر است.بسیاری از شناخته شده ترین سایت ها و برنامه ها با جنگو ساخته شده اند و شامل موارد زیر هستند:NASA
    Mozilla Firefox
    The Washington Post
    Instagram
    Pinterest
    National Geographic
    The Onion
    Disqus
    Eventbrite
    Chess.com برنامه هایی که از جنگو استفاده می کنندمزایای فنیجنگو برای هر پروژه توسعه وب یک انتخاب عالی است. این به ویژه برای سایت  های رسانه های اجتماعی یا سایت های تجارت الکترونیکی که به یک پایه قوی و  ایمن نیاز دارند بسیار مناسب است زیرا فریم ورک جنگو دارای ویژگی های داخلی  است که برای محافظت از داده های حساس ، معاملات و تأیید اعتبار کاربر  بسیار مناسب است.اگر به وب سایتی نیاز دارید که بتواند در عمق و عملکرد خود مقیاس بندی و  رشد کند . Django اغلب ابزاری برتر برای تحقق این امر فراهم می کند. جنگو  در ایجاد وب سایت هایی که بتوانند از پس بازدیدها و معاملات زیاد برآیند ،  بسیار عالی عمل می کند. سایت های جنگو بسیار سازگارتر برای تغییر هستند.  بدون اینکه نگران تأثیرگذاری بر عملکرد کلی وب سایت باشند.کاربردهای جنگو  از این ها نیز فراتر می رود.Django نه تنها برای ساختن محتوای وب قدرتمند و مقیاس پذیر frontend  عالی است . بلکه همچنین توانایی ایجاد برنامه هایی را دارد که می توانند در  سمت سرور اجرا شوند. و عملکرد پیشرفته و قدرتمندی را که اکثر وب سایت ها  ندارند فراهم کنند. به عنوان مثال ، اگر به ابزار پیشرفته ای برای مدیریت  موجودی کالا ، تجزیه و تحلیل بازار یا مقایسه قیمت نیاز دارید.جنگو ابزاری  ایده آل است. برخی دیگر از مواردی که جنگو در آنها برتری دارد:ادغام های API قابل برنامه ریزیگزارش ها و نمودارهای سفارشیمحتوای تعاملی یا پویانماهای قابل تنظیم برای انواع مختلف کاربرانمجوزهای دقیق کاربراعتبار سنجی سفارشی داده هاصفحات و برنامه های مناسب موبایلبایگانی های بزرگ ، مانند مجموعه آثار هنریجنگو از کجا آمده است؟جنگو در سال 2003 توسط برنامه نویسان پایتون ، آدریان هولوواتی و سیمون  ویلیسون ، هنگامی که در روزنامه Lawrence Journal-World کار می کردند ،  ایجاد شد. آنها فریم ورک خود را برای استفاده عمومی در سال 2005 تحت مجوز  BSD منتشر کردند که یک نرم افزار بدون نیاز به مجوز با حداقل محدودیت برای  توزیع و استفاده بر اساس فریم ورک است.نام “Django” ، آن طور که برخی ممکن است تصور کنند ، از “Django  Unchained” ، فیلم Quentin Tarantino گرفته نشده است. بلکه این نام به نام  Django Reinhardt . گیتاریست جاز که یکی از بزرگترین موسیقی دانان قرن  بیستم محسوب می شود ، گرفته شده. راینهارت ، متولد 1910 در بلژیک ، در کنار  افسانه های موسیقی جاز مانند دوک الینگتون ، دیزی گیلسپی و لوئی آرمسترانگ  به شهرت دست یافت.بنیاد نرم افزار جنگو در ژوئن 2008 تاسیس شد. کنفرانس جنگو برای توسعه  دهندگان و کاربران ،کنفرانس DjangoCon ، از سپتامبر 2008 به صورت سالانه  برگزار می شود. جنگو در حال حاضر در میان فریم ورک های توسعه (قسمت  Backend) در رتبه دوم محبوبیت قرار دارد.محبوب ترین فریم ورک های بک انددرباره پایتونپایتون ، زبان زیربنای فریم ورک جنگو ، در سال 1989 توسط دانشمند  کامپیوتر هلندی ، گیدو ون روسوم اختراع شد. و در سال 1991 برای عموم منتشر  شد. فلسفه پایتون کمک به تولید کدی بود که خواندن آن برای انسان راحت تر است. و امکان برنامه نویسی واضح را در  پروژه های مقیاس کوچک و گسترده فراهم می کند. . این زبان سریعترین زبان در  حال رشد است و در حال حاضر در بین برنامه نویسان رتبه سوم محبوبیت را دارد.زبان های برنامه نویسی محبوب بر اساس Job Openingsپایتون زبان سطح بالاتری نسبت به سایر گزینه های اصلی مانند++C و Java  است. این بدان معناست که بیشتر از آنکه با سطح پردازنده رایانه تعامل داشته  باشد ، بیشتر در جهت خوانایی و سادگی استفاده برای انسان است. این همچنین  به معنای سازگاری این زبان با انواع سیستم عامل های مختلف سخت افزاری  رایانه است. ?جنگوچیست-کاربردهایجنگو–زبانهایمحبوببراساسسوالاتمطرحشدهدرStackOverFlow  زبان های محبوب بر اساس سوالات مطرح شده در StackOverFlowدو مورد از اصلی ترین مزایای پایتون سادگی و انعطاف پذیری است. این از  سیتنکس و فضاهای تو رفته (indented spaces) قابل درک است که خواندن و  یادگیری آن را آسان می کند. به دلیل همین مزایا ، بسیاری از افرادی که  برنامه نویسی را شروع کرده اند از آن استفاده می کنند که شاید اگر این  مزایا نبود هیج وقت این کار را نمی کردند. پایتون در حال افزایش سریع  محبوبیت است . برخی از معروف ترین سایت ها و برنامه های ساخته شده با  پایتون عبارتند از:Google
    YouTube
    Yahoo Maps
    DropBox
    Quora
    Reddit
    Spotifyآموزش Djangoاگر برای کنترل و سفارشی سازی کامل و عملکرد وب سایت خود ارزش قائل  باشید. از نتایجی که توسعه دهندگان Django می توانند ارائه دهند خوشحال  خواهید شد. دلیلی وجود دارد که سایت های برتر مانند Pinterest ، Instagram و  NASA جنگو را به جای وردپرس یا سایر گزینه های سنتی انتخاب کرده اند. اگر  می خواهید از قدرت و انعطاف پذیری جنگو استفاده کنید ، از دوره جنگو سایت یودمی ایران استفاده کنید .</description>
                <category>udemyiran</category>
                <author>udemyiran</author>
                <pubDate>Wed, 30 Jun 2021 18:34:53 +0430</pubDate>
            </item>
                    <item>
                <title>Node.js چیست؟ مزایا و معایب Node.js</title>
                <link>https://virgool.io/@udemyiran/nodejs-%DA%86%DB%8C%D8%B3%D8%AA-%D9%85%D8%B2%D8%A7%DB%8C%D8%A7-%D9%88-%D9%85%D8%B9%D8%A7%DB%8C%D8%A8-nodejs-ntnjpabo4v0c</link>
                <description>جاوا اسکریپت محبوب ترین زبان برنامه نویسی همچنین یکی از جهانی ترین  فناوری های توسعه نرم افزار در سرتا سر جهان است.از آن به طور معمول به  عنوان یک ابزار توسعه برای وب استفاده می شود . همچنین این زبان تبدیل به  یک ابزار قدرتمند در حوزه توسعه برنامه های موبایل بر روی پلتفورم های  مختلف مانند Apache Cordova/PhoneGap. React Native. NativeScript,  Appcelerator Titanium شده است.اما زمینه های کاربرد JavaScript به همین جا ختم نمی شود. اخیراً ، در  مورد استفاده از JavaScript برای برنامه نویسی سمت سرور(server-side) ،  سروصدای زیادی به پا شده است. یکی از ابزارهایی که نشانگر این تغییر در  توسعه وب بود ، Node.js است. برای یادگیری JavaScript اینجا کلیک کنید.برای یادگیری Node.js اینجا کلیک کنید.نود چیست(Node.js چیست)Node.js در واقع یک فریم ورک یا کتابخانه نیست . بلکه یکruntime environment است که بر اساس موتور جاوا اسکریپت V8 کروم ساخته شده است.این فناوری اولین بار در سال 2009 توسط رایان دال در کنفرانس سالانه  JSConf اروپا معرفی شد و بلافاصله به عنوان .” جالبترین و محبوب ترین قطعه  نرم افزار در جهان فعلی JavaScript “. شناخته شد.به عنوان یک پروژه منبع باز ، Node.js توسط Joyent ، ارائه دهنده راه حل  های رایانش ابری و خدمات هاستیگ، حمایت مالی شد. این شرکت در تعدادی از  فناوری های دیگر نیز مانند فریم ورک Ruby on Rails سرمایه گذاری کرد و  خدمات هاستیگ به توییتر و LinkedIn ارائه کرد. شرکت نام برده همچنین به یکی  از اولین شرکت هایی تبدیل شد که از Node.js برای برنامه کاربردی تلفن  همراه خود استفاده کرد . این فناوری بعداً توسط تعدادی از رهبران فن آوری  جهان مانند Uber ، eBay ، Walmart و Netflix به تصویب رسید .این ها فقط  تعداد اندکی از اسامی بزرگی هستند که اینجا می آوریم.با این حال ، علاقه به این فناوری طبق آمار Google Trends در سال 2017 به اوج خود رسید و همچنان رو به فزونی است.دانلود آخرین Node.jsپشتیبانی بلند مدت و آخرین نسخه های Node.js را برای Windows و MacOS از اینجا نصب کنید . همچنین ، یک نکته را به خاطر داشته باشید – npm با Node.js همراه یکدیگر توزیع می شود.مستنداتاسناد و راهنماهای شروع را در از اینجا مطالعه کنید و کامل دریابید که Node.js چیست؟ .Node.js و IDE هاتقریباً هر ویرایشگر محبوب کد دارای پشتیبانی و پلاگین هایی برای  JavaScript و Node.js است ، بنابراین فقط نحوه سفارشی سازی IDE خود با توجه  به نیازهای کدنویسیتان مهم است. اما ، بسیاری از توسعه دهندگان از  ابزارهای ویژه VS Code ، Brackets ، Atom و WebStorm بسیار تعریف می کنند .فریم ورک استفاده از میان افزار بر  روی Node.js یک روش رایج است که زندگی توسعه دهندگان را بسیار آسانتر می  کند. از جمله این فریم ورک ها می توان به Express.js ، Meteor ، Sales.js ،  Koa.js ، Keystone.js و Loopback.js اشاره کرد.جال که در مورد مورد اینکه Node.js چیست به اختصار صحبت کردیم می رسیم  به .نقاط قوت و ضعف Node.j که یکی از مباحث جذاب و داغ همیشگی است.برای  رعایت حق انصاف ، ما هر دو مورد را مورد تجزیه و تحلیل قرار داده ایم  .مزایا و معایب Node.js . و در تلاش برای این سوال که Node.js در چه پروژه  هایی بیشتر به کار می آید به این نتایج رسیدیم.مزایای Node.js⊕ تکنولوژی با پشته بسیار قدرتمندجاوا اسکریپت ثابت کرده است که در بین محبوب ترین زبان های برنامه نویسی  یک رهبر بلامنازع است. به نوبه خود ، Node.js به یک نام مستقل در صنعت  تبدیل شده است. با مجموع 368،985،988 دانلود و بیش از 750 مشارکت کننده  جدید همانطور که در گزارش node by number در سال 2018 آمده ، به نظر می رسد این پروژه از همیشه قوی تر است.( آمار امروز مطمعنا از این اعداد بسیار بالاتر است)با استفاده از Node.js برای backend ، به طور خودکار تمام مزایای توسعه full stack جاوا اسکریپت را خواهید برد از جمله:بهره وری بهتر و بهبود عمکرد کلی توسعه دهندهاشتراک کد و استفاده مجدد از آنسرعت و عملکرداشتراک گذاری آسان دانش آن در یک تیمتعداد زیادی ابزار رایگاندر نتیجه ، تیم شما بسیار انعطاف پذیر تر می شود. توسعه زمان بسیار  کمتری می برد . در نتیجه ، شما یک نرم افزار سریع و قابل اعتماد خواهید  ساخت. توسعه دهندگان آموزش دیده در front-end جاوا اسکریپت می توانند با  کمترین تلاش برنامه نویسی سمت سرور را شروع کنند. با زبان یکسان در هر دو  طرف ، می توانید با قرار دادن آن در ماژول ها و ایجاد سطوح جدیدی از انتزاع  ، از کد هم در frontend و هم backend استفاده مجدد کنید.بر خلاف یک باور مشترک ، به عنوان یک stack developer ، به هیچ وجه  محدود به پشته MEAN .(MongoDB ، Express.js ، AngularJS و Node.js)  .نیستید. تنها موردی که در این لیست ضروری است Node.js است. (در JavaScript  هیچ گزینه دیگری برای برنامه نویسی backend وجود ندارد). بقیه فناوری های  موجود در این پشته اختیاری هستند و ممکن است با برخی دیگر از ابزارهای  ارائه دهنده عملکرد مشابه جایگزین شوند. ? ⊕ پردازش سریع و مدل مبتنی بر رویدادNode.js سریع است. این بر کسی پوشیده نیست با نگاهی به مقایسه چگونگی پاسخ به درخواست های همزمان در GO ، PHP ، Java و Node.js ، در این سایت به این نتیجه می رسیم که node سریع است (سریع نه سریع ترین) . چند دلیل برای این نتایج وجود دارد:موتور V8موتور مورد استفاده در پیاده سازی Node.js در اصل برای مرورگر Chrome  ساخته شده است. Chrome +8 که به زبان++C نوشته شده است ، برای کمپایل توابع  نوشته شده در JavaScript به کد ماشین استفاده می شود و کار را با سرعتی  قابل توجه انجام می دهد. فقط معیارهای عملکرد را در وبلاگ V8 بررسی  کنید . به لطف سرمایه گذاری هنگفت گوگل در موتور خود ، V8 هر ساله بهبود  عملکرد را نشان می دهد .در نتیجه Node.js از کل مزایای آن استفاده می کند.ورودی / خروجی غیر مسدود کننده و رسیدگی به درخواست های ناهمزماناین ها باعث شده Node.js قادر به پردازش درخواست ها بدون تأخیر باشد.  در زمینه backend ، پردازش همزمان فرض می کند که کد در یک توالی اجرا می  شود. بنابراین ، هر درخواست یک thread را مسدود می کند .و درخواست های دیگر  را در انتظار می گذارد تا task پایان یابد. پردازش ناهمزمان اجازه می دهد  تا درخواست ها بدون مسدود کردن.( ورودی و خروجی non-blocking I/O). thread  پردازش شوند. بنابراین پس از پردازش درخواست ، می تواند پاسخ را برگردانده و  به ادامه پردازش درخواست ها ادامه دهد. این به Node.js کمک می کند تا از  تک thread حداکثر استفاده را ببرد . در نتیجه زمان پاسخ کوتاه و پردازشها  همزمان است.جنبه دیگر مدل مبتنی بر رویداد است . هنگام استفاده از یک زبان مشترک  برای هر دو سرویس گیرنده / سمت سرور ، همگام سازی بسیار سریع اتفاق می افتد  . که به خصوص برای برنامه های مبتنی بر رویداد و در زمان آنی بسیار مفید  است. Node.js به دلیل ماهیت ناهمگام ، غیر مسدود کننده و تک thread ای ، یک  گزینه محبوب برای بازی های آنلاین . چت ها . کنفرانس های ویدیویی یا هر  راه حلی است که نیاز به داده های مداوم به روز دارد.مثالها خود بازگوی این حقیقت هستند: بسیاری از شرکتهای برجسته فناوری  رویه را به توسعه برنامه های Node.js تغییر داده و پیشرفتهای چشمگیری را  مشاهده کردند – به عنوان مثال PayPal از زمان مهاجرت از جاوا ، متوجه کاهش 35 درصدی زمان پاسخ دهی شده است.⊕فناوری مقیاس پذیر برای ریز خدماتاز آنجا که این تکنولوژی یک ابزار سبک است ، استفاده از Node.js برای  معماری ریز خدمات یک انتخاب عالی است. این سبک معماری توسط مارتین فاولر و  جیمز لوئیس به بهترین شکل توصیف شده است: ” رویکردی برای توسعه یک برنامه  واحدبا مجموعه ای از خدمات کوچک ، هر کدام در پروسه خود اجرا می شوند و با  مکانیسم های سبک ارتباط برقرار می کنند . “بر این اساس ، با شکستن منطق برنامه به ماژول های کوچکتر ، ریز خدمات ،  به جای ایجاد یک هسته یکپارچه بزرگ ، انعطاف پذیری بهتری را ایجاد می کنید و  زمینه را برای رشد بیشتر فراهم می کنند. در نتیجه ، افزودن ریز خدمات در  بالای سرویس های موجود در برنامه بسیار ساده تر از کارگذاری ویژگی های  اضافی در عملکرد اصلی برنامه است.نود مطابق گزارش Node.js User Survey Report 2017 بهترین فناوری  انتخابی هنگام ساخت و استقرار راه حل های اکوسیستم ریز سرویس ها است.  تقریباً نیمی از پاسخ دهندگان از فناوری های مربوط به ریز خدمات .(به خصوص  Docker ، پیشروترین پلت فرم کانتیر بندی نرم افزار). برای ساخت برنامه های  وب Node.js استفاده می کنند :Node.js در Dockerیافته های اخیر نشان می دهد که فناوری های مرتبط با ریز سرویس مانند Docker و Kubernetes در سال 2018 رشد قابل توجهی را در استفاده تجربه کرده اند.  با ارتباط هر میکرو سرویس با پایگاه داده به طور مستقیم از طریق جریان ها ،  امکان عملکرد بهتر و سرعت بسیار بالاتر فراهم می شود.به عنوان مثال ، تغییر Walmart به معماری ریز خدمات با Node.js منجر به مزایای زیر شد :صد در صد Up time (بدون قطعی) در روز در جمعه سیاه (مدیریت بیش از 500 میلیون بازدید صفحه)صرفه جویی تا 40 درصد در سخت افزار و 20-50 درصد در کل عملیات.نمونه بارز دیگری از اینکه Node.js می تواند از نظر عملکرد بهتر از رقبا  عمل کند ، مورد GoDaddy است . با اجرای کمپین تبلیغاتی SuperBowl ، این  شرکت توانست به لطف Node.js فقط با استفاده از 10 درصد سخت افزار خود بیش  از 10.000 request را در ثانیه بدون قطعی مدیریت کند.⊕ اکوسیستم غنی و کاملیک کلمه – npm ،پکیج مدیریت بسته پیش فرض Node.js ، که همچنین به عنوان  بازاری از ابزارهای منبع باز جاوا اسکریپت عمل می کند . و نقش مهمی در  پیشرفت این فناوری دارد. با حدود 836،000 کتابخانه موجود در رجیستری npm در حال حاضر ، و بیش از 10،000 کتابخانه جدید که هر هفته  منتشر می شود ، اکوسیستم Node.js بسیار غنی است. همین آمار نشان می دهد که  97 درصد برنامه های وب مدرن از ماژول های npm تشکیل شده است. و این اثبات  محبوبیت غیر قابل انکار آن در بین توسعه دهندگان است.با چنین تنوع گسترده ای از ابزارهای رایگان که تنها با چند کلیک قابل  دسترس اند . پتانسیل زیادی برای استفاده از Node.js وجود دارد. در عین حال ،  نرم افزارهای منبع آزاد از محبوبیت روزافزونی برخوردار هستند زیرا به شما  امکان می دهند راه حل های جدیدی را ارایه دهید .که هزینه های کلی توسعه و  زمان ورود به بازار را کاهش می دهد.⊕پشتیبانی قوی شرکتهمانطور که در بالا ذکر شد ، توسعه Node.js توسط Joyent پشتیبانی شد. در  سال 2015 ، بنیاد Node.js برای .” آسان کردن پذیرش گسترده آن و کمک به  تسریع در توسعه Node.js “. ایجاد شد. ”IBM ، Microsoft ، PayPal ، Fidelity و SAP اعضای بنیانگذار این سازمان شدند.لیست سازمانهایی که از Node.js در تولید استفاده می کنند به طور مداوم  در حال رشد است. در حال حاضر تقریباً سیصد شرکت شناخته شده از جملهPayPal ،  Medium ، Trello ، Uber و Zendesk را شامل می شود.تعداد بسیار کمی از پروژه های منبع باز از چنین پشتیبانی قوی از شرکت  های برجسته جهان برخوردار بوده اند. و این خود از پتانسیل بالای Node.js  سخن می گوید.⊕پشتیبانی یکپارچه از JSONاگرچه سایر فناوری های backend مانند PHP و Ruby on Rails می توانند از  فرمت JSON برای برقراری ارتباط استفاده کنند . Node.js این کار را بدون  تبدیل بین مدل های باینری انجام می دهد و از JavaScript استفاده می کند.  این به ویژه در مواردی که شما نیاز به ایجاد RESTful API برای پشتیبانی از  پایگاه داده NoSQL دارید ، مانند MongoDB . (حرف M در پشته MEAN) .بسیار  مفید است. این ارتباط یکپارچه با یکی از اصلی ترین استانداردهای انتقال  داده از دیگر مزایای اکوسیستم جاوا اسکریپت است که Node.js از آن بهره می  برد.اشکالات Node.jsΘ مشکل عملکرد bottlenecks در محاسبات سنگینبزرگترین نقص Node.js حتی در حال حاضر عدم توانایی پردازش وظایف متصل به  پردازنده است. اما ، برای درک اینکه ریشه های این موضوع چیست ، ما به کمی  پیش زمینه نیاز داریم. بیایید با اصول اولیه خود JavaScript شروع کنیم.همانطور که می دانیم ، Node.js یکruntime environment است که JavaScript  را در سمت سرور اجرا می کند. جاوا اسکریپت به عنوان یک زبان برنامه نویسی  frontend ، از یک thread برای پردازش سریع task ها استفاده می کند. برای  اجرا نیازی به Threading نیست ، زیرا task های موجود در JavaScript سبک  هستند و بار کمی روی پردازنده می گذارند.با بازگشت به Node.js ، اکنون می دانیم که چرا این موضوع تک Thread در  نظر گرفته می شود: زیرا JavaScript را که تک رشته ای(single thread)است  پردازش می کند.مشکل زمانی اتفاق می افتد که Node.js یک وظیفه متصل به پردازنده را  دریافت می کند.هر زمان که یک درخواست سنگین به حلقه رویداد(event loop) می  آید ، Node.js تمام قدرت پردازنده موجود را تنظیم می کند تا ابتدا آن را  پردازش کند . و سپس به سایر درخواست های در صف پاسخ دهد. این امر منجر به  پردازش کند و تاخیر کلی در حلقه رویداد می شود . به همین دلیل Node.js برای  محاسبات سنگین توصیه نمی شود.با این حال ، در سال 2018 ، multithreading در Node.js به عنوان یک  ویژگی آزمایشی با به روزرسانی 10.5.0 معرفی شد .از ویژگی جدیدی به نام worker threads می توان برای استفاده از رشته های اضافی از thread pool ، برای انجام  وظایف متصل به پردازنده استفاده کرد. اما این کار فقط در ماشین های دارای  چندین هسته قابل انجام است . زیرا Node.js به شما امکان استفاده از یک هسته  برای یک thread را می دهد. این بدان معناست که پردازش های سنگین موازی را  می توان روی یک رشته دیگر اجرا کرد. این ویژگی در نسخه 12 Node.js همچنان  آزمایشی است اما به طور قابل توجهی بهبود یافته است.(در زمان نوشتن این  مقاله بهبود بیشتری نیز یافته ورژن 16.3.0)Θ مشکل Callback HellNode.js به دلیل ماهیت asynchronous خود ، به شدت به callbacks متکی است  . function هایی که بعد از پایان هر کار در صف اجرا می شوند. نگه داشتن  تعدادی Task در صف پس زمینه ، هرکدام با callback خود ، می تواند منجر به  مشکلی به نام callback hell شود ، که به طور مستقیم بر کیفیت کد تأثیر می گذارد. به عبارتی ساده ، این  ” .وضعیتی است که callback در چندین callback دیگر در چندین سطح عمیق قرار  می گیرد .و به طور بالقوه درک و حفظ کد را دشوار می کند. “با این حال ، این اغلب نشانه ضعف در برنامه نویسی و عدم تجربه به ویژه  با JavaScript و Node.js تلقی می شود. همانطور که در callbackhell.com نشان  داده شده است ، کدی که در بالا نشان داده شده است ، فقط در چند مرحله قابل  ویرایش و ساده سازی است .Θ نابالغی ابزارگرچه ماژول های اصلی Node.js کاملاً پایدار هستند و می توان آنها را  بالغ دانست. اما ابزارهای زیادی در رجیستری npm وجود دارد که یا از کیفیت  پایینی برخوردارند و یا به درستی مستند و آزمایش نشده اند. علاوه بر این ،  رجیستری به اندازه کافی ساختار درستی ندارد تا بتواند ابزارها را بر اساس  رتبه بندی یا کیفیت آنها ارائه دهد. از این رو ممکن است یافتن بهترین راه  حل برای اهداف خود بدون اینکه بدانید به دنبال چه چیزی بگردید دشوار باشد .این مورد که اکوسیستم Node.js عمدتا منبع باز است ، تأثیر خود را نیز  دارد. در حالی که کیفیت فناوری اصلی Node.js توسط Joyent و سایر عوامل اصلی  تامین می شود . ممکن است بقیه ابزارها فاقد کیفیت و استانداردهای لازم  کدنویسی تعیین شده توسط سازمان های جهانی باشند.Θ افزایش تقاضا برای متخصصان باتجربهبر خلاف این باور مشترک ، همه توسعه دهندگان JavaScript توسعه دهنده  Node.js نیستند. تسلط بر برنامه نویسی جاوا اسکریپت در سمت سرور به تلاشی  قابل توجه و پیشینه خاص در توسعه backend نیاز دارد. به دلیل سختی زیاد این  پروسه، تعداد مهندسان Node.js به طور قابل توجهی کمتر از تعداد کل متخصصان  JS است.با ادامه رشد سر زبان افتادن نام Node.js ، تقاضا برای متخصصان باتجربه در این زمینه نیر افزایش می یابد.بنابراین ، با وجود میلیون ها توسعه دهنده جاوا اسکریپت ، یافتن یک  متخصص Node.js ماهر برای پروژه کاری دشوار است. در این حالت ، مطمئناً نمی  خواهید جستجوی خود را فقط به یک کشور محدود کنید. یافتن استعداد های غیر  بودمی در حوزه IT این روز ها به یک امر نرمال تبدیل شده.Node.js در مقابل Ruby on Rails در مقابل Django در مقابل Symfonyفناوری های زیادی وجود ندارد که بتواند با محبوبیت Node.js یا تقاضای  بازار آن رقابت کند. با این حال ، اگر به گزینه های برنامه نویسی سمت سرور  نگاه کنیم . حداقل سه ستاره درخشان دیگر را در آسمان می بینیم. این ها Ruby  on Rails ، Django و Symfony است. بیایید ببینیم که آیا آنها هم مزایای  Node.js را دارند . آیا اشکالات آن را به همراه دارند یا خیر.مقایسه با Railsبه زبانی ساده اما قوی و به خاطر در دسترس بودن Gem ها.(اکوسیستم سفارشی بسته های اختصاصی Rails. ). مشهور است . Ruby خود یک زبان بصری و مبتدی پسند است که دارای جامعه ای حامی و اختصاصی است که خدماتشان را به RubyGems ارایه می دهند. Rails برای توسعه سریع و  نمونه سازی ایجاد شده است . اگرچه توسط شرکت هایی مانند GitHub ، Twitter و  Airbnb با موفقیت مورد استفاده قرار می گیرد و دامنه گسترده ای از موارد  استفاده خود را ثابت می کند.اما قابلیت انتقال داده آن بسیار چشمگیر است .  برخلاف Node.js ، که از بسته های اضافی استفاده می کند ، Rails از قبل  دارای یک ویژگی است که به شما امکان می دهد به راحتی و به طور ثابت پایگاه  داده خود را دستکاری- ایجاد کنید.چه زمانی باید از Rails به جای Node.js استفاده کنید؟ Rails نمی تواند  با عملکرد و مقیاس پذیری Node رقابت کند . با این حال Rails می تواند  انتخاب بهتری برای توسعه سریع باشد. Node.js برای دستیابی به آن سرعت توسعه  مجبور است از ماژول های شخص ثالث استفاده کند . اما روبی همه آن را در خود  دارد. در مورد زبان ، هیچ کدام مزیت مشخصی ندارد.در حالی که Node.js  تقاضای زیادی در بازار دارد اما متخصص کمی دارد .افراد متخصص حوزه Ruby از  ابتدا چندان زیاد نبوده.مقایسه با جنگوجنگو یک فریم ورک وب در پایتون است ، سریعترین زبان برنامه نویسی در حال رشد با توجه به داده های StackOverflow .و به عنوان ابزاری برای کمال گرایان که می خواهند به سرعت هر چه تمام تر  کار را با ساختاری عالی , امن و قابل درک به اتمام برسانند عرضه می شود.  جنگو ، همراه با پایتون ، دارای منحنی یادگیری ملایم تری هستند. اگرچه کار  با Node.js به دانش گسترده JavaScript نیاز دارد . اما جنگو یک فناوری است  که می شود گفت همه چیز از ابتدا در دسترس است. یک پنل مدیریت داخلی دارد که  به راحتی پایگاه داده ها و قالب های شما را به روز می کند و نگه می دارد  تا کار شما را تسریع و آسان کند.چه زمانی باید از جنگو به جای Node.js استفاده کنید؟ در مقایسه با  Node.js ، جنگو ابزاری مناسبتر برای مبتدیان است. به غیر از خود زبان ، هیچ  دلیل واقعی دیگری برای انتخاب یکی بر دیگری وجود ندارد. این بیشتر بستگی  به موارد خاص استفاده و راحتی و تجربه شما با جاوا اسکریپت یا پایتون است.مقایسه با Symfonyیک فریم ورک PHP است که به طور خودکار با بیش از 20 سال مستندات و یک جامعه فعال و گسترده ارایه می شود. بیش از 80 درصد وب توسط PHP و با پروژه هایی مانند Facebook . Baidu یا هر وب سایت دیگری  که در وردپرس اجرا می شوند تأمین می شود. در حالی که Symfony فقط یکی از  فریم ورک های PHP موجود در بازار است .اما به طور چشمگیری پایدار ، قابل  توسعه و مناسب برای پروژه های بزرگ است.چه زمانی باید از Symfony به جای Node.js استفاده کنید؟ Symfony به طور  طبیعی از ویژگی های CMS مانند قالب ها و داشبورد مدیریت پشتیبانی می کند که  به آن امکان می دهد وبلاگ ها . سایت های خبری و فروشگاه های تجارت  الکترونیک را به راحتی اداره کند. برای مثال می توان به ، Dailymotion ،  National Geographic و Yahoo Answers اشاره کرد.کلام آخربدیهی است که با تمام مزایا و معایب ذکر شده در مورد Node.js . این  فناوری یک راه حل برای حل همه مشکلات نیست. اما Java ، .Net frame یا PHP  نیز این گونه نیستند. با این حال ، موارد خاصی وجود دارد که هر یک از فن  آوری های ذکر شده در آن بهترین عملکرد را دارند. در مورد Node.js ، برنامه  ها در زمان آنی با ورودی و خروجی شدید ، نیاز به سرعت و مقیاس پذیری دارند  بهترین کارایی را دارد.این ممکن است شبکه های اجتماعی . برنامه های بازی . گفتگوی زنده یا  انجمن ها و همچنین نرم افزار بورس اوراق بهادار یا سرورهای تبلیغاتی باشد ،  جایی که سرعت همه چیز است. سریع و مقیاس پذیر ، Node.js فناوری انتخابی  برای دستگاه های اینترنت اشیا و برنامه های کاربردی با زمان آنی است.Node.js جاوا اسکریپت را به یک فناوری full stack برای توسعه برنامه های  وب تبدیل کرده است. Node.js به دلیل معماری non-blocking ، برای پخش ویدئو  و صدا ، بارگذاری چندین پرونده و data streaming به خوبی کار می کند.اخیراً ، Node.js بصورت فعال در نرم افزارهای سطح سازمانی مورد استفاده  قرار می گیرد. در حالی که هنوز بحث های زیادی در این باره وجود دارد ،  بسیاری از شرکت های بزرگ و سازمان های جهانی مانند Capital One و ناسا  Node.jsرا به کار گرفته اند. و اکوسیستم Node.js با ابزارهایی مانند IBM  API Connect ، NodeSource ، Red Hat OpenShift ، و سایر ابزارها به بلوغ  خود ادامه می دهد. </description>
                <category>udemyiran</category>
                <author>udemyiran</author>
                <pubDate>Tue, 22 Jun 2021 03:22:14 +0430</pubDate>
            </item>
                    <item>
                <title>گیت چیست؟ یک تعریف مقدماتی از سیستم کنترل نسخه Git</title>
                <link>https://virgool.io/@udemyiran/%DA%AF%DB%8C%D8%AA-%DA%86%DB%8C%D8%B3%D8%AA-%DB%8C%DA%A9-%D8%AA%D8%B9%D8%B1%DB%8C%D9%81-%D9%85%D9%82%D8%AF%D9%85%D8%A7%D8%AA%DB%8C-%D8%A7%D8%B2-%D8%B3%DB%8C%D8%B3%D8%AA%D9%85-%DA%A9%D9%86%D8%AA%D8%B1%D9%84-%D9%86%D8%B3%D8%AE%D9%87-git-pieuugtsbqe6</link>
                <description>گیت یک سیستم کنترل  نسخه(version control system) است که توسعه دهندگان از آن در سراسر دنیا  استفاده می کنند. و به شما کمک می کند نسخه های مختلف کد برنامه خود را  ردیابی کنید . و با توسعه دهندگان دیگر همکاری کنید.اگر بر روی یک پروژه برای بازه ای طولانی کار می کنید ، ممکن  است بخواهید ردیابی کنید که چه تغییراتی توسط چه کسی و در چه زمانی انجام  شده است. این مساله در صورت پیش آمدن اشکالی در کد ، اهمیت بسیار بیشتری  پیدا می کند! Git می تواند در این زمینه به شما کمک کند.اما Git در  ابتدا می تواند کمی ترسناک و گیج کننده باشد. خصوصا زمانی که برای اولین  بار یادگیری آن را شروع می کنید ، بنابراین در این مقاله من Git را به روشی  قابل درک برای شما معرفی می کنم. ما موضوعاتی مانند مخازن ، تعهدات ، شاخه  ها .(repositories, commits, branches).اینکه git چیست؟ و github چیست و  موارد دیگر را پوشش خواهیم داد . پس بیایید شروع کنیم!گیت چیست؟Git یک سیستم کنترل نسخه است که شما آن را روی رایانه خود نصب می کنید.  اگر می خواهید با سایر توسعه دهندگان در یک پروژه کد نویسی همکاری کنید یا  روی پروژه خود کار کنید ، استفاده از Git یک صرورت است.برای بررسی اینکه آیا Git را بر روی رایانه خود نصب کرده اید می توانید از این دستور در ترمینال خود استفاده کنید:git --versionاگر Git را قبلاً نصب کرده باشید ، می بینید که چه نسخه ای از آن را دارید. اگر Git را نصب نکرده اید ، می توانید به وب سایت Git مراجعه کرده و به راحتی دستورالعمل های نصب را برای دانلود و نصب نسخه صحیح سیستم عامل خود دنبال کنید.گیت هاب چیست؟گیت هاب محصولی است که به شما امکان می دهد پروژه های Git خود را در جایی  (به عبارتی در فضای ابری) در یک سرور از راه دور میزبانی کنید.مهم است که به یاد داشته باشید که گیت همان GitHub نیست. GitHub فقط یک  سرویس میزبانی است. شرکت های دیگری هستند که خدمات میزبانی را ارائه می  دهند که در واقع همان کار GitHub را انجام می دهند ، مانند Bitbucket و  GitLab.نحوه شروع کار با Gitترمینال در مقابل رابط کاربری گرافیکیشما هم می توانید با تایپ دستورات در ترمینال از Git استفاده کنید . هم  می توانید از رابطهای کاربری گرافیکی (GUI) مانند Sourcetree یا GitKraken  استفاده کنید.اگر ترمینال را انتخاب کنید ، باید تحقیق و مطالعه کنید که به کدام دستورات Git نیاز دارید.خوشبختانه شما مجبور نیستید اینها را دانه به دانه یاد بگیرید و حفظ  کنید . به جز تعداد انگشت شماری از دستوراتی که معمولاً استفاده خواهید کرد  ، بقیه موارد را می توانید هر زمان که احتیاج داشتید با یک جست و جوی ساده  به دست بیاورید. (این کاری است که اکثر توسعه دهندگان انجام می دهند ، حتی  کسانی که چندین دهه تجربه دارند). Git مستندات مفصلی را در وب سایت خود ارائه می دهد .اگر استفاده از رابط کاربری گرافیکی را انتخاب کنید ، اقدامات مختلفی که باید انجام دهید به صورت تصویری نمایش داده می شود.چه استفاده از ترمینال را انتخاب کنید چه رابط کاربری گرافیکی، باید اصول کار Git را درک کنید تا با اطمینان از آن استفاده کنید.برای ادامه مقاله git چیست ، ما مثالهایی را با استفاده از Git در  ترمینال با شما به اشتراک خواهیم گذاشت. اما اگر از GUI استفاده کنید ،  مراحلی که ما به اشتراک می گذاریم بسیار شبیه به هم هستند. چرا که هسته کار  یکی است.نحوه تهیه پوشه پروژه خود در Gitبرای استفاده از Git باید پروژه ای داشته باشیم که قصد داریم نسخه آن را  کنترل کنیم. این می تواند یک پروژه جدید باشد یا یک پروژه ای که از قبل  روی آن کار کردیم.اگر این یک پروژه جدید است ، پس ما باید یک پوشه پروژه جدید ایجاد کنیم  (نکته: ما می توانیم از دستور mkdir برای ساخت پوشه استفاده کنیم ) و سپس  به پوشه آن پروژه در ترمینال برویم .اگر بخواهیم یک پروژه موجود را انتخاب کنیم ، به سادگی به پوشه آن پروژه از طربق ترمینال می رویم.در مثالی که ما می زنیم، یک پوشه برای پروژه جدید ایجاد خواهیم کرد به نام novel.نحوه ایجاد Git Repositoryوقتی وارد پوشه پروژه خود شدیم ، برای شروع استفاده از Git باید مخزنی را با استفاده از دستور git init ایجاد کنیم .هنگامی که دستور را با تایپ کردن آن در ترمینال و فشار دادن enter اجرا  می کنیم .به نظر می رسد که اتفاق خاصی نیفتاده است. اما اشتباه نکنید ، Git  گاهی اوقات بسیار ساکت و بی سر و صدا عمل می کند اما در پشت صحنه اقدامات  زیادی را انجام می دهد.برای اینکه ببینیم Git در پشت  صحنه چه کاری انجام داده است ، باید فایل های مخفی خود را مشاهده کنیم.  مطمئن شوید که پوشه پروژه خود را در سیستم فایل سیستم عاملتان باز می کنید.  اگر در سیستم عامل Mac هستید می توانید Command + Shift + Dot را وارد  کنید تا بتوانید فایل های مخفی را در سیستم فایل خود مشاهده کنید. اگر از  سیستم عامل Windows استفاده می کنید ، می توانید تنظیمات نمای خود را تغییر  دهید تا بتوانید پرونده های مخفی را در سیستم خود مشاهده کنید.به منظور مشاهده فایل های مخفی با استفاده از ترمینال می توانیم از دستور زیر استفاده کنیم :ls -aچیزی که اکنون باید مشاهده کنیم پوشه ای به نام git. در داخل پوشه پروژه  ماست. این همان چیزی است که مخزن (Repository) ما را نشان می دهد.Git Repository چیست؟Repository ما همان پوشه git. در داخل پوشه پروژه ما است. آن کلیه  تغییرات ایجاد شده در فایل های پروژه ما را ردیابی کرده و آن تاریخ را با  گذشت زمان ثبت می کند.مخزنی (repository) که ما در رایانه خود داریم به عنوان مخزن محلی (local repository) شناخته می شود .پیش از این ما به خدمات میزبانی مانند GitHub ، GitLab و Bitbucket  اشاره کردیم. هنگامی که ما مخزن محلی خود را به یکی از این سرویس ها وارد  می کنیم( همان آپلود کردن به آن سرویس)، مخزنی که در این سرویس در فضای  ابری قرار می گیرد به عنوان مخزن از راه دور (remote repository) شناخته می  شود .استفاده از یک مخزن از راه دور برای اینکه بتوانید با افراد  دیگر بر روی پروژه ای همکاری کنید . همچنین در صورت بروز اتفاقی برای لپ  تاپ یا رایانه ما ، از پروژه های خود بک آپ داشته باشید ،بسیار مهم است.نحوه همکاری با سایر توسعه دهندگان با استفاده از Gitاگر توسعه دهنده دیگری بخواهد در پروژه ما با ما همکاری کند ، می تواند  remote repository را از سرویس میزبانی که شما پروژه تان را در آن بارگذاری  کرده اید ، Clone (یا به عبارت دیگر دانلود ) کند.این به آنها امکان می دهد پروژه را روی رایانه خود نیز داشته باشند. پس  از پروژه موجود در رایانه آنها نیز به عنوان مخزن محلی (local repository)  یاد می شود.در یک پروژه با چندین توسعه دهنده ، هر کدام یک مخزن محلی (local  repository) در رایانه خود دارند. و یک remote repository وجود دارد که همه  آنها به آن کمک می کنند و از آن برای به اشتراک گذاشتن کارهای خود استفاده  می کنند.گیت چگونه تغییرات را ردیابی می کند؟به منظور ذخیره نسخه های مختلف پروژه خود در Git ، ما از commits استفاده می کنیم.Git Commit چیست؟commit یک نسخه از پروژه شما می باشد. این یک نسخه مستقل از پروژه شما  است .پس به کلیه فایل ها و پوشه هایی که بخشی از آن نسخه هستند اشاره دارد.چگونه می توانم در Git یک commit بسازم؟برای درک  چگونگی ساخت commit ، باید در مورد سه فضای مختلف درون گیت- working  directory, staging area و commit history – اطلاعات کسب کنیم.working directory اساسا همان محتویات پوشه پروژه ما ( یک دایرکتوری  همان فولدر است) را بیان می کند. در واقع نوعی محل کار است که در آن می  توانیم پرونده هایی را به پروژه خود اضافه ، ویرایش و حذف کنیم.staging area و commit history بخشی از مخزن(repository) ما هستند.staging area مانند  یک فضای پیش نویس برای پروژه ما است. جایی است که می توانیم نسخه های به  روز شده فایل ها را اضافه کنیم یا فایل ها را حذف کنیم تا آنچه را می  خواهیم در commit بعدی خود .(نسخه بعدی پروژه خود). قرار دهیم ، انتخاب  کنیم. در git. پوشه staging area با فایلی به نام index نمایش داده می شود.و در نهایتcommit  history جایی است که commit های ما پس از ساخته شدن ذخیره می شوند . در  پوشه hot. تاریخچه commit ها با پوشه ای به نام objects نمایش داده می شود.یک نمونه رایج از نحوه کارکرد Gitمرحله 1 – ویرایش فایل هااگر قصد شروع پروژه جدیدی دارید ، اولین فایل را در پروژه جدید خود  ایجاد می کنید.ما در پروژه ی مثال خود با پوشه ای به نام novel یک فایل  متنی ساده به نام ایجاد chapter1 می کنیم. ما می توانیم این کار را با  استفاده از ویرایشگر متن یا مستقیماً در ترمینال انجام دهیم. در این مثال  ما این کار را مستقیماً در ترمینال با تایپ touch chapter1.txt انجام می  دهیم .اگر یک پروژه ای را از قبل در دسترسی دارید ، برخی از فایل  های موجود را ویرایش می کنید. فایل های جدید اضافه می کنید یا فایل ها را  حذف می کنید.بعد ، می توانیم از دستور git status استفاده کنیم . این دستور وضعیت  working directory وstaging area را به ما نشان می دهد .و اگر تفاوتی بین  این دو وجود داشته باشد به ما می گوید.در مثال ما ، فقط یک فایل جدید به پروژه جدید خود اضافه کردیم. هنگامی  که از دستور git status استفاده می کنیم ، Git به ما می گوید که ما یک فایل  ردیابی نشده در فهرست کار خود داریم .و باید ازدستور git add برای وارد  کردن آن در commit ، استفاده کنیم. که ما را به مرحله 2 می رساند.مرحله 2 – اضافه کردن فایل ها به Staging Areaما می توانیم از دستور git add برای اضافه کردن فایل های جدید یا به روز  شده درStaging Area استفاده کنیم. اگر تصمیم گرفتیم که نمی خواهیم برخی از  پرونده هایی را که تغییر داده ایم در commit بعدی خود قرار دهیم.می توانیم  به راحتی مطمئن می شویم که آن پرونده های خاص را به قسمت Staging Area  اضافه نمی کنیم.در مثال ما ، ما با استفاده ازدستور git add و دادن نام فایل ، تنها  فایلی را که در پروژه خود داشتیم به منطقه staging اضافه کردیم . پس اگر  اکنون از دستور git status استفاده کنیم می بینیم که Git به ما خواهد گفت  که فایل خود را به Staging Area اضافه کرده ایم.این نکته را نیز به یاد داشته باشید که فایل های شما از working directory به staging area کپی می شوند و جا به جا نمی شوند.مرحله 3 – انجام commitسرانجام ، برای انجام commit از دستور git commit با گزینه m- استفاده می کنیم .سپس یک متن برای commit خود می گذاریم مثلا:git commit -m &amp;quotin avalin commit ma ast&amp;quot.سپس می توانیم از دستور git log برای لیست کردن همه commit هایی که در  پروژه خود داریم به ترتیب زمانی معکوس استفاده کنیم. در مثال ما فقط یک  commit داریم.اکنون ما اولین commit خود را در پروژه خود انجام داده ایم! به عبارت دیگر ما نسخه اول پروژه خود را ذخیره کرده ایم.commit ها دارای یک هش تشکیل شده از 40 کاراکتر هستند . commit hash  ترکیبی از 40 حرف و اعداد است .که به عنوان یک نام برای commit و یا یک راه  برای اشاره به آن استفاده می شود.همچنین می توانیم اطلاعاتی از جمله اینکه چه کسی commit را انجام داده  است . چه زمانی commit انجام شده است و پیام commit را مشاهده کنیم.Commit History در Git چیست؟repository متشکل از چندین commit است. و در ساده ترین حالت هر commit  دارای یک commit اصلی است که همان commit ای است که قبل از آن ساخته شده.  به همین دلیل است که یک commit به commit که قبل از آن در تصویر زیر آمده  اشاره می کند.مباحث پیچیده تری نیز وجود دارد که وارد حوزه چندین شاخه و ادغام می شویم . اما از حوصله این مقاله خارج است.سخن آخر، Branch در Git چیست؟شاخه(Branch) یک اشاره گر به commit است. branch پیش فرض در Git با نام master یا main شناخته می شود .با رفتن به پوشه git. و سپس باز کردن پوشه refs،سپس باز کردن پوشه heads  و در آخر باز کردن فایلی به نام master ، می توانیم ببینیم که branch یک  اشاره گر به یک commit است . درون این پرونده خواهیم دید که یک هش وجود  دارد. این هش همان هش commit ما است که branch در حال اشاره کردن به آن  است.ما می توانیم یک بار  دیگر از دستور git log برای لیست کردن همه commit های در repository خود  استفاده کنیم و خواهیم دید که آن هش کنار commit ی که برچسب master بغل آن  در پرانتز است ، قرار می گیرد.در ترمینال با تایپ کردن دستور git branch می توان لیستی از همه branch ها را مشاهده کرد .شاخه ها واقعاً مهم هستند زیرا همکاری با دیگران و کار همزمان روی چندین ویژگی یا قسمتهای مختلف پروژه شما را بسیار آسان می کند.با ثبت commit های بیشتر ، branch ای که در آن هستیم به روز می شود تا به آخرین commit ثبت شده اشاره کند. ?اشارهگرmasterbranchدرحالاشارهبهآخرینcommitما در پایان اگر می خواهید صفر تا صد git را بیاموزید حتما از دوره جامع git یودمی ایران استفاده کنید زیرا این تنها یک لایه سطحی از آنچه git ارایه می دهد بود.</description>
                <category>udemyiran</category>
                <author>udemyiran</author>
                <pubDate>Sat, 19 Jun 2021 00:13:37 +0430</pubDate>
            </item>
                    <item>
                <title>ری اکت چیست؟ آیا باید آن را یاد بگیریم؟</title>
                <link>https://virgool.io/@udemyiran/%D8%B1%DB%8C-%D8%A7%DA%A9%D8%AA-%DA%86%DB%8C%D8%B3%D8%AA-%D8%A2%DB%8C%D8%A7-%D8%A8%D8%A7%DB%8C%D8%AF-%D8%A2%D9%86-%D8%B1%D8%A7-%DB%8C%D8%A7%D8%AF-%D8%A8%DA%AF%DB%8C%D8%B1%DB%8C%D9%85-ppkr9ooaiziv</link>
                <description>React JS چیست؟React JS یک کتابخانه جاوا اسکریپت است که در توسعه وب برای ساخت عناصر  تعاملی در وب سایت ها استفاده می شود. اما اگر با کتابخانه های JavaScript  یا خود JavaScript آشنا نیستید ، این تعریف مفیدی نیست. بنابراین بیایید یک  قدم به عقب برگردیم و ابتدا با این اصطلاحات آشنا شویم.جاوا اسکریپت چیست؟می توانید همه چیز درباره JavaScript را به طور کامل در اینجا مطالعه کنیداما خلاصه آن می شود:جاوا اسکریپت (یا JS) یک زبان برنامه نویسی است که برای ایجاد و کنترل محتوای وب های پویا استفاده می شود. محتوای وب پویا شامل مواردی مانند گرافیک های متحرک ، نمایش اسلایدهای عکس و فرم های قابل تعامل است.هر زمان شما از وب سایتی بازدید می کنید و چیزی روی صفحه شما جابجا  می شود ، به روز می شود یا به شکلی دیگر تغییر می کند بدون اینکه شما صفحه  را دستی ریفرش کنید ، احتمال بسیار زیادی وجود دارد که JS زبانی باشد که آن  را تحقق می بخشد.اصلا بگذارید با یک جمله این زبان را توصیف کنیم: جاوا  اسکریپت یک زبان برنامه نویسی فوق العاده مهم است که برای افزودن ویژگی های  متحرک و تعاملی به وب سایت ها یا برنامه های وب استفاده می شود (فراموش  نکنید اسکلت اصلی HTML و CSS است)جاوا  اسکریپت یک زبان برنامه نویسی فوق العاده مهم است که برای افزودن ویژگی های  متحرک و تعاملی به وب سایت ها یا برنامه های وب استفاده می شودکتابخانه جاوا اسکریپت چیست؟از تعریف بالا ، می توانید ببینید که چگونه JavaScript نقش مهمی در  توسعه وب سایت و برنامه های وب دارد. اما زمان هایی پیش می آید که به  JavaScript برای انجام توابع تکراری نیاز دارید. مواردی مانند جلوه های  انیمیشن یا ویژگی های تکمیل خودکار نوار جستجو . کد نویسی مجدد این  عملکردها برای هر باری که اتفاق می افتند به مانند “اختراع مجدد چرخ” می  ماند. این جایی است که کتابخانه های جاوا اسکریپت وارد می شوند.کتابخانه های جاوا اسکریپت مجموعه ای از کدهای جاوا اسکریپت از قبل  نوشته شده اند که می توانند برای کارهای معمول JS استفاده شوند . به شما  این امکان را می دهد که فرآیند کدنویسی دستی (غیرضروری) را به راحتی بدون  نوشتن کل کد پشت سر بگذارید. اگر یک تابع جاوا اسکریپت وجود داشته باشد که  شما مرتباً به کدنویسی کردن آن احتیاج دارید (و سایر توسعه دهندگان قبل از  شما برای انجام پروژه های خودشان به آن نیاز داشتند) . احتمالاً یک  کتابخانه JS برای انجام آن کار وجود دارد. واضح گفتم؟خوب ، پس بیایید به React برگردیم. بسیاری کتابخانه های مختلف JS وجود  دارد و React JS یکی از آنهاست . اما چه چیزی آن را منحصر به فرد می کند؟  React JS برای چه استفاده می شود . و چرا شما باید React JS را یاد بگیرید؟  و آیا از سایر کتابخانه های جاوا اسکریپت بهتر است؟چرا توسعه دهندگان جاوا اسکریپت از React JS استفاده می کنند؟React یک کتابخانه جاوا اسکریپت است که در زمینه کمک به توسعه دهندگان  در ایجاد رابط های کاربری ساخته شده . از نظر وب سایت ها و برنامه های وب ،  UI مجموعه ای از منوهای روی صفحه ، نوارهای جستجو ، دکمه ها و هر چیز  دیگری است که کسی برای استفاده از یک وب سایت یا برنامه با آن تعامل دارد.نکته: افراد زیادی را دیده ام که می پرسند React مربوط به front-end است یا back-end? پاسخ : front-end. با یادآوری جنبه “روی صفحه” بودن هر رابط کاربری ، می  توانید این مسئله را راحتتر به خاطر بسپارید. React به طور انحصاری برای  ساخت برنامه های “client side”” (ساخت چیزهایی که کاربر در صفحه مرورگر خود  مشاهده می کند.) استفاده می شود ، که باعث می شود React JS یک کتابخانه  front-end باشد.قبل از React چه بود؟قبل از React JS ،  توسعه دهندگان با استفاده از “vanilla JavaScript”یا با پیشینیان React که  تمرکز کمتری بر رابط کاربری داشتند مانند jQuery سر و کله می زدند.این به  معنای زمان توسعه بسیار طولانی تر و فرصت های فراوان برای به وجود آمدن خطا  و اشکال بود.بنابراین،در سال 2011 ، مهندس فیس بوک ، جوردن والک ، React JS را ساخت که تمرکز ویژه آن بر روی بهبود رابط کاربری بود.علاوه بر ارائه کد کتابخانه قابل استفاده مجدد React (صرفه جویی در زمان  توسعه و کاهش احتمال خطاهای کدنویسی) . React دارای دو ویژگی اساسی است که  جذابیت آن را برای توسعه دهندگان JavaScript بیشتر می کند:JSX
Virtual DOMبرای درک بهتر React JS و اینکه چرا باید از آن استفاده کنید ، بیایید نگاهی به هر دو بیندازیم.JSXدر قلب هر وب سایتی اسناد HTML وجود دارد. مرورگرهای وب این اسناد را می  خوانند و در کامپیوتریا موبایل شما آن را به عنوان صفحات وب نمایش می  دهند. در طی این فرآیند ، مرورگرها چیزی به نام Document Object Model  (DOM) ایجاد می کنند. یک درخت که نمایش دهنده ی نحوه چیدمان صفحه وب پیش  رویتان است. توسعه دهندگان می توانند محتوای پویا را با تغییر DOM با  زبانهایی مانند JavaScript به پروژه های خود اضافه کنند.JSX (مخفف JavaScript eXtension) یک افزونه برای React است که به توسعه  دهندگان این امکان را می دهد تا DOM را به مانند کد شکل HTML دستکاری کنند.  و از آنجا که پشتیبانی مرورگر React JS به همه مرورگرهای وب مدرن گسترش می  یابد. JSX با هر مرورگری که ممکن است با آن کار کنید سازگار است.استفاده از JSX برای تغییرات در DOM منجر به بهبود قابل توجه عملکرد  سایت و کارایی توسعه می شود. چطور؟ این مربوط می شود به ویژگی بعدی React  یعنی همان Virtual DOM.Virtual DOMاگر از React JS (و JSX) استفاده نمی کنید .وب سایت شما برای به  روزرسانی DOM خود از HTML استفاده می کند (فرایندی که باعث می شود کاربر  بدون استفاده دستی از ریفرش تغییرات را روی صفحه ببیند.). این برای وب سایت  های ساده و ثابت خوب کار می کند . اما برای وب سایت های پویا که شامل  تعامل سنگین کاربر هستند ، می تواند به یک مشکل تبدیل شود (زیرا هر بار که  کاربر بر روی ویژگی ای که صفحه را ریفرش می کند کلیک کند کل DOM نیاز به  بارگیری مجدد دارد ).با این حال ، اگر یک توسعه دهنده از JSX برای دستکاری و به روزرسانی DOM  خود استفاده کند ، React JS چیزی به نام Virtual DOM ایجاد می کند.  Virtual DOM (همانطور که از نام آن پیداست) یک کپی از DOM سایت است و React  JS از این نسخه استفاده می کند تا ببیند هنگام وقوع یک رویداد چه قسمت  هایی از DOM واقعی باید تغییر کند. (مانند زمانی که کاربر بر روی دکمه ای  کلیک می کند.) ?reactچیست؟ Virtual DOM (همانطور که از نام آن پیداست) یک کپی از DOM سایت است و React  JS از این نسخه استفاده می کند تا ببیند هنگام وقوع یک رویداد چه قسمت  هایی از DOM واقعی باید تغییر کند.مثالی از Virtual DOMبیایید بگوییم یک کاربر در یک وبلاگ در قسمت فرم نظرات یک نظر وارد می  کند و دکمه “نظرات” را فشار می دهد. بدون استفاده از React JS ، کل DOM  باید به روز شود تا این تغییر را منعکس کند. (با استفاده از زمان و توان  پردازشی لازم برای انجام این به روزرسانی). اما ری اکت ، Virtual DOM را  اسکن می کند تا ببینید چه چیزی بعد از اقدام کاربر تغییر کرده است. (در این  مورد ، یک نظر اضافه شده) و فقط آن بخش از DOM را به روز می کند.این نوع به روزرسانی انتخابی به قدرت محاسباتی کمتر و زمان بارگیری  کمتری نیاز دارد. که شاید هنگام مثال درباره فرستادن یک نظر در وبلاگ چندان  مهم به نظر نرسد .اما هنگامی که سایت های بزرگ به یک عالمه تغییرات ریز با  تعاملات کاربر را در نظر بگیرید متوجه اهمیت موضوع می شوید.کد React JS چه شکلی است؟اگر همه اینها برایتان جا افتاده اما هنوز دارید فکر می کنید ، “کد React چیست و چگونه به نظر می رسد؟” می توانید از اینجا آن را مستقیما ببینید.هر  یک از پروژه های لیست شده در اینجا ایده ای از آنچه با React JS امکان  پذیر است و نگاهی به کد منبع مورد استفاده برای ساخت آن را به شما نشان می  دهد.در همین حال ، اگر هنوز دارید فکر می کنید “با React JS چه کاری می توان  انجام داد؟” و به نمونه هایی از React JS برای مبتدیان علاقه مند هستید ،  این پروژه های ساده که توسط وب سایت رسمی React تنظیم شده است به شما قالب هایی با امکاناتی که ری اکت ارایه می دهد را نشان می دهد.و در آخر ، اگر به دنبال یک آموزش کامل برای React JS هستید تا در آن با  مثالهای React JS برای مبتدیان همراه باشید ، می توانید مستقیماً از این آموزش یودمی ایران استفاده کنید که شما را بدون هیج دانش قبلی در زمینه React به یک استاد تبدیل می کند.اکوسیستم React JSحال این سوال پیش می آید که React با این تفاسیر یک کتابخانه برای جاوا اسکریپت است یا یک Framework برای جاوا؟ یا اصلا هر دو؟من React JS را به عنوان یک کتابخانه JavaScript و نه یک framework تعریف می کنم. این یک تفاوت مهم است.تفاوت بین کتابخانه های جاوا اسکریپت (مانند React) و frameworkهای جاوا  اسکریپت (مانندAngular )در این واقعیت نهفته است که – در مورد کتابخانه –  توسعه دهنده کد کتابخانه را در موارد جداگانه ای که آن را درخواست می کنند ،  اعمال می کند. اما زمانی که نوبت به فریم ورک می رسد ، این فریم ورک یک  داربست ایجاد می کند که وب سایت یا برنامه شما را شکل دهی می کند و زمینه  های اختصاصی برای اتصال کد فریم ورک را فراهم می کند.برای فهم تفاوت بین کتابخانه ای مانند ری اکت و فریم ورکی مانند Angular  ، می توانید به کدی از کتابخانه Javascript در جایگاه مبلمان و دکوراسیون  خانه ای که قبلاً ساخته اید فکر کنید . در حالی که فریم ورک یک الگو از یک  مدل خانه است که شما برای ساختن خانه از آن استفاده می کنید.ویژگی های ReactReact JS گاهی اوقات با یک فریم ورک کامل اشتباه گرفته می شود . زیرا  اکوسیستم قوی و توسعه پذیری آن را به کتابخانه ای همه کاره در JavaScript  تبدیل کرده است. به یاد داشته باشید ، هنگامی که از React JS برای ساختن  رابط کاربر وب سایت و برنامه وب استفاده می کنید ، به موارد زیر دسترسی  دارید:قطعه ها و اجزای کد React .(بلوک های ساختاری کد React که برای ایجاد قسمت های خاصی از رابط کاربری استفاده می شود.)گزینه استفاده از JSX برای دستکاری مستقیم DOM .یک Virtual DOM برای بهبود عملکرد وب سایت شما.اما علاوه بر همه اینها ، React JS یک پروژه منبع باز است . به این معنی  که هرکسی می تواند کد را به صورت رایگان بارگیری و به سلیقه خود اصلاح  کند. این همچنین بدان معنی است که ، هر عملکرد UI خاصی که می خواهید با  React JS آدرس دهی کنید . به احتمال زیاد یک کتابخانه React برای پاسخگویی  به نیازهای شما به وجود دارد. زیرا انجمن کسانی که از ری اکت استفاده می  کنند مرتبا در حال رشد است. و افراد دایما در حال توسعه این کتابخانه  هستند.آیا باید React JS را یاد بگیرم؟اگر می خواهید به عنوان یک توسعه دهنده front-end کار کنید (که به معنای ساخت UI است.) ، پاسخ قطعا بله است!رسیدن به موفقیت در توسعه وب به معنای استفاده از ابزارهای مناسب برای  کارآمدتر کردن کد خود است. React JS ابزاری است که باید بدانید چگونه می  توانید از مزیت های آن بهره ببرید.</description>
                <category>udemyiran</category>
                <author>udemyiran</author>
                <pubDate>Wed, 02 Jun 2021 15:08:35 +0430</pubDate>
            </item>
                    <item>
                <title>روشهایی برای بالا بردن سرعت برنامه های پایتون</title>
                <link>https://virgool.io/@udemyiran/%D8%B1%D9%88%D8%B4%D9%87%D8%A7%DB%8C%DB%8C-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%A8%D8%A7%D9%84%D8%A7-%D8%A8%D8%B1%D8%AF%D9%86-%D8%B3%D8%B1%D8%B9%D8%AA-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%87%D8%A7%DB%8C-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-zdkmo4dekrkh</link>
                <description>11 روش برای افزایش سرعت پایتونبه طور کلی ، افراد از Python به دلیل راحت بودن و سهولت برنامه نویسی استفاده می کنند ، نه به دلیل سریع بودن آن. انبوه کتابخانه های شخص ثالث و گستردگی پشتیبانی از پایتون ضعف سرعت آن در مقابل جاوا یا C را جبران می کند. .در واقع باید گفت سرعت توسعه بر سرعت اجرا اولویت دارد.اما در بسیاری از موارد ، لازم نیست که سرعت را فدا کنید .با بهینه سازی مناسب ، برنامه های پایتون می توانند با سرعت شگفت انگیزی اجرا شوند . نه به سرعت جاوا یا C ، اما به اندازه کافی سریع برای برنامه های وب ، تجزیه و تحلیل داده ها ، ابزارهای مدیریت و اتوماسیون و سایر اهداف. در واقع ممکن است فراموش کنید که برای بالا بردن سرعت توسعه ، عملکرد برنامه را فدا کرده اید.مقدمهبهینه سازی عملکرد پایتون به یک عامل بر نمی گردد. در عوض ، این مهم با بررسی تمامی راه های خوب و انتخاب روشهایی به دست می آید که متناسب با سناریوی موجود باشد. (کدنویسان در Dropbox یکی از بهترین نمونه های قدرت بهینه سازی در پایتون را نشان می دهند).در این بخش بهینه سازی های رایج پایتون را برای افزایش سرعت پایتون به طور خلاصه بیان می کنم. برخی از آنها اقدامات هستند که به بیش از تغییر یک مورد برای مورد دیگر نیاز دارند. (مانند تغییر interpreter پایتون) . اما مواردی که بیشترین بازده را دارند بالطبع به ظریف کاری بیشتری نیز نیاز دارند.اندازه گیری ، اندازه گیری ، اندازه گیریشما نمی توانید بفهمید که چرا برنامه Pythonتان در عملکرد ضعیف است بدون اینکه بدانید این ضعف در سرعت از کجای کد برنامه تان ناشی می شود.از طریق ماژول cProfile داخلی پایتون شروع به پروفایل کردن برنامه تان کنید . اگر به دقت بیشتری یا عمق بینش بیشتری نیاز دارید ، به یک پروفایلر قدرتمندتر بروید . اغلب اوقات ، داده های حاصل از بررسی سطح عملکرد یک برنامه ،با همان پروفایلر ساده بیش از حد کافی است.اینکه چرا یک قسمت خاص از برنامه بسیار کند است و نحوه رفع آن ممکن است جست و جو و تحقیق بیشتری بطبد. هدف این است که دایره تمرکز را کوچک کنید . یک خط مبنا ایجاد کنید و هر زمان که ممکن است سناریوهای مختلف استفاده و آزمایش را تست کنید.کورکورانه شروع به بهینه سازی نکنید. حدس و گمان شما را به جایی نمی رساند.مثالی که در بالا از Dropbox پیوند داده شده است ، نشان می دهد که چقدر profiling مفید است. کدنویسان در این مقاله نوشته اند: “این اندازه گیری بود که به ما گفت HTML escaping برای شروع کند است.”و بدون اندازه گیری عملکرد ، هرگز گمان نمی بردیم که interpolation رشته بسیار کند است. “داده های مورد استفاده پرتکرار را به خاطر بسپارید (cache)هرگز یک کار را هزار بار تکرار نکنید وقتی می توانید یک بار آن را انجام دهید و نتیجه را ذخیره کنید. اگر تابعی دارید که مرتباً فراخوانی می شود و نتایج قابل پیش بینی را برمی گرداند ، پایتون گزینه هایی را برای ذخیره سازی نتایج در حافظه به شما ارائه می دهد. فراخوانی های بعدی که همان نتیجه را برمی گردانند ، تقریباً آنی اجرا می شوند.مثالهای مختلفی برای انجام این کاروجود دارد.نمونه مورد علاقه من را از اینجا ببینید . اما پایتون این قابلیت را در درون خود دارد. یکی از کتابخانه های بومی پایتون ، functools ، دارای دکوراتور @functools.lru_cache است که nتا از آخرین تماس های یک تابع را در آن ذخیره می کند. این زمانی مفید است که مقداری که ذخیره می کنید تغییر می کند اما در یک بازه زمانی خاص نسبتاً ثابت است. لیستی از مواردی که اخیرا در طول روز استفاده شده مثال خوبی است.توجه داشته باشید که اگر مطمئن هستید تنوع تماس با functionدر حد معقولی باقی می ماند. (به عنوان مثال 100 نتیجه مختلف در cached) . می توانیداز @functools.cache به جای آن استفاده کنید که عملکرد بهتری دارد. راههای زیبادی برای افزایش سرعت پایتون موجود است . این یکی از آن هاست.ریاضیات را به NumPy منتقل کنیداگر شما ریاضیات مبتنی بر ماتریس یا آرایه انجام می دهید و نمی خواهید مفسر پایتون جلوی دست و پایتان را بگیرد ، از NumPy استفاده کنید . NumPy با استفاده از کتابخانه های C برای انجام محاسبات سنگین ، پردازش آرایه را سریعتر از پایتون بومی انجام می دهد. همچنین داده های عددی را با کارایی بیشتری نسبت به ساختار داده های داخلی پایتون ذخیره می کند.ریاضیات و محاسبات نه چندان پیچیده را نیز می توان توسط NumPy با سرعت فوق العاده بیشتری پیاده سازی کرد. این بسته جایگزینی برای بسیاری از عملگرهای رایج ریاضی پایتون مانند ، minو max، ارایه می دهد که چندین برابر سریعتر از نسخه اصلی پایتون عمل می کنند.مزیت دیگر NumPy استفاده کارآمدتر از حافظه برای object های بزرگ ، مانند لیست هایی با میلیون ها داده است. به طور میانگین​​، object های بزرگی مانند این در NumPy حدود یک چهارم حافظه مورد نیاز(مورد نیاز برای محیط بومی خود پایتون) را اشغال می کنند . توجه داشته باشید که کار بر روی ساختار داده درست از همان ابتدا خود عاملی بر بهبود عملکرد برنامه استوبازنویسی الگوریتم های پایتون برای استفاده از NumPy کمی طول می کشد. زیرا آرایه object ها باید با استفاده از سینتکس NumPy استفاده شوند. اما NumPy از اصطلاحات موجود پایتون برای عملیات ریاضی (+ ، – ، و غیره) استفاده می کند . بنابراین تغییر به NumPy در طولانی مدت خیلی گمراه کننده نیست.ریاضیات را به Numba منتقل کنیدیکی دیگر از کتابخانه های قدرتمند برای سرعت بخشیدن به کارهای ریاضی ، Numba است . مقداری کد پایتون برای دستکاری عددی بنویسید و آن را با کامپایلر Numba’s JIT امتحان کنید . کد بدست آمده با سرعت بومی ماشین اجرا می شود. Numba نه تنها شتاب دهنده های مربوط به پردازنده گرافیکی (هم CUDA وهم ROC) را فراهم می کند . بلکه دارای یک حالت “nopython” ویژه است که سعی می کند با اعتماد نکردن به مفسر Python تا جایی که ممکن است عملکرد را به حداکثر برساند.بدانید که Numba با NumPy نیز به خوبی عمل می کند. بنابراین می توانید بهترین ها را از هر دو بدست آورید . NumPy برای تمام عملیاتی که می تواند حل کند و Numba برای باقی مسایل.از کتابخانه C استفاده کنیداستفاده NumPy از کتابخانه های نوشته شده در C استراتژی خوبی برای پیاده سازی است. اگر یک کتابخانه C وجود دارد که آنچه شما نیاز دارید را انجام می دهد . پایتون و اکوسیستم آن چندین گزینه برای اتصال به کتابخانه و استفاده از سرعت آن را ارائه می دهد.متداول ترین روش برای انجام این کار کتابخانه ctypes پایتون است . از آنجا که ctypes به طور گسترده ای با سایر برنامه های Python (و runtimes) سازگار است ، بهترین مکان برای شروع است .اما گمان نکنید تنها انتخابتان همین است. CFFI یک رابط ظریف تر و زیباتر به C را ارایه می دهد.از Cython(پایین را ببینید) نیز می توان برای در هم پیچیدن کتابخانه های خارجی استفاده کرد هر چند هزینه اش یادگیری آن است.یک نکته مهم در اینجا: با به حداقل رساندن تعداد رفت و برگشت ها از C به پایتون ، بهترین نتیجه را خواهید گرفت. هر باری که داده ای را بین آنها انتقال می دهید ، یک ضربه به عملکرد می زنید. اگر بین یک کتابخانه C در یک حلقه فشرده و در مقابل انتقال کل ساختار داده به کتابخانه C و انجام پردازش درون حلقه ای در آنجا حق انتخاب دارید ، گزینه دوم را انتخاب کنید.تبدیل به Cythonاگر سرعت می خواهید ، از C استفاده کنید نه از پایتون. اما برای عاشقان پایتون، نوشتن کد C دردسر های خود را دارد . یادگیری سینتکس C ، بهم ریختگیc toolchain (حالا هدر فایل هام چه مرگش شد؟) و غیره.سایتون به کاربران پایتون اجازه می دهد تا به راحتی به سرعت C دسترسی پیدا کنند.کد موجود پایتون را می توان به تدریج به C تبدیل کرد – ابتدا با compile کد گفته شده به C با Cython ، سپس با افزودنtype annotations برای سرعت بیشتر.سایتون یک عصای جادویی نیست. کدی که به Cython تبدیل شده است معمولاً بیش از 15 تا 50 درصد سریعتر اجرا نمی شود. زیرا بیشتر بهینه سازی ها در آن بر کاهش سطح سربار روی مفسر پایتون متمرکز است. بیشترین عملکرد زمانی است که برای انواع ماژول سایتون type annotations تهیه می کنید و اجازه می دهید کد مورد نظر به C خالص تبدیل شود. سرعت کد حاصله فراتر از حد تصورتان سریع تر می شود.کد متصل به CPU بیشترین بهره را از Cython می برد. اگر پروفایل خود را تنظیم کرده اید. (پروفایل را تنظیم کردید دیگه؟) و متوجه شده اید که قسمت های خاصی از کد شما از اکثریت قریب به اتفاق زمان پردازنده استفاده می کند . این قسمت ها از کد گزینه های بسیار خوبی برای تبدیل به Cython هستند. کدی که به I / O محدود باشد ، مانند عملیات طولانی مدت شبکه ، فایده کمی از Cython خواهد بود اگر اصلا فایده ای ببرد.همانند استفاده از کتابخانه های C ، نکته مهم دیگر در زمینه افزایش عملکرد این است که تعداد رفت و برگشت های به Cython را نیز به حداقل برسانید. حلقه ای ننویسید که عملکرد “Cythonized” را به طور مکرر فراخوانی کند. حلقه را در Cython پیاده سازی کرده و داده ها را به یک باره منتقل کنید.با پردازش چندگانه موازی جلو برویدبرنامه های سنتی پایتون – آنهایی که در CPython پیاده سازی شده اند . برای جلوگیری از مشکلات که هنگام استفاده از چندین THREAD پیش می آید ، هر بار فقط یک thread را اجرا می کنند. این همان Global Interpreter Lock (GIL) معروف است. اینکه دلایل خوبی برای وجود آن وجود دارد باعث نمی شود که به همان اندازه نامطلوب نباشد.مساله GIL با گذشت زمان بسیار کارآمدتر شده است اما مسئله اصلی همچنان وجود دارد . یک برنامه CPython می تواند چند رشته ای باشد . اما CPython در واقع اجازه نمی دهد که آن رشته ها به طور موازی روی چندین هسته اجرا شوند.برای دور زدن آن ، پایتون ماژول چند پردازشی را برای اجرای چندین نمونه از مفسر پایتون در هسته های جداگانه فراهم می کند . State را می توان از طریق حافظه مشترک یا فرایندهای سرور به اشتراک گذاشت و داده ها را می توان از طریق queues یاpipes بین نمونه های پردازش منتقل کرد.شما هنوز هم باید بین state ها به صورت دستی وضعیت را مدیریت کنید. اما برای فرآیندهای طولانی مدت که از موازی کاری در هسته ها بهره مند می شوند ، کتابخانه چند پردازشی مفید است.بعلاوه ، ماژول ها و بسته های پایتون که از کتابخانه های C استفاده می کنند (مانند NumPy یا Cython) می توانند به طور کامل از GIL جلوگیری کنند. این دلیل دیگری است که آنها برای افزایش سرعت توصیه می شوند.بدانید کتابخانه های شما چه می کنندچقدر راحت است که فقط تایپ کنید include harchiو از کارهای برنامه نویسان دیگر استفاده کنید! اما باید توجه داشته باشید که کتابخانه های شخص ثالث می توانند عملکرد برنامه شما را تغییر دهند. اما این همیشه به سمت مثبت نیست.گاهی اوقات این ضربه ها به روشهای واضحی آشکار می شود ، مانند زمانی که یک ماژول از یک کتابخانه خاص یک bottleneck تشکیل می دهد. (باز هم ، پروفایل کمک خواهد کرد.) اما گاهی اوقات کمتر مشخص است. مثال: Pyglet . یک کتابخانه مفید برای ایجاد برنامه های گرافیکی . که به طور خودکار حالت اشکال زدایی را فعال می کند ، و تا زمانی که به طور قطع به یقین غیرفعال نشود ، عملکرد را به طور چشمگیری تحت تأثیر قرار می دهد. ممکن است هرگز متوجه این موضوع نشوید. مگر اینکه مستندات را بخوانید.پس بخوانید و مطلع شوید.حواستان به سیستم عامل باشدپایتون از کراس پلتفورم پشتیبانی می کند . اما این بدان معنا نیست که ویژگی های هر سیستم عامل – ویندوز ، لینوکس ، سیستم عامل X – تحت نظر پایتون مدیریت می شوند. بیشتر اوقات ، این بدان معنی است که از مشخصات پلت فرم مانند نامگذاری مسیری که توابع کمکی برای آن وجود دارند آگاهی داشته باشید.ماژول pathlib ، برای مثال، برای این مورد کمک می کند.اما درک تفاوت سیستم عامل نیز در مورد عملکرد مهم است. به عنوان مثال ، در ویندوز . اسکریپت های پایتون که به دقت تایمر بهتر از 15 میلی ثانیه نیاز دارند (مثلاً برای چندرسانه ای)باید از تماس های API ویندوز برای دسترسی به تایمرهای با وضوح بالا یا بالا بردن وضوح تایمر استفاده کرد.از PyPy استفاده کنیدCPython که معمولاً بیشترین استفاده در پایتون را دارد . سازگاری را نسبت به سرعت در اولویت قرار می دهد. برای برنامه نویسانی که می خواهند سرعت را در درجه اول قرار دهند ، PyPy وجود دارد . یک اجرا از Python مجهز به یک کامپایلر JIT برای سرعت بخشیدن به اجرای کد.از آنجا که PyPy به عنوان جایگزینی برای CPython طراحی شده است ، یکی از ساده ترین راه ها برای افزایش سریع عملکرد است. بسیاری از برنامه های رایج پایتون دقیقاً همانطور که هستند روی PyPy اجرا می شوند. به طور کلی ، هرچه برنامه بیشتر به پایتون “vanilla” متکی باشد ، احتمال اجرای آن بدون تغییر در PyPy بیشتر است.با این حال ،برای استفاده مفید تر از PyPy نیاز به آزمایش و مطالعه است. خواهید دید که برنامه های طولانی مدت بیشترین بهبود عملکرد را از PyPy به دست می آورند. زیرا کامپایلر به مرور زمان اجرا را تجزیه و تحلیل می کند. برای اسکریپت های کوتاه که اجرا و خارج می شوند ، بهتر است از CPython استفاده کنید ، زیرا افزایش عملکرد برای غلبه بر سرباری که JIT ایجاد می کند کافی نخواهد بود.توجه داشته باشید که پشتیبانی PyPy از پایتون 3 هنوز چندین نسخه عقب است. در حال حاضر از پایتون 3.2.5 پشتیبانی می کند. کدی که از ویژگی های نسخه های جدید پایتون استفاده می کند ، مانند async و await ،پشتیبانی نمی شود. در نهایت، برنامه های پایتون که از ctypes استفاده می کنند ممکن است همیشه مطابق انتظار رفتار نکنند . اگر در حال نوشتن برنامه ای هستید که ممکن است هم روی PyPy و هم روی CPython اجرا شود . منطقی است که موارد استفاده را جداگانه برای هر مفسر اداره کنید.استفاده از pypy برای افزایش سرعت پایتونبه پایتون 3 ارتقا دهیداگر از پایتونx.2 استفاده می کنید و دلیل موجه (مانند یک ماژول ناسازگار) ندارید ، باید ارتقا به پایتون 3 را انجام دهید ، مخصوصاً الان که پایتون 2 منسوخ شده و دیگر پشتیبانی نمی شود.گذشته از اینکه پایتون 3 به عنوان آینده زبان در نظر گرفته می شود . بسیاری از سازه ها و بهینه سازی ها در پایتون 3 در دسترس هستند که در پایتون 2.x در دسترس نیستند. به عنوان مثال ، پایتون 3.5 با قرار دادن کلمات کلیدی asyncو و awaitدر syntax زبان . برنامه نویسی ناهمگام را بسیار ساده تر می کند . Python 3.2 یک ارتقا بزرگ در Global Interpreter Lock ایجاد کرد که نحوه مدیریت Python در قسمت multi-thread را به شدت بهبود می بخشد. ?برایافزایشسرعتپایتونبهپایتون3ارتقادهید برای افزایش سرعت پایتون به پایتون 3 ارتقا دهیدتوسعه دهندگان اصلی این زبان اخیراً سایتی را راه اندازی کرده اند که ردیابی تغییرات عملکرد در نسخه های مختلف را به شما نشان می دهد.همانطور که پایتون بالغ تر می شود ، زبان های پویا و تفسیری نیز به طور کلی رشد می کنند. پس می توانید انتظار پیشرفت در فناوری کامپایلر و بهینه سازی مفسر را داشته باشید. که در نهایت باعث بهبود عملکرد پایتون در سال های پیش رو می شود.همانطور که گفته شد ، یک سیستم عامل سریع شما را فقط تا حدی جلو می برد. عملکرد هر برنامه همیشه بیشتر به شخص سازنده آن بستگی دارد تا قدرت سیستمی که آن را اجرا می کند.خوشبختانه برای عاشقان پایتون ، اکوسیستم غنی Python گزینه های زیادی به ما می دهد تا کد ما سریعتر اجرا شود. در نهایت همه می دانیم ، یک برنامه پایتون لازم نیست سریع ترین باشد .تا زمانی که می تواند در حد قابل قبولی سریع باشد.</description>
                <category>udemyiran</category>
                <author>udemyiran</author>
                <pubDate>Tue, 01 Jun 2021 14:43:25 +0430</pubDate>
            </item>
                    <item>
                <title>7 تا از سخت ترین و آسان ترین زبان های برنامه نویسی</title>
                <link>https://virgool.io/@udemyiran/7-%D8%AA%D8%A7-%D8%A7%D8%B2-%D8%B3%D8%AE%D8%AA-%D8%AA%D8%B1%DB%8C%D9%86-%D9%88-%D8%A2%D8%B3%D8%A7%D9%86-%D8%AA%D8%B1%DB%8C%D9%86-%D8%B2%D8%A8%D8%A7%D9%86-%D9%87%D8%A7%DB%8C-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-ygerf4pgyozy</link>
                <description>در حال حاضر ، بیش از 500 زبان برنامه نویسی وجود دارد. اکثریت این  زبانها با هم همپوشانی دارند و تعداد زیادی از آنها هرگز قرار نبوده برای  توسعه دهندگان استفاده شوند. در این مقاله قصد داریم سخت ترین و آسانترین  زبانهای برنامه نویسی را بررسی کنیم و مقاله را با زبان هایی بامزه به  پایان ببریم.مقدمهاگر می خواهید حرفه خود را در برنامه نویسی شروع کنید . کدام یک از این موارد را باید یاد بگیرید ؟وقتی می دانید آسان ترین و سخت ترین زبانهای برنامه نویسی برای یادگیری و  موارد استفاده از آنها چیست . در موقعیت بسیار بهتری قرار خواهید داشت تا  در این باره تصمیم خوبی بگیرید.وقتی می خواهید مصاحبه های فنی را در شرکت های پیشرو فناوری دنبال کنید ، یادگیری زبان های برنامه نویسی به شما کمک زیادی می کند .در این پست ، ما 7 زبان برتر برنامه نویسی آسان و سخت را برای یادگیری  پوشش می دهیم . بنابراین شما می توانید تصمیم بگیرید که کدام یک را باید  برای افزودن به مهارتهای خود در نظر بگیرید.آنچه در این مقاله پوشش خواهیم داد:7 تا از آسانترین زبانهای برنامه نویسی برتر برای یادگیری:HTMLJavaScriptJavaPHPPythonCGo7 تا از سختترین زبانهای برنامه نویسی برتر برای یادگیری:Haskell++CASMPrologLISPRustEsoteric languagesآنچه در اینجا به عنوان “آسان” و “سخت” یاد می شود می تواند برای هر کس  متفاوت باشد. منظور ما از آسانترین زبانهای برنامه نویسی زبان هایی است که  حداقل یکی از ویژگی های زیر را داشته باشد:یک syntax انگلیسی مانند را دنبال کنند تا خواندن و نوشتن آنها را آسان تر کند.ماژول ها و توابع داخلی را ارائه دهد تا بتوان بدون داشتن دانش عمیق در مورد هسته زبان خاص به راحتی مورد استفاده قرار گیرند.مبتدی پسند باشد و برای تسلط به سابقه کدنویسی زیاد نیاز نداشته باشد.7 زبان برنامه نویسی ساده برای یادگیریHTML-1اگر بخواهیم رو راست باشیم، HTML یک زبان برنامه نویسی نیست. این یک  زبان برنامه نویسی frontend است که می تواند برای ایجاد اسکلت صفحات وب  استفاده شود. سپس CSS برای زیباسازی صفحه به آن اضافه می شود و صفحات وب با  استفاده از JavaScript کاربردی و قابل تعامل می شوند.همانطور که گفته شد ، HTML همچنان یکی از زبانهای اساسی است که یک توسعه  دهنده باید بشناسد. این زبان بسیار ساده است و با داشتن دانش کافی در HTML  ، شما قادر خواهید بود به راحتی کدهای صفحه وب را اصلاح کنید تا مشکلات  ساختاری مربوط به HTML را رفع کنید. این زبان در لیست آسانترین زبانهای  برنامه نویسی ما جای می گیرد.آنچه یادگیری HTML را آسان می کندHTML یک زبان برنامه نویسی نیست ، بنابراین روی منطق کار نمی کند. برای  تسلط بر HTML ، تنها چیزی که باید بدانید syntax پایه، برچسب های مهم و  نحوه فراخوانی و استفاده از برچسب ها است. به همین دلایل ، HTML یک زبان  کاملاً آسان برای یادگیری است و تسلط بر آن شروع خوبی برای آماده سازی  مصاحبه شغلی شما خواهد بود .استفاده های HTMLHTML هنوز که هنوز است برای همه کارهای Front-end مهم است – اعم از  صفحات وب ، وب سایت ها یا برنامه های وب. اسکلت اول همیشه با استفاده از  HTML ایجاد می شود.framework ها و کتابخانه های مختلفی برای HTML برای  اهداف مختلف وجود دارد ، اما برای دانستن نحوه استفاده از آنها ، باید پایه  HTML را بدانید.فیس بوک از FBML (Facebook Markup Language) برای  ایجاد صفحه خود استفاده می کند. یک نسخه تغییر یافته از HTML . دانش  کارکردن پایه HTML به شما کمک می کند تا به راحتی بر انواع مختلف HTML تسلط  پیدا کنید.2- جاوا اسکریپتJavaScript یک زبان برنامه نویسی همه منظوره است که از بدو تأسیس تا به  الان به یک غول در این زمینه تبدیل شده است. آنچه که بعنوان یک زبان برای  تعامل کاربر با صفحه وب (یا ایجاد بازیهای مبتنی بر مرورگر) آغاز شد .  اکنون کتابخانه ها وframework های مختلفی را برای توسعه end-to-end ارائه  می دهد.ابتدایی ترین نسخه جاوا اسکریپت با نام جاوا اسکریپت Vanilla شناخته می  شود .که از کدها و برنامه نویسی های سفارشی استفاده می کند. از آن زمان ،  تعداد زیادی framework با استفاده از syntax جاوا اسکریپت مانند React ،  Node ، Angular و موارد دیگر ساخته شده است و همه اینها عملکردهای اضافی را  به برنامه می دهند.با این حال ، قبل از تسلط بر frameworkها ، باید JavaScript Vanilla را  بیاموزید تا با syntax و جریان زبان آشنا شوید.این زبان در لیست آسانترین  زبانهای برنامه نویسی ما جای می گیرد.آنچه یادگیری JavaScript را آسان می کندجاوا اسکریپت یک زبان بسیار آسان برای یادگیری و وسیله ای عالی برای درک  اصول اساسی و کارکرد علوم کامپیوتر است. این که آیا قصد دارید یک توسعه  دهنده front-end باشید یا یک توسعه دهنده back-end ، frameworkهای  JavaScript در هر دو مورد به شما کمک می کند.با این حال ، از آنجا که آنها براساس syntax جاوا اسکریپت کار می کنند ،  پس از یادگیری Vanilla JS ، در موقعیتی برای درک بهتر این framework ها  قرار خواهید گرفت. دلیل دیگر آسان بودن جاوا اسکریپت این است که شما می  توانید آن را بصورت آنی در مرورگر خود مشاهده کنید و هر تغییری ایجاد کنید  در پنجره مرورگر شما منعکس می شود.موارد استفاده JavaScriptجاوا اسکریپت Vanilla بیشتر برای توسعه front-end یا افزودن عناصر تعاملی به یک وب سایت / صفحه وب استفاده می شود.اگرچه  Vanilla JS خود به اندازه کافی قدرتمند است ، اما شرکتها عموماً ترجیح می  دهند از فریم ورک های JS استفاده کنند زیرا قابلیتهای JavaScript را حتی از  قبل هم بیشتر می کنند.Angular JS یک framework منبع باز است که توسط Google برای اتصال داده ها از پایگاه داده به قسمت front-end استفاده می شود.React  JS ، یکی دیگر از framework های محبوب JS است. که توسط فیس بوک توسعه و  نگهداری می شود. React Native نیز یک framework قدرتمند JS است که توسط فیس  بوک معرفی شده . می تواند برای توسعه برنامه های iOS و Android مورد  استفاده قرار گیرد.C -3C را به عنوان یک زبان برنامه نویسی سطح متوسط می شناسند. این زبان در  دهه 1970 توسط دنیس ریچی توسعه داده شد و از آن زمان به عنوان مادر اصلی  همه زبانها ظاهر شده. این زبان برای طراحی مجدد سیستم عامل UX و دادن این  امکان به آن که در سیستم های بیشتری استفاده شود طراحی شد.این زبان در لیست  آسانترین زبانهای برنامه نویسی ما جای می گیرد.آنچه یادگیری C را آسان می کندC تقریباً ساده تر از زبانهای برنامه نویسی شی گرا دیگر مانند++C یا  Java است. که از مفاهیمی مانند وراثت ، abstraction، کپسوله کردن و سایر  موارد استفاده می کنند.با توجه به این مورد ، ایجاد برنامه های پیچیده در C یک کار دشوار اما  عملی است. دلیل دیگر اینکه C نسبتاً آسان در نظر گرفته می شود و چرا بسیاری  از مبتدیان C را به عنوان یک نقطه شروع خوب می دانند این است که از مفاهیم  بسیار ابتدایی شروع می شود و پایه یادگیری همه زبانهای برنامه نویسی  پیچیده تر را ایجاد می کند. علاوه بر این ، C یکی از سریعترین زبانها از  نظر سرعت اجرا است.موارد استفاده Cزبان برنامه نویسی C غالباً برای کار با سیستم های embedded استفاده می شود . چه این برنامه ها scripting باشند یا درایورها C همچنین می تواند برای ایجاد برنامه هایی با رابط گرافیکی کاربرپسند (GUI) استفاده شود. واقعیت جالب – Adobe Photoshop ، ابزار ویرایش محبوب، به زبان C توسعه یافته است.Google برای سیستم فایل و مرورگر وب Chromium خود از زبان C استفاده می کند.زبان برنامه نویسی C برای توسعه سیستم عامل ها نیز استفاده می شود.4- پایتونپایتون یک انتخاب اصلی برای توسعه دهندگان و شرکت هایی است که روی  برنامه های یادگیری ماشین کار می کنند. این زبان نسبتاً آهسته است و ماهیتی  تفسیری دارد . بنابراین بهترین زبان برای برنامه نویسی رقابتی نیست.با این حال ، پایتون به دلیل تعداد ماژول ها و کتابخانه هایی که ارائه می دهد و  ساده بودن syntax آن ، به یکی از مهمترین زبانهای برنامه نویسی امروزی  تبدیل شده است. غیر از برنامه های یادگیری ماشین ، از پایتون می توان برای  توسعه بازی ، توسعه back-end ، علم داده ، تجسم داده و موارد دیگر استفاده  کرد.این زبان در لیست آسانترین زبانهای برنامه نویسی ما جای می گیرد.آنچه یادگیری پایتون را آسان می کندsyntax پایتون شبیه انگلیسی ساده نوشته شده است. در نتیجه ، یادگیری پایتون را بسیار آسان تر می کنند.خواندن کد پایتون برای توسعه دهندگان بسیار آسان است ، که همین  debugging را آسان می کند. بعلاوه ، Python توسط جامعه ای بسیار فعال از  توسعه دهندگان پشتیبانی می شود . می توانید برای کمک گرفتن به آنها رجوع  کنید ،و روند یادگیری را برای خود آسانتر کنید.موارد استفاده پایتونپایتون framework هایی مانند Flask و Django را ارائه می دهد که برای  توسعه سریع برنامه ها بهترینهای موجود هستند. به دلیل این framework ها ،  پایتون به عنوان ابزاری بی بدیل برای توسعه برنامه های وب تبدیل شده است.کتابخانه  های Pandas ، NumPy ، SciPy ، Keras ، Tensorflow و سایر کتابخانه ها به  شما کمک می کنند با داده های بزرگ کار کنید ، آنها را تجزیه و تحلیل کنید و  دیدگاه های ارزشمندی را برای تأمین نیازهای تجاری استخراج کنید. پایتون  مجموعه گسترده ای از کتابخانه ها برای یادگیری ماشین دارد.یکی دیگر از  موارد جالب استفاده از پایتون این است که به توسعه دهندگان این امکان را می  دهد که با کمک Raspberry Pi هر شی فیزیکی را به سادگی به یک ابزار  الکترونیکی تبدیل کنند.شرکت های بزرگ از پایتون برای پیاده سازی قابلیت  های یادگیری ماشین در محصولات خود برای درک الگوهای رفتاری کاربران و  تولید محتوا بر آن اساس استفاده می کنندGo -5زبان گو (Google Golang) که توسط گوگل توسعه یافته است یکی از ساده ترین زبان ها است و نزد برخی استفاده از آن بهتر و ساده تر از  پایتون است. طراحی مداوم کتابخانه ها ، مدیریت ساده بسته ها و جعبه ابزار  با سازگاری کراس پلتفورم از دلایل اصلی استقبال گسترده و محبوبیت Golang در  میان متخصصان نرم افزار است.Goroutines ، یک رشته سبک وزن با مدیریت زمان اجرای Go ، پشته های قابل  رشد را تقسیم بندی می کند. این بدان معناست که فقط در صورت لزوم از حافظه  بیشتری استفاده خواهد شد. کتابخانه های Golang مانند netconf و ssh می  توانند برای بهبود عملکرد از طریق شبکه ، به سایر کتابخانه ها متصل شوند.  به علاوه ، سرعت کمپایل Golang بسیار زیاد است.این زبان در لیست آسانترین  زبانهای برنامه نویسی ما جای می گیرد.چه چیزی یادگیری Golang را آسان می کندGo یک زبان برای مصارف مختلف است و موارد استفاده و syntax آن تقریباً  شبیه C و++C است و یادگیری آن خصوصاً برای برنامه نویسان با پس زمینه C و  Java بسیار آسان است. به قدری آسان که آن را از آسانترین زبانهای برنامه  نویسی می کند!گو syntax کوچکی دارد و کارها را با حداقل ابزار به پایان می رساند. مستندات بسیار دقیقی نیز دارد ، که درک مفاهیم را آسان می کند.موارد استفاده Golangبسیاری از غول های فناوری از جمله Netflix ، Uber ، Intel ، Twitter و  Facebook از Golang در محصولات خود استفاده می کنند. به دلیل سازگاری کراس  پلتفورم ، Golang برای رایانش ابری ، برنامه های بومی ابری و  micro-services بسیار عالی عمل می کند.همچنین ساخت برنامه هایی با پشتیبانی از مقیاس بندی خودکار و چند cluster در Kubernetes با استفاده از Docker را امکان پذیر می کند.زبان  Go در DevOps و SRE (site reliability engineering) بسیار مورد استفاده  قرار می گیرد. این همچنین در توسعه وب همراه با سیستم های تأیید اعتبار  برای افزایش امنیت زیاد استفاده می شود.شرکت های تولیدکننده فناوری از  طریق پشتیبانی Golang پایگاه داده های مقیاس پذیر را ایجاد و مدیریت می  کنند. با Go می توانید با MongoDB ، Oracle ، Redis ، MySQL و موارد دیگر  کار کنید. به عنوان مثال ، Medium (نسخه خارجی ویرگول ما) از Golang برای  مدیریت پایگاه داده های خود استفاده می کند6- جاواجاوا به دلیل ثبات و سادگی یکی از زبانهایی است که برای توسعه در شرکتها  ترجیح داده می شود . این زبان در درجه اول برای توسعه برنامه و وب استفاده  می شود.علاوه بر متغیرها و توابع ساده ، جاوا دارای برخی مفاهیم پیچیده مانند  وراثت و polymorphism است که به آن لبه ای با کمی پیچیدگی می دهد.با این  حال این زبان در لیست آسانترین زبانهای برنامه نویسی ما جای می گیرد.چه چیزی یادگیری جاوا را آسان می کندبسیاری عقیده دارند جاوا آسان ترین زبان برای یادگیری است. جاوا یک زبان  با پایه کلاس ها و OOP ، مبتدی پسند و مناسب برای آموزش الگوهای طراحی به  مبتدیان است. تجربه قبلی از OOP یادگیری جاوا را آسانتر می کند. جاوا دارای  یک جامعه فعال بسیار گسترده از توسعه دهندگان و منابع فراوانی است که به  صورت رایگان در دسترس است. برنامه هایی که به زبان جاوا وابسته هستند ، به  شرطی که دارای  Java runtime environment باشند ، می توانند بر روی هر  دستگاهی اجرا شوند.موارد استفاده از جاواجاوا به طور گسترده ای برای ساخت بازی ها استفاده می شود ، یکی از معروف ترین آنها Minecraft است.برای ساخت برنامه های Android استفاده می شود.برخی از محبوب ترین و پرکاربردترین وب سایت ها مانند Google و LinkedIn از جاوا استفاده می کنند.جاوا همچنین برای برنامه ریزی برنامه های اتوماسیون استفاده می شود.Elixir -7Elixir  یک زبان برنامه نویسی پویا است که از الگوی عملکردی پیروی می کند. Elixir  که در سال 2011 منتشر شد ، هنوز زبان نسبتاً جدیدی به حساب می آید اما به  دلیل قابلیت اطمینان و مقیاس پذیری در طول سال ها ، پشتیبانی زیادی را به  دست آورده است. بعلاوه ، این یک زبان برنامه نویسی عالی برای  microservices  و برنامه های رایانش ابری است. این زبان مبتنی بر Erlang VM  است . همراه با Phoenix framework ، می توانید از Elixir برای تقریباً هر  مجازی سازی در هر صنعتی استفاده کنید.این زبان در لیست آسانترین زبانهای  برنامه نویسی ما جای می گیرد.چه چیزی یادگیری Elixir را آسان می کندElixir یک  زبان برنامه نویسی با خوانایی بالا و بسیار جذاب و سرگرم کننده است.  یادگیری Elixir برای برنامه نویسانی که با Ruby آشنایی دارند ساده تر خواهد  بود زیرا هر دو از syntax مشابه پیروی می کنند. Elixir نیاز ندارد تا خط  های طویل کد بنویسید .در عوض با کتابخانه هایش کار برنامه نویس را راحت می  کند. به عنوان مثال ، با استفاده از کتابخانه تسلا ، می توانید فرآیند  ادغام را با سرویسی مانند PayPal در 20 خط کد پیاده سازی کنید.موارد استفاده از ElixirPinterest یکی از بزرگترین اسامی است که از Elixir استفاده کرده است. با کمک Elixir، این شرکت 250 میلیون کاربر فعال را که در سال 2018 بیش از 180 میلیون آیتم رابه بورد خود پین کردند ، اداره کرد.فایننشال تایمز یک سرویس آنلاین گسترده را اجرا می کند که بیش از یک  میلیون خواننده با حق اشتراک را در خود جای داده است. آنها سرویس خود را از  یک مایکروسرویس REST API به یک API مبتنی بر Elixir منتقل کردند تا پایگاه  خواننده ها و ترافیک در حال رشد خود را مدیریت کنند. Discord برای ساخت خدمات پلتفرم خود از Elixir استفاده می کند. در نتیجه ، آنها با موفقیت بیش از 5 میلیون کاربر همزمان و میلیون ها رویداد در ثانیه را مدیریت کرده اند.7 زبان سخت برنامه نویسی برای یادگیریهمه زبانهای برنامه نویسی یک syntax کاربرپسند مانند پایتون یا جاوا  اسکریپت ندارند. تسلط بر برخی از زبانهای برنامه نویسی به دلیل پیچیدگی های  syntax و paradigmatic دشوار است. با این حال ، شما نباید نگران سخت بودن  زبان ها باشید. همه اینها به درک syntax و استفاده از آن دانش برای حل  مشکلات دنیای واقعی برمی گردد. ترفند یادگیری این زبان های برنامه نویسی  کند کردن پروسه یادگیری آن ها است . روی یک پروژه کار کنید و مفاهیمی را که  یاد می گیرید در زمان به کار ببرید. در غیر این صورت ، ممکن است کار بسیار  طاقت فرسا شود. به یاد داشته باشید ، در برنامه نویسی ، تمرین همیشه کلید  اصلی است.1- ++Cیک زبان برنامه نویسی شی گرا است و سریعترین زبان برنامه نویسی موجود  محسوب می شود. در نتیجه ، توصیه می شود ++ C را یاد بگیرید ، خصوصاً اگر می  خواهید برنامه نویسی رقابتی خود را آغاز کنید.همچنین  ، ++C به دلیل سرعت ، کارایی و استحکام ، عمدتا در بخشهای مهم مربوط به  عملکرد محصولات و الگوریتمهای توسعه یافته توسط شرکتهای بزرگ مورد استفاده  قرار می گیرد.چرا یادگیری++C سخت استشی گرا بودن ، ++C یک زبان کاملاً پویا با تعداد زیادی از مولفه های متحرک  پیچیده است. بعضی اوقات این قسمت ها به روش های ساده با هم تعامل دارند و  برخی اوقات خیر. و مسئولیت این امر به عهده برنامه نویس است تا راهی برای  حل آن پیدا کند. استفاده از تمام پیچیدگی های++C فایده ای ندارد. فقط باید  توجه داشته باشید که شما هرگز نمی توانید امیدوار باشید که همه چیز را در  مورد یک زبان آن هم در زمانی اندک بدانید. تمرکز باید روی یادگیری مفاهیم  کلیدی به صورت عملی و کار همزمان روی یک پروژه کوچک برای استفاده از  چیزهایی که آموخته اید باشد. شاید یادگیری++C چالش برانگیز باشد ، اما  زمانی که به این مهم رسیدید ، از سرعت و کارایی زبان لذت خواهید برد. با  این حال این زبان در لیست سختترین زبانهای برنامه نویسی ما جای می گیرد.موارد استفاده از ++Cهسته الگوریتم جستجوی Google به زبان ++C (و پایتون) نوشته شده است.framework های مختلف جاوا اسکریپت ایجاد شده توسط فیس بوک با استفاده از برخی از کدهای ++ C ساخته شده است.از  ++C برای توسعه برنامه های مبتنی بر GUI مانند VS Code ، Microsoft Office  ، Google Chrome استفاده می شود. امروزه ، مردم شروع به استفاده از پایتون  کرده اند ، اما اهمیت ++ C همچنان پابرجاست.Prolog -2Prolog مخفف Logic Programming است. اگر شما علاقه مند به کار در حوزه  (NLP) از هوش مصنوعی هستیداین زبانی فوق العاده برای شماست .این زبان در  سال 1972 ساخته شده است و یک زبان برنامه نویسی فوق العاده است. Prolog  برای ایجاد ربات های مکالمه بسیار مفید است. ELIZA . اولین چت بات ساخته  شده . در Prolog توسعه یافت. این زبان در لیست سختترین زبانهای برنامه  نویسی ما جای می گیرد.چرا یادگیری Prolog سخت استبه  عنوان یک زبان ، Prolog چندان دشوار نیست. syntax آن در مقایسه با++C یا  Python نسبتاً ساده تر است. با این حال ، فرمولاسیون برنامه های Prolog در  کل یک چالش دیگر است. مفاهیمی مانند facts, rules, و goals باعث می شود  Prolog به زبانی پیچیده برای یادگیری تبدیل شود. نمی توانید کد Prolog کپی و  پیست کنید و امیدوار باشید که همه چیز کار کند – به احتمال زیاد با خطاهای  کامپایلر یا حلقه های نامحدود روبرو خواهید شد.منطق  اصلی برنامه شما باید کاملاً مشخص باشد ، که کار کردن روی آن را دشوار می  کند. بیشتر زبانهای رویه ای که امروزه مورد استفاده قرار می گیرند ، به  برنامه نویسان اجازه می دهد تا با برخی ناهماهنگی های منطقی کار را جلو  ببرند.برنامه  نویسان می توانند برای جبران اشتباهات منطقی ، خطوط کد طولانی بنویسند. و  کد را متناسب با آن تنظیم کنند. با Prolog نمی توانید این کار را انجام  دهید. شما باید منطق را درست از آغاز نوشتن در کد خود رعایت کنید.موارد استفاده از PrologProlog یک زبان بسیار مقرون به صرفه است و به شرکت ها در کاهش هزینه های نگهداری و توسعه کمک می کند.Prolog یک زبان برنامه نویسی مبتنی بر منطق است ، بنابراین کد قابل  استفاده مجدد و قابل خواندن است. به همین دلیل Prolog هزینه های نگهداری را  کاهش می دهد.Prolog بسیار قابل اعتماد و قابل پیش بینی است.LISP -3LISP مخفف List Processing است. بعد از Fortran ، این دومین زبان برنامه  نویسی از نظر قدمت است. این زبان توسط جان مک کارتی ، یکی از بنیانگذاران  هوش مصنوعی که امروزه آن را می شناسیم ، ایجاد شده است.این زبان .”زبان برنامه نویسی قابل برنامه ریزی”. نامیده می شود که نشان  دهنده مهمترین مزیت آن نسبت به سایر زبانهای برنامه نویسی است. “لیسپ زبانی است برای انجام کاری که به شما گفته شده غیرممکن است.” – کنت پیتمن LISP  یک انتخاب ثابت برای توسعه دهندگان هوش مصنوعی بوده است. برخی از ویژگی  های آن مانند نمونه سازی سریع ، ایجاد اشیا پویا ، جمع آوری زباله ها و  انعطاف پذیری زیاد، آن را به یکی از بهترین زبان های برنامه نویسی برای AI /  ML تبدیل کرده است. این زبان در لیست سختترین زبانهای برنامه نویسی ما جای  می گیرد.چرا یادگیری LISP سخت استLISP از الگوی عملکردی برنامه نویسی پیروی می کند. اکثر برنامه نویسان به  خوبی با برنامه نویسی کاربردی یا زبان های برنامه نویسی کاربردی آشنایی  ندارند . نحوه کار ، نحوه حفظ ظرافت کد و غیره مراحل اول یادگیری LIPS را  سخت می کند.برخی موانع مفهومی برای گذراندن نیز وجود دارد زیرا از مفاهیم متفاوتی  نسبت به آنچه که شما ممکن است استفاده کنید استفاده می شود. اما این با  پافشاری در یادگیری قابل کنترل است. هنگامی که مفاهیم مهم در LISP ، مانند  چگونگی کار کرد evaluator ، چگونگی override ماکروها بر آنها را درک کردید ،  کارها به تدریج ساده تر می شوند.موارد استفاده از LISPLISP بر اساس این فلسفه عمل می کند که چیزی برای طراح به بهترین شکل کار  می کند.پس آن برای توسعه دهندگان نیزبهترین است. بنابراین ، LISP به توسعه  دهندگان این امکان را می دهد تا هر ویژگی را که در زبان کم می بینند اضافه  کنند و از آن در برنامه خود استفاده کنند.LISP به برنامه نویسان اجازه می دهد تا ایده های خود را به روش واقعی  برنامه ترسیم کنند. این امر باعث می شود که کد به راحتی قابل نگهداری باشد.LISP  تایپینگ پویا را ارائه می دهد . که به توسعه دهندگان این امکان را می دهد  تا زمان بیشتری را برای کار با کد و زمان کمتری را برای سرو کله زدن با  کامپایلر صرف کنند.Haskell -4نام هاسکل از نام هاسکل بروکس کری ، ریاضیدان معروف است. این زبان در سال  1990 معرفی شد و یک زبان برنامه نویسی کاربردی با نوع ثابت است که خطوط کد  کوتاه تری را ارائه می دهد. Haskell در مدیریت خطاها بسیار کارآمد است و  بنابراین یک زبان برنامه نویسی ایمن محسوب می شود. بیشتر خطاهای  non-syntactical به جای زمان اجرا ، در زمان کامپایل خود را نشان می دهند.برخی از ویژگی های اصلی Haskell عبارتند از:توانایی های انتزاعی قویقابلیت استفاده مجدد از کدخط کد کمتر ، درک بهتر کد نوشته شدهمدیریت حافظه در هسته خود زباناین ویژگی ها و سایر ویژگی های ارائه شده توسط Haskell ، بهره وری برنامه  نویس را بهبود می بخشد. در حالی که در حال حاضر تعداد کمی از توسعه دهندگان  از آن استفاده می کنند ، اما در صورت شناخت بیشتر ، توانایی رقابت با  زبانهای دیگر برای هوش مصنوعی را دارد. این زبان در لیست سختترین زبانهای  برنامه نویسی ما جای می گیرد.چرا یادگیری هاسکل سخت استباز هم ، مشکل در یادگیری Haskell از این واقعیت ناشی می شود که این یک  زبان برنامه نویسی کاربردی است. اما حتی در میان سایر زبانهای کاربردی ،  Haskell به دلیل انتزاعی بودن ، syntax مختصر و استفاده از identifier های  یک حرفی چالش برانگیز است.اینها همچنین مواردی است که به نقاط قوت Haskell می افزاید ، اما یادگیری و تسلط بر آنها را نیز به چالش می کشد.موارد استفاده از HaskellHaskell با C خیلی خوب جفت و جور می شود. شرکت هایی که با زبان Cبر روی هر  برنامه ای کار می کنند معمولاً از Haskell به عنوان ابزاری قدرتمند برای  نوشتن C استفاده می کنند.Haskell به برنامه نویسان فشار می آورد تا افق تفکر خود را گسترش دهند و  به شیوه دیگری به چالش های برنامه نویسی بیندیشند. با Haskell ، توسعه  دهندگان زمان بیشتری را به فکر درباره حل مشکل می پردازند و زمان کمتری را  برای کدنویسی آن صرف می کنند.برای توسعه دهندگانی که با داده ها سروکار دارند ، هاسکل به آنها می آموزد  که درباره آنچه که با آن سر و کار دارند شفاف تر فکر کنند. Haskell از  انواع داده های جبری پشتیبانی می کند تا توسعه دهندگان را ترغیب کند تا  درباره همه موارد ممکن عمیق تر فکر کنند.5- زبان اسمبلی (ASM)زبان اسمبلی اصطلاحی است که برای اشاره به کد سطح پایین استفاده می شود  .کد بومی ماشین برای هر ریز پردازنده . زبانهای دیگر این لیست از لحاظ  syntax به انگلیسی نزدیکتر بودند و کد باید از طریق bytecode در دستورالعمل  های ماشین وارد شود.شما می توانید هدف یک قطعه کد را که با C یا Python نوشته شده است ، فقط  با خواندن آن درک کنید. برای زبان اسمبلی ، این کار بدون دانستن محتوای کار  و متن کامل کد ، دشوار است. هر عمل اساسی ، از جمله انتقال داده ها به  داخل و خارج از register های حافظه ، یک statement کامل است.با این حال ، یک دلیل برای این سختی ها وجود دارد. زبان اسمبلی فوق العاده  قدرتمند است ، مخصوصاً وقتی عملکرد از اهمیت بالایی برخوردار است. با  استفاده از آن می توانید برنامه نویسی سیستم های سطح پایین را انجام دهید.  اینها همچنین می توانند با سایر زبانهای برنامه نویسی سطح بالا برای توسعه  سخت افزار یا برنامه نویسی سیستم ترکیب شوند. این زبان در لیست سختترین  زبانهای برنامه نویسی ما جای می گیرد.چرا یادگیری زبان اسمبلی سخت استهمانطور  که قبلا ذکر شد . زبان اسمبلی بر روی پارامترهای مختلف کار می کند.  بنابراین ، یادگیری و همچنین تسلط بر آن دشواری قابل توجهی دارد. برای شروع  یادگیری زبان اسمبلی ، باید نحوه عملکرد داخلی رایانه را بفهمید. اگر  تاکنون فقط از زبانهای سطح بالا استفاده کرده اید ، درک نحوه کار CPU ،  نحوه مدیریت حافظه یا نحوه خواندن یا نوشتن از رجیسترها برای شما چالش آور  است. به طور کلی یک شکاف دانش گسترده وجود دارد که باید قبل از یادگیری  زبان اسمبلی آن را برطرف کنید.موارد استفاده از زبان اسمبلیزبان اسمبلی امکان دستکاری مستقیم سخت افزار را فراهم می کند . بنابراین  شرکت هایی که روی فناوریهای سخت افزار کار می کنند به توسعه دهندگان  اسمبلی زبان نیاز دارند.برای پرداختن به مسائل بسیار حساس و توجهات بسیار ظریف به عملکرد.توسعه سیستم های embedded سطح پایین و سیستم های real-timeRust -6 Rust یک زبان برنامه نویسی منبع باز است و به مدت چهار سال پی در پی محبوب ترین زبان Stack Overflow Rust .یک  داروی مناسب برای مقابله با نقاط درد آور دیگر زبان ها با کمترین میزان قرص  تلخ است.امن. سریع و همزمان .Rust کنترل بهتری روی جزئیات سطح پایین و مدیریت بهینه حافظه ارائه می دهد  ، به شما امکان می دهد تا در هزینه ها صرفه جویی کنند . Rust یک زبان  سیستم مدرن است که مزایا و عملکردهای C و++C را ارائه می دهد ، اما بدون  نقاط ضعفی که برنامه نویسان با تجربه از این زبان ها تجربه کرده اند.ویژگی  های Rust ، از جمله مدیریت بسته داخلی ، کامپایلر درجه یک و توانایی کار  با سیستم های مدرن ، آن را به یکی از زبانهای مورد علاقه در اکوسیستم  برنامه نویسی امروزی تبدیل کرده است.با این حال این زبان در لیست سختترین  زبان های برنامه نویسی ما جای می گیرد.چرا یادگیری زبان Rust سخت استشیب  تند یادگیری Rust را می توان به syntax، macrosystem و رویکرد متفاوتی که  به برخی مفاهیم اساسی اتخاذ می کند نسبت داد. اگرچه مدیریت کارآمد حافظه  یکی از بزرگترین مزایای آن است ، اما ممکن است مدتی طول بکشد تا با  کامپایلری که مدام در مورد حافظه به شما یادآوری می کند کنار بیایید. و  همچنین دارای چندین بسته است که دقیقاً همان کار را انجام می دهند!با این اوصاف ، اگر مدتی را با Rust سپری کنید و آن را کنترل کنید ،  احتمالاً مانند بسیاری از برنامه نویسان دیگر عاشق این زبان خواهید شد.موارد استفاده از زبان Rustشرکت هایی مانند Mozilla ، Postmates ، Dropbox و بسیاری دیگر از Rust در تولید محصولاتشان استفاده می کنند.Rust برای ساخت طیف گسترده ای از برنامه های نرم افزاری مانند سیستم  عامل ها ، موتورهای بازی ، اجزای مرورگر و همچنین موتورهای شبیه سازی برای  واقعیت مجازی استفاده می شود.Dropbox از Rust برای بهبود کارایی مرکز داده استفاده می کند. بسیاری  از اجزای هسته سیستم ذخیره سازی فایل ها در Rust نوشته شده است.7- زبانهای باطنیتعداد کمی از زبانهای باطنی وجود دارد که هدف آنها یادگیری و کار با آنها  چالش برانگیز است. برخی چنان چالش برانگیز هستند که حتی سازندگان آنها  استفاده از آن را سخت می بینند. بیایید نگاهی به چند مورد از آنها  بیندازیم:COWاین زبان برنامه نویسی با اسم با مزه مانند اسمش مسخره است. این زبان توسط  شان هبر در سال 2003 ساخته شده است ، از 12 دستورالعمل استفاده می کند که  همه آنها انواع حروف “moo” هستند – به مانند صدای گاو. Moo ، MoO ، moo ،  moO ، mOo ، و غیره. این زبان حساس به حروف بزرگ و کوچک هر چیز غیر از این  دستورالعمل ها را به عنوان کامنت در نظر می گیرد. این زبان در لیست سختترین  زبان های برنامه نویسی(مسخره ترین) ما جای می گیردMalbolgeمالبولژ توسط بن اولمستد در 1998 اختراع  شد ، دو سال طول کشید تا او اولین برنامه اش را در این زبان بنویسد. به  راستی یکی از سختترین زبانهای برنامه نویسی به حساب می آید. این زبان بعد  از نوشتن شبیه بتکه کاغذ با متنی پر از اشتباهات و آشغال به نظر می رسد .  که خواندن و درک آن را تقریباً غیرممکن می کند. این زبان در لیست سختترین  زبانهای برنامه نویسی(مسخره ترین) ما جای می گیردیک Hello World در زبان MalbolgeWhitespaceفضای سفید در اول آوریل (اول آوریل  2003) معرفی شد ، فقط از paces, tabs, وlinefeeds برای نوشتن کد استفاده می  کند. interpreter همه حروف دیگر را نادیده می گیرد. فقط تصور کنید که  خواندن آن چقدر دشوار است – خواندن کدی که هیچ چیز در صفحه نمایش داده نمی  شود! این زبان در لیست سختترین زبانهای برنامه نویسی (مسخره ترین) ما جای  می گیردنظر شما درباره این زبان ها چیست؟ زبان مورد علاقه شما کدام است و کدام را دوست دارید یاد بگیرید؟</description>
                <category>udemyiran</category>
                <author>udemyiran</author>
                <pubDate>Sun, 30 May 2021 03:36:12 +0430</pubDate>
            </item>
                    <item>
                <title>راست در مقابل Go , کدام را انتخاب کنیم؟</title>
                <link>https://virgool.io/golangpub/%D8%B1%D8%A7%D8%B3%D8%AA-%D8%AF%D8%B1-%D9%85%D9%82%D8%A7%D8%A8%D9%84-go-%DA%A9%D8%AF%D8%A7%D9%85-%D8%B1%D8%A7-%D8%A7%D9%86%D8%AA%D8%AE%D8%A7%D8%A8-%DA%A9%D9%86%DB%8C%D9%85-oivo0dbldyrt</link>
                <description>در کمتر از یک دهه ، دو زبان برنامه نویسی جدید به عنوان گزینه های اصلی برای توسعه شرکتها ظاهر شده اند: Go که توسط Google ایجاد شده. و Rust که توسط Mozilla ایجاد شده است. در این مقاله به همه چیز درباره Rust در مقابل Go می پردازیم.مزایای زبان Rust و مزایای زبان Goهر دو زبان ویژگی های ضروری را برای توسعه نرم افزارهای مدرن ارائه می  دهند: یک دسته ابزار پیچیده و یکپارچه . ایمنی حافظه ، مدل توسعه منبع باز و  پشتیبانی قوی کاربران.جدا از این شباهت ها ، Rust و Go تفاوت های چشمگیری دارند.هر کدام برای  استفاده از یک جای خاص ، تحقق خواسته های مختلف و نوشتن انواع مختلف برنامه  ها ساخته شده اند.بنابراین ، مقایسه Rust و Go مربوط به این نیست که کدام زبان .”از نظر  عینی بهتر است”. ، بلکه در مورد اینکه کدام زبان برای یک کار برنامه نویسی  خاص بهتر عمل می کند است. با این حساب ، بیایید به اصلی ترین تفاوت های  Rust و Go توجه کنیم .و ببینیم چه کاری برای کدام یک مناسب تر است.راست در مقابل Go , کدام را انتخاب کنیم؟راست در برابر Go: عملکرددر لیست مزایای مهم Rust ، عملکرد با ایمنی و سهولت در بالاترین رتبه  قرار دارد. و ممکن است حتی مزیت شماره یک آن باشد. برنامه های Rust به گونه  ای طراحی شده اند که به سرعت یا تقریبا هم سرعت با زبان C و ++C اجرا  شوند.نوشتن یک برنامه کند در Rust همیشه امکان پذیر است . اما حداقل می  توانید مطمئن باشید که Rust عملکرد را برای ایمنی یا راحتی قربانی نمی کند.  آنچه Rust انجام می دهد ، تلاشی از سوی توسعه دهنده برای یادگیری و تسلط  بر انتزاعات زبان برای مدیریت حافظه است.درعوض زبان Go ، برای راحتی کار توسعه دهنده ، سرعت را تا حدودی فدا می  کند. مدیریت حافظه توسط ران تایم Go انجام می شود . بنابراین مقدار اجتناب  ناپذیری هزینه اضافه مربوط به زمان اجرا وجود دارد. اما در بسیاری از  سناریوها ، این معامله قابل اغماض است. Go به طور پیش فرض چندین برابر  سریعتر از سایر زبانهای راحتی مانند پایتون است .با این هزینه کوچک برای  برنامه نویس که باید برای همه آبجکت ها type های قوی تعریف کند. .(راحتی و  انعطاف پذیری پایتون در عملکرد آن تاثیر قابل توجهی دارد.)به طور خلاصه ، Rust سریعتر است . اما برای اکثر موارد استفاده در روز ،  اختلاف سرعت بین Rust و Go ناچیز و قابل چشم پوشی خواهد بود. در مواردی که  عملکرد- نیاز و خواسته ی شماره یک است ، Rust می تواند از راه هایی که  Goدر آن عاجز است عالی باشد.راست در مقابل Go: مدیریت حافظهمدیریت حافظه در Rust و Go به شدت با عملکردهای این دو زبان ارتباط دارد.مدیریت حافظه RustRust از استراتژی های ownership زمان کامپایل برای مدیریت حافظه از طریق  انتزاعات با هزینه صفر استفاده می کند. این بدان معناست که اکثریت قریب به  اتفاق مشکلات مربوط به مدیریت حافظه را می توان قبل از اجرای مستقیم  برنامه برطرف کرد. اگر برنامه Rust از لحاظ حافظه امنیت نداشته باشد  ،کامپایل نمی شود. با توجه به اینکه چه مقدار از دنیای امروز ما بر بستر  نرم افزارهایی ساخته شده است که به دلیل مدیریت نامناسب حافظه ، معمولاً  ناامن است.روش Rust نه تنها عالی است بلکه می شود گفت کاش زودتر از این ها  آمده بود!همانطور که در مقاله قبلی اشاره شد . این ایمنی به بهای یادگیری نسبتا  سخت زبان Rust به دست می آید: برنامه نویسان باید بدانند که چگونه از  اصطلاحات مدیریت حافظه Rust به درستی استفاده کنند . و این به زمان و تمرین  نیاز دارد. توسعه دهندگانی که از دنیای ++C , C و #C یا جاوا می آیند باید  هنگام کار با Rust در مورد نحوه نوشتن کدشان تجدید نظر کنند.توجه داشته باشید که کارگذاری امکان جمع آوری زباله به طور جداگانه ،  بعنوان یک موردthird-party در Rust وجود دارد. برای مثال می توان به  جعبه gc ، اشاره کرد . اگرچه هنوز هم در مراحل ابتدایی است. اما الگوی زیربنایی Rust از جمع آوری زباله استفاده نمی کند.مدیریت حافظه Goمانند راست، Go نیز از از نظر حافظه امن است . اما دلیل آن این است که  مدیریت حافظه در زمان اجرا به طور خودکار انجام می شود. برنامه نویسان می  توانند هزاران خط کد Go را بنویسند و هرگز مجبور نیستند به فکر تخصیص یا  آزادسازی حافظه باشند. برنامه نویسان در زمان اجرا تا حدی کنترل جمع کننده  زباله را دارند. برای جلوگیری از تداخل چرخه جمع آوری زباله در عملیات ، می  توانید آستانه جمع آوری زباله را تغییر داده یا به صورت دستی جمع آوری کنید.برنامه نویسان همچنین می توانند برخی از مدیریت های حافظه دستی را در Go  انجام دهند. اما این زبان عمداً در برابر انجام این کار مانع ایجاد می  کند. به عنوان مثال ، برای دستیابی به متغیرها می توانید از اشاره گرها  استفاده کنید ، اما برای دسترسی به مناطق دلخواه حافظه نمی توانید محاسبات  اشاره گر را انجام دهید .مگر اینکه ازبسته unsafeاستفاده کنید ، گزینه ای  نا معقول برای نرم افزاری که در حال تولید است.اگر به برنامه نویس گفته شده نیاز به تخصیص و آزادسازی حافظه به صورت  دستی دارد . مثلاً برای سخت افزارهای سطح پایین یا سناریوهایی که به حداکثر  عملکرد نیاز است – Rust برای تأمین این نیازها طراحی شده است. نباید تصور  کنید که مدیریت حافظه خودکار Go آن را برای انجام این کار نامناسب می کند .  اما Rust ثابت کرده است که در برخی سناریوهایی که کارایی بالا مد نظر است  مناسب است.در یکی از نمونه های اخیر ، Discord یکی از اصلی ترین سرویس های خود را از Go به Rust تغییر داده است . بخشی از این مسئله به دلیل مشکلات  مربوط به مدل حافظه Go و جمع آوری زباله است. نسخه Rust این سرویس در نسخه  های اولیه و بدون هیچ گونه تنظیم دستی ، از نسخه Go بهتر عمل کرد.شرکت هایی که از Go استفاده می کنندراست در برابر Go: سرعت توسعهگاهی اوقات سرعت توسعه از سرعت خود برنامه مهمتر است. پایتون از این  لحاظ که سریعترین زبان برای اجرا نیست . اما در میان سریعترین زبانها برای  نوشتن نرم افزار است به محبوبیت این چنینی رسیده. Go نیز همین جذابیت را  دارد. مستقیم و سادگی آن باعث می شود یک روند توسعه سریع انجام شود. زمان  کامپایل کوتاه است و زمان اجرای Go از پایتون .(و سایر زبانهای interpreted  ، که کار توسعه دهنده با آن ها راحت است). سریع تر است.سرعت توسعه Goبه طور خلاصه ، Go هم سادگی و هم سرعت را ارائه می دهد. پس چه چیزی از  دست رفته است؟ برخی از ویژگیهای یافت شده در زبانهای دیگر .(به عنوان مثال  ،generics). که برای سهولت در یادگیری زبان ، تسلط آسانتر و نگهداری آسانتر  یافت می شوند از آن حذف شده است. نکته منفی این است که با این حذف برخی از  کارهای برنامه نویسی بدون انجام مقدار قابل توجهی کار و تکرار واضحات در  خود کد امکان پذیر نیست. کار برای افزودن generics به Go در حال انجام است .  اما این کار همچنان در حال پیشرفت است و تغییر به Go جدیدی که از مواد  generics استفاده می کند ، نیاز به بازنویسی کردن دوباره مقدار زیادی کد  موجود دارد.سرعت توسعه RustRust دارای ویژگی های زبانی بیشتری نسبت به Go است .بنابراین یادگیری و  تسلط آن به زمان بیشتری نیاز دارد. مدت زمان کامپایل Rust نیز طولانی تر از  برنامه های معادل Go است . به ویژه برای برنامه های کاربردی با dependency  بزرگ. این امر حتی پس از تلاش بسیار پروژه Rust برای کوتاه کردن زمان  compile، همچنان به قوت خود باقی است.اگر یک چرخه توسعه سریع و نیاز به حضور سریع افراد در یک پروژه از  اولویت های اصلی است . Go بهترین انتخاب است. اگر کمتر به فکر سرعت توسعه  هستید و بیشتر به ایمنی حافظه و سرعت اجرا توجه دارید ، Rust را انتخاب  کنید. در هر صورت ، اگر تیمی دارید که قبلاً با یکی از این دو زبان کار  کرده اند و تجربه دارند ،همان زبان را انتخاب کنید.شرکت هایی که از Rust استفاده می کنندراست در برابر Go: همزمانی و موازی کاریسخت افزارهای مدرن چند هسته ای هستند و برنامه های مدرن به صورت شبکه ای  و توزیع شده اند. زبانهایی که برای این موارد برنامه ای ندارند در پشت  پرده قرار می گیرند. برنامه نویسان باید بتوانند وظایف را به طور مستقل ،  چه در یک موضوع یا چند موضوع ، اجرا کنند و وضعیت را بین وظایف به اشتراک  بگذارند بدون اینکه خطر خرابی داده ها را در بر داشته باشد. Rust و Go هر  دو روشهایی برای انجام این کار ارائه می دهند.همزمانی در Goهمزمانی(Concurrency) از ابتدا با استفاده از goroutines(رشته های سبک) و  کانال ها (مکانیسم های ارتباطی برای goroutines) در syntax زبان Go قرار  داده شده. این قابلیت ها نوشتن برنامه هایی (مانند سرویس های شبکه) را که  باید بسیاری از کارها را همزمان انجام دهند بدون این که مشکلاتی رایج مانند  مشکل race conditions پیش آید را ساده می کند . زبان گو race conditions  را غیرممکن نمی کند . اما مکانیسم های تست بومی را فراهم می کند تا در صورت  پیش آمدنrace conditions در زمان اجرا ، به برنامه نویس هشدار دهد.همزمانی در Rustراست syntax همزمانی بومی را در قالب کلمات کلیدی async/.await ، با نسخه 1.39.0 در اواخر 2019ارایه داد. قبل از async/.await این امر از طریق یک جعبه یا بسته برای Rust به نام futures محقق می شد. اگرچه همزمانی در Rust سالها تجربه توسعه دهنده پشت Go را  ندارد . اما مزیت ایمنی حافظه Rust اینجا به کمکش می آید . به این معنی که  کد Rust که می تواند race conditions را بروز دهد ، کامپایل نمی شود. نوشتن  کد برای عملیات همزمانی یا asynchronous در زبان Rust سخت تر خواهد بود  .(به دلیل قوانین syntax این زبان). اما در دراز مدت ماندگاری بالایی دارد.راست در مقابل Go: قابلیت سازگاری با کد قدیمیزبانهای جدیدی مانند Rust و Go با هدف ایمنی حافظه و سهولت برنامه نویسی  از راههایی که زبانهای قبلی در آن عاجز بودند ، به وجود آمدند. اما جدید  همیشه باید تا حدی با قدیم همزیستی داشته باشد. برای این منظور ، Rust و Go  هر دو با کد C قدیمی همکاری می کنند ، اگرچه با محدودیت هایی مختلف در هر  مورد.سازگاری در RustRust می تواند از طریق کلمه کلیدی extern و “جعبه” libc  (نام Rust برای یک بسته) مستقیماً با کتابخانه های C صحبت کند. اما این  ارتباط ها با این کتابخانه ها باید به عنوان ناامن(unsafe) برچسب گذاری  شوند. به عبارت دیگر ، Rust نمی تواند ایمنی حافظه آنها را تضمین کند. شما  باید به طور دستی از ایمن بودن رابط های کد C اطمینان حاصل کنید . بسیاری از نمونه های نحوه بسته بندی کد با FFI Rust (رابط کاربری خارجی)  – برای C و سایر زبانها – را می توان در وب سایت Rust FFI Omnibus یافت .پروژه های دیگری از سیستم Rust و ویژگی های تجزیه و تحلیل استاتیک برای  ایجاد یک پل امن بین زبان ها استفاده می کنند. به عنوان مثال ، پروژه CXX اتصال ایمن به ++C از Rust را فراهم می کند.سازگاری در Goزبان Go بسته cgo را برای کار با C ارایه می دهد . این  بستهcgo به شما امکان می دهد تا از کتابخانه های C فراخوانی کنید. از  پرونده های هدر C در کد Go خود استفاده کنید و انواع داده های متداول را  بین C و Go تبدیل کنید (به عنوان مثال رشته ها). با این حال ، از آنجا که  Go توسط مدیریت حافظه و زباله جمع می شود ، باید اطمینان حاصل کنید که pointer هایی که به C منتقل می کنید به درستی مدیریت می شوند. cgo همچنین تمایل به ایجاد هزینه سربار برای هر  ارتباط دارد ، به این معنی که همیشه از این که مستقیم با C کار کنید کندتر  خواهد بود.به طور خلاصه ، Rust نسبت به Go در زمینه تعامل با C کمی دوستانه تر است  .بنابراین هر چیزی که وابستگی عمده ای به C داشته باشد می تواند نوک پیکان  را به سمت Rust تغییر دهد. هر چند هم در Rust و هم در Go ، تعامل با C  برای توسعه دهنده هزینه هایی دارد: سرباری بیشتر ، زمان کامپایل کندتر ،  ابزار پیچیده تر ، debugging سخت تر.توجه داشته باشید که Rust و Go همیشه می توانند در سطوح بالاتر کد نیز  ارتباط برقرار کنند – به عنوان مثال ، مبادله داده ها از طریق سوکت شبکه  یااستفاده از named pipes به جای function calls . اما این گزینه ها هزینه  فدا کردن سرعت را در بر خواهند داشت.راست در مقابل Go: جمع بندیانتخاب بین Rust و Go برای یک پروژه توسعه نرم افزار عمدتا در مورد  انتخاب زبانی است که دارای کیفیتی باشد که شما برای آن پروژه بیشتر به آن  نیاز دارید. برای Rust وGo می توانید این خصوصیات را به صورت زیر جمع بندی  کنید.مزایای Rust :اصلاح در زمان اجرا (اشتباهات رایج کامپایل نمی شوند)سرعت اجرا در بالاترین سطحایمنی حافظه بدون جمع آوری زباله (یا با جمع آوری زباله آزمایشی و اختیاری از طریق پروژه های شخص ثالث)کد برای سطح سخت افزارمزایای Go:چرخه توسعه سریعسرعت اجرای بالاایمنی حافظه از طریق جمع آوری زباله (با مدیریت حافظه دستی اختیاری)راحتی توسعه دهندهکدنویسی آسان</description>
                <category>udemyiran</category>
                <author>udemyiran</author>
                <pubDate>Sat, 29 May 2021 19:41:17 +0430</pubDate>
            </item>
                    <item>
                <title>زبان Rust چیست و آیا کارآمدی لازم را دارد؟</title>
                <link>https://virgool.io/coderlife/%D8%B2%D8%A8%D8%A7%D9%86-rust-%DA%86%DB%8C%D8%B3%D8%AA-%D9%88-%D8%A2%DB%8C%D8%A7-%DA%A9%D8%A7%D8%B1%D8%A2%D9%85%D8%AF%DB%8C-%D9%84%D8%A7%D8%B2%D9%85-%D8%B1%D8%A7-%D8%AF%D8%A7%D8%B1%D8%AF-i7jbvnckk7xc</link>
                <description>زبان Rust چیست؟ مزایای زبان برنامه نویسی Rust و معایب زبان برنامه نویسی Rust و آینده آن را با هم در این مقاله بررسی می کنیم.زبان Rust چیست؟سریع ، ایمن ، نوشتن آسان .فقط دو مورد را می توانید انتخاب کنید. مدتهاست که این وضعیت توسعه نرم افزار است. زبانهایی که بر راحتی و ایمنی تأکید دارند ، کند هستند (مانند پایتون ). زبانهایی که بر عملکرد تأکید دارند کار با آنها دشوار است و به راحتی می توانند شما را خسته کنند. (مانند C و C ++).آیا می توان هر سه ویژگی را به یک زبان واحد انتقال داد؟ مهمتراز آن ، آیا می توانید دنیا را وادار کنید تا با آن کار کند؟ زبان Rust ، که در اصل توسط Graydon Hoare ایجاد شده و در حال حاضر توسط Mozilla Research حمایت مالی می شود ، تلاشی برای انجام همین موارد است. ( زبان گوگل Go نیز جاه طلبی های مشابهی دارد ، اما Rust قصد دارد تا حد امکان امتیازات عملکردی را کسب کند.)راست بدین منظور طراحی شده است که سریع ، ایمن و به راحتی قابل نوشتن باشد. همچنین این مورد در نظر گرفته شده است که به طور گسترده مورد استفاده قرار گیرد و در نهایت به عنوان یک زبان که فقط برای کنجکاوی و بازیگوشی مناسب است شناخته نشود . دلایل خوبی برای نولید زبانی وجود دارد که در آن امنیت هم پا با سرعت و قدرت توسعه جلو می رود. به هر حال ، تعداد بسیار زیادی نرم افزار وجود دارد . (بعضی از آنها زیرساخت های بسیار مهمی را هدایت می کنند) .که با زبانهایی ساخته شده است که امنیت اولیت آن نبوده.راست در ابتدا قرار بود زبانی فقط برای استفاده در مرورگر موزیلا باشد مزایای زبان برنامه نویسی Rustزبان Rust به عنوان یک پروژه تحقیقاتی موزیلا شروع شد. بیشتر به منظور اجرای component های اصلی مرورگر Firefox . چند دلیل اساسی باعث این تصمیم شد: Firefox لیاقت استفاده بهتر از پردازنده های مدرن و چند هسته ای را داشت. و گستردگی استفاده از مرورگرهای وب به این معنی است که استفاده از آنها باید ایمن باشد.اما این مزایا توسط همه نرم افزارها و نه فقط مرورگرها مورد نیاز است ، به همین دلیل Rust از یک پروژه مرورگرمحور به یک پروژه زبان برنامه نویسی تبدیل شد. Rust از طریق مشخصات زیر ایمنی ، سرعت و سهولت استفاده خود را به دست می آورد. در اینجا به برخی از مزایای زبان Rust اشاره می کنیم:راست سریع استکد Rust در چندین سیستم عامل به کد بومی ماشین کمپایل می شود. باینریها در خود موجود هستند . زمان اجرایی ندارد و کد نهایی از لحاظ عملکرد به راجتی با کدی که به زبان C یا ++C نوشته شده برابری می کند.راست از لحاظ حافظه امن استزبان Rust برنامه هایی را که سعی در استفاده از حافظه ناامن دارند ، کامپایل نمی کند. بیشتر خطاهای حافظه هنگام اجرای برنامه کشف می شوند. زبان و syntax های Rust تضمین می کنند که مشکلات رایج مربوط به حافظه در زبان های دیگر مانند null یا dangling pointers و data racesو دیگر مشکلات از این قبیل هرگز در برنامه نهایی دیده نشوند. کامپایلر این مشکلات را علامت گذاری کرده و آنها را مجبور می کند قبل از اجرای برنامه برطرف شوند.راست کم مصرف استزبان Rust کنترل حافظه را از طریق قوانین سخت کنترل می کند. سیستم مدیریت حافظه Rust در نحوهsyntax زبان از طریق استعاره ای به نام ownership تعریف می شود . هر مقدار داده شده در زبان Rust فقط توسط یک متغیر می تواند “owned” شود، یا نگهداری و دستکاری شود.نحوه انتقال ownership بین ابجکت ها (شی ها )به طور دقیق توسط کامپایلر مدیریت می شود . بنابراین در زمان اجرا هیچ غافلگیری به شکل خطاهای تخصیص حافظه وجود ندارد. رویکرد ownership همچنین به معنای عدم مدیریت حافظه برای جمع آوری زباله است .چیزی بر خلاف زبانهایی مانند Go یا #C. (این امر باعث افزایش عملکرد برای Rust می شود.) هر بیت حافظه در برنامه Rust از طریقownership ردیابی و آزاد می شود.راست انعطاف پذیر استراست به شما اجازه می دهد در صورت لزوم ، خطرناک زندگی کنید. موارد ایمنی Rust در صورت نیاز به دستکاری مستقیم حافظه ، مانند ارجاع مجدد به اشاره گر خام à la C++/C، می تواند تا حدودی به حالت تعلیق درآید. کلمه کلیدی در اینجا تا حدودی است ، زیرا عملیات ایمنی حافظه Rust هرگز نمی تواند کاملاً غیرفعال شود. حتی در این صورت ، تقریباً هرگز مجبور نیستید نگران برنامه خود باشید.نتیجه نهایی نرم افزاری است که به طور پیش فرض ایمن تر است.استفاده از Rust راحت استهیچ یک از ویژگی های ایمنی و یکپارچگی زبان Rust در صورت عدم استفاده ، برای شما گیج کننده نمی شود. به همین دلیل توسعه دهندگان و جامعه Rust تلاش کرده اند تا این زبان را برای تازه واردان هرچه بیشتر مفید و خوش آیند کنند.هر آنچه برای تولید باینری Rust لازم است در همان بسته قرار دارد. کامپایلرهای خارجی ، مانند GCC ، فقط در صورت استفاده از اجزای خارج از اکوسیستم Rust (مانند کتابخانه C که از منبع تهیه می کنید) مورد نیاز هستند. کاربران ویندوز مایکروسافت شهروندان درجه دو نیز نیستند. زنجیره ابزار Rust همانقدر که در لینوکس و MacOS موجود است برای ویندوز نیز وجود دارد.راست کراس پلت فرم استزبان Rust در هر سه سیستم عامل اصلی: لینوکس ، ویندوز و MacOS کار می کند. دیگر زبان ها فراتر از این سه مورد پشتیبانی می شوند. اگر می خواهید کدتان در جاهای دیگر نیز کمپایل شود . و یا باینری هایی برای معماری های مختلف دیگر و یا پلت فرم های دیگر غیر از این سه مورد اشاره شده تولید کنید، کار کمی پیچیده تر می شود . اما یکی از ماموریت های عمومی Rust به حداقل رساندن این پیچیدگی ها و کارهای دشوار است .همچنین اگرچه زبان Rust در اکثر سیستم عامل های فعلی کار می کند ، هدف سازندگان آن این نیست که Rust را کاملاً در همه جا پیاده سازی کنند . فقط در هر سیستم عاملی که محبوب باشد . و هر کجا که برای انجام این کار نیازی به قربانی کردن برخی از مولفه های اصلی این زبان نباشد این مهم را انجام می دهند .راست دارای ویژگی های زبانی قدرتمندی استتعداد کمی از توسعه دهندگان می خواهند که کار خود را با یک زبان جدید شروع کنند .مخصوصا اگر ویژگی های آن کمتر یا ضعیف تر از ویژگی های مورد استفاده آنها باشد. ویژگی های بومی زبان Rust با مواردی که زبانهایی مانند++C دارند کاملا برابری می کند: ماکروها ، generics ، تطبیق الگو و composition (از طریق ” traits“) همه شهروندان درجه یک در Rust هستند.راست یک کتابخانه استاندارد مفید داردیک بخش از مأموریت بزرگتر زبان Rust تشویق توسعه دهندگان C و ++C به استفاده از Rust به جای آن زبانها در هر زمان ممکن است. اما کاربران C و++C انتظار دارند که یک کتابخانه استاندارد مناسب داشته باشند . آنها می خواهند بتوانند از کانتینرها ، مجموعه ها و تکرارکننده ها استفاده کنند . دستکاری های رشته ای را انجام دهند ، فرآیندها و رشته ها را مدیریت کنند ، I / O شبکه و پرونده و غیره را انجام دهند. Rust همه این کارها و موارد دیگر را در کتابخانه استاندارد خود انجام می دهد . از آنجا که Rust به صورت کراس پلتفرم طراحی شده است ، کتابخانه استاندارد آن می تواند تنها شامل مواردی باشد که به طور قابل اتکا از طریق سیستم عامل ها پورت می شوند. توابع ویژه بسترهای نرم افزاری مانند epoll لینوکس باید از طریق توابع موجود در کتابخانه های شخص ثالث مانند libc ، mio یا tokio پشتیبانی شوند.استفاده از Rust بدون کتابخانه استاندارد آن نیز امکان پذیر است . یک دلیل معمول برای این کار ساخت باینری است که هیچ وابستگی به سیستم عامل ندارد . به عنوان مثال ، یک embedded system یا هسته سیستم عامل.راست تعداد زیادی کتابخانه های شخص ثالث یا “جعبه” داردیکی از معیارهای کاربردی زبان برنامه نویسی این است که به لطف اشخاص ثالث می توان با آن کارهای زیادی انجام داد. Cargo ، مخزن رسمی کتابخانه های Rust (که “جعبه” نامیده می شود) حدود ده هزار جعبه را شامل می شود. تعداد قابل توجهی از آنها اتصال API به کتابخانه ها یا Framework های رایج هستند . بنابراین می توان از Rust به عنوان یک گزینه مناسب برای استقاده با اینframwrok ها استفاده کرد. با این حال ، انجمن Rust هنوز بر اساس کیفیت و کاربرد کلی جعبه ها ، دسته بندی یا رتبه بندی ارائه نمی دهد . بنابراین بدون تلاش خودتان برای انجام کارها یا نظرسنجی از انجمن ها ، نمی توانید بگویید چه چیزی از بقیه بهتر کار می کند.راست از پشتیبانی IDE خوبی برخوردار استباز هم ، تعداد کمی از توسعه دهندگان می خواهند زبانی را با پشتیبانی کم یا بدون پشتیبانی از IDE مورد نظر خود بپذیرند. به همین دلیل Rust اخیراً سرور زبان Rust را معرفی کرده است که بازخورد زنده کامپایلر Rust را به IDE هایی مانند Microsoft Visual Studio Code ارائه می دهد .بازخورد زنده از سرور Rust به Visual Studioمعایب زبان برنامه نویسی Rustزبان Rust در کنار تمام قابلیت های جذاب ، قدرتمند و مفید خود ، نقاط ضعفی نیز دارد. با هم نگاهی به معایب زبان Rust می کنیم:راست جدید استراست هنوز یک زبان جوان است ، زیرا نسخه 1.0 خود را فقط در سال 2015 ارائه کرده است. بنابراین ، در حالی که بسیاری از syntax و عملکردهای زبان اصلی چکش خورده است ، بسیاری از چیزهای دیگر در مورد آن هنوز هم خام هستند.به عنوان مثال عملیات ناهمزمان هنوز در syntax زبان به خوبی کارگذاری نشده. کار برای اجرای عملیات async از طریق دستورات asyncو await در حال اجرایی شدن است.یادگیری Rust سخت استاگر فقط یک چیز باشد که زبان Rust را دچار مشکل می کند آن پیچیدگی آن است . Ownership ، borrowing و دیگر دستورات مدیریت حافظه Rust اولین بار همه را تحت فشار قرار می دهد. بسیاری از برنامه نویسان تازه کار Rust یک آئین مشترک دارند ، “مبارزه با borrow checker” ، جایی که آنها از نزدیک متوجه می شوند که کامپایلر در مورد جدا نگه داشتن چیزهای قابل تغییر و تغییر ناپذیر چه قدر وسواسی است. این از بزرگترین معایب زبان Rust است.راست پیچیده استیکی از دشواری های چگونگی استفاده از استعاره های زبان Rust برای ایجاد کدهای طویل، در مقایسه با سایر زبان ها است. به عنوان مثال ، ادغام رشته ها در Rust همیشه به سادگی string1+string2 نیست. یک شی ممکن است قابل تغییر باشد و دیگری غیرقابل تغییر . Rust تمایل دارد اصرار کند که برنامه نویس به جای اینکه اجازه دهد کامپایلر حدس بزند چه کار کند ، خود مدیریت چنین مواردی را بر عهده گیرد.مثال دیگر: نحوه کار Rust و C++ / C با هم. بیشتر اوقات ، Rust برای اتصال به کتابخانه های موجود که برای زبان C یا++C نوشته شده اند ، استفاده می شود. تعداد کمی از پروژه ها در C و ++C از ابتدا برای Rust بازنویسی می شوند. (و در صورت وجود ، تمایل دارند که به صورت تدریجی دوباره بازنویسی شوند).مزایا و معایب زبان Rustمسیر پیش روی Rustتیم Rust از بسیاری از این موضوعات آگاه است و برای بهبود آنها تلاش می کند. به عنوان مثال ، برای ساده سازی کار Rust با C و++C ، تیم Rust در حال بررسی این است که آیا پروژه هایی مانند bindgen را که به طور خودکار اتصال Rust به کد C را ممکن می کند ، گسترش دهد یا خیر. این تیم همچنین برنامه هایی برای فهم راحت تر borrowing و lifetimes دارد https://virgool.io/p/i7jbvnckk7xc/%F0%9F%93%B7%D9%85%D8%B2%D8%A7%DB%8C%D8%A7%D9%88%D9%85%D8%B9%D8%A7%DB%8C%D8%A8%D8%B2%D8%A8%D8%A7%D9%86Rust </description>
                <category>udemyiran</category>
                <author>udemyiran</author>
                <pubDate>Thu, 27 May 2021 17:32:11 +0430</pubDate>
            </item>
                    <item>
                <title>همه چیز درباره زبان برنامه نویسی گوگل Golang</title>
                <link>https://virgool.io/coderlife/%D9%87%D9%85%D9%87-%DA%86%DB%8C%D8%B2-%D8%AF%D8%B1%D8%A8%D8%A7%D8%B1%D9%87-%D8%B2%D8%A8%D8%A7%D9%86-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%DA%AF%D9%88%DA%AF%D9%84-golang-pffjkbipkdha</link>
                <description>زبان Go برای چه چیزی خوب است؟ مزیت های زبان go , معایب زبان go و همه چیز درباره زبان golang را در این مقاله توضیح داده ایم.مقدمهدر طی 9 سال و اندی اخیر – زبان برنامه نویسی گوگل Go یا همان زبان  golang با شماره نسخه 1.13 که در سپتامبر 2019 منتشر شد از یک زبان  مبتدیانه فقط برای بازیگوشی افراد خوره برنامه نویسی تبدیل به یکی از غول  های زبان های برنامه نویسی برای پروژه های ابر محور شده است.چرا Go توسط توسعه دهندگان پروژه هایی مانند Docker و Kubernetes انتخاب  شده است ؟ ویژگی های مشخصه زبان golang چیست .چه تفاوتی با سایر زبان های  برنامه نویسی دارد و مناسب ترین انتخاب برای ساخت چه نوع پروژه هایی است؟  در این مقاله ، ما به مجموعه ویژگی های زبان golang ، بهترین موارد استفاده  ، موارد و محدودیت های زبان و اینکه زبان Go از اینجا به کجا خواهد رسید،  خواهیم پرداختزبان Go کوچک و ساده استGo که معمولاً Golang نامیده می شود ، توسط کارکنان Google ساخته شده است . به طور عمده توسط  استاد گرافیک یونیکس و مهندس برجسته گوگل ، Rob Pike – اما این دقیقاً “یک  پروژه Google” نیست. در عوض ، زبان golang به عنوان یک پروژه منبع باز به  همت و کمک افراد علاقه مند توسعه یافته است و رهبری آن نظرات مشخصی در مورد  نحوه استفاده از Go و جهت گیری زبان برای استفاده در جاهای مشخص دارد.Go زبانی است که قرار بوده تا یادگیری آن آسان باشد ، کار با آن سر راست  و قابل خواندن توسط سایر توسعه دهندگان باشد. Go مجموعه ای از ویژگی های  بزرگ ندارد ، خصوصاً وقتی با زبانهایی مانند ++C مقایسه شود. Go به نحوی  خود یادآور C است و یادگیری آن برای توسعه دهندگان قدیمی C تقریباً آسان  است. با این اوصاف ، بسیاری از ویژگی های Go ، به ویژه ویژگی های همزمان و  برنامه نویسی عملکردی آن ، به زبان هایی مانند Erlang برمی گردد.زبان golang به عنوان یک زبان مشابه زبان C برای ساخت و نگهداری انواع  برنامه های سازمانی کراس پلت فرم ، اشتراکات زیادی با جاوا دارد . و به  عنوان ابزاری برای امکان توسعه سریع کدی که قرار است در هر کجا اجرا شود ،  می توانید یک خط موازی بین Go و Python قرار دهید . اگرچه تفاوت ها بسیار  بیشتر از شباهت ها است.همه چیز درباره زبان برنامه نویسی گوگل Golangدلایل محبوبیت زبان Goمستندات زبان golang در توصیف این زبان می آورد که: “.زبانی سریع ، تایپ  شده به شکل استاتیک و کمپایل شده است که حس یک زبان داینامیک به شکل  Interpreted را می دهد.” حتی یک برنامه بزرگ Go در عرض چند ثانیه کامپایل  می شود. بعلاوه ، Go ازبارگذاری بسیاری از موارد اضافه شده به سبک زبان C  شامل پرونده ها و کتابخانه ها جلوگیری می کند.Go به چندین روش کار برنامه نویس را آسان می کند:راحتیGo از لحاظ توانایی تأمین بسیاری از نیازهای رایج برنامه نویسی با زبان  های برنامه نویسی مانند Python مقایسه شده است. برخی از این قابلیت ها در  خود زبان تعبیه شده است . مانند .”goroutines”. برای همزبانی و رفتار  موضوعی ، در حالی که قابلیت های اضافی بسیاری نیز در بسته های استاندارد  کتابخانه Go مانند بسته http وجود دارد. مانند پایتون ، Go قابلیت مدیریت  خودکار حافظه از جمله جمع آوری زباله را نیز فراهم می کند.برخلاف زبان های برنامه نویسی مانند پایتون ، کد Go در یک باینری بومی  که با سرعت بالایی اجرا می شود ، کامپایل می شود. و برخلاف C یا ++C زبان  Go بسیار سریع کامپایل می کند . آنقدر سریع که کار با Go را بیشتر شبیه کار  با یک زبان Script می کند تا یک زبان کامپایل شده . بعلاوه ، سیستم ساخت  Go پیچیدگی کمتری نسبت به سایر زبانهای کامپایل شده دارد. برای ساخت و  اجرای یک پروژه Go چند مرحله کوتاه و حسابداری کم کافی است تا برنامه را  بنویسید.سرعتباینری های Go کندتر از نمونه زبان C عمل می کنند . اما تفاوت سرعت در  اکثر برنامه ها بسیار ناچیز است. عملکرد Go برای اکثر قریب به اتفاق کارها  به اندازه C خوب است و به طور کلی بسیار سریعتر از زبان های دیگر است .همان  هایی که به سرعت توسعه معروف هستند. (به عنوان مثال JavaScript ، Python و  Ruby).قابل حمل بودنفایل های اجرایی ایجاد شده با ابزار Go(toolchain) می توانند به تنهایی  و بدون هیچ گونه وابستگی خارجی اجرا شوند. toolchain Go برای طیف گسترده  ای از سیستم عامل ها و سیستم های سخت افزاری در دسترس است .و می تواند برای  کمپایل باینری ها در سیستم عامل ها مورد استفاده قرار گیرد.قابلیت همکاریGo همه موارد بالا را بدون آسیب رساندن به دسترسی به سیستم اساسی ارائه  می دهد. برنامه های Go می توانند با کتابخانه های C خارجی تعامل کنند یا  با سیستم بومی ارتباط بگیرند. به عنوان مثال ، در Docker ،زبان Go با  عملکردهای سطح پایین لینوکس ، cgroups و Namespaces تعامل می کند تا جایی  که کار به جادوی کانتینرها می رسد.پشتیبانیtoolchain Go به صورت باینری لینوکس ، MacOS یا ویندوز یا به عنوان یک  کانتینر داکر به صورت رایگان در دسترس است. زبان golang به طور پیش فرض در  بسیاری از توزیع های محبوب لینوکس ، مانند Red Hat Enterprise Linux و  Fedora گنجانده شده است . که استقرار Go را در آن سیستم عامل ها تا حدودی  آسان تر می کند. پشتیبانی از Go در بسیاری از محیط های توسعه کد شخص ثالث ،  از Microsoft Visual Studio Code گرفته تا ActiveState’s Komodo IDE نیز  قوی است.go از لحاظ سرعت زبانی بسیار کار آمد استزبان Go کجا بهترین کارایی را دارد؟هیچ زبانی برای هر کاری مناسب نیست ، اما بعضی از زبانها بیشتر از بقیه برای انجام کار ها مناسب هستند.زبان golang برای ایجاد انواع برنامه های زیر بهترین نوع خود است است پس با هم به گوشه ای از مزیت های زبان go نگاه می کنیم:خدمات توزیع شبکهبرنامه های شبکه با زمان زندگی می کنند و می میرند . ویژگی های همزمانی  بومی Go . -عمدتا goroutines و کانال ها . برای چنین کاری مناسب هستند. در  نتیجه ، بسیاری از پروژه های Go برای شبکه سازی ، توابع توزیع شده و سرویس  های ابری مناسب هستند: API ها ، وب سرورها ، minimal framework ها برای  برنامه های وب و موارد مشابه.این ها فقط گوشه ای از مزیت های زبان go می  باشند.توسعه بومی ابرویژگی های همزمانی و شبکه Go و قابلیت حمل بالای آن ، آن را برای ساخت  برنامه های بومی ابر مناسب می کند. در حقیقت ، از Go برای ساختن چندین زیر  بنای محاسبات ابری از جمله Docker ، Kubernetes و Istio استفاده شده . این از بزرگترین مزیت های زبان go است.جایگزینی برای زیرساخت های موجودیکی دیگر از مزیت های زبان go این است که بسیاری از نرم افزارهایی که  ما برای زیرساخت های اینترنت به آنها وابسته هستیم. در حال پیر شدن هستند و  حفره های امنیتی زیادی در آن ها پیدا می شود . بازنویسی چنین مواردی در Go  مزایای بسیاری را به همراه دارد . ایمنی بهتر حافظه ، استقرار آسانتر کراس  پلتفرم و پایگاه کد تمیز برای ارتقا در آینده. یک سرور جدید SSH به نام  Teleport و نسخه جدیدی ازNetwork Time Protocol در Go در حال نوشتن هستند  .که به عنوان جایگزین همتایان قدیمی خود ارائه می شوند.تسهیلات و ابزارهای مستقلاز دیگر مزیت های زبان go میتوان به این اشاره کرد که برنامه های Go با  حداقل وابستگی های خارجی به باینری کامپایل می شوند. این باعث می شود که  آنها برای ایجاد برنامه های کمکی و ابزارهای دیگر ایده آل باشند ، زیرا به  سرعت راه اندازی می شوند و می توانند به راحتی برای توزیع مجدد بسته بندی  شوند.زبان golangزبان go زبانی ایده آل برای سرویس های ابری است.محدودیت های زبان Goمجموعه ویژگیهای زبان golang هم باعث ستایش و هم انتقاد از آن شده است.  Go به گونه ای طراحی شده است که در کنار کوچک بودن و فهم آسان ، با ویژگی  های خاصی که عمداً حذف شده اند ، عرضه می شود. نتیجه این است که برخی از  ویژگی های معمول در زبان های دیگر به سادگی در Go در دسترس نیستند. باهم به  برخی از معایب زبان go نگاه می کنیم:عدم وجود genericsیکی از این ویژگی ها generics است که به یک تابع اجازه می دهد انواع  مختلفی از متغیرها را بپذیرد. زبان golang شامل generics نیست و سکان داران  این زبان مخالف اضافه کردن آن هستند . بر این منطق که generics سادگی زبان  را به خطر می اندازد. ممکن است با این محدودیت کنار بیایید . اما بسیاری  از توسعه دهندگان هنوز تشنه آن هستند تا generics به شکلی به این زبان  اضافه شود. یک پیشنهاد برای پیاده سازی generics عمومی در Go مطرح شده است ،  اما هنوز هیچ چیز قطعی نیست. در حال حاضر این یکی از بزرگترین معایب زبان  go می باشد.اندازه باینری هااز دیگر معایب زبان go، اندازه باینری های تولید شده است. باینریهای Go  بصورت پیش فرض بصورت استاتیک کامپایل می شوند . بدین معنی که همه موارد  مورد نیاز در زمان اجرا در ایمیج باینری وجود دارد. این روش روند ساخت و  استقرار را ساده می کند . اما به این هزینه که یک ‘Hello World’ در حدود  1.5 مگابایت در ویندوز 64 بیتی وزن دارد. تیم Go تلاش کرده است تا با هر  نسخه منتشر شده از اندازه باینری ها بکاهد . همچنین می توان باینری های Go  را با فشرده سازی یا با حذف قسمت (debug) اشکال زدایی Go کوچک کرد . این  گزینه آخر ممکن است برای برنامه های توزیع شده مستقل بهتر از سرویس های  ابری یا شبکه باشد . زیرا در صورتی که مشکلی روی سرویس پیش بیاید ، داشتن  اطلاعات debug مفید استمدیریت خودکار حافظهیکی دیگر از مزیت های Go ، مدیریت خودکار حافظه ، می تواند به عنوان یکی  از معایب زبان go نیز تلقی شود . زیرا جمع آوری زباله به مقدار مشخصی از  پردازش منابع نیاز دارد. Go مدیریت حافظه را به شکل دستی ارائه نمی دهد.  جمع آوری زباله ها در زبان golang به دلیل عدم کارکرد مناسب با انواع  بارهای حافظه که در برنامه های سازمانی ظاهر می شود ، مورد انتقاد قرار  گرفته است. از طرف مثبت . Go 1.8 پیشرفت های زیادی در مدیریت حافظه و جمع  آوری زباله ایجادکرده که باعث کاهش چشمگیر lag نیز شده. البته ، توسعه  دهندگان Go توانایی استفاده از تخصیص حافظه به طور دستی با افزونه C یا از  طریق کتابخانه مدیریت حافظه دستی شخص ثالث را دارند .این فرهنگ که نرم افزار باید حول ایجاد GUI غنی برای  برنامه ها باشد. به مانند آنچه در برنامه های دسک تاپ می بینیم ،در زبان Go  هنوز بسیار خام است. و این یکی دیگر از معایب زبان go می باشد.رابط کاربریبیشتر برنامه های Go ابزارهای خط فرمان یا خدمات شبکه هستند. همانطور که  گفته شد ، پروژه های مختلفی برای ایجاد GUI غنی برای برنامه های Go در حال  تلاشند. اتصالات برای framework های GTK و GTK3 وجود دارند. پروژه دیگری نیز برای ارائه UI های بومی پلت فرم در نظر گرفته شده است ، اگرچه اینها  به زبان C متکی هستند و به صورت خالص در Go نوشته نشده اند. کاربران ویندوز  می توانند walk را  امتحان کنند . اما هنوز هیچ برنده مشخص مطمئنی در این فضا ظاهر نشده است .  برخی از پروژه ها ، مانند تلاش گوگل برای ساخت کتابخانه GUI بین پلتفرم ،  نیز به بی راهه رفته است. همچنین ، از آنجا که Go از نظر طراحی مستقل از  پلتفرم است. بعید است که هیچ کدام از اینها به بخشی از پکیج استاندارد زبان  تبدیل شوند. می توان این را یکی از معایب زبان go دانست.اگرچه Go می تواند با فانکشن های بومی سیستم صحبت کند ، اما برای ایجاد  اجزای سطح پایین سیستم مانند هسته ها یا درایورهای دستگاه یا سیستم های  جاسازی شده طراحی نشده است. به هر حال ، runtime Go و جمع آوری زباله برای  برنامه های Go به سیستم عامل اصلی بستگی دارد. (توسعه دهندگان علاقه مند به  یک زبان پیشرفته برای این نوع کارها ممکن است به زبان Rust نگاه کنند .) ?مزایاومعایبزبانgo مزایا و معایب زبان goآینده زبان Goفاز بعدی در توسعه Go ممکن است بیشتر تحت تأثیر خواسته ها و نیازهای  توسعه دهندگان آن باشد . با توجه به اینکه رهبران این پروژه بیشتر بر  کارآمدی این زبان برای مخاطبینش در تلاشند تا پیش گرفتن یک روش لجوجانه و  به دور از انتقادپذیری. به عبارت دیگر ، زبان golang ممکن است ویژگیهایی را  بدست آورد که در ابتدا برای آن در نظر گرفته نشده است . مانند generics.واضح است که توسعه دهندگان Golang این موارد را می خواهند. .طبق نظرسنجی  سال 2018 .زبان go گذاشتن generics در میان سه در خواست اصلی کاربران به  همراه موارد دیگر برای تطبیق پدیری بیشتر این زبان در بین عموم مردم بود.  همچنین با dependencies و مدیریت بسته بهتر. و یک پیشنهاد در GitHub برای  generics به عنوان پیشنهادی برای قرار دادن در Go 2.x همچنان فعال است.تغییراتی از این دست ممکن است به Go کمک کند تا در توسعه ، جایی که در  حال حاضر JavaScript و Python پادشاهان هستند ، جایگاه والاتری پیدا کند  .حتی بدون تغییرات عمده ، می توان انتظار داشت که استفاده از Go برای پروژه  های بازسازی زیرساخت افزایش یابد . همانطور که در مورد SSH و NTP در  بالاتر توضیح دادیم.پیاده سازی های شخص ثالث از toolchain Go نیز گسترش یافته است. ActiveGo  از ActiveState نسخه تجاری پشتیبانی شده زبان Go را فراهم می کند. و هر دو  پروژه LLVM و gccgo ابزار منبع باز با مجوز Go را به عنوان جایگزین هایی  برای toolchain خود زبان go ارایه می دهند.کلام آخردر نهایت ، Go همچنین به عنوان پایه ای برای توسعه زبانهای کاملاً جدید  عمل کرده است . اگرچه دو نمونه از این توسعه های فعال متوقف شده است. یک  مثال زبان Have بود ، که نحوه زبان golang را ساده تر می کرد . برخی از  مفاهیم مشابه را به روش خاص خود پیاده سازی می کرد و برای اجرای آسانتر  آنها را به Go انتقال می داد. یک پروژه ملغی شده دیگر . Oden. از اسمبلر و  toolchain زبان Go برای تدوین یک زبان تازه طراحی شده استفاده کرد که از  زبانهایی مانند Lisp و Haskell الهام می گرفت.این مجموعه از آخرین پروژه ها یکی از راه های انقلاب واقعی هر نوآوری در  فناوری اطلاعات را نشان می دهد . هنگامی که افراد آن را از پایه جدا می  کنند و برای اهداف دیگر دوباره سر هم می کنند .به شکلی که طراحان آن زبان  هیچ گاه چنین ایده و قصدی را در نظر نداشتند. آینده زبان Go به عنوان یک  پروژه قابل هک شدن تازه شروع شده است. اما آینده آن به عنوان یک زبان اصلی  برنامه نویسی به خصوص در فضای ابری کاملا اثبات شده است .جایی که سرعت و  سادگی Go زمان توسعه زیرساخت های مقیاس پذیر را که می تواند در بلند مدت  حفظ شود ،به شدت کاهش می دهد.</description>
                <category>udemyiran</category>
                <author>udemyiran</author>
                <pubDate>Wed, 26 May 2021 17:10:18 +0430</pubDate>
            </item>
                    <item>
                <title>داکر چیست و چگونه کانتینر ها جهان را متحول کردند؟</title>
                <link>https://virgool.io/@udemyiran/%D8%AF%D8%A7%DA%A9%D8%B1-%DA%86%DB%8C%D8%B3%D8%AA-%D9%88-%DA%86%DA%AF%D9%88%D9%86%D9%87-%DA%A9%D8%A7%D9%86%D8%AA%DB%8C%D9%86%D8%B1-%D9%87%D8%A7-%D8%AC%D9%87%D8%A7%D9%86-%D8%B1%D8%A7-%D9%85%D8%AA%D8%AD%D9%88%D9%84-%DA%A9%D8%B1%D8%AF%D9%86%D8%AF-d5ia74hrilrc</link>
                <description>داکر چیست؟داکرفایل چیست؟ کانتینر ها چه هستند؟چگونه با داکرفایل یک کانتینر می سازیم؟ در این مقاله به همه این سوالات پاسخ دادیم.داکر یک بستر نرم افزاری برای  ساخت برنامه های کاربردی مبتنی بر کانتینر است . (.محیط های اجرای کوچک و  سبک که از هسته سیستم عامل به صورت مشترک استفاده می کنند.) اما در عین حال  جدا از یکدیگر اجرا می شوند. در حالی که کانتینرها به عنوان یک مفهوم از  مدتی قبل وجود داشته اند . یک پروژه منبع باز Docker که در سال 2013 آغاز  به کار کرد ، به محبوبیت این فن آوری کمک کرد و به ایجاد روند توسعه  کانتینر و ریز سرویس ها در توسعه نرم افزار که به عنوان ابر بومی شناخته می  شود ، کمک کرد.کانتینر چیست؟یکی از اهداف توسعه نرم افزار مدرن این است که برنامه ها  روی همان هاست یا کلاستر اما جدا از یکدیگر باقی بمانند تا بی جهت در  عملکردو یا تعمیر و نگهداری یکدیگر اختلال ایجاد نکنند. به لطف بسته ها ،  کتابخانه ها و سایر مولفه های نرم افزاری که برای اجرای آنها لازم است .  این کار بسیار دشوار است. یک راه حل برای این مشکل ماشین های مجازی بوده  است . که برنامه ها را روی همان سخت افزار کاملاً جدا نگه می دارد و  اختلافات بین اجزای نرم افزار و رقابت برای استفاده از منابع سخت افزاری را  به حداقل می رساند. اما ماشین های مجازی حجیم هستند – هرکدام به سیستم  عامل خاص خود نیاز دارند . بنابراین اندازه آن معمولاً گیگابایت است و  نگهداری و ارتقا آنها دشوار است.در مقابل ، کانتینرها محیط اجرای برنامه ها را از یکدیگر جدا می کنند .  اما هسته اصلی سیستم عامل شما را به اشتراک می گذارند. آنها معمولاً در  مگابایت اندازه گیری می شوند . از منابع بسیار کمتری نسبت به ماشین های  مجازی استفاده می کنند و تقریباً بلافاصله راه اندازی می شوند. می توان  آنها را بسیار متراکم تر از همان سخت افزار بسته بندی کرد. و با تلاش کمتر  به صورت دسته جمعی بالا و پایین آورد. کانتینرها مکانیزمی بسیار کارآمد  برای ترکیب اجزای نرم افزار در انواع برنامه ها و سرویس های مورد نیاز  ارایه می دهند و به روز نگه داشتن و نگهداری مولفه های نرم افزار را بسیار  آسان می کنند.فرق کانتینر با ماشین مجازی داکر چیست؟Docker یک پروژه منبع باز است که ایجاد کانتینر و برنامه  های مبتنی بر کانتینر را آسان می کند. در ابتدا برای لینوکس ساخته شده است ،  اکنون Docker روی ویندوز و MacOS نیز اجرا می شود. برای درک نحوه کارکرد  Docker ، بیایید نگاهی به برخی از اجزایی که برای ایجاد برنامه های حاوی  Docker استفاده می کنید بیاندازیم.داکرفایلهر کانتینر Docker با یک داکرفایل شروع می شود .  داکرفایل یک فایل متنی است که به شکل قابل فهم نوشته شده است. داکرفایل  شامل دستورالعمل های ساخت ایمیج Docker است. یک داکرفایل سیستم عاملی را  مشخص می کند که در کنار آن زبانها ، متغیرهای محیطی ، مکان پرونده ها ،  پورت های شبکه و سایر اجزای مورد نیاز ، پایه و اساس کانتینر قرار خواهد  گرفت – و البته اینکه کانتینر در صورت اجرای آن داکرفایل در واقع چه کاری  انجام می دهد.ایمیج داکرهنگامی که داکرفایل خود را نوشتید ، از برنامه Docker بیلد  را فراخوانی می کنید تا ایمیجی را براساس آن داکرفایل ایجاد کنید. در حالی  که داکرفایل مجموعه دستورالعملهایی است که نحوه ساخت ایمیج را بیان می کند .  ایمیج Docker یک فایل قابل حمل است که شامل مشخصات اجزای نرم افزار و نحوه  اجرای آن است. از آنجا که یک داکرفایل احتمالاً شامل دستورالعمل هایی در  مورد گرفتن برخی از بسته های نرم افزاری از مخازن آنلاین است ، باید دقت  کنید که نسخه های مناسب آن را صریحاً در داکرفایل مشخص کنید .در غیر این  صورت ممکن است بسته به زمان فراخوانی ، داکرفایل شما ایمیج های متناقضی  تولید کند. اما هنگامی که یک ایمیج ایجاد می شود ، دیگر آن ثابت است.اجرای داکر (Docker Run)Docker run دستوری است که در واقع یک  کانتینر را راه اندازی می کند. هر کانتینر نمونه ای از یک ایمیج است.  کانتینرها بصورت گذرا و موقتی طراحی شده اند اما می توان آنها را متوقف و  دوباره راه اندازی کرد . در این صورت کانتینر در همان حالت متوقف شده  دوباره راه اندازی می شود. بعلاوه ، چندین نمونه کانتینر از یک ایمیج به  طور همزمان قابل اجرا هستند .(به شرطی که هر کانتینر یک نام خاص داشته  باشد). https://virgool.io/d/d5ia74hrilrc/%F0%9F%93%B7%D8%AF%D8%A7%DA%A9%D8%B1%D9%81%D8%A7%DB%8C%D9%84 پروسه شکل گرفتن کانتینتر از داکر فایلداکر هابدر حالی که ساخت کانتینر آسان است ، تصور نکنید که برای  ساختن هر یک از ایمیج های خود باید از ابتدا شروع کنید. Docker Hub یک مخزن  SaaS برای به اشتراک گذاری و مدیریت کانتینرها است ، که در آن ایمیج های  رسمی Docker از پروژه های منبع باز و فروشندگان نرم افزار و ایمیج های غیر  رسمی از عموم مردم را پیدا خواهید کرد. می توانید ایمیج های کانتینر حاوی  کد به درد بخور برای خود را بارگیری کنید ، یا ایمیج های خود را بارگذاری  کنید ، به صورت آزاد به اشتراک بگذارید یا حتی به طور خصوصی ارایه کنید. در  صورت تمایل می توانید یک رجیستری محلی Docker نیز ایجاد کنید . (Docker  Hub در گذشته با ایمیج هایی که با بک دور(ابزاری برای نفوذ به سیستم) تعبیه  شده اند بارگذاری شده اند) با مشکلاتی روبرو شده بود. https://virgool.io/d/d5ia74hrilrc/%F0%9F%93%B7 داکر هاب منبعی برای دانبود ایمیج  های برنامه نویسان به طور رسمی و غیر رسمیموتور داکر (Docker Engine)Docker Engine هسته اصلی Docker است .فناوری اصلی سرویس گیرنده و سرور  که کانتینرها را ایجاد و اجرا می کند. به طور کلی ، وقتی کسی حرفی از داکر  می زند و در مورد شرکت یا پروژه کلی صحبت نمی کند . منظور آنها موتور داکر  است. دو نسخه مختلف از Docker Engine در دسترس است: Docker Engine  Enterprise و Docker Engine Community .Docker Engine CommunityDocker نسخه Enterprise خود را در سال 2017 منتشر کرد . اما پیشنهاد اصلی آن که به Docker Community Edition تغییر  نام یافت . همچنان منبع باز و رایگان است و هیچ ویژگی را در این روند از  دست نداد. در عوض ، Enterprise Edition که هزینه آن برای هر نود 1500 دلار  در سال است . ویژگی های پیشرفته مدیریتی شامل کنترل برای مدیریت کلاستر و  ایمیج و نظارت بر آسیب پذیری ایمیج را به آن اضافه کرد.چگونه داکر جهان کانتینر ها را فتح کرداین ایده که یک پروسه معین را می توان با انزوا از بقیه محیط سیستم اجرا  کرد . برای چندین دهه در سیستم عامل های یونیکس مانند BSD و Solaris تعبیه  شده است. فناوری اصلی کانتینر لینوکس ، LXC ، یک روش مجازی سازی در سطح  سیستم عامل برای اجرای چندین سیستم جداگانه لینوکس در یک میزبان است. LXC  توسط دو ویژگی لینوکس امکان پذیر شده است: namespaces ، که مجموعه ای از  منابع سیستم را جمع می کند. و آنها را به پروسه ای ارائه می دهد تا به نظر  برسد که به آن پروسه اختصاص یافته اند. و cgroups ، که بر جدا کردن و  استفاده از منابع سیستم ، مانند CPU و حافظه ، برای گروهی از فرآیندها حاکم  هستند.کانتینر هاکانتینرها برنامه ها را از سیستم عامل ها جدا می کنند .به این  معنی که کاربران می توانند یک سیستم عامل لینوکس تمیز و کوچک داشته باشند و  سایر موارد را در یک یا چند کانتینر ایزوله اجرا کنند. و به دلیل انتزاع  سیستم عامل از کانتینرها ، می توانید یک کانتینر را به سرورهای مختلف  لینوکس که محیط آن کانتینر را پشتیبانی می کنند انتقال دهید.داکر چندین تغییر قابل توجه در LXC ایجاد کرد که باعث می شود کانتینرها  قابل استفاده و انعطاف پذیرتر باشند. با استفاده از کانتینرهای Docker . می  توانید کار را با سرعت و سهولت بیشتری نسبت به آنچه با استفاده از ماشین  های مجازی انجام دهید به عمل بیاورید. بارگیری ، تکثیر ، جابجایی و پشتیبان  تهیه کنید. Docker انعطاف پذیری شبه ابر را به هر زیرساختی که قابلیت راه  اندازی کانتینر را داشته باشد به ارمغان می آورد. ابزار ایمیج کانتینر  Docker همچنین پیشرفتی نسبت به LXC بود که به توسعه دهنده اجازه می داد  کتابخانه هایی از ایمیج ها بسازد ، از چندین ایمیج برنامه بسازد و آن  کانتینر و برنامه ها را در زیرساخت های محلی یا راه دور راه اندازی کند. https://virgool.io/d/d5ia74hrilrc/%F0%9F%93%B7%DA%A9%D8%A7%D9%86%D8%AA%DB%8C%D9%86%D8%B1%D9%87%D8%A7 کانتینر هاDocker Compose ، Docker Swarm و KubernetesDocker همچنین هماهنگی بین کانتینرها را آسانتر می کند . بنابراین با  قرار دادن کانتینرها روی هم ، پشته های برنامه را می سازد. Docker Compose  توسط Docker ایجاد شده است تا روند توسعه و آزمایش برنامه های چند کانتینری  را ساده کند. این یک ابزار خط فرمان است ، که یادآور داکر ساده است . و یک  فایل توصیفگر قالب بندی شده خاص را برای جمع آوری برنامه ها از چندین  کانتینر و اجرای آنها به صورت هماهنگ بر روی یک هاست مهیا می کند.نسخه های پیشرفته تری از این رفتارها – که container orchestration نامیده می شود . توسط محصولات دیگری مانند Docker Swarm و Kubernetes  ارائه می شود . اما داکر اصول اولیه را ارائه می دهد. با اینکه Swarm از  پروژه Docker بیشتر رشد کرد و از آن خارج شد . Kubernetes به عنوان پلتفرم  انتخابی Docker شناخته شده است.مزایای داکرکانتینرهای داکر روشی را برای ساخت برنامه های شرکتی و  تجارتی ارائه می دهند .که جمع آوری ، نگهداری و جابجایی آنها آسان تر از  نمونه های معمولی آنها است.کانتینرهای داکر امکان ایزوله را فراهم می کنندکانتینرهای داکر برنامه ها را نه تنها از یکدیگر ، بلکه از سیستم عامل  نیز جدا می کنند. این امر نه تنها باعث ایجاد پشته نرم افزاری تمیزتر می  شود . بلکه به راحتی می توان نحوه استفاده یک برنامه کانتینرایز شده از  منابع سیستم – CPU ، GPU ، حافظه ، I / O ، شبکه و غیره را تعیین کرد.  همچنین می توان از جدا بودن داده ها و کد مطمعن بود.کانتینرها قابلیت جابجایی را فراهم می کنندیک کانتینر Docker بر روی هر دستگاهی که از محیط داکر پشتیبانی می کند ،  کار می کند. لازم نیست برنامه ها به سیستم عامل میزبان گره خورده باشند .  بنابراین هم محیط برنامه و هم محیط سیستم عامل اصلی را می توان تمیز نگه  داشت.به عنوان مثال ، یک کانتینر MySQL برای لینوکس در اکثر سیستم های لینوکس  که از کانتینرها پشتیبانی می کنند اجرا می شود. تمام وابستگی های برنامه  معمولاً در یک کانتینر قرار می گیرند.برنامه های مبتنی بر کانتینر را می توان به  راحتی از سیستم های روشن به محیط های ابری یا از لپ تاپ های برنامه نویسان  به سرورها منتقل کرد . به شرطی که سیستم هدف از Docker و سایر ابزارهای شخص  ثالثی که ممکن است از آن استفاده شود پشتیبانی کند ، مانند Kubernetes .به طور معمول ، ایمیج های کانتینر داکر باید برای یک سیستم عامل خاص  ساخته شوند. به عنوان مثال یک کانتینر ویندوز در لینوکس اجرا نمی شود و  بالعکس. پیش از این ، یکی از راه های دور کردن این محدودیت ، راه اندازی یک  ماشین مجازی بود که نمونه ای از سیستم عامل مورد نیاز را اجرا می کرد و  کانتینر را در ماشین مجازی اجرا می کرد.با این حال ، تیم Docker از آن زمان راه حل ظریف تری به نام Manifest را  ابداع کرده است. که به شما امکان می دهد تصاویر چندین سیستم عامل در یک  ایمیج کنار هم قرار دهید. مانیفست ها هنوز در مرحله آزامایش در نظر گرفته  می شوند . اما آنها نشان می دهند که چگونه کانتینرها می توانند به عنوان یک  راه حل کاربردی برای کراس پلتفرم استفاده شوند.کانتینر داکر قابلیت ترکیب پذیری را فراهم می کندبیشتر برنامه های تجاری از چندین مولفه جداگانه در پشته تشکیل شده اند .  وب سرور ، پایگاه داده ، حافظه پنهان در حافظه. کانتینر امکان ترکیب این  اجزا را به صورت یک واحد کاربردی با اجزای قابل تغییربه شکل آسان فراهم می  کند. هر جز توسط کانتینتر متفاوتی تهیه می شود و می تواند مستقل از اجزای  دیگر نگهداری ، به روز ، عوض و یا اصلاح شود.این را مدل ریز سرویس ها از طراحی برنامه می نامند . با تقسیم قابلیت  های کاربردی به سرویس های مجزا و خودمختار ، مدل ریز سرویس ها پادزهری برای  کند بودن فرایندهای توسعه سنتی و برنامه های یکپارچه انعطاف ناپذیر ارائه  می دهد. کانتینرهای سبک و قابل حمل – ساخت و نگهداری برنامه های مبتنی بر  ریز خدمات را آسان می کنند.کانتینر داکر تنظیم و مقیاس بندی را آسان می کنداز آنجا که کانتینرها سبک هستند و بار کمی را تحمیل می کنند ، امکان راه  اندازی تعداد بیشتری از آنها در یک سیستم عامل وجود دارد. اما همچنین می  توان از کانتینرها برای مقیاس گذاری یک برنامه در میان کلاستر های سیستم و  افزایش سطح یا پایین آوردن تقاضا برای صرفه جویی از منابع استفاده کرد.بیشتر نسخه های سازمانی ابزارهای استقرار ، مدیریت و مقیاس پذیزی  کانتینرها از طریق پروژه های شخص ثالث ارائه می شود. اصلی ترین آنها  Kubernetes گوگل است ، سیستمی برای خودکار کردن نحوه استقرار و مقیاس بندی  کانتینرها ، همچنین نحوه اتصال ، تعادل بار و مدیریت آنها. Kubernetes  همچنین روش هایی را برای ایجاد و استفاده مجدد از برنامه های چند کانتینری  یا .”نمودارهای Helm”. ارائه می دهد تا پشته های پیچیده برنامه در صورت  تقاضا ساخته و مدیریت شود.Docker همچنین شامل سیستم ارکستراسیون داخلی خود ، حالت Swarm است که  هنوز هم تقاضای آن چنانی برای استفاده از آن وجو ندارد. همانطور که گفته شد  ، Kubernetes به عنوان گزینه اول انتخاب شده است. در واقع ، Kubernetes  همراه با نسخه اصلی Docker است.مشکلات داکرکانتینر بسیاری از مشکلات را برطرف می کنند ، اما همه  آنها را خیر. برخی از نقایض آن از نظر طراحی است ، در حالی که برخی دیگر  نقایض طراحی محصولات جانبی آن است.کانتینرهای داکر ماشین مجازی نیستندرایج ترین اشتباه مفهومی مردم با کانتینر این است که آنها را با ماشین  های مجازی برابر می کنند. با این حال ، از آنجا که کانتینرها و ماشین های  مجازی از مکانیزم های مختلف جداسازی استفاده می کنند ، مزایا و معایب آنها  کاملاً متفاوت است.ماشین های مجازی درجه بالایی از ایزوله را برای فرآیندها ایجاد می کنند ،  زیرا آنها در سیستم عامل خود اجرا می شوند. آن سیستم عامل نیز لزوماً همان  موردی نیست که روی هاست اجرا می شود. یک ماشین مجازی ویندوز می تواند از  طریق یک Hypervisor لینوکس و بالعکس اجرا شود.در مقابل ، کانتینرها از قسمتهای کنترل شده از منابع سیستم عامل میزبان  استفاده می کنند. بسیاری از برنامه ها به طور کاملاً مدیریت شده از هسته  مشابه سیستم عامل استفاده می کنند. در نتیجه ، برنامه های حاوی کانتینر  کاملاً جدا از ماشین های مجازی نیستند ، اما ایزوله ی کافی را برای اکثر  قریب به اتفاق حجم کار فراهم می کنند.کانتینر داکر سرعت تخیلی را فراهم نمی کنندکانتینرها تقریباً سرباری ماشین های مجازی را ندارند اما تأثیر عملکرد  آنها بر سیستم عامل همچنان قابل توجه است . اگر کاری دارید که به سرعت بالا  نیاز دارد ، یک کانتینر ممکن است شما را به اندازه کافی نزدیک کند .-  بسیار نزدیکتر از یک ماشین مجازی -. اما هنوز هم کی سرباری بر سیستم خود  خواهید دید.کانتینر های داکر فاقد حالت و تغییرناپذیر هستندکانتینرها از ایمیجی که محتوای آنها را توصیف می کند ، راه اندازی و  اجرا می شوند. آن ایمیج به طور پیش فرض غیر قابل تغییر است – یعنی پس از  ایجاد ، تغییر نمی کند.در نتیجه ، کانتینر ها ماندگاری ندارند. اگر یک نمونه کانتینر را شروع  کردید . آن را کامل پاک کنید و دوباره راه اندازی کنید ، نمونه کانتینر  جدید هیچکدام از اطلاعات مربوط به نمونه قدیمی را نخواهد داشت.این دیگر تفاوت کانتینر ها با ماشین های مجازی است. یک ماشین  مجازی به طور پیش فرض در طول مراحل ماندگاری دارد ، زیرا دارای سیستم فایل  خاص خود است. با یک کانتینر ، تنها چیزی که باقی می ماند ایمیجی است که  برای راه اندازی نرم افزاری که در کانتینر قرار دارد استفاده می شود. تنها  راه تغییر آن ایجاد ایمیج جدید و اصلاح شده از کانتینر است.از طرف مثبت ، بی حالت بودن کانتینر ها باعث می شود محتوای کانتینر ها  سازگارتر باشد. و ترکیب آنها به طور قابل پیش بینی در پشته های برنامه راحت  تر باشد. همچنین توسعه دهندگان را مجبور می کند داده های برنامه را از کد  برنامه جدا نگه دارند.اگر می خواهید کانتینر هر نوع حالت ماندگاری داشته باشد ، باید آن  اطالعات را در جای دیگری قرار دهید. این می تواند یک پایگاه داده یا یک  فضای ذخیره سازی مستقل باشد که در زمان راه اندازی به کانتینر متصل می شود.کانتینر های داکر ریز سرویس نیستندمن قبلاً اشاره کردم که چگونه کانتینر ها برای ایجاد برنامه های ریز  سرویس ها خود را اجاره می دهند.اما این بدان معنا نیست که استفاده از یک  برنامه و قرار دادن آن در یک کانتینر باعث ایجاد خودکار یک ریز سرویس می  شود. یک برنامه ریز سرویس ، خواه در کانتینر ها مستقر شده باشد یا نه .  باید طبق الگوی طراحی ریز سرویس ساخته شود. این است که می توان با  کانتینرایز کردن یک برنامه به عنوان بخشی از فرآیند تبدیل آن به یک  میکروسرویس قدم برداشت. اما این تنها یک قدم از بسیاری از قدمهای بعدی است.هنگامی که ماشین های مجازی آمدند . امکان جدا کردن برنامه ها از سیستم  هایی که روی آنها کار می کردند ،را ایجاد کردند. کانتینرهای داکر این ایده  را چند مرحله جلوتر می برند . نه تنها با داشتن وزن سبک تر ، قابل حمل تر و  سریعتر از ماشین های مجازی ، بلکه با ارائه مقیاس بندی ، ترکیب و ویژگی  های مدیریتی که ماشین های مجازی قادر به انجامش نیستند.آموزش داکربرای آموزش کامل داکر به دوره دوبله شده آموزش جامع داکر توسط تیم یودمی ایران مراجعه کنید.</description>
                <category>udemyiran</category>
                <author>udemyiran</author>
                <pubDate>Wed, 26 May 2021 01:53:15 +0430</pubDate>
            </item>
            </channel>
</rss>