چن سالی هس که پایتون به خاطر سینتکس قشنگ و ساده ش و همچنین کاربردهای متنوعش به سرعت سر زبون ها افتاد و به همون نسبت کلاس ها و ویدیوهای اموزشی مرتبطش هم زیاد شدن. اما این ها دلیل نمیشه که اگر مبتدی هستید و میخواید وارد حوزه شغلی برنامه نویسی بشید کدنویسی رو با این زبون شروع کنید؛ به این دلایلی که در ادامه خواهم گفت و نهایتا زبون های جایگزین هم معرفی میکنم.
لازم به ذکره که من خودم مسیر برنامه نویسی رو از دو کانال موازی شروع کردم: در دانشگاه با زبون c و توی بوتکمپ توسعه بکند با زبان پایتون و تمرکز بر فریمورک جنگو. بنابراین کسی هستم که هر دو طرفو دیده و شاید تجربیاتم به درد افرادی بخوره.
متاسفانه یا خوشبختانه پایتون برای شما یه سری مباحثی رو handle میکنه که توی باقی زبون ها به همین راحتیا نیس! در کل به نظرم کار رو با یک زبونی شروع کنید که کامپایلری باشه و strict typing داشته باشه. این داینامیک تایپ بودن پایتون به این معنیه که شما توجهتون رو به ساختار و نوع متغیر و داده هایی که تعریف کردید به مرور از دست میدید و مطمئن باشید این یک منبع بزرگ برای تولید باگه:)
توی پایتون شما با مفاهیم مدیریت memory اصلا درگیر نمیشید و عملا اینو به مفسر زبان میسپارید. در حالی که اگر اینو با سطح پایین ترین زبان قبل از تبدیل به بایت کد، یعنی اسمبلی مقایسه کنیم، میبینیم که تعداد زیادی خط کد فقط صرف همین تخصیص حافظه و موارد مشابه میشه. این باعث میشه که شما درک مناسبی از چیزی که داره اون پایین رخ میده نداشته باشید و از همون اول عادت به نوشتن کدهای inefficient کنید.
مثال دیگش data structure هایی هستن که توی این زبون قابل تعریفن. تقریبا همۀ اونا دست شما رو بیش از حد باز میذارن و اگر مبتدی باشید نمیتونید خوب یاد بگیرید چجوری به بهینه ترین شکل از هر کدوم استفاده کنید؛ چه مواقعی تاپل نیازه چه مواقعی لیست و دیکشنری و ... . شاید بهتر باشه مفهوم array رو در یک زبون دیگری به درستی درک کنید و بعدش از این دیتا استراکچرها استفاده کنید! به بیان دیگه، پایتون اینقدری لایه های انتزاع رو برده بالا که انگار شما دارید با زبان انگلیسی با کامپیوتر صحبت میکنید و این descriptive بودنش اتفاقا نقطه قوتشه، اما نه واسه شروع یادگیری!
شاید این یه کم شخصی باشه اما من واقعا با شیء گرایی مورد استفاده در پایتون مشکل دارم. بله اینکه همه چیز در پایتون یک آبجکت هس خیلی زیباس اما شما وقتی میخوای کلاسهای اصولی بنویسی بدیهی ترین چیزایی که نیاز داری معمولا تعریف متودهای از نوع abstract یا static هست. اینکه توی پایتون با استفاده از decorator ها به این موارد دسترسی پیدا میکنی و نه سینتکس، برای من یه کم تو ذوق میزنه. نحوه به کارگیری ویژگی های private/protected خیلی کد رو زشت میکنه. همچنین خیلی موارد دیگری که بحثو بیش از حد تخصصی میکنه اما میشه راجبش بحث کرد.
سینتکس پایتون یه کم زیادی متفاوت از بقیه س. اکثر زبون های برنامه نویسی که باهاش روبرو میشید احتمالا با استفاده از کرلی براکت { } شروع و پایان یک اسکوپ رو مشخص میکنن اما در پایتون با دونقطه : و tab این اتفاق رخ میده که شاید بعدا تا عادت به تغییرش کنید یه کم دستتون اذیت شه. از اون مهمتر پایتون سمی کالن ; نداره! بعدش سر این که یادتون میره ته هر خط توی باقی زبون ها سمی کالن بذارید قراره یه کم بد قلق باشن.
از این موارد سطحی گذشته، راحتی استفاده از همه چیز توی پایتون، باعث میشه یه سری مفاهیم رو کلا نادیده بگیرید یا حتی بهش فکرم نکنید. مثلا مرتبه زمانی اجرای کد توی یه لوپ. یا کلی تابع آماده ای که توی باقی زبون ها خیلیاشون در کتابخانه های استاندارد اون زبان نیستن و شما باید پیادهسازیشو خودتون بلد باشید! در صورتی که مثلا اگر با کتاب C programming language شروع کنید و زبان c رو حتی یک چهارمشو یاد بگیرید، به آسونی میتونید پایتون هم فرا بگیرید. البته میدونیم که همه زبان ها از جمله پایتون، کلی مورد تخصصی و پیچیده دارن که حتی سنیورهاش بعد ۱۰ سال هم ممکنه ندونن و همیشه این منحنی یادگیری ادامه داره، اما بحث دونستن پایه های اساسی هر زبان هست.
به خاطر همین سادگی ها و همچنین کاربرد و مشهوریتی که پایتون کسب کرد تعداد developer ها و کلا افرادی که به این زبون تا حد خوبی مسلطند روز به روز بیشتر شد تا جایی که برای استخدام شدن در یک پوزیشن شغلی مربوط به پایتون معمولا لازمه خیلی زحمت بکشید و رزومۀ قوی داشته باشید تا از رقبای زیادتون یک قدم جلوتر باشید! این موضوع برای باقی زبون ها به این شدت برقرار نیست. از طرفی به شخصه مواردی دیدم که کارفرما برای برنامه نویسی که فقط و فقط پایتون بلده به دید خوبی نگاه نمیکنه و متاسفانه فک میکنه شما حرفه ای نیستید. برای رهایی از این موضوع اگر به هر دلیلی خواستید با پایتون شروع کنید حتما و حتما کتاب clean code آنکل باب رو بخونید یا از جاهای دیگه یاد بگیرید چطور تمیز کد بزنید. همچنین با اصول solid آشنایی پیدا کنید و سعی کنید اونو توی کدهاتون به مرور زمان به کار ببرید تا شما رو از باقی افراد یه پله جلو بندازه!
خلاصۀ همه موارد بالا به این میرسه که میانگین حقوق یک پایتون کار جونیور از یک فرد جونیور در یک زبان دیگه معمولا کمتره. البته به شخصه موارد متعددی افراد متعدد سنیور مثلا توی استک کاری جنگو دیدم که درآمد خارق العاده ای هم داشتن اما تا به اون مرحله رسیدن خیلی راهه.
برای شخصی که تخصصی روی ML کار میکنه، میخواد یه زبونی بلد باشه ولی رشته ش مستقیما با کامپیوتر ارتباط نداره، هکری که دنبال اسکریپت نویسی با زبون راحت هست و کلی آدمای دیگه، پایتون ایدهآله! اما واسه کسی که بسته مهندس نرمافزار بشه، بازی ساز یا توسعه دهنده وب یا موارد مشابه باشه، پایتون نمیتونه خیلی نقطه شروع مناسبی باشه. نه که باعث شه شکست بخورید، اما شما رو کند میکنه و باعث میشه به یه سری جوانبی نپردازید که بعدها وقتی از جونیور به میدلول یا بالاتر خواستید ارتقا پیدا کنید تازه متوجهش میشید.
یکی از بهترین زبانها برای شروع بدون شک زبان c هست.
زبان های جاوا و سی شارپ و سی پلاس پلاس: اگر مفاهیم basic رو از قبل میدونید
زبان هایی که به نظر میان آینده روشنی رو در انتظارشون دارن: ,rust, dart, kotlin, go, swift, solidity, ruby ...
چیزی که به شخصه بهش رسیدم اینه که کنجکاوی شخصیتون رو پیگیری کنید و در مسیر یادگیری زبان قرار بدید. اینو با اندکی تحقیق بهش خواهید رسید. مثلا، اگه دنبال مفاهیم همروندی و یه زبون کامپایلری جدیدتر با سینتکس ساده هستید go جذابه. اگه دنبال زبون سطح پایین و سختگیری هستید که پتانسیل جایگزین شدن C رو داره و کلی نکته جدید برای یادگیری، زبون Rust رو امتحان کنید. اگه از خانواده جاوایی ها دوس دارید گشت و گذاری بزنید کاتلین هست. و به همین ترتیب با یه سرچ ساده میتونید به کلیت هدف ساخت این زبانها برسید و ببینید به کدوم سمت جذب میشید.
درسته که کل متن حول این موضوع گذشت که پایتون زبان مناسبی برای شروع نیست اما قطعا یکی از بهترین زبون ها برای یادگیری و استفاده س. چه چیزی بهتر از اینکه شما میخواید یه اسکریپت دم دستی بنویسید و چیزی که توی بقیه زبون ها ممکنه خیلی طول بکشه رو با پایتون در کمترین تعداد خط ممکن انجام بدید؟ پایتون با وجود کتابخونه های کاملی که در همه بخشهای مختلف داره و البته اپدیت های جدیدش که performance و سرعتش رو از قبل خیلی بهتر کرده یکی از بهترین گزینه هاس. چندین ساله که علی رغم وجود زبان های R , matlab پایتون حرف اولو توی زمینه هوش مصنوعی میزنه. همچنین فریم ورک های قدرتمندی که توی زمینه وب داره (fastAPI , Django ) اونو به عنوان یه رقیب جدی در برنامه نویسی وب برای بقیه زبونها تبدیل کرده. کلی خوبی دیگه هم داره که مجالی برای بیانش نیست و همه جا میتونید از اون موارد مطلع شید.
پایتون فلسفه زیبایی پشتش داره و جزو یکی از زبان های موردعلاقه بنده هست همچنان، اما یادتون نره که اولین گزینه برای شروع یادگیری نه:)
همه حرفای بالا نظراتی بود که طی این چهار پنج سال دیدن محیط کاری و کامیونیتی برنامه نویس ها و کار کردن با چند زبون بهش رسیدم و الزاما همشون صحیح نیستن. خوشحال میشم نظرات شما هم بشنوم. اگر دارید این مسیرو تازه شروع میکنید بدونید با جاده طولانی اما زیبایی روبرو هستید که تمومی نداره. اگر هم از قدیمیای این کار هستید خوشحال میشم نظرتونو پایین همین متن در مورد این موضوع جویا بشم.
موفق و پاینده باشید.