- ۰ نظر
- ۲۴ آذر ۹۸ ، ۱۰:۲۹
در زبانهای برنامهنویسی، سرعت مفهوم ندارد؛ بلکه، «معناشناسی» (Semantics) در برنامهنویسی معتبر شناخته میشود. اگر جامعه برنامهنویسی، قصد مقایسه عملکرد دو یا چند زبان برنامهنویسی را داشته باشند، لازم است تا سرعت اجرا، حافظه مصرفی و قدرت پردازشی لازم برای پیادهسازی و اجرای توابع یا عملکردهای خاص در زبانهای برنامهنویسی مختلف سنجیده شود.
پروژهای تحت عنوان benchmarks-game، مقایسه جامعی از عملکرد دو زبان جاوا و پایتون انجام داده است. برای مشاهده قابلیتهای آزمایش شده و معیارهای استفاده برای این مقایسه، میتوانید به لینک [+] مراجعه کنید. در ادامه، خلاصهای از نتایج مقایسه عملکرد پایتون و جاوا ارائه شده است.
پایتون یا جاوا: مقایسه عملکرد با استفاده از قابلیت pidigits
قابلیت | pidigits | |||
زبان | زمان (ثانیه) | حافظه (کیلوبایت) | قدرت پردازشی (پردازنده 4 هستهای) | |
پایتون نسخه 3 | 3.47 | 10,140 | 0% 1% 100% 0% | |
جاوا | 3.07 | 39,680 | 99% 3% 0% 5% |
پایتون یا جاوا: مقایسه عملکرد با استفاده از قابلیت regex-redux
قابلیت | regex-redux | |||
زبان | زمان (ثانیه) | حافظه (کیلوبایت) | قدرت پردازشی (پردازنده 4 هستهای) | |
پایتون نسخه 3 | 17.64 | 444,704 | 51% 80% 27% 28% | |
جاوا | 10.48 | 645,680 | 72% 87% 74% 68% |
پایتون یا جاوا: مقایسه عملکرد با استفاده از قابلیت reverse-complement
قابلیت | reverse-complement | |||
زبان | زمان (ثانیه) | حافظه (کیلوبایت) | قدرت پردازشی (پردازنده 4 هستهای) | |
پایتون نسخه 3 | 18.59 | 1,007,292 | 22% 29% 59% 21% | |
جاوا | 3.27 | 740,524 | 44% 57% 84% 43% |
پایتون یا جاوا: مقایسه عملکرد با استفاده از قابلیت binary-trees
قابلیت | binary-trees | |||
زبان | زمان (ثانیه) | حافظه (کیلوبایت) | قدرت پردازشی (پردازنده 4 هستهای) | |
پایتون نسخه 3 | 81.03 | 451,324 | 95% 87% 86% 88% | |
جاوا | 8.28 | 907,060 | 86% 90% 80% 77% |
پایتون یا جاوا: مقایسه عملکرد با استفاده از قابلیت n-body
قابلیت | n-body | |||
زبان | زمان (ثانیه) | حافظه (کیلوبایت) | قدرت پردازشی (پردازنده 4 هستهای) | |
پایتون نسخه 3 | 774.34 | 7,844 | 29% 0% 0% 72% | |
جاوا | 21.94 | 35,588 | 100% 0% 1% 1% |
توجه داشته باشید که عملکرد یک زبان برنامهنویسی تنها تابعی از سرعت اجرای برنامهها در آن زبان نیست؛ بلکه عواملی نظیر نحوه کد نویسی و پیادهسازی برنامه توسط برنامهنویسان و عملکرد کتابخانههای «شخص سوم» (Third party)، نقش مهمی در تعیین عملکرد یک زبان برنامهنویسی در هنگام اجرای کد دارد.
نکته قابل توجه در نتایج نمایش داده این است که زبان جاوا، زمان پردازشی کمتری برای اجرای کدها، نسبت به زبان پایتون میطلبد. همچنین، جاوا قدرت پردازشی و حافظه به مراتب کمتری نسبت به پایتون مصرف میکند.
به طور کلی، در صورتی که روی پروژه برنامهنویسی کار میکنید که سرعت بهینه در اجرای آن بسیار حیاتی است، بهتر است که از زبان جاوا استفاده کنید. دلیل این امر، وجود مفسر به جای کامپایلر در زبان پایتون است. در زبانهایی که از مفسر استفاده میکنند، نوع دادهای متغیرها در زمان اجرا مشخص میشود. در نتیجه، سرعت اجرای کدها، به ویژه برای پروژههای بزرگ، کندتر از زبانهایی خواهد بود که از کامپایلر استفاده میکنند.
BOOK : Functional Python Programming, Second Edition - 2018
برای دانلود کتاب فوق بر روی لینک زیر کلیک نمایید. برای دانلود باید وارد کانال تلگرام به آدرس زیر شوید.
برای اینکه متوجه گردیم رشته ورودی ما شامل یک کلمه خاص یا یک الگو می باشد میتوانیم از متد str.contains استفاده کنیم. مثال زیر رو ببنید:
df['text'].str.contains('appointment')
0 True
1 True
2 False
3 False
4 False
خوب در نتیجه مشخص شد رشته اول و دوم کلمه apppintment رو شامل میشود
متد بعدی برای str پیدا کردن تعداد الگوی خاصی در یک رشته می باشد. برای اینکار از تابع str.count استفاده میکنیم. در این مثال میخواهیم بدانیم چند عدد داخل یک رشته قرار دارد.
همانطور که در درس قبلی گفتیم از d برای پیدا کردن ارقام استفاده میکنیم.
df['text'].str.count(r'\d')
0 3
1 4
2 3
3 4
4 8
اگر به رشته ابتدایی ما توجه کنید مشاهده میکنید پنجمین رشته ما شامل 8عدد می باشد.
حالا اگر بخواهیم تعداد عددهای داخل یک رشته رو پیدا کنیم و بصورت لیست نمایش دهیم میتوانیم از متد str.findall برای اینکار استفاده کنیم
df['text'].str.findall(r'\d')
0 [2, 4, 5]
1 [1, 1, 3, 0]
2 [7, 0, 0]
3 [1, 1, 1, 5]
4 [0, 8, 1, 0, 0, 9, 0,]
اگر بخواهیم زمان رو بصورت ساعت و دقیقه در پرانتز بصورت جداگانه قید کنیم کافیه عبارت منظم مربوط را بصورت گروه بندی شده با استفاده از پرانتز استفاده کنیم
df['text'].str.findall(r'(\d?\d):(\d\d)')
در این بخش برنامه پایتون برای محاسبه فاکتوریل یک عدد را می توانید مشاهده کنید.
def
factorial(n):
# single line to find factorial
return
1
if
(n
=
=
1
or
n
=
=
0
)
else
n
*
factorial(n
-
1
);
# Driver Code
num
=
5
;
print
(
"Factorial of"
,num,
"is"
, factorial(num))
برای اینکه بتوانیم در پایتون دو عدد را با هم جمع کنیم و در خروجی نمایش دهیم میتوانیم از کد زیر برای اینکار استفاده کنید.
# Python3 program to add two numbers
number1
=
input
(
"First number: "
)
number2
=
input
(
"\nSecond number: "
)
# Adding two numbers
# User might also enter float numbers
sum
=
float
(number1)
+
float
(number2)
# Display the sum
# will print value in float
print
(
"The sum of {0} and {1} is {2}"
.
format
(number1, number2,
sum))
خروجی برنامه :
First number: 13.5 Second number: 1.54 The sum of 13.5 and 1.54 is 15.04
در چالش کد پایتون بفرست کد تخفیف بگیر، مخاطبین گرامی برای ما یک قطعه کد پایتون ارسال کردند و یک کد تخفیف 70 درصدی برای تهیه آموزش های سایت چالش پایتون برنده خواهند شد.
در این چالش دو تا از مخاطبین ما برنده شدند که کدهای ارسالی این دو دوست گرامی در ادامه قرار خواهیم داد.
برنده شماره یک : yousefnooredin
کد ارسالی: این برنامه تعدادی عدد از کاربر میگیرد و انرا مرتب میکند(بدون استفاده از تابع sort)
برنده شماره دو : امیرحسین صالحی
کد ارسالی: این کد پیاده سازی درخت تصمیم هست که در اون از هیچ یک از دستورات آماده ی پایتون استفاده نکردم و تمام الگوریتم ها رو خودم پیاده کردم .
نچه از گزارش اخیر مایکروسافت برمیآید، آن است که برنامهنویسان عاشق زبان پایتون هستند.
زبان برنامهنویسی پایتون با پیشیگرفتن از جاوا که زمانی زبان غالب برنامهنویسی بود، به دومین زبان پرطرفدار برنامهنویسی در گیتهاب (GitHub)، سایت متعلق به مایکروسافت برای بهاشتراکگذاری کدهای متنباز، تبدیل شد. پایتون اکنون موفق شده است جاوا را براساس تعداد مشارکتکنندگان در منبع پشتسر بگذارد و بر این مبنا، این زبان برنامهنویسی اکنون پس از جاوااسکریپت که از سال 2014 در رتبهی اول جا خوش کرده است، دومین زبان پرطرفدار بهشمار میآید. آمار ارائهشده براساس گزارش رتبهبندی Octoverse برای سال 2019 بهدست آمده است. کسب رتبهی دوم در این سایت نقطهی عطف بزرگی برای پایتون 30 ساله است که خالق آن، خیدو فنروسوم (Guido van Rossum)، در همین هفته و پس از ترک سِمَت خود در شرکت ذخیرهسازی کلاد دراپباکس (Dropbox)، اعلام بازنشستگی کرد. بیشتر خدمات پیشرفته و اپلیکیشنهای دسکتاپ این شرکت با استفاده از پایتون نوشته شدهاند. جنبهی جالب دیگر گزارش گیتهاب، رتبهبندی زبانها براساس سرعت رشد آنها است. زبان برنامهنویسی دارت گوگل و فریمورک فلاتر که برای تولید رابطهای کاربری برای برنامههای تحت اندروید و iOS کاربرد دارد، بیشتر از سایر زبانها مدنظر برنامهنویسان در گیتهاب قرار گرفته است. در سالهای 2018 و 2019، دارت از بیشترین رشد برخوردار بوده و استفاده از آن در میان برنامهنویسان، 532 درصد بیشتر شده است. همچنین، زبان راست (Rust) موزیلا با رشد چشمگیر 235 درصد، پس از دارت در رتبهی دوم قرار دارد.نمودار زبانهای برنامهنویسی برتر در گیتهاب در پنج سال گذشته بیانگر افزایش محبوبیت پایتون است.
گیت هاب اکنون از 40 میلیون توسعهدهنده میزبانی میکند پایتون محبوبترین زبان برنامهنویسی 2019 لقب گرفت زبان برنامهنویسی جاوا 13؛ ابزاری برای بهرهوری بیشتر برنامهنویسان
زبان برنامهنویسی راست برای برطرفکردن باگهای امنیتی مرتبط با حافظه طراحی شده که رایجترین نقص امنیتی در نرمافزارهای مایکروسافت در یک دههی گذشته بوده است؛ بههمیندلیل، مایکروسافت آن را در پایگاه کدهای ویندوز خود استفاده و آزمایش میکند. سال گذشته، زبان برنامهنویسی کاتلین، زبان تأییدشدهی گوگل برای تولید برنامههای اندرویدی، بیشترین روند رشد را در گیتهاب تجربه کرد؛ اما با وجود رشد 182 درصدی در طول سال، دیگر در میان 10 زبان برتر 2019 مشاهده نمیشود. زبان تایپاسکریپت هم که مایکروسافت از آن پشتیبانی میکند و یکی از مجموعههای مافوق جاوااسکریپت بهشمار میآید، با 161 درصد رشد سریعی در سال گذشته تجربه کرد. دلیل رشد سریع این زبان برنامهنویسی را میتوان به تعداد زیاد برنامهنویسانی نسبت داد که از آن برای دستوپنجه نرمکردن با برنامههای بزرگ نوشتهشده با جاوااسکریپت استفاده میکنند. زبانهای دیگری که درزمرهی 10 زبان دارای بیشترین سرعت رشد در سالهای 2018 و 2019 قرار میگیرند، عبارتاند از: اچسیال، پاورشل، اپکس، پایتون، اسمبلی و گو (Go). دارت: 532 درصد راست: 235 درصد اچسیال: 213 درصد کاتلین: 182 درصد تایپاسکریپت: 161 درصد پاورشل: 154 درصد اپکس: 151 درصد پایتون: 151 درصد اسمبلی: 149 درصد گو: 147 درصد قهرمان اصلی گزارش گیتهاب پایتون است که محبوبیتش را مدیون طرفداران علوم دادهای و علاقهمندان به سرگرمی و غنای کتابخانههای علوم دادهای، مانند نامپای است که این فرصت را دراختیار برنامهنویسان قرار داد تا کدهای پایتون را برای امور مربوط به یادگیری ماشین بهکار بگیرند. بخشی از انگیزهی مایکروسافت برای راهاندازی دورههای رایگان آموزش برنامهنویسی با پایتون در ماههای گذشته، جلب توجه برنامهنویسان به خدمات هوش مصنوعی آن در آژور است. یکی دیگر از نشانههای رونق علوم دادهای در گیتهاب، رشد نوتبوکهای ژوپیتر است که محیطی برای نوشتن و اجرای کدها با پشتیبانی از پایتون و آر و جولیا است.
خیدو فنروسوم، خالق زبان برنامهنویسی پایتون، هفتهی گذشته بازنشسته شد. علاوهبر آنچه گفته شد، گیتهاب در چند سال گذشته روی مسئلهی امنیت نیز سرمایهگذاری و توجه زیادی به کمک به برنامهنویسان برای یافتن و برطرفسازی آسیبپذیریها در کتابخانههای نرمافزاری متنباز یا نرمافزارهای وابسته به آنها کرده است. مسئولان شرکت میگویند هشدار آنها به برنامهنویسان موجب ترمیم بیشاز 7٫6 میلیون وابسته در همین سال شد. همچنین، این کار به انتشار بیش از 209 هزار ترمیم خودکار ازطریق سرویس رایگان Dependabot آن انجامیده است که ماه مه گذشته راهاندازی شد. بیش از 10 هزار همکار در بزرگترین پروژههای متنبازی که درحالحاضر در گیتهاب قرار دارند، مشغول همکاری هستند. بزرگترین پروژه تا زمان حال، ویژوال استودیو کد (Visual Studio Code) است که به محیط برنامهنویسی بسیار محبوبی برای برنامهنویسان فعال در پلتفرم گوگل تبدیل شده است. پروژهی ویژوال استودیو کد، 19،100 مشارکتکننده دارد. البته مایکروسافت پیش از آنکه شرکت گیتهاب را تصاحب کند، بزرگترین مشارکتکننده در پروژههای متنباز آن بهشمار میآمد. پروژههای دیگری که بیش از 10 هزار مشارکتکننده دارند، عبارتاند از: مستندسازی مایکروسافت آژور و فلاتر و فرست کانتریبیوشنز (First Contributions). نکتهی مهمی که در این گزارش بهچشم میخورد، مربوطبه متنبازبودن و استفادهی گیتهاب بهوسیلهی کشورهایی است که با تحریمهای آمریکا مواجه هستند. در ابتدای همین سال، گیتهاب دسترسی کاربران ساکن در کریمه و ایران را محدود کرد. این شرکت نمیخواهد کاری بیشتر از این انجام دهد که در قانون ایالات متحدهی آمریکا لازم دانسته شده است.در ژوئیه، گیتهاب به کاربران خود در کشورهای تحریمشده پیشنهاد کرد از سرور تجاری گیتهاب (GitHub Enterprise Server) استفاده کنند که نسخهی پولی و یکبار خرید (on-premise) این وبسایت برای میزبانی کدها بهصورت شخصی است؛ اما این وبسایت دیگر نمیتواند مجوز استفاده از محصول خود را بهصورت قانونی به کشورهای تحریمشده بفروشد. کاربران ساکن در کشورهای تحریمشده همچنان میتوانند در مخازن عمومی مشارکت کنند. در بخش سؤالها و جوابهای مطرحشده (FAQ) در سایت گیتهاب، دربارهی تحریمهای تجاری ایالات متحدهی آمریکا آمده است: سرور تجاری گیتهاب را نمیتوان به هیچکدام از کشورهای مندرج در فهرست کشورهای گروه E:1 در الحاقیهی شمارهی 1 تا بخش 740 در قسمت EAR یا به منطقهی کریمه واقع در اوکراین فروخت. این فهرست درحالحاضر شامل کشورهای کوبا، ایران، کرهشمالی و سوریه است؛ اما احتمال تغییر آن وجود دارد. این محدودیتها موجب بروز مشکلاتی در مسیر رشد گیتهاب شده است. دراینزمینه، در گزارش Octoverse آمده است: برنامهنویسان ایرانی دومین گروه با بیشترین نرخ رشد در پروژههای متنباز ایجادشده در مخازن عمومی گیتهاب هستند.