خیلی وقتا از من سوال میشه که «چه کتابی رو برای یادگیری جاوا خوبه؟» یا حتی «چهکار کنیم که برنامهنویسی یاد بگیریم؟» و از این قبیل سوالها. مدتهاست میخوام در این مورد یه مطلب بنویسم.
اگه بخوام به کسی که از برنامهنویسی هیچچیز بلد نیست، برنامه نویسی یاد بدم، خب اول از خوندن کتابهای آقای جعفر نژاد منعش میکنم. با کمال احترامی که برای ایشون قائلم، و البته که خیلی از کتابهاشون رو خوندم، این نظر رو دارم و معتقدم کتابهای ایشون از نظر علمی در سطح خیلی پایینی هستن در حدی که کتاب جاوا ایشون رو نخوندن، یک گام به جلو برای یاد گرفتن جاواست. البته با کمال تاسف باید بگم که اساتید محترم رشتهی کامپیوتر در اغلب موارد کتابهای ایشون رو معرفی میکنن (مخصوصاً برای درسهای پایهای) و دانشجوی تازه کار رو دور تر از حدی که هست میبرن.
برای شروع برنامه نویسی، فکر میکنم زبون C++ گزینهی خوبی باشه. در حال حاضر پاسکال رو خیلیها توصیه میکنن که من با این زبون مخالفم (البته به عنوان واحد دانشگاهی این درس رو پاس کردم). سنتی بودن این زبون و قدیمی بودنش دلیل اصلی این حرف منه. دانشجوی ترم اولی پاسکال میخونه، ترم بعد همون پاسکالی رو که خونده به زبون C++ میخونه. این یعنی یک گام درجا زدن.
برای شروع یادگیری C++ من کتاب «C++: a beginner’s guide» و بعد از اون کتاب خوب «C++ nuts & bolts: for experienced programmers» که نسخهی ترجمه شدهی تقریباً خوبی با نام «راهنمای سریع C++» داره. البته به نظر من کتاب دوم هم میتونه برای شروع C++ مورد استفاده قرار بگیره. برای مرجع هم دو کتاب «C++: The Complete Reference» و کتاب معروف «C++ how to program» که ترجمههای زیادی هم از این کتاب وجود داره. من یکی از این ترجمهها رو با نام «چگونه با C++ برنامه بنویسیم» از نشر «سیمای دانش» رو خودم گرفتم که نگارش خوبی نداشت و اون رو پیشنهاد نمیکنم. این دو کتاب رو به عنوان مرجع گفتم ونه به عنوان محور آموزش. دقت کنید که اگر همین الان یکی از این دوتا رو باز کنید و از اولی بخونید، از برنامه نویسی زده میشین. درست مثل اینه که شما یک فرهنگ لغت رو بشینید از اول بخونید.
اما جاوا، راستشو بخواین دیشب که به پادکست دوم رادیو لینوکس (که کار بسیار جالبیه) گوش میکردم، حس حسادت به برنامه نویسهای C++ توی من به وجود اومد. البته هرچند به زودی چیچک رو به عنوان یه پروژهی ابتکاری توسعه میدم ولی خب برای این که بشه یه برنامه طوری که بتونه مورد اسفتادهی عموم قرار بگیره نوشت، بهترین زبون C++ خواهد بود. ولی به شخصه، من دوست دارم با زبونی برنامه بنویسم که ابهام آمیز نباشه. همه چیز اون طبق قاعده و مستند شده باشه و تفاوت میون Compilerها در ترجمهی برنامه وجود نداشته باشه. برای من سخته از کدی به شکل String.compareTo در جاوا دل بکنم و اون رو با strcmp از C++ تعویض کنم. همونقدر که از مستقل از بستر بودن جاوا نمیشه گذشت، از قدرت C++ هم نمیشه گذشت و خوشبختانه اگر در جاوا به قدرت C++ نیاز شد، میشه با Native نویسی اون رو بدست آورد.
اما برای کسانی که مایل هستن جاوا رو یاد بگیرن بگم که بهترین کتابی که من میتونم معرفی کنم، دو جلد کتاب «Core Java» از نشر «Prentice Hall» هست که به نظر من خوندن این دو جلد کتاب برای یاد گیری جاوا از هر کتابی بهتره. «The Java Tutorials» هم منبع خیلی مفیدی برای یاد گیری جاوا، به خصوص رابط گرافیکی توی اونه. اما کتابهای «آموزش جاوا در 21 روز» از نشر «نص» رو به عنوان یه کتاب برای شروع به زبون فارسی بد نمیدونم. کتاب «جاوا، جاوا، جاوا: رهیافتی شی ء گرا در حل مسائل » از نشر «جنگل» هم کتاب خوبی به حساب میاد. و البته کتاب «راهنمای جامع Java» از نشر «کانون نشر علوم» هم کتاب خوبیه و به قول میلاد، مختصر و مفید توضیح داده و برای مرجع فارسی کتاب خوبیه. البته من نسخهی اصلی این کتاب یعنی «Java™ 2: The Complete Reference» رو مرجع خوبی نمیدونم. برای مرجع بهترین چیز، مستندات جاواست که از هر کتابی میتونه مفید باشه. برای تمام مباحث جاوا هم کتابای خوبی پیدا میشه. مثلاً کتاب «Computer Graphics Using Java™ 2D and 3D» و یا کتاب «Java Network Programming».
دو چیز رو با تاکید بگم:
- برنامهنویس با کتاب خوندن برنامه نویس نشده. بدونید که تمرین و از اون مهم تر، کد خوندن، تاثیر زیادی توی تجربهی برنامه نویسی میذاره.
- اگر فکر میکنید که نمیتونید کتابهای زبان اصلی رو بخونید و دنبال کتاب فارسی میگردین، راه رو اشتباه دارین طی میکنید.
برگردین و یا از برنامه نویسی دست بکشین، یازبانتون رو قوی کنیدو بعد برنامه نویسی بخونید. بعد از اونه که میفهمید آقای جعفر نژاد چه مزخرفاتی مخصوصاً توی کتاب جاوا، به خورد شما میده.
و چیزی که من خودم هم باهاش مشکل دارم و به قول همین پادکست دوم رادیو لینوکس، مستند سازیه. از همین اولی عادت کنید که برنامههاتون رو مستند کنید. راهنما برای اونها بنویسید. منظورم راهنمای کاربر نیست، راهنمایی برای کد هاتونه.
اما جزئیات بیشتر از کتابهایی که توی این مطلب نامشون رو بردم:
Title: C++ how to program
Authors: Paul J. Deitel, Harvey M. Deitel
Publisher: Prentice Hall
ISBN: 0136152503, 9780136152507
Title: C++: a beginner’s guide
Author: Herbert Schildt
Publisher: McGraw-Hill/Osborne
ISBN: 0072194677, 9780072194678
Title: C++ nuts & bolts: for experienced programmers
Author: Herbert Schildt
Publisher: Osborne McGraw-Hill
ISBN: 0078821401, 9780078821400
Title: C++: The Complete Reference
Author: Herbert Schildt
Publisher: McGraw-Hill Osborne Media
ISBN: 0072226803, 9780072226805
Title: Core Java, Vol. 1: Fundamentals
Authors: Cay S. Horstmann, Gary Cornell
Publisher: Prentice Hall PTR
ISBN: 0132354764, 9780132354769
Title: Core Java, Vol. 2: Advanced Features
Authors: Cay S. Horstmann, Gary Cornell
Publisher: Prentice Hall PTR
ISBN: 0132354799, 9780132354790
Title: Computer graphics using Java 2D and 3D
Authors: Hong Zhang, Y. Daniel Liang
Publisher: Prentice Hall
ISBN: 0130351180, 9780130351180
Title: Java network programming
Author: Elliotte Rusty Harold
Publisher: O’Reilly Media, Inc.
ISBN: 0596007213, 9780596007218
Title: Java 2: the complete reference
Author: Herbert Schildt
Publisher: Osborne/McGraw-Hill
ISBN: 0072130849, 9780072130843
عنوان: جاوا، جاوا، جاوا: رهیافتی شی ء گرا در حل مسائل
تالیف: رالف مورلی، هادی محمدزاده (مترجم)، علی جهانیان (مترجم)
نشر: چنگل
شابک: 978-964-981-065-2
عنوان: چگونه با C++ برنامه نویسی کنیم
تالیف: هاروی دیتل، پل دیتل، علیرضا انصاری (مترجم)
نشر: زانیس
شابک: 978-964-377-302-1
عنوان: راهنمای سریع C++
تالیف: هربرت شیلد، ابوالقاسم شادمان پور (مترجم)
نشر: دانشگاه هرمزگان
شابک: 964-6426-31-X
عنوان: راهنمای جامع Java
تالیف: هربرت شیلد، فرهاد قلی زاده نوری (مترجم)، علی اصغر شریف پور (مترجم)
نشر: کانون نشر علوم
شابک: 964-8587-21-3
عنوان: برنامه نویسی جاوا: خودآموز سریع در 21 روز
تالیف: چارلز پرکینز، لورا لمی، علیرضا زارع پور (مترجم)
نشر: نص
شابک: 964-6264-21-2
