معرفی منابع برای OOP Concepts


#1

به دنبال منبعی برای مفاهیم OOP هستم فعلا به این دو منبع رسیدم و با امتیازهای کمی که تو آمازون دارن و همچنین قدیمی بودنشون در مناسب بودن این منابع در شک هستم


#2

در کل، تمام کتابهای HeadFirst مراجع بسیار مناسبی هستن برای کسی که میخواد سریع وارد یه مبحث (مثلا یه زبان برنامه نویسی جدید) بشه.
مرجع نیستن (۱۰۰۰ صفحه کتاب که از روشن کردن کامپیوتر تا پیشرفته ترین مباحث رو داکیومنت کرده باشه) و مستقیم میرن سر اصل مطلب.
روش آموزشش به نظرم بهترینه (نه کاملترین) و شیوه‌های جدید و funی رو دنبال میکنه.

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


قیمتش (با دلار ۱۰تومنی میشه ۲۲۰هزارتومن) اصلا به صرفه نیست. مگر اینکه شما اون کسی باشید که ۹ملیارد دلار گم کرده :joy:
ولی میشه رایگان google کرد.
اینهم سمپل کدهای همین کتاب.


قدیمی بودن کتاب نشونه‌ی بد بودنش نیست. مخصوصا که داریم درمورد یه معماری قدیمی صحبت میکنیم! فکر نمیکنم OOP چیز جدیدی بهش اضافه شده باشه که ما ندونیم و توی این کتاب نباشه. (کلا از OOP خوشم نمیاد، سعی میکنم ازش دور بمونم)
در آخر اینو اضافه میکنم که اگر دارید با یه زبانی توی یه پروژه‌ای کد میزنید، بهتره سراغ داکیومنت همون زبان برید برای یادگیری OOP. فکر میکنم بهترین کار باشه. من توی سمپل‌کدهای این کتاب، فقط دارم java میبینم. احتمالا برای کسی مثل من که برنامه نویس پایتون هستم، سود خاصی نداره بجز آشنایی با مفاهیم پایه و اجبار به کار کردن با زبانی که دوستش ندارم :smile:


#3

سلام و با اجازه از دوستان.

هیچ کدام خوب نیستن! چرا ؟

چند نکته :

  • مفهوم OOP اولین بار توسط زبان Simula بصورت عملی اجرا شد، هرچند که مفهوم Object در زبان های Lisp و غیره هم بکار برده شده بود ولی نه به این معنای Object که در زبان های امروزی میبینیم.

  • ولی خالص ترین و کاربردی ترین مفهوم OOP در زبان Smalltalk توسط Alan Kay اجرایی شد.

  • تا به امروز هم هیچ زبان مدرن و جدیدی به اندازه Smalltalk توانایی به اجرا درآوردن OOP به صورت خالص رو نداشته.

  • در Smalltalk ویژگی های فوق العاده ای مثل Live Coding و مفهوم Image و غیره هستش که هیچ زبان دیگه ای توانایی اجرا کردن اونها رو به طور کامل نداشته.
    تصور کن همزمان با اجرای برنامه اون رو تغییر بدی!!!
    Smalltalk حقیقتا یه تکنولوژی منحصر به فرده که متاسفانه قربانی پول و ثروت و مارکتینگ Java شد.

  • در چند سال اخیر البته شرایط داره تغییر میکنه و تعداد بیشتری دوباره مثل چند دهه قبل دارن میرن سمت Smalltalk.

  • توانایی ها و قدرتی که Smalltalk در زمینه OOP داره هیچ کدام از زبان های جدید ندارن!

  • در اصل، OOP به این معنیه که یه سری Mini Computer ها که ما به اونا میگیم Object، به همدیگه Message میفرستن و به Message هایی که میگیرن پاسخ میدن، این اصل مفهوم OOP هستش که آقای Alan Kay در Smalltalk بنا کرد، در Smalltalk و OOP همه چیز با همین Message passing بین Object ها انجام میشه، به همین سادگی!

در واقع، زبان های جدید مثل Java و ++C و #C و غیره، مفهوم اصلی OOP که Alan Kay بناگذاری کرد رو تغییر دادن و اون رو تبدیل به یه چیز سخت و پیچیده کردن! در صورتی که در واقع OOP بسیار ساده و لذت بخشه، ولی فقط اگه اون رو از جای درست یاد بگیری.

پس منطقی اینه که OOP رو از سرچشمه اصلیش یعنی Smalltalk یاد بگیری، حتی اگه از خود Smalltalk هم بعدش استفاده نکنی، باز هم یادگیری Smalltak باعث میشه وقتی سراغ زبان هایی مثل Java و ++C و #C و Ruby و Python و زبان های دیگه هم میری، برای همیشه دیدت نسبت به نحوه OOP و درست انجام دادنش عوض میشه و حتی در اون زبان ها هم OOP رو درست انجام میدی (البته همه قابلیت های Smalltalk رو در زبان دیگه نمیشه داشت).

چند کتاب عالی :

برای قدم اول و کسی که تازه میخواد شروع کنه (البته هرکسی این کتاب اول رو باید بخوانه که پایه و اساس Smalltalk و OOP رو به شکل درست یاد بگیره) :‌

برای قدم های بعدی هم این کتاب ها فوق العاده هستن :‌

همه این کتاب ها به شما کمک میکنن که OOP رو به درستی یاد بگیری.