برنامه نویسی

کدام زبان برنامه نویسی را یاد بگیریم

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

  • درس ۳ از ۱۴
  • مقدماتی
  • رایگان، بدون ثبت نام

یک سوال، پیش از هر مقایسه ای

جواب این سوال، نصف فهرست زبان ها را از روی میز برمی دارد.

چیزی می سازید که آدم ها بازش می کنند، یا چیزی که داده را می خورد؟

اگر خروجی کار یک صفحه است

پی اچ پی و جاوااسکریپت

  • سایت شرکتی، فروشگاه، وبلاگ، پنل ساده
  • وردپرس، که خودش با پی اچ پی نوشته شده
  • هر چیزی که داخل مرورگر حرکت می کند
  • کوتاه ترین راه به اولین کار آزاد
اگر خروجی کار یک جواب است

پایتون

  • تحلیل داده، گزارش، پاک کردن فایل های به هم ریخته
  • کار با سرویس های هوش مصنوعی و خودکار کردن کارها
  • کتابخانه آماده برای کاری که خودتان دو هفته می نوشتید
  • اما نه سریع ترین راه به اولین درآمد محلی

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

آخرین بررسی: فکت ها و نام ابزارهای این درس در همین تاریخ با منابعشان بازبینی شده اند.

اول بگویید می خواهید چه چیزی بسازید

پرسش «کدام زبان بهترین است» جواب ندارد. پرسش «کدام زبان برای کاری که من می خواهم بکنم مناسب تر است» جواب کوتاه دارد، و همین یک تفاوت است که آدم را از دور تسلسل مقایسه بیرون می آورد.

شکل بالای صفحه بزرگ ترین دوراهی را می کشد: چیزی می سازید که آدم ها بازش می کنند، یا چیزی که داده می خورد و جواب می دهد. تقریبا همه سوال های بعدی زیر یکی از این دو می افتند.

زبان برنامه نویسی ابزار است، و ابزار را با کار انتخاب می کنند نه با نظرسنجی. کسی که می خواهد سایت مشتری بسازد و کسی که می خواهد داده فروش را تحلیل کند، دو جعبه ابزار متفاوت لازم دارند و هیچ کدام هم اشتباه نیستند.

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

چهار هدف رایج و زبانی که هر کدام می خواهند

اول خانه خودتان را پیدا کنید، بعد سراغ اسم زبان بروید.

  • سایت و فروشگاه

    پی اچ پی برای سمت سرور، جاوااسکریپت برای مرورگر. وردپرس هم همین جاست.

  • داده و هوش مصنوعی

    پایتون، چون کتابخانه هایش سال ها زودتر از شما نوشته شده اند.

  • اپلیکیشن موبایل

    کاتلین برای اندروید، سوییفت برای آی او اس، یا فلاتر و ری اکت نیتیو برای هر دو.

  • بازی

    اول موتور را انتخاب می کنید و زبان با آن می آید: یونیتی سی شارپ می خواهد.

هدف

این جدول شروع را نشان می دهد نه سقف را. در یک پروژه واقعی این خانه ها با هم قاطی می شوند و کسی که چند سال کار کرده معمولا از سه خانه چیزهایی بلد است.

برای سایت و کار آزاد، پی اچ پی و جاوااسکریپت

اگر هدفتان این است که تا یک سال دیگر بابت کد پول بگیرید و در ایران زندگی می کنید، این شاخه کوتاه ترین راه است. دلیلش سلیقه نیست، شکل بازار است: بیشتر کاری که به یک برنامه نویس تازه سپرده می شود سایت است، بیشتر سایت ها وردپرس اند، و وردپرس با پی اچ پی نوشته شده.

دو عدد که قابل بررسی اند و امروز از منبع خودشان خوانده شده اند: به گزارش W3Techs، پی اچ پی روی ۷۰.۲ درصد سایت هایی به کار می رود که زبان سمت سرورشان شناخته شده است، و وردپرس ۵۸.۹ درصد سایت هایی را می چرخاند که سیستم مدیریت محتوایشان مشخص است، یعنی ۴۰.۷ درصد کل سایت ها. هر دو عدد جهانی اند و درباره ایران چیزی نمی گویند؛ ما آمار بازار ایران را نداریم و عددی هم برایش نمی سازیم.

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

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

ترتیبی که برای این شاخه پیشنهاد می کنیم هم ساده است: اول HTML تا بدانید صفحه از چه ساخته شده، بعد کمی CSS، بعد جاوااسکریپت در حد رفتار دادن به صفحه، و پی اچ پی وقتی که کار به سمت سرور رسید. اگر می خواهید ببینید این مسیر آخرش به چه شکل کاری می رسد، بخش فریلنسری نمونه پروژه هایی را که واقعا سفارش داده می شوند نشان می دهد.

برای داده و هوش مصنوعی، پایتون

اگر کاری که در ذهنتان است با فایل و عدد و متن سر و کار دارد، نه با صفحه ای که کسی بازش می کند، پایتون در است. تحلیل داده فروش، پاک کردن یک فایل اکسل به هم ریخته، خواندن هزار فایل و ساختن یک گزارش، وصل شدن به سرویس های هوش مصنوعی: همه اینها زمین پایتون است.

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

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

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

موبایل و بازی؛ جایی که سکو زبان را تعیین می کند

در این دو شاخه تصمیم دست شما نیست، دست سکو است. اندروید بومی یعنی کاتلین (و کد قدیمی تر جاوا)، آی او اس بومی یعنی سوییفت، و اگر یک کد برای هر دو می خواهید یعنی فلاتر با زبان دارت یا ری اکت نیتیو با جاوااسکریپت. برای بازی هم معمولا موتور را انتخاب می کنید نه زبان را: یونیتی سی شارپ می خواهد و گودو زبان خودش را دارد.

یک حرف صریح قبل از اینکه سراغ اپلیکیشن بروید: خیلی وقت ها چیزی که «اپلیکیشن» صدا زده می شود، در عمل یک سایت خوب روی موبایل است و با نصف هزینه و یک دهم دردسر جواب می دهد. اپلیکیشن واقعی وقتی لازم است که به دوربین و نوتیفیکیشن و کار آفلاین احتیاج داشته باشید.

و یک محدودیت که مخصوص ماست: انتشار در فروشگاه های جهانی از ایران مسئله خودش را دارد و ربطی به زبان انتخابی ندارد. آن بحث جای دیگری است، در مسیر طراحی اپلیکیشن، و اگر کار سفارشی می خواهید صفحه طراحی اپلیکیشن شکل کار را توضیح می دهد.

سوال هایی که وقتتان را می گیرند و چیزی را عوض نمی کنند

«کدام زبان سریع تر است» برای شما مسئله نیست. در کاری که یک تازه کار می نویسد، کندی تقریبا همیشه از کوئری بد یا تصویر ده مگابایتی یا الگوریتم اشتباه می آید، نه از زبان. زبان وقتی گلوگاه می شود که بقیه کارها را درست کرده باشید.

«کدام ساده تر است» هم جواب واقعی ندارد. دو هفته اول همه زبان ها یک شکل اند: متغیر و شرط و حلقه. سختی بعدا می آید و از مفهوم می آید نه از نحو؛ اشاره گر و همزمانی و مدل شی گرا در هر زبانی سخت اند.

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

«فلان زبان دارد می میرد» را هم بگذارید کنار. مهم این نیست که یک زبان در توییتر چه جایگاهی دارد، مهم این است که در دسترس شما کاری هست که با آن انجام می شود یا نه.

هزینه انتخاب اشتباه را هم بزرگ نکنید: اگر بعد از دو هفته بفهمید مسیر را عوضی آمده اید، دو هفته از دست رفته. ولی اگر شش ماه دنبال «بهترین زبان» بگردید و هیچ چیز تمام نکنید، شش ماه از دست رفته و هیچ چیز هم یاد نگرفته اید. تمام کردن یک چیز کوچک از انتخاب درست مهم تر است.

دو هفته آزمایش، به جای دو ماه تحقیق

راه بیرون آمدن از این تصمیم، تحقیق بیشتر نیست؛ یک آزمایش کوچک است. دو نامزد بردارید، یک چیز کوچک و یکسان را در هر دو بسازید، و بگذارید دستتان تصمیم بگیرد نه فهرست ها.

«چیز کوچک» یعنی چیزی که در یک عصر تمام می شود و خروجی قابل نشان دادن دارد. مثلا: صفحه ای که یک فرم دارد و اسم را ذخیره می کند، یا اسکریپتی که یک فایل CSV را می خواند و سه عدد از آن درمی آورد. همان یکی را در هر دو زبان بنویسید تا مقایسه واقعی باشد.

شکل پایین همین پنج قدم است. قدم چهارم را جدی بگیرید: نشان دادن به یک آدم دیگر، چیزی را در شما فعال می کند که تنها کد زدن فعال نمی کند. و اگر هیچ کدام از دو نامزد بعد از دو هفته جذابتان نکرد، این هم یک جواب است.

جعبه ابزار خود ما هم از همین جنس تصمیم بیرون آمده و نه از سلیقه: سایت پی اچ پی است چون وردپرس پی اچ پی است، ابزار محتوا پایتون است چون کارش پردازش متن است، و چسب همه اینها بیست و یک اسکریپت بش است چون کارشان صدا زدن ابزارهای دیگر است. سه زبان، سه کار متفاوت، هیچ کدام هم به این دلیل انتخاب نشده که «بهتر» است.

آزمایش دو هفته ای، پنج قدم

به جای خواندن مقایسه دیگران، یک مقایسه کوچک از خودتان بسازید.

  1. ۱

    هدف را در یک جمله بنویسید

    اگر در یک جمله جا نشد، هنوز هدف نیست؛ آرزوست.

  2. ۲

    دو نامزد، نه پنج تا

    با پنج گزینه دوباره می افتید در همان تحقیقی که می خواستید از آن فرار کنید.

  3. ۳

    یک چیز کوچک یکسان را در هر دو بسازید

    چیزی که یک عصر تمام می شود و خروجی دارد. نه یک پروژه.

  4. ۴

    به یک نفر نشانش بدهید

    نشان دادن، چیزی را فعال می کند که تنها کد زدن فعال نمی کند.

  5. ۵

    با تجربه خودتان تصمیم بگیرید

    اگر هیچ کدام نگرفت، این هم جواب است و باید هدف را عوض کرد نه زبان را.

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

مسیر سریع با هوش مصنوعی

برای این یک سوال، مدل زبانی پیشگوی بدی است و شبیه ساز خوبی. اگر بپرسید «کدام زبان را یاد بگیرم»، میانگین چیزی را که در اینترنت نوشته شده تحویلتان می دهد و آن میانگین به شهر شما ربطی ندارد. ولی اگر همان مدل را وادار کنید یک چیز کوچک را در دو زبان بنویسد و بعد بگوید شش ماه بعد در هر مسیر با چه چیزی روبه رو می شوید، دو هفته آزمایش را به یک عصر فشرده کرده اید. برای این کار مدل سریع و ارزان کافی است؛ انتخاب فعلی ما در <a class="text-link" href="/ai/">بخش هوش مصنوعی</a> هست.

  1. هدف را با محدودیت هایتان بنویسید، نه به شکل آرزو: چه چیزی، برای چه کسی، تا کی، و چقدر وقت در هفته دارید.
  2. به جای «کدام بهتر است»، بخواهید کوچک ترین نسخه کارکن همان یک چیز را در دو زبان نامزد بنویسد، با همان خروجی.
  3. هر دو را خودتان اجرا کنید. کدی که اجرا نشده، نظر است نه نتیجه.
  4. در آخر بپرسید در هر مسیر، شش ماه بعد با چه چیزهایی درگیر خواهید بود. این جواب از هر فهرست محبوبیتی مفیدتر است.

نسخه آماده کپی

هدف من: {هدف در یک جمله}
محدودیت من: {ساعت در هفته}، {تا چه تاریخی}، {کامپیوتر و اینترنتی که دارم}
دو نامزد: {زبان اول} و {زبان دوم}

سه کار برایم بکن و ترتیبش را عوض نکن:

۱. کوچک ترین برنامه کارکنی که این هدف را نشان بدهد، یک بار در {زبان اول}
   و یک بار در {زبان دوم}. هر دو باید دقیقا یک خروجی بدهند. کد کامل بده،
   نه تکه. هر چیزی که باید نصب شود را جدا فهرست کن.
۲. زیر هر کد، سه خطی که یک تازه کار در آن گیر می کند را نشان بده و بگو چرا.
۳. بعد بنویس در هر مسیر، شش ماه بعد با چه چیزهایی درگیر خواهم بود: چه
   ابزارهایی، چه سختی هایی، و چه نوع کاری معمولا سفارش داده می شود.

نگو کدام بهتر است. من بعد از اجرا کردن هر دو خودم تصمیم می گیرم.

قبل از اعتماد به خروجی: یک چیز را مدل نمی داند و با اطمینان هم درباره اش حرف می زند: بازار محلی شما. فهرست کاری که در شهر شما سفارش داده می شود در داده آموزشی اش نیست، پس هر جمله ای درباره «تقاضا» را خودتان با یک نگاه به سایت های کاریابی و گروه های محلی بسنجید. دومی هم دسترسی است: مدل ممکن است ابزاری پیشنهاد کند که ثبت نام یا پرداختش از ایران کار نمی کند. قبل از اینکه مسیر را روی چیزی بنا کنید، چک کنید که واقعا به آن می رسید.

هوش مصنوعی در این کار

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

ابزارهایی که واقعا کمک می کنند

  • Claude برای همان کار دو نسخه ای خوب است، چون کد کامل و توضیح خط به خط را با هم می دهد. ایران در فهرست کشورهای پشتیبانی شده انتروپیک نیست؛ این را از صفحه خود انتروپیک خوانده ایم.
  • Gemini فارسی را خوب می فهمد و برای نسخه اول یک برنامه کوچک کافی است. صفحه خود گوگل می گوید اپ وب جمنای در بیش از دویست و سی کشور و منطقه کار می کند و ایران در آن فهرست نیست.
  • ChatGPT رایج ترین انتخاب و برای همین کار قابل قبول. ما هنوز صفحه ای برایش در بخش هوش مصنوعی نداریم، پس درباره دسترسی و قیمتش اینجا ادعایی نمی کنیم.

کجا نتیجه معکوس می دهد

خطر اصلی اینجا کد اشتباه نیست، جواب مطمئن است. مدل «کدام زبان را یاد بگیرم» را با میانگین چیزی که در اینترنت نوشته شده جواب می دهد و آن نوشته ها عمدتا انگلیسی و عمدتا آمریکایی اند، پس یک نقشه راه تر و تمیز تحویلتان می دهد که هیچ رابطه ای با کاری که در شهر شما سفارش داده می شود ندارد و لحن مطمئنش هم این را پنهان می کند. خطر دوم دسترسی است و مخصوص ماست: ممکن است ابزاری در آن نقشه راه باشد که از ایران قابل ثبت نام یا پرداخت نیست، و همین درباره خود این مدل ها هم صادق است. ایران در هیچ کدام از دو فهرست کشورهای پشتیبانی شده انتروپیک نیست و در فهرست کشورهای جمنای گوگل هم نیست؛ هر دو را از صفحه خود سازنده خوانده ایم و راه دور زدن هم پیشنهاد نمی کنیم. برای همین است که پیشنهاد ما این است که از مدل کد بخواهید نه سرنوشت: کد را می شود اجرا کرد و دید، نقشه راه را نمی شود.

منبع ها: Anthropic: supported countries Google: where Gemini Apps are available W3Techs: usage statistics of PHP

حد این توصیه

این درس نمی تواند بگوید در شهر شما کدام مهارت پول می دهد، چون آمار بازار کار ایران را نداریم و عددی هم برایش نمی سازیم؛ آنچه اینجا آمده دو عدد جهانی و تجربه یک آژانس است، نه بیشتر. سه جا هم هست که همه استدلال های این صفحه را کنار می زند: اگر جایی که کار یا درس می خوانید از قبل زبانی دارد، همان زبان برنده است؛ اگر برای یک درس دانشگاهی می خوانید، زبان همان درس برنده است؛ و اگر کسی هست که می تواند سوال هایتان را جواب بدهد، زبان او از هر انتخاب بهینه ای ارزشمندتر است، چون تنها ماندن گران ترین بخش یادگیری است.

از تجربه خود ما

جعبه ابزار خود ما، امروز شمرده شده و روی همین سرور قابل بررسی: قالب این سایت ۱۹۳ فایل پی اچ پی و ۵۹ هزار و ۳۷۷ خط است، افزونه های داخلی خودمان ۵۹۲ فایل پی اچ پی دیگر، و همین صفحه ای که می خوانید فقط دو فایل جاوااسکریپت بارگذاری می کند، حدود شانزده و پنج کیلوبایت. در مقابل، ابزاری که همین درس را قبل از انتشار می سنجد پایتون است: ۲۲ فایل، که یکی شان با ۲۸۱ خط کارش پیدا کردن کاراکترهای ممنوع در چهار زبان است. چسب بینشان هم ۲۱ اسکریپت بش است. نسبت بین این عددها همان حرف این درس است: زبان را کار انتخاب کرده، نه ما.

سوال هایی که واقعا پرسیده می شوند

حالا که هوش مصنوعی کد می نویسد، باز هم باید زبان یاد بگیریم؟

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

اول HTML یاد بگیریم یا مستقیم برویم سراغ پایتون؟

بستگی به شاخه دارد و نه به ترتیب سنتی. اگر سمت سایت می روید، HTML اولین چیز است چون بدون آن حتی نمی توانید خروجی کارتان را ببینید. اگر سمت داده می روید، HTML لازمتان نیست و مستقیم پایتون درست است. ضمنا HTML زبان برنامه نویسی نیست؛ زبان نشانه گذاری است و شرط و حلقه ندارد.

برای استخدام شدن چند زبان باید بلد باشیم؟

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