جستجو در تالارهای گفتگو
در حال نمایش نتایج برای برچسب های 'وباسمبلی'.
3 نتیجه پیدا شد
-
با توجه به محبوبیت صنعت وِب، سالهاست زبانهای برنامهنویسی در این زمینه پیشرفتها و کاربردهای چشمگیری را داشتهاند، از جمله جاوااسکریپت (JS) به عنوان یک زبان قابل اجرا در داخل مرورگر شناخته میشود. هرچند بسیار محبوب و کاربردی است، اما این زبان قطعاً مشکلات خودش را دارد که برخی از آنها عدم انعطافپذیر بودن، سرعت پایین اجرا و همچنین انواع غیر ایمن آن است که این باعث میشود برای محاسبات و کارهای پیچیده جوابگو نباشد. هرچند گزینههایی مانند CoffeeScript و TypeScript وجود دارند و نسبتاً ایرادات خام جاوااسکریپتی را پوشش میدهند، اما در نهایت کدهای نوشته شده به جاوااسکریپت تبدیل میشود. در این میان میتوان گفت وباسمبلی (WebAssembly) برای حل و مرتب سازی مشکلات جاوااسکریپت معرفی شده است و شدیداً در حال اثبات آن است که یک انقلاب در صنعت وِب را رقم میزند. با این تفاسیر، آیا وباسمبلی زبان برنامهنویسی است؟ این فناوری به خودی خود، یک زبان برنامهنویسی نیست، در واقع برنامهنویسان برنامههای خود را توسط زبانهای سطحبالا مانند C یا ++C و حتی Rust مینویسند و آن را کامپایل و در قالب باینری با پسوند فایل .wasm وارد میکنند. توجه داشته باشید که وباسمبلی جایگزینی برای جاوااسکریپت نیست، درواقع قرار است در کنار جاوااسکریپت اجرا شود. به عنوان مثال شما میتوانید فقط یک کد محاسباتی بالا را در WebAssembly بسازید و آن را در کنار سایر کدهای جاوااسکریپت با وزن سبکتر استفاده کنید. همچنین شما برای بارگذاری ماژول wasm در مرورگر به جاوااسکریپت نیاز دارید. فناوری وباسمبلی (WebAssembly) و یا WA چیست؟ وباسمبلی یا وَسم (Wasm، اغلب به طور مخفف) استانداردی باز است که یک قالب جدید دستورالعملهای باینری را معرفی میکند. این فناوری نوید این را میدهد که برنامهها با کارآیی (پرفرمنس) بومیِ خود در بستر وِب اجرا شوند. به عبارت سادهتر میتوان گفت، این فناوری امکان این را میدهد که کدهای نوشته شده با زبانهای سطح بالاتر مانند C و ++C یا Rust به ماژول Wasm کامپایل شوند که مستقیماً در مرورگرهای مدرن قابل اجرا هستند. معماری وباسمبلی وباسمبلی به گونهای طراحی شده است که بر روی دستگاههای مجازی مبتنی بر پشته (stack-based) اجرا شود. بر خلاف ماشینهای رجیستری که عملوندهای آنها بر روی پردازندهٔ مرکزی قرار دارند و محاسبات در آن بخش اتفاق میافتد، در یک ماشین مبتنی بر پشته، بیشتر دستورالعملها به جای اینکه بر روی رجیستر اعمال شوند، بر روی پشته مینشینند. برای افزودن دو عدد بر روی ماشین مبتنی بر پشته، شمارههای مربوطه را در پشته ارسال میکنید. سپس دستور ADD را فشار میدهید. سپس دو عملگر و دستورالعمل از بالای صفحه ظاهر میشود و نتیجهٔ اضافی در جای خود قرار میگیرد. برخی از این نوع ماشینها عبارتند از .Net، JVM Runtime و غیره. وباسمبلی به معنای سنتی، پشتهای ندارد. درواقع هیچ مفهومی از اپراتورهای جدید ندارد. حتی خبری از GC در آن وجود ندارد. در عوض وباسمبلی دارای یک حافظهٔ خطی است، یعنی حافظه به عنوان طیف پیوسته از بایتهای بدون نوع نمایش داده میشود. در صورت نیاز به فضای بیشتر، ماژول وباسمبلیِ شما میتواند بلوک حافظهٔ خطی را افزایش دهد. نکته: WebAssemble فقط چهار نوع داده دارد: i32، i64، f32، f64 برای اعداد صحیح 32 و 64 بیتی و انواع شمارههای شناور آیندهٔ توسعهٔ وب چگونه میشود؟ اگرچه ممکن است وباسمبلی، جاوا اسکریپت را از بین نبرد، اما قطعاً قصد این را دارد که چهرهٔ front-end توسعهٔ وب را تغییر دهد. البته راه بسیاری در پیش است تا همهٔ تغییرات را تجربه کنیم. اما به اندازهٔ کافی میتوان آیندهٔ وب را پیشبینی کنیم: تنوع از نظر زبانی خیلی سریع موازی تنوع زبانی این فناوری به طور چشمگیری تنوع در استفاده از زبانهای برنامهنویسی را برای ساخت برنامههای تحت وب افزایش میدهد. در حال حاضر لیست زیر زبانهایی است که وباسمبلی از آنها پشتیبانی میکند: C/C++ Rust C#/.Net Java Python Elixir Go سرعت و کارآیی بسیار بالا فناوری WASM باعث میشود عملکرد برنامهها شگفتانگیز شود. در این زمینه مستنداتی وجود دارد که فایرفاکس در یک سری از نمونههای اولیه آن را ثابت میکند. همچنین طبق تجزیه و تحلیل برنامههای کاربردی توسط فیگما منتشر شده است که نشان میدهد پیادهسازیهای صورت گرفت در قالب asm.js که خود از سرعت بسیاربالای به خاطر پشتیبانی از سی++ دارد، با این وجود با فعال بودن ماژول WebAssembly چیزی حدود ۳ برابر بهبود زمان اجرا گرفته است. در این موارد ثابت شده است که با استفاده از ++C و کامپایلر کلنگ (LLVM) سرعت اجرای برنامهها با فعال بودن وباسمبلی بسیار چشمگیر است. موازی سازی طبیعتاً این مورد بسیار قابل بررسی و توجه است، چرا که این مبحث به طور کامل در وِب پیادهسازی نشده است. از آنجایی که تغییر به سمت پردازندههای چند هستهای حدوداً از سال ۲۰۰۵ آغاز شد، این امر به طور فزایندهای اتفاق میافتد که برای دستیابی به عملکرد بیشتر، نرمافزارها به موازی سازی نیاز دارند. با توجه به اینکه جاوااسکریپت از سیستم موازی پشتیبانی نمیکند، تصور کنید که با فعالسازی WASM امکان استفاده از تمامی هستههای پردازنده فراهم شود. من به عنوان نویسندهٔ این مقاله، تصور شما را از این فناوری نمیدانم. اما قطعاً با این تفاسیر این فناوری به عنوان یک انقلاب بزرگ در حوزهٔ وِب محسوب میشود. با توجه به ساختار برنامههای نوشته شده توسط زبانهای قدرتمندی چون ++C میتوان تصور کرد که برنامههای بسیار بهینه و قدرتمندی را در حوزهٔ اجرایی مرورگرها پشتیبانی کند. در حال حاضر ممکن استد شما فکر کنید که چرا کسی باید زبان سادهای مثل جاوااسکریپت را خدشهدار کند و یا به سمت زبانهای پیچیدهای مانند Rust، C و ++C برود. اکنون وباسمبلی کاملاً جدید است و جامعهٔ کافی در اطراف خود ندارد. اما باید توجه داشت وقتی از طریق این فناوری میتوان به ویدئوها، تصاویر و کتابخانههای رمزنگاری، یا استفاده از موتورهای گرافیکی و فیزیکی که از OpenGL استفاده میکنند، و یا حتی کتابخانهها و فریمورکهای قدرتمندی مانند Qt و غیره را میتوان در حوزهٔ وب مورد استفاده قرار داد. بنابراین فناوری وباسمبلی میتواند مسیری را برای رشد صنایع مختلف به خصوص شرکتهای بازیسازی و غیره باز کند. افزایش کارآیی (پرفرمنس) بسیار شدید که توسط وباسمبلی فراهم میشود، همانند اجرای برنامههای دسکتاپی است که میتوان آن را بر روی وب نیز مشاهده کرد. با این روال ممکن است وباسمبلی در سالهای آینده، با نرمافزارهای رومیزیِ بومی برابری کند.
- 2 دیدگاه
-
- javascript
- وبسایت
-
(و 7 مورد دیگر)
برچسب زده شده با :
-
کامبیز اسدزاده یک موضوع را ارسال کرد در <span class="ipsBadge ipsBadge_pill" style="background-color: #2cdb89; color: #000000;" >کتابخانه کیوت (Qt)</span>
همانطور که میدانید اخیرأ فناوری وباسمبلی (Qt for WebAssembly) معرفی شده است، توسعهدهندگان کیوت یک نمایشگر برای اجرای خروجیهای QML در مرورگر طراحی کردهاند که به شما این امکان را میدهد تا کدهای نوشته شدهی خود را در محیط مرورگر اجرا کنید. در این بخش میتوانید آخرین نسخهی مرتبط با Qt Design Viewer را برای آزمایش پیدا کنید، نمایشگر Qt Design Viewer با چند طرح آماده برای آزمایش همراه است. برای اجرای یک برنامهی سفارشی تحت QML، باید یک پروندهی qmlproject. که پروندهی اصلی QML است را تعریف کنید. این همان قالب اساسی پروژه است که توسط Qt Design Studio و Qt Creator برای پروژههای QML استفاده میشود. پوشهی پروژه باید به صورت یک فایل Zip فشرده شود و سپس در Qt Design Viewer بارگذاری گردد. همچنین میتوانید از نسخهی Qt Design Studio 1.3 یک فایل منبع را از پروژه ایجاد کرده و بستهای را که به صورت خودکار ایجاد شده است را بارگذاری کنید. آزمایشهای مربوطه بر روی مرورگرهای Safari، Chrome، FireFox و Edge انجام شده است و عملکرد اجرای QML در تمامی آنها بسیار خوب است. البته زمان تدوین و پیکربندی به مرورگر شما بستگی دارد، اما عملکرد واقعی برنامه پس از اجرا همانند نسخهی دسکتاپ است. سیستم Qt Design Viewer همراه با اکثر ماژولهای QML به عنوان بخشی از کیوت است که در نسخهی ۵.۱۴ ساخته شده است. همچنین، این محیط بر روی سیستمعاملهای iOS و Android اجرا میشود که یک روش ساده را برای اجرای طرحهای آزمایشی ارائه میکند. این فناوری جدید است، بنابراین در صورت مشاهدهی مشکلات آن را به تیم توسعهدهندهی آن گزارش دهید. -
وباسمبلی (WebAssembly) یا wasm یک فناوری برنامهنویسی سطحپایین برای استفاده در مرورگر است. هدف اولیهی آن پشتیبانی از کامپایل کدها به سی و سی++ است هرچند که قرار است از سایر زبانها نیز حمایت شود. حال کتابخانهی Qt این امکان را تحت ماژول Qt WebAssembly فراهم میکند تا برنامهی نوشته شده توسط سی++ و کیوت در محیط مرورگر قابل اجرا باشند. این ویژگی در حال حاضر به عنوان پیشنمایش برای نسخهی Qt 5.11 برنامهریزی شده است. کیوت برای ساخت وب اسمبلی دستورالعملهایی را در اینجا آورده است. قبل از هرچیز شما نیاز دارید تا ابزار کامپایلر emsdk را آماده و نصب نمایید. بنابراین دستورات زیر را به ترتیب اجرا کنید. # Get the emsdk repo git clone https://github.com/juj/emsdk.git # Enter that directory cd emsdk # Fetch the latest registry of available tools. ./emsdk update # Download and install the latest SDK tools. ./emsdk install latest # Make the "latest" SDK "active" for the current user. (writes ~/.emscripten file) ./emsdk activate latest # Activate PATH and other environment variables in the current terminal source ./emsdk_env.sh در صورتی که در پیکربندی نیاز به راهنمایی دارید از راهنمای اصلی آن استفاده کنید و یا در همین مرجع در تالارهای گفتمان از ما بپرسید. ما به این ابزار به عنوان ابزار کامپایل-چندمنظوره استفاده خواهیم کرد. برخی از اسکرین شاتها از نتایج خروجی این ماژول به صورت زیر آمدهاند: یک بازی ساده به نام Colliding mice ویژگی پنجرههای گفتگو به نظر میرسد پنجرههای ساخته شده توسط QOpenGLWindow با فریم ریت ۶۰ به خوبی عمل میکنند. البته به نظر میرسد QOpenGLWidget فعلاً شامل برخی از مشکلات است که حل خواهند شد. کامپایلر Emscripten که به عنوان یک کامپایلر منبعباز که بک اند آن بر روی LLVM اجرا میشود کُدهای OpenGL را به WebGL ترجمه میکند. بنابراین محدودیتهایی در نسخههای دسکتاپ و اِمبدها وجود خواهد داشت. نمونه مثال پنجره تحت OpenGL در کنار اینها QtBases و QtDeclarative که از شاخهی Wip/Web Assembly استقاده میکنند، ماژولهای شناخته شدهی کیوت به صورت زیر به کار گرفته میشوند: QtCharts QtGraphicalEffects QtQuickControls QtQuickControls2 QtWebSockets QtMqtt (با استفاده از وب سوکت) برای استفاده از QtMqtt، شما باید کلاس WebSocketIODevice از نمونه مثالی با نام (websocketsubscription) وارد برنامهی خود کنید. نمونه مثالهای ساعت در QML نکته: از آنجا که جاوااسکریپت و وباسمبلی تنها یک نخ (Thread) دارند، QtDeclarative تنها برای یک نَخ (ترد) کار خواهد کرد. در نظر داشته باشید که ماژولهای QtCharts QtGraphicalEffects، QtQuickcontrols، QtQuickControls2 بدون هیچ تغییراتی کار میکنند. ماژول QtChart از نمونه مثال oscilloscope این پروژه به عنوان یک رویکرد جدید و ویژگیای که در آینده میتواند مفید باشد در حال توسعه است. بخش ویکی رسمی آن در این لینک آورده شده است.
-
- وباسمبلی
- webassembly
-
(و 4 مورد دیگر)
برچسب زده شده با :