بخش دسته بندی نشده  شامل تمامی بخش های فعال سایت می باشد

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

وب سایت های اینترنتی را می توان از جهات مختلف طیقه بندی کرد. از جنبه کارکرد کلی سایت می توان سایت ها را به دسته های : وب سایت های اطلاع رسانی ، وب سایت های تجارت الکترونیک ، وب سایت های فروشگاهی ، وب سایت های کاربردی ، وب سایت های تفریحی ، وب سایت های شبکه اجتماعی ، وب سایت های علمی و … دسته بندی نمود ولی سایت ها را می توان از جنبه های فنی نیز طبقه بندی کرد ، مانند سایت های دینامیک ، سایت های استاتیک و … ، همچنین یک سایت اینترنتی را می توان از لحاظ نسل نیز دسته بندی کرد ، مثلا سایت های وب یا وب 1 ، سایت های وب 2 و یا وب سایت های وب 3 ، البته سایت های اینترنتی ، از جوانب دیگری نیز قابل تقسیم بندی هستند ، اما کمتر به این دسته ها شناخته می شوند!

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

. شبکه‌های شخصی PAN

PAN – Personal Area Network

PAN کوچک‌ترین و ابتدایی‌ترین نوع شبکه است. یک PAN انتقال داده ها را در بین دستگاه‌هایی مانند رایانه ها، گوشی های هوشمند و تبلت فراهم می‌کند. که از یک مودم بی‌سیم، یک یا دو رایانه، تلفن، پرینتر، تبلت و… تشکیل شده است.

PAN ها می توانند برای برقراری ارتباط در میان دستگاه های شخصی و یا برای اتصال به شبکه سطح بالاتر و یا اینترنت (یک link uplink) که در آن یک دستگاه اصلی به عنوان دروازه عمل می کند، استفاده شوند.

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

2. شبکه‌های محلی LAN

LAN – Local Area Network

به احتمال خیلی زیاد اسم این نوع از شبکه ها قبلاً به گوشتان خورده است. شبکه های محلی LAN از پرکاربردترین شبکه‌ها هستند، بسیار بر سر زبان‌ها قرار دارند و یکی از اصلی ترین و ساده‌ترین نوع شبکه‌ها را به خود اختصاص می‌دهند. اترنت و Wi-Fi دو تکنولوژی رایج در شبکه های محلی هستند.

این شبکه‌ها دسته‌ای از کامپیوترها و دستگاه‌های با ولتاژ پایین را در فواصل کوتاه به یکدیگر متصل می‌کنند (داخل یک ساختمان یا بین دو یا سه ساختمان در مجاورت هم) تا بتوان به کمک آن‌ها اطلاعات و منابع را به اشتراک گذاشت. مؤسسات معمولاً از این نوع شبکه‌ها استفاده می‌کنند.

 با استفاده از روترها، شبکه های LAN می‌توانند به شبکه های گسترده WAN ها (که در پایین توضیح داده شده‌اند) متصل شوند، که به صورت سریع و امن به انتقال داده بپردازند.

3. شبکه‌ی محلی بی‌سیم WLAN

WLAN – Wireless Local Area Network

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

این شبکه‌ها عملکردی مشابه با شبکه‌های LAN دارند، با این تفاوت که از فناوری شبکه‌ی بی‌سیم مانند WiFi بهره می‌برند. کاربرد این شبکه‌ها معمولاً با کاربرد شبکه‌های محلی یکسان است. با این تفاوت که در این نوع شبکه دستگاه‌ها برای اتصال به شبکه، به کابل های فیزیکی وابسته نیستند.

اکثر WLAN های مدرن بر اساس استانداردهای IEEE 802.11 هستند و تحت نام تجاری Wi-Fi عرضه می‌شوند. به دلیل سهولت و آسانی در نصب و استفاده از آن، شبکه های بی سیم برای استفاده در منزل محبوب هستند.

. شبکه‌ منطقه پردازی CAN

CAN – Campus Area Network

این شبکه‌ها بزرگ‌تر از شبکه‌های LAN است، اما کوچک‌تر از شبکه‌های شهری (MAN که در پایین توضیح داده شده است) هستند. عموماً در دانشگاه‌ها، مدارس یا کسب‌وکارهای کوچک کاربرد دارند.

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

5. شبکه‌های شهری MAN

MAN – Metropolitan Area Network

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

شبکه‌های MAN می‌توانند یک ناحیه‌ی جغرافیایی کامل (عموماً یک شهر یا شهرک و در برخی مواقع محوطه‌ی دانشگاه) را در بر گیرند. مالکیت و نگهداری این شبکه‌ها توسط تنها یک فرد یا یک شرکت (یک انجمن محلی، یک شرکت بزرگ و …) کنترل می‌شود.

6. شبکه‌های گسترده WAN

WAN – Wide Area Network

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

اینترنت اصلی‌ترین نمونه‌ی شبکه‌ی WAN است که تمامی رایانه‌های جهان را به یکدیگر متصل می‌کند. به دلیل دسترسی گسترده، این شبکه عموماً توسط چندین مسئول و یا توسط عموم مردم کنترل می‌شود.

شبکه‌های گسترده - WAN

7. شبکه‌های ذخیره‌سازی SAN

SAN – Storage-Area Network

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

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

8. شبکه‌های سیستمی SAN

SAN – System-Area Network

این واژه تا حدی جدید بوده و طی دو دهه‌ی اخیر رایج شده است، و این نوع شبکه نیز با نام SAN شناخته می‌شود. با استفاده از این واژه می‌توان یک شبکه‌ی نسبتاً محلی را توضیح داد که هدف از طراحی آن ارائه‌ی اتصال پرسرعت در کاربردهای سرور به سرور (محیط‌های خوشه‌ای)، شبکه‌های ذخیره‌سازی (باز هم SAN) و کاربردهای پردازنده به پردازنده است. رایانه‌هایی که بر بستر این شبکه به یکدیگر متصل هستند به صورت یک سیستم واحد و با سرعت بالا عمل می‌کنند.

9. شبکه‌های محلی نوری غیرفعال POLAN

POLAN – Passive Optical Local Area Network

این فناوری را می‌توان به عنوان جایگزینی برای شبکه‌های LAN اترنتی مرسوم و مبتنی بر سوئیچ، داخل سیم‌کشی‌های ساختاریافته مجتمع کرد تا بتوان به نگرانی‌های مربوط به پشتیبانی از پروتکل‌های مرسوم اترنتی و کاربردهای شبکه‌ای مانند (PoE (Power over Ethernet خاتمه داد.

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

10. شبکه‌های خصوصی مؤسسات اقتصادی EPN

EPN – Enterprise Private Network

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

11. شبکه خصوصی مجازی VPN

VPN – Virtual Private Network

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

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

امروزه مهمترین مهارت برای موفقیت در کسب و کار و زندگی داشتن مهارت برنامه نویسی است.امروزه تقریبا کامپیوتر ها در هر صنعتی وارد شده اند پس یادگیری برنامه نویسی و اینکه یک برنامه چگونه کار می کند از اهمیت بالایی برخوردار است.در این مقاله می خواهیم با بهترین زبان های برنامه نویسی برای یادگیری در سال ۲۰۱۹ آشنا شویم.

جامعه برنامه نویسان و توسعه دهندگان روز به روز در حال رشد و پیشرفت است،زبان های برنامه نویسی جدید در حال ظهور هستند که برای دسته های مختلف توسعه دهندگان از برنامه نویسان مبتدی تا حرفه ای و همچنین برای موارد مختلف (برنامه های کاربردی وب، برنامه های کاربردی موبایل، توسعه بازی، سیستم توزیع شده و …) مناسب هستند.

۱.پایتون (Python)

پایتون (Python) در سال‌های اخیر به یکی اصلی‌ترین زبان‌های یادگیری برنامه‌نویسی تبدیل شده، سینتکس ساده و سر راست، دیتا تایپ‌های گسترده و مدرن و دستورات قدرتمند و کتابخانه‌های بسیار گسترده و امکان دیباگ کردن ساده یکی از اصلی‌ترین دلایلی تبدیل روی آوردن به آموزش پایتون بوده است.

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

۲.جاوا (Java)

جاوا یکی از گسترده ترین زبان های برنامه نویسی در جهان میباشد،جاوا یک زبان برنامه نویسی است که توسط James Gosling در Sun Microsystems طراحی شده است. جاوا ابتدا در سال ۱۹۹۵ منتشر شد و از آن زمان به یکی از محبوب ترین زبان های برنامه نویسی تبدیل شده است که حدود ۹ میلیون توسعه دهنده از آن استفاده می کنند.

۳.سی پلاس پلاس (++C)

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

۴.جاوا اسکریپت (JavaScript)

جاوا اسکریپت زبانی است که در صفحات html کاربرد دارد و قابلیتهای بسیاری از قبیل : افزایش کیفیت طراحی صفحات , کنترل صفحات ، کنترل browser بازدید کننده ، ساخت و استفاده cookie ها و بسیاری چیزهای دیگر.JavaScript یک زبان برنامه نویسی اسکریپتی است که کدهای آن بسیار شبیه به زبان C است.

زبان Java Script به حروف بزرگ و کوچک حساس میباشد. زبان JavaScript یک زبان برنامه نویسی “شی گرا” میباشد. از آنجا که JavaScript یک متن ساده میباشد، در نتیجه میتوان از هر ویرایشگر متن کمک گرفت، در سیستم ویندوز اغلب کاربران از برنامه notepad استفاده میکنند.

۵.پی اچ پی (PHP)

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

۶.زبان (Swift)

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

۷.سی شارپ (#C)

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

 

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

HTML چیست؟
ابتدا بگویم HTML مخفف Hyper Text Markup Language و به معنای “زبان نشانه‌گذاری ابرمتن” است. اگر بخواهیم بگیم HTML چه نقشی دارد باید گفت HTML سنگ بنای وب است. یعنی چارچوب یک صفحه وب توسط HTML مشخص می شود. HTML یک زبان رایانه‌ای که برای تدوین قالب و طراحی صفحات وب به کار برده می‌شود.

به دستورالعمل های زبان HTML، برچسب یا ،Tag می گویند که به وسیله آنها محتوای یک صفحه وب نشانه گذاری و نحوه نمایش آن صفحه برای مرورگرها توصیف می شود.

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

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

css مخفف Cascading Style Sheets می باشد که نحوه نمایش عناصر داخل یک صفحه رو مشخص می کند و به طراح کمک میکند که بتوانند به تمام بخش ها و عناصر یک صفحه کنترل داشته باشد.

زبان CSS در کنار HTML ارائه و استفاده می شود این دو زبان معمولا کنار هم به کار میروند. از CSS برای طراحی صفحات استفاده می شود. به عنوان مثال: برای تغییر فونت یا تصویر پس زمینه وب سایت 

با زبان CSS چه کارهایی میتوان انجام داد :

  • مشخص کردن فونت
  • مشخص کردن رنگ پیش زمینه و پس زمینه
  • مشخص کردن فاصله ها تا حاشیه و اجزای صفحه
  • مشخص کردن طول و عرض
  • مشخص کردن عکس پس زمینه
  • ایجاد تغییرات در موقعیت قرارگیری اجزای صفحه
  • مشخص کردن چپ چین و راست چین بودن سایت

 

معرفی شبکه رایانه ای :
یک شبکه رایانه‌ای اجازه به اشتراک گذاری منابع و اطلاعات را میان دستگاه‌های متصل شده به هم، می‌دهد. در دهه ۶۰ میلادی، آژانس پروژه‌های تحقیقاتی پیشرفته (ARPA)، بودجه‌ای را به منظور طراحی شبکه آژانس پروژه‌های تحقیقاتی پیشرفته (ARPANET) برای وزارت دفاع ایالات متحده آمریکا اختصاص داد. این اولین شبکه رایانه‌ای در جهان بود. توسعه شبکه از سال ۱۹۶۹ و براساس طرح‌های توسعه یافته دهه ۶۰ آغاز شد.

هدف شبکه رایانه ای :
شبکه‌های رایانه‌ای را می‌توان برای اهداف مختلف استفاده کرد:

تسهیل ارتباطات: با استفاده از شبکه، افراد می‌توانند به آسانی از طریق رایانامه (E-mail)، پیام‌رسانی فوری، اتاق گفتگو (Chat room)، تلفن، تلفن تصویری و ویدئو کنفرانس، ارتباط برقرار کنند.
اشتراک گذاری سخت‌افزارها: در یک محیط شبکه‌ای، هر کامپیوتر در شبکه می‌تواند به منابع سخت‌افزاری در شبکه دسترسی پیدا کرده و از آن‌ها استفاده کند؛ مانند چاپ یک سند به وسیله چاپگری که در شبکه به اشتراک گذاشته شده‌است.
اشتراک گذاری پرونده‌ها، داده‌ها و اطلاعات: در یک محیط شبکه‌ای، هر کاربر مجاز می‌تواند به داده‌ها و اطلاعاتی که بر روی رایانه‌های دیگر موجود در شبکه، ذخیره شده‌است دسترسی پیدا کند. قابلیت دسترسی به داده‌ها و اطلاعات در دستگاه‌های ذخیره‌سازی اشتراکی، از ویژگی‌های مهم بسیاری از شبکه‌های است.
اشتراک گذاری نرم‌افزارها: کاربرانی که به یک شبکه متصل اند، می‌توانند برنامه‌های کاربردی موجود روی کامپیوترهای راه دور را اجرا کنند.

امنیت شبکه یا Network Security پردازه ای است که طی آن یک شبکه در مقابل انواع مختلف تهدیدات داخلی و خارجی امن می شود.

مراحل ذیل برای ایجاد امنیت پیشنهاد و تایید شده اند:

۱- شناسایی بخشی که باید تحت محافظت قرار گیرد.

۲- تصمیم گیری درباره مواردی که باید در مقابل آنها از بخش مورد نظر محافظت کرد.

۳- تصمیم گیری درباره چگونگی تهدیدات

۴- پیاده سازی امکاناتی که بتوانند از دارایی های شما به شیوه ای محافظت کنند که از نظر هزینه به صرفه باشد. ۵- مرور مجدد و مداوم پردازه و تقویت آن درصورت یاقتن نقطه ضعف کتاب آماده شده شامل مطالب بسیار مفید و مورد نیاز برای مدیرانی است که به امنیت در شبکه خود اهمیت می دهند و همچنین کسانی که در کار شبکه هستند می تواند آموزنده و کاربردی باشد.

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

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

انواع خطا در برنامه نویسی:

  • خطاهای سینتکسی
  • خطاهای سمنتیک
  • خطاهای منطقی

خطاهای سینتکسی:

به نوشتار کدهای یک زبان برنامه نویسی Syntax گفته می شود. گاهی اوقات برنامه نویسان در حین نوشتن برخی دستورات، غلط املایی مرتکب می شوند. مثلاً به جای نوشتن دستور print، می‌نویسند pritn. در برخی زبان‌ها مثل HTML و CSS مرتکب شدن چنین خطاهایی خیلی مشکل ساز نیست اما برخی از دیگر زبان‌ها مثل PHP و Python با خطاهای سنتکسی خیلی مشکل دارند و برنامه هرگز اجرا نخواهد شد.

خطاهای سمنتیک:

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

خطاهای منطقی:

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

تفاوت نسخه Debug و Release در برنامه نویسی:

یک موضوع دیگر که خیلی از کاربران می پرسند تفاوت نسخه Debug و Release در برنامه نویسی هستش و میخواهند بدونند تفاوت این دو چی هست.تفاوت نسخه های دیباک و ریلیس در برنامه نویسی (مثال سی شارپ ویژوال استودیو) این تعریف یک تعریف کلی بوده و برای همه کامپایلر ها صادق است.

اگر دقت کرده باشید در نوار بالای ویژوال استودیو و در جاهای مختلف سایر کامپایر ها (برای مثال این حالت در اندروید استودیو در بخش پایانی و به هنگام منتشر کردن برنامه تعیین میگردد)، یک بخش وجود دارد که تعیین میکند برنامه از نوع دیباگ باشد یا ریلیس که بر اساس نیاز یکی از این دو گزینه انتخاب می شود.

تفاوت Release و Debug :

Debug:

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

Release :

این نسخه ، نسخه بهینه یا به اصطلاح Optimize شده برنامه است که ازعلاوه بر پایین تر بودن حجم از سرعت بالایی هم برخوردار است پس حتما دقت کنید بعد از اتمام پروژه های خود، حتما نسخه Releaseرا به مشتری ارائه دهید.

سعی میکنم به صورت دقیق و کاملا ساده در مورد الگوریتم برنامه نویسی صحبت کنم البته منظور همون الگوریتم است اما بین مردم رایج شده به نام الگوریتم برنامه نویسی، ما هم با همین اسم در مورد آن صحبت میکنیم.

الگوریتم چیست؟

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

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

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

واژه الگوریتم از کجا آماده است؟

الگوریتم نام های دیگری مثل الگوریتمی، خوارزمیک یا خوارزمی دارد. واژه الگوریتم از نام ریاضیدان و ستاره‌شناس و جغرافی‌دان نامی ایرانی، ابوجعفر محمد بن موسی خوارزمی (الخوارزمی)، گرفته شده است.
در قرن ۱۳ میلادی واژه الگوریسموس(algorismus) به معنای (سیستم شمارش عربی (دهدهی)) (یعنی اعداد ۱ تا ۹ به علاوه صفر، و نیز مفهوم اعشار) بود؛ که هنوز هم یکی از معانی واژه الگوریسم(algorism) است. معنای دیگر الگوریسم «حساب کردن با کمک اعداد عربی» است؛ یعنی فن انجام أعمال حسابی پایه، مانند جمع و ضرب، با قرار دادن اعداد در زیر هم و إعمال قواعدی خاص، که جایگزین به کارگیری اعداد رومی و استفاده از چرتکه شد. حتی روش انجام دستی تقسیم و جذر گرفتن (رادیکال) هم الگوریسم نامیده می‌شود. در قرن ۱۹ این کلمه در فرانسوی به algorithme تغییر شکل پیدا کرد، البته معنایش ثابت ماند. طولی نکشید که این کلمه به شکل algorithm وارد زبان انگلیسی شد؛ ولی فقط در اواخر قرن ۱۹ میلادی بود که معنای عام‌تر امروزی‌اش را یافت، و به «هر مجموعه قواعدی برای انجام یک رویه محاسباتی یا روال رایانه‌ای به کار رود» الگوریتم گفته شد.

خصوصیات یک الگوریتم

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

  • ورودی:
    یک الگوریتم باید هیچ یا چندین پارامتر را به عنوان ورودی بپذیرد؛
  • خروجی:
    الگوریتم بایستی حداقل یک کمیت به عنوان خروجی (نتیجه عملیات) تولید کند؛
  • قطعیت:
    دستورهای الگوریتم باید با زبانی دقیق، و بی‌ابهام بیان شوند. هر دستورالعمل نیز باید انجام‌پذیر باشد. دستورهایی نظیر «مقدار ۶ یا ۷ را به x اضافه کنید» یا «حاصل تقسیم پنج بر صفر را محاسبه کنید» مجاز نیستند؛ چرا که در مورد مثال اول، معلوم نیست که بالاخره چه عددی باید انتخاب شود، و در خصوص مثال دوم هم تقسیم بر صفر در ریاضیات تعریف نشده‌است.
  • محدودیت:
    الگوریتم باید دارای شروع و پایان مشخصی باشد، به نحوی که اگر دستورهای آن را دنبال کنیم، برای تمامی حالات، الگوریتم پس از طی مراحل شمارا و متناهی خاتمه یابد. به علاوه، زمان لازم برای خاتمه الگوریتم هم باید به گونه‌ای معقول، کوتاه باشد.

مفهوم الگوریتم

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

نکاتی که باید هنگام نوشتن الگوریتم در نظر داشته باشید:

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