سلام، امیدوارم خوب باشین
خیلی واسه ادامه مسیر سردرگمم!
هزار تا کار هست که میخوام انجامشون بدم
الان دارم فرانتمو تکمیل میکنم(ری اکتم تکمیله میشه گفت)
اما در عین حال میخوام c++ کار کنم تا بیس مفاهیم رو کاملتر یاد بگیرم
هم میخوام ترکیبات بخونم و پایتون که باهاشون بتونم مسئله برنامه نویسی حل کنم
هم برنامه خوندن ریاضیات هست، گیت هست، آلمانی هست، یادگیری بک اند با نود و اکسپرس و …
لینوکس هست، اینقدر زیادن که گاهی اوقات اصلن باعث میشن هیچ کاری نکنم!
خیلی کلن ذهنم الکی درگیره واسه همین میخوام از شما راهنمایی بگیرم؛
چه ترتیبی رو باید در پیش بگیرم؟ چطوری واسشون برنامه ریزی کنم؟ بهترین مسیر چی میتونه باشه؟
کلن چه نظمی رو در پیش بگیرم؟
نرو سمت c++ -
تجربه ای که من ازش دارم بخاطر دانشگاه افتضاح بود:
۱- دیباگرش (gdb) باگ داره
۲- خود زبون weak type هست ( که اصلا اعصابتو داغون میکنه )
۳- بعضی از syntax error هارو کامپایلر تشخیص نمیده و وسط اجرای برنامه به مشکل بر میخوری و…
اگر میخوای با زبون static type کار کنی برو سراغ ی زبون جدید تر
زبان C++ حدود ۲۰سال پیش خوب بود. الآن افتضاحه. من C رو پیشنهاد میکنم.
و یه mode ایمکس که تازه پیداش کردم به نام disaster که اسمبلی کدی که نوشتی رو نشونت میده! قبلا، باید از objdump استفاده میکردم که خروجیش تو ترمیناله و syntax highlighting هم نداره.
درمورد بقیه:
پایتون؟ در این حد افتضاح نیستا، ولی خیلی هم خوب نیست
درحد آشنایی و برای یادگرفتن یه سری چیزا خوبه ولی زیاد روش تکیه نکنید.
خوندن ریاضیات اونقدرها هم واجب نیستا! فقط یه سری از مباحث ریاضی هست که توی دنیای کامپیوتر باهاش سروکار داریم، بهتره سراغ همونا برید. وگرنه چیزی مثل انتگرال، به درد سازندش هم نخورده چه برسه به ما.
گیت هم که کاری نداره. clone و pull و commit و push میکنیم، برای هرچیز پیچیدهتر از این هم سرچ میکنیم ببینیم کامندش چیه سالهاست از گیت استفاده میکنم تا چندروز پیش نمیدونستم چیزی هست به نام merge.renameLimit و وقتی هم که بهش نیاز پیدا کردم، توی یه سرچ پیداش کردم.
برای آلمانی، شنیدم اپلیکیشن اندروید Duolingo چیز خوبیه. برای یادگرفتن هر زبونی (کسایی که استفاده کردن راضین). خیلی دوست دارم Klingon یاد بگیرم
بکاند با جاوااسکریپت؟ js برای front-end هم زیادیه! پیشنهاد میکنم برای front-end هم از یه چیز معقولتر استفاده کنید. بعد از php، جاوااسکریپت حالبههمزنترین چیزه.
درمورد لینوکس، همینکه چندسال ازش استفاده کنید، باعث میشه توش راه بیفتید. برای سیستم development و deploy مخصوصا اگه به ابزارهایی مثل داکر تکیه نکنید و سیستمتون رو خودتون کانفیگ کنید.
یک راهش اینه که اینا رو بنویس اولویت بندی کن و به اولویت بهشون برس. یه سریاش رو هیچوقت نمیرسی که همونان که باید حذف میکردی از اول و مهم نیست.
اینایی که گفتم به نظرتون کدومش نیازی نیست؟ خودتون بودید چطور اولویت بنویشون میکردید؟
واقعن واقعن ممنونم بابت جواب پرمحتواتون
منظورم از ریاضیات یه سری سوالات برنامهنویسی هست حل میکننا! تو codeforces و …
معقولتر مثلن میشه typescript؟
یادگیری اینارو چطور اولویت بندی کنم؟ کدوماشون اصلن الکین؟
واقعیتش اینه که اینا هم ربطی به ما نداره! ما برنامهنویس هستیم نه computer scientist. دونستن ریاضیات کار ما نیست. فوقش یه الگوریتم باید بگیریم و تبدیلش کنیم به کد.
دونستنش ضرری نداره و دونستن چیزهایی مثل Big O Notation و Lambda Calculus مفیده.
ولی من اگه بهترین الگوریتم برای پیدا کردن اعداد اول کمتر از ۱۰۰۰ رو بلد نباشم، چیزی از ارزشهام کم نمیکنه
تفاوت بین برنامهنویس مبتدی و حرفهای، توی ریاضیات نیست. توی اینه که بتونه فلان استاندارد rfc رو پیادهسازی کنه. این ماکزیمم معجزهایه که از منوشما انتظار میره.
اون شرکتهایی که reviewهاشون رو میبینید توش از طرف میخوان binary tree رو معکوس کنه، تسکهایی که به برنامهنویساشون توی پروژهی واقعی میدن عوض کردن رنگ متن تو صفحهی چهارم وبسایته.
درمورد codeforces چیزی نمیدونم ولی اگه دنبال تمرین برنامهنویسی هستید، exercism.io و codewars.com رو پیشنهاد میکنم (فکر میکنم چندتا سایت دیگه مشابه اینا باشه ولی یا نمیشناسم یا الآن یادم نمیاد)
اگه دنبال چیزهای خیلی خیلی خفنتر هستید، پیشنهاد میکنم یه نگاه به projecteuler.net بندازید. محتوای این وبسایت، هم برای برنامهنویسهاست هم برای ریاضیدانها.
برای front-end؟ نمیدونم واقعا توی دنیای front-end وارد نیستم.
ولی تا جایی که من میدونم typescript و coffescript و… هم نسخهی بهتر شدهی js هستن. این درخت از ریشه خرابه
من از ClojureScript استفاده میکنم برای front-end. ولی یه دنیای دیگست (که خیلی باحاله) و باید Clojure و Lisp و این چیزا رو توی لیست خودتون قرار بدید.
یه کم درمورد Clojure تحقیق کنید شاید خوشتون اومد. فعلا بهترین زبانیه که میشناسم.
اگه از لینوکس (یا دوستوآشناهاش) استفاده نمیکنید، پیشنهاد میکنم اولین قدمتون سویچ به لینوکس باشه.
پیشنهاد میکنم How to Become a Hacker از Eric Raymond رو مطالعه کنید (ترجمهی فارسی) اسپویلر: اینجا هم اریک ریموند میگه Lisp یاد بگیرید خوبه
فقط اینو بگم که این مطلب برای همه نوشته شده حتی خیلی مبتدی! درحدی که گفته برای اینکه دستتون راه بیفته HTML یاد بگیرید! ولی فقط به درد مبتدیها نمیخوره.
شاید خوب باشه که یه تایمی رو صرف تست زبانهای مختلف (واقعا مختلف. با پارادایمهای متفاوت و روش فکری متفاوت) کنید. یه تاپیک (و ویدیوی یوتیوب) که امیدوارم کمک کنه:
اینطوری راحتتر میتونید تصمیم بگیرید.
کاری که خود من شروع کردم اینه که برگشتم به C (فکر کنم ۱۰ساله که با C کار نکردم) و دارم سعی میکنم یه سری چیزها رو داخل C پیادهسازی کنم. مثلا Stack, Heap, Dynamic Array, List و اگه بتونم، سراغ چیزهای پیچیدهتر مثل مدلهای مختلف Concurency هم برم.
نوشتن این کدها درکنار خوندن اسمبلی که کامپایلر تولید میکنه (خودم نمیتونم اسمبلی بنویسم. زیادی سخته و همون ۱۰سال پیش یه کم اسمبلی میکروکنترلر نوشتم. با اسمبلی x86_64 آشنا نیستم) بفهمم این چیزا چطوری کارمیکنن.
یه دنیا تشکر بابت وقتی که گذاشتید، واقعن ممنونم