4/1
در قسمت اول از این سری مقالات به سوال "سیسکو DEVNET چیست" پاسخ داده شد و مراحل پیشرفت تکنولوژیهای مورد استفاده در شبکه و اینکه چطور به این نقطه رسیدیم به صورت خلاصه شرح داده شد. در این مقاله که قسمت دوم میباشد؛ توضیحات مقدماتی از APIs، دیتافرمتها و زبان برنامهنویسی پایتون تدوین شده است که این آشنایی مقدماتی، پایهی درک بسیاری از مفاهیم مورد استفاده در دوره آموزشی DEVNET میباشد.
رایگان
این مقاله خلاصهای از نتگپ سیسکو DEVNET– قسمت دوم میباشد.
در قسمت اول از این سری مقالات به سوال "سیسکو DEVNET چیست" پاسخ داده شد و مراحل پیشرفت تکنولوژیهای مورد استفاده در شبکه و اینکه چطور به این نقطه رسیدیم به صورت خلاصه شرح داده شد. در این مقاله که قسمت دوم میباشد؛ توضیحات مقدماتی از APIs، دیتافرمتها و زبان برنامهنویسی پایتون تدوین شده است؛ این آشنایی مقدماتی، پایهی درک بسیاری از مفاهیم مورد استفاده در دوره آموزشی DEVNET میباشد.
در این مقاله مطالب زیر مورد بررسی قرار گرفته است.
درصورتی که با مفهوم سیسکو DEVNET آشنایی ندارید، پیشنهاد میکنیم در گام نخست، مقاله مربوط به "سیسکو DEVNET چیست" را مطالعه کنید.
برنامه سیسکو DEVNET از دامنه وسیعی از تکنولوژیها و محصولات مختلف شرکت سیسکو پشتیبانی میکند؛ برای هر محصول، پلتفرم و یا تکنولوژی در حال توسعه، مجموعهی منحصر به فرد از APIs، ویدیوهای آموزشی و کدهای اشتراکگذاری شده در Github به همراه مستندات راهنما در این سایت فراهم شده است.
در سایت سیسکو DEVNET، مجموعهای از لابراتوارهای منحصربه فرد برای آموزش ماژولها و افزایش مهارت برنامهنویسان طراحی شده است. توسعهدهندگان برنامههای کاربردی، علاقمندان به دانش شبکه، برنامهنویسان و هر شخصی که اطلاعات پایهای از برنامهنویسی و یا شبکه را دارا باشد، میتواند از این برنامه آموزشی و لابراتوارهای مجازی طراحی شده حداکثر استفاده را ببرد.
البته برای مهندسان شبکه که با زیرساخت شبکه آشنایی بیشتری دارند، لابراتوارهای کاربردیتری فراهم شده است اما کدنویسان حرفهای هم این امکان را دارند تا از مستندات APIsهایی که برای تجهیزات و پلتفرمهای سیسکو طراحی شده است استفاده کنند و در لابراتورهایی که فراهم شده، سناریوهای مورد نیاز خود را تست و آزمایش کنند.
اما بخش دیگری از برنامه سیسکو DEVNET که جذابیت بیشتری برای برنامهنویسان دارد، اشتراکگذاری کدها میباشد. بدین ترتیب برنامهنویسانی که براساس ایدههای تیمی خود و یا نیاز مشتریان، کدنویسی مشخصی انجام دادهاند؛ کد خود را برروی سایت Github قرار دادهاند. با استفاده از یکپارچگی بین این دو سایت، امکان اشتراکگذاری این کد برای دیگر متخصصان این حوزه کاری فراهم شده است.
به صورت عمومی مطالب این سایت از سه دسته اصلی تشکیل شده است:
همانطور که در تصویر بالا مشاهده میکنید، در صفحه نخست این سایت دو پایپلاین مجزا طراحی شده است که از این طریق، امکان دسترسی آسانتر به محتوای مورد نیاز برای بازدیدکنندگان فراهم گردیده است.
پایپلاین اولیه مربوط به آشنایی با زیرساختهای موجود سایت جهت آموزش، تست، ارزیابی و نهایتا استفاده از لابراتوار مجازی سایت میباشد:
گام ابتدایی StartNow:
در این بخش سایت، 11 ماژول که عموما وابسته به تکنولوژی و یا محصول میباشد، مشاهده می گردد و در این بخش به راحتی میتوانید به این محتویات آموزشی دسترسی پیدا کنید. لینکهایی که در این بخش از سایت جمعآوری شده است؛ عموما لینکهای مقدماتی مربوط به آشنایی به برنامهنویسی، آشنایی با APIs محصولات سیسکو و آشنایی با چگونگی خودکارسازی و یا محصولات مرتبط میباشد. سپس در ادامه این بخش از سایت به چندین سوال متداول کاربران به صورت کوتاه پاسخ داده شده است.
گام دوم Learning Track:
در این بخش شما به اکثریت Learning Trackهای طراحی شده توسط این سایت، دسترسی خواهید داشت و میتوانید بسته به تکنولوژی مدنظر و یا زمینه فعالیت خود، برنامه آموزشی (Learning Trak) مربوطه را انتخاب نمایید. در هر Learning Track مجموعهای از مستندات و ویدیوهای آموزشی طراحی گردیده و نهایتا لابراتورهای مجازی که در بخش SandBox برای بازدیدکنندگان فراهم شده است.
گام سوم Video Course:
این گام دسترسی کوتاهی به ویدیوهای آموزشی برای بازدیدکننده فراهم کرده است. در این بخش مقدماتیترین برنامه پیشنهادی سیسکو با نام معرفی مقدماتی سیسکوDEVNET در 6 ماژول اصلی ارائه گردیده است؛ هریک از این ماژولها شامل ویدیوهایی که در آن محتوای مد نظر توضیح داده شده است، می باشد. درصورتی که آشنایی مقدماتی با برنامه نویسی نداشته باشید، مطالعه کامل این برنامه سیسکو را به شما پیشنهاد می کنیم که در این برنامه مفاهیم کلیدی مانند زبان برنامهنویسی، APIs، پروتکلها، دیتا فرمتها، دیتا مدلها، SDN، مفاهیم مجازیسازی و Cloud و در نهایت مفهوم NetDevOps به صورت مقدماتی توضیح داده شده است.
گام چهارم Sandbox:
یکی از بخشهای جذاب طراحی شده در این سایت Sandbox میباشد، Sandboxای که توسط سیسکو طراحی شده است کاملا با تصور ما از جعبه شنی کودکان، متفاوت است. این Sandbox که در برنامه سیسکو DEVNET فراهم شده، یک فضای مجازی برای همه علاقهمندان به برنامهنویسی طراحی کرده تا به راحتی کدهای خود را در محیط شبکه، تست و ارزیابی کنند؛ بسته به محصول و تجهیزات سیسکو که انتخاب کنیم؛ برخی از این تجهیزات به صورت مجازی در محیط Sandbox فراهم شده و برخی به صورت حقیقی آماده استفاده است. در ابتدا میبایست در سایت وارد شوید که این امکان با استفاده از اکانت Github ،Google ،Facebook و حتی Cisco ID شما فراهم میشود؛ پس از آن میبایست رزرو لابراتور مد نظر انجام شود و در مرحله نهایی میتوانید به راحتی سناریوهای مدنظر خود را تست و راهاندازی کنید.
گامهای پنجم "Code Exchange" و ششم "Ecosystem Exchange":
هردو امکان جستجو در کدهای تدوین شده و پارتنرها و تیمهایی که در خصوص یک محصول، تکنولوژی و یا راهکار فعالیت میکنند را فراهم مینماید.
پایپلاین دوم با نگرش به تکنولوژی و راهکارها، دستهبندی متفاوتی ارائه داده است و بدین ترتیب امکان دسترسی سریع بازدیدکنندگان به Learning Trackها و مستندات مربوطه را درهریک از این دستههای تکنولوژی فراهم کرده است.
در این بخش از مقاله نگاهی مقدماتی به مفهوم APIs شده است. در مقاله بعدی برنامه سیسکو DEVNET ،APIsها، دستهبندی پروتکلهای آن و نمونههای کاربردی آنها در دنیای شبکه به صورت کامل بررسی میشود اما در این بخش تنها به بررسی اولیه و آشنایی با این مفهوم بسنده شده است.
APIs، ابزاری است که برای ماشینها (برنامههای کاربردی، پلتفرمها و محصولات سختافزاری و نرمافزاری) امکان صحبت با یکدیگر و برقراری راهکار انتقال داده را فراهم میکند. برای درک بهتر این موضوع از یک مثال ساده برای متخصصان شبکه استفاده میکنیم. در این مثال انسان نیاز به ارتباط با تجهیز شبکه را دارا است و برای این منظور CLI طراحی گردیده است که امکان برقراری ارتباط و انتقال داده را بین متخصص شبکه و تجهیز شبکه فراهم مینماید. یکی از نمونههای قدیمی که متخصصان شبکه با آن آشنایی بیشتری دارند، پروتکل SNMP میباشد.
حال مثالی از ارتباط یک تجهیز سختافزاری مثل روتر با یک نرمافزار را بررسی میکنیم. در مثال دوم، تجهیز شبکه نیاز به برقراری ارتباط با نرمافزار مانیتورینگ را دارد. راهکار مورد استفادهی این دو تجهیز برای برقراری ارتباط، پروتکل SNMP میباشد؛ تجهیزات شبکه با استفاده از این پروتکل با نرمافزار مانیتورینگ ارتباط برقرار کرده و داده مد نظر را منتقل مینمایند.
به زبان ساده، APIsها درگاهی هستند که بستر انتقال و چگونگی استفاده از داده از طریق آنها برای ماشینها فراهم میشود. بدین ترتیب ماشینها، برنامههای کاربردی و سرویسها، امکان استفاده از دیتا یکدیگر را خواهند داشت. اما در دنیای برنامهنویسی، APIsها، قالب و استاندارد متفاوتتری از مثالهای اولیه دارند.
در مثال بعدی سعی شده است تا APIs در دنیای برنامهنویسی مورد بررسی قرار گیرد. در این مثال هر دو برنامه دارای دادهها و زیرساختهای خود میباشند؛ برنامه اول نیاز به استفاده از دادههای موجود در برنامه دوم را دارد؛ به همین منظور در مرحله اول پس از انجام بخشهای امنیتی احراز هویت، برنامه اول درخواست خود را برروی بستر شبکه ارسال و برنامه دوم وابسته به سطح دسترسی برنامه اول، پاسخگوی این در خواست میباشد که مثال ساده آن نرمافزار Yelp میباشد. این نرمافزار به مشتریان خود اطلاعات مربوط به دسترسی به رستورانها و دادههای مرتبط با آن را ارائه میدهد. به همین منظور این نرمافزار نیاز به داده "نقشه شهرها" دارد تا برروی مکان جغرافیای موردنظر، داده مناسب و مرتبط به هر کاربر را برای وی ارسال کند؛ آیا نرمافزار Yelp، خود به جمعآوری اطلاعات مربوط به نقشه در سرتاسر دنیا مشغول شده است و نهایتا برنامهنویسی آن را به عهده گرفته است؟ شرکت Yelp برای استفاده از دادههای جغرافیایی از APIs سرویس دهنده دوم که گوگل میباشد، استفاده کرده است و به جای طراحی یک نقشه جدید و تکمیل دادههای مربوط به آن، تنها از درگاه (APIs) تهیه شده توسط گوگل استفاده کرده است.
APIs پروتکلهای مورد استفاده در تجهیزات شبکه، به 4 دسته مختلف تقسیم شده است که در مقاله بعدی برنامه سیسکو DEVNET به صورت کامل مورد بررسی قرار خواهد گرفت.
فرض کنیم یک لیوان پر از اعداد در اختیار ماست، این لیوان برای ما هیچ معنایی پیدا نمیکند ولی زمانیکه این اعداد به صورت مرتب در یک جدول در کنار نام یک کالا قرار گیرند، دارای معنای جدیدی میشود که میتواند نمایشدهنده تعداد این کالا یا قیمت آن باشد. در هر صورت دادهها بدون نظم، معنی خاصی ندارند و قابل استفاده نیستند؛ برای نمایش رابطه بین دادهها و ایجاد این نظم از دیتافرمت استفاده میشود. نمایش رابطهی بین دادهها به منظور مشاهده کاربران به صورت یک چارچوب، ساختار و نظم استاندارد، نیازمند آن است که برای تمامی کاربران معنی یکسانی بدهد. این نظمدهی برای دادهها در ساختارهای مختلف متفاوت است. یک مثال ساده برای متخصصان شبکه، نحوه نمایش دادههای مربوط به یک اینترفیس برروی روتر میباشد که در تصویر زیر قابل مشاهده است.
به عبارت ساده تصویر بالا یک دیتافرمت است که ارتباط داده های مربوط به IP آدرس، وضعیت، نام اینترفیس و موارد دیگر را برای متخصصان شبکه مشخص مینماید.
چگونگی نحوه نمایش دادهها در دنیای برنامهنویسی متفاوت میباشد، در مقالات آتی برنامه سیسکو DEVNET به صورت جزئیتر دیتافرمتها به تصویر کشیده خواهد شد و در اینجا به سه مثال و تصویر هریک بسنده شده است:
زبانهای برنامهنویسی در دو دسته کامپایلرها و مترجمها دستهبندی میشوند، یکی از محبوبترین و قویترین زبانهای برنامهنویسی در دسته کامپایلرها، زبان برنامهنویسی C است، اما پایتون یکی از محبوبترین زبانهای برنامهنویسی کنونی در دسته مترجمها میباشد، این زبان قدرتمند دارای انعطافپذیری بالا و توابع قدرتمند و محیطی بسیار ساده است.
با توجه به گستردگی مطالب مرتبط با دنیای برنامهنویسی، بسیاری از متخصصان و همکاران در گذشته به صورت کامل مقالات و محتویات مربوط به این زبان برنامهنویسی را منتشر کردهاند، به همین منظور هدف ما در این مقاله معرفی منابع خوب و بازنشر آنها و اشارهای مقدماتی به ساختارهای پایهای زبان برنامهنویسی پایتون میباشد. مطالعهی این بخش از مقاله تنها به دوستانی پیشنهاد میگردد که هیچ آشنایی با زبان برنامهنویسی پایتون ندارند و برای اولین گام نیاز به آشنایی مقدماتی با این زبان برای شروع مطالعه خود دارند.
در مرحله نخست برخی از سایتهای مناسب برای آموزش و یادگیری زبان برنامهنویسی پایتون را معرفی میکنیم.
اولین منبع معتبر همان سایت اصلی زبان برنامه نویسی پایتون میباشد که دریافت فایل پایتون برروی انواع سیستم عاملها مانند ویندوز، مک، لینکوس و .. از این سایت امکانپذیر میباشد. همچنین این سایت تمامی مستندات مربوط به توابع، مثالها و فایلهای مورد نیاز مانند کتابخانهها را دارا میباشد.
سایت دوم، یکی از محبوبترین سایتها برای برنامهنویسان میباشد که این سایت به نام W3chools قابل سرچ و بازدید است و یکی از کاملترین منابع برنامهنویسی میباشد. این سایت نه تنها دارای بخش آموزش پایتون میباشد بلکه از تمامی زبانهای محبوب برروی وب پشتیبانی میکند و به صورت کامل از بخشهای مختلف هر یک از زبانهای برنامهنویسی نمونه کد و توضیحات ساده ارائه داده است.
سایت سوم PYPI میباشد که این سایت مخصوص مدیریت بستهها و کتابخانههای شخصی زبان پایتون است. برای نصب کتابخانههای مختلف و یا استفاده از پکیجهای متفاوت در زبان برنامهنویسی پایتون، درخواست به این سایت ارسال میشود و ماژول در کتابخانه شخصی شما نصب میگردد. به کسانی که تازه با پایتون آشنایی پیداکردهاند، توصیه میکنیم حتما این سایت را بازدید کنند تا با قدرت فوقالعاده کتابخانههای این زبان برنامهنویسی آشنا گردند.
سایت چهارم، سایت گیتهاب (Github) است که ابزار اصلی برنامهنویسان میباشد. در برنامهنویسی، کنترل نسخههای کد یکی از کلیدیترین فعالیتها میباشد و سایت گیتهاب یکی از محبوبترین و پرکاربردترین این سایتها میباشد. البته دلیل پیشنهاد ما تنها به علت کنترل کردن نسخهی کدها نمیباشد بلکه در این سایت کدهای بسیار زیاد پایتون و نمونه برنامههای محبوبی وجود دارد که به راحتی میتوان به اطلاعات آن دسترسی پیدا کرد.
سایت پنجم، سایت سکان آکادمی است که برای دوستانی که علاقهمند به سایت های آموزشی فارسی هستند، این سایت یکی از کاملترین سایتها میباشد. سایت سکان آکادمی نه تنها دارای بخش آموزش پایتون میباشد بلکه زبانهای برنامهنویسی دیگری نیز در این سایت معرفی شده است. سایتهای آموزشی زیادی به زبان فارسی وجود دارد به همین منظور ما تنها یک سایت به زبان فارسی معرفی میکنیم.
بعد از معرفی سایتها، وارد بخش مقدماتی و آشنایی اولیه با زبان برنامهنویسی پایتون میشویم که در این بخش به صورت خلاصه به موارد ذیل اشاره شده است:
اول از همه میبایست با فعالیت برنامهنویسی آشنا شویم، در اصل برنامهنویسی صحبت کردن به زبان ماشین و ارسال دستورات مد نظر برنامهنویس به ماشین برای انجام عملیات مشخصی است. در این راستا زبانهای برنامهنویسی مانند زبانهای محلی دارای قوانین و قواعد خود جهت صحبت کردن و ارائه دستورات میباشند که این مجموعه قوانین را اصطلاحا Syntax میگویند و خط دستوراتی که برنامهنویس جهت ارائه فرامین خود استفاده میکند را Code مینامند.
با توجه به وجود بسیاری از زبانهای برنامهنویسی، چرا زبان برنامهنویسی پایتون را استفاده کنیم؟ قبل از پاسخ دادن به این سوال شاید بهتر باشد بپرسیم زبان برنامهنویسی پایتون برای چه اهداف و برنامههایی مورد استفاده قرار میگیرد؟
در زیر به مهمترین موارد استفاده از این زبان اشاره شده است:
حالا نوبت به پاسخ به سوال اول است چرا زبان برنامهنویسی پایتون را انتخاب کنیم؟ برای توسعه وب یا توسعه برنامههای کاربردی و یا اسکریپتنویسی زبانهای برنامهنویسی زیادی موجود است چرا زبان برنامهنویسی پایتون؟
زبان برنامه نویسی پایتون مجموعه مزیتهایی را داراست که در ذیل به بخشی از این موارد اشاره میکنیم:
مجموعه ویژگیهای اصلی که یک برنامهنویس به آن نیاز دارد مثل توسعه وب، توسعه برنامه کاربردی، سرعت، توابع و ماژولهای کاربردی، پشتیبانی از پلتفرمهای مختلف، سادگی استفاده از دیتا بیسها و مواردی از این دست، همگی در زبان برنامهنویسی پایتون جمع شده است؛ به همین منظور این زبان به مهندسان شبکه که در حال ورود به حوزهی برنامهنویسی هستند توصیه شده است.
امکان نصب زبان برنامهنویسی پایتون برروی تمامی پلتفرمها فراهم میباشد و تنها با مراجعه به سایت اصلی پایتون و دریافت این فایل میتوان این فایل را نصب کرد. به همین منظور ما در این بخش به معرفی لینکهای اموزشی مربوط به نصب پایتون اکتفا کردهایم، در ذیل لینکهای مربوط به چگونگی نصب و آموزش هریک از پلتفرمها ارائه گردیده است.
پس از نصب پایتون، برای شروع چه کنیم؟ تنها کافیست در محیط ترمینال رفته و دستور پایتون را بزنید، بدین ترتیب پایتون اجرا شده و محیط برنامهنویسی شما آماده میباشد.
در صورتی که از قبل برنامهای نوشتهاید یا اسکریپتی تهیه کردهاید؛ برای اجرای این برنامه کافیست در انتهای دستور پایتون، اسم اسکریپت خود را قرار دهید. بدین ترتیب برنامه پایتون پس از باز شدن، اسکریپت شما را اجرا خواهد کرد و تمامی دادهها و متغیرهای مورد استفاده در برنامه نیز در محیط برنامه نویسی برای شما قابل استفاده است.
در اینجا به یک نکته مهم اشاره کنیم، برنامهنویسی در محیط پایتون امکانپذیر است ولی عموما برنامهنویسان از کد ادیتورها استفاده میکنند. برخی از پرکاربردترین ادیتورهای مناسب برای زبان برنامهنویسی پایتون در ذیل معرفی شده است:
VsCode | Pycharm | Atom | Sublime Text |
قبل از خروج از این بخش میبایست مترجم پایتون و یک ادیتور برروی پلتفرم خود نصب کرده باشید تا امکان تست بخشهای بعدی برای شما فراهم باشد.
این بخش برگرفته از مقالهی کاملتری است از آقای طینتی که در ادامه به بخشی از آن نیز اشاره شده است.
محیطهای مجازی (virtual environments) از مهمترین شیوههای آزموده شده (Best practice) در توسعه نرمافزار تحت پایتون هستند. از آنجایی که با نصب پکیجهای پایتون، همگی این پکیجها در یک مسیر مشخصی نصب میشوند؛ ممکن است باعث ایجاد مشکلاتی شوند. برای مثال حالتی را در نظر بگیرید که در ایجاد پروژههای مختلف به نسخههای متفاوتی از برخی کتابخانهها نیاز دارید، در این صورت چگونه میتوانید چندین نسخه متفاوت از یک کتابخانه را در پروژههای مختلف پایتون استفاده کنید؟ فرض کنید میخواهیم بر روی توسعه دو وبسایت، یکی توسط نسخه (۱.۸) وب فریمورک جنگو (Django) و دیگری بر روی یک نسخه قدیمی (۰.۹۶) از آن کار کنیم، ولی نمیتوانیم! چراکه نمیشود این دو نسخه را با هم در پایتون (دایرکتوری site-packages) نصب داشت. در این وضعیت راه حل مناسب ایجاد محیطهایی مجازی (Virtual Environments) برای توسعه پروژههای مورد نظر است؛ ابزاری که محیط توسعه و اجرای هر پروژه پایتون را به همراه تمام وابستگیهای (Dependencies) آن از پروژههای دیگر جدا یا ایزوله (AKA. Sandboxing) میکند.
به منظور ساخت این محیط و حضور در آن، نیاز به اجرای دستورات در تصویر زیر میباشد.
برای درک بهتر سایر بخشها، سعی میکنیم با یک مثال ساده مابقی بخشها توضیح داده شود تا امکان درک و تست نهایی آن برای خواننده فراهم شود.
برنامهنویسی، هنر صحبت کردن با رایانه و ارائه فرامین به منظور دستیابی به هدف خاصی میباشد؛ به همین منظور یک پروژه فرضی در نظرگرفته شده است. فرض کنید خواستهی ما به عنوان برنامهنویس، راهاندازی یک دفترچهی تلفن است. در این پروژه هدف اصلی ما راهاندازی یک دفترچه تلفن مجازی میباشد و میبایست با دستورها و کدنویسی برای رایانه، اجرای گام به گام دستورات خود را تشریح کنیم. در سالهای نچندان دور بدون رایانهها و گوشیهای همراه، دفترچه تلفنهای کاغذی ما از دو ستون ساده، یکی اسم و دیگری شماره تلفن تشکیل شده بود. این دفترچه تلفنها دارای سایزهای متفاوتی بودند و هرفردی شماره و اطلاعات مد نظر خود را در آنها قرار میداد. این اطلاعات میتوانست شامل آدرس، کدپستی و مواردی از این دست باشد و صرفا دفترچه تلفن ویژه ثبت و نگهداری شماره تماس افراد نبود. حال سعی کنیم این دفترچه تلفن را در رایانه خود بازنویسی کنیم، اولین گام حفظ دادهها میباشد.
سوال اصلی: اگر در زبان برنامهنویسی بخواهیم به کامپوتر خود بگوییم که یک دادهای را نگهداری کند به چه روشی میبایست عمل کرد؟ در دفترچه تلفن عادی ما به راحتی داده را برروی کاغذ یادداشت میکردیم اما در زبان برنامهنویسی میبایست برنامهنویس متغیر تعریف کند. درواقع متغیرها اسامی هستند که برنامهنویس آنها را تعریف میکند تا توسط آنها، داده خود را نگهداری کند و در سرتاسر برنامه استفاده کند. در این مثال برای اینکه بتوانیم اسم فرد را نگهداری کنیم؛ میبایست یک متغیر با نام X و یک متغیر با نام Y جهت دریافت اطلاعات شخصی و شماره تلفن هر فرد تعریف کنیم.
"X = “ODI
Y = 4456
در زبان برنامهنویسی پایتون تعریف متغیرها بسیار ساده است و در زیر تصویر آن به منظور تست قرار داده شده است.
همانطور که در دنیای واقعی ما دادهها دارای فرمت مختلفی میباشند، در دنیای برنامهنویسی نیز دادهها دارای فرمتهای مختلفی میباشند. برای نمونه وقتی دادهی ما تنها یک حرف میباشد در دنیای برنامهنویسی جنس آن یا به عبارتی علمیتر، دیتاتایپ ان Char یا کارکتر میباشد و یا وقتی داده ما عدد میباشد در برنامهنویسی جنس آن Integer میباشد. در زبان برنامهنویسی پایتون نیازی به تعریف دیتاتایپ در زمانی که یک متغیر را تعریف میکنیم نداریم و این زبان به صورت هوشمند، با توجه به محتوای ورودی که شما به این متغیر اختصاص میدهید، دیتا تایپ آن را مشخص میکند. در صورتیکه نیاز به چک کردن دیتاتایپ متغیر خود در زبان برنامهنویسی پایتون را احساس کردید، به راحتی با دستور ()Type میتوانید دیتا تایپ خود را دریافت کنید.
دیتا تایپها را در زبان برنامه نویسی پایتون میتوان به دو دسته عمومی تقسیم کرد:
همانطور که در تصویر بالا قابل مشاهده است دیتاتایپهای استاندارد شامل Bool، اعداد ساده، اعداد اعشاری، بایت و رشتهها میباشند. اما ساختمان دادهها یا دیتاتایپهای تجمیعشده (Data Structures) چیست؟
دادههای تجمیعشدهای که از دیتاتایپهای استاندارد تشکیل شدهاند، مثل تاپلها، لیستها، مجموعهها و دیکشنریها که عموما در این دسته قرار میگیرند، برای درک بهتر میتوانیم مثال دفترچه تلفن را مجدد بررسی کنیم، در مرحله اول برای نگهداری داده خود از دو متغیر یکی از جنس String و دیگری از جنس integer استفاده کردیم اما در این حالت ما تنها میتوانیم اسم یک نفر را نگهداری کنیم و برای نگهداری داده 100 نفری در پروژه دفترچه تلفنی خود نیاز داریم 100 متغیر String تعریف کنیم اما به راحتی با استفاده از Data Structureهایی مانند تاپل یا لیست میتوان تمامی 100 داده خود را تنها در یک متغیر از جنس لیست نگهداری کرد.
و یا سادهتر از آن میتوانیم با تعریف یک متغیر از جنس دیکشنری، لیستی 100 نفره از نامها را داشته باشیم که هر نام به شماره مدنظر مرتبط شده است و ما تمامی این دادهها را تنها در یک متغیر نگهداری کردهایم و به این ترتیب کدنویسی کمتری انجام خواهیم داد.
برای درک بهتر دیتاتایپها مثال دفترچه تلفن خود را مجدد مرور میکنیم، در اولین گام به عنوان برنامهنویس برای ساختن یک دفترچه تلفن، نیاز به اجرای راهکاری جهت حفظ دادههای نام و شماره تلفنها داریم که برای این منظور میبایست متغیرهای مورد نیاز تعریف گردد. برای تعریف این متغیرها میتوان از دیتاتایپهای ساده و یا دیتاتایپهای تجمیع شده مانند لیستها یا دیکشنری استفاده کرد. حال فرض کنیم دفترچه تلفن ما دارای ظرفیت ثبت 100 شماره و نام باشد، در جدول زیر چگونگی تعریف این مثال در حالتهای مختلف استفاده از دیتاتایپها در زبان برنامهنویسی پایتون ارائه گردیده است.
تعریف متغیر ها با استفاده از دیتا تایپ های استاندارد | تعریف متغیر ها با استفاده از دیتا تایپ تجمیع شده (لیست) | تعریف متغیر ها با استفاده از دیتا تایپ تجمیع شده (دیکشنری) |
X1 = “A1” X3 = “A3” X100 = “A100” Y1 = 4411 Y2 = 4412 Y3 = 4413 … Y100 = 441100 | ThisListX = [“A1” , “A2” , “A3” , … “A100” ] ThisListY = [4411, 4412, 4413, … 441100,] | ThisDic = { “A1” : 4411, “A2” : 4412, “A3” : 4413, …. “A100” : 441100, } |
پس از شناختن زبان برنامهنویسی پایتون، نوبت به شروع برنامهنویسی یا به اصطلاح کدنویسی میباشد. در بخش ابتدایی متغیرها و دیتاتایپها معرفی شد و یاد گرفتیم چگونه دادههای خود را تعریف و ذخیره کنیم. در این مرحله نوبت به آشنایی با عملگرها و چگونگی انتقال فرامین توسط برنامهنویس به رایانه میباشد که برای درک بهتر خواننده مجددا به مثال دفترچه تلفن برمیگردیم. استفادهی کاربردی از دفترچه تلفن در دنیای واقعی ما چیست؟ به صورت عمومی ما تمامی شماره تلفنها و نامها را نمیتوانیم حفظ کنیم به همین منظور این اطلاعات را یادداشت میکنیم تا در زمانی که به یک شماره نیاز داریم؛ با مراجعه به نام فرد، به شمارهی آن دست پیدا کنیم. عملی که ما انجام میدهیم در دنیای واقعی نوشتن نام افراد مطابق حروف الفبا در بخش مربوط به خود است و پس از آن در زمان نیاز به آن بخش رجوع میکنیم.
اما در دنیای برنامهنویسی این عمل به چه صورتی انجام میپذیرد؟ برای این منظور برنامهنویس باید با مهارت الگوریتمنویسی آشنا شود. رایانهها توانایی اجرایی متفاوتی نسبت به انسانها دارند، آنها سرعت بسیار بسیار بیشتری نسبت به انسانها در اجرای عملیاتها دارند ولی قدرت درک و ورودی دادههای آنها بسیار با انسانها متفاوت است. برای مثال برنامه شما تنها از صفحه کیبورد میتواند ورودی اسم مد نظر شما را دریافت کند؛ درصورتی که یک انسان میتواند ببیند، بشنود یا حتی اون اسم رو لمس کند. پس بهتر است در گام اول هدف خود و عملیاتی که در برنامه مورد نیاز است را دقیق بازبینی کنیم، کاربر ما نیاز به یک شماره تلفن پیدا کرده است و نام فرد را در خاطر دارد؛ پس در این مرحله ما از کاربر نام فرد را گرفته و میبایست شماره تلفن را به او تحویل دهیم. به زبان حرفهایتر میبایست الگوریتمی طراحی کنیم که به ترتیب عملیاتهایی را انجام دهد تا بتواند در نهایت خروجی مدنظر ما را نمایش دهد.
الگوریتم پیشنهادی ما:
برای اجرای گام اول، سوم و چهارم میتوان از توابع ()input و ()Print استفاده کرد که در بخشهای بعدی توضیحات مربوط به آن اشاره شده است ولی برای گام دوم میبایست عملیاتهای سادهتری را به رایانه پیشنهاد دهیم. زیرا رایانه ما نمیداند جستجو کردن به چه معنی است؛ به همین منظور این بخش از الگوریتم میبایست به گامهای سادهتری تقسیم شود تا برای رایانه قابل اجرا باشد.
همانطور که در الگوریتم بالا مشاهده میکنید، در آن از یک عملیات ساده یا همان مقایسه داده ورودی و داده موجود در دیکشنری استفاده شده است که این مقایسه توسط عملگرهای منطقی در زبان برنامهنویسی امکانپذیر میباشد. عملگر منطقی که عملیات مقایسه را انجام میدهد و جواب "بله" یا "خیر" را برای برنامه به همراه دارد "==" می باشد اما در تمامی برنامه هایی که ما کدنویسی آن را انجام میدهیم، صرفا عملگر منطقی مقایسه "مساوی" استفاده نمیشود. در خیلی از حالتها ما نیاز به عملگرهای دیگر منطقی مثل مقایسه "کوچکتر" یا "بزرگتر" و .. را داریم، در تصویر ذیل عملگرهای منطقی موجود در زبان برنامهنویسی پایتون به همراه تعریف هریک قرار داده شده است.
عملگرهای منطقی در اصل امکان اجرای فرامین را برای برنامهنویس فراهم مینمایند، بدین ترتیب برنامهنویس میتواند به مرکز پردازش رایانه، دستور عملیات مد نظر خود را ارسال کند و نهایتا خروجی این عملیات مجددا تحویل برنامه میگردد. در ادامه عملگرهای ریاضی موجود در زبان برنامهنویسی پایتون قرارداده شده است.
اما ما در گام دوم الگوریتم، جدای از عملگرها از یک دستور دیگر استفاده کردهایم، در این دستور به رایانه گفتیم "اگر جواب عملیات مقایسه درست بود ..... " این دستور نیز در زبان برنامهنویسی پایتون با دستورات شرطی که با "if" و "else:" در تصویر زیر نمایش داده شده است، کدنویسی میشود.
همانطور که در مثال دفترچه تلفن در بالا مشاهده شد، ما در گام دوم یک عملیات تکراری را نزدیک به یکصد بار بازنویسی کردهایم، زبانهای برنامهنویسی دارای دستورات "حلقه" یا تکرار میباشند، بدین ترتیب برنامهنویس نیاز به نوشتن 100 خط کد دستور تکراری ندارد و صرفا با استفاده از یک حلقه تکراری به رایانه اعلام میکند که این دستور را 100 بار تکرار کن. برای درک بهتر الگوریتم مثال دفترچه تلفن را قبل و بعد از استفاده از حلقه بازبینی میکنیم.
الگوریتم مثال دفترچه بدون استفاده از حلقه:
الگوریتم مثال دفترچه با استفاده از حلقه:
برای پیادهسازی دستورات حلقهها دو Syntax متفاوت در زبان برنامهنویسی پایتون موجود میباشد:
در تصویر ذیل Syntax مورد استفاده از حلقه "While" در زبان برنامهنویسی پایتون قرارداده شده است.
در تصویر ذیل Syntax مورد استفاده از حلقه "For" در زبان برنامهنویسی پایتون قرارداده شده است.
باتوجه به توضیحات ارائه شده میتوان با مجموعه دستورات ذیل از فاز اول پروژه دفترچه تلفن خود رونمایی کنیم.
در این فاز کاربر میتواند از لیست 5 شمارهای خود با ورودی نام، شماره تلفن خود را دریافت کند:
نمونه کد با استفاده از دیکشنری و توابع آن | نمونه کد با استفاده از لیست و حلقه |
Thisdict = { “A1": 1001, "A2": 1002, "A3": 1003, "A4": 1004, "A5": 1005} name = "ehsan" print ("Enter Your name:") name = input () if name in thisdict : print (thisdict[name]) else : print ("Your Phone Number is not existing")
| Temp = False i = 0 name = "ehsan" NameList = ["A1" , "A2", "A3", "A4", "A5"] NumberList[1001 , 1002, 1003, 1004 , 1005] = print ("Enter Your name:") name = input () while i < 5 : if NameList[i] == name : print(NumberList[i]) Temp = True i += 1 if Temp == False : print ("Your Phone Number is not existing ") |
زبان برنامهنویسی پایتون یک زبان شیگرا میباشد، میتوان گفت در زبان برنامهنویسی پایتون تمامی متغیرها شی میباشد. شیها از متغیرها و توابع داخلی خود تشکیل شده است که برای استفاده از این توابع در انتهای متغیری که از جنس این کلاس تعریف شده است؛ از دات "." استفاده می کنیم و تابع مربوط به این شی را فراخوانی میکنیم.
برای درک بهتر سعی میکنیم مجدد مثال دفترچه تلفن را بررسی کنیم. در این مثال ما فرض کردیم که هر فرد تنها یک نام و یک شماره دارد اما اگر هر فرد اطلاعات تکمیلی بیشتری داشته باشد، مثل آدرس ایمیل، آدرس کد پستی و ... ما چگونه میتوانیم این دادهها را ذخیره کنیم؟ یکی از راهکارهای مناسب در این بخش استفاده از شی میباشد؛ ما میتوانیم یک شی تعریف کنیم و متغیرهای لازم برای هر فرد را تعریف نماییم. زمانی که این شی تعریف میشود، متغیرها اصطلاحا به خصوصیات تغییر معنی میدهد.
Variable: به معنی متغیر است.
Attribute: به معنی ویژگی است.
یکی دیگر از قابلیتهای موجود در زمان تعریف شی استفاده از توابع است. توابع نیز در زمان استفاده در ساختار یک شی تغییر نام میدهد و عموما با اصطلاح متد شناخته میشود.
Function: به معنی فعالیت است.
Method: به معنی روش است.
فراخوانی توابع یک شی با اضافه نمودن "." یا همان دات در انتهای متغیر توسط برنامهنویس در زبان برنامهنویسی پایتون صورت میپذیرد.
اما توابع دقیقا چیست؟ برای درک بهتر این مفهوم، مجدد به مثال دفترچه تلفن بازمیگردیم. در این مثال از توابع ()Print و ()Input استفاده شده است. تابع اولی به سیستمعامل دستور نمایش برروی مانیتور را صادر میکند و تابع دوم ورودی را از صفحهی کیبورد دریافت میکند. هرکدام از این توابع تشکیل شده از مجموع فرامین سادهتری میباشند ولی در نهایت مجموع این فرامین یک خروجی را فراهم میکند. برنامهنویسان از این ویژگی استفاده کرده و به جای کدنویسی چندین باره، مجموعهای از دستورات آن را به صورت یکپارچه درون یک تابع نوشته و در زمانی که نیاز به این خروجی مشخص پیدا میکنند، تابع مورد نظر را فراخوانی میکنند. توابع Built-in برروی پایتون با توابعی که برنامهنویس تعریف میکند، متفاوت است. برای مثال دو تابع اولیه و خیلی از توابعی که با دات "." در انتهای یک متغیر ظاهر میشود، توابع داخلی موجود در زبان برنامهنویسی پایتون میباشند. جدای این توابع، خود برنامهنویس نیز در حین برنامهنویسی امکان تعریف یک تابع را مطابق دستور زیر دارد.
به صورت عمومی با دستور DIR، امکان بررسی توابع یک شی فراهم میباشد. همچنین اکثر نرمافزارهای ادیتور نیز بعد از تایپ "." یا همون دات در شی، توابع را به صورت لیست نمایش میدهد. حال با توجه به آشنایی با توابع و اشیا، مثال دفترچه تلفن خود را این بار بر مبنای استفاده از دیتاتایپ دیکشنری و توابع و متدهای داخلی این متغیر بازنویسی میکنیم.
نمونه کد با استفاده از دیکشنری و توابع آن | نمونه کد با استفاده از لیست و حلقه |
Thisdict = { “A1": 1001, "A2": 1002, "A3": 1003, "A4": 1004, "A5": 1005} name = "ehsan" print ("Enter Your name:") name = input () if name in thisdict : print (thisdict[name]) else : print ("Your Phone Number is not existing")
| Temp = False i = 0 name = "ehsan" NameList = ["A1" , "A2", "A3", "A4", "A5"] NumberList[1001 , 1002, 1003, 1004 , 1005] = print ("Enter Your name:") name = input () while i < 5 : if NameList[i] == name : print(NumberList[i]) Temp = True i += 1 if Temp == False : print ("Your Phone Number is not existing ") |
در آخرین بخش یا همان بخش معرفی و آشنایی با زبان برنامهنویسی پایتون، به ماژولها و فراخوانی آنها اشاره شده است و این بخش یکی از کلیدیترین بخشهای یک زبان برنامهنویسی است. برنامهنویسان با استفاده از ماژولها و کتابخانههای موجود در سرتاسر اینترنت از نوشتن هزاران خط کد جلوگیری میکنند و تنها با استفاده از فراخوانی آن ماژول، امکان استفاده از متغیرها، توابع و دیتاتایپها برای این برنامهنویسان فراهم میگردد.
در تصویر زیر دستورات فراخوانی جهت تست ارائه گردیده است:
یکی از پرکاربردترین ماژولها برای مهندسان شبکه که به دنیای برنامهنویسی تجهیزات سیسکو وارد میشوند، ماژول Requests میباشد. این ماژول به برنامهنویس این امکان را میدهد تا از APIsها و درگاههای طراحی شده در برنامههای دیگر استفاده کند. برای نمونه میتوان برای ارسال داده از یک سرویس یا برنامه کاربردی درخواست نمود و این داده با یک دیتا فرمت مشخص برای برنامه کاربردی ما ارسال میشود و برنامهنویس با جستجو کردن میتواند به محتوای مد نظر خود دست پیدا کند. در تصویر زیر نمونه کد از فراخوانی ماژول Requests و بررسی دسترسی به سایت گوگل نمایش داده شده است.
در مقاله بعدی سیسکو DEVNET موارد زیر را مورد بررسی قرار دادهایم:
درصورتی که به این مقاله علاقهمند بودید، مطالعه مقالات زیر را به شما پیشنهاد میکنیم.
اگر این مقاله را دوست داشتید، میتوانید به کانال لینکدین، یوتیوب و آپارت ما از طریق فوتر سایت دسترسی داشته و از مابقی برنامههای نتگپ که به بررسی تکنولوژی شبکه پرداخته است، دیدن فرمایید.
نظرات کاربران: