تاریخچه مختصری از جاوا اسکریپت

تاریخچه مختصری از جاوا اسکریپت

تاریخچه مختصری از جاوا اسکریپت

 

 

جاوااسکریپت مسلّماً یکی از مهم‌ترین زبان‌های روز دنیاست. پیشرفت وب و جاوااسکریپت به جایی رسیده است که هرگز تصوّر نمی‌شد. ما در این مطلب به صورت خلاصه تاریخچه‌ی کوتاه جاوااسکریپت را بررسی می‌کنیم و می‌بینیم که چگونه پیشرفت کرد و به این‌جا رسید.

همه چیز از دهه‌ی ۹۰ میلادی شروع شد

تاریخچه مختصری از جاوا اسکریپت

جاوااسکریپت طیّ ۶ ماه از می تا دسامبر ۱۹۹۵ ساخته شد. در آن زمان شرکت NetScape حضوری فعّال در دنیای جدید وب داشت. مرورگر این شرکت رقیب جدّی اوّلین مرورگر مشهور وب یعنی NCSA Mosaic بود. بسیاری از کسانی که جزء مؤسسان Netscape بودند، قبلاً در ساخت Mosaic .دست داشتند و حالا که مستقل شده بودند و بودجه‌ی کافی هم داشتند، به اندازه‌ی کافی آزادی داشتند که دنیای وب را رو به جلو برده و گسترش دهند. و این همان موضوعی بود که باعث تولّد جاوااسکریپت شد.

NetScape به دنبال راهی برای پویاتر کردن صفحات وب بود. بنابراین آقای براندان ایچ (صاحب عکس زیر) را مأمور کرد تا یک زبان اسکریپتی کوچکبرای صفحات وب و دستکاری HTML بسازد. آن‌ها نمی‌خواستند این زبان فقط برای برنامه‌نویسان حرفه‌ای قابل استفاده باشد، بلکه مخاطبین این زبان طرّاحان بودند. زیرا آن زمان هنوز دنیای وب در ابتدای کار بود و HTML هم آن‌قدر ساده بود که غیر برنامه‌نویسان به راحتی بتوانند با آن کار کنند. به همین دلیل این زبان جدید که می‌خواست بخشی از مرورگر شود باید توسّط آن‌ها هم قابل استفاده می‌بود. این زبان Mocha نام گرفت. آقای ایچ می‌خواست زبانی مثل زبان Scheme برای مرورگر بسازد، زبان Scheme نسخه‌ای ساده شده از زبان Lisp بود که برای یادگیری و… بسیار مناسب بود.

تاریخچه مختصری از جاوا اسکریپت

ولی وقت تنگ بود، او باید سریعاً یک نمونه‌ی اوّلیّه از این زبان را ارائه می‌داد. بنابراین به این فکر افتاد که به جای طرّاحی زبان Mocha یعنی یک زبان برنامه‌نویسی کاملاً جدید، آن را براساس زبان جاوا بسازد. البته زبان جاوا هم بزرگ بود و وقت هم نبود. در نهایت زبان Mocha ساخته شد، ولی شباهتی به زبان Scheme نداشت. تا حدّی شبیه جاوای پویا بود، ولی تفاوت‌های بسیار بزرگی با جاوا داشت. چیزی شبیه Schema ناقص بود با ظاهری شبیه جاوا. بالأخره نمونه‌ی اوّلیّه‌ی زبان Mocha در ماه می ۱۹۹۵ روی مرورگر Netscape پیاده‌سازی شد. چیزی نگذشت که نام این زبان به LiveScript تغییر کرد. در دسامبر سال ۱۹۹۵ طیّ قرار دادی بین شرکت Netscape و Sun نام این زبان به JavaScript تغییر کرد. البته برای شرکت Sun هم سخت بود که زبانی را به عنوان همنشین جاوا بپذیرد که تفاوت‌های بسیار بزرگی با آن داشت.

مایکروسافت هم برای اینکه از قافله عقب نماند و مرورگرش یعنی Internet Explorer در رقابت با مرورگر Netscape Navigator شکست نخورد، او هم جاوااسکریپت را پیاده‌سازی کرد و به خاطر مسائل قانونی و عدم امکان استفاده از کلمه‌ی جاوا نام آن را JScript گذاشت. البته تفاوت JScript و جاوااسکریپت فقط منتهی به نام نمی‌شد و تفاوت‌های کوچک دیگری نیز داشتند. اوّلین نسخه‌ی JScript در سال ۱۹۹۶ روی مرورگر Internet Explorer 3 پیاده‌سازی شد.

در سال ۱۹۹۶ آقای ایچ دوباره شروع به نوشتن موتور جاوااسکریپت جدیدی برای مرورگر Netscape کرد، موتور جاوااسکریپت قبلی که Mocha نام داشت، به دلیل عجله در پیاده‌سازی مشکلاتی داشت و باید از اوّل ساخته می‌شد. این موتور جاوااسکریپت جدید SpiderMonkeyy نام گرفت. در حال حاضر نیز اسم موتور جاوااسکریپت مرورگر فایرفاکس SpiderMonkey است.

تاریخچه مختصری از جاوا اسکریپت

تا سال‌ها بعدJScript و SpiderMonkey دو موتور اصلی جاوااسکریپت دنیا بودند. بعضی از قابلیّت‌هایی که این دو موتور پیاده‌سازی کرده بودند با هم سازگار نبودند و باید تعریف می‌شد که کدام قابلیّت‌ها باید جزء وب باشند.

ECMAScript: استاندارد شدن جاوااسکریپت

یک سال بعد که مرورگر NetScape Navigator 3 منتشر شد، زبان جاوااسکریپت برای استانداردسازی به سازمان ECMA ارائه شد. اکما یک انجمن صنعتی برای استانداردسازی سیستم‌های اطّلاعاتی و ارتباطاتی است که در سال ۱۹۶۱ تأسیس شده است. پس از استانداردسازی به دلیل مشکلات قانونی برای استفاده از کلمه‌ی جاوا در نام این زبان، صحبت‌هایی شد و در نهایت نام رسمی این زبانECMAScript شد. جاوااسکریپت فقط نام تجاری اکمااسکریپت است (مثل جوهرنمک که نام تجاری کلریدریک اسید است).

نسخه‌ی ۱ اکمااسکریپت در سال ۱۹۹۷ در مرورگر NetScape Navigator 4 پیاده شد و مهمترین تغییرات آن اصلاح و استاندارد شدن شیءگرایی پروتوتایپی بود. نسخه‌ی ۲ اکمااسکریپت تغییری نسبت به نسخه‌ی ۱ نداشت و تنها برای رفع تناقضات بین استاندارد ECMA و ISO برای جاوااسکریپت بود. این نسخه در ژوئن ۱۹۹۸ منتشر شد.

اوّلین تغییرات بزرگ در نسخه‌ی ۳ اکمااسکریپت رخ داد. مهم‌ترین آن‌ها عبارت بودند از:

عبارت‌های منظّم (Regular Expression)

حلقه‌ی do while

مدیریت استثناء و try catch

توابع از پیش آماده‌ی بیشتری برای کار با رشته‌ها و آرایه‌ها

عملگرهای in و instanceof

اکمااسکریپت ۳ در دسامبر ۱۹۹۹ منتشر شد. در نوامبر سال ۲۰۰۰ نسخه‌ی ۶ مرورگر NetScape Navigator منتشر شد که از اکمااسکریپت ۳ پشتیبانی می‌کرد. چیزی نگذشت که اینترنت اکسپلورر هم از آن پشتیبانی کرد و حدود یک سال و نیم بعد مرورگر جدیدی برپایه‌ی NetScape Navigator منتشر شد به نام فایرفاکس که آن هم از کمااسکریپت ۳ پشتیبانی می‌کرد. برای همین عملاً جاوااسکریپت در تمام مرورگرهای اصلی آن زمان پشتیبانی شد و تا امروزه هنوز بسیاری از کتابخانه‌های جاوااسکریپت برپایه‌ی نسخه‌ی ۳ نوشته می‌شوند.

تاریخچه مختصری از جاوا اسکریپت

تولّد AJAX

در همان زمان بود که مایکروسافت جاوااسکریپت را در مرورگر اینترنت اکسپلورر ۵ توسعه داد و توابعی را به آن اضافه کرد که رسماً جزء استاندارد اکمااسکریپت ۳ نبود. یکی از آن‌ها تابع XMLHttpRequest بود که به مرورگر امکان می‌داد به صورت آسنکرون درخواست HTTP به سرور ارسال کند. بنابراین به صفحه امکان می‌دهد تا بدون لود شدن دوباره‌ی کل صفحه، اطّلاعات آن را از سرور بگیرد و به روزرسانی کند. البته تا سال‌ها بعد کلمه‌ی AJAX برای آن به کار نمی‌رفت. XMLHttpRequest موفقیت خود را اثبات کرد و در سال‌های بعد به عنوان استانداردی مجزّا ارائه شد

از آن‌جایی که اینترنت اکسپلورر ۵ و ۶ تفاوت‌هایی با جاوااسکریپت استاندارد و سایر مرورگرها داشتند، توسعه دهندگان را تا مدّت‌های طولانی آزار می‌دادند. تا اینکه مایکروسافت تصمیم گرفت از نسخه‌ی ۷ به بعد از استانداردها پیروی کند. به همین دلیل شاهد بودیم سایت‌هایی که به جای به روزرسانی و پیروی از استانداردها از کاربران خود می‌خواستند از نسخه‌های قدیمی اینترنت اکسپلورر برای اجرای درست استفاده کنند.

اکمااسکریپت ۳.۱ و ۴: سال‌های مبارزه

متأسفانه این سال‌ها برای جاوااسکریپت اصلاً خوب نبود. به محض شروع کار روی اکمااسکریپت ۴ گروهی معتقد بودند که جاوااسکریپت به قابلیّت‌هایی نیاز دارد تا تبدیل به زبانی قوی‌تر برای تولید اپلیکیشن‌هایی با سایز بزرگ بشود. این گروه تغییرات بزرگ و قابلیّت‌های بسیارزیادی را برای رسیدن به این هدف مطرح کردند. دیگران معتقد بودند که این تغییرات خیلی بزرگ است و خوب نیست. عدم اجماع روی این موضوع و پیچیدگی زیادی که بعضی از قابلیّت‌های مطرح شده داشتند باعث شد انتشار اکمااسکریپت ۴ مدّت‌ها به عقب بیفتد. علی‌رغم قابلیّت‌های بسیار جالبی که در این نسخه معرّفی شده بود مرورگرها آن را پیاده‌سازی نکردند، مدّتی بعد شرکت Adobe برای زبان Action Script و همچنین مایکروسافت برای زبان JScript.Net اکمااسکریپت ۴ را پیاده‌سازی کردند و آن را به عنوان پایه و اساس موتورهای خود به کار بردند. اکمااسکریپت ۴ قابلیّت‌های زیر را داشت:

Classes

Interfaces

Namespaces

Packages

Optional type annotations

Optional static type checking

Structural types

Type definitions

Multimethods

Parameterized types

Proper tail calls

Iterators

Generators

Instrospection

Type discriminating exception handlers

Constant bindings

Proper block scoping

Destructuring

Succint function expressions

Array comprehensions

هدف اکمااسکریپت ۴ تولید اپلیکیشن‌های بزرگ بود. اگر با اکمااسکریپت ۶ آشنا باشید حتماً متوجّه شدید که بسیاری از قابلیّت‌های اکمااسکریپت ۴ دوباره در آن معرّفی شده است.

تاریخچه مختصری از جاوا اسکریپت

گروهی که برای توسعه‌ی اکمااسکریپت ۴ کار می‌کردند از شرکت‌های Adobe، Microsoft، Mozilla و Opera بودند. Yahoo وقتی وارد این جمع شد که اکثر تصمیمات گرفته شده بود. نماینده‌ی یاهو مخالفت خودش را با بسیاری از استانداردهای تصویب شده در اکمااسکریپت ۴ ابراز کرد. نماینده‌ی مایکروسافت نیز از او حمایت کرد. با شروع این شک و تردیدها مایکروسافت محکم جلوی اکمااسکریپت ۴ ایستاد و هیچ‌کدام از بخش‌های آن را قبول نکرد و تمام توان خود را به کار برد تا این استاندارد تصویب نشود. به هر حال این موضوع باعث شد یک جر و بحث حسابی بین اعضای کمیته در بگیرد و به توافق نرسند. نماینده‌ی مایکروسافت ایده‌ای ارائه داد و آن این بود که روی نسخه‌ای از جاوااسکریپت کار شود که تغییراتی کوچک داشته باشد بدون تغییر Syntax که اکمااسکریپت ۳.۱ نامیده می‌شد.

تا مدّتی هر دوی این استانداردها با هم وجود داشتند. دو کمیته تشکیل شد، یکی روی اکمااسکریپت ۴ و دیگری روی ۳.۱ کار می‌کرد. امّا اکمااسکریپت ۴ پیچیده‌تر از این بود که در صورت عدم توافق بتواند تمام شود. امّا اکمااسکریپت ۳.۱ بسیار ساده‌تر بود و در نهایت به خاطر لجبازی تمام شد.

در نهایت سال ۲۰۰۸ پایان عمر اکمااسکریپت ۴ بود. زمانی که براندان ایچ اعلام کرد که تمرکز اصلی روی اکمااسکریپت ۳.۱ باید باشد و تا سال دیگر باید روی نسخه‌ای از اکمااسکریپت کار شود که با نسخه‌ی ۳.۱ سازگار باشد و تغییرات آن نسبت به نسخه‌ی قبلی از هر لحاظ نباید مثل اکمااسکریپت ۴ این‌قدر زیاد باشد.

در مجموع توسعه‌ی اکمااسکریپت ۴ حدود ۸ سال طول کشید و در نهایت دور انداخته شد.

تاریخچه مختصری از جاوا اسکریپت

Action Script

اکشن‌اسکریپت یک زبان برنامه‌نویسی برپایه‌ی اکمااسکریپت ۴ است. شرکت Adobe این زبان را به عنوان بخشی از Flash پیاده‌سازی کرد و این تنها زبان برنامه‌نویسی است که می‌تواند در Flash به کار رود. این کار ادوب حمایت بزرگی برای حفظ اکمااسکریپت ۴ بود. حتّی ادوب به امید مورد قبول واقع شدن اکمااسکریپت ۴ موتور اکشن‌اسکریپت را نیزبه صورت متن‌باز  منتشر کرد. آن‌ها امیدوار بودند که نسخه‌های آینده‌ی اکمااسکریپت با اکشن‌اسکریپت سازگار باشند که متأسّفانه این‌طور نشد.

تاریخچه مختصری از جاوا اسکریپت

اکشن‌اسکریپت امروزه به عنوان زبان برنامه‌نویسی Flash باقی‌مانده است. که البته با ظهور HTML5 به مرور در افق محو می‌شود! اگر اکمااسکریپت ۴ پذیرفته می‌شد و ادامه داشت، اکنون کدهای جاوااسکریپت ما بسیار شبیه کدهایی بود که با اکشن‌اسکریپت نوشته می‌شوند.

E4X

در همان سال‌های کار روی اکمااسکریپت ۴ (سال ۲۰۰۴)، E4X معرّفی شد. E4X مخفّف ECMAScript for XML بود که استانداردسازی هم شده بود (ECMA-357). در اصل E4X همان اکمااسکریپت بود که یک نوع داده‌ی دیگر هم به آن اضافه شده بود، یعنی XML. این موضوع مورد توجّه موتورهای جاوااسکریپت آن زمان مثل SpiderMonkey قرار گرفت و پیاده‌سازی شد، ولی به دلیل استفاده‌ی بسیار کم برنامه‌نویسان از آن برداشته شد، در فایرفاکس از نسخه‌ی ۲۱ به بعد پشتیبانی از E4X قطع شد.

مسلّماً نوع داده‌ای مثل JSON در جامعه‌ی جاوااسکریپت بیشتر مورد پذیرش بود، به همین دلیل E4X بدون  دردسر خاصی آمد و رفت.

ECMAScript 5 تولّد دوباره‌ی جاوااسکریپت

پس از کشمکش‌های زیادی که سر اکمااسکریپت ۴ پیش آمد، بعد از سال ۲۰۰۸، اکمااسکریپت ۴ دور انداخته شد و همه روی اکمااسکریپت ۳.۱ تمرکز کردند. در سال ۲۰۰۹ اکمااسکریپت ۳.۱ کامل شد و توسّط تمام اعضا مورد قبول واقع شد. کمیته برای این که عموم مردم گیج نشوند نام این نسخه را به اکمااسکریپت ۵ تغییر داد. درست است که اکمااسکریپت ۴ مورد توافق واقع نشد، ولی به عنوان یک نسخه‌ی خاص از اکمااسکریپت باقی ماند و در نتیجه این نسخه اکمااسکریپت ۵ نام گرفت.

اکما اسکریپت ۵ به بهترین نسخه‌ی جاوااسکریپت از لحاظ پشتیبانی مرورگرها تبدیل شد. اکمااسکریپت ۵ به طور کامل توسّط فایرفاکس ۴ (سال ۲۰۱۱)، کروم ۱۹ (سال ۲۰۱۲)، سافاری۶ (سال ۲۰۱۲)، اُپرا ۱۲ (سال ۲۰۱۲) و اینترنت اکسپلورر ۱۰ (سال ۲۰۱۲) پشتیبانی می‌شود.

تاریخچه مختصری از جاوا اسکریپت

اکمااسکریپت ۵ نسبت به اکمااسکریپت ۳ تغییرات کمی داشت، از جمله:

Getterها و Setterها

قراردادن ویرگول در انتهای آرایه یا شیء مجاز است

متدهای جدیدی برای Object (متد create، defineProperty، keys، seal، freeze، gwtOwnPropertyNames و…)

متدهایی برای Array (متدهای isArray، indexOf، every، some، map، filter، reduce و…)

متد trim برای رشته‌ها

متدهایی برای Date (متدهای toISOString، now، toJSON)

متد bind برای تابع‌ها

JSON

اشیاء undefined، NaN و Infinity

حالت Strict

یک سری تغییر کوچک دیگر

هیچ کدام از موارد بالا تغییری در Syntax جاوااسکریپت ندادند. قبل از آن هم Getterها و Setterها به صورت غیر رسمی در مرورگرها پشتیبانی می‌شد. اکمااسکریپت ۵ در سال ۲۰۱۱ تحت عنوان اکمااسکریپت ۵.۱ بازگویی شد، ولی هیچ قابلیّت جدیدی نسبت به اکمااسکریپت ۵۵ نداشت، جز اینکه بعضی از قسمت‌های مبهم در این استاندارد شفّاف‌سازی شده بود.

تاریخچه مختصری از جاوا اسکریپت

اکمااسکریپت ۶ (۲۰۱۵) و ۷ (۲۰۱۶): زبانی همه منظوره

خیلی از قابلیّت‌هایی که در اکمااسکریپت ۴ بحث شده بود حذف شد و خیلی‌های دیگر این بار با نگاهی جدید بازبینی شد و اکمااسکریپت ۶ که بعداً به اکمااسکریپت ۲۰۱۵ تغییر نام پیدا کرد همراه با تغییراتی بسیار بزرگ ارائه شد. با این‌که این بار اعضای کمیته با هم متّحد بودند و در نهایت در سال ۲۰۱۵ آن را تصویب کردند، بعضی از سازندگان مرورگرها به دلیل زیاد بودن تغییرات هنوز که هنوز است (ژانویه‌ی ۲۰۱۷) کاملاً آن را پیاده‌سازی نکرده‌اند.

تاریخچه مختصری از جاوا اسکریپت

انتشار اکمااسکریپت ۲۰۱۵ باعث شد جهشی بزرگ در استفاده از ترنسپایلرهایی مثل Babel یا Traceur رخ دهد. مردم با کمک این ترنسپایلرها می‌توانستند قابلیّت‌های جدید اکمااسکریپت ۲۰۱۵ را تست کنند (ترنسپایلرها می‌توانند کد اکمااسکریپت ۲۰۱۵ را به کد اکمااسکریپت ۵ تبدیل کنند که در مرورگرها بدون مشکل اجرا شود).

بسیاری از قابلیّت‌های بزرگ اکمااسکریپت ۴ در این نسخه با دیدی جدید ارائه شد. مثلاً class در اکمااسکریپت ۲۰۱۵ چیزی بیشتر از یک Syntax جدید برای همان تابع سازنده و پروتوتایپ که قبلاً استفاده می‌شد نیست. این رویکرد انتقال به نسخه‌ی جدید را ساده‌تر می‌کند.

خلاصه‌ای کوتاه از قابلیّت‌های اکمااسکریپت ۶:

let و const

Arrow function و lexical this

class

بهبودهایی در Object literal

Template string

Promise

Generatorها و iterableها و iteratorها و for…of

آرگومان پیش‌فرض برای تابع‌ها و عملگر rest

Spread

Destructuring

Module

اشیائی جدید برای مجموعه (Set، Map، WeakSet و WeakMap)

Proxy و Reflection

Symbol

Typed array

پشتیبانی از ارث‌بری از کلاس‌های پیش‌فرض

پشتیبانی ساده‌تر از Unicode

سینتکسی برای نوشتن اعداد در مبنای ۲ و مبنای ۸

تمام این قابلیّت‌ها مخاطبین جاوااسکریپت را افزایش می‌دهد و به برنامه‌نویسی اپلیکیشن‌های بزرگ کمک می‌کند. در این نسخه خیلی از قابلیّت‌های اکمااسکریپت ۴ که خیلی تهاجمی بودند، مثل namespace یا تعیین نوع‌داده برای متغیّرها نادیده گرفته شدند و خیلی از قابلیّت‌های دیگر با دیدی جدید معرّفی شدند. با این حال اکمااسکریپت ۲۰۱۵ حدود ۶ سال طول می‌کشد تا کاملاً در مرورگرها پیاده‌سازی شود و قابل استفاده باشد.

در سال ۲۰۱۶ تجدید نظری روی اکمااسکریپت ۲۰۱۵ انجام شد و  اصلاحات کوچکی انجام گرفت که به عنوان اکمااسکریپت ۲۰۱۶ معرّفی شد. این اصلاحات عبارتند از:

عملگر توان (**)

متد includes برای آرایه‌ها

بعضی اصلاحات کوچک (Generatorها نمی‌توانند با new به کار روند و…)

آینده: اکمااسکریپت ۲۰۱۷ و بعد از آن

شاید مهم‌ترین چیزی که در این پروپوزال روی آن کار می‌شود async/await باشد. Async/await کار با Promiseها را از لحاظ Syntax ساده‌تر می‌کند.بعضی از تغییرات کوچکتر این پروپوزال عبارتند از:

Object.values و Object.entries

متدهای padStart و padEnd برای رشته‌ها

Object.getOwnPropertyDescriptors

ویرگول اضافی در انتهای آرگومان‌های تابع‌ها مجاز است

تاریخچه مختصری از جاوا اسکریپت

امّا آینده به این‌جا ختم نمی‌شود. ما نگاهی به سایر پروپوزال‌ها انداخته‌ایم که ببینیم در آینده با چه چیزهایی مواجه خواهیم بود. جذّاب‌ترین آن‌ها عبارتند از:

SIMD API

Generator arrow function

حافظه‌ی اشتراکی و atomics

عملیّات روی اعداد صحیح ۶۴ بیتی

جاوااسکریپت روز به روز بیشتر شبیه یک زبان همه‌منظوره می‌شود، امّا یک چیز بزرگ وجود دارد که آینده‌ی جاوااسکریپت را دگرگون خواهد کرد.

تاریخچه مختصری از جاوا اسکریپت

WebAssembly

اگر تا به حال در مورد وب‌اسمبلی چیزی نشنیده‌اید حتماً باید در این زمینه مطالعه کنید. وب‌اسمبلی اجازه می‌دهد با زبان‌های برنامه‌نویسی دیگری غیر از جاوااسکریپت هم بتوانید کد بزنید. این برنامه‌ها در نهایت به بایت‌کُدِ وب‌اسمبلی تبدیل می‌شوند (مثل زبان جاوا که برنامه‌ی نهایی به یک فایل jar که در اصل همان بایت‌کُد است تبدیل می‌شود). حالا این بایت‌کُد در مرورگر لود می‌شود. طبیعتاً سرعت اجرای بایت‌کُد توسّط مرورگر بسیار بیشتر از اجرای تفسیری کدهای جاوااسکریپت معمولی است. ضمناً می‌شود سورس‌مپ‌هایی را نیز همراه بایت‌کُد وب‌اسمبلی تولید کردتا برای دیباگ کردن کُد نیز مشکلی وجود نداشته باشد. هم‌اکنون مرورگرهای کروم و فایرفاکس در نسخه‌های آزمایشی خود وب‌اسمبلی را پیاده‌سازی کرده‌اند.

تاریخچه مختصری از جاوا اسکریپت

به عنوان یک طراح ، شکست بخش ضرروی موفقیت است

به عنوان یک طراح ، شکست بخش ضرروی موفقیت است

به عنوان یک طراح ، شکست بخش ضرروی موفقیت است

 

 

 

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

به عنوان یک طراح ، شکست بخش ضرروی موفقیت است

اما چه اتفاقی میتفد زمانی که شما یک پروژه دارید و به مشتری خود گفته اید که آن پروژه را تا ساعت ۸ صبح به انجام میرسانید ، اما ساعت الان ساعت ۳ صبح است و شما چیز ، مناسب و معقولی برای ارائه به مشتری ندارید . اگر در این کار شما شکست بخورید این به این معنی است که شما برای همیشه یک طراحی شکست خورده هستید ؟ یا راه دیگری را برای جدا کردن این احساس اجتناب ناپذیر از خود پیدا میکنید . حداقل برای یکبار هم که شده زندگی با اعتماد به نفس را امتحان کنید ! بنظرتان چیز خوبیه ، درسته ؟ بیاید این موضوع را بررسی کنیم !

آماده برای شکست

شما حتما این جمله را شنیده اید که ” شکست یک بخش ضروری برای موفقیت است ” . این کاملا درست است . اما در سناریو من در بالا ، زمانی که ساعت ۳ صبح بی اختیار در حال گریه برای به انجام نرساندن کار خود هستید . فک نکنم تکرار این جمله برای خودتان ، حالتان را بهتر کند .

کلید اصلی ، باور این جمله است که شکست یک بخش ضروری برای موفقیت است ، باور به این معنی که زمانی که شما در تنگنا ، سختی کار هستید با تکرار این جمله بتوانید به خود شوکی وارد کنید و با تلاش بیشتری کار خود را ادامه دهید . ذهن خودتان را با تمرین های مختلف هر روز خلاق نگه دارید . بلاخره زمانی که کارتان با شکست مواجه میشود چیزعجیب و خیلی آزار دهنده ای برای شما اتفاق نمی افتد و شما میدانید که باید برای موفقیت بدونه معطلی دوباره تلاش کنید .

به عنوان یک طراح ، شکست بخش ضرروی موفقیت است

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

زمانی که شما آماده شکست خوردن باشید ، شکست چیزی عجیبی یا شوک آوری برای شما نمی شود و شما با تلاش بیشتر کار میکنید و ذوق فوق العاده ای دارید تا کارتان را به انجام برسانید و اگر دوباره با شکست مواجه شوید درک میکنید که در طول آن مسیر چیزهای جدیدی یاد گرفته اید و باید دوباره تلاش کنید .

دره بینش

در کتاب switch اثر Chip و Heath Dan یک تمرین از تیم براون، مدیر عامل شرکت طراحی مشاوره IDEO آورده اند این تمرین بخصوص برای طراحاهان مفید است “یادگیری” این موضوع که چگونه به شکست می انجامد . در این کتاب ، براون گفت : به کارکنان خود یک چارت با نام “چارت خلق و خوی پروژه” داد تا افراد در طول یک پروژه احساس خود را پر کنند .

نمودار شبیه به شکل V در چارت در آماده – که در سمت چپ این V برچسب “امید” را میتوانید بخوانید . این به معنای عجله و هیجان شما که در شروع یک پروژه دارید میباشد . شما باید کاملا آرام و متمرکز باشید ، همه چیز به درستی به انجام میرسد و در زمان مورد نظر شما پروژه را به مشتری تحویل میدهید .

برچسبی که در طرف دیگر V وجود دارد “اعتماد به نفس” را نشان میدهد .این برچسب نشان دهنده این است که شما یک پروژه را با موفقیت به پایان رسانده اید . شما در این سمت نمودار در بالاترین نقطه انرژی خود هستید . خیلی خوشحال از به پایان رساندن پروژه . دراین قسمت میخواهید از هر طراحی یک احساس افتخار از به انجام رساندن پروژه داشته باشد .

به عنوان یک طراح ، شکست بخش ضرروی موفقیت است

برچسب سومی که در نمودار V وجود دارد “بینش” نام دارد . این برچسب بین برچسب اول و اخر وجود دارد . و در این قسمت همه شکست ها ، افسردگی ها و تا آخر شب نشستن ها قرار میگیرد. هر کسی به این دره برای دریافت بینش نیاز دارد تا اعتماد به نفس کافی برای به پایان رساندن پروژه را بدست آورد.

این موضوع مانند عبور از بیابان است – بسیاری هرگز از آن عبور نمیکنند.شما تقریبا میتوانید تصور کنید که اسکلت یک سری از طراحان در آن دره گیر کرده و هرگز نتوانسته ان به پایان کار برسند . بعضی افراد که نمیخواستند از خلاقیت خود استفاده کنند منشی یا حسابدار شده اند . اما شما نمیخواهید از این دسته از افراد باشید . شما خلاقیت را به دلیلی انتخاب کرده اید . و این موضوع به شما دلگرمی زیادی را برای عبور از این دره وحشنتاک را میدهد و این موضوع شما را برای عبور دوباره و دوباره از آن قدرتمند میسازد .

نتیجه گیری

همه افراد ، دوره ای دارند که در آن زمان فکر میکند ، هیچ کاری به درستی انجام نمی شود و مهم نیست که چقدر به عنوان طراح تجربه کسب کرده اید . عبور از دره و رسیدن از امید به اعتماد بنفس برای آنها ناخوشایند است . حتی من با این همه سال تجربه در مورد نویسندگی و طراحی باز نیاز به بازگشت به عقب و خواندن چیزهای دلگرم کننده و امید بخش دارم .

به خودتان یاد دهید و خودتان را تشویق کنید که شکست یک بخش ضروری از پیروزی است و این جمله مهمترین چیز برای شماست .

به عنوان یک طراح ، شکست بخش ضرروی موفقیت است

بهینه سازی و افزایش سرعت ASP.NET

بهینه سازی ASP.NET

بهینه سازی ASP.NET

 

 

در این مقاله قصد داریم نکاتی را معرفی کنیم که در بهینه سازی و افزایش کارایی و سرعت برنامه های ASP.NET تاثیر بسزایی دارند.
اگرچه ASP.NET مدل جدیدی از برنامه‌نویسی تحت وب می‌باشد و آمده است که نواقص و کمبود های قبلی را برطرف نموده و به کارایی برنامه‌های تحت وب بی افزاید، اما شما همچنان نیاز دارید که جهت کارایی و بهینه بودن برنامه‌هایتان نکاتی را رعایت کنید. این نکات جهت افزایش کارایی، سرعت و صرفه‌جویی در مصرف منابع بر روی سرور است. که به شرح زیر است:

بهینه سازی ASP.NET

Session State را در صورت عدم نیاز حتماً غیرفعال نمایید:
بصورت پیش فرض وضعیت Session State برای هر صفحه فعال است. اگر مطمئن هستید که در آن صفحه از متغیرهای Session استفاده نمی کنید، حتما آن را در دایرکتیو Page بالای صفحه تان با قراردادن آن برابر False غیرفعال کنید تا بدین ترتیب منابع اضافی در سرور مصرف نشود. اگر هم مطمئن هستید که در کل برنامه یا سایت تان نمی خواهید از متغیرهای Session استفاده کنید می توانید آن را در web.config بطور کلی غیرفعال کنید (توجه: در اجرای این روش دقت کافی داشته باشید).

تا آنجائیکه ممکن است از View State استفاده نکنید:
View State هم مانند Session State برای نگهداری اطلاعات و سابقه یک فرم از منابع سرور استفاده کرده و به حجم صفحات اضافه می کند. از طرفی این حالت بصورت پیش فرض فعال می باشد. لذا در صورتیکه به آن نیاز ندارید از آن استفاده نکنید و حالت آن را در دایرکتیو Page غیرفعال نمائید و همچنین می تواند مقدار ویژگی EnableViewState کنترل ها را نیز false قرار داد.

بهینه سازی ASP.NET

از رفت و برگشت (Postback) های زیاد از حد پرهیز کنید:
فرم های وب جهت پردازش باید به سرور ارسال شده و نتیجه پردازش برگشت داده شود. به این عمل یک رفت و برگشت یا Round trip می گویند. از آنجا که این رفت و برگشت ها برای سرور ایجاد بار پردازشی و ترافیک می کنند، سعی کنید بگونه ای از کنترل های وب استفاده کنید که حداقل رفت و برگشت را داشته باشید و تا جائیکه می توانید از پردازش های سمت کاربر (Client side) برای کارهای ساده ماننده بررسی صحت ورود اطلاعات استفاده کنید. در این روش جهت تبادل داده با سرور می توان از Ajax استفاده کرد.

از Page.IsPostback استفاده کنید:
استفاده از Page.IsPostback سبب کاهش رفت و برگشت های (Round trip) اضافی می گردد. همچنین به شما کمک می کند که تشخیص دهید چه موقع نیاز به تولید داده جدید برای یک صفحه دارید.

استفاده صحیح و به موقع از کنترل های سرور:
اگرچه کنترلهای سرور دارای قابلیت های بسیار زیاد و جالبی می باشند اما این قابلیتها ناشی از اجرای آنها بر روی سرور است. از آنجا که هر اجرائی بر روی سرور ایجاد بار اضافی در سرور می کند لذا در استفاده از این نوع کنترلها خساست و دقت بخرج دهید و اگر جایی می توانید از کنترلهای معمولی HTML استفاده نمائید. به دلیل اینکه همانگونه که ما به لایه های پایین تر از زبان برنامه نویسی برویم سرعت کار بیشتر خواهد بود.

بهینه سازی ASP.NET

فشرده سازی فایل های css و js:
کاهش زمان بارگزاری صفحات از طریق فشرده سازی فایل های css و js بسیار مفید است و این کار را می توانید با استفاده از افزونه های ویژوال استودیو مانند: Web Essentials و همچنین وب سایت های آنلاین مانند: cssminifier.com و javascript-minifier.com انجام داد. (نمونه کار اجرا شده: darvishihotel.com)
از Stored Procedure استفاده کنید:
اگر از بانک اطلاعاتی در برنامه تان استفاده می کنید، سعی کنید که حتما پرس و جوهای (Query) خود را به روال های ذخیره شده (Stored procedure)  بسپارید. از آنجائیکه این روال ها برای مراجعه اول کامپایل شده و از آن پس جهت اجرا در اختیار مدیر بانک اطلاعاتی (DBMS) قرار می گیرد، نسبت به پرس و جوهای معمولی درون برنامه ای بسیار کاراتر و سریعتر هستند. از طرفی با بهینه سازی خاصی که برای گرداننده SQLServer (driver) در مجموعه دات نت شده است، سرعت اجرای روال های ذخیره شده نسبت به روش های معمولی OLEDB یا ODBC بیش از دو الی سه برابر می باشد.

از SqlDataReader استفاده کنید:
اگر حجم بالایی از داده ندارید یا تنها می خواهید از بانک اطلاعاتی عمل خواندن را انجام دهید حتما از Data Reader استفاده کنید. استفاده از Data Set سبب کندی کار و مصرف بالای منابع می گردد. در کل می توان گفت از کارهایی که به مدت طولانی برنامه را جهت دریافت اطلاعات از سرور بانک اطلاعاتی بلاک می کنند بپرهیزید.

صفحه بندی در نمایش داده ها:
اگر می خواهید رکورد های زیادی را به کاربر نمایش دهید بهتر است قبل از نمایش داده ها را صفحه بندی نموده تا کاربر بتواند سریع تر اطلاعات را مشاهده کند و همچنین منابع سرور بیهوده استفاده نشده باشد.

از Caching استفاده کنید:
Caching یکی از ویژگی های منحصر به فرد ASP.NET است. تا آنجائیکه ممکن است از Caching استفاده کنید. استفاده از Caching  سبب می شود تا از تولید مجدد کد  HTML (Page Rendering)لازم برای یک صفحه تکراری جلوگیری شده و کاربر هم صفحات را خیلی سریعتر دریافت کند. در این روش میتوان متناسب با وابستگی به یک متغییر یا بازه زمانی خاص، کد تولید شده را جهت تازه سازی دوباره تولید کرد.

حالت Debug را غیرفعال کنید:
هنگامیکه کار برنامه نویسی شما تمام شده است و زمان استفاده واقعی از برنامه فرا رسیده است، فراموش نکنید که حالت Debug در کامپایل نهائی برنامه تان را غیرفعال نمائید. این کار را می توان از طریق نوار ابزار Standard انجام دهید.

 

بهینه سازی ASP.NET

 

TypeScript چیست و چه کارایی دارد

TypeScript چیست و چه کارایی دارد

TypeScript چیست و چه کارایی دارد

 

 

با گسترش روز افزون زبان برنامه نویسی Javascript و استفاده هر چه بیشتر آن در تولید برنامه‌های تحت وب این زبان به یکی از قدرت‌های بزرگ در تولید برنامه‌های مبتنی بر وب تبدیل شده است. ترکیب این زبان با Css و Html5 تقریبا هر گونه نیاز برای تهیه و توسعه برنامه‌های وب را حل کرده است. جاوا اسکریپت در ابتدا برای اسکریپت نویسی سمت کلاینت برای صفحات وب ایجاد شد و برای سال‌ها به‌عنوان ابزاری برای مدیریت کردن رویدادهای صفحات وب محدود شده بود  و در نتیجه بسیاری از امکانات لازم برای برنامه‌نویسی برنامه‌های مقیاس بزرگ را به‌همراه نداشت. امروزه به قدری Javascript  توسعه داده شده است که حتی در تولید برنامه‌های Native مانند Windows Store  و برنامه‌های تحت Cloud نیز استفاده می‌شود. پیشرفت‌های صورت گرفته و اشاره شده در این حوزه موجب شد تا شاهد پیداش برنامه‌های مبتنی بر جاوا اسکریپت با سایزهای بی سابقه‌ای باشیم و این بیانگر این بود که تولید برنامه‌های مبتنی بر جاوا اسکریپت در مقیاس‌های بزرگ امر دشواری است و اینک TypeScript توسط غول نرم افزاری جهان (Microsoft) پا به عرصه گذاشته که این فرآیند را آسان‌تر نماید. به کمک TypeScript می‌توان برنامه تحت JavaScript در مقیاس بزرگ تولید کرد به طوری با هر مرورگر و سیستم عاملی سازگار باشد. TypeScript از شی گرایی نیز پشتیبانی می‌کند و خروجی آن در نهایت به JavaScript کامپایل می‌شود. خیلی‌ها عقیده دارند که هدف اصلی مایکروسافت از تولید و توسعه این زبان رقابت با CoffeeScript است.  CoffeeScript یک زبان متن باز است که در سال ۲۰۰۹ توسط Jeremy Ashkenas ایجاد شده است و سورس آن در GitHub موجود می‌باشد. در آینده، بیشتر به مباحث مربوط به CoffeeScript و آموزش آن خواهم پرداخت.

TypeScript چیست و چه کارایی دارد

با TypeScript چه چیزهایی به دست خواهیم آورد؟

یک نکته مهم این است که این زبان به خوبی در Visual Studio پشتیبانی می‌شود و قابلیت Intellisense نوشتن برنامه به این زبان را دلپذیرتر خواهد کرد و از طرفی دیگر یکی از مهم‌ترین مزیت هایی که TypeScript در اختیار ما قرار می‌دهد این است که می‌توانیم به صورت Syntax آشنای شی گرایی کد نویسی کنیم و خیلی راحت‌تر کد‌های خود را سازمان دهی کرده و از نوشتن کد‌های تکراری اجتناب کنیم.

یکی دیگر از مزیت‌های مهم این زبان این است که این زبان از Static Typing به خوبی پشتیبانی می‌کند. این بدین معنی است که شما ابتدا باید متغیر‌ها را تعریف کرده و نوع آن‌ها را مشخص نمایید و هم چنین در هنگام پاس دادن مقادیر به پارامتر‌های توابع باید حتما به نوع داده ای آن‌ها دقت داشته باشید چون کامپایلر بین انواع داده ای در TypeScript تمایز قایل است و در صورت رعایت نکردن این مورد شما با خطا مواجه خواهید شد. این تمایز قایل شدن باعث می‌شود که برنامه هایی خواناتر داشته باشیم از طرفی باعث می‌شود که خطا یابی و نوشتن تست برای برنامه راحت‌تر و تمیزتر باشد. بر خلاف JavaScript، در  TypeScript(به دلیل پشتیبانی از شی گرایی) می‌توانیم علاوه بر داشتن کلاس، اینترفیس نیز داشته باشیم و در حال حاضر مزایای استفاده از اینترفیس بر کسی پوشیده نیست.

به دلیل اینکه کد‌های TypeScript ابتدا کامپایل شده و بعد تبدیل به کد‌های JavaScript می‌شوند در نتیجه قبل از رسیدن به مرحله اجرای پروژه، ما از خطاهای موجود در کد خود مطلع خواهیم شد.

البته این نکته را نیز فراموش نخواهیم کرد که این زبان تازه متولد شده است (سال ۲۰۱۲ توسط Anders Hejlsberg) و همچنان در حال توسعه است و این در حال حاضر مهم‌ترین عیب این زبان می‌تواند باشد چون هنوز به پختگی سایر زبان‌های اسکریپتی در نیامده است.

برای نمونه به قطعه نوشته شده با TypeScript توجه فرمایید:

توجه کنید که در این قطعه کد بالا از امکاناتی از جمله class و Constructor استفاده شده است که این کد ها در انتها با معادل آن در JavaScript جایگزین خواهند شد.

TypeScript چیست و چه کارایی دارد

کدهای تولید شده در تمامی مرور گرها قابل اجرا هستند و با توجه به پیشرفت روز افزون دنیای وب و زبان جاوا اسکریپت، در آینده ای نزدیک امکانات TypeScript به این زبان نیز راه پیدا می کنند، که در نتیجه از کد های TypeScript می توان خروجی های مختلفی برای نسخه های مختلف جاوا اسکریپت، در مرورگرهایی که این امکانات را پیشتیبانی می کنند، تهیه کرد.

TypeScript چیست و چه کارایی دارد

TypeScript مجموعه ای عظیم از امکانات را در اختیار ما قرار می دهد، که همه این امکانات به همراه Intellisense فوق العاده آن در محیط Visual Studio همراه شده است. موارد زیر را می توان زیر را برترین امکانات آن نام برد:

۱٫        Classes

۲٫        Types

۳٫        Generics

۴٫        Modules

۵٫        Compile-time Type Checking

TypeScript چیست و چه کارایی دارد

نگاهی علمی به انوع باگ‌ها در صنعت برنامه‌نویسی

نگاهی علمی به انوع باگ‌ها در برنامه‌نویسی

نگاهی علمی به انوع باگ‌ها در برنامه‌نویسی

 

در این مقاله، نگاهی می‌اندازیم به ۴ نوع از باگ‌ها که نام خود را از دانشمندان معروف گرفته‌اند؛ دسته‌بندی این باگ‌ها مورد جالبی است و در ادامه خواهیم دید که باگ‌های ایجاد شده در فرایند کدنویسی تا چه اندازه می‌توانند عجیب باشند!

در مقاله‌ای معروف، آقای Jim Gray، باگ‌ها را به ۲ دستهٔ Bohrbugs و Heisenbugs، براساس نام ۲ دانشمند معروف تقسیم‌بندی کرده است اما امروزه، ما انواع باگ‌های بیشتری را می‌شناسیم و با آن‌ها سروکار داریم؛ بنابراین به ۲ دستهٔ دیگر هم نگاهی خواهیم داشت و هر ۴ مورد را با ذکر مثال بررسی خواهیم کرد.

نگاهی علمی به انوع باگ‌ها در برنامه‌نویسی

Bohrbug

بیشتر باگ‌هایی که با آن‌ها برخورد داریم، مجدداً قابل‌تولید هستند و با عنوان Bohrbugs شناخته می‌شوند؛ این باگ‌ها نام خود را از دانشمندی به نام Niels Bohr گرفته‌اند که در سال ۱۹۱۳ یک مدل اتمی ساده و قابل‌درک ارائه داد. در مدل آقای Bohr، چیزهایی مثل مسیر حرکت و مقدار انرژی یک الکترون در یک اتم، قابل پیش‌بینی هستند.

به‌طور مشابه، Bohrbugها هم قابل پیش‌بینی هستند؛ به‌عبارت دیگر، اگر تحت همان شرایط قبلی نرم‌افزار را اجرا کنید، دوباره ایجاد می‌شوند. برای مثال، وقتی به‌خاطر این‌که از یک موجودیت null استفاده می‌کنید و بالتبع برنامهٔ شما کرش می‌کند، قطعاً بار دیگر برنامه برای یک ورودی دیگر با مقدار null در همین قسمت کرش خواهد کرد؛ پس مشخص است که این باگ به‌راحتی قابل تولید مجدد و بالتبع قابل دیباگ کردن است.

نگاهی علمی به انوع باگ‌ها در برنامه‌نویسی

Heisenbug

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

این نوع از باگ‌ها اسم خود را از دانشمند معروف آقای Werner Heisenberg گرفته‌اند که به‌خاطر «اصل عدم قطعیت» یا اصطلاحاً‌ Uncertainty Principle شناخته شده است؛ براساس این اصل، در یک زمان مشخص، امکان اندازه‌گیری مکان و سرعت یک الکترون درون یک اتم، به‌صورت دقیق و یا تقریبی وجود ندارد.

وقتی شما می‌خواهید عملیات دیباگینگ، ایزوله‌سازی و یا بررسی دقیق برای پیدا کردن مشکل را انجام دهید و باگ‌ها رفتار متفاوتی از خود نشان می‌دهند، به این نام شناخته می‌شوند؛ برای مثال، اگر متغیرهایتان را مقداردهی اولیه نکنید، ممکن این اتفاق رخ دهد. وقتی برنامه اجرا می‌شود، به متغیرهایی که مقداردهی اولیه نشده‌اند دسترسی خواهد داشت و این باعث ایجاد باگ می‌شود اما این درحالی است که وقتی می‌خواهید برنامه را دیباگ کنید، برنامه احتمالاً درست کار خواهد کرد چراکه بسیاری از دیباگرها، متغیرهایی که مقداردهی اولیه نشده‌اند را با ۰ مقداردهی می‌کنند و همین باعث می‌شود که شما با باگ موردنظر برخورد نکنید.

نگاهی علمی به انوع باگ‌ها در برنامه‌نویسی

Mandelbugs

وقتی علت ایجاد باگ بسیار پیچیده و غیرقابل فهم باشد و باگ رفتاری غیرطبیعی از خود نشان می‌دهد، آن‌را Mandelbugs می‌نامند. این باگ‌ها نام خود را از روی نام آقای Benoît Mandelbrot گرفته‌اند که به‌عنوان پدر علم هندسه فراکتال شناخته می‌شود (فراکتال‌ها، ساختارهای پیچیده و شبیه به خود هستند). یک باگ در سیستم‌عامل که به زمان‌بندی وابسته است، مثالی از این نوع باگ‌ها است.

 

Schroedinbug

گاهی‌اوقات به سورس‌کد نگاه می‌اندازید و متوجه می‌شوید که باگ یا مشکلی وجود دارد که در مرحلهٔ اول اصلاً نباید اجازهٔ اجرا شدن برنامه را بدهد؛ وقتی می‌خواهید همین کد را اجرا کنید، باگ موردنظر بی‌درنگ ظاهر می‌شود و نرم‌افزار متوقف می‌شود. هرچند این مورد کمی غیرمعمول به‌نظر می‌رسد، اما چنین باگ‌هایی گاهی‌اوقات رخ می‌دهند و با نام  Schroedinbug شناخته می‌شوند (معمولاً این نوع باگ‌ها از مراحل اولیهٔ تست‌های کیفیت نرم‌افزار رد می‌شوند و خود را نشان نمی‌دهند).

باگ‌های نوع Schroedinbug، نام خود را از دانشمند معروف آقای Erwin Schrödinger گرفته‌اند که ایدهٔ «آزمایش تئوری گربه» را ارائه کرد؛ در فیزیک کوانتوم، ذره‌های کوانتوم مانند اتم‌ها، می‌توانند در ۲ حالت یا بیشتر وجود داشته باشند ولی شرودینگر پیشنهاد کرد که در اشیاء کلاسیکتری مانند گربه که از اتم‌های بسیاری تشکیل شده، وجود داشتن در ۲ حالت، غیرممکن است. وی یک سناریو را پیشنهاد می‌کند که در آن یک گربه در داخل جعبه‌ای در بسته، همراه با شیشه‌ای با محتوای سم (که به یک اتم رادیواکتیو متصل است) قرار دارد.

اگر نیمه‌عمر اتم تمام شود، شیشه شکسته می‌شود و سم به بیرون نشت می‌کند و باعث مرگ گربه می‌شود؛ ولی درِ جعبه بسته است و بنابراین نمی‌توان گفت گربه زنده است یا مرده. از این‌رو، تا زمانی‌که درِ جعبه باز شود، گربه می‌تواند در ۲ حالت قرار داشته باشد: زنده یا مرده. در فیزیک کوانتوم، به این مورد اصطلاحاً Superposition State می‌گویند، به شکلی که گربه هم زنده است و هم مرده!

برگردیم به بحث باگ‌ها؛ صرفاً با مشاهدهٔ مشکل در کد، شما دست به ایجاد یکسری تغییرات می‌زنید که در این صورت یا نرم‌افزار اجرا می‌شود و یا کار نمی‌کند. بنابراین این نوع از باگ‌ها با عنوان Schroedinbug شناخته می‌شوند.

انواع باگ‌های دیگری هم وجود دارند که در قالب این ۴ دسته قرار نمی‌گیرند که از آن جمله می‌توان به باگ‌های به‌اصطلاح Aging-Related اشاره کرد که فقط زمانی رخ می‌دهند که نرم‌افزار برای مدت طولانی کار کند! در پایان هم ممکن است این سؤال برای شما پیش آمده باشد که اصلاً اصطلاح Bug (به‌معنی حشره) از چه زمانی در صنعت توسعهٔ نرم‌افزار باب شد؛ برای یافتن پاسخ به این سؤال، توصیه می‌کنیم به مقالهٔ آشنایى با دریابان گریس مارى هوپر، کسی که برای اولین بار اصطلاح Bug را باب کرد! مراجعه نمایید.

شما چه فکر می‌کنید، آیا باگ‌هایی که تاکنون با آن‌ها برخورد داشته‌اید در این دسته‌بندی قرار می‌گیرند؟ تجربهٔ خود در برخورد با باگ‌های عجیبی که ساعت‌ها شما را درگیر کرده است را می‌توانید در بخش نظرات با ما و سایر کاربران فراتک درمیان بگذارید.

نگاهی علمی به انوع باگ‌ها در برنامه‌نویسی

 

 

توصیه‌هایی برای فراگیری راحت‌تر برنامه‌نویسی

توصیه‌هایی برای فراگیری راحت‌تر برنامه‌نویسی

توصیه‌هایی برای فراگیری راحت‌تر برنامه‌نویسی

 

به نمونه کدها توجه کنید

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

این کار در ابتدا سخت و ناامیدکننده است چراکه در اکثر مواقع حدسی که می زنید اشتباه است حتی گاهی یک درصد هم به برنامهٔ اصلی نزدیک نیست ولی ناامید نشوید چون پس از چند بار که این کار را انجام دادید، دستوراتی که استفاده شده‌اند در ذهنتان باقی مانده و به‌راحتی می‌توانید عملکرد برنامه را تشخیص بدهید و حتی کد را با چند تغییر ساده به یک برنامهٔ کاملاٌ متفاوت تبدیل کنید. پس فراموش نکنید یادگیری و بررسی کدها کمک بسیار بزرگی به فرایند یادگیری شما خواهد کرد.

توصیه‌هایی برای فراگیری راحت‌تر برنامه‌نویسی

فقط نمونه کدها را نخوانید، بلکه آن‌ها را اجرا کنید

هنگامی که بررسی کدها را انجام می دهید، تنها راه‌حل آزمایش حدسی که زدید این است که آن‌ها را اجرا کنید؛ برای این کار کافی است کامپایلر مربوط به زبانی که با آن کدها نوشته شده‌اند را داشته باشید تا از طریق آن برنامهٔ نوشته‌شده را مشاهده کنید، ولی یک نکتهٔ مهم وجود دارد و آن‌هم این است که از کپی/پیست کردن کدها داخل کامپایلر جداً خودداری کنید و حتماً کدها را خودتان تایپ کنید چراکه این کار فواید بسیار زیادی دارد.

اولین فایده‌اش این است که باعث آشنایی شما با دستورات آن زبان خاص می‌شود و دومین و مهم‌ترین فایده‌اش این است که با نحوهٔ نگارش کدها در آن زبان آشنا می‌شوید؛ مثلاً بعد از تایپ کدها به‌صورت کامل، متوجه خواهید شد که در پایان هر خط دستور باید حتماً ; را تایپ کنید (موارد خیلی زیادی مشاهده شده است که برنامه‌نویسان مبتدی هنگام اجرای برنامه، ده‌ها مورد و حتی بیشتر از آن تعداد ارور داشتند که تمامی آن‌ها به علت نبود “;” بوده است).

بعد از اجرای نمونه کدها سعی کنید آن‌ها را تغییر بدهید و تأثیر تغییرات را مشاهده کنید؛ انجام این تغییرات تجربه‌های خیلی خوبی برای شما در بر دارد و تأثیر تغییرات را می‌توان در همان لحظه مشاهده کرد. مهم‌تر این‌که آسان‌ترین راه برای یادگیری ویژگی‌های یک زبان جدید این است که برخی کدها را آزمایش کرده و تغییر دهید.

توصیه‌هایی برای فراگیری راحت‌تر برنامه‌نویسی

شخصاً شروع به کدنویسی کنید

وقتی یک دستور را آموختید، شروع به نوشتن نمونه برنامه‌هایی شخصی کنید و دستور موردنظر را در آن به‌کار ببرید؛ گاهی پیدا کردن یک ایده برای نوشتن برنامه سخت است اما مجبور نیستید ایده‌های جدید و تازه‌ای را به‌کار بگیرید و می‌توانید مثال‌های کتاب یا دوره‌ای که درحال مطالعه کردنش هستید را انجام دهید. تلاش کنید این کار را بدون نگاه کردن به کدها انجام دهید و یا این‌که اگر به یک پروژهٔ بزرگ -مثلاً یک بازی- فکر می‌کنید می‌توانید با ساختن بخش کوچکی از آن شروع کنید که برای خودتان یک تمرین است و بعداً هم می‌توانید از آن بخش در پروژهٔ خود استفاده کنید.

 

یاد بگیرید از دیباگر استفاده کنید

Debugger‌ها یکی از مهمترین قسمت‌های یک IDE هستند (ابزاری که این امکان را برای برنامه‌نویس فراهم می‌کند تا خط‌به‌خط در میان برنامه جا‌به‌جا شده و حتی این امکان را فراهم می‌کند تا تغییرات مقادیر متغیرها را در خلال اجرای برنامه مشاهده کنید). Debugger ها این امکان را فراهم می‌کنند که بسیاری از ارورها را بدون صرف وقت زیاد تشخیص داده و برطرف کرد. پس سعی کنید استفاده از آن‌ها را یاد بگیرید و وقت خودتان را در پیدا کردن مشکلات برنامه هدر ندهید!

توصیه‌هایی برای فراگیری راحت‌تر برنامه‌نویسی

دنبال منابع بیشتری باشید

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

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

به‌طور‌کلی، سعی کنید در یادگیری مشتاق باشید و به یاد داشته باشید که چیزی لذت‌بخش‌تر از نوشتن یک برنامهٔ کاربردی نیست. از این کار لذت ببرید و اصولی حرکت کنید، حتماً هم موفق خواهید شد.

 

توصیه‌هایی برای فراگیری راحت‌تر برنامه‌نویسی

سؤال‌هایی که قبل از شروع کد نویسی باید از خود پرسید.

سؤال‌هایی که قبل از شروع کد نویسی باید از خود پرسید.

سؤال‌هایی که قبل از شروع کد نویسی باید از خود پرسید.

 

 

 

هسته‌ی اصلی برنامه‌نویسی فرآیند حل مسأله است. این فرآیند ابعاد زیادی دارد اما عامل اصلی موفقیت هر برنامه‌نویس، انگیزه‌ و محرک ذاتی و درونی او برای خلق مسئله و برطرف کردن خطا است.

می‌گویند یک برنامه‌نویس معمولا ۱۰ درصد از زمان خود را صرف نوشتن باگ و ۹۰ درصد را صرف اشکال‌زدایی و برطرف کردن باگ‌ها می‌کند و هر شخصی که کدنویسی را به شکل جدی تجربه کرده باشد می‌تواند با این ذهنیت ارتباط برقرار کند. پس برنامه‌نویسی در واقع هنر اشکال‌زدایی است.

 

کدنویسی

سؤال‌هایی که قبل از شروع کد نویسی باید از خود پرسید.

 

هر کسی می‌تواند دستورالعمل‌های یک زبان برنامه‌نویسی را یاد بگیرد و با جزئیات دقیق محیط توسعه‌ی یکپارچه (IDE) آشنا شود. هر شخصی می‌تواند به ایده‌ی یک اپلیکیشن جدید فکر کند؛ اما در مواجهه با خطا چه واکنشی نشان می‌دهد؟ در این مرحله به یک شخصیت خاص و ویژه نیاز است.

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

می‌توان از یک زاویه‌ی دیگر هم به برنامه‌نویسی نگاه کرد: انگیزه‌های بیرونی در مقابل انگیزه‌های درونی. آیا به خاطر پاداش به دنبال برنامه‌نویسی هستید؟ یا به خاطر علاقه این کار را انجام می‌دهید؟ اگر علاقه‌ای به برنامه‌نویسی نداشته باشید مسیر درستی را انتخاب نکرده‌اید.

 

آیا به دنبال خلق کردن هستید؟
اغلب تازه‌کارهای برنامه‌نویسی همان سال اول این کار را رها می‌کنند. با اینکه دلایل زیادی برای تسلیم شدن وجود دارد اما شاید مهم‌ترین دلیل گیج شدن در منحنی یادگیری و تضعیف روحیه باشد.

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

به طور خلاصه، هرگز نمی‌توانید برنامه‌نویسی را به صورت کامل یاد بگیرید بنابراین باید هدف دقیق خود را مشخص کنید. شاید یک برنامه‌نویسی گرافیک سه‌بعدی در ساخت وب‌سایت هیچ تجربه‌ای نداشته باشد یا بهترین کدنویس هوش مصنوعی هیچ ذهنیتی در مورد ساخت اپلیکیشن‌های موبایل نداشته باشد.

 

خلق کردن

سؤال‌هایی که قبل از شروع کد نویسی باید از خود پرسید.

 

قبل از شروع به یادگیری کدنویسی، در مورد هدف خود به صورت دقیق فکر کنید. اگر به دنبال ساخت وب‌سایت هستید، انرژی خود را متمرکز بر یادگیری جاوا اسکریپت کنید. اگر می‌خواهید اپلیکیشن‌های OS X بسازید، بهتر است سوئیفت را یاد بگیرید. اگر می‌خواهید بازی‌سازی کنید #C و یونیتی را بیاموزید.

شاید یک مجموعه مفاهیم که برای یک شخص مهم تلقی می‌شوند برای شخص دیگر بی‌اهمیت باشند. برای مثال معماری MVC برای برنامه‌نویسی وب ضروری است درحالی‌که الگوی مؤلفه‌، موجودیت برای توسعه‌دهندگان بازی مفید است.

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

 

سرگرمی یا شغل؟
آیا می‌خواهید پروژه‌های کدنویسی را صرفا برای پر کردن وقت آزاد خود انجام دهید یا قصد دارید برای کار تمام وقت وارد صنعت برنامه‌نویسی شوید. پاسخ به این سؤال تأثیر زیادی بر موضوع مطالعه، روش مطالعه یا مسیر کلی پیشرفت شما خواهد داشت.

شاید هدف شما ساخت یک بازی ویدئویی باشد. شغل خود به عنوان یک حسابدار را دوست دارید و قصد ترک آن را ندارید و می‌خواهید در روزهای آخر هفته روی یک پروژه‌ی برنامه‌نویسی هم کار کنید. در این صورت می‌توانید هر زبان یا موتور مورد علاقه‌ی خود را یاد بگیرد. تا وقتی که هدف شما صرفا سرگرمی باشد چه تفاوتی خواهد داشت؟

 

سرگرمی یا شغل

سؤال‌هایی که قبل از شروع کد نویسی باید از خود پرسید.

 

از سوی دیگر اگر می‌خواهید به عنوان یک شغل به توسعه‌ی بازی‌های ویدئویی بپردازید باید به طور جدی به یادگیری یک زبان یا موتور مثل C++، Unreal Engine 4 یا جاوا و LibGDX بپردازید. اگر هم به دنبال توسعه‌ی بازی با استفاده از Ruby و Gosu هستید نمی‌توانید به صورت جدی بازی‌سازی را دنبال کنید.

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

 

تا چه اندازه به دنبال آن هستید؟
برنامه‌نویسی کار دشواری است. صرفا یادگیری کدنویسی (به این دلیل که از هر فرآیند دیگری دشوارتر است) یا اشکال‌زدایی (به این دلیل که اغلب خطاها تقریبا مستقیم هستند) کار سختی نیست، بلکه کل فرآیند برنامه‌نویسی نیاز به اراده و استقامت بالایی دارد.

هر پروژه‌ی کدنویسی ترکیبی از برنامه‌نویسی و اشکال‌زدایی است؛ دو فرآیندی که از نظر ذهنی به انرژی زیادی نیاز دارند. هر پروژه، ماراتونی از حل مسئله است و با پیچیده‌تر شدن مسائل خم شدن زیر بار آن‌ها ساده‌تر خواهد شد. حتی اگر بگویند یادگیری برنامه‌نویسی زیاد هم سخت نیست، برای رسیدن به قله به اطلاعات زیادی نیاز خواهید داشت. برنامه‌نویسی مثل یک تردمیل بی‌پایان از مفاهیم، الگوها، زبان‌ها و ابزار جدید است. بسیار سرگرم‌کننده و جذاب و درعین‌حال بسیار هم خسته‌کننده است.

 

هدف گذاری

سؤال‌هایی که قبل از شروع کد نویسی باید از خود پرسید.

 

اما سخت‌ترین بخش کار، این است که همیشه احساس می‌کنید به‌اندازه‌ی کافی خوب عمل نمی‌کنید. حتی پس از هزاران ساعت تجربه و تمرین هنوز هم ممکن است احساس کنید چیزی نمی‌دانید. مربیان و همکار‌ها می‌توانند در شرایط سخت، به شما کمک کنند اما نیاز به اراده‌ی آهنین دارید.

به همین دلیل پشتکار، ویژگی اصلی بهترین برنامه‌نویس‌ها است. صرف‌نظر از استرس بالای برنامه‌نویسی باید سعی کنید در مسیر خود مصمم باشید. برای یادگیری هر زبان جدید یا روبه‌رو شدن با خطاها یا اشکال‌های متعدد و هر پروژه‌ای که سختی‌های منحصربفردی داشته باشد، باید عزم خود را جزم کنید.

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

بسته به پاسخ‌هایی که به این سؤال‌ها دادید می‌توانید تشخیص دهید برنامه‌نویسی برایتان مناسب است یا دقیقا خلاف انتظارات و ذهنیت شماست. معمولا اغلب افراد برای برنامه‌نویسی ساخته نشده‌اند. اگر به این نتیجه رسیدید که برای این کار ساخته نشدید می‌توانید آن دسته از مشاغل فناوری را انتخاب کنید که نیازی به کد نویسی ندارند.

سؤال‌هایی که قبل از شروع کد نویسی باید از خود پرسید.

تاثیرات واقعی طراحی نامناسب یک سایت بر روی کسب‌وکارها

تاثیرات واقعی طراحی نامناسب یک سایت بر روی کسب‌وکارها

تاثیرات واقعی طراحی نامناسب یک سایت بر روی کسب‌وکارها

 

 

 

قدم اول: چرا قطع ارتباط صورت می‌گیرد؟
بسیاری از کسب‌وکارها با اهمیت و ارزش طراحی یک سایت آشنا هستندبخ و با انتخاب یک شرکت نا مناسب جهت برون سپاری پروژه خود معمولا هزینه های زیادی را از دست می دهند. معمولا این گونه کسب و کار ها با این نوع مشکلات رو به رو هستند:

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

تاثیرات واقعی طراحی نامناسب یک سایت بر روی کسب‌وکارها

محدودیت بودجه و سرمایه: در کسب‌وکارهای کوچک کنار گذاشتن هزینه‌های اضافی برای مصرف آن در بخش طراحی وب سایت بسیار خوب و یک گزینه موثر است.

عدم آگاهی صاحبان کسب‌وکار: بسیاری از مدیران کسب‌وکارهای مختلف از اهمیت یک طراحی باکیفیت و قدرتمند آگاه نیستند! به همین دلیل آنها شانس حضور فعال‌تر در میان رقبای خود را از دست می‌دهند؛ در واقع داشتن یک سایت باکیفیت همانند داشتن یک امتیاز برای رقابت با رقیبان آن کسب‌وکار و سبقت گرفتن از آنها است.

 

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

ابهام صفحه‌ اول وب سایت
هنگامی که کاربر شما وارد سایت می‌شود، در مرحله اول با صفحه اصلی سایت رو به رو می شود که توجه کاربر را جذب می‌کند! یک سایت حرفه‌ای و قدرتمند از برخی موارد مختصر و ارزشمند نظیر تصاویر جذاب، تماس با کارشناسان، توضیحات کوتاه درباره کسب‌وکار و… تشکیل شده است. در واقع صفحه ‌اصلی سایت برای ارائه اطلاعات ارزشمند و کوتاه درباره کسب‌وکار به کاربر طراحی می‌شود و طراحی بصری آن اهمیت بسیار زیادی دارد. سایت‌هایی که صفحه اول شلوغی دارند نه تنها نمی‌توانند دید بصری کاربر را به خود جلب کنند، بلکه تجزیه‌وتحلیل آن توسط چشم و مغز انسان مشکل‌تر است! از طرفی چنین سایت‌هایی هیچ‌گاه به اندازه یک سایت ساده و کاربردی قادر به جلب اعتماد کاربران نخواهند بود و با مشکل مواجه می‌شوند.

تاثیرات واقعی طراحی نامناسب یک سایت بر روی کسب‌وکارها

سایت‌های شلوغ، قوانین ارزشمند وجود فضای سفید در صفحات سایت را نقض می‌کنند، وجود چنین صفحاتی برای حفظ توجه کاربران بسیار اهمیت دارد. مغز انسان به سادگی و نظم اشتیاق زیادی نشان می‌دهد و محتوای شلوغ و بیش‌ از حد در یک صفحه از سایت می‌تواند کاربران را از سایت شما دور کند.

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

اهمیت محتوای سایت را جدی بگیریم.

تاثیرات واقعی طراحی نامناسب یک سایت بر روی کسب‌وکارها

یک سایت شرکتی بخش وبلاگ ندارد یا بخش وبلاگ این سایت فعال نیست! اگر بخش وبلاگ سایت خود را هر چندماه یک‌بار بروزرسانی می‌کنید، به این معنی است که به اندازه کافی برای سایت خود ارزش قائل نیستید! هدف از بخش وبلاگ یک سایت شرکتی این است که چندبار در هفته آن را به‌روزرسانی کنید. همین مسئله سبب می‌شود تا شانس حضور در رتبه‌های اول گوگل و شناخته‌شدن توسط کاربران را داشته باشید و در حوزه فعالیتی و صنعتی خود بتوانید کاملا فعال باشید.

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

محتوای خود را به درستی مدیریت نمی‌کنید! بسیاری از تولیدکنندگان محتوا و شرکت‌ها در بخش وبلاگ خود برای افزایش رتبه سایت خود در موتورهای جستجو به دنبال کلمات کلیدی مهم‌ می‌گردند تا با لینک‌دادن به آن بتوانند رتبه خود را افزایش دهند؛ لینک‌دادن به کلمات کلیدی بسیار مهم است و می‌تواند سبب افزایش محبوبیت سایت شما در موتورهای جستجو شود اما شرط آن صحیح بودن لینک‌دهی است! با گذشت زمان اشتباهات شما نیز به مرور کاهش پیدا می‌کند و به یک سایت خوب دست خواهید یافت.

تاثیرات واقعی طراحی نامناسب یک سایت بر روی کسب‌وکارها

پاسخگوی انتظارات و نیازهای کاربران نیستید! کاربران هنگامی که از سایت شما بازدید می‌کنند، انتظاراتی دارند که مهم‌ترین آنها کاربردپذیری سایت است. یک‌پارچه‌ بودن یک سایت از دید کاربران بسیار مهم است و یک‌پارچگی سایت به این معنا است که کاربران به راحتی بتوانند به تمامی بخش‌های سایت شما دسترسی پیدا کرده و تمامی اطلاعات موردنیاز خود را آنالیز کنند. Hubspot به تازگی یک نظرسنجی ایجاد کرده است و از کاربران خواسته تا درباره مهم‌ترین مشخصه یک سایت نظر دهند؛ بیش از ۷۵درصد کاربران، سهولت استفاده از یک سایت را انتخاب کرده‌اند.

سایت‌های بهتر، برای کیفیت هزینه می‌کنند! یکی از مهم‌ترین مسائلی که کسب‌وکارهای موفق به آن مورد توجه قرار می گیرد، داشتن یک سایت باکیفیت است؛ در واقع کسب‌وکارهای بزرگ برای داشتن یک سایت باکیفیت هزینه می‌کنند تا بتوانند درآمد بیشتری را کسب کنند. سایت‌های بی‌کیفیت کمتر قابل استفاده هستند و به مرور زمان مشتریان خود را از دست می‌دهند! برای آنکه به میزان رضایت کاربران و برآورده کردن انتظارات آنها پی ببرید، از کاربران تازه‌کار و البته بالقوه بخواهید تا بازخوردهای خود را برای شما ارسال کنند.

تاثیرات واقعی طراحی نامناسب یک سایت بر روی کسب‌وکارها

استفاده بیش از حد از عناصر انیمیشنی در سایت! هنگامی که از انیمیشن‌ها در سایت خود به اندازه کافی استفاده می‌کنید، آنها می‌توانند پیگیر یک هدف ارزشمند باشند. از طرف دیگر استفاده بیش از حد و غیرمنطقی از عناصر فلش و انیمیشنی می‌تواند سبب کند شدن سایت شما شوند و دلیل آن حجم بالای چنین فایل‌هایی و فراخوانی آنها در سایت است. بر اساس آمار و بررسی‌های صورت‌ گرفته، حدود ۴۰ درصد از افراد هنگامی که بارگذاری تصاویر سایت بیشتر از حد متعادل طول بکشد آن سایت را ترک خواهند کرد.

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

 

چگونه یک سایت بد بر روی کسب‌وکار شما تاثیر می‌گذارد؟

تاثیر سایت بد بر روی کسب و کار

تاثیرات واقعی طراحی نامناسب یک سایت بر روی کسب‌وکارها

بررسی تاثیرات منفی عوامل مختلف در کسب‌وکار به صورت دقیق امکان‌پذیر نیست و نمی‌توان گفت هر عامل سبب می‌شود تا چقدر از درآمد سایت توسط کاربران ناراضی از دست برود! در واقع اندازه‌گیری میزان از دست رفتن درآمد توسط کاربران ناراضی به صورت دقیق امکان‌پذیر نیست اما برخی از تاثیرات منفی آن عبارتند از:

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

تاثیرات واقعی طراحی نامناسب یک سایت بر روی کسب‌وکارها

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

بروزرسانی محتوای سایت: یکی از مهم‌ترین بخش‌های هر سایت، محتوایی است که در آن قرار می‌گیرد؛ سعی کنید به صورت منظم محتوای سایت خود را بروزرسانی کنید و در میان محتوای خود، به منابع معتبر و مرتبط با صنعت کسب‌وکار خود لینک‌هایی را ارجاع بدهید! ارجاع لینک‌ها در صورتی که به درستی انجام شود، می‌تواند سبب افزایش رتبه سایت شما نیز شود.

تاثیرات واقعی طراحی نامناسب یک سایت بر روی کسب‌وکارها

طراحی تمیز و کاربرپسند سایت: طراحی کاربرپسند سایت به معنای این است که کاربران در سایت شما راحت باشند و به راحتی بتوانند به بخش‌های موردنظر و مختلف سایت دسترسی پیدا کنند! همچنین وجود عناصر بصری نظیر فرم‌های زیبا، تصاویر و ویدئوها در جلب نظر مشتریان بسیار موثر است.

سازگاری سایت با دستگاه‌های مختلف: سازگاری سایت با انواع دستگاه های هوشمند و طراحی وب سایت واکنشگرا از اهمیت زیادی برخوردار است همچنین یکی از فاکتورهای سئو را شامل می‌شود؛ اما موردی که افراد کمتری به آن توجه می‌کنند، سازگاری سایت با مرورگرهای مختلف است! بسیاری از کاربران با مرورگری وارد سایت شما شوند که سایت خود را با آن بررسی نکرده‌اید و نمایش آن مشکل بوجود آمده است.

سریع و راحت بودن سایت: کاربران باید بتوانند به تمامی بخش‌های سایت به راحتی و در کمترین زمان ممکن دسترسی داشته باشند؛ این مورد نیازمند طراحی یک سایت راحت و سریع است تا کاربران از سایت رضایت داشته باشند. همچنین داشتن یک سایت سریع که در کمترین زمان ممکن بارگذاری شود، نزد کاربران از اهمیت بسیار بالایی برخوردار است.

سادگی تجربه کاربری: تجربه کاربری سایت شما باید طراحی ساده و مناسبی داشته و از تجسم بصری کاربر بهره گرفته باشد! وجود فضاهای سفید در میان سایت و درج عکس‌های منطقی و زیبا حاصل از یک عکاسی حرفه‌ای کمک زیادی به داشتن تجربه کاربری استاندارد و حرفه‌ای می‌کنند.

اهمیت دادن به بخش‌های مهم سایت: یکی از مسائلی که مدیران سایت‌ها باید به آن توجه کافی داشته باشند، اهمیت دادن به بخش‌های مهم سایت است. شما می‌توانید Call to actionهای سایت خود را برجسته‌تر کنید و در دید کاربران قرار دهید تا به آنها کمک کنید تا به راحتی به بخشی از سایت که می‌خواهند بروند.

تاثیرات واقعی طراحی نامناسب یک سایت بر روی کسب‌وکارها

نتیجه‌گیری

با وجود اهمیت یک سایت برای کسب‌وکارها و تاثیر آن بر روی فروش، هنوز هم کسب‌وکارهای بزرگی هستند که به آن اهمیت نمی‌دهند. چنین شرکت‌هایی در تلاش هستند تا هزینه‌های داشتن یک سایت و وب‌سرویس را توجیه کنند! بسیاری از مدیران کسب‌وکارها مدت زیادی از زمان خود را بدون هدف تلف می‌کنند؛ چنین افرادی فرصت کافی برای کار بر روی سایت مربوط به کسب‌وکار خود را دارند و به راحتی می‌تواند رونق خوبی به کسب‌وکار خود دهند! در ابتدای مسیر ممکن است مشکلات زیادی به سراغ شما بیایند اما با رفع این مشکلات به مرور زمان به راحتی می‌توانید سایت و در نهایت کسب‌وکار خود را گسترش دهید. بسیاری از کسب‌وکارها با استفاده از سایت توانسته‌اند کسب‌وکار خود را متحول سازند و کسب‌وکار آنها از وضعیت متوسط به وضعیت بسیار عالی تبدیل شود.

تاثیرات واقعی طراحی نامناسب یک سایت بر روی کسب‌وکارها

١٠ قانون که برای طراحی Landing Page باید مدنظر داشته باشید..!

١٠ قانون که برای طراحی Landing Page باید مدنظر داشته باشید..!

١٠ قانون که برای طراحی Landing Page باید مدنظر داشته باشید..!

 

 

 

۱– روی یک هدف خاص متمرکز شوید.

باید یک هدف ویژه داشته باشد: کارهایی که تمایل دارید بازدیدکنندگان انجام دهند. برای ایجاد Lead Generation، یک فرم نظرخواهی در صفحه قرار دهید.

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

 

در طراحی سایت باید یک هدف مشخص داشته باشید.

 

۲– پیام­‌های خود را با اولویت‌­بندی در بالای صفحه ذکر کنید.
برای فهمیدن چیزی که پیشنهاد شما است و چرا به آن اهمیت می­‌دهید، کاربر را مجبور به اسکرول کردن صفحه نکنید. مهم­ترین پیام­‌های شما بایستی در بالای صفحه قرار بگیرند، تا افرادی که به‌طور اتفاقی وارد صفحه می‌­شوند، آن را از دست ندهند.

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

١٠ قانون که برای طراحی Landing Page باید مدنظر داشته باشید..!

۳– یک عنوان قوی و غیرقابل مقاومت بنویسید.
از عنوان اصلی در Landing Page برای پاسخ دادن به سؤال مهم در کپی‌رایت استفاده نمایید. این سؤالی است که هر شخصی که وارد Landing Page می­‌شود، عنوان می­‌کند: «در اینجا برای من چه چیزی وجود دارد؟» و پاسخ آن باید مختصر و واضح باشد.

شخص بازدیدکننده باید بلافاصله متوجه شود که اطلاعات موجود در صفحه، مشکل او را برطرف خواهد کرد یا خیر؟ و راه‌حلی که در جستجوی آن است را با دنبال کردن شما می‌­یابد یا خیر؟ (مانند ارسال فرم انتخاب شما)

 

 یک عنوان قوی و غیرقابل مقاومت بنویسید.

 

۴– برای مخاطبان هدف خود، مزایای ویژه خود را ارائه دهید.
مصرف‌کنندگان برای برند یا شرکت‌­ها اهمیتی قائل نیستند. آن­ها به دنبال این هستند که چگونه برند شرکت می‌­تواند در بهتر کردن زندگی به آن­‌ها کمک کنند. با توجه به این نکته Landing page شما باید به وضوح مزایای چشم ­اندازهای شما را برجسته کند.

آیا باعث صرفه‌­جویی در زمان و هزینه‌­های آن‌­ها می‌­شود؟ استرس آن­ها را کاهش داده و آرامش ذهنی آن‌­ها را بهبود می‌­دهد؟ برای آن­‌ها مشتری آور یا پول­ساز است؟ اطمینان حاصل کنید که مزایا را بدون آشفتگی ذهنی درک خواهند کرد.

 

برای مخاطبان هدف خود، مزایای ویژه خود را ارائه دهید.

 

۵– ویژگی‌­های مطلوب را توضیح دهید.
مطلوب­‌ترین ویژگی‌­های جذب مشتری شما چیست؟ لیستی از این ویژگی‌­ها را ارائه دهید، مانند فهرستی که راجع به فصل­‌های یک کتاب یا موضوعاتی که در یک سمینار اینترنتی عنوان می­‌شود. مزایا ممکن است به فروش برسند، اما ویژگی­‌ها ثابت می­‌کنند که این مزایا به دست می­‌آیند یا خیر.

١٠ قانون که برای طراحی Landing Page باید مدنظر داشته باشید..!

۶– یک راه ارتباطی مشخص ارائه کرده و آن را تکرار کنید.

می­‌خواهید وقتی کاربران Landing page شما را مشاهده می‌­کنند، چه‌کاری انجام دهند؟ برای Lead Generation، به‌احتمال‌زیاد می خواهید که آن‌­ها فرم و آدرس ایمیل خود را در اختیار شما قرار دهند. راه ارتباطی با شما باید واضح باشد، به این معنی که حداقل در بالا و پائین Landing page خود CTA مناسب قرار دهید.

 

در طراحی وب سایت یک راه ارتباطی مشخص کنید و آن را تکرار کنید

 

۷– تصاویر و فیلم‌­های مربوطه را وارد کنید.
تصاویر و ویدئوها، به Landing page شما رنگ و جذابیت می‌­بخشند، همچنین آن­‌ها می‌­توانند پیام‌­های مهم را به‌صورت تصویری منتقل کنند. نمودارها، آیکون­‌ها، اسلایدها، پوشش کتاب­‌های الکترونیکی و غیره می­‌توانند اطلاعات بیشتری ارائه داده، در جذب کاربران شما کمک کرده و میزان اعتماد آن‌­ها نسبت به شما را افزایش دهند.

 

۸– استفاده از فرمت مناسب برای تمرکز بیشتر کاربر
در Landing Page شما نباید هیچ عاملی باعث حواس‌پرتی کاربر از ارتباط با شما شود. بنابراین نوار منوی بالای وب‌سایت، لینک­‌ها، تصاویر یا متن‌­های غیر مرتبط را از صفحه حذف کنید.

طراحی Landing Page شما باید فضای سفید زیادی داشته و تک ستونه باشد، به این دلیل که از دیده شدن پیام‌­های اصلی شما، اطمینان حاصل شود.

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

 

استفاده از مپفرمت مناسب در طراحی سایت بسیار مهم است.

 

۹– ارائه دلیل اجتماعی
یکی از بهترین راه­‌های ایجاد اعتماد بین کاربران، بیان توصیفات در Landing Page است. این کار که نوعی اثبات اجتماعی است، باعث می­‌شود که حس اعتماد در کاربران شکل بگیرد، و دلیل واضحی برای ارائه آدرس ایمیل خود به شما داشته باشند.

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

 

۱۰– تکمیل فرم‌ها را ساده کنید.
برای افرادی که تمایل به برقراری ارتباط با شما دارند، باید ارسال فرم آسان باشد. برای نرخ تبدیل، تکمیل فرم‌ها را با چند فیلد ضروری، ساده سازی کنید.

به‌سادگی می‌توانید با درخواست شماره موبایل و یا آدرس ایمیل، بهترین نتیجه را به دست آورید، سعی کنید سایر فیلدهای اضافه را کاهش دهید.

١٠ قانون که برای طراحی Landing Page باید مدنظر داشته باشید..!