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

سلام خدمت دوستان عزیز و گرامی
امیدوارم همیشه شاد و سلامت باشید
بابت راهنمایی‌هایی خوبتون در این سایت ازتون تشکر میکنم بسیار راهگشا و خوب بودند و حالا نیازمند کمکتون هستم
کامل توضیح میدم تا کامل از اوضاعم آگاه بشید پس اگه طولانی شد ببخشید
من علیرضا کاویانی هستم و ۲۶ سالمه
تقریبا از ۴ سال پیش برنامه نویسی را خودم با زبان c# شروع کردم به این صورت که بدون داشتن دانش زیادی در برنامه نویسی یک پروژه ی حسابداری برای دانشگاه برداشتم و تقریبا یک سال نوشتمش البته این طولانی شدن بخاطر کم تجربگی و تغییرات زیاد در برنامه بود به طوری که ابتدا با تکنولوژی‌های قدیمی شروع کردم و بعد هربار کسی می‌گفت فلان تکنولوژی هم اومده که بهتره من برنامه را تغییر می‌دادم و با اون می‌نوشتم تقریبا ۵ بار این اتفاق افتاد ولی برنامه‌ی بسیار خوبی از آب در اومد و الان در چند جای دیگه هم استفاده می‌کنند و باعث شد من بهتر برنامه نویسی را درک کنم(لطفا نظر بدید آیا کار درستی بوده؟)
بعد از اون رفتم سربازی و الان سربازیم دو ماهه تموم شده
توی این دو ماه چون از قبل کمی html و css میدونستم شروع کردم به یادگیری php ولی چون به html و css سطح بالاتر نیاز پیدا کردم برگشتم تا ابتدا اون‌ها را یادبگیرم بعد دوباره php را ادامه بدم
بعد از این که html و css و bootstrap را یادگرفتم، دیدم به جاوااسکریپت هم نیاز دارم پس مقداری هم جاوااسکریپت در حد خیلی کم و آشنایی با سینتکس زبان یادگرفتم که درحین یادگیری، با این سایت و شما آشنا شدم و توضیحات شما را خوندم و چون منطقی بود از یادگیری جاوااسکریپت و php دست کشیدم چون اتفاق نظر را در این دیدم که این دو، زبان های خوبی نیستند(شاید هم من اشتباه فهمیدم) و بعد از اون تصمیم گرفتم که با شما دوستان عزیز برای انتخاب یک زبان برنامه نویسی مشورت کنم

شاید اهداف من هم در راهنمایی شما تاثیر بذاره
من می‌خوام وارد حوزه‌ی وب بشم و از مباحث هوش مصنوعی و بینایی ماشین خیلی خوشم میاد و در آینده قصد دارم در خارج از ایران کار و پیشرفت کنم

البته یک ترس هم دارم و اون سنم هست
همیشه فکر میکنم دیر شده و سنم رفته بالا و می‌ترسم نتونم حرفه‌ای بشم
اینم آدرس وبسایتم هست که نمونه کارهام که با بوت استرپ نوشتم را اونجا گذاشتم
https://arkvn33.ir
پیشاپیش ممنون از راهنماییاتون

1 پسندیده

این مساله تلفات زیادی میده. فرقی هم نداره برنامه نویس حرفه‌ای باشه یا مبتدی. یه جورایی هم نمیشه کاریش کرد. شاید با Buttom-up development بشه یه کم کنترلش کرد که کمتر اذیت شیم.

خب. شروع خفنی بود!
اینکه اولین پروژه‌ی شما موفق بوده خیلی خوبه!

رفتار طبیعی هرکسیه که وارد برنامه نویسی تحت وب میشه. php زبان خوبی نیست ولی یادگرفتنش خیلی هم ضرر نداره به‌هرحال یاد گرفتنش بهتر از کاملا ندونستنشه (چون زیاد استفاده شده نباید کلا چشممونو بهش ببندیم)

جاوااسکریپت یه کم بهتر از php هست و یادگرفتنش واقعا لازمه! چون تنها زبانیه که بروزرها میفهمنش! (بقیه‌ی زبانها مثل typescript و coffeescript و clojurescript هم ترجمه میشن به js و اینطوریه که میشه باهاشون front-end نوشت)

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

شاید بهترین زبان برای برنامه‌نویسی back-end زبان Ruby باشه. خودم چیزی بیشتر از Hello World باهاش ننوشتم ولی هم دیزاین خیلی قشنگی داره (فکر کنم بهترین سیستم OOP رو داشته باشه و اینو من دارم میگم که از oop متنفرم!) هم فریمورک Rails که برای روبی هست (Ruby on Rails) احتمالا بهترین فریمورک برای طراحی وب باشه.
روبی gemها (لایبرریها)ی خوب و قوی برای طراحی وب داره. ساخت وبسایت باهاش هم راحته و هم سریع.

برای این احتمالا پایتون بهترین گزینه باشه. هم کامیونیتی بزرگی داره هم لایبرریهای خیلی زیادی.
البته پایتون برای back-end هم زیاد استفاده میشه. چندسال از لایبرری Flask استفاده کردم و خیلی دوسش داشتم.
فقط ۲تا مساله هست.

  • مثل اکثر برنامه نویسهای پایتون نشید که فکر میکنن فقط پایتون خوبه و به درد همه‌چیز میخوره. این حرف کاملا غلطه.
  • یه سری مشکلات و اشکالات اساسی توی طراحی پایتون وجود داره که واقعا اذیت میکنه. مثلا اینکه اصلا به درد کارهای multi-threading نمیخوره. این باعث میشه (حداقل از نظر من) چیزی بیشتر از یه زبان اسکریپتی نویسی (مثل perl) با یه عالمه لایبرری نباشه.

از طرف دیگه اینو توضیح بدم که اصل کاری که توی هوش مصنوعی (مثلا Neural Networks) انجام میشه، اینه که یه لایبرری صدا میزنیم و یه دیتا بهش میدیم و خود کامپیوتر یه شبکه‌ی عصبی برامون میسازه و ما فکر میکنیم خیلی خفنیم!
اینکار رو توی زبانهای دیگه هم میشه انجام داد. فقط باید یه لایبرری داشته باشه که ازش استفاده کنیم :confused: فقط خواستم روشن کنم که پایتون چیز خاص و خفنی توی این زمینه نداره. صرفا لایبرری هست که صدا میزنید!

همین مساله درمورد Computer Vision هم صدق میکنه. (یه نگاهی به openCV بندازید همه‌ی زبانها دارن از این استفاده میکنن)

برای شبکه‌های عصبی پایتون، یه نگاهی به این لینکها بندازید:
شبکه‌ی عصبی پایتون با ۱۱خط کد
یادگیری دقیق و عمیق شبکه‌های عصبی بخش اول (برای بخشهای بعدی، همین url رو ویرایش کنید و تبدیلش کنید به chap2.html و…)

تفاوت هوش مصنوعی آشغال و خیلی خفن، اینه که آیا صرفا یه لایبرری صدا میزنید و کارتون رو راه میندازید باهاش یا واقعا درک کردید چه اتفاقاتی میفته توی ساخت شبکه‌ی عصبی!

داشتن یه رزومه‌ی خوب (داشتن چندتا پروژه توی گیتهاب/گیتلب و البته کدزدن توی پروژه‌های بزرگ) میتونه خیلی کمک کنه.
یادگیری زبان که نیاز به توضیح نداره.
تجربه هم مهمه. اینکه چه مدتی (چند سال) درگیر کامپیوتر و برنامه نویسی بودید. معیار دقیقی نیست ولی میتونه نشون بده چقدر مغز شما توی محیط کامپیوتر بوده و شکل گرفته.

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

قشنگه. امیدوارم موفق باشید.
یه نگاهی هم به bulma.io بندازید. خیلی بیشتر از bootstrap و foundation دوسش دارم. هم از نظر زیبایی، هم انعطاف بالا.
راستی برای وب، پیشنهاد میکنم Sass یاد بگیرید. تبدیل میشه به css ولی کدی که میزنیم قویتره. یادگیریشم خیلی راحته.

2 پسندیده

پویا جان خیلی لطف کردی ممنون

خب الان به نظر شما کدوم زبان را یاد بگیرم js یا php یا
typescript یا coffeescript یا clojurescript یا روبی یا پایتون!!!

:rofl: :rofl: :rofl:

من عاشق oop ام

واقعا دوست دارم بدونم چه اتفاقی می افته

خیلی خیلی لطف دارید ممنون

چشم حتما

شما نمیتونید با انتخاب یک گزینه به راه ادامه بدید.
حداقل ۲تا زبان نیاز دارید. یکی برای بک-اند و یکی برای فرانت-اند. (البته میشه از js برای جفتش استفاده کرد ولی js برای فرانت هم اضافیه!)

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

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

1 پسندیده

خیلی خیلی ممنون که وقت میذارید
واقعا شرمنده میکنید
پس قطعا ابتدا js را یاد میگیرم

به نظر شما آیا برای روبی به اندازه‌ی پایتون موقعیت شغلی هست؟ چون من در ابتدای کار تنها می‌خوام ۶ ماه برای یادگیری اولیه وقت بذارم و بعد از اون وارد بازار کار و همکاری با شرکت‌ها بشم تا بتونم سریعتر پیشرفت کنم و ادامه ی یادگیریم در حین کار کردن باشه البته اصلا از یادگیری چند زبان واهمه ندارم و اتفاقا خیلی هم مشتاق یادگیری هرچه بیشترم ولی در ابتدای کار واقعا نیاز دارم بتونم کار پیدا کنم بخصوص در اصفهان

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

درمورد موقعیت شغلی اطلاعی ندارم ولی پایتون موقعیت شغلی بیشتری داره.

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

برای دیتابیس چی؟
به نظر شما postgre بهتره یا MySQL و این که آیا با دونستن MySQL میتونیم توی postgre هم کار کنیم منظورم اینه که سینتکس هر دو sql هست؟

سوال دیگه این که clojure دقیقا چه کاری انجام میده؟
بازار کار کلوژر در ایران چجوریه؟
شرمنده سوال زیاد میپرسم و باعث مزاحمت میشم

اگه خیلی کلی بخوایم نگاه کنیم، دومدل دیتابیس داریم. SQLها و هرچیزی بجز اینا (no-SQL)
بین sqlها چندتا انتخاب داریم:

  • sqlite که نیاز به نرم‌افزار سرور نداره و به شکل یک فایل روی هاردمون قرار میگیره. سیستم ساده‌ای داره و البته به درد هندل کردن ریکوئستهای زیاد نمیخوره. بیشتر حالت تک-کاربره داره.
  • mysql که بهتره بگیم MariaDB یا PerconaServer چون خود mysql چندساله که دیگه open-source نیست و کسی ازش استفاده نمیکنه. این ۲تایی که گفتم، forkهاش هستن و خوبن. این برای هندل کردن ریکوئستهای زیاده. معماری پیچیده‌تری داره و یه سیستم دیتابیس پراستفاده و قویه. (چون mariadb و percona فرق زیادی با mysql ندارن، عادت کردیم که به اینا هم بگیم mysql. اشتباهه ولی اشتباه فاحشی نیست)
  • postgresql یه کم از mysql سنگینتره و البته قابلیتهای بیشتر و بهتری داره و یه مقدار سریعتره.

معمولا phpکارها همشون از mysql استفاده میکنن (چون به طور پیشفرض روی سیستمهای هاستینگ نصبه)، بقیه ذهن بازتری درانتخاب دیتابیس دارن و تنها گزینشون mysql نیست.
سینتکس همه‌ی اینا SQL هست فقط یه کم فرق میکنه. اصلش یکه. ستاپ و راه‌اندازی و ساخت دیتابیسشون یه کم با هم فرق میکنه پس انتظار نداشته باشید که صددرصد مثل هم باشن.

یه پیشنهاد:

اگه میشه از یکی از دیتابیسهای SQL استفاده کرد، از چیز دیگه استفاده نکنید.
زمانی دیتابیسهای no-sql برید که دلیل قانع کننده داشته باشید.


خب همه‌ی زبانهای برنامه نویسی که Turing Complete هستن (میشه باهاشون ماشین تورینگ رو شبیه‌سازی کرد) پس میتونن هرکاری رو انجام بدن.
بنابر این تعریف، هرکاری رو با هر زبانی میشه انجام داد. فقط بعضی‌کارها توی بعضی زبانها سختتر هستن.

کلوژر یک زبان برنامه نویسی مدرن و فانکشنال هست (Functional Programming دقیقا برعکس Object Oriented Programming هست. دیدگاهش درمورد حل مسائل فرق میکنه) با طراحی مدرن که روی JVM ران میشه.
کلوژر یک زبان از خانواده‌ی لیسپ (Lisp) هست. پس میشه کارهای رو توش انجام داد که توی زبانهای دیگه تقریبا غیر ممکنه. مثلا کدی بزنیم که کد بزنه (lisp is i programmable programming language) :heart_eyes:

بازارکار کلوژر در ایران افتضاحه. تقریبا هیچ فرصت شغلی براش وجود نداره.
بازارکارش در خارج از کشور هم خیلی زیاد نیست (تقاضا براش زیاد نیست) ولی حقوقهاش بالاست (اصولا زبانهای برنامه نویسی که تقاضا براشون کمتره حقوق بالاتری دارن و زبانهای که تقاضای زیادی دارن، حقوق پایینتر و امنیت شغلی کمتری دارن)

بسیار عالی و جامع و کامل
ممنون بابت لطف بی انتهاتون

1 پسندیده