چرا python زبان‌ برنامه نویسی آینده نیست؟
ﺯﻣﺎﻥ ﻣﻄﺎﻟﻌﻪ: 9 دقیقه

چرا python زبان‌ برنامه نویسی آینده نیست؟

چند دهه طول کشید تا برنامه‌نویسان قدر python  را بدانند. اما از اوایل سال ۲۰۱۰پایتون  توسعه یافت، و در نهایت محبوبیت آن از زبان‌های ‌c وc++و javascriptو java بیشتر شد.

اما تا کی این محبوبیت ادامه خواهد داشت؟ چه زمانی سرانجام زبان‌های دیگر جایگزینپایتون  خواهند‌‌شد؟ و چرا؟

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

آنچه باعث محبوبیت python در حال حاضر شده است

محبوبیتپایتون  در Stack Overflow نیز قابل مشاهده است. این را می‌توان از برچسب‌های پست‌ها در این پلتفرم متوجه شد. اندازه این برچسب‌ها شاخص خوبی برای محبوبیت این زبان است.

 

 

در حالی که زبان R تقریباً هیچ رشدی نداشته و بسیاری از زبان ها نیز به‌طور مداوم در حال کاهش هستند، رشد python به‌نظر غیر قابل توقف می‌رسد. تقریباً 14٪ از کل سوالات StackOverflow با عنوان " python " برچسب‌گذاری شده‌اند و این روند رو‌به افزایش است. و دلایل مختلفی برای آن وجود دارد.

قدیمی است!

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

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

مبتدی پسند است

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

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

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

همه کاره است

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

می‌خواهید اعداد، بردارها و ماتریس‌ها را خرد کنید؟ از NumPy کمک بگیرید.

می‌خواهید محاسبات مربوط به فناوری و مهندسی را انجام دهید؟ از SciPy استفاده کنید.

آیا می‌خواهید داده‌های بزرگ را دستکاری و یا تجزیه و تحلیل کنید؟ Pandas راه چاره است.

می‌خواهید کار خود را با هوش مصنوعی آغاز کنید؟ چرا از Scikit-Learn استفاده نکنید.

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

نکات منفی python

مانند هر فناوری، پایتون نیز نقاط ضعف خود را دارد. مهم‌ترین ایرادات را یکی یکی مرور می‌کنم و ارزیابی می‌کنم که آیا اینها نابودکننده هستند یا خیر.

سرعت

python کند است؛ خیلی کند. به طور متوسط، برای انجام یک کار با پایتون بیش از هر زبان دیگر، تقریباً 2 تا 10 برابر زمان بیشتر نیاز دارید.

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

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

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

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

محدوده (Scope)

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

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

 

فضاهای سفید

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

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

زبان‌های جدیدتر مانند Haskell این مشکل را حل می‌کنند: آن‌ها به فضای سفید اعتماد می‌کنند، اما یک نحو (syntax) جایگزین برای کسانی که مایل به آن نیستند پیشنهاد می‌دهند.

توسعه موبایل

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

اما بسیاری از برنامه‌های موبایل همراه با python توسعه پیدا نمی‌کنند. این بدان معنا نیست که نمی‌توان این کار را انجام داد - برای این منظور یک بسته python به نام Kivy وجود دارد.

اما python برای موبایل ساخته نشده است. بنابراین حتی اگر نتایج قابل قبولی برای کارهای ساده داشته باشد، بهترین بُرد شما استفاده از زبانی است که برای توسعه برنامه موبایل ایجاد شده باشد. برخی از فریمورک‌های برنامه نویسی که به طور گسترده‌ای برای موبایل استفاده می‌شوند شامل React Native ، Flutter ، Iconic و Cordova هستند.

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

خطاهای زمان اجرا

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

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

چه چیزی می‌تواند جایگزین پایتون در آینده شود؟ چه زمانی؟

در اینجا چند‌تا از رقبای جدید در بازار زبان‌های برنامه نویسی داریم:

  • Rust همان نوع ایمنی را که پایتون دارد ارائه می‌دهد - هیچ متغیری به طور تصادفی overwrit نمی‌شود. اما مسئله عملکرد را با مفهوم ownership و borrowing حل می‌کند. طبق StackOverflow Insights این زبان همچنین محبوب‌ترین زبان برنامه نویسی چند سال اخیر است.
  • Go برای مبتدیان مانند python عالی است. و آنقدر ساده است که نگهداری کدهایش هم راحت‌تر است. نکته جالب: توسعه دهندگان Go از پردرآمدترین برنامه نویسان بازار هستند.
  • Julia زبان بسیار جدیدی است که به طور مستقیم با python رقابت می‌کند. خلا محاسبات فنی در مقیاس بزرگ را پر می‌کند: معمولاً می‌توان از پایتون یا Matlab استفاده کرد و همه خلاْها را با کتابخانه‌های C ++ که در مقیاس بزرگ لازم هستند، برطرف کرد. اکنون، می‌توان از جولیا بجای آن‌ها استفاده کرد.

در حالی که زبان‌های دیگری در بازار وجود دارد، Rust ، Go و Julia زبان‌هایی هستند که ضعف پایتون را برطرف می‌کنند. همه این زبان‌ها در فناوری‌های آینده بسیار برجسته هستند، به ویژه در هوش مصنوعی. در حالی که سهم بازار آن‌ها هنوز اندک است، همانطور که در تعداد برچسب های StackOverflow منعکس شده است، روند همه آن‌ها روشن است: رو به بالا

 

با توجه به محبوبیت فراگیر python در حال حاضر، مطمئناً نیم دهه طول می‌کشد، شاید حتی یک دهه، برای جایگزینی هر یک از این زبان های جدید.

در حال حاضر گفتن اینکه کدام یک از زبان‌ها - Rust ، Go ، Julia یا زبان جدیدی در آینده - خواهند بود دشوار است. اما با توجه به مباحث مربوط به عملکرد که در معماری python اساسی است، ناگزیر زبان دیگری جای آن را خواهد گرفت.

منبع

چه امتیازی برای این مقاله میدهید؟

خیلی بد
بد
متوسط
خوب
عالی
4.57 از 7 رای

/@baharmovahed
بهار موحدنژاد
برنامه‌نویس

برنامه‌نویس، گوفر، عاشق لینوکس و یادگیری

دیدگاه و پرسش

برای ارسال دیدگاه لازم است وارد شده یا ثبت‌نام کنید ورود یا ثبت‌نام

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

در حال دریافت نظرات از سرور، لطفا منتظر بمانید