خیلی ها میگن پایتون زبان سادهای هست، میشه اون رو زود یاد گرفت، بخاطر تعیین نوع پویا(dynamic typing) دیگه نیازی نیست که برنامهنویس با type ها درگیر باشه و …
ولی آیا واقعا همینطوره؟! توی این مطلب قصد دارم کمی زبان پایتون رو به عنوان یه برنامهنویس پایتون بررسی کنم.
۱. پایتون زبان سادهای هست
منظور از سادگی زبان میتونه خوانا بودن اون و نزدیکی اون به زبان انگلیسی (زبان انسان) باشه. برای مثال دو تکه کد زیر رو ببینید:
زبان پایتون:
if not 2 in lst:
for x in lst:
print(x);
زبان سیشارپ:
if ( ! lst.contains(2) )
foreach ( int x in lst )
Console.WriteLine(x);
طی دهههای گذشته بحثهای زیادی راجع به اینکه مشخصات زبانهای برنامهنویسی، به عنوان مثال تعیین نوعشان و مثلا ایستا(static) یا پویا(dynamic) بودن چه تاثیری روی روند توسعه نرمافزارها دارد. یک مقاله علمی(paper) با مطالعه ۶۰۰ پروژه در گیتهاب شامل تقریبا ۷۰ میلیون خط کد و ۳ میلیون کامیت به نتایجی در این مورد رسیدهاست.
اینکه برای یادگیری برنامهنویسی دانستن زبان انگلیسی لازم هست یا نه، پرسش بسیاری از کسانی هست که میخواهند برنامهنویسی را شروع به یادگیری کنند. در این پست بنده با توجه به تجربهی خودم سعی میکنم به این پرسش جواب دهم. اگر نمیخواهید کل مطلب را بخوانید، جواب کوتاه این پرسش در یک جمله این است که «بله، برای یادگیری برنامهنویسی باید حتما انگلیسی هم یاد بگیرید»
حتماً تا به حال با برنامه هایی سروکار داشتید که امکان نصب افزونه داشتند. در این پست قرار هست بهتون بگم چطور میشه توی پایتون برنامهای بنویسیم که بشه بهش افزونه اضافه کرد.
معماری افزونهای (plugin architecture) یک شیوه توسعه نرمافزار است که به برنامهنویس این امکان رو میده که بدون نیاز به ویرایش کد های اصلی برنامهش (هسته/main) قابلیت ها رو با ارائه بستههایی به نام پلاگین در اختیار کاربران قرار بده و کاربران هم میتونن به سادگی با توجه به نیازشون از بین این افزونه ها، اون هایی که میخوان رو به برنامهشون اضافه کنن.
از طرفی میشه از این معماری به عنوان یک پلن تجاری نیز استفاده کرد. مثلا شما میتونید برنامه خودتون رو به صورت رایگان و حتی متنباز عرضه کنید اما با فروش پلاگین ها (و یا ارائه خدمات) کسب درآمدکنید. اگر شما هم یک کاربر وردپرس باشید حتما با این پلن آشنا هستید! 😄
پ.ن: پروژه telegram-post-bot من در گیتهاب از همین ساختار پیروی میکنه و توش امکان اضافه کردن پلاگین هست و درواقع همین پروژه بهانهای شد که من پیادهسازی این معماری رو توی پایتون یاد بگیرم و امتحان کنم.
خب وقتشه که دیگه مقدمه رو بذاریم کنار و بریم سراغ اصل مطلب!
بعد از درخواست یکی از دوستان در مورد مستقر کردن(deploy) یک وب اپلیکیشن پایتونی که با جنگو نوشته شده بود، تصمیم گرفتم این مطلب رو بنویسم. اینجا چند چیز را فرض کردم:
- از سکوی (framework) فلسک استفاده میکنید.در مورد جنگو هم البته داستان کمابیش همین هست. در مورد چریپای میتونید با همچین راهنمایی پیش برید یا از کارساز(سرور) وب خود چریپای به اسم چروت (cheroot) استفاده کنید.
- از دبیان (یا توزیعهایی که بر پایه دبیان ساخته شدن مثل اوبونتو) و systemd استفاده میکنید.
- میخواهید از انجینایکس(nginx) به عنوان کارساز وب یا وبسرور استفاده کنید.
- تنها از HTTP میخواهید استفاده کنید و برای سادگی کار فعلا HTTPS را کنار میگزاریم.
- قرار هست وب اپلیکیشن شما در ریشه قرار بگیرد. یعنی از طریق آدرسی مثل
https://example.com/
قابل دسترسی باشد نه مثلاhttps://example.com/somewhere
هیچ میدونستین که تو پایتون میتونین برای لیست ها و توپل ها عبارت هایی مثل [1,2,3]>[0,2,3]
نوشت؟ یعنی میتونی خیلی راحت لیست ها رو باهم مقایسه کنی.
اخیرا در یکی از پروژه هایی که داشتم نیاز داشتم تا دو مقدار ورژن رو باهم مقایسه کنم تا مثلا اگر نسخه دوم از اولی جدید تر بود برنامه خودش رو آپدیت کنه، برای اینکار از یک امکان زبان پایتون یعنی مقایسه لیست ها در پایتون استفاده کردم. با من بهنام سیمجو همراه باش تا برات بگم ماجرا چیه!
امروز، دوشنبه ۲ اسفند ۱۴۰۰، جلسه دوم گروه نرمافزار آزاد هرمزگان را با حضور نویسنده این مطلب داشتیم و به پیشنهاد یکی از اعضا، یک بازی جالب کردیم: «به صورت چرخشی در یک دایره هرکس میبایست نام یک ماژول پایتونی، توکار یا غیر توکار، بگوید. نام ماژولها روی تابلو نوشته میشود و کسی حق تکرار اسم یک ماژول را ندارد. کسی که ظرف مدت زمان ۳۰ ثانیه نتوانست اسمی پیدا کند، از بازی خارج میشود و آخرین نفر باقی مانده در بازی برنده است». روشن است که در بازی حق جستجو کردن، نوشتن یا امثالهم را نداشتیم!
بنده در دانشگاه هرمزگان دستیار تدریس یا حل التمرین(TA) برنامهسازی پیشرفته هستم بودم. ضمن تصحیح پروژه دانشجویان به اشتباهاتی درست(!) در کد هایشان برخوردم. قسمت درست کدها این میباشد که «کار» میکنند اما به روش درست پایتون نوشته نشدهاند.
این مقاله از «دیدیر ورنا» میباشد که توسط من، فاروق به فارسی ترجمه شده است. اگر اشتباهی تایپی یا علمی یا املایی مشاهده کردید حتما به مترجم گزارش دهید.
دریافت از فضای ابری فاروق
تقریبا در تمام زبانهای برنامهنویسی از نسل سی، چیزی به اسم آرایه وجود دارد.در زبان سی یک آرایه را میتوان یک فهرست از متغیرهای همنوع در نظر گرفت که خانههای مجاور حافظه به آن تخصیص داده شده هست. به عنوان یک نمونه، در زبان سی یک آرایه از ۳ عدد صحیح تعریف کردهام:
int my_cool_array[3] = {1, 2, 3};
در پایتون چیزی به اسم آرایه نداریم. خود زبان به صورت ذاتی(منظورم builtin یا توکار هست) چند نوع مخزن دارد که اینجا من در مورد دو مورد از آنها برایتان مینویسم.
بر خلاف آرایهها در سی که تنها میتوانند دادههایی از یک نوع را در خود نگه دارند، لیست، توپل(تاپل)، دیکشنری(جدول هش) و مجموعه در پایتون هر کدام میتوانند همزمان دادههایی با نوعهایی مختلف را درون خود داشته باشند.