رفتن به مطلب
مرجع رسمی سی‌پلاس‌پلاس ایران

کامبیز اسدزاده

بنیـــان گذار
  • تعداد ارسال ها

    505
  • تاریخ عضویت

  • روز های برد

    266

نوشته‌های وبلاگ ارسال شده توسط کامبیز اسدزاده

  1. کامبیز اسدزاده
    بیست و چهارمین نمایشگاه بین المللی الکترونیک، کامپیوتر و تجارت الکترونیک
    ششم الی نهم مرداد 1397 
    محل دائمی نمایشگاه های بین المللی تهران
     
    نمایشگاه الکامپ بزرگترین رویداد تجاری در عرصه تولید و عرضه محصولات و خدمات صنایع الکترونیک و کامپیوتر کشور است که همه ساله با حضور گسترده و چشمگیر دست اندرکاران این حوزه و مخاطبان آنها در محل دائمی نمایشگاه های بین المللی تهران برگزار می گردد. در این نمایشگاه آخرین دستاوردهای این صنعت اعم از سخت افزار و نرم افزار به علاقمندان عرضه می گردد و فرصتی بی بدیل برای تبادل نظر و مذاکره در اختیار شرکت کنندگان قرار می گیرد. دستاوردهای این تعاملات نقطه آغاز بسیاری از همکاری های تجاری و تکنولوژیکی فیمابین دست اندرکاران حوزه الکترونیک و کامپیوتر است که نقش معنی داری در تحرک بخشیدن به این حوزه ی صنعت و تولیدکنندگان و بازرگانان شاغل در آن ایفاء می نماید. گشایش های اخیر در حوزه ی بین الملل و اراده ملموس دولت تدبیر و امید، که خود نیز با پیگیری استقرار دولت الکترونیک در زمره ی بزرگترین مشتریان بالقوه این حوزه می باشد، در افزایش حضور صنایع کشور در عرصه های بین المللی، زمینه ی شکوفایی این حوزه از صنعت و فن آوری را بیش از پیش فراهم نموده و انتظار می رود در دوره آتی نمایشگاه الکامپ که در فاصله ۶ تا ۹ مرداد ماه ۹۷ برگزار خواهد گردید، فرصتی تکرار نشدنی را در اختیار فعالان این حوزه در داخل و خارج کشور قرار دهد تا با یافتن مخاطبان بالقوه خود، سطح تعامل بین المللی خویش را بطور چشمگیری ارتقاء بخشند.
    به گزارش روابط عمومی سازمان نظام صنفی رایانه‌ای کشور، الکام ترندز با استقرار در سالن 27 نمایشگاه بین‌المللی الکامپ بر 6 محور اصلی هوش مصنوعی و یادگیری ماشین، بلاک چین و رمز ارزها، رایانش ابری، پردازش موازی و ابر پردازشگرها، اینترنت اشیا و کلان داده‌ها (Big Data) تمرکز دارد. آن دسته از علاقه‌مندانی که تاکنون در بخش‌ها و سالن‌های دیگر نمایشگاه ثبت‌نام کردند و حوزه فعالیت‌هایشان با 6 محور اصلی الکام ترندز مرتبط است نیز می‌توانند به این سالن منتقل شوند و در کنار دیگر فعالانی که به آینده فناوری اطلاعات و ارتباطات در کشور می‌پردازند بپیوندند. همین‌طور شرکت‌های فعال در زمینه گرایش‌های نو و فناوری‌های نوین که تاکنون در الکامپ ثبت‌نام نکردند نیز قادر هستند تا پنج‌شنبه چهاردهم تیرماه ضمن هماهنگی با دفتر ستاد اجرایی نمایشگاه الکامپ امسال با شماره‌های 88734035 تماس حاصل کنند و از طریق ایران الکامپ تقاضای ثبت‌نام کنند.
  2. کامبیز اسدزاده
    دو هفته پیش، نشست ۲۰۱۸ سی‌پلاس‌پلاس آغاز شد. شرکت کننده‌ها مدال‌های خودشان را دریافت کردند چرا که همه‌ چیز با هماهنگی بسیار خوبی به پایان رسید. این رویداد به عنوان یکی از چندین رویداد مهمC++ بشمار می‌رود که هرساله توسط حامیان و علاقه‌مندانش برگزار می‌شود.
     
    سخنان کلیدی
    امسال در این رویداد سه یادداشت کلیدی وجود داشت، که با حضور Andrei Alexandrescu ،Lisa Lippincott و Nicolai Josuttis ارائه شد.

    اولین سخنران Andrei Alexandrescu بود، او این کنفرانس را با افکار و اندیشه‌های خودش برای شروع آغاز کرد عنوان موضوع آن به بَد بودنِ کپی constexpr از static if اشاره می‌کرد. او یک سخنران سرگرم کننده است، بنابراین سخنرانی او بسیار طبیعی در مورد یادداشت‌های خودش منعکس می‌شد. همچنین او به عنوان یک توسعه‌دهندهٔ ++C به نقاط بسیاری اشاره کرد که کمیتهٔ استاندارد سازی زبان حرف‌های او را تایید می‌کرد.

    سخنران دوم Lisa Lippincott روز دوم را با یک سخنرانی آغاز کرد که دیدگاه‌های مختلفی در مورد محاسبات و منطق که در آن به کار می‌رود ارائه داد. زمانی که مُجری لیزا را دعوت کرد، می‌دانست که این موضوع به عنوان یک نکته مهم برای فکر کردن است، چیزی که همه نمی‌توانند به طور مستقیم آن را درک کنند و به آن دسترسی پیدا کنند. اما این تلنگری برای نحوهٔ درک کُد از دیدگاه ریاضی و دیدگاه جدیدی بود.

    سخنران سوم و آخر Nicolai Josuttis بود که در مورد، او اولین سخنران در نشست Hartmut Kaiser در سال ۲۰۱۴ بود. در آن سخنرانی بسیار خوب درخشیده، بنابراین در قسمت سوم نقص‌هایی را با جزئیات در مورد نقاط خشن ++C نشان داد. این سخنرانی بسیار صادقانه بود! چرا که بسیاری از جزئیات خشن بودن سی‌پلاس‌پلاس را عنوان کرد که همگی با آن موافق بودند.
     
    مذاکرات، مسابقه و گفتگوها‌ی چند دقیقه‌ای
    جلسات و رویداد‌های مرتبط با ++C همیشه گفتگو‌های بسیار خوبی دارد، و با یک مسیر مشخص که هدفش آوردن سخنرانان جدید با دیدگاه‌های جدید است برگزار می‌شود. بازخورد سخنران‌ها در این رویداد خوب بود چرا که به برخی از نکات در مورد چگونگی بهبود‌ها اشاره کردند.


    تصویر بالا مربوط به Hana Dusíková است که می‌توان به آن بهترین نمره را داد. بهترین سخنرانی هم مربوط به  Andrei Alexandrescu بود که دنبال شد. در اولین عصر این رویداد، امتحان (Quiz) برجسته‌ترین مورد رویداد در آن روز بود. سازماندهی آن توسط Diego  و اسپانسری آن توسط Conan است که برای چند سال اخیر حمایت شده است. به نظر می‌رسید که سوالات امتحانی این سال سخت‌تر از سوالات رویداد قبلی در سال گذشته بوده است. اما بار دیگر این سرگرمی ترکیب بسیار خوبی با ترس از سی‌++ را داشت.
    هر یک از سوالات امتحانی یک خروجی از کُد را تولید می‌کردند، که هر گروه باید برای کسب امتیاز آن را می‌نوشتند. ده نوع کُد امتحانی وجود داشت که تهیه کنندهٔ گزارش برای به تصویر کشیدن آن‌ها زیاد خوب عمل نکرده است. بنابراین تصویر زیر مربوط به سوالات چالشی در مورد سی‌پلاس‌پلاس است:

    گفتگو‌های کوتاه در طی جلسات سی‌پلاس‌پلاس صورت می‌گیرد. اما در سال‌های گذشته روش به گونه‌ای تغییر یافته است که سوالات پرسیده شده باید با گفتگو‌ها و سوالات دیگر رقایبت می‌کردند. با این حال این یک قالب و روش جالبی بود که نتیجهٔ موفقیت آمیزی را داشت. همهٔ شرکت کننده‌ها می‌توانستند این سوالات رو ببینند و در مورد آن‌ها تفکر کرده و پاسخ دهند.
    نکته: شما می‌توانید تصاویر ویدیویی مربوط به این رویداد را از کانال رسمی آن در یوتیوب دریافت کنید.
     
  3. کامبیز اسدزاده
    یکی از دغدغه‌های کارفرمایان در حوزه منابع انسانی، علاوه بر استخدام نیروی متخصص، تصمیم‌گیری برای ادامهٔ همکاری با کارمندان فعلی و مشخص نمودن اضافه حقوق و مزایای شغلی است. کارفرمایان تمایل دارند بدانند واقعا کدام یک از کارمندان شرکت، مستحق دریافت اضافه حقوق است و کدام یک فردی ارزشمند برای شرکت محسوب می‌شود که ارزش سرمایه‌گذاری دارد و حضورش برای شرکت مثمر فایده است. کارفرمایان علاقه‌ دارند تا بدانند کدام یک از کارمندان شرکت، عملکرد بهتری در آینده از خود نشان می‌دهند. پیش‌بینی وضعیت عملکرد آیندهٔ کارمندان و مشخص نمودن دورنمای کاری آنها بسیار حائز اهمیت است.

    همیشه با بررسی وضعیت و عملکرد گذشتهٔ فرد، نمی‌توان در مورد آیندهٔ او و موفقیت‌هایی که قرار است به دست بیاورد، پیش‌بینی کرد. در شرکت IBM، نه تنها عملکرد و دستاوردها یا خطاهای گذشته پرسنل مورد بررسی قرار می‌گیرند، بلکه در مورد آیندهٔ آنها نیز پیش‌بینی‌‌هایی انجام می‌شود و مشخص می‌شود فردی که اکنون در شرکت مشغول فعالیت است در آینده چه عملکردی خواهد داشت. واقعا شرکت IBM چگونه می‌تواند آیندهٔ کارمندان خود را قضاوت کند؟ در اصل IBM چگونه می‌تواند آینده را پیش‌بینی کند؟ همهٔ آنچه آی‌بی‌ام به انجام می‌رساند در یک کلمه خلاصه شده است: واتسون.
    تجزیه و تحلیل واتسون (Watson Analytics) با استفاده از هوش مصنوعی، به تجربیات گذشتهٔ افراد و پروژه‌هایی که پیش از این انجام داده‌اند، توجه نشان داده ودر عین حال مهارت‌های بالقوه و کارهایی که در آینده می‌تواند به انجام برساند را مد نظر می‌گیرد. واتسون مشخص می‌کند هر یک از پرسنل، چه مهارت‌ها و ویژگی‌های بالقوه‌ای برای ارائه به شرکت IBM دارد که در آینده می‌تواند از آن‌ها در جهت منافع شرکت بهره‌برداری کند. همچنین واتسون، سیستم آموزش داخلی IBM را نیز بررسی می‌کند تا ببیند آیا کارمند مربوطه مهارت‌های جدیدی را کسب کرده است یا خیر. مدیران IBM‌ پس از ارزیابی امتیازهایی که واتسون به هر فردی می‌دهد، میزان پاداش یا وضعیت اضافه حقوق وی را مشخص می‌کنند. میزان افزایش حقوق فرد با توجه به امتیازهایی که واتسون برایش در نظر می‌گیرد، تعیین می‌شود.
    نیکل لاموراکس، معاون مدیرعامل شرکت IBM‌ در مورد بررسی وضعیت کارمندان از نظر اینکه حضور آنها به نفع شرکت است و منافعی را به دنبال دارد یا به ضرر شرکت تمام می‌شود، این چنین اظهار نظر کرده است:
    شرکت آی‌بی‌ام ادعا می‌کند که واتسون در مقایسه با بررسی‌ها و تجزیه‌ و تحلیل‌های کارشناسان منابع انسانی، از دقت ۹۶ درصدی برخوردار است و با چنین دقتی می‌تواند امتیاز عملکردی کارمندان را مشخص کند. در مدل‌های مدیریت سنتی، عموما کارفرمایان با توجه به محصولات و دستاوردهای گذشتهٔ پرسنل، برای آنها پاداش و اضافه حقوق مشخص می‌کنند و سابقهٔ افراد تنها معیار ارزیابی برای دریافت حقوق و پاداش است. در این سیستم جدید مبتنی بر هوش مصنوعی، گذشتهٔ افراد تنها مقدمه‌ای برای تعیین بقیه موارد است و در اصل همهٔ داستان نیست بلکه پیش بینی وضعیت آیندهٔ فرد نیز در تعیین حقوق و مزایای شغلی فعلی وی موثر هستند.
    رویکردهای مدیریت سنتی، برای زمان‌هایی که وظایف و مسئولیت‌های شغلی نسبتا ثابت هستند و هیچ‌گونه تغییری در کار و وظایف محول شده به فرد رخ نمی‌دهد، شاید کاربرد داشته باشد ولی به اعتقاد لاموراکس، با چنین رویکردی نیمه عمر مهارت‌ها، کوتاه و کوتاه‌تر می‌شود. توانمندی‌ها و کارهایی که کارمندان باید بتوانند در آینده به انجام برسانند، بیشتر از مهارت‌های گذشتهٔ آنها، اهمیت دارد. در سیستم مدیریتی جدید، کارمندان تشویق می‌شوند مهارت‌های جدیدی را بیاموزند و از آنجایی که می‌دانند سیستم امتیازدهی به یادگیری مهارت‌های جدید آنها امتیاز می‌دهد، برای یادگیری انگیزه دارند.
    بر اساس نظرسنجی انجام شده توسط شرکت مشاور Willis Towers Watson از بیش از ۲۰۰۰ سازمان و شرکت مختلف، مشخص شد که بیش از ۴۰ درصد پاسخ‌دهندگان در حال برنامه‌ریزی سیستمی هستند که مهارت‌های بالقوه و مهارت‌های آیندهٔ پرسنل شرکت را در ارزیابی کارمندان مورد توجه قرار دهد.
    تغییر سبک مدیریتی، از مدل سنتی به مدل مدیریتی بررسی عملکرد نیروی انسانی مبتنی بر مهارت‌ها، کمک می‌کند تا کارفرمایان بتوانند شکاف موجود در سیستم خود را از لحاظ مهارت آموزی پرسنل حل و فصل کنند. فدراسیون ملی کسب و کار مستقل، از ماه ژوئن بررسی‌هایی را به انجام رساند و متوجه شد که در بیش از یک سوم کسب و کارهای کوچک، دارای پست‌های شغلی هستند که کسی در آن‌ها مشغول به کار نیست و یکی از مشکلات اصلی شرکت‌ها کمبود کارگر و نیروی انسانی ثابت و ماهر است. کارفرمایان ادعا می‌کنند که نمی‌توانند افراد مناسبی را در پست‌های شغلی ثابت استخدام کنند و از آنجایی که بیشتر کارگرانی که در چنین پست‌هایی مشغول کار می‌شوند تلاش لازم را از خود نشان نمی‌دهند، کارفرمایان نمی‌توانند دستمزدشان را اضافه کنند یا پاداشی برای آنها در نظر بگیرند. در نهایت می‌بینیم که برای چنین مشاغلی نه تنها کارفرمایان با مساله استخدام نیروی کاری ثابت مواجه هستند، بلکه برای انجام کار، نیروی ماهر و متخصص هم در اختیار ندارند.
    IBM، معتقد است که برای پر کردن پست‌های شغلی شرکت، متقاضیان زیادی که دارای مهارت‌های لازم باشند و بتوانند نقش‌های مهمی را در بخش فناوری بر عهده بگیرند، ندارد. به همین دلیل، آی‌بی‌ام به کارمندان فعلی خود دورنمایی از پست‌های شغلی مورد نیازش در آینده را نشان می‌دهد و برای آنها مشخص می‌کند که اگر بخواهند در آینده در آن پست‌های شغلی مشغول فعالیت شوند، باید چه مهارت‌هایی بیاموزند. با چنین رویکردی هم کارمندان به‌خوبی می‌دانند که برای ارتقا شغلی و دستیابی به موقعیت بهتر و حقوق و مزایای بالاتر و بیشتر، باید چه مهارت‌هایی را بیاموزند و هم می‌دانند چه دورنمای شغلی در انتظار آنها است. آی‌بی‌ام ادعا می‌کند که هر یک از کارمندان شرکت، هر سال به طور متوسط، حدود ۶۰ ساعت آموزش می‌بینند. 
    همه شرکت‌ها از روش تجزیه و تحلیل برای پیش بینی وضعیت آینده‌ کارمندان خود استفاده نمی‌کنند. شرکت Intern Group که یکی از شرکت‌های ‍رورش کارآموز برای معرفی نیروی متخصص به شرکت‌های مختلف است، حدود ۸۰ نفر کارآموز دارد و معتقد است که کارآموزان باید حتما ۱۵ مهارت اصلی را برای موفقیت در کسب و کار ۱۰۰ سال آینده‌ فرا گیرند. مهارت‌هایی همچون انعطاف‌پذیری و مهارت‌های ارتباطی جزو مهارت‌های اصلی برای موفقیت در بازار کار ۱۰۰ سال آینده است. 
    دیوید لویید، مدیرعامل این شرکت با استفاده از سیستم امتیازدهی، ۱۰ درصد از بهترین نیروهای شرکت را که به اعتقاد وی، نیروهایی با استعداد هستند، شناسایی می‌کند و معتقد است که شرکت باید تمام تلاش خود را برای حفظ این ۱۰ درصد نیروی ماهر و ارتقا آنها به کار ببندد. این کارمندان از طریق سیستم خدمات داخلی شرکت، آموزش می‌بینند و فرصت‌های جدیدی برای دریافت پاداش و اضافه حقوق پیدا می‌کنند. در اصل سیستم امتیازدهی می‌تواند وضعیت آیندهٔ کارمندان را پیش‌بینی کند و با توجه به آن فرصت‌های جدیدی در اختیار آنها قرار بدهد. البته دیوید لویید، فرصت مهارت آموزی را در اختیار تمام کارمندان شرکت قرار می‌دهد. وی معتقد است:
     
  4. کامبیز اسدزاده
    در گذشته، سیستم های نهفته اغلب سیستم عامل های بسیار کوچک بدون فایل سیستم را اجرا می کردند و یا توسط bare metal (به عملیات حذف رابط برای صحبت با سخت افزار و کم کردن پروسه، bare metal گفته می شود) اجرا می شدند. با افزایش قدرت و کاهش هزینه ی سخت افزار، برای مثال سیستم مجتمع در تراشه (system on chip, SOCs)، بسیاری از سیستم های نهفته به سمت تبدیل شدن به یک سیستم عامل کامل که اکثرا تحت لینوکس هستند، پیش میروند.
    یکی از مزیت های اجرای لینوکس بر روی سیستم نهفته، در دسترس بودن تمامی ابزار های آشنای لینوکس در این محیط است.  در حالی که ممکن است محصول نهایی همراه آن ها عرضه نشود، شما به عنوان یک توسعه دهنده می توانید به شِل (shell)، دستورات اساسی و یک پشته شبکه کامل دسترسی داشته باشید. اگر اپلیکیشن نسبتا کوچک باشد، حتی ممکن است که کد بر روی یک سیستم نهفته، مانند Raspberry Pi، کامپایل شود.
    در این بخش، من بر برخی از مواردی که به طور خاص برای سیستم های نهفته مفید هستند، تمرکز خواهم کرد. این موارد شامل برنامه هایی جهت اجرا بر روی سیتم های نهفته یا ابزار هایی جهت اجرا بر روی ماشین های توسعه ی جداگانه است که برای توسعه و یا ارتباط با سیستم های نهفته مفید هستند.
     
    ابزار BusyBox
    همانطور که اشاره شد، دسترسی به شِل و دستورات لینوکسی/یونیکسی (برای مثال ls، grep و ...) برای سیستم های نهفته عموما مفید است. BusyBox ابزار های رایج یونیکس را در یک سیستم اجرایی کوچک فراهم می آورد. این دستورالعمل ها عمدتا جایگزینی برای دستورات کامل یونیکسی هستند که هم رایج اند و هم برخی گزینه های کم کاربرد را حذف کرده اند.
    این حالت به طور قابل توجهی سبب کوچکتر شدن رد پای کلی (در حافظه و فضای سیستم فایل) می شود که به طور تقریبی شامل 300 دستور و قابل تنظیم است، بنابراین شما می توانید دستورات مورد نظر را در زمان کامپایل اضافه یا حذف کنید.
     
    ابزار Minicom
    اغلب اوقات نیاز به برقراری ارتباط با سیستم نهفته از طریق یک رابط سریال وجود دارد. این نیاز ممکن است قبل از اینکه سیستم در حال اتصال به شبکه و در حال اجرا باشد، یا برای دسترسی به بارگذاری بوت صورت گیرد.
    برای انجام این کار یک برنامه شبیه ساز ترمینال در سمت کامپیوتر میزبان استفاده می شود. به نظر می رسد که Minicom شبیه ساز ترمینال استاندارد defacto برای لینوکس است. با وجود اینکه غیر گرافیکی است و استفاده از آن سخت است، شامل مجموعه ای از ویژگی های غنی است که ارزش صرف زمان برای یادگیری نحوه ی استفاده از آن را دارد.
    در پلتفرم ویندوز، ابزار استاندارد HyperTerminal بود، اما با شروع با ویندوز 7 دیگر پشتیبانی نشد یا در ویندوز گنجانده نشده است. شما می توانید نسخه تجاری HyperTerminal را که پشتیبانی می شود خریداری کنید یا از یکی از چندین برنامه های دیگر شبیه ترمینال استفاده کنید. اگر شما یک کپی از ویندوز XP دارید، می توانید فایل های مناسب (hypertrm.dll و hypertrm.exe) را به یک سیستم جدیدتر (از جمله ویندوز 10) کپی کنید و عموما کار می کند حتی اگر پشتیبانی نمی شود.
      
    ابزار ssh/sftp
    به طور معمول سیستم نهفته از شبکه پشتیبانی می کنند و اغلب این روش، ترجیحی برای انتقال فایل ها به سیستم در طول توسعه است. شما می توانید سرور ssh بر روی دستگاه اجرا کنید و سپس از ssh برای دسترسی به سیستم از یک دستگاه توسعه استفاده کنید. برنامه sftp نیز می تواند مفید باشد، ارائه یک رابط مشابه به ftp (برنامه انتقال فایل)، اما با استفاده از پروتکل امن تر ssh.
    اکثر محیط های یکپارچه ی توسعه نرم‌افزار (IDE)، مانند Qt Creator، با استفاده از ssh یا sftp برای انتقال فایل ها و اجرای دستورات از راه دور، از طریق یک رابط کاربری گرافیکی که معمولا ساده تر از فراخوانی دستورات به طور مستقیم است، پشتیبانی می کند. سرور های ssh جایگزینی وجود دارند که می توانند سبک تر و کم حجم تر از سرورهای کامل مانند OpenSSH  و مناسب تر برای اجرای سیستم جاسازی شده. یک انتخاب محبوب Dropbear است.
     
    ابزار Adb
    Android Debug Bridge (adb) یک ابزار خط فرمان برای برقراری ارتباط با یک دستگاه برای انجام اقدامات مختلف مانند نصب، اشکالزدایی و دسترسی به شِل است. این یک ابزار استاندارد برای توسعه در اندروید است و در اندروید SDK گنجانده شده است. Adb همچنین می تواند در سیستم های غیر اندرویدی استفاده شود.
     
    ابزار Yocto bitbake
    پروژه Yocto یک ابتکار منبع باز است که قالب ها، ابزار ها و روش های ایجاد یک سیستم مبتنی بر لینوکس را برای محصولات نهفته فراهم می کند. این شرکت در سال 2010 به عنوان همکاری میان بسیاری از تولید کنندگان سخت افزار، فروشندگان سیستم عامل های open source و شرکت های الکترونیک تاسیس شد. Qt Company آن را به عنوان پایه Qt تجاری خود برای سیستم های نهفته، boot2qt استفاده می کند.
     
    Buildroot
    Buildroot یکی دیگر از ابزارهای رایج برای سیستم های نهفته برای تولید یک toolchain کامپایل چند سکویی، سیستم فایل ریشه، تصویر هسته و بوت لودر است. این ابزار قدرتمندتر از Yocto است، اما می تواند ساده تر از آن استفاده شود. انتخاب بین Yocto و buildroot، معمولا در ارزش و كيفيت تكنيكي خلاصه نميشود، بلكه انچه توسط bsp vendor ساپورت ميشود اهميت دارد. 
  5. کامبیز اسدزاده
    مهندسی ویژگی‌ها (FE) بخش بزرگی از یادگیری ماشین (ML) و یادگیری عمیق است. مقاله فوق را برای آشنایی بیشتر با اینکه ویژگی مهندسی چگونه به توسعه‌دهنگان در کار با داده کمک می‌کند مطالعه کنید.
    داده‌ها بدون توجه به اندازه و مقایس کسب‌و‌کار‌های مُدرن، شرکت‌ها و سازمان‌ها به عنوان دارایی از نوع طبقه‌-اولِ آن‌ها تبدیل شده است. هر سیستم هوشمند، صرف نظر از پیچیدگی آن، باید بر اساس داده باشد.  در قلب هر سیستم هوشمند، ما یک یا چند الگوریتم بینش داده‌ای را بر اساس  مجموعه‌ای از داده‌های یادگیری، مانند یادگیری ماشین، یادگیری عمیق و یا روش‌های آماری استفاده می‌کنیم که این اطلاعات را برای جمع آوری دانش و ارائه بینش هوشمند بیش از یک دوره زمانی نیاز داریم. الگوریتم‌ها خودشان کاملاً مجزا کار می‌کنند و نمی‌توانند خارج از جعبه داده‌های خام که برای آن‌ها مشخص شده است کار کنند.
    هر سیستم بینش اطلاعاتی هوشمند، اساساً شامل یک خط یا نقطهٔ سر-به-سر با استفاده از داده‌های خام برای استفاده از تکنیک‌های پردازش داده‌ها جهت گردآوری، پردازش و خواص ویژگی‌های مهندسی از این داده‌ها است. ما معمولاً تکنیک‌هایی مانند مُدل‌های آماری یا مدل‌های یادگیری ماشین را برای مدل سازی بر روی این ویژگی‌ها استفاده می‌کنیم و در صورت لزوم برای استفاده آن‌ها در آینده بر اساس مشکلاتی که می‌توان به آن‌ها اشاره کرد به صورت دستی حل می‌شوند. به طور معمول یک سامانهٔ یادگیری ماشین مبتنی بر «فرایندهای استاندارد صنعت متقابل برای داده‌کاوی» در زیر نشان داده شده است.

    به دست آوردن داده‌های خام و ساختن مُدل بر روی این داده‌ها به طور مستقیم می‌تواند به عنوان عملی بی‌مورد تلقی شود، زیر ما نتایج و کارایی مورد نظر را نمی‌گیریم و همچنین الگوریتم‌ها خود به طور خودکار ویژگی معنی دار از داده‌های خامِ ساده را به صورت خودکار نمایش نمی‌دهند. جنبهٔ تهیه داد‌ها در شکل بالا ذکر شده است، جایی که ما متودولوژی‌های مختلفی را برای استخراج ویژگی‌ها یا ویژگی‌های معنی دار از داده‌های خامِ پس از تجزیه و تحلیل مورد نیاز از پیش رونده و پیش پردازش برخورد می‌کنیم. مهندسی ویژگی یک هنر و همچنین یک عِلم است و به همین دلیل دانشمندانِ داده‌ها اغلب ۷۰٪ از زمان خود را در مرحله‌ آماده سازی داده‌ها قبل از فازِ مُدل سازی صرف می‌کنند.
    این به ما درکِ (بینشِ) این را می‌دهد که چرا ویژگی مهندسی یک فرایند تبدیل اطلاعات (داده‌ها) به یک ویژگی به عنوان ورودی برای مُدلهای یادگیری ماشین عمل می‌کند. یعنی آن ویژگی با کیفیتِ خوب در بهبود عملکرد کلی و دقت مُدل کمک می‌کند. 
    ویژگی ها نیز به سوالات اصلی و اساسی بسیار وابسته هستند. بنابراین، حتی ممکن است کار یادگیری ماشین در سناریوهای متفاوت مانند طبقه‌بندی رویدادهای IoT به رفتار‌های عادی و غیر طبیعی یا طبقه‌بندی احساسات مشتری، ویژگی‌های استخراج شده در هر سناریو بسیار متفاوت از یکدیگر عمل کند.
    ویژگی‌ها چه چیز‌هایی هستند؟
    یک ویژگی، به طور معمول، یک نمایش خاص در رأس داده‌های خام است که خصوصیات قابل اندازه‌گیری آن به صورت منحصربفرد (خصوصی) است. که معمولاً در یک ستون از یک مجموعه داده نقش بسته اند. با توجه به یک مجموعه‌ای از داده‌های دو بعدی، هر مشاهده توسط یک ردیف و هر ویژگی توسط یک ستون نشان داده می‌شود که یک مقدار خاص برای مشاهده دارد.

    بنابراین، مانند مثال در شکل بالا، هر سطر به طور خاص یک ویژگی از بُردار را نشان می‌دهد و همه آن‌ها مجموعه‌ای از ویژگی‌ها در همه مشاهدات به شمار می‌آیند، همچنین یک ماتریس ویژگی دو بُعدی است، که به عنوان یک مجموعه‌ای از ویژگی‌ها شناخته می‌شود. این شبیه به قاب داده‌ها یا صفحات گسترده‌ای است که داده های دو بعدی را نشان می‌دهند. 
    به طور معمول، الگوریتم‌های یادگیری ماشین با این ماتریس‌های عددی یا تانسورها کار می‌کنند. از این رو بیشترین تکنیک‌های ویژگی‌های مهندسی تبدیل داده‌های خام به  عنوان نماینده‌ای از داده‌هایی که می‌توانند توسط این الگوریتم ها قابل فهم و درک باشند را انجام می‌دهد. ویژگی‌ها می‌توانند از دو نوع اصلی بر اساس مجموعه داده‌ها باشند. ویژگی‌های خام (خالص) ذاتی مستقیماً از مجموعه داده‌ها و بدون دستکاری اطلاعات و یا مهندسی اضافی به دست می‌آیند. ویژگی‌های مشتق شده معمولاً از ویژگی‌های مهندسی به دست می‌آیند، جایی که ویژگی‌های داده‌های موجود را از آن استخراج می‌کنیم.
    مهندسی ویژگی‌ها
    داده‌های عددی معمولاً داده‌ها را به شکل ارزش‌های اسکالِر نشان می‌دهند که مشاهدات، ضبط داده‌ها یا اندازه گیری آن‌ها را نشان می‌دهد. منظور ما در اینجا داده‌های عددی به عنوان داده‌های مستمر است نه گُسَسته که به طور معمول به عنوان اطلاعات طبقه بندی شده ارائه می‌شوند. داده‌های عددی می‌توانند به عنوان یک بُردار از مقادیر نشان داده شود که هر مقدار یا موجودیت بُردار می‌تواند خود یک ویژگی خاص را نشان دهد. عدد صحیح (Integer) و شناور (Float) رایج ترین و به طور گسترده‌ای از انواع داده‌های عددی برای داده‌های عددی مُداوم استفاده می‌شوند. حتی داده های عددی می‌توانند به طور مستقیم به مُدل های یاد گیری ماشین انتقال یابند. شما برای هر یک از سِناریوهای مربوطه نیاز به ویژگی‌هایِ مهندسی دارید که مربوط به مشکلات و حوزهٔ مرتبط با آن‌ها برای ساخت یک مُدل‌ است. از این رو، نیاز به مهندسی ویژگی‌ها هنوز هم در جای خود باقی است.
  6. کامبیز اسدزاده
    اگر شما از آن دسته از کاربرانی هستید که هزینه‌ای برای گیت‌هاب پرداخت نمی‌کنید، این هفتهٔ خوبی است برای شما! 

    با توجه به تاریخ، گیت‌هاب همیشه حساب‌های رایگان ارائه داده است، اما با توجه به قوانین آن مخازنِ شما باید در قالب عمومی ایجاد می‌شدند. در صورتی که شما نیاز به داشتن مخزنی از نوع خصوصی داشتید در این صورت مجبور به پرداخت هزینه‌ای در قبال آن بودید. خبر خوش این است که، این محدودیت از امروز از بین رفته و شما می‌توانید مخازن خود را به صورت خصوصی و بدون پرداخت هزینه‌ای ایجاد کنید.

  7. کامبیز اسدزاده
    یک استارتاپ آمریکایی با موفقیت کامپیوتری کوانتومی را تست و معرفی کرده که با درهم شکستن رکوردهای قبلی قدرت کوانتوم را به رخ می کشد. کامپیوتر کوانتومی کمپانی IonQ که در «مریلند» واقع شده، از توان پردازش ۷۹ کیوبیتی بهره می برد که از Bristlecone گوگل هفت کیوبیت قوی تر است. علاوه بر توان بالا، نرخ خطای این پردازنده‌های کوانتومی به ازای هر کیوبیت در حد ۰.۰۳ است و این در حالی که نزدیکترین گزینه نرخ خطایی برابر با ۰.۵ درصد دارند. این میزان به ازای هر جفت کیوبیت به ۰.۷ می رسد که باز هم با ۵ درصد دیگر رقبا کیلومترها فاصله دارد.

    برای تست این سیستم ها از الگوریتم هایی نظیر بنچمارک «برنستاین-وزیرانی» استفاده می شود که در آن دستگاه برای شناسایی یک عدد رمزنگاری شده تنها اجازه پرسیدن سوال های با جواب بله یا خیر را دارد. زمانی که این عدد بین ۱ تا ۱۰۲۳ قرار داشته باشد، احتمال موفقیت کامپیوتر عادی و کوانتومی به ترتیب برابر ۰.۲ و ۷۹ درصد خواهد بود.
    «کریستوفر مونرو»، مدیرعامل IonQ بر این باور است که سرمایه گذاری روی کامپیوترهای کوانتوم یونی بهترین گزینه است:
    در کامپیوترهای معمولی برای ذخیره داده و انجام محاسبات از بیت های صفر و یک استفاده می شود اما در کامپیوترهای کوانتومی به این منظور کیوبیت هایی به کار برده می شوند که می توانند در آن واحد صفر، یک و یا ترکیبی از هردو مورد باشند.
    IonQ در ساخت کامپیوتر کوانتومی خود فناوری سیلیکون فوق سرد مورد استفاده گوگل، IBM و Rigetti برای به دام انداختن یون ها را با فلز نادر ایتربیم جایگزین کرده است. در این فرایند ایتربیم یونیزه شده در یک میدان الکترومغناطیسی نوسان دار معلق می شود تا از طریق لیزرهای برنامه نویسی شده اطلاعات وارد، ذخیره یا بازیابی شوند.
    دقت و صحت سیستم IonQ نشان دهنده این است که به زودی و احتمالا سال آینده شاهد استفاده عملی از کامپیوترهای کوانتومی خواهیم بود.
  8. کامبیز اسدزاده
    زبانی را انتخاب کنید که پاسخگوی برنامهٔ تحت بلاک‌چین شما باشد!
     
    فناوری بلاک‌چین به سرعت در حال تبدیل شدن به یکی از مهمترین پیشرفت‌های فناوری در چند دههٔ گذشته است. این سیستم، معاملات ناشناس و همتا را بین کاربران امکان‌پذیر می‌کند که اساساً بر پایهٔ انقلاب رمزنگاری است. بازار جهانی بلاک‌چین در حال حاضر حدود ۱.۲ میلیارد دلار تخمین زده می‌شود و کارشناسان پیش‌بینی می‌کنند که تا سال ۲۰۲۵ به ارزش ۵۷ میلیارد دلار برسد که در سال بیش از ۶۹ درصد رشد خواهد داشت.

    عمدهٔ شرکت‌ها و سرمایه‌دارانِ سرمایه‌گذار در توسعهٔ فناوری جدید رمزنگاری، قرارداد‌های هوشمند دفترچه‌های توزیع‌شده برای بانک‌های سنتی، توکن‌های بازی و سیستم‌های مدیریت زنجیره تأمین با شرکت‌های مشاوره بلاک‌چین همکاری می‌کنند. توسعه‌دهندگان در حال حاضر از زبان‌های برنامه‌نویسی محبوبی مانند C++ و JavaScript برای ساختن برنامه‌های سفارشی بلاک‌چین استفاده می‌کنند. علاوه بر این، مهندسان رمزنگاری زبان‌هایی مانند Simplicty و Solidity را برای این کار طراحی کرده‌اند. اما، آن‌ها آیا این‌ها بهترین زبان‌های برنامه‌نویسی برای فناوری بلاک‌چین هستند؟
    بلاک‌چین چیست؟
    بانکداری سنتی از یک بانک به عنوان رهبر و واسط استفاده می‌کند. جهت انتقال پول به یک دوست، یک شخص ابتدا حسابی داشته باشد و بخواهد که پول را به یک شماره حساب خاص که برای اوست انتقال دهد. بانک، حساب ارسال کننده را برای وجه بررسی می‌کند و آن وجه را به مقصد منتقل می‌کند و معامله در حساب فرستنده ثبت می‌شد. همچنین بانک دریافت کننده نیز همین کار را باید انجام دهد. با این حال، مشکل سیستم بانکی سنتی این است که سوابق در داخل ذخیره می‌شوند و در برابر هک و دستکاری‌های آسیب‌پذیر هستند.
    بلاک‌چین با ذخیره کردن تمامی سوابق به صورت آنلاین در یک دفترچهٔ مستعار (بی‌نام) ذخیره می‌کند که توسط هر کسی قابل دسترس است. بلاک‌چین از بلاک‌ها استفاده می‌کند، یا مجموعه‌ای از داده‌ها، مشابه سطر‌ها و ستون‌های صفحه‌های گسترده جهت ذخیره داده‌ها استفاده می‌کند. بلاک‌ها به ترتیب متوالی به «زنجیر» اضافه می‌شوند. برخلاف دفترچه‌های سنتی، که در داخل ذخیره می‌شوند، هر کاربرِ بلاک‌چین دارای سوابق کاملی از کل بلاک‌چین در رایانهٔ خود است. این بدان معنی است که در صورت داشتن کد هش (رمز‌شدهٔ) مربوطه می‌توانند به سرعت هر معامله‌ای را که اتفاق افتاده است را پیدا کنند. از آن‌جایی که این داده‌ها به صورت عمومی ذخیره می‌شوند، هرگز قابل تغییر یا حذف نیستند! در نتیجه آرامش خاطر را به کاربران فراهم می‌کند.
    زبان برنامه‌نویسی JavaScript (جاوااسکریپت)
    از آن‌جایی که گیت‌هاب به تازگی این زبان را به عنوان محبوب‌ترین زبان برای توسعه‌دهندگان اعلام کرده است، به طور باورنکردنی بیش از ۹۵٪ وب‌سایت‌ها به طریقی از آن‌ استفاده می‌کنند. با این حال، جاوااسکریپت تنها پادشاه وب نیست؛ چرا که به عنوان یک زبان انعطاف‌پذیر در بلاک‌چین استفاده می‌شود.
    یکی از دلایلی که جاوااسکریپت را برای توسعه‌دهندگان می‌بخشد نحوهٔ دستیابی به مدیریت کد‌ها به صورت ناهمزمان (ناهمگام) است. این امر در بلاک‌چین بسیار مهم است، زیرا ممکن است هزاران یا حتی میلیون‌ها معاملات در همان زمان آغاز شود! برنامه‌نویسی موازی یک برنامه را قادر می‌سازد تا چندین عمل را به صورت همزمان انجام دهد در حالی که برنامه‌نویسی استاندارد و همزمان نمی‌توانند آن حجم را تحمل و کنترل کنند. با اجرای چندین کار به صورت همزمان، کد ناهمزمان می‌تواند باعث افزایش پاسخگویی و عملکرد برنامه شود. این امر باعث می‌شود برنامه‌های بلاک‌چین بتوانند حجم بسیار زیادی از اقدامات را بدون عملکرد کُند و نا امید سازی کاربر، آن را انجام دهند.
    زبان برنامه‌نویسی C++ (سی‌پلاس‌پلاس)
    سی‌پلاس‌پلاس همچنین به عنوان یکی از قدرتمند‌ترین و محبوب‌ترین زبان‌های برنامه‌نویسی در دنیای فناوری شناخته می‌شود و در صنعت بلاک‌چین نیز یک قدرت غالب است. زبان شیء‌گرایی برای توسعه بلاک‌چین مناسب است، زیرا از همان اصول کپسوله‌سازی، انتزاع، چند‌ریختی و مخفی کردن داده‌ها استفاده می‌کند. به عنوان مثال بلاک‌چین از ویرایش‌های ناخواسته از داده‌ها جولوگیری می‌کند.
    توسعه‌دهندگان همچنین به دلیل قابلیت کنترل حافظه، از  C++استفاده می‌کنند. این زبان به شما اجازه می‌دهد تا بلوک‌های ایمن را نگه‌ داشته و تعداد زیادی از درخواست منابع را مدیریت کنید. با اجازه دادن به هر نود (گره) شبکه می‌توانید بلوک‌های فردی را پذیرفته یا رد کنید.
    همچنین C++ به دلیل پشتیبانی و مدیریت وظایف موازی و نخی به طور گسترده در بلاک‌چین مورد استفاده قرار می‌گیرد. این زبان قادر به مدیریت هردو ویژگی موازی و غیرموازی در وظایف است، در واقع می‌تواند به خوبی انجام وظایف تک-نخی/تک رشته‌ای (single-thread) را بهبود دهد. نمونهٔ فوق‌العاده‌ای از برنامه‌های اساسی از بلاک‌چین که با C++ نوشته شده است EOS نام دارد. این نرم‌افزار به صورت منبع‌باز در سال ۲۰۱۸ توسط بلاک منتشر شد و به گونه‌ای طراحی شده است که معاملات را سریع‌تر از گزینه‌های دیگر پردازش می‌کند. این نرم‌افزار اجازه می‌دهد تا در کمتر از یک ثانیه معامل را تأیید کرده و فقط در دو دقیقه آن را نهایی کنید.
    زبان برنامه‌نویسی Solidity
    این زبان یک نمونهٔ هوشمند است که با همکاری توسعه‌دهندگان Ethereum و بلاک‌چین توسعه یافته است. این زبان به صورت اختصاصی دامنه‌های بسیاری از اصول و اصطلاحات مشابه به جاوا‌اسکریپت را برای ایجاد برنامه‌های با کیفیت بالا و غیر متمرکز فراهم می‌کند. توسعه‌دهندگان، این زبان را برای این ترجیح می‌دهد که به شما این امکان را فراهم می‌کند تا یک کد سطح بالا را برای شبکهٔ بلاک‌چینی Ethereum، دومین بلاک‌چین رمزنگاری محبوب، که می‌تواند به زبان سطح پایین و کد ماشین کامپایل شود. در حال حاضر Solidity در طیف گسترده‌ای از سکو‌ها (پلتفرم‌های) بلاک‌چینی از جمله، Ethereum، Tendermint، Ethereum Classic و Counterparty موجود است.
    زبان برنامه‌نویسی Simplicity
    این یک زبان کاملاً جدید است که در تاریخ نوامبر ۲۰۱۷ برای قرارداد‌های خاص و هوشمندِ بلاک‌چین طراحی و منتشر شده است. این زبان برای افزایش بهره‌وری و پنهان‌سازی اجزای منطقی سطح پایین از مهندسان است که یکی از دلایلی است که به سرعت در جامعه محبوب می‌شود. مانند C++، این یک زبان شیء‌گرایی است که برای جولوگیری از خطاها و تغییر داده‌ها در بلاک‌چین استفاده می‌کند.
    خلاصه
    بلاک‌چین اینجاست تا بماند! فناوری محبوب (Record-Keeping) چیزی است که تبادلات رمزنگاری را ممکن می‌سازد و بطور گسترده توسط شرکت‌ها، افراد و خدمات مشاوره‌ای بلاک‌چین، برای توسعهٔ نرم‌افزار مورد استفاده قرار می‌گیرد. توسعه دهندگان می‌توانند به راحتی از زبان‌های محبوب مانند C++ و JavaScript برای توسعهٔ بلاک‌چین استفاده کنند. از طرفی این انجمن اخیراً زبان‌هایی به عنوان Solidity و Simplicity را ایجاد کرده است که باعث می‌شود تا فرآیند توسعهٔ رمزنگاری روان‌تر شود.
  9. کامبیز اسدزاده
    اینتل مدتی پیش شرکت الترا فعال در زمینهٔ FPGA را خریداری و سرمایه‌گذاری فراوانی روی این شرکت و فناوری‌های آن کرد. حالا به مرور نتایج این سرمایه‌گذاری در حال نمایان شدن است.
    اینتل از تراشه‌ای جدید در بستر قابل توسعهٔ زئون رونمایی کرده که علاوه بر دارا بودن پردازنده سطح سرور اسکای‌لیک با هسته‌های AVX-512 و توپولوژی جدید مِش، میزبان یک واحد جدید نیز هست. از مدت‌ها پیش شایعاتی مبنی بر برنامه‌ریزی اینتل برای قرار دادن یک واحد FPGA الترا به صورت یکپارچه با پردازنده‌های زئون به گوش رسیده بود، و حالا غول دنیای تراشه‌ها این کار را انجام داده است. این شرکت از تراشه Xeon Gold 6138P رونمایی کرده که یک اف‌پی‌جی‌ای Aria 10 GX 1150 الترا در درون خود دارد.
     
    رونمایی اینتل از نسل جدید پردازنده زئون
    سال گذشته در نمایشگاه سوپرکامپیوتینگ ۲۰۱۶، اینتل یک تراشه زئون با پردازنده برادول معرفی کرد که در درون خود یک اف‌پی‌جی‌ای داشت، اما هیچ‌گونه جزییات بیشتری درباره آن ارائه نکرد و حتی تراشه را در معرض دید نیز قرار نداد. امسال نیز در نمایشگاه MWC بار دیگر یک پردازنده مقیاس‌پذیر را معرفی کرد که درون خود میزبان یک FPGA بود، اما باز هم تراشه را به نمایش نگذاشت و حتی به مراجعین اجازه باز کردن جعبه‌ای که تراشه را درون آن قرار داد بود را نداد. اینتل می‌گفت این تراشه برای به‌کارگیری در پردازش‌هایی مانند آن‌چه در شبکه مانند نسل پنجم ارتباطات همراه (5G) مورد نیاز است طراحی شده است اما به سوال‌هایی که از نوع هسته‌های پردازشی به کار رفته و مشخصات FPGA درون این تراشه پرسیده می‌شد، پاسخی نمی‌داد. به همین دلیل خبری از این تراشه مخابره نشد و چندان به این موضوع پرداخته نشد.
    دو ماه بعد ار آن از نمایشگاه PC-Watch خبر می‌رسد که اینتل از تراشه Xeon Gold 6138P رونمایی و تولید انبوه آن را نیز آغاز کرده است. برخی از مشتریان منتخب نیز پیش‌تر نمونه‌های اولیه این تراشه را دریافت کرده‌اند. در مراسم رونمایی اعلام شده که شرکت فوجیستو به عنوان یکی از همکاران اینتل برای ساخت سیسمتی مبتنی بر این تراشه برنامه‌ریزی کرده است.
     
    اینتل پردازندهٔ زئون را با پهنای باند 160 گیگابیت در هر سوکت (هنوز مشخص نیست این ارتباط دو جهته است یا خیر) و با استفاده از یک اتصال مجزا از حافظه پنهان (Catch) به FPGA متصل می‌کند. از آنجا که می‌دانیم اینتل از فناوری OmniPath Fabric برای اتصال پردازنده و FPGA استفاده کرده، این اتصال احتمالا پروتکلی متفاوت را روی رابط PCIe x16 که برای اجزای درون تراشه‌ای در نظر گرفته شده است، اجرا می‌کند. به این ترتیب می‌تواند از مزایای اتصال فوق العاده مسیر (UPI) اینتل نیز برای انطباق حافظه پنهان و دسترسی به داده‌ها در سراسر پلتفرم بهره گیرد. این موضوع به معنای آن است که اگر یکی از ارتباط‌های UPI از پردازنده برای FPGA استفاده کند تراشه می‌تواند تنظیمات Xeon و FPGA را به بهترین وجه به سوکت دوگانه کاهش دهد. اما اینتل برای تایید این نکات اطلاعاتی را در مورد تراشه جدید ارائه نداد. ما می‌توانیم وجود یک اسلایدر قدیمی Intel تأیید کنیم که پلتفرم باید از یک رابط سریال با سرعت بالا (HSSI) برای اتصال استفاده کند؛ این اسلاید همچنین بیان می‌کند که پردازنده‌های جدید دارای مشخصات قدرتمند مختلف به درگاه‌های استاندارد Skylake-SP هستند و به همین ترتیب Xeon Gold 6138P احتمالا بعید است که در پردازنده‌های سیستم های فعلی قرار گیرد.
     
    اینتل برای این رونمایی یک طراحی مرجع سوییچینگ مجازی ساخته است که در آن از اف‌پی‌جی‌ای برای زیرساخت سوییچنگ اطلاعات کاربر (dataplane) استفاده کرده که با ماشین مجازی روی پردازنده کار می‌کند و پردازش‌های مورد نیاز را انجام می‌دهد. اینتل مدعی‌ است این طراحی مرجع ۳/۲ برابر بازده محاسباتی بیشتر و تاخیر ۵۰ درصدی را نسبت به مدل‌های پیاده شده بر روی پردازنده (بدون وجود اف‌پی‌جی‌ای) با استفاده از پلتفرم Open Virtual Switch دارا است. نتایج مورد ادعا از طریق روش DPDK اندازه‌گیری شده است.
     
    سیستمی که مورد آزمایش قرار گرفته یک سرور 2P با دو تراشه Xeon Gold 6138P با اف‌پی‌جی‌ای یکپارچهٔ Arria 10 GX 1150 و ۱۲ حافظه رم ۱۶ گیگابایتی DDR4 و همچنین یک کارت شبکه آلاسکا 100G مارول بوده است. با این تفاوت که این سیستم همچنین دارای یک اسلات PCIe 3.0 x10 در کنار یک اسلات PCIe 3.0 x8 است. که به نظر می‌رسد اعدادی غیرعادی هستند.
     
    همچنین در این رونمایی اعلام شده که اینتل قصد دارد راه‌کاری مشابه برای استفاده از FPGAهای جداگانه (غیریکپارچه با پردازنده) و با ارتباطی سریع‌تر و یکپارچه ارائه دهد، که البته اطلاعات بیشتری درباره این ارتباط سریع ارائه نشده است. این راه‌کار قابلیت به کارگیری کدهای نوشته شده برای تراشه‌های دارای پردازنده و اف‌پی‌جی‌ای را خواهند داشت.
  10. کامبیز اسدزاده
    تحول توسط اینترنت اشیاء (IoT)، این واضح است که افزوده شدن به تعداد دستگاه های متصل به این فناوری با سرعت چشمگیری در حال افزایش است. همه جا در اطراف زندگی روزمره ما، استفاده بیشترو بیشتری را از آن ها داریم. علاوه بر این که به آن ها متصل هستیم، دستگاه های با صفحه لمسی بیشتری به رابط گرافیکی مدرن مجهز می شوند.
    در این میان در اطراف ما به راحتی دیده می شود که کاربران زیادی نرم افزار های خود را توسط کیوت برای این دستگاه ها می سازند. برای رسیدن به شماری از این اعداد و ارقام توسط گروه Gartner که تخمین زده است تا سال ۲۰۲۰ رشد دستگاه های متصل به این فناوری حدود ۲۰٬۷ میلیارد دستگاه خواهد بود. (حتی پیش بینی شده است که بالاتر از آن یعنی حدود ۳۰ میلیارد دستگاه) مجهز به فناوری مرتبط خواهد شد که تحت سی پلاس پلاس و کیوت توسعه پیدا می کنند.
    نه تنها شمار زیادی از دستگاه ها در حال رشد هستند، اما در این میان پیچیدگی و تعداد نرم افزار ها نیز در حال رشد هستند. برای مثال، امروزه خودرو ها می‌توانند بیش از ۱۰۰ میلیون خط کد را در اختیار داشته باشند، انتظار می رود این روند به سه برابر در آینده به عنوان قابلیت های نرم افزاری در خودرو ها افزایش یابد.
    خودرو ها بخش پیچیده ای از این فرآیند محسوب می شوند، اما حتی برای ساده ترین اتصال به دستگاه ها نیاز به نرم افزار های زیادی می باشد که قادر باشند الزامات را برای اتصال به طور امن با قابلیت های مفید را با رشد چشم گیری در اختیار مصرف کنندگان قرار دهند.
     
    در اینجا بر روی یک نمودار خطی چگونگی دستگاه های در حال رشد را تخمین می‌زنیم:

     
    در داخل این دستگاه ها چه چیزی وجود دارد؟
    چه نوع نرم افزاری دستگاه های متصل شده را مدیریت می کند؟ چه نوع مهارت هایی برای ساخت اینها نیاز است؟ اینگونه تخمین زده شده است که تا به امروز 95% از دستگاه های تعبیه شده (Embedded) اِمبد ها توسط زبان برنامه نویسی C و ++C  ساخته شده اند، و اینگونه پیشبینی شده است که این فرآیند در آینده به طور قابل توجهی تغییر نخواهد یافت.
    سپس، از سوی دیگر با توجه به مطالعاتی که در جهان بر روی ۴.۴ میلیون توسع دهنده C++  و ۱.۹ میلیون توسعه دهنده زبان C در سال ۲۰۱۵  صورت گرفته است. یک مطالعه بر اساس نتایج سال ۲۰۰۱ توسط IDC، نشان می دهد که تعداد توسعه دهندگان زبان ++C در آن زمان حدود ۳ میلیون نفر بوده است. معنی این نتایج اینگونه است که تعداد توسعه دهندگان ++C به طور پیوسته در حال رشد است که حدود 3% در سال بوده و انتظار می روند با همین روند به جمع توسعه دهندگان در سال های آتی افزوده شود.
     
    بنابراین، یک تجسم کلی از رشد توسعه دهندگان ++C در نمودار زیر آورده شده است:
     

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

    با قرار دادن این دو نمودار در کنار هم، می توانیم به وضوح نمودار پارادوکس را تجسم کرده و به یک (راه حل) ممکن برسیم: بنابراین چگونه بر آن افزوده می شود؟ آیا ما انتظار این را خواهیم داشت که در سال ۲۰۲۰ یک توسعه دهنده سی‌پلاس‌پلاس  ۲۰ برابر بیشتر از آن چیزی را بنویسد که در ۱ دهه قبل نوشته است؟ این راه حل کارساز نخواهد بود. حتی اگر همه توسعه دهندگان ++C تمرکزشان بر روی دستگاه ها باشد! لذا هنوز توسعه دهنده ++C به اندازه کافی موجود نیست. توسعه دهندگان  C++ به راحتی می توانند آموزش های حرفه ای را ببینند و سال هایی را برای دوره های خود در نظر بگیرند تا به درجه استادی برسند. بنابراین، چیزی که باید انجام شود دو چیز است: فعال کردن توسعه دهندگان C++ در این زمینه ها و همچنین آموزش برای برنامه نویسان غیر ++C برای ساخت دستگاه ها.
    بنابراین، برای تعبیه شدن نیاز ها باید با شرایط جدیدتری سازگار شد. تنها راه برای مقابله با رشد این است که ابزار های خوبی برای دستگاه ها در اختیار قرار گیرد. پیش بینی می شود با ابزار هایی که Qt قرار است فراهم کند رویکرد قابل قبولی برای ساخت دستگاه ها فراهم آورد. زیرا شعار کیوت این است "کد کمتر،سازندگی بیشتر، تولید و استقرار در همه جا" این شعار تابه امروز پیش بینی شده بود. کیوت دارای سابقه ی دستگاه های اِمبد، دسکتاپ و موبایل و ساخت و توسعه اپلیکیشن های کاربردی با روش بهتر و ساده تر در تمامی پلتفرم ها می باشد.
    این احتمال وجود دارد که حتی استفاده از قابلیت های نرم افزاری کافی نیست. همچنین لازم است برای افزایش بهره وری از برنامه نویسان خبره  ++C جهت توسعه بهتر استفاده شود.با استفاده از Qt رابط های برنامه نویسی به طور گسترده و مشهوری مستند سازی شده اند. بنابراین توسعه دهندگان ++C سازنده تر و مفید تر از قبل هستند.
    همچنین Qt زبان اعلانی با نام QML را جهت سهولت کار در طراحی فراهم کرده است، و رشد اینکه تعداد کثیری از مردم که می خواهند فراتر از توسعه دهندگان سی پلاس پلاس در توسعه دستگاه ها قدم بگذارند ایجاب شده است. در حال حاضر میلیون ها توسعه دهنده با Qt در جهان آشنا هستند که روز به روز برای به دست گرفتن آن میکوشند.
    با وجود زبان QML، مشکل اینگونه حل شده است تا بدون داشتن مهارت های بسیار بالا از  ++C توسعه دهندگان بتوانند در زمینه رابط کاربری تیم خود را مدیریت کنند. البته برای ساخت هسته نرم افزار های دستگاه های تعبیه شده نیاز به ++C امریست ضروری. اما چیز دیگری می تواند کمک بهتری برای توسعه در اختیار قرار دهد. استفاده از Qt که اجازه می دهد هر دو نوع توسعه دهندگان غیر   ++C و متخصصین ++C عملیاتی را که می خواهند بر روی دستگاه ها توسعه دهند فراهم می کند. و این اجازه می دهد توسعه دهندگان ++C  تمرکز بهتری در تمامی زمینه ها داشته باشند.
     
     
  11. کامبیز اسدزاده
    پس از انتشار مقاله اختصاصی Intel در زمینه گرافیک مجتمع نسل جدید آن با نام Gen 11 و پس از آن جنجالی که با اولین بنچمارک در رزولوشن 1080p ادامه یافت، در تعطیلات نوروزی حسابی سر و صدایی به پا کرده است؛ این تراشه گرافیکی مجتمع در چند پلتفرم پردازشی CPU محور اینتل نصب خواهد شد و بد نیست بدانید که اولین نسل با نام Ice Lake شناخته خواهند شد.

    اینتل به تازگی یک درایور جدید برای تراشه های گرافیکی خود در ویندوز 10 را منتشر کرده است که به همراه داشبورد و برنامه نرم افزاری جدیدی است که به تازگی اخبار آن را برای شما عزیزان پوشش داده بودیم؛ اما نکته ای که در این درایور به چشم می خورد، لو رفتن عمدی یا سهوی اسامی برخی از CPU و تراشه های گرافیکی داخلی است که اینتل به زودی معرفی خواهد کرد.
    در این لیست 13 نوع تراشه با معماری جدید گرافیکی Gen11 به چشم می خورند که از نسل Ice Lake خواهند بود. گرافیک مجتمع Iris Plus Graphics 950 قوی ترین پردازشگر این نسل است که دارای 64 واحد EU خواهد بود. این تراشه گرافیکی در پردازنده های Core i7 و Core i9 نیز نصب خواهد شد. گرافیک دوم با نام Iris Plus Graphics 940 شناخته می شود که در پردازنده های Core i5 نیز مورد استفاده قرار می گیرند. Iris Plus Graphics 940 ها با همین تعداد واحد EU دارای فرکانس پایین تری هستند.
    سپس Iris Plus 930 و Iris Plus 920 را شاهد هستیم که تعداد واحد های EU آنها نیز 48 و 32 عدد است. iGPUهای Gen11 همچنان در مدل های کلیدی GT1 و GT2 معرفی می شوند. برای اطلاعات بیشتر به زمان بیشتری نیاز داریم. شایان ذکر است که لیتوگرافی تولید در این نسل به 10 نانومتری کاهش یافته است.
  12. کامبیز اسدزاده
    برای سال های بسیار زیادی است که HTML یک زبان جهانی برای ساخت صفحات وب بوده است و تا کنون در مقابل زبان‌های دیگر به شدت مقاومت نشان داده است که در بین آنها بهترین امنیت و سرعت مورد نظر ارائه داده است. با این حال جهان فراتر از مرورگر اینترنتی رفته و وارد موبایل و دستگاههای هوشمند بسیاری شده است و برخی از توسعه دهندگان HTML5 را برای توسعه در حوزه IoT بسیار آهسته و ضعیف دانسته اند. شاید پاسخ آن را Qt بتواند ارائه دهد که خود یک چهار چوب چند سکویی بشمار می‌آید.
    چرا HTML بسیار موفق بوده است؟
    زبان HTML بسیار موفق بوده است، زیرا همراه توسعه و پیشرفت اینترنت و برنامه های توسعه یافته شده در طول رشد صنعت اینترنت همراه شده است. این یک روش سنتی و درست برای توسعه صفحات وب می‌باشد. در سال‌های اخیر ابزار های توسعه جدید٬ با ایجاد و توسعه خود شروع به حفاری HTML کرده اند و خود تاثیر بر روی آن می‌گذارند، اما برنامه های تحت دسکتاپ بدون هیچ مشکلی همچنان استفاده از HTML را ادامه می‌دهند.
    اشکالات اصلی استفاده از HTML در چیست؟
    ظهور گوشی‌های هوشمند و رسانه های اجتماعی پیشرفت صنعت وب را توسعه داده است. امروزه برنامه های کاربردی در طیف گسترده ای تغییر شکل و اندازه می‌دهند. برنامه‌های سنتی دسکتاپی٬ برنامه های کاربردی وب در هر دستگاه با مرورگر٬ برنامه های تلفن همراه٬ دستگاه های اِمبد و دستگاه های مرتبط با اینترنت اشیاء (IoT) و غیره. دستگاه های مرتبط به IoT در حال حاضر نیاز به رابط کاربری و ویژگی های اتصال دارند تا در ارتباط بهتری قرار بگیرند٬ همچنین از اپراتورها انتظار می رود که تجربه کاربری مشابه را در دستگاه‌های شخصی خود داشته باشند. در این میان HTML هرگز برای سیستم های هوشمند و امبد‌ها و دستگاه‌های این چنینی در نظر گرفته نشده است و دارای نقایصی است. در حالی که در مخالف آن جهت توسعه صنعت تحت روش‌ها و زبان‌های بومی استفاده مورد استفاده قرار می‌گیرد.
    یکی دیگر از معایب HTML5 این است که موقع انتخاب HTML5 شما می‌بایست در کنار آن یک چهارچوب جاوا اسکریپتی را نیز انتخاب کنید. در کنار آن می‌توان به مقایسه چهار چوب‌های موجود پرداخت که برخی از آنها ممکن است در آینده از بین بروند و برخی از آن ها باقی بمانند! اینکه در آینده چه اتفاقی خواهد افتاد نامعلوم است. بنابراین فشار زیادی برای انتخاب بین چهارچوب‌ها وجود دارد.
    چهارچوب توسعه چند-سکویی Qt چیست و چگونه به توسعه دهندگان کمک می‌کند؟
    کیوت یک چهارچوب چند-سکویی توسعه بر پایه ++C است و شامل هر دو گزینه کتابخانه و ابزارهای ساخت و توسعه رابط کاربری برنامه‌های کاربردی می‌باشد. یکی از روشهای طراحی در کیوت استفاده از زبان اعلانی QML می‌باشد که طراحی شده است تا به توسعه دهندگان این امکان را بدهد تا بتوانند رابط کاربری با کارآیی بالا را طراحی و پیاده سازی نمایند که قابل اجرا بر روی تمامی دستگاه ها مانند دسکتاپ٬ موبایل و ... باشد. طراحی رابط کاربری توسط QML به صورت بصری است که همراه کنترل ها آماده٬ مانند دکمه‌ها٬ سوئچ‌ها و ... را می‌توان بر روی بوم طراحی سریع آن‌ها را کشیده و طراحی کرد. همانند چهار چوب‌هایی که برای توسعه وب و موبایل طراحی شده اند٬ زبانهای برنامه نویسی مانند QML در کیوت به خاطر محدودیت‌ها و حذف HTML توسط شرکت‌های بزرگ سهم قابل توجهی را به دست آورده اند.
    مزایای استفاده از QML در برابر HTML در چیست؟
    بعد از اینکه بارها این سوال ها را مطرح کرده‌ایم٬ یک شرکت مشاوره نرم افزاری اتریشی تصمیم به تست مقایسه‌ای بین این دو زبان گرفت تا بتواند پاسخ مناسبی را برای این سوال تعیین کند. آنها برای هرکدام از زبانها ۱۶۰ ساعت در اختیار توسعه دهندگان مشابه قرار دادند برای مثال ۱۶۰ ساعت توسعه بر روی HTML5 و ۱۶۰ ساعت توسعه بر روی QML تا نمونه هایی را در قالب Demo جهت مقایسه طراحی نمایند تا بتوانند آنها را زمانی که برای ایجاد یک محصول مشابه مورد استفاده قرار می‌دهند از لحاظ عملکرد و پایداری مقایسه کنند.
    نسخه های دمو نشان می‌دهد اگر چه زمان مشابهی در هر دو نسخه صرف توسعه شده بود٬ اما پیاده سازی با Qt QML یک رابط کاربری کاربردی تر و کاملتری را نسبت به نسخه HTML5 ارائه می‌دهد. فرآیند تست و اشکال زدایی با Qt QML ساده تر است٬ زیرا HTML5 نیاز به آزمایش های بیشتری در مرورگرهای مختلف دارد. به طور کلی نسخه Qt QML زمان کمتری را جهت پاسخ دهی (در اجرا) و ویژگیهای فعال تری را مانند صفحه کلید مجازی و حرکات پیچیده ارائه می‌دهد که این موارد در HTML5 بدون افزودن آنها قابل ارائه نیست. همچنین QML قابلیت ترکیب و قدرت گرفتن از ++C را دارد که نکتهٔ بسیار مهمی است.
    کیوت چگونه برای دستگاه های هوشمند و امبد کار می‌کند و چه رویکرد متفاوتی از برنامه‌های سنتی دسکتاپی و HTML دارد؟
    برنامه هایی که بر پایه کیوت هستند٬ برای یک هدف تدوین و کامپایل می‌شوند٬ این به این معنی است که بدون در نظر گرفتن قوانین کاربردی بر روی پلتفرم همان رفتاری را انجام خواهد داد که بر روی پلتفرم قرار است اجرا شود. برنامه های تحت HTML5 برای اجرا بر روی مرورگر هستند، برای مثال مرورگر Google's Chrome این به این معنی است که برنامه در پلتفرم های دیگر مانند FireFox ممکن است یک رفتار دیگری را نشان دهد. HTML یک زبان است در حالی که Qt یک چهارچوب کامل با گزینه‌های طراحی و زبانهای مختلف است. با کیوت شما واقعا توانایی استفاده هر گزینه‌ای را نسبت به کاربرد آن خواهید داشت. شما می‌توانید ابزارهای طراحی خود را با کشیدن و رها کردن بر روی بوم خود قرار داده و به راحتی آن را با زبانی مانند ++C تنظیم کنید. کدهای اعلان شده در QML هستند و یا می‌توان آن‌ها را با ++C ترکیب کرد. همچنین شما می‌توانید در صورتی که نیاز داشته باشید کد‌های HTML را بر روی کیوت بر پایه مرورگر کروم فعال و استفاده نمایید.
    در بازار کیوت چقدر نفوز دارد؟
    با وجود اینکه کیوت حدود ۲۵ سال است عمر دارد٬ ممکن است برخی بگویند که این چهارچوب پیش از این زمان ذکر شده توسعه داده شده است. با افزایش توسعه اینترنت اشیاء که نیاز به هرجا و هر صفحه نمایشی را افزایش داده است٬ این در حالی است که توسعه دهندگان در همان مقدار باقی مانده اند. این به این معنی است که توسعه دهندگان نیاز به این دارند که بیشتر سازنده باشند و سعی نکنند که مشکلاتی را حل کنند که قبلا برای آن ها راه حلی پیدا شده است.
    کیوت توسط بیش از ۱ میلیون توسعه دهنده در بیش از ۷۰ صنایع مورد استفاده قرار گرفته است و در سال گذشته بیش از ۲۰ درصد رشد داشته است و برای تکنولوژی هایی که تا مدت طولانی وجود دارند، منحصر بفرد است. هر کجا که یک رابط کاربری خارق العاده را می‌بینید آن شانس خوبی است که با کیوت توسعه داده شده است. از وسایل هوشمند درون خودرو و ابزارهای دیجیتال گرفته تا صفحه های نمایش HUD در خودرو های مانند تسلا یا مرسدس، و یا سیستم هایی که از طریق FDA و IEC جهت تامین ایمنی بیماران از طریق سیستم های اتوماسیون برای ساختمان ها و صنایع و حتی در تلوزیون های دیجیتال و یخچال فریزر شما که در این نقطه کیوت به طور گسترده ای به تصویر رسیده است٬ اما عصر طلایی آن در حال آغاز شدن است.
    هزینه کلی و مالکیت کیوت چگونه است؟
    کیوت دارای یک مدل مجوز دوگانه است. کیوت یک مدل منبع باز و کاملا رایگان و همچنین یک مدل تجاری ارائه می‌دهد که در مدل تجاری پلتفرمی را پیشنهاد می‌کند که برای استفاده و دسترسی به R&D و پشتیبانی تجاری می‌باشد. HTML5 رایگان است (با گزینه‌ای برای پرداخت هزینه برای ابزار های غیر ضروری) اما یکپارچگی وابستگی‌ها مانند نگه داری و دستیابی به همان کارایی است که شما به طور نسبی با Qt نیاز دارید. توسعه دهندگان HTML برای اینکه نیاز به دسترسی لایه‌های زیرین داشته باشند یا روش های پیشرفته تری استفاده کنند تا بتوانند کارایی بهتر و پیشرفته تری را ارائه دهند و سیستم شما را پشتیبانی و بهینه نگه دارند نیازمند استفاده و هزینه کردن به سخت افزار‌هایی هستند.اما در کیوت شرکت کیوت کسی است که پشت این چهارچوب است و مراقب تمامی وابستگی‌ها می‌باشد٬ هزینه تعمیرات و نگه داری ها را کاهش می‌دهد٬ سیستم شما را اثبات می‌کند و خطرات کلی شما را کاهش می‌دهد.
    سناریو هایی که در استفاده Qt به جای HTML مفید تر است کدامند؟ همچنین بالعکس آن چطور است؟
    با رشد چشمگیر IoT و افزایش دستگاه های امبد که به خود کیوت می‌رسند. QML و Qt برای بیشترین استفاده از منابع محدود طراحی شده اند و بنابراین ممکن است انتخاب خوبی برای توسعه دهندگان دستگاههای هوشمند و به خصوص امبد باشد. از سوی دیگر HTML اهداف خود را بر روی وب به راحتی اجرا می‌کند که در سراسر سیستم عامل های دسکتاپ و موبایل است. همانطور که بسیاری از توسعه دهندگان HTML برای استفاده از آن با HTML آشنا هستند٬ اگر شما کسی هستید که برنامه نویسی ++C را نمی‌دانید می‌توانید از HTML استفاده کنید. با این حال Qt طیف گسترده ای از سیستم عامل ها را پشتیبانی می‌کند و از لحاظ پاسخدهی، زمان راه اندازی (زمان اجرای برنامه) و تجربه کاربری و رابط کاربری بسیار بهتر عمل می کند.
    آیا Qt فرصتی واقعی برای کنار گذاشتن HTML به عنوان زبان برنامه نویسی انتخاب کرده است؟
    در وبلاگ‌ها و انجمن‌ها بحث هایی در حال انجام است که آیا QML واقعا جایگزین HTML در وب خواهد شد یا خیر. از یک جنبه عملکرد مردم می‌گویند که می‌تواند این کار را انجام دهد٬ اما از دیدگاه علمی، برای تغییر آن نیاز خواهد بود تا غول هایی مانند گوگل جایگاه و روش‌های خود را نسبت به این موضوع تغییر دهند. به طور کلی HTML زبان بسیار محبوبی در صنعت وب محسوب می‌شود اما باتوجه به توسعه روز افزون پلتفرم‌های مختلف و مخصوصا موبایل‌ها و اینترنت اشیاء QML یک رقیب بسیار جدی طراحی و پیاده سازی UI و UX محسوب می‌شود که بسیار قدرتمند تر از HTML عمل می‌کند.
     
    نکته افزوده شده توسط (کامبیز اسدزاده)
    با توجه به اینکه صنعت وب با HTML و JavaScript ترکیب شده است باید در نظر داشته باشیم که QML از هر دو فناوری فوق پشتیبانی می‌کند. این به این معنی است که شما موقع استفاده از QML از یک زبانی اعلانی استفاده می‌کنید که بر پایه JavaScript است که علاوه بر قابلیت‌های جاوا اسکریپت می‌توانید از CSS و HTML نیز استفاده کرده و بک اند برنامه خود را تحت زبان قدرتمند ++C تعبیه کنید.
     
  13. کامبیز اسدزاده
    برای بسیاری از توسعه دهندگان نرم افزار کار کردن بدون کنترل نسخه غیر قابل تصور است. فواید کنترل و پیگیری تاریخچه تغییرات کدها برای درک کردن دنیای توسعه نرم افزار بسیار بالاست. با توجه به این نباید از نتایج به دست آمده از تحقیق انجام شده توسط DevOps که استفاده از تاریخه کدها بسیار بالاست شگفت زده شد.
    اما پرسیدن در مورد کنترل نسخه دیتابیس موضوع دیگری است. تنها ۵۸ ٪ از کسانی که در این تحقیق شرکت کرده اند گفته اند که کنترل نسخه دیتابیسشان را رصد می‌کنند. البته به طریقی این قابل درک است که چرا کنترل نسخه برای مدت بسیار زیادی بر روی دیتابیس انجام نمی پذیرفت. اما اکنون زمان این رسیده است که دیگر تیم‌ها بتوانند بر روی دیتابیس کار کنند.
    اگر شما هنوز کنترل نسخه برای دیتابیس خود انجام نداده اید ما در اینجا دلایلی آورده ایم که اینکار برای شما بسیار حیاطی می‌باشد:
    به راحتی می‌توانید تغییرات کدها را با تیمتان به اشتراک بگذارید
    کنارهم قرار دادن دیتابیس کد‌ها با سیستم کنترل نسخه کار کردن اعضای تیم بر روی کدهای دیتابیس و مسئولیت پذیری آن‌ها را بر روی کارهایشان بیشتر می‌کند. توانایی به اشتراک گذاردن مداوم و مدیریت تغییرات برای تیم های که در کنار هم کار نمی کنند بسیار حیاتی است. به وسیله  SQL Sourse Control   اعضای می توانند بر روی یک دیتابیس به اشتراک گذارده شده و یا هر کدام بر روی یک دیتابیس LOCAL که یک کپی از نسخه اصلی است کار کنند. با افزودن ویژگی‌هایی مانند object locking شما می می‌توانید از تداخل های احتمالی جلوگیری کنید و کار را بدون تداخل جلو ببرید.
    از نحوه توسعه نمای بهتری به دست خواهید آورد:
    سیستم کنترل نسخه برای شما یک نمای کلی از توسعه کلی کاری که انجام می‌دهید نشان می‌دهد. کنترل نسخه برای شما تاریخچه تغییرات را نشان می‌دهد و به راحتی با سیستم های کنترلی و پیگیری کار ‌می‌کند. به طور مثال SQL Source Control به شما اجازه همگام سازی وظایف دیتابیس را با Mircosoft Team Foundation Server work item ها می‌دهد و به وسیله آن به راحتی می توانید جریان کار را کنترل کنید.
    به شما توانایی Rollback و بازگشتن به ورژن قبلی دیتابیس را می‌دهد.
    در حالی که شما همواره یک استراتژی Backup مناسب دارید. استفاده از کنترل نسخه برای دیتابیس یک مکانیزم برای back up  گرفتن از SQL کدهای شما در اختیارتان قرار می‌دهد. با استفاده از SQL Source Control کار کردن و بازگرداندن نسخه های قبلی بسیار آسان و ساده هستند.
    حسابرسی و خوانایی کدها را ساده‌تر می کند
    تغییر ورژن کنترل،‌اولین قدم برای آماده سازی خوانایی کدها و یک قدم ضروری برای بهتر کردن حسابرسی و مدیریت ریسک می‌باشد. حسابرسی صحیح نیازمند یک سازماندهی برای کلیه تغییران بر روی دیتابیس می‌باشد و آن نیازمند جزییان برای دسترسی است. با استفاده از SQL Source Control شما می‌توانید نسخه کامل تاریخچه دیتابیس و یا database object را دسترسی داشته باشید و ببینید که چه کسی تغییرات را ایجاد کرده است، چه زمانی آنها را انجام داده است و چرا.
    پایه ریزی برای Database Automation
    داشتن یک نسخه از دیتابیس مدیریت تغییرات را ساده تر می‌کند. پردازش‌های پیچیده اتوماتیک‌تر و تکرارپذیرتر می‌شوند و تغییرات نیز قابل پیش‌بینی می‌گردند. استفاده از کدی که در داخل SQL Source Control به عنوان پایه ساختن و تست های DLM Automation را اتوماتیک می‌کند و این بدین معنی است که مسائل سریع‌تر پیدا می‌شوند و کدی با کیفیت بالاتر تولید و منتشر می‌گردد.
    همگام‌سازی دیتابیس و تغییرات کد‌های نرم‌افزار
    داشتن یک دیتابیس با کنترل نسخه دقیقا در کنار اپلیکیشن تغییرات کد‌های دیتاییس و اپلیکیشن را همگام می‌کند. شما همواره خواهید دانست که چه نسخه‌ای از کد بر روی چه ورژنی از نرم‌افزار قرار داده شده است. این به شما کمک می‌کند تا انجام پروژه به صورت تیمی را بسیار ساده‌تر کنید، اثربخشی کار را بالاتر ببرید و مشکلات را سریع تر برطرف کنید. SQL Source Control که به سیستم های کنترل نسخه مانند TFS, Git, Subversion متصل شود تغییرات کدها را ذخیره می‌کند.
    خلاصه:
    در حالی که این مساله صحیح است که کنترل نسخه همواره به دست نمی‌اید، اما در دسترس بودن ابزارهایی مانند SQL Source Control به این معنی است که دیگر دلیلی برای بعضی از شرکت‌ها که این کار انجام می‌دهند نباشد. اگر شما یکی از ۴۲ ٪ هستید که تا اکنون این کار برای دیتابیس خودتان انجام نداده اید، شاید این ۶ دلیل بالا بتواند نظر شما را عوض کند.
  14. کامبیز اسدزاده
    در آخرین به‌روزرسانی‌ گوگل، پشتیبانی از ۳۹ زبان دیگر از جمله زبان فارسی به گوگل مپ اضافه شد.
    در آخرین به‌روزرسانیگوگل مپ (Google map)، بیش از ۱.۲۵ میلیارد نفر دیگر می‌توانند به‌راحتی از این اپلیکیشن استفاده کنند. گوگل با اضافه کردن ۳۹ زبان دیگر به این اپلیکیشن، استفاده از آن را برای کاربران بیشتری راحت‌تر کرد. بر اساس آخرین اطلاعات گوگل، اکنون یک میلیارد نفر برای مسیریابی به گوگل مپ متکی هستند. شاید برای شما هم عجیب باشد که گوگل مپ در سال ۲۰۰۴ تنها با زبان انگلیسی معرفی شد. گوگل مپ در سیستم‌عامل iOS تا نسخه iOS 6 به‌صورت پیش‌فرض قرار داشت و بعد از آن با Apple Maps جایگزین شد.

    زبان‌های اضافه‌شده در تمامی نسخه‌های گوگل مپ از جمله اندروید، iOS، مک، ویندوز و نسخه وب قابل‌ دسترسی است. جدای از زبان فارسی اضافه‌شده که برای ما حائز اهمیت خواهد بود، از دیگر زبان‌ها می‌توان به آذربایجانی، ارمنی، اندونزیایی، ایسلندی، رومانیایی، ترکی و ازبکی اشاره کرد.
  15. کامبیز اسدزاده
    بهترین ویرایشگر کدنویسی، بهترین اسلحه مخفی یک برنامه‌نویس است. مثل یک چاقوی سوئیسی که می‌تواند بهترین دوست یک سرباز تنها، در عملیات نفوذ باشد. دوست شما کیست؟
    بهترین ویرایشگر کد، بهترین دوست برنامه‌نویس است. پیشرفت روزافزون صنعت تکنولوژی و سرعت تحولات آن در سال‌های اخیر شگفتی‌های زیادی را خلق کرده و با رشد هوش مصنوعی و عرضهٔ انواع دستگاه‌‌های هوشمند بسیاری از رؤیاهای انسان تحقق‌یافته است. برای ساختن و پرداختن به بسیاری از ایده‌ها دیگر نیاز به فعالیت‌های مشقت‌بار و پیچیده نیست. با تهیه مقداری لوازم مکانیکی و بردهای دیجیتال و کمی سررشته از مکانیک و الکترونیک هرکسی در خانه می‌تواند ابداعات جالبی در زندگی خود داشته باشد؛ اما جان‌مایه تحقق این تخیلات در زندگی روزمره ما، دانشی به نام برنامه‌نویسی است.

    حالا هرکسی می‌تواند با صرف کمی وقت و تدبیر برنامه‌هایی هرچند ساده طراحی کند. آن‌ها را با قطعات و بردهای آماده همراه کند و به این قطعات جان ببخشد. هرچند اگر بخواهد می‌تواند در نوشتن این کدها چنان تبحر پیدا کند که آن را تبدیل به یک شغل دائم و پردرآمد کند. سرعت پیشرفت تکنولوژی برای برنامه نویسان حرفه‌ای هم می‌طلبد که با سرعت و دقت بیشتری کدهای جادویی خود را خلق کنند تا در بازار پررقابت فناوری برگ برنده‌ای داشته باشند. اهمیت این موضوع باعث رونق بسیار، در بازار و صنعت طراحی زبان‌های سطح بالا شده است.
     
    نقطه مشترک این علاقه‌مندان و آن فداییان برنامه‌نویسی، ابزاری است به نام ادیتور یا ویرایشگر‌ متن. ادیتور ها هستند که باقدرت و سرعت و هوشمندی خود دستورات و ایده‌های برنامه نویسان را تبدیل به کدهای تمیز و مرتبی می‌کنند که کارآمد و باارزش هستند. آن‌ها مبتدیان را راهنمایی می‌کنند و حرفه‌ای‌ها را یاری می‌بخشند که با اطمینان و سرعت بیشتری کدهای خود را وارد کنند.
     
    ادیتور ها در همان گام اول با همه برنامه‌نویس‌ها همراه می‌شوند ولی تنها برنامه نویسان حرفه‌ای هستند که می‌دانند بودن یا نبودن یک سمبل مانند. در انتهای یک کد چقدر مسئله بزرگی است. حال گشتن و نیافتن این مسئله، در میان هزاران خط کد می‌تواند عمر کیبورد و مانیتور را زیر مشت و لگد برنامه‌نویس، کوتاه کند. ادیتور های قدرتمند همچون خدمتگزارانی مهربان در کنار این مردان خشمگین هستند تا به آن‌ها کمک کنند هرگز دچار چنین مشکلاتی نشوند، ایده‌ای ناب خود را بیرون بریزند شکوه زندگی یک برنامه‌نویس را تجربه کنند.
     
    زبان برنامه‌نویسی و زبان نشانه‌گذاری
    زبان‌های برنامه‌نویسی آن دسته از زبان‌هایی هستند که برنامه نویسان به‌وسیله آن‌ها الگوریتم‌های خود را برای ماشین قابل‌فهم می‌کنند. زبان‌های مطرح مانند جاوا یا زبان سی پلاس پلاس از این دسته هستند. زبان‌های نشانه‌گذاری Markup Language آن دسته از زبان‌های هستند که متن و نشانه‌های معنی‌دار را باهم ترکیب می‌کنند و در آن‌ها الگوریتمی دیده نمی‌شود، مانند زبان ‌HTML یا XML.
    ویرایشگر متن یا ادیتور کد نرم‌افزارهایی هستند که برای ویراستاری متون و کدهای زبان‌های برنامه‌نویسی با توجه به شیوه‌نامه یا نحو زبان (Syntax) استفاده می‌شوند؛ لیست بهترین ویرایشگر برنامه‌نویسی در ویندوز و مک در مورد آن‌ها است. از آن‌سو نرم‌افزارهای محیط یکپارچه توسعه نرم‌افزار (Integrated Development Environment) از قدرت و توانمندی بیشتری برخوردار است. از امکانات مهم IDE می‌توان به ویرایشگری کدها، کامپایل کردن و دیباگ کردن برنامه‌ها اشاره کرد. وجه دیگر این نوع نرم‌افزارها رابط کاربری گرافیکی، برای سهولت در برنامه‌نویسی است. ویژوال استودیو(Microsoft Visual Studio) و اکلیپس (Eclipse) از دسته IDE مطرح هستند.
    همیشه برای برنامه‌نویسی نیازی به استفاده‌ از IDE نیست. این کار را می‌توان با استفاده‌ از نرم‌افزارهای ساده؛ ولی قدرتمند مثل ویرایشگر کد انجام داد، همانند نوشتن برنامه‌ای برای یک برد اپن‌سورس مثل آردوینو (Arduino). همین نوع ویرایشگر کدها که در لیست بهترین ویرایشگر٬ها معرفی می‌شوند در طراحی خود این توانایی را دارند که با اضافه کردن پلاگین‌ها، مرزها را بشکنند و به برنامه‌های IDE نزدیک شوند. ویرایشگرهای کد به دلیل راحتی نرم‌افزار در نصب، اجرای روان، انعطاف‌پذیری، توانایی در ارتقاء و همچنین گستره پشتیبانی از زبان‌های مطرح در یک ادیتور متن سبک و کم‌حجم، امروزه بسیار موردتوجه هستند.
    همیشه برای برنامه‌نویسی نیازی به استفاده‌ از IDE نیست. این کار را می‌توان با استفاده‌ از نرم‌افزارهای ساده؛ ولی قدرتمند مثل ویرایشگر کد انجام داد، همانند نوشتن برنامه‌ای برای یک برد اپن‌سورس مثل آردوینو (Arduino). همین نوع ویرایشگر کدها که در لیست بهترین ویرایشگر٬ها معرفی می‌شوند در طراحی خود این توانایی را دارند که با اضافه کردن پلاگین‌ها، مرزها را بشکنند و به برنامه‌های IDE نزدیک شوند. ویرایشگرهای کد به دلیل راحتی نرم‌افزار در نصب، اجرای روان، انعطاف‌پذیری، توانایی در ارتقاء و همچنین گستره پشتیبانی از زبان‌های مطرح در یک ادیتور متن سبک و کم‌حجم، امروزه بسیار موردتوجه هستند.
     
    لیست بهترین ویرایشگر برنامه‌نویسی برای مک و ویندوز
    شناخت ادیتورها و امکانات آن‌ها، تجزیه‌ و تحلیل، سرعت، هوشمندی و انعطاف‌پذیری آن‌ها به شما کمک می‌کند، همانند یک تکاور زبده برای هر عملیات برنامه‌نویسی حتی بدون وجود IDE آماده ‌باشید. سبک بودن،‌ قابلیت نصب روی انواع سیستم‌عامل‌ها، حتی پرتابل بودن این ادیتورها از مزیت‌های تاکتیکی است که هر برنامه‌نویس حرفه‌ای به اهمیت آن اعتراف دارد و جویای حال و احوال لیست بهترین ویرایشگر برنامه‌نویسی نیز خواهد بود.
     
    ویرایشگر نوت‌پد‌ پلاس پلاس(Notepad plus plus)
    نوت پد پلاس پلاس قدرتمند و مملو از امکانات ریزودرشت برای سرعت بخشیدن به کارها با دقت بالاست. این ادیتور متن و ویرایشگر کد برنامه‌نویسی یک پسرعمو هم در ویندوز دارد. هرچند که با حضور ++Notepad در ویندوز کمتر کسی پای مجلس نوت‌پد قدیمی می‌نشیند. نوت‌پد پلاس پلاس رایگان و اپن‌سورس است. علاوه بر آن رابط کاربری خوبی هم دارد. یکی از جذاب‌ترین بخش‌های این ادیتور، خاصیت تب ویرایشی (Tabbed Editing) است. شما می‌توانید هم‌زمان و به‌راحتی با چند فایل مختلف در یک پنجره کار کنید.

    npp در ویرایش متون HTML بیشتر شهره است؛ ولی با کد نویسی در زبان‌های دیگر، هیچ‌گاه پشیمان نخواهید شد. نوت پد به‌صورت استاندارد کدهای شما در ‌ زبان‌های مختلف رنگی می‌کند تا بهتر و راحت‌تر آن‌ها را تشخیص دهید. اگر این کار شمارا راضی نمی‌کند، قابلیت سفارشی کردن هم در این ادیتور مهیا است. npp در حین کدنویسی، پا به پای شما با کدها همراه‌ است. علاوه بر اینکه به شما پیشنهادی برای تایپ سریع می‌دهد به‌محض واردکردن کدهای اشتباه براساس شیوه کدنویسی با برجسته کردن اشتباهات، چیزی کم نمی‌گذارد. نوت‌پد در هنگام نصب چند پلاگین کاربردی و مفید با خود به همراه دارد و البته می‌تواند از مخزن پلاگین در ادیتور به پلاگین‌های جدید نیز دسترسی داشته باشید. npp حقیقتا شایسته چنین جایگاهی، در لیست بهترین ویرایشگر برنامه‌نویسی سال ۲۰۱۸ است.
    ویژگی‌های برجسته:
    Notepad plus plus برای ویندوز (Windows) ساخته‌شده است؛ اما علاقه‌مندان به آن می‌توانند در مک‌اواس ۱۰ (Mac OS X) و لینوکس (Linux) و یونیکس (Unix) هم آن را تجربه کنند. نوت‌پد پلاس پلاس نرم‌افزاری سبک است و به‌آسانی نصب می‌شود. پلاگین‌های زیادی را می‌شود به آن اضافه کرد و با ماکرونویسی می‌توانید از امکانات موجود هم فراتر بروید. از قابلیت Tabbed Editing پشتیبانی می‌کند. قابلیت ساخت بوک‌مارک Bookmark برای نشانه‌گذاری دارد. با دراگ و دراپ کردن فایل‌ها به محیط نرم‌افزار می‌توانید آن‌ها را باز کنید. پشتیبانی از قابلیت فول‌اسکرین هوشمندی در تشخیص صحت شیوه کدنویسی قابلیت یکپارچه‌سازی مداوم (Compiler Integration) در پروژه که با هر تغییر کد پروژه دوباره ‌Build می‌شود تا همه کدهای قبلی و جدید باهم هماهنگ باشند. پشتیبانی از قابلیت FTP توانایی چک کردن لغات و مقایسه فایل‌ها توانایی Code folding که باعث می‌شود کدها در بلوک‌هایی به‌صورت فشرده قرار بگیرند تا سرعت و مدیریت کدها بهتر شود. تنظیم منوی برنامه به زبان فارسی رایگان و متن‌باز است نکاتی برای ارتقاء و بهبود:
    ویرایش فایل از طریق HTTP, SSH و WebDav به‌طور پیش‌فرض پشتیبانی نمی‌شود. برای نصب روی مک‌اواس ۱۰ نیاز به نرم‌افزار wine دارید که البته برای اجرای دیگر نرم‌افزراهای ویندوز روی مک و لینوکس نیز لازم است. نتیجه:
    تجربه این ویرایشگر در زبان‌های PHP،HTML،CSS و JavaScript فوق‌العاده جذاب است. کمتر ادیتور سورس کدی در لیست بهترین ویرایشگر برنامه‌نویسی، دقت نوت‌پد++ در تذکر به اشتباهات کدنویسی را دارد و در بازه‌های زمانی کوتاه و به‌سرعت در حال ارتقاء امکانات ادیتوری خود است.
     
    ویرایشگر سابلایم تکست (Sublime Text)
    سابلایم تکست ادیتور دیگری از دسته سبک وزن‌ها باقدرت ویرایش بالا در لیست بهترین ویرایشگر برنامه‌نویسی است. این ادیتور با سی++ و پایتون نوشته‌شده است. انعطاف‌پذیری بسیار خوبی در سفارشی کردن دارد و به برنامه‌نویس کمک می‌کند با سرعت و کارایی بالا کدنویسی کند. در سابلایم تکست با متدهای جالبی از ویرایش برمی‌خورید که در کمتر نرم‌افزار ویرایشی دیگر دیده می‌شود. اسنیپت‌ها (Snippets) بخش جذاب دیگری از تجربه کار در سابلایم تکست است.

    به‌عبارت‌دیگر سابلایم تکست به برنامه‌نویس این قابلیت را می‌دهد هر جا الگویی را دید حتی در ویرایش، از سابلایم بتواند برای اجرای سریع آن استفاده کند. این کار به قوی شدن فکر برنامه‌نویس کمک خوبی می‌کند و درعین‌حال باعث می‌شود مهاجرت به نرم‌افزارهای دیگر هم سخت شود. جعبه‌فرمان‌های (Command Palette) سابلایم، مثل یک خدمتکار مفید در اختیار شماست تا با کیبورد اکثر کارها را در Sublime Text مدیریت کنید. کار با کیبورد هم یکی از مهم‌ترین مهارت‌های یک برنامه‌نویس است. سابلایم تکست از نظر گرافیک صفحه کاربری و تم زمینه سیاه که محبوب برنامه نویسان است چیزی کم نمی‌گذارد و در لیست بهترین ویرایشگر برنامه‌نویسی سال ۲۰۱۸ جایگاهی کمترین از این، برای آن منصفانه نیست.
    ویژگی‌های برجسته:
    قابلیت ویرایش هوشمند هم‌زمان چند خط قابل‌استفاده در سیستم‌عامل‌های  Windows،  macOS،  Linux قابلیت چند سکویی قابلیت ارائه سریع لیست فایل موجود در یک فولدر و ورود به آن رابط کاربری محبوب انعطاف‌پذیری و سفارشی شدن بالا با نصب پلاگین توانایی پشتیبانی از فریمورک OpenFL و زبان برنامه‌نویسی  Haxe حمایت از توابع وردپرس تشخیص قدرتمند خطاهای زبان برنامه‌نویسی و برجسته کردن آن‌ها با نصب بسته مخصوص هر زبان نکاتی برای ارتقاء و بهبود:
    حمایت کم از زبان‌های راست‌نویس حمایت کم در لینوکس رایگان فقط در حالت Trial تأکید شدید برای کار با کیبورد به مذاق همه شیرین نیست نتیجه:
    این ویرایشگر اعتیادآور است. این ویرایشگر یکی از بهترین‌ها برای زبان HTML و PHP است. هرچند ویرایشگرهای دیگر هم در این زمینه خوب کار می‌کنند؛ ولی سابلایم با خلاقیت‌هایش به  برنامه‌نویس در کدنویسی سمت کلاینت و سرور طعم دیگری دارد.
     
    ویرایشگر اتم (Atom)
    اتم یک ویرایشگر متن ساده و راحت است. ازنظر ظاهری شبیه سابلایم تکست است ولی اغلب برنامه نویسان با آن بیشتر اخت می‌شوند و ارتباط بهتری برقرار می‌کنند. برای نصب قالب هم انتخاب‌های زیادی برای Atom وجود دارد. این ویرایشگر که با node.js طراحی‌شده چند سکویی و اپن‌سورس است. قابلیت ویژه اتم توانایی هک هسته آن توسط کاربران برای کارایی بیشتراست. اتم با بخش مدیریت پکیج خود به‌راحتی می‌تواند فراتر از ویرایشگر متن عمل کند. Atom توسط گیت‌هاب توسعهٔافته است.

    این ‌یک مزیت عمده است چراکه گیت‌هاب باهدف افزایش کارایی و کارآمدی توسعه‌دهندگان خلق‌شده است و رزومه موفق آن نیازی به تائید ندارد. اتم در اتصال به گیت‌هاب نیز به‌خوبی عمل می‌کند. ویرایشگر سورس کد اتم در مجموعه ابزارهای خود یک جستجوگر فازی جذاب هم دارد که شیوه کارش ترکیب دو متد جستجوگر کلمات و غلط‌گیر املایی است، از همین رو به جستجوگر فازی معروف شده است.
    ویژگی‌های برجسته:
    سادگی و جذابیت در طراحی  رابط کاربری پشتیبانی از جعبه‌فرمان همانند سابلایم‌ تکست ابزارهای ویژه برای توسعه مدیریت مجتمع برای پشتیبانی از پلاگین‌ها شیوه سفارشی‌سازی ساده و سهل در رابط کاربری جامعه فعال پشتیبانی در گیت‌هاب برای رفع مشکلات قابلیت چند سکویی تشخیص شیوه کدنویسی زبان‌های برنامه‌نویس مختلف رایگان و متن‌باز قابلیت جستجوی فازی نکاتی برای ارتقاء و بهبود:
    در مقایسه با دیگر ویرایشگرهای متن کند است مدیریت سخت فایل‌های بزرگ  نتیجه:
    اتم توسط توسعه‌دهنده‌ها برای توسعه‌دهنده‌ها ساخته‌شده است. وجود یک جامعه خوب و فعال که به پشتیبانی از این ویرایشگر مشغول هستند، یک مزیت استراتژیک بسیار خوب برای هر نرم‌افزاری است. این علاقه و تلاش به علت قابلیت اپن‌سورس عمیق و کامل این نرم‌افزار است که باعث شده در میان دیگر ویرایشگرها، درعین‌حال سادگی در لیست بهترین ویرایشگر برنامه‌نویسی گردوخاکی به پا کند. چنانکه نام اتم به٬عنوان رقیبی تازه‌نفس، برای رقابت با IDE ها مطرح است. پس با اتم هرروز می‌توانید منتظر شنیدن خبرهای خوب و جالبی در مورد Atom و ابزارهای جدیدش باشید. 
     
    ویرایشگر کدا (Coda)
    ویرایشگر Coda با بانک کد و قالب  پروپیمان خود، سرعت و بهره‌وری را برای کاربران یک‌کاسه کرده است. کار اصلی این ویرایشگر طراحی سایت است. با مجموعه امکانات پیاده‌سازی شده در کدا حتی برای مبتدیان نیز برنامه‌نویسی می‌تواند مفرح و درعین‌حال مفید و کارآمد باشد. ادیتور کدا، از سال ۲۰۰۷ به‌صورت یک ویرایشگر متن ساده وارد عرصه برنامه‌نویسی شد و امروز یکی از بهترین نرم‌افزارهای تکامل‌یافته در سیستم‌عامل مک به شمار می‌رود.

    شاید بتوان گفت نمونه قابل‌مقایسه آن در ویندوز نرم‌افزار Adobe dreamweaver است. در بخش‌های مختلف طراحی وب، از طراحی ظاهری  وب‌سایت گرفته تا پیاده‌سازی کدهای سمت سرور و حتی پشتیبانی از قابلیت FTP همگی در ویرایشگر کدا به‌خوبی کار می‌کنند که نتیجه آن محبوبیت بالای این ادیتور در لیست بهترین ویرایشگر برنامه‌نویسی سال است.
    وجود کتابخانه‌های غنی در نرم‌افزار Coda کار با آن را راحت و آسان کرده است. ویرایشگر کدا در بخش طراحی رابط کاربری سایت تا جایی پیشرفته که به‌صورت دراگ و دراپ می‌توانید اجزای سایت خود را طراحی کنید. این باعث شده که طیف گسترده‌ای از برنامه نویسان از مبتدی تا حرفه‌ای این نرم‌افزار را به‌عنوان انتخاب اول خود به همراه داشته باشند. البته کدا مخصوص سیستم‌عامل مک است و از ورژن OS X 10.7.5 به بعد قابل‌استفاده در آن است.
    ویژگی‌های برجسته:
    استفاده از رابط کاربری انقلابی مک به نام Leopard تکمیل خودکار کدها ویرایش بلوکی و رنگ‌آمیزی کدها برحسب زبان قابلیت دراگ و دراپ برای ساخت اجزا وب‌سایت مدیریت FTP قابلیت سفارشی کردن رابط کاربری کتابخانه کد برای زبان‌های مختلف پشتیبانی از MySQL نکاتی برای ارتقاء و بهبود:
    عدم پشتیبانی در دیگر سیستم‌ها به‌جز مک کرش کردن هرازگاهی در ارتباطات شبکه قیمت بالا در مقایسه نسبت به دیگر ویرایشگرها تنها هفت روز رایگان است و باید خریداری شود نتیجه:
    کدا در طراحی وب، کامل و خوب است. هر آنچه شما ابزار و کد بخواهید در آن یکجا جمع شده است. با توجه به قیمت و ویژگی‌های که دارد در مک و لیست بهترین ویرایشگر برنامه‌نویسی جزو بهترین‌ها است. با نصب آن هیچ‌وقت هم از امکانات جدید و بروزرسانی های آن بی‌خبر نخواهید بود.
     
    ویرایشگر تکست میت (TextMate)
    تکست میت یکی از دیگر ویرایشگرهای شهره در سیستم‌عامل مک است. البته بیشتر برای کار با برنامه‌نویسی در زبان روبی و فریمورک روبی آن ریلز استفاده می‌شود. در کل TextMate یک ویرایشگر عالی برای توسعه‌دهندگان زبان‌های مدرن برنامه‌نویسی است.
     

     
    ویژگی‌های برجسته:
    قابلیت جستجو و جایگزینی  جعبه تاریخچه قابلیت انتخاب و تایپ  سریع ستونی در میان متون تکمیل خودکار کد پشتیبانی از بلوک‌بندی کدها مناسب برای پروژه‌های تیمی پشتیبانی بیش از ۵۰ زبان برنامه‌نویسی قابلیت رنگ‌آمیزی کدها پشتیبانی Xcode قابلیت کار با FTP رایگان قابلیت فرورفتگی خودکار در کدها  نکاتی برای ارتقاء و بهبود:
    رابط کاربری نه‌چندان دل‌چسب پشتیبانی نکردن از قابلیت فول‌اسکرین تنها در سیستم‌عامل مک کار می‌کند نتیجه:
    جای تعجب نیست که در میان ادیتورهای ارزان در مک، این ادیتور بهترین گزینه باشد. شاید برای کسانی که در ویندوز ویرایشگرهای رایگان و قدرتمندی را می‌شناسند عجیب باشد؛ ولی معمولاً در مکینتاش هرچقدر پول بدهید، آش می‌خورید. این را هم فراموش نکنیم که تکست میت از برندگان جایزه طراحی اپل در سال ۲۰۰۶ بوده است پس شایسته حضور در لیست بهترین ویرایشگر برنامه‌نویسی نیز هست. 
     
    ویرایشگر Text Wrangler
    ویرایشگر ساده اما قدرتمند Text Wrangler که از بهترین ابزارها برای مدیریت یونیکس و سرور است. رابط کاربری هوشمند و مجموعه‌ای از ابزارهای قدرتمند برای ویرایش و جستجو متن و کدها است.

    این ویرایشگر با Xcod همکاری می‌کند و با پشتیبانی از AppleScript جایگاه خوبی برای خود در لیست بهترین ویرایشگر برنامه‌نویسی دست‌وپا کرده است. فایل خروجی این نرم‌افزار را می‌توانید در استاندارد‌ یونی‌کد برای یونیکس و داس و مک تهیه کنید.
    ویژگی‌های برجسته:
    عملکرد مطلوب در ویرایش فایل‌های بزرگ قابلیت استفاده از ماکرو و نصب پلاگین پشتیبانی از قابلیت FTP پشتیبانی از SSH برای ویرایش فایل از راه دور مقایسه هم‌زمان دو سند رنگ‌آمیزی بر اساس شیوه کدنویسی زبان‌های برنامه‌نویسی بلوک کردن  و خاصیت تا شوندگی در کدها و متن‌ها کامل کردن خودکار کدها چک املا کلمات رایگان پشتیبانی از ۴۴ زبان برنامه‌نویسی از HTML, JavaScript, Perl, Python, VBScript تا  SQL نکاتی برای ارتقاء و بهبود: 
    عدم پشتیبانی از HTTP و WebDav ناسازگار با مکینتاش G4 تنها از زبان انگلیسی پشتیبانی‌ می‌کند عدم پشتیبانی برای ویرایش گروهی نتیجه:
    ویرایشگر  Text Wrangler باوجود چند محدودیت، قدرتمند و رایگان است ولی اگر شمارا راضی نمی‌کند با صرف مبلغی می‌توانید به ادیتور که از آن الهام گرفته‌شده‌ است، یعنی BBEdit دست پیدا کنید که ادیتور بسیار خوبی در سیستم‌های مک است.

    ویرایشگر جی ادیت (jEdit)
    این محصول قدرتمند از آن جاوا نیرو گرفته است که برنامه‌نویسان حرفه‌ای با آغوش باز پذیرای آن هستند. نفوذ امنیت، ذاتی جاوا در رگ و پی این نرم‌افزار باعث شده است که فایل بایت ساخته‌شده توسط آن، عرق هکرها را برای رمزگشایی درآورد.
     
    هزاران پلاگین و ماکرو که برای این ادیتور ساخته‌شده‌اند، نشان می‌دهد که ‌در قلب برنامه نویسان جای گرفته است. همین پلاگین‌ها باعث شده که jEdit مرزهای  ویرایشگری را بشکند و به  قلمرو IDE راه پیدا کند و البته به لیست بهترین ویرایشگر برنامه‌نویسی سال ۲۰۱۸.
     
    ویژگی‌های برجسته:
    ایجاد تورفتگی خودکار در متن بلوکه بندی کد و ایجاد خاصیت تا شوندگی متن‌ها موتور قدرتمند برای اجرای عبارات باقاعده (regular expressions) قابلیت چک املا لغات پشتیبانی از قابلیت FTP پشتیبانی از یونیکد و UTF8 حجم کم در ابتدا و قابل توسعه با پلاگین‌ها قابل‌ استفاده در ویندوز، مک، یونیکس رایگان پشتیبانی بیش از 200 زبان برنامه‌نویسی نکاتی برای ارتقاء و بهبود:
    زمان بارگیری آن کمی طولانی است قابل‌استفاده به روی ویندوز، مک، یونیکس عدم پشتیبانی برای ویرایش گروهی عدم پشتیبانی از فایل‌های بزرگ عدم پشتیبانی از SSH برای مدیریت فایل از راه دور نتیجه:
    انتخاب مناسبی برای کسانی که می‌خواهند ادیتوری پیشرفته و امن داشته باشند. به‌هرحال جاوایی بودن آن ممکن است گاهی شمارا معطل کند ولی باوجود ویژگی‌های خاصی که دارد، این کندی بارگذاری به‌راحتی قابل‌چشم‌پوشی است. از آن می‌توان به‌عنوان یک ویرایشگر متن رایگان و با کدنویسی تمیز و امن که آینده خوبی دارد، نام برد.
     
    ویرایشگر Araneae
    ویرایشگر ساده و مفیدی از دنیای ویندوز که قدرت و تجربه لذت‌بخش برنامه‌نویسی را برای شما به ارمغان می‌آورد. در عین سادگی برای کاربر حرفه‌ای نیز ابزار مناسبی در خود دارد و بعد از نصب، بدون هیچ پلاگین اضافه‌ای می‌توانید به برنامه‌نویسی در زبان‌های HTML, CSS, XHTML, PHP بپردازید.

    ویژگی‌های برجسته:
    رنگ‌آمیزی کدها قابلیت جالب دراگ و دراپ برای تصاویر جستجو و ویرایش سریع پیش‌نمایش از مرورگر حتی بدون نیاز به سیو (Save) فایل حمایت از تب‌های چندگانه ویرایشی رایگان نکاتی برای ارتقاء و بهبود: عدم پشتیبانی از پلاگین و ماکرو خارجی  نتیجه:
    ویرایشگر Araneae بسیار مناسب برای فعالیت‌های طراحی وب‌سایت است که با استفاده از آخرین تکنولوژی‌های وب، شما را در کارتان موفق می‌کند. این نرم‌افزار می‌تواند یک رقیب جدی برای دیگر ادیتور‌ها در لیست بهترین ویرایشگر برنامه‌نویسی و رفیق خوبی برای برنامه نویسان PHP باشد.
     
    ویرایشگر Visual Studio Code
    از نام آن پیداست که برادر کوچک‌تر ویژوال استودیو IDE مطرح دنیای برنامه‌نویسی است. محصولی از مایکروسافت که در سیستم‌عاملی Mac OS X و لینوکس هم کار می‌کند. بزرگ‌ترین ویژگی این ادیتور، تجربه ویرایش کدنویسی باحال و هوای ویژوال استودیو ایجاد می‌کند بدون اینکه نیاز باشد نسخه کامل IDE ویژوال استودیو را با حجمی حدود 3 گیگ به روی یک سیستم معمولی پیاده کرده و مرارت‌ها بکشید. این ادیتور سبک و کارآمد است و منصفانه نیست، تمام انتظاراتی که از برادر بزرگ‌تر داریم از Visual Studio Code نیز بخواهید.

     
    ویژگی‌های برجسته:
    پشتیبانی از ۳۰ زبان برنامه‌نویسی و صدالبته ASP.NET و #C زمان نصب کم و روال ساده در اجرا قابلیت مقایسه دو فایل رنگ‌آمیزی کدها افزونه‌های فراوان وجود نسخه پرتابل قابلیت ارتباط با گیت‌هاب و استفاده از امکانات آن رایگان نکاتی برای ارتقاء و بهبود: عدم پشتیبانی خوب از افزونه‌ها نتیجه:
    این ویرایشگر عالی فضای بسیار کمی را اشغال می‌کند. هر برنامه‌نویس دلداده #C بر اهمیت وجود این ادیتور سورس کد، در لیست بهترین ویرایشگر برنامه‌نویسی واقف است. این ویرایشگر فوق‌العاده محبوب به شما فرصت عالی تجربه زبان‌های ASP.NET و #C را می‌دهد تا با لذت و آرامش بیشتری در استفاده از آن‌ها ماهر شوید و بتوانید در آینده با فراغ بال، برادر بزرگ‌تر را ملاقات کنید.
     
    ویرایشگر UltraEdit
    ویرایشگر UltraEdit محصول شرکت رایانه‌ای IDM Computer Solutions یک ویرایشگر محبوب در نزد هکرها، برنامه‌نویسان و توسعه‌دهندگان و البته لیست بهترین ویرایشگر برنامه‌نویسی است.

    ادیتور اولترا‌ ادیت در پشتیبانی از زبان‌های مطرح خوب عمل می‌کند، همچنان که تیم پشتیبانی نرم‌افزار از سال ۱۹۹۴ برای بهبود و اجرای پیشنهاد‌ها و انتقادهای کاربران این ادیتور، خوب عمل کرده است. ادیتور UltraEdit در سیستم‌عامل‌های ویندوز، مک و لینوکس نیز در دسترس است.
     
    ویژگی‌های برجسته:
    قابلیت انتخاب چندگانه و ویرایش هم‌زمان رنگ‌آمیزی کدها و هشدار اصلاح کد قابلیت Ftp قابلیت ویرایشگر HEX قابلیت املای کلمات قابلیت رمز سازی و رمزگشایی قابلیت ویرایش فایل‌های باینری پشتیبانی از فایل‌های بزرگ پشتیبانی از SSH نکاتی برای ارتقاء و بهبود:
    قیمت بالا نتیجه:
    قیمت این نرم‌افزار گران است ولی ویژگی‌های زیادی را پشتیبانی می‌کند که در برنامه‌نویسی بسیار مفید هستند. برای مقایسه عادلانه‌تر ازنظر قیمت در مقایسه با ویژگی‌های ارائه‌شده در دیگر نرم‌افزارهای هم قیمت چندان هم گران نیست ازاین‌جهت یکی از بهترین نرم‌افزارهای تجاری است که می‌شود از آن نام برد.
     
    هیچ‌وقت از داشتن ادیتور سورس کد پشیمان نمی‌شوید و هر زمان نیز به ابزاری سریع و کارآمد نیاز داشته باشید، به‌راحتی در اختیار شماست. این لیست نیز بهترین ویرایشگرهای کدنویسی را که امسال بیشترین توجه را در نزد برنامه‌نویسان جلب کرده‌اند، برای انتخاب سریع‌تر و بهتر شما، جمع کرده است. هرکدام را که به طبع شما نزدیک‌تر است انتخاب کنید و با تمرین در آن چالاکی خود را در برنامه‌نویسی، به رقبا نشان دهید.
  16. کامبیز اسدزاده
    برای پیداکردن نشانه های حیات در سیاره های دیگر می توان از فضاپیماهای کنونی هم استفاده نمود. اما آنها وسیله اختصاصی این امر نیستند و احتمال دارد نتوانند به درستی این ماموریت را به انجام برسانند.

    در همین راستا، ناسا به تازگی دستگاهی ساخته تا شواهد درست و کاملی در این مورد بیابد. آنها نام «لپ تاپ شیمیایی» را برای اختراع جدید خود انتخاب کرده اند. این لپ تاپ که در اصل یک ربات محسوب می شود نخستین وسیله ای خواهد بود که به طور اختصاصی برای کشف آمینو اسید و اسیدهای چرب (که عناصر ضروری حیات هستند) در کره های دیگر ساخته شده.
    این ربات با باتری کار می کند و برای انجام وظایفش به نمونه های مایع نیاز دارد. از آنجا که یافتن مایع در سیارات دیگر چندان آسان نیست، مکانیسم آن مشابه قهوه ساز طراحی شده. به این صورت که از آب داغ برای خارج نمودن عناصر ارگانیک مواد بهره می گیرد. یعنی نمونه مورد نظر به همراه آب درون مخزن آن قرار داده شده و تا 212 درجه فارنهایت گرم می شوند.
    در آخر، لپ تاپ شیمیایی ناسا، آب حاوی نمونه را با رنگ فلورسنت که به مولکول های آمینو اسید و اسیدهای چرب می چسبد، مخلوط و سپس آنها را به میکروچیپی در داخل دستگاه ارسال می کند تا مولکول ها از هم جدا شوند. در نهایت، دانشمندان با عبور دادن مولکول ها از لیزر، نشانه های حیاتی موردنظرشان را جستجو می کنند.
    البته لازم به یادآوری است که هر نوع اکتشاف جدید برای عملی شدنش به سال ها زمان نیاز دارند و مریخ نورد جدید ناسا نیز از این قاعده مستثنا نیست و تا سال 2021 میلادی روی سطح هیچ سیاره دیگری (همانند اروپای ژوپیتر یا انسلادوس زحل) فرود نخواهد آمد.البته تا آن زمان هم قرار نیست این دستگاه اختراعی بی استفاده بماند. مثلا می توان از آن برای آزمایش های زیست محیطی یا در صنعت داروسازی برای تشخیص داروی تقلبی بهره گرفت.
  17. کامبیز اسدزاده
    رقابت با AMD Ryzen‌ها باعث شده است تا Intel هم مدام در حال تغییر رویه محصولات خود باشد؛ این شرکت به زودی با 2 چیپست Z399 و X599 بخش بزرگتری از بازار CPUهای سطح بالای دسکتاپ (HEDT) را در اختیار خواهد گرفت.

    طبق اطلاعات موجود، کمپانی اینتل تراشه های حرفه ای خود را به 2 قسمت تقسیم خواهد کرد. تراشه Z399 جایگزین تراشه X299 فعلی می گردد؛ اما دلیل حذف حرف X از ابتدای نام PCH به چه علت است؟
    این شرکت هدایت پردازنده های Extreme Edition را به سطح بالاتری از دسکتاپ برده و آن را به عهده چیپست X599 می گذارد؛ این چیپست برای هندل مادربردهای مبتنی بر سوکت LGA 3647 طراحی شده و اساسا چیزی شبیه به تراشه C629، اما با قابلیت های بیشتر است. پلتفرم های مانند Basin Falls به بخش های بالاتری از دسکتاپ سپرده شده و چیپست X599 هدایت CPUهایی با 22 الی 28 هسته را بر عهده خواهد داشت.
    از سوی دیگر، چیپست Z399 برای سطح بالاتری از دسکتاپ میانی معرفی می گردد. همانطور که می دانید، Z390 برای مادربردهای جدید نسل نهم با کد رمز WhiskyLake معرفی می گردد؛ این CPUها تا 8 هسته منطقی را به همراه داشته و توان پردازشی آنها حتی بیش از نیاز بازی های روز است. پس از آن، Z399 برای پردازنده هایی با بیش از 10 هسته معرفی می شود. پیشبینی می گردد که این چیپست برای CPUهایی با 16 الی 22 هسته معرفی گردد. Z399 بر روی مادربردهای LGA 2066 مورد استفاده قرار می گیرد. تراشه های جدید اینتل برای سیستم های قدرتمندی مانند Workstation و تولید محتوا مناسب هستند.
  18. کامبیز اسدزاده
    کامپایلر Cling یک مترجم تعاملی برای سی‌پلاس‌پلاس است، این مترجم تحت بالاترین کتابخانه‌های Clang و LLVM ساخته شده است. در واقع از آن‌جایی که کامپایلر Clang از آخرین ویژگی‌ها و استاندارد‌های زبان سی‌پلاس‌پلاس پشتیبانی می‌کند، Cling اجازه می‌دهد تا توسعه‌دهندگان اسکریپت‌های خود را با استفاده از C و C++ بنویسند. اگر شما به طور مستقیم مترجم را اجرا کنید، یک محیط زنده برای آغاز برنامه نویسی با سی‌پلاس‌پلاس را خواهید داشت که به عنوان بخشی از استاندارد نحو سی و سی‌پلاس‌پلاس به شمار می‌آید. همچنین می‌توانید دیگر دستورات را با نقطهٔ "." آغاز در اختیار داشته باشید.
    وقتی از مترجم تعاملی استفاده می‌کنید، می‌توانید کد زیر را بنویسید:
    #include <stdio.h> printf("hello world\n"); همانطور که می‌بینید نیازی نیست تا در مورد حوزهٔ دامنه‌ها نگران باشید؛ کافی است شما تابع مورد نظر خود را صدا بزنید.
    اگر قصد شما این است که از Cling به عنوان یک مترجم برای ساخت اسکریپت‌ها استفاده کنید، باید همه چیز را در داخل یک تابع قرار دهید.چرا که نقطهٔ ورود به اسکریپت به طور پیش‌فرض همانند نام فایل می‌باشد. می‌توان آن را برای صدا زدن دیگر توابع سفارشی سازی کرد. بنابراین مثال قبل می‌توانید به شکل زیر تغییر کند:
    #include <stdio.h> void _01_hello_world() { printf("foo\n"); } یک نسخهٔ دیگر در قالب سی‌پلاس‌پلاس
    #include <iostream> void _02_hello_world() { std::cout << "Hello world" << std::endl; } مثال‌ها کاملاً ساده هستند، اما آن‌ها به شما نشان می‌دهند که چگونه باید شروع کنید.
    در مورد کیوت چطور؟
    #include <QtWidgets/qapplication.h> #include <QtWidgets/qpushbutton.h> void _03_basic_qt() { int argc = 0; QApplication app(argc, nullptr); QPushButton button("Hello world"); QObject::connect(&button, &QPushButton::pressed, &app, &QApplication::quit); button.show(); app.exec(); } اما توجه داشته باشید که کد قبلی کار نخواهد کرد، شما باید برخی از پارامتر‌های سفارشی را در Cling مشخص کنید.
    cling -I/usr/include/x86_64-linux-gnu/qt5 -fPIC -lQt5Widgets 03_basic_qt.cpp شما می‌توانید Cling را برای خودتان بر اساس آن چیزی که برای اسکریپت خود نیاز دارید سفارشی سازی کنید. همچنین شما می‌توانید Cling را به عنوان یک کتابخانه در اپلیکیشن‌های خود آورده و از سی‌پلاس‌پلاس به عنوان زبان برنامه‌نویسی استفاده کنید. این پُست در آینده ادامه خواهد داشت. ?
  19. کامبیز اسدزاده
    از زبان سازندگان تیم Nymea بشنوید که چگونه در مورد دلایل استفاده خود از Qt در حوزه اینترنت اشیاء می‌گویند. در اینجا تیم Nymea که سازنده پلتفرم IoT با نام Nymea اس اینگونه می‌گویند. ما از ابتدای کار خود از Qt استفاده کرده ایم. شما ممکن است فکر کنید و اینگونه به نظر برسد که انتخاب کیوت برای دستگاه‌هایی که دارای رابط کاربری نیستند یک انتخاب غیر عادی باشد! اجازه دهید تا این مبحث را کمی برای شما روشن کنیم. اساساً، در بیانیه قبلی٬ سه تصور غلط وجود دارد.

    کیوت یک چهارچوب رابط کاربری است : بله اما بسیار بیشتر از چیزی است که تصورش را می‌کنید
    اولین و بزرگترین تصور غلط این است که Qt تنها بر روی پروژه هایی تمرکز کرده است که عمدتا در حوزه رابط کاربری UI می‌باشند. درست است که کیوت چندین سال پیش به عنوان یک ابزار قدرتمند رابط توسعه رابط کاربری فعالیتش را آغاز کرده است. اما آن زمان٬ کیوت یک مجموعه کامل از کتابخانه‌ها و ابزارهای پشتیبانی شده در هر لایه کامل نبود که امروزه این به حقیقت پیوسته است. حتی شما اگر گزینه‌های گرافیکی را نداشته باشید، کیوت بهره وری شما را به یک مرتبه افزایش خواهد داد. که در موردش بعدا بیشتر اشاره خواهم کرد.
    رابط کاربری دارای جنبه‌های بسیاری است
    در حال حاضر، اجازه دهید اینگونه بگویم که: هیچ نمایشگری برابر با هیچ رابط کاربری نیست. حتی وقتی شما در حال ساخت یک دستگاه اِمبِد بدون نمایشگر هستید تقریبا هیچ رابط کاربری برای آن وجود ندارد. در مثال ما رابط کاربری شامل یک رابط وِب در حال اجرا در جعبه IoT و برنامه مشتری است. اپلیکیشن مشتری٬ اجرا بر روی تلفن‌های هوشمند٬ کامپیوترها و یا صفحه های نمایشی دیواری که عمدتا برقراری ارتباط و صحبت با دستگاه از طریق لایه UI صورت می‌گیرد. در اینجا، فناوری کیوت کوئیک (Qt Quick) می‌تواند یک تجربه مدرن را با قابلیت  (یک بار نوشته شدن و در همه جا اجرا شدن) را ارائه دهد و جالبترین بخش از کیوت نسخه ۵.۱۰ این است که در زمانی نیاز از برنامه های مشابه می‌توان بر اساس فناوری Qt WebGL به عنوان یک ویژگی جدید استفاده کرد.
    بدون سربارگذاری اضافی : تنها مواردی را مستقر کنید که به آن ها نیاز دارید
    یک نظر دیگر که اغلب شنیده ایم این است که وارد کردن کیوت به دستگاههای اِمبد سربار بزرگی خواهد بود. در حالی که در روزهای اولیه٬ کیوت از برخی از ماژول شامل شده بود که در این سالها بسیار تغییر کرده اند آن‌ها بهتر و پیشرفته تر از قبل شده اند و در جدید ترین نسخه کیوت ۵ مدولاسیون کیوت کنترلهای بسیاری را در بخشهایی از کیوت جهت نصب یک نقطه اشتراکی و قابل ردیابی را تسهیل کرده است. در این روزهای اخیر کیوت توانسته است این امکان را فراهم سازد تا تجهیزات لازم را بر روی دستگاه‌ها به حداقل برساند و نیاز به آن را به طور کامل از بین ببرد.
    کیوت چگونه توانسته است بهره وری مارا بر روی Nymea افزایش دهد
    همانطور که در بالا ذکر شد، من مایلم به برخی از ویژگیهای کیوت که موجب افزایش بهره وری Nymea شده است را عنوان کنم تا بررسی کنید.
    تعداد زیادی از آنها به صورت لیست در اینجا وجود دارد٬ اما مهمترین آنها برای پُشته میان افزار ما عبارتند از:
    معماری پلاگین
    معماری پلاگین کیوت مناسب برای بارگیری پلاگین‌ها است، و تمام پیچیدگی و بارگذاری کتابخانه ها را از بین می‌برد٬ استفاده ازNymea بر اساس پلاگین‌ها یک مزیت قابل توجهی است. هسته این پلتفرم یک نکته از تنظیمات نرم افزار مدیریت و هوشمندانه اشیاء می‌باشد که در آن تمام سخت افزارهای واقعی و خدمات آنلاین٬ به اصطلاح اشیاء در سیستم از طریق پلاگین فعال هستند.
    پروتکل های انتقال
    تنها چند تماس با رابط های برنامه نویسی Qt همه چیز را که مورد نیاز است در اختیار شما قرار می‌دهد. میان افزار Nymea رابط ها را از طریق سوکتها (TCP/IP یا سوکت های محلی) ٬ WebSockets, Rest, Bluetooth RFCOMM ارائه می‌دهد و همه آن‌ها به سادگی در دست کیوت با استفاده از رمزنگاری SSL (گواهی معتبر) برای ارتباط امن فراهم شده اند.
    رابط های برنامه نویسی مبتنی بر JSONRPC
    کیوت پشتیبانی از JSON را پیشنهاد می‌کند و اجازه می‌دهد تا به راحتی بین ساختار های دالی به اشیاء JSON دسترسی داشته باشید. این در زمان تعامل با مشتتریان برای ما یک نکته مثبت بسیار بزرگی محسوب می‌شود.
    چهارچوب آزمایش و اشکالزدایی
    توسعه دهندگان از مزایای یک رابط برنامه نویس بسیار انتزاعی لذت می‌برند. کدهای پایه Nymea هنگام آزمایش به صورت خودکار توسط سیستم Qt Test مورد آزمایش قرار می‌گیرند و این باعث می‌شود مواردی را برای آزمایش قابلیتها و همچنین تهیه گزارش و چاپ آن‌ها همراه با آمار در انواع مختلف در قالب مشابه UnitXML در اختیار داشته باشیم. علاوه بر این٬ آن را قادر می‌سازد تا با دیگر سیستم‌های خطایابی مانند Valgrind و دیگر ابزارهای خارجی و قدیمی که برای سی++ کار‌های قدیمی و حرفه ای مهم است را فراهم می‌کند.
    مستندات رابط های برنامه نویسی با استفاده از QDoc
    کیوت یک مرجع بسیار شگفت انگیز در آدرس doc.qt.io را ارائه میدهد. سیستم QDoc امکان این را فراهم می سازد که با نصب CI دسترسی برای سفارشی سازی ظاهر و همچنین مستند سازی ویژه ای را برای پروژه خود فراهم سازید که برای Nymea به آدرس.
    یک عالمه حامی ریز و کوچک در امتداد مسیر
    کیوت مقادیر بیشماری از ویژگی ها را در اختیار توسعه دهندگان قرار می‌دهد که از پارامترهای خط فرمان و تجزیه تحلیل ورودی گرفته تا خروجی و اتصالات به اینترنت و همچنین مکانیزم های مختلف IPC در سیستم هایی مانند D-Bus که هرکدام از این ویژگی های به نوبه خود آماده استفاده هستند.
    همه (یا تقریبا همه آنها) به طور کامل چند-سکویی هستند، در حالی که Nymea برای اجرا بر روی دستگاه های مبتنی بر لینوکس متمرکز شده است٬ با این حال به کمک کیوت میتوانیم آن را برای دیگر پلتفرمها نیز بسازیم. البته برخی از ویژگی های یکپارچه مانند رابط های برنامه نویسی D-Bus بر روی تمامی سیستم عامل ها کار نخواهند کرد، اما این چنین موارد در کل بسیار نادر هستند. در حال حاضر nymea دارای مخزن مبتنی بر dpkg برای پشتیبانی تحت همه توزیعهای ابنتو و دبیان و همچنین بسته های ناگهانی متناسب با چنین توزیعهایی تعبیه شده است. برنامه مصرف کننده برای دسکتاپ و اندروید ساخته شده است. تیم ما برای توسعه آن بر روی پلتفرم iOS نیز در حال تلاش است که بر پایه WebGL برای پشتیبانی از تمامی قابلیتهای Qt Quick به عنوان یک رابط کاربری خوب در Nymea تمرکز کرده است.
    نکته مهم و کلی این است
    کیوت یک چهارچوب ایده آل برای پروژه‌های شما در حوزه UI یا غیر آن است. تعداد زیادی از رابط های برنامه نویسی آزمایش شده و با کیفیت بالا کار و زندگی هریک از توسعه دهندگان را بسیار راحتر میکند. به ویژه وقتی به راحتی API ها توجه شود. در عین حال کیوت همچنان به شما این امکان را فراهم میکند تا از مزایای ++C لذت ببرید. بنابراین کیوت برای IoT بسیار مناسب است.
    درباره Nymea
    شرکتی است که دستگاههای هوشمند را می‌سازند. سریع، قابل برنامه ریزی و بدون دردسر. تیم M2M ما یکپارچه بودن رابط های برنامه نویسی را تضمین می‌کند چرا که ما به قدرت راه حل های حاشیه ای انباشته شده (جمع شده، ترکیب شده) ایمان داریم.
  20. کامبیز اسدزاده
    مایکروسافت قصد دارد با اعمال فناوری گرافیکی سایه‌زنی با نرخ متغیر در DirectX 12 ضمن افزایش نرخ فریم همگام با افزایش کیفیت بصری، از الزامات سخت‌افزاری اجرای بازی‌ها بکاهد.

    مایکروسافت فناوری سایه‌زنی با نرخ متغیر (Variable Rate Shading) را به DirectX 12 وارد کرده است. بدین ترتیب توسعه‌دهندگان با اتکا بر این نوع سایه‌زنی قادر خواهند بود سطح عملکرد در محیط‌های گرافیکی نظیر بازی‌ها را بهبود ببخشند، کیفیت بصری بازی را افزایش داده و منابع مورد نیاز سیستم برای اجرای بازی را کاهش دهند.
    مایکروسافت از توسعه‌دهندهٔ بازی‌های ویدئویی Firaxis خواسته است که این نوع سایه‌زنی را در یکی از بازی‌های خود پیاده‌سازی کند تا نشان دهد که کاربرد روش VRS تا چه اندازه ساده و تأثیر آن برعملکرد عناوین مختلف تا چه اندازه چشمگیر خواهد بود. در قسمت سمت چپ تصویر زیر، تأثیر VRS در عمل دیده می‌شود. گرچه دو سمت تصویر یکسان به نظر می‌رسد، بنا به گزارش Firaxis در نقشهٔ زیر و در چنین سطحی از بزرگنمایی، با اعمال VRS شاهد ۱۴ درصد افزایش در خروجی فریم خواهیم بود.
    البته باید به سطح عملکرد گزارش شده توسط Firaxis با جانب احتیاط نگریست. ما از شرایط انجام آزمایش بی‌خبریم، قابلیت VRS را هنوز نیازموده‌ایم و حتی ممکن است تصاویر و آمار منتشرشده راهی برای تبلیغ فناوری گرافیکی جدید مایکروسافت باشد. بنابراین قضاوت در مورد میزان تأثیر سایه‌زنی با توان متغیر را باید به زمانی پس از آزمایش عمومی این قابلیت موکول کرد.
    در هر صورت، فناوری «سایه‌زنی با نرخ متغیر» مایکروسافت در دسترس توسعه‌دهندگان قرار دارد و بسیاری از شرکت‌های صاحب‌نام قصد استفاده از آن را در محصولات بعدی خود دارند. توسعه‌دهندگانی مانند 343 Industries، شرکت Playground Games و Massive Entertainment در کنار ناشرانی مثل Ubisoft و Activision و سازندگان موتورهای بازی نظیر Unity و Epic Games در فهرست شرکت‌هایی قرار دارند که بناست از این قابلیت در عناوین آیندهٔ خود استفاده کنند.
    طرز کار فناوری VRS
    همان‌طور که از نام «سایه‌زنی با نرخ متغیر» پیدا است، در این روش به‌جای تمرکز بر رندر شیدرها با رزولوشن و جزییات یکسان (که مفهومی متمایز از رزولوشن کلی است)، توان سایه‌زنی (قدرت پردازشی یا به عبارتی نرخ کلاک هسته‌های سایه‌زن) متغیری را در ترسیم بافت‌های گرافیکی بخش‌های مختلف هر فریم می‌توان به‌کار گرفت. این فناوری با تغییر تعداد پیکسل‌هایی کار می‌کند که در یک عملیات سایه‌زنی پیکسل واحد پردازش‌پذیر هستند.
    براساس اعلام مایکروسافت، توسعه‌دهندگان می‌توانند به‌صورت گزینشی توان سایه‌زنی را در مناطقی از فریم که تأثیر چندانی بر کیفیت بصری نداشته باشد، کاهش دهند و حداکثر قدرت واحدهای سایه‌زن را معطوف به مناطقی کنند که جزئیات تصویری بالاتری در آن‌ها موردنیاز است. بنابراین توسعه‌دهندگان خواهند توانست در مناطقی که در آن شیدرها اهمیت بیشتری دارند، توان سایه‌زنی را افزایش دهند تا کیفیت تصویر بهتری در خروجی بازی‌های خود دریافت کنند.
    در پایان سطح عملکرد بالاتر و کیفیت تصویری بهتری را می‌توان به دست آورد؛ درحالیکه منابع سخت‌افزاری مورد نیاز کمتری برای اجرای بهتر بازی‌ها نسبت به قبل لازم خواهد شد.API سایه‌زنی با نرخ متغیر به توسعه‌دهندگان اجازه خواهد داد توان سایه‌زنی را به سه روش تنظیم کنند: روش‌های per-draw، روش within-draw با استفاده از یک تصویر screenspace و روش within-draw به حالت per-primitive. همچنین دو ردهٔ پشتیبانی از VRS وجود دارد. در ردهٔ نخست از VRS در حالت per-draw و در ردهٔ دوم از VRS هم در حالت per-draw و هم در حالت within-draw پشتیبانی می‌شود. همچنین حالت ترکیبی سایه‌زنی با توان متغیر (VRS Combiners) پیش‌بینی شده است که امکان استفادهٔ همزمان از VRS به روش per-draw و per-permitive را ممکن می‌سازد.
    براساس ادعای مایکروسافت، قابلیت سایه‌زنی با نرخ متغیر با سخت‌افزارهای موجود شرکت انویدیا برخوردار از معماری تورینگ و نیز سخت‌افزارهایی که در آینده توسط اینتل ارائه خواهد شد، پشتیبانی می‌شود. اینتل هم‌اکنون در حال آزمایش سایه‌زنی با نرخ متغیر روی تراشه‌های اولیهٔ گرافیکی نسل ۱۱ خود است که برنامه‌ریزی برای عرضهٔ آن‌ها در سال جاری وجود دارد. احتمالا پردازنده‌های گرافیکی مجزای اینتل (نسخه‌های دسکتاپ آینده) نیز از این فناوری گرافیکی پشتیبانی کند.
  21. کامبیز اسدزاده
    همانطور که می‌دانید امضاء و انتشار اپلیکیشن‌های اندرویدی در قالب فایل apk به شما اجازه می‌دهد تا مستقل از فروشگاه گوگل، نرم‌افزار مورد نظر خودتان را در اختیار مشتریان خود قرار دهید؛ از طرفی ارسال آن برای فروشگاه‌های داخلی مانند کافه‌بازار نیز مراحلی را دربر دارد که یکی از آن‌ها بررسی مشکل مربوط به Google Play Protect است. با توجه به تجربیات من، خیلی از مشتری‌ها و کاربران علم کافی در توجه به پیام مربوط به آن را ندارند و نمی‌دانند با رد کردن پیغام می‌توانند نرم‌افزار را با پذیرش ریسک نصب کنند. اما این روش می‌تواند فرصتی برای کسانی باشد که به فکر سو‌ء استفاده از شرایط هستند. طبق گزارشاتی که دریافت کرده‌ایم، مشاهدهٔ پیام مربوط به عدم قابل اعتماد بودن نرم‌افزار شما و خطای نصبی بیشتر از قبل به چشم می‌خورد! برای اینکه ثابت کنید اپلیکیشن شما یک محصول قابل اعتماد است، تنها باید آن را به روش قانونیِ خودِ گوگل حل کنید که چندان سخت نیست ?
    توجه داشته باشید که، این پیام در شرایط متعددی می‌تواند رخ دهد. برای مثال، شما از خدماتی که مورد نیاز نیستند به اجبار در نرم‌افزار استفاده می‌کنید. اما حتی با اعمال تنظیمات مربوطه به نظر می‌رسد زمانی که شما یک برنامهٔ جدیدی را ایجاد و برای نشر ارسال می‌کنید باید ابتدا نسخهٔ مربوطه، به بانک اطلاعاتی موجود در Google Play Protection ارسال شود و سپس برای نصب آماده شود. بنابراین، خطای مربوط به آن را به روشی که در ادامه توضیح می‌دهیم می‌توانید حل کنید.

    قبل از هر چیز دقت کنید که نرم‌افزار شما امضاء شده باشد، در واقع از نوع نسخهٔ signed ریلیز شود. برای این کار باید حتماً یک گواهی مشخصی بسازید که همراه رمز عبور و اطلاعات توسعه‌دهنده به صورت اختصاصی برای هر محصول قابل ساخت است.
    در ادامه مهمترین موردی که باید در نظر گرفته شود این است که فایل مربوطه را باید قبل از نشر در کافه‌بازار یا تحویل آن به مشتری خود، به مرکز Play Protect Appeals ارسال کنید تا برای بررسی جهتِ تجدید نظر شدن از لحاظ گیر دادن‌های بی‌خودی به برنامه‌ٔ شما مورد بررسی قرار گیرد.
    معمولاً این کار خارج از ایران ساده‌تر است، چرا که بحث تحریم و شناسایی شناسه‌های ایرانی برای کارشناسان راحت‌تر بوده و به آن حساسیت نشان می‌دهند که ممکن است پیام زیر را دریافت کنید:
    بنابراین، توصیه می‌کنیم از روش‌های مطمئن‌تری برای ارسال فایل استفاده کنید.
    توصیهٔ ما استفاده از خدماتِ دراپ‌باکس خواهد بود که با ارسال فایل به آن و ساخت یک لینک اشتراکی می‌توانید مطمئن شوید که دسترسی به فایل شما در سراسر جهان میسر خواهد شد. اما توجه داشته باشید که لینک آن را برای سهولت در بررسی و ارسال در فیلد فرمِ آن، از طریق سایت http://bit.ly کوتاه سازید.
    دقت کنید که لینک دریافتی از دراپ‌باکس باید شامل قالبی به صورت زیر است:
    https://www.dropbox.com/s/example/app.apk?dl=0 آدرس زیر را بعد از پارامتر dl=0 به dl=1 تغییر دهید و سپس لینک مربوطه را کوتاه کرده و آن را در فرم ثبت اطلاعات نرم‌افزار برای گوگل در این لینک ارسال کنید.

    در فرم مربوطه فیلد‌های مورد نظر باید دقیقاً شامل واقعیت باشند، به عنوان مثال نام و نام‌خانوادگی توسعه‌دهنده، آدرس پست‌الکترونیکی، نام بستهٔ اپلیکیشن و لینک کوتاه شدهٔ قابل دریافت؛ در نهایت می‌توانید توضیحاتی برای آن در نظر بگیرید.
    اگر همه چیز به خوبی پیش رفته باشد پیامی مانند زیر را به همان آدرس پست‌الکترونیکی خود دریافت خواهید کرد.
    در نظر داشته باشید که این فرایند ممکن است زمان متغیری را در صف بررسی باشد که در حالت عادی و خاص ۱ الی ۳۰ روز زمان خواهد برد که من به شخصه بین حدقل ۲۴ تا ۴۸ ساعت نتیجهٔ مثبت گرفتم.
    صرفاً دقت کنید که در صورت بررسی و تأیید شدن برنامهٔ شما، هیچ پیام خاصی ارسال نخواهد شد، بنابراین تنها با بررسی و نصب برنامه می‌توانید متوجه آن شوید که برنامهٔ ارسال شدهٔ شما در لیست بانک اطلاعاتی امنیتی اپلیکیشن‌های گوگل قرار گرفته است یا خیر.
    امیدوارم که این تجربهٔ پیشنهادی برای شما نیز مفید واقع شود ?
  22. کامبیز اسدزاده
    شما برنامه نویس هستید یا توسعه‌دهنده؟ آیا تا به حال فکر کرده‌اید که چه نوع عنوانی متناسب با مهارت‌های شماست؟
    من یک (توسعه دهنده فول-استک هستم)
    من یک (برنامه‌نویس هستم)
    من یک (توسعه‌دهندهٔ وب هستم)
    من یک (توسعه‌دهندهٔ فرانت اند هستم)
    من یک (توسعه دهندهٔ iOS هستم)
    و عناوین بسیار زیاد من در آوردی دیگر که ممکن است منظور دقیق از مهارت‌های شما را به درستی مطرح نکنند!
    من می‌خوام در رابطه با اصطلاحاتی صحبت کنم که شاید بسیاری از علاقه‌مندان از استفادهٔ به جا از آن‌ها بی‌خبر هستند. داستان این مقاله از اینجا شروع می‌شه که امروزه عناوین متعددی در رشتهٔ مهندسی کامپیوتر به خصوص گرایش نرم‌افزار و (برنامه‌نویسی) به چشم می‌خوره که ممکنه باعث سردرگمی بشه. نکته اصلی اینجاست که ما به عنوان صاحب عنوان تخصصی خود باید بدانیم که دارای چه مهارت‌هایی هستیم و در دنیای فناوری تحت چه عنوانی باید خود را در زمینه تخصصی معرفی کنیم. 

    تفاوت بین کدنویس، برنامه‌نویس و توسعه‌دهنده
    در این پست قصد داریم با اصطلاحاتی آشنا شویم که ممکن برای اکثر افراد غیرمتخصص و گاه متخصص نیز سوال باشد که این عنوان‌ها (کدنویس، برنامه نویس و توسعه‌دهنده) به چه کسانی با چه تخصص‌های گفته می‌شود. ما به عنوان صاحب “عنوان تخصص” خود باید بدانیم که دارای چه مهارت‌هایی هستیم و در دنیای فناوری تحت چه عنوانی باید خود را در زمینه تخصصی معرفی کنیم.
    در این مقاله تصمیم گرفتم تفاوت‌های بین کدنویس (Coder)، برنامه‌نویس (Programmer) و توسعه‌دهنده (Developer) را مشخص کنم. بنابراین به ترتیب عناوین هر یک از آن‌ها را توضیح و در رابطه با نکات مهم متمایز کنندهٔ آن‌ها اشاره خواهیم کرد.
    1.کدنویس (Coder)
    کد نویس به کسی گفته می‌شود که می‌تواند بدون داشتن مهارت خاص یا حتی رشته مرتبط کدنویسی کند و نیاز به دانش تخصصی و واقعی علوم کامپیوتری ندارد. معمولاً کسانی که دارای تخصص دیگری هستند اما آشنا به منطق برنامه‌نویسی نیستند کُدِر می‌گویند. برای مثال تغییر دادن و یا ویرایش کد‌های از قبل نوشته شده و حتی ایجاد نمونه‌ای از کدهایی موجود به صورت (کپی) که می‌تواند نتیجه‌ای به صورت کار بر روی یک سیستم نرم‌افزاری بر روی وب مانند WordPress یا غیره شود که با کمی تغییرات بر اساس نیاز پروژه خود را به صورت نه چندان حرفه‌ای ایجاد و توسعه نمایند. اصطلاح درست این نوع اشخاص کُدر می‌باشد.
    2.برنامه‌نویس (Programmer)
    برنامه‌نویس به کسی گفته می‌شود که توانایی و تخصص مرتبط با برنامه‌نویسی و علوم کامپیوتری را دارد. به عنوان مثال یک مهندس نرم‌افزار از شاخه مهندسی کامپیوتر که با منطق برنامه نویسی آشنا است برنامه نویس محسوب می‌شود. برنامه‌نویس می‌تواند برنامه‌ای را تحت یکی از زبان‌های برنامه‌نویسی که خود آن را ترجیح می‌دهد برنامه نویسی کند. برای مثال، کلاسی را طراحی و پیاده سازی کرده و توابع مورد نیاز خود را در آن ایجاد و توسعه دهد.
    برنامه‌نویس می‌داند در کجا باید از چه نوع دستورات و توابعی استفاده کند تا کدِ نهایی او نتیجه‌ای ایجاد کند که از آن انتظار می‌رود. یک برنامه‌نویس توانایی این را دارد که کُدهای نوشته شده توسط دیگر برنامه‌نویسان را بخواند، درک کند و حتی آن‌ها را ویرایش کند.
    توجه داشته باشید که یک برنامه‌نویس توانایی کنترل و مدیریت کردن بخش‌های بسیار پیچیدهٔ یک محصول را ندارد. برای مثال اگر قرار است پروژه‌ای را طراحی و توسعه نمایید برنامه‌نویس بخش بَک-اِند توانایی مدیریت بخش فرانت-اند (رابط‌کاربری) را ندارد و برعکس! بنابراین برنامه‌نویسان تنها کُدهایی را می‌نویسند که قرار است در بخش مورد نیاز عملیاتی را انجام دهند و کاری به این ندارند که طراحی رابط‌کاربری تحت چه نوع فناوری و زبانی در حل توسعه است و یا ارتباط با پایگاه داده چگونه صورت می‌گیرد چرا که برنامه‌نویسان مرتبط با آن بخش‌ها با استفاده از مهارت های تخصصی خود در آن بخش آن را هندل خواهند کرد. برنامه‌نویسان معمولاً تیم‌های توسعه یک محصول را ایجاد می‌کنند و همگی آن‌ها وابسته یکدیگر هستند بنابراین اگر برنامه‌نویس واحد بک اند شما نتواند به موقع کدهای مورد نیاز بخش فرانت‌اند شما را آماده و تحویل دهد پروژه شما در زمان تعیین شده به نتیجه مطلوبی نخواهد رسید.
    3.توسعه دهنده (Developer)
    در رابطه با توسعه‌دهنده باید به این توجه داشته باشید که توسعه‌دهنده به تنهایی عنوان نمی‌شود. بنابراین توسعه‌دهنده به صورت‌های مختلفی وجود دارند (توسعه‌دهنده وب، توسعه‌دهندهٔ نرم‌افزار، توسعه‌دهندهٔ موبایل که در رابطه با نوع پلتفرم باز متفاوت هستند؛ توسعه دهنده رابط کاربری، توسعه‌دهندهٔ تجربه کاربری و در نهایت توسعه دهنده فول-استک).
    توسعه‌دهنده کسی است که علاوه بر برنامه‌نویس بودن مهارت و دانش کافی در لایه‌های مختلف پروژه در اختیار داشته باشد که متناسب با نوع تخصص نیز متفاوت است. توسعه‌دهنده کسی است که می‌تواند بر اساس نوع پروژه وظایف خاصی را در اختیار بگیرد به عنوان مثال اگر به صورت تیمی بر روی یک پروژه کار می‌کنید که شامل برنامه نویس هایی است که هر کدام بخشی از پروژه را برنامه‌نویسی می‌کنند کافی است یک توسعه‌دهنده داشته باشید تا تمامی کد‌های شما را آنالیز، اشکال زدائی و بررسی کند و در نهایت آن‌ها را با یکدیگر ارتباط داده و تبدیل به یک پروژه قابل استفاده نماید. چرا که توسعه‌دهنده دانش مورد نیاز در لایه‌های مختلف را دارد و می‌داند بخش‌های مختلف یک محصول نرم‌افزاری یا غیره را که چگونه است و چطور باید برنامه‌نویسی شوند به آن‌ها تسلط دارد.
    توسعه‌دهنده شخصی است که نباید فقط به یک زبان‌ یا ابزار برنامه‌نویسی اکتفا کند چرا که برای توسعه محصول حتما باید از چند زبان برنامه‌نویسی مورد نیاز در پروژه اطلاعات کاملی داشته و بتواند هر جا که نیاز بود کد‌ای مورد نیاز را توسعه و به نتیجه نهایی تبدیل کند. توجه داشته باشید که یک تیم شامل چندین توسعه دهنده به عنوان یک تیم کاملا حرفه‌ای و زبان زد محسوب می‌شوند برای مثال شرکت‌های بسیار بزرگ نه تنها برنامه‌نویسان حرفه‌ای در تیم خود استخدام می‌کنند بلکه توسعه دهندگانی را از نوع (Full-Stack) در اختیار دارند که مدیریت حساس پروژه را به عهده گرفته و پروژه را با دانشی که دارد به خوبی مدیریت می‌کند و زمانی که جایی پروژه به نکته‌ای برسد که برنامه‌نویسان توانایی حل آن را ندارند توسعه دهنده فول-استک می‌تواند با مهارت‌ها و تجربیات خود آن را حل کند. در رابطه با برنامه‌نویسان فول‌استک و ویژگی‌های این دسته از برنامه‌نویسان را در ادامه آورده شده است.
    4.توسعه دهندگان فرانت-اند (UI/UX)
    این نوع توسعه‌دهندگان برنامه‌نویسانی هستند که مهارت کاملی در رابطه با لایه‌های مختلف و چندین زبان و فناوری‌های مورد نیاز در بخش User Interface و User Experience را دارند و می‌توانند طراحی مناسبی را متناسب با نوع پروژه و تجریبات مشتری ایجاد و توسعه دهند. این نوع برنامه‌نویسان یکی از مهمترین بخش‌های توسعه‌دهندگان در تیم محسوب می‌شوند که شاید تجربیات و بازخورد‌های مشتری را به سمت این نوع توسعه دهنده ارسال کنند. این نوع توسعه دهندگان علاوه بر داشتن دانش طراحی و تجربه کاربری دانش مرتبط با روانشناسی رنگ‌ها و جلوه‌های بصری دارند که آن‌ها را می‌توانند در قالب برنامه نویسی پیاده سازی کنند.
    5.توسعه دهندگان بک-اند
    این نوع توسعه‌ دهندگان برنامه‌نویسان بسیار ماهری در بخش لایه‌های زیرین پروژه یعنی (منطقی) دارند که تمامی اطلاعات لازم را در رابطه با لایه‌های زیرین در اختیار دارند و می‌دانند چطور باید با دیتابیس ارتباط برقرار کنند، می‌دانند چطور باید با API‌های سیستم عامل کار کنند و می‌دانند کد‌های خود را بر اساس نوع ABI‌ و API‌ها چگونه باید مدیریت کنند؛ موارد بسیار زیادی که نیاز است در بخش منطقی یک پروژه ایجاد شود را به تنهایی حل و توسعه می‌دهند تا نتایج آن در اختیار توسعه دهنده فرانت اند قرار بگیرد. اما وظیفه‌ای در رابطه با طراحی تجربه‌کاربری و یا رابط کاربری نداشته و نمی‌توانند در این بخش مانور دهند. از این نوع توسعه دهندگان تنها می‌توان انتظار نوشتن کُدهای بی نقص و عالی در لایه‌های پایین را داشت.
    6.توسعه دهندگان فول-استک
    این نوع توسعه‌‌دهندگان علاوه بر داشتن مهارت‌های مربو به برنامه‌نویسی، توسعه‌دهنده در فرانت‌اند و بک‌اند نیز هستند تجربیات و مهارت‌های بسیار زیادی در شاخه‌های دیگر علوم مهندسی کامپیوتری را دارند که نکته بسیار مهمی است! رسیدن به این درجه از برنامه‌نویسی یعنی یک مهندس کامل کامپیوتر که می‌تواند در تمامی بخش‌های یک پروژه در لایه‌های مختلف نرم‌افزار، سخت‌افزار، شبکه، پلتفرم‌ها و … صاحب نظر باشند و آن را توسعه دهند. یک فول استک به تنهایی می‌تواند رهبری یک پروژه را بر عهده بگیرد و درصورتی که نیاز باشد به تنهایی یک پروژه را از صفر تا صد تولید توسعه و اجرا نماید.
    این نوع توسعه‌دهنده‌ها یک مهندس واقعی کامپیوتر (نرم‌افزار) هستند که به خوبی می‌دانند یک محصول نهایی باید تحت چه شرایطی توسعه و اجرا شود. البته به این نکته توجه کنید توسعه‌دهنده‌های فول‌استک هم می‌توانند از لحاض محدودیت دسته‌بندی شوند، بعضی از آن‌ها صرفاً در یک حوزه تسلط کافی دارند، مانند Full Stack Web Developer یا Full Stack Android Developer به معنای این است که این گونه توسعه‌دهنده‌ها می‌توانند یک محصول را در سطح وب به طور کامل طراحی و پیاده سازی کند و یا در حوزهٔ ساخت و ساز اپلیکیشن‌های اندروید یک محصول را به طور کامل طراحی و برنامه‌نویسی کند. در غیر این صورت تنها واژهٔ Full Stack Developer می‌تواند پوشش کاملی بر تسلط کامل یک فرد با تخصص‌های بسیار بالا در ساخت و ساز یک محصول در پلتفرم‌های متنوع  را بدهد که در یک پست جداگانه قبلاً به آن اشاره کرده‌ام:
    با توجه به تعاریف مرتبط با عناوین باید سعی کنیم که از اصطلاحات صحیح و عناوین مرتبط با خود استفاده کنیم چرا که در صورتی که شما یک برنامه‌نویس هستید نباید بگویید من یک توسعه‌دهندهٔ وب هستم! این کار باعث ایجاد انتظار از شما خواهد شد که به احتمال بسیار زیاد توانایی انجام آن را نخواهید داشت. حتی برعکس آن ممکن است شما یک توسعه‌دهنده باشید اما بگویید یک کُدر حرفه‌ای هستم! این واقعاً اشتباه است! در این صورت درجه تخصصی خود را به شدت تنزل داده‌اید.
    در فرصت مناسب‌تری در بارهٔ این موضوع، در قالب یک اینفوگرافیک اطلاعاتی نشر خواهم کرد.
  23. کامبیز اسدزاده
    خالق لینوکس از اینتل به خاطر پشتیبانی نکردن از حافظه‌های ECC انتقاد کرده است. او به پشتیبانی غیررسمی از ECC در پردازنده‌های AMD به‌عنوان اتفاقی مثبت نگاه می‌کند. این ماجرا برای توسعه‌دهدنگان قطعاً بسیار مهم و کاربردی است، بنابراین به عنوان نماینده‌ای از جامعهٔ برنامه‌نویسان و یک فرد با تجربه در بحث برنامه‌نویسی و مشکلات آن در مدیریت حافظه نظرات توروالدز برای جامعهٔ ما اهمیت دارد.

    لینوس توروالدز، خالق لینوکس، به‌تازگی پست جدیدی در انجمن آنلاین Real World Tech با محوریت حافظهٔ کد تصحیح خطا (ECC) منتشر کرده است تا از اینتل انتقاد و از ای‌ام‌دی (AMD) تمجید کند. بر اساس گزارش تامز هاردور، توروالدز می‌گوید اینتل باید حافظه‌های ECC را به قطعاتی مین‌استریم تبدیل کند و پشتیبانی از این حافظه در پردازنده‌های سری رایزن ای‌ام‌دی اتفاق بسیار خوبی است.
    توروالدز با بیان اینکه «ECC کاملا پراهمیت است» اعلام کرد اینتل تأثیر به‌سزایی روی رونق نداشتن بازار حافظه‌ی ECC گذاشته است. خالق لینوکس می‌گوید: «بروید و به‌دنبال DIMM-های ECC بگردید؛ پیدا کردن آن‌ها واقعا سخت است. بله، احتمالا به لطف ای‌ام‌دی، وضعیت DIMM-های ECC اخیرا کمی بهتر شده و این دقیقا همان نکته‌ای است که می‌خواهم به آن اشاره کنم.»
    توروالدز بارها به ضررهایی که اینتل به صنعت ECC و حتی کاربران وارد کرده است اشاره می‌کند و صحبت‌هایش را با کلماتی توهین‌آمیز خطاب ‌به اینتل ادامه می‌دهد. توروالدز می‌گوید تیم آبی با پشتیبانی نکردن از ECC در مادربردها و پردازنده‌هایی که برای کاربران عادی عرضه می‌کند، باعث شده است استفاده از حافظه‌های ECC زیاد نباشد.
    خالق لینوکس به مشکلاتی با محوریت آسیب‌پذیری روهمر (Rowhammer) اشاره می‌کند و می‌گوید این دسته از مشکلات امنیتی جدی، از طریق حافظه‌های ECC به‌راحتی رفع می‌شوند. سلول‌های حافظه‌ی DRAM می‌توانند انرژی خود را به دیگر سلول‌های حافظه منتقل کنند. به‌طور معمول این اتفاق صرفا به خاطر نقص در حافظهٔ اصلی سیستم رخ می‌دهد و نهایتاً به بروز خطا در حافظه منتهی می‌شود؛ اما حملات مبتنی بر آسیب‌پذیری روهمر از این نقص به‌عنوان مکانیسمی برای دسترسی به سیستم بهره می‌گیرند. 
    توروالدز می‌گوید هنگام توسعه دادن کد برای کرنل سیستم‌ عامل، دست‌و‌پنجه نرم کردن با حافظهٔ استاندارد بسیار سخت است. او به‌طور دقیق‌تر به این موضوع اشاره می‌کند که در اکثر اوقات نمی‌توان به‌طور دقیق فهمید خطای غیر قابل توضیح کرنل در کجا رخ داده است. در واقع این خطاها در اغلب اوقات ممکن است سخت‌افزاری باشند، نه نرم‌افزاری؛ خطاهایی که به‌راحتی توسط ECC قابل رفع هستند.
    توروالدز از ای‌ام‌دی به خاطر پشتیبانی غیررسمی از ECC تمجید می‌کند. او خوشحال است که ای‌ام‌دی تصمیم گرفته این پشتیبانی را به پردازنده‌های سری رایزن که در دسترس مشتریان عادی قرار می‌گیرند گسترش دهد. بدین ترتیب ای‌ام‌دی کاربران را قادر می‌سازد بدون پرداخت هزینه‌ی گزاف تهیهٔ قطعات سخت‌افزاری در سطح سرور، به ECC دسترسی داشته باشند.
    اینکه پشتیبانی غیررسمی از ECC به گسترش استفاده از آن کمک می‌کند، موضوعی است که نیاز به بحث دارد؛ زیرا در اغلب اوقات ECC به‌درستی کار نمی‌کند. اما خالق لینوکس می‌گوید حتی پشتیبانی غیررسمی، قدمی روبه‌جلو در جهت درست محسوب می‌شود.
  24. کامبیز اسدزاده
    یک حرکت خوشحال کننده در آغاز سال ۲۰۲۱ با عنوان آزاد شدن خدمات گیت‌هاب برای کشور عزیزمان صورت گرفته است؛ ساعاتی پیش «نت فرایدمن»، مدیرعامل گیت‌هاب اعلام کرد که این شرکت مجوزی از دولت آمریکا دریافت کرده تا خدماتش را به توسعه‌دهندگان ایرانی ارائه دهد. این سرویس‌ها می‌تواند در اختیار افراد یا سازمان‌ها و به شکل رایگان یا اشتراکی قرار گیرد.

    به قول مدیر عامل گیت‌هاب، همهٔ توسعه‌دهنده‌ها باید در استفاده از گیت‌هاب آزاد باشند و مهم نیست که در کجا زندگی می‌کنند.
    البته، با توجه به سوابق تحریمی پیشنهاد می‌شود در زمان استفاده از این خدمات، از مخازن کد‌های خودتان نسخهٔ پشتیبان تهیه کنید تا در صورت اعمال محدودیت‌ با مشکل خاصی مانند از دست دادن مخازن و یا عدم دسترسی به مخازن مواجه نشوید.
    منبع خبر اصلی : https://github.blog/2021-01-05-advancing-developer-freedom-github-is-fully-available-in-iran/
  25. کامبیز اسدزاده
    ساده‌ترین راه برای افزودن کد سفارشی به سایت‌هایی که بر پایهٔ وردپرس ساخته شده‌اند، بدون شکستن کد آن چیست؟
    زبان برنامه‌نویسیِ ++C یکی از محبوب‌ترین زبان‌های برنامه‌نویسی است. آخرین آمار نشان می‌دهد که این زبان با سرعت بسیار زیادی در حال توسعه و پوست‌اندازی است.

    این زبان، علیرغم اینکه بیش از 40 سال از عمرش می‌گذرد، همچنان زبان انتخابی برای بسیاری از برنامه‌نویسان در سراسر جهان است. برای بسیاری از موارد مانند برنامه‌های کاربردی دستکاری تصویر، بازی‌های سه بعدی، شبیه سازی‌ها، مرورگرهای وب و نرم‌افزارهای سازمانی استفاده می‌شود.
    دلیلش این است که سی‌پلاس‌پلاس در حال تکامل است، به انرژی سبز اهمیت می‌دهد و در عین حال کارآیی بسیار بالا و بهینه‌ای دارد. از آنجایی که این زبان پیچیده‌تر از سایر زبان‌های برنامه‌نویسی است، یک کمیتهٔ فرعی از یک سازمان چند سطحی وظیفه استانداردسازی آن را بر عهده دارد. سی‌پلاس‌پلاس اکنون از یک مدل قطار پیروی می‌کند و هر سه سال یکبار نسخه‌های جدید دریافت می‌کند که در مورد استاندارد‌های جدید، اخیراً مقالاتی منتشر شده است.
    سی‌پلاس‌پلاس معمولاً برای توسعهٔ نرم‌افزار در مقیاس بزرگ استفاده می‌شود، اما می‌توان از آن برای پروژه‌های توسعه وب نیز استفاده کرد. ممکن است تعجب کنید که چگونه از آن با وردپرس، یکی از محبوب‌ترین سیستم‌های مدیریت محتوا و سازندگان وب سایت امروزه استفاده کنید.
    در این باره قبلاً من مقالاتی را منتشر کرده‌ام که به صورت زیر آمده‌اند:
    در حالی که بسیاری از وب سایت‌ها با استفاده از وردپرس به عنوان پایه ساخته می‌شوند، این لزوماً به این معنی نیست که اکوسیستم وردپرس تکامل یافته یا کامل است. به عنوان مثال، وردپرس تمرکز زیادی بر تجربه‌کاربران و نیازهای وبلاگ نویسان دارد، به همین دلیل است که بر چهار زبان HTML، CSS، جاوا اسکریپت و PHP متکی است و این بدان معناست که برای توسعه‌دهندگانی که می‌خواهند به طور کامل از قدرت آن استفاده کنند، محدودیت‌هایی وجود دارد. در حالی که افزونه‌هایی مانند Custom Post Types برای گسترش عملکرد وردپرس وجود دارد و راه‌های زیادی برای افزودن قابلیت‌های جدید بدون شروع از ابتدا وجود ندارد.
    همچنین، افزودن کد ++C به طور مستقیم به یک سایت وردپرس توصیه نمی‌شود زیرا به طور بالقوه می‌تواند آسیب پذیری‌های امنیتی را ایجاد کند و وب سایت را خراب کند. با این حال، اگر نیاز خاصی به اجرای کد ++C در سایت وردپرس شما وجود دارد، در اینجا روش‌هایی که می‌توانید آن را انجام دهید گفته شده‌است:
    شما می توانید یک برنامه یا کتابخانه مستقل ++C ایجاد کنید و سپس آن را از طریق وب API در معرض دید قرار دهید، که می‌تواند توسط وردپرس مصرف شود. بیایید نگاهی به مراحل کلی بیندازیم:
    کد ++C خود را بنویسید و آن را در یک برنامه یا کتابخانه مستقل کامپایل کنید. عملکرد برنامه یا کتابخانه ++C را از طریق وب API به نمایش بگذارید. شما می‌توانید از یک کتابخانه به عنوان cpprestsdk برای ایجاد نقاط پایانی API استفاده کنید. برنامه یا کتابخانه ++C را بر روی یک سرور، یا در همان سرور سایت وردپرس خود یا در یک سرور جداگانه، مستقر کنید. در سایت وردپرس خود، از یک افزونه یا کد سفارشی برای درخواست HTTP به API و بازیابی نتایج استفاده کنید. شما می‌توانید از کتابخانه‌ای مانند cURL برای ارائه چنین درخواست‌هایی استفاده کنید. در صورت نیاز از نتایج بازیابی شده در سایت وردپرس خود استفاده کنید. راه دیگر برای افزودن قابلیت ++C به سایت وردپرس استفاده از افزونه‌ای است که به شما امکان می‌دهد کد ++C را مستقیماً در صفحات یا پست‌های وردپرس جاسازی کنید. مراحل بسته به افزونه‌ای که استفاده می‌کنید متفاوت است، اما در اینجا چند مرحله کلی وجود دارد که می‌تواند کمک کند.
    افزونه‌ای را که از کد ++C پشتیبانی می‌کند را در سایت وردپرس خود نصب کنید. یک صفحه یا پست جدید در وردپرس ایجاد کنید و کد کوتاه [cpp] را به قسمت محتوا اضافه کنید. در کد از نوع برچسب‌ِ [cpp]، کد ++C خود را اضافه کنید. صفحه یا پست را منتشر کنید و آن را مشاهده کنید تا کد جاسازی شده ++C را در عمل ببینید. مجدداً توجه داشته باشید که افزودن کد ++C به طور مستقیم به یک صفحه یا پست می‌تواند خطرناک باشد. مهم است که پیاده‌سازی خود را به طور کامل آزمایش کنید تا مطمئن شوید که ایمن و قابل اعتماد است. از هر روشی که استفاده می‌کنید، به یک پایه محکم در سی‌پلاس‌پلاس و مهارت‌های یکپارچه سازی وردپرس نیاز دارد. وقتی صحبت از وردپرس به میان می‌آید، شاید بهتر باشد از زبانی مانند PHP استفاده کنید.
    اگر می‌خواهید دربارهٔ ++C و نحوهٔ به حداکثر رساندن آن برای پروژه‌تان بیشتر بدانید، می‌توانید به آموزه‌های مربوط به سی‌پلاس‌پلاس در این سایت را بررسی کنید یا کتاب‌های پیشنهادی در بخش معرفی زبان را بخوانید. فراموش نکنید که سی‌پلاس‌پلاس یک زبان جذاب و همیشه در حال تکامل است و افزودن آن به مجموعه مهارت‌های شما سودمند است.
×
×
  • جدید...