بعضی اوقات مردم با این سوال مواجه میشوند که باید چه زبان برنامه نویسی را یاد بگیریم؟ یکی از توسعه دهندگان پیشرو در گوگل مقالهای با همین عنوان نوشت و من پس از خواندن آن تصمیم به نوشتن این مقاله گرفتم. من نظرات بسیار متفاوتی نسبت به این سوال دارم و به همین خاطر سعی کردم در این مقاله به آن بپردازم.
کدام زبان برنامه نویسی؟
من هیچ مورد خاصی را به شما پیشنهاد نمیدهم. اینکه با C++، جاوا، پایتون، جاوا اسکریپت یا هر زبان دیگری شروع کنید، فرقی نخواهد داشت. یادگیری یک زبان جدید خیلی طول نمیکشد و نباید جزو اولویتهای اول شما قرار گیرد. زبانهای برنامه نویسی تنها ابزاری برای رسیدن به اهداف هستند. به همین خاطر اغلب به دنبال زبانهایی میرویم که کارهای ما را راه بیاندازند.
سفر خود را در دبیرستان با C++ شروع کردم و در دانشگاه زمان زیادی را به یادگیری جاوا اسکریپت اختصاص دادم. طی مدتی که در مایکروسافت مشغول به کار بودم، خیلی با C#، .Net و Typescript کار کردم. سپس در شرکت گوگل استخدام شدم و به سراغ جاوا رفتم. امروزه بیشتر از C++ برای کد نوشتن و از پایتون برای نمونهسازی استفاده میکنم.
توسعه دهندگان زبانهای برنامه نویسی مختلفی را برای کارکردهای متفاوت خلق کردند. برخی از این زبانها مانند HTML و XML تنها برای نشانهگذاری استفاده میشوند. برخی دیگر مانند shell script و bat script برای اسکریپتنویسی مورد استفاده قرار میگیرند. جا به جا شدن از یک زبان به زبان دیگر، نوعی هزینه به همراه خواهد داشت. اگر بتوانید آن را به خوبی درک کنید، یاد گرفتن یک زبان جدید بسیار آسانتر میشود.
روی چه چیزی تمرکز کنیم؟
مهمترین مهارتی که باید روی آن تمرکز داشت، توانایی حل کردن هر نوع مشکلی است. آیا میتوانید یک اپلیکیشن وب بسازید؟ میتوانید عملکرد یک برنامهی اندروید را بهبود ببخشید؟ نتایج در پایان یکسان خواهند بود بنابراین به مسیر خود ادامه داده و روی یاد گرفتن تکنولوژیهای جدید تمرکز کنید. به دنبال موضوعات مختلف بروید. در آخر همان چیزی را انتخاب کنید که واقعاً به آن علاقه دارید.
پیشنهادات خاص
من برای برنامه نویسان مختلف در هر مرحلهای از این حرفه توصیههای متفاوتی دارم. اگر سفر برنامه نویسی خود را به تازگی شروع کردهاید، به دنبال تکنولوژی بروید که قصد کار کردن در آن را دارید. به عنوان مثال این تکنولوژی میتواند وب، گوشی (اندروید/iOS)، بازیسازی، آموزش مدلهای ML، ساخت برنامههای دسکتاپ و غیره باشد.
ابتدا باید یک فناوری خاص را انتخاب کرده و سپس زبانهای مربوط به آن را یاد بگیرید. بصورت رندوم نرمافزار بسازید و وقت خود را به یادگیری موثرتر اختصاص دهید. سپس به دنبال درک کردن مفاهیم پایهایتر بروید. حال این موضوعات میتواند چندنخی، دیتابیس، رندر گرافیکی، پردازش تصویر، شبکهسازی و غیره باشد.
برنامهای که به زبانهای مختلف مینویسیم، مستقیماً به دستورالعملهای اسمبلی کامپایل میشود یا در نهایت از کدهای بایتی به دستورالعملهای اسمبلی تبدیل میشود تا توانایی اجرا شدن در سختافزار را داشته باشد. اگر این واقعیت را بپذیرید، سینتکس بسیاری از زبانها شبیه به هم خواهد شد. ما میخواهیم شرط «افزایش هر مقدار از آرایه به اندازه 1» را در سینتکسهای مختلف انجام دهیم.
در پایتون:
y = [i + 1 for i in x]
## or
for i in range(0, len(x)):
x[i] = x[i] + 1
در جاوا اسکریپت:
for (var i = 0; i < x.length; ++i) x[i]++;
// Or
var y = x.map(val => ++val);
// Or
var y = Array.from(x, val => ++val);
در Go:
for i:= range x {
x[i]++
}
تمام اینها کم و بیش بصورت زیر کامپایل میشوند:
cmp w1, 0
ble .L1
mov x2, x0
add x1, x0, w1, sxtw 2
.L3:
ldr w0, [x2]
add w0, w0, 1
str w0, [x2], 4
cmp x2, x1
bne .L3
.L1:
ret
تعداد مشخصی از این مثالها منجر به کپی شدن آرایه میشوند، اما برخی دیگر این کار را نمیکنند. پیشنهاد میکنم در مورد این مشکل بیشتر مطالعه کرده و روی تاثیرات آن بر برنامه تمرکز کنید. یک قدم به عقب بردارید و به مشکلی فکر کنید که شما را هیجانزده میکند. سپس به دنبال یاد گرفتن ابزاری باشید که در رسیدن به این هدف شما را یاری رساند.
به عنوان مثال هنگام کار کردن روی Camera App با فرصتی روبرو شدم که در آن میتوانستم روی «حالت شب» کار کنم. با این کار میتوانستم چندین تصویر را گرفته و آنها را به شکلی قوی ادغام کنم. در نتیجه میتوانستم به یک تصویر با نوردهی خوب و نویز کم دست پیدا کنم. این مشکل برای من بسیار هیجانانگیز بود و مرا وادار میکرد تا C++ مدرن، مفاهیم پردازش تصویر و غیره را دوباره یاد بگیرم.
فرآیند یادگیری آنقدر سرگرمکننده بود که هیچ احساس بدی به من دست نداد. به نظرم همهی ما باید چنین مسیرهایی را برای یادگیری پیدا کنیم و مسائل ضروری را از این طریق بیاموزیم.
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید